summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-07-29 21:10:54 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-07-29 21:10:54 -0400
commite130a00cdf69c58dbff8e98a69559aeb33f87b60 (patch)
treee128e502a2229f5d934f0436a0eb31dc86350bbb
parentef4c86fbfdd18b78700f61b629907a85579197c0 (diff)
parentd4cc0e161bf103d3d3e01fefa02e867d4a2053c2 (diff)
Merge branch 'master' into slot_machine
-rw-r--r--.gitattributes4
-rw-r--r--.gitignore65
-rw-r--r--.travis.yml35
-rw-r--r--.travis/calcrom/calcrom.pl120
-rwxr-xr-x.travis/calcrom/webhook.sh16
-rw-r--r--INSTALL.md30
-rw-r--r--Makefile61
-rw-r--r--asm/battle_1.s12
-rw-r--r--asm/battle_2.s78
-rw-r--r--asm/battle_anim.s198
-rw-r--r--asm/battle_anim_8074480.s6343
-rw-r--r--asm/battle_anim_8078178.s977
-rw-r--r--asm/battle_anim_80989F8.s2588
-rw-r--r--asm/battle_anim_80A22E8.s55436
-rw-r--r--asm/battle_anim_80DE2C0.s12857
-rw-r--r--asm/battle_anim_80EEC0C.s6299
-rw-r--r--asm/battle_anim_effects_1.s9882
-rw-r--r--asm/battle_anim_effects_2.s7946
-rw-r--r--asm/battle_anim_effects_3.s12857
-rw-r--r--asm/battle_anim_mons.s6343
-rw-r--r--asm/battle_anim_sound_tasks.s76
-rw-r--r--asm/battle_anim_special.s6299
-rw-r--r--asm/battle_anim_status_effects.s977
-rw-r--r--asm/battle_anim_utility_funcs.s5133
-rw-r--r--asm/battle_controller_link_opponent.s80
-rw-r--r--asm/battle_controller_link_partner.s80
-rw-r--r--asm/battle_controller_oak.s72
-rw-r--r--asm/battle_controller_opponent.s80
-rw-r--r--asm/battle_controller_player.s114
-rw-r--r--asm/battle_controller_pokedude.s80
-rw-r--r--asm/battle_controller_safari.s12
-rw-r--r--asm/battle_controllers.s4
-rw-r--r--asm/battle_gfx_sfx_util.s84
-rw-r--r--asm/battle_interface.s12
-rw-r--r--asm/battle_message.s2
-rw-r--r--asm/battle_records.s1398
-rw-r--r--asm/battle_script_commands.s34
-rw-r--r--asm/battle_setup.s66
-rw-r--r--asm/battle_tower.s26
-rw-r--r--asm/battle_transition.s2
-rw-r--r--asm/battle_util.s2
-rw-r--r--asm/berry_crush.s2
-rw-r--r--asm/berry_crush_2.s16
-rw-r--r--asm/berry_crush_3.s72
-rw-r--r--asm/berry_fix_program.s344
-rw-r--r--asm/berry_pouch.s186
-rw-r--r--asm/bike.s12
-rw-r--r--asm/braille_text.s8
-rw-r--r--asm/bug.s829
-rw-r--r--asm/buy_menu_helpers.s220
-rw-r--r--asm/cable_car_util.s162
-rw-r--r--asm/cable_club.s20
-rw-r--r--asm/cereader_tool.s196
-rw-r--r--asm/clear_save_data_screen.s12
-rw-r--r--asm/credits.s20
-rw-r--r--asm/dark.s2323
-rw-r--r--asm/decompress.s887
-rw-r--r--asm/diploma.s607
-rw-r--r--asm/dodrio_berry_picking.s34
-rw-r--r--asm/dragon.s835
-rw-r--r--asm/egg_hatch.s8
-rw-r--r--asm/electric.s2675
-rw-r--r--asm/ereader_helpers.s920
-rw-r--r--asm/evolution_graphics.s2
-rw-r--r--asm/evolution_scene.s4
-rw-r--r--asm/field_camera.s6
-rw-r--r--asm/field_control_avatar.s24
-rw-r--r--asm/field_effect.s166
-rw-r--r--asm/field_fadetransition.s68
-rw-r--r--asm/field_map_obj.s54
-rw-r--r--asm/field_message_box.s10
-rw-r--r--asm/field_player_avatar.s82
-rw-r--r--asm/field_poison.s316
-rw-r--r--asm/field_screen_effect.s2
-rw-r--r--asm/field_special_scene.s39
-rw-r--r--asm/field_specials.s48
-rw-r--r--asm/field_weather.s6
-rw-r--r--asm/fighting.s1746
-rw-r--r--asm/fire.s2500
-rw-r--r--asm/fldeff_cut.s10
-rw-r--r--asm/fldeff_poison.s98
-rw-r--r--asm/fldeff_softboiled.s366
-rw-r--r--asm/fldeff_strength.s111
-rw-r--r--asm/fldeff_sweetscent.s262
-rw-r--r--asm/flying.s2945
-rw-r--r--asm/ghost.s4054
-rw-r--r--asm/ground.s1787
-rw-r--r--asm/hall_of_fame.s56
-rw-r--r--asm/help_system.s2254
-rw-r--r--asm/help_system_812B1E0.s1761
-rw-r--r--asm/hof_pc.s118
-rw-r--r--asm/ice.s3099
-rw-r--r--asm/intro.s4841
-rw-r--r--asm/item.s1853
-rw-r--r--asm/item_menu.s280
-rw-r--r--asm/item_menu_icons.s680
-rw-r--r--asm/item_pc.s2909
-rw-r--r--asm/item_use.s2410
-rw-r--r--asm/itemfinder.s2
-rw-r--r--asm/learn_move.s22
-rw-r--r--asm/link.s16
-rw-r--r--asm/link_rfu.s8
-rw-r--r--asm/link_rfu_2.s2
-rw-r--r--asm/link_rfu_3.s154
-rw-r--r--asm/list_menu.s2019
-rw-r--r--asm/mail.s14
-rw-r--r--asm/mail_data.s626
-rw-r--r--asm/mailbox_pc.s8
-rw-r--r--asm/main_menu.s32
-rw-r--r--asm/map_preview_screen.s10
-rw-r--r--asm/menu.s3455
-rw-r--r--asm/menu_helpers.s628
-rw-r--r--asm/menu_indicators.s1185
-rw-r--r--asm/multiboot.s924
-rw-r--r--asm/naming_screen.s10
-rw-r--r--asm/new_game.s10
-rw-r--r--asm/new_menu_helpers.s2497
-rw-r--r--asm/normal.s1978
-rw-r--r--asm/option_menu.s6
-rw-r--r--asm/overworld.s124
-rw-r--r--asm/party_menu.s350
-rw-r--r--asm/play_time.s137
-rw-r--r--asm/player_pc.s70
-rw-r--r--asm/poison.s326
-rw-r--r--asm/pokeball.s36
-rw-r--r--asm/pokedex.s6
-rw-r--r--asm/pokedex_area_markers.s2
-rw-r--r--asm/pokedex_screen.s48
-rw-r--r--asm/pokemon_3.s1228
-rw-r--r--asm/pokemon_icon.s14
-rw-r--r--asm/pokemon_jump.s2
-rw-r--r--asm/pokemon_jump_2.s60
-rw-r--r--asm/pokemon_special_anim.s48
-rw-r--r--asm/pokemon_storage_system.s106
-rw-r--r--asm/pokemon_summary_screen.s144
-rw-r--r--asm/post_battle_event_funcs.s2
-rw-r--r--asm/psychic.s2180
-rw-r--r--asm/region_map.s20
-rw-r--r--asm/reset_save_heap.s68
-rw-r--r--asm/reshow_battle_screen.s14
-rw-r--r--asm/rock.s1558
-rw-r--r--asm/rom6.s459
-rw-r--r--asm/safari_zone.s167
-rw-r--r--asm/save_failed_screen.s34
-rw-r--r--asm/save_location.s222
-rw-r--r--asm/script_menu.s72
-rw-r--r--asm/script_movement.s4
-rw-r--r--asm/script_pokemon_util_80A0058.s8
-rw-r--r--asm/script_pokemon_util_80BF8FC.s4
-rw-r--r--asm/shop.s116
-rw-r--r--asm/slot_machine.s4
-rw-r--r--asm/smokescreen.s4
-rw-r--r--asm/ss_anne.s408
-rw-r--r--asm/start_menu.s78
-rw-r--r--asm/teachy_tv.s2912
-rw-r--r--asm/title_screen.s34
-rw-r--r--asm/trade.s32
-rw-r--r--asm/trainer_card.s94
-rw-r--r--asm/trainer_see.s56
-rw-r--r--asm/union_room_chat.s68
-rw-r--r--asm/unk_815EDDC.s407
-rw-r--r--asm/unk_815F138.s753
-rw-r--r--asm/unk_text_util.s130
-rw-r--r--asm/water.s3775
-rw-r--r--asm/wild_encounter.s14
-rw-r--r--baserom.ipsbin0 -> 2271448 bytes
-rw-r--r--berry_fix/payload/include/global.fieldmap.h2
-rwxr-xr-xbuild_tools.sh1
-rw-r--r--charmap.txt49
-rw-r--r--common_syms/berry_fix_program.txt4
-rw-r--r--common_syms/help_system_812B1E0.txt2
-rw-r--r--common_syms/list_menu.txt2
-rw-r--r--data/buy_menu_helpers.s14
-rw-r--r--data/data.s303
-rw-r--r--data/data_835B488.s41
-rw-r--r--data/data_83F5738.s23
-rw-r--r--data/data_83FECCC.s2474
-rw-r--r--data/data_8468C98.s8
-rw-r--r--data/data_8471F00.s575
-rw-r--r--data/graphics.s4887
-rw-r--r--data/help_system.s8
-rw-r--r--data/map_event_scripts.inc42
-rw-r--r--data/map_events.s1
-rw-r--r--data/maps/BirthIsland_Exterior/scripts.inc2
-rw-r--r--data/maps/FiveIsland_RocketWarehouse/scripts.inc2
-rw-r--r--data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc8
-rw-r--r--data/maps/NavelRock_Base/scripts.inc2
-rw-r--r--data/maps/NavelRock_Summit/scripts.inc2
-rw-r--r--data/maps/Route25_SeaCottage/scripts.inc2
-rw-r--r--data/maps/SSAnne_Exterior/scripts.inc4
-rw-r--r--data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc2
-rw-r--r--data/maps/VermilionCity/map.json4
-rw-r--r--data/maps/VermilionCity/scripts.inc4
-rw-r--r--data/menu_indicators.s46
-rw-r--r--data/palette.s15
-rw-r--r--data/specials.inc26
-rw-r--r--data/strings.s4149
-rw-r--r--data/text/help_system.inc1879
-rw-r--r--data/text/move_descriptions.inc711
-rw-r--r--data/text/teachy_tv.inc227
-rw-r--r--data/unk_text_util.s5
-rw-r--r--graphics/battle_records/bg_tiles.pngbin0 -> 135 bytes
-rw-r--r--graphics/battle_records/palette.pal19
-rw-r--r--graphics/battle_records/tilemap.binbin0 -> 2048 bytes
-rw-r--r--graphics/diploma/unk_84147C0.pngbin0 -> 2863 bytes
-rw-r--r--graphics/diploma/unk_84154E8.binbin0 -> 4096 bytes
-rw-r--r--graphics/diploma/unk_8415954.pal35
-rw-r--r--graphics/help_system/unk_845BCB0.binbin0 -> 2048 bytes
-rw-r--r--graphics/help_system/unk_8464008.pngbin0 -> 200 bytes
-rw-r--r--graphics/interface/dex_caught_pokeball.pal19
-rw-r--r--graphics/interface/dex_caught_pokeball_and_pokemon_types.pngbin0 -> 1803 bytes
-rw-r--r--graphics/interface/pokemon_types.pal19
-rw-r--r--graphics/interface/red_arrow.pal19
-rw-r--r--graphics/interface/red_arrow.pngbin0 -> 167 bytes
-rw-r--r--graphics/interface/red_arrow_other.pngbin0 -> 197 bytes
-rw-r--r--graphics/interface/selector_outline.pngbin0 -> 156 bytes
-rw-r--r--graphics/intro/unk_8402260.pal19
-rw-r--r--graphics/intro/unk_8402280.pngbin0 -> 554 bytes
-rw-r--r--graphics/intro/unk_84024E4.binbin0 -> 2048 bytes
-rw-r--r--graphics/intro/unk_8402630.pal19
-rw-r--r--graphics/intro/unk_8402650.pngbin0 -> 81 bytes
-rw-r--r--graphics/intro/unk_8402668.binbin0 -> 1280 bytes
-rw-r--r--graphics/intro/unk_840270C.pal19
-rw-r--r--graphics/intro/unk_840272C.pngbin0 -> 448 bytes
-rw-r--r--graphics/intro/unk_84028F8.binbin0 -> 1024 bytes
-rw-r--r--graphics/intro/unk_8402A64.pngbin0 -> 198 bytes
-rw-r--r--graphics/intro/unk_8402ADC.pngbin0 -> 203 bytes
-rw-r--r--graphics/intro/unk_8402B2C.pngbin0 -> 272 bytes
-rw-r--r--graphics/intro/unk_8402CD4.pngbin0 -> 157 bytes
-rw-r--r--graphics/intro/unk_8402D34.pal19
-rw-r--r--graphics/intro/unk_8402D54.pngbin0 -> 4239 bytes
-rw-r--r--graphics/intro/unk_8403FE8.binbin0 -> 4096 bytes
-rw-r--r--graphics/intro/unk_84048CC.pal19
-rw-r--r--graphics/intro/unk_84048EC.pngbin0 -> 1406 bytes
-rw-r--r--graphics/intro/unk_8404F7C.binbin0 -> 4096 bytes
-rw-r--r--graphics/intro/unk_84053B4.pal51
-rw-r--r--graphics/intro/unk_8405414.pngbin0 -> 1049 bytes
-rw-r--r--graphics/intro/unk_8405890.binbin0 -> 4096 bytes
-rw-r--r--graphics/intro/unk_8405B08.pal19
-rw-r--r--graphics/intro/unk_8405B28.pngbin0 -> 385 bytes
-rw-r--r--graphics/intro/unk_8405CDC.binbin0 -> 1280 bytes
-rw-r--r--graphics/intro/unk_8405DA4.pal19
-rw-r--r--graphics/intro/unk_8405DC4.pngbin0 -> 1408 bytes
-rw-r--r--graphics/intro/unk_840644C.binbin0 -> 2048 bytes
-rw-r--r--graphics/intro/unk_8406634.pal19
-rw-r--r--graphics/intro/unk_8406654.pngbin0 -> 2463 bytes
-rw-r--r--graphics/intro/unk_84071D0.binbin0 -> 2048 bytes
-rw-r--r--graphics/intro/unk_8407430.pal35
-rw-r--r--graphics/intro/unk_8407470.pngbin0 -> 1355 bytes
-rw-r--r--graphics/intro/unk_8407A50.binbin0 -> 1280 bytes
-rw-r--r--graphics/intro/unk_8407B9C.pngbin0 -> 3631 bytes
-rw-r--r--graphics/intro/unk_8408D98.binbin0 -> 4096 bytes
-rw-r--r--graphics/intro/unk_840926C.pngbin0 -> 807 bytes
-rw-r--r--graphics/intro/unk_84096AC.pal19
-rw-r--r--graphics/intro/unk_84096CC.pngbin0 -> 588 bytes
-rw-r--r--graphics/intro/unk_8409A1C.pal19
-rw-r--r--graphics/intro/unk_8409A3C.pngbin0 -> 541 bytes
-rw-r--r--graphics/intro/unk_8409D20.pngbin0 -> 1096 bytes
-rw-r--r--graphics/intro/unk_840A3E4.pngbin0 -> 3635 bytes
-rw-r--r--graphics/intro/unk_840B834.pal19
-rw-r--r--graphics/intro/unk_840B854.pal19
-rw-r--r--graphics/intro/unk_840B874.pngbin0 -> 384 bytes
-rw-r--r--graphics/intro/unk_840BAE0.pngbin0 -> 164 bytes
-rw-r--r--graphics/item_pc/unk_8E85090.pngbin0 -> 746 bytes
-rw-r--r--graphics/item_pc/unk_8E85408.pal51
-rw-r--r--graphics/item_pc/unk_8E85458.binbin0 -> 2048 bytes
-rw-r--r--graphics/misc/unk_8479688.pngbin0 -> 277 bytes
-rw-r--r--graphics/misc/unk_8479748.pngbin0 -> 309 bytes
-rw-r--r--graphics/pokemon/abra/back.png (renamed from graphics/pokemon/back_pics/abra_back_pic.png)bin578 -> 578 bytes
-rw-r--r--graphics/pokemon/abra/footprint.png (renamed from graphics/pokemon/footprints/abra_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/abra/front.png (renamed from graphics/pokemon/front_pics/abra_still_front_pic.png)bin575 -> 575 bytes
-rw-r--r--graphics/pokemon/abra/icon.png (renamed from graphics/pokemon/icons/abra_icon.png)bin327 -> 327 bytes
-rw-r--r--graphics/pokemon/abra/normal.pal (renamed from graphics/pokemon/palettes/abra_palette.pal)0
-rw-r--r--graphics/pokemon/abra/shiny.pal (renamed from graphics/pokemon/palettes/abra_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/absol/back.png (renamed from graphics/pokemon/back_pics/absol_back_pic.png)bin673 -> 673 bytes
-rw-r--r--graphics/pokemon/absol/footprint.png (renamed from graphics/pokemon/footprints/absol_footprint.png)bin102 -> 102 bytes
-rw-r--r--graphics/pokemon/absol/front.png (renamed from graphics/pokemon/front_pics/absol_still_front_pic.png)bin890 -> 890 bytes
-rw-r--r--graphics/pokemon/absol/icon.png (renamed from graphics/pokemon/icons/absol_icon.png)bin371 -> 371 bytes
-rw-r--r--graphics/pokemon/absol/normal.pal (renamed from graphics/pokemon/palettes/absol_palette.pal)0
-rw-r--r--graphics/pokemon/absol/shiny.pal (renamed from graphics/pokemon/palettes/absol_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/aerodactyl/back.png (renamed from graphics/pokemon/back_pics/aerodactyl_back_pic.png)bin602 -> 602 bytes
-rw-r--r--graphics/pokemon/aerodactyl/footprint.png (renamed from graphics/pokemon/footprints/aerodactyl_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/aerodactyl/front.png (renamed from graphics/pokemon/front_pics/aerodactyl_still_front_pic.png)bin917 -> 917 bytes
-rw-r--r--graphics/pokemon/aerodactyl/icon.png (renamed from graphics/pokemon/icons/aerodactyl_icon.png)bin369 -> 369 bytes
-rw-r--r--graphics/pokemon/aerodactyl/normal.pal (renamed from graphics/pokemon/palettes/aerodactyl_palette.pal)0
-rw-r--r--graphics/pokemon/aerodactyl/shiny.pal (renamed from graphics/pokemon/palettes/aerodactyl_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/aggron/back.png (renamed from graphics/pokemon/back_pics/aggron_back_pic.png)bin860 -> 860 bytes
-rw-r--r--graphics/pokemon/aggron/footprint.png (renamed from graphics/pokemon/footprints/aggron_footprint.png)bin102 -> 102 bytes
-rw-r--r--graphics/pokemon/aggron/front.png (renamed from graphics/pokemon/front_pics/aggron_still_front_pic.png)bin1158 -> 1158 bytes
-rw-r--r--graphics/pokemon/aggron/icon.png (renamed from graphics/pokemon/icons/aggron_icon.png)bin367 -> 367 bytes
-rw-r--r--graphics/pokemon/aggron/normal.pal (renamed from graphics/pokemon/palettes/aggron_palette.pal)0
-rw-r--r--graphics/pokemon/aggron/shiny.pal (renamed from graphics/pokemon/palettes/aggron_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/aipom/back.png (renamed from graphics/pokemon/back_pics/aipom_back_pic.png)bin592 -> 592 bytes
-rw-r--r--graphics/pokemon/aipom/footprint.png (renamed from graphics/pokemon/footprints/aipom_footprint.png)bin86 -> 86 bytes
-rw-r--r--graphics/pokemon/aipom/front.png (renamed from graphics/pokemon/front_pics/aipom_still_front_pic.png)bin639 -> 639 bytes
-rw-r--r--graphics/pokemon/aipom/icon.png (renamed from graphics/pokemon/icons/aipom_icon.png)bin399 -> 399 bytes
-rw-r--r--graphics/pokemon/aipom/normal.pal (renamed from graphics/pokemon/palettes/aipom_palette.pal)0
-rw-r--r--graphics/pokemon/aipom/shiny.pal (renamed from graphics/pokemon/palettes/aipom_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/alakazam/back.png (renamed from graphics/pokemon/back_pics/alakazam_back_pic.png)bin729 -> 729 bytes
-rw-r--r--graphics/pokemon/alakazam/footprint.png (renamed from graphics/pokemon/footprints/alakazam_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/alakazam/front.png (renamed from graphics/pokemon/front_pics/alakazam_still_front_pic.png)bin1015 -> 1015 bytes
-rw-r--r--graphics/pokemon/alakazam/icon.png (renamed from graphics/pokemon/icons/alakazam_icon.png)bin401 -> 401 bytes
-rw-r--r--graphics/pokemon/alakazam/normal.pal (renamed from graphics/pokemon/palettes/alakazam_palette.pal)0
-rw-r--r--graphics/pokemon/alakazam/shiny.pal (renamed from graphics/pokemon/palettes/alakazam_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/altaria/back.png (renamed from graphics/pokemon/back_pics/altaria_back_pic.png)bin685 -> 685 bytes
-rw-r--r--graphics/pokemon/altaria/footprint.png (renamed from graphics/pokemon/footprints/altaria_footprint.png)bin100 -> 100 bytes
-rw-r--r--graphics/pokemon/altaria/front.png (renamed from graphics/pokemon/front_pics/altaria_still_front_pic.png)bin825 -> 825 bytes
-rw-r--r--graphics/pokemon/altaria/icon.png (renamed from graphics/pokemon/icons/altaria_icon.png)bin419 -> 419 bytes
-rw-r--r--graphics/pokemon/altaria/normal.pal (renamed from graphics/pokemon/palettes/altaria_palette.pal)0
-rw-r--r--graphics/pokemon/altaria/shiny.pal (renamed from graphics/pokemon/palettes/altaria_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/ampharos/back.png (renamed from graphics/pokemon/back_pics/ampharos_back_pic.png)bin714 -> 714 bytes
-rw-r--r--graphics/pokemon/ampharos/footprint.png (renamed from graphics/pokemon/footprints/ampharos_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/ampharos/front.png (renamed from graphics/pokemon/front_pics/ampharos_still_front_pic.png)bin721 -> 721 bytes
-rw-r--r--graphics/pokemon/ampharos/icon.png (renamed from graphics/pokemon/icons/ampharos_icon.png)bin430 -> 430 bytes
-rw-r--r--graphics/pokemon/ampharos/normal.pal (renamed from graphics/pokemon/palettes/ampharos_palette.pal)0
-rw-r--r--graphics/pokemon/ampharos/shiny.pal (renamed from graphics/pokemon/palettes/ampharos_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/anorith/back.png (renamed from graphics/pokemon/back_pics/anorith_back_pic.png)bin445 -> 445 bytes
-rw-r--r--graphics/pokemon/anorith/footprint.png (renamed from graphics/pokemon/footprints/anorith_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/anorith/front.png (renamed from graphics/pokemon/front_pics/anorith_still_front_pic.png)bin691 -> 691 bytes
-rw-r--r--graphics/pokemon/anorith/icon.png (renamed from graphics/pokemon/icons/anorith_icon.png)bin377 -> 377 bytes
-rw-r--r--graphics/pokemon/anorith/normal.pal (renamed from graphics/pokemon/palettes/anorith_palette.pal)0
-rw-r--r--graphics/pokemon/anorith/shiny.pal (renamed from graphics/pokemon/palettes/anorith_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/arbok/back.png (renamed from graphics/pokemon/back_pics/arbok_back_pic.png)bin491 -> 491 bytes
-rw-r--r--graphics/pokemon/arbok/footprint.png (renamed from graphics/pokemon/footprints/arbok_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/arbok/front.png (renamed from graphics/pokemon/front_pics/arbok_still_front_pic.png)bin899 -> 899 bytes
-rw-r--r--graphics/pokemon/arbok/icon.png (renamed from graphics/pokemon/icons/arbok_icon.png)bin373 -> 373 bytes
-rw-r--r--graphics/pokemon/arbok/normal.pal (renamed from graphics/pokemon/palettes/arbok_palette.pal)0
-rw-r--r--graphics/pokemon/arbok/shiny.pal (renamed from graphics/pokemon/palettes/arbok_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/arcanine/back.png (renamed from graphics/pokemon/back_pics/arcanine_back_pic.png)bin790 -> 790 bytes
-rw-r--r--graphics/pokemon/arcanine/footprint.png (renamed from graphics/pokemon/footprints/arcanine_footprint.png)bin99 -> 99 bytes
-rw-r--r--graphics/pokemon/arcanine/front.png (renamed from graphics/pokemon/front_pics/arcanine_still_front_pic.png)bin1061 -> 1061 bytes
-rw-r--r--graphics/pokemon/arcanine/icon.png (renamed from graphics/pokemon/icons/arcanine_icon.png)bin445 -> 445 bytes
-rw-r--r--graphics/pokemon/arcanine/normal.pal (renamed from graphics/pokemon/palettes/arcanine_palette.pal)0
-rw-r--r--graphics/pokemon/arcanine/shiny.pal (renamed from graphics/pokemon/palettes/arcanine_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/ariados/back.png (renamed from graphics/pokemon/back_pics/ariados_back_pic.png)bin706 -> 706 bytes
-rw-r--r--graphics/pokemon/ariados/footprint.png (renamed from graphics/pokemon/footprints/ariados_footprint.png)bin86 -> 86 bytes
-rw-r--r--graphics/pokemon/ariados/front.png (renamed from graphics/pokemon/front_pics/ariados_still_front_pic.png)bin850 -> 850 bytes
-rw-r--r--graphics/pokemon/ariados/icon.png (renamed from graphics/pokemon/icons/ariados_icon.png)bin430 -> 430 bytes
-rw-r--r--graphics/pokemon/ariados/normal.pal (renamed from graphics/pokemon/palettes/ariados_palette.pal)0
-rw-r--r--graphics/pokemon/ariados/shiny.pal (renamed from graphics/pokemon/palettes/ariados_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/armaldo/back.png (renamed from graphics/pokemon/back_pics/armaldo_back_pic.png)bin898 -> 898 bytes
-rw-r--r--graphics/pokemon/armaldo/footprint.png (renamed from graphics/pokemon/footprints/armaldo_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/armaldo/front.png (renamed from graphics/pokemon/front_pics/armaldo_still_front_pic.png)bin1165 -> 1165 bytes
-rw-r--r--graphics/pokemon/armaldo/icon.png (renamed from graphics/pokemon/icons/armaldo_icon.png)bin383 -> 383 bytes
-rw-r--r--graphics/pokemon/armaldo/normal.pal (renamed from graphics/pokemon/palettes/armaldo_palette.pal)0
-rw-r--r--graphics/pokemon/armaldo/shiny.pal (renamed from graphics/pokemon/palettes/armaldo_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/aron/back.png (renamed from graphics/pokemon/back_pics/aron_back_pic.png)bin437 -> 437 bytes
-rw-r--r--graphics/pokemon/aron/footprint.png (renamed from graphics/pokemon/footprints/aron_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/aron/front.png (renamed from graphics/pokemon/front_pics/aron_still_front_pic.png)bin384 -> 384 bytes
-rw-r--r--graphics/pokemon/aron/icon.png (renamed from graphics/pokemon/icons/aron_icon.png)bin262 -> 262 bytes
-rw-r--r--graphics/pokemon/aron/normal.pal (renamed from graphics/pokemon/palettes/aron_palette.pal)0
-rw-r--r--graphics/pokemon/aron/shiny.pal (renamed from graphics/pokemon/palettes/aron_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/articuno/back.png (renamed from graphics/pokemon/back_pics/articuno_back_pic.png)bin504 -> 504 bytes
-rw-r--r--graphics/pokemon/articuno/footprint.png (renamed from graphics/pokemon/footprints/articuno_footprint.png)bin106 -> 106 bytes
-rw-r--r--graphics/pokemon/articuno/front.png (renamed from graphics/pokemon/front_pics/articuno_still_front_pic.png)bin1072 -> 1072 bytes
-rw-r--r--graphics/pokemon/articuno/icon.png (renamed from graphics/pokemon/icons/articuno_icon.png)bin384 -> 384 bytes
-rw-r--r--graphics/pokemon/articuno/normal.pal (renamed from graphics/pokemon/palettes/articuno_palette.pal)0
-rw-r--r--graphics/pokemon/articuno/shiny.pal (renamed from graphics/pokemon/palettes/articuno_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/azumarill/back.png (renamed from graphics/pokemon/back_pics/azumarill_back_pic.png)bin541 -> 541 bytes
-rw-r--r--graphics/pokemon/azumarill/footprint.png (renamed from graphics/pokemon/footprints/azumarill_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/azumarill/front.png (renamed from graphics/pokemon/front_pics/azumarill_still_front_pic.png)bin631 -> 631 bytes
-rw-r--r--graphics/pokemon/azumarill/icon.png (renamed from graphics/pokemon/icons/azumarill_icon.png)bin445 -> 445 bytes
-rw-r--r--graphics/pokemon/azumarill/normal.pal (renamed from graphics/pokemon/palettes/azumarill_palette.pal)0
-rw-r--r--graphics/pokemon/azumarill/shiny.pal (renamed from graphics/pokemon/palettes/azumarill_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/azurill/back.png (renamed from graphics/pokemon/back_pics/azurill_back_pic.png)bin601 -> 601 bytes
-rw-r--r--graphics/pokemon/azurill/footprint.png (renamed from graphics/pokemon/footprints/azurill_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/azurill/front.png (renamed from graphics/pokemon/front_pics/azurill_still_front_pic.png)bin589 -> 589 bytes
-rw-r--r--graphics/pokemon/azurill/icon.png (renamed from graphics/pokemon/icons/azurill_icon.png)bin342 -> 342 bytes
-rw-r--r--graphics/pokemon/azurill/normal.pal (renamed from graphics/pokemon/palettes/azurill_palette.pal)0
-rw-r--r--graphics/pokemon/azurill/shiny.pal (renamed from graphics/pokemon/palettes/azurill_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/bagon/back.png (renamed from graphics/pokemon/back_pics/bagon_back_pic.png)bin574 -> 574 bytes
-rw-r--r--graphics/pokemon/bagon/footprint.png (renamed from graphics/pokemon/footprints/bagon_footprint.png)bin91 -> 91 bytes
-rw-r--r--graphics/pokemon/bagon/front.png (renamed from graphics/pokemon/front_pics/bagon_still_front_pic.png)bin512 -> 512 bytes
-rw-r--r--graphics/pokemon/bagon/icon.png (renamed from graphics/pokemon/icons/bagon_icon.png)bin359 -> 359 bytes
-rw-r--r--graphics/pokemon/bagon/normal.pal (renamed from graphics/pokemon/palettes/bagon_palette.pal)0
-rw-r--r--graphics/pokemon/bagon/shiny.pal (renamed from graphics/pokemon/palettes/bagon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/baltoy/back.png (renamed from graphics/pokemon/back_pics/baltoy_back_pic.png)bin517 -> 517 bytes
-rw-r--r--graphics/pokemon/baltoy/footprint.png (renamed from graphics/pokemon/footprints/baltoy_footprint.png)bin76 -> 76 bytes
-rw-r--r--graphics/pokemon/baltoy/front.png (renamed from graphics/pokemon/front_pics/baltoy_still_front_pic.png)bin416 -> 416 bytes
-rw-r--r--graphics/pokemon/baltoy/icon.png (renamed from graphics/pokemon/icons/baltoy_icon.png)bin279 -> 279 bytes
-rw-r--r--graphics/pokemon/baltoy/normal.pal (renamed from graphics/pokemon/palettes/baltoy_palette.pal)0
-rw-r--r--graphics/pokemon/baltoy/shiny.pal (renamed from graphics/pokemon/palettes/baltoy_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/banette/back.png (renamed from graphics/pokemon/back_pics/banette_back_pic.png)bin503 -> 503 bytes
-rw-r--r--graphics/pokemon/banette/footprint.png (renamed from graphics/pokemon/footprints/banette_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/banette/front.png (renamed from graphics/pokemon/front_pics/banette_still_front_pic.png)bin546 -> 546 bytes
-rw-r--r--graphics/pokemon/banette/icon.png (renamed from graphics/pokemon/icons/banette_icon.png)bin321 -> 321 bytes
-rw-r--r--graphics/pokemon/banette/normal.pal (renamed from graphics/pokemon/palettes/banette_palette.pal)0
-rw-r--r--graphics/pokemon/banette/shiny.pal (renamed from graphics/pokemon/palettes/banette_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/barboach/back.png (renamed from graphics/pokemon/back_pics/barboach_back_pic.png)bin551 -> 551 bytes
-rw-r--r--graphics/pokemon/barboach/footprint.png (renamed from graphics/pokemon/footprints/barboach_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/barboach/front.png (renamed from graphics/pokemon/front_pics/barboach_still_front_pic.png)bin565 -> 565 bytes
-rw-r--r--graphics/pokemon/barboach/icon.png (renamed from graphics/pokemon/icons/barboach_icon.png)bin337 -> 337 bytes
-rw-r--r--graphics/pokemon/barboach/normal.pal (renamed from graphics/pokemon/palettes/barboach_palette.pal)0
-rw-r--r--graphics/pokemon/barboach/shiny.pal (renamed from graphics/pokemon/palettes/barboach_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/bayleef/back.png (renamed from graphics/pokemon/back_pics/bayleef_back_pic.png)bin737 -> 737 bytes
-rw-r--r--graphics/pokemon/bayleef/footprint.png (renamed from graphics/pokemon/footprints/bayleef_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/bayleef/front.png (renamed from graphics/pokemon/front_pics/bayleef_still_front_pic.png)bin815 -> 815 bytes
-rw-r--r--graphics/pokemon/bayleef/icon.png (renamed from graphics/pokemon/icons/bayleef_icon.png)bin427 -> 427 bytes
-rw-r--r--graphics/pokemon/bayleef/normal.pal (renamed from graphics/pokemon/palettes/bayleef_palette.pal)0
-rw-r--r--graphics/pokemon/bayleef/shiny.pal (renamed from graphics/pokemon/palettes/bayleef_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/beautifly/back.png (renamed from graphics/pokemon/back_pics/beautifly_back_pic.png)bin771 -> 771 bytes
-rw-r--r--graphics/pokemon/beautifly/footprint.png (renamed from graphics/pokemon/footprints/beautifly_footprint.png)bin89 -> 89 bytes
-rw-r--r--graphics/pokemon/beautifly/front.png (renamed from graphics/pokemon/front_pics/beautifly_still_front_pic.png)bin699 -> 699 bytes
-rw-r--r--graphics/pokemon/beautifly/icon.png (renamed from graphics/pokemon/icons/beautifly_icon.png)bin449 -> 449 bytes
-rw-r--r--graphics/pokemon/beautifly/normal.pal (renamed from graphics/pokemon/palettes/beautifly_palette.pal)0
-rw-r--r--graphics/pokemon/beautifly/shiny.pal (renamed from graphics/pokemon/palettes/beautifly_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/beedrill/back.png (renamed from graphics/pokemon/back_pics/beedrill_back_pic.png)bin734 -> 734 bytes
-rw-r--r--graphics/pokemon/beedrill/footprint.png (renamed from graphics/pokemon/footprints/beedrill_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/beedrill/front.png (renamed from graphics/pokemon/front_pics/beedrill_still_front_pic.png)bin913 -> 913 bytes
-rw-r--r--graphics/pokemon/beedrill/icon.png (renamed from graphics/pokemon/icons/beedrill_icon.png)bin437 -> 437 bytes
-rw-r--r--graphics/pokemon/beedrill/normal.pal (renamed from graphics/pokemon/palettes/beedrill_palette.pal)0
-rw-r--r--graphics/pokemon/beedrill/shiny.pal (renamed from graphics/pokemon/palettes/beedrill_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/beldum/back.png (renamed from graphics/pokemon/back_pics/beldum_back_pic.png)bin575 -> 575 bytes
-rw-r--r--graphics/pokemon/beldum/footprint.png (renamed from graphics/pokemon/footprints/beldum_footprint.png)bin82 -> 82 bytes
-rw-r--r--graphics/pokemon/beldum/front.png (renamed from graphics/pokemon/front_pics/beldum_still_front_pic.png)bin465 -> 465 bytes
-rw-r--r--graphics/pokemon/beldum/icon.png (renamed from graphics/pokemon/icons/beldum_icon.png)bin294 -> 294 bytes
-rw-r--r--graphics/pokemon/beldum/normal.pal (renamed from graphics/pokemon/palettes/beldum_palette.pal)0
-rw-r--r--graphics/pokemon/beldum/shiny.pal (renamed from graphics/pokemon/palettes/beldum_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/bellossom/back.png (renamed from graphics/pokemon/back_pics/bellossom_back_pic.png)bin633 -> 633 bytes
-rw-r--r--graphics/pokemon/bellossom/footprint.png (renamed from graphics/pokemon/footprints/bellossom_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/bellossom/front.png (renamed from graphics/pokemon/front_pics/bellossom_still_front_pic.png)bin520 -> 520 bytes
-rw-r--r--graphics/pokemon/bellossom/icon.png (renamed from graphics/pokemon/icons/bellossom_icon.png)bin363 -> 363 bytes
-rw-r--r--graphics/pokemon/bellossom/normal.pal (renamed from graphics/pokemon/palettes/bellossom_palette.pal)0
-rw-r--r--graphics/pokemon/bellossom/shiny.pal (renamed from graphics/pokemon/palettes/bellossom_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/bellsprout/back.png (renamed from graphics/pokemon/back_pics/bellsprout_back_pic.png)bin529 -> 529 bytes
-rw-r--r--graphics/pokemon/bellsprout/footprint.png (renamed from graphics/pokemon/footprints/bellsprout_footprint.png)bin109 -> 109 bytes
-rw-r--r--graphics/pokemon/bellsprout/front.png (renamed from graphics/pokemon/front_pics/bellsprout_still_front_pic.png)bin547 -> 547 bytes
-rw-r--r--graphics/pokemon/bellsprout/icon.png (renamed from graphics/pokemon/icons/bellsprout_icon.png)bin252 -> 252 bytes
-rw-r--r--graphics/pokemon/bellsprout/normal.pal (renamed from graphics/pokemon/palettes/bellsprout_palette.pal)0
-rw-r--r--graphics/pokemon/bellsprout/shiny.pal (renamed from graphics/pokemon/palettes/bellsprout_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/blastoise/back.png (renamed from graphics/pokemon/back_pics/blastoise_back_pic.png)bin842 -> 842 bytes
-rw-r--r--graphics/pokemon/blastoise/footprint.png (renamed from graphics/pokemon/footprints/blastoise_footprint.png)bin98 -> 98 bytes
-rw-r--r--graphics/pokemon/blastoise/front.png (renamed from graphics/pokemon/front_pics/blastoise_still_front_pic.png)bin1076 -> 1076 bytes
-rw-r--r--graphics/pokemon/blastoise/icon.png (renamed from graphics/pokemon/icons/blastoise_icon.png)bin397 -> 397 bytes
-rw-r--r--graphics/pokemon/blastoise/normal.pal (renamed from graphics/pokemon/palettes/blastoise_palette.pal)0
-rw-r--r--graphics/pokemon/blastoise/shiny.pal (renamed from graphics/pokemon/palettes/blastoise_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/blaziken/back.png (renamed from graphics/pokemon/back_pics/blaziken_back_pic.png)bin835 -> 835 bytes
-rw-r--r--graphics/pokemon/blaziken/footprint.png (renamed from graphics/pokemon/footprints/blaziken_footprint.png)bin116 -> 116 bytes
-rw-r--r--graphics/pokemon/blaziken/front.png (renamed from graphics/pokemon/front_pics/blaziken_still_front_pic.png)bin967 -> 967 bytes
-rw-r--r--graphics/pokemon/blaziken/icon.png (renamed from graphics/pokemon/icons/blaziken_icon.png)bin448 -> 448 bytes
-rw-r--r--graphics/pokemon/blaziken/normal.pal (renamed from graphics/pokemon/palettes/blaziken_palette.pal)0
-rw-r--r--graphics/pokemon/blaziken/shiny.pal (renamed from graphics/pokemon/palettes/blaziken_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/blissey/back.png (renamed from graphics/pokemon/back_pics/blissey_back_pic.png)bin566 -> 566 bytes
-rw-r--r--graphics/pokemon/blissey/footprint.png (renamed from graphics/pokemon/footprints/blissey_footprint.png)bin96 -> 96 bytes
-rw-r--r--graphics/pokemon/blissey/front.png (renamed from graphics/pokemon/front_pics/blissey_still_front_pic.png)bin827 -> 827 bytes
-rw-r--r--graphics/pokemon/blissey/icon.png (renamed from graphics/pokemon/icons/blissey_icon.png)bin406 -> 406 bytes
-rw-r--r--graphics/pokemon/blissey/normal.pal (renamed from graphics/pokemon/palettes/blissey_palette.pal)0
-rw-r--r--graphics/pokemon/blissey/shiny.pal (renamed from graphics/pokemon/palettes/blissey_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/breloom/back.png (renamed from graphics/pokemon/back_pics/breloom_back_pic.png)bin825 -> 825 bytes
-rw-r--r--graphics/pokemon/breloom/footprint.png (renamed from graphics/pokemon/footprints/breloom_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/breloom/front.png (renamed from graphics/pokemon/front_pics/breloom_still_front_pic.png)bin849 -> 849 bytes
-rw-r--r--graphics/pokemon/breloom/icon.png (renamed from graphics/pokemon/icons/breloom_icon.png)bin321 -> 321 bytes
-rw-r--r--graphics/pokemon/breloom/normal.pal (renamed from graphics/pokemon/palettes/breloom_palette.pal)0
-rw-r--r--graphics/pokemon/breloom/shiny.pal (renamed from graphics/pokemon/palettes/breloom_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/bulbasaur/back.png (renamed from graphics/pokemon/back_pics/bulbasaur_back_pic.png)bin554 -> 554 bytes
-rw-r--r--graphics/pokemon/bulbasaur/footprint.png (renamed from graphics/pokemon/footprints/bulbasaur_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/bulbasaur/front.png (renamed from graphics/pokemon/front_pics/bulbasaur_still_front_pic.png)bin558 -> 558 bytes
-rw-r--r--graphics/pokemon/bulbasaur/icon.png (renamed from graphics/pokemon/icons/bulbasaur_icon.png)bin316 -> 316 bytes
-rw-r--r--graphics/pokemon/bulbasaur/normal.pal (renamed from graphics/pokemon/palettes/bulbasaur_palette.pal)0
-rw-r--r--graphics/pokemon/bulbasaur/shiny.pal (renamed from graphics/pokemon/palettes/bulbasaur_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/butterfree/back.png (renamed from graphics/pokemon/back_pics/butterfree_back_pic.png)bin868 -> 868 bytes
-rw-r--r--graphics/pokemon/butterfree/footprint.png (renamed from graphics/pokemon/footprints/butterfree_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/butterfree/front.png (renamed from graphics/pokemon/front_pics/butterfree_still_front_pic.png)bin748 -> 748 bytes
-rw-r--r--graphics/pokemon/butterfree/icon.png (renamed from graphics/pokemon/icons/butterfree_icon.png)bin421 -> 421 bytes
-rw-r--r--graphics/pokemon/butterfree/normal.pal (renamed from graphics/pokemon/palettes/butterfree_palette.pal)0
-rw-r--r--graphics/pokemon/butterfree/shiny.pal (renamed from graphics/pokemon/palettes/butterfree_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/cacnea/back.png (renamed from graphics/pokemon/back_pics/cacnea_back_pic.png)bin713 -> 713 bytes
-rw-r--r--graphics/pokemon/cacnea/footprint.png (renamed from graphics/pokemon/footprints/cacnea_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/cacnea/front.png (renamed from graphics/pokemon/front_pics/cacnea_still_front_pic.png)bin662 -> 662 bytes
-rw-r--r--graphics/pokemon/cacnea/icon.png (renamed from graphics/pokemon/icons/cacnea_icon.png)bin370 -> 370 bytes
-rw-r--r--graphics/pokemon/cacnea/normal.pal (renamed from graphics/pokemon/palettes/cacnea_palette.pal)0
-rw-r--r--graphics/pokemon/cacnea/shiny.pal (renamed from graphics/pokemon/palettes/cacnea_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/cacturne/back.png (renamed from graphics/pokemon/back_pics/cacturne_back_pic.png)bin653 -> 653 bytes
-rw-r--r--graphics/pokemon/cacturne/footprint.png (renamed from graphics/pokemon/footprints/cacturne_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/cacturne/front.png (renamed from graphics/pokemon/front_pics/cacturne_still_front_pic.png)bin917 -> 917 bytes
-rw-r--r--graphics/pokemon/cacturne/icon.png (renamed from graphics/pokemon/icons/cacturne_icon.png)bin299 -> 299 bytes
-rw-r--r--graphics/pokemon/cacturne/normal.pal (renamed from graphics/pokemon/palettes/cacturne_palette.pal)0
-rw-r--r--graphics/pokemon/cacturne/shiny.pal (renamed from graphics/pokemon/palettes/cacturne_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/camerupt/back.png (renamed from graphics/pokemon/back_pics/camerupt_back_pic.png)bin527 -> 527 bytes
-rw-r--r--graphics/pokemon/camerupt/footprint.png (renamed from graphics/pokemon/footprints/camerupt_footprint.png)bin109 -> 109 bytes
-rw-r--r--graphics/pokemon/camerupt/front.png (renamed from graphics/pokemon/front_pics/camerupt_still_front_pic.png)bin839 -> 839 bytes
-rw-r--r--graphics/pokemon/camerupt/icon.png (renamed from graphics/pokemon/icons/camerupt_icon.png)bin404 -> 404 bytes
-rw-r--r--graphics/pokemon/camerupt/normal.pal (renamed from graphics/pokemon/palettes/camerupt_palette.pal)0
-rw-r--r--graphics/pokemon/camerupt/shiny.pal (renamed from graphics/pokemon/palettes/camerupt_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/carvanha/back.png (renamed from graphics/pokemon/back_pics/carvanha_back_pic.png)bin648 -> 648 bytes
-rw-r--r--graphics/pokemon/carvanha/footprint.png (renamed from graphics/pokemon/footprints/carvanha_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/carvanha/front.png (renamed from graphics/pokemon/front_pics/carvanha_still_front_pic.png)bin692 -> 692 bytes
-rw-r--r--graphics/pokemon/carvanha/icon.png (renamed from graphics/pokemon/icons/carvanha_icon.png)bin392 -> 392 bytes
-rw-r--r--graphics/pokemon/carvanha/normal.pal (renamed from graphics/pokemon/palettes/carvanha_palette.pal)0
-rw-r--r--graphics/pokemon/carvanha/shiny.pal (renamed from graphics/pokemon/palettes/carvanha_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/cascoon/back.png (renamed from graphics/pokemon/back_pics/cascoon_back_pic.png)bin404 -> 404 bytes
-rw-r--r--graphics/pokemon/cascoon/footprint.png (renamed from graphics/pokemon/footprints/cascoon_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/cascoon/front.png (renamed from graphics/pokemon/front_pics/cascoon_still_front_pic.png)bin493 -> 493 bytes
-rw-r--r--graphics/pokemon/cascoon/icon.png (renamed from graphics/pokemon/icons/cascoon_icon.png)bin342 -> 342 bytes
-rw-r--r--graphics/pokemon/cascoon/normal.pal (renamed from graphics/pokemon/palettes/cascoon_palette.pal)0
-rw-r--r--graphics/pokemon/cascoon/shiny.pal (renamed from graphics/pokemon/palettes/cascoon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/castform/footprint.png (renamed from graphics/pokemon/footprints/castform_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/castform/icon.png (renamed from graphics/pokemon/icons/castform_icon.png)bin263 -> 263 bytes
-rw-r--r--graphics/pokemon/castform/normal/back.png (renamed from graphics/pokemon/back_pics/castform_normal_form_back_pic.png)bin373 -> 373 bytes
-rw-r--r--graphics/pokemon/castform/normal/front.png (renamed from graphics/pokemon/front_pics/castform_normal_form_still_front_pic.png)bin382 -> 382 bytes
-rw-r--r--graphics/pokemon/castform/normal/normal.pal (renamed from graphics/pokemon/palettes/castform_normal_form_palette.pal)0
-rw-r--r--graphics/pokemon/castform/normal/shiny.pal (renamed from graphics/pokemon/palettes/castform_normal_form_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/castform/rainy/back.png (renamed from graphics/pokemon/back_pics/castform_rainy_form_back_pic.png)bin495 -> 495 bytes
-rw-r--r--graphics/pokemon/castform/rainy/front.png (renamed from graphics/pokemon/front_pics/castform_rainy_form_still_front_pic.png)bin549 -> 549 bytes
-rw-r--r--graphics/pokemon/castform/rainy/normal.pal (renamed from graphics/pokemon/palettes/castform_rainy_form_palette.pal)0
-rw-r--r--graphics/pokemon/castform/rainy/shiny.pal (renamed from graphics/pokemon/palettes/castform_rainy_form_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/castform/snowy/back.png (renamed from graphics/pokemon/back_pics/castform_snowy_form_back_pic.png)bin628 -> 628 bytes
-rw-r--r--graphics/pokemon/castform/snowy/front.png (renamed from graphics/pokemon/front_pics/castform_snowy_form_still_front_pic.png)bin688 -> 688 bytes
-rw-r--r--graphics/pokemon/castform/snowy/normal.pal (renamed from graphics/pokemon/palettes/castform_snowy_form_palette.pal)0
-rw-r--r--graphics/pokemon/castform/snowy/shiny.pal (renamed from graphics/pokemon/palettes/castform_snowy_form_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/castform/sunny/back.png (renamed from graphics/pokemon/back_pics/castform_sunny_form_back_pic.png)bin559 -> 559 bytes
-rw-r--r--graphics/pokemon/castform/sunny/front.png (renamed from graphics/pokemon/front_pics/castform_sunny_form_still_front_pic.png)bin656 -> 656 bytes
-rw-r--r--graphics/pokemon/castform/sunny/normal.pal (renamed from graphics/pokemon/palettes/castform_sunny_form_palette.pal)0
-rw-r--r--graphics/pokemon/castform/sunny/shiny.pal (renamed from graphics/pokemon/palettes/castform_sunny_form_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/caterpie/back.png (renamed from graphics/pokemon/back_pics/caterpie_back_pic.png)bin521 -> 521 bytes
-rw-r--r--graphics/pokemon/caterpie/footprint.png (renamed from graphics/pokemon/footprints/caterpie_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/caterpie/front.png (renamed from graphics/pokemon/front_pics/caterpie_still_front_pic.png)bin501 -> 501 bytes
-rw-r--r--graphics/pokemon/caterpie/icon.png (renamed from graphics/pokemon/icons/caterpie_icon.png)bin277 -> 277 bytes
-rw-r--r--graphics/pokemon/caterpie/normal.pal (renamed from graphics/pokemon/palettes/caterpie_palette.pal)0
-rw-r--r--graphics/pokemon/caterpie/shiny.pal (renamed from graphics/pokemon/palettes/caterpie_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/celebi/back.png (renamed from graphics/pokemon/back_pics/celebi_back_pic.png)bin757 -> 757 bytes
-rw-r--r--graphics/pokemon/celebi/footprint.png (renamed from graphics/pokemon/footprints/celebi_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/celebi/front.png (renamed from graphics/pokemon/front_pics/celebi_still_front_pic.png)bin514 -> 514 bytes
-rw-r--r--graphics/pokemon/celebi/icon.png (renamed from graphics/pokemon/icons/celebi_icon.png)bin330 -> 330 bytes
-rw-r--r--graphics/pokemon/celebi/normal.pal (renamed from graphics/pokemon/palettes/celebi_palette.pal)0
-rw-r--r--graphics/pokemon/celebi/shiny.pal (renamed from graphics/pokemon/palettes/celebi_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/chansey/back.png (renamed from graphics/pokemon/back_pics/chansey_back_pic.png)bin453 -> 453 bytes
-rw-r--r--graphics/pokemon/chansey/footprint.png (renamed from graphics/pokemon/footprints/chansey_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/chansey/front.png (renamed from graphics/pokemon/front_pics/chansey_still_front_pic.png)bin669 -> 669 bytes
-rw-r--r--graphics/pokemon/chansey/icon.png (renamed from graphics/pokemon/icons/chansey_icon.png)bin317 -> 317 bytes
-rw-r--r--graphics/pokemon/chansey/normal.pal (renamed from graphics/pokemon/palettes/chansey_palette.pal)0
-rw-r--r--graphics/pokemon/chansey/shiny.pal (renamed from graphics/pokemon/palettes/chansey_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/charizard/back.png (renamed from graphics/pokemon/back_pics/charizard_back_pic.png)bin799 -> 799 bytes
-rw-r--r--graphics/pokemon/charizard/footprint.png (renamed from graphics/pokemon/footprints/charizard_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/charizard/front.png (renamed from graphics/pokemon/front_pics/charizard_still_front_pic.png)bin1090 -> 1090 bytes
-rw-r--r--graphics/pokemon/charizard/icon.png (renamed from graphics/pokemon/icons/charizard_icon.png)bin462 -> 462 bytes
-rw-r--r--graphics/pokemon/charizard/normal.pal (renamed from graphics/pokemon/palettes/charizard_palette.pal)0
-rw-r--r--graphics/pokemon/charizard/shiny.pal (renamed from graphics/pokemon/palettes/charizard_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/charmander/back.png (renamed from graphics/pokemon/back_pics/charmander_back_pic.png)bin543 -> 543 bytes
-rw-r--r--graphics/pokemon/charmander/footprint.png (renamed from graphics/pokemon/footprints/charmander_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/charmander/front.png (renamed from graphics/pokemon/front_pics/charmander_still_front_pic.png)bin566 -> 566 bytes
-rw-r--r--graphics/pokemon/charmander/icon.png (renamed from graphics/pokemon/icons/charmander_icon.png)bin303 -> 303 bytes
-rw-r--r--graphics/pokemon/charmander/normal.pal (renamed from graphics/pokemon/palettes/charmander_palette.pal)0
-rw-r--r--graphics/pokemon/charmander/shiny.pal (renamed from graphics/pokemon/palettes/charmander_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/charmeleon/back.png (renamed from graphics/pokemon/back_pics/charmeleon_back_pic.png)bin625 -> 625 bytes
-rw-r--r--graphics/pokemon/charmeleon/footprint.png (renamed from graphics/pokemon/footprints/charmeleon_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/charmeleon/front.png (renamed from graphics/pokemon/front_pics/charmeleon_still_front_pic.png)bin781 -> 781 bytes
-rw-r--r--graphics/pokemon/charmeleon/icon.png (renamed from graphics/pokemon/icons/charmeleon_icon.png)bin412 -> 412 bytes
-rw-r--r--graphics/pokemon/charmeleon/normal.pal (renamed from graphics/pokemon/palettes/charmeleon_palette.pal)0
-rw-r--r--graphics/pokemon/charmeleon/shiny.pal (renamed from graphics/pokemon/palettes/charmeleon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/chikorita/back.png (renamed from graphics/pokemon/back_pics/chikorita_back_pic.png)bin569 -> 569 bytes
-rw-r--r--graphics/pokemon/chikorita/footprint.png (renamed from graphics/pokemon/footprints/chikorita_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/chikorita/front.png (renamed from graphics/pokemon/front_pics/chikorita_still_front_pic.png)bin507 -> 507 bytes
-rw-r--r--graphics/pokemon/chikorita/icon.png (renamed from graphics/pokemon/icons/chikorita_icon.png)bin334 -> 334 bytes
-rw-r--r--graphics/pokemon/chikorita/normal.pal (renamed from graphics/pokemon/palettes/chikorita_palette.pal)0
-rw-r--r--graphics/pokemon/chikorita/shiny.pal (renamed from graphics/pokemon/palettes/chikorita_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/chimecho/back.png (renamed from graphics/pokemon/back_pics/chimecho_back_pic.png)bin507 -> 507 bytes
-rw-r--r--graphics/pokemon/chimecho/footprint.png (renamed from graphics/pokemon/footprints/chimecho_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/chimecho/front.png (renamed from graphics/pokemon/front_pics/chimecho_still_front_pic.png)bin458 -> 458 bytes
-rw-r--r--graphics/pokemon/chimecho/icon.png (renamed from graphics/pokemon/icons/chimecho_icon.png)bin258 -> 258 bytes
-rw-r--r--graphics/pokemon/chimecho/normal.pal (renamed from graphics/pokemon/palettes/chimecho_palette.pal)0
-rw-r--r--graphics/pokemon/chimecho/shiny.pal (renamed from graphics/pokemon/palettes/chimecho_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/chinchou/back.png (renamed from graphics/pokemon/back_pics/chinchou_back_pic.png)bin637 -> 637 bytes
-rw-r--r--graphics/pokemon/chinchou/footprint.png (renamed from graphics/pokemon/footprints/chinchou_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/chinchou/front.png (renamed from graphics/pokemon/front_pics/chinchou_still_front_pic.png)bin607 -> 607 bytes
-rw-r--r--graphics/pokemon/chinchou/icon.png (renamed from graphics/pokemon/icons/chinchou_icon.png)bin378 -> 378 bytes
-rw-r--r--graphics/pokemon/chinchou/normal.pal (renamed from graphics/pokemon/palettes/chinchou_palette.pal)0
-rw-r--r--graphics/pokemon/chinchou/shiny.pal (renamed from graphics/pokemon/palettes/chinchou_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/clamperl/back.png (renamed from graphics/pokemon/back_pics/clamperl_back_pic.png)bin475 -> 475 bytes
-rw-r--r--graphics/pokemon/clamperl/footprint.png (renamed from graphics/pokemon/footprints/clamperl_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/clamperl/front.png (renamed from graphics/pokemon/front_pics/clamperl_still_front_pic.png)bin611 -> 611 bytes
-rw-r--r--graphics/pokemon/clamperl/icon.png (renamed from graphics/pokemon/icons/clamperl_icon.png)bin345 -> 345 bytes
-rw-r--r--graphics/pokemon/clamperl/normal.pal (renamed from graphics/pokemon/palettes/clamperl_palette.pal)0
-rw-r--r--graphics/pokemon/clamperl/shiny.pal (renamed from graphics/pokemon/palettes/clamperl_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/claydol/back.png (renamed from graphics/pokemon/back_pics/claydol_back_pic.png)bin774 -> 774 bytes
-rw-r--r--graphics/pokemon/claydol/footprint.png (renamed from graphics/pokemon/footprints/claydol_footprint.png)bin80 -> 80 bytes
-rw-r--r--graphics/pokemon/claydol/front.png (renamed from graphics/pokemon/front_pics/claydol_still_front_pic.png)bin771 -> 771 bytes
-rw-r--r--graphics/pokemon/claydol/icon.png (renamed from graphics/pokemon/icons/claydol_icon.png)bin331 -> 331 bytes
-rw-r--r--graphics/pokemon/claydol/normal.pal (renamed from graphics/pokemon/palettes/claydol_palette.pal)0
-rw-r--r--graphics/pokemon/claydol/shiny.pal (renamed from graphics/pokemon/palettes/claydol_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/clefable/back.png (renamed from graphics/pokemon/back_pics/clefable_back_pic.png)bin638 -> 638 bytes
-rw-r--r--graphics/pokemon/clefable/footprint.png (renamed from graphics/pokemon/footprints/clefable_footprint.png)bin101 -> 101 bytes
-rw-r--r--graphics/pokemon/clefable/front.png (renamed from graphics/pokemon/front_pics/clefable_still_front_pic.png)bin674 -> 674 bytes
-rw-r--r--graphics/pokemon/clefable/icon.png (renamed from graphics/pokemon/icons/clefable_icon.png)bin339 -> 339 bytes
-rw-r--r--graphics/pokemon/clefable/normal.pal (renamed from graphics/pokemon/palettes/clefable_palette.pal)0
-rw-r--r--graphics/pokemon/clefable/shiny.pal (renamed from graphics/pokemon/palettes/clefable_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/clefairy/back.png (renamed from graphics/pokemon/back_pics/clefairy_back_pic.png)bin561 -> 561 bytes
-rw-r--r--graphics/pokemon/clefairy/footprint.png (renamed from graphics/pokemon/footprints/clefairy_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/clefairy/front.png (renamed from graphics/pokemon/front_pics/clefairy_still_front_pic.png)bin540 -> 540 bytes
-rw-r--r--graphics/pokemon/clefairy/icon.png (renamed from graphics/pokemon/icons/clefairy_icon.png)bin305 -> 305 bytes
-rw-r--r--graphics/pokemon/clefairy/normal.pal (renamed from graphics/pokemon/palettes/clefairy_palette.pal)0
-rw-r--r--graphics/pokemon/clefairy/shiny.pal (renamed from graphics/pokemon/palettes/clefairy_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/cleffa/back.png (renamed from graphics/pokemon/back_pics/cleffa_back_pic.png)bin461 -> 461 bytes
-rw-r--r--graphics/pokemon/cleffa/footprint.png (renamed from graphics/pokemon/footprints/cleffa_footprint.png)bin79 -> 79 bytes
-rw-r--r--graphics/pokemon/cleffa/front.png (renamed from graphics/pokemon/front_pics/cleffa_still_front_pic.png)bin381 -> 381 bytes
-rw-r--r--graphics/pokemon/cleffa/icon.png (renamed from graphics/pokemon/icons/cleffa_icon.png)bin302 -> 302 bytes
-rw-r--r--graphics/pokemon/cleffa/normal.pal (renamed from graphics/pokemon/palettes/cleffa_palette.pal)0
-rw-r--r--graphics/pokemon/cleffa/shiny.pal (renamed from graphics/pokemon/palettes/cleffa_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/cloyster/back.png (renamed from graphics/pokemon/back_pics/cloyster_back_pic.png)bin769 -> 769 bytes
-rw-r--r--graphics/pokemon/cloyster/footprint.png (renamed from graphics/pokemon/footprints/cloyster_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/cloyster/front.png (renamed from graphics/pokemon/front_pics/cloyster_still_front_pic.png)bin875 -> 875 bytes
-rw-r--r--graphics/pokemon/cloyster/icon.png (renamed from graphics/pokemon/icons/cloyster_icon.png)bin507 -> 507 bytes
-rw-r--r--graphics/pokemon/cloyster/normal.pal (renamed from graphics/pokemon/palettes/cloyster_palette.pal)0
-rw-r--r--graphics/pokemon/cloyster/shiny.pal (renamed from graphics/pokemon/palettes/cloyster_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/combusken/back.png (renamed from graphics/pokemon/back_pics/combusken_back_pic.png)bin812 -> 812 bytes
-rw-r--r--graphics/pokemon/combusken/footprint.png (renamed from graphics/pokemon/footprints/combusken_footprint.png)bin109 -> 109 bytes
-rw-r--r--graphics/pokemon/combusken/front.png (renamed from graphics/pokemon/front_pics/combusken_still_front_pic.png)bin838 -> 838 bytes
-rw-r--r--graphics/pokemon/combusken/icon.png (renamed from graphics/pokemon/icons/combusken_icon.png)bin351 -> 351 bytes
-rw-r--r--graphics/pokemon/combusken/normal.pal (renamed from graphics/pokemon/palettes/combusken_palette.pal)0
-rw-r--r--graphics/pokemon/combusken/shiny.pal (renamed from graphics/pokemon/palettes/combusken_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/corphish/back.png (renamed from graphics/pokemon/back_pics/corphish_back_pic.png)bin662 -> 662 bytes
-rw-r--r--graphics/pokemon/corphish/footprint.png (renamed from graphics/pokemon/footprints/corphish_footprint.png)bin102 -> 102 bytes
-rw-r--r--graphics/pokemon/corphish/front.png (renamed from graphics/pokemon/front_pics/corphish_still_front_pic.png)bin704 -> 704 bytes
-rw-r--r--graphics/pokemon/corphish/icon.png (renamed from graphics/pokemon/icons/corphish_icon.png)bin286 -> 286 bytes
-rw-r--r--graphics/pokemon/corphish/normal.pal (renamed from graphics/pokemon/palettes/corphish_palette.pal)0
-rw-r--r--graphics/pokemon/corphish/shiny.pal (renamed from graphics/pokemon/palettes/corphish_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/corsola/back.png (renamed from graphics/pokemon/back_pics/corsola_back_pic.png)bin525 -> 525 bytes
-rw-r--r--graphics/pokemon/corsola/footprint.png (renamed from graphics/pokemon/footprints/corsola_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/corsola/front.png (renamed from graphics/pokemon/front_pics/corsola_still_front_pic.png)bin601 -> 601 bytes
-rw-r--r--graphics/pokemon/corsola/icon.png (renamed from graphics/pokemon/icons/corsola_icon.png)bin365 -> 365 bytes
-rw-r--r--graphics/pokemon/corsola/normal.pal (renamed from graphics/pokemon/palettes/corsola_palette.pal)0
-rw-r--r--graphics/pokemon/corsola/shiny.pal (renamed from graphics/pokemon/palettes/corsola_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/cradily/back.png (renamed from graphics/pokemon/back_pics/cradily_back_pic.png)bin824 -> 824 bytes
-rw-r--r--graphics/pokemon/cradily/footprint.png (renamed from graphics/pokemon/footprints/cradily_footprint.png)bin98 -> 98 bytes
-rw-r--r--graphics/pokemon/cradily/front.png (renamed from graphics/pokemon/front_pics/cradily_still_front_pic.png)bin887 -> 887 bytes
-rw-r--r--graphics/pokemon/cradily/icon.png (renamed from graphics/pokemon/icons/cradily_icon.png)bin452 -> 452 bytes
-rw-r--r--graphics/pokemon/cradily/normal.pal (renamed from graphics/pokemon/palettes/cradily_palette.pal)0
-rw-r--r--graphics/pokemon/cradily/shiny.pal (renamed from graphics/pokemon/palettes/cradily_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/crawdaunt/back.png (renamed from graphics/pokemon/back_pics/crawdaunt_back_pic.png)bin787 -> 787 bytes
-rw-r--r--graphics/pokemon/crawdaunt/footprint.png (renamed from graphics/pokemon/footprints/crawdaunt_footprint.png)bin104 -> 104 bytes
-rw-r--r--graphics/pokemon/crawdaunt/front.png (renamed from graphics/pokemon/front_pics/crawdaunt_still_front_pic.png)bin1006 -> 1006 bytes
-rw-r--r--graphics/pokemon/crawdaunt/icon.png (renamed from graphics/pokemon/icons/crawdaunt_icon.png)bin402 -> 402 bytes
-rw-r--r--graphics/pokemon/crawdaunt/normal.pal (renamed from graphics/pokemon/palettes/crawdaunt_palette.pal)0
-rw-r--r--graphics/pokemon/crawdaunt/shiny.pal (renamed from graphics/pokemon/palettes/crawdaunt_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/crobat/back.png (renamed from graphics/pokemon/back_pics/crobat_back_pic.png)bin600 -> 600 bytes
-rw-r--r--graphics/pokemon/crobat/footprint.png (renamed from graphics/pokemon/footprints/crobat_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/crobat/front.png (renamed from graphics/pokemon/front_pics/crobat_still_front_pic.png)bin780 -> 780 bytes
-rw-r--r--graphics/pokemon/crobat/icon.png (renamed from graphics/pokemon/icons/crobat_icon.png)bin422 -> 422 bytes
-rw-r--r--graphics/pokemon/crobat/normal.pal (renamed from graphics/pokemon/palettes/crobat_palette.pal)0
-rw-r--r--graphics/pokemon/crobat/shiny.pal (renamed from graphics/pokemon/palettes/crobat_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/croconaw/back.png (renamed from graphics/pokemon/back_pics/croconaw_back_pic.png)bin709 -> 709 bytes
-rw-r--r--graphics/pokemon/croconaw/footprint.png (renamed from graphics/pokemon/footprints/croconaw_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/croconaw/front.png (renamed from graphics/pokemon/front_pics/croconaw_still_front_pic.png)bin730 -> 730 bytes
-rw-r--r--graphics/pokemon/croconaw/icon.png (renamed from graphics/pokemon/icons/croconaw_icon.png)bin356 -> 356 bytes
-rw-r--r--graphics/pokemon/croconaw/normal.pal (renamed from graphics/pokemon/palettes/croconaw_palette.pal)0
-rw-r--r--graphics/pokemon/croconaw/shiny.pal (renamed from graphics/pokemon/palettes/croconaw_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/cubone/back.png (renamed from graphics/pokemon/back_pics/cubone_back_pic.png)bin685 -> 685 bytes
-rw-r--r--graphics/pokemon/cubone/footprint.png (renamed from graphics/pokemon/footprints/cubone_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/cubone/front.png (renamed from graphics/pokemon/front_pics/cubone_still_front_pic.png)bin572 -> 572 bytes
-rw-r--r--graphics/pokemon/cubone/icon.png (renamed from graphics/pokemon/icons/cubone_icon.png)bin350 -> 350 bytes
-rw-r--r--graphics/pokemon/cubone/normal.pal (renamed from graphics/pokemon/palettes/cubone_palette.pal)0
-rw-r--r--graphics/pokemon/cubone/shiny.pal (renamed from graphics/pokemon/palettes/cubone_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/cyndaquil/back.png (renamed from graphics/pokemon/back_pics/cyndaquil_back_pic.png)bin670 -> 670 bytes
-rw-r--r--graphics/pokemon/cyndaquil/footprint.png (renamed from graphics/pokemon/footprints/cyndaquil_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/cyndaquil/front.png (renamed from graphics/pokemon/front_pics/cyndaquil_still_front_pic.png)bin546 -> 546 bytes
-rw-r--r--graphics/pokemon/cyndaquil/icon.png (renamed from graphics/pokemon/icons/cyndaquil_icon.png)bin360 -> 360 bytes
-rw-r--r--graphics/pokemon/cyndaquil/normal.pal (renamed from graphics/pokemon/palettes/cyndaquil_palette.pal)0
-rw-r--r--graphics/pokemon/cyndaquil/shiny.pal (renamed from graphics/pokemon/palettes/cyndaquil_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/delcatty/back.png (renamed from graphics/pokemon/back_pics/delcatty_back_pic.png)bin737 -> 737 bytes
-rw-r--r--graphics/pokemon/delcatty/footprint.png (renamed from graphics/pokemon/footprints/delcatty_footprint.png)bin107 -> 107 bytes
-rw-r--r--graphics/pokemon/delcatty/front.png (renamed from graphics/pokemon/front_pics/delcatty_still_front_pic.png)bin765 -> 765 bytes
-rw-r--r--graphics/pokemon/delcatty/icon.png (renamed from graphics/pokemon/icons/delcatty_icon.png)bin420 -> 420 bytes
-rw-r--r--graphics/pokemon/delcatty/normal.pal (renamed from graphics/pokemon/palettes/delcatty_palette.pal)0
-rw-r--r--graphics/pokemon/delcatty/shiny.pal (renamed from graphics/pokemon/palettes/delcatty_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/delibird/back.png (renamed from graphics/pokemon/back_pics/delibird_back_pic.png)bin786 -> 786 bytes
-rw-r--r--graphics/pokemon/delibird/footprint.png (renamed from graphics/pokemon/footprints/delibird_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/delibird/front.png (renamed from graphics/pokemon/front_pics/delibird_still_front_pic.png)bin733 -> 733 bytes
-rw-r--r--graphics/pokemon/delibird/icon.png (renamed from graphics/pokemon/icons/delibird_icon.png)bin357 -> 357 bytes
-rw-r--r--graphics/pokemon/delibird/normal.pal (renamed from graphics/pokemon/palettes/delibird_palette.pal)0
-rw-r--r--graphics/pokemon/delibird/shiny.pal (renamed from graphics/pokemon/palettes/delibird_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/deoxys/back.png (renamed from graphics/pokemon/back_pics/deoxys_back_pic.png)bin1146 -> 1146 bytes
-rw-r--r--graphics/pokemon/deoxys/footprint.png (renamed from graphics/pokemon/footprints/deoxys_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/deoxys/front.png (renamed from graphics/pokemon/front_pics/deoxys_still_front_pic.png)bin1579 -> 1579 bytes
-rw-r--r--graphics/pokemon/deoxys/icon.png (renamed from graphics/pokemon/icons/deoxys_icon.png)bin430 -> 430 bytes
-rw-r--r--graphics/pokemon/deoxys/normal.pal (renamed from graphics/pokemon/palettes/deoxys_palette.pal)0
-rw-r--r--graphics/pokemon/deoxys/shiny.pal (renamed from graphics/pokemon/palettes/deoxys_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/deoxys/speed_icon.png (renamed from graphics/pokemon/icons/deoxys_speed_icon.png)bin456 -> 456 bytes
-rw-r--r--graphics/pokemon/dewgong/back.png (renamed from graphics/pokemon/back_pics/dewgong_back_pic.png)bin523 -> 523 bytes
-rw-r--r--graphics/pokemon/dewgong/footprint.png (renamed from graphics/pokemon/footprints/dewgong_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/dewgong/front.png (renamed from graphics/pokemon/front_pics/dewgong_still_front_pic.png)bin763 -> 763 bytes
-rw-r--r--graphics/pokemon/dewgong/icon.png (renamed from graphics/pokemon/icons/dewgong_icon.png)bin415 -> 415 bytes
-rw-r--r--graphics/pokemon/dewgong/normal.pal (renamed from graphics/pokemon/palettes/dewgong_palette.pal)0
-rw-r--r--graphics/pokemon/dewgong/shiny.pal (renamed from graphics/pokemon/palettes/dewgong_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/diglett/back.png (renamed from graphics/pokemon/back_pics/diglett_back_pic.png)bin406 -> 406 bytes
-rw-r--r--graphics/pokemon/diglett/footprint.png (renamed from graphics/pokemon/footprints/diglett_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/diglett/front.png (renamed from graphics/pokemon/front_pics/diglett_still_front_pic.png)bin424 -> 424 bytes
-rw-r--r--graphics/pokemon/diglett/icon.png (renamed from graphics/pokemon/icons/diglett_icon.png)bin249 -> 249 bytes
-rw-r--r--graphics/pokemon/diglett/normal.pal (renamed from graphics/pokemon/palettes/diglett_palette.pal)0
-rw-r--r--graphics/pokemon/diglett/shiny.pal (renamed from graphics/pokemon/palettes/diglett_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/ditto/back.png (renamed from graphics/pokemon/back_pics/ditto_back_pic.png)bin399 -> 399 bytes
-rw-r--r--graphics/pokemon/ditto/footprint.png (renamed from graphics/pokemon/footprints/ditto_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/ditto/front.png (renamed from graphics/pokemon/front_pics/ditto_still_front_pic.png)bin377 -> 377 bytes
-rw-r--r--graphics/pokemon/ditto/icon.png (renamed from graphics/pokemon/icons/ditto_icon.png)bin270 -> 270 bytes
-rw-r--r--graphics/pokemon/ditto/normal.pal (renamed from graphics/pokemon/palettes/ditto_palette.pal)0
-rw-r--r--graphics/pokemon/ditto/shiny.pal (renamed from graphics/pokemon/palettes/ditto_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/dodrio/back.png (renamed from graphics/pokemon/back_pics/dodrio_back_pic.png)bin910 -> 910 bytes
-rw-r--r--graphics/pokemon/dodrio/footprint.png (renamed from graphics/pokemon/footprints/dodrio_footprint.png)bin110 -> 110 bytes
-rw-r--r--graphics/pokemon/dodrio/front.png (renamed from graphics/pokemon/front_pics/dodrio_still_front_pic.png)bin910 -> 910 bytes
-rw-r--r--graphics/pokemon/dodrio/icon.png (renamed from graphics/pokemon/icons/dodrio_icon.png)bin446 -> 446 bytes
-rw-r--r--graphics/pokemon/dodrio/normal.pal (renamed from graphics/pokemon/palettes/dodrio_palette.pal)0
-rw-r--r--graphics/pokemon/dodrio/shiny.pal (renamed from graphics/pokemon/palettes/dodrio_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/doduo/back.png (renamed from graphics/pokemon/back_pics/doduo_back_pic.png)bin651 -> 651 bytes
-rw-r--r--graphics/pokemon/doduo/footprint.png (renamed from graphics/pokemon/footprints/doduo_footprint.png)bin101 -> 101 bytes
-rw-r--r--graphics/pokemon/doduo/front.png (renamed from graphics/pokemon/front_pics/doduo_still_front_pic.png)bin619 -> 619 bytes
-rw-r--r--graphics/pokemon/doduo/icon.png (renamed from graphics/pokemon/icons/doduo_icon.png)bin351 -> 351 bytes
-rw-r--r--graphics/pokemon/doduo/normal.pal (renamed from graphics/pokemon/palettes/doduo_palette.pal)0
-rw-r--r--graphics/pokemon/doduo/shiny.pal (renamed from graphics/pokemon/palettes/doduo_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/donphan/back.png (renamed from graphics/pokemon/back_pics/donphan_back_pic.png)bin571 -> 571 bytes
-rw-r--r--graphics/pokemon/donphan/footprint.png (renamed from graphics/pokemon/footprints/donphan_footprint.png)bin96 -> 96 bytes
-rw-r--r--graphics/pokemon/donphan/front.png (renamed from graphics/pokemon/front_pics/donphan_still_front_pic.png)bin923 -> 923 bytes
-rw-r--r--graphics/pokemon/donphan/icon.png (renamed from graphics/pokemon/icons/donphan_icon.png)bin471 -> 471 bytes
-rw-r--r--graphics/pokemon/donphan/normal.pal (renamed from graphics/pokemon/palettes/donphan_palette.pal)0
-rw-r--r--graphics/pokemon/donphan/shiny.pal (renamed from graphics/pokemon/palettes/donphan_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/dragonair/back.png (renamed from graphics/pokemon/back_pics/dragonair_back_pic.png)bin672 -> 672 bytes
-rw-r--r--graphics/pokemon/dragonair/footprint.png (renamed from graphics/pokemon/footprints/dragonair_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/dragonair/front.png (renamed from graphics/pokemon/front_pics/dragonair_still_front_pic.png)bin758 -> 758 bytes
-rw-r--r--graphics/pokemon/dragonair/icon.png (renamed from graphics/pokemon/icons/dragonair_icon.png)bin383 -> 383 bytes
-rw-r--r--graphics/pokemon/dragonair/normal.pal (renamed from graphics/pokemon/palettes/dragonair_palette.pal)0
-rw-r--r--graphics/pokemon/dragonair/shiny.pal (renamed from graphics/pokemon/palettes/dragonair_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/dragonite/back.png (renamed from graphics/pokemon/back_pics/dragonite_back_pic.png)bin624 -> 624 bytes
-rw-r--r--graphics/pokemon/dragonite/footprint.png (renamed from graphics/pokemon/footprints/dragonite_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/dragonite/front.png (renamed from graphics/pokemon/front_pics/dragonite_still_front_pic.png)bin1172 -> 1172 bytes
-rw-r--r--graphics/pokemon/dragonite/icon.png (renamed from graphics/pokemon/icons/dragonite_icon.png)bin414 -> 414 bytes
-rw-r--r--graphics/pokemon/dragonite/normal.pal (renamed from graphics/pokemon/palettes/dragonite_palette.pal)0
-rw-r--r--graphics/pokemon/dragonite/shiny.pal (renamed from graphics/pokemon/palettes/dragonite_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/dratini/back.png (renamed from graphics/pokemon/back_pics/dratini_back_pic.png)bin525 -> 525 bytes
-rw-r--r--graphics/pokemon/dratini/footprint.png (renamed from graphics/pokemon/footprints/dratini_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/dratini/front.png (renamed from graphics/pokemon/front_pics/dratini_still_front_pic.png)bin568 -> 568 bytes
-rw-r--r--graphics/pokemon/dratini/icon.png (renamed from graphics/pokemon/icons/dratini_icon.png)bin334 -> 334 bytes
-rw-r--r--graphics/pokemon/dratini/normal.pal (renamed from graphics/pokemon/palettes/dratini_palette.pal)0
-rw-r--r--graphics/pokemon/dratini/shiny.pal (renamed from graphics/pokemon/palettes/dratini_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/drowzee/back.png (renamed from graphics/pokemon/back_pics/drowzee_back_pic.png)bin440 -> 440 bytes
-rw-r--r--graphics/pokemon/drowzee/footprint.png (renamed from graphics/pokemon/footprints/drowzee_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/drowzee/front.png (renamed from graphics/pokemon/front_pics/drowzee_still_front_pic.png)bin653 -> 653 bytes
-rw-r--r--graphics/pokemon/drowzee/icon.png (renamed from graphics/pokemon/icons/drowzee_icon.png)bin416 -> 416 bytes
-rw-r--r--graphics/pokemon/drowzee/normal.pal (renamed from graphics/pokemon/palettes/drowzee_palette.pal)0
-rw-r--r--graphics/pokemon/drowzee/shiny.pal (renamed from graphics/pokemon/palettes/drowzee_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/dugtrio/back.png (renamed from graphics/pokemon/back_pics/dugtrio_back_pic.png)bin541 -> 541 bytes
-rw-r--r--graphics/pokemon/dugtrio/footprint.png (renamed from graphics/pokemon/footprints/dugtrio_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/dugtrio/front.png (renamed from graphics/pokemon/front_pics/dugtrio_still_front_pic.png)bin642 -> 642 bytes
-rw-r--r--graphics/pokemon/dugtrio/icon.png (renamed from graphics/pokemon/icons/dugtrio_icon.png)bin296 -> 296 bytes
-rw-r--r--graphics/pokemon/dugtrio/normal.pal (renamed from graphics/pokemon/palettes/dugtrio_palette.pal)0
-rw-r--r--graphics/pokemon/dugtrio/shiny.pal (renamed from graphics/pokemon/palettes/dugtrio_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/dunsparce/back.png (renamed from graphics/pokemon/back_pics/dunsparce_back_pic.png)bin593 -> 593 bytes
-rw-r--r--graphics/pokemon/dunsparce/footprint.png (renamed from graphics/pokemon/footprints/dunsparce_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/dunsparce/front.png (renamed from graphics/pokemon/front_pics/dunsparce_still_front_pic.png)bin645 -> 645 bytes
-rw-r--r--graphics/pokemon/dunsparce/icon.png (renamed from graphics/pokemon/icons/dunsparce_icon.png)bin341 -> 341 bytes
-rw-r--r--graphics/pokemon/dunsparce/normal.pal (renamed from graphics/pokemon/palettes/dunsparce_palette.pal)0
-rw-r--r--graphics/pokemon/dunsparce/shiny.pal (renamed from graphics/pokemon/palettes/dunsparce_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/dusclops/back.png (renamed from graphics/pokemon/back_pics/dusclops_back_pic.png)bin559 -> 559 bytes
-rw-r--r--graphics/pokemon/dusclops/footprint.png (renamed from graphics/pokemon/footprints/dusclops_footprint.png)bin106 -> 106 bytes
-rw-r--r--graphics/pokemon/dusclops/front.png (renamed from graphics/pokemon/front_pics/dusclops_still_front_pic.png)bin741 -> 741 bytes
-rw-r--r--graphics/pokemon/dusclops/icon.png (renamed from graphics/pokemon/icons/dusclops_icon.png)bin344 -> 344 bytes
-rw-r--r--graphics/pokemon/dusclops/normal.pal (renamed from graphics/pokemon/palettes/dusclops_palette.pal)0
-rw-r--r--graphics/pokemon/dusclops/shiny.pal (renamed from graphics/pokemon/palettes/dusclops_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/duskull/back.png (renamed from graphics/pokemon/back_pics/duskull_back_pic.png)bin537 -> 537 bytes
-rw-r--r--graphics/pokemon/duskull/footprint.png (renamed from graphics/pokemon/footprints/duskull_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/duskull/front.png (renamed from graphics/pokemon/front_pics/duskull_still_front_pic.png)bin616 -> 616 bytes
-rw-r--r--graphics/pokemon/duskull/icon.png (renamed from graphics/pokemon/icons/duskull_icon.png)bin294 -> 294 bytes
-rw-r--r--graphics/pokemon/duskull/normal.pal (renamed from graphics/pokemon/palettes/duskull_palette.pal)0
-rw-r--r--graphics/pokemon/duskull/shiny.pal (renamed from graphics/pokemon/palettes/duskull_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/dustox/back.png (renamed from graphics/pokemon/back_pics/dustox_back_pic.png)bin481 -> 481 bytes
-rw-r--r--graphics/pokemon/dustox/footprint.png (renamed from graphics/pokemon/footprints/dustox_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/dustox/front.png (renamed from graphics/pokemon/front_pics/dustox_still_front_pic.png)bin724 -> 724 bytes
-rw-r--r--graphics/pokemon/dustox/icon.png (renamed from graphics/pokemon/icons/dustox_icon.png)bin428 -> 428 bytes
-rw-r--r--graphics/pokemon/dustox/normal.pal (renamed from graphics/pokemon/palettes/dustox_palette.pal)0
-rw-r--r--graphics/pokemon/dustox/shiny.pal (renamed from graphics/pokemon/palettes/dustox_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/eevee/back.png (renamed from graphics/pokemon/back_pics/eevee_back_pic.png)bin641 -> 641 bytes
-rw-r--r--graphics/pokemon/eevee/footprint.png (renamed from graphics/pokemon/footprints/eevee_footprint.png)bin96 -> 96 bytes
-rw-r--r--graphics/pokemon/eevee/front.png (renamed from graphics/pokemon/front_pics/eevee_still_front_pic.png)bin597 -> 597 bytes
-rw-r--r--graphics/pokemon/eevee/icon.png (renamed from graphics/pokemon/icons/eevee_icon.png)bin296 -> 296 bytes
-rw-r--r--graphics/pokemon/eevee/normal.pal (renamed from graphics/pokemon/palettes/eevee_palette.pal)0
-rw-r--r--graphics/pokemon/eevee/shiny.pal (renamed from graphics/pokemon/palettes/eevee_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/egg/front.png (renamed from graphics/pokemon/front_pics/egg_still_front_pic.png)bin318 -> 318 bytes
-rw-r--r--graphics/pokemon/egg/icon.png (renamed from graphics/pokemon/icons/egg_icon.png)bin310 -> 310 bytes
-rw-r--r--graphics/pokemon/egg/normal.pal (renamed from graphics/pokemon/palettes/egg_palette.pal)0
-rw-r--r--graphics/pokemon/ekans/back.png (renamed from graphics/pokemon/back_pics/ekans_back_pic.png)bin616 -> 616 bytes
-rw-r--r--graphics/pokemon/ekans/footprint.png (renamed from graphics/pokemon/footprints/ekans_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/ekans/front.png (renamed from graphics/pokemon/front_pics/ekans_still_front_pic.png)bin566 -> 566 bytes
-rw-r--r--graphics/pokemon/ekans/icon.png (renamed from graphics/pokemon/icons/ekans_icon.png)bin333 -> 333 bytes
-rw-r--r--graphics/pokemon/ekans/normal.pal (renamed from graphics/pokemon/palettes/ekans_palette.pal)0
-rw-r--r--graphics/pokemon/ekans/shiny.pal (renamed from graphics/pokemon/palettes/ekans_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/electabuzz/back.png (renamed from graphics/pokemon/back_pics/electabuzz_back_pic.png)bin611 -> 611 bytes
-rw-r--r--graphics/pokemon/electabuzz/footprint.png (renamed from graphics/pokemon/footprints/electabuzz_footprint.png)bin93 -> 93 bytes
-rw-r--r--graphics/pokemon/electabuzz/front.png (renamed from graphics/pokemon/front_pics/electabuzz_still_front_pic.png)bin882 -> 882 bytes
-rw-r--r--graphics/pokemon/electabuzz/icon.png (renamed from graphics/pokemon/icons/electabuzz_icon.png)bin321 -> 321 bytes
-rw-r--r--graphics/pokemon/electabuzz/normal.pal (renamed from graphics/pokemon/palettes/electabuzz_palette.pal)0
-rw-r--r--graphics/pokemon/electabuzz/shiny.pal (renamed from graphics/pokemon/palettes/electabuzz_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/electrike/back.png (renamed from graphics/pokemon/back_pics/electrike_back_pic.png)bin499 -> 499 bytes
-rw-r--r--graphics/pokemon/electrike/footprint.png (renamed from graphics/pokemon/footprints/electrike_footprint.png)bin101 -> 101 bytes
-rw-r--r--graphics/pokemon/electrike/front.png (renamed from graphics/pokemon/front_pics/electrike_still_front_pic.png)bin511 -> 511 bytes
-rw-r--r--graphics/pokemon/electrike/icon.png (renamed from graphics/pokemon/icons/electrike_icon.png)bin352 -> 352 bytes
-rw-r--r--graphics/pokemon/electrike/normal.pal (renamed from graphics/pokemon/palettes/electrike_palette.pal)0
-rw-r--r--graphics/pokemon/electrike/shiny.pal (renamed from graphics/pokemon/palettes/electrike_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/electrode/back.png (renamed from graphics/pokemon/back_pics/electrode_back_pic.png)bin477 -> 477 bytes
-rw-r--r--graphics/pokemon/electrode/footprint.png (renamed from graphics/pokemon/footprints/electrode_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/electrode/front.png (renamed from graphics/pokemon/front_pics/electrode_still_front_pic.png)bin490 -> 490 bytes
-rw-r--r--graphics/pokemon/electrode/icon.png (renamed from graphics/pokemon/icons/electrode_icon.png)bin245 -> 245 bytes
-rw-r--r--graphics/pokemon/electrode/normal.pal (renamed from graphics/pokemon/palettes/electrode_palette.pal)0
-rw-r--r--graphics/pokemon/electrode/shiny.pal (renamed from graphics/pokemon/palettes/electrode_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/elekid/back.png (renamed from graphics/pokemon/back_pics/elekid_back_pic.png)bin660 -> 660 bytes
-rw-r--r--graphics/pokemon/elekid/footprint.png (renamed from graphics/pokemon/footprints/elekid_footprint.png)bin89 -> 89 bytes
-rw-r--r--graphics/pokemon/elekid/front.png (renamed from graphics/pokemon/front_pics/elekid_still_front_pic.png)bin646 -> 646 bytes
-rw-r--r--graphics/pokemon/elekid/icon.png (renamed from graphics/pokemon/icons/elekid_icon.png)bin327 -> 327 bytes
-rw-r--r--graphics/pokemon/elekid/normal.pal (renamed from graphics/pokemon/palettes/elekid_palette.pal)0
-rw-r--r--graphics/pokemon/elekid/shiny.pal (renamed from graphics/pokemon/palettes/elekid_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/entei/back.png (renamed from graphics/pokemon/back_pics/entei_back_pic.png)bin859 -> 859 bytes
-rw-r--r--graphics/pokemon/entei/footprint.png (renamed from graphics/pokemon/footprints/entei_footprint.png)bin101 -> 101 bytes
-rw-r--r--graphics/pokemon/entei/front.png (renamed from graphics/pokemon/front_pics/entei_still_front_pic.png)bin1284 -> 1284 bytes
-rw-r--r--graphics/pokemon/entei/icon.png (renamed from graphics/pokemon/icons/entei_icon.png)bin453 -> 453 bytes
-rw-r--r--graphics/pokemon/entei/normal.pal (renamed from graphics/pokemon/palettes/entei_palette.pal)0
-rw-r--r--graphics/pokemon/entei/shiny.pal (renamed from graphics/pokemon/palettes/entei_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/espeon/back.png (renamed from graphics/pokemon/back_pics/espeon_back_pic.png)bin554 -> 554 bytes
-rw-r--r--graphics/pokemon/espeon/footprint.png (renamed from graphics/pokemon/footprints/espeon_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/espeon/front.png (renamed from graphics/pokemon/front_pics/espeon_still_front_pic.png)bin659 -> 659 bytes
-rw-r--r--graphics/pokemon/espeon/icon.png (renamed from graphics/pokemon/icons/espeon_icon.png)bin354 -> 354 bytes
-rw-r--r--graphics/pokemon/espeon/normal.pal (renamed from graphics/pokemon/palettes/espeon_palette.pal)0
-rw-r--r--graphics/pokemon/espeon/shiny.pal (renamed from graphics/pokemon/palettes/espeon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/exeggcute/back.png (renamed from graphics/pokemon/back_pics/exeggcute_back_pic.png)bin597 -> 597 bytes
-rw-r--r--graphics/pokemon/exeggcute/footprint.png (renamed from graphics/pokemon/footprints/exeggcute_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/exeggcute/front.png (renamed from graphics/pokemon/front_pics/exeggcute_still_front_pic.png)bin711 -> 711 bytes
-rw-r--r--graphics/pokemon/exeggcute/icon.png (renamed from graphics/pokemon/icons/exeggcute_icon.png)bin383 -> 383 bytes
-rw-r--r--graphics/pokemon/exeggcute/normal.pal (renamed from graphics/pokemon/palettes/exeggcute_palette.pal)0
-rw-r--r--graphics/pokemon/exeggcute/shiny.pal (renamed from graphics/pokemon/palettes/exeggcute_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/exeggutor/back.png (renamed from graphics/pokemon/back_pics/exeggutor_back_pic.png)bin778 -> 778 bytes
-rw-r--r--graphics/pokemon/exeggutor/footprint.png (renamed from graphics/pokemon/footprints/exeggutor_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/exeggutor/front.png (renamed from graphics/pokemon/front_pics/exeggutor_still_front_pic.png)bin930 -> 930 bytes
-rw-r--r--graphics/pokemon/exeggutor/icon.png (renamed from graphics/pokemon/icons/exeggutor_icon.png)bin368 -> 368 bytes
-rw-r--r--graphics/pokemon/exeggutor/normal.pal (renamed from graphics/pokemon/palettes/exeggutor_palette.pal)0
-rw-r--r--graphics/pokemon/exeggutor/shiny.pal (renamed from graphics/pokemon/palettes/exeggutor_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/exploud/back.png (renamed from graphics/pokemon/back_pics/exploud_back_pic.png)bin838 -> 838 bytes
-rw-r--r--graphics/pokemon/exploud/footprint.png (renamed from graphics/pokemon/footprints/exploud_footprint.png)bin108 -> 108 bytes
-rw-r--r--graphics/pokemon/exploud/front.png (renamed from graphics/pokemon/front_pics/exploud_still_front_pic.png)bin1157 -> 1157 bytes
-rw-r--r--graphics/pokemon/exploud/icon.png (renamed from graphics/pokemon/icons/exploud_icon.png)bin447 -> 447 bytes
-rw-r--r--graphics/pokemon/exploud/normal.pal (renamed from graphics/pokemon/palettes/exploud_palette.pal)0
-rw-r--r--graphics/pokemon/exploud/shiny.pal (renamed from graphics/pokemon/palettes/exploud_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/farfetch_d/back.png (renamed from graphics/pokemon/back_pics/farfetch_d_back_pic.png)bin696 -> 696 bytes
-rw-r--r--graphics/pokemon/farfetch_d/footprint.png (renamed from graphics/pokemon/footprints/farfetch_d_footprint.png)bin99 -> 99 bytes
-rw-r--r--graphics/pokemon/farfetch_d/front.png (renamed from graphics/pokemon/front_pics/farfetch_d_still_front_pic.png)bin701 -> 701 bytes
-rw-r--r--graphics/pokemon/farfetch_d/icon.png (renamed from graphics/pokemon/icons/farfetch_d_icon.png)bin396 -> 396 bytes
-rw-r--r--graphics/pokemon/farfetch_d/normal.pal (renamed from graphics/pokemon/palettes/farfetch_d_palette.pal)0
-rw-r--r--graphics/pokemon/farfetch_d/shiny.pal (renamed from graphics/pokemon/palettes/farfetch_d_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/fearow/back.png (renamed from graphics/pokemon/back_pics/fearow_back_pic.png)bin635 -> 635 bytes
-rw-r--r--graphics/pokemon/fearow/footprint.png (renamed from graphics/pokemon/footprints/fearow_footprint.png)bin102 -> 102 bytes
-rw-r--r--graphics/pokemon/fearow/front.png (renamed from graphics/pokemon/front_pics/fearow_still_front_pic.png)bin1022 -> 1022 bytes
-rw-r--r--graphics/pokemon/fearow/icon.png (renamed from graphics/pokemon/icons/fearow_icon.png)bin465 -> 465 bytes
-rw-r--r--graphics/pokemon/fearow/normal.pal (renamed from graphics/pokemon/palettes/fearow_palette.pal)0
-rw-r--r--graphics/pokemon/fearow/shiny.pal (renamed from graphics/pokemon/palettes/fearow_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/feebas/back.png (renamed from graphics/pokemon/back_pics/feebas_back_pic.png)bin666 -> 666 bytes
-rw-r--r--graphics/pokemon/feebas/footprint.png (renamed from graphics/pokemon/footprints/feebas_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/feebas/front.png (renamed from graphics/pokemon/front_pics/feebas_still_front_pic.png)bin539 -> 539 bytes
-rw-r--r--graphics/pokemon/feebas/icon.png (renamed from graphics/pokemon/icons/feebas_icon.png)bin359 -> 359 bytes
-rw-r--r--graphics/pokemon/feebas/normal.pal (renamed from graphics/pokemon/palettes/feebas_palette.pal)0
-rw-r--r--graphics/pokemon/feebas/shiny.pal (renamed from graphics/pokemon/palettes/feebas_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/feraligatr/back.png (renamed from graphics/pokemon/back_pics/feraligatr_back_pic.png)bin999 -> 999 bytes
-rw-r--r--graphics/pokemon/feraligatr/footprint.png (renamed from graphics/pokemon/footprints/feraligatr_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/feraligatr/front.png (renamed from graphics/pokemon/front_pics/feraligatr_still_front_pic.png)bin1122 -> 1122 bytes
-rw-r--r--graphics/pokemon/feraligatr/icon.png (renamed from graphics/pokemon/icons/feraligatr_icon.png)bin488 -> 488 bytes
-rw-r--r--graphics/pokemon/feraligatr/normal.pal (renamed from graphics/pokemon/palettes/feraligatr_palette.pal)0
-rw-r--r--graphics/pokemon/feraligatr/shiny.pal (renamed from graphics/pokemon/palettes/feraligatr_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/flaaffy/back.png (renamed from graphics/pokemon/back_pics/flaaffy_back_pic.png)bin663 -> 663 bytes
-rw-r--r--graphics/pokemon/flaaffy/footprint.png (renamed from graphics/pokemon/footprints/flaaffy_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/flaaffy/front.png (renamed from graphics/pokemon/front_pics/flaaffy_still_front_pic.png)bin652 -> 652 bytes
-rw-r--r--graphics/pokemon/flaaffy/icon.png (renamed from graphics/pokemon/icons/flaaffy_icon.png)bin376 -> 376 bytes
-rw-r--r--graphics/pokemon/flaaffy/normal.pal (renamed from graphics/pokemon/palettes/flaaffy_palette.pal)0
-rw-r--r--graphics/pokemon/flaaffy/shiny.pal (renamed from graphics/pokemon/palettes/flaaffy_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/flareon/back.png (renamed from graphics/pokemon/back_pics/flareon_back_pic.png)bin709 -> 709 bytes
-rw-r--r--graphics/pokemon/flareon/footprint.png (renamed from graphics/pokemon/footprints/flareon_footprint.png)bin103 -> 103 bytes
-rw-r--r--graphics/pokemon/flareon/front.png (renamed from graphics/pokemon/front_pics/flareon_still_front_pic.png)bin717 -> 717 bytes
-rw-r--r--graphics/pokemon/flareon/icon.png (renamed from graphics/pokemon/icons/flareon_icon.png)bin380 -> 380 bytes
-rw-r--r--graphics/pokemon/flareon/normal.pal (renamed from graphics/pokemon/palettes/flareon_palette.pal)0
-rw-r--r--graphics/pokemon/flareon/shiny.pal (renamed from graphics/pokemon/palettes/flareon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/flygon/back.png (renamed from graphics/pokemon/back_pics/flygon_back_pic.png)bin888 -> 888 bytes
-rw-r--r--graphics/pokemon/flygon/footprint.png (renamed from graphics/pokemon/footprints/flygon_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/flygon/front.png (renamed from graphics/pokemon/front_pics/flygon_still_front_pic.png)bin1076 -> 1076 bytes
-rw-r--r--graphics/pokemon/flygon/icon.png (renamed from graphics/pokemon/icons/flygon_icon.png)bin411 -> 411 bytes
-rw-r--r--graphics/pokemon/flygon/normal.pal (renamed from graphics/pokemon/palettes/flygon_palette.pal)0
-rw-r--r--graphics/pokemon/flygon/shiny.pal (renamed from graphics/pokemon/palettes/flygon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/forretress/back.png (renamed from graphics/pokemon/back_pics/forretress_back_pic.png)bin525 -> 525 bytes
-rw-r--r--graphics/pokemon/forretress/footprint.png (renamed from graphics/pokemon/footprints/forretress_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/forretress/front.png (renamed from graphics/pokemon/front_pics/forretress_still_front_pic.png)bin835 -> 835 bytes
-rw-r--r--graphics/pokemon/forretress/icon.png (renamed from graphics/pokemon/icons/forretress_icon.png)bin332 -> 332 bytes
-rw-r--r--graphics/pokemon/forretress/normal.pal (renamed from graphics/pokemon/palettes/forretress_palette.pal)0
-rw-r--r--graphics/pokemon/forretress/shiny.pal (renamed from graphics/pokemon/palettes/forretress_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/furret/back.png (renamed from graphics/pokemon/back_pics/furret_back_pic.png)bin660 -> 660 bytes
-rw-r--r--graphics/pokemon/furret/footprint.png (renamed from graphics/pokemon/footprints/furret_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/furret/front.png (renamed from graphics/pokemon/front_pics/furret_still_front_pic.png)bin659 -> 659 bytes
-rw-r--r--graphics/pokemon/furret/icon.png (renamed from graphics/pokemon/icons/furret_icon.png)bin401 -> 401 bytes
-rw-r--r--graphics/pokemon/furret/normal.pal (renamed from graphics/pokemon/palettes/furret_palette.pal)0
-rw-r--r--graphics/pokemon/furret/shiny.pal (renamed from graphics/pokemon/palettes/furret_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/gardevoir/back.png (renamed from graphics/pokemon/back_pics/gardevoir_back_pic.png)bin674 -> 674 bytes
-rw-r--r--graphics/pokemon/gardevoir/footprint.png (renamed from graphics/pokemon/footprints/gardevoir_footprint.png)bin86 -> 86 bytes
-rw-r--r--graphics/pokemon/gardevoir/front.png (renamed from graphics/pokemon/front_pics/gardevoir_still_front_pic.png)bin737 -> 737 bytes
-rw-r--r--graphics/pokemon/gardevoir/icon.png (renamed from graphics/pokemon/icons/gardevoir_icon.png)bin386 -> 386 bytes
-rw-r--r--graphics/pokemon/gardevoir/normal.pal (renamed from graphics/pokemon/palettes/gardevoir_palette.pal)0
-rw-r--r--graphics/pokemon/gardevoir/shiny.pal (renamed from graphics/pokemon/palettes/gardevoir_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/gastly/back.png (renamed from graphics/pokemon/back_pics/gastly_back_pic.png)bin613 -> 613 bytes
-rw-r--r--graphics/pokemon/gastly/footprint.png (renamed from graphics/pokemon/footprints/gastly_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/gastly/front.png (renamed from graphics/pokemon/front_pics/gastly_still_front_pic.png)bin772 -> 772 bytes
-rw-r--r--graphics/pokemon/gastly/icon.png (renamed from graphics/pokemon/icons/gastly_icon.png)bin442 -> 442 bytes
-rw-r--r--graphics/pokemon/gastly/normal.pal (renamed from graphics/pokemon/palettes/gastly_palette.pal)0
-rw-r--r--graphics/pokemon/gastly/shiny.pal (renamed from graphics/pokemon/palettes/gastly_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/gengar/back.png (renamed from graphics/pokemon/back_pics/gengar_back_pic.png)bin661 -> 661 bytes
-rw-r--r--graphics/pokemon/gengar/footprint.png (renamed from graphics/pokemon/footprints/gengar_footprint.png)bin91 -> 91 bytes
-rw-r--r--graphics/pokemon/gengar/front.png (renamed from graphics/pokemon/front_pics/gengar_still_front_pic.png)bin704 -> 704 bytes
-rw-r--r--graphics/pokemon/gengar/icon.png (renamed from graphics/pokemon/icons/gengar_icon.png)bin382 -> 382 bytes
-rw-r--r--graphics/pokemon/gengar/normal.pal (renamed from graphics/pokemon/palettes/gengar_palette.pal)0
-rw-r--r--graphics/pokemon/gengar/shiny.pal (renamed from graphics/pokemon/palettes/gengar_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/geodude/back.png (renamed from graphics/pokemon/back_pics/geodude_back_pic.png)bin506 -> 506 bytes
-rw-r--r--graphics/pokemon/geodude/footprint.png (renamed from graphics/pokemon/footprints/geodude_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/geodude/front.png (renamed from graphics/pokemon/front_pics/geodude_still_front_pic.png)bin486 -> 486 bytes
-rw-r--r--graphics/pokemon/geodude/icon.png (renamed from graphics/pokemon/icons/geodude_icon.png)bin304 -> 304 bytes
-rw-r--r--graphics/pokemon/geodude/normal.pal (renamed from graphics/pokemon/palettes/geodude_palette.pal)0
-rw-r--r--graphics/pokemon/geodude/shiny.pal (renamed from graphics/pokemon/palettes/geodude_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/girafarig/back.png (renamed from graphics/pokemon/back_pics/girafarig_back_pic.png)bin769 -> 769 bytes
-rw-r--r--graphics/pokemon/girafarig/footprint.png (renamed from graphics/pokemon/footprints/girafarig_footprint.png)bin83 -> 83 bytes
-rw-r--r--graphics/pokemon/girafarig/front.png (renamed from graphics/pokemon/front_pics/girafarig_still_front_pic.png)bin871 -> 871 bytes
-rw-r--r--graphics/pokemon/girafarig/icon.png (renamed from graphics/pokemon/icons/girafarig_icon.png)bin370 -> 370 bytes
-rw-r--r--graphics/pokemon/girafarig/normal.pal (renamed from graphics/pokemon/palettes/girafarig_palette.pal)0
-rw-r--r--graphics/pokemon/girafarig/shiny.pal (renamed from graphics/pokemon/palettes/girafarig_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/glalie/back.png (renamed from graphics/pokemon/back_pics/glalie_back_pic.png)bin701 -> 701 bytes
-rw-r--r--graphics/pokemon/glalie/footprint.png (renamed from graphics/pokemon/footprints/glalie_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/glalie/front.png (renamed from graphics/pokemon/front_pics/glalie_still_front_pic.png)bin788 -> 788 bytes
-rw-r--r--graphics/pokemon/glalie/icon.png (renamed from graphics/pokemon/icons/glalie_icon.png)bin305 -> 305 bytes
-rw-r--r--graphics/pokemon/glalie/normal.pal (renamed from graphics/pokemon/palettes/glalie_palette.pal)0
-rw-r--r--graphics/pokemon/glalie/shiny.pal (renamed from graphics/pokemon/palettes/glalie_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/gligar/back.png (renamed from graphics/pokemon/back_pics/gligar_back_pic.png)bin768 -> 768 bytes
-rw-r--r--graphics/pokemon/gligar/footprint.png (renamed from graphics/pokemon/footprints/gligar_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/gligar/front.png (renamed from graphics/pokemon/front_pics/gligar_still_front_pic.png)bin914 -> 914 bytes
-rw-r--r--graphics/pokemon/gligar/icon.png (renamed from graphics/pokemon/icons/gligar_icon.png)bin425 -> 425 bytes
-rw-r--r--graphics/pokemon/gligar/normal.pal (renamed from graphics/pokemon/palettes/gligar_palette.pal)0
-rw-r--r--graphics/pokemon/gligar/shiny.pal (renamed from graphics/pokemon/palettes/gligar_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/gloom/back.png (renamed from graphics/pokemon/back_pics/gloom_back_pic.png)bin709 -> 709 bytes
-rw-r--r--graphics/pokemon/gloom/footprint.png (renamed from graphics/pokemon/footprints/gloom_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/gloom/front.png (renamed from graphics/pokemon/front_pics/gloom_still_front_pic.png)bin727 -> 727 bytes
-rw-r--r--graphics/pokemon/gloom/icon.png (renamed from graphics/pokemon/icons/gloom_icon.png)bin313 -> 313 bytes
-rw-r--r--graphics/pokemon/gloom/normal.pal (renamed from graphics/pokemon/palettes/gloom_palette.pal)0
-rw-r--r--graphics/pokemon/gloom/shiny.pal (renamed from graphics/pokemon/palettes/gloom_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/golbat/back.png (renamed from graphics/pokemon/back_pics/golbat_back_pic.png)bin561 -> 561 bytes
-rw-r--r--graphics/pokemon/golbat/footprint.png (renamed from graphics/pokemon/footprints/golbat_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/golbat/front.png (renamed from graphics/pokemon/front_pics/golbat_still_front_pic.png)bin764 -> 764 bytes
-rw-r--r--graphics/pokemon/golbat/icon.png (renamed from graphics/pokemon/icons/golbat_icon.png)bin355 -> 355 bytes
-rw-r--r--graphics/pokemon/golbat/normal.pal (renamed from graphics/pokemon/palettes/golbat_palette.pal)0
-rw-r--r--graphics/pokemon/golbat/shiny.pal (renamed from graphics/pokemon/palettes/golbat_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/goldeen/back.png (renamed from graphics/pokemon/back_pics/goldeen_back_pic.png)bin700 -> 700 bytes
-rw-r--r--graphics/pokemon/goldeen/footprint.png (renamed from graphics/pokemon/footprints/goldeen_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/goldeen/front.png (renamed from graphics/pokemon/front_pics/goldeen_still_front_pic.png)bin725 -> 725 bytes
-rw-r--r--graphics/pokemon/goldeen/icon.png (renamed from graphics/pokemon/icons/goldeen_icon.png)bin354 -> 354 bytes
-rw-r--r--graphics/pokemon/goldeen/normal.pal (renamed from graphics/pokemon/palettes/goldeen_palette.pal)0
-rw-r--r--graphics/pokemon/goldeen/shiny.pal (renamed from graphics/pokemon/palettes/goldeen_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/golduck/back.png (renamed from graphics/pokemon/back_pics/golduck_back_pic.png)bin630 -> 630 bytes
-rw-r--r--graphics/pokemon/golduck/footprint.png (renamed from graphics/pokemon/footprints/golduck_footprint.png)bin98 -> 98 bytes
-rw-r--r--graphics/pokemon/golduck/front.png (renamed from graphics/pokemon/front_pics/golduck_still_front_pic.png)bin799 -> 799 bytes
-rw-r--r--graphics/pokemon/golduck/icon.png (renamed from graphics/pokemon/icons/golduck_icon.png)bin351 -> 351 bytes
-rw-r--r--graphics/pokemon/golduck/normal.pal (renamed from graphics/pokemon/palettes/golduck_palette.pal)0
-rw-r--r--graphics/pokemon/golduck/shiny.pal (renamed from graphics/pokemon/palettes/golduck_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/golem/back.png (renamed from graphics/pokemon/back_pics/golem_back_pic.png)bin510 -> 510 bytes
-rw-r--r--graphics/pokemon/golem/footprint.png (renamed from graphics/pokemon/footprints/golem_footprint.png)bin97 -> 97 bytes
-rw-r--r--graphics/pokemon/golem/front.png (renamed from graphics/pokemon/front_pics/golem_still_front_pic.png)bin876 -> 876 bytes
-rw-r--r--graphics/pokemon/golem/icon.png (renamed from graphics/pokemon/icons/golem_icon.png)bin395 -> 395 bytes
-rw-r--r--graphics/pokemon/golem/normal.pal (renamed from graphics/pokemon/palettes/golem_palette.pal)0
-rw-r--r--graphics/pokemon/golem/shiny.pal (renamed from graphics/pokemon/palettes/golem_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/gorebyss/back.png (renamed from graphics/pokemon/back_pics/gorebyss_back_pic.png)bin560 -> 560 bytes
-rw-r--r--graphics/pokemon/gorebyss/footprint.png (renamed from graphics/pokemon/footprints/gorebyss_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/gorebyss/front.png (renamed from graphics/pokemon/front_pics/gorebyss_still_front_pic.png)bin659 -> 659 bytes
-rw-r--r--graphics/pokemon/gorebyss/icon.png (renamed from graphics/pokemon/icons/gorebyss_icon.png)bin382 -> 382 bytes
-rw-r--r--graphics/pokemon/gorebyss/normal.pal (renamed from graphics/pokemon/palettes/gorebyss_palette.pal)0
-rw-r--r--graphics/pokemon/gorebyss/shiny.pal (renamed from graphics/pokemon/palettes/gorebyss_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/granbull/back.png (renamed from graphics/pokemon/back_pics/granbull_back_pic.png)bin627 -> 627 bytes
-rw-r--r--graphics/pokemon/granbull/footprint.png (renamed from graphics/pokemon/footprints/granbull_footprint.png)bin93 -> 93 bytes
-rw-r--r--graphics/pokemon/granbull/front.png (renamed from graphics/pokemon/front_pics/granbull_still_front_pic.png)bin720 -> 720 bytes
-rw-r--r--graphics/pokemon/granbull/icon.png (renamed from graphics/pokemon/icons/granbull_icon.png)bin352 -> 352 bytes
-rw-r--r--graphics/pokemon/granbull/normal.pal (renamed from graphics/pokemon/palettes/granbull_palette.pal)0
-rw-r--r--graphics/pokemon/granbull/shiny.pal (renamed from graphics/pokemon/palettes/granbull_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/graveler/back.png (renamed from graphics/pokemon/back_pics/graveler_back_pic.png)bin490 -> 490 bytes
-rw-r--r--graphics/pokemon/graveler/footprint.png (renamed from graphics/pokemon/footprints/graveler_footprint.png)bin91 -> 91 bytes
-rw-r--r--graphics/pokemon/graveler/front.png (renamed from graphics/pokemon/front_pics/graveler_still_front_pic.png)bin767 -> 767 bytes
-rw-r--r--graphics/pokemon/graveler/icon.png (renamed from graphics/pokemon/icons/graveler_icon.png)bin366 -> 366 bytes
-rw-r--r--graphics/pokemon/graveler/normal.pal (renamed from graphics/pokemon/palettes/graveler_palette.pal)0
-rw-r--r--graphics/pokemon/graveler/shiny.pal (renamed from graphics/pokemon/palettes/graveler_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/grimer/back.png (renamed from graphics/pokemon/back_pics/grimer_back_pic.png)bin550 -> 550 bytes
-rw-r--r--graphics/pokemon/grimer/footprint.png (renamed from graphics/pokemon/footprints/grimer_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/grimer/front.png (renamed from graphics/pokemon/front_pics/grimer_still_front_pic.png)bin626 -> 626 bytes
-rw-r--r--graphics/pokemon/grimer/icon.png (renamed from graphics/pokemon/icons/grimer_icon.png)bin356 -> 356 bytes
-rw-r--r--graphics/pokemon/grimer/normal.pal (renamed from graphics/pokemon/palettes/grimer_palette.pal)0
-rw-r--r--graphics/pokemon/grimer/shiny.pal (renamed from graphics/pokemon/palettes/grimer_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/groudon/back.png (renamed from graphics/pokemon/back_pics/groudon_back_pic.png)bin890 -> 890 bytes
-rw-r--r--graphics/pokemon/groudon/footprint.png (renamed from graphics/pokemon/footprints/groudon_footprint.png)bin103 -> 103 bytes
-rw-r--r--graphics/pokemon/groudon/front.png (renamed from graphics/pokemon/front_pics/groudon_still_front_pic.png)bin1247 -> 1247 bytes
-rw-r--r--graphics/pokemon/groudon/icon.png (renamed from graphics/pokemon/icons/groudon_icon.png)bin377 -> 377 bytes
-rw-r--r--graphics/pokemon/groudon/normal.pal (renamed from graphics/pokemon/palettes/groudon_palette.pal)0
-rw-r--r--graphics/pokemon/groudon/shiny.pal (renamed from graphics/pokemon/palettes/groudon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/grovyle/back.png (renamed from graphics/pokemon/back_pics/grovyle_back_pic.png)bin657 -> 657 bytes
-rw-r--r--graphics/pokemon/grovyle/footprint.png (renamed from graphics/pokemon/footprints/grovyle_footprint.png)bin100 -> 100 bytes
-rw-r--r--graphics/pokemon/grovyle/front.png (renamed from graphics/pokemon/front_pics/grovyle_still_front_pic.png)bin970 -> 970 bytes
-rw-r--r--graphics/pokemon/grovyle/icon.png (renamed from graphics/pokemon/icons/grovyle_icon.png)bin363 -> 363 bytes
-rw-r--r--graphics/pokemon/grovyle/normal.pal (renamed from graphics/pokemon/palettes/grovyle_palette.pal)0
-rw-r--r--graphics/pokemon/grovyle/shiny.pal (renamed from graphics/pokemon/palettes/grovyle_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/growlithe/back.png (renamed from graphics/pokemon/back_pics/growlithe_back_pic.png)bin650 -> 650 bytes
-rw-r--r--graphics/pokemon/growlithe/footprint.png (renamed from graphics/pokemon/footprints/growlithe_footprint.png)bin91 -> 91 bytes
-rw-r--r--graphics/pokemon/growlithe/front.png (renamed from graphics/pokemon/front_pics/growlithe_still_front_pic.png)bin657 -> 657 bytes
-rw-r--r--graphics/pokemon/growlithe/icon.png (renamed from graphics/pokemon/icons/growlithe_icon.png)bin348 -> 348 bytes
-rw-r--r--graphics/pokemon/growlithe/normal.pal (renamed from graphics/pokemon/palettes/growlithe_palette.pal)0
-rw-r--r--graphics/pokemon/growlithe/shiny.pal (renamed from graphics/pokemon/palettes/growlithe_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/grumpig/back.png (renamed from graphics/pokemon/back_pics/grumpig_back_pic.png)bin727 -> 727 bytes
-rw-r--r--graphics/pokemon/grumpig/footprint.png (renamed from graphics/pokemon/footprints/grumpig_footprint.png)bin96 -> 96 bytes
-rw-r--r--graphics/pokemon/grumpig/front.png (renamed from graphics/pokemon/front_pics/grumpig_still_front_pic.png)bin831 -> 831 bytes
-rw-r--r--graphics/pokemon/grumpig/icon.png (renamed from graphics/pokemon/icons/grumpig_icon.png)bin329 -> 329 bytes
-rw-r--r--graphics/pokemon/grumpig/normal.pal (renamed from graphics/pokemon/palettes/grumpig_palette.pal)0
-rw-r--r--graphics/pokemon/grumpig/shiny.pal (renamed from graphics/pokemon/palettes/grumpig_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/gulpin/back.png (renamed from graphics/pokemon/back_pics/gulpin_back_pic.png)bin497 -> 497 bytes
-rw-r--r--graphics/pokemon/gulpin/footprint.png (renamed from graphics/pokemon/footprints/gulpin_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/gulpin/front.png (renamed from graphics/pokemon/front_pics/gulpin_still_front_pic.png)bin428 -> 428 bytes
-rw-r--r--graphics/pokemon/gulpin/icon.png (renamed from graphics/pokemon/icons/gulpin_icon.png)bin293 -> 293 bytes
-rw-r--r--graphics/pokemon/gulpin/normal.pal (renamed from graphics/pokemon/palettes/gulpin_palette.pal)0
-rw-r--r--graphics/pokemon/gulpin/shiny.pal (renamed from graphics/pokemon/palettes/gulpin_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/gyarados/back.png (renamed from graphics/pokemon/back_pics/gyarados_back_pic.png)bin1010 -> 1010 bytes
-rw-r--r--graphics/pokemon/gyarados/footprint.png (renamed from graphics/pokemon/footprints/gyarados_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/gyarados/front.png (renamed from graphics/pokemon/front_pics/gyarados_still_front_pic.png)bin1229 -> 1229 bytes
-rw-r--r--graphics/pokemon/gyarados/icon.png (renamed from graphics/pokemon/icons/gyarados_icon.png)bin524 -> 524 bytes
-rw-r--r--graphics/pokemon/gyarados/normal.pal (renamed from graphics/pokemon/palettes/gyarados_palette.pal)0
-rw-r--r--graphics/pokemon/gyarados/shiny.pal (renamed from graphics/pokemon/palettes/gyarados_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/hariyama/back.png (renamed from graphics/pokemon/back_pics/hariyama_back_pic.png)bin780 -> 780 bytes
-rw-r--r--graphics/pokemon/hariyama/footprint.png (renamed from graphics/pokemon/footprints/hariyama_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/hariyama/front.png (renamed from graphics/pokemon/front_pics/hariyama_still_front_pic.png)bin1006 -> 1006 bytes
-rw-r--r--graphics/pokemon/hariyama/icon.png (renamed from graphics/pokemon/icons/hariyama_icon.png)bin387 -> 387 bytes
-rw-r--r--graphics/pokemon/hariyama/normal.pal (renamed from graphics/pokemon/palettes/hariyama_palette.pal)0
-rw-r--r--graphics/pokemon/hariyama/shiny.pal (renamed from graphics/pokemon/palettes/hariyama_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/haunter/back.png (renamed from graphics/pokemon/back_pics/haunter_back_pic.png)bin612 -> 612 bytes
-rw-r--r--graphics/pokemon/haunter/footprint.png (renamed from graphics/pokemon/footprints/haunter_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/haunter/front.png (renamed from graphics/pokemon/front_pics/haunter_still_front_pic.png)bin806 -> 806 bytes
-rw-r--r--graphics/pokemon/haunter/icon.png (renamed from graphics/pokemon/icons/haunter_icon.png)bin485 -> 485 bytes
-rw-r--r--graphics/pokemon/haunter/normal.pal (renamed from graphics/pokemon/palettes/haunter_palette.pal)0
-rw-r--r--graphics/pokemon/haunter/shiny.pal (renamed from graphics/pokemon/palettes/haunter_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/heracross/back.png (renamed from graphics/pokemon/back_pics/heracross_back_pic.png)bin690 -> 690 bytes
-rw-r--r--graphics/pokemon/heracross/footprint.png (renamed from graphics/pokemon/footprints/heracross_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/heracross/front.png (renamed from graphics/pokemon/front_pics/heracross_still_front_pic.png)bin811 -> 811 bytes
-rw-r--r--graphics/pokemon/heracross/icon.png (renamed from graphics/pokemon/icons/heracross_icon.png)bin370 -> 370 bytes
-rw-r--r--graphics/pokemon/heracross/normal.pal (renamed from graphics/pokemon/palettes/heracross_palette.pal)0
-rw-r--r--graphics/pokemon/heracross/shiny.pal (renamed from graphics/pokemon/palettes/heracross_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/hitmonchan/back.png (renamed from graphics/pokemon/back_pics/hitmonchan_back_pic.png)bin632 -> 632 bytes
-rw-r--r--graphics/pokemon/hitmonchan/footprint.png (renamed from graphics/pokemon/footprints/hitmonchan_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/hitmonchan/front.png (renamed from graphics/pokemon/front_pics/hitmonchan_still_front_pic.png)bin693 -> 693 bytes
-rw-r--r--graphics/pokemon/hitmonchan/icon.png (renamed from graphics/pokemon/icons/hitmonchan_icon.png)bin306 -> 306 bytes
-rw-r--r--graphics/pokemon/hitmonchan/normal.pal (renamed from graphics/pokemon/palettes/hitmonchan_palette.pal)0
-rw-r--r--graphics/pokemon/hitmonchan/shiny.pal (renamed from graphics/pokemon/palettes/hitmonchan_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/hitmonlee/back.png (renamed from graphics/pokemon/back_pics/hitmonlee_back_pic.png)bin534 -> 534 bytes
-rw-r--r--graphics/pokemon/hitmonlee/footprint.png (renamed from graphics/pokemon/footprints/hitmonlee_footprint.png)bin104 -> 104 bytes
-rw-r--r--graphics/pokemon/hitmonlee/front.png (renamed from graphics/pokemon/front_pics/hitmonlee_still_front_pic.png)bin739 -> 739 bytes
-rw-r--r--graphics/pokemon/hitmonlee/icon.png (renamed from graphics/pokemon/icons/hitmonlee_icon.png)bin335 -> 335 bytes
-rw-r--r--graphics/pokemon/hitmonlee/normal.pal (renamed from graphics/pokemon/palettes/hitmonlee_palette.pal)0
-rw-r--r--graphics/pokemon/hitmonlee/shiny.pal (renamed from graphics/pokemon/palettes/hitmonlee_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/hitmontop/back.png (renamed from graphics/pokemon/back_pics/hitmontop_back_pic.png)bin892 -> 892 bytes
-rw-r--r--graphics/pokemon/hitmontop/footprint.png (renamed from graphics/pokemon/footprints/hitmontop_footprint.png)bin103 -> 103 bytes
-rw-r--r--graphics/pokemon/hitmontop/front.png (renamed from graphics/pokemon/front_pics/hitmontop_still_front_pic.png)bin772 -> 772 bytes
-rw-r--r--graphics/pokemon/hitmontop/icon.png (renamed from graphics/pokemon/icons/hitmontop_icon.png)bin477 -> 477 bytes
-rw-r--r--graphics/pokemon/hitmontop/normal.pal (renamed from graphics/pokemon/palettes/hitmontop_palette.pal)0
-rw-r--r--graphics/pokemon/hitmontop/shiny.pal (renamed from graphics/pokemon/palettes/hitmontop_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/ho_oh/back.png (renamed from graphics/pokemon/back_pics/ho_oh_back_pic.png)bin831 -> 831 bytes
-rw-r--r--graphics/pokemon/ho_oh/footprint.png (renamed from graphics/pokemon/footprints/ho_oh_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/ho_oh/front.png (renamed from graphics/pokemon/front_pics/ho_oh_still_front_pic.png)bin1332 -> 1332 bytes
-rw-r--r--graphics/pokemon/ho_oh/icon.png (renamed from graphics/pokemon/icons/ho_oh_icon.png)bin480 -> 480 bytes
-rw-r--r--graphics/pokemon/ho_oh/normal.pal (renamed from graphics/pokemon/palettes/ho_oh_palette.pal)0
-rw-r--r--graphics/pokemon/ho_oh/shiny.pal (renamed from graphics/pokemon/palettes/ho_oh_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/hoothoot/back.png (renamed from graphics/pokemon/back_pics/hoothoot_back_pic.png)bin618 -> 618 bytes
-rw-r--r--graphics/pokemon/hoothoot/footprint.png (renamed from graphics/pokemon/footprints/hoothoot_footprint.png)bin102 -> 102 bytes
-rw-r--r--graphics/pokemon/hoothoot/front.png (renamed from graphics/pokemon/front_pics/hoothoot_still_front_pic.png)bin525 -> 525 bytes
-rw-r--r--graphics/pokemon/hoothoot/icon.png (renamed from graphics/pokemon/icons/hoothoot_icon.png)bin350 -> 350 bytes
-rw-r--r--graphics/pokemon/hoothoot/normal.pal (renamed from graphics/pokemon/palettes/hoothoot_palette.pal)0
-rw-r--r--graphics/pokemon/hoothoot/shiny.pal (renamed from graphics/pokemon/palettes/hoothoot_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/hoppip/back.png (renamed from graphics/pokemon/back_pics/hoppip_back_pic.png)bin582 -> 582 bytes
-rw-r--r--graphics/pokemon/hoppip/footprint.png (renamed from graphics/pokemon/footprints/hoppip_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/hoppip/front.png (renamed from graphics/pokemon/front_pics/hoppip_still_front_pic.png)bin551 -> 551 bytes
-rw-r--r--graphics/pokemon/hoppip/icon.png (renamed from graphics/pokemon/icons/hoppip_icon.png)bin367 -> 367 bytes
-rw-r--r--graphics/pokemon/hoppip/normal.pal (renamed from graphics/pokemon/palettes/hoppip_palette.pal)0
-rw-r--r--graphics/pokemon/hoppip/shiny.pal (renamed from graphics/pokemon/palettes/hoppip_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/horsea/back.png (renamed from graphics/pokemon/back_pics/horsea_back_pic.png)bin585 -> 585 bytes
-rw-r--r--graphics/pokemon/horsea/footprint.png (renamed from graphics/pokemon/footprints/horsea_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/horsea/front.png (renamed from graphics/pokemon/front_pics/horsea_still_front_pic.png)bin510 -> 510 bytes
-rw-r--r--graphics/pokemon/horsea/icon.png (renamed from graphics/pokemon/icons/horsea_icon.png)bin354 -> 354 bytes
-rw-r--r--graphics/pokemon/horsea/normal.pal (renamed from graphics/pokemon/palettes/horsea_palette.pal)0
-rw-r--r--graphics/pokemon/horsea/shiny.pal (renamed from graphics/pokemon/palettes/horsea_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/houndoom/back.png (renamed from graphics/pokemon/back_pics/houndoom_back_pic.png)bin626 -> 626 bytes
-rw-r--r--graphics/pokemon/houndoom/footprint.png (renamed from graphics/pokemon/footprints/houndoom_footprint.png)bin103 -> 103 bytes
-rw-r--r--graphics/pokemon/houndoom/front.png (renamed from graphics/pokemon/front_pics/houndoom_still_front_pic.png)bin853 -> 853 bytes
-rw-r--r--graphics/pokemon/houndoom/icon.png (renamed from graphics/pokemon/icons/houndoom_icon.png)bin406 -> 406 bytes
-rw-r--r--graphics/pokemon/houndoom/normal.pal (renamed from graphics/pokemon/palettes/houndoom_palette.pal)0
-rw-r--r--graphics/pokemon/houndoom/shiny.pal (renamed from graphics/pokemon/palettes/houndoom_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/houndour/back.png (renamed from graphics/pokemon/back_pics/houndour_back_pic.png)bin508 -> 508 bytes
-rw-r--r--graphics/pokemon/houndour/footprint.png (renamed from graphics/pokemon/footprints/houndour_footprint.png)bin91 -> 91 bytes
-rw-r--r--graphics/pokemon/houndour/front.png (renamed from graphics/pokemon/front_pics/houndour_still_front_pic.png)bin558 -> 558 bytes
-rw-r--r--graphics/pokemon/houndour/icon.png (renamed from graphics/pokemon/icons/houndour_icon.png)bin358 -> 358 bytes
-rw-r--r--graphics/pokemon/houndour/normal.pal (renamed from graphics/pokemon/palettes/houndour_palette.pal)0
-rw-r--r--graphics/pokemon/houndour/shiny.pal (renamed from graphics/pokemon/palettes/houndour_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/huntail/back.png (renamed from graphics/pokemon/back_pics/huntail_back_pic.png)bin688 -> 688 bytes
-rw-r--r--graphics/pokemon/huntail/footprint.png (renamed from graphics/pokemon/footprints/huntail_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/huntail/front.png (renamed from graphics/pokemon/front_pics/huntail_still_front_pic.png)bin833 -> 833 bytes
-rw-r--r--graphics/pokemon/huntail/icon.png (renamed from graphics/pokemon/icons/huntail_icon.png)bin419 -> 419 bytes
-rw-r--r--graphics/pokemon/huntail/normal.pal (renamed from graphics/pokemon/palettes/huntail_palette.pal)0
-rw-r--r--graphics/pokemon/huntail/shiny.pal (renamed from graphics/pokemon/palettes/huntail_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/hypno/back.png (renamed from graphics/pokemon/back_pics/hypno_back_pic.png)bin658 -> 658 bytes
-rw-r--r--graphics/pokemon/hypno/footprint.png (renamed from graphics/pokemon/footprints/hypno_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/hypno/front.png (renamed from graphics/pokemon/front_pics/hypno_still_front_pic.png)bin862 -> 862 bytes
-rw-r--r--graphics/pokemon/hypno/icon.png (renamed from graphics/pokemon/icons/hypno_icon.png)bin391 -> 391 bytes
-rw-r--r--graphics/pokemon/hypno/normal.pal (renamed from graphics/pokemon/palettes/hypno_palette.pal)0
-rw-r--r--graphics/pokemon/hypno/shiny.pal (renamed from graphics/pokemon/palettes/hypno_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/igglybuff/back.png (renamed from graphics/pokemon/back_pics/igglybuff_back_pic.png)bin443 -> 443 bytes
-rw-r--r--graphics/pokemon/igglybuff/footprint.png (renamed from graphics/pokemon/footprints/igglybuff_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/igglybuff/front.png (renamed from graphics/pokemon/front_pics/igglybuff_still_front_pic.png)bin376 -> 376 bytes
-rw-r--r--graphics/pokemon/igglybuff/icon.png (renamed from graphics/pokemon/icons/igglybuff_icon.png)bin322 -> 322 bytes
-rw-r--r--graphics/pokemon/igglybuff/normal.pal (renamed from graphics/pokemon/palettes/igglybuff_palette.pal)0
-rw-r--r--graphics/pokemon/igglybuff/shiny.pal (renamed from graphics/pokemon/palettes/igglybuff_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/illumise/back.png (renamed from graphics/pokemon/back_pics/illumise_back_pic.png)bin663 -> 663 bytes
-rw-r--r--graphics/pokemon/illumise/footprint.png (renamed from graphics/pokemon/footprints/illumise_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/illumise/front.png (renamed from graphics/pokemon/front_pics/illumise_still_front_pic.png)bin729 -> 729 bytes
-rw-r--r--graphics/pokemon/illumise/icon.png (renamed from graphics/pokemon/icons/illumise_icon.png)bin325 -> 325 bytes
-rw-r--r--graphics/pokemon/illumise/normal.pal (renamed from graphics/pokemon/palettes/illumise_palette.pal)0
-rw-r--r--graphics/pokemon/illumise/shiny.pal (renamed from graphics/pokemon/palettes/illumise_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/ivysaur/back.png (renamed from graphics/pokemon/back_pics/ivysaur_back_pic.png)bin695 -> 695 bytes
-rw-r--r--graphics/pokemon/ivysaur/footprint.png (renamed from graphics/pokemon/footprints/ivysaur_footprint.png)bin96 -> 96 bytes
-rw-r--r--graphics/pokemon/ivysaur/front.png (renamed from graphics/pokemon/front_pics/ivysaur_still_front_pic.png)bin689 -> 689 bytes
-rw-r--r--graphics/pokemon/ivysaur/icon.png (renamed from graphics/pokemon/icons/ivysaur_icon.png)bin326 -> 326 bytes
-rw-r--r--graphics/pokemon/ivysaur/normal.pal (renamed from graphics/pokemon/palettes/ivysaur_palette.pal)0
-rw-r--r--graphics/pokemon/ivysaur/shiny.pal (renamed from graphics/pokemon/palettes/ivysaur_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/jigglypuff/back.png (renamed from graphics/pokemon/back_pics/jigglypuff_back_pic.png)bin451 -> 451 bytes
-rw-r--r--graphics/pokemon/jigglypuff/footprint.png (renamed from graphics/pokemon/footprints/jigglypuff_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/jigglypuff/front.png (renamed from graphics/pokemon/front_pics/jigglypuff_still_front_pic.png)bin496 -> 496 bytes
-rw-r--r--graphics/pokemon/jigglypuff/icon.png (renamed from graphics/pokemon/icons/jigglypuff_icon.png)bin315 -> 315 bytes
-rw-r--r--graphics/pokemon/jigglypuff/normal.pal (renamed from graphics/pokemon/palettes/jigglypuff_palette.pal)0
-rw-r--r--graphics/pokemon/jigglypuff/shiny.pal (renamed from graphics/pokemon/palettes/jigglypuff_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/jirachi/back.png (renamed from graphics/pokemon/back_pics/jirachi_back_pic.png)bin738 -> 738 bytes
-rw-r--r--graphics/pokemon/jirachi/footprint.png (renamed from graphics/pokemon/footprints/jirachi_footprint.png)bin83 -> 83 bytes
-rw-r--r--graphics/pokemon/jirachi/front.png (renamed from graphics/pokemon/front_pics/jirachi_still_front_pic.png)bin637 -> 637 bytes
-rw-r--r--graphics/pokemon/jirachi/icon.png (renamed from graphics/pokemon/icons/jirachi_icon.png)bin340 -> 340 bytes
-rw-r--r--graphics/pokemon/jirachi/normal.pal (renamed from graphics/pokemon/palettes/jirachi_palette.pal)0
-rw-r--r--graphics/pokemon/jirachi/shiny.pal (renamed from graphics/pokemon/palettes/jirachi_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/jolteon/back.png (renamed from graphics/pokemon/back_pics/jolteon_back_pic.png)bin754 -> 754 bytes
-rw-r--r--graphics/pokemon/jolteon/footprint.png (renamed from graphics/pokemon/footprints/jolteon_footprint.png)bin91 -> 91 bytes
-rw-r--r--graphics/pokemon/jolteon/front.png (renamed from graphics/pokemon/front_pics/jolteon_still_front_pic.png)bin706 -> 706 bytes
-rw-r--r--graphics/pokemon/jolteon/icon.png (renamed from graphics/pokemon/icons/jolteon_icon.png)bin324 -> 324 bytes
-rw-r--r--graphics/pokemon/jolteon/normal.pal (renamed from graphics/pokemon/palettes/jolteon_palette.pal)0
-rw-r--r--graphics/pokemon/jolteon/shiny.pal (renamed from graphics/pokemon/palettes/jolteon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/jumpluff/back.png (renamed from graphics/pokemon/back_pics/jumpluff_back_pic.png)bin809 -> 809 bytes
-rw-r--r--graphics/pokemon/jumpluff/footprint.png (renamed from graphics/pokemon/footprints/jumpluff_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/jumpluff/front.png (renamed from graphics/pokemon/front_pics/jumpluff_still_front_pic.png)bin734 -> 734 bytes
-rw-r--r--graphics/pokemon/jumpluff/icon.png (renamed from graphics/pokemon/icons/jumpluff_icon.png)bin398 -> 398 bytes
-rw-r--r--graphics/pokemon/jumpluff/normal.pal (renamed from graphics/pokemon/palettes/jumpluff_palette.pal)0
-rw-r--r--graphics/pokemon/jumpluff/shiny.pal (renamed from graphics/pokemon/palettes/jumpluff_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/jynx/back.png (renamed from graphics/pokemon/back_pics/jynx_back_pic.png)bin610 -> 610 bytes
-rw-r--r--graphics/pokemon/jynx/footprint.png (renamed from graphics/pokemon/footprints/jynx_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/jynx/front.png (renamed from graphics/pokemon/front_pics/jynx_still_front_pic.png)bin832 -> 832 bytes
-rw-r--r--graphics/pokemon/jynx/icon.png (renamed from graphics/pokemon/icons/jynx_icon.png)bin375 -> 375 bytes
-rw-r--r--graphics/pokemon/jynx/normal.pal (renamed from graphics/pokemon/palettes/jynx_palette.pal)0
-rw-r--r--graphics/pokemon/jynx/shiny.pal (renamed from graphics/pokemon/palettes/jynx_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/kabuto/back.png (renamed from graphics/pokemon/back_pics/kabuto_back_pic.png)bin499 -> 499 bytes
-rw-r--r--graphics/pokemon/kabuto/footprint.png (renamed from graphics/pokemon/footprints/kabuto_footprint.png)bin76 -> 76 bytes
-rw-r--r--graphics/pokemon/kabuto/front.png (renamed from graphics/pokemon/front_pics/kabuto_still_front_pic.png)bin440 -> 440 bytes
-rw-r--r--graphics/pokemon/kabuto/icon.png (renamed from graphics/pokemon/icons/kabuto_icon.png)bin264 -> 264 bytes
-rw-r--r--graphics/pokemon/kabuto/normal.pal (renamed from graphics/pokemon/palettes/kabuto_palette.pal)0
-rw-r--r--graphics/pokemon/kabuto/shiny.pal (renamed from graphics/pokemon/palettes/kabuto_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/kabutops/back.png (renamed from graphics/pokemon/back_pics/kabutops_back_pic.png)bin753 -> 753 bytes
-rw-r--r--graphics/pokemon/kabutops/footprint.png (renamed from graphics/pokemon/footprints/kabutops_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/kabutops/front.png (renamed from graphics/pokemon/front_pics/kabutops_still_front_pic.png)bin844 -> 844 bytes
-rw-r--r--graphics/pokemon/kabutops/icon.png (renamed from graphics/pokemon/icons/kabutops_icon.png)bin322 -> 322 bytes
-rw-r--r--graphics/pokemon/kabutops/normal.pal (renamed from graphics/pokemon/palettes/kabutops_palette.pal)0
-rw-r--r--graphics/pokemon/kabutops/shiny.pal (renamed from graphics/pokemon/palettes/kabutops_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/kadabra/back.png (renamed from graphics/pokemon/back_pics/kadabra_back_pic.png)bin754 -> 754 bytes
-rw-r--r--graphics/pokemon/kadabra/footprint.png (renamed from graphics/pokemon/footprints/kadabra_footprint.png)bin100 -> 100 bytes
-rw-r--r--graphics/pokemon/kadabra/front.png (renamed from graphics/pokemon/front_pics/kadabra_still_front_pic.png)bin1016 -> 1016 bytes
-rw-r--r--graphics/pokemon/kadabra/icon.png (renamed from graphics/pokemon/icons/kadabra_icon.png)bin432 -> 432 bytes
-rw-r--r--graphics/pokemon/kadabra/normal.pal (renamed from graphics/pokemon/palettes/kadabra_palette.pal)0
-rw-r--r--graphics/pokemon/kadabra/shiny.pal (renamed from graphics/pokemon/palettes/kadabra_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/kakuna/back.png (renamed from graphics/pokemon/back_pics/kakuna_back_pic.png)bin490 -> 490 bytes
-rw-r--r--graphics/pokemon/kakuna/footprint.png (renamed from graphics/pokemon/footprints/kakuna_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/kakuna/front.png (renamed from graphics/pokemon/front_pics/kakuna_still_front_pic.png)bin442 -> 442 bytes
-rw-r--r--graphics/pokemon/kakuna/icon.png (renamed from graphics/pokemon/icons/kakuna_icon.png)bin266 -> 266 bytes
-rw-r--r--graphics/pokemon/kakuna/normal.pal (renamed from graphics/pokemon/palettes/kakuna_palette.pal)0
-rw-r--r--graphics/pokemon/kakuna/shiny.pal (renamed from graphics/pokemon/palettes/kakuna_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/kangaskhan/back.png (renamed from graphics/pokemon/back_pics/kangaskhan_back_pic.png)bin881 -> 881 bytes
-rw-r--r--graphics/pokemon/kangaskhan/footprint.png (renamed from graphics/pokemon/footprints/kangaskhan_footprint.png)bin96 -> 96 bytes
-rw-r--r--graphics/pokemon/kangaskhan/front.png (renamed from graphics/pokemon/front_pics/kangaskhan_still_front_pic.png)bin981 -> 981 bytes
-rw-r--r--graphics/pokemon/kangaskhan/icon.png (renamed from graphics/pokemon/icons/kangaskhan_icon.png)bin389 -> 389 bytes
-rw-r--r--graphics/pokemon/kangaskhan/normal.pal (renamed from graphics/pokemon/palettes/kangaskhan_palette.pal)0
-rw-r--r--graphics/pokemon/kangaskhan/shiny.pal (renamed from graphics/pokemon/palettes/kangaskhan_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/kecleon/back.png (renamed from graphics/pokemon/back_pics/kecleon_back_pic.png)bin818 -> 818 bytes
-rw-r--r--graphics/pokemon/kecleon/footprint.png (renamed from graphics/pokemon/footprints/kecleon_footprint.png)bin96 -> 96 bytes
-rw-r--r--graphics/pokemon/kecleon/front.png (renamed from graphics/pokemon/front_pics/kecleon_still_front_pic.png)bin762 -> 762 bytes
-rw-r--r--graphics/pokemon/kecleon/icon.png (renamed from graphics/pokemon/icons/kecleon_icon.png)bin384 -> 384 bytes
-rw-r--r--graphics/pokemon/kecleon/normal.pal (renamed from graphics/pokemon/palettes/kecleon_palette.pal)0
-rw-r--r--graphics/pokemon/kecleon/shiny.pal (renamed from graphics/pokemon/palettes/kecleon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/kingdra/back.png (renamed from graphics/pokemon/back_pics/kingdra_back_pic.png)bin743 -> 743 bytes
-rw-r--r--graphics/pokemon/kingdra/footprint.png (renamed from graphics/pokemon/footprints/kingdra_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/kingdra/front.png (renamed from graphics/pokemon/front_pics/kingdra_still_front_pic.png)bin858 -> 858 bytes
-rw-r--r--graphics/pokemon/kingdra/icon.png (renamed from graphics/pokemon/icons/kingdra_icon.png)bin385 -> 385 bytes
-rw-r--r--graphics/pokemon/kingdra/normal.pal (renamed from graphics/pokemon/palettes/kingdra_palette.pal)0
-rw-r--r--graphics/pokemon/kingdra/shiny.pal (renamed from graphics/pokemon/palettes/kingdra_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/kingler/back.png (renamed from graphics/pokemon/back_pics/kingler_back_pic.png)bin716 -> 716 bytes
-rw-r--r--graphics/pokemon/kingler/footprint.png (renamed from graphics/pokemon/footprints/kingler_footprint.png)bin93 -> 93 bytes
-rw-r--r--graphics/pokemon/kingler/front.png (renamed from graphics/pokemon/front_pics/kingler_still_front_pic.png)bin936 -> 936 bytes
-rw-r--r--graphics/pokemon/kingler/icon.png (renamed from graphics/pokemon/icons/kingler_icon.png)bin440 -> 440 bytes
-rw-r--r--graphics/pokemon/kingler/normal.pal (renamed from graphics/pokemon/palettes/kingler_palette.pal)0
-rw-r--r--graphics/pokemon/kingler/shiny.pal (renamed from graphics/pokemon/palettes/kingler_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/kirlia/back.png (renamed from graphics/pokemon/back_pics/kirlia_back_pic.png)bin723 -> 723 bytes
-rw-r--r--graphics/pokemon/kirlia/footprint.png (renamed from graphics/pokemon/footprints/kirlia_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/kirlia/front.png (renamed from graphics/pokemon/front_pics/kirlia_still_front_pic.png)bin618 -> 618 bytes
-rw-r--r--graphics/pokemon/kirlia/icon.png (renamed from graphics/pokemon/icons/kirlia_icon.png)bin351 -> 351 bytes
-rw-r--r--graphics/pokemon/kirlia/normal.pal (renamed from graphics/pokemon/palettes/kirlia_palette.pal)0
-rw-r--r--graphics/pokemon/kirlia/shiny.pal (renamed from graphics/pokemon/palettes/kirlia_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/koffing/back.png (renamed from graphics/pokemon/back_pics/koffing_back_pic.png)bin634 -> 634 bytes
-rw-r--r--graphics/pokemon/koffing/footprint.png (renamed from graphics/pokemon/footprints/koffing_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/koffing/front.png (renamed from graphics/pokemon/front_pics/koffing_still_front_pic.png)bin634 -> 634 bytes
-rw-r--r--graphics/pokemon/koffing/icon.png (renamed from graphics/pokemon/icons/koffing_icon.png)bin315 -> 315 bytes
-rw-r--r--graphics/pokemon/koffing/normal.pal (renamed from graphics/pokemon/palettes/koffing_palette.pal)0
-rw-r--r--graphics/pokemon/koffing/shiny.pal (renamed from graphics/pokemon/palettes/koffing_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/krabby/back.png (renamed from graphics/pokemon/back_pics/krabby_back_pic.png)bin710 -> 710 bytes
-rw-r--r--graphics/pokemon/krabby/footprint.png (renamed from graphics/pokemon/footprints/krabby_footprint.png)bin86 -> 86 bytes
-rw-r--r--graphics/pokemon/krabby/front.png (renamed from graphics/pokemon/front_pics/krabby_still_front_pic.png)bin633 -> 633 bytes
-rw-r--r--graphics/pokemon/krabby/icon.png (renamed from graphics/pokemon/icons/krabby_icon.png)bin432 -> 432 bytes
-rw-r--r--graphics/pokemon/krabby/normal.pal (renamed from graphics/pokemon/palettes/krabby_palette.pal)0
-rw-r--r--graphics/pokemon/krabby/shiny.pal (renamed from graphics/pokemon/palettes/krabby_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/kyogre/back.png (renamed from graphics/pokemon/back_pics/kyogre_back_pic.png)bin497 -> 497 bytes
-rw-r--r--graphics/pokemon/kyogre/footprint.png (renamed from graphics/pokemon/footprints/kyogre_footprint.png)bin104 -> 104 bytes
-rw-r--r--graphics/pokemon/kyogre/front.png (renamed from graphics/pokemon/front_pics/kyogre_still_front_pic.png)bin965 -> 965 bytes
-rw-r--r--graphics/pokemon/kyogre/icon.png (renamed from graphics/pokemon/icons/kyogre_icon.png)bin444 -> 444 bytes
-rw-r--r--graphics/pokemon/kyogre/normal.pal (renamed from graphics/pokemon/palettes/kyogre_palette.pal)0
-rw-r--r--graphics/pokemon/kyogre/shiny.pal (renamed from graphics/pokemon/palettes/kyogre_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/lairon/back.png (renamed from graphics/pokemon/back_pics/lairon_back_pic.png)bin575 -> 575 bytes
-rw-r--r--graphics/pokemon/lairon/footprint.png (renamed from graphics/pokemon/footprints/lairon_footprint.png)bin101 -> 101 bytes
-rw-r--r--graphics/pokemon/lairon/front.png (renamed from graphics/pokemon/front_pics/lairon_still_front_pic.png)bin814 -> 814 bytes
-rw-r--r--graphics/pokemon/lairon/icon.png (renamed from graphics/pokemon/icons/lairon_icon.png)bin362 -> 362 bytes
-rw-r--r--graphics/pokemon/lairon/normal.pal (renamed from graphics/pokemon/palettes/lairon_palette.pal)0
-rw-r--r--graphics/pokemon/lairon/shiny.pal (renamed from graphics/pokemon/palettes/lairon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/lanturn/back.png (renamed from graphics/pokemon/back_pics/lanturn_back_pic.png)bin644 -> 644 bytes
-rw-r--r--graphics/pokemon/lanturn/footprint.png (renamed from graphics/pokemon/footprints/lanturn_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/lanturn/front.png (renamed from graphics/pokemon/front_pics/lanturn_still_front_pic.png)bin738 -> 738 bytes
-rw-r--r--graphics/pokemon/lanturn/icon.png (renamed from graphics/pokemon/icons/lanturn_icon.png)bin442 -> 442 bytes
-rw-r--r--graphics/pokemon/lanturn/normal.pal (renamed from graphics/pokemon/palettes/lanturn_palette.pal)0
-rw-r--r--graphics/pokemon/lanturn/shiny.pal (renamed from graphics/pokemon/palettes/lanturn_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/lapras/back.png (renamed from graphics/pokemon/back_pics/lapras_back_pic.png)bin686 -> 686 bytes
-rw-r--r--graphics/pokemon/lapras/footprint.png (renamed from graphics/pokemon/footprints/lapras_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/lapras/front.png (renamed from graphics/pokemon/front_pics/lapras_still_front_pic.png)bin811 -> 811 bytes
-rw-r--r--graphics/pokemon/lapras/icon.png (renamed from graphics/pokemon/icons/lapras_icon.png)bin409 -> 409 bytes
-rw-r--r--graphics/pokemon/lapras/normal.pal (renamed from graphics/pokemon/palettes/lapras_palette.pal)0
-rw-r--r--graphics/pokemon/lapras/shiny.pal (renamed from graphics/pokemon/palettes/lapras_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/larvitar/back.png (renamed from graphics/pokemon/back_pics/larvitar_back_pic.png)bin517 -> 517 bytes
-rw-r--r--graphics/pokemon/larvitar/footprint.png (renamed from graphics/pokemon/footprints/larvitar_footprint.png)bin82 -> 82 bytes
-rw-r--r--graphics/pokemon/larvitar/front.png (renamed from graphics/pokemon/front_pics/larvitar_still_front_pic.png)bin480 -> 480 bytes
-rw-r--r--graphics/pokemon/larvitar/icon.png (renamed from graphics/pokemon/icons/larvitar_icon.png)bin304 -> 304 bytes
-rw-r--r--graphics/pokemon/larvitar/normal.pal (renamed from graphics/pokemon/palettes/larvitar_palette.pal)0
-rw-r--r--graphics/pokemon/larvitar/shiny.pal (renamed from graphics/pokemon/palettes/larvitar_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/latias/back.png (renamed from graphics/pokemon/back_pics/latias_back_pic.png)bin619 -> 619 bytes
-rw-r--r--graphics/pokemon/latias/footprint.png (renamed from graphics/pokemon/footprints/latias_footprint.png)bin104 -> 104 bytes
-rw-r--r--graphics/pokemon/latias/front.png (renamed from graphics/pokemon/front_pics/latias_still_front_pic.png)bin867 -> 867 bytes
-rw-r--r--graphics/pokemon/latias/icon.png (renamed from graphics/pokemon/icons/latias_icon.png)bin396 -> 396 bytes
-rw-r--r--graphics/pokemon/latias/normal.pal (renamed from graphics/pokemon/palettes/latias_palette.pal)0
-rw-r--r--graphics/pokemon/latias/shiny.pal (renamed from graphics/pokemon/palettes/latias_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/latios/back.png (renamed from graphics/pokemon/back_pics/latios_back_pic.png)bin672 -> 672 bytes
-rw-r--r--graphics/pokemon/latios/footprint.png (renamed from graphics/pokemon/footprints/latios_footprint.png)bin105 -> 105 bytes
-rw-r--r--graphics/pokemon/latios/front.png (renamed from graphics/pokemon/front_pics/latios_still_front_pic.png)bin959 -> 959 bytes
-rw-r--r--graphics/pokemon/latios/icon.png (renamed from graphics/pokemon/icons/latios_icon.png)bin396 -> 396 bytes
-rw-r--r--graphics/pokemon/latios/normal.pal (renamed from graphics/pokemon/palettes/latios_palette.pal)0
-rw-r--r--graphics/pokemon/latios/shiny.pal (renamed from graphics/pokemon/palettes/latios_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/ledian/back.png (renamed from graphics/pokemon/back_pics/ledian_back_pic.png)bin720 -> 720 bytes
-rw-r--r--graphics/pokemon/ledian/footprint.png (renamed from graphics/pokemon/footprints/ledian_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/ledian/front.png (renamed from graphics/pokemon/front_pics/ledian_still_front_pic.png)bin766 -> 766 bytes
-rw-r--r--graphics/pokemon/ledian/icon.png (renamed from graphics/pokemon/icons/ledian_icon.png)bin377 -> 377 bytes
-rw-r--r--graphics/pokemon/ledian/normal.pal (renamed from graphics/pokemon/palettes/ledian_palette.pal)0
-rw-r--r--graphics/pokemon/ledian/shiny.pal (renamed from graphics/pokemon/palettes/ledian_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/ledyba/back.png (renamed from graphics/pokemon/back_pics/ledyba_back_pic.png)bin642 -> 642 bytes
-rw-r--r--graphics/pokemon/ledyba/footprint.png (renamed from graphics/pokemon/footprints/ledyba_footprint.png)bin99 -> 99 bytes
-rw-r--r--graphics/pokemon/ledyba/front.png (renamed from graphics/pokemon/front_pics/ledyba_still_front_pic.png)bin637 -> 637 bytes
-rw-r--r--graphics/pokemon/ledyba/icon.png (renamed from graphics/pokemon/icons/ledyba_icon.png)bin314 -> 314 bytes
-rw-r--r--graphics/pokemon/ledyba/normal.pal (renamed from graphics/pokemon/palettes/ledyba_palette.pal)0
-rw-r--r--graphics/pokemon/ledyba/shiny.pal (renamed from graphics/pokemon/palettes/ledyba_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/lickitung/back.png (renamed from graphics/pokemon/back_pics/lickitung_back_pic.png)bin517 -> 517 bytes
-rw-r--r--graphics/pokemon/lickitung/footprint.png (renamed from graphics/pokemon/footprints/lickitung_footprint.png)bin102 -> 102 bytes
-rw-r--r--graphics/pokemon/lickitung/front.png (renamed from graphics/pokemon/front_pics/lickitung_still_front_pic.png)bin821 -> 821 bytes
-rw-r--r--graphics/pokemon/lickitung/icon.png (renamed from graphics/pokemon/icons/lickitung_icon.png)bin368 -> 368 bytes
-rw-r--r--graphics/pokemon/lickitung/normal.pal (renamed from graphics/pokemon/palettes/lickitung_palette.pal)0
-rw-r--r--graphics/pokemon/lickitung/shiny.pal (renamed from graphics/pokemon/palettes/lickitung_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/lileep/back.png (renamed from graphics/pokemon/back_pics/lileep_back_pic.png)bin679 -> 679 bytes
-rw-r--r--graphics/pokemon/lileep/footprint.png (renamed from graphics/pokemon/footprints/lileep_footprint.png)bin99 -> 99 bytes
-rw-r--r--graphics/pokemon/lileep/front.png (renamed from graphics/pokemon/front_pics/lileep_still_front_pic.png)bin692 -> 692 bytes
-rw-r--r--graphics/pokemon/lileep/icon.png (renamed from graphics/pokemon/icons/lileep_icon.png)bin361 -> 361 bytes
-rw-r--r--graphics/pokemon/lileep/normal.pal (renamed from graphics/pokemon/palettes/lileep_palette.pal)0
-rw-r--r--graphics/pokemon/lileep/shiny.pal (renamed from graphics/pokemon/palettes/lileep_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/linoone/back.png (renamed from graphics/pokemon/back_pics/linoone_back_pic.png)bin546 -> 546 bytes
-rw-r--r--graphics/pokemon/linoone/footprint.png (renamed from graphics/pokemon/footprints/linoone_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/linoone/front.png (renamed from graphics/pokemon/front_pics/linoone_still_front_pic.png)bin703 -> 703 bytes
-rw-r--r--graphics/pokemon/linoone/icon.png (renamed from graphics/pokemon/icons/linoone_icon.png)bin390 -> 390 bytes
-rw-r--r--graphics/pokemon/linoone/normal.pal (renamed from graphics/pokemon/palettes/linoone_palette.pal)0
-rw-r--r--graphics/pokemon/linoone/shiny.pal (renamed from graphics/pokemon/palettes/linoone_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/lombre/back.png (renamed from graphics/pokemon/back_pics/lombre_back_pic.png)bin585 -> 585 bytes
-rw-r--r--graphics/pokemon/lombre/footprint.png (renamed from graphics/pokemon/footprints/lombre_footprint.png)bin110 -> 110 bytes
-rw-r--r--graphics/pokemon/lombre/front.png (renamed from graphics/pokemon/front_pics/lombre_still_front_pic.png)bin647 -> 647 bytes
-rw-r--r--graphics/pokemon/lombre/icon.png (renamed from graphics/pokemon/icons/lombre_icon.png)bin319 -> 319 bytes
-rw-r--r--graphics/pokemon/lombre/normal.pal (renamed from graphics/pokemon/palettes/lombre_palette.pal)0
-rw-r--r--graphics/pokemon/lombre/shiny.pal (renamed from graphics/pokemon/palettes/lombre_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/lotad/back.png (renamed from graphics/pokemon/back_pics/lotad_back_pic.png)bin544 -> 544 bytes
-rw-r--r--graphics/pokemon/lotad/footprint.png (renamed from graphics/pokemon/footprints/lotad_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/lotad/front.png (renamed from graphics/pokemon/front_pics/lotad_still_front_pic.png)bin492 -> 492 bytes
-rw-r--r--graphics/pokemon/lotad/icon.png (renamed from graphics/pokemon/icons/lotad_icon.png)bin283 -> 283 bytes
-rw-r--r--graphics/pokemon/lotad/normal.pal (renamed from graphics/pokemon/palettes/lotad_palette.pal)0
-rw-r--r--graphics/pokemon/lotad/shiny.pal (renamed from graphics/pokemon/palettes/lotad_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/loudred/back.png (renamed from graphics/pokemon/back_pics/loudred_back_pic.png)bin686 -> 686 bytes
-rw-r--r--graphics/pokemon/loudred/footprint.png (renamed from graphics/pokemon/footprints/loudred_footprint.png)bin105 -> 105 bytes
-rw-r--r--graphics/pokemon/loudred/front.png (renamed from graphics/pokemon/front_pics/loudred_still_front_pic.png)bin936 -> 936 bytes
-rw-r--r--graphics/pokemon/loudred/icon.png (renamed from graphics/pokemon/icons/loudred_icon.png)bin387 -> 387 bytes
-rw-r--r--graphics/pokemon/loudred/normal.pal (renamed from graphics/pokemon/palettes/loudred_palette.pal)0
-rw-r--r--graphics/pokemon/loudred/shiny.pal (renamed from graphics/pokemon/palettes/loudred_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/ludicolo/back.png (renamed from graphics/pokemon/back_pics/ludicolo_back_pic.png)bin604 -> 604 bytes
-rw-r--r--graphics/pokemon/ludicolo/footprint.png (renamed from graphics/pokemon/footprints/ludicolo_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/ludicolo/front.png (renamed from graphics/pokemon/front_pics/ludicolo_still_front_pic.png)bin1040 -> 1040 bytes
-rw-r--r--graphics/pokemon/ludicolo/icon.png (renamed from graphics/pokemon/icons/ludicolo_icon.png)bin379 -> 379 bytes
-rw-r--r--graphics/pokemon/ludicolo/normal.pal (renamed from graphics/pokemon/palettes/ludicolo_palette.pal)0
-rw-r--r--graphics/pokemon/ludicolo/shiny.pal (renamed from graphics/pokemon/palettes/ludicolo_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/lugia/back.png (renamed from graphics/pokemon/back_pics/lugia_back_pic.png)bin783 -> 783 bytes
-rw-r--r--graphics/pokemon/lugia/footprint.png (renamed from graphics/pokemon/footprints/lugia_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/lugia/front.png (renamed from graphics/pokemon/front_pics/lugia_still_front_pic.png)bin1030 -> 1030 bytes
-rw-r--r--graphics/pokemon/lugia/icon.png (renamed from graphics/pokemon/icons/lugia_icon.png)bin454 -> 454 bytes
-rw-r--r--graphics/pokemon/lugia/normal.pal (renamed from graphics/pokemon/palettes/lugia_palette.pal)0
-rw-r--r--graphics/pokemon/lugia/shiny.pal (renamed from graphics/pokemon/palettes/lugia_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/lunatone/back.png (renamed from graphics/pokemon/back_pics/lunatone_back_pic.png)bin719 -> 719 bytes
-rw-r--r--graphics/pokemon/lunatone/footprint.png (renamed from graphics/pokemon/footprints/lunatone_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/lunatone/front.png (renamed from graphics/pokemon/front_pics/lunatone_still_front_pic.png)bin660 -> 660 bytes
-rw-r--r--graphics/pokemon/lunatone/icon.png (renamed from graphics/pokemon/icons/lunatone_icon.png)bin261 -> 261 bytes
-rw-r--r--graphics/pokemon/lunatone/normal.pal (renamed from graphics/pokemon/palettes/lunatone_palette.pal)0
-rw-r--r--graphics/pokemon/lunatone/shiny.pal (renamed from graphics/pokemon/palettes/lunatone_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/luvdisc/back.png (renamed from graphics/pokemon/back_pics/luvdisc_back_pic.png)bin357 -> 357 bytes
-rw-r--r--graphics/pokemon/luvdisc/footprint.png (renamed from graphics/pokemon/footprints/luvdisc_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/luvdisc/front.png (renamed from graphics/pokemon/front_pics/luvdisc_still_front_pic.png)bin328 -> 328 bytes
-rw-r--r--graphics/pokemon/luvdisc/icon.png (renamed from graphics/pokemon/icons/luvdisc_icon.png)bin281 -> 281 bytes
-rw-r--r--graphics/pokemon/luvdisc/normal.pal (renamed from graphics/pokemon/palettes/luvdisc_palette.pal)0
-rw-r--r--graphics/pokemon/luvdisc/shiny.pal (renamed from graphics/pokemon/palettes/luvdisc_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/machamp/back.png (renamed from graphics/pokemon/back_pics/machamp_back_pic.png)bin903 -> 903 bytes
-rw-r--r--graphics/pokemon/machamp/footprint.png (renamed from graphics/pokemon/footprints/machamp_footprint.png)bin98 -> 98 bytes
-rw-r--r--graphics/pokemon/machamp/front.png (renamed from graphics/pokemon/front_pics/machamp_still_front_pic.png)bin1046 -> 1046 bytes
-rw-r--r--graphics/pokemon/machamp/icon.png (renamed from graphics/pokemon/icons/machamp_icon.png)bin414 -> 414 bytes
-rw-r--r--graphics/pokemon/machamp/normal.pal (renamed from graphics/pokemon/palettes/machamp_palette.pal)0
-rw-r--r--graphics/pokemon/machamp/shiny.pal (renamed from graphics/pokemon/palettes/machamp_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/machoke/back.png (renamed from graphics/pokemon/back_pics/machoke_back_pic.png)bin675 -> 675 bytes
-rw-r--r--graphics/pokemon/machoke/footprint.png (renamed from graphics/pokemon/footprints/machoke_footprint.png)bin97 -> 97 bytes
-rw-r--r--graphics/pokemon/machoke/front.png (renamed from graphics/pokemon/front_pics/machoke_still_front_pic.png)bin796 -> 796 bytes
-rw-r--r--graphics/pokemon/machoke/icon.png (renamed from graphics/pokemon/icons/machoke_icon.png)bin415 -> 415 bytes
-rw-r--r--graphics/pokemon/machoke/normal.pal (renamed from graphics/pokemon/palettes/machoke_palette.pal)0
-rw-r--r--graphics/pokemon/machoke/shiny.pal (renamed from graphics/pokemon/palettes/machoke_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/machop/back.png (renamed from graphics/pokemon/back_pics/machop_back_pic.png)bin584 -> 584 bytes
-rw-r--r--graphics/pokemon/machop/footprint.png (renamed from graphics/pokemon/footprints/machop_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/machop/front.png (renamed from graphics/pokemon/front_pics/machop_still_front_pic.png)bin516 -> 516 bytes
-rw-r--r--graphics/pokemon/machop/icon.png (renamed from graphics/pokemon/icons/machop_icon.png)bin313 -> 313 bytes
-rw-r--r--graphics/pokemon/machop/normal.pal (renamed from graphics/pokemon/palettes/machop_palette.pal)0
-rw-r--r--graphics/pokemon/machop/shiny.pal (renamed from graphics/pokemon/palettes/machop_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/magby/back.png (renamed from graphics/pokemon/back_pics/magby_back_pic.png)bin546 -> 546 bytes
-rw-r--r--graphics/pokemon/magby/footprint.png (renamed from graphics/pokemon/footprints/magby_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/magby/front.png (renamed from graphics/pokemon/front_pics/magby_still_front_pic.png)bin506 -> 506 bytes
-rw-r--r--graphics/pokemon/magby/icon.png (renamed from graphics/pokemon/icons/magby_icon.png)bin296 -> 296 bytes
-rw-r--r--graphics/pokemon/magby/normal.pal (renamed from graphics/pokemon/palettes/magby_palette.pal)0
-rw-r--r--graphics/pokemon/magby/shiny.pal (renamed from graphics/pokemon/palettes/magby_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/magcargo/back.png (renamed from graphics/pokemon/back_pics/magcargo_back_pic.png)bin829 -> 829 bytes
-rw-r--r--graphics/pokemon/magcargo/footprint.png (renamed from graphics/pokemon/footprints/magcargo_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/magcargo/front.png (renamed from graphics/pokemon/front_pics/magcargo_still_front_pic.png)bin708 -> 708 bytes
-rw-r--r--graphics/pokemon/magcargo/icon.png (renamed from graphics/pokemon/icons/magcargo_icon.png)bin444 -> 444 bytes
-rw-r--r--graphics/pokemon/magcargo/normal.pal (renamed from graphics/pokemon/palettes/magcargo_palette.pal)0
-rw-r--r--graphics/pokemon/magcargo/shiny.pal (renamed from graphics/pokemon/palettes/magcargo_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/magikarp/back.png (renamed from graphics/pokemon/back_pics/magikarp_back_pic.png)bin673 -> 673 bytes
-rw-r--r--graphics/pokemon/magikarp/footprint.png (renamed from graphics/pokemon/footprints/magikarp_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/magikarp/front.png (renamed from graphics/pokemon/front_pics/magikarp_still_front_pic.png)bin753 -> 753 bytes
-rw-r--r--graphics/pokemon/magikarp/icon.png (renamed from graphics/pokemon/icons/magikarp_icon.png)bin381 -> 381 bytes
-rw-r--r--graphics/pokemon/magikarp/normal.pal (renamed from graphics/pokemon/palettes/magikarp_palette.pal)0
-rw-r--r--graphics/pokemon/magikarp/shiny.pal (renamed from graphics/pokemon/palettes/magikarp_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/magmar/back.png (renamed from graphics/pokemon/back_pics/magmar_back_pic.png)bin689 -> 689 bytes
-rw-r--r--graphics/pokemon/magmar/footprint.png (renamed from graphics/pokemon/footprints/magmar_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/magmar/front.png (renamed from graphics/pokemon/front_pics/magmar_still_front_pic.png)bin921 -> 921 bytes
-rw-r--r--graphics/pokemon/magmar/icon.png (renamed from graphics/pokemon/icons/magmar_icon.png)bin398 -> 398 bytes
-rw-r--r--graphics/pokemon/magmar/normal.pal (renamed from graphics/pokemon/palettes/magmar_palette.pal)0
-rw-r--r--graphics/pokemon/magmar/shiny.pal (renamed from graphics/pokemon/palettes/magmar_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/magnemite/back.png (renamed from graphics/pokemon/back_pics/magnemite_back_pic.png)bin391 -> 391 bytes
-rw-r--r--graphics/pokemon/magnemite/footprint.png (renamed from graphics/pokemon/footprints/magnemite_footprint.png)bin83 -> 83 bytes
-rw-r--r--graphics/pokemon/magnemite/front.png (renamed from graphics/pokemon/front_pics/magnemite_still_front_pic.png)bin390 -> 390 bytes
-rw-r--r--graphics/pokemon/magnemite/icon.png (renamed from graphics/pokemon/icons/magnemite_icon.png)bin289 -> 289 bytes
-rw-r--r--graphics/pokemon/magnemite/normal.pal (renamed from graphics/pokemon/palettes/magnemite_palette.pal)0
-rw-r--r--graphics/pokemon/magnemite/shiny.pal (renamed from graphics/pokemon/palettes/magnemite_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/magneton/back.png (renamed from graphics/pokemon/back_pics/magneton_back_pic.png)bin749 -> 749 bytes
-rw-r--r--graphics/pokemon/magneton/footprint.png (renamed from graphics/pokemon/footprints/magneton_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/magneton/front.png (renamed from graphics/pokemon/front_pics/magneton_still_front_pic.png)bin707 -> 707 bytes
-rw-r--r--graphics/pokemon/magneton/icon.png (renamed from graphics/pokemon/icons/magneton_icon.png)bin416 -> 416 bytes
-rw-r--r--graphics/pokemon/magneton/normal.pal (renamed from graphics/pokemon/palettes/magneton_palette.pal)0
-rw-r--r--graphics/pokemon/magneton/shiny.pal (renamed from graphics/pokemon/palettes/magneton_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/makuhita/back.png (renamed from graphics/pokemon/back_pics/makuhita_back_pic.png)bin579 -> 579 bytes
-rw-r--r--graphics/pokemon/makuhita/footprint.png (renamed from graphics/pokemon/footprints/makuhita_footprint.png)bin97 -> 97 bytes
-rw-r--r--graphics/pokemon/makuhita/front.png (renamed from graphics/pokemon/front_pics/makuhita_still_front_pic.png)bin637 -> 637 bytes
-rw-r--r--graphics/pokemon/makuhita/icon.png (renamed from graphics/pokemon/icons/makuhita_icon.png)bin326 -> 326 bytes
-rw-r--r--graphics/pokemon/makuhita/normal.pal (renamed from graphics/pokemon/palettes/makuhita_palette.pal)0
-rw-r--r--graphics/pokemon/makuhita/shiny.pal (renamed from graphics/pokemon/palettes/makuhita_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/manectric/back.png (renamed from graphics/pokemon/back_pics/manectric_back_pic.png)bin437 -> 437 bytes
-rw-r--r--graphics/pokemon/manectric/footprint.png (renamed from graphics/pokemon/footprints/manectric_footprint.png)bin100 -> 100 bytes
-rw-r--r--graphics/pokemon/manectric/front.png (renamed from graphics/pokemon/front_pics/manectric_still_front_pic.png)bin685 -> 685 bytes
-rw-r--r--graphics/pokemon/manectric/icon.png (renamed from graphics/pokemon/icons/manectric_icon.png)bin316 -> 316 bytes
-rw-r--r--graphics/pokemon/manectric/normal.pal (renamed from graphics/pokemon/palettes/manectric_palette.pal)0
-rw-r--r--graphics/pokemon/manectric/shiny.pal (renamed from graphics/pokemon/palettes/manectric_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/mankey/back.png (renamed from graphics/pokemon/back_pics/mankey_back_pic.png)bin697 -> 697 bytes
-rw-r--r--graphics/pokemon/mankey/footprint.png (renamed from graphics/pokemon/footprints/mankey_footprint.png)bin110 -> 110 bytes
-rw-r--r--graphics/pokemon/mankey/front.png (renamed from graphics/pokemon/front_pics/mankey_still_front_pic.png)bin646 -> 646 bytes
-rw-r--r--graphics/pokemon/mankey/icon.png (renamed from graphics/pokemon/icons/mankey_icon.png)bin374 -> 374 bytes
-rw-r--r--graphics/pokemon/mankey/normal.pal (renamed from graphics/pokemon/palettes/mankey_palette.pal)0
-rw-r--r--graphics/pokemon/mankey/shiny.pal (renamed from graphics/pokemon/palettes/mankey_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/mantine/back.png (renamed from graphics/pokemon/back_pics/mantine_back_pic.png)bin526 -> 526 bytes
-rw-r--r--graphics/pokemon/mantine/footprint.png (renamed from graphics/pokemon/footprints/mantine_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/mantine/front.png (renamed from graphics/pokemon/front_pics/mantine_still_front_pic.png)bin983 -> 983 bytes
-rw-r--r--graphics/pokemon/mantine/icon.png (renamed from graphics/pokemon/icons/mantine_icon.png)bin374 -> 374 bytes
-rw-r--r--graphics/pokemon/mantine/normal.pal (renamed from graphics/pokemon/palettes/mantine_palette.pal)0
-rw-r--r--graphics/pokemon/mantine/shiny.pal (renamed from graphics/pokemon/palettes/mantine_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/mareep/back.png (renamed from graphics/pokemon/back_pics/mareep_back_pic.png)bin635 -> 635 bytes
-rw-r--r--graphics/pokemon/mareep/footprint.png (renamed from graphics/pokemon/footprints/mareep_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/mareep/front.png (renamed from graphics/pokemon/front_pics/mareep_still_front_pic.png)bin571 -> 571 bytes
-rw-r--r--graphics/pokemon/mareep/icon.png (renamed from graphics/pokemon/icons/mareep_icon.png)bin391 -> 391 bytes
-rw-r--r--graphics/pokemon/mareep/normal.pal (renamed from graphics/pokemon/palettes/mareep_palette.pal)0
-rw-r--r--graphics/pokemon/mareep/shiny.pal (renamed from graphics/pokemon/palettes/mareep_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/marill/back.png (renamed from graphics/pokemon/back_pics/marill_back_pic.png)bin514 -> 514 bytes
-rw-r--r--graphics/pokemon/marill/footprint.png (renamed from graphics/pokemon/footprints/marill_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/marill/front.png (renamed from graphics/pokemon/front_pics/marill_still_front_pic.png)bin563 -> 563 bytes
-rw-r--r--graphics/pokemon/marill/icon.png (renamed from graphics/pokemon/icons/marill_icon.png)bin365 -> 365 bytes
-rw-r--r--graphics/pokemon/marill/normal.pal (renamed from graphics/pokemon/palettes/marill_palette.pal)0
-rw-r--r--graphics/pokemon/marill/shiny.pal (renamed from graphics/pokemon/palettes/marill_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/marowak/back.png (renamed from graphics/pokemon/back_pics/marowak_back_pic.png)bin629 -> 629 bytes
-rw-r--r--graphics/pokemon/marowak/footprint.png (renamed from graphics/pokemon/footprints/marowak_footprint.png)bin86 -> 86 bytes
-rw-r--r--graphics/pokemon/marowak/front.png (renamed from graphics/pokemon/front_pics/marowak_still_front_pic.png)bin753 -> 753 bytes
-rw-r--r--graphics/pokemon/marowak/icon.png (renamed from graphics/pokemon/icons/marowak_icon.png)bin388 -> 388 bytes
-rw-r--r--graphics/pokemon/marowak/normal.pal (renamed from graphics/pokemon/palettes/marowak_palette.pal)0
-rw-r--r--graphics/pokemon/marowak/shiny.pal (renamed from graphics/pokemon/palettes/marowak_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/marshtomp/back.png (renamed from graphics/pokemon/back_pics/marshtomp_back_pic.png)bin748 -> 748 bytes
-rw-r--r--graphics/pokemon/marshtomp/footprint.png (renamed from graphics/pokemon/footprints/marshtomp_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/marshtomp/front.png (renamed from graphics/pokemon/front_pics/marshtomp_still_front_pic.png)bin736 -> 736 bytes
-rw-r--r--graphics/pokemon/marshtomp/icon.png (renamed from graphics/pokemon/icons/marshtomp_icon.png)bin294 -> 294 bytes
-rw-r--r--graphics/pokemon/marshtomp/normal.pal (renamed from graphics/pokemon/palettes/marshtomp_palette.pal)0
-rw-r--r--graphics/pokemon/marshtomp/shiny.pal (renamed from graphics/pokemon/palettes/marshtomp_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/masquerain/back.png (renamed from graphics/pokemon/back_pics/masquerain_back_pic.png)bin697 -> 697 bytes
-rw-r--r--graphics/pokemon/masquerain/footprint.png (renamed from graphics/pokemon/footprints/masquerain_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/masquerain/front.png (renamed from graphics/pokemon/front_pics/masquerain_still_front_pic.png)bin782 -> 782 bytes
-rw-r--r--graphics/pokemon/masquerain/icon.png (renamed from graphics/pokemon/icons/masquerain_icon.png)bin371 -> 371 bytes
-rw-r--r--graphics/pokemon/masquerain/normal.pal (renamed from graphics/pokemon/palettes/masquerain_palette.pal)0
-rw-r--r--graphics/pokemon/masquerain/shiny.pal (renamed from graphics/pokemon/palettes/masquerain_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/mawile/back.png (renamed from graphics/pokemon/back_pics/mawile_back_pic.png)bin825 -> 825 bytes
-rw-r--r--graphics/pokemon/mawile/footprint.png (renamed from graphics/pokemon/footprints/mawile_footprint.png)bin102 -> 102 bytes
-rw-r--r--graphics/pokemon/mawile/front.png (renamed from graphics/pokemon/front_pics/mawile_still_front_pic.png)bin774 -> 774 bytes
-rw-r--r--graphics/pokemon/mawile/icon.png (renamed from graphics/pokemon/icons/mawile_icon.png)bin433 -> 433 bytes
-rw-r--r--graphics/pokemon/mawile/normal.pal (renamed from graphics/pokemon/palettes/mawile_palette.pal)0
-rw-r--r--graphics/pokemon/mawile/shiny.pal (renamed from graphics/pokemon/palettes/mawile_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/medicham/back.png (renamed from graphics/pokemon/back_pics/medicham_back_pic.png)bin696 -> 696 bytes
-rw-r--r--graphics/pokemon/medicham/footprint.png (renamed from graphics/pokemon/footprints/medicham_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/medicham/front.png (renamed from graphics/pokemon/front_pics/medicham_still_front_pic.png)bin711 -> 711 bytes
-rw-r--r--graphics/pokemon/medicham/icon.png (renamed from graphics/pokemon/icons/medicham_icon.png)bin369 -> 369 bytes
-rw-r--r--graphics/pokemon/medicham/normal.pal (renamed from graphics/pokemon/palettes/medicham_palette.pal)0
-rw-r--r--graphics/pokemon/medicham/shiny.pal (renamed from graphics/pokemon/palettes/medicham_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/meditite/back.png (renamed from graphics/pokemon/back_pics/meditite_back_pic.png)bin565 -> 565 bytes
-rw-r--r--graphics/pokemon/meditite/footprint.png (renamed from graphics/pokemon/footprints/meditite_footprint.png)bin89 -> 89 bytes
-rw-r--r--graphics/pokemon/meditite/front.png (renamed from graphics/pokemon/front_pics/meditite_still_front_pic.png)bin573 -> 573 bytes
-rw-r--r--graphics/pokemon/meditite/icon.png (renamed from graphics/pokemon/icons/meditite_icon.png)bin329 -> 329 bytes
-rw-r--r--graphics/pokemon/meditite/normal.pal (renamed from graphics/pokemon/palettes/meditite_palette.pal)0
-rw-r--r--graphics/pokemon/meditite/shiny.pal (renamed from graphics/pokemon/palettes/meditite_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/meganium/back.png (renamed from graphics/pokemon/back_pics/meganium_back_pic.png)bin736 -> 736 bytes
-rw-r--r--graphics/pokemon/meganium/footprint.png (renamed from graphics/pokemon/footprints/meganium_footprint.png)bin97 -> 97 bytes
-rw-r--r--graphics/pokemon/meganium/front.png (renamed from graphics/pokemon/front_pics/meganium_still_front_pic.png)bin1117 -> 1117 bytes
-rw-r--r--graphics/pokemon/meganium/icon.png (renamed from graphics/pokemon/icons/meganium_icon.png)bin451 -> 451 bytes
-rw-r--r--graphics/pokemon/meganium/normal.pal (renamed from graphics/pokemon/palettes/meganium_palette.pal)0
-rw-r--r--graphics/pokemon/meganium/shiny.pal (renamed from graphics/pokemon/palettes/meganium_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/meowth/back.png (renamed from graphics/pokemon/back_pics/meowth_back_pic.png)bin576 -> 576 bytes
-rw-r--r--graphics/pokemon/meowth/footprint.png (renamed from graphics/pokemon/footprints/meowth_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/meowth/front.png (renamed from graphics/pokemon/front_pics/meowth_still_front_pic.png)bin637 -> 637 bytes
-rw-r--r--graphics/pokemon/meowth/icon.png (renamed from graphics/pokemon/icons/meowth_icon.png)bin304 -> 304 bytes
-rw-r--r--graphics/pokemon/meowth/normal.pal (renamed from graphics/pokemon/palettes/meowth_palette.pal)0
-rw-r--r--graphics/pokemon/meowth/shiny.pal (renamed from graphics/pokemon/palettes/meowth_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/metagross/back.png (renamed from graphics/pokemon/back_pics/metagross_back_pic.png)bin515 -> 515 bytes
-rw-r--r--graphics/pokemon/metagross/footprint.png (renamed from graphics/pokemon/footprints/metagross_footprint.png)bin91 -> 91 bytes
-rw-r--r--graphics/pokemon/metagross/front.png (renamed from graphics/pokemon/front_pics/metagross_still_front_pic.png)bin911 -> 911 bytes
-rw-r--r--graphics/pokemon/metagross/icon.png (renamed from graphics/pokemon/icons/metagross_icon.png)bin439 -> 439 bytes
-rw-r--r--graphics/pokemon/metagross/normal.pal (renamed from graphics/pokemon/palettes/metagross_palette.pal)0
-rw-r--r--graphics/pokemon/metagross/shiny.pal (renamed from graphics/pokemon/palettes/metagross_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/metang/back.png (renamed from graphics/pokemon/back_pics/metang_back_pic.png)bin618 -> 618 bytes
-rw-r--r--graphics/pokemon/metang/footprint.png (renamed from graphics/pokemon/footprints/metang_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/metang/front.png (renamed from graphics/pokemon/front_pics/metang_still_front_pic.png)bin899 -> 899 bytes
-rw-r--r--graphics/pokemon/metang/icon.png (renamed from graphics/pokemon/icons/metang_icon.png)bin445 -> 445 bytes
-rw-r--r--graphics/pokemon/metang/normal.pal (renamed from graphics/pokemon/palettes/metang_palette.pal)0
-rw-r--r--graphics/pokemon/metang/shiny.pal (renamed from graphics/pokemon/palettes/metang_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/metapod/back.png (renamed from graphics/pokemon/back_pics/metapod_back_pic.png)bin411 -> 411 bytes
-rw-r--r--graphics/pokemon/metapod/footprint.png (renamed from graphics/pokemon/footprints/metapod_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/metapod/front.png (renamed from graphics/pokemon/front_pics/metapod_still_front_pic.png)bin406 -> 406 bytes
-rw-r--r--graphics/pokemon/metapod/icon.png (renamed from graphics/pokemon/icons/metapod_icon.png)bin241 -> 241 bytes
-rw-r--r--graphics/pokemon/metapod/normal.pal (renamed from graphics/pokemon/palettes/metapod_palette.pal)0
-rw-r--r--graphics/pokemon/metapod/shiny.pal (renamed from graphics/pokemon/palettes/metapod_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/mew/back.png (renamed from graphics/pokemon/back_pics/mew_back_pic.png)bin654 -> 654 bytes
-rw-r--r--graphics/pokemon/mew/footprint.png (renamed from graphics/pokemon/footprints/mew_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/mew/front.png (renamed from graphics/pokemon/front_pics/mew_still_front_pic.png)bin577 -> 577 bytes
-rw-r--r--graphics/pokemon/mew/icon.png (renamed from graphics/pokemon/icons/mew_icon.png)bin377 -> 377 bytes
-rw-r--r--graphics/pokemon/mew/normal.pal (renamed from graphics/pokemon/palettes/mew_palette.pal)0
-rw-r--r--graphics/pokemon/mew/shiny.pal (renamed from graphics/pokemon/palettes/mew_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/mewtwo/back.png (renamed from graphics/pokemon/back_pics/mewtwo_back_pic.png)bin815 -> 815 bytes
-rw-r--r--graphics/pokemon/mewtwo/footprint.png (renamed from graphics/pokemon/footprints/mewtwo_footprint.png)bin100 -> 100 bytes
-rw-r--r--graphics/pokemon/mewtwo/front.png (renamed from graphics/pokemon/front_pics/mewtwo_still_front_pic.png)bin875 -> 875 bytes
-rw-r--r--graphics/pokemon/mewtwo/icon.png (renamed from graphics/pokemon/icons/mewtwo_icon.png)bin368 -> 368 bytes
-rw-r--r--graphics/pokemon/mewtwo/normal.pal (renamed from graphics/pokemon/palettes/mewtwo_palette.pal)0
-rw-r--r--graphics/pokemon/mewtwo/shiny.pal (renamed from graphics/pokemon/palettes/mewtwo_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/mightyena/back.png (renamed from graphics/pokemon/back_pics/mightyena_back_pic.png)bin724 -> 724 bytes
-rw-r--r--graphics/pokemon/mightyena/footprint.png (renamed from graphics/pokemon/footprints/mightyena_footprint.png)bin113 -> 113 bytes
-rw-r--r--graphics/pokemon/mightyena/front.png (renamed from graphics/pokemon/front_pics/mightyena_still_front_pic.png)bin856 -> 856 bytes
-rw-r--r--graphics/pokemon/mightyena/icon.png (renamed from graphics/pokemon/icons/mightyena_icon.png)bin403 -> 403 bytes
-rw-r--r--graphics/pokemon/mightyena/normal.pal (renamed from graphics/pokemon/palettes/mightyena_palette.pal)0
-rw-r--r--graphics/pokemon/mightyena/shiny.pal (renamed from graphics/pokemon/palettes/mightyena_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/milotic/back.png (renamed from graphics/pokemon/back_pics/milotic_back_pic.png)bin588 -> 588 bytes
-rw-r--r--graphics/pokemon/milotic/footprint.png (renamed from graphics/pokemon/footprints/milotic_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/milotic/front.png (renamed from graphics/pokemon/front_pics/milotic_still_front_pic.png)bin966 -> 966 bytes
-rw-r--r--graphics/pokemon/milotic/icon.png (renamed from graphics/pokemon/icons/milotic_icon.png)bin455 -> 455 bytes
-rw-r--r--graphics/pokemon/milotic/normal.pal (renamed from graphics/pokemon/palettes/milotic_palette.pal)0
-rw-r--r--graphics/pokemon/milotic/shiny.pal (renamed from graphics/pokemon/palettes/milotic_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/miltank/back.png (renamed from graphics/pokemon/back_pics/miltank_back_pic.png)bin731 -> 731 bytes
-rw-r--r--graphics/pokemon/miltank/footprint.png (renamed from graphics/pokemon/footprints/miltank_footprint.png)bin86 -> 86 bytes
-rw-r--r--graphics/pokemon/miltank/front.png (renamed from graphics/pokemon/front_pics/miltank_still_front_pic.png)bin791 -> 791 bytes
-rw-r--r--graphics/pokemon/miltank/icon.png (renamed from graphics/pokemon/icons/miltank_icon.png)bin351 -> 351 bytes
-rw-r--r--graphics/pokemon/miltank/normal.pal (renamed from graphics/pokemon/palettes/miltank_palette.pal)0
-rw-r--r--graphics/pokemon/miltank/shiny.pal (renamed from graphics/pokemon/palettes/miltank_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/minun/back.png (renamed from graphics/pokemon/back_pics/minun_back_pic.png)bin575 -> 575 bytes
-rw-r--r--graphics/pokemon/minun/footprint.png (renamed from graphics/pokemon/footprints/minun_footprint.png)bin86 -> 86 bytes
-rw-r--r--graphics/pokemon/minun/front.png (renamed from graphics/pokemon/front_pics/minun_still_front_pic.png)bin505 -> 505 bytes
-rw-r--r--graphics/pokemon/minun/icon.png (renamed from graphics/pokemon/icons/minun_icon.png)bin296 -> 296 bytes
-rw-r--r--graphics/pokemon/minun/normal.pal (renamed from graphics/pokemon/palettes/minun_palette.pal)0
-rw-r--r--graphics/pokemon/minun/shiny.pal (renamed from graphics/pokemon/palettes/minun_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/misdreavus/back.png (renamed from graphics/pokemon/back_pics/misdreavus_back_pic.png)bin618 -> 618 bytes
-rw-r--r--graphics/pokemon/misdreavus/footprint.png (renamed from graphics/pokemon/footprints/misdreavus_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/misdreavus/front.png (renamed from graphics/pokemon/front_pics/misdreavus_still_front_pic.png)bin590 -> 590 bytes
-rw-r--r--graphics/pokemon/misdreavus/icon.png (renamed from graphics/pokemon/icons/misdreavus_icon.png)bin369 -> 369 bytes
-rw-r--r--graphics/pokemon/misdreavus/normal.pal (renamed from graphics/pokemon/palettes/misdreavus_palette.pal)0
-rw-r--r--graphics/pokemon/misdreavus/shiny.pal (renamed from graphics/pokemon/palettes/misdreavus_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/moltres/back.png (renamed from graphics/pokemon/back_pics/moltres_back_pic.png)bin682 -> 682 bytes
-rw-r--r--graphics/pokemon/moltres/footprint.png (renamed from graphics/pokemon/footprints/moltres_footprint.png)bin101 -> 101 bytes
-rw-r--r--graphics/pokemon/moltres/front.png (renamed from graphics/pokemon/front_pics/moltres_still_front_pic.png)bin1014 -> 1014 bytes
-rw-r--r--graphics/pokemon/moltres/icon.png (renamed from graphics/pokemon/icons/moltres_icon.png)bin421 -> 421 bytes
-rw-r--r--graphics/pokemon/moltres/normal.pal (renamed from graphics/pokemon/palettes/moltres_palette.pal)0
-rw-r--r--graphics/pokemon/moltres/shiny.pal (renamed from graphics/pokemon/palettes/moltres_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/mr_mime/back.png (renamed from graphics/pokemon/back_pics/mr_mime_back_pic.png)bin677 -> 677 bytes
-rw-r--r--graphics/pokemon/mr_mime/footprint.png (renamed from graphics/pokemon/footprints/mr_mime_footprint.png)bin89 -> 89 bytes
-rw-r--r--graphics/pokemon/mr_mime/front.png (renamed from graphics/pokemon/front_pics/mr_mime_still_front_pic.png)bin821 -> 821 bytes
-rw-r--r--graphics/pokemon/mr_mime/icon.png (renamed from graphics/pokemon/icons/mr_mime_icon.png)bin311 -> 311 bytes
-rw-r--r--graphics/pokemon/mr_mime/normal.pal (renamed from graphics/pokemon/palettes/mr_mime_palette.pal)0
-rw-r--r--graphics/pokemon/mr_mime/shiny.pal (renamed from graphics/pokemon/palettes/mr_mime_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/mudkip/back.png (renamed from graphics/pokemon/back_pics/mudkip_back_pic.png)bin627 -> 627 bytes
-rw-r--r--graphics/pokemon/mudkip/footprint.png (renamed from graphics/pokemon/footprints/mudkip_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/mudkip/front.png (renamed from graphics/pokemon/front_pics/mudkip_still_front_pic.png)bin572 -> 572 bytes
-rw-r--r--graphics/pokemon/mudkip/icon.png (renamed from graphics/pokemon/icons/mudkip_icon.png)bin353 -> 353 bytes
-rw-r--r--graphics/pokemon/mudkip/normal.pal (renamed from graphics/pokemon/palettes/mudkip_palette.pal)0
-rw-r--r--graphics/pokemon/mudkip/shiny.pal (renamed from graphics/pokemon/palettes/mudkip_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/muk/back.png (renamed from graphics/pokemon/back_pics/muk_back_pic.png)bin582 -> 582 bytes
-rw-r--r--graphics/pokemon/muk/footprint.png (renamed from graphics/pokemon/footprints/muk_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/muk/front.png (renamed from graphics/pokemon/front_pics/muk_still_front_pic.png)bin710 -> 710 bytes
-rw-r--r--graphics/pokemon/muk/icon.png (renamed from graphics/pokemon/icons/muk_icon.png)bin441 -> 441 bytes
-rw-r--r--graphics/pokemon/muk/normal.pal (renamed from graphics/pokemon/palettes/muk_palette.pal)0
-rw-r--r--graphics/pokemon/muk/shiny.pal (renamed from graphics/pokemon/palettes/muk_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/murkrow/back.png (renamed from graphics/pokemon/back_pics/murkrow_back_pic.png)bin640 -> 640 bytes
-rw-r--r--graphics/pokemon/murkrow/footprint.png (renamed from graphics/pokemon/footprints/murkrow_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/murkrow/front.png (renamed from graphics/pokemon/front_pics/murkrow_still_front_pic.png)bin601 -> 601 bytes
-rw-r--r--graphics/pokemon/murkrow/icon.png (renamed from graphics/pokemon/icons/murkrow_icon.png)bin370 -> 370 bytes
-rw-r--r--graphics/pokemon/murkrow/normal.pal (renamed from graphics/pokemon/palettes/murkrow_palette.pal)0
-rw-r--r--graphics/pokemon/murkrow/shiny.pal (renamed from graphics/pokemon/palettes/murkrow_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/natu/back.png (renamed from graphics/pokemon/back_pics/natu_back_pic.png)bin401 -> 401 bytes
-rw-r--r--graphics/pokemon/natu/footprint.png (renamed from graphics/pokemon/footprints/natu_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/natu/front.png (renamed from graphics/pokemon/front_pics/natu_still_front_pic.png)bin375 -> 375 bytes
-rw-r--r--graphics/pokemon/natu/icon.png (renamed from graphics/pokemon/icons/natu_icon.png)bin318 -> 318 bytes
-rw-r--r--graphics/pokemon/natu/normal.pal (renamed from graphics/pokemon/palettes/natu_palette.pal)0
-rw-r--r--graphics/pokemon/natu/shiny.pal (renamed from graphics/pokemon/palettes/natu_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/nidoking/back.png (renamed from graphics/pokemon/back_pics/nidoking_back_pic.png)bin849 -> 849 bytes
-rw-r--r--graphics/pokemon/nidoking/footprint.png (renamed from graphics/pokemon/footprints/nidoking_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/nidoking/front.png (renamed from graphics/pokemon/front_pics/nidoking_still_front_pic.png)bin1084 -> 1084 bytes
-rw-r--r--graphics/pokemon/nidoking/icon.png (renamed from graphics/pokemon/icons/nidoking_icon.png)bin420 -> 420 bytes
-rw-r--r--graphics/pokemon/nidoking/normal.pal (renamed from graphics/pokemon/palettes/nidoking_palette.pal)0
-rw-r--r--graphics/pokemon/nidoking/shiny.pal (renamed from graphics/pokemon/palettes/nidoking_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/nidoqueen/back.png (renamed from graphics/pokemon/back_pics/nidoqueen_back_pic.png)bin761 -> 761 bytes
-rw-r--r--graphics/pokemon/nidoqueen/footprint.png (renamed from graphics/pokemon/footprints/nidoqueen_footprint.png)bin98 -> 98 bytes
-rw-r--r--graphics/pokemon/nidoqueen/front.png (renamed from graphics/pokemon/front_pics/nidoqueen_still_front_pic.png)bin893 -> 893 bytes
-rw-r--r--graphics/pokemon/nidoqueen/icon.png (renamed from graphics/pokemon/icons/nidoqueen_icon.png)bin374 -> 374 bytes
-rw-r--r--graphics/pokemon/nidoqueen/normal.pal (renamed from graphics/pokemon/palettes/nidoqueen_palette.pal)0
-rw-r--r--graphics/pokemon/nidoqueen/shiny.pal (renamed from graphics/pokemon/palettes/nidoqueen_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/nidoran_f/back.png (renamed from graphics/pokemon/back_pics/nidoran_f_back_pic.png)bin587 -> 587 bytes
-rw-r--r--graphics/pokemon/nidoran_f/footprint.png (renamed from graphics/pokemon/footprints/nidoran_f_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/nidoran_f/front.png (renamed from graphics/pokemon/front_pics/nidoran_f_still_front_pic.png)bin480 -> 480 bytes
-rw-r--r--graphics/pokemon/nidoran_f/icon.png (renamed from graphics/pokemon/icons/nidoran_f_icon.png)bin287 -> 287 bytes
-rw-r--r--graphics/pokemon/nidoran_f/normal.pal (renamed from graphics/pokemon/palettes/nidoran_f_palette.pal)0
-rw-r--r--graphics/pokemon/nidoran_f/shiny.pal (renamed from graphics/pokemon/palettes/nidoran_f_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/nidoran_m/back.png (renamed from graphics/pokemon/back_pics/nidoran_m_back_pic.png)bin630 -> 630 bytes
-rw-r--r--graphics/pokemon/nidoran_m/footprint.png (renamed from graphics/pokemon/footprints/nidoran_m_footprint.png)bin89 -> 89 bytes
-rw-r--r--graphics/pokemon/nidoran_m/front.png (renamed from graphics/pokemon/front_pics/nidoran_m_still_front_pic.png)bin505 -> 505 bytes
-rw-r--r--graphics/pokemon/nidoran_m/icon.png (renamed from graphics/pokemon/icons/nidoran_m_icon.png)bin326 -> 326 bytes
-rw-r--r--graphics/pokemon/nidoran_m/normal.pal (renamed from graphics/pokemon/palettes/nidoran_m_palette.pal)0
-rw-r--r--graphics/pokemon/nidoran_m/shiny.pal (renamed from graphics/pokemon/palettes/nidoran_m_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/nidorina/back.png (renamed from graphics/pokemon/back_pics/nidorina_back_pic.png)bin693 -> 693 bytes
-rw-r--r--graphics/pokemon/nidorina/footprint.png (renamed from graphics/pokemon/footprints/nidorina_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/nidorina/front.png (renamed from graphics/pokemon/front_pics/nidorina_still_front_pic.png)bin632 -> 632 bytes
-rw-r--r--graphics/pokemon/nidorina/icon.png (renamed from graphics/pokemon/icons/nidorina_icon.png)bin325 -> 325 bytes
-rw-r--r--graphics/pokemon/nidorina/normal.pal (renamed from graphics/pokemon/palettes/nidorina_palette.pal)0
-rw-r--r--graphics/pokemon/nidorina/shiny.pal (renamed from graphics/pokemon/palettes/nidorina_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/nidorino/back.png (renamed from graphics/pokemon/back_pics/nidorino_back_pic.png)bin741 -> 741 bytes
-rw-r--r--graphics/pokemon/nidorino/footprint.png (renamed from graphics/pokemon/footprints/nidorino_footprint.png)bin100 -> 100 bytes
-rw-r--r--graphics/pokemon/nidorino/front.png (renamed from graphics/pokemon/front_pics/nidorino_still_front_pic.png)bin716 -> 716 bytes
-rw-r--r--graphics/pokemon/nidorino/icon.png (renamed from graphics/pokemon/icons/nidorino_icon.png)bin324 -> 324 bytes
-rw-r--r--graphics/pokemon/nidorino/normal.pal (renamed from graphics/pokemon/palettes/nidorino_palette.pal)0
-rw-r--r--graphics/pokemon/nidorino/shiny.pal (renamed from graphics/pokemon/palettes/nidorino_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/nincada/back.png (renamed from graphics/pokemon/back_pics/nincada_back_pic.png)bin576 -> 576 bytes
-rw-r--r--graphics/pokemon/nincada/footprint.png (renamed from graphics/pokemon/footprints/nincada_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/nincada/front.png (renamed from graphics/pokemon/front_pics/nincada_still_front_pic.png)bin578 -> 578 bytes
-rw-r--r--graphics/pokemon/nincada/icon.png (renamed from graphics/pokemon/icons/nincada_icon.png)bin352 -> 352 bytes
-rw-r--r--graphics/pokemon/nincada/normal.pal (renamed from graphics/pokemon/palettes/nincada_palette.pal)0
-rw-r--r--graphics/pokemon/nincada/shiny.pal (renamed from graphics/pokemon/palettes/nincada_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/ninetales/back.png (renamed from graphics/pokemon/back_pics/ninetales_back_pic.png)bin770 -> 770 bytes
-rw-r--r--graphics/pokemon/ninetales/footprint.png (renamed from graphics/pokemon/footprints/ninetales_footprint.png)bin96 -> 96 bytes
-rw-r--r--graphics/pokemon/ninetales/front.png (renamed from graphics/pokemon/front_pics/ninetales_still_front_pic.png)bin885 -> 885 bytes
-rw-r--r--graphics/pokemon/ninetales/icon.png (renamed from graphics/pokemon/icons/ninetales_icon.png)bin421 -> 421 bytes
-rw-r--r--graphics/pokemon/ninetales/normal.pal (renamed from graphics/pokemon/palettes/ninetales_palette.pal)0
-rw-r--r--graphics/pokemon/ninetales/shiny.pal (renamed from graphics/pokemon/palettes/ninetales_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/ninjask/back.png (renamed from graphics/pokemon/back_pics/ninjask_back_pic.png)bin797 -> 797 bytes
-rw-r--r--graphics/pokemon/ninjask/footprint.png (renamed from graphics/pokemon/footprints/ninjask_footprint.png)bin91 -> 91 bytes
-rw-r--r--graphics/pokemon/ninjask/front.png (renamed from graphics/pokemon/front_pics/ninjask_still_front_pic.png)bin740 -> 740 bytes
-rw-r--r--graphics/pokemon/ninjask/icon.png (renamed from graphics/pokemon/icons/ninjask_icon.png)bin324 -> 324 bytes
-rw-r--r--graphics/pokemon/ninjask/normal.pal (renamed from graphics/pokemon/palettes/ninjask_palette.pal)0
-rw-r--r--graphics/pokemon/ninjask/shiny.pal (renamed from graphics/pokemon/palettes/ninjask_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/noctowl/back.png (renamed from graphics/pokemon/back_pics/noctowl_back_pic.png)bin659 -> 659 bytes
-rw-r--r--graphics/pokemon/noctowl/footprint.png (renamed from graphics/pokemon/footprints/noctowl_footprint.png)bin101 -> 101 bytes
-rw-r--r--graphics/pokemon/noctowl/front.png (renamed from graphics/pokemon/front_pics/noctowl_still_front_pic.png)bin700 -> 700 bytes
-rw-r--r--graphics/pokemon/noctowl/icon.png (renamed from graphics/pokemon/icons/noctowl_icon.png)bin362 -> 362 bytes
-rw-r--r--graphics/pokemon/noctowl/normal.pal (renamed from graphics/pokemon/palettes/noctowl_palette.pal)0
-rw-r--r--graphics/pokemon/noctowl/shiny.pal (renamed from graphics/pokemon/palettes/noctowl_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/nosepass/back.png (renamed from graphics/pokemon/back_pics/nosepass_back_pic.png)bin517 -> 517 bytes
-rw-r--r--graphics/pokemon/nosepass/footprint.png (renamed from graphics/pokemon/footprints/nosepass_footprint.png)bin96 -> 96 bytes
-rw-r--r--graphics/pokemon/nosepass/front.png (renamed from graphics/pokemon/front_pics/nosepass_still_front_pic.png)bin565 -> 565 bytes
-rw-r--r--graphics/pokemon/nosepass/icon.png (renamed from graphics/pokemon/icons/nosepass_icon.png)bin282 -> 282 bytes
-rw-r--r--graphics/pokemon/nosepass/normal.pal (renamed from graphics/pokemon/palettes/nosepass_palette.pal)0
-rw-r--r--graphics/pokemon/nosepass/shiny.pal (renamed from graphics/pokemon/palettes/nosepass_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/numel/back.png (renamed from graphics/pokemon/back_pics/numel_back_pic.png)bin573 -> 573 bytes
-rw-r--r--graphics/pokemon/numel/footprint.png (renamed from graphics/pokemon/footprints/numel_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/numel/front.png (renamed from graphics/pokemon/front_pics/numel_still_front_pic.png)bin574 -> 574 bytes
-rw-r--r--graphics/pokemon/numel/icon.png (renamed from graphics/pokemon/icons/numel_icon.png)bin301 -> 301 bytes
-rw-r--r--graphics/pokemon/numel/normal.pal (renamed from graphics/pokemon/palettes/numel_palette.pal)0
-rw-r--r--graphics/pokemon/numel/shiny.pal (renamed from graphics/pokemon/palettes/numel_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/nuzleaf/back.png (renamed from graphics/pokemon/back_pics/nuzleaf_back_pic.png)bin583 -> 583 bytes
-rw-r--r--graphics/pokemon/nuzleaf/footprint.png (renamed from graphics/pokemon/footprints/nuzleaf_footprint.png)bin101 -> 101 bytes
-rw-r--r--graphics/pokemon/nuzleaf/front.png (renamed from graphics/pokemon/front_pics/nuzleaf_still_front_pic.png)bin624 -> 624 bytes
-rw-r--r--graphics/pokemon/nuzleaf/icon.png (renamed from graphics/pokemon/icons/nuzleaf_icon.png)bin342 -> 342 bytes
-rw-r--r--graphics/pokemon/nuzleaf/normal.pal (renamed from graphics/pokemon/palettes/nuzleaf_palette.pal)0
-rw-r--r--graphics/pokemon/nuzleaf/shiny.pal (renamed from graphics/pokemon/palettes/nuzleaf_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/octillery/back.png (renamed from graphics/pokemon/back_pics/octillery_back_pic.png)bin558 -> 558 bytes
-rw-r--r--graphics/pokemon/octillery/footprint.png (renamed from graphics/pokemon/footprints/octillery_footprint.png)bin101 -> 101 bytes
-rw-r--r--graphics/pokemon/octillery/front.png (renamed from graphics/pokemon/front_pics/octillery_still_front_pic.png)bin653 -> 653 bytes
-rw-r--r--graphics/pokemon/octillery/icon.png (renamed from graphics/pokemon/icons/octillery_icon.png)bin349 -> 349 bytes
-rw-r--r--graphics/pokemon/octillery/normal.pal (renamed from graphics/pokemon/palettes/octillery_palette.pal)0
-rw-r--r--graphics/pokemon/octillery/shiny.pal (renamed from graphics/pokemon/palettes/octillery_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/oddish/back.png (renamed from graphics/pokemon/back_pics/oddish_back_pic.png)bin548 -> 548 bytes
-rw-r--r--graphics/pokemon/oddish/footprint.png (renamed from graphics/pokemon/footprints/oddish_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/oddish/front.png (renamed from graphics/pokemon/front_pics/oddish_still_front_pic.png)bin451 -> 451 bytes
-rw-r--r--graphics/pokemon/oddish/icon.png (renamed from graphics/pokemon/icons/oddish_icon.png)bin284 -> 284 bytes
-rw-r--r--graphics/pokemon/oddish/normal.pal (renamed from graphics/pokemon/palettes/oddish_palette.pal)0
-rw-r--r--graphics/pokemon/oddish/shiny.pal (renamed from graphics/pokemon/palettes/oddish_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/omanyte/back.png (renamed from graphics/pokemon/back_pics/omanyte_back_pic.png)bin661 -> 661 bytes
-rw-r--r--graphics/pokemon/omanyte/footprint.png (renamed from graphics/pokemon/footprints/omanyte_footprint.png)bin80 -> 80 bytes
-rw-r--r--graphics/pokemon/omanyte/front.png (renamed from graphics/pokemon/front_pics/omanyte_still_front_pic.png)bin514 -> 514 bytes
-rw-r--r--graphics/pokemon/omanyte/icon.png (renamed from graphics/pokemon/icons/omanyte_icon.png)bin308 -> 308 bytes
-rw-r--r--graphics/pokemon/omanyte/normal.pal (renamed from graphics/pokemon/palettes/omanyte_palette.pal)0
-rw-r--r--graphics/pokemon/omanyte/shiny.pal (renamed from graphics/pokemon/palettes/omanyte_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/omastar/back.png (renamed from graphics/pokemon/back_pics/omastar_back_pic.png)bin634 -> 634 bytes
-rw-r--r--graphics/pokemon/omastar/footprint.png (renamed from graphics/pokemon/footprints/omastar_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/omastar/front.png (renamed from graphics/pokemon/front_pics/omastar_still_front_pic.png)bin783 -> 783 bytes
-rw-r--r--graphics/pokemon/omastar/icon.png (renamed from graphics/pokemon/icons/omastar_icon.png)bin350 -> 350 bytes
-rw-r--r--graphics/pokemon/omastar/normal.pal (renamed from graphics/pokemon/palettes/omastar_palette.pal)0
-rw-r--r--graphics/pokemon/omastar/shiny.pal (renamed from graphics/pokemon/palettes/omastar_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/onix/back.png (renamed from graphics/pokemon/back_pics/onix_back_pic.png)bin696 -> 696 bytes
-rw-r--r--graphics/pokemon/onix/footprint.png (renamed from graphics/pokemon/footprints/onix_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/onix/front.png (renamed from graphics/pokemon/front_pics/onix_still_front_pic.png)bin929 -> 929 bytes
-rw-r--r--graphics/pokemon/onix/icon.png (renamed from graphics/pokemon/icons/onix_icon.png)bin456 -> 456 bytes
-rw-r--r--graphics/pokemon/onix/normal.pal (renamed from graphics/pokemon/palettes/onix_palette.pal)0
-rw-r--r--graphics/pokemon/onix/shiny.pal (renamed from graphics/pokemon/palettes/onix_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/paras/back.png (renamed from graphics/pokemon/back_pics/paras_back_pic.png)bin509 -> 509 bytes
-rw-r--r--graphics/pokemon/paras/footprint.png (renamed from graphics/pokemon/footprints/paras_footprint.png)bin83 -> 83 bytes
-rw-r--r--graphics/pokemon/paras/front.png (renamed from graphics/pokemon/front_pics/paras_still_front_pic.png)bin505 -> 505 bytes
-rw-r--r--graphics/pokemon/paras/icon.png (renamed from graphics/pokemon/icons/paras_icon.png)bin387 -> 387 bytes
-rw-r--r--graphics/pokemon/paras/normal.pal (renamed from graphics/pokemon/palettes/paras_palette.pal)0
-rw-r--r--graphics/pokemon/paras/shiny.pal (renamed from graphics/pokemon/palettes/paras_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/parasect/back.png (renamed from graphics/pokemon/back_pics/parasect_back_pic.png)bin602 -> 602 bytes
-rw-r--r--graphics/pokemon/parasect/footprint.png (renamed from graphics/pokemon/footprints/parasect_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/parasect/front.png (renamed from graphics/pokemon/front_pics/parasect_still_front_pic.png)bin721 -> 721 bytes
-rw-r--r--graphics/pokemon/parasect/icon.png (renamed from graphics/pokemon/icons/parasect_icon.png)bin329 -> 329 bytes
-rw-r--r--graphics/pokemon/parasect/normal.pal (renamed from graphics/pokemon/palettes/parasect_palette.pal)0
-rw-r--r--graphics/pokemon/parasect/shiny.pal (renamed from graphics/pokemon/palettes/parasect_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/pelipper/back.png (renamed from graphics/pokemon/back_pics/pelipper_back_pic.png)bin737 -> 737 bytes
-rw-r--r--graphics/pokemon/pelipper/footprint.png (renamed from graphics/pokemon/footprints/pelipper_footprint.png)bin102 -> 102 bytes
-rw-r--r--graphics/pokemon/pelipper/front.png (renamed from graphics/pokemon/front_pics/pelipper_still_front_pic.png)bin771 -> 771 bytes
-rw-r--r--graphics/pokemon/pelipper/icon.png (renamed from graphics/pokemon/icons/pelipper_icon.png)bin374 -> 374 bytes
-rw-r--r--graphics/pokemon/pelipper/normal.pal (renamed from graphics/pokemon/palettes/pelipper_palette.pal)0
-rw-r--r--graphics/pokemon/pelipper/shiny.pal (renamed from graphics/pokemon/palettes/pelipper_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/persian/back.png (renamed from graphics/pokemon/back_pics/persian_back_pic.png)bin663 -> 663 bytes
-rw-r--r--graphics/pokemon/persian/footprint.png (renamed from graphics/pokemon/footprints/persian_footprint.png)bin98 -> 98 bytes
-rw-r--r--graphics/pokemon/persian/front.png (renamed from graphics/pokemon/front_pics/persian_still_front_pic.png)bin710 -> 710 bytes
-rw-r--r--graphics/pokemon/persian/icon.png (renamed from graphics/pokemon/icons/persian_icon.png)bin328 -> 328 bytes
-rw-r--r--graphics/pokemon/persian/normal.pal (renamed from graphics/pokemon/palettes/persian_palette.pal)0
-rw-r--r--graphics/pokemon/persian/shiny.pal (renamed from graphics/pokemon/palettes/persian_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/phanpy/back.png (renamed from graphics/pokemon/back_pics/phanpy_back_pic.png)bin541 -> 541 bytes
-rw-r--r--graphics/pokemon/phanpy/footprint.png (renamed from graphics/pokemon/footprints/phanpy_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/phanpy/front.png (renamed from graphics/pokemon/front_pics/phanpy_still_front_pic.png)bin462 -> 462 bytes
-rw-r--r--graphics/pokemon/phanpy/icon.png (renamed from graphics/pokemon/icons/phanpy_icon.png)bin371 -> 371 bytes
-rw-r--r--graphics/pokemon/phanpy/normal.pal (renamed from graphics/pokemon/palettes/phanpy_palette.pal)0
-rw-r--r--graphics/pokemon/phanpy/shiny.pal (renamed from graphics/pokemon/palettes/phanpy_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/pichu/back.png (renamed from graphics/pokemon/back_pics/pichu_back_pic.png)bin495 -> 495 bytes
-rw-r--r--graphics/pokemon/pichu/footprint.png (renamed from graphics/pokemon/footprints/pichu_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/pichu/front.png (renamed from graphics/pokemon/front_pics/pichu_still_front_pic.png)bin447 -> 447 bytes
-rw-r--r--graphics/pokemon/pichu/icon.png (renamed from graphics/pokemon/icons/pichu_icon.png)bin281 -> 281 bytes
-rw-r--r--graphics/pokemon/pichu/normal.pal (renamed from graphics/pokemon/palettes/pichu_palette.pal)0
-rw-r--r--graphics/pokemon/pichu/shiny.pal (renamed from graphics/pokemon/palettes/pichu_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/pidgeot/back.png (renamed from graphics/pokemon/back_pics/pidgeot_back_pic.png)bin800 -> 800 bytes
-rw-r--r--graphics/pokemon/pidgeot/footprint.png (renamed from graphics/pokemon/footprints/pidgeot_footprint.png)bin100 -> 100 bytes
-rw-r--r--graphics/pokemon/pidgeot/front.png (renamed from graphics/pokemon/front_pics/pidgeot_still_front_pic.png)bin1085 -> 1085 bytes
-rw-r--r--graphics/pokemon/pidgeot/icon.png (renamed from graphics/pokemon/icons/pidgeot_icon.png)bin456 -> 456 bytes
-rw-r--r--graphics/pokemon/pidgeot/normal.pal (renamed from graphics/pokemon/palettes/pidgeot_palette.pal)0
-rw-r--r--graphics/pokemon/pidgeot/shiny.pal (renamed from graphics/pokemon/palettes/pidgeot_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/pidgeotto/back.png (renamed from graphics/pokemon/back_pics/pidgeotto_back_pic.png)bin673 -> 673 bytes
-rw-r--r--graphics/pokemon/pidgeotto/footprint.png (renamed from graphics/pokemon/footprints/pidgeotto_footprint.png)bin93 -> 93 bytes
-rw-r--r--graphics/pokemon/pidgeotto/front.png (renamed from graphics/pokemon/front_pics/pidgeotto_still_front_pic.png)bin783 -> 783 bytes
-rw-r--r--graphics/pokemon/pidgeotto/icon.png (renamed from graphics/pokemon/icons/pidgeotto_icon.png)bin387 -> 387 bytes
-rw-r--r--graphics/pokemon/pidgeotto/normal.pal (renamed from graphics/pokemon/palettes/pidgeotto_palette.pal)0
-rw-r--r--graphics/pokemon/pidgeotto/shiny.pal (renamed from graphics/pokemon/palettes/pidgeotto_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/pidgey/back.png (renamed from graphics/pokemon/back_pics/pidgey_back_pic.png)bin702 -> 702 bytes
-rw-r--r--graphics/pokemon/pidgey/footprint.png (renamed from graphics/pokemon/footprints/pidgey_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/pidgey/front.png (renamed from graphics/pokemon/front_pics/pidgey_still_front_pic.png)bin515 -> 515 bytes
-rw-r--r--graphics/pokemon/pidgey/icon.png (renamed from graphics/pokemon/icons/pidgey_icon.png)bin364 -> 364 bytes
-rw-r--r--graphics/pokemon/pidgey/normal.pal (renamed from graphics/pokemon/palettes/pidgey_palette.pal)0
-rw-r--r--graphics/pokemon/pidgey/shiny.pal (renamed from graphics/pokemon/palettes/pidgey_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/pikachu/back.png (renamed from graphics/pokemon/back_pics/pikachu_back_pic.png)bin587 -> 587 bytes
-rw-r--r--graphics/pokemon/pikachu/footprint.png (renamed from graphics/pokemon/footprints/pikachu_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/pikachu/front.png (renamed from graphics/pokemon/front_pics/pikachu_still_front_pic.png)bin600 -> 600 bytes
-rw-r--r--graphics/pokemon/pikachu/icon.png (renamed from graphics/pokemon/icons/pikachu_icon.png)bin353 -> 353 bytes
-rw-r--r--graphics/pokemon/pikachu/normal.pal (renamed from graphics/pokemon/palettes/pikachu_palette.pal)0
-rw-r--r--graphics/pokemon/pikachu/shiny.pal (renamed from graphics/pokemon/palettes/pikachu_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/piloswine/back.png (renamed from graphics/pokemon/back_pics/piloswine_back_pic.png)bin436 -> 436 bytes
-rw-r--r--graphics/pokemon/piloswine/footprint.png (renamed from graphics/pokemon/footprints/piloswine_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/piloswine/front.png (renamed from graphics/pokemon/front_pics/piloswine_still_front_pic.png)bin643 -> 643 bytes
-rw-r--r--graphics/pokemon/piloswine/icon.png (renamed from graphics/pokemon/icons/piloswine_icon.png)bin341 -> 341 bytes
-rw-r--r--graphics/pokemon/piloswine/normal.pal (renamed from graphics/pokemon/palettes/piloswine_palette.pal)0
-rw-r--r--graphics/pokemon/piloswine/shiny.pal (renamed from graphics/pokemon/palettes/piloswine_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/pineco/back.png (renamed from graphics/pokemon/back_pics/pineco_back_pic.png)bin520 -> 520 bytes
-rw-r--r--graphics/pokemon/pineco/footprint.png (renamed from graphics/pokemon/footprints/pineco_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/pineco/front.png (renamed from graphics/pokemon/front_pics/pineco_still_front_pic.png)bin646 -> 646 bytes
-rw-r--r--graphics/pokemon/pineco/icon.png (renamed from graphics/pokemon/icons/pineco_icon.png)bin290 -> 290 bytes
-rw-r--r--graphics/pokemon/pineco/normal.pal (renamed from graphics/pokemon/palettes/pineco_palette.pal)0
-rw-r--r--graphics/pokemon/pineco/shiny.pal (renamed from graphics/pokemon/palettes/pineco_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/pinsir/back.png (renamed from graphics/pokemon/back_pics/pinsir_back_pic.png)bin657 -> 657 bytes
-rw-r--r--graphics/pokemon/pinsir/footprint.png (renamed from graphics/pokemon/footprints/pinsir_footprint.png)bin93 -> 93 bytes
-rw-r--r--graphics/pokemon/pinsir/front.png (renamed from graphics/pokemon/front_pics/pinsir_still_front_pic.png)bin867 -> 867 bytes
-rw-r--r--graphics/pokemon/pinsir/icon.png (renamed from graphics/pokemon/icons/pinsir_icon.png)bin334 -> 334 bytes
-rw-r--r--graphics/pokemon/pinsir/normal.pal (renamed from graphics/pokemon/palettes/pinsir_palette.pal)0
-rw-r--r--graphics/pokemon/pinsir/shiny.pal (renamed from graphics/pokemon/palettes/pinsir_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/plusle/back.png (renamed from graphics/pokemon/back_pics/plusle_back_pic.png)bin568 -> 568 bytes
-rw-r--r--graphics/pokemon/plusle/footprint.png (renamed from graphics/pokemon/footprints/plusle_footprint.png)bin86 -> 86 bytes
-rw-r--r--graphics/pokemon/plusle/front.png (renamed from graphics/pokemon/front_pics/plusle_still_front_pic.png)bin524 -> 524 bytes
-rw-r--r--graphics/pokemon/plusle/icon.png (renamed from graphics/pokemon/icons/plusle_icon.png)bin303 -> 303 bytes
-rw-r--r--graphics/pokemon/plusle/normal.pal (renamed from graphics/pokemon/palettes/plusle_palette.pal)0
-rw-r--r--graphics/pokemon/plusle/shiny.pal (renamed from graphics/pokemon/palettes/plusle_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/politoed/back.png (renamed from graphics/pokemon/back_pics/politoed_back_pic.png)bin565 -> 565 bytes
-rw-r--r--graphics/pokemon/politoed/footprint.png (renamed from graphics/pokemon/footprints/politoed_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/politoed/front.png (renamed from graphics/pokemon/front_pics/politoed_still_front_pic.png)bin706 -> 706 bytes
-rw-r--r--graphics/pokemon/politoed/icon.png (renamed from graphics/pokemon/icons/politoed_icon.png)bin428 -> 428 bytes
-rw-r--r--graphics/pokemon/politoed/normal.pal (renamed from graphics/pokemon/palettes/politoed_palette.pal)0
-rw-r--r--graphics/pokemon/politoed/shiny.pal (renamed from graphics/pokemon/palettes/politoed_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/poliwag/back.png (renamed from graphics/pokemon/back_pics/poliwag_back_pic.png)bin465 -> 465 bytes
-rw-r--r--graphics/pokemon/poliwag/footprint.png (renamed from graphics/pokemon/footprints/poliwag_footprint.png)bin86 -> 86 bytes
-rw-r--r--graphics/pokemon/poliwag/front.png (renamed from graphics/pokemon/front_pics/poliwag_still_front_pic.png)bin526 -> 526 bytes
-rw-r--r--graphics/pokemon/poliwag/icon.png (renamed from graphics/pokemon/icons/poliwag_icon.png)bin339 -> 339 bytes
-rw-r--r--graphics/pokemon/poliwag/normal.pal (renamed from graphics/pokemon/palettes/poliwag_palette.pal)0
-rw-r--r--graphics/pokemon/poliwag/shiny.pal (renamed from graphics/pokemon/palettes/poliwag_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/poliwhirl/back.png (renamed from graphics/pokemon/back_pics/poliwhirl_back_pic.png)bin487 -> 487 bytes
-rw-r--r--graphics/pokemon/poliwhirl/footprint.png (renamed from graphics/pokemon/footprints/poliwhirl_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/poliwhirl/front.png (renamed from graphics/pokemon/front_pics/poliwhirl_still_front_pic.png)bin725 -> 725 bytes
-rw-r--r--graphics/pokemon/poliwhirl/icon.png (renamed from graphics/pokemon/icons/poliwhirl_icon.png)bin348 -> 348 bytes
-rw-r--r--graphics/pokemon/poliwhirl/normal.pal (renamed from graphics/pokemon/palettes/poliwhirl_palette.pal)0
-rw-r--r--graphics/pokemon/poliwhirl/shiny.pal (renamed from graphics/pokemon/palettes/poliwhirl_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/poliwrath/back.png (renamed from graphics/pokemon/back_pics/poliwrath_back_pic.png)bin615 -> 615 bytes
-rw-r--r--graphics/pokemon/poliwrath/footprint.png (renamed from graphics/pokemon/footprints/poliwrath_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/poliwrath/front.png (renamed from graphics/pokemon/front_pics/poliwrath_still_front_pic.png)bin777 -> 777 bytes
-rw-r--r--graphics/pokemon/poliwrath/icon.png (renamed from graphics/pokemon/icons/poliwrath_icon.png)bin389 -> 389 bytes
-rw-r--r--graphics/pokemon/poliwrath/normal.pal (renamed from graphics/pokemon/palettes/poliwrath_palette.pal)0
-rw-r--r--graphics/pokemon/poliwrath/shiny.pal (renamed from graphics/pokemon/palettes/poliwrath_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/ponyta/back.png (renamed from graphics/pokemon/back_pics/ponyta_back_pic.png)bin680 -> 680 bytes
-rw-r--r--graphics/pokemon/ponyta/footprint.png (renamed from graphics/pokemon/footprints/ponyta_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/ponyta/front.png (renamed from graphics/pokemon/front_pics/ponyta_still_front_pic.png)bin752 -> 752 bytes
-rw-r--r--graphics/pokemon/ponyta/icon.png (renamed from graphics/pokemon/icons/ponyta_icon.png)bin457 -> 457 bytes
-rw-r--r--graphics/pokemon/ponyta/normal.pal (renamed from graphics/pokemon/palettes/ponyta_palette.pal)0
-rw-r--r--graphics/pokemon/ponyta/shiny.pal (renamed from graphics/pokemon/palettes/ponyta_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/poochyena/back.png (renamed from graphics/pokemon/back_pics/poochyena_back_pic.png)bin676 -> 676 bytes
-rw-r--r--graphics/pokemon/poochyena/footprint.png (renamed from graphics/pokemon/footprints/poochyena_footprint.png)bin107 -> 107 bytes
-rw-r--r--graphics/pokemon/poochyena/front.png (renamed from graphics/pokemon/front_pics/poochyena_still_front_pic.png)bin570 -> 570 bytes
-rw-r--r--graphics/pokemon/poochyena/icon.png (renamed from graphics/pokemon/icons/poochyena_icon.png)bin360 -> 360 bytes
-rw-r--r--graphics/pokemon/poochyena/normal.pal (renamed from graphics/pokemon/palettes/poochyena_palette.pal)0
-rw-r--r--graphics/pokemon/poochyena/shiny.pal (renamed from graphics/pokemon/palettes/poochyena_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/porygon/back.png (renamed from graphics/pokemon/back_pics/porygon_back_pic.png)bin537 -> 537 bytes
-rw-r--r--graphics/pokemon/porygon/footprint.png (renamed from graphics/pokemon/footprints/porygon_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/porygon/front.png (renamed from graphics/pokemon/front_pics/porygon_still_front_pic.png)bin559 -> 559 bytes
-rw-r--r--graphics/pokemon/porygon/icon.png (renamed from graphics/pokemon/icons/porygon_icon.png)bin386 -> 386 bytes
-rw-r--r--graphics/pokemon/porygon/normal.pal (renamed from graphics/pokemon/palettes/porygon_palette.pal)0
-rw-r--r--graphics/pokemon/porygon/shiny.pal (renamed from graphics/pokemon/palettes/porygon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/porygon2/back.png (renamed from graphics/pokemon/back_pics/porygon2_back_pic.png)bin656 -> 656 bytes
-rw-r--r--graphics/pokemon/porygon2/footprint.png (renamed from graphics/pokemon/footprints/porygon2_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/porygon2/front.png (renamed from graphics/pokemon/front_pics/porygon2_still_front_pic.png)bin541 -> 541 bytes
-rw-r--r--graphics/pokemon/porygon2/icon.png (renamed from graphics/pokemon/icons/porygon2_icon.png)bin341 -> 341 bytes
-rw-r--r--graphics/pokemon/porygon2/normal.pal (renamed from graphics/pokemon/palettes/porygon2_palette.pal)0
-rw-r--r--graphics/pokemon/porygon2/shiny.pal (renamed from graphics/pokemon/palettes/porygon2_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/primeape/back.png (renamed from graphics/pokemon/back_pics/primeape_back_pic.png)bin714 -> 714 bytes
-rw-r--r--graphics/pokemon/primeape/footprint.png (renamed from graphics/pokemon/footprints/primeape_footprint.png)bin99 -> 99 bytes
-rw-r--r--graphics/pokemon/primeape/front.png (renamed from graphics/pokemon/front_pics/primeape_still_front_pic.png)bin777 -> 777 bytes
-rw-r--r--graphics/pokemon/primeape/icon.png (renamed from graphics/pokemon/icons/primeape_icon.png)bin370 -> 370 bytes
-rw-r--r--graphics/pokemon/primeape/normal.pal (renamed from graphics/pokemon/palettes/primeape_palette.pal)0
-rw-r--r--graphics/pokemon/primeape/shiny.pal (renamed from graphics/pokemon/palettes/primeape_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/psyduck/back.png (renamed from graphics/pokemon/back_pics/psyduck_back_pic.png)bin534 -> 534 bytes
-rw-r--r--graphics/pokemon/psyduck/footprint.png (renamed from graphics/pokemon/footprints/psyduck_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/psyduck/front.png (renamed from graphics/pokemon/front_pics/psyduck_still_front_pic.png)bin589 -> 589 bytes
-rw-r--r--graphics/pokemon/psyduck/icon.png (renamed from graphics/pokemon/icons/psyduck_icon.png)bin329 -> 329 bytes
-rw-r--r--graphics/pokemon/psyduck/normal.pal (renamed from graphics/pokemon/palettes/psyduck_palette.pal)0
-rw-r--r--graphics/pokemon/psyduck/shiny.pal (renamed from graphics/pokemon/palettes/psyduck_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/pupitar/back.png (renamed from graphics/pokemon/back_pics/pupitar_back_pic.png)bin642 -> 642 bytes
-rw-r--r--graphics/pokemon/pupitar/footprint.png (renamed from graphics/pokemon/footprints/pupitar_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/pupitar/front.png (renamed from graphics/pokemon/front_pics/pupitar_still_front_pic.png)bin594 -> 594 bytes
-rw-r--r--graphics/pokemon/pupitar/icon.png (renamed from graphics/pokemon/icons/pupitar_icon.png)bin291 -> 291 bytes
-rw-r--r--graphics/pokemon/pupitar/normal.pal (renamed from graphics/pokemon/palettes/pupitar_palette.pal)0
-rw-r--r--graphics/pokemon/pupitar/shiny.pal (renamed from graphics/pokemon/palettes/pupitar_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/quagsire/back.png (renamed from graphics/pokemon/back_pics/quagsire_back_pic.png)bin602 -> 602 bytes
-rw-r--r--graphics/pokemon/quagsire/footprint.png (renamed from graphics/pokemon/footprints/quagsire_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/quagsire/front.png (renamed from graphics/pokemon/front_pics/quagsire_still_front_pic.png)bin706 -> 706 bytes
-rw-r--r--graphics/pokemon/quagsire/icon.png (renamed from graphics/pokemon/icons/quagsire_icon.png)bin362 -> 362 bytes
-rw-r--r--graphics/pokemon/quagsire/normal.pal (renamed from graphics/pokemon/palettes/quagsire_palette.pal)0
-rw-r--r--graphics/pokemon/quagsire/shiny.pal (renamed from graphics/pokemon/palettes/quagsire_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/question_mark/circled/back.png (renamed from graphics/pokemon/back_pics/circled_question_mark_back_pic.png)bin397 -> 397 bytes
-rw-r--r--graphics/pokemon/question_mark/circled/front.png (renamed from graphics/pokemon/front_pics/circled_question_mark_still_front_pic.png)bin397 -> 397 bytes
-rw-r--r--graphics/pokemon/question_mark/circled/normal.pal (renamed from graphics/pokemon/palettes/circled_question_mark_palette.pal)0
-rw-r--r--graphics/pokemon/question_mark/circled/shiny.pal (renamed from graphics/pokemon/palettes/circled_question_mark_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/question_mark/double/back.png (renamed from graphics/pokemon/back_pics/double_question_mark_back_pic.png)bin307 -> 307 bytes
-rw-r--r--graphics/pokemon/question_mark/double/front.png (renamed from graphics/pokemon/front_pics/double_question_mark_still_front_pic.png)bin308 -> 308 bytes
-rw-r--r--graphics/pokemon/question_mark/double/normal.pal (renamed from graphics/pokemon/palettes/double_question_mark_palette.pal)0
-rw-r--r--graphics/pokemon/question_mark/double/shiny.pal (renamed from graphics/pokemon/palettes/double_question_mark_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/question_mark/footprint.png (renamed from graphics/pokemon/footprints/question_mark_footprint.png)bin110 -> 110 bytes
-rw-r--r--graphics/pokemon/question_mark/icon.png (renamed from graphics/pokemon/icons/question_mark_icon.png)bin271 -> 271 bytes
-rw-r--r--graphics/pokemon/quilava/back.png (renamed from graphics/pokemon/back_pics/quilava_back_pic.png)bin746 -> 746 bytes
-rw-r--r--graphics/pokemon/quilava/footprint.png (renamed from graphics/pokemon/footprints/quilava_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/quilava/front.png (renamed from graphics/pokemon/front_pics/quilava_still_front_pic.png)bin671 -> 671 bytes
-rw-r--r--graphics/pokemon/quilava/icon.png (renamed from graphics/pokemon/icons/quilava_icon.png)bin402 -> 402 bytes
-rw-r--r--graphics/pokemon/quilava/normal.pal (renamed from graphics/pokemon/palettes/quilava_palette.pal)0
-rw-r--r--graphics/pokemon/quilava/shiny.pal (renamed from graphics/pokemon/palettes/quilava_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/qwilfish/back.png (renamed from graphics/pokemon/back_pics/qwilfish_back_pic.png)bin572 -> 572 bytes
-rw-r--r--graphics/pokemon/qwilfish/footprint.png (renamed from graphics/pokemon/footprints/qwilfish_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/qwilfish/front.png (renamed from graphics/pokemon/front_pics/qwilfish_still_front_pic.png)bin566 -> 566 bytes
-rw-r--r--graphics/pokemon/qwilfish/icon.png (renamed from graphics/pokemon/icons/qwilfish_icon.png)bin337 -> 337 bytes
-rw-r--r--graphics/pokemon/qwilfish/normal.pal (renamed from graphics/pokemon/palettes/qwilfish_palette.pal)0
-rw-r--r--graphics/pokemon/qwilfish/shiny.pal (renamed from graphics/pokemon/palettes/qwilfish_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/raichu/back.png (renamed from graphics/pokemon/back_pics/raichu_back_pic.png)bin625 -> 625 bytes
-rw-r--r--graphics/pokemon/raichu/footprint.png (renamed from graphics/pokemon/footprints/raichu_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/raichu/front.png (renamed from graphics/pokemon/front_pics/raichu_still_front_pic.png)bin877 -> 877 bytes
-rw-r--r--graphics/pokemon/raichu/icon.png (renamed from graphics/pokemon/icons/raichu_icon.png)bin411 -> 411 bytes
-rw-r--r--graphics/pokemon/raichu/normal.pal (renamed from graphics/pokemon/palettes/raichu_palette.pal)0
-rw-r--r--graphics/pokemon/raichu/shiny.pal (renamed from graphics/pokemon/palettes/raichu_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/raikou/back.png (renamed from graphics/pokemon/back_pics/raikou_back_pic.png)bin745 -> 745 bytes
-rw-r--r--graphics/pokemon/raikou/footprint.png (renamed from graphics/pokemon/footprints/raikou_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/raikou/front.png (renamed from graphics/pokemon/front_pics/raikou_still_front_pic.png)bin1155 -> 1155 bytes
-rw-r--r--graphics/pokemon/raikou/icon.png (renamed from graphics/pokemon/icons/raikou_icon.png)bin486 -> 486 bytes
-rw-r--r--graphics/pokemon/raikou/normal.pal (renamed from graphics/pokemon/palettes/raikou_palette.pal)0
-rw-r--r--graphics/pokemon/raikou/shiny.pal (renamed from graphics/pokemon/palettes/raikou_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/ralts/back.png (renamed from graphics/pokemon/back_pics/ralts_back_pic.png)bin451 -> 451 bytes
-rw-r--r--graphics/pokemon/ralts/footprint.png (renamed from graphics/pokemon/footprints/ralts_footprint.png)bin76 -> 76 bytes
-rw-r--r--graphics/pokemon/ralts/front.png (renamed from graphics/pokemon/front_pics/ralts_still_front_pic.png)bin433 -> 433 bytes
-rw-r--r--graphics/pokemon/ralts/icon.png (renamed from graphics/pokemon/icons/ralts_icon.png)bin262 -> 262 bytes
-rw-r--r--graphics/pokemon/ralts/normal.pal (renamed from graphics/pokemon/palettes/ralts_palette.pal)0
-rw-r--r--graphics/pokemon/ralts/shiny.pal (renamed from graphics/pokemon/palettes/ralts_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/rapidash/back.png (renamed from graphics/pokemon/back_pics/rapidash_back_pic.png)bin840 -> 840 bytes
-rw-r--r--graphics/pokemon/rapidash/footprint.png (renamed from graphics/pokemon/footprints/rapidash_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/rapidash/front.png (renamed from graphics/pokemon/front_pics/rapidash_still_front_pic.png)bin986 -> 986 bytes
-rw-r--r--graphics/pokemon/rapidash/icon.png (renamed from graphics/pokemon/icons/rapidash_icon.png)bin478 -> 478 bytes
-rw-r--r--graphics/pokemon/rapidash/normal.pal (renamed from graphics/pokemon/palettes/rapidash_palette.pal)0
-rw-r--r--graphics/pokemon/rapidash/shiny.pal (renamed from graphics/pokemon/palettes/rapidash_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/raticate/back.png (renamed from graphics/pokemon/back_pics/raticate_back_pic.png)bin643 -> 643 bytes
-rw-r--r--graphics/pokemon/raticate/footprint.png (renamed from graphics/pokemon/footprints/raticate_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/raticate/front.png (renamed from graphics/pokemon/front_pics/raticate_still_front_pic.png)bin754 -> 754 bytes
-rw-r--r--graphics/pokemon/raticate/icon.png (renamed from graphics/pokemon/icons/raticate_icon.png)bin374 -> 374 bytes
-rw-r--r--graphics/pokemon/raticate/normal.pal (renamed from graphics/pokemon/palettes/raticate_palette.pal)0
-rw-r--r--graphics/pokemon/raticate/shiny.pal (renamed from graphics/pokemon/palettes/raticate_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/rattata/back.png (renamed from graphics/pokemon/back_pics/rattata_back_pic.png)bin566 -> 566 bytes
-rw-r--r--graphics/pokemon/rattata/footprint.png (renamed from graphics/pokemon/footprints/rattata_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/rattata/front.png (renamed from graphics/pokemon/front_pics/rattata_still_front_pic.png)bin488 -> 488 bytes
-rw-r--r--graphics/pokemon/rattata/icon.png (renamed from graphics/pokemon/icons/rattata_icon.png)bin318 -> 318 bytes
-rw-r--r--graphics/pokemon/rattata/normal.pal (renamed from graphics/pokemon/palettes/rattata_palette.pal)0
-rw-r--r--graphics/pokemon/rattata/shiny.pal (renamed from graphics/pokemon/palettes/rattata_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/rayquaza/back.png (renamed from graphics/pokemon/back_pics/rayquaza_back_pic.png)bin666 -> 666 bytes
-rw-r--r--graphics/pokemon/rayquaza/footprint.png (renamed from graphics/pokemon/footprints/rayquaza_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/rayquaza/front.png (renamed from graphics/pokemon/front_pics/rayquaza_still_front_pic.png)bin1059 -> 1059 bytes
-rw-r--r--graphics/pokemon/rayquaza/icon.png (renamed from graphics/pokemon/icons/rayquaza_icon.png)bin507 -> 507 bytes
-rw-r--r--graphics/pokemon/rayquaza/normal.pal (renamed from graphics/pokemon/palettes/rayquaza_palette.pal)0
-rw-r--r--graphics/pokemon/rayquaza/shiny.pal (renamed from graphics/pokemon/palettes/rayquaza_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/regice/back.png (renamed from graphics/pokemon/back_pics/regice_back_pic.png)bin551 -> 551 bytes
-rw-r--r--graphics/pokemon/regice/footprint.png (renamed from graphics/pokemon/footprints/regice_footprint.png)bin76 -> 76 bytes
-rw-r--r--graphics/pokemon/regice/front.png (renamed from graphics/pokemon/front_pics/regice_still_front_pic.png)bin883 -> 883 bytes
-rw-r--r--graphics/pokemon/regice/icon.png (renamed from graphics/pokemon/icons/regice_icon.png)bin334 -> 334 bytes
-rw-r--r--graphics/pokemon/regice/normal.pal (renamed from graphics/pokemon/palettes/regice_palette.pal)0
-rw-r--r--graphics/pokemon/regice/shiny.pal (renamed from graphics/pokemon/palettes/regice_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/regirock/back.png (renamed from graphics/pokemon/back_pics/regirock_back_pic.png)bin859 -> 859 bytes
-rw-r--r--graphics/pokemon/regirock/footprint.png (renamed from graphics/pokemon/footprints/regirock_footprint.png)bin100 -> 100 bytes
-rw-r--r--graphics/pokemon/regirock/front.png (renamed from graphics/pokemon/front_pics/regirock_still_front_pic.png)bin965 -> 965 bytes
-rw-r--r--graphics/pokemon/regirock/icon.png (renamed from graphics/pokemon/icons/regirock_icon.png)bin379 -> 379 bytes
-rw-r--r--graphics/pokemon/regirock/normal.pal (renamed from graphics/pokemon/palettes/regirock_palette.pal)0
-rw-r--r--graphics/pokemon/regirock/shiny.pal (renamed from graphics/pokemon/palettes/regirock_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/registeel/back.png (renamed from graphics/pokemon/back_pics/registeel_back_pic.png)bin615 -> 615 bytes
-rw-r--r--graphics/pokemon/registeel/footprint.png (renamed from graphics/pokemon/footprints/registeel_footprint.png)bin105 -> 105 bytes
-rw-r--r--graphics/pokemon/registeel/front.png (renamed from graphics/pokemon/front_pics/registeel_still_front_pic.png)bin948 -> 948 bytes
-rw-r--r--graphics/pokemon/registeel/icon.png (renamed from graphics/pokemon/icons/registeel_icon.png)bin351 -> 351 bytes
-rw-r--r--graphics/pokemon/registeel/normal.pal (renamed from graphics/pokemon/palettes/registeel_palette.pal)0
-rw-r--r--graphics/pokemon/registeel/shiny.pal (renamed from graphics/pokemon/palettes/registeel_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/relicanth/back.png (renamed from graphics/pokemon/back_pics/relicanth_back_pic.png)bin704 -> 704 bytes
-rw-r--r--graphics/pokemon/relicanth/footprint.png (renamed from graphics/pokemon/footprints/relicanth_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/relicanth/front.png (renamed from graphics/pokemon/front_pics/relicanth_still_front_pic.png)bin759 -> 759 bytes
-rw-r--r--graphics/pokemon/relicanth/icon.png (renamed from graphics/pokemon/icons/relicanth_icon.png)bin413 -> 413 bytes
-rw-r--r--graphics/pokemon/relicanth/normal.pal (renamed from graphics/pokemon/palettes/relicanth_palette.pal)0
-rw-r--r--graphics/pokemon/relicanth/shiny.pal (renamed from graphics/pokemon/palettes/relicanth_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/remoraid/back.png (renamed from graphics/pokemon/back_pics/remoraid_back_pic.png)bin596 -> 596 bytes
-rw-r--r--graphics/pokemon/remoraid/footprint.png (renamed from graphics/pokemon/footprints/remoraid_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/remoraid/front.png (renamed from graphics/pokemon/front_pics/remoraid_still_front_pic.png)bin483 -> 483 bytes
-rw-r--r--graphics/pokemon/remoraid/icon.png (renamed from graphics/pokemon/icons/remoraid_icon.png)bin330 -> 330 bytes
-rw-r--r--graphics/pokemon/remoraid/normal.pal (renamed from graphics/pokemon/palettes/remoraid_palette.pal)0
-rw-r--r--graphics/pokemon/remoraid/shiny.pal (renamed from graphics/pokemon/palettes/remoraid_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/rhydon/back.png (renamed from graphics/pokemon/back_pics/rhydon_back_pic.png)bin880 -> 880 bytes
-rw-r--r--graphics/pokemon/rhydon/footprint.png (renamed from graphics/pokemon/footprints/rhydon_footprint.png)bin97 -> 97 bytes
-rw-r--r--graphics/pokemon/rhydon/front.png (renamed from graphics/pokemon/front_pics/rhydon_still_front_pic.png)bin1039 -> 1039 bytes
-rw-r--r--graphics/pokemon/rhydon/icon.png (renamed from graphics/pokemon/icons/rhydon_icon.png)bin381 -> 381 bytes
-rw-r--r--graphics/pokemon/rhydon/normal.pal (renamed from graphics/pokemon/palettes/rhydon_palette.pal)0
-rw-r--r--graphics/pokemon/rhydon/shiny.pal (renamed from graphics/pokemon/palettes/rhydon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/rhyhorn/back.png (renamed from graphics/pokemon/back_pics/rhyhorn_back_pic.png)bin633 -> 633 bytes
-rw-r--r--graphics/pokemon/rhyhorn/footprint.png (renamed from graphics/pokemon/footprints/rhyhorn_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/rhyhorn/front.png (renamed from graphics/pokemon/front_pics/rhyhorn_still_front_pic.png)bin789 -> 789 bytes
-rw-r--r--graphics/pokemon/rhyhorn/icon.png (renamed from graphics/pokemon/icons/rhyhorn_icon.png)bin356 -> 356 bytes
-rw-r--r--graphics/pokemon/rhyhorn/normal.pal (renamed from graphics/pokemon/palettes/rhyhorn_palette.pal)0
-rw-r--r--graphics/pokemon/rhyhorn/shiny.pal (renamed from graphics/pokemon/palettes/rhyhorn_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/roselia/back.png (renamed from graphics/pokemon/back_pics/roselia_back_pic.png)bin774 -> 774 bytes
-rw-r--r--graphics/pokemon/roselia/footprint.png (renamed from graphics/pokemon/footprints/roselia_footprint.png)bin82 -> 82 bytes
-rw-r--r--graphics/pokemon/roselia/front.png (renamed from graphics/pokemon/front_pics/roselia_still_front_pic.png)bin745 -> 745 bytes
-rw-r--r--graphics/pokemon/roselia/icon.png (renamed from graphics/pokemon/icons/roselia_icon.png)bin414 -> 414 bytes
-rw-r--r--graphics/pokemon/roselia/normal.pal (renamed from graphics/pokemon/palettes/roselia_palette.pal)0
-rw-r--r--graphics/pokemon/roselia/shiny.pal (renamed from graphics/pokemon/palettes/roselia_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/sableye/back.png (renamed from graphics/pokemon/back_pics/sableye_back_pic.png)bin654 -> 654 bytes
-rw-r--r--graphics/pokemon/sableye/footprint.png (renamed from graphics/pokemon/footprints/sableye_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/sableye/front.png (renamed from graphics/pokemon/front_pics/sableye_still_front_pic.png)bin619 -> 619 bytes
-rw-r--r--graphics/pokemon/sableye/icon.png (renamed from graphics/pokemon/icons/sableye_icon.png)bin319 -> 319 bytes
-rw-r--r--graphics/pokemon/sableye/normal.pal (renamed from graphics/pokemon/palettes/sableye_palette.pal)0
-rw-r--r--graphics/pokemon/sableye/shiny.pal (renamed from graphics/pokemon/palettes/sableye_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/salamence/back.png (renamed from graphics/pokemon/back_pics/salamence_back_pic.png)bin578 -> 578 bytes
-rw-r--r--graphics/pokemon/salamence/footprint.png (renamed from graphics/pokemon/footprints/salamence_footprint.png)bin102 -> 102 bytes
-rw-r--r--graphics/pokemon/salamence/front.png (renamed from graphics/pokemon/front_pics/salamence_still_front_pic.png)bin918 -> 918 bytes
-rw-r--r--graphics/pokemon/salamence/icon.png (renamed from graphics/pokemon/icons/salamence_icon.png)bin477 -> 477 bytes
-rw-r--r--graphics/pokemon/salamence/normal.pal (renamed from graphics/pokemon/palettes/salamence_palette.pal)0
-rw-r--r--graphics/pokemon/salamence/shiny.pal (renamed from graphics/pokemon/palettes/salamence_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/sandshrew/back.png (renamed from graphics/pokemon/back_pics/sandshrew_back_pic.png)bin606 -> 606 bytes
-rw-r--r--graphics/pokemon/sandshrew/footprint.png (renamed from graphics/pokemon/footprints/sandshrew_footprint.png)bin91 -> 91 bytes
-rw-r--r--graphics/pokemon/sandshrew/front.png (renamed from graphics/pokemon/front_pics/sandshrew_still_front_pic.png)bin600 -> 600 bytes
-rw-r--r--graphics/pokemon/sandshrew/icon.png (renamed from graphics/pokemon/icons/sandshrew_icon.png)bin338 -> 338 bytes
-rw-r--r--graphics/pokemon/sandshrew/normal.pal (renamed from graphics/pokemon/palettes/sandshrew_palette.pal)0
-rw-r--r--graphics/pokemon/sandshrew/shiny.pal (renamed from graphics/pokemon/palettes/sandshrew_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/sandslash/back.png (renamed from graphics/pokemon/back_pics/sandslash_back_pic.png)bin837 -> 837 bytes
-rw-r--r--graphics/pokemon/sandslash/footprint.png (renamed from graphics/pokemon/footprints/sandslash_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/sandslash/front.png (renamed from graphics/pokemon/front_pics/sandslash_still_front_pic.png)bin884 -> 884 bytes
-rw-r--r--graphics/pokemon/sandslash/icon.png (renamed from graphics/pokemon/icons/sandslash_icon.png)bin402 -> 402 bytes
-rw-r--r--graphics/pokemon/sandslash/normal.pal (renamed from graphics/pokemon/palettes/sandslash_palette.pal)0
-rw-r--r--graphics/pokemon/sandslash/shiny.pal (renamed from graphics/pokemon/palettes/sandslash_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/sceptile/back.png (renamed from graphics/pokemon/back_pics/sceptile_back_pic.png)bin838 -> 838 bytes
-rw-r--r--graphics/pokemon/sceptile/footprint.png (renamed from graphics/pokemon/footprints/sceptile_footprint.png)bin99 -> 99 bytes
-rw-r--r--graphics/pokemon/sceptile/front.png (renamed from graphics/pokemon/front_pics/sceptile_still_front_pic.png)bin1047 -> 1047 bytes
-rw-r--r--graphics/pokemon/sceptile/icon.png (renamed from graphics/pokemon/icons/sceptile_icon.png)bin383 -> 383 bytes
-rw-r--r--graphics/pokemon/sceptile/normal.pal (renamed from graphics/pokemon/palettes/sceptile_palette.pal)0
-rw-r--r--graphics/pokemon/sceptile/shiny.pal (renamed from graphics/pokemon/palettes/sceptile_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/scizor/back.png (renamed from graphics/pokemon/back_pics/scizor_back_pic.png)bin739 -> 739 bytes
-rw-r--r--graphics/pokemon/scizor/footprint.png (renamed from graphics/pokemon/footprints/scizor_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/scizor/front.png (renamed from graphics/pokemon/front_pics/scizor_still_front_pic.png)bin998 -> 998 bytes
-rw-r--r--graphics/pokemon/scizor/icon.png (renamed from graphics/pokemon/icons/scizor_icon.png)bin447 -> 447 bytes
-rw-r--r--graphics/pokemon/scizor/normal.pal (renamed from graphics/pokemon/palettes/scizor_palette.pal)0
-rw-r--r--graphics/pokemon/scizor/shiny.pal (renamed from graphics/pokemon/palettes/scizor_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/scyther/back.png (renamed from graphics/pokemon/back_pics/scyther_back_pic.png)bin854 -> 854 bytes
-rw-r--r--graphics/pokemon/scyther/footprint.png (renamed from graphics/pokemon/footprints/scyther_footprint.png)bin99 -> 99 bytes
-rw-r--r--graphics/pokemon/scyther/front.png (renamed from graphics/pokemon/front_pics/scyther_still_front_pic.png)bin896 -> 896 bytes
-rw-r--r--graphics/pokemon/scyther/icon.png (renamed from graphics/pokemon/icons/scyther_icon.png)bin345 -> 345 bytes
-rw-r--r--graphics/pokemon/scyther/normal.pal (renamed from graphics/pokemon/palettes/scyther_palette.pal)0
-rw-r--r--graphics/pokemon/scyther/shiny.pal (renamed from graphics/pokemon/palettes/scyther_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/seadra/back.png (renamed from graphics/pokemon/back_pics/seadra_back_pic.png)bin727 -> 727 bytes
-rw-r--r--graphics/pokemon/seadra/footprint.png (renamed from graphics/pokemon/footprints/seadra_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/seadra/front.png (renamed from graphics/pokemon/front_pics/seadra_still_front_pic.png)bin734 -> 734 bytes
-rw-r--r--graphics/pokemon/seadra/icon.png (renamed from graphics/pokemon/icons/seadra_icon.png)bin351 -> 351 bytes
-rw-r--r--graphics/pokemon/seadra/normal.pal (renamed from graphics/pokemon/palettes/seadra_palette.pal)0
-rw-r--r--graphics/pokemon/seadra/shiny.pal (renamed from graphics/pokemon/palettes/seadra_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/seaking/back.png (renamed from graphics/pokemon/back_pics/seaking_back_pic.png)bin693 -> 693 bytes
-rw-r--r--graphics/pokemon/seaking/footprint.png (renamed from graphics/pokemon/footprints/seaking_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/seaking/front.png (renamed from graphics/pokemon/front_pics/seaking_still_front_pic.png)bin944 -> 944 bytes
-rw-r--r--graphics/pokemon/seaking/icon.png (renamed from graphics/pokemon/icons/seaking_icon.png)bin368 -> 368 bytes
-rw-r--r--graphics/pokemon/seaking/normal.pal (renamed from graphics/pokemon/palettes/seaking_palette.pal)0
-rw-r--r--graphics/pokemon/seaking/shiny.pal (renamed from graphics/pokemon/palettes/seaking_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/sealeo/back.png (renamed from graphics/pokemon/back_pics/sealeo_back_pic.png)bin503 -> 503 bytes
-rw-r--r--graphics/pokemon/sealeo/footprint.png (renamed from graphics/pokemon/footprints/sealeo_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/sealeo/front.png (renamed from graphics/pokemon/front_pics/sealeo_still_front_pic.png)bin758 -> 758 bytes
-rw-r--r--graphics/pokemon/sealeo/icon.png (renamed from graphics/pokemon/icons/sealeo_icon.png)bin387 -> 387 bytes
-rw-r--r--graphics/pokemon/sealeo/normal.pal (renamed from graphics/pokemon/palettes/sealeo_palette.pal)0
-rw-r--r--graphics/pokemon/sealeo/shiny.pal (renamed from graphics/pokemon/palettes/sealeo_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/seedot/back.png (renamed from graphics/pokemon/back_pics/seedot_back_pic.png)bin561 -> 561 bytes
-rw-r--r--graphics/pokemon/seedot/footprint.png (renamed from graphics/pokemon/footprints/seedot_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/seedot/front.png (renamed from graphics/pokemon/front_pics/seedot_still_front_pic.png)bin502 -> 502 bytes
-rw-r--r--graphics/pokemon/seedot/icon.png (renamed from graphics/pokemon/icons/seedot_icon.png)bin271 -> 271 bytes
-rw-r--r--graphics/pokemon/seedot/normal.pal (renamed from graphics/pokemon/palettes/seedot_palette.pal)0
-rw-r--r--graphics/pokemon/seedot/shiny.pal (renamed from graphics/pokemon/palettes/seedot_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/seel/back.png (renamed from graphics/pokemon/back_pics/seel_back_pic.png)bin581 -> 581 bytes
-rw-r--r--graphics/pokemon/seel/footprint.png (renamed from graphics/pokemon/footprints/seel_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/seel/front.png (renamed from graphics/pokemon/front_pics/seel_still_front_pic.png)bin644 -> 644 bytes
-rw-r--r--graphics/pokemon/seel/icon.png (renamed from graphics/pokemon/icons/seel_icon.png)bin382 -> 382 bytes
-rw-r--r--graphics/pokemon/seel/normal.pal (renamed from graphics/pokemon/palettes/seel_palette.pal)0
-rw-r--r--graphics/pokemon/seel/shiny.pal (renamed from graphics/pokemon/palettes/seel_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/sentret/back.png (renamed from graphics/pokemon/back_pics/sentret_back_pic.png)bin549 -> 549 bytes
-rw-r--r--graphics/pokemon/sentret/footprint.png (renamed from graphics/pokemon/footprints/sentret_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/sentret/front.png (renamed from graphics/pokemon/front_pics/sentret_still_front_pic.png)bin610 -> 610 bytes
-rw-r--r--graphics/pokemon/sentret/icon.png (renamed from graphics/pokemon/icons/sentret_icon.png)bin363 -> 363 bytes
-rw-r--r--graphics/pokemon/sentret/normal.pal (renamed from graphics/pokemon/palettes/sentret_palette.pal)0
-rw-r--r--graphics/pokemon/sentret/shiny.pal (renamed from graphics/pokemon/palettes/sentret_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/seviper/back.png (renamed from graphics/pokemon/back_pics/seviper_back_pic.png)bin934 -> 934 bytes
-rw-r--r--graphics/pokemon/seviper/footprint.png (renamed from graphics/pokemon/footprints/seviper_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/seviper/front.png (renamed from graphics/pokemon/front_pics/seviper_still_front_pic.png)bin886 -> 886 bytes
-rw-r--r--graphics/pokemon/seviper/icon.png (renamed from graphics/pokemon/icons/seviper_icon.png)bin368 -> 368 bytes
-rw-r--r--graphics/pokemon/seviper/normal.pal (renamed from graphics/pokemon/palettes/seviper_palette.pal)0
-rw-r--r--graphics/pokemon/seviper/shiny.pal (renamed from graphics/pokemon/palettes/seviper_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/sharpedo/back.png (renamed from graphics/pokemon/back_pics/sharpedo_back_pic.png)bin676 -> 676 bytes
-rw-r--r--graphics/pokemon/sharpedo/footprint.png (renamed from graphics/pokemon/footprints/sharpedo_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/sharpedo/front.png (renamed from graphics/pokemon/front_pics/sharpedo_still_front_pic.png)bin748 -> 748 bytes
-rw-r--r--graphics/pokemon/sharpedo/icon.png (renamed from graphics/pokemon/icons/sharpedo_icon.png)bin373 -> 373 bytes
-rw-r--r--graphics/pokemon/sharpedo/normal.pal (renamed from graphics/pokemon/palettes/sharpedo_palette.pal)0
-rw-r--r--graphics/pokemon/sharpedo/shiny.pal (renamed from graphics/pokemon/palettes/sharpedo_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/shedinja/back.png (renamed from graphics/pokemon/back_pics/shedinja_back_pic.png)bin763 -> 763 bytes
-rw-r--r--graphics/pokemon/shedinja/footprint.png (renamed from graphics/pokemon/footprints/shedinja_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/shedinja/front.png (renamed from graphics/pokemon/front_pics/shedinja_still_front_pic.png)bin654 -> 654 bytes
-rw-r--r--graphics/pokemon/shedinja/icon.png (renamed from graphics/pokemon/icons/shedinja_icon.png)bin298 -> 298 bytes
-rw-r--r--graphics/pokemon/shedinja/normal.pal (renamed from graphics/pokemon/palettes/shedinja_palette.pal)0
-rw-r--r--graphics/pokemon/shedinja/shiny.pal (renamed from graphics/pokemon/palettes/shedinja_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/shelgon/back.png (renamed from graphics/pokemon/back_pics/shelgon_back_pic.png)bin549 -> 549 bytes
-rw-r--r--graphics/pokemon/shelgon/footprint.png (renamed from graphics/pokemon/footprints/shelgon_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/shelgon/front.png (renamed from graphics/pokemon/front_pics/shelgon_still_front_pic.png)bin631 -> 631 bytes
-rw-r--r--graphics/pokemon/shelgon/icon.png (renamed from graphics/pokemon/icons/shelgon_icon.png)bin333 -> 333 bytes
-rw-r--r--graphics/pokemon/shelgon/normal.pal (renamed from graphics/pokemon/palettes/shelgon_palette.pal)0
-rw-r--r--graphics/pokemon/shelgon/shiny.pal (renamed from graphics/pokemon/palettes/shelgon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/shellder/back.png (renamed from graphics/pokemon/back_pics/shellder_back_pic.png)bin586 -> 586 bytes
-rw-r--r--graphics/pokemon/shellder/footprint.png (renamed from graphics/pokemon/footprints/shellder_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/shellder/front.png (renamed from graphics/pokemon/front_pics/shellder_still_front_pic.png)bin494 -> 494 bytes
-rw-r--r--graphics/pokemon/shellder/icon.png (renamed from graphics/pokemon/icons/shellder_icon.png)bin295 -> 295 bytes
-rw-r--r--graphics/pokemon/shellder/normal.pal (renamed from graphics/pokemon/palettes/shellder_palette.pal)0
-rw-r--r--graphics/pokemon/shellder/shiny.pal (renamed from graphics/pokemon/palettes/shellder_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/shiftry/back.png (renamed from graphics/pokemon/back_pics/shiftry_back_pic.png)bin580 -> 580 bytes
-rw-r--r--graphics/pokemon/shiftry/footprint.png (renamed from graphics/pokemon/footprints/shiftry_footprint.png)bin76 -> 76 bytes
-rw-r--r--graphics/pokemon/shiftry/front.png (renamed from graphics/pokemon/front_pics/shiftry_still_front_pic.png)bin1023 -> 1023 bytes
-rw-r--r--graphics/pokemon/shiftry/icon.png (renamed from graphics/pokemon/icons/shiftry_icon.png)bin349 -> 349 bytes
-rw-r--r--graphics/pokemon/shiftry/normal.pal (renamed from graphics/pokemon/palettes/shiftry_palette.pal)0
-rw-r--r--graphics/pokemon/shiftry/shiny.pal (renamed from graphics/pokemon/palettes/shiftry_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/shroomish/back.png (renamed from graphics/pokemon/back_pics/shroomish_back_pic.png)bin540 -> 540 bytes
-rw-r--r--graphics/pokemon/shroomish/footprint.png (renamed from graphics/pokemon/footprints/shroomish_footprint.png)bin89 -> 89 bytes
-rw-r--r--graphics/pokemon/shroomish/front.png (renamed from graphics/pokemon/front_pics/shroomish_still_front_pic.png)bin493 -> 493 bytes
-rw-r--r--graphics/pokemon/shroomish/icon.png (renamed from graphics/pokemon/icons/shroomish_icon.png)bin317 -> 317 bytes
-rw-r--r--graphics/pokemon/shroomish/normal.pal (renamed from graphics/pokemon/palettes/shroomish_palette.pal)0
-rw-r--r--graphics/pokemon/shroomish/shiny.pal (renamed from graphics/pokemon/palettes/shroomish_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/shuckle/back.png (renamed from graphics/pokemon/back_pics/shuckle_back_pic.png)bin483 -> 483 bytes
-rw-r--r--graphics/pokemon/shuckle/footprint.png (renamed from graphics/pokemon/footprints/shuckle_footprint.png)bin86 -> 86 bytes
-rw-r--r--graphics/pokemon/shuckle/front.png (renamed from graphics/pokemon/front_pics/shuckle_still_front_pic.png)bin587 -> 587 bytes
-rw-r--r--graphics/pokemon/shuckle/icon.png (renamed from graphics/pokemon/icons/shuckle_icon.png)bin334 -> 334 bytes
-rw-r--r--graphics/pokemon/shuckle/normal.pal (renamed from graphics/pokemon/palettes/shuckle_palette.pal)0
-rw-r--r--graphics/pokemon/shuckle/shiny.pal (renamed from graphics/pokemon/palettes/shuckle_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/shuppet/back.png (renamed from graphics/pokemon/back_pics/shuppet_back_pic.png)bin485 -> 485 bytes
-rw-r--r--graphics/pokemon/shuppet/footprint.png (renamed from graphics/pokemon/footprints/shuppet_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/shuppet/front.png (renamed from graphics/pokemon/front_pics/shuppet_still_front_pic.png)bin435 -> 435 bytes
-rw-r--r--graphics/pokemon/shuppet/icon.png (renamed from graphics/pokemon/icons/shuppet_icon.png)bin275 -> 275 bytes
-rw-r--r--graphics/pokemon/shuppet/normal.pal (renamed from graphics/pokemon/palettes/shuppet_palette.pal)0
-rw-r--r--graphics/pokemon/shuppet/shiny.pal (renamed from graphics/pokemon/palettes/shuppet_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/silcoon/back.png (renamed from graphics/pokemon/back_pics/silcoon_back_pic.png)bin396 -> 396 bytes
-rw-r--r--graphics/pokemon/silcoon/footprint.png (renamed from graphics/pokemon/footprints/silcoon_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/silcoon/front.png (renamed from graphics/pokemon/front_pics/silcoon_still_front_pic.png)bin520 -> 520 bytes
-rw-r--r--graphics/pokemon/silcoon/icon.png (renamed from graphics/pokemon/icons/silcoon_icon.png)bin329 -> 329 bytes
-rw-r--r--graphics/pokemon/silcoon/normal.pal (renamed from graphics/pokemon/palettes/silcoon_palette.pal)0
-rw-r--r--graphics/pokemon/silcoon/shiny.pal (renamed from graphics/pokemon/palettes/silcoon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/skarmory/back.png (renamed from graphics/pokemon/back_pics/skarmory_back_pic.png)bin577 -> 577 bytes
-rw-r--r--graphics/pokemon/skarmory/footprint.png (renamed from graphics/pokemon/footprints/skarmory_footprint.png)bin101 -> 101 bytes
-rw-r--r--graphics/pokemon/skarmory/front.png (renamed from graphics/pokemon/front_pics/skarmory_still_front_pic.png)bin992 -> 992 bytes
-rw-r--r--graphics/pokemon/skarmory/icon.png (renamed from graphics/pokemon/icons/skarmory_icon.png)bin418 -> 418 bytes
-rw-r--r--graphics/pokemon/skarmory/normal.pal (renamed from graphics/pokemon/palettes/skarmory_palette.pal)0
-rw-r--r--graphics/pokemon/skarmory/shiny.pal (renamed from graphics/pokemon/palettes/skarmory_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/skiploom/back.png (renamed from graphics/pokemon/back_pics/skiploom_back_pic.png)bin575 -> 575 bytes
-rw-r--r--graphics/pokemon/skiploom/footprint.png (renamed from graphics/pokemon/footprints/skiploom_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/skiploom/front.png (renamed from graphics/pokemon/front_pics/skiploom_still_front_pic.png)bin503 -> 503 bytes
-rw-r--r--graphics/pokemon/skiploom/icon.png (renamed from graphics/pokemon/icons/skiploom_icon.png)bin375 -> 375 bytes
-rw-r--r--graphics/pokemon/skiploom/normal.pal (renamed from graphics/pokemon/palettes/skiploom_palette.pal)0
-rw-r--r--graphics/pokemon/skiploom/shiny.pal (renamed from graphics/pokemon/palettes/skiploom_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/skitty/back.png (renamed from graphics/pokemon/back_pics/skitty_back_pic.png)bin677 -> 677 bytes
-rw-r--r--graphics/pokemon/skitty/footprint.png (renamed from graphics/pokemon/footprints/skitty_footprint.png)bin106 -> 106 bytes
-rw-r--r--graphics/pokemon/skitty/front.png (renamed from graphics/pokemon/front_pics/skitty_still_front_pic.png)bin639 -> 639 bytes
-rw-r--r--graphics/pokemon/skitty/icon.png (renamed from graphics/pokemon/icons/skitty_icon.png)bin371 -> 371 bytes
-rw-r--r--graphics/pokemon/skitty/normal.pal (renamed from graphics/pokemon/palettes/skitty_palette.pal)0
-rw-r--r--graphics/pokemon/skitty/shiny.pal (renamed from graphics/pokemon/palettes/skitty_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/slaking/back.png (renamed from graphics/pokemon/back_pics/slaking_back_pic.png)bin788 -> 788 bytes
-rw-r--r--graphics/pokemon/slaking/footprint.png (renamed from graphics/pokemon/footprints/slaking_footprint.png)bin114 -> 114 bytes
-rw-r--r--graphics/pokemon/slaking/front.png (renamed from graphics/pokemon/front_pics/slaking_still_front_pic.png)bin1034 -> 1034 bytes
-rw-r--r--graphics/pokemon/slaking/icon.png (renamed from graphics/pokemon/icons/slaking_icon.png)bin437 -> 437 bytes
-rw-r--r--graphics/pokemon/slaking/normal.pal (renamed from graphics/pokemon/palettes/slaking_palette.pal)0
-rw-r--r--graphics/pokemon/slaking/shiny.pal (renamed from graphics/pokemon/palettes/slaking_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/slakoth/back.png (renamed from graphics/pokemon/back_pics/slakoth_back_pic.png)bin583 -> 583 bytes
-rw-r--r--graphics/pokemon/slakoth/footprint.png (renamed from graphics/pokemon/footprints/slakoth_footprint.png)bin97 -> 97 bytes
-rw-r--r--graphics/pokemon/slakoth/front.png (renamed from graphics/pokemon/front_pics/slakoth_still_front_pic.png)bin602 -> 602 bytes
-rw-r--r--graphics/pokemon/slakoth/icon.png (renamed from graphics/pokemon/icons/slakoth_icon.png)bin319 -> 319 bytes
-rw-r--r--graphics/pokemon/slakoth/normal.pal (renamed from graphics/pokemon/palettes/slakoth_palette.pal)0
-rw-r--r--graphics/pokemon/slakoth/shiny.pal (renamed from graphics/pokemon/palettes/slakoth_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/slowbro/back.png (renamed from graphics/pokemon/back_pics/slowbro_back_pic.png)bin737 -> 737 bytes
-rw-r--r--graphics/pokemon/slowbro/footprint.png (renamed from graphics/pokemon/footprints/slowbro_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/slowbro/front.png (renamed from graphics/pokemon/front_pics/slowbro_still_front_pic.png)bin982 -> 982 bytes
-rw-r--r--graphics/pokemon/slowbro/icon.png (renamed from graphics/pokemon/icons/slowbro_icon.png)bin446 -> 446 bytes
-rw-r--r--graphics/pokemon/slowbro/normal.pal (renamed from graphics/pokemon/palettes/slowbro_palette.pal)0
-rw-r--r--graphics/pokemon/slowbro/shiny.pal (renamed from graphics/pokemon/palettes/slowbro_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/slowking/back.png (renamed from graphics/pokemon/back_pics/slowking_back_pic.png)bin712 -> 712 bytes
-rw-r--r--graphics/pokemon/slowking/footprint.png (renamed from graphics/pokemon/footprints/slowking_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/slowking/front.png (renamed from graphics/pokemon/front_pics/slowking_still_front_pic.png)bin792 -> 792 bytes
-rw-r--r--graphics/pokemon/slowking/icon.png (renamed from graphics/pokemon/icons/slowking_icon.png)bin364 -> 364 bytes
-rw-r--r--graphics/pokemon/slowking/normal.pal (renamed from graphics/pokemon/palettes/slowking_palette.pal)0
-rw-r--r--graphics/pokemon/slowking/shiny.pal (renamed from graphics/pokemon/palettes/slowking_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/slowpoke/back.png (renamed from graphics/pokemon/back_pics/slowpoke_back_pic.png)bin494 -> 494 bytes
-rw-r--r--graphics/pokemon/slowpoke/footprint.png (renamed from graphics/pokemon/footprints/slowpoke_footprint.png)bin85 -> 85 bytes
-rw-r--r--graphics/pokemon/slowpoke/front.png (renamed from graphics/pokemon/front_pics/slowpoke_still_front_pic.png)bin578 -> 578 bytes
-rw-r--r--graphics/pokemon/slowpoke/icon.png (renamed from graphics/pokemon/icons/slowpoke_icon.png)bin342 -> 342 bytes
-rw-r--r--graphics/pokemon/slowpoke/normal.pal (renamed from graphics/pokemon/palettes/slowpoke_palette.pal)0
-rw-r--r--graphics/pokemon/slowpoke/shiny.pal (renamed from graphics/pokemon/palettes/slowpoke_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/slugma/back.png (renamed from graphics/pokemon/back_pics/slugma_back_pic.png)bin584 -> 584 bytes
-rw-r--r--graphics/pokemon/slugma/footprint.png (renamed from graphics/pokemon/footprints/slugma_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/slugma/front.png (renamed from graphics/pokemon/front_pics/slugma_still_front_pic.png)bin493 -> 493 bytes
-rw-r--r--graphics/pokemon/slugma/icon.png (renamed from graphics/pokemon/icons/slugma_icon.png)bin343 -> 343 bytes
-rw-r--r--graphics/pokemon/slugma/normal.pal (renamed from graphics/pokemon/palettes/slugma_palette.pal)0
-rw-r--r--graphics/pokemon/slugma/shiny.pal (renamed from graphics/pokemon/palettes/slugma_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/smeargle/back.png (renamed from graphics/pokemon/back_pics/smeargle_back_pic.png)bin648 -> 648 bytes
-rw-r--r--graphics/pokemon/smeargle/footprint.png (renamed from graphics/pokemon/footprints/smeargle_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/smeargle/front.png (renamed from graphics/pokemon/front_pics/smeargle_still_front_pic.png)bin758 -> 758 bytes
-rw-r--r--graphics/pokemon/smeargle/icon.png (renamed from graphics/pokemon/icons/smeargle_icon.png)bin377 -> 377 bytes
-rw-r--r--graphics/pokemon/smeargle/normal.pal (renamed from graphics/pokemon/palettes/smeargle_palette.pal)0
-rw-r--r--graphics/pokemon/smeargle/shiny.pal (renamed from graphics/pokemon/palettes/smeargle_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/smoochum/back.png (renamed from graphics/pokemon/back_pics/smoochum_back_pic.png)bin507 -> 507 bytes
-rw-r--r--graphics/pokemon/smoochum/footprint.png (renamed from graphics/pokemon/footprints/smoochum_footprint.png)bin83 -> 83 bytes
-rw-r--r--graphics/pokemon/smoochum/front.png (renamed from graphics/pokemon/front_pics/smoochum_still_front_pic.png)bin495 -> 495 bytes
-rw-r--r--graphics/pokemon/smoochum/icon.png (renamed from graphics/pokemon/icons/smoochum_icon.png)bin414 -> 414 bytes
-rw-r--r--graphics/pokemon/smoochum/normal.pal (renamed from graphics/pokemon/palettes/smoochum_palette.pal)0
-rw-r--r--graphics/pokemon/smoochum/shiny.pal (renamed from graphics/pokemon/palettes/smoochum_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/sneasel/back.png (renamed from graphics/pokemon/back_pics/sneasel_back_pic.png)bin664 -> 664 bytes
-rw-r--r--graphics/pokemon/sneasel/footprint.png (renamed from graphics/pokemon/footprints/sneasel_footprint.png)bin93 -> 93 bytes
-rw-r--r--graphics/pokemon/sneasel/front.png (renamed from graphics/pokemon/front_pics/sneasel_still_front_pic.png)bin698 -> 698 bytes
-rw-r--r--graphics/pokemon/sneasel/icon.png (renamed from graphics/pokemon/icons/sneasel_icon.png)bin347 -> 347 bytes
-rw-r--r--graphics/pokemon/sneasel/normal.pal (renamed from graphics/pokemon/palettes/sneasel_palette.pal)0
-rw-r--r--graphics/pokemon/sneasel/shiny.pal (renamed from graphics/pokemon/palettes/sneasel_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/snorlax/back.png (renamed from graphics/pokemon/back_pics/snorlax_back_pic.png)bin419 -> 419 bytes
-rw-r--r--graphics/pokemon/snorlax/footprint.png (renamed from graphics/pokemon/footprints/snorlax_footprint.png)bin102 -> 102 bytes
-rw-r--r--graphics/pokemon/snorlax/front.png (renamed from graphics/pokemon/front_pics/snorlax_still_front_pic.png)bin814 -> 814 bytes
-rw-r--r--graphics/pokemon/snorlax/icon.png (renamed from graphics/pokemon/icons/snorlax_icon.png)bin346 -> 346 bytes
-rw-r--r--graphics/pokemon/snorlax/normal.pal (renamed from graphics/pokemon/palettes/snorlax_palette.pal)0
-rw-r--r--graphics/pokemon/snorlax/shiny.pal (renamed from graphics/pokemon/palettes/snorlax_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/snorunt/back.png (renamed from graphics/pokemon/back_pics/snorunt_back_pic.png)bin557 -> 557 bytes
-rw-r--r--graphics/pokemon/snorunt/footprint.png (renamed from graphics/pokemon/footprints/snorunt_footprint.png)bin91 -> 91 bytes
-rw-r--r--graphics/pokemon/snorunt/front.png (renamed from graphics/pokemon/front_pics/snorunt_still_front_pic.png)bin574 -> 574 bytes
-rw-r--r--graphics/pokemon/snorunt/icon.png (renamed from graphics/pokemon/icons/snorunt_icon.png)bin283 -> 283 bytes
-rw-r--r--graphics/pokemon/snorunt/normal.pal (renamed from graphics/pokemon/palettes/snorunt_palette.pal)0
-rw-r--r--graphics/pokemon/snorunt/shiny.pal (renamed from graphics/pokemon/palettes/snorunt_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/snubbull/back.png (renamed from graphics/pokemon/back_pics/snubbull_back_pic.png)bin627 -> 627 bytes
-rw-r--r--graphics/pokemon/snubbull/footprint.png (renamed from graphics/pokemon/footprints/snubbull_footprint.png)bin89 -> 89 bytes
-rw-r--r--graphics/pokemon/snubbull/front.png (renamed from graphics/pokemon/front_pics/snubbull_still_front_pic.png)bin606 -> 606 bytes
-rw-r--r--graphics/pokemon/snubbull/icon.png (renamed from graphics/pokemon/icons/snubbull_icon.png)bin325 -> 325 bytes
-rw-r--r--graphics/pokemon/snubbull/normal.pal (renamed from graphics/pokemon/palettes/snubbull_palette.pal)0
-rw-r--r--graphics/pokemon/snubbull/shiny.pal (renamed from graphics/pokemon/palettes/snubbull_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/solrock/back.png (renamed from graphics/pokemon/back_pics/solrock_back_pic.png)bin802 -> 802 bytes
-rw-r--r--graphics/pokemon/solrock/footprint.png (renamed from graphics/pokemon/footprints/solrock_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/solrock/front.png (renamed from graphics/pokemon/front_pics/solrock_still_front_pic.png)bin945 -> 945 bytes
-rw-r--r--graphics/pokemon/solrock/icon.png (renamed from graphics/pokemon/icons/solrock_icon.png)bin286 -> 286 bytes
-rw-r--r--graphics/pokemon/solrock/normal.pal (renamed from graphics/pokemon/palettes/solrock_palette.pal)0
-rw-r--r--graphics/pokemon/solrock/shiny.pal (renamed from graphics/pokemon/palettes/solrock_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/spearow/back.png (renamed from graphics/pokemon/back_pics/spearow_back_pic.png)bin601 -> 601 bytes
-rw-r--r--graphics/pokemon/spearow/footprint.png (renamed from graphics/pokemon/footprints/spearow_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/spearow/front.png (renamed from graphics/pokemon/front_pics/spearow_still_front_pic.png)bin615 -> 615 bytes
-rw-r--r--graphics/pokemon/spearow/icon.png (renamed from graphics/pokemon/icons/spearow_icon.png)bin346 -> 346 bytes
-rw-r--r--graphics/pokemon/spearow/normal.pal (renamed from graphics/pokemon/palettes/spearow_palette.pal)0
-rw-r--r--graphics/pokemon/spearow/shiny.pal (renamed from graphics/pokemon/palettes/spearow_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/spheal/back.png (renamed from graphics/pokemon/back_pics/spheal_back_pic.png)bin405 -> 405 bytes
-rw-r--r--graphics/pokemon/spheal/footprint.png (renamed from graphics/pokemon/footprints/spheal_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/spheal/front.png (renamed from graphics/pokemon/front_pics/spheal_still_front_pic.png)bin507 -> 507 bytes
-rw-r--r--graphics/pokemon/spheal/icon.png (renamed from graphics/pokemon/icons/spheal_icon.png)bin317 -> 317 bytes
-rw-r--r--graphics/pokemon/spheal/normal.pal (renamed from graphics/pokemon/palettes/spheal_palette.pal)0
-rw-r--r--graphics/pokemon/spheal/shiny.pal (renamed from graphics/pokemon/palettes/spheal_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/spinarak/back.png (renamed from graphics/pokemon/back_pics/spinarak_back_pic.png)bin465 -> 465 bytes
-rw-r--r--graphics/pokemon/spinarak/footprint.png (renamed from graphics/pokemon/footprints/spinarak_footprint.png)bin76 -> 76 bytes
-rw-r--r--graphics/pokemon/spinarak/front.png (renamed from graphics/pokemon/front_pics/spinarak_still_front_pic.png)bin511 -> 511 bytes
-rw-r--r--graphics/pokemon/spinarak/icon.png (renamed from graphics/pokemon/icons/spinarak_icon.png)bin345 -> 345 bytes
-rw-r--r--graphics/pokemon/spinarak/normal.pal (renamed from graphics/pokemon/palettes/spinarak_palette.pal)0
-rw-r--r--graphics/pokemon/spinarak/shiny.pal (renamed from graphics/pokemon/palettes/spinarak_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/spinda/back.png (renamed from graphics/pokemon/back_pics/spinda_back_pic.png)bin684 -> 684 bytes
-rw-r--r--graphics/pokemon/spinda/footprint.png (renamed from graphics/pokemon/footprints/spinda_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/spinda/front.png (renamed from graphics/pokemon/front_pics/spinda_still_front_pic.png)bin623 -> 623 bytes
-rw-r--r--graphics/pokemon/spinda/icon.png (renamed from graphics/pokemon/icons/spinda_icon.png)bin375 -> 375 bytes
-rw-r--r--graphics/pokemon/spinda/normal.pal (renamed from graphics/pokemon/palettes/spinda_palette.pal)0
-rw-r--r--graphics/pokemon/spinda/shiny.pal (renamed from graphics/pokemon/palettes/spinda_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/spoink/back.png (renamed from graphics/pokemon/back_pics/spoink_back_pic.png)bin453 -> 453 bytes
-rw-r--r--graphics/pokemon/spoink/footprint.png (renamed from graphics/pokemon/footprints/spoink_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/spoink/front.png (renamed from graphics/pokemon/front_pics/spoink_still_front_pic.png)bin491 -> 491 bytes
-rw-r--r--graphics/pokemon/spoink/icon.png (renamed from graphics/pokemon/icons/spoink_icon.png)bin277 -> 277 bytes
-rw-r--r--graphics/pokemon/spoink/normal.pal (renamed from graphics/pokemon/palettes/spoink_palette.pal)0
-rw-r--r--graphics/pokemon/spoink/shiny.pal (renamed from graphics/pokemon/palettes/spoink_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/squirtle/back.png (renamed from graphics/pokemon/back_pics/squirtle_back_pic.png)bin484 -> 484 bytes
-rw-r--r--graphics/pokemon/squirtle/footprint.png (renamed from graphics/pokemon/footprints/squirtle_footprint.png)bin89 -> 89 bytes
-rw-r--r--graphics/pokemon/squirtle/front.png (renamed from graphics/pokemon/front_pics/squirtle_still_front_pic.png)bin543 -> 543 bytes
-rw-r--r--graphics/pokemon/squirtle/icon.png (renamed from graphics/pokemon/icons/squirtle_icon.png)bin344 -> 344 bytes
-rw-r--r--graphics/pokemon/squirtle/normal.pal (renamed from graphics/pokemon/palettes/squirtle_palette.pal)0
-rw-r--r--graphics/pokemon/squirtle/shiny.pal (renamed from graphics/pokemon/palettes/squirtle_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/stantler/back.png (renamed from graphics/pokemon/back_pics/stantler_back_pic.png)bin680 -> 680 bytes
-rw-r--r--graphics/pokemon/stantler/footprint.png (renamed from graphics/pokemon/footprints/stantler_footprint.png)bin86 -> 86 bytes
-rw-r--r--graphics/pokemon/stantler/front.png (renamed from graphics/pokemon/front_pics/stantler_still_front_pic.png)bin881 -> 881 bytes
-rw-r--r--graphics/pokemon/stantler/icon.png (renamed from graphics/pokemon/icons/stantler_icon.png)bin356 -> 356 bytes
-rw-r--r--graphics/pokemon/stantler/normal.pal (renamed from graphics/pokemon/palettes/stantler_palette.pal)0
-rw-r--r--graphics/pokemon/stantler/shiny.pal (renamed from graphics/pokemon/palettes/stantler_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/starmie/back.png (renamed from graphics/pokemon/back_pics/starmie_back_pic.png)bin501 -> 501 bytes
-rw-r--r--graphics/pokemon/starmie/footprint.png (renamed from graphics/pokemon/footprints/starmie_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/starmie/front.png (renamed from graphics/pokemon/front_pics/starmie_still_front_pic.png)bin780 -> 780 bytes
-rw-r--r--graphics/pokemon/starmie/icon.png (renamed from graphics/pokemon/icons/starmie_icon.png)bin380 -> 380 bytes
-rw-r--r--graphics/pokemon/starmie/normal.pal (renamed from graphics/pokemon/palettes/starmie_palette.pal)0
-rw-r--r--graphics/pokemon/starmie/shiny.pal (renamed from graphics/pokemon/palettes/starmie_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/staryu/back.png (renamed from graphics/pokemon/back_pics/staryu_back_pic.png)bin446 -> 446 bytes
-rw-r--r--graphics/pokemon/staryu/footprint.png (renamed from graphics/pokemon/footprints/staryu_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/staryu/front.png (renamed from graphics/pokemon/front_pics/staryu_still_front_pic.png)bin566 -> 566 bytes
-rw-r--r--graphics/pokemon/staryu/icon.png (renamed from graphics/pokemon/icons/staryu_icon.png)bin294 -> 294 bytes
-rw-r--r--graphics/pokemon/staryu/normal.pal (renamed from graphics/pokemon/palettes/staryu_palette.pal)0
-rw-r--r--graphics/pokemon/staryu/shiny.pal (renamed from graphics/pokemon/palettes/staryu_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/steelix/back.png (renamed from graphics/pokemon/back_pics/steelix_back_pic.png)bin819 -> 819 bytes
-rw-r--r--graphics/pokemon/steelix/footprint.png (renamed from graphics/pokemon/footprints/steelix_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/steelix/front.png (renamed from graphics/pokemon/front_pics/steelix_still_front_pic.png)bin943 -> 943 bytes
-rw-r--r--graphics/pokemon/steelix/icon.png (renamed from graphics/pokemon/icons/steelix_icon.png)bin433 -> 433 bytes
-rw-r--r--graphics/pokemon/steelix/normal.pal (renamed from graphics/pokemon/palettes/steelix_palette.pal)0
-rw-r--r--graphics/pokemon/steelix/shiny.pal (renamed from graphics/pokemon/palettes/steelix_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/sudowoodo/back.png (renamed from graphics/pokemon/back_pics/sudowoodo_back_pic.png)bin696 -> 696 bytes
-rw-r--r--graphics/pokemon/sudowoodo/footprint.png (renamed from graphics/pokemon/footprints/sudowoodo_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/sudowoodo/front.png (renamed from graphics/pokemon/front_pics/sudowoodo_still_front_pic.png)bin651 -> 651 bytes
-rw-r--r--graphics/pokemon/sudowoodo/icon.png (renamed from graphics/pokemon/icons/sudowoodo_icon.png)bin395 -> 395 bytes
-rw-r--r--graphics/pokemon/sudowoodo/normal.pal (renamed from graphics/pokemon/palettes/sudowoodo_palette.pal)0
-rw-r--r--graphics/pokemon/sudowoodo/shiny.pal (renamed from graphics/pokemon/palettes/sudowoodo_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/suicune/back.png (renamed from graphics/pokemon/back_pics/suicune_back_pic.png)bin975 -> 975 bytes
-rw-r--r--graphics/pokemon/suicune/footprint.png (renamed from graphics/pokemon/footprints/suicune_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/suicune/front.png (renamed from graphics/pokemon/front_pics/suicune_still_front_pic.png)bin1179 -> 1179 bytes
-rw-r--r--graphics/pokemon/suicune/icon.png (renamed from graphics/pokemon/icons/suicune_icon.png)bin471 -> 471 bytes
-rw-r--r--graphics/pokemon/suicune/normal.pal (renamed from graphics/pokemon/palettes/suicune_palette.pal)0
-rw-r--r--graphics/pokemon/suicune/shiny.pal (renamed from graphics/pokemon/palettes/suicune_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/sunflora/back.png (renamed from graphics/pokemon/back_pics/sunflora_back_pic.png)bin749 -> 749 bytes
-rw-r--r--graphics/pokemon/sunflora/footprint.png (renamed from graphics/pokemon/footprints/sunflora_footprint.png)bin89 -> 89 bytes
-rw-r--r--graphics/pokemon/sunflora/front.png (renamed from graphics/pokemon/front_pics/sunflora_still_front_pic.png)bin707 -> 707 bytes
-rw-r--r--graphics/pokemon/sunflora/icon.png (renamed from graphics/pokemon/icons/sunflora_icon.png)bin447 -> 447 bytes
-rw-r--r--graphics/pokemon/sunflora/normal.pal (renamed from graphics/pokemon/palettes/sunflora_palette.pal)0
-rw-r--r--graphics/pokemon/sunflora/shiny.pal (renamed from graphics/pokemon/palettes/sunflora_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/sunkern/back.png (renamed from graphics/pokemon/back_pics/sunkern_back_pic.png)bin555 -> 555 bytes
-rw-r--r--graphics/pokemon/sunkern/footprint.png (renamed from graphics/pokemon/footprints/sunkern_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/sunkern/front.png (renamed from graphics/pokemon/front_pics/sunkern_still_front_pic.png)bin448 -> 448 bytes
-rw-r--r--graphics/pokemon/sunkern/icon.png (renamed from graphics/pokemon/icons/sunkern_icon.png)bin366 -> 366 bytes
-rw-r--r--graphics/pokemon/sunkern/normal.pal (renamed from graphics/pokemon/palettes/sunkern_palette.pal)0
-rw-r--r--graphics/pokemon/sunkern/shiny.pal (renamed from graphics/pokemon/palettes/sunkern_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/surskit/back.png (renamed from graphics/pokemon/back_pics/surskit_back_pic.png)bin459 -> 459 bytes
-rw-r--r--graphics/pokemon/surskit/footprint.png (renamed from graphics/pokemon/footprints/surskit_footprint.png)bin87 -> 87 bytes
-rw-r--r--graphics/pokemon/surskit/front.png (renamed from graphics/pokemon/front_pics/surskit_still_front_pic.png)bin417 -> 417 bytes
-rw-r--r--graphics/pokemon/surskit/icon.png (renamed from graphics/pokemon/icons/surskit_icon.png)bin325 -> 325 bytes
-rw-r--r--graphics/pokemon/surskit/normal.pal (renamed from graphics/pokemon/palettes/surskit_palette.pal)0
-rw-r--r--graphics/pokemon/surskit/shiny.pal (renamed from graphics/pokemon/palettes/surskit_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/swablu/back.png (renamed from graphics/pokemon/back_pics/swablu_back_pic.png)bin740 -> 740 bytes
-rw-r--r--graphics/pokemon/swablu/footprint.png (renamed from graphics/pokemon/footprints/swablu_footprint.png)bin82 -> 82 bytes
-rw-r--r--graphics/pokemon/swablu/front.png (renamed from graphics/pokemon/front_pics/swablu_still_front_pic.png)bin586 -> 586 bytes
-rw-r--r--graphics/pokemon/swablu/icon.png (renamed from graphics/pokemon/icons/swablu_icon.png)bin324 -> 324 bytes
-rw-r--r--graphics/pokemon/swablu/normal.pal (renamed from graphics/pokemon/palettes/swablu_palette.pal)0
-rw-r--r--graphics/pokemon/swablu/shiny.pal (renamed from graphics/pokemon/palettes/swablu_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/swalot/back.png (renamed from graphics/pokemon/back_pics/swalot_back_pic.png)bin687 -> 687 bytes
-rw-r--r--graphics/pokemon/swalot/footprint.png (renamed from graphics/pokemon/footprints/swalot_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/swalot/front.png (renamed from graphics/pokemon/front_pics/swalot_still_front_pic.png)bin677 -> 677 bytes
-rw-r--r--graphics/pokemon/swalot/icon.png (renamed from graphics/pokemon/icons/swalot_icon.png)bin315 -> 315 bytes
-rw-r--r--graphics/pokemon/swalot/normal.pal (renamed from graphics/pokemon/palettes/swalot_palette.pal)0
-rw-r--r--graphics/pokemon/swalot/shiny.pal (renamed from graphics/pokemon/palettes/swalot_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/swampert/back.png (renamed from graphics/pokemon/back_pics/swampert_back_pic.png)bin768 -> 768 bytes
-rw-r--r--graphics/pokemon/swampert/footprint.png (renamed from graphics/pokemon/footprints/swampert_footprint.png)bin103 -> 103 bytes
-rw-r--r--graphics/pokemon/swampert/front.png (renamed from graphics/pokemon/front_pics/swampert_still_front_pic.png)bin1160 -> 1160 bytes
-rw-r--r--graphics/pokemon/swampert/icon.png (renamed from graphics/pokemon/icons/swampert_icon.png)bin417 -> 417 bytes
-rw-r--r--graphics/pokemon/swampert/normal.pal (renamed from graphics/pokemon/palettes/swampert_palette.pal)0
-rw-r--r--graphics/pokemon/swampert/shiny.pal (renamed from graphics/pokemon/palettes/swampert_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/swellow/back.png (renamed from graphics/pokemon/back_pics/swellow_back_pic.png)bin669 -> 669 bytes
-rw-r--r--graphics/pokemon/swellow/footprint.png (renamed from graphics/pokemon/footprints/swellow_footprint.png)bin107 -> 107 bytes
-rw-r--r--graphics/pokemon/swellow/front.png (renamed from graphics/pokemon/front_pics/swellow_still_front_pic.png)bin816 -> 816 bytes
-rw-r--r--graphics/pokemon/swellow/icon.png (renamed from graphics/pokemon/icons/swellow_icon.png)bin369 -> 369 bytes
-rw-r--r--graphics/pokemon/swellow/normal.pal (renamed from graphics/pokemon/palettes/swellow_palette.pal)0
-rw-r--r--graphics/pokemon/swellow/shiny.pal (renamed from graphics/pokemon/palettes/swellow_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/swinub/back.png (renamed from graphics/pokemon/back_pics/swinub_back_pic.png)bin382 -> 382 bytes
-rw-r--r--graphics/pokemon/swinub/footprint.png (renamed from graphics/pokemon/footprints/swinub_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/swinub/front.png (renamed from graphics/pokemon/front_pics/swinub_still_front_pic.png)bin381 -> 381 bytes
-rw-r--r--graphics/pokemon/swinub/icon.png (renamed from graphics/pokemon/icons/swinub_icon.png)bin320 -> 320 bytes
-rw-r--r--graphics/pokemon/swinub/normal.pal (renamed from graphics/pokemon/palettes/swinub_palette.pal)0
-rw-r--r--graphics/pokemon/swinub/shiny.pal (renamed from graphics/pokemon/palettes/swinub_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/taillow/back.png (renamed from graphics/pokemon/back_pics/taillow_back_pic.png)bin446 -> 446 bytes
-rw-r--r--graphics/pokemon/taillow/footprint.png (renamed from graphics/pokemon/footprints/taillow_footprint.png)bin97 -> 97 bytes
-rw-r--r--graphics/pokemon/taillow/front.png (renamed from graphics/pokemon/front_pics/taillow_still_front_pic.png)bin508 -> 508 bytes
-rw-r--r--graphics/pokemon/taillow/icon.png (renamed from graphics/pokemon/icons/taillow_icon.png)bin329 -> 329 bytes
-rw-r--r--graphics/pokemon/taillow/normal.pal (renamed from graphics/pokemon/palettes/taillow_palette.pal)0
-rw-r--r--graphics/pokemon/taillow/shiny.pal (renamed from graphics/pokemon/palettes/taillow_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/tangela/back.png (renamed from graphics/pokemon/back_pics/tangela_back_pic.png)bin676 -> 676 bytes
-rw-r--r--graphics/pokemon/tangela/footprint.png (renamed from graphics/pokemon/footprints/tangela_footprint.png)bin97 -> 97 bytes
-rw-r--r--graphics/pokemon/tangela/front.png (renamed from graphics/pokemon/front_pics/tangela_still_front_pic.png)bin737 -> 737 bytes
-rw-r--r--graphics/pokemon/tangela/icon.png (renamed from graphics/pokemon/icons/tangela_icon.png)bin365 -> 365 bytes
-rw-r--r--graphics/pokemon/tangela/normal.pal (renamed from graphics/pokemon/palettes/tangela_palette.pal)0
-rw-r--r--graphics/pokemon/tangela/shiny.pal (renamed from graphics/pokemon/palettes/tangela_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/tauros/back.png (renamed from graphics/pokemon/back_pics/tauros_back_pic.png)bin561 -> 561 bytes
-rw-r--r--graphics/pokemon/tauros/footprint.png (renamed from graphics/pokemon/footprints/tauros_footprint.png)bin91 -> 91 bytes
-rw-r--r--graphics/pokemon/tauros/front.png (renamed from graphics/pokemon/front_pics/tauros_still_front_pic.png)bin956 -> 956 bytes
-rw-r--r--graphics/pokemon/tauros/icon.png (renamed from graphics/pokemon/icons/tauros_icon.png)bin421 -> 421 bytes
-rw-r--r--graphics/pokemon/tauros/normal.pal (renamed from graphics/pokemon/palettes/tauros_palette.pal)0
-rw-r--r--graphics/pokemon/tauros/shiny.pal (renamed from graphics/pokemon/palettes/tauros_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/teddiursa/back.png (renamed from graphics/pokemon/back_pics/teddiursa_back_pic.png)bin512 -> 512 bytes
-rw-r--r--graphics/pokemon/teddiursa/footprint.png (renamed from graphics/pokemon/footprints/teddiursa_footprint.png)bin91 -> 91 bytes
-rw-r--r--graphics/pokemon/teddiursa/front.png (renamed from graphics/pokemon/front_pics/teddiursa_still_front_pic.png)bin544 -> 544 bytes
-rw-r--r--graphics/pokemon/teddiursa/icon.png (renamed from graphics/pokemon/icons/teddiursa_icon.png)bin304 -> 304 bytes
-rw-r--r--graphics/pokemon/teddiursa/normal.pal (renamed from graphics/pokemon/palettes/teddiursa_palette.pal)0
-rw-r--r--graphics/pokemon/teddiursa/shiny.pal (renamed from graphics/pokemon/palettes/teddiursa_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/tentacool/back.png (renamed from graphics/pokemon/back_pics/tentacool_back_pic.png)bin556 -> 556 bytes
-rw-r--r--graphics/pokemon/tentacool/footprint.png (renamed from graphics/pokemon/footprints/tentacool_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/tentacool/front.png (renamed from graphics/pokemon/front_pics/tentacool_still_front_pic.png)bin571 -> 571 bytes
-rw-r--r--graphics/pokemon/tentacool/icon.png (renamed from graphics/pokemon/icons/tentacool_icon.png)bin333 -> 333 bytes
-rw-r--r--graphics/pokemon/tentacool/normal.pal (renamed from graphics/pokemon/palettes/tentacool_palette.pal)0
-rw-r--r--graphics/pokemon/tentacool/shiny.pal (renamed from graphics/pokemon/palettes/tentacool_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/tentacruel/back.png (renamed from graphics/pokemon/back_pics/tentacruel_back_pic.png)bin736 -> 736 bytes
-rw-r--r--graphics/pokemon/tentacruel/footprint.png (renamed from graphics/pokemon/footprints/tentacruel_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/tentacruel/front.png (renamed from graphics/pokemon/front_pics/tentacruel_still_front_pic.png)bin1059 -> 1059 bytes
-rw-r--r--graphics/pokemon/tentacruel/icon.png (renamed from graphics/pokemon/icons/tentacruel_icon.png)bin486 -> 486 bytes
-rw-r--r--graphics/pokemon/tentacruel/normal.pal (renamed from graphics/pokemon/palettes/tentacruel_palette.pal)0
-rw-r--r--graphics/pokemon/tentacruel/shiny.pal (renamed from graphics/pokemon/palettes/tentacruel_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/togepi/back.png (renamed from graphics/pokemon/back_pics/togepi_back_pic.png)bin514 -> 514 bytes
-rw-r--r--graphics/pokemon/togepi/footprint.png (renamed from graphics/pokemon/footprints/togepi_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/togepi/front.png (renamed from graphics/pokemon/front_pics/togepi_still_front_pic.png)bin390 -> 390 bytes
-rw-r--r--graphics/pokemon/togepi/icon.png (renamed from graphics/pokemon/icons/togepi_icon.png)bin347 -> 347 bytes
-rw-r--r--graphics/pokemon/togepi/normal.pal (renamed from graphics/pokemon/palettes/togepi_palette.pal)0
-rw-r--r--graphics/pokemon/togepi/shiny.pal (renamed from graphics/pokemon/palettes/togepi_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/togetic/back.png (renamed from graphics/pokemon/back_pics/togetic_back_pic.png)bin630 -> 630 bytes
-rw-r--r--graphics/pokemon/togetic/footprint.png (renamed from graphics/pokemon/footprints/togetic_footprint.png)bin90 -> 90 bytes
-rw-r--r--graphics/pokemon/togetic/front.png (renamed from graphics/pokemon/front_pics/togetic_still_front_pic.png)bin513 -> 513 bytes
-rw-r--r--graphics/pokemon/togetic/icon.png (renamed from graphics/pokemon/icons/togetic_icon.png)bin324 -> 324 bytes
-rw-r--r--graphics/pokemon/togetic/normal.pal (renamed from graphics/pokemon/palettes/togetic_palette.pal)0
-rw-r--r--graphics/pokemon/togetic/shiny.pal (renamed from graphics/pokemon/palettes/togetic_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/torchic/back.png (renamed from graphics/pokemon/back_pics/torchic_back_pic.png)bin576 -> 576 bytes
-rw-r--r--graphics/pokemon/torchic/footprint.png (renamed from graphics/pokemon/footprints/torchic_footprint.png)bin103 -> 103 bytes
-rw-r--r--graphics/pokemon/torchic/front.png (renamed from graphics/pokemon/front_pics/torchic_still_front_pic.png)bin548 -> 548 bytes
-rw-r--r--graphics/pokemon/torchic/icon.png (renamed from graphics/pokemon/icons/torchic_icon.png)bin338 -> 338 bytes
-rw-r--r--graphics/pokemon/torchic/normal.pal (renamed from graphics/pokemon/palettes/torchic_palette.pal)0
-rw-r--r--graphics/pokemon/torchic/shiny.pal (renamed from graphics/pokemon/palettes/torchic_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/torkoal/back.png (renamed from graphics/pokemon/back_pics/torkoal_back_pic.png)bin569 -> 569 bytes
-rw-r--r--graphics/pokemon/torkoal/footprint.png (renamed from graphics/pokemon/footprints/torkoal_footprint.png)bin104 -> 104 bytes
-rw-r--r--graphics/pokemon/torkoal/front.png (renamed from graphics/pokemon/front_pics/torkoal_still_front_pic.png)bin977 -> 977 bytes
-rw-r--r--graphics/pokemon/torkoal/icon.png (renamed from graphics/pokemon/icons/torkoal_icon.png)bin342 -> 342 bytes
-rw-r--r--graphics/pokemon/torkoal/normal.pal (renamed from graphics/pokemon/palettes/torkoal_palette.pal)0
-rw-r--r--graphics/pokemon/torkoal/shiny.pal (renamed from graphics/pokemon/palettes/torkoal_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/totodile/back.png (renamed from graphics/pokemon/back_pics/totodile_back_pic.png)bin599 -> 599 bytes
-rw-r--r--graphics/pokemon/totodile/footprint.png (renamed from graphics/pokemon/footprints/totodile_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/totodile/front.png (renamed from graphics/pokemon/front_pics/totodile_still_front_pic.png)bin533 -> 533 bytes
-rw-r--r--graphics/pokemon/totodile/icon.png (renamed from graphics/pokemon/icons/totodile_icon.png)bin331 -> 331 bytes
-rw-r--r--graphics/pokemon/totodile/normal.pal (renamed from graphics/pokemon/palettes/totodile_palette.pal)0
-rw-r--r--graphics/pokemon/totodile/shiny.pal (renamed from graphics/pokemon/palettes/totodile_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/trapinch/back.png (renamed from graphics/pokemon/back_pics/trapinch_back_pic.png)bin437 -> 437 bytes
-rw-r--r--graphics/pokemon/trapinch/footprint.png (renamed from graphics/pokemon/footprints/trapinch_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/trapinch/front.png (renamed from graphics/pokemon/front_pics/trapinch_still_front_pic.png)bin420 -> 420 bytes
-rw-r--r--graphics/pokemon/trapinch/icon.png (renamed from graphics/pokemon/icons/trapinch_icon.png)bin314 -> 314 bytes
-rw-r--r--graphics/pokemon/trapinch/normal.pal (renamed from graphics/pokemon/palettes/trapinch_palette.pal)0
-rw-r--r--graphics/pokemon/trapinch/shiny.pal (renamed from graphics/pokemon/palettes/trapinch_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/treecko/back.png (renamed from graphics/pokemon/back_pics/treecko_back_pic.png)bin636 -> 636 bytes
-rw-r--r--graphics/pokemon/treecko/footprint.png (renamed from graphics/pokemon/footprints/treecko_footprint.png)bin96 -> 96 bytes
-rw-r--r--graphics/pokemon/treecko/front.png (renamed from graphics/pokemon/front_pics/treecko_still_front_pic.png)bin635 -> 635 bytes
-rw-r--r--graphics/pokemon/treecko/icon.png (renamed from graphics/pokemon/icons/treecko_icon.png)bin346 -> 346 bytes
-rw-r--r--graphics/pokemon/treecko/normal.pal (renamed from graphics/pokemon/palettes/treecko_palette.pal)0
-rw-r--r--graphics/pokemon/treecko/shiny.pal (renamed from graphics/pokemon/palettes/treecko_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/tropius/back.png (renamed from graphics/pokemon/back_pics/tropius_back_pic.png)bin632 -> 632 bytes
-rw-r--r--graphics/pokemon/tropius/footprint.png (renamed from graphics/pokemon/footprints/tropius_footprint.png)bin109 -> 109 bytes
-rw-r--r--graphics/pokemon/tropius/front.png (renamed from graphics/pokemon/front_pics/tropius_still_front_pic.png)bin1172 -> 1172 bytes
-rw-r--r--graphics/pokemon/tropius/icon.png (renamed from graphics/pokemon/icons/tropius_icon.png)bin422 -> 422 bytes
-rw-r--r--graphics/pokemon/tropius/normal.pal (renamed from graphics/pokemon/palettes/tropius_palette.pal)0
-rw-r--r--graphics/pokemon/tropius/shiny.pal (renamed from graphics/pokemon/palettes/tropius_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/typhlosion/back.png (renamed from graphics/pokemon/back_pics/typhlosion_back_pic.png)bin849 -> 849 bytes
-rw-r--r--graphics/pokemon/typhlosion/footprint.png (renamed from graphics/pokemon/footprints/typhlosion_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/typhlosion/front.png (renamed from graphics/pokemon/front_pics/typhlosion_still_front_pic.png)bin896 -> 896 bytes
-rw-r--r--graphics/pokemon/typhlosion/icon.png (renamed from graphics/pokemon/icons/typhlosion_icon.png)bin417 -> 417 bytes
-rw-r--r--graphics/pokemon/typhlosion/normal.pal (renamed from graphics/pokemon/palettes/typhlosion_palette.pal)0
-rw-r--r--graphics/pokemon/typhlosion/shiny.pal (renamed from graphics/pokemon/palettes/typhlosion_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/tyranitar/back.png (renamed from graphics/pokemon/back_pics/tyranitar_back_pic.png)bin776 -> 776 bytes
-rw-r--r--graphics/pokemon/tyranitar/footprint.png (renamed from graphics/pokemon/footprints/tyranitar_footprint.png)bin97 -> 97 bytes
-rw-r--r--graphics/pokemon/tyranitar/front.png (renamed from graphics/pokemon/front_pics/tyranitar_still_front_pic.png)bin1095 -> 1095 bytes
-rw-r--r--graphics/pokemon/tyranitar/icon.png (renamed from graphics/pokemon/icons/tyranitar_icon.png)bin435 -> 435 bytes
-rw-r--r--graphics/pokemon/tyranitar/normal.pal (renamed from graphics/pokemon/palettes/tyranitar_palette.pal)0
-rw-r--r--graphics/pokemon/tyranitar/shiny.pal (renamed from graphics/pokemon/palettes/tyranitar_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/tyrogue/back.png (renamed from graphics/pokemon/back_pics/tyrogue_back_pic.png)bin618 -> 618 bytes
-rw-r--r--graphics/pokemon/tyrogue/footprint.png (renamed from graphics/pokemon/footprints/tyrogue_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/tyrogue/front.png (renamed from graphics/pokemon/front_pics/tyrogue_still_front_pic.png)bin530 -> 530 bytes
-rw-r--r--graphics/pokemon/tyrogue/icon.png (renamed from graphics/pokemon/icons/tyrogue_icon.png)bin321 -> 321 bytes
-rw-r--r--graphics/pokemon/tyrogue/normal.pal (renamed from graphics/pokemon/palettes/tyrogue_palette.pal)0
-rw-r--r--graphics/pokemon/tyrogue/shiny.pal (renamed from graphics/pokemon/palettes/tyrogue_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/umbreon/back.png (renamed from graphics/pokemon/back_pics/umbreon_back_pic.png)bin638 -> 638 bytes
-rw-r--r--graphics/pokemon/umbreon/footprint.png (renamed from graphics/pokemon/footprints/umbreon_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/umbreon/front.png (renamed from graphics/pokemon/front_pics/umbreon_still_front_pic.png)bin650 -> 650 bytes
-rw-r--r--graphics/pokemon/umbreon/icon.png (renamed from graphics/pokemon/icons/umbreon_icon.png)bin358 -> 358 bytes
-rw-r--r--graphics/pokemon/umbreon/normal.pal (renamed from graphics/pokemon/palettes/umbreon_palette.pal)0
-rw-r--r--graphics/pokemon/umbreon/shiny.pal (renamed from graphics/pokemon/palettes/umbreon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/unown/a/back.png (renamed from graphics/pokemon/back_pics/unown_a_back_pic.png)bin376 -> 376 bytes
-rw-r--r--graphics/pokemon/unown/a/front.png (renamed from graphics/pokemon/front_pics/unown_a_still_front_pic.png)bin337 -> 337 bytes
-rw-r--r--graphics/pokemon/unown/a/icon.png (renamed from graphics/pokemon/icons/unown_a_icon.png)bin245 -> 245 bytes
-rw-r--r--graphics/pokemon/unown/b/back.png (renamed from graphics/pokemon/back_pics/unown_b_back_pic.png)bin394 -> 394 bytes
-rw-r--r--graphics/pokemon/unown/b/front.png (renamed from graphics/pokemon/front_pics/unown_b_still_front_pic.png)bin355 -> 355 bytes
-rw-r--r--graphics/pokemon/unown/b/icon.png (renamed from graphics/pokemon/icons/unown_B_icon.png)bin256 -> 256 bytes
-rw-r--r--graphics/pokemon/unown/c/back.png (renamed from graphics/pokemon/back_pics/unown_c_back_pic.png)bin505 -> 505 bytes
-rw-r--r--graphics/pokemon/unown/c/front.png (renamed from graphics/pokemon/front_pics/unown_c_still_front_pic.png)bin395 -> 395 bytes
-rw-r--r--graphics/pokemon/unown/c/icon.png (renamed from graphics/pokemon/icons/unown_C_icon.png)bin276 -> 276 bytes
-rw-r--r--graphics/pokemon/unown/d/back.png (renamed from graphics/pokemon/back_pics/unown_d_back_pic.png)bin451 -> 451 bytes
-rw-r--r--graphics/pokemon/unown/d/front.png (renamed from graphics/pokemon/front_pics/unown_d_still_front_pic.png)bin352 -> 352 bytes
-rw-r--r--graphics/pokemon/unown/d/icon.png (renamed from graphics/pokemon/icons/unown_D_icon.png)bin257 -> 257 bytes
-rw-r--r--graphics/pokemon/unown/e/back.png (renamed from graphics/pokemon/back_pics/unown_e_back_pic.png)bin400 -> 400 bytes
-rw-r--r--graphics/pokemon/unown/e/front.png (renamed from graphics/pokemon/front_pics/unown_e_still_front_pic.png)bin325 -> 325 bytes
-rw-r--r--graphics/pokemon/unown/e/icon.png (renamed from graphics/pokemon/icons/unown_E_icon.png)bin249 -> 249 bytes
-rw-r--r--graphics/pokemon/unown/exclamation_mark/back.png (renamed from graphics/pokemon/back_pics/unown_exclamation_mark_back_pic.png)bin312 -> 312 bytes
-rw-r--r--graphics/pokemon/unown/exclamation_mark/front.png (renamed from graphics/pokemon/front_pics/unown_exclamation_mark_still_front_pic.png)bin294 -> 294 bytes
-rw-r--r--graphics/pokemon/unown/exclamation_mark/icon.png (renamed from graphics/pokemon/icons/unown_exclamation_mark_icon.png)bin220 -> 220 bytes
-rw-r--r--graphics/pokemon/unown/f/back.png (renamed from graphics/pokemon/back_pics/unown_f_back_pic.png)bin417 -> 417 bytes
-rw-r--r--graphics/pokemon/unown/f/front.png (renamed from graphics/pokemon/front_pics/unown_f_still_front_pic.png)bin364 -> 364 bytes
-rw-r--r--graphics/pokemon/unown/f/icon.png (renamed from graphics/pokemon/icons/unown_F_icon.png)bin269 -> 269 bytes
-rw-r--r--graphics/pokemon/unown/footprint.png (renamed from graphics/pokemon/footprints/unown_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/unown/g/back.png (renamed from graphics/pokemon/back_pics/unown_g_back_pic.png)bin431 -> 431 bytes
-rw-r--r--graphics/pokemon/unown/g/front.png (renamed from graphics/pokemon/front_pics/unown_g_still_front_pic.png)bin359 -> 359 bytes
-rw-r--r--graphics/pokemon/unown/g/icon.png (renamed from graphics/pokemon/icons/unown_G_icon.png)bin241 -> 241 bytes
-rw-r--r--graphics/pokemon/unown/h/back.png (renamed from graphics/pokemon/back_pics/unown_h_back_pic.png)bin534 -> 534 bytes
-rw-r--r--graphics/pokemon/unown/h/front.png (renamed from graphics/pokemon/front_pics/unown_h_still_front_pic.png)bin424 -> 424 bytes
-rw-r--r--graphics/pokemon/unown/h/icon.png (renamed from graphics/pokemon/icons/unown_H_icon.png)bin270 -> 270 bytes
-rw-r--r--graphics/pokemon/unown/i/back.png (renamed from graphics/pokemon/back_pics/unown_i_back_pic.png)bin328 -> 328 bytes
-rw-r--r--graphics/pokemon/unown/i/front.png (renamed from graphics/pokemon/front_pics/unown_i_still_front_pic.png)bin305 -> 305 bytes
-rw-r--r--graphics/pokemon/unown/i/icon.png (renamed from graphics/pokemon/icons/unown_I_icon.png)bin223 -> 223 bytes
-rw-r--r--graphics/pokemon/unown/j/back.png (renamed from graphics/pokemon/back_pics/unown_j_back_pic.png)bin370 -> 370 bytes
-rw-r--r--graphics/pokemon/unown/j/front.png (renamed from graphics/pokemon/front_pics/unown_j_still_front_pic.png)bin334 -> 334 bytes
-rw-r--r--graphics/pokemon/unown/j/icon.png (renamed from graphics/pokemon/icons/unown_J_icon.png)bin244 -> 244 bytes
-rw-r--r--graphics/pokemon/unown/k/back.png (renamed from graphics/pokemon/back_pics/unown_k_back_pic.png)bin388 -> 388 bytes
-rw-r--r--graphics/pokemon/unown/k/front.png (renamed from graphics/pokemon/front_pics/unown_k_still_front_pic.png)bin347 -> 347 bytes
-rw-r--r--graphics/pokemon/unown/k/icon.png (renamed from graphics/pokemon/icons/unown_K_icon.png)bin244 -> 244 bytes
-rw-r--r--graphics/pokemon/unown/l/back.png (renamed from graphics/pokemon/back_pics/unown_l_back_pic.png)bin356 -> 356 bytes
-rw-r--r--graphics/pokemon/unown/l/front.png (renamed from graphics/pokemon/front_pics/unown_l_still_front_pic.png)bin315 -> 315 bytes
-rw-r--r--graphics/pokemon/unown/l/icon.png (renamed from graphics/pokemon/icons/unown_L_icon.png)bin243 -> 243 bytes
-rw-r--r--graphics/pokemon/unown/m/back.png (renamed from graphics/pokemon/back_pics/unown_m_back_pic.png)bin499 -> 499 bytes
-rw-r--r--graphics/pokemon/unown/m/front.png (renamed from graphics/pokemon/front_pics/unown_m_still_front_pic.png)bin414 -> 414 bytes
-rw-r--r--graphics/pokemon/unown/m/icon.png (renamed from graphics/pokemon/icons/unown_M_icon.png)bin268 -> 268 bytes
-rw-r--r--graphics/pokemon/unown/n/back.png (renamed from graphics/pokemon/back_pics/unown_n_back_pic.png)bin474 -> 474 bytes
-rw-r--r--graphics/pokemon/unown/n/front.png (renamed from graphics/pokemon/front_pics/unown_n_still_front_pic.png)bin379 -> 379 bytes
-rw-r--r--graphics/pokemon/unown/n/icon.png (renamed from graphics/pokemon/icons/unown_N_icon.png)bin259 -> 259 bytes
-rw-r--r--graphics/pokemon/unown/normal.pal (renamed from graphics/pokemon/palettes/unown_palette.pal)0
-rw-r--r--graphics/pokemon/unown/o/back.png (renamed from graphics/pokemon/back_pics/unown_o_back_pic.png)bin517 -> 517 bytes
-rw-r--r--graphics/pokemon/unown/o/front.png (renamed from graphics/pokemon/front_pics/unown_o_still_front_pic.png)bin417 -> 417 bytes
-rw-r--r--graphics/pokemon/unown/o/icon.png (renamed from graphics/pokemon/icons/unown_O_icon.png)bin260 -> 260 bytes
-rw-r--r--graphics/pokemon/unown/p/back.png (renamed from graphics/pokemon/back_pics/unown_p_back_pic.png)bin333 -> 333 bytes
-rw-r--r--graphics/pokemon/unown/p/front.png (renamed from graphics/pokemon/front_pics/unown_p_still_front_pic.png)bin312 -> 312 bytes
-rw-r--r--graphics/pokemon/unown/p/icon.png (renamed from graphics/pokemon/icons/unown_P_icon.png)bin227 -> 227 bytes
-rw-r--r--graphics/pokemon/unown/q/back.png (renamed from graphics/pokemon/back_pics/unown_q_back_pic.png)bin335 -> 335 bytes
-rw-r--r--graphics/pokemon/unown/q/front.png (renamed from graphics/pokemon/front_pics/unown_q_still_front_pic.png)bin320 -> 320 bytes
-rw-r--r--graphics/pokemon/unown/q/icon.png (renamed from graphics/pokemon/icons/unown_Q_icon.png)bin238 -> 238 bytes
-rw-r--r--graphics/pokemon/unown/question_mark/back.png (renamed from graphics/pokemon/back_pics/unown_question_mark_back_pic.png)bin382 -> 382 bytes
-rw-r--r--graphics/pokemon/unown/question_mark/front.png (renamed from graphics/pokemon/front_pics/unown_question_mark_still_front_pic.png)bin332 -> 332 bytes
-rw-r--r--graphics/pokemon/unown/question_mark/icon.png (renamed from graphics/pokemon/icons/unown_question_mark_icon.png)bin245 -> 245 bytes
-rw-r--r--graphics/pokemon/unown/r/back.png (renamed from graphics/pokemon/back_pics/unown_r_back_pic.png)bin337 -> 337 bytes
-rw-r--r--graphics/pokemon/unown/r/front.png (renamed from graphics/pokemon/front_pics/unown_r_still_front_pic.png)bin313 -> 313 bytes
-rw-r--r--graphics/pokemon/unown/r/icon.png (renamed from graphics/pokemon/icons/unown_R_icon.png)bin232 -> 232 bytes
-rw-r--r--graphics/pokemon/unown/s/back.png (renamed from graphics/pokemon/back_pics/unown_s_back_pic.png)bin439 -> 439 bytes
-rw-r--r--graphics/pokemon/unown/s/front.png (renamed from graphics/pokemon/front_pics/unown_s_still_front_pic.png)bin363 -> 363 bytes
-rw-r--r--graphics/pokemon/unown/s/icon.png (renamed from graphics/pokemon/icons/unown_S_icon.png)bin259 -> 259 bytes
-rw-r--r--graphics/pokemon/unown/shiny.pal (renamed from graphics/pokemon/palettes/unown_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/unown/t/back.png (renamed from graphics/pokemon/back_pics/unown_t_back_pic.png)bin324 -> 324 bytes
-rw-r--r--graphics/pokemon/unown/t/front.png (renamed from graphics/pokemon/front_pics/unown_t_still_front_pic.png)bin316 -> 316 bytes
-rw-r--r--graphics/pokemon/unown/t/icon.png (renamed from graphics/pokemon/icons/unown_T_icon.png)bin241 -> 241 bytes
-rw-r--r--graphics/pokemon/unown/u/back.png (renamed from graphics/pokemon/back_pics/unown_u_back_pic.png)bin454 -> 454 bytes
-rw-r--r--graphics/pokemon/unown/u/front.png (renamed from graphics/pokemon/front_pics/unown_u_still_front_pic.png)bin391 -> 391 bytes
-rw-r--r--graphics/pokemon/unown/u/icon.png (renamed from graphics/pokemon/icons/unown_U_icon.png)bin250 -> 250 bytes
-rw-r--r--graphics/pokemon/unown/v/back.png (renamed from graphics/pokemon/back_pics/unown_v_back_pic.png)bin416 -> 416 bytes
-rw-r--r--graphics/pokemon/unown/v/front.png (renamed from graphics/pokemon/front_pics/unown_v_still_front_pic.png)bin349 -> 349 bytes
-rw-r--r--graphics/pokemon/unown/v/icon.png (renamed from graphics/pokemon/icons/unown_V_icon.png)bin255 -> 255 bytes
-rw-r--r--graphics/pokemon/unown/w/back.png (renamed from graphics/pokemon/back_pics/unown_w_back_pic.png)bin378 -> 378 bytes
-rw-r--r--graphics/pokemon/unown/w/front.png (renamed from graphics/pokemon/front_pics/unown_w_still_front_pic.png)bin355 -> 355 bytes
-rw-r--r--graphics/pokemon/unown/w/icon.png (renamed from graphics/pokemon/icons/unown_W_icon.png)bin261 -> 261 bytes
-rw-r--r--graphics/pokemon/unown/x/back.png (renamed from graphics/pokemon/back_pics/unown_x_back_pic.png)bin376 -> 376 bytes
-rw-r--r--graphics/pokemon/unown/x/front.png (renamed from graphics/pokemon/front_pics/unown_x_still_front_pic.png)bin337 -> 337 bytes
-rw-r--r--graphics/pokemon/unown/x/icon.png (renamed from graphics/pokemon/icons/unown_X_icon.png)bin255 -> 255 bytes
-rw-r--r--graphics/pokemon/unown/y/back.png (renamed from graphics/pokemon/back_pics/unown_y_back_pic.png)bin404 -> 404 bytes
-rw-r--r--graphics/pokemon/unown/y/front.png (renamed from graphics/pokemon/front_pics/unown_y_still_front_pic.png)bin347 -> 347 bytes
-rw-r--r--graphics/pokemon/unown/y/icon.png (renamed from graphics/pokemon/icons/unown_Y_icon.png)bin251 -> 251 bytes
-rw-r--r--graphics/pokemon/unown/z/back.png (renamed from graphics/pokemon/back_pics/unown_z_back_pic.png)bin348 -> 348 bytes
-rw-r--r--graphics/pokemon/unown/z/front.png (renamed from graphics/pokemon/front_pics/unown_z_still_front_pic.png)bin324 -> 324 bytes
-rw-r--r--graphics/pokemon/unown/z/icon.png (renamed from graphics/pokemon/icons/unown_Z_icon.png)bin244 -> 244 bytes
-rw-r--r--graphics/pokemon/ursaring/back.png (renamed from graphics/pokemon/back_pics/ursaring_back_pic.png)bin718 -> 718 bytes
-rw-r--r--graphics/pokemon/ursaring/footprint.png (renamed from graphics/pokemon/footprints/ursaring_footprint.png)bin99 -> 99 bytes
-rw-r--r--graphics/pokemon/ursaring/front.png (renamed from graphics/pokemon/front_pics/ursaring_still_front_pic.png)bin894 -> 894 bytes
-rw-r--r--graphics/pokemon/ursaring/icon.png (renamed from graphics/pokemon/icons/ursaring_icon.png)bin355 -> 355 bytes
-rw-r--r--graphics/pokemon/ursaring/normal.pal (renamed from graphics/pokemon/palettes/ursaring_palette.pal)0
-rw-r--r--graphics/pokemon/ursaring/shiny.pal (renamed from graphics/pokemon/palettes/ursaring_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/vaporeon/back.png (renamed from graphics/pokemon/back_pics/vaporeon_back_pic.png)bin572 -> 572 bytes
-rw-r--r--graphics/pokemon/vaporeon/footprint.png (renamed from graphics/pokemon/footprints/vaporeon_footprint.png)bin94 -> 94 bytes
-rw-r--r--graphics/pokemon/vaporeon/front.png (renamed from graphics/pokemon/front_pics/vaporeon_still_front_pic.png)bin802 -> 802 bytes
-rw-r--r--graphics/pokemon/vaporeon/icon.png (renamed from graphics/pokemon/icons/vaporeon_icon.png)bin393 -> 393 bytes
-rw-r--r--graphics/pokemon/vaporeon/normal.pal (renamed from graphics/pokemon/palettes/vaporeon_palette.pal)0
-rw-r--r--graphics/pokemon/vaporeon/shiny.pal (renamed from graphics/pokemon/palettes/vaporeon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/venomoth/back.png (renamed from graphics/pokemon/back_pics/venomoth_back_pic.png)bin769 -> 769 bytes
-rw-r--r--graphics/pokemon/venomoth/footprint.png (renamed from graphics/pokemon/footprints/venomoth_footprint.png)bin76 -> 76 bytes
-rw-r--r--graphics/pokemon/venomoth/front.png (renamed from graphics/pokemon/front_pics/venomoth_still_front_pic.png)bin851 -> 851 bytes
-rw-r--r--graphics/pokemon/venomoth/icon.png (renamed from graphics/pokemon/icons/venomoth_icon.png)bin400 -> 400 bytes
-rw-r--r--graphics/pokemon/venomoth/normal.pal (renamed from graphics/pokemon/palettes/venomoth_palette.pal)0
-rw-r--r--graphics/pokemon/venomoth/shiny.pal (renamed from graphics/pokemon/palettes/venomoth_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/venonat/back.png (renamed from graphics/pokemon/back_pics/venonat_back_pic.png)bin678 -> 678 bytes
-rw-r--r--graphics/pokemon/venonat/footprint.png (renamed from graphics/pokemon/footprints/venonat_footprint.png)bin89 -> 89 bytes
-rw-r--r--graphics/pokemon/venonat/front.png (renamed from graphics/pokemon/front_pics/venonat_still_front_pic.png)bin696 -> 696 bytes
-rw-r--r--graphics/pokemon/venonat/icon.png (renamed from graphics/pokemon/icons/venonat_icon.png)bin322 -> 322 bytes
-rw-r--r--graphics/pokemon/venonat/normal.pal (renamed from graphics/pokemon/palettes/venonat_palette.pal)0
-rw-r--r--graphics/pokemon/venonat/shiny.pal (renamed from graphics/pokemon/palettes/venonat_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/venusaur/back.png (renamed from graphics/pokemon/back_pics/venusaur_back_pic.png)bin948 -> 948 bytes
-rw-r--r--graphics/pokemon/venusaur/footprint.png (renamed from graphics/pokemon/footprints/venusaur_footprint.png)bin96 -> 96 bytes
-rw-r--r--graphics/pokemon/venusaur/front.png (renamed from graphics/pokemon/front_pics/venusaur_still_front_pic.png)bin1107 -> 1107 bytes
-rw-r--r--graphics/pokemon/venusaur/icon.png (renamed from graphics/pokemon/icons/venusaur_icon.png)bin447 -> 447 bytes
-rw-r--r--graphics/pokemon/venusaur/normal.pal (renamed from graphics/pokemon/palettes/venusaur_palette.pal)0
-rw-r--r--graphics/pokemon/venusaur/shiny.pal (renamed from graphics/pokemon/palettes/venusaur_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/vibrava/back.png (renamed from graphics/pokemon/back_pics/vibrava_back_pic.png)bin518 -> 518 bytes
-rw-r--r--graphics/pokemon/vibrava/footprint.png (renamed from graphics/pokemon/footprints/vibrava_footprint.png)bin86 -> 86 bytes
-rw-r--r--graphics/pokemon/vibrava/front.png (renamed from graphics/pokemon/front_pics/vibrava_still_front_pic.png)bin708 -> 708 bytes
-rw-r--r--graphics/pokemon/vibrava/icon.png (renamed from graphics/pokemon/icons/vibrava_icon.png)bin356 -> 356 bytes
-rw-r--r--graphics/pokemon/vibrava/normal.pal (renamed from graphics/pokemon/palettes/vibrava_palette.pal)0
-rw-r--r--graphics/pokemon/vibrava/shiny.pal (renamed from graphics/pokemon/palettes/vibrava_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/victreebel/back.png (renamed from graphics/pokemon/back_pics/victreebel_back_pic.png)bin752 -> 752 bytes
-rw-r--r--graphics/pokemon/victreebel/footprint.png (renamed from graphics/pokemon/footprints/victreebel_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/victreebel/front.png (renamed from graphics/pokemon/front_pics/victreebel_still_front_pic.png)bin907 -> 907 bytes
-rw-r--r--graphics/pokemon/victreebel/icon.png (renamed from graphics/pokemon/icons/victreebel_icon.png)bin437 -> 437 bytes
-rw-r--r--graphics/pokemon/victreebel/normal.pal (renamed from graphics/pokemon/palettes/victreebel_palette.pal)0
-rw-r--r--graphics/pokemon/victreebel/shiny.pal (renamed from graphics/pokemon/palettes/victreebel_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/vigoroth/back.png (renamed from graphics/pokemon/back_pics/vigoroth_back_pic.png)bin589 -> 589 bytes
-rw-r--r--graphics/pokemon/vigoroth/footprint.png (renamed from graphics/pokemon/footprints/vigoroth_footprint.png)bin110 -> 110 bytes
-rw-r--r--graphics/pokemon/vigoroth/front.png (renamed from graphics/pokemon/front_pics/vigoroth_still_front_pic.png)bin886 -> 886 bytes
-rw-r--r--graphics/pokemon/vigoroth/icon.png (renamed from graphics/pokemon/icons/vigoroth_icon.png)bin358 -> 358 bytes
-rw-r--r--graphics/pokemon/vigoroth/normal.pal (renamed from graphics/pokemon/palettes/vigoroth_palette.pal)0
-rw-r--r--graphics/pokemon/vigoroth/shiny.pal (renamed from graphics/pokemon/palettes/vigoroth_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/vileplume/back.png (renamed from graphics/pokemon/back_pics/vileplume_back_pic.png)bin860 -> 860 bytes
-rw-r--r--graphics/pokemon/vileplume/footprint.png (renamed from graphics/pokemon/footprints/vileplume_footprint.png)bin89 -> 89 bytes
-rw-r--r--graphics/pokemon/vileplume/front.png (renamed from graphics/pokemon/front_pics/vileplume_still_front_pic.png)bin694 -> 694 bytes
-rw-r--r--graphics/pokemon/vileplume/icon.png (renamed from graphics/pokemon/icons/vileplume_icon.png)bin410 -> 410 bytes
-rw-r--r--graphics/pokemon/vileplume/normal.pal (renamed from graphics/pokemon/palettes/vileplume_palette.pal)0
-rw-r--r--graphics/pokemon/vileplume/shiny.pal (renamed from graphics/pokemon/palettes/vileplume_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/volbeat/back.png (renamed from graphics/pokemon/back_pics/volbeat_back_pic.png)bin702 -> 702 bytes
-rw-r--r--graphics/pokemon/volbeat/footprint.png (renamed from graphics/pokemon/footprints/volbeat_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/volbeat/front.png (renamed from graphics/pokemon/front_pics/volbeat_still_front_pic.png)bin774 -> 774 bytes
-rw-r--r--graphics/pokemon/volbeat/icon.png (renamed from graphics/pokemon/icons/volbeat_icon.png)bin335 -> 335 bytes
-rw-r--r--graphics/pokemon/volbeat/normal.pal (renamed from graphics/pokemon/palettes/volbeat_palette.pal)0
-rw-r--r--graphics/pokemon/volbeat/shiny.pal (renamed from graphics/pokemon/palettes/volbeat_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/voltorb/back.png (renamed from graphics/pokemon/back_pics/voltorb_back_pic.png)bin475 -> 475 bytes
-rw-r--r--graphics/pokemon/voltorb/footprint.png (renamed from graphics/pokemon/footprints/voltorb_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/voltorb/front.png (renamed from graphics/pokemon/front_pics/voltorb_still_front_pic.png)bin407 -> 407 bytes
-rw-r--r--graphics/pokemon/voltorb/icon.png (renamed from graphics/pokemon/icons/voltorb_icon.png)bin242 -> 242 bytes
-rw-r--r--graphics/pokemon/voltorb/normal.pal (renamed from graphics/pokemon/palettes/voltorb_palette.pal)0
-rw-r--r--graphics/pokemon/voltorb/shiny.pal (renamed from graphics/pokemon/palettes/voltorb_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/vulpix/back.png (renamed from graphics/pokemon/back_pics/vulpix_back_pic.png)bin656 -> 656 bytes
-rw-r--r--graphics/pokemon/vulpix/footprint.png (renamed from graphics/pokemon/footprints/vulpix_footprint.png)bin95 -> 95 bytes
-rw-r--r--graphics/pokemon/vulpix/front.png (renamed from graphics/pokemon/front_pics/vulpix_still_front_pic.png)bin669 -> 669 bytes
-rw-r--r--graphics/pokemon/vulpix/icon.png (renamed from graphics/pokemon/icons/vulpix_icon.png)bin307 -> 307 bytes
-rw-r--r--graphics/pokemon/vulpix/normal.pal (renamed from graphics/pokemon/palettes/vulpix_palette.pal)0
-rw-r--r--graphics/pokemon/vulpix/shiny.pal (renamed from graphics/pokemon/palettes/vulpix_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/wailmer/back.png (renamed from graphics/pokemon/back_pics/wailmer_back_pic.png)bin347 -> 347 bytes
-rw-r--r--graphics/pokemon/wailmer/footprint.png (renamed from graphics/pokemon/footprints/wailmer_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/wailmer/front.png (renamed from graphics/pokemon/front_pics/wailmer_still_front_pic.png)bin596 -> 596 bytes
-rw-r--r--graphics/pokemon/wailmer/icon.png (renamed from graphics/pokemon/icons/wailmer_icon.png)bin359 -> 359 bytes
-rw-r--r--graphics/pokemon/wailmer/normal.pal (renamed from graphics/pokemon/palettes/wailmer_palette.pal)0
-rw-r--r--graphics/pokemon/wailmer/shiny.pal (renamed from graphics/pokemon/palettes/wailmer_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/wailord/back.png (renamed from graphics/pokemon/back_pics/wailord_back_pic.png)bin368 -> 368 bytes
-rw-r--r--graphics/pokemon/wailord/footprint.png (renamed from graphics/pokemon/footprints/wailord_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/wailord/front.png (renamed from graphics/pokemon/front_pics/wailord_still_front_pic.png)bin766 -> 766 bytes
-rw-r--r--graphics/pokemon/wailord/icon.png (renamed from graphics/pokemon/icons/wailord_icon.png)bin392 -> 392 bytes
-rw-r--r--graphics/pokemon/wailord/normal.pal (renamed from graphics/pokemon/palettes/wailord_palette.pal)0
-rw-r--r--graphics/pokemon/wailord/shiny.pal (renamed from graphics/pokemon/palettes/wailord_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/walrein/back.png (renamed from graphics/pokemon/back_pics/walrein_back_pic.png)bin727 -> 727 bytes
-rw-r--r--graphics/pokemon/walrein/footprint.png (renamed from graphics/pokemon/footprints/walrein_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/walrein/front.png (renamed from graphics/pokemon/front_pics/walrein_still_front_pic.png)bin997 -> 997 bytes
-rw-r--r--graphics/pokemon/walrein/icon.png (renamed from graphics/pokemon/icons/walrein_icon.png)bin473 -> 473 bytes
-rw-r--r--graphics/pokemon/walrein/normal.pal (renamed from graphics/pokemon/palettes/walrein_palette.pal)0
-rw-r--r--graphics/pokemon/walrein/shiny.pal (renamed from graphics/pokemon/palettes/walrein_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/wartortle/back.png (renamed from graphics/pokemon/back_pics/wartortle_back_pic.png)bin689 -> 689 bytes
-rw-r--r--graphics/pokemon/wartortle/footprint.png (renamed from graphics/pokemon/footprints/wartortle_footprint.png)bin93 -> 93 bytes
-rw-r--r--graphics/pokemon/wartortle/front.png (renamed from graphics/pokemon/front_pics/wartortle_still_front_pic.png)bin794 -> 794 bytes
-rw-r--r--graphics/pokemon/wartortle/icon.png (renamed from graphics/pokemon/icons/wartortle_icon.png)bin371 -> 371 bytes
-rw-r--r--graphics/pokemon/wartortle/normal.pal (renamed from graphics/pokemon/palettes/wartortle_palette.pal)0
-rw-r--r--graphics/pokemon/wartortle/shiny.pal (renamed from graphics/pokemon/palettes/wartortle_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/weedle/back.png (renamed from graphics/pokemon/back_pics/weedle_back_pic.png)bin502 -> 502 bytes
-rw-r--r--graphics/pokemon/weedle/footprint.png (renamed from graphics/pokemon/footprints/weedle_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/weedle/front.png (renamed from graphics/pokemon/front_pics/weedle_still_front_pic.png)bin471 -> 471 bytes
-rw-r--r--graphics/pokemon/weedle/icon.png (renamed from graphics/pokemon/icons/weedle_icon.png)bin279 -> 279 bytes
-rw-r--r--graphics/pokemon/weedle/normal.pal (renamed from graphics/pokemon/palettes/weedle_palette.pal)0
-rw-r--r--graphics/pokemon/weedle/shiny.pal (renamed from graphics/pokemon/palettes/weedle_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/weepinbell/back.png (renamed from graphics/pokemon/back_pics/weepinbell_back_pic.png)bin625 -> 625 bytes
-rw-r--r--graphics/pokemon/weepinbell/footprint.png (renamed from graphics/pokemon/footprints/weepinbell_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/weepinbell/front.png (renamed from graphics/pokemon/front_pics/weepinbell_still_front_pic.png)bin681 -> 681 bytes
-rw-r--r--graphics/pokemon/weepinbell/icon.png (renamed from graphics/pokemon/icons/weepinbell_icon.png)bin365 -> 365 bytes
-rw-r--r--graphics/pokemon/weepinbell/normal.pal (renamed from graphics/pokemon/palettes/weepinbell_palette.pal)0
-rw-r--r--graphics/pokemon/weepinbell/shiny.pal (renamed from graphics/pokemon/palettes/weepinbell_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/weezing/back.png (renamed from graphics/pokemon/back_pics/weezing_back_pic.png)bin687 -> 687 bytes
-rw-r--r--graphics/pokemon/weezing/footprint.png (renamed from graphics/pokemon/footprints/weezing_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/weezing/front.png (renamed from graphics/pokemon/front_pics/weezing_still_front_pic.png)bin988 -> 988 bytes
-rw-r--r--graphics/pokemon/weezing/icon.png (renamed from graphics/pokemon/icons/weezing_icon.png)bin456 -> 456 bytes
-rw-r--r--graphics/pokemon/weezing/normal.pal (renamed from graphics/pokemon/palettes/weezing_palette.pal)0
-rw-r--r--graphics/pokemon/weezing/shiny.pal (renamed from graphics/pokemon/palettes/weezing_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/whiscash/back.png (renamed from graphics/pokemon/back_pics/whiscash_back_pic.png)bin690 -> 690 bytes
-rw-r--r--graphics/pokemon/whiscash/footprint.png (renamed from graphics/pokemon/footprints/whiscash_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/whiscash/front.png (renamed from graphics/pokemon/front_pics/whiscash_still_front_pic.png)bin752 -> 752 bytes
-rw-r--r--graphics/pokemon/whiscash/icon.png (renamed from graphics/pokemon/icons/whiscash_icon.png)bin420 -> 420 bytes
-rw-r--r--graphics/pokemon/whiscash/normal.pal (renamed from graphics/pokemon/palettes/whiscash_palette.pal)0
-rw-r--r--graphics/pokemon/whiscash/shiny.pal (renamed from graphics/pokemon/palettes/whiscash_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/whismur/back.png (renamed from graphics/pokemon/back_pics/whismur_back_pic.png)bin493 -> 493 bytes
-rw-r--r--graphics/pokemon/whismur/footprint.png (renamed from graphics/pokemon/footprints/whismur_footprint.png)bin114 -> 114 bytes
-rw-r--r--graphics/pokemon/whismur/front.png (renamed from graphics/pokemon/front_pics/whismur_still_front_pic.png)bin527 -> 527 bytes
-rw-r--r--graphics/pokemon/whismur/icon.png (renamed from graphics/pokemon/icons/whismur_icon.png)bin291 -> 291 bytes
-rw-r--r--graphics/pokemon/whismur/normal.pal (renamed from graphics/pokemon/palettes/whismur_palette.pal)0
-rw-r--r--graphics/pokemon/whismur/shiny.pal (renamed from graphics/pokemon/palettes/whismur_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/wigglytuff/back.png (renamed from graphics/pokemon/back_pics/wigglytuff_back_pic.png)bin538 -> 538 bytes
-rw-r--r--graphics/pokemon/wigglytuff/footprint.png (renamed from graphics/pokemon/footprints/wigglytuff_footprint.png)bin89 -> 89 bytes
-rw-r--r--graphics/pokemon/wigglytuff/front.png (renamed from graphics/pokemon/front_pics/wigglytuff_still_front_pic.png)bin717 -> 717 bytes
-rw-r--r--graphics/pokemon/wigglytuff/icon.png (renamed from graphics/pokemon/icons/wigglytuff_icon.png)bin327 -> 327 bytes
-rw-r--r--graphics/pokemon/wigglytuff/normal.pal (renamed from graphics/pokemon/palettes/wigglytuff_palette.pal)0
-rw-r--r--graphics/pokemon/wigglytuff/shiny.pal (renamed from graphics/pokemon/palettes/wigglytuff_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/wingull/back.png (renamed from graphics/pokemon/back_pics/wingull_back_pic.png)bin684 -> 684 bytes
-rw-r--r--graphics/pokemon/wingull/footprint.png (renamed from graphics/pokemon/footprints/wingull_footprint.png)bin92 -> 92 bytes
-rw-r--r--graphics/pokemon/wingull/front.png (renamed from graphics/pokemon/front_pics/wingull_still_front_pic.png)bin471 -> 471 bytes
-rw-r--r--graphics/pokemon/wingull/icon.png (renamed from graphics/pokemon/icons/wingull_icon.png)bin360 -> 360 bytes
-rw-r--r--graphics/pokemon/wingull/normal.pal (renamed from graphics/pokemon/palettes/wingull_palette.pal)0
-rw-r--r--graphics/pokemon/wingull/shiny.pal (renamed from graphics/pokemon/palettes/wingull_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/wobbuffet/back.png (renamed from graphics/pokemon/back_pics/wobbuffet_back_pic.png)bin433 -> 433 bytes
-rw-r--r--graphics/pokemon/wobbuffet/footprint.png (renamed from graphics/pokemon/footprints/wobbuffet_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/wobbuffet/front.png (renamed from graphics/pokemon/front_pics/wobbuffet_still_front_pic.png)bin683 -> 683 bytes
-rw-r--r--graphics/pokemon/wobbuffet/icon.png (renamed from graphics/pokemon/icons/wobbuffet_icon.png)bin335 -> 335 bytes
-rw-r--r--graphics/pokemon/wobbuffet/normal.pal (renamed from graphics/pokemon/palettes/wobbuffet_palette.pal)0
-rw-r--r--graphics/pokemon/wobbuffet/shiny.pal (renamed from graphics/pokemon/palettes/wobbuffet_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/wooper/back.png (renamed from graphics/pokemon/back_pics/wooper_back_pic.png)bin533 -> 533 bytes
-rw-r--r--graphics/pokemon/wooper/footprint.png (renamed from graphics/pokemon/footprints/wooper_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/wooper/front.png (renamed from graphics/pokemon/front_pics/wooper_still_front_pic.png)bin464 -> 464 bytes
-rw-r--r--graphics/pokemon/wooper/icon.png (renamed from graphics/pokemon/icons/wooper_icon.png)bin307 -> 307 bytes
-rw-r--r--graphics/pokemon/wooper/normal.pal (renamed from graphics/pokemon/palettes/wooper_palette.pal)0
-rw-r--r--graphics/pokemon/wooper/shiny.pal (renamed from graphics/pokemon/palettes/wooper_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/wurmple/back.png (renamed from graphics/pokemon/back_pics/wurmple_back_pic.png)bin488 -> 488 bytes
-rw-r--r--graphics/pokemon/wurmple/footprint.png (renamed from graphics/pokemon/footprints/wurmple_footprint.png)bin81 -> 81 bytes
-rw-r--r--graphics/pokemon/wurmple/front.png (renamed from graphics/pokemon/front_pics/wurmple_still_front_pic.png)bin522 -> 522 bytes
-rw-r--r--graphics/pokemon/wurmple/icon.png (renamed from graphics/pokemon/icons/wurmple_icon.png)bin331 -> 331 bytes
-rw-r--r--graphics/pokemon/wurmple/normal.pal (renamed from graphics/pokemon/palettes/wurmple_palette.pal)0
-rw-r--r--graphics/pokemon/wurmple/shiny.pal (renamed from graphics/pokemon/palettes/wurmple_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/wynaut/back.png (renamed from graphics/pokemon/back_pics/wynaut_back_pic.png)bin498 -> 498 bytes
-rw-r--r--graphics/pokemon/wynaut/footprint.png (renamed from graphics/pokemon/footprints/wynaut_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/wynaut/front.png (renamed from graphics/pokemon/front_pics/wynaut_still_front_pic.png)bin532 -> 532 bytes
-rw-r--r--graphics/pokemon/wynaut/icon.png (renamed from graphics/pokemon/icons/wynaut_icon.png)bin353 -> 353 bytes
-rw-r--r--graphics/pokemon/wynaut/normal.pal (renamed from graphics/pokemon/palettes/wynaut_palette.pal)0
-rw-r--r--graphics/pokemon/wynaut/shiny.pal (renamed from graphics/pokemon/palettes/wynaut_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/xatu/back.png (renamed from graphics/pokemon/back_pics/xatu_back_pic.png)bin716 -> 716 bytes
-rw-r--r--graphics/pokemon/xatu/footprint.png (renamed from graphics/pokemon/footprints/xatu_footprint.png)bin88 -> 88 bytes
-rw-r--r--graphics/pokemon/xatu/front.png (renamed from graphics/pokemon/front_pics/xatu_still_front_pic.png)bin597 -> 597 bytes
-rw-r--r--graphics/pokemon/xatu/icon.png (renamed from graphics/pokemon/icons/xatu_icon.png)bin350 -> 350 bytes
-rw-r--r--graphics/pokemon/xatu/normal.pal (renamed from graphics/pokemon/palettes/xatu_palette.pal)0
-rw-r--r--graphics/pokemon/xatu/shiny.pal (renamed from graphics/pokemon/palettes/xatu_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/yanma/back.png (renamed from graphics/pokemon/back_pics/yanma_back_pic.png)bin796 -> 796 bytes
-rw-r--r--graphics/pokemon/yanma/footprint.png (renamed from graphics/pokemon/footprints/yanma_footprint.png)bin84 -> 84 bytes
-rw-r--r--graphics/pokemon/yanma/front.png (renamed from graphics/pokemon/front_pics/yanma_still_front_pic.png)bin747 -> 747 bytes
-rw-r--r--graphics/pokemon/yanma/icon.png (renamed from graphics/pokemon/icons/yanma_icon.png)bin388 -> 388 bytes
-rw-r--r--graphics/pokemon/yanma/normal.pal (renamed from graphics/pokemon/palettes/yanma_palette.pal)0
-rw-r--r--graphics/pokemon/yanma/shiny.pal (renamed from graphics/pokemon/palettes/yanma_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/zangoose/back.png (renamed from graphics/pokemon/back_pics/zangoose_back_pic.png)bin734 -> 734 bytes
-rw-r--r--graphics/pokemon/zangoose/footprint.png (renamed from graphics/pokemon/footprints/zangoose_footprint.png)bin103 -> 103 bytes
-rw-r--r--graphics/pokemon/zangoose/front.png (renamed from graphics/pokemon/front_pics/zangoose_still_front_pic.png)bin844 -> 844 bytes
-rw-r--r--graphics/pokemon/zangoose/icon.png (renamed from graphics/pokemon/icons/zangoose_icon.png)bin419 -> 419 bytes
-rw-r--r--graphics/pokemon/zangoose/normal.pal (renamed from graphics/pokemon/palettes/zangoose_palette.pal)0
-rw-r--r--graphics/pokemon/zangoose/shiny.pal (renamed from graphics/pokemon/palettes/zangoose_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/zapdos/back.png (renamed from graphics/pokemon/back_pics/zapdos_back_pic.png)bin652 -> 652 bytes
-rw-r--r--graphics/pokemon/zapdos/footprint.png (renamed from graphics/pokemon/footprints/zapdos_footprint.png)bin104 -> 104 bytes
-rw-r--r--graphics/pokemon/zapdos/front.png (renamed from graphics/pokemon/front_pics/zapdos_still_front_pic.png)bin904 -> 904 bytes
-rw-r--r--graphics/pokemon/zapdos/icon.png (renamed from graphics/pokemon/icons/zapdos_icon.png)bin375 -> 375 bytes
-rw-r--r--graphics/pokemon/zapdos/normal.pal (renamed from graphics/pokemon/palettes/zapdos_palette.pal)0
-rw-r--r--graphics/pokemon/zapdos/shiny.pal (renamed from graphics/pokemon/palettes/zapdos_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/zigzagoon/back.png (renamed from graphics/pokemon/back_pics/zigzagoon_back_pic.png)bin683 -> 683 bytes
-rw-r--r--graphics/pokemon/zigzagoon/footprint.png (renamed from graphics/pokemon/footprints/zigzagoon_footprint.png)bin100 -> 100 bytes
-rw-r--r--graphics/pokemon/zigzagoon/front.png (renamed from graphics/pokemon/front_pics/zigzagoon_still_front_pic.png)bin797 -> 797 bytes
-rw-r--r--graphics/pokemon/zigzagoon/icon.png (renamed from graphics/pokemon/icons/zigzagoon_icon.png)bin347 -> 347 bytes
-rw-r--r--graphics/pokemon/zigzagoon/normal.pal (renamed from graphics/pokemon/palettes/zigzagoon_palette.pal)0
-rw-r--r--graphics/pokemon/zigzagoon/shiny.pal (renamed from graphics/pokemon/palettes/zigzagoon_shiny_palette.pal)0
-rw-r--r--graphics/pokemon/zubat/back.png (renamed from graphics/pokemon/back_pics/zubat_back_pic.png)bin526 -> 526 bytes
-rw-r--r--graphics/pokemon/zubat/footprint.png (renamed from graphics/pokemon/footprints/zubat_footprint.png)bin71 -> 71 bytes
-rw-r--r--graphics/pokemon/zubat/front.png (renamed from graphics/pokemon/front_pics/zubat_still_front_pic.png)bin570 -> 570 bytes
-rw-r--r--graphics/pokemon/zubat/icon.png (renamed from graphics/pokemon/icons/zubat_icon.png)bin335 -> 335 bytes
-rw-r--r--graphics/pokemon/zubat/normal.pal (renamed from graphics/pokemon/palettes/zubat_palette.pal)0
-rw-r--r--graphics/pokemon/zubat/shiny.pal (renamed from graphics/pokemon/palettes/zubat_shiny_palette.pal)0
-rw-r--r--graphics/spinda_spots/spot_0.binbin0 -> 32 bytes
-rw-r--r--graphics/spinda_spots/spot_1.binbin0 -> 32 bytes
-rw-r--r--graphics/spinda_spots/spot_2.binbin0 -> 32 bytes
-rw-r--r--graphics/spinda_spots/spot_3.binbin0 -> 32 bytes
-rw-r--r--graphics/ss_anne/unk_8479838.pngbin0 -> 188 bytes
-rw-r--r--graphics/ss_anne/unk_8479A38.pngbin0 -> 271 bytes
-rw-r--r--graphics/teachy_tv/bg1_tilemap.binbin0 -> 2048 bytes
-rw-r--r--graphics/teachy_tv/bg2_tilemap.binbin0 -> 2048 bytes
-rw-r--r--graphics/teachy_tv/palettes.pal67
-rw-r--r--graphics/teachy_tv/tiles.pngbin0 -> 1761 bytes
-rw-r--r--graphics/text_window/unk_841F1C8.pngbin0 -> 257 bytes
-rw-r--r--graphics_file_rules.mk55
-rw-r--r--include/battle.h52
-rw-r--r--include/battle_2.h2
-rw-r--r--include/battle_ai_script_commands.h2
-rw-r--r--include/battle_anim.h18
-rw-r--r--include/battle_util.h1
-rw-r--r--include/berry.h1
-rw-r--r--include/berry_pouch.h12
-rw-r--r--include/berry_powder.h6
-rw-r--r--include/bg.h13
-rw-r--r--include/bike.h2
-rw-r--r--include/cereader_tool.h42
-rw-r--r--include/config.h2
-rw-r--r--include/constants/battle.h4
-rw-r--r--include/constants/battle_move_effects.h2
-rw-r--r--include/constants/fanfares.h22
-rw-r--r--include/constants/flags.h10
-rw-r--r--include/constants/global.h83
-rw-r--r--include/constants/hoenn_cries.h143
-rw-r--r--include/constants/item_effects.h79
-rw-r--r--include/constants/items.h68
-rw-r--r--include/constants/moves.h2
-rw-r--r--include/constants/songs.h4
-rw-r--r--include/constants/species.h834
-rw-r--r--include/constants/vars.h6
-rw-r--r--include/data2.h25
-rw-r--r--include/decompress.h19
-rw-r--r--include/dma3.h51
-rw-r--r--include/dynamic_placeholder_text_util.h12
-rw-r--r--include/event_scripts.h381
-rw-r--r--include/field_effect.h1
-rw-r--r--include/field_fadetransition.h1
-rw-r--r--include/field_map_obj.h14
-rw-r--r--include/field_player_avatar.h8
-rw-r--r--include/field_poison.h10
-rw-r--r--include/field_screen_effect.h1
-rw-r--r--include/field_specials.h6
-rw-r--r--include/field_weather.h3
-rw-r--r--include/fieldmap.h1
-rw-r--r--include/fldeff.h46
-rw-r--r--include/fldeff_80F9BCC.h16
-rw-r--r--include/gba/defines.h3
-rw-r--r--include/gba/multiboot.h6
-rw-r--r--include/global.fieldmap.h4
-rw-r--r--include/global.h85
-rw-r--r--include/graphics.h793
-rw-r--r--include/hall_of_fame.h3
-rw-r--r--include/help_system.h83
-rw-r--r--include/item.h26
-rw-r--r--include/item_icon.h19
-rw-r--r--include/item_menu.h13
-rw-r--r--include/item_menu_icons.h24
-rw-r--r--include/item_pc.h7
-rw-r--r--include/item_use.h37
-rw-r--r--include/itemfinder.h6
-rw-r--r--include/libgcnmultiboot.h17
-rw-r--r--include/link.h5
-rw-r--r--include/list_menu.h58
-rw-r--r--include/load_save.h2
-rw-r--r--include/m4a.h5
-rw-r--r--include/mail.h7
-rw-r--r--include/mail_data.h13
-rw-r--r--include/main.h2
-rw-r--r--include/menu.h79
-rw-r--r--include/menu_helpers.h33
-rw-r--r--include/menu_indicators.h49
-rw-r--r--include/mevent.h6
-rw-r--r--include/multiboot.h2
-rw-r--r--include/new_game.h1
-rw-r--r--include/new_menu_helpers.h62
-rw-r--r--include/overworld.h23
-rw-r--r--include/palette.h2
-rw-r--r--include/party_menu.h35
-rw-r--r--include/pc_screen_effect.h9
-rw-r--r--include/pokedex.h3
-rw-r--r--include/pokemon.h167
-rw-r--r--include/pokemon_3.h12
-rw-r--r--include/pokemon_icon.h1
-rw-r--r--include/pokemon_storage_system.h1
-rw-r--r--include/quest_log.h5
-rw-r--r--include/region_map.h1
-rw-r--r--include/reset_save_heap.h13
-rw-r--r--include/safari_zone.h4
-rw-r--r--include/save.h2
-rw-r--r--include/save_location.h14
-rw-r--r--include/script.h1
-rw-r--r--include/script_menu.h3
-rw-r--r--include/shop.h11
-rw-r--r--include/sound.h1
-rw-r--r--include/sprite.h27
-rw-r--r--include/strings.h90
-rw-r--r--include/task.h1
-rw-r--r--include/teachy_tv.h3
-rw-r--r--include/text.h19
-rw-r--r--include/text_window.h9
-rw-r--r--include/text_window_graphics.h6
-rw-r--r--include/trainer_card.h43
-rw-r--r--include/trainer_tower.h6
-rw-r--r--include/unk_8159F40.h1
-rw-r--r--include/unk_815C980.h4
-rw-r--r--include/unk_815c27c.h12
-rw-r--r--include/unk_text_util.h11
-rw-r--r--include/wild_encounter.h3
-rw-r--r--include/window.h4
-rw-r--r--json_data_rules.mk9
-rw-r--r--ld_script.txt150
-rw-r--r--src/bag.c29
-rw-r--r--src/battle_ai_script_commands.c340
-rw-r--r--src/battle_anim_mon_movement.c809
-rw-r--r--src/battle_records.c576
-rw-r--r--src/berry.c16
-rw-r--r--src/berry_fix_program.c191
-rw-r--r--src/berry_powder.c130
-rw-r--r--src/bg.c188
-rw-r--r--src/buy_menu_helpers.c216
-rw-r--r--src/cable_car_util.c38
-rw-r--r--src/cereader_tool.c88
-rw-r--r--src/coins.c17
-rw-r--r--src/data/battle_moves.h4617
-rw-r--r--src/data/items.json6062
-rw-r--r--src/data/items.json.txt31
-rw-r--r--src/data/pokemon/base_stats.h12031
-rw-r--r--src/data/pokemon/cry_ids.h140
-rw-r--r--src/data/pokemon/evolution.h187
-rw-r--r--src/data/pokemon/experience_tables.h844
-rw-r--r--src/data/pokemon/item_effects.h420
-rw-r--r--src/data/pokemon/level_up_learnset_pointers.h415
-rw-r--r--src/data/pokemon/level_up_learnsets.h5682
-rw-r--r--src/data/pokemon/tmhm_learnsets.h9388
-rw-r--r--src/data/pokemon/trainer_class_lookups.h308
-rw-r--r--src/daycare.c18
-rw-r--r--src/decompress.c662
-rw-r--r--src/diploma.c285
-rw-r--r--src/dma3_manager.c413
-rw-r--r--src/dynamic_placeholder_text_util.c70
-rw-r--r--src/egg_hatch.c878
-rw-r--r--src/ereader_helpers.c397
-rw-r--r--src/fame_checker.c61
-rw-r--r--src/field_poison.c117
-rw-r--r--src/field_special_scene.c26
-rw-r--r--src/fieldmap.c4
-rw-r--r--src/fldeff_dig.c48
-rw-r--r--src/fldeff_poison.c39
-rw-r--r--src/fldeff_rocksmash.c137
-rw-r--r--src/fldeff_softboiled.c111
-rw-r--r--src/fldeff_strength.c47
-rw-r--r--src/fldeff_sweetscent.c101
-rw-r--r--src/fldeff_teleport.c3
-rw-r--r--src/gpu_regs.c6
-rw-r--r--src/help_system.c1202
-rw-r--r--src/help_system_812B1E0.c1580
-rw-r--r--src/hof_pc.c53
-rw-r--r--src/intro.c2175
-rw-r--r--src/item.c684
-rw-r--r--src/item_menu_icons.c783
-rw-r--r--src/item_pc.c1150
-rw-r--r--src/item_use.c879
-rw-r--r--src/list_menu.c786
-rw-r--r--src/load_save.c15
-rw-r--r--src/mail_data.c186
-rw-r--r--src/main.c19
-rw-r--r--src/map_obj_lock.c6
-rw-r--r--src/menu.c878
-rw-r--r--src/menu2.c12
-rw-r--r--src/menu_helpers.c251
-rw-r--r--src/menu_indicators.c659
-rw-r--r--src/mevent.c160
-rw-r--r--src/mevent_8145654.c41
-rw-r--r--src/money.c13
-rw-r--r--src/multiboot.c416
-rw-r--r--src/mystery_event_script.c2
-rw-r--r--src/mystery_gift_menu.c16
-rw-r--r--src/new_menu_helpers.c765
-rw-r--r--src/oak_speech.c104
-rw-r--r--src/play_time.c65
-rw-r--r--src/pokemon.c2655
-rw-r--r--src/quest_log.c269
-rw-r--r--src/quest_log_8150454.c4
-rw-r--r--src/quest_log_battle.c6
-rw-r--r--src/reset_save_heap.c29
-rw-r--r--src/safari_zone.c80
-rw-r--r--src/save.c2
-rw-r--r--src/save_location.c108
-rw-r--r--src/scrcmd.c16
-rw-r--r--src/script.c2
-rw-r--r--src/seagallop.c4
-rw-r--r--src/slot_machine.c36
-rw-r--r--src/sound.c2
-rw-r--r--src/sprite.c114
-rw-r--r--src/ss_anne.c200
-rw-r--r--src/teachy_tv.c1416
-rw-r--r--src/text.c5
-rw-r--r--src/text_window.c26
-rw-r--r--src/text_window_graphics.c12
-rw-r--r--src/tm_case.c168
-rw-r--r--src/trainer_pokemon_sprites.c4
-rw-r--r--src/trainer_tower.c171
-rw-r--r--src/unk_8159F40.c4
-rw-r--r--src/unk_815C980.c5
-rw-r--r--src/unk_815F138.c322
-rw-r--r--src/vs_seeker.c2
-rw-r--r--src/window.c738
-rw-r--r--src/wireless_communication_status_screen.c8
-rw-r--r--sym_bss.txt43
-rw-r--r--sym_common.txt34
-rw-r--r--sym_ewram.txt310
-rwxr-xr-xtools/asmdiff.sh7
-rw-r--r--tools/br_ips/Makefile13
-rw-r--r--tools/br_ips/br_ips.c321
-rw-r--r--tools/br_ips/global.h27
-rw-r--r--tools/br_ips/ips_patch.c68
-rw-r--r--tools/gbafix/elf.h3147
-rw-r--r--tools/gbafix/gbafix.c508
-rw-r--r--tools/jsonproc/.gitignore1
-rw-r--r--tools/jsonproc/Makefile20
-rw-r--r--tools/jsonproc/inja.hpp3396
-rw-r--r--tools/jsonproc/jsonproc.cpp91
-rw-r--r--tools/jsonproc/jsonproc.h32
-rw-r--r--tools/jsonproc/nlohmann/json.hpp20842
2921 files changed, 188765 insertions, 138013 deletions
diff --git a/.gitattributes b/.gitattributes
index a7233fe6a..2ca17cab1 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -11,6 +11,10 @@ Makefile text eol=lf
*.sha1 text eol=lf
*.sed text eol=lf
*.sh text eol=lf
+*.json text eol=lf
*.png binary
*.bin binary
+
+*.h linguist-language=C
+*.inc linguist-language=Assembly
diff --git a/.gitignore b/.gitignore
index da2cb317c..a4182afc1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,43 +1,50 @@
-*.exe
-*.o
-*.i
-*.elf
-*.gba
*.1bpp
*.4bpp
*.8bpp
+*.DS_Store
+*.bak
+*.bat
+*.diff
+*.dump
+*.elf
+*.exe
+*.fwjpnfont
+*.gba
*.gbapal
-*.lz
-*.rl
-*.pcm
-*.latfont
*.hwjpnfont
-*.fwjpnfont
-*.bat
-sound/**/*.bin
-src/*.s
-tools/agbcc
-tools/binutils
-ld_script_ruby.txt
-ld_script_sapphire.txt
-*.map
+*.i
*.id0
*.id1
*.id2
-*.nam
-*.til
+*.latfont
*.ld
-tags
-types_*.taghl
-*.swp
-*.swo
+*.lz
+*.map
+*.nam
+*.o
+*.pcm
+*.pl
+*.rl
*.s.old
*.s.old2
-*.dump
*.sa*
+*.swo
+*.swp
+*.til
+.fuse*
+.idea/
Thumbs.db
build/
-.idea/
-*.DS_Store
-*.pl
-*.bak
+cmake-build-*
+ld_script_ruby.txt
+ld_script_sapphire.txt
+sound/**/*.bin
+src/*.s
+src/data/items.h
+tags
+tools/agbcc
+tools/binutils
+tools/br_ips/br_ips
+tools/br_ips/ips_patch
+types_*.taghl
+!.travis/calcrom/calcrom.pl
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 000000000..af94cfe81
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,35 @@
+language: generic
+dist: trusty
+sudo: false
+addons:
+ apt:
+ packages:
+ - gcc-multilib
+ - linux-libc-dev
+ - zlib-dev
+cache:
+ apt: true
+install:
+ - pushd $HOME
+ - travis_retry git clone https://github.com/luckytyphlosion/agbcc.git -b new_layout_with_libs
+ - cd agbcc && make && make install prefix=$TRAVIS_BUILD_DIR
+ - popd
+matrix:
+ include:
+ - os: linux
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - g++-7
+ env: _="Build"
+ script:
+ - head -c 16777216 /dev/zero > tmp.bin
+ - make ips_patch -C tools/br_ips
+ - tools/br_ips/ips_patch tmp.bin baserom.ips baserom.gba
+ - rm tmp.bin
+ - make tools CXX=g++-7
+ - make -j2 compare
+after_success:
+ - .travis/calcrom/webhook.sh pokefirered
diff --git a/.travis/calcrom/calcrom.pl b/.travis/calcrom/calcrom.pl
new file mode 100644
index 000000000..7b94c650b
--- /dev/null
+++ b/.travis/calcrom/calcrom.pl
@@ -0,0 +1,120 @@
+#!/usr/bin/perl
+
+use IPC::Cmd qw[ run ];
+
+(@ARGV == 1)
+ or die "ERROR: no map file specified.\n";
+open(my $file, $ARGV[0])
+ or die "ERROR: could not open file '$ARGV[0]'.\n";
+
+my $src = 0;
+my $asm = 0;
+while (my $line = <$file>)
+{
+ if ($line =~ /^ \.(\w+)\s+0x[0-9a-f]+\s+(0x[0-9a-f]+) (\w+)\/.+\.o/)
+ {
+ my $section = $1;
+ my $size = hex($2);
+ my $dir = $3;
+
+ if ($section =~ /text/)
+ {
+ if ($dir eq 'src')
+ {
+ $src += $size;
+ }
+ elsif ($dir eq 'asm')
+ {
+ $asm += $size;
+ }
+ }
+ }
+}
+
+# Note that the grep filters out all branch labels. It also requires a minimum
+# line length of 5, to filter out a ton of generated symbols (like AcCn). No
+# settings to nm seem to remove these symbols. Finally, nm prints out a separate
+# entry for whenever a name appears in a file, not just where it's defined. uniq
+# removes all the duplicate entries.
+#
+#
+# You'd expect this to take a while, because of uniq. It runs in under a second,
+# though. Uniq is pretty fast!
+my $base_cmd = "nm pokefirered.elf | awk '{print \$3}' | grep '^[^_].\\{4\\}' | uniq";
+
+# This looks for Unknown_, Unknown_, or sub_, followed by just numbers. Note that
+# it matches even if stuff precedes the unknown, like sUnknown/gUnknown.
+my $undoc_cmd = "grep '[Uu]nknown_[0-9a-fA-F]*\\|sub_[0-9a-fA-F]*'";
+
+# This looks for every symbol with an address at the end of it. Some things are
+# given a name based on their type / location, but still have an unknown purpose.
+# For example, FooMap_EventScript_FFFFFFF.
+my $partial_doc_cmd = "grep '[0-9a-fA-F]\\{6,7\\}'";
+
+my $count_cmd = "wc -l";
+
+# It sucks that we have to run this three times, but I can't figure out how to get
+# stdin working for subcommands in perl while still having a timeout. It's decently
+# fast anyway.
+my $total_syms_as_string;
+(run (
+ command => "$base_cmd | $count_cmd",
+ buffer => \$total_syms_as_string,
+ timeout => 60
+))
+ or die "ERROR: Error while getting all symbols: $?";
+
+my $undocumented_as_string;
+(run (
+ command => "$base_cmd | $undoc_cmd | $count_cmd",
+ buffer => \$undocumented_as_string,
+ timeout => 60
+))
+ or die "ERROR: Error while filtering for undocumented symbols: $?";
+
+my $partial_documented_as_string;
+(run (
+ command => "$base_cmd | $partial_doc_cmd | $count_cmd",
+ buffer => \$partial_documented_as_string,
+ timeout => 60
+))
+ or die "ERROR: Error while filtering for partial symbols: $?";
+
+# Performing addition on a string converts it to a number. Any string that fails
+# to convert to a number becomes 0. So if our converted number is 0, but our string
+# is nonzero, then the conversion was an error.
+my $undocumented = $undocumented_as_string + 0;
+(($undocumented != 0) and ($undocumented_as_string ne "0"))
+ or die "ERROR: Cannot convert string to num: '$undocumented_as_string'";
+
+my $partial_documented = $partial_documented_as_string + 0;
+(($partial_documented != 0) and ($partial_documented_as_string ne "0"))
+ or die "ERROR: Cannot convert string to num: '$partial_documented_as_string'";
+
+my $total_syms = $total_syms_as_string + 0;
+(($total_syms != 0) and ($total_syms_as_string ne "0"))
+ or die "ERROR: Cannot convert string to num: '$total_syms_as_string'";
+
+($total_syms != 0)
+ or die "ERROR: No symbols found.";
+
+my $total = $src + $asm;
+my $srcPct = sprintf("%.4f", 100 * $src / $total);
+my $asmPct = sprintf("%.4f", 100 * $asm / $total);
+
+# partial_documented is double-counting the unknown_* and sub_* symbols.
+$partial_documented = $partial_documented - $undocumented;
+
+my $documented = $total_syms - ($undocumented + $partial_documented);
+my $docPct = sprintf("%.4f", 100 * $documented / $total_syms);
+my $partialPct = sprintf("%.4f", 100 * $partial_documented / $total_syms);
+my $undocPct = sprintf("%.4f", 100 * $undocumented / $total_syms);
+
+print "$total total bytes of code\n";
+print "$src bytes of code in src ($srcPct%)\n";
+print "$asm bytes of code in asm ($asmPct%)\n";
+print "\n";
+print "$total_syms total symbols\n";
+print "$documented symbols documented ($docPct%)\n";
+print "$partial_documented symbols partially documented ($partialPct%)\n";
+print "$undocumented symbols undocumented ($undocPct%)\n";
diff --git a/.travis/calcrom/webhook.sh b/.travis/calcrom/webhook.sh
new file mode 100755
index 000000000..86da74c87
--- /dev/null
+++ b/.travis/calcrom/webhook.sh
@@ -0,0 +1,16 @@
+#!/bin/bash -ex
+
+# Only run this script if it's the master branch build.
+if [[ "$TRAVIS_BRANCH" != "master" || "$TRAVIS_PULL_REQUEST" != "false" ]]; then
+ exit 0
+fi
+
+build_name=$1
+map_file=$build_name.map
+if [ ! -f $map_file ]; then
+ echo "$map_file does not exist!"
+ exit 1
+fi
+
+output=$(perl $(dirname "$0")/calcrom.pl $build_name.map | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g')
+curl -d "{\"username\": \"$CALCROM_DISCORD_WEBHOOK_USERNAME\", \"avatar_url\": \"$CALCROM_DISCORD_WEBHOOK_AVATAR_URL\", \"content\":\"\`\`\`$build_name progress:\\n$output\`\`\`\"}" -H "Content-Type: application/json" -X POST $CALCROM_DISCORD_WEBHOOK_URL
diff --git a/INSTALL.md b/INSTALL.md
index fc08af81b..4829680de 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,16 +1,19 @@
## Prerequisites
-Until further notice, this repository requires a **baserom.gba** file, which must be [a legitimate copy of English Pokémon FireRed v1.0](https://datomatic.no-intro.org/?page=show_record&s=23&n=1616). See [this article](https://www.howtogeek.com/67241/htg-explains-what-are-md5-sha-1-hashes-and-how-do-i-check-them/) for help on how to verify the checksum.
+| Linux | macOS | Windows 10 (build 18917+) | Windows 10 (1709+) | Windows Vista, 7, 8, 8.1, and 10 (1507, 1511, 1607, 1703)
+| ----- | ----- | ------------------------- | ------------------ | ---------------------------------------------------------
+| none | [Xcode Command Line Tools package][xcode] | [Windows Subsystem for Linux 2][wsl2] | [Windows Subsystem for Linux][wsl] | [Cygwin][cygwin]
-----
+[xcode]: https://developer.apple.com/library/archive/technotes/tn2339/_index.html#//apple_ref/doc/uid/DTS40014588-CH1-DOWNLOADING_COMMAND_LINE_TOOLS_IS_NOT_AVAILABLE_IN_XCODE_FOR_MACOS_10_9__HOW_CAN_I_INSTALL_THEM_ON_MY_MACHINE_
+[wsl2]: https://docs.microsoft.com/windows/wsl/wsl2-install
+[wsl]: https://docs.microsoft.com/windows/wsl/install-win10
+[cygwin]: https://cygwin.com/install.html
-**Linux:** Proceed to [Installation](#installation).
+The [prerelease version of the Linux subsystem](https://docs.microsoft.com/windows/wsl/install-legacy) available in the 1607 and 1703 releases of Windows 10 is obsolete so consider uninstalling it.
-**macOS:** Get the [Xcode command-line tools](https://developer.apple.com/library/archive/technotes/tn2339/_index.html#//apple_ref/doc/uid/DTS40014588-CH1-DOWNLOADING_COMMAND_LINE_TOOLS_IS_NOT_AVAILABLE_IN_XCODE_FOR_MACOS_10_9__HOW_CAN_I_INSTALL_THEM_ON_MY_MACHINE_).
+Make sure that the `build-essential`, `git`, and `libpng-dev` packages are installed. The `build-essential` package includes the `make`, `gcc-core`, and `g++` packages so they do not have to be obtained separately.
-**Windows 10 (1709+):** Get the [Windows Subsystem for Linux](https://docs.microsoft.com/windows/wsl/install-win10).
-
-**Windows Vista, 7, 8, 8.1, and 10 (1507, 1511, 1607, 1703):** Get [Cygwin](https://cygwin.com/install.html) and [include](https://cygwin.com/cygwin-ug-net/setup-net.html#setup-packages) the `make`, `git`, `gcc-core`, `gcc-g++`, and `libpng-devel` packages. If you're on Windows 10 1607 or 1703 and use [the prerelease version of the Linux subsystem](https://docs.microsoft.com/windows/wsl/install-legacy), consider uninstalling it.
+In the case of Cygwin, [include](https://cygwin.com/cygwin-ug-net/setup-net.html#setup-packages) the `make`, `git`, `gcc-core`, `gcc-g++`, and `libpng-devel` packages.
## Installation
@@ -26,7 +29,6 @@ To set up the repository:
make install-sdk prefix=../pokefirered
cd ../pokefirered
- ./build_tools.sh
To build **pokefirered.gba**:
@@ -36,8 +38,18 @@ To confirm it matches the official ROM image while building, do this instead:
make compare -j$(nproc)
-**Note:** If only `.c` or `.s` files were changed, turn off the dependency scanning temporarily. Changes to any other files will be ignored and the build will either fail or not reflect those changes.
+If only `.c` or `.s` files were changed, turn off the dependency scanning temporarily. Changes to any other files will be ignored and the build will either fail or not reflect those changes.
make -j$(nproc) NODEP=1
+**Note (until further notice):** If this is your first time building Pokemon FireRed, an unmodified copy of Pokemon FireRed is required in the project root under the name `baserom.gba`. To generate this, you should run the following commands:
+
+ make ips_patch -C tools/br_ips
+ head -c 16777216 /dev/zero > tmp.bin
+ tools/br_ips/ips_patch tmp.bin baserom.ips baserom.gba
+ make compare -j$(nproc)
+ cp pokefirered.gba baserom.gba
+
+Alternatively, you can obtain an unmodified copy of Pokemon FireRed and use that as baserom.gba. Make sure the SHA1 checksum matches with what's provided in [the README](README.md).
+
**Note 2:** If the build command is not recognized on Linux, including the Linux environment used within Windows, run `nproc` and replace `$(nproc)` with the returned value (e.g.: `make -j4`). Because `nproc` is not available on macOS, the alternative is `sysctl -n hw.ncpu`.
diff --git a/Makefile b/Makefile
index 05ac09c21..3f87a910d 100644
--- a/Makefile
+++ b/Makefile
@@ -3,15 +3,41 @@ CPP := $(CC) -E
LD := tools/binutils/bin/arm-none-eabi-ld
OBJCOPY := tools/binutils/bin/arm-none-eabi-objcopy
+GAME_VERSION := FIRERED
+REVISION := 0
+GAME_LANGUAGE := ENGLISH
+
+# So long as baserom.gba is required, we error out if the
+# user tries to build any ROM other than FireRed.
+ifneq ($(GAME_VERSION),FIRERED)
+$(error We can only build English Pokemon FireRed v1.0 currently)
+else ifneq ($(REVISION),0)
+$(error We can only build English Pokemon FireRed v1.0 currently)
+else ifneq ($(GAME_LANGUAGE),ENGLISH)
+$(error We can only build English Pokemon FireRed v1.0 currently)
+endif
+
+ifeq ($(GAME_VERSION),FIRERED)
TITLE := POKEMON FIRE
-GAME_CODE := BPRE
+GAME_CODE := BPR
+BUILD_NAME := firered
+else
+TITLE := POKEMON LEAF
+GAME_CODE := BPL
+BUILD_NAME := leafgreen
+endif
+ifeq ($(GAME_LANGUAGE),ENGLISH)
+GAME_CODE := $(GAME_CODE)E
+endif
+ifneq ($(REVISION),0)
+BUILD_NAME := $(BUILD_NAME)_rev$(REVISION)
+endif
MAKER_CODE := 01
-REVISION := 0
SHELL := /bin/bash -o pipefail
-ROM := pokefirered.gba
-OBJ_DIR := build/firered
+ROM := poke$(BUILD_NAME).gba
+OBJ_DIR := build/$(BUILD_NAME)
ELF = $(ROM:.gba=.elf)
MAP = $(ROM:.gba=.map)
@@ -26,12 +52,12 @@ ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR)
DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR)
-ASFLAGS := -mcpu=arm7tdmi
+ASFLAGS := -mcpu=arm7tdmi --defsym $(GAME_VERSION)=1 --defsym REVISION=$(REVISION) --defsym $(GAME_LANGUAGE)=1
CC1 := tools/agbcc/bin/agbcc
override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm
-CPPFLAGS := -I tools/agbcc -I tools/agbcc/include -iquote include -nostdinc -undef
+CPPFLAGS := -I tools/agbcc -I tools/agbcc/include -iquote include -nostdinc -undef -D$(GAME_VERSION) -DREVISION=$(REVISION) -D$(GAME_LANGUAGE)
LDFLAGS = -Map ../../$(MAP)
@@ -46,6 +72,7 @@ PREPROC := tools/preproc/preproc
RAMSCRGEN := tools/ramscrgen/ramscrgen
FIX := tools/gbafix/gbafix
MAPJSON := tools/mapjson/mapjson
+JSONPROC := tools/jsonproc/jsonproc
# Clear the default suffixes
.SUFFIXES:
@@ -61,6 +88,16 @@ MAPJSON := tools/mapjson/mapjson
$(shell mkdir -p $(C_BUILDDIR) $(ASM_BUILDDIR) $(DATA_ASM_BUILDDIR) $(SONG_BUILDDIR))
+infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
+
+# Build tools when building the rom
+# Disable dependency scanning for clean/tidy/tools
+ifeq (,$(filter-out all compare,$(MAKECMDGOALS)))
+$(call infoshell, $(MAKE) tools)
+else
+NODEP := 1
+endif
+
C_SRCS := $(wildcard $(C_SUBDIR)/*.c)
C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
@@ -76,6 +113,10 @@ SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS))
OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS)
OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
+MAKEFLAGS += --no-print-directory
+
+AUTO_GEN_TARGETS :=
+
all: rom
rom: $(ROM)
@@ -91,6 +132,7 @@ tools:
@$(MAKE) -C tools/mid2agb
@$(MAKE) -C tools/gbafix
@$(MAKE) -C tools/mapjson
+ @$(MAKE) -C tools/jsonproc
# For contributors to make sure a change didn't affect the contents of the ROM.
compare: rom
@@ -103,6 +145,7 @@ clean: tidy
rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc
rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc
find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} +
+ rm -f $(AUTO_GEN_TARGETS)
@$(MAKE) clean -C berry_fix
@$(MAKE) clean -C tools/gbagfx
@$(MAKE) clean -C tools/scaninc
@@ -114,6 +157,7 @@ clean: tidy
@$(MAKE) clean -C tools/mid2agb
@$(MAKE) clean -C tools/gbafix
@$(MAKE) clean -C tools/mapjson
+ @$(MAKE) clean -C tools/jsonproc
tidy:
rm -f $(ROM) $(ELF) $(MAP)
@@ -123,6 +167,7 @@ tidy:
include graphics_file_rules.mk
include tileset_rules.mk
include map_data_rules.mk
+include json_data_rules.mk
%.s: ;
%.png: ;
@@ -199,10 +244,10 @@ $(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_comm
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS)
cd $(OBJ_DIR) && ../../$(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(LIB)
+ $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
$(ROM): $(ELF)
- $(OBJCOPY) -O binary $< $@
- $(FIX) $@ -p -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
+ $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@
berry_fix/berry_fix.gba:
@$(MAKE) -C berry_fix
diff --git a/asm/battle_1.s b/asm/battle_1.s
index c479650a7..310d1a791 100644
--- a/asm/battle_1.s
+++ b/asm/battle_1.s
@@ -223,11 +223,11 @@ sub_800F380: @ 800F380
movs r0, 0x2
movs r1, 0x12
movs r2, 0x10
- bl sub_815001C
+ bl TextWindow_SetUserSelectedFrame
movs r0, 0x2
movs r1, 0x22
movs r2, 0x10
- bl sub_815001C
+ bl TextWindow_SetUserSelectedFrame
ldr r4, _0800F3F0 @ =gPlttBufferUnfaded
adds r0, r4, 0
adds r0, 0xB8
@@ -257,7 +257,7 @@ sub_800F380: @ 800F380
movs r0, 0
movs r1, 0x30
movs r2, 0x70
- bl sub_814FEAC
+ bl TextWindow_LoadResourcesStdFrame0
adds r0, r4, 0
adds r0, 0xEC
movs r1, 0
@@ -517,7 +517,7 @@ _0800F5C8: .4byte 0x00006001
thumb_func_start sub_800F5CC
sub_800F5CC: @ 800F5CC
push {lr}
- ldr r0, _0800F5E0 @ =gUnknown_2023E8A
+ ldr r0, _0800F5E0 @ =gBattleOutcome
ldrb r2, [r0]
cmp r2, 0x3
bne _0800F5E8
@@ -526,7 +526,7 @@ sub_800F5CC: @ 800F5CC
bl sub_80D87BC
b _0800F6F0
.align 2, 0
-_0800F5E0: .4byte gUnknown_2023E8A
+_0800F5E0: .4byte gBattleOutcome
_0800F5E4: .4byte gUnknown_83FE883
_0800F5E8:
ldr r0, _0800F61C @ =gBattleTypeFlags
@@ -1197,7 +1197,7 @@ sub_800FAE0: @ 800FAE0
ldr r0, _0800FB8C @ =gBattle_BG2_Y
strh r1, [r0]
ldr r0, _0800FB90 @ =gUnknown_8248318
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0800FC26
.align 2, 0
_0800FB64: .4byte gBattleTypeFlags
diff --git a/asm/battle_2.s b/asm/battle_2.s
index b4414ad71..3fdaeca33 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -1132,7 +1132,7 @@ _0801067E:
adds r1, r0
ldrh r0, [r1]
strh r0, [r2, 0x10]
- bl sub_8044708
+ bl SetDeoxysStats
ldr r1, _080106F0 @ =gUnknown_2023E82
b _080108B2
.align 2, 0
@@ -1834,7 +1834,7 @@ _08010CE2:
adds r1, r7, 0
bl sub_8010414
bl sub_801017C
- bl sub_8044708
+ bl SetDeoxysStats
ldr r0, _08010D4C @ =gDecompressionBuffer
ldr r1, _08010D50 @ =gPlayerParty
movs r2, 0x96
@@ -2093,13 +2093,13 @@ _08010EE4:
bl bitmask_all_link_players_but_self
lsls r0, 24
lsrs r0, 24
- ldr r1, _08010EF8 @ =gUnknown_201C0C8
+ ldr r1, _08010EF8 @ =gDecompressionBuffer + 0x0C8
movs r2, 0x64
bl SendBlock
ldr r1, _08010EFC @ =gUnknown_2023E82
b _080110EA
.align 2, 0
-_08010EF8: .4byte gUnknown_201C0C8
+_08010EF8: .4byte gDecompressionBuffer + 0x0C8
_08010EFC: .4byte gUnknown_2023E82
_08010F00:
bl GetBlockReceivedStatus
@@ -2376,7 +2376,7 @@ sub_8011100: @ 8011100
cmp r0, 0
beq _08011158
ldr r2, _08011168 @ =gSpecialVar_Result
- ldr r1, _0801116C @ =gUnknown_2023E8A
+ ldr r1, _0801116C @ =gBattleOutcome
movs r0, 0x3
strb r0, [r1]
movs r0, 0x3
@@ -2399,7 +2399,7 @@ _08011158:
_08011160: .4byte gMain
_08011164: .4byte gBattleTypeFlags
_08011168: .4byte gSpecialVar_Result
-_0801116C: .4byte gUnknown_2023E8A
+_0801116C: .4byte gBattleOutcome
_08011170: .4byte CB2_QuitRecordedBattle
thumb_func_end sub_8011100
@@ -4511,7 +4511,7 @@ _080121D4: .4byte SpriteCB_HealthBoxBounce
_080121D8: .4byte gUnknown_3004FF0
_080121DC: .4byte gSprites
_080121E0:
- ldr r0, _0801224C @ =gUnknown_2023D44
+ ldr r0, _0801224C @ =gBattlerSpriteIds
adds r0, r4, r0
ldrb r7, [r0]
ldr r2, _08012250 @ =gUnknown_2024018
@@ -4567,7 +4567,7 @@ _0801223C:
pop {r0}
bx r0
.align 2, 0
-_0801224C: .4byte gUnknown_2023D44
+_0801224C: .4byte gBattlerSpriteIds
_08012250: .4byte gUnknown_2024018
_08012254: .4byte gSprites
thumb_func_end dp11b_obj_instanciate
@@ -4966,7 +4966,7 @@ _08012522:
strb r0, [r2, 0x1D]
ldr r0, _08012724 @ =gUnknown_2023D72
strb r1, [r0]
- ldr r2, _08012728 @ =gUnknown_2023E8A
+ ldr r2, _08012728 @ =gBattleOutcome
strb r1, [r2]
ldr r0, _0801272C @ =gUnknown_2023BC8
str r1, [r0]
@@ -5194,7 +5194,7 @@ _08012718: .4byte 0x00010002
_0801271C: .4byte gSaveBlock2Ptr
_08012720: .4byte gBattleScripting
_08012724: .4byte gUnknown_2023D72
-_08012728: .4byte gUnknown_2023E8A
+_08012728: .4byte gBattleOutcome
_0801272C: .4byte gUnknown_2023BC8
_08012730: .4byte gUnknown_2023E7E
_08012734: .4byte gUnknown_2023E82
@@ -6570,7 +6570,7 @@ _080131F6:
add r1, r10
ldr r2, [r1]
movs r1, 0x2
- bl sub_8044898
+ bl HandleSetPokedexFlag
b _080132C2
.align 2, 0
_08013230: .4byte gBaseStats
@@ -6609,7 +6609,7 @@ _0801324C:
add r1, r10
ldr r2, [r1]
movs r1, 0x2
- bl sub_8044898
+ bl HandleSetPokedexFlag
b _080132B4
_0801328E:
ldr r0, _08013324 @ =0x0001aa02
@@ -6628,7 +6628,7 @@ _0801328E:
add r1, r10
ldr r2, [r1]
movs r1, 0x2
- bl sub_8044898
+ bl HandleSetPokedexFlag
_080132B4:
movs r0, 0
bl EmitLoadMonSprite
@@ -7097,7 +7097,7 @@ _0801364C:
adds r1, r7
ldr r2, [r1]
movs r1, 0x2
- bl sub_8044898
+ bl HandleSetPokedexFlag
_08013684:
ldrb r0, [r4]
adds r0, 0x1
@@ -7783,7 +7783,7 @@ sub_8013BD4: @ 8013BD4
push {r5-r7}
movs r0, 0x1
bl TurnValuesCleanUp
- ldr r0, _08013C78 @ =gUnknown_2023E8A
+ ldr r0, _08013C78 @ =gBattleOutcome
ldrb r0, [r0]
cmp r0, 0
bne _08013C04
@@ -7844,7 +7844,7 @@ _08013C58:
subs r0, 0x1
cmp r0, r1
bge _08013C58
- ldr r0, _08013C78 @ =gUnknown_2023E8A
+ ldr r0, _08013C78 @ =gBattleOutcome
ldrb r0, [r0]
cmp r0, 0
beq _08013CB0
@@ -7856,7 +7856,7 @@ _08013C58:
str r0, [r1]
b _08013D20
.align 2, 0
-_08013C78: .4byte gUnknown_2023E8A
+_08013C78: .4byte gBattleOutcome
_08013C7C: .4byte gBattleStruct
_08013C80: .4byte gUnknown_2023DD0
_08013C84: .4byte 0xfffffdff
@@ -10971,7 +10971,7 @@ _080155C4: .4byte gBattleResources
thumb_func_start RunTurnActionsFunctions
RunTurnActionsFunctions: @ 80155C8
push {r4-r6,lr}
- ldr r6, _0801561C @ =gUnknown_2023E8A
+ ldr r6, _0801561C @ =gBattleOutcome
ldrb r0, [r6]
ldr r2, _08015620 @ =gUnknown_2023BE3
cmp r0, 0
@@ -11012,7 +11012,7 @@ _080155D8:
str r0, [r3]
b _0801565C
.align 2, 0
-_0801561C: .4byte gUnknown_2023E8A
+_0801561C: .4byte gBattleOutcome
_08015620: .4byte gUnknown_2023BE3
_08015624: .4byte gBattleStruct
_08015628: .4byte gUnknown_2023BE2
@@ -11058,7 +11058,7 @@ sub_8015670: @ 8015670
cmp r0, 0
beq _080156C4
ldr r1, _080156B0 @ =gBattleTextBuff1
- ldr r4, _080156B4 @ =gUnknown_2023E8A
+ ldr r4, _080156B4 @ =gBattleOutcome
ldrb r0, [r4]
strb r0, [r1]
movs r0, 0
@@ -11077,7 +11077,7 @@ sub_8015670: @ 8015670
_080156A8: .4byte gUnknown_2023BE3
_080156AC: .4byte gBattleTypeFlags
_080156B0: .4byte gBattleTextBuff1
-_080156B4: .4byte gUnknown_2023E8A
+_080156B4: .4byte gBattleOutcome
_080156B8: .4byte sBattler_AI
_080156BC: .4byte gUnknown_2023D74
_080156C0: .4byte gUnknown_81D88CC
@@ -11181,7 +11181,7 @@ sub_801578C: @ 801578C
cmp r0, 0
beq _080157E0
ldr r1, _080157CC @ =gBattleTextBuff1
- ldr r4, _080157D0 @ =gUnknown_2023E8A
+ ldr r4, _080157D0 @ =gBattleOutcome
ldrb r0, [r4]
strb r0, [r1]
movs r0, 0
@@ -11200,7 +11200,7 @@ sub_801578C: @ 801578C
_080157C4: .4byte gUnknown_2023BE3
_080157C8: .4byte gBattleTypeFlags
_080157CC: .4byte gBattleTextBuff1
-_080157D0: .4byte gUnknown_2023E8A
+_080157D0: .4byte gBattleOutcome
_080157D4: .4byte sBattler_AI
_080157D8: .4byte gUnknown_2023D74
_080157DC: .4byte gUnknown_81D88CC
@@ -11496,7 +11496,7 @@ sub_8015A30: @ 8015A30
ldrb r0, [r0]
cmp r0, 0
beq _08015A52
- ldr r0, _08015A60 @ =gUnknown_2023E8A
+ ldr r0, _08015A60 @ =gBattleOutcome
ldrb r0, [r0]
cmp r0, 0x1
beq _08015A6C
@@ -11507,7 +11507,7 @@ _08015A52:
.align 2, 0
_08015A58: .4byte gPaletteFade
_08015A5C: .4byte gUnknown_3004FD4
-_08015A60: .4byte gUnknown_2023E8A
+_08015A60: .4byte gBattleOutcome
_08015A64: .4byte gUnknown_3004F84
_08015A68: .4byte ReturnFromBattleToOverworld
_08015A6C:
@@ -11653,7 +11653,7 @@ _08015B74:
bne _08015BD4
_08015B86:
ldr r1, _08015BE8 @ =gSpecialVar_Result
- ldr r5, _08015BEC @ =gUnknown_2023E8A
+ ldr r5, _08015BEC @ =gBattleOutcome
ldrb r0, [r5]
strh r0, [r1]
ldr r3, _08015BF0 @ =gMain
@@ -11698,7 +11698,7 @@ _08015BDC: .4byte gBattleTypeFlags
_08015BE0: .4byte gPlayerParty
_08015BE4: .4byte gReceivedRemoteLinkPlayers
_08015BE8: .4byte gSpecialVar_Result
-_08015BEC: .4byte gUnknown_2023E8A
+_08015BEC: .4byte gBattleOutcome
_08015BF0: .4byte gMain
_08015BF4: .4byte 0x00000439
_08015BF8: .4byte gUnknown_3004F80
@@ -13212,7 +13212,7 @@ _0801687A:
ldr r0, _0801689C @ =gBattlersCount
ldrb r0, [r0]
strb r0, [r1]
- ldr r1, _080168A0 @ =gUnknown_2023E8A
+ ldr r1, _080168A0 @ =gBattleOutcome
movs r0, 0x4
strb r0, [r1]
_0801688C:
@@ -13224,7 +13224,7 @@ _0801688C:
_08016894: .4byte gBattleStruct
_08016898: .4byte gUnknown_2023BE2
_0801689C: .4byte gBattlersCount
-_080168A0: .4byte gUnknown_2023E8A
+_080168A0: .4byte gBattleOutcome
thumb_func_end sub_8016748
thumb_func_start sub_80168A4
@@ -13254,7 +13254,7 @@ sub_80168A4: @ 80168A4
beq _08016938
adds r4, r2, 0
ldr r6, _0801690C @ =gUnknown_2023D7C
- ldr r5, _08016910 @ =gUnknown_2023E8A
+ ldr r5, _08016910 @ =gBattleOutcome
_080168D8:
ldrb r0, [r4]
bl GetBattlerSide
@@ -13277,7 +13277,7 @@ _08016900: .4byte gBattleTypeFlags
_08016904: .4byte gBattlersCount
_08016908: .4byte gActiveBattler
_0801690C: .4byte gUnknown_2023D7C
-_08016910: .4byte gUnknown_2023E8A
+_08016910: .4byte gBattleOutcome
_08016914:
ldrb r0, [r4]
adds r0, r6
@@ -13300,7 +13300,7 @@ _08016926:
cmp r0, r1
bcc _080168D8
_08016938:
- ldr r0, _08016948 @ =gUnknown_2023E8A
+ ldr r0, _08016948 @ =gBattleOutcome
ldrb r1, [r0]
movs r2, 0x80
orrs r1, r2
@@ -13308,7 +13308,7 @@ _08016938:
b _080169D8
.align 2, 0
_08016944: .4byte gBattlersCount
-_08016948: .4byte gUnknown_2023E8A
+_08016948: .4byte gBattleOutcome
_0801694C:
ldrb r0, [r4]
bl GetBattlerSide
@@ -13368,7 +13368,7 @@ _080169CC:
ldr r0, _080169E0 @ =gBattlersCount
ldrb r0, [r0]
strb r0, [r5]
- ldr r1, _080169E4 @ =gUnknown_2023E8A
+ ldr r1, _080169E4 @ =gBattleOutcome
movs r0, 0x6
_080169D6:
strb r0, [r1]
@@ -13378,7 +13378,7 @@ _080169D8:
bx r0
.align 2, 0
_080169E0: .4byte gBattlersCount
-_080169E4: .4byte gUnknown_2023E8A
+_080169E4: .4byte gBattleOutcome
thumb_func_end sub_80168A4
thumb_func_start sub_80169E8
@@ -13497,7 +13497,7 @@ sub_8016AC0: @ 8016AC0
strh r1, [r0]
ldr r0, _08016B08 @ =gBattle_BG0_Y
strh r1, [r0]
- ldr r1, _08016B0C @ =gUnknown_2039994
+ ldr r1, _08016B0C @ =gNumSafariBalls
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
@@ -13518,7 +13518,7 @@ _08016AFC: .4byte gUnknown_2023BDE
_08016B00: .4byte gUnknown_2023BE2
_08016B04: .4byte gBattle_BG0_X
_08016B08: .4byte gBattle_BG0_Y
-_08016B0C: .4byte gUnknown_2039994
+_08016B0C: .4byte gNumSafariBalls
_08016B10: .4byte gUnknown_2023D68
_08016B14: .4byte gUnknown_2023D74
_08016B18: .4byte gUnknown_81D99B0
@@ -13690,7 +13690,7 @@ HandleAction_SafriZoneRun: @ 8016C60
ldr r0, _08016C94 @ =gBattlersCount
ldrb r0, [r0]
strb r0, [r4]
- ldr r1, _08016C98 @ =gUnknown_2023E8A
+ ldr r1, _08016C98 @ =gBattleOutcome
movs r0, 0x4
strb r0, [r1]
pop {r4}
@@ -13701,7 +13701,7 @@ _08016C88: .4byte sBattler_AI
_08016C8C: .4byte gUnknown_2023BDE
_08016C90: .4byte gUnknown_2023BE2
_08016C94: .4byte gBattlersCount
-_08016C98: .4byte gUnknown_2023E8A
+_08016C98: .4byte gBattleOutcome
thumb_func_end HandleAction_SafriZoneRun
thumb_func_start HandleAction_Action9
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
index f65b9b705..9aa80db64 100644
--- a/asm/battle_anim.s
+++ b/asm/battle_anim.s
@@ -20,7 +20,7 @@ ClearBattleAnimationVars: @ 80724C0
strb r1, [r0]
ldr r0, _08072560 @ =gUnknown_2037EE3
strb r1, [r0]
- ldr r0, _08072564 @ =gUnknown_2037EE4
+ ldr r0, _08072564 @ =gAnimDisableStructPtr
movs r1, 0
str r1, [r0]
ldr r0, _08072568 @ =gUnknown_2037EE8
@@ -31,12 +31,12 @@ ClearBattleAnimationVars: @ 80724C0
ldr r0, _08072570 @ =gUnknown_2037EFE
strb r2, [r0]
ldr r4, _08072574 @ =gUnknown_2037F14
- ldr r5, _08072578 @ =gUnknown_2037F16
+ ldr r5, _08072578 @ =gAnimMoveTurn
ldr r6, _0807257C @ =gUnknown_2037F17
ldr r7, _08072580 @ =gUnknown_2037F18
- ldr r0, _08072584 @ =gUnknown_2037F1A
+ ldr r0, _08072584 @ =gBattleAnimAttacker
mov r12, r0
- ldr r1, _08072588 @ =gUnknown_2037F1B
+ ldr r1, _08072588 @ =gBattleAnimTarget
mov r8, r1
ldr r0, _0807258C @ =gUnknown_2037F24
mov r9, r0
@@ -52,7 +52,7 @@ _0807250A:
subs r2, 0x1
cmp r2, 0
bge _0807250A
- ldr r1, _08072598 @ =gUnknown_2037F02
+ ldr r1, _08072598 @ =gBattleAnimArgs
movs r2, 0
adds r0, r1, 0
adds r0, 0xE
@@ -88,20 +88,20 @@ _08072554: .4byte gUnknown_2037EE0
_08072558: .4byte gUnknown_2037EE1
_0807255C: .4byte gUnknown_2037EE2
_08072560: .4byte gUnknown_2037EE3
-_08072564: .4byte gUnknown_2037EE4
+_08072564: .4byte gAnimDisableStructPtr
_08072568: .4byte gUnknown_2037EE8
_0807256C: .4byte gUnknown_2037EEC
_08072570: .4byte gUnknown_2037EFE
_08072574: .4byte gUnknown_2037F14
-_08072578: .4byte gUnknown_2037F16
+_08072578: .4byte gAnimMoveTurn
_0807257C: .4byte gUnknown_2037F17
_08072580: .4byte gUnknown_2037F18
-_08072584: .4byte gUnknown_2037F1A
-_08072588: .4byte gUnknown_2037F1B
+_08072584: .4byte gBattleAnimAttacker
+_08072588: .4byte gBattleAnimTarget
_0807258C: .4byte gUnknown_2037F24
_08072590: .4byte 0x0000ffff
_08072594: .4byte gUnknown_2037EEE
-_08072598: .4byte gUnknown_2037F02
+_08072598: .4byte gBattleAnimArgs
thumb_func_end ClearBattleAnimationVars
thumb_func_start DoMoveAnim
@@ -110,11 +110,11 @@ DoMoveAnim: @ 807259C
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
- ldr r2, _080725C0 @ =gUnknown_2037F1A
+ ldr r2, _080725C0 @ =gBattleAnimAttacker
ldr r0, _080725C4 @ =sBattler_AI
ldrb r0, [r0]
strb r0, [r2]
- ldr r2, _080725C8 @ =gUnknown_2037F1B
+ ldr r2, _080725C8 @ =gBattleAnimTarget
ldr r0, _080725CC @ =gBattlerTarget
ldrb r0, [r0]
strb r0, [r2]
@@ -124,9 +124,9 @@ DoMoveAnim: @ 807259C
pop {r0}
bx r0
.align 2, 0
-_080725C0: .4byte gUnknown_2037F1A
+_080725C0: .4byte gBattleAnimAttacker
_080725C4: .4byte sBattler_AI
-_080725C8: .4byte gUnknown_2037F1B
+_080725C8: .4byte gBattleAnimTarget
_080725CC: .4byte gBattlerTarget
_080725D0: .4byte gUnknown_81C68F4
thumb_func_end DoMoveAnim
@@ -206,7 +206,7 @@ _08072658:
ldr r0, _080726D4 @ =gUnknown_2037EDC
mov r10, r0
ldr r7, _080726D8 @ =RunAnimScriptCommand
- ldr r1, _080726DC @ =gUnknown_2037F02
+ ldr r1, _080726DC @ =gBattleAnimArgs
movs r2, 0
adds r0, r1, 0
adds r0, 0xE
@@ -257,7 +257,7 @@ _080726CC: .4byte gUnknown_2037EE1
_080726D0: .4byte gUnknown_2037EE0
_080726D4: .4byte gUnknown_2037EDC
_080726D8: .4byte RunAnimScriptCommand
-_080726DC: .4byte gUnknown_2037F02
+_080726DC: .4byte gBattleAnimArgs
_080726E0: .4byte 0x0000ffff
_080726E4: .4byte gUnknown_2037EEE
_080726E8: .4byte gUnknown_81C68EC
@@ -483,11 +483,11 @@ ScriptCmd_loadspritegfx: @ 8072868
lsls r5, r4, 3
ldr r0, _080728B8 @ =gUnknown_8399388
adds r0, r5, r0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _080728BC @ =gUnknown_8399C90
adds r5, r0
adds r0, r5, 0
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
ldr r0, [r6]
adds r0, 0x2
str r0, [r6]
@@ -581,7 +581,7 @@ ScriptCmd_createsprite: @ 807291C
cmp r0, 0
beq _0807296C
adds r6, r5, 0
- ldr r5, _08072988 @ =gUnknown_2037F02
+ ldr r5, _08072988 @ =gBattleAnimArgs
adds r3, r0, 0
_08072954:
ldr r2, [r6]
@@ -610,16 +610,16 @@ _0807296C:
b _0807298E
.align 2, 0
_08072984: .4byte gUnknown_2037ED4
-_08072988: .4byte gUnknown_2037F02
+_08072988: .4byte gBattleAnimArgs
_0807298C:
negs r0, r4
_0807298E:
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _08072998 @ =gUnknown_2037F1B
+ ldr r0, _08072998 @ =gBattleAnimTarget
b _080729AE
.align 2, 0
-_08072998: .4byte gUnknown_2037F1B
+_08072998: .4byte gBattleAnimTarget
_0807299C:
cmp r4, 0x3F
bls _080729A6
@@ -631,7 +631,7 @@ _080729A6:
_080729A8:
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _08072A04 @ =gUnknown_2037F1A
+ ldr r0, _08072A04 @ =gBattleAnimAttacker
_080729AE:
ldrb r0, [r0]
bl sub_807685C
@@ -648,7 +648,7 @@ _080729AE:
bgt _080729CC
movs r6, 0x3
_080729CC:
- ldr r5, _08072A08 @ =gUnknown_2037F1B
+ ldr r5, _08072A08 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8074480
@@ -674,8 +674,8 @@ _080729CC:
pop {r0}
bx r0
.align 2, 0
-_08072A04: .4byte gUnknown_2037F1A
-_08072A08: .4byte gUnknown_2037F1B
+_08072A04: .4byte gBattleAnimAttacker
+_08072A08: .4byte gBattleAnimTarget
_08072A0C: .4byte gUnknown_2037EE2
thumb_func_end ScriptCmd_createsprite
@@ -707,7 +707,7 @@ ScriptCmd_createvisualtask: @ 8072A10
cmp r0, 0
beq _08072A60
adds r5, r4, 0
- ldr r4, _08072A84 @ =gUnknown_2037F02
+ ldr r4, _08072A84 @ =gBattleAnimArgs
adds r3, r0, 0
_08072A48:
ldr r2, [r5]
@@ -738,7 +738,7 @@ _08072A60:
bx r0
.align 2, 0
_08072A80: .4byte gUnknown_2037ED4
-_08072A84: .4byte gUnknown_2037F02
+_08072A84: .4byte gBattleAnimArgs
_08072A88: .4byte gUnknown_2037EE2
thumb_func_end ScriptCmd_createvisualtask
@@ -980,12 +980,12 @@ _08072C52:
cmp r6, 0x2
bne _08072C60
_08072C56:
- ldr r0, _08072C5C @ =gUnknown_2037F1A
+ ldr r0, _08072C5C @ =gBattleAnimAttacker
b _08072C62
.align 2, 0
-_08072C5C: .4byte gUnknown_2037F1A
+_08072C5C: .4byte gBattleAnimAttacker
_08072C60:
- ldr r0, _08072CD8 @ =gUnknown_2037F1B
+ ldr r0, _08072CD8 @ =gBattleAnimTarget
_08072C62:
ldrb r5, [r0]
adds r0, r5, 0
@@ -1008,7 +1008,7 @@ _08072C88:
adds r0, r5, 0
adds r1, r7, 0
bl sub_8072E48
- ldr r0, _08072CDC @ =gUnknown_2023D44
+ ldr r0, _08072CDC @ =gBattlerSpriteIds
adds r0, r5, r0
ldrb r4, [r0]
ldr r0, _08072CE0 @ =task_pA_ma0A_obj_to_bg_pal
@@ -1043,8 +1043,8 @@ _08072C88:
ldr r0, _08072CF0 @ =gBattle_BG1_Y
b _08072CFC
.align 2, 0
-_08072CD8: .4byte gUnknown_2037F1B
-_08072CDC: .4byte gUnknown_2023D44
+_08072CD8: .4byte gBattleAnimTarget
+_08072CDC: .4byte gBattlerSpriteIds
_08072CE0: .4byte task_pA_ma0A_obj_to_bg_pal
_08072CE4: .4byte gTasks
_08072CE8: .4byte gSprites
@@ -1092,7 +1092,7 @@ _08072D3E:
adds r0, r5, 0
adds r1, r7, 0
bl sub_8072E48
- ldr r0, _08072D9C @ =gUnknown_2023D44
+ ldr r0, _08072D9C @ =gBattlerSpriteIds
adds r0, r5, r0
ldrb r4, [r0]
ldr r0, _08072DA0 @ =task_pA_ma0A_obj_to_bg_pal
@@ -1131,7 +1131,7 @@ _08072D8C: .4byte gBattle_BG2_X
_08072D90: .4byte gBattle_BG2_Y
_08072D94: .4byte gTasks
_08072D98: .4byte gUnknown_2037F14
-_08072D9C: .4byte gUnknown_2023D44
+_08072D9C: .4byte gBattlerSpriteIds
_08072DA0: .4byte task_pA_ma0A_obj_to_bg_pal
_08072DA4: .4byte gSprites
_08072DA8: .4byte gBattle_BG1_X
@@ -1190,7 +1190,7 @@ sub_8072DF0: @ 8072DF0
cmp r0, 0
beq _08072E30
ldr r2, _08072E38 @ =gSprites
- ldr r0, _08072E3C @ =gUnknown_2023D44
+ ldr r0, _08072E3C @ =gBattlerSpriteIds
adds r0, r4, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -1208,7 +1208,7 @@ _08072E30:
.align 2, 0
_08072E34: .4byte gUnknown_2024018
_08072E38: .4byte gSprites
-_08072E3C: .4byte gUnknown_2023D44
+_08072E3C: .4byte gBattlerSpriteIds
_08072E40:
movs r0, 0
_08072E42:
@@ -1268,7 +1268,7 @@ _08072E5E:
movs r1, 0x1
movs r2, 0
bl SetAnimBgAttribute
- ldr r2, _08072F6C @ =gUnknown_2023D44
+ ldr r2, _08072F6C @ =gBattlerSpriteIds
adds r2, r7, r2
ldrb r0, [r2]
ldr r5, _08072F70 @ =gBattle_BG1_X
@@ -1349,7 +1349,7 @@ _08072F5C: .4byte 0x06004000
_08072F60: .4byte 0x0600e000
_08072F64: .4byte 0x01000800
_08072F68: .4byte 0x01000400
-_08072F6C: .4byte gUnknown_2023D44
+_08072F6C: .4byte gBattlerSpriteIds
_08072F70: .4byte gBattle_BG1_X
_08072F74: .4byte gSprites
_08072F78: .4byte gBattle_BG1_Y
@@ -1401,7 +1401,7 @@ _08072F84:
movs r1, 0x1
movs r2, 0
bl SetAnimBgAttribute
- ldr r2, _080730A4 @ =gUnknown_2023D44
+ ldr r2, _080730A4 @ =gBattlerSpriteIds
adds r2, r7, r2
ldrb r0, [r2]
ldr r5, _080730A8 @ =gBattle_BG2_X
@@ -1483,7 +1483,7 @@ _08073094: .4byte 0x06006000
_08073098: .4byte 0x0600f000
_0807309C: .4byte 0x01000800
_080730A0: .4byte 0x01000400
-_080730A4: .4byte gUnknown_2023D44
+_080730A4: .4byte gBattlerSpriteIds
_080730A8: .4byte gBattle_BG2_X
_080730AC: .4byte gSprites
_080730B0: .4byte gBattle_BG2_Y
@@ -1715,12 +1715,12 @@ _0807326E:
cmp r4, 0x2
bne _0807327C
_08073272:
- ldr r0, _08073278 @ =gUnknown_2037F1A
+ ldr r0, _08073278 @ =gBattleAnimAttacker
b _0807327E
.align 2, 0
-_08073278: .4byte gUnknown_2037F1A
+_08073278: .4byte gBattleAnimAttacker
_0807327C:
- ldr r0, _080732D4 @ =gUnknown_2037F1B
+ ldr r0, _080732D4 @ =gBattleAnimTarget
_0807327E:
ldrb r5, [r0]
ldr r3, _080732D8 @ =gUnknown_2037F14
@@ -1728,7 +1728,7 @@ _0807327E:
cmp r0, 0xFF
beq _080732A4
ldr r2, _080732DC @ =gSprites
- ldr r0, _080732E0 @ =gUnknown_2023D44
+ ldr r0, _080732E0 @ =gBattlerSpriteIds
adds r0, r5, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -1748,7 +1748,7 @@ _080732A4:
cmp r0, 0xFF
beq _080732E4
ldr r3, _080732DC @ =gSprites
- ldr r2, _080732E0 @ =gUnknown_2023D44
+ ldr r2, _080732E0 @ =gBattlerSpriteIds
movs r1, 0x2
adds r0, r5, 0
eors r0, r1
@@ -1766,10 +1766,10 @@ _080732A4:
strb r1, [r0]
b _080732E6
.align 2, 0
-_080732D4: .4byte gUnknown_2037F1B
+_080732D4: .4byte gBattleAnimTarget
_080732D8: .4byte gUnknown_2037F14
_080732DC: .4byte gSprites
-_080732E0: .4byte gUnknown_2023D44
+_080732E0: .4byte gBattlerSpriteIds
_080732E4:
movs r4, 0
_080732E6:
@@ -1888,12 +1888,12 @@ _080733BE:
cmp r5, 0x2
bne _080733CC
_080733C2:
- ldr r0, _080733C8 @ =gUnknown_2037F1A
+ ldr r0, _080733C8 @ =gBattleAnimAttacker
b _080733CE
.align 2, 0
-_080733C8: .4byte gUnknown_2037F1A
+_080733C8: .4byte gBattleAnimAttacker
_080733CC:
- ldr r0, _08073474 @ =gUnknown_2037F1B
+ ldr r0, _08073474 @ =gBattleAnimTarget
_080733CE:
ldrb r4, [r0]
adds r0, r4, 0
@@ -1916,7 +1916,7 @@ _080733F4:
adds r0, r4, 0
bl sub_8072E48
ldr r2, _08073478 @ =gSprites
- ldr r0, _0807347C @ =gUnknown_2023D44
+ ldr r0, _0807347C @ =gBattlerSpriteIds
adds r0, r4, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -1954,7 +1954,7 @@ _08073442:
adds r0, r4, 0
bl sub_8072E48
ldr r2, _08073478 @ =gSprites
- ldr r0, _0807347C @ =gUnknown_2023D44
+ ldr r0, _0807347C @ =gBattlerSpriteIds
adds r0, r4, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -1976,9 +1976,9 @@ _08073464:
pop {r0}
bx r0
.align 2, 0
-_08073474: .4byte gUnknown_2037F1B
+_08073474: .4byte gBattleAnimTarget
_08073478: .4byte gSprites
-_0807347C: .4byte gUnknown_2023D44
+_0807347C: .4byte gBattlerSpriteIds
_08073480: .4byte gUnknown_2037ED4
thumb_func_end sub_807339C
@@ -2007,12 +2007,12 @@ _080734A6:
cmp r5, 0x2
bne _080734B4
_080734AA:
- ldr r0, _080734B0 @ =gUnknown_2037F1A
+ ldr r0, _080734B0 @ =gBattleAnimAttacker
b _080734B6
.align 2, 0
-_080734B0: .4byte gUnknown_2037F1A
+_080734B0: .4byte gBattleAnimAttacker
_080734B4:
- ldr r0, _08073514 @ =gUnknown_2037F1B
+ ldr r0, _08073514 @ =gBattleAnimTarget
_080734B6:
ldrb r6, [r0]
adds r0, r6, 0
@@ -2021,7 +2021,7 @@ _080734B6:
cmp r0, 0
beq _080734E0
ldr r2, _08073518 @ =gSprites
- ldr r0, _0807351C @ =gUnknown_2023D44
+ ldr r0, _0807351C @ =gBattlerSpriteIds
adds r0, r6, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -2046,7 +2046,7 @@ _080734E0:
cmp r0, 0
beq _08073520
ldr r2, _08073518 @ =gSprites
- ldr r0, _0807351C @ =gUnknown_2023D44
+ ldr r0, _0807351C @ =gBattlerSpriteIds
adds r0, r4, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -2061,9 +2061,9 @@ _080734E0:
strb r1, [r0]
b _08073522
.align 2, 0
-_08073514: .4byte gUnknown_2037F1B
+_08073514: .4byte gBattleAnimTarget
_08073518: .4byte gSprites
-_0807351C: .4byte gUnknown_2023D44
+_0807351C: .4byte gBattlerSpriteIds
_08073520:
movs r5, 0
_08073522:
@@ -2290,7 +2290,7 @@ ScriptCmd_setarg: @ 80736AC
orrs r4, r0
adds r1, 0x4
str r1, [r5]
- ldr r0, _080736DC @ =gUnknown_2037F02
+ ldr r0, _080736DC @ =gBattleAnimArgs
lsls r2, 1
adds r2, r0
strh r4, [r2]
@@ -2299,7 +2299,7 @@ ScriptCmd_setarg: @ 80736AC
bx r0
.align 2, 0
_080736D8: .4byte gUnknown_2037ED4
-_080736DC: .4byte gUnknown_2037F02
+_080736DC: .4byte gBattleAnimArgs
thumb_func_end ScriptCmd_setarg
thumb_func_start ScriptCmd_choosetwoturnanim
@@ -2309,7 +2309,7 @@ ScriptCmd_choosetwoturnanim: @ 80736E0
ldr r2, [r3]
adds r0, r2, 0x1
str r0, [r3]
- ldr r0, _0807371C @ =gUnknown_2037F16
+ ldr r0, _0807371C @ =gAnimMoveTurn
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@@ -2334,7 +2334,7 @@ _080736FA:
bx r0
.align 2, 0
_08073718: .4byte gUnknown_2037ED4
-_0807371C: .4byte gUnknown_2037F16
+_0807371C: .4byte gAnimMoveTurn
thumb_func_end ScriptCmd_choosetwoturnanim
thumb_func_start ScriptCmd_jumpifmoveturn
@@ -2347,7 +2347,7 @@ ScriptCmd_jumpifmoveturn: @ 8073720
ldrb r1, [r4, 0x1]
adds r3, r2, 0x1
str r3, [r5]
- ldr r0, _08073754 @ =gUnknown_2037F16
+ ldr r0, _08073754 @ =gAnimMoveTurn
ldrb r0, [r0]
cmp r1, r0
bne _08073758
@@ -2365,7 +2365,7 @@ ScriptCmd_jumpifmoveturn: @ 8073720
b _0807375C
.align 2, 0
_08073750: .4byte gUnknown_2037ED4
-_08073754: .4byte gUnknown_2037F16
+_08073754: .4byte gAnimMoveTurn
_08073758:
adds r0, r4, 0x6
str r0, [r5]
@@ -2469,7 +2469,7 @@ sub_80737E4: @ 80737E4
bl CreateTask
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _08073828 @ =gUnknown_2037F1B
+ ldr r0, _08073828 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
@@ -2485,7 +2485,7 @@ sub_80737E4: @ 80737E4
.align 2, 0
_08073820: .4byte gUnknown_2037ED4
_08073824: .4byte sub_8073850
-_08073828: .4byte gUnknown_2037F1B
+_08073828: .4byte gBattleAnimTarget
_0807382C: .4byte gTasks
_08073830:
ldr r1, _08073848 @ =gTasks
@@ -2774,7 +2774,7 @@ sub_8073A44: @ 8073A44
lsrs r4, r0, 24
ldr r0, _08073A78 @ =gUnknown_2024018
ldr r1, [r0]
- ldr r0, _08073A7C @ =gUnknown_2037F1A
+ ldr r0, _08073A7C @ =gBattleAnimAttacker
ldrb r2, [r0]
ldr r1, [r1, 0x4]
lsls r0, r2, 1
@@ -2796,14 +2796,14 @@ sub_8073A44: @ 8073A44
b _08073AE6
.align 2, 0
_08073A78: .4byte gUnknown_2024018
-_08073A7C: .4byte gUnknown_2037F1A
+_08073A7C: .4byte gBattleAnimAttacker
_08073A80:
adds r0, r2, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08073ABA
- ldr r0, _08073AA8 @ =gUnknown_2037F1B
+ ldr r0, _08073AA8 @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
@@ -2816,7 +2816,7 @@ _08073A80:
movs r4, 0xC0
b _08073AE6
.align 2, 0
-_08073AA8: .4byte gUnknown_2037F1B
+_08073AA8: .4byte gBattleAnimTarget
_08073AAC:
movs r0, 0x40
negs r0, r0
@@ -2826,7 +2826,7 @@ _08073AAC:
lsls r0, 24
b _08073AE4
_08073ABA:
- ldr r0, _08073ADC @ =gUnknown_2037F1B
+ ldr r0, _08073ADC @ =gBattleAnimTarget
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
@@ -2842,7 +2842,7 @@ _08073ABA:
movs r4, 0x3F
b _08073AE6
.align 2, 0
-_08073ADC: .4byte gUnknown_2037F1B
+_08073ADC: .4byte gBattleAnimTarget
_08073AE0:
lsls r0, r4, 24
negs r0, r0
@@ -2876,7 +2876,7 @@ sub_8073B08: @ 8073B08
lsrs r4, r0, 24
ldr r0, _08073B3C @ =gUnknown_2024018
ldr r1, [r0]
- ldr r0, _08073B40 @ =gUnknown_2037F1A
+ ldr r0, _08073B40 @ =gBattleAnimAttacker
ldrb r2, [r0]
ldr r1, [r1, 0x4]
lsls r0, r2, 1
@@ -2898,7 +2898,7 @@ sub_8073B08: @ 8073B08
b _08073B56
.align 2, 0
_08073B3C: .4byte gUnknown_2024018
-_08073B40: .4byte gUnknown_2037F1A
+_08073B40: .4byte gBattleAnimAttacker
_08073B44:
adds r0, r2, 0
bl GetBattlerSide
@@ -3597,7 +3597,7 @@ ScriptCmd_createsoundtask: @ 807406C
cmp r0, 0
beq _080740B6
adds r5, r4, 0
- ldr r4, _080740D8 @ =gUnknown_2037F02
+ ldr r4, _080740D8 @ =gBattleAnimArgs
adds r3, r0, 0
_0807409E:
ldr r2, [r5]
@@ -3628,7 +3628,7 @@ _080740B6:
bx r0
.align 2, 0
_080740D4: .4byte gUnknown_2037ED4
-_080740D8: .4byte gUnknown_2037F02
+_080740D8: .4byte gBattleAnimArgs
_080740DC: .4byte gUnknown_2037EE3
thumb_func_end ScriptCmd_createsoundtask
@@ -3707,7 +3707,7 @@ ScriptCmd_jumpargeq: @ 8074164
ldrb r0, [r3, 0x2]
lsls r0, 8
orrs r1, r0
- ldr r0, _080741A8 @ =gUnknown_2037F02
+ ldr r0, _080741A8 @ =gBattleAnimArgs
lsls r2, 1
adds r2, r0
lsls r1, 16
@@ -3730,7 +3730,7 @@ ScriptCmd_jumpargeq: @ 8074164
b _080741B2
.align 2, 0
_080741A4: .4byte gUnknown_2037ED4
-_080741A8: .4byte gUnknown_2037F02
+_080741A8: .4byte gBattleAnimArgs
_080741AC:
adds r0, r4, 0
adds r0, 0x8
@@ -3762,13 +3762,13 @@ sub_80741C8: @ 80741C8
str r1, [r0]
cmp r2, 0
beq _080741E4
- ldr r0, _080741E0 @ =gUnknown_2037F1B
+ ldr r0, _080741E0 @ =gBattleAnimTarget
b _080741E6
.align 2, 0
_080741DC: .4byte gUnknown_2037ED4
-_080741E0: .4byte gUnknown_2037F1B
+_080741E0: .4byte gBattleAnimTarget
_080741E4:
- ldr r0, _08074210 @ =gUnknown_2037F1A
+ ldr r0, _08074210 @ =gBattleAnimAttacker
_080741E6:
ldrb r0, [r0]
bl GetBattlerPosition
@@ -3791,7 +3791,7 @@ _0807420C:
pop {r0}
bx r0
.align 2, 0
-_08074210: .4byte gUnknown_2037F1A
+_08074210: .4byte gBattleAnimAttacker
thumb_func_end sub_80741C8
thumb_func_start sub_8074214
@@ -3823,11 +3823,11 @@ sub_807423C: @ 807423C
ldrb r6, [r0, 0x1]
adds r0, 0x2
str r0, [r1]
- ldr r7, _08074270 @ =gUnknown_2037F1A
+ ldr r7, _08074270 @ =gBattleAnimAttacker
ldrb r0, [r7]
bl GetBattlerSide
adds r4, r0, 0
- ldr r5, _08074274 @ =gUnknown_2037F1B
+ ldr r5, _08074274 @ =gBattleAnimTarget
ldrb r0, [r5]
bl GetBattlerSide
lsls r4, 24
@@ -3840,8 +3840,8 @@ sub_807423C: @ 807423C
b _0807427A
.align 2, 0
_0807426C: .4byte gUnknown_2037ED4
-_08074270: .4byte gUnknown_2037F1A
-_08074274: .4byte gUnknown_2037F1B
+_08074270: .4byte gBattleAnimAttacker
+_08074274: .4byte gBattleAnimTarget
_08074278:
ldrb r0, [r7]
_0807427A:
@@ -3946,11 +3946,11 @@ sub_8074320: @ 8074320
lsls r0, 24
cmp r0, 0
beq _080743C2
- ldr r6, _08074368 @ =gUnknown_2037F1A
+ ldr r6, _08074368 @ =gBattleAnimAttacker
ldrb r0, [r6]
bl GetBattlerSide
adds r4, r0, 0
- ldr r5, _0807436C @ =gUnknown_2037F1B
+ ldr r5, _0807436C @ =gBattleAnimTarget
ldrb r0, [r5]
bl GetBattlerSide
lsls r4, 24
@@ -3967,8 +3967,8 @@ sub_8074320: @ 8074320
b _0807437C
.align 2, 0
_08074364: .4byte gUnknown_2037ED4
-_08074368: .4byte gUnknown_2037F1A
-_0807436C: .4byte gUnknown_2037F1B
+_08074368: .4byte gBattleAnimAttacker
+_0807436C: .4byte gBattleAnimTarget
_08074370:
ldrb r0, [r5]
bl sub_80768B0
@@ -4028,11 +4028,11 @@ sub_80743C8: @ 80743C8
lsls r0, 24
cmp r0, 0
beq _0807444C
- ldr r6, _08074410 @ =gUnknown_2037F1A
+ ldr r6, _08074410 @ =gBattleAnimAttacker
ldrb r0, [r6]
bl GetBattlerSide
adds r4, r0, 0
- ldr r5, _08074414 @ =gUnknown_2037F1B
+ ldr r5, _08074414 @ =gBattleAnimTarget
ldrb r0, [r5]
bl GetBattlerSide
lsls r4, 24
@@ -4049,8 +4049,8 @@ sub_80743C8: @ 80743C8
b _08074424
.align 2, 0
_0807440C: .4byte gUnknown_2037ED4
-_08074410: .4byte gUnknown_2037F1A
-_08074414: .4byte gUnknown_2037F1B
+_08074410: .4byte gBattleAnimAttacker
+_08074414: .4byte gBattleAnimTarget
_08074418:
ldrb r0, [r5]
bl sub_80768B0
diff --git a/asm/battle_anim_8074480.s b/asm/battle_anim_8074480.s
deleted file mode 100644
index f90748d37..000000000
--- a/asm/battle_anim_8074480.s
+++ /dev/null
@@ -1,6343 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8074480
-sub_8074480: @ 8074480
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r4, 0x4
- bhi _08074500
- lsls r0, r4, 2
- ldr r1, _08074498 @ =_0807449C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08074498: .4byte _0807449C
- .align 2, 0
-_0807449C:
- .4byte _080744B0
- .4byte _080744D8
- .4byte _080744B0
- .4byte _08074500
- .4byte _08074500
-_080744B0:
- ldr r4, _080744D0 @ =gUnknown_83AE01C
- adds r0, r5, 0
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 22
- ldr r1, _080744D4 @ =gBattleTypeFlags
- ldr r1, [r1]
- movs r2, 0x1
- ands r1, r2
- lsls r1, 4
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- b _08074588
- .align 2, 0
-_080744D0: .4byte gUnknown_83AE01C
-_080744D4: .4byte gBattleTypeFlags
-_080744D8:
- ldr r4, _080744F8 @ =gUnknown_83AE01C
- adds r0, r5, 0
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 22
- ldr r1, _080744FC @ =gBattleTypeFlags
- ldr r1, [r1]
- movs r2, 0x1
- ands r1, r2
- lsls r1, 4
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0, 0x1]
- b _08074588
- .align 2, 0
-_080744F8: .4byte gUnknown_83AE01C
-_080744FC: .4byte gBattleTypeFlags
-_08074500:
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08074538
- ldr r0, _0807452C @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _08074570
- ldr r1, _08074530 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08074534 @ =gEnemyParty
- b _08074556
- .align 2, 0
-_0807452C: .4byte gUnknown_2024018
-_08074530: .4byte gBattlerPartyIndexes
-_08074534: .4byte gEnemyParty
-_08074538:
- ldr r0, _08074564 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _08074570
- ldr r1, _08074568 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0807456C @ =gPlayerParty
-_08074556:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- b _08074572
- .align 2, 0
-_08074564: .4byte gUnknown_2024018
-_08074568: .4byte gBattlerPartyIndexes
-_0807456C: .4byte gPlayerParty
-_08074570:
- ldrh r1, [r1, 0x2]
-_08074572:
- cmp r4, 0x3
- bne _0807457C
- adds r0, r5, 0
- movs r2, 0x1
- b _08074580
-_0807457C:
- adds r0, r5, 0
- movs r2, 0
-_08074580:
- bl sub_80747AC
- lsls r0, 24
- lsrs r0, 24
-_08074588:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8074480
-
- thumb_func_start sub_8074590
-sub_8074590: @ 8074590
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- lsls r1, 16
- lsrs r4, r1, 16
- adds r7, r4, 0
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08074674
- cmp r4, 0xC9
- bne _08074638
- ldr r0, _080745D8 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, r1, r0
- ldrh r0, [r0, 0x2]
- cmp r0, 0
- bne _080745E4
- ldr r1, _080745DC @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080745E0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0
- bl GetMonData
- adds r2, r0, 0
- b _080745EA
- .align 2, 0
-_080745D8: .4byte gUnknown_2024018
-_080745DC: .4byte gBattlerPartyIndexes
-_080745E0: .4byte gPlayerParty
-_080745E4:
- ldr r0, _08074620 @ =gUnknown_2024008
- adds r0, r1, r0
- ldr r2, [r0]
-_080745EA:
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r2
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r2
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r2
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r2
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _08074624
- adds r0, r7, 0
- b _0807462E
- .align 2, 0
-_08074620: .4byte gUnknown_2024008
-_08074624:
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
-_0807462E:
- ldr r1, _08074634 @ =gUnknown_8235E6C
- lsls r0, 2
- b _0807473C
- .align 2, 0
-_08074634: .4byte gUnknown_8235E6C
-_08074638:
- ldr r0, _0807464C @ =0x00000181
- cmp r4, r0
- bne _08074658
- ldr r0, _08074650 @ =gUnknown_83AE050
- ldr r1, _08074654 @ =gBattleMonForms
- adds r1, r5, r1
- ldrb r1, [r1]
- adds r1, r0
- ldrb r0, [r1]
- b _08074740
- .align 2, 0
-_0807464C: .4byte 0x00000181
-_08074650: .4byte gUnknown_83AE050
-_08074654: .4byte gBattleMonForms
-_08074658:
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bls _08074668
- ldr r0, _08074664 @ =gUnknown_8235E6C
- b _0807473E
- .align 2, 0
-_08074664: .4byte gUnknown_8235E6C
-_08074668:
- ldr r1, _08074670 @ =gUnknown_8235E6C
- lsls r0, r4, 2
- b _0807473C
- .align 2, 0
-_08074670: .4byte gUnknown_8235E6C
-_08074674:
- cmp r4, 0xC9
- bne _08074704
- ldr r0, _080746A4 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, r1, r0
- ldrh r0, [r0, 0x2]
- cmp r0, 0
- bne _080746B0
- ldr r1, _080746A8 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080746AC @ =gEnemyParty
- adds r0, r1
- movs r1, 0
- bl GetMonData
- adds r2, r0, 0
- b _080746B6
- .align 2, 0
-_080746A4: .4byte gUnknown_2024018
-_080746A8: .4byte gBattlerPartyIndexes
-_080746AC: .4byte gEnemyParty
-_080746B0:
- ldr r0, _080746EC @ =gUnknown_2024008
- adds r0, r1, r0
- ldr r2, [r0]
-_080746B6:
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r2
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r2
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r2
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r2
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _080746F0
- adds r0, r7, 0
- b _080746FA
- .align 2, 0
-_080746EC: .4byte gUnknown_2024008
-_080746F0:
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
-_080746FA:
- ldr r1, _08074700 @ =gUnknown_82349CC
- lsls r0, 2
- b _0807473C
- .align 2, 0
-_08074700: .4byte gUnknown_82349CC
-_08074704:
- ldr r0, _0807471C @ =0x00000181
- cmp r4, r0
- bne _08074728
- ldr r0, _08074720 @ =gUnknown_83AE03C
- ldr r1, _08074724 @ =gBattleMonForms
- adds r1, r6, r1
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- b _08074740
- .align 2, 0
-_0807471C: .4byte 0x00000181
-_08074720: .4byte gUnknown_83AE03C
-_08074724: .4byte gBattleMonForms
-_08074728:
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bls _08074738
- ldr r0, _08074734 @ =gUnknown_82349CC
- b _0807473E
- .align 2, 0
-_08074734: .4byte gUnknown_82349CC
-_08074738:
- ldr r1, _08074748 @ =gUnknown_82349CC
- lsls r0, r7, 2
-_0807473C:
- adds r0, r1
-_0807473E:
- ldrb r0, [r0, 0x1]
-_08074740:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08074748: .4byte gUnknown_82349CC
- thumb_func_end sub_8074590
-
- thumb_func_start sub_807474C
-sub_807474C: @ 807474C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- adds r7, r4, 0
- movs r5, 0
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807479E
- ldr r0, _0807477C @ =0x00000181
- cmp r4, r0
- bne _08074788
- ldr r0, _08074780 @ =gUnknown_83AE04C
- ldr r1, _08074784 @ =gBattleMonForms
- adds r1, r6, r1
- ldrb r1, [r1]
- adds r1, r0
- ldrb r5, [r1]
- b _0807479E
- .align 2, 0
-_0807477C: .4byte 0x00000181
-_08074780: .4byte gUnknown_83AE04C
-_08074784: .4byte gBattleMonForms
-_08074788:
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bls _08074798
- ldr r0, _08074794 @ =gUnknown_823A004
- b _0807479C
- .align 2, 0
-_08074794: .4byte gUnknown_823A004
-_08074798:
- ldr r0, _080747A8 @ =gUnknown_823A004
- adds r0, r7, r0
-_0807479C:
- ldrb r5, [r0]
-_0807479E:
- adds r0, r5, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080747A8: .4byte gUnknown_823A004
- thumb_func_end sub_807474C
-
- thumb_func_start sub_80747AC
-sub_80747AC: @ 80747AC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r7, r2, 24
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080747D4
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_8074590
- lsls r0, 24
- lsrs r5, r0, 24
- b _080747F2
-_080747D4:
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_8074590
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_807474C
- lsls r0, 24
- lsrs r0, 24
- subs r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
-_080747F2:
- adds r0, r6, 0
- bl GetBattlerPosition
- ldr r3, _0807483C @ =gUnknown_83AE01C
- lsls r0, 24
- lsrs r0, 22
- ldr r1, _08074840 @ =gBattleTypeFlags
- ldr r1, [r1]
- movs r2, 0x1
- ands r1, r2
- lsls r1, 4
- adds r0, r1
- adds r0, r3
- ldrb r0, [r0, 0x1]
- adds r0, r5
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r7, 0
- beq _08074832
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0807482C
- adds r0, r4, 0
- adds r0, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
-_0807482C:
- cmp r4, 0x68
- bls _08074832
- movs r4, 0x68
-_08074832:
- adds r0, r4, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0807483C: .4byte gUnknown_83AE01C
-_08074840: .4byte gBattleTypeFlags
- thumb_func_end sub_80747AC
-
- thumb_func_start sub_8074844
-sub_8074844: @ 8074844
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- movs r0, 0xFD
- lsls r0, 24
- adds r1, r0
- lsrs r1, 24
- cmp r1, 0x1
- bhi _08074896
- ldr r0, _08074874 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r2, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _0807487C
- ldr r1, _08074878 @ =gUnknown_2037F1C
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0807487E
- .align 2, 0
-_08074874: .4byte gUnknown_2024018
-_08074878: .4byte gUnknown_2037F1C
-_0807487C:
- ldrh r1, [r1, 0x2]
-_0807487E:
- cmp r3, 0x3
- bne _0807488C
- adds r0, r2, 0
- movs r2, 0x1
- bl sub_80747AC
- b _0807489E
-_0807488C:
- adds r0, r2, 0
- movs r2, 0
- bl sub_80747AC
- b _0807489E
-_08074896:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_8074480
-_0807489E:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_8074844
-
- thumb_func_start GetBankSpriteDefault_Y
-GetBankSpriteDefault_Y: @ 80748A8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x4
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GetBankSpriteDefault_Y
-
- thumb_func_start GetSubstituteSpriteDefault_Y
-GetSubstituteSpriteDefault_Y: @ 80748BC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080748E0
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 8
- movs r1, 0x80
- lsls r1, 13
- b _080748F0
-_080748E0:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 8
- movs r1, 0x88
- lsls r1, 13
-_080748F0:
- adds r0, r1
- lsrs r0, 16
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetSubstituteSpriteDefault_Y
-
- thumb_func_start sub_8074900
-sub_8074900: @ 8074900
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807491A
- adds r0, r4, 0
- movs r1, 0x1
- b _0807491E
-_0807491A:
- adds r0, r4, 0
- movs r1, 0x4
-_0807491E:
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8074900
-
- thumb_func_start sub_807492C
-sub_807492C: @ 807492C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08074978
- ldr r0, _0807496C @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _080749B0
- ldr r1, _08074970 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08074974 @ =gEnemyParty
- b _08074996
- .align 2, 0
-_0807496C: .4byte gUnknown_2024018
-_08074970: .4byte gBattlerPartyIndexes
-_08074974: .4byte gEnemyParty
-_08074978:
- ldr r0, _080749A4 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _080749B0
- ldr r1, _080749A8 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080749AC @ =gPlayerParty
-_08074996:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- b _080749B2
- .align 2, 0
-_080749A4: .4byte gUnknown_2024018
-_080749A8: .4byte gBattlerPartyIndexes
-_080749AC: .4byte gPlayerParty
-_080749B0:
- ldrh r4, [r1, 0x2]
-_080749B2:
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080749CC
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_807474C
- subs r0, r6, r0
- lsls r0, 24
- lsrs r6, r0, 24
-_080749CC:
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_807492C
-
- thumb_func_start GetAnimBankSpriteId
-GetAnimBankSpriteId: @ 80749D4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0
- bne _080749FC
- ldr r4, _080749F4 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- bl sub_8075224
- lsls r0, 24
- cmp r0, 0
- beq _08074A4A
- ldr r1, _080749F8 @ =gUnknown_2023D44
- ldrb r0, [r4]
- b _08074A5A
- .align 2, 0
-_080749F4: .4byte gUnknown_2037F1A
-_080749F8: .4byte gUnknown_2023D44
-_080749FC:
- cmp r0, 0x1
- bne _08074A1C
- ldr r4, _08074A14 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- bl sub_8075224
- lsls r0, 24
- cmp r0, 0
- beq _08074A4A
- ldr r1, _08074A18 @ =gUnknown_2023D44
- ldrb r0, [r4]
- b _08074A5A
- .align 2, 0
-_08074A14: .4byte gUnknown_2037F1B
-_08074A18: .4byte gUnknown_2023D44
-_08074A1C:
- cmp r1, 0x2
- bne _08074A38
- ldr r5, _08074A34 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r4, 0x2
- eors r0, r4
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _08074A4A
- b _08074A54
- .align 2, 0
-_08074A34: .4byte gUnknown_2037F1A
-_08074A38:
- ldr r5, _08074A50 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r4, 0x2
- eors r0, r4
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- bne _08074A54
-_08074A4A:
- movs r0, 0xFF
- b _08074A5E
- .align 2, 0
-_08074A50: .4byte gUnknown_2037F1B
-_08074A54:
- ldr r1, _08074A64 @ =gUnknown_2023D44
- ldrb r0, [r5]
- eors r0, r4
-_08074A5A:
- adds r0, r1
- ldrb r0, [r0]
-_08074A5E:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08074A64: .4byte gUnknown_2023D44
- thumb_func_end GetAnimBankSpriteId
-
- thumb_func_start StoreSpriteCallbackInData6
-StoreSpriteCallbackInData6: @ 8074A68
- strh r1, [r0, 0x3A]
- lsrs r1, 16
- strh r1, [r0, 0x3C]
- bx lr
- thumb_func_end StoreSpriteCallbackInData6
-
- thumb_func_start SetCallbackToStoredInData
-SetCallbackToStoredInData: @ 8074A70
- ldrh r2, [r0, 0x3A]
- movs r3, 0x3C
- ldrsh r1, [r0, r3]
- lsls r1, 16
- orrs r2, r1
- str r2, [r0, 0x1C]
- bx lr
- thumb_func_end SetCallbackToStoredInData
-
- thumb_func_start sub_8074A80
-sub_8074A80: @ 8074A80
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08074AD4
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x2E]
- adds r1, r0, r2
- strh r1, [r4, 0x2E]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _08074AC0
- ldr r2, _08074ABC @ =0xffffff00
- b _08074AC8
- .align 2, 0
-_08074ABC: .4byte 0xffffff00
-_08074AC0:
- cmp r0, 0
- bge _08074ACC
- movs r2, 0x80
- lsls r2, 1
-_08074AC8:
- adds r0, r1, r2
- strh r0, [r4, 0x2E]
-_08074ACC:
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- b _08074ADA
-_08074AD4:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074ADA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074A80
-
- thumb_func_start sub_8074AE0
-sub_8074AE0: @ 8074AE0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08074B50
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- ldrh r1, [r4, 0x38]
- lsls r1, 16
- asrs r1, 24
- ldrh r2, [r4, 0x30]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x38]
- lsls r1, 16
- asrs r1, 24
- ldrh r2, [r4, 0x30]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x2E]
- adds r1, r0, r2
- strh r1, [r4, 0x2E]
- ldrh r0, [r4, 0x36]
- ldrh r2, [r4, 0x38]
- adds r0, r2
- strh r0, [r4, 0x38]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _08074B3C
- ldr r2, _08074B38 @ =0xffffff00
- b _08074B44
- .align 2, 0
-_08074B38: .4byte 0xffffff00
-_08074B3C:
- cmp r0, 0
- bge _08074B48
- movs r2, 0x80
- lsls r2, 1
-_08074B44:
- adds r0, r1, r2
- strh r0, [r4, 0x2E]
-_08074B48:
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- b _08074B56
-_08074B50:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074B56:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074AE0
-
- thumb_func_start sub_8074B5C
-sub_8074B5C: @ 8074B5C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08074BD8
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x2E]
- adds r1, r0, r2
- strh r1, [r4, 0x2E]
- ldrh r0, [r4, 0x38]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _08074BA4
- ldr r2, _08074BA0 @ =0xffffff00
- b _08074BAC
- .align 2, 0
-_08074BA0: .4byte 0xffffff00
-_08074BA4:
- cmp r0, 0
- bge _08074BB0
- movs r2, 0x80
- lsls r2, 1
-_08074BAC:
- adds r0, r1, r2
- strh r0, [r4, 0x2E]
-_08074BB0:
- ldrh r1, [r4, 0x36]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- cmp r0, 0xFF
- ble _08074BC4
- ldr r2, _08074BC0 @ =0xffffff00
- b _08074BCC
- .align 2, 0
-_08074BC0: .4byte 0xffffff00
-_08074BC4:
- cmp r0, 0
- bge _08074BD0
- movs r2, 0x80
- lsls r2, 1
-_08074BCC:
- adds r0, r1, r2
- strh r0, [r4, 0x36]
-_08074BD0:
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- b _08074BDE
-_08074BD8:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074BDE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074B5C
-
- thumb_func_start sub_8074BE4
-sub_8074BE4: @ 8074BE4
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08074C38
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x2E]
- adds r1, r0, r2
- strh r1, [r4, 0x2E]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _08074C24
- ldr r2, _08074C20 @ =0xffffff00
- b _08074C2C
- .align 2, 0
-_08074C20: .4byte 0xffffff00
-_08074C24:
- cmp r0, 0
- bge _08074C30
- movs r2, 0x80
- lsls r2, 1
-_08074C2C:
- adds r0, r1, r2
- strh r0, [r4, 0x2E]
-_08074C30:
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- b _08074C3E
-_08074C38:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074C3E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074BE4
-
- thumb_func_start sub_8074C44
-sub_8074C44: @ 8074C44
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08074C58
- subs r0, r2, 0x1
- strh r0, [r1, 0x2E]
- b _08074C5E
-_08074C58:
- adds r0, r1, 0
- bl SetCallbackToStoredInData
-_08074C5E:
- pop {r0}
- bx r0
- thumb_func_end sub_8074C44
-
- thumb_func_start sub_8074C64
-sub_8074C64: @ 8074C64
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8074C80
- ldr r1, _08074C7C @ =sub_8074CD0
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08074C7C: .4byte sub_8074CD0
- thumb_func_end sub_8074C64
-
- thumb_func_start sub_8074C80
-sub_8074C80: @ 8074C80
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r1, r0
- ble _08074C96
- ldrh r0, [r4, 0x2E]
- negs r0, r0
- strh r0, [r4, 0x2E]
-_08074C96:
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- subs r0, r1
- ldrh r5, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- bl __divsi3
- cmp r0, 0
- bge _08074CB0
- negs r0, r0
-_08074CB0:
- strh r0, [r4, 0x2E]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- subs r0, r1
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- bl __divsi3
- strh r0, [r4, 0x32]
- strh r5, [r4, 0x30]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8074C80
-
- thumb_func_start sub_8074CD0
-sub_8074CD0: @ 8074CD0
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08074CF4
- subs r0, r2, 0x1
- strh r0, [r1, 0x2E]
- ldrh r0, [r1, 0x30]
- ldrh r2, [r1, 0x24]
- adds r0, r2
- strh r0, [r1, 0x24]
- ldrh r0, [r1, 0x32]
- ldrh r3, [r1, 0x26]
- adds r0, r3
- strh r0, [r1, 0x26]
- b _08074CFA
-_08074CF4:
- adds r0, r1, 0
- bl SetCallbackToStoredInData
-_08074CFA:
- pop {r0}
- bx r0
- thumb_func_end sub_8074CD0
-
- thumb_func_start sub_8074D00
-sub_8074D00: @ 8074D00
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r0, 0
- ble _08074D30
- subs r0, r1, 0x1
- strh r0, [r2, 0x2E]
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x34]
- adds r0, r1
- strh r0, [r2, 0x34]
- ldrh r1, [r2, 0x32]
- ldrh r3, [r2, 0x36]
- adds r1, r3
- strh r1, [r2, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2, 0x24]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r2, 0x26]
- b _08074D36
-_08074D30:
- adds r0, r2, 0
- bl SetCallbackToStoredInData
-_08074D36:
- pop {r0}
- bx r0
- thumb_func_end sub_8074D00
-
- thumb_func_start sub_8074D3C
-sub_8074D3C: @ 8074D3C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08074D6C
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r1, r2
- strh r1, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r4, 0x26]
- b _08074D72
-_08074D6C:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074D72:
- adds r0, r4, 0
- bl UpdateMonIconFrame
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074D3C
-
- thumb_func_start sub_8074D80
-sub_8074D80: @ 8074D80
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x26]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldr r5, _08074DBC @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldr r0, _08074DC0 @ =sub_8074C64
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08074DBC: .4byte gUnknown_2037F1B
-_08074DC0: .4byte sub_8074C64
- thumb_func_end sub_8074D80
-
- thumb_func_start sub_8074DC4
-sub_8074DC4: @ 8074DC4
- push {r4,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _08074E08
- subs r0, r1, 0x1
- strh r0, [r3, 0x2E]
- ldr r2, _08074E04 @ =gSprites
- movs r4, 0x34
- ldrsh r1, [r3, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x30]
- ldrh r4, [r0, 0x24]
- adds r1, r4
- strh r1, [r0, 0x24]
- movs r0, 0x34
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x32]
- ldrh r2, [r0, 0x26]
- adds r1, r2
- strh r1, [r0, 0x26]
- b _08074E0E
- .align 2, 0
-_08074E04: .4byte gSprites
-_08074E08:
- adds r0, r3, 0
- bl SetCallbackToStoredInData
-_08074E0E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074DC4
-
- thumb_func_start sub_8074E14
-sub_8074E14: @ 8074E14
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08074E64
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x30]
- ldrh r0, [r4, 0x34]
- adds r1, r0
- strh r1, [r4, 0x34]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- ldr r3, _08074E60 @ =gSprites
- movs r0, 0x38
- ldrsh r2, [r4, r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- lsls r1, 16
- asrs r1, 24
- strh r1, [r0, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r1, 0x26]
- b _08074E6A
- .align 2, 0
-_08074E60: .4byte gSprites
-_08074E64:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074E6A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074E14
-
- thumb_func_start sub_8074E70
-sub_8074E70: @ 8074E70
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08074ED2
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x32]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r1, r0
- strh r1, [r4, 0x32]
- ldrh r1, [r4, 0x36]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x34]
- adds r1, r0
- strh r1, [r4, 0x36]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl __modsi3
- cmp r0, 0
- bne _08074ED8
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08074ED8
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _08074ED8
-_08074ED2:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074ED8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074E70
-
- thumb_func_start move_anim_8074EE0
-move_anim_8074EE0: @ 8074EE0
- push {r4,lr}
- adds r4, r0, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end move_anim_8074EE0
-
- thumb_func_start sub_8074EF4
-sub_8074EF4: @ 8074EF4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x26]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldr r5, _08074F30 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldr r0, _08074F34 @ =sub_8074C64
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08074F30: .4byte gUnknown_2037F1A
-_08074F34: .4byte sub_8074C64
- thumb_func_end sub_8074EF4
-
- thumb_func_start sub_8074F38
-sub_8074F38: @ 8074F38
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x38]
- bl ResetPaletteStructByUid
- adds r0, r4, 0
- bl move_anim_8074EE0
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074F38
-
- thumb_func_start sub_8074F50
-sub_8074F50: @ 8074F50
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08074F66
- adds r0, r2, 0
- bl SetCallbackToStoredInData
-_08074F66:
- pop {r0}
- bx r0
- thumb_func_end sub_8074F50
-
- thumb_func_start sub_8074F6C
-sub_8074F6C: @ 8074F6C
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08074F82
- adds r0, r2, 0
- bl SetCallbackToStoredInData
-_08074F82:
- pop {r0}
- bx r0
- thumb_func_end sub_8074F6C
-
- thumb_func_start sub_8074F88
-sub_8074F88: @ 8074F88
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074F88
-
- thumb_func_start sub_8074FA8
-sub_8074FA8: @ 8074FA8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074FA8
-
- thumb_func_start sub_8074FCC
-sub_8074FCC: @ 8074FCC
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _08074FF4 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08074FF4: .4byte gUnknown_2037F1A
- thumb_func_end sub_8074FCC
-
- thumb_func_start sub_8074FF8
-sub_8074FF8: @ 8074FF8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- mov r8, r5
- ldr r7, _08075030 @ =gUnknown_2037F1A
- ldrb r0, [r7]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08075034 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- bhi _08075044
- cmp r6, r0
- bcs _08075038
- lsls r0, r5, 16
- b _08075054
- .align 2, 0
-_08075030: .4byte gUnknown_2037F1A
-_08075034: .4byte gUnknown_2037F1B
-_08075038:
- ldrb r0, [r7]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08075050
-_08075044:
- ldrh r1, [r4, 0x20]
- lsls r0, r5, 16
- asrs r0, 16
- subs r1, r0
- strh r1, [r4, 0x20]
- b _0807505C
-_08075050:
- mov r1, r8
- lsls r0, r1, 16
-_08075054:
- asrs r0, 16
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
-_0807505C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8074FF8
-
- thumb_func_start sub_8075068
-sub_8075068: @ 8075068
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- movs r5, 0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r0, 0x80
- lsls r0, 8
- bl __divsi3
- strh r0, [r4, 0x3A]
- strh r5, [r4, 0x3C]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8075068
-
- thumb_func_start AnimateBallThrow
-AnimateBallThrow: @ 8075094
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- bne _080750C0
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x3C]
- adds r0, r1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- movs r0, 0
- b _080750C2
-_080750C0:
- movs r0, 0x1
-_080750C2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end AnimateBallThrow
-
- thumb_func_start sub_80750C8
-sub_80750C8: @ 80750C8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- bne _080750F4
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x3C]
- adds r0, r1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r0, 0
- b _080750F6
-_080750F4:
- movs r0, 0x1
-_080750F6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80750C8
-
- thumb_func_start oamt_add_pos2_onto_pos1
-oamt_add_pos2_onto_pos1: @ 80750FC
- ldrh r1, [r0, 0x24]
- ldrh r2, [r0, 0x20]
- adds r1, r2
- movs r2, 0
- strh r1, [r0, 0x20]
- ldrh r1, [r0, 0x26]
- ldrh r3, [r0, 0x22]
- adds r1, r3
- strh r1, [r0, 0x22]
- strh r2, [r0, 0x24]
- strh r2, [r0, 0x26]
- bx lr
- thumb_func_end oamt_add_pos2_onto_pos1
-
- thumb_func_start sub_8075114
-sub_8075114: @ 8075114
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- cmp r1, 0
- bne _0807513C
- ldr r4, _08075158 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
-_0807513C:
- ldr r4, _0807515C @ =gUnknown_2037F02
- movs r0, 0
- ldrsh r1, [r4, r0]
- adds r0, r5, 0
- bl sub_8074FF8
- ldrh r0, [r4, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08075158: .4byte gUnknown_2037F1B
-_0807515C: .4byte gUnknown_2037F02
- thumb_func_end sub_8075114
-
- thumb_func_start sub_8075160
-sub_8075160: @ 8075160
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- cmp r1, 0
- bne _08075184
- ldr r4, _08075180 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- b _08075198
- .align 2, 0
-_08075180: .4byte gUnknown_2037F1A
-_08075184:
- ldr r4, _080751BC @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
-_08075198:
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r4, _080751C0 @ =gUnknown_2037F02
- movs r0, 0
- ldrsh r1, [r4, r0]
- adds r0, r5, 0
- bl sub_8074FF8
- ldrh r0, [r4, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080751BC: .4byte gUnknown_2037F1A
-_080751C0: .4byte gUnknown_2037F02
- thumb_func_end sub_8075160
-
- thumb_func_start GetBattlerSide
-GetBattlerSide: @ 80751C4
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080751D4 @ =gUnknown_2023BD6
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- bx lr
- .align 2, 0
-_080751D4: .4byte gUnknown_2023BD6
- thumb_func_end GetBattlerSide
-
- thumb_func_start GetBattlerPosition
-GetBattlerPosition: @ 80751D8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080751E4 @ =gUnknown_2023BD6
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080751E4: .4byte gUnknown_2023BD6
- thumb_func_end GetBattlerPosition
-
- thumb_func_start GetBattlerAtPosition
-GetBattlerAtPosition: @ 80751E8
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r1, 0
- ldr r0, _0807521C @ =gBattlersCount
- ldrb r2, [r0]
- cmp r1, r2
- bcs _08075212
- ldr r4, _08075220 @ =gUnknown_2023BD6
- ldrb r0, [r4]
- cmp r0, r3
- beq _08075212
-_08075200:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r2
- bcs _08075212
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, r3
- bne _08075200
-_08075212:
- adds r0, r1, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0807521C: .4byte gBattlersCount
-_08075220: .4byte gUnknown_2023BD6
- thumb_func_end GetBattlerAtPosition
-
- thumb_func_start sub_8075224
-sub_8075224: @ 8075224
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- ldr r0, _08075254 @ =gUnknown_2023BD6
- adds r0, r4, r0
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08075288
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08075260
- ldr r1, _08075258 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0807525C @ =gEnemyParty
- b _0807526E
- .align 2, 0
-_08075254: .4byte gUnknown_2023BD6
-_08075258: .4byte gBattlerPartyIndexes
-_0807525C: .4byte gEnemyParty
-_08075260:
- ldr r1, _08075280 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08075284 @ =gPlayerParty
-_0807526E:
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08075288
- movs r0, 0x1
- b _0807528A
- .align 2, 0
-_08075280: .4byte gBattlerPartyIndexes
-_08075284: .4byte gPlayerParty
-_08075288:
- movs r0, 0
-_0807528A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8075224
-
- thumb_func_start sub_8075290
-sub_8075290: @ 8075290
- ldr r0, _0807529C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- bx lr
- .align 2, 0
-_0807529C: .4byte gBattleTypeFlags
- thumb_func_end sub_8075290
-
- thumb_func_start sub_80752A0
-sub_80752A0: @ 80752A0
- ldr r1, _080752C0 @ =gUnknown_2022BB8
- ldr r1, [r1]
- str r1, [r0]
- ldr r1, _080752C4 @ =gUnknown_2022BBC
- ldr r1, [r1]
- str r1, [r0, 0x4]
- movs r2, 0
- movs r1, 0x8
- strb r1, [r0, 0x8]
- movs r1, 0x1
- strb r1, [r0, 0x9]
- movs r1, 0x80
- lsls r1, 2
- strh r1, [r0, 0xA]
- strh r2, [r0, 0xC]
- bx lr
- .align 2, 0
-_080752C0: .4byte gUnknown_2022BB8
-_080752C4: .4byte gUnknown_2022BBC
- thumb_func_end sub_80752A0
-
- thumb_func_start sub_80752C8
-sub_80752C8: @ 80752C8
- push {lr}
- adds r2, r0, 0
- cmp r1, 0x1
- bne _080752D6
- bl sub_80752A0
- b _080752F4
-_080752D6:
- ldr r0, _080752F8 @ =gUnknown_2022BB8
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, _080752FC @ =gUnknown_2022BBC
- ldr r0, [r0]
- str r0, [r2, 0x4]
- movs r1, 0
- movs r0, 0x9
- strb r0, [r2, 0x8]
- movs r0, 0x2
- strb r0, [r2, 0x9]
- movs r0, 0xC0
- lsls r0, 2
- strh r0, [r2, 0xA]
- strh r1, [r2, 0xC]
-_080752F4:
- pop {r0}
- bx r0
- .align 2, 0
-_080752F8: .4byte gUnknown_2022BB8
-_080752FC: .4byte gUnknown_2022BBC
- thumb_func_end sub_80752C8
-
- thumb_func_start sub_8075300
-sub_8075300: @ 8075300
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08075334 @ =gUnknown_2022BB8
- ldr r0, [r0]
- str r0, [r4]
- ldr r0, _08075338 @ =gUnknown_2022BBC
- ldr r0, [r0]
- str r0, [r4, 0x4]
- ldr r0, _0807533C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x1
- bne _08075340
- movs r0, 0
- movs r1, 0x8
- strb r1, [r4, 0x8]
- strb r2, [r4, 0x9]
- movs r1, 0x80
- lsls r1, 2
- strh r1, [r4, 0xA]
- strh r0, [r4, 0xC]
- b _08075352
- .align 2, 0
-_08075334: .4byte gUnknown_2022BB8
-_08075338: .4byte gUnknown_2022BBC
-_0807533C: .4byte gUnknown_2037F1A
-_08075340:
- movs r1, 0
- movs r0, 0x9
- strb r0, [r4, 0x8]
- movs r0, 0x2
- strb r0, [r4, 0x9]
- movs r0, 0xC0
- lsls r0, 2
- strh r0, [r4, 0xA]
- strh r1, [r4, 0xC]
-_08075352:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075300
-
- thumb_func_start sub_8075358
-sub_8075358: @ 8075358
- push {r4,lr}
- sub sp, 0x20
- adds r4, r0, 0
- add r0, sp, 0xC
- adds r1, r4, 0
- bl sub_80752C8
- movs r0, 0
- str r0, [sp, 0x1C]
- add r0, sp, 0x1C
- ldr r1, [sp, 0xC]
- ldr r2, _080753B0 @ =0x05000800
- bl CpuSet
- lsls r4, 24
- lsrs r4, 24
- ldr r1, [sp, 0xC]
- movs r2, 0x80
- lsls r2, 6
- add r0, sp, 0xC
- ldrh r3, [r0, 0xA]
- adds r0, r4, 0
- bl LoadBgTiles
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x40
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- adds r0, r4, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0x20
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080753B0: .4byte 0x05000800
- thumb_func_end sub_8075358
-
- thumb_func_start sub_80753B4
-sub_80753B4: @ 80753B4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- adds r5, r0, 0
- mov r8, r1
- adds r6, r2, 0
- movs r0, 0
- str r0, [sp]
- ldr r4, _080753FC @ =gUnknown_2022BB8
- ldr r1, [r4]
- ldr r2, _08075400 @ =0x05000800
- mov r0, sp
- bl CpuSet
- ldr r1, [r4]
- mov r0, r8
- bl LZDecompressWram
- lsls r5, 24
- lsrs r5, 24
- ldr r1, [r4]
- movs r2, 0x80
- lsls r2, 6
- lsls r6, 16
- lsrs r6, 16
- adds r0, r5, 0
- adds r3, r6, 0
- bl LoadBgTiles
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080753FC: .4byte gUnknown_2022BB8
-_08075400: .4byte 0x05000800
- thumb_func_end sub_80753B4
-
- thumb_func_start sub_8075404
-sub_8075404: @ 8075404
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x40
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8075404
-
- thumb_func_start sub_807543C
-sub_807543C: @ 807543C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8075404
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl CopyBgTilemapBufferToVram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_807543C
-
- thumb_func_start sub_8075454
-sub_8075454: @ 8075454
- movs r0, 0x2
- bx lr
- thumb_func_end sub_8075454
-
- thumb_func_start sub_8075458
-sub_8075458: @ 8075458
- push {lr}
- lsls r0, 24
- cmp r0, 0
- bne _08075476
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x3
- movs r1, 0x1
- movs r2, 0x1
- bl SetAnimBgAttribute
- b _0807548A
-_08075476:
- movs r0, 0x3
- movs r1, 0
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x3
- movs r1, 0x1
- movs r2, 0
- bl SetAnimBgAttribute
-_0807548A:
- pop {r0}
- bx r0
- thumb_func_end sub_8075458
-
- thumb_func_start sub_8075490
-sub_8075490: @ 8075490
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl sub_80754B8
- ldr r1, _080754B4 @ =sub_8074D3C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080754B4: .4byte sub_8074D3C
- thumb_func_end sub_8075490
-
- thumb_func_start sub_80754B8
-sub_80754B8: @ 80754B8
- push {r4-r6,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x32]
- ldrh r1, [r5, 0x30]
- subs r0, r1
- ldrh r4, [r5, 0x36]
- ldrh r1, [r5, 0x34]
- subs r4, r1
- lsls r4, 24
- lsrs r4, 16
- lsls r0, 24
- asrs r0, 16
- movs r2, 0x2E
- ldrsh r1, [r5, r2]
- bl __divsi3
- movs r6, 0
- strh r0, [r5, 0x30]
- lsls r4, 16
- asrs r4, 16
- movs r0, 0x2E
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl __divsi3
- strh r0, [r5, 0x32]
- strh r6, [r5, 0x36]
- strh r6, [r5, 0x34]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80754B8
-
- thumb_func_start obj_translate_based_on_private_1_2_3_4
-obj_translate_based_on_private_1_2_3_4: @ 80754F8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- movs r0, 0x32
- ldrsh r1, [r7, r0]
- movs r2, 0x30
- ldrsh r0, [r7, r2]
- subs r1, r0
- movs r3, 0x36
- ldrsh r2, [r7, r3]
- movs r3, 0x34
- ldrsh r0, [r7, r3]
- subs r2, r0
- lsrs r0, r1, 31
- mov r8, r0
- lsrs r3, r2, 31
- mov r9, r3
- cmp r1, 0
- bge _08075524
- negs r1, r1
-_08075524:
- lsls r0, r1, 24
- lsrs r6, r0, 16
- adds r0, r2, 0
- cmp r0, 0
- bge _08075530
- negs r0, r0
-_08075530:
- lsls r0, 24
- lsrs r5, r0, 16
- movs r0, 0x2E
- ldrsh r4, [r7, r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r5, r0, 16
- mov r2, r8
- cmp r2, 0
- beq _0807555C
- movs r0, 0x1
- orrs r6, r0
- b _08075560
-_0807555C:
- ldr r0, _0807556C @ =0x0000fffe
- ands r6, r0
-_08075560:
- mov r3, r9
- cmp r3, 0
- beq _08075570
- movs r0, 0x1
- orrs r5, r0
- b _08075574
- .align 2, 0
-_0807556C: .4byte 0x0000fffe
-_08075570:
- ldr r0, _0807558C @ =0x0000fffe
- ands r5, r0
-_08075574:
- movs r0, 0
- strh r6, [r7, 0x30]
- strh r5, [r7, 0x32]
- strh r0, [r7, 0x36]
- strh r0, [r7, 0x34]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807558C: .4byte 0x0000fffe
- thumb_func_end obj_translate_based_on_private_1_2_3_4
-
- thumb_func_start sub_8075590
-sub_8075590: @ 8075590
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r1, _080755B4 @ =sub_807563C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080755B4: .4byte sub_807563C
- thumb_func_end sub_8075590
-
- thumb_func_start sub_80755B8
-sub_80755B8: @ 80755B8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r1, _080755DC @ =sub_8075658
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080755DC: .4byte sub_8075658
- thumb_func_end sub_80755B8
-
- thumb_func_start sub_80755E0
-sub_80755E0: @ 80755E0
- push {r4-r6,lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _080755F0
- movs r0, 0x1
- b _08075634
-_080755F0:
- ldrh r1, [r2, 0x30]
- ldrh r4, [r2, 0x32]
- ldrh r6, [r2, 0x34]
- ldrh r5, [r2, 0x36]
- adds r0, r6, r1
- lsls r3, r0, 16
- lsrs r6, r3, 16
- adds r0, r5, r4
- lsls r0, 16
- lsrs r5, r0, 16
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08075612
- lsrs r0, r3, 24
- negs r0, r0
- b _08075614
-_08075612:
- lsrs r0, r3, 24
-_08075614:
- strh r0, [r2, 0x24]
- movs r0, 0x1
- ands r4, r0
- cmp r4, 0
- beq _08075624
- lsrs r0, r5, 8
- negs r0, r0
- b _08075626
-_08075624:
- lsrs r0, r5, 8
-_08075626:
- strh r0, [r2, 0x26]
- strh r6, [r2, 0x34]
- strh r5, [r2, 0x36]
- ldrh r0, [r2, 0x2E]
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- movs r0, 0
-_08075634:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80755E0
-
- thumb_func_start sub_807563C
-sub_807563C: @ 807563C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _08075650
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08075650:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_807563C
-
- thumb_func_start sub_8075658
-sub_8075658: @ 8075658
- push {r4,lr}
- adds r4, r0, 0
- bl sub_801236C
- adds r0, r4, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _08075672
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08075672:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075658
-
- thumb_func_start sub_8075678
-sub_8075678: @ 8075678
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- subs r0, r1, r0
- cmp r0, 0
- bge _0807568C
- negs r0, r0
-_0807568C:
- lsls r0, 8
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- bl __divsi3
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075678
-
- thumb_func_start sub_80756A4
-sub_80756A4: @ 80756A4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl sub_8075678
- ldr r1, _080756C8 @ =sub_807563C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080756C8: .4byte sub_807563C
- thumb_func_end sub_80756A4
-
- thumb_func_start sub_80756CC
-sub_80756CC: @ 80756CC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- movs r0, 0x32
- ldrsh r1, [r7, r0]
- movs r2, 0x30
- ldrsh r0, [r7, r2]
- subs r1, r0
- movs r3, 0x36
- ldrsh r2, [r7, r3]
- movs r3, 0x34
- ldrsh r0, [r7, r3]
- subs r2, r0
- lsrs r0, r1, 31
- mov r8, r0
- lsrs r3, r2, 31
- mov r9, r3
- cmp r1, 0
- bge _080756F8
- negs r1, r1
-_080756F8:
- lsls r0, r1, 20
- lsrs r6, r0, 16
- adds r0, r2, 0
- cmp r0, 0
- bge _08075704
- negs r0, r0
-_08075704:
- lsls r0, 20
- lsrs r5, r0, 16
- movs r0, 0x2E
- ldrsh r4, [r7, r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r5, r0, 16
- mov r2, r8
- cmp r2, 0
- beq _08075730
- movs r0, 0x1
- orrs r6, r0
- b _08075734
-_08075730:
- ldr r0, _08075740 @ =0x0000fffe
- ands r6, r0
-_08075734:
- mov r3, r9
- cmp r3, 0
- beq _08075744
- movs r0, 0x1
- orrs r5, r0
- b _08075748
- .align 2, 0
-_08075740: .4byte 0x0000fffe
-_08075744:
- ldr r0, _08075760 @ =0x0000fffe
- ands r5, r0
-_08075748:
- movs r0, 0
- strh r6, [r7, 0x30]
- strh r5, [r7, 0x32]
- strh r0, [r7, 0x36]
- strh r0, [r7, 0x34]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075760: .4byte 0x0000fffe
- thumb_func_end sub_80756CC
-
- thumb_func_start sub_8075764
-sub_8075764: @ 8075764
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl sub_80756CC
- ldr r1, _08075788 @ =sub_80757E8
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08075788: .4byte sub_80757E8
- thumb_func_end sub_8075764
-
- thumb_func_start sub_807578C
-sub_807578C: @ 807578C
- push {r4-r6,lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _0807579C
- movs r0, 0x1
- b _080757E0
-_0807579C:
- ldrh r1, [r2, 0x30]
- ldrh r4, [r2, 0x32]
- ldrh r6, [r2, 0x34]
- ldrh r5, [r2, 0x36]
- adds r0, r6, r1
- lsls r3, r0, 16
- lsrs r6, r3, 16
- adds r0, r5, r4
- lsls r0, 16
- lsrs r5, r0, 16
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080757BE
- lsrs r0, r3, 20
- negs r0, r0
- b _080757C0
-_080757BE:
- lsrs r0, r3, 20
-_080757C0:
- strh r0, [r2, 0x24]
- movs r0, 0x1
- ands r4, r0
- cmp r4, 0
- beq _080757D0
- lsrs r0, r5, 4
- negs r0, r0
- b _080757D2
-_080757D0:
- lsrs r0, r5, 4
-_080757D2:
- strh r0, [r2, 0x26]
- strh r6, [r2, 0x34]
- strh r5, [r2, 0x36]
- ldrh r0, [r2, 0x2E]
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- movs r0, 0
-_080757E0:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_807578C
-
- thumb_func_start sub_80757E8
-sub_80757E8: @ 80757E8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_807578C
- lsls r0, 24
- cmp r0, 0
- beq _080757FC
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_080757FC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80757E8
-
- thumb_func_start sub_8075804
-sub_8075804: @ 8075804
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- subs r0, r1, r0
- cmp r0, 0
- bge _08075818
- negs r0, r0
-_08075818:
- lsls r0, 4
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- bl __divsi3
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl sub_80756CC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075804
-
- thumb_func_start sub_8075830
-sub_8075830: @ 8075830
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl sub_8075804
- ldr r1, _08075854 @ =sub_80757E8
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08075854: .4byte sub_80757E8
- thumb_func_end sub_8075830
-
- thumb_func_start obj_id_set_rotscale
-obj_id_set_rotscale: @ 8075858
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsls r3, 16
- lsrs r3, 16
- ldr r5, _080758D0 @ =0xffff0000
- lsls r2, 16
- lsrs r1, 16
- orrs r1, r2
- str r1, [sp]
- ldr r0, [sp, 0x4]
- ands r0, r5
- orrs r0, r3
- str r0, [sp, 0x4]
- bl sub_80758DC
- lsls r0, 24
- cmp r0, 0
- beq _08075894
- mov r0, sp
- ldrh r0, [r0]
- negs r0, r0
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [sp]
- ands r1, r5
- orrs r1, r0
- str r1, [sp]
-_08075894:
- ldr r1, _080758D4 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x3]
- lsls r4, 26
- lsrs r4, 27
- add r5, sp, 0x8
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ObjAffineSet
- ldr r0, _080758D8 @ =gOamMatrices
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r5]
- strh r0, [r4]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x2]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x4]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x6]
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080758D0: .4byte 0xffff0000
-_080758D4: .4byte gSprites
-_080758D8: .4byte gOamMatrices
- thumb_func_end obj_id_set_rotscale
-
- thumb_func_start sub_80758DC
-sub_80758DC: @ 80758DC
- movs r0, 0
- bx lr
- thumb_func_end sub_80758DC
-
- thumb_func_start sub_80758E0
-sub_80758E0: @ 80758E0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r2, _08075978 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r4, r1, r2
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _08075914
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_08075914:
- movs r7, 0x3
- ands r5, r7
- lsls r2, r5, 2
- ldrb r1, [r4, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x1]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4, 0x1]
- lsls r0, 30
- cmp r0, 0
- bne _0807595C
- ldr r0, _0807597C @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x6]
- movs r0, 0x1F
- ands r1, r0
- lsls r1, 1
- ldrb r2, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x3]
-_0807595C:
- ldrb r3, [r4, 0x1]
- orrs r3, r7
- strb r3, [r4, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r4, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- adds r0, r4, 0
- bl CalcCenterToCornerVec
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075978: .4byte gSprites
-_0807597C: .4byte gUnknown_2024018
- thumb_func_end sub_80758E0
-
- thumb_func_start sub_8075980
-sub_8075980: @ 8075980
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r2, 0x80
- lsls r2, 1
- adds r0, r4, 0
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldr r1, _080759D8 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0, 0x1]
- movs r1, 0x4
- negs r1, r1
- ands r1, r2
- movs r2, 0x1
- orrs r1, r2
- movs r2, 0xD
- negs r2, r2
- ands r1, r2
- strb r1, [r0, 0x1]
- adds r3, r0, 0
- adds r3, 0x2C
- ldrb r2, [r3]
- movs r1, 0x7F
- ands r1, r2
- strb r1, [r3]
- ldrb r3, [r0, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r0, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- bl CalcCenterToCornerVec
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080759D8: .4byte gSprites
- thumb_func_end sub_8075980
-
- thumb_func_start sub_80759DC
-sub_80759DC: @ 80759DC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08075A14 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r2, r1, r2
- ldrb r0, [r2, 0x3]
- lsls r0, 26
- lsrs r0, 27
- ldr r1, _08075A18 @ =gOamMatrices
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x4]
- movs r3, 0x4
- ldrsh r0, [r0, r3]
- cmp r0, 0
- bge _08075A08
- negs r0, r0
- lsls r0, 16
- lsrs r1, r0, 16
-_08075A08:
- lsls r0, r1, 16
- asrs r0, 19
- strh r0, [r2, 0x26]
- pop {r0}
- bx r0
- .align 2, 0
-_08075A14: .4byte gSprites
-_08075A18: .4byte gOamMatrices
- thumb_func_end sub_80759DC
-
- thumb_func_start sub_8075A1C
-sub_8075A1C: @ 8075A1C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r4, r0, 0
- ldr r0, [sp, 0x28]
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 16
- lsrs r5, r2, 16
- lsls r3, 16
- lsrs r7, r3, 16
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldrb r0, [r4, 0x1]
- lsls r0, 30
- lsrs r0, 30
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08075AC2
- adds r0, r4, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- cmp r6, 0
- beq _08075A6A
- 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
-_08075A6A:
- ldr r6, _08075AD0 @ =0xffff0000
- lsls r0, r7, 16
- orrs r5, r0
- str r5, [sp]
- ldr r0, [sp, 0x4]
- ands r0, r6
- mov r1, r8
- orrs r0, r1
- str r0, [sp, 0x4]
- bl sub_80758DC
- lsls r0, 24
- cmp r0, 0
- beq _08075A98
- mov r0, sp
- ldrh r0, [r0]
- negs r0, r0
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [sp]
- ands r1, r6
- orrs r1, r0
- str r1, [sp]
-_08075A98:
- ldrb r4, [r4, 0x3]
- lsls r4, 26
- lsrs r4, 27
- add r5, sp, 0x8
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ObjAffineSet
- ldr r0, _08075AD4 @ =gOamMatrices
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r5]
- strh r0, [r4]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x2]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x4]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x6]
-_08075AC2:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075AD0: .4byte 0xffff0000
-_08075AD4: .4byte gOamMatrices
- thumb_func_end sub_8075A1C
-
- thumb_func_start sub_8075AD8
-sub_8075AD8: @ 8075AD8
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r3, 0x80
- lsls r3, 1
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x1
- adds r2, r3, 0
- bl sub_8075A1C
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- 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
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075AD8
-
- thumb_func_start ArcTan2_
-ArcTan2_: @ 8075B18
- push {lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl ArcTan2
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end ArcTan2_
-
- thumb_func_start sub_8075B30
-sub_8075B30: @ 8075B30
- push {lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl ArcTan2_
- lsls r0, 16
- negs r0, r0
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_8075B30
-
- thumb_func_start sub_8075B48
-sub_8075B48: @ 8075B48
- push {r4-r7,lr}
- lsls r1, 24
- lsls r0, 20
- lsrs r0, 16
- cmp r1, 0
- bne _08075BC4
- ldr r2, _08075BB8 @ =gPlttBufferUnfaded
- ldr r1, _08075BBC @ =gPlttBufferFaded
- lsls r0, 1
- adds r4, r0, r1
- adds r5, r0, r2
- movs r6, 0xF
-_08075B60:
- ldr r0, [r5]
- lsls r2, r0, 27
- lsrs r2, 27
- lsls r1, r0, 22
- lsrs r1, 27
- adds r2, r1
- lsls r0, 17
- lsrs r0, 27
- adds r0, r2
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1F
- ands r0, r1
- ldrb r1, [r4]
- movs r3, 0x20
- negs r3, r3
- adds r2, r3, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r4]
- lsls r3, r0, 5
- ldrh r1, [r4]
- ldr r7, _08075BC0 @ =0xfffffc1f
- adds r2, r7, 0
- ands r1, r2
- orrs r1, r3
- strh r1, [r4]
- lsls r0, 2
- ldrb r1, [r4, 0x1]
- movs r3, 0x7D
- negs r3, r3
- adds r2, r3, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x1]
- adds r4, 0x2
- adds r5, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08075B60
- b _08075BD4
- .align 2, 0
-_08075BB8: .4byte gPlttBufferUnfaded
-_08075BBC: .4byte gPlttBufferFaded
-_08075BC0: .4byte 0xfffffc1f
-_08075BC4:
- lsls r1, r0, 1
- ldr r0, _08075BDC @ =gPlttBufferUnfaded
- adds r0, r1, r0
- ldr r2, _08075BE0 @ =gPlttBufferFaded
- adds r1, r2
- ldr r2, _08075BE4 @ =0x04000008
- bl CpuSet
-_08075BD4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075BDC: .4byte gPlttBufferUnfaded
-_08075BE0: .4byte gPlttBufferFaded
-_08075BE4: .4byte 0x04000008
- thumb_func_end sub_8075B48
-
- thumb_func_start sub_8075BE8
-sub_8075BE8: @ 8075BE8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r4, [sp, 0x1C]
- ldr r5, [sp, 0x20]
- ldr r6, [sp, 0x24]
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r7, r4, 24
- lsls r5, 24
- lsrs r5, 24
- mov r8, r5
- lsls r6, 24
- lsrs r6, 24
- mov r9, r6
- movs r4, 0
- cmp r0, 0
- beq _08075C1C
- movs r4, 0xE
-_08075C1C:
- cmp r1, 0
- beq _08075C2E
- ldr r0, _08075CB0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075C2E:
- cmp r2, 0
- beq _08075C40
- ldr r0, _08075CB4 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075C40:
- cmp r3, 0
- beq _08075C64
- ldr r6, _08075CB0 @ =gUnknown_2037F1A
- ldrb r0, [r6]
- movs r5, 0x2
- eors r0, r5
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _08075C64
- ldrb r0, [r6]
- eors r0, r5
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075C64:
- cmp r7, 0
- beq _08075C88
- ldr r6, _08075CB4 @ =gUnknown_2037F1B
- ldrb r0, [r6]
- movs r5, 0x2
- eors r0, r5
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _08075C88
- ldrb r0, [r6]
- eors r0, r5
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075C88:
- mov r0, r8
- cmp r0, 0
- beq _08075C94
- movs r0, 0x80
- lsls r0, 1
- orrs r4, r0
-_08075C94:
- mov r0, r9
- cmp r0, 0
- beq _08075CA0
- movs r0, 0x80
- lsls r0, 2
- orrs r4, r0
-_08075CA0:
- adds r0, r4, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08075CB0: .4byte gUnknown_2037F1A
-_08075CB4: .4byte gUnknown_2037F1B
- thumb_func_end sub_8075BE8
-
- thumb_func_start sub_8075CB8
-sub_8075CB8: @ 8075CB8
- push {r4-r7,lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r7, r3, 24
- movs r4, 0
- cmp r0, 0
- beq _08075CF2
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _08075CF2
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r4, 0x1
- lsls r4, r0
-_08075CF2:
- cmp r5, 0
- beq _08075D1E
- movs r0, 0x2
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _08075D1E
- movs r0, 0x2
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075D1E:
- cmp r6, 0
- beq _08075D4A
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _08075D4A
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075D4A:
- cmp r7, 0
- beq _08075D76
- movs r0, 0x3
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _08075D76
- movs r0, 0x3
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075D76:
- adds r0, r4, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8075CB8
-
- thumb_func_start sub_8075D80
-sub_8075D80: @ 8075D80
- lsls r0, 24
- lsrs r0, 24
- bx lr
- thumb_func_end sub_8075D80
-
- thumb_func_start sub_8075D88
-sub_8075D88: @ 8075D88
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_8075D88
-
- thumb_func_start sub_8075D9C
-sub_8075D9C: @ 8075D9C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08075DDA
- ldr r2, _08075DC8 @ =gUnknown_2037F02
- movs r3, 0x6
- ldrsh r0, [r2, r3]
- movs r1, 0
- cmp r0, 0
- bne _08075DB6
- movs r1, 0x1
-_08075DB6:
- movs r3, 0x4
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _08075DCC
- adds r0, r4, 0
- bl sub_8075160
- b _08075DD2
- .align 2, 0
-_08075DC8: .4byte gUnknown_2037F02
-_08075DCC:
- adds r0, r4, 0
- bl sub_8075114
-_08075DD2:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _08075DEE
-_08075DDA:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- beq _08075DEE
- adds r0, r4, 0
- bl move_anim_8074EE0
-_08075DEE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075D9C
-
- thumb_func_start sub_8075DF4
-sub_8075DF4: @ 8075DF4
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r6, _08075E6C @ =gUnknown_2037F02
- movs r1, 0xA
- ldrsh r0, [r6, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0
- cmp r0, 0
- bne _08075E0C
- movs r1, 0x1
-_08075E0C:
- ldrb r0, [r6, 0xA]
- movs r7, 0x1
- cmp r0, 0
- bne _08075E16
- movs r7, 0x3
-_08075E16:
- adds r0, r5, 0
- bl sub_8075160
- ldr r0, _08075E70 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08075E30
- ldrh r0, [r6, 0x4]
- negs r0, r0
- strh r0, [r6, 0x4]
-_08075E30:
- ldrh r0, [r6, 0x8]
- strh r0, [r5, 0x2E]
- ldr r4, _08075E74 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x4]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- adds r1, r7, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x6]
- adds r0, r6
- strh r0, [r5, 0x36]
- ldr r0, _08075E78 @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _08075E7C @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075E6C: .4byte gUnknown_2037F02
-_08075E70: .4byte gUnknown_2037F1A
-_08075E74: .4byte gUnknown_2037F1B
-_08075E78: .4byte sub_8075590
-_08075E7C: .4byte DestroyAnimSprite
- thumb_func_end sub_8075DF4
-
- thumb_func_start sub_8075E80
-sub_8075E80: @ 8075E80
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _08075EE0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08075EA0
- ldr r1, _08075EE4 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_08075EA0:
- ldr r4, _08075EE4 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldr r5, _08075EE8 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r6, 0x36]
- ldrh r0, [r4, 0xA]
- strh r0, [r6, 0x38]
- adds r0, r6, 0
- bl sub_8075068
- ldr r0, _08075EEC @ =sub_8075EF0
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08075EE0: .4byte gUnknown_2037F1A
-_08075EE4: .4byte gUnknown_2037F02
-_08075EE8: .4byte gUnknown_2037F1B
-_08075EEC: .4byte sub_8075EF0
- thumb_func_end sub_8075E80
-
- thumb_func_start sub_8075EF0
-sub_8075EF0: @ 8075EF0
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _08075F04
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08075F04:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075EF0
-
- thumb_func_start sub_8075F0C
-sub_8075F0C: @ 8075F0C
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r0, _08075F20 @ =gUnknown_2037F02
- movs r2, 0xC
- ldrsh r1, [r0, r2]
- cmp r1, 0
- bne _08075F24
- movs r4, 0x1
- movs r7, 0x3
- b _08075F28
- .align 2, 0
-_08075F20: .4byte gUnknown_2037F02
-_08075F24:
- movs r4, 0
- movs r7, 0x1
-_08075F28:
- movs r1, 0xA
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08075F40
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8075160
- ldr r0, _08075F3C @ =gUnknown_2037F1A
- b _08075F4A
- .align 2, 0
-_08075F3C: .4byte gUnknown_2037F1A
-_08075F40:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8075114
- ldr r0, _08075FA8 @ =gUnknown_2037F1B
-_08075F4A:
- ldrb r6, [r0]
- ldr r0, _08075FAC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08075F62
- ldr r1, _08075FB0 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_08075F62:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8075114
- ldr r4, _08075FB0 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x2E]
- adds r0, r6, 0
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r4, 0x4]
- adds r0, r2
- strh r0, [r5, 0x32]
- adds r0, r6, 0
- adds r1, r7, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x6]
- adds r0, r4
- strh r0, [r5, 0x36]
- ldr r0, _08075FB4 @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _08075FB8 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075FA8: .4byte gUnknown_2037F1B
-_08075FAC: .4byte gUnknown_2037F1A
-_08075FB0: .4byte gUnknown_2037F02
-_08075FB4: .4byte sub_8075590
-_08075FB8: .4byte DestroyAnimSprite
- thumb_func_end sub_8075F0C
-
- thumb_func_start duplicate_obj_of_side_rel2move_in_transparent_mode
-duplicate_obj_of_side_rel2move_in_transparent_mode: @ 8075FBC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xFF
- beq _08076026
- movs r6, 0
- ldr r2, _08076018 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r1, r0, 2
-_08075FD8:
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r4, r0, r2
- adds r5, r4, 0
- adds r5, 0x3E
- ldrb r0, [r5]
- lsls r0, 31
- cmp r0, 0
- bne _0807601C
- adds r0, r4, 0
- adds r1, r2
- movs r2, 0x44
- bl memcpy
- ldrb r1, [r4, 0x1]
- movs r2, 0xD
- negs r2, r2
- adds r0, r2, 0
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4, 0x1]
- ldrb r0, [r5]
- adds r2, 0x8
- adds r1, r2, 0
- ands r0, r1
- strb r0, [r5]
- lsls r0, r6, 16
- asrs r0, 16
- b _0807602A
- .align 2, 0
-_08076018: .4byte gSprites
-_0807601C:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3F
- bls _08075FD8
-_08076026:
- movs r0, 0x1
- negs r0, r0
-_0807602A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end duplicate_obj_of_side_rel2move_in_transparent_mode
-
- thumb_func_start obj_delete_but_dont_free_vram
-obj_delete_but_dont_free_vram: @ 8076030
- push {lr}
- adds r3, r0, 0
- adds r3, 0x3F
- ldrb r1, [r3]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r3]
- bl DestroySprite
- pop {r0}
- bx r0
- thumb_func_end obj_delete_but_dont_free_vram
-
- thumb_func_start sub_8076048
-sub_8076048: @ 8076048
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0
- movs r3, 0
- ldr r2, _080760C0 @ =gUnknown_2037F02
- movs r0, 0x4
- ldrsh r1, [r2, r0]
- movs r4, 0
- ldrsh r0, [r2, r4]
- cmp r1, r0
- ble _08076062
- movs r3, 0x1
-_08076062:
- cmp r1, r0
- bge _08076068
- ldr r3, _080760C4 @ =0x0000ffff
-_08076068:
- movs r0, 0x6
- ldrsh r1, [r2, r0]
- movs r4, 0x2
- ldrsh r0, [r2, r4]
- cmp r1, r0
- ble _08076076
- movs r6, 0x1
-_08076076:
- cmp r1, r0
- bge _0807607C
- ldr r6, _080760C4 @ =0x0000ffff
-_0807607C:
- ldr r0, _080760C8 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- movs r1, 0
- strh r1, [r4, 0x8]
- ldrh r0, [r2, 0x8]
- strh r0, [r4, 0xA]
- strh r1, [r4, 0xC]
- ldrh r0, [r2]
- strh r0, [r4, 0xE]
- ldrh r0, [r2, 0x2]
- strh r0, [r4, 0x10]
- strh r3, [r4, 0x12]
- strh r6, [r4, 0x14]
- ldrh r0, [r2, 0x4]
- strh r0, [r4, 0x16]
- ldrh r0, [r2, 0x6]
- strh r0, [r4, 0x18]
- ldrh r1, [r2, 0x2]
- lsls r1, 8
- ldrh r0, [r2]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, _080760CC @ =sub_80760D0
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080760C0: .4byte gUnknown_2037F02
-_080760C4: .4byte 0x0000ffff
-_080760C8: .4byte gTasks
-_080760CC: .4byte sub_80760D0
- thumb_func_end sub_8076048
-
- thumb_func_start sub_80760D0
-sub_80760D0: @ 80760D0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0807611C @ =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- cmp r0, r1
- ble _08076164
- movs r0, 0
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08076120
- ldrh r2, [r4, 0xE]
- movs r3, 0xE
- ldrsh r1, [r4, r3]
- movs r3, 0x16
- ldrsh r0, [r4, r3]
- cmp r1, r0
- beq _08076134
- ldrh r0, [r4, 0x12]
- adds r0, r2, r0
- strh r0, [r4, 0xE]
- b _08076134
- .align 2, 0
-_0807611C: .4byte gTasks
-_08076120:
- ldrh r2, [r4, 0x10]
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r3, 0x18
- ldrsh r0, [r4, r3]
- cmp r1, r0
- beq _08076134
- ldrh r0, [r4, 0x14]
- adds r0, r2, r0
- strh r0, [r4, 0x10]
-_08076134:
- ldrh r1, [r4, 0x10]
- lsls r1, 8
- ldrh r0, [r4, 0xE]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08076164
- movs r3, 0x10
- ldrsh r1, [r4, r3]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08076164
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08076164:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80760D0
-
- thumb_func_start sub_807616C
-sub_807616C: @ 807616C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0807618C @ =gUnknown_2037F02
- ldrb r0, [r0]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xFF
- bne _08076190
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080761B6
- .align 2, 0
-_0807618C: .4byte gUnknown_2037F02
-_08076190:
- ldr r1, _080761BC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r2, _080761C0 @ =gSprites
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x5]
- lsrs r1, 4
- lsls r1, 4
- ldr r3, _080761C4 @ =0x00000101
- adds r2, r3, 0
- adds r1, r2
- strh r1, [r0, 0x8]
- bl sub_80761C8
-_080761B6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080761BC: .4byte gTasks
-_080761C0: .4byte gSprites
-_080761C4: .4byte 0x00000101
- thumb_func_end sub_807616C
-
- thumb_func_start sub_80761C8
-sub_80761C8: @ 80761C8
- ldr r3, _080761E8 @ =gUnknown_2037F02
- ldrh r1, [r3, 0x2]
- movs r2, 0
- strh r1, [r0, 0xA]
- strh r2, [r0, 0xC]
- ldrh r1, [r3, 0x4]
- strh r1, [r0, 0xE]
- strh r2, [r0, 0x10]
- ldrh r1, [r3, 0x6]
- strh r1, [r0, 0x12]
- strh r2, [r0, 0x14]
- ldrh r1, [r3, 0x8]
- strh r1, [r0, 0x16]
- ldr r1, _080761EC @ =sub_80761F0
- str r1, [r0]
- bx lr
- .align 2, 0
-_080761E8: .4byte gUnknown_2037F02
-_080761EC: .4byte sub_80761F0
- thumb_func_end sub_80761C8
-
- thumb_func_start sub_80761F0
-sub_80761F0: @ 80761F0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08076248 @ =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _08076280
- movs r0, 0
- strh r0, [r4, 0x10]
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0807624C
- ldrh r2, [r4, 0xC]
- adds r2, 0x1
- strh r2, [r4, 0xC]
- ldrh r0, [r4, 0x8]
- lsls r2, 24
- lsrs r2, 24
- ldrh r3, [r4, 0xA]
- movs r1, 0xF
- bl BlendPalette
- movs r2, 0xC
- ldrsh r1, [r4, r2]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08076280
- movs r0, 0x1
- strh r0, [r4, 0x14]
- b _08076280
- .align 2, 0
-_08076248: .4byte gTasks
-_0807624C:
- ldrh r2, [r4, 0xC]
- subs r2, 0x1
- strh r2, [r4, 0xC]
- ldrh r0, [r4, 0x8]
- lsls r2, 24
- lsrs r2, 24
- ldrh r3, [r4, 0xA]
- movs r1, 0xF
- bl BlendPalette
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- cmp r1, 0
- bne _08076280
- ldrh r0, [r4, 0x16]
- subs r0, 0x1
- strh r0, [r4, 0x16]
- lsls r0, 16
- cmp r0, 0
- beq _0807627A
- strh r1, [r4, 0x10]
- strh r1, [r4, 0x14]
- b _08076280
-_0807627A:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08076280:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80761F0
-
- thumb_func_start sub_8076288
-sub_8076288: @ 8076288
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080762A8 @ =gUnknown_2037F02
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _080762AC
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080762C2
- .align 2, 0
-_080762A8: .4byte gUnknown_2037F02
-_080762AC:
- ldr r1, _080762C8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- lsls r1, r2, 4
- ldr r2, _080762CC @ =0x00000101
- adds r1, r2
- strh r1, [r0, 0x8]
- bl sub_80761C8
-_080762C2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080762C8: .4byte gTasks
-_080762CC: .4byte 0x00000101
- thumb_func_end sub_8076288
-
- thumb_func_start sub_80762D0
-sub_80762D0: @ 80762D0
- push {r4,lr}
- adds r3, r0, 0
- adds r4, r1, 0
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0
- strh r1, [r3, 0x16]
- strh r1, [r3, 0x18]
- strh r1, [r3, 0x1A]
- strh r4, [r3, 0x26]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r3, 0x1C]
- strh r0, [r3, 0x1E]
- strh r1, [r3, 0x20]
- adds r0, r3, 0
- adds r0, 0x22
- adds r3, 0x24
- adds r1, r3, 0
- bl sub_80765C0
- adds r0, r4, 0
- movs r1, 0
- bl sub_80758E0
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80762D0
-
- thumb_func_start sub_8076308
-sub_8076308: @ 8076308
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, _080763A8 @ =gUnknown_2037F28
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- bl sub_80765C8
- movs r3, 0x16
- ldrsh r1, [r4, r3]
- lsls r1, 3
- adds r1, r0, r1
- str r1, [r5]
- movs r6, 0
- ldrsh r2, [r1, r6]
- ldr r0, _080763AC @ =0x00007ffe
- cmp r2, r0
- beq _080763B0
- cmp r2, r0
- bgt _08076410
- subs r0, 0x1
- cmp r2, r0
- beq _080763B6
- ldrb r0, [r1, 0x5]
- cmp r0, 0
- bne _08076356
- ldrh r0, [r1]
- strh r0, [r4, 0x1C]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x1E]
- ldrb r0, [r1, 0x4]
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
- adds r0, r1, 0
- adds r0, 0x8
- str r0, [r5]
-_08076356:
- ldr r1, [r5]
- ldrh r0, [r1]
- ldrh r2, [r4, 0x1C]
- adds r0, r2
- strh r0, [r4, 0x1C]
- ldrh r0, [r1, 0x2]
- ldrh r3, [r4, 0x1E]
- adds r0, r3
- strh r0, [r4, 0x1E]
- ldrh r0, [r4, 0x20]
- ldrb r1, [r1, 0x4]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0x1C
- ldrsh r1, [r4, r6]
- movs r3, 0x1E
- ldrsh r2, [r4, r3]
- ldrh r3, [r4, 0x20]
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8076440
- ldrh r0, [r4, 0x18]
- adds r0, 0x1
- strh r0, [r4, 0x18]
- lsls r0, 16
- asrs r0, 16
- ldr r1, [r5]
- ldrb r1, [r1, 0x5]
- cmp r0, r1
- blt _08076436
- movs r0, 0
- strh r0, [r4, 0x18]
- b _08076408
- .align 2, 0
-_080763A8: .4byte gUnknown_2037F28
-_080763AC: .4byte 0x00007ffe
-_080763B0:
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x16]
- b _08076436
-_080763B6:
- ldrh r2, [r1, 0x2]
- movs r6, 0x2
- ldrsh r0, [r1, r6]
- cmp r0, 0
- beq _08076408
- ldrh r1, [r4, 0x1A]
- movs r3, 0x1A
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080763D6
- subs r0, r1, 0x1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- cmp r0, 0
- bne _080763D8
- b _08076408
-_080763D6:
- strh r2, [r4, 0x1A]
-_080763D8:
- movs r6, 0x16
- ldrsh r0, [r4, r6]
- cmp r0, 0
- beq _08076436
- ldr r3, _08076400 @ =gUnknown_2037F28
- ldr r5, _08076404 @ =0x00007ffd
-_080763E4:
- ldrh r2, [r4, 0x16]
- subs r1, r2, 0x1
- strh r1, [r4, 0x16]
- ldr r0, [r3]
- subs r0, 0x8
- str r0, [r3]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r0, r5
- beq _08076434
- lsls r0, r1, 16
- cmp r0, 0
- bne _080763E4
- b _08076436
- .align 2, 0
-_08076400: .4byte gUnknown_2037F28
-_08076404: .4byte 0x00007ffd
-_08076408:
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
- b _08076436
-_08076410:
- ldr r2, _08076430 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x26]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8075980
- movs r0, 0
- b _08076438
- .align 2, 0
-_08076430: .4byte gSprites
-_08076434:
- strh r2, [r4, 0x16]
-_08076436:
- movs r0, 0x1
-_08076438:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8076308
-
- thumb_func_start sub_8076440
-sub_8076440: @ 8076440
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80764EC
- lsls r0, 16
- lsrs r0, 15
- movs r1, 0x40
- subs r5, r1, r0
- ldr r1, _0807648C @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r4, r0, r1
- ldrb r1, [r4, 0x3]
- lsls r1, 26
- lsrs r1, 27
- lsls r0, r5, 8
- ldr r2, _08076490 @ =gOamMatrices
- lsls r1, 3
- adds r1, r2
- movs r2, 0x6
- ldrsh r1, [r1, r2]
- bl __divsi3
- cmp r0, 0x80
- ble _0807647C
- movs r0, 0x80
-_0807647C:
- subs r0, r5, r0
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x26]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807648C: .4byte gSprites
-_08076490: .4byte gOamMatrices
- thumb_func_end sub_8076440
-
- thumb_func_start sub_8076494
-sub_8076494: @ 8076494
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 24
- lsrs r0, 24
- bl sub_80764EC
- lsls r0, 16
- lsrs r0, 15
- movs r1, 0x40
- subs r5, r1, r0
- ldr r1, _080764E4 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r4, r0, r1
- ldrb r1, [r4, 0x3]
- lsls r1, 26
- lsrs r1, 27
- lsls r0, r5, 8
- ldr r2, _080764E8 @ =gOamMatrices
- lsls r1, 3
- adds r1, r2
- movs r2, 0x6
- ldrsh r1, [r1, r2]
- bl __divsi3
- cmp r0, 0x80
- ble _080764D4
- movs r0, 0x80
-_080764D4:
- subs r0, r5, r0
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x26]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080764E4: .4byte gSprites
-_080764E8: .4byte gOamMatrices
- thumb_func_end sub_8076494
-
- thumb_func_start sub_80764EC
-sub_80764EC: @ 80764EC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _08076548 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r1, _0807654C @ =gUnknown_2023D44
- ldr r6, _08076550 @ =gBattlerPartyIndexes
-_08076508:
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, r2
- bne _080765AC
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08076568
- ldr r0, _08076554 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _0807655C
- lsls r0, r4, 1
- adds r0, r6
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08076558 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- b _0807655E
- .align 2, 0
-_08076548: .4byte gSprites
-_0807654C: .4byte gUnknown_2023D44
-_08076550: .4byte gBattlerPartyIndexes
-_08076554: .4byte gUnknown_2024018
-_08076558: .4byte gPlayerParty
-_0807655C:
- ldrh r1, [r1, 0x2]
-_0807655E:
- ldr r0, _08076564 @ =gUnknown_8235E6C
- b _080765A0
- .align 2, 0
-_08076564: .4byte gUnknown_8235E6C
-_08076568:
- ldr r0, _08076594 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _0807659C
- lsls r0, r4, 1
- adds r0, r6
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08076598 @ =gEnemyParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- b _0807659E
- .align 2, 0
-_08076594: .4byte gUnknown_2024018
-_08076598: .4byte gEnemyParty
-_0807659C:
- ldrh r1, [r1, 0x2]
-_0807659E:
- ldr r0, _080765A8 @ =gUnknown_82349CC
-_080765A0:
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- b _080765B8
- .align 2, 0
-_080765A8: .4byte gUnknown_82349CC
-_080765AC:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08076508
- movs r0, 0x40
-_080765B8:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80764EC
-
- thumb_func_start sub_80765C0
-sub_80765C0: @ 80765C0
- strh r2, [r0]
- asrs r2, 16
- strh r2, [r1]
- bx lr
- thumb_func_end sub_80765C0
-
- thumb_func_start sub_80765C8
-sub_80765C8: @ 80765C8
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- orrs r0, r1
- bx lr
- thumb_func_end sub_80765C8
-
- thumb_func_start sub_80765D4
-sub_80765D4: @ 80765D4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- mov r8, r0
- adds r5, r3, 0
- ldr r0, [sp, 0x14]
- ldr r4, [sp, 0x18]
- ldr r6, [sp, 0x1C]
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r6, 16
- lsrs r6, 16
- mov r3, r8
- strh r6, [r3, 0x18]
- strh r1, [r3, 0x26]
- strh r2, [r3, 0x1A]
- strh r5, [r3, 0x1C]
- strh r0, [r3, 0x22]
- strh r4, [r3, 0x24]
- lsls r0, 16
- asrs r0, 16
- lsls r2, 16
- asrs r2, 16
- subs r0, r2
- adds r1, r6, 0
- bl __divsi3
- mov r1, r8
- strh r0, [r1, 0x1E]
- lsls r4, 16
- asrs r4, 16
- lsls r5, 16
- asrs r5, 16
- subs r4, r5
- adds r0, r4, 0
- adds r1, r6, 0
- bl __divsi3
- mov r3, r8
- strh r0, [r3, 0x20]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80765D4
-
- thumb_func_start sub_8076640
-sub_8076640: @ 8076640
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x18]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _08076652
- movs r0, 0
- b _080766AE
-_08076652:
- subs r0, r1, 0x1
- strh r0, [r4, 0x18]
- lsls r0, 16
- cmp r0, 0
- beq _0807666C
- ldrh r0, [r4, 0x1E]
- ldrh r3, [r4, 0x1A]
- adds r0, r3
- strh r0, [r4, 0x1A]
- ldrh r0, [r4, 0x20]
- ldrh r1, [r4, 0x1C]
- adds r0, r1
- b _08076672
-_0807666C:
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x1A]
- ldrh r0, [r4, 0x24]
-_08076672:
- strh r0, [r4, 0x1C]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x1A
- ldrsh r1, [r4, r2]
- movs r3, 0x1C
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl obj_id_set_rotscale
- movs r0, 0x18
- ldrsh r3, [r4, r0]
- cmp r3, 0
- beq _0807669C
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8076440
- b _080766AC
-_0807669C:
- ldr r2, _080766B4 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x26]
-_080766AC:
- ldrb r0, [r4, 0x18]
-_080766AE:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080766B4: .4byte gSprites
- thumb_func_end sub_8076640
-
- thumb_func_start sub_80766B8
-sub_80766B8: @ 80766B8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080766E4 @ =gUnknown_2037EFE
- ldrb r0, [r0]
- movs r1, 0
- cmp r0, 0x1E
- bls _080766D6
- movs r1, 0x1
- cmp r0, 0x64
- bls _080766D6
- movs r1, 0x3
- cmp r0, 0xC8
- bhi _080766D6
- movs r1, 0x2
-_080766D6:
- ldr r0, _080766E8 @ =gUnknown_2037F02
- strh r1, [r0, 0xE]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080766E4: .4byte gUnknown_2037EFE
-_080766E8: .4byte gUnknown_2037F02
- thumb_func_end sub_80766B8
-
- thumb_func_start sub_80766EC
-sub_80766EC: @ 80766EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r7, r4, 0
- ldr r6, _080767E0 @ =gUnknown_2037F1B
- ldrb r0, [r6]
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _0807672C
- ldr r2, _080767E4 @ =gSprites
- ldr r1, _080767E8 @ =gUnknown_2023D44
- ldrb r0, [r6]
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x3
- adds r2, r4, 0
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
-_0807672C:
- ldr r0, _080767EC @ =gUnknown_2037F1A
- mov r8, r0
- ldrb r0, [r0]
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _08076764
- ldr r2, _080767E4 @ =gSprites
- ldr r1, _080767E8 @ =gUnknown_2023D44
- mov r3, r8
- ldrb r0, [r3]
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x3
- adds r2, r4, 0
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
-_08076764:
- ldrb r0, [r6]
- movs r5, 0x2
- eors r0, r5
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _0807679C
- ldr r2, _080767E4 @ =gSprites
- ldr r1, _080767E8 @ =gUnknown_2023D44
- ldrb r0, [r6]
- eors r0, r5
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x3
- adds r2, r4, 0
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
-_0807679C:
- mov r1, r8
- ldrb r0, [r1]
- eors r0, r5
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080767D4
- ldr r2, _080767E4 @ =gSprites
- ldr r1, _080767E8 @ =gUnknown_2023D44
- mov r3, r8
- ldrb r0, [r3]
- eors r0, r5
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x3
- ands r7, r0
- lsls r3, r7, 2
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
-_080767D4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080767E0: .4byte gUnknown_2037F1B
-_080767E4: .4byte gSprites
-_080767E8: .4byte gUnknown_2023D44
-_080767EC: .4byte gUnknown_2037F1A
- thumb_func_end sub_80766EC
-
- thumb_func_start sub_80767F0
-sub_80767F0: @ 80767F0
- push {r4-r6,lr}
- movs r5, 0
- ldr r0, _08076850 @ =gBattlersCount
- ldrb r0, [r0]
- cmp r5, r0
- bge _0807684A
- ldr r6, _08076854 @ =gSprites
-_080767FE:
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _08076840
- adds r0, r4, 0
- bl sub_807685C
- ldr r3, _08076858 @ =gUnknown_2023D44
- adds r3, r5, r3
- ldrb r2, [r3]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r6
- adds r1, 0x43
- strb r0, [r1]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r2, [r0, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r2, r1
- movs r1, 0x8
- orrs r2, r1
- strb r2, [r0, 0x5]
-_08076840:
- adds r5, 0x1
- ldr r0, _08076850 @ =gBattlersCount
- ldrb r0, [r0]
- cmp r5, r0
- blt _080767FE
-_0807684A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08076850: .4byte gBattlersCount
-_08076854: .4byte gSprites
-_08076858: .4byte gUnknown_2023D44
- thumb_func_end sub_80767F0
-
- thumb_func_start sub_807685C
-sub_807685C: @ 807685C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1E
- cmp r0, 0
- beq _0807687E
- movs r1, 0x14
- cmp r0, 0x2
- beq _0807687E
- movs r1, 0x32
- cmp r0, 0x1
- bne _0807687E
- movs r1, 0x28
-_0807687E:
- adds r0, r1, 0
- pop {r1}
- bx r1
- thumb_func_end sub_807685C
-
- thumb_func_start sub_8076884
-sub_8076884: @ 8076884
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0807689A
- cmp r0, 0x3
- bne _0807689E
-_0807689A:
- movs r0, 0x2
- b _080768A0
-_0807689E:
- movs r0, 0x1
-_080768A0:
- movs r1, 0x4
- bl sub_80BC30C
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_8076884
-
- thumb_func_start sub_80768B0
-sub_80768B0: @ 80768B0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080768C6
- cmp r0, 0x3
- bne _080768CA
-_080768C6:
- movs r0, 0x2
- b _080768CC
-_080768CA:
- movs r0, 0x1
-_080768CC:
- pop {r1}
- bx r1
- thumb_func_end sub_80768B0
-
- thumb_func_start sub_80768D0
-sub_80768D0: @ 80768D0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- ldr r4, [sp, 0x30]
- ldr r5, [sp, 0x34]
- ldr r6, [sp, 0x38]
- mov r8, r6
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 16
- lsrs r3, 16
- mov r10, r3
- lsls r4, 16
- lsrs r4, 16
- str r4, [sp, 0x4]
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp, 0x8]
- lsls r0, r7, 3
- ldr r1, _080769B0 @ =gUnknown_83AE084
- adds r0, r1
- bl LoadSpriteSheet
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0xC]
- ldr r1, _080769B4 @ =gUnknown_83AE054
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x2]
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080769B8 @ =gMonSpritesGfxPtr
- ldr r0, [r4]
- cmp r0, 0
- beq _0807694E
- movs r1, 0xBE
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- bne _0807694E
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- ldr r1, [r4]
- movs r2, 0xBE
- lsls r2, 1
- adds r1, r2
- str r0, [r1]
-_0807694E:
- mov r3, r9
- cmp r3, 0
- bne _080769EC
- adds r0, r6, 0
- ldr r1, [sp, 0x3C]
- mov r2, r8
- bl GetFrontSpritePalFromSpeciesAndPersonality
- lsls r1, r5, 20
- movs r2, 0x80
- lsls r2, 17
- adds r1, r2
- lsrs r1, 16
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r3, [sp, 0x44]
- cmp r3, 0x1
- beq _0807699A
- ldr r0, [sp, 0x40]
- lsls r1, r0, 24
- lsrs r1, 24
- movs r0, 0x5
- bl sub_804455C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0807699A
- ldr r0, _080769BC @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0]
- ldr r2, [sp, 0x40]
- lsls r0, r2, 2
- adds r0, r1
- ldrh r0, [r0, 0x2]
- cmp r0, 0
- beq _080769C4
-_0807699A:
- lsls r0, r6, 3
- ldr r1, _080769C0 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _080769B8 @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- movs r3, 0xBE
- lsls r3, 1
- adds r1, r3
- ldr r1, [r1]
- movs r2, 0x1
- b _08076A46
- .align 2, 0
-_080769B0: .4byte gUnknown_83AE084
-_080769B4: .4byte gUnknown_83AE054
-_080769B8: .4byte gMonSpritesGfxPtr
-_080769BC: .4byte gUnknown_2024018
-_080769C0: .4byte gMonFrontPicTable
-_080769C4:
- lsls r0, r6, 3
- ldr r1, _080769E4 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _080769E8 @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- movs r2, 0xBE
- lsls r2, 1
- adds r1, r2
- ldr r1, [r1]
- movs r2, 0x1
- str r2, [sp]
- adds r2, r6, 0
- mov r3, r8
- bl LoadSpecialPokePic
- b _08076A7C
- .align 2, 0
-_080769E4: .4byte gMonFrontPicTable
-_080769E8: .4byte gMonSpritesGfxPtr
-_080769EC:
- adds r0, r6, 0
- ldr r1, [sp, 0x3C]
- mov r2, r8
- bl GetFrontSpritePalFromSpeciesAndPersonality
- lsls r1, r5, 20
- movs r3, 0x80
- lsls r3, 17
- adds r1, r3
- lsrs r1, 16
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r0, [sp, 0x44]
- cmp r0, 0x1
- beq _08076A32
- ldr r2, [sp, 0x40]
- lsls r1, r2, 24
- lsrs r1, 24
- movs r0, 0x5
- bl sub_804455C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08076A32
- ldr r0, _08076A54 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0]
- ldr r3, [sp, 0x40]
- lsls r0, r3, 2
- adds r0, r1
- ldrh r2, [r0, 0x2]
- cmp r2, 0
- beq _08076A60
-_08076A32:
- lsls r0, r6, 3
- ldr r1, _08076A58 @ =gMonBackPicTable
- adds r0, r1
- ldr r1, _08076A5C @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- movs r2, 0xBE
- lsls r2, 1
- adds r1, r2
- ldr r1, [r1]
- movs r2, 0
-_08076A46:
- str r2, [sp]
- adds r2, r6, 0
- mov r3, r8
- bl LoadSpecialPokePic_DontHandleDeoxys
- b _08076A7C
- .align 2, 0
-_08076A54: .4byte gUnknown_2024018
-_08076A58: .4byte gMonBackPicTable
-_08076A5C: .4byte gMonSpritesGfxPtr
-_08076A60:
- lsls r0, r6, 3
- ldr r1, _08076AC8 @ =gMonBackPicTable
- adds r0, r1
- ldr r1, _08076ACC @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- movs r3, 0xBE
- lsls r3, 1
- adds r1, r3
- ldr r1, [r1]
- str r2, [sp]
- adds r2, r6, 0
- mov r3, r8
- bl LoadSpecialPokePic
-_08076A7C:
- ldr r5, _08076ACC @ =gMonSpritesGfxPtr
- ldr r0, [r5]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- ldr r0, [r0]
- ldr r2, [sp, 0xC]
- lsls r1, r2, 5
- ldr r3, _08076AD0 @ =0x06010000
- adds r1, r3
- movs r2, 0x80
- lsls r2, 4
- movs r3, 0x1
- bl RequestDma3Copy
- ldr r0, [r5]
- adds r0, r4
- ldr r0, [r0]
- bl Free
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0
- str r1, [r0]
- mov r0, r9
- cmp r0, 0
- bne _08076ADC
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 3
- ldr r1, _08076AD4 @ =gUnknown_83AE054
- adds r0, r1
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- ldr r3, _08076AD8 @ =gUnknown_82349CC
- b _08076AEE
- .align 2, 0
-_08076AC8: .4byte gMonBackPicTable
-_08076ACC: .4byte gMonSpritesGfxPtr
-_08076AD0: .4byte 0x06010000
-_08076AD4: .4byte gUnknown_83AE054
-_08076AD8: .4byte gUnknown_82349CC
-_08076ADC:
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 3
- ldr r1, _08076B18 @ =gUnknown_83AE054
- adds r0, r1
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- ldr r3, _08076B1C @ =gUnknown_8235E6C
-_08076AEE:
- lsls r2, r6, 2
- adds r2, r3
- ldrb r2, [r2, 0x1]
- ldr r3, [sp, 0x4]
- adds r2, r3
- lsls r2, 16
- asrs r2, 16
- ldr r3, [sp, 0x8]
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08076B18: .4byte gUnknown_83AE054
-_08076B1C: .4byte gUnknown_8235E6C
- thumb_func_end sub_80768D0
-
- thumb_func_start sub_8076B20
-sub_8076B20: @ 8076B20
- push {lr}
- bl DestroySpriteAndFreeResources
- pop {r0}
- bx r0
- thumb_func_end sub_8076B20
-
- thumb_func_start sub_8076B2C
-sub_8076B2C: @ 8076B2C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08076C08
- ldr r0, _08076B88 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0]
- mov r1, r8
- lsls r2, r1, 2
- adds r1, r2, r0
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _08076B94
- ldr r0, _08076B8C @ =gBattlerPartyIndexes
- mov r1, r8
- lsls r4, r1, 1
- adds r4, r0
- ldrh r0, [r4]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08076B90 @ =gPlayerParty
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r7, r0, 16
- ldrh r0, [r4]
- muls r0, r6
- adds r0, r5
- movs r1, 0
- bl GetMonData
- adds r2, r0, 0
- b _08076B9C
- .align 2, 0
-_08076B88: .4byte gUnknown_2024018
-_08076B8C: .4byte gBattlerPartyIndexes
-_08076B90: .4byte gPlayerParty
-_08076B94:
- ldrh r7, [r1, 0x2]
- ldr r0, _08076BD4 @ =gUnknown_2024008
- adds r0, r2, r0
- ldr r2, [r0]
-_08076B9C:
- cmp r7, 0xC9
- bne _08076BEC
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r2
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r2
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r2
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r2
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _08076BD8
- movs r0, 0xC9
- b _08076BE2
- .align 2, 0
-_08076BD4: .4byte gUnknown_2024008
-_08076BD8:
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
-_08076BE2:
- lsls r1, r0, 2
- ldr r0, _08076BE8 @ =gUnknown_8235E6C
- b _08076CDC
- .align 2, 0
-_08076BE8: .4byte gUnknown_8235E6C
-_08076BEC:
- movs r0, 0xCE
- lsls r0, 1
- cmp r7, r0
- bls _08076BFC
- ldr r4, _08076BF8 @ =gUnknown_8235E6C
- b _08076CDE
- .align 2, 0
-_08076BF8: .4byte gUnknown_8235E6C
-_08076BFC:
- lsls r1, r7, 2
- ldr r0, _08076C04 @ =gUnknown_8235E6C
- b _08076CDC
- .align 2, 0
-_08076C04: .4byte gUnknown_8235E6C
-_08076C08:
- ldr r0, _08076C48 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0]
- mov r1, r8
- lsls r2, r1, 2
- adds r1, r2, r0
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _08076C54
- ldr r0, _08076C4C @ =gBattlerPartyIndexes
- mov r1, r8
- lsls r4, r1, 1
- adds r4, r0
- ldrh r0, [r4]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08076C50 @ =gEnemyParty
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r7, r0, 16
- ldrh r0, [r4]
- muls r0, r6
- adds r0, r5
- movs r1, 0
- bl GetMonData
- adds r2, r0, 0
- b _08076C5C
- .align 2, 0
-_08076C48: .4byte gUnknown_2024018
-_08076C4C: .4byte gBattlerPartyIndexes
-_08076C50: .4byte gEnemyParty
-_08076C54:
- ldrh r7, [r1, 0x2]
- ldr r0, _08076C94 @ =gUnknown_2024008
- adds r0, r2, r0
- ldr r2, [r0]
-_08076C5C:
- cmp r7, 0xC9
- bne _08076CA6
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r2
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r2
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r2
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r2
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _08076C98
- movs r0, 0xC9
- b _08076CA2
- .align 2, 0
-_08076C94: .4byte gUnknown_2024008
-_08076C98:
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
-_08076CA2:
- lsls r1, r0, 2
- b _08076CDA
-_08076CA6:
- ldr r0, _08076CBC @ =0x00000181
- cmp r7, r0
- bne _08076CC8
- ldr r0, _08076CC0 @ =gBattleMonForms
- add r0, r8
- ldrb r0, [r0]
- lsls r0, 2
- ldr r1, _08076CC4 @ =gUnknown_83AE03C
- adds r4, r0, r1
- b _08076CDE
- .align 2, 0
-_08076CBC: .4byte 0x00000181
-_08076CC0: .4byte gBattleMonForms
-_08076CC4: .4byte gUnknown_83AE03C
-_08076CC8:
- movs r0, 0xCE
- lsls r0, 1
- cmp r7, r0
- bls _08076CD8
- ldr r4, _08076CD4 @ =gUnknown_82349CC
- b _08076CDE
- .align 2, 0
-_08076CD4: .4byte gUnknown_82349CC
-_08076CD8:
- lsls r1, r7, 2
-_08076CDA:
- ldr r0, _08076CF0 @ =gUnknown_82349CC
-_08076CDC:
- adds r4, r1, r0
-_08076CDE:
- mov r0, r9
- cmp r0, 0x6
- bhi _08076D8E
- lsls r0, 2
- ldr r1, _08076CF4 @ =_08076CF8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08076CF0: .4byte gUnknown_82349CC
-_08076CF4: .4byte _08076CF8
- .align 2, 0
-_08076CF8:
- .4byte _08076D14
- .4byte _08076D1E
- .4byte _08076D4A
- .4byte _08076D62
- .4byte _08076D26
- .4byte _08076D38
- .4byte _08076D7A
-_08076D14:
- ldrb r1, [r4]
- movs r0, 0xF
- ands r0, r1
- lsls r0, 3
- b _08076D90
-_08076D1E:
- ldrb r0, [r4]
- lsrs r0, 4
- lsls r0, 3
- b _08076D90
-_08076D26:
- mov r0, r8
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4]
- lsrs r1, 4
- b _08076D5C
-_08076D38:
- mov r0, r8
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4]
- lsrs r1, 4
- b _08076D74
-_08076D4A:
- mov r0, r8
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrb r2, [r4]
- movs r1, 0xF
- ands r1, r2
-_08076D5C:
- lsls r1, 2
- subs r0, r1
- b _08076D90
-_08076D62:
- mov r0, r8
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrb r2, [r4]
- movs r1, 0xF
- ands r1, r2
-_08076D74:
- lsls r1, 2
- adds r0, r1
- b _08076D90
-_08076D7A:
- mov r0, r8
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1F
- ldrb r1, [r4, 0x1]
- subs r0, r1
- b _08076D90
-_08076D8E:
- movs r0, 0
-_08076D90:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8076B2C
-
- thumb_func_start sub_8076D9C
-sub_8076D9C: @ 8076D9C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r2
- mov r10, r3
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- cmp r1, 0
- bne _08076DBA
- movs r5, 0
- movs r6, 0x1
- b _08076DBE
-_08076DBA:
- movs r5, 0x2
- movs r6, 0x3
-_08076DBE:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r7, r0, 24
- bl sub_8075290
- lsls r0, 24
- cmp r0, 0
- beq _08076E06
- movs r0, 0x2
- eors r4, r0
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r3, r0, 24
- mov r0, r8
- lsls r1, r0, 16
- lsls r2, r7, 16
- b _08076E12
-_08076E06:
- mov r0, r8
- lsls r1, r0, 16
- lsrs r5, r1, 16
- lsls r0, r7, 16
- lsrs r3, r0, 16
- adds r2, r0, 0
-_08076E12:
- asrs r0, r1, 16
- adds r0, r5
- asrs r0, 1
- mov r1, r9
- strh r0, [r1]
- asrs r0, r2, 16
- adds r0, r3
- asrs r0, 1
- mov r1, r10
- strh r0, [r1]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8076D9C
-
- thumb_func_start sub_8076E34
-sub_8076E34: @ 8076E34
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x4
- lsls r6, r1, 24
- lsrs r6, 24
- ldr r0, _08076ECC @ =SpriteCallbackDummy
- mov r10, r0
- bl CreateInvisibleSpriteWithCallback
- mov r8, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _08076ED0 @ =gSprites
- mov r9, r0
- mov r0, r8
- lsls r3, r0, 4
- add r3, r8
- lsls r3, 2
- mov r0, r9
- adds r5, r3, r0
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- add r4, r9
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x44
- str r3, [sp]
- bl memcpy
- adds r2, r5, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldrb r2, [r5, 0x5]
- movs r1, 0xD
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r5, 0x5]
- ldrb r0, [r5, 0x1]
- ands r1, r0
- movs r0, 0x8
- orrs r1, r0
- strb r1, [r5, 0x1]
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 22
- ldrh r2, [r5, 0x4]
- ldr r0, _08076ED4 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- movs r0, 0x1C
- add r9, r0
- ldr r3, [sp]
- add r3, r9
- mov r0, r10
- str r0, [r3]
- mov r0, r8
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08076ECC: .4byte SpriteCallbackDummy
-_08076ED0: .4byte gSprites
-_08076ED4: .4byte 0xfffffc00
- thumb_func_end sub_8076E34
-
- thumb_func_start sub_8076ED8
-sub_8076ED8: @ 8076ED8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8074FCC
- ldr r0, _08076F10 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08076F18
- ldr r2, _08076F14 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x6]
- negs r0, r0
- strh r0, [r2, 0x6]
- adds r3, r4, 0
- adds r3, 0x3F
- ldrb r0, [r3]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r3]
- adds r1, r2, 0
- b _08076F22
- .align 2, 0
-_08076F10: .4byte gUnknown_2037F1A
-_08076F14: .4byte gUnknown_2037F02
-_08076F18:
- ldr r1, _08076F4C @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
-_08076F22:
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x38]
- ldr r1, _08076F50 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _08076F54 @ =sub_8074E70
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08076F4C: .4byte gUnknown_2037F02
-_08076F50: .4byte move_anim_8074EE0
-_08076F54: .4byte sub_8074E70
- thumb_func_end sub_8076ED8
-
- thumb_func_start sub_8076F58
-sub_8076F58: @ 8076F58
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08076F80 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08076F88
- ldr r2, _08076F84 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- movs r1, 0x6
- ldrsh r0, [r2, r1]
- negs r0, r0
- strh r0, [r2, 0x6]
- adds r1, r2, 0
- b _08076F92
- .align 2, 0
-_08076F80: .4byte gUnknown_2037F1A
-_08076F84: .4byte gUnknown_2037F02
-_08076F88:
- ldr r1, _08076FC4 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
-_08076F92:
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x38]
- ldrb r1, [r1, 0xC]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r1, _08076FC8 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _08076FCC @ =sub_8074E70
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08076FC4: .4byte gUnknown_2037F02
-_08076FC8: .4byte move_anim_8074EE0
-_08076FCC: .4byte sub_8074E70
- thumb_func_end sub_8076F58
-
- thumb_func_start sub_8076FD0
-sub_8076FD0: @ 8076FD0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8074FCC
- ldr r0, _08076FF4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08076FFC
- ldr r0, _08076FF8 @ =gUnknown_2037F02
- ldrh r1, [r4, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r4, 0x20]
- b _08077008
- .align 2, 0
-_08076FF4: .4byte gUnknown_2037F1A
-_08076FF8: .4byte gUnknown_2037F02
-_08076FFC:
- ldr r1, _08077024 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r0, r1, 0
-_08077008:
- ldrh r0, [r0, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, _08077028 @ =sub_8074F6C
- str r0, [r4, 0x1C]
- ldr r1, _0807702C @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08077024: .4byte gUnknown_2037F02
-_08077028: .4byte sub_8074F6C
-_0807702C: .4byte DestroyAnimSprite
- thumb_func_end sub_8076FD0
-
- thumb_func_start sub_8077030
-sub_8077030: @ 8077030
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080770C4 @ =gTasks
- adds r5, r1, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- strh r0, [r5, 0x8]
- ldr r7, _080770C8 @ =gUnknown_2037F1A
- ldrb r0, [r7]
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0x8
- cmp r0, 0
- beq _08077064
- movs r0, 0x8
- negs r0, r0
- adds r1, r0, 0
-_08077064:
- strh r1, [r5, 0xA]
- strh r6, [r5, 0xC]
- strh r6, [r5, 0xE]
- ldr r4, _080770CC @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x24]
- ldrh r2, [r5, 0x8]
- subs r1, r2
- strh r1, [r0, 0x24]
- ldr r0, _080770D0 @ =0x00002771
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x10]
- strh r6, [r5, 0x12]
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- adds r0, 0x10
- lsls r0, 20
- lsrs r6, r0, 16
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- lsls r4, r0, 4
- ldrb r0, [r7]
- bl sub_807685C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x14]
- cmp r0, 0x14
- beq _080770C0
- cmp r0, 0x28
- bne _080770D4
-_080770C0:
- movs r0, 0x2
- b _080770D6
- .align 2, 0
-_080770C4: .4byte gTasks
-_080770C8: .4byte gUnknown_2037F1A
-_080770CC: .4byte gSprites
-_080770D0: .4byte 0x00002771
-_080770D4:
- movs r0, 0x3
-_080770D6:
- strh r0, [r5, 0x14]
- lsls r0, r4, 1
- ldr r1, _08077104 @ =gPlttBufferUnfaded
- adds r0, r1
- lsls r1, r6, 1
- ldr r2, _08077108 @ =gPlttBufferFaded
- adds r1, r2
- ldr r2, _0807710C @ =0x04000008
- bl CpuSet
- ldr r0, _08077110 @ =gUnknown_2037F02
- ldrb r2, [r0, 0x2]
- ldrh r3, [r0]
- adds r0, r6, 0
- movs r1, 0x10
- bl BlendPalette
- ldr r0, _08077114 @ =sub_8077118
- str r0, [r5]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077104: .4byte gPlttBufferUnfaded
-_08077108: .4byte gPlttBufferFaded
-_0807710C: .4byte 0x04000008
-_08077110: .4byte gUnknown_2037F02
-_08077114: .4byte sub_8077118
- thumb_func_end sub_8077030
-
- thumb_func_start sub_8077118
-sub_8077118: @ 8077118
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0807713C @ =gTasks
- adds r4, r0, r1
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _0807717C
- cmp r0, 0x1
- bgt _08077140
- cmp r0, 0
- beq _08077146
- b _080771D8
- .align 2, 0
-_0807713C: .4byte gTasks
-_08077140:
- cmp r0, 0x2
- beq _080771C4
- b _080771D8
-_08077146:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80771E4
- ldr r2, _08077178 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0xA]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- strh r1, [r0, 0x24]
- ldrh r1, [r4, 0xE]
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080771D8
- strh r1, [r4, 0xE]
- b _080771B6
- .align 2, 0
-_08077178: .4byte gSprites
-_0807717C:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80771E4
- ldr r3, _080771C0 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x24]
- ldrh r2, [r4, 0xA]
- subs r1, r2
- strh r1, [r0, 0x24]
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- bne _080771D8
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- strh r2, [r1, 0x24]
-_080771B6:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- b _080771D8
- .align 2, 0
-_080771C0: .4byte gSprites
-_080771C4:
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080771D8
- ldr r0, _080771E0 @ =0x00002771
- bl FreeSpritePaletteByTag
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080771D8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080771E0: .4byte 0x00002771
- thumb_func_end sub_8077118
-
- thumb_func_start sub_80771E4
-sub_80771E4: @ 80771E4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- movs r0, 0
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- lsrs r7, r0, 16
- asrs r0, 16
- cmp r0, 0
- blt _08077254
- ldr r5, _08077260 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r3, r4, r5
- movs r0, 0x3
- ldrb r1, [r6, 0x14]
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldrb r1, [r6, 0x10]
- lsls r1, 4
- movs r2, 0xF
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x5]
- movs r0, 0x8
- strh r0, [r3, 0x2E]
- mov r0, r8
- strh r0, [r3, 0x30]
- strh r7, [r3, 0x32]
- movs r0, 0x8
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r0, [r0, 0x24]
- strh r0, [r3, 0x24]
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _08077264 @ =sub_8077268
- str r0, [r4]
- ldrh r0, [r6, 0x12]
- adds r0, 0x1
- strh r0, [r6, 0x12]
-_08077254:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077260: .4byte gSprites
-_08077264: .4byte sub_8077268
- thumb_func_end sub_80771E4
-
- thumb_func_start sub_8077268
-sub_8077268: @ 8077268
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- subs r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _08077292
- ldr r2, _08077298 @ =gTasks
- movs r0, 0x30
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x12]
- subs r1, 0x1
- strh r1, [r0, 0x12]
- adds r0, r3, 0
- bl obj_delete_but_dont_free_vram
-_08077292:
- pop {r0}
- bx r0
- .align 2, 0
-_08077298: .4byte gTasks
- thumb_func_end sub_8077268
-
- thumb_func_start sub_807729C
-sub_807729C: @ 807729C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080772D0 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080772D4
- movs r0, 0x5
- b _080772D6
- .align 2, 0
-_080772D0: .4byte gUnknown_2037F1A
-_080772D4:
- ldr r0, _080772E8 @ =0x0000fff6
-_080772D6:
- strh r0, [r5, 0x2E]
- ldr r0, _080772EC @ =0x0000ffd8
- strh r0, [r5, 0x30]
- ldr r0, _080772F0 @ =sub_80772F4
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080772E8: .4byte 0x0000fff6
-_080772EC: .4byte 0x0000ffd8
-_080772F0: .4byte sub_80772F4
- thumb_func_end sub_807729C
-
- thumb_func_start sub_80772F4
-sub_80772F4: @ 80772F4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r5, [r4, 0x30]
- ldrh r2, [r4, 0x34]
- adds r0, r5, r2
- strh r0, [r4, 0x34]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x26]
- lsls r0, r5, 16
- asrs r0, 16
- movs r1, 0x14
- negs r1, r1
- cmp r0, r1
- bge _08077330
- adds r0, r5, 0x1
- strh r0, [r4, 0x30]
-_08077330:
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _08077348
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08077348:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80772F4
-
- thumb_func_start sub_8077350
-sub_8077350: @ 8077350
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _08077388 @ =gUnknown_2037F02
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x8]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r0, [r5, 0xA]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x36]
- ldr r0, _0807738C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08077390
- ldrh r0, [r5, 0x8]
- adds r0, 0x1E
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0xA]
- subs r0, 0x14
- b _0807739E
- .align 2, 0
-_08077388: .4byte gUnknown_2037F02
-_0807738C: .4byte gUnknown_2037F1B
-_08077390:
- ldrh r0, [r5, 0x8]
- subs r0, 0x1E
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0xA]
- subs r0, 0x50
-_0807739E:
- strh r0, [r4, 0x22]
- ldr r0, _080773B4 @ =sub_8075590
- str r0, [r4, 0x1C]
- ldr r1, _080773B8 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080773B4: .4byte sub_8075590
-_080773B8: .4byte DestroyAnimSprite
- thumb_func_end sub_8077350
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_8078178.s b/asm/battle_anim_8078178.s
deleted file mode 100644
index 1080351b3..000000000
--- a/asm/battle_anim_8078178.s
+++ /dev/null
@@ -1,977 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8078178
-sub_8078178: @ 8078178
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _0807821C @ =gUnknown_2023D44
- adds r0, r4, r0
- ldrb r6, [r0]
- ldr r0, _08078220 @ =sub_80782BC
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _08078224 @ =gUnknown_83AD048
- bl sub_800F034
- ldr r0, _08078228 @ =gUnknown_83AD950
- bl sub_800F078
- ldr r1, _0807822C @ =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r1, r0, r1
- strh r4, [r1, 0x8]
- cmp r5, 0
- beq _08078238
- movs r0, 0x1F
- strh r0, [r1, 0xA]
- movs r5, 0
- lsls r0, r6, 4
- ldr r7, _08078230 @ =gSprites
- adds r0, r6
- lsls r0, 2
- adds r6, r0, r7
-_080781CC:
- movs r0, 0x20
- ldrsh r1, [r6, r0]
- ldrh r2, [r6, 0x22]
- adds r2, 0x20
- lsls r2, 16
- asrs r2, 16
- ldr r0, _08078234 @ =gUnknown_83BF574
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r3, r0, r7
- lsls r0, r5, 1
- adds r0, r5
- lsls r1, r0, 4
- adds r0, r1
- strh r0, [r3, 0x2E]
- movs r0, 0xFF
- lsls r0, 8
- strh r0, [r3, 0x30]
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- cmp r5, 0x4
- bls _08078210
- movs r0, 0x15
- strh r0, [r3, 0x3A]
-_08078210:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x9
- bls _080781CC
- b _08078298
- .align 2, 0
-_0807821C: .4byte gUnknown_2023D44
-_08078220: .4byte sub_80782BC
-_08078224: .4byte gUnknown_83AD048
-_08078228: .4byte gUnknown_83AD950
-_0807822C: .4byte gTasks
-_08078230: .4byte gSprites
-_08078234: .4byte gUnknown_83BF574
-_08078238:
- movs r0, 0xF8
- lsls r0, 7
- strh r0, [r1, 0xA]
- movs r5, 0
- lsls r0, r6, 4
- ldr r7, _080782B4 @ =gSprites
- adds r0, r6
- lsls r0, 2
- adds r6, r0, r7
-_0807824A:
- movs r2, 0x20
- ldrsh r1, [r6, r2]
- ldrh r2, [r6, 0x22]
- subs r2, 0x20
- lsls r2, 16
- asrs r2, 16
- ldr r0, _080782B8 @ =gUnknown_83BF574
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r3, r0, r7
- lsls r0, r5, 1
- adds r0, r5
- lsls r1, r0, 4
- adds r0, r1
- strh r0, [r3, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r3, 0x30]
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- cmp r5, 0x4
- bls _0807828E
- movs r0, 0x15
- strh r0, [r3, 0x3A]
-_0807828E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x9
- bls _0807824A
-_08078298:
- ldr r0, _080782B4 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
- mov r0, r8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080782B4: .4byte gSprites
-_080782B8: .4byte gUnknown_83BF574
- thumb_func_end sub_8078178
-
- thumb_func_start sub_80782BC
-sub_80782BC: @ 80782BC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08078314 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0xC]
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0x2
- bne _08078342
- movs r0, 0
- strh r0, [r4, 0xC]
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 20
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r0, 16
- ldrb r2, [r4, 0x10]
- ldrh r3, [r4, 0xA]
- movs r1, 0x10
- bl BlendPalette
- ldrh r2, [r4, 0x12]
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08078318
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _08078346
- movs r0, 0x1
- eors r0, r2
- strh r0, [r4, 0x12]
- b _08078346
- .align 2, 0
-_08078314: .4byte gTasks
-_08078318:
- ldrh r1, [r4, 0x10]
- subs r0, r1, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bge _08078346
- strh r1, [r4, 0x10]
- movs r0, 0x1
- eors r0, r2
- strh r0, [r4, 0x12]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _08078346
- adds r0, r5, 0
- bl DestroyTask
- b _08078346
-_08078342:
- adds r0, r1, 0x1
- strh r0, [r4, 0xC]
-_08078346:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80782BC
-
- thumb_func_start sub_807834C
-sub_807834C: @ 807834C
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x3A]
- movs r3, 0x3A
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _08078378
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r3]
- ldr r1, _08078374 @ =sub_8078380
- str r1, [r2, 0x1C]
- adds r0, r2, 0
- bl _call_via_r1
- b _0807837C
- .align 2, 0
-_08078374: .4byte sub_8078380
-_08078378:
- subs r0, r1, 0x1
- strh r0, [r2, 0x3A]
-_0807837C:
- pop {r0}
- bx r0
- thumb_func_end sub_807834C
-
- thumb_func_start sub_8078380
-sub_8078380: @ 8078380
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Sin
- strh r0, [r4, 0x26]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x7F
- bgt _080783AC
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1D
- b _080783B2
-_080783AC:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1F
-_080783B2:
- strb r0, [r1]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x8
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x38]
- adds r0, r1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x34
- bne _080783F4
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080783EE
- adds r0, r4, 0
- bl DestroySpriteAndFreeResources
- b _080783F4
-_080783EE:
- adds r0, r4, 0
- bl DestroySprite
-_080783F4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8078380
-
- thumb_func_start sub_80783FC
-sub_80783FC: @ 80783FC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, _080784AC @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 8
- ldr r1, _080784B0 @ =0xffe00000
- adds r0, r1
- lsrs r5, r0, 16
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 8
- ldr r1, _080784B4 @ =0xffdc0000
- adds r0, r1
- lsrs r4, r0, 16
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _0807843A
- lsls r0, r5, 16
- ldr r1, _080784B8 @ =0xfffa0000
- adds r0, r1
- lsrs r5, r0, 16
-_0807843A:
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, _080784BC @ =gUnknown_83BF55C
- lsls r1, r5, 16
- asrs r1, 16
- lsls r2, r4, 16
- asrs r2, 16
- movs r3, 0x4
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080784C0 @ =0x0000271a
- bl GetSpriteTileStartByTag
- lsls r0, 16
- ldr r1, _080784C4 @ =0xffff0000
- cmp r0, r1
- bne _08078484
- ldr r1, _080784C8 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_08078484:
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _080784C8 @ =gSprites
- adds r0, r1
- ldr r1, _080784CC @ =gUnknown_83BF554
- bl SetSubspriteTables
- ldr r1, _080784D0 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x26]
- ldr r1, _080784D4 @ =sub_80784D8
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080784AC: .4byte gUnknown_2037F1B
-_080784B0: .4byte 0xffe00000
-_080784B4: .4byte 0xffdc0000
-_080784B8: .4byte 0xfffa0000
-_080784BC: .4byte gUnknown_83BF55C
-_080784C0: .4byte 0x0000271a
-_080784C4: .4byte 0xffff0000
-_080784C8: .4byte gSprites
-_080784CC: .4byte gUnknown_83BF554
-_080784D0: .4byte gTasks
-_080784D4: .4byte sub_80784D8
- thumb_func_end sub_80783FC
-
- thumb_func_start sub_80784D8
-sub_80784D8: @ 80784D8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08078504 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- adds r2, r0, 0
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _0807850C
- ldr r0, _08078508 @ =sub_8078528
- str r0, [r1]
- movs r0, 0
- strh r0, [r1, 0xA]
- b _08078522
- .align 2, 0
-_08078504: .4byte gTasks
-_08078508: .4byte sub_8078528
-_0807850C:
- lsls r0, r2, 24
- lsrs r0, 24
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
-_08078522:
- pop {r0}
- bx r0
- thumb_func_end sub_80784D8
-
- thumb_func_start sub_8078528
-sub_8078528: @ 8078528
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080785C0 @ =0x0000271a
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080785C4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0xA]
- adds r1, r0, 0x1
- strh r1, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- ble _080785B8
- ldrh r0, [r5, 0xC]
- adds r0, 0x1
- movs r6, 0
- strh r0, [r5, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080785B8
- ldr r3, _080785C8 @ =gPlttBufferFaded
- lsls r2, 4
- mov r12, r2
- ldr r1, _080785CC @ =0x0000010d
- add r1, r12
- lsls r1, 1
- adds r1, r3
- ldrh r4, [r1]
- movs r2, 0x87
- lsls r2, 1
- add r2, r12
- lsls r2, 1
- adds r2, r3
- ldrh r0, [r2]
- strh r0, [r1]
- ldr r0, _080785D0 @ =0x0000010f
- add r0, r12
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- strh r1, [r2]
- strh r4, [r0]
- strh r6, [r5, 0xC]
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- strh r0, [r5, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080785B8
- strh r6, [r5, 0xE]
- strh r6, [r5, 0xA]
- ldrh r0, [r5, 0x10]
- adds r0, 0x1
- strh r0, [r5, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080785B8
- movs r0, 0x9
- strh r0, [r5, 0xA]
- ldr r0, _080785D4 @ =sub_80785D8
- str r0, [r5]
-_080785B8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080785C0: .4byte 0x0000271a
-_080785C4: .4byte gTasks
-_080785C8: .4byte gPlttBufferFaded
-_080785CC: .4byte 0x0000010d
-_080785D0: .4byte 0x0000010f
-_080785D4: .4byte sub_80785D8
- thumb_func_end sub_8078528
-
- thumb_func_start sub_80785D8
-sub_80785D8: @ 80785D8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08078608 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r2
- ldrh r0, [r2, 0xA]
- subs r0, 0x1
- adds r3, r0, 0
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _08078610
- ldr r0, _0807860C @ =sub_807862C
- str r0, [r2]
- movs r0, 0
- strh r0, [r2, 0xA]
- b _08078626
- .align 2, 0
-_08078608: .4byte gTasks
-_0807860C: .4byte sub_807862C
-_08078610:
- lsls r0, r3, 24
- lsrs r0, 24
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
-_08078626:
- pop {r0}
- bx r0
- thumb_func_end sub_80785D8
-
- thumb_func_start sub_807862C
-sub_807862C: @ 807862C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r1, _0807866C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x25
- bne _08078674
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _08078670 @ =gSprites
- adds r4, r0
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- b _0807868E
- .align 2, 0
-_0807866C: .4byte gTasks
-_08078670: .4byte gSprites
-_08078674:
- cmp r0, 0x27
- bne _0807868E
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_0807868E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_807862C
-
- thumb_func_start sub_8078694
-sub_8078694: @ 8078694
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r3, 0
- ldr r0, _080786B8 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrh r0, [r0]
- subs r0, 0xF
- cmp r0, 0x2B
- bls _080786AC
- b _08078830
-_080786AC:
- lsls r0, 2
- ldr r1, _080786BC @ =_080786C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080786B8: .4byte gUnknown_2024018
-_080786BC: .4byte _080786C0
- .align 2, 0
-_080786C0:
- .4byte _08078770
- .4byte _08078776
- .4byte _0807877C
- .4byte _08078782
- .4byte _08078788
- .4byte _0807878E
- .4byte _08078794
- .4byte _0807879A
- .4byte _080787A0
- .4byte _080787A6
- .4byte _080787AC
- .4byte _080787B2
- .4byte _080787B8
- .4byte _080787BE
- .4byte _08078830
- .4byte _08078830
- .4byte _08078830
- .4byte _08078830
- .4byte _08078830
- .4byte _08078830
- .4byte _08078830
- .4byte _08078830
- .4byte _08078830
- .4byte _08078830
- .4byte _080787C4
- .4byte _080787C8
- .4byte _080787CC
- .4byte _080787D0
- .4byte _080787D4
- .4byte _080787D8
- .4byte _080787DC
- .4byte _080787E0
- .4byte _080787E8
- .4byte _080787F0
- .4byte _080787F8
- .4byte _08078800
- .4byte _08078808
- .4byte _08078810
- .4byte _08078830
- .4byte _08078830
- .4byte _08078818
- .4byte _0807881C
- .4byte _08078820
- .4byte _08078828
-_08078770:
- movs r5, 0
- movs r2, 0
- b _08078838
-_08078776:
- movs r5, 0
- movs r2, 0x1
- b _08078838
-_0807877C:
- movs r5, 0
- movs r2, 0x3
- b _08078838
-_08078782:
- movs r5, 0
- movs r2, 0x5
- b _08078838
-_08078788:
- movs r5, 0
- movs r2, 0x6
- b _08078838
-_0807878E:
- movs r5, 0
- movs r2, 0x2
- b _08078838
-_08078794:
- movs r5, 0
- movs r2, 0x4
- b _08078838
-_0807879A:
- movs r5, 0x1
- movs r2, 0
- b _08078838
-_080787A0:
- movs r5, 0x1
- movs r2, 0x1
- b _08078838
-_080787A6:
- movs r5, 0x1
- movs r2, 0x3
- b _08078838
-_080787AC:
- movs r5, 0x1
- movs r2, 0x5
- b _08078838
-_080787B2:
- movs r5, 0x1
- movs r2, 0x6
- b _08078838
-_080787B8:
- movs r5, 0x1
- movs r2, 0x2
- b _08078838
-_080787BE:
- movs r5, 0x1
- movs r2, 0x4
- b _08078838
-_080787C4:
- movs r5, 0
- b _080787E2
-_080787C8:
- movs r5, 0
- b _080787EA
-_080787CC:
- movs r5, 0
- b _080787F2
-_080787D0:
- movs r5, 0
- b _080787FA
-_080787D4:
- movs r5, 0
- b _08078802
-_080787D8:
- movs r5, 0
- b _0807880A
-_080787DC:
- movs r5, 0
- b _08078812
-_080787E0:
- movs r5, 0x1
-_080787E2:
- movs r2, 0
- movs r3, 0x1
- b _08078838
-_080787E8:
- movs r5, 0x1
-_080787EA:
- movs r2, 0x1
- movs r3, 0x1
- b _08078838
-_080787F0:
- movs r5, 0x1
-_080787F2:
- movs r2, 0x3
- movs r3, 0x1
- b _08078838
-_080787F8:
- movs r5, 0x1
-_080787FA:
- movs r2, 0x5
- movs r3, 0x1
- b _08078838
-_08078800:
- movs r5, 0x1
-_08078802:
- movs r2, 0x6
- movs r3, 0x1
- b _08078838
-_08078808:
- movs r5, 0x1
-_0807880A:
- movs r2, 0x2
- movs r3, 0x1
- b _08078838
-_08078810:
- movs r5, 0x1
-_08078812:
- movs r2, 0x4
- movs r3, 0x1
- b _08078838
-_08078818:
- movs r5, 0
- b _08078822
-_0807881C:
- movs r5, 0
- b _0807882A
-_08078820:
- movs r5, 0x1
-_08078822:
- movs r2, 0xFF
- movs r3, 0
- b _08078838
-_08078828:
- movs r5, 0x1
-_0807882A:
- movs r2, 0xFF
- movs r3, 0x1
- b _08078838
-_08078830:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _0807885A
-_08078838:
- ldr r0, _08078860 @ =gUnknown_2037F02
- movs r1, 0
- strh r5, [r0]
- strh r2, [r0, 0x2]
- strh r1, [r0, 0x4]
- strh r1, [r0, 0x6]
- strh r3, [r0, 0x8]
- ldr r1, _08078864 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08078868 @ =sub_80BB088
- str r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
-_0807885A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08078860: .4byte gUnknown_2037F02
-_08078864: .4byte gTasks
-_08078868: .4byte sub_80BB088
- thumb_func_end sub_8078694
-
- thumb_func_start LaunchStatusAnimation
-LaunchStatusAnimation: @ 807886C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _080788A8 @ =gUnknown_2037F1A
- strb r4, [r0]
- ldr r0, _080788AC @ =gUnknown_2037F1B
- strb r4, [r0]
- ldr r0, _080788B0 @ =gUnknown_81C6E84
- movs r2, 0
- bl sub_80725D4
- ldr r0, _080788B4 @ =task0A_80788BC
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080788B8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080788A8: .4byte gUnknown_2037F1A
-_080788AC: .4byte gUnknown_2037F1B
-_080788B0: .4byte gUnknown_81C6E84
-_080788B4: .4byte task0A_80788BC
-_080788B8: .4byte gTasks
- thumb_func_end LaunchStatusAnimation
-
- thumb_func_start task0A_80788BC
-task0A_80788BC: @ 80788BC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08078904 @ =gUnknown_2037EDC
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, _08078908 @ =gUnknown_2037EE1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080788FE
- ldr r0, _0807890C @ =gUnknown_2024018
- ldr r2, [r0]
- ldr r1, _08078910 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- ldr r2, [r2, 0x4]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
-_080788FE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08078904: .4byte gUnknown_2037EDC
-_08078908: .4byte gUnknown_2037EE1
-_0807890C: .4byte gUnknown_2024018
-_08078910: .4byte gTasks
- thumb_func_end task0A_80788BC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_80989F8.s b/asm/battle_anim_80989F8.s
deleted file mode 100644
index 41dc60f9f..000000000
--- a/asm/battle_anim_80989F8.s
+++ /dev/null
@@ -1,2588 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80989F8
-sub_80989F8: @ 80989F8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _08098A18 @ =gUnknown_2037F02
- ldrb r0, [r4]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _08098A1C
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _08098A58
- .align 2, 0
-_08098A18: .4byte gUnknown_2037F02
-_08098A1C:
- ldr r1, _08098A60 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r4, 0x2]
- strh r1, [r0, 0x24]
- ldrh r1, [r4, 0x4]
- strh r1, [r0, 0x26]
- ldr r1, _08098A64 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r2, [r0, 0x8]
- ldrh r1, [r4, 0x6]
- strh r1, [r0, 0xA]
- ldrh r1, [r4, 0x8]
- strh r1, [r0, 0xC]
- ldrh r1, [r4, 0x8]
- strh r1, [r0, 0xE]
- ldrh r1, [r4, 0x2]
- strh r1, [r0, 0x10]
- ldrh r1, [r4, 0x4]
- strh r1, [r0, 0x12]
- ldr r1, _08098A68 @ =sub_8098A6C
- str r1, [r0]
- adds r0, r5, 0
- bl _call_via_r1
-_08098A58:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08098A60: .4byte gSprites
-_08098A64: .4byte gTasks
-_08098A68: .4byte sub_8098A6C
- thumb_func_end sub_80989F8
-
- thumb_func_start sub_8098A6C
-sub_8098A6C: @ 8098A6C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08098AA8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r3, r0, r1
- ldrh r0, [r3, 0xE]
- movs r2, 0xE
- ldrsh r5, [r3, r2]
- adds r7, r1, 0
- cmp r5, 0
- bne _08098B12
- ldr r2, _08098AAC @ =gSprites
- movs r6, 0x8
- ldrsh r1, [r3, r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- movs r6, 0x24
- ldrsh r0, [r1, r6]
- adds r6, r2, 0
- cmp r0, 0
- bne _08098AB0
- ldrh r0, [r3, 0x10]
- strh r0, [r1, 0x24]
- b _08098AB2
- .align 2, 0
-_08098AA8: .4byte gTasks
-_08098AAC: .4byte gSprites
-_08098AB0:
- strh r5, [r1, 0x24]
-_08098AB2:
- lsls r2, r4, 2
- adds r0, r2, r4
- lsls r0, 3
- adds r3, r0, r7
- movs r0, 0x8
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r6
- movs r5, 0x26
- ldrsh r0, [r1, r5]
- cmp r0, 0
- bne _08098AD2
- ldrh r0, [r3, 0x12]
- b _08098AD4
-_08098AD2:
- movs r0, 0
-_08098AD4:
- strh r0, [r1, 0x26]
- adds r0, r2, r4
- lsls r0, 3
- adds r2, r0, r7
- ldrh r0, [r2, 0xC]
- strh r0, [r2, 0xE]
- ldrh r0, [r2, 0xA]
- subs r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r3, r0, 16
- cmp r3, 0
- bne _08098B16
- movs r0, 0x8
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r3, [r0, 0x24]
- movs r5, 0x8
- ldrsh r1, [r2, r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r3, [r0, 0x26]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _08098B16
-_08098B12:
- subs r0, 0x1
- strh r0, [r3, 0xE]
-_08098B16:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8098A6C
-
- thumb_func_start sub_8098B1C
-sub_8098B1C: @ 8098B1C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0
- ldr r2, _08098B44 @ =gUnknown_2037F02
- ldrh r0, [r2]
- movs r3, 0
- ldrsh r1, [r2, r3]
- cmp r1, 0x3
- bgt _08098B48
- lsls r0, 24
- lsrs r0, 24
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xFF
- bne _08098B9E
- b _08098BA2
- .align 2, 0
-_08098B44: .4byte gUnknown_2037F02
-_08098B48:
- cmp r1, 0x8
- beq _08098B94
- movs r1, 0
- ldrsh r0, [r2, r1]
- cmp r0, 0x5
- beq _08098B68
- cmp r0, 0x5
- bgt _08098B5E
- cmp r0, 0x4
- beq _08098B64
- b _08098B70
-_08098B5E:
- cmp r0, 0x6
- beq _08098B6C
- b _08098B70
-_08098B64:
- movs r0, 0
- b _08098B72
-_08098B68:
- movs r0, 0x2
- b _08098B72
-_08098B6C:
- movs r0, 0x1
- b _08098B72
-_08098B70:
- movs r0, 0x3
-_08098B72:
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- bne _08098B88
- movs r6, 0x1
-_08098B88:
- ldr r0, _08098B90 @ =gUnknown_2023D44
- adds r0, r4, r0
- b _08098B9C
- .align 2, 0
-_08098B90: .4byte gUnknown_2023D44
-_08098B94:
- ldr r1, _08098BAC @ =gUnknown_2023D44
- ldr r0, _08098BB0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r0, r1
-_08098B9C:
- ldrb r3, [r0]
-_08098B9E:
- cmp r6, 0
- beq _08098BB4
-_08098BA2:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _08098BF2
- .align 2, 0
-_08098BAC: .4byte gUnknown_2023D44
-_08098BB0: .4byte gUnknown_2037F1A
-_08098BB4:
- ldr r1, _08098BF8 @ =gSprites
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldr r2, _08098BFC @ =gUnknown_2037F02
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0x24]
- ldrh r1, [r2, 0x4]
- strh r1, [r0, 0x26]
- ldr r1, _08098C00 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r3, [r0, 0x8]
- ldrh r1, [r2, 0x6]
- strh r1, [r0, 0xA]
- ldrh r1, [r2, 0x8]
- strh r1, [r0, 0xC]
- ldrh r1, [r2, 0x8]
- strh r1, [r0, 0xE]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0x10]
- ldrh r1, [r2, 0x4]
- strh r1, [r0, 0x12]
- ldr r1, _08098C04 @ =sub_8098C08
- str r1, [r0]
- adds r0, r5, 0
- bl _call_via_r1
-_08098BF2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08098BF8: .4byte gSprites
-_08098BFC: .4byte gUnknown_2037F02
-_08098C00: .4byte gTasks
-_08098C04: .4byte sub_8098C08
- thumb_func_end sub_8098B1C
-
- thumb_func_start sub_8098C08
-sub_8098C08: @ 8098C08
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _08098C4C @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r3, r0, r1
- ldrh r2, [r3, 0xE]
- movs r4, 0xE
- ldrsh r0, [r3, r4]
- mov r12, r1
- cmp r0, 0
- bne _08098CC0
- ldr r2, _08098C50 @ =gSprites
- movs r7, 0x8
- ldrsh r1, [r3, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r2
- movs r0, 0x24
- ldrsh r1, [r4, r0]
- ldrh r5, [r3, 0x10]
- movs r7, 0x10
- ldrsh r0, [r3, r7]
- adds r7, r2, 0
- cmp r1, r0
- bne _08098C54
- negs r0, r5
- strh r0, [r4, 0x24]
- b _08098C56
- .align 2, 0
-_08098C4C: .4byte gTasks
-_08098C50: .4byte gSprites
-_08098C54:
- strh r5, [r4, 0x24]
-_08098C56:
- lsls r3, r6, 2
- adds r1, r3, r6
- lsls r1, 3
- add r1, r12
- movs r0, 0x8
- ldrsh r2, [r1, r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r4, r0, r7
- movs r0, 0x26
- ldrsh r2, [r4, r0]
- mov r8, r2
- ldrh r5, [r1, 0x12]
- movs r2, 0x12
- ldrsh r0, [r1, r2]
- cmp r8, r0
- bne _08098C80
- negs r0, r5
- strh r0, [r4, 0x26]
- b _08098C82
-_08098C80:
- strh r5, [r4, 0x26]
-_08098C82:
- adds r0, r3, r6
- lsls r0, 3
- mov r4, r12
- adds r3, r0, r4
- ldrh r0, [r3, 0xC]
- strh r0, [r3, 0xE]
- ldrh r0, [r3, 0xA]
- subs r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- bne _08098CC4
- movs r0, 0x8
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x24]
- movs r4, 0x8
- ldrsh r1, [r3, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- b _08098CC4
-_08098CC0:
- subs r0, r2, 0x1
- strh r0, [r3, 0xE]
-_08098CC4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8098C08
-
- thumb_func_start sub_8098CD0
-sub_8098CD0: @ 8098CD0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _08098CF0 @ =gUnknown_2037F02
- ldrb r0, [r4]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xFF
- bne _08098CF4
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _08098D42
- .align 2, 0
-_08098CF0: .4byte gUnknown_2037F02
-_08098CF4:
- ldr r0, _08098D48 @ =gSprites
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r4, 0x2]
- ldrh r2, [r1, 0x24]
- adds r0, r2
- movs r2, 0
- strh r0, [r1, 0x24]
- ldrh r0, [r4, 0x4]
- ldrh r6, [r1, 0x26]
- adds r0, r6
- strh r0, [r1, 0x26]
- ldr r0, _08098D4C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- strh r3, [r1, 0x8]
- strh r2, [r1, 0xA]
- ldrh r0, [r4, 0x6]
- strh r0, [r1, 0xC]
- strh r2, [r1, 0xE]
- ldrh r0, [r4, 0x8]
- strh r0, [r1, 0x10]
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- lsls r0, 1
- strh r0, [r1, 0x12]
- movs r6, 0x4
- ldrsh r0, [r4, r6]
- lsls r0, 1
- strh r0, [r1, 0x14]
- ldr r2, _08098D50 @ =sub_8098D54
- str r2, [r1]
- adds r0, r5, 0
- bl _call_via_r2
-_08098D42:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08098D48: .4byte gSprites
-_08098D4C: .4byte gTasks
-_08098D50: .4byte sub_8098D54
- thumb_func_end sub_8098CD0
-
- thumb_func_start sub_8098D54
-sub_8098D54: @ 8098D54
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08098DAC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r2, [r4, 0xE]
- movs r3, 0xE
- ldrsh r0, [r4, r3]
- adds r6, r1, 0
- cmp r0, 0
- beq _08098D72
- b _08098E84
-_08098D72:
- ldrh r1, [r4, 0xA]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08098DB4
- ldr r2, _08098DB0 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x12]
- ldrh r3, [r0, 0x24]
- adds r1, r3
- strh r1, [r0, 0x24]
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x14]
- ldrh r3, [r0, 0x26]
- adds r1, r3
- strh r1, [r0, 0x26]
- adds r3, r2, 0
- b _08098DDE
- .align 2, 0
-_08098DAC: .4byte gTasks
-_08098DB0: .4byte gSprites
-_08098DB4:
- ldr r3, _08098E40 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x24]
- ldrh r2, [r4, 0x12]
- subs r1, r2
- strh r1, [r0, 0x24]
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x26]
- ldrh r2, [r4, 0x14]
- subs r1, r2
- strh r1, [r0, 0x26]
-_08098DDE:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r6
- ldrh r0, [r4, 0x10]
- strh r0, [r4, 0xE]
- ldrh r0, [r4, 0xA]
- adds r2, r0, 0x1
- strh r2, [r4, 0xA]
- lsls r0, r2, 16
- asrs r0, 16
- movs r6, 0xC
- ldrsh r1, [r4, r6]
- cmp r0, r1
- blt _08098E88
- movs r0, 0x1
- ands r2, r0
- cmp r2, 0
- beq _08098E44
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- lsrs r2, r0, 31
- adds r0, r2
- asrs r0, 1
- ldrh r6, [r1, 0x24]
- adds r0, r6
- strh r0, [r1, 0x24]
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- lsrs r2, r0, 31
- adds r0, r2
- asrs r0, 1
- ldrh r3, [r1, 0x26]
- adds r0, r3
- strh r0, [r1, 0x26]
- b _08098E7C
- .align 2, 0
-_08098E40: .4byte gSprites
-_08098E44:
- movs r6, 0x8
- ldrsh r0, [r4, r6]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- movs r3, 0x14
- ldrsh r1, [r4, r3]
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- ldrh r0, [r2, 0x26]
- subs r0, r1
- strh r0, [r2, 0x26]
-_08098E7C:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _08098E88
-_08098E84:
- subs r0, r2, 0x1
- strh r0, [r4, 0xE]
-_08098E88:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8098D54
-
- thumb_func_start sub_8098E90
-sub_8098E90: @ 8098E90
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _08098EE0 @ =gUnknown_2037F02
- ldrb r0, [r5]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08098EE4 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r2, [r5, 0x2]
- strh r2, [r1, 0x24]
- ldr r2, _08098EE8 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r2
- strh r0, [r1, 0x8]
- ldrh r0, [r5, 0x2]
- strh r0, [r1, 0xA]
- ldrh r0, [r5, 0x4]
- strh r0, [r1, 0xC]
- ldrh r0, [r5, 0x6]
- strh r0, [r1, 0xE]
- ldrh r0, [r5, 0x8]
- strh r0, [r1, 0x10]
- ldr r2, _08098EEC @ =sub_8098EF0
- str r2, [r1]
- adds r0, r4, 0
- bl _call_via_r2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08098EE0: .4byte gUnknown_2037F02
-_08098EE4: .4byte gSprites
-_08098EE8: .4byte gTasks
-_08098EEC: .4byte sub_8098EF0
- thumb_func_end sub_8098E90
-
- thumb_func_start sub_8098EF0
-sub_8098EF0: @ 8098EF0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r2, _08098F7C @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r3, r0, r2
- ldrb r5, [r3, 0x8]
- ldrh r4, [r3, 0xA]
- ldrh r1, [r3, 0x18]
- adds r0, r1, 0x1
- strh r0, [r3, 0x18]
- movs r7, 0xC
- ldrsh r0, [r3, r7]
- lsls r1, 16
- asrs r1, 16
- mov r12, r2
- ldr r7, _08098F80 @ =gSprites
- cmp r0, r1
- bne _08098F42
- movs r0, 0
- strh r0, [r3, 0x18]
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r1, r0, r7
- ldrh r3, [r1, 0x24]
- movs r0, 0x24
- ldrsh r2, [r1, r0]
- lsls r0, r4, 16
- asrs r0, 16
- cmp r2, r0
- bne _08098F3A
- negs r0, r2
- lsls r0, 16
- lsrs r4, r0, 16
-_08098F3A:
- lsls r0, r4, 16
- asrs r0, 16
- adds r0, r3
- strh r0, [r1, 0x24]
-_08098F42:
- lsls r2, r6, 2
- adds r2, r6
- lsls r2, 3
- add r2, r12
- strh r4, [r2, 0xA]
- ldrh r1, [r2, 0xE]
- ldrh r0, [r2, 0x1A]
- adds r1, r0
- strh r1, [r2, 0x1A]
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r7
- lsls r1, 16
- asrs r1, 24
- strh r1, [r0, 0x26]
- ldrh r0, [r2, 0x10]
- subs r0, 0x1
- strh r0, [r2, 0x10]
- lsls r0, 16
- cmp r0, 0
- bne _08098F74
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_08098F74:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08098F7C: .4byte gTasks
-_08098F80: .4byte gSprites
- thumb_func_end sub_8098EF0
-
- thumb_func_start sub_8098F84
-sub_8098F84: @ 8098F84
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0x1
- ldr r4, _08098FF8 @ =gUnknown_2037F02
- ldrb r0, [r4]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r7, r0, 24
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- ble _08098FA8
- movs r0, 0x5
- strh r0, [r4, 0x8]
-_08098FA8:
- movs r1, 0
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- adds r3, r4, 0
- ldr r2, _08098FFC @ =gTasks
- mov r12, r2
- lsls r4, r5, 2
- ldr r2, _08099000 @ =sub_8099004
- mov r8, r2
- cmp r1, r0
- bge _08098FCE
- adds r2, r0, 0
-_08098FC0:
- lsls r0, r6, 25
- lsrs r6, r0, 24
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r2
- blt _08098FC0
-_08098FCE:
- adds r0, r4, r5
- lsls r0, 3
- add r0, r12
- strh r7, [r0, 0x8]
- ldrh r1, [r3, 0x2]
- strh r1, [r0, 0xA]
- ldrh r1, [r3, 0x4]
- strh r1, [r0, 0xC]
- ldrh r1, [r3, 0x6]
- strh r1, [r0, 0xE]
- strh r6, [r0, 0x10]
- mov r1, r8
- str r1, [r0]
- adds r0, r5, 0
- bl _call_via_r8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08098FF8: .4byte gUnknown_2037F02
-_08098FFC: .4byte gTasks
-_08099000: .4byte sub_8099004
- thumb_func_end sub_8098F84
-
- thumb_func_start sub_8099004
-sub_8099004: @ 8099004
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, _08099074 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrb r4, [r5, 0x8]
- movs r1, 0x12
- ldrsh r0, [r5, r1]
- movs r2, 0xA
- ldrsh r1, [r5, r2]
- bl Sin
- ldr r2, _08099078 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r4, r1, r2
- strh r0, [r4, 0x24]
- movs r1, 0x12
- ldrsh r0, [r5, r1]
- movs r2, 0xC
- ldrsh r1, [r5, r2]
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r1, [r5, 0xC]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r5, 0x10]
- ldrh r1, [r5, 0x12]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x12]
- cmp r0, 0
- bne _0809905C
- ldrh r0, [r5, 0xE]
- subs r0, 0x1
- strh r0, [r5, 0xE]
-_0809905C:
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bne _0809906E
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_0809906E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08099074: .4byte gTasks
-_08099078: .4byte gSprites
- thumb_func_end sub_8099004
-
- thumb_func_start sub_809907C
-sub_809907C: @ 809907C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080990A4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08099098
- ldr r1, _080990A8 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_08099098:
- adds r0, r4, 0
- bl sub_8098F84
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080990A4: .4byte gUnknown_2037F1A
-_080990A8: .4byte gUnknown_2037F02
- thumb_func_end sub_809907C
-
- thumb_func_start sub_80990AC
-sub_80990AC: @ 80990AC
- push {r4,lr}
- adds r4, r0, 0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080990D4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080990DC
- ldr r1, _080990D8 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- negs r0, r0
- b _080990E0
- .align 2, 0
-_080990D4: .4byte gUnknown_2037F1A
-_080990D8: .4byte gUnknown_2037F02
-_080990DC:
- ldr r1, _0809910C @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
-_080990E0:
- strh r0, [r4, 0x30]
- ldrh r2, [r1]
- movs r0, 0
- strh r2, [r4, 0x2E]
- strh r0, [r4, 0x32]
- ldr r1, _08099110 @ =gUnknown_2023D44
- ldr r0, _08099114 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r4, 0x34]
- strh r2, [r4, 0x36]
- ldr r1, _08099118 @ =sub_8099120
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _0809911C @ =sub_8074DC4
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809910C: .4byte gUnknown_2037F02
-_08099110: .4byte gUnknown_2023D44
-_08099114: .4byte gUnknown_2037F1A
-_08099118: .4byte sub_8099120
-_0809911C: .4byte sub_8074DC4
- thumb_func_end sub_80990AC
-
- thumb_func_start sub_8099120
-sub_8099120: @ 8099120
- push {lr}
- ldrh r1, [r0, 0x36]
- strh r1, [r0, 0x2E]
- ldrh r1, [r0, 0x30]
- negs r1, r1
- strh r1, [r0, 0x30]
- ldr r1, _0809913C @ =sub_8074DC4
- str r1, [r0, 0x1C]
- ldr r1, _08099140 @ =DestroyAnimSprite
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .align 2, 0
-_0809913C: .4byte sub_8074DC4
-_08099140: .4byte DestroyAnimSprite
- thumb_func_end sub_8099120
-
- thumb_func_start sub_8099144
-sub_8099144: @ 8099144
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r5, _08099184 @ =gUnknown_2037F02
- ldrb r0, [r5, 0x4]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r5]
- movs r1, 0
- strh r2, [r4, 0x2E]
- strh r1, [r4, 0x30]
- ldrh r1, [r5, 0x2]
- strh r1, [r4, 0x32]
- strh r0, [r4, 0x34]
- strh r2, [r4, 0x36]
- ldr r1, _08099188 @ =sub_8099190
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _0809918C @ =sub_8074DC4
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08099184: .4byte gUnknown_2037F02
-_08099188: .4byte sub_8099190
-_0809918C: .4byte sub_8074DC4
- thumb_func_end sub_8099144
-
- thumb_func_start sub_8099190
-sub_8099190: @ 8099190
- push {lr}
- ldrh r1, [r0, 0x36]
- strh r1, [r0, 0x2E]
- ldrh r1, [r0, 0x32]
- negs r1, r1
- strh r1, [r0, 0x32]
- ldr r1, _080991AC @ =sub_8074DC4
- str r1, [r0, 0x1C]
- ldr r1, _080991B0 @ =DestroyAnimSprite
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .align 2, 0
-_080991AC: .4byte sub_8074DC4
-_080991B0: .4byte DestroyAnimSprite
- thumb_func_end sub_8099190
-
- thumb_func_start sub_80991B4
-sub_80991B4: @ 80991B4
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r0, _080991CC @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080991D8
- ldr r1, _080991D0 @ =gUnknown_2023D44
- ldr r0, _080991D4 @ =gUnknown_2037F1A
- b _080991DC
- .align 2, 0
-_080991CC: .4byte gUnknown_2037F02
-_080991D0: .4byte gUnknown_2023D44
-_080991D4: .4byte gUnknown_2037F1A
-_080991D8:
- ldr r1, _0809923C @ =gUnknown_2023D44
- ldr r0, _08099240 @ =gUnknown_2037F1B
-_080991DC:
- ldrb r0, [r0]
- adds r0, r1
- ldrb r7, [r0]
- ldr r5, _08099244 @ =gUnknown_2037F02
- ldrh r0, [r5, 0x4]
- movs r3, 0
- strh r0, [r6, 0x2E]
- ldr r0, _08099248 @ =gSprites
- lsls r4, r7, 4
- adds r4, r7
- lsls r4, 2
- adds r4, r0
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r6, 0x30]
- ldrh r0, [r4, 0x20]
- strh r0, [r6, 0x32]
- ldrh r0, [r4, 0x26]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r6, 0x34]
- ldrh r0, [r4, 0x22]
- strh r0, [r6, 0x36]
- adds r0, r6, 0
- str r3, [sp]
- bl sub_80754B8
- ldr r3, [sp]
- strh r3, [r6, 0x34]
- strh r3, [r6, 0x36]
- ldrh r0, [r4, 0x24]
- strh r0, [r6, 0x38]
- ldrh r0, [r4, 0x26]
- strh r0, [r6, 0x3A]
- adds r2, r6, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _0809924C
- strh r3, [r6, 0x32]
- b _08099252
- .align 2, 0
-_0809923C: .4byte gUnknown_2023D44
-_08099240: .4byte gUnknown_2037F1B
-_08099244: .4byte gUnknown_2037F02
-_08099248: .4byte gSprites
-_0809924C:
- cmp r0, 0x2
- bne _08099252
- strh r3, [r6, 0x30]
-_08099252:
- ldr r0, _08099268 @ =gUnknown_2037F02
- ldrh r1, [r0, 0x2]
- lsls r0, r7, 8
- orrs r0, r1
- strh r0, [r6, 0x3C]
- ldr r0, _0809926C @ =sub_8099270
- str r0, [r6, 0x1C]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08099268: .4byte gUnknown_2037F02
-_0809926C: .4byte sub_8099270
- thumb_func_end sub_80991B4
-
- thumb_func_start sub_8099270
-sub_8099270: @ 8099270
- push {r4-r6,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x3C]
- lsls r1, r0, 24
- lsrs r4, r1, 24
- adds r5, r4, 0
- lsls r0, 16
- asrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _080992AC @ =gSprites
- adds r3, r1, r0
- ldrh r0, [r2, 0x2E]
- movs r6, 0x2E
- ldrsh r1, [r2, r6]
- cmp r1, 0
- bne _080992B0
- cmp r4, 0x1
- bhi _0809929A
- strh r1, [r3, 0x24]
-_0809929A:
- cmp r5, 0x2
- beq _080992A2
- cmp r5, 0
- bne _080992A4
-_080992A2:
- strh r1, [r3, 0x26]
-_080992A4:
- adds r0, r2, 0
- bl DestroyAnimSprite
- b _080992DA
- .align 2, 0
-_080992AC: .4byte gSprites
-_080992B0:
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x30]
- ldrh r0, [r2, 0x34]
- adds r1, r0
- strh r1, [r2, 0x34]
- ldrh r0, [r2, 0x32]
- ldrh r4, [r2, 0x36]
- adds r0, r4
- strh r0, [r2, 0x36]
- lsls r1, 16
- asrs r1, 24
- ldrh r6, [r2, 0x38]
- adds r1, r6
- strh r1, [r3, 0x24]
- ldrh r0, [r2, 0x36]
- lsls r0, 16
- asrs r0, 24
- ldrh r2, [r2, 0x3A]
- adds r0, r2
- strh r0, [r3, 0x26]
-_080992DA:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8099270
-
- thumb_func_start sub_80992E0
-sub_80992E0: @ 80992E0
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, _080992F4 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080992FC
- ldr r0, _080992F8 @ =gUnknown_2037F1A
- b _080992FE
- .align 2, 0
-_080992F4: .4byte gUnknown_2037F02
-_080992F8: .4byte gUnknown_2037F1A
-_080992FC:
- ldr r0, _0809937C @ =gUnknown_2037F1B
-_080992FE:
- ldrb r2, [r0]
- ldr r0, _08099380 @ =gUnknown_2023D44
- adds r0, r2, r0
- ldrb r6, [r0]
- adds r0, r2, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08099328
- ldr r1, _08099384 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- movs r2, 0x6
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- bne _08099328
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_08099328:
- ldr r2, _08099384 @ =gUnknown_2037F02
- ldrh r0, [r2, 0x8]
- movs r4, 0
- strh r0, [r5, 0x2E]
- ldr r0, _08099388 @ =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x20]
- strh r0, [r5, 0x30]
- ldrh r0, [r2, 0x2]
- ldrh r3, [r1, 0x20]
- adds r0, r3
- strh r0, [r5, 0x32]
- ldrh r0, [r1, 0x22]
- strh r0, [r5, 0x34]
- ldrh r0, [r2, 0x4]
- ldrh r1, [r1, 0x22]
- adds r0, r1
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl sub_80754B8
- strh r4, [r5, 0x34]
- strh r4, [r5, 0x36]
- strh r6, [r5, 0x38]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0809938C @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _08099390 @ =sub_8074E14
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809937C: .4byte gUnknown_2037F1B
-_08099380: .4byte gUnknown_2023D44
-_08099384: .4byte gUnknown_2037F02
-_08099388: .4byte gSprites
-_0809938C: .4byte DestroyAnimSprite
-_08099390: .4byte sub_8074E14
- thumb_func_end sub_80992E0
-
- thumb_func_start sub_8099394
-sub_8099394: @ 8099394
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r2, r6, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080993B4 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080993BC
- ldr r0, _080993B8 @ =gUnknown_2037F1A
- b _080993BE
- .align 2, 0
-_080993B4: .4byte gUnknown_2037F02
-_080993B8: .4byte gUnknown_2037F1A
-_080993BC:
- ldr r0, _0809943C @ =gUnknown_2037F1B
-_080993BE:
- ldrb r1, [r0]
- ldr r0, _08099440 @ =gUnknown_2023D44
- adds r0, r1, r0
- ldrb r7, [r0]
- adds r0, r1, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080993E8
- ldr r1, _08099444 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- movs r2, 0x6
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- bne _080993E8
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080993E8:
- ldr r5, _08099444 @ =gUnknown_2037F02
- ldrh r0, [r5, 0x8]
- strh r0, [r6, 0x2E]
- ldr r0, _08099448 @ =gSprites
- lsls r4, r7, 4
- adds r4, r7
- lsls r4, 2
- adds r4, r0
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r6, 0x30]
- ldrh r1, [r5, 0x2]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r6, 0x34]
- ldrh r1, [r5, 0x4]
- adds r0, r1
- strh r0, [r6, 0x36]
- adds r0, r6, 0
- bl sub_80754B8
- ldrh r0, [r4, 0x24]
- lsls r0, 8
- strh r0, [r6, 0x34]
- ldrh r0, [r4, 0x26]
- lsls r0, 8
- strh r0, [r6, 0x36]
- strh r7, [r6, 0x38]
- ldrh r0, [r5, 0xA]
- strh r0, [r6, 0x3A]
- lsls r0, 16
- cmp r0, 0
- bne _08099450
- ldr r1, _0809944C @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- b _08099458
- .align 2, 0
-_0809943C: .4byte gUnknown_2037F1B
-_08099440: .4byte gUnknown_2023D44
-_08099444: .4byte gUnknown_2037F02
-_08099448: .4byte gSprites
-_0809944C: .4byte DestroyAnimSprite
-_08099450:
- ldr r1, _08099464 @ =sub_809946C
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
-_08099458:
- ldr r0, _08099468 @ =sub_8074E14
- str r0, [r6, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08099464: .4byte sub_809946C
-_08099468: .4byte sub_8074E14
- thumb_func_end sub_8099394
-
- thumb_func_start sub_809946C
-sub_809946C: @ 809946C
- push {r4,lr}
- ldr r4, _08099498 @ =gSprites
- movs r1, 0x38
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- movs r3, 0
- strh r3, [r1, 0x24]
- movs r1, 0x38
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r3, [r1, 0x26]
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08099498: .4byte gSprites
- thumb_func_end sub_809946C
-
- thumb_func_start sub_809949C
-sub_809949C: @ 809949C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, _08099520 @ =gUnknown_2037F02
- movs r0, 0x6
- ldrsh r1, [r5, r0]
- movs r0, 0x80
- lsls r0, 8
- bl __divsi3
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r0, _08099524 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080994CE
- ldrh r0, [r5, 0x2]
- negs r0, r0
- strh r0, [r5, 0x2]
- ldrh r0, [r5, 0xA]
- negs r0, r0
- strh r0, [r5, 0xA]
-_080994CE:
- ldrb r0, [r5]
- bl GetAnimBankSpriteId
- ldr r1, _08099528 @ =gTasks
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- adds r4, r1
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x8]
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- lsls r0, 8
- movs r2, 0x6
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r4, 0xA]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0xC]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0xE]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x10]
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- lsls r0, 8
- movs r2, 0xC
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r4, 0x12]
- ldrh r0, [r5, 0xC]
- strh r0, [r4, 0x14]
- strh r7, [r4, 0x16]
- ldr r0, _0809952C @ =sub_8099530
- str r0, [r4]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08099520: .4byte gUnknown_2037F02
-_08099524: .4byte gUnknown_2037F1A
-_08099528: .4byte gTasks
-_0809952C: .4byte sub_8099530
- thumb_func_end sub_809949C
-
- thumb_func_start sub_8099530
-sub_8099530: @ 8099530
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08099588 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r5, r1, r2
- ldrb r1, [r5, 0x8]
- ldrh r0, [r5, 0xA]
- ldrh r2, [r5, 0x1E]
- adds r0, r2
- strh r0, [r5, 0x1E]
- ldr r2, _0809958C @ =gSprites
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- adds r4, r2
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- ldrh r0, [r5, 0x1C]
- lsrs r0, 8
- movs r2, 0xC
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r5, 0x16]
- ldrh r1, [r5, 0x1C]
- adds r0, r1
- strh r0, [r5, 0x1C]
- ldrh r0, [r5, 0xE]
- subs r0, 0x1
- strh r0, [r5, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _08099580
- ldr r0, _08099590 @ =sub_8099594
- str r0, [r5]
-_08099580:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08099588: .4byte gTasks
-_0809958C: .4byte gSprites
-_08099590: .4byte sub_8099594
- thumb_func_end sub_8099530
-
- thumb_func_start sub_8099594
-sub_8099594: @ 8099594
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080995B8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080995BC
- subs r0, r1, 0x1
- strh r0, [r4, 0x10]
- b _080995F0
- .align 2, 0
-_080995B8: .4byte gTasks
-_080995BC:
- ldrb r0, [r4, 0x8]
- ldrh r2, [r4, 0x12]
- ldrh r1, [r4, 0x20]
- adds r2, r1
- strh r2, [r4, 0x20]
- ldr r3, _080995F8 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- lsls r2, 16
- asrs r2, 24
- ldrh r0, [r4, 0x1E]
- lsls r0, 16
- asrs r0, 24
- adds r2, r0
- strh r2, [r1, 0x24]
- ldrh r0, [r4, 0x14]
- subs r0, 0x1
- strh r0, [r4, 0x14]
- lsls r0, 16
- cmp r0, 0
- bne _080995F0
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080995F0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080995F8: .4byte gSprites
- thumb_func_end sub_8099594
-
- thumb_func_start sub_80995FC
-sub_80995FC: @ 80995FC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _08099620 @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x2
- beq _0809962A
- cmp r0, 0x2
- bgt _08099624
- cmp r0, 0
- blt _0809965C
- ldrb r0, [r1]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r2, r0, 24
- b _08099664
- .align 2, 0
-_08099620: .4byte gUnknown_2037F02
-_08099624:
- cmp r0, 0x3
- beq _08099634
- b _0809965C
-_0809962A:
- ldr r5, _08099630 @ =gUnknown_2037F1A
- b _08099636
- .align 2, 0
-_08099630: .4byte gUnknown_2037F1A
-_08099634:
- ldr r5, _08099654 @ =gUnknown_2037F1B
-_08099636:
- ldrb r0, [r5]
- movs r4, 0x2
- eors r0, r4
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _0809965C
- ldr r1, _08099658 @ =gUnknown_2023D44
- ldrb r0, [r5]
- eors r0, r4
- adds r0, r1
- ldrb r2, [r0]
- b _08099664
- .align 2, 0
-_08099654: .4byte gUnknown_2037F1B
-_08099658: .4byte gUnknown_2023D44
-_0809965C:
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- b _080996A4
-_08099664:
- ldr r1, _08099684 @ =gTasks
- lsls r4, r6, 2
- adds r0, r4, r6
- lsls r0, 3
- adds r5, r0, r1
- strh r2, [r5, 0x8]
- ldr r0, _08099688 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08099690
- ldr r0, _0809968C @ =gUnknown_2037F02
- ldrh r0, [r0, 0x2]
- b _08099696
- .align 2, 0
-_08099684: .4byte gTasks
-_08099688: .4byte gUnknown_2037F1B
-_0809968C: .4byte gUnknown_2037F02
-_08099690:
- ldr r0, _080996AC @ =gUnknown_2037F02
- ldrh r0, [r0, 0x2]
- negs r0, r0
-_08099696:
- strh r0, [r5, 0xA]
- ldr r0, _080996B0 @ =gTasks
- adds r1, r4, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _080996B4 @ =sub_80996B8
- str r0, [r1]
-_080996A4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080996AC: .4byte gUnknown_2037F02
-_080996B0: .4byte gTasks
-_080996B4: .4byte sub_80996B8
- thumb_func_end sub_80995FC
-
- thumb_func_start sub_80996B8
-sub_80996B8: @ 80996B8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080996FC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrb r2, [r1, 0x8]
- ldr r3, _08099700 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r1, 0xA]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- strh r1, [r0, 0x24]
- movs r2, 0x24
- ldrsh r1, [r0, r2]
- movs r2, 0x20
- ldrsh r0, [r0, r2]
- adds r1, r0
- adds r1, 0x20
- movs r0, 0x98
- lsls r0, 1
- cmp r1, r0
- bls _080996F6
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080996F6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080996FC: .4byte gTasks
-_08099700: .4byte gSprites
- thumb_func_end sub_80996B8
-
- thumb_func_start sub_8099704
-sub_8099704: @ 8099704
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, _08099754 @ =gUnknown_2037F1A
- ldrb r0, [r6]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08099720
- ldr r1, _08099758 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_08099720:
- ldr r4, _08099758 @ =gUnknown_2037F02
- ldrb r0, [r4, 0x8]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0809975C @ =gTasks
- lsls r3, r5, 2
- adds r1, r3, r5
- lsls r1, 3
- adds r2, r1, r2
- ldrh r1, [r4]
- strh r1, [r2, 0x8]
- ldrh r1, [r4, 0x2]
- strh r1, [r2, 0xA]
- ldrh r1, [r4, 0x4]
- strh r1, [r2, 0xC]
- ldrh r1, [r4, 0x6]
- strh r1, [r2, 0xE]
- strh r0, [r2, 0x10]
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08099760
- ldrb r0, [r6]
- b _08099764
- .align 2, 0
-_08099754: .4byte gUnknown_2037F1A
-_08099758: .4byte gUnknown_2037F02
-_0809975C: .4byte gTasks
-_08099760:
- ldr r0, _0809977C @ =gUnknown_2037F1B
- ldrb r0, [r0]
-_08099764:
- strh r0, [r2, 0x12]
- ldr r1, _08099780 @ =gTasks
- adds r0, r3, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0, 0x20]
- ldr r1, _08099784 @ =sub_8099788
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809977C: .4byte gUnknown_2037F1B
-_08099780: .4byte gTasks
-_08099784: .4byte sub_8099788
- thumb_func_end sub_8099704
-
- thumb_func_start sub_8099788
-sub_8099788: @ 8099788
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080997D8 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- ldrb r7, [r4, 0x10]
- ldrh r0, [r4, 0xC]
- ldrh r1, [r4, 0x1C]
- adds r0, r1
- lsls r1, r0, 16
- strh r0, [r4, 0x1C]
- lsrs r1, 24
- mov r8, r1
- mov r0, r8
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- bl Sin
- lsls r0, 16
- lsrs r5, r0, 16
- mov r9, r5
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080997E0
- ldr r0, _080997DC @ =gSprites
- lsls r2, r7, 4
- adds r1, r2, r7
- lsls r1, 2
- adds r1, r0
- strh r5, [r1, 0x24]
- mov r9, r0
- adds r4, r2, 0
- b _08099826
- .align 2, 0
-_080997D8: .4byte gTasks
-_080997DC: .4byte gSprites
-_080997E0:
- ldrb r0, [r4, 0x12]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08099808
- ldr r1, _08099804 @ =gSprites
- lsls r2, r7, 4
- adds r0, r2, r7
- lsls r0, 2
- adds r3, r0, r1
- lsls r0, r5, 16
- asrs r0, 16
- mov r9, r1
- adds r4, r2, 0
- cmp r0, 0
- bge _08099824
- b _08099822
- .align 2, 0
-_08099804: .4byte gSprites
-_08099808:
- ldr r1, _080998A8 @ =gSprites
- lsls r2, r7, 4
- adds r0, r2, r7
- lsls r0, 2
- adds r3, r0, r1
- mov r4, r9
- lsls r0, r4, 16
- asrs r0, 16
- mov r9, r1
- adds r4, r2, 0
- cmp r0, 0
- bge _08099822
- negs r0, r0
-_08099822:
- negs r0, r0
-_08099824:
- strh r0, [r3, 0x26]
-_08099826:
- mov r5, r8
- cmp r5, 0x7F
- bls _08099848
- ldr r1, _080998AC @ =gTasks
- lsls r2, r6, 2
- adds r0, r2, r6
- lsls r0, 3
- adds r3, r0, r1
- movs r5, 0x1E
- ldrsh r0, [r3, r5]
- adds r5, r1, 0
- cmp r0, 0
- bne _08099848
- movs r1, 0x20
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- beq _0809986A
-_08099848:
- mov r2, r8
- cmp r2, 0x7E
- bhi _0809989C
- ldr r1, _080998AC @ =gTasks
- lsls r2, r6, 2
- adds r0, r2, r6
- lsls r0, 3
- adds r3, r0, r1
- movs r5, 0x1E
- ldrsh r0, [r3, r5]
- adds r5, r1, 0
- cmp r0, 0x1
- bne _0809989C
- movs r1, 0x20
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _0809989C
-_0809986A:
- adds r1, r2, r6
- lsls r1, 3
- adds r1, r5
- ldrh r0, [r1, 0x1E]
- movs r2, 0x1
- eors r0, r2
- strh r0, [r1, 0x1E]
- ldrh r0, [r1, 0x20]
- eors r0, r2
- strh r0, [r1, 0x20]
- ldrh r0, [r1, 0xE]
- subs r0, 0x1
- strh r0, [r1, 0xE]
- lsls r0, 16
- asrs r3, r0, 16
- cmp r3, 0
- bne _0809989C
- adds r0, r4, r7
- lsls r0, 2
- add r0, r9
- strh r3, [r0, 0x24]
- strh r3, [r0, 0x26]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_0809989C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080998A8: .4byte gSprites
-_080998AC: .4byte gTasks
- thumb_func_end sub_8099788
-
- thumb_func_start sub_80998B0
-sub_80998B0: @ 80998B0
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r6, _080998FC @ =gUnknown_2037F02
- ldrb r0, [r6, 0x6]
- bl GetAnimBankSpriteId
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldrb r1, [r6, 0x8]
- adds r0, r5, 0
- bl sub_80758E0
- ldr r1, _08099900 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r6]
- strh r1, [r0, 0x8]
- ldrh r1, [r6, 0x2]
- strh r1, [r0, 0xA]
- ldrh r1, [r6, 0x4]
- strh r1, [r0, 0xC]
- ldrh r1, [r6, 0x4]
- strh r1, [r0, 0xE]
- strh r5, [r0, 0x10]
- movs r1, 0x80
- lsls r1, 1
- strh r1, [r0, 0x1C]
- strh r1, [r0, 0x1E]
- ldr r1, _08099904 @ =sub_8099908
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080998FC: .4byte gUnknown_2037F02
-_08099900: .4byte gTasks
-_08099904: .4byte sub_8099908
- thumb_func_end sub_80998B0
-
- thumb_func_start sub_8099908
-sub_8099908: @ 8099908
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _08099968 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x8]
- ldrh r1, [r4, 0x1C]
- adds r0, r1
- strh r0, [r4, 0x1C]
- ldrh r0, [r4, 0xA]
- ldrh r3, [r4, 0x1E]
- adds r0, r3
- strh r0, [r4, 0x1E]
- ldrb r0, [r4, 0x10]
- adds r6, r0, 0
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- movs r3, 0x1E
- ldrsh r2, [r4, r3]
- adds r0, r6, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0
- bne _08099978
- ldrh r2, [r4, 0xE]
- movs r3, 0xE
- ldrsh r0, [r4, r3]
- cmp r0, 0
- ble _0809996C
- ldrh r0, [r4, 0x8]
- negs r0, r0
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xA]
- negs r0, r0
- strh r0, [r4, 0xA]
- strh r2, [r4, 0xC]
- strh r1, [r4, 0xE]
- b _08099978
- .align 2, 0
-_08099968: .4byte gTasks
-_0809996C:
- adds r0, r6, 0
- bl sub_8075980
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08099978:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8099908
-
- thumb_func_start sub_8099980
-sub_8099980: @ 8099980
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, _080999BC @ =gUnknown_2037F02
- ldrb r0, [r4, 0x4]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r1, 0
- bl sub_80758E0
- ldr r1, _080999C0 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2, 0xA]
- ldrh r0, [r4]
- strh r0, [r2, 0xC]
- movs r3, 0x6
- ldrsh r0, [r4, r3]
- cmp r0, 0x1
- beq _080999C4
- strh r1, [r2, 0xE]
- b _080999D0
- .align 2, 0
-_080999BC: .4byte gUnknown_2037F02
-_080999C0: .4byte gTasks
-_080999C4:
- ldrh r0, [r4]
- ldrh r1, [r4, 0x2]
- adds r3, r0, 0
- muls r3, r1
- adds r0, r3, 0
- strh r0, [r2, 0xE]
-_080999D0:
- ldr r1, _080999FC @ =gTasks
- lsls r4, r7, 2
- adds r0, r4, r7
- lsls r0, 3
- adds r5, r0, r1
- ldr r6, _08099A00 @ =gUnknown_2037F02
- ldrh r0, [r6, 0x2]
- strh r0, [r5, 0x10]
- mov r0, r8
- strh r0, [r5, 0x12]
- ldrh r0, [r6, 0x6]
- strh r0, [r5, 0x14]
- bl sub_8073788
- lsls r0, 24
- mov r8, r4
- cmp r0, 0
- beq _08099A04
- movs r0, 0x1
- strh r0, [r5, 0x16]
- b _08099A28
- .align 2, 0
-_080999FC: .4byte gTasks
-_08099A00: .4byte gUnknown_2037F02
-_08099A04:
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08099A14
- ldr r0, _08099A10 @ =gUnknown_2037F1A
- b _08099A16
- .align 2, 0
-_08099A10: .4byte gUnknown_2037F1A
-_08099A14:
- ldr r0, _08099A6C @ =gUnknown_2037F1B
-_08099A16:
- ldrb r0, [r0]
- bl GetBattlerSide
- movs r1, 0
- lsls r0, 24
- cmp r0, 0
- bne _08099A26
- movs r1, 0x1
-_08099A26:
- strh r1, [r5, 0x16]
-_08099A28:
- ldr r0, _08099A70 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r4, r1, r0
- movs r3, 0x16
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _08099A54
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _08099A54
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0xE]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- negs r0, r0
- strh r0, [r4, 0x10]
-_08099A54:
- ldr r0, _08099A70 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldr r0, _08099A74 @ =sub_8099B54
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08099A6C: .4byte gUnknown_2037F1B
-_08099A70: .4byte gTasks
-_08099A74: .4byte sub_8099B54
- thumb_func_end sub_8099980
-
- thumb_func_start sub_8099A78
-sub_8099A78: @ 8099A78
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _08099AB4 @ =gUnknown_2037F02
- ldrb r0, [r4, 0x4]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r1, 0
- bl sub_80758E0
- ldr r1, _08099AB8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xA]
- ldrh r1, [r4]
- strh r1, [r0, 0xC]
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08099AC0
- ldr r0, _08099ABC @ =gUnknown_2037F1A
- b _08099AC2
- .align 2, 0
-_08099AB4: .4byte gUnknown_2037F02
-_08099AB8: .4byte gTasks
-_08099ABC: .4byte gUnknown_2037F1A
-_08099AC0:
- ldr r0, _08099AF0 @ =gUnknown_2037F1B
-_08099AC2:
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08099AD4
- ldrh r0, [r4, 0x2]
- negs r0, r0
- strh r0, [r4, 0x2]
-_08099AD4:
- ldr r0, _08099AF4 @ =gUnknown_2037F02
- movs r2, 0x6
- ldrsh r1, [r0, r2]
- adds r6, r0, 0
- cmp r1, 0x1
- beq _08099AFC
- ldr r2, _08099AF8 @ =gTasks
- lsls r3, r5, 2
- adds r0, r3, r5
- lsls r0, 3
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0xE]
- b _08099B16
- .align 2, 0
-_08099AF0: .4byte gUnknown_2037F1B
-_08099AF4: .4byte gUnknown_2037F02
-_08099AF8: .4byte gTasks
-_08099AFC:
- ldr r3, _08099B4C @ =gTasks
- lsls r4, r5, 2
- adds r0, r4, r5
- lsls r0, 3
- adds r0, r3
- ldrh r2, [r6]
- ldrh r1, [r6, 0x2]
- adds r7, r2, 0
- muls r7, r1
- adds r1, r7, 0
- strh r1, [r0, 0xE]
- adds r2, r3, 0
- adds r3, r4, 0
-_08099B16:
- adds r1, r3, r5
- lsls r1, 3
- adds r1, r2
- ldrh r0, [r6, 0x2]
- strh r0, [r1, 0x10]
- mov r0, r8
- strh r0, [r1, 0x12]
- ldrh r0, [r6, 0x6]
- strh r0, [r1, 0x14]
- movs r0, 0x1
- strh r0, [r1, 0x16]
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1, 0xE]
- movs r7, 0x10
- ldrsh r0, [r1, r7]
- negs r0, r0
- strh r0, [r1, 0x10]
- ldr r0, _08099B50 @ =sub_8099B54
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08099B4C: .4byte gTasks
-_08099B50: .4byte sub_8099B54
- thumb_func_end sub_8099A78
-
- thumb_func_start sub_8099B54
-sub_8099B54: @ 8099B54
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08099BAC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x10]
- ldrh r1, [r4, 0xE]
- adds r0, r1
- strh r0, [r4, 0xE]
- ldrb r0, [r4, 0x12]
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0xE]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08099B88
- ldrb r0, [r4, 0x12]
- bl sub_80759DC
-_08099B88:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xC
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _08099BCE
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08099BB0
- cmp r0, 0x1
- ble _08099BB6
- cmp r0, 0x2
- beq _08099BBE
- b _08099BB6
- .align 2, 0
-_08099BAC: .4byte gTasks
-_08099BB0:
- ldrb r0, [r4, 0x12]
- bl sub_8075980
-_08099BB6:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _08099BCE
-_08099BBE:
- movs r0, 0
- strh r0, [r4, 0xA]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- negs r0, r0
- strh r0, [r4, 0x10]
- movs r0, 0x1
- strh r0, [r4, 0x14]
-_08099BCE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8099B54
-
- thumb_func_start sub_8099BD4
-sub_8099BD4: @ 8099BD4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08099C00 @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r1, [r0, r2]
- mov r8, r0
- cmp r1, 0
- bne _08099C0C
- ldr r4, _08099C04 @ =gTasks
- lsls r5, r7, 2
- adds r0, r5, r7
- lsls r0, 3
- adds r6, r0, r4
- ldr r0, _08099C08 @ =gUnknown_2037EEC
- ldrh r0, [r0]
- movs r1, 0xC
- bl __udivsi3
- b _08099C20
- .align 2, 0
-_08099C00: .4byte gUnknown_2037F02
-_08099C04: .4byte gTasks
-_08099C08: .4byte gUnknown_2037EEC
-_08099C0C:
- ldr r4, _08099CA8 @ =gTasks
- lsls r5, r7, 2
- adds r0, r5, r7
- lsls r0, 3
- adds r6, r0, r4
- ldr r0, _08099CAC @ =gUnknown_2037EE8
- ldr r0, [r0]
- movs r1, 0xC
- bl __divsi3
-_08099C20:
- strh r0, [r6, 0x26]
- lsls r0, 16
- adds r1, r4, 0
- cmp r0, 0
- bgt _08099C2E
- movs r0, 0x1
- strh r0, [r6, 0x26]
-_08099C2E:
- movs r2, 0x26
- ldrsh r0, [r6, r2]
- cmp r0, 0x10
- ble _08099C3A
- movs r0, 0x10
- strh r0, [r6, 0x26]
-_08099C3A:
- adds r4, r5, r7
- lsls r4, 3
- adds r4, r1
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- movs r5, 0
- strh r1, [r4, 0x24]
- ldrh r2, [r4, 0x26]
- movs r0, 0x1
- ands r0, r2
- adds r1, r0
- strh r1, [r4, 0x22]
- strh r5, [r4, 0x20]
- mov r1, r8
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x1C]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x1E]
- movs r0, 0x1
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x16]
- ldr r2, _08099CB0 @ =gSprites
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x24]
- strh r0, [r4, 0x18]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x26]
- strh r0, [r4, 0x1A]
- strh r5, [r4, 0x8]
- mov r1, r8
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0xA]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0xC]
- ldr r0, _08099CB4 @ =sub_8099CB8
- str r0, [r4]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08099CA8: .4byte gTasks
-_08099CAC: .4byte gUnknown_2037EE8
-_08099CB0: .4byte gSprites
-_08099CB4: .4byte sub_8099CB8
- thumb_func_end sub_8099BD4
-
- thumb_func_start sub_8099CB8
-sub_8099CB8: @ 8099CB8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08099D0C @ =gTasks
- adds r3, r0, r1
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xA
- ldrsh r1, [r3, r2]
- cmp r0, r1
- ble _08099D96
- movs r0, 0
- strh r0, [r3, 0x8]
- ldrh r0, [r3, 0x20]
- adds r1, r0, 0x1
- movs r0, 0x1
- ands r1, r0
- strh r1, [r3, 0x20]
- movs r2, 0x1C
- ldrsh r0, [r3, r2]
- cmp r0, 0
- beq _08099D2A
- cmp r1, 0
- beq _08099D14
- ldr r2, _08099D10 @ =gSprites
- movs r0, 0x16
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x22]
- ldrh r2, [r3, 0x18]
- adds r1, r2
- b _08099D28
- .align 2, 0
-_08099D0C: .4byte gTasks
-_08099D10: .4byte gSprites
-_08099D14:
- ldr r2, _08099D50 @ =gSprites
- movs r0, 0x16
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x18]
- ldrh r2, [r3, 0x24]
- subs r1, r2
-_08099D28:
- strh r1, [r0, 0x24]
-_08099D2A:
- movs r1, 0x1E
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _08099D64
- movs r2, 0x20
- ldrsh r4, [r3, r2]
- cmp r4, 0
- beq _08099D54
- ldr r2, _08099D50 @ =gSprites
- movs r0, 0x16
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x26]
- strh r1, [r0, 0x26]
- b _08099D64
- .align 2, 0
-_08099D50: .4byte gSprites
-_08099D54:
- ldr r2, _08099D9C @ =gSprites
- movs r0, 0x16
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r4, [r0, 0x26]
-_08099D64:
- ldrh r0, [r3, 0xC]
- subs r0, 0x1
- strh r0, [r3, 0xC]
- lsls r0, 16
- asrs r4, r0, 16
- cmp r4, 0
- bne _08099D96
- ldr r2, _08099D9C @ =gSprites
- movs r0, 0x16
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r4, [r0, 0x24]
- movs r0, 0x16
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r4, [r0, 0x26]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08099D96:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08099D9C: .4byte gSprites
- thumb_func_end sub_8099CB8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_80A22E8.s b/asm/battle_anim_80A22E8.s
deleted file mode 100644
index bf7f547f6..000000000
--- a/asm/battle_anim_80A22E8.s
+++ /dev/null
@@ -1,55436 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80A22E8
-sub_80A22E8: @ 80A22E8
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080A231C @ =gUnknown_2037F02
- ldrh r0, [r5]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x30]
- ldr r0, _080A2320 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A2324
- ldrh r0, [r5, 0x8]
- negs r0, r0
- b _080A2326
- .align 2, 0
-_080A231C: .4byte gUnknown_2037F02
-_080A2320: .4byte gUnknown_2037F1A
-_080A2324:
- ldrh r0, [r5, 0x8]
-_080A2326:
- strh r0, [r4, 0x34]
- ldr r0, _080A2338 @ =gUnknown_2037F02
- ldrh r0, [r0, 0xA]
- strh r0, [r4, 0x36]
- ldr r0, _080A233C @ =sub_80A2340
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2338: .4byte gUnknown_2037F02
-_080A233C: .4byte sub_80A2340
- thumb_func_end sub_80A22E8
-
- thumb_func_start sub_80A2340
-sub_80A2340: @ 80A2340
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080A237C
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x32]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r1, r0
- strh r1, [r4, 0x32]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x38]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- b _080A2382
-_080A237C:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A2382:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A2340
-
- thumb_func_start sub_80A2388
-sub_80A2388: @ 80A2388
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080A23C8 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x2E]
- ldr r5, _080A23CC @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldr r0, _080A23D0 @ =sub_8075590
- str r0, [r4, 0x1C]
- ldr r1, _080A23D4 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A23C8: .4byte gUnknown_2037F02
-_080A23CC: .4byte gUnknown_2037F1A
-_080A23D0: .4byte sub_8075590
-_080A23D4: .4byte move_anim_8074EE0
- thumb_func_end sub_80A2388
-
- thumb_func_start sub_80A23D8
-sub_80A23D8: @ 80A23D8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r5, _080A2420 @ =gUnknown_2037F02
- ldrb r1, [r5, 0x6]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldr r5, _080A2424 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldr r0, _080A2428 @ =sub_8075590
- str r0, [r4, 0x1C]
- ldr r1, _080A242C @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2420: .4byte gUnknown_2037F02
-_080A2424: .4byte gUnknown_2037F1B
-_080A2428: .4byte sub_8075590
-_080A242C: .4byte DestroyAnimSprite
- thumb_func_end sub_80A23D8
-
- thumb_func_start sub_80A2430
-sub_80A2430: @ 80A2430
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r6, _080A2480 @ =gUnknown_2037F02
- ldrh r0, [r6, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldr r5, _080A2484 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldrh r0, [r6, 0x6]
- strh r0, [r4, 0x38]
- ldr r1, _080A2488 @ =sub_80A248C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2480: .4byte gUnknown_2037F02
-_080A2484: .4byte gUnknown_2037F1B
-_080A2488: .4byte sub_80A248C
- thumb_func_end sub_80A2430
-
- thumb_func_start sub_80A248C
-sub_80A248C: @ 80A248C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080A24A2
- adds r0, r4, 0
- bl DestroySprite
- b _080A24F6
-_080A24A2:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x7F
- ble _080A24BC
- ldr r0, _080A24B8 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_807685C
- adds r0, 0x1
- b _080A24C6
- .align 2, 0
-_080A24B8: .4byte gUnknown_2037F1B
-_080A24BC:
- ldr r0, _080A24FC @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_807685C
- adds r0, 0x6
-_080A24C6:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x5
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xE
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0xF
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
-_080A24F6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A24FC: .4byte gUnknown_2037F1B
- thumb_func_end sub_80A248C
-
- thumb_func_start sub_80A2500
-sub_80A2500: @ 80A2500
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, _080A2570 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0x8]
- subs r0, 0x1
- movs r2, 0
- strh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080A255A
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- movs r0, 0x6
- strh r0, [r5, 0x8]
- ldr r1, _080A2574 @ =gUnknown_2037F02
- movs r0, 0xF
- strh r0, [r1]
- strh r2, [r1, 0x2]
- movs r0, 0x50
- strh r0, [r1, 0x4]
- strh r2, [r1, 0x6]
- ldr r4, _080A2578 @ =gUnknown_83E2A88
- ldr r0, _080A257C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_807685C
- adds r3, r0, 0
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- bl CreateSpriteAndAnimate
-_080A255A:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0xF
- bne _080A2568
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080A2568:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2570: .4byte gTasks
-_080A2574: .4byte gUnknown_2037F02
-_080A2578: .4byte gUnknown_83E2A88
-_080A257C: .4byte gUnknown_2037F1B
- thumb_func_end sub_80A2500
-
- thumb_func_start sub_80A2580
-sub_80A2580: @ 80A2580
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r6, _080A25C4 @ =gUnknown_2037F02
- ldrh r0, [r6, 0x6]
- strh r0, [r4, 0x2E]
- ldr r5, _080A25C8 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldrh r0, [r6, 0x4]
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_8075068
- ldr r0, _080A25CC @ =sub_80A25D0
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A25C4: .4byte gUnknown_2037F02
-_080A25C8: .4byte gUnknown_2037F1A
-_080A25CC: .4byte sub_80A25D0
- thumb_func_end sub_80A2580
-
- thumb_func_start sub_80A25D0
-sub_80A25D0: @ 80A25D0
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080A25E4
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A25E4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A25D0
-
- thumb_func_start sub_80A25EC
-sub_80A25EC: @ 80A25EC
- push {r4,r5,lr}
- adds r5, r0, 0
- bl Random
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x7
- ands r1, r0
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r4, _080A2634 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A2638
- ldrh r0, [r5, 0x20]
- subs r0, 0x14
- b _080A263C
- .align 2, 0
-_080A2634: .4byte gUnknown_2037F1A
-_080A2638:
- ldrh r0, [r5, 0x20]
- adds r0, 0x14
-_080A263C:
- strh r0, [r5, 0x20]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1F
- ands r0, r1
- adds r0, 0x40
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldr r4, _080A269C @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl sub_8075804
- bl Random
- movs r1, 0xFF
- ands r1, r0
- strh r1, [r5, 0x38]
- adds r0, r5, 0
- adds r0, 0x43
- ldrb r0, [r0]
- strh r0, [r5, 0x3A]
- ldr r1, _080A26A0 @ =sub_80A26A4
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A269C: .4byte gUnknown_2037F1B
-_080A26A0: .4byte sub_80A26A4
- thumb_func_end sub_80A25EC
-
- thumb_func_start sub_80A26A4
-sub_80A26A4: @ 80A26A4
- push {r4,lr}
- adds r4, r0, 0
- bl sub_807578C
- lsls r0, 24
- cmp r0, 0
- beq _080A26BA
- adds r0, r4, 0
- bl DestroyAnimSprite
- b _080A26EA
-_080A26BA:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xC
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x7E
- bgt _080A26D6
- ldrh r0, [r4, 0x3A]
- b _080A26DA
-_080A26D6:
- ldrh r0, [r4, 0x3A]
- adds r0, 0x1
-_080A26DA:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrh r0, [r4, 0x38]
- adds r0, 0x18
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
-_080A26EA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A26A4
-
- thumb_func_start sub_80A26F0
-sub_80A26F0: @ 80A26F0
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080A2750 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A2710
- ldr r1, _080A2754 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080A2710:
- ldr r4, _080A2754 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldr r5, _080A2758 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r6, 0x36]
- ldrh r0, [r4, 0xA]
- strh r0, [r6, 0x38]
- adds r0, r6, 0
- bl sub_8075068
- ldr r0, _080A275C @ =sub_80A2760
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2750: .4byte gUnknown_2037F1A
-_080A2754: .4byte gUnknown_2037F02
-_080A2758: .4byte gUnknown_2037F1B
-_080A275C: .4byte sub_80A2760
- thumb_func_end sub_80A26F0
-
- thumb_func_start sub_80A2760
-sub_80A2760: @ 80A2760
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080A278A
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- ldr r0, _080A2790 @ =sub_8074C44
- str r0, [r4, 0x1C]
- ldr r1, _080A2794 @ =sub_80A2798
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
-_080A278A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2790: .4byte sub_8074C44
-_080A2794: .4byte sub_80A2798
- thumb_func_end sub_80A2760
-
- thumb_func_start sub_80A2798
-sub_80A2798: @ 80A2798
- push {r4,lr}
- adds r4, r0, 0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0x3C
- strh r0, [r4, 0x2E]
- ldr r0, _080A27C8 @ =sub_8074C44
- str r0, [r4, 0x1C]
- ldr r1, _080A27CC @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A27C8: .4byte sub_8074C44
-_080A27CC: .4byte DestroyAnimSprite
- thumb_func_end sub_80A2798
-
- thumb_func_start sub_80A27D0
-sub_80A27D0: @ 80A27D0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r5, _080A2814 @ =gUnknown_2037F02
- ldrb r1, [r5, 0x8]
- adds r0, r4, 0
- bl StartSpriteAnim
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080A27FA
- ldrb r0, [r4, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4, 0x1]
-_080A27FA:
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x30]
- ldr r1, _080A2818 @ =sub_80A281C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2814: .4byte gUnknown_2037F02
-_080A2818: .4byte sub_80A281C
- thumb_func_end sub_80A27D0
-
- thumb_func_start sub_80A281C
-sub_80A281C: @ 80A281C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- negs r1, r1
- bl Cos
- ldrh r1, [r4, 0x32]
- adds r1, 0x18
- strh r1, [r4, 0x32]
- lsls r1, 16
- asrs r1, 24
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x7F
- bhi _080A2870
- ldr r0, _080A286C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_8076884
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- b _080A2894
- .align 2, 0
-_080A286C: .4byte gUnknown_2037F1B
-_080A2870:
- ldr r0, _080A28C0 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_8076884
- adds r0, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080A2884
- movs r2, 0x3
-_080A2884:
- movs r0, 0x3
- ands r2, r0
- lsls r2, 2
- ldrb r1, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- orrs r0, r2
-_080A2894:
- strb r0, [r4, 0x5]
- ldrh r0, [r4, 0x30]
- adds r0, 0x2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080A28B8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A28B8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A28C0: .4byte gUnknown_2037F1B
- thumb_func_end sub_80A281C
-
- thumb_func_start sub_80A28C4
-sub_80A28C4: @ 80A28C4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080A28DE
- bl sub_8075290
- lsls r0, 24
- cmp r0, 0
- bne _080A28E6
-_080A28DE:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080A2918
-_080A28E6:
- ldr r0, _080A2904 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A2908
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x3
- bl SetAnimBgAttribute
- b _080A2912
- .align 2, 0
-_080A2904: .4byte gUnknown_2037F1B
-_080A2908:
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080A2912:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080A2918:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A28C4
-
- thumb_func_start sub_80A2920
-sub_80A2920: @ 80A2920
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_8075160
- ldr r5, _080A2968 @ =gUnknown_2037F02
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldr r0, _080A296C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x4]
- adds r0, r5
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- movs r0, 0x40
- strh r0, [r4, 0x38]
- ldr r1, _080A2970 @ =sub_80A2974
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2968: .4byte gUnknown_2037F02
-_080A296C: .4byte gUnknown_2037F1A
-_080A2970: .4byte sub_80A2974
- thumb_func_end sub_80A2920
-
- thumb_func_start sub_80A2974
-sub_80A2974: @ 80A2974
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- bne _080A29E0
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x5
- negs r1, r1
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x7F
- bhi _080A29C0
- ldr r0, _080A29BC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_807685C
- subs r0, 0x1
- b _080A29CA
- .align 2, 0
-_080A29BC: .4byte gUnknown_2037F1A
-_080A29C0:
- ldr r0, _080A29DC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_807685C
- adds r0, 0x1
-_080A29CA:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrh r0, [r4, 0x38]
- adds r0, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- b _080A29E6
- .align 2, 0
-_080A29DC: .4byte gUnknown_2037F1A
-_080A29E0:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A29E6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A2974
-
- thumb_func_start sub_80A29EC
-sub_80A29EC: @ 80A29EC
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r5, _080A2A34 @ =gUnknown_2037F02
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldr r0, _080A2A38 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x4]
- adds r0, r5
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- movs r0, 0x40
- strh r0, [r4, 0x38]
- ldr r1, _080A2A3C @ =sub_80A2A40
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2A34: .4byte gUnknown_2037F02
-_080A2A38: .4byte gUnknown_2037F1A
-_080A2A3C: .4byte sub_80A2A40
- thumb_func_end sub_80A29EC
-
- thumb_func_start sub_80A2A40
-sub_80A2A40: @ 80A2A40
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- bne _080A2A98
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldrh r1, [r4, 0x38]
- adds r0, r1, 0
- subs r0, 0x3B
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x4
- bls _080A2A78
- adds r0, r1, 0
- subs r0, 0xBB
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x4
- bhi _080A2A8C
-_080A2A78:
- ldrb r2, [r4, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x8
- eors r1, r0
- lsls r1, 1
- subs r0, 0x47
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x3]
-_080A2A8C:
- ldrh r0, [r4, 0x38]
- adds r0, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- b _080A2A9E
-_080A2A98:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A2A9E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A2A40
-
- thumb_func_start sub_80A2AA4
-sub_80A2AA4: @ 80A2AA4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080A2AE0 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r1, _080A2AE4 @ =gUnknown_2037F02
- ldrh r0, [r1]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x32]
- ldr r0, _080A2AE8 @ =sub_80A2AEC
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2AE0: .4byte gUnknown_2037F1A
-_080A2AE4: .4byte gUnknown_2037F02
-_080A2AE8: .4byte sub_80A2AEC
- thumb_func_end sub_80A2AA4
-
- thumb_func_start sub_80A2AEC
-sub_80A2AEC: @ 80A2AEC
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x32]
- movs r2, 0x32
- ldrsh r3, [r1, r2]
- cmp r3, 0
- bne _080A2B20
- ldrh r0, [r1, 0x30]
- movs r2, 0x1
- ands r2, r0
- cmp r2, 0
- beq _080A2B0E
- movs r0, 0x80
- strh r0, [r1, 0x2E]
- strh r3, [r1, 0x30]
- strh r3, [r1, 0x32]
- b _080A2B14
-_080A2B0E:
- strh r2, [r1, 0x2E]
- strh r2, [r1, 0x30]
- strh r2, [r1, 0x32]
-_080A2B14:
- ldr r0, _080A2B1C @ =sub_80A2B38
- str r0, [r1, 0x1C]
- b _080A2B34
- .align 2, 0
-_080A2B1C: .4byte sub_80A2B38
-_080A2B20:
- subs r0, 0x1
- strh r0, [r1, 0x32]
- ldrh r0, [r1, 0x2E]
- ldrh r2, [r1, 0x20]
- adds r0, r2
- strh r0, [r1, 0x20]
- ldrh r0, [r1, 0x30]
- ldrh r2, [r1, 0x22]
- adds r0, r2
- strh r0, [r1, 0x22]
-_080A2B34:
- pop {r0}
- bx r0
- thumb_func_end sub_80A2AEC
-
- thumb_func_start sub_80A2B38
-sub_80A2B38: @ 80A2B38
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080A2B58 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A2B5C
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x19
- bl Sin
- negs r0, r0
- b _080A2B66
- .align 2, 0
-_080A2B58: .4byte gUnknown_2037F1A
-_080A2B5C:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x19
- bl Sin
-_080A2B66:
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080A2B86
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
-_080A2B86:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x50
- ble _080A2B94
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A2B94:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A2B38
-
- thumb_func_start sub_80A2B9C
-sub_80A2B9C: @ 80A2B9C
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080A2BF0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A2BBC
- ldr r1, _080A2BF4 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080A2BBC:
- ldr r6, _080A2BF4 @ =gUnknown_2037F02
- ldrh r0, [r6, 0x8]
- strh r0, [r5, 0x2E]
- movs r1, 0xC
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080A2BFC
- ldr r4, _080A2BF8 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x4]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x6]
- adds r0, r6
- b _080A2C1C
- .align 2, 0
-_080A2BF0: .4byte gUnknown_2037F1A
-_080A2BF4: .4byte gUnknown_2037F02
-_080A2BF8: .4byte gUnknown_2037F1B
-_080A2BFC:
- ldr r0, _080A2C48 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x32
- adds r3, r5, 0
- adds r3, 0x36
- movs r1, 0x1
- bl sub_8076D9C
- ldrh r0, [r6, 0x4]
- ldrh r1, [r5, 0x32]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r6, 0x6]
- ldrh r1, [r5, 0x36]
- adds r0, r1
-_080A2C1C:
- strh r0, [r5, 0x36]
- ldr r0, _080A2C4C @ =gUnknown_2037F02
- ldrh r0, [r0, 0xA]
- strh r0, [r5, 0x38]
- adds r0, r5, 0
- bl sub_8075068
- ldr r0, _080A2C50 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- adds r4, r0, 0
- ldr r0, _080A2C48 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080A2C54
- movs r0, 0x1
- b _080A2C56
- .align 2, 0
-_080A2C48: .4byte gUnknown_2037F1B
-_080A2C4C: .4byte gUnknown_2037F02
-_080A2C50: .4byte gUnknown_2037F1A
-_080A2C54:
- movs r0, 0
-_080A2C56:
- strh r0, [r5, 0x2E]
- ldr r0, _080A2C64 @ =sub_80A2C68
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2C64: .4byte sub_80A2C68
- thumb_func_end sub_80A2B9C
-
- thumb_func_start sub_80A2C68
-sub_80A2C68: @ 80A2C68
- push {r4-r7,lr}
- adds r6, r0, 0
- movs r7, 0
- ldrh r5, [r6, 0x2E]
- ldrh r4, [r6, 0x3C]
- movs r0, 0x1
- strh r0, [r6, 0x2E]
- adds r0, r6, 0
- bl AnimateBallThrow
- ldrh r0, [r6, 0x3C]
- strh r5, [r6, 0x2E]
- lsls r4, 16
- asrs r4, 16
- cmp r4, 0xC8
- ble _080A2C9A
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x37
- bgt _080A2C9A
- ldrh r0, [r6, 0x6]
- cmp r0, 0
- bne _080A2CA0
- adds r0, 0x1
- strh r0, [r6, 0x6]
-_080A2C9A:
- ldrh r0, [r6, 0x6]
- cmp r0, 0
- beq _080A2CD2
-_080A2CA0:
- movs r1, 0x2E
- ldrsh r0, [r6, r1]
- cmp r0, 0
- beq _080A2CD2
- adds r3, r6, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- ldrh r0, [r6, 0x6]
- adds r0, 0x1
- strh r0, [r6, 0x6]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1E
- bne _080A2CD2
- movs r7, 0x1
-_080A2CD2:
- movs r2, 0x20
- ldrsh r0, [r6, r2]
- movs r2, 0x24
- ldrsh r1, [r6, r2]
- adds r0, r1
- adds r0, 0x10
- movs r1, 0x88
- lsls r1, 1
- cmp r0, r1
- bhi _080A2CFC
- movs r0, 0x22
- ldrsh r1, [r6, r0]
- movs r2, 0x26
- ldrsh r0, [r6, r2]
- adds r1, r0
- cmp r1, 0xA0
- bgt _080A2CFC
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- bge _080A2CFE
-_080A2CFC:
- movs r7, 0x1
-_080A2CFE:
- cmp r7, 0
- beq _080A2D08
- adds r0, r6, 0
- bl DestroyAnimSprite
-_080A2D08:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A2C68
-
- thumb_func_start sub_80A2D10
-sub_80A2D10: @ 80A2D10
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080A2D3C
- bl sub_8075290
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A2D3C
- ldr r0, _080A2D64 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- movs r1, 0x1
- bl sub_8076D9C
-_080A2D3C:
- ldrh r0, [r4, 0x22]
- adds r0, 0x20
- strh r0, [r4, 0x22]
- ldr r1, _080A2D68 @ =gUnknown_2037F02
- ldrh r0, [r1]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x36]
- ldr r0, _080A2D6C @ =sub_80A2D70
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2D64: .4byte gUnknown_2037F1B
-_080A2D68: .4byte gUnknown_2037F02
-_080A2D6C: .4byte sub_80A2D70
- thumb_func_end sub_80A2D10
-
- thumb_func_start sub_80A2D70
-sub_80A2D70: @ 80A2D70
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0xFF
- bne _080A2D86
- ldrh r0, [r4, 0x22]
- subs r0, 0x2
- strh r0, [r4, 0x22]
- b _080A2D94
-_080A2D86:
- cmp r0, 0
- ble _080A2D94
- ldrh r0, [r4, 0x22]
- subs r0, 0x2
- strh r0, [r4, 0x22]
- subs r0, r1, 0x2
- strh r0, [r4, 0x30]
-_080A2D94:
- ldrh r3, [r4, 0x32]
- ldrh r5, [r4, 0x38]
- adds r2, r3, r5
- strh r2, [r4, 0x38]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r5, 0x36
- ldrsh r0, [r4, r5]
- cmp r1, r0
- bge _080A2DAC
- adds r0, r2, r3
- strh r0, [r4, 0x38]
-_080A2DAC:
- ldrh r1, [r4, 0x38]
- movs r0, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r5, 0x38
- ldrsh r0, [r4, r5]
- movs r1, 0x5
- bl Sin
- strh r0, [r4, 0x26]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x7F
- bgt _080A2DEC
- ldr r0, _080A2DE8 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- b _080A2DFA
- .align 2, 0
-_080A2DE8: .4byte gUnknown_2037F1B
-_080A2DEC:
- ldr r0, _080A2E24 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
-_080A2DFA:
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x5]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _080A2E1E
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A2E1E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2E24: .4byte gUnknown_2037F1B
- thumb_func_end sub_80A2D70
-
- thumb_func_start sub_80A2E28
-sub_80A2E28: @ 80A2E28
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0
- bl sub_8075114
- adds r2, r5, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r4, _080A2E5C @ =gUnknown_2037F02
- ldrb r1, [r4, 0x4]
- adds r0, r5, 0
- bl StartSpriteAffineAnim
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x3A]
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0x3C]
- ldr r0, _080A2E60 @ =sub_80A2E64
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2E5C: .4byte gUnknown_2037F02
-_080A2E60: .4byte sub_80A2E64
- thumb_func_end sub_80A2E28
-
- thumb_func_start sub_80A2E64
-sub_80A2E64: @ 80A2E64
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080A2E94 @ =gUnknown_2037F02
- ldrh r1, [r0, 0xE]
- ldr r0, _080A2E98 @ =0x0000ffff
- cmp r1, r0
- bne _080A2E8E
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x1
- bl GetAnimBankSpriteId
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0x2E]
- ldr r0, _080A2E9C @ =sub_80A2EA0
- str r0, [r4, 0x1C]
-_080A2E8E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2E94: .4byte gUnknown_2037F02
-_080A2E98: .4byte 0x0000ffff
-_080A2E9C: .4byte sub_80A2EA0
- thumb_func_end sub_80A2E64
-
- thumb_func_start sub_80A2EA0
-sub_80A2EA0: @ 80A2EA0
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- bl GetAnimBankSpriteId
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A2EB8
- ldrh r0, [r4, 0x2E]
- adds r0, 0xB
- b _080A2EBC
-_080A2EB8:
- ldrh r0, [r4, 0x2E]
- subs r0, 0xB
-_080A2EBC:
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _080A2ED8
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x32]
-_080A2ED8:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080A2F06
- ldrh r0, [r4, 0x3C]
- subs r0, 0x1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- cmp r0, 0
- ble _080A2F00
- ldrh r1, [r4, 0x3A]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- b _080A2F06
-_080A2F00:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A2F06:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A2EA0
-
- thumb_func_start sub_80A2F0C
-sub_80A2F0C: @ 80A2F0C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080A2F38 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- bge _080A2F3C
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080A2F62
- .align 2, 0
-_080A2F38: .4byte gSprites
-_080A2F3C:
- adds r0, r2, 0
- movs r1, 0x1
- bl sub_80758E0
- ldr r1, _080A2F68 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r2, _080A2F6C @ =gUnknown_2037F02
- ldrh r1, [r2]
- strh r1, [r0, 0x8]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0xA]
- movs r1, 0x80
- lsls r1, 1
- strh r1, [r0, 0x1E]
- ldr r1, _080A2F70 @ =sub_80A2F74
- str r1, [r0]
-_080A2F62:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2F68: .4byte gTasks
-_080A2F6C: .4byte gUnknown_2037F02
-_080A2F70: .4byte sub_80A2F74
- thumb_func_end sub_80A2F0C
-
- thumb_func_start sub_80A2F74
-sub_80A2F74: @ 80A2F74
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, _080A2FF4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0x8]
- ldrh r0, [r4, 0x1C]
- adds r1, r0
- strh r1, [r4, 0x1C]
- ldr r2, _080A2FF8 @ =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r5, r0, r2
- lsls r1, 16
- asrs r1, 24
- strh r1, [r5, 0x24]
- ldr r0, _080A2FFC @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A2FBE
- ldrh r0, [r5, 0x24]
- negs r0, r0
- strh r0, [r5, 0x24]
-_080A2FBE:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x10
- strh r0, [r4, 0x1E]
- movs r0, 0x1E
- ldrsh r2, [r4, r0]
- adds r0, r6, 0
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- adds r0, r6, 0
- bl sub_8076440
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bne _080A2FEC
- strh r0, [r4, 0x8]
- ldr r0, _080A3000 @ =sub_80A3004
- str r0, [r4]
-_080A2FEC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2FF4: .4byte gTasks
-_080A2FF8: .4byte gSprites
-_080A2FFC: .4byte gUnknown_2037F1B
-_080A3000: .4byte sub_80A3004
- thumb_func_end sub_80A2F74
-
- thumb_func_start sub_80A3004
-sub_80A3004: @ 80A3004
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _080A3050 @ =gUnknown_2037F02
- ldrh r1, [r0, 0xE]
- ldr r0, _080A3054 @ =0x0000ffff
- cmp r1, r0
- bne _080A3060
- ldr r0, _080A3058 @ =gTasks
- lsls r2, r3, 2
- adds r1, r2, r3
- lsls r1, 3
- adds r6, r1, r0
- movs r1, 0x8
- ldrsh r5, [r6, r1]
- adds r4, r0, 0
- cmp r5, 0
- bne _080A3074
- movs r0, 0x1
- bl GetAnimBankSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_8075980
- ldr r1, _080A305C @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- strh r5, [r0, 0x24]
- strh r5, [r0, 0x26]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- b _080A308E
- .align 2, 0
-_080A3050: .4byte gUnknown_2037F02
-_080A3054: .4byte 0x0000ffff
-_080A3058: .4byte gTasks
-_080A305C: .4byte gSprites
-_080A3060:
- ldr r1, _080A3094 @ =gTasks
- lsls r2, r3, 2
- adds r0, r2, r3
- lsls r0, 3
- adds r0, r1
- movs r4, 0x8
- ldrsh r0, [r0, r4]
- adds r4, r1, 0
- cmp r0, 0
- beq _080A308E
-_080A3074:
- adds r1, r2, r3
- lsls r1, 3
- adds r1, r4
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080A308E
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_080A308E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A3094: .4byte gTasks
- thumb_func_end sub_80A3004
-
- thumb_func_start sub_80A3098
-sub_80A3098: @ 80A3098
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080A30AA
- cmp r0, 0x1
- beq _080A3104
- b _080A3156
-_080A30AA:
- ldr r6, _080A30FC @ =gUnknown_2037F1B
- ldrb r0, [r6]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A30C2
- ldr r1, _080A3100 @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1]
-_080A30C2:
- ldrb r0, [r6]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- ldr r4, _080A3100 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r6]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
- strh r0, [r5, 0x22]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080A3156
- .align 2, 0
-_080A30FC: .4byte gUnknown_2037F1B
-_080A3100: .4byte gUnknown_2037F02
-_080A3104:
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080A3156
- adds r0, r5, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
- movs r0, 0x19
- strh r0, [r5, 0x2E]
- ldr r4, _080A315C @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, _080A3160 @ =sub_8075764
- str r0, [r5, 0x1C]
- ldr r1, _080A3164 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
-_080A3156:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A315C: .4byte gUnknown_2037F1A
-_080A3160: .4byte sub_8075764
-_080A3164: .4byte DestroyAnimSprite
- thumb_func_end sub_80A3098
-
- thumb_func_start sub_80A3168
-sub_80A3168: @ 80A3168
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A31D4
- ldr r4, _080A31E0 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r4, _080A31E4 @ =gUnknown_2037F02
- ldrh r0, [r4]
- strh r0, [r5, 0x24]
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0x26]
- ldrb r0, [r4, 0x4]
- adds r0, 0x1E
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrb r1, [r4, 0x6]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- movs r2, 0x22
- ldrsh r0, [r5, r2]
- movs r2, 0x26
- ldrsh r1, [r5, r2]
- adds r0, r1
- cmp r0, 0x78
- ble _080A31D4
- ldrh r0, [r5, 0x22]
- adds r1, r0, 0
- subs r1, 0x78
- ldrh r2, [r5, 0x26]
- adds r0, r2
- adds r1, r0
- strh r1, [r5, 0x22]
-_080A31D4:
- ldr r0, _080A31E8 @ =sub_80A32DC
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A31E0: .4byte gUnknown_2037F1A
-_080A31E4: .4byte gUnknown_2037F02
-_080A31E8: .4byte sub_80A32DC
- thumb_func_end sub_80A3168
-
- thumb_func_start sub_80A31EC
-sub_80A31EC: @ 80A31EC
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x4
- mov r9, r0
- ldr r4, _080A32C8 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- mov r8, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r6, _080A32CC @ =gUnknown_2037F1B
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_8074480
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r6]
- movs r1, 0x3
- bl sub_8074480
- adds r2, r0, 0
- lsls r2, 24
- subs r4, r5
- lsls r4, 16
- lsrs r2, 24
- mov r1, r8
- subs r2, r1
- lsls r2, 16
- lsrs r2, 16
- lsrs r3, r4, 16
- mov r10, r3
- asrs r4, 16
- ldr r6, _080A32D0 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r6, r1]
- muls r0, r4
- movs r1, 0x64
- str r2, [sp]
- bl __divsi3
- adds r5, r0
- mov r3, r9
- strh r5, [r3, 0x20]
- ldr r2, [sp]
- lsls r0, r2, 16
- asrs r0, 16
- movs r3, 0
- ldrsh r1, [r6, r3]
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- add r8, r0
- mov r1, r8
- mov r0, r9
- strh r1, [r0, 0x22]
- ldrh r0, [r6, 0x2]
- mov r3, r9
- strh r0, [r3, 0x24]
- ldrh r0, [r6, 0x4]
- strh r0, [r3, 0x26]
- ldrb r0, [r6, 0x6]
- adds r0, 0x1E
- mov r1, r9
- adds r1, 0x43
- strb r0, [r1]
- ldrb r1, [r6, 0x8]
- mov r0, r9
- bl StartSpriteAnim
- ldrh r0, [r6, 0xA]
- mov r1, r9
- strh r0, [r1, 0x32]
- ldr r0, _080A32D4 @ =sub_80A32DC
- str r0, [r1, 0x1C]
- ldr r1, _080A32D8 @ =gUnknown_203999C
- mov r3, r9
- ldrh r0, [r3, 0x20]
- strh r0, [r1]
- ldrh r0, [r3, 0x22]
- strh r0, [r1, 0x2]
- mov r0, r10
- strh r0, [r1, 0x4]
- ldr r2, [sp]
- strh r2, [r1, 0x6]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A32C8: .4byte gUnknown_2037F1A
-_080A32CC: .4byte gUnknown_2037F1B
-_080A32D0: .4byte gUnknown_2037F02
-_080A32D4: .4byte sub_80A32DC
-_080A32D8: .4byte gUnknown_203999C
- thumb_func_end sub_80A31EC
-
- thumb_func_start sub_80A32DC
-sub_80A32DC: @ 80A32DC
- push {lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x2E]
- adds r1, 0x1
- strh r1, [r3, 0x2E]
- lsls r1, 16
- asrs r1, 16
- movs r2, 0x32
- ldrsh r0, [r3, r2]
- subs r0, 0xA
- cmp r1, r0
- ble _080A331C
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- movs r2, 0x3E
- adds r2, r3
- mov r12, r2
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
-_080A331C:
- movs r2, 0x2E
- ldrsh r1, [r3, r2]
- movs r2, 0x32
- ldrsh r0, [r3, r2]
- cmp r1, r0
- ble _080A332E
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080A332E:
- pop {r0}
- bx r0
- thumb_func_end sub_80A32DC
-
- thumb_func_start sub_80A3334
-sub_80A3334: @ 80A3334
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080A3374
- ldr r5, _080A33B0 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- ldr r4, _080A33B4 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r2, [r4]
- adds r0, r2
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x22]
- ldrh r0, [r4, 0x4]
- strh r0, [r6, 0x30]
- ldrh r0, [r4, 0x6]
- strh r0, [r6, 0x32]
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x34]
-_080A3374:
- ldrh r0, [r6, 0x2E]
- adds r0, 0x1
- strh r0, [r6, 0x2E]
- ldrh r1, [r6, 0x30]
- muls r0, r1
- strh r0, [r6, 0x24]
- movs r2, 0x2E
- ldrsh r1, [r6, r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- movs r1, 0xFF
- ands r0, r1
- movs r2, 0x32
- ldrsh r1, [r6, r2]
- bl Sin
- strh r0, [r6, 0x26]
- movs r0, 0x2E
- ldrsh r1, [r6, r0]
- movs r2, 0x34
- ldrsh r0, [r6, r2]
- cmp r1, r0
- ble _080A33AA
- adds r0, r6, 0
- bl DestroyAnimSprite
-_080A33AA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A33B0: .4byte gUnknown_2037F1A
-_080A33B4: .4byte gUnknown_2037F02
- thumb_func_end sub_80A3334
-
- thumb_func_start sub_80A33B8
-sub_80A33B8: @ 80A33B8
- push {r4,r5,lr}
- movs r2, 0x20
- ldrsh r4, [r0, r2]
- lsls r4, 8
- movs r3, 0x22
- ldrsh r2, [r0, r3]
- orrs r4, r2
- movs r5, 0x3A
- ldrsh r2, [r0, r5]
- lsls r2, 8
- movs r5, 0x3C
- ldrsh r3, [r0, r5]
- orrs r2, r3
- lsls r1, 8
- strh r4, [r0, 0x38]
- strh r2, [r0, 0x3A]
- strh r1, [r0, 0x3C]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A33B8
-
- thumb_func_start sub_80A33E0
-sub_80A33E0: @ 80A33E0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r8, r0
- ldrh r0, [r0, 0x38]
- lsrs r1, r0, 8
- mov r10, r1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- mov r1, r8
- ldrh r0, [r1, 0x3A]
- lsrs r2, r0, 8
- lsls r0, 24
- lsrs r4, r0, 24
- ldrh r1, [r1, 0x3C]
- lsls r0, r1, 16
- asrs r0, 24
- lsls r0, 16
- lsrs r6, r0, 16
- movs r3, 0xFF
- ands r3, r1
- cmp r2, 0
- bne _080A341A
- movs r2, 0x20
- negs r2, r2
- b _080A3422
-_080A341A:
- cmp r2, 0xFF
- bne _080A3422
- movs r2, 0x88
- lsls r2, 1
-_080A3422:
- mov r0, r9
- subs r4, r0
- lsls r4, 16
- lsrs r4, 16
- mov r1, r10
- subs r0, r2, r1
- lsls r5, r3, 16
- asrs r5, 16
- muls r0, r5
- lsls r1, r6, 16
- asrs r7, r1, 16
- adds r1, r7, 0
- bl __divsi3
- adds r6, r0, 0
- lsls r4, 16
- asrs r4, 16
- adds r0, r4, 0
- muls r0, r5
- adds r1, r7, 0
- bl __divsi3
- add r6, r10
- mov r1, r8
- strh r6, [r1, 0x20]
- add r0, r9
- strh r0, [r1, 0x22]
- adds r5, 0x1
- lsls r5, 16
- lsrs r3, r5, 16
- asrs r5, 16
- cmp r5, r7
- beq _080A3474
- lsls r1, r7, 8
- lsls r0, r3, 16
- asrs r0, 16
- orrs r0, r1
- mov r1, r8
- strh r0, [r1, 0x3C]
- movs r0, 0
- b _080A3476
-_080A3474:
- movs r0, 0x1
-_080A3476:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80A33E0
-
- thumb_func_start sub_80A3484
-sub_80A3484: @ 80A3484
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0xA
- bne _080A3498
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080A3498:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x32
- ble _080A34AC
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A34AC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A3484
-
- thumb_func_start sub_80A34B4
-sub_80A34B4: @ 80A34B4
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- lsls r0, 7
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __divsi3
- ldrh r1, [r4, 0x2E]
- adds r1, r0
- movs r5, 0
- strh r1, [r4, 0x2E]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- ble _080A34DE
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x2E]
-_080A34DE:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x80
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x30
- ldrsh r2, [r4, r1]
- lsls r2, 3
- movs r1, 0x1E
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Sin
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- bl sub_80A33E0
- lsls r0, 24
- cmp r0, 0
- beq _080A350E
- strh r5, [r4, 0x26]
- strh r5, [r4, 0x2E]
- ldr r0, _080A3514 @ =sub_80A3484
- str r0, [r4, 0x1C]
-_080A350E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A3514: .4byte sub_80A3484
- thumb_func_end sub_80A34B4
-
- thumb_func_start sub_80A3518
-sub_80A3518: @ 80A3518
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0
- bl sub_8075160
- ldr r4, _080A3560 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080A3564 @ =gUnknown_2037F1A
- ldrb r1, [r0]
- movs r0, 0x2
- eors r0, r1
- ldrb r4, [r4]
- cmp r0, r4
- bne _080A3568
- strh r6, [r5, 0x3A]
- adds r0, r2, 0
- adds r0, 0xA
- strh r0, [r5, 0x3C]
- adds r0, r5, 0
- movs r1, 0x3C
- bl sub_80A33B8
- movs r0, 0x1
- b _080A357A
- .align 2, 0
-_080A3560: .4byte gUnknown_2037F1B
-_080A3564: .4byte gUnknown_2037F1A
-_080A3568:
- strh r6, [r5, 0x3A]
- adds r0, r2, 0
- adds r0, 0xA
- strh r0, [r5, 0x3C]
- adds r0, r5, 0
- movs r1, 0x3C
- bl sub_80A33B8
- movs r0, 0x3
-_080A357A:
- strh r0, [r5, 0x34]
- movs r0, 0x3C
- strh r0, [r5, 0x36]
- ldr r0, _080A358C @ =sub_80A34B4
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A358C: .4byte sub_80A34B4
- thumb_func_end sub_80A3518
-
- thumb_func_start sub_80A3590
-sub_80A3590: @ 80A3590
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- lsls r0, 7
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __divsi3
- ldrh r1, [r4, 0x2E]
- adds r1, r0
- movs r5, 0
- strh r1, [r4, 0x2E]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- ble _080A35BA
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x2E]
-_080A35BA:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x80
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x30
- ldrsh r2, [r4, r1]
- lsls r2, 3
- movs r1, 0x1E
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Sin
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- bl sub_80A33E0
- lsls r0, 24
- cmp r0, 0
- beq _080A35EC
- strh r5, [r4, 0x26]
- strh r5, [r4, 0x2E]
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A35EC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A3590
-
- thumb_func_start sub_80A35F4
-sub_80A35F4: @ 80A35F4
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r4, _080A3630 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080A3638
- strh r0, [r5, 0x3A]
- adds r0, r6, 0
- adds r0, 0xA
- strh r0, [r5, 0x3C]
- adds r0, r5, 0
- movs r1, 0x28
- bl sub_80A33B8
- movs r0, 0x3
- strh r0, [r5, 0x34]
- movs r0, 0x3C
- strh r0, [r5, 0x36]
- ldr r0, _080A3634 @ =sub_80A34B4
- b _080A3662
- .align 2, 0
-_080A3630: .4byte gUnknown_2037F1B
-_080A3634: .4byte sub_80A34B4
-_080A3638:
- movs r0, 0xFF
- strh r0, [r5, 0x3A]
- adds r0, r6, 0
- adds r0, 0xA
- strh r0, [r5, 0x3C]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A3650
- movs r0, 0
- strh r0, [r5, 0x3A]
-_080A3650:
- adds r0, r5, 0
- movs r1, 0x28
- bl sub_80A33B8
- movs r0, 0x3
- strh r0, [r5, 0x34]
- movs r0, 0x3C
- strh r0, [r5, 0x36]
- ldr r0, _080A366C @ =sub_80A3590
-_080A3662:
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A366C: .4byte sub_80A3590
- thumb_func_end sub_80A35F4
-
- thumb_func_start sub_80A3670
-sub_80A3670: @ 80A3670
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A368A
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075114
- ldr r0, _080A36B0 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x30]
-_080A368A:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x30]
- muls r0, r1
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080A36AA
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A36AA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A36B0: .4byte gUnknown_2037F02
- thumb_func_end sub_80A3670
-
- thumb_func_start sub_80A36B4
-sub_80A36B4: @ 80A36B4
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0
- bl sub_8075114
- ldr r4, _080A36FC @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080A3700 @ =gUnknown_2037F1B
- ldrb r1, [r0]
- movs r0, 0x2
- eors r0, r1
- ldrb r4, [r4]
- cmp r0, r4
- bne _080A3704
- strh r6, [r5, 0x3A]
- adds r0, r2, 0
- adds r0, 0xA
- strh r0, [r5, 0x3C]
- adds r0, r5, 0
- movs r1, 0x3C
- bl sub_80A33B8
- movs r0, 0x1
- b _080A3716
- .align 2, 0
-_080A36FC: .4byte gUnknown_2037F1A
-_080A3700: .4byte gUnknown_2037F1B
-_080A3704:
- strh r6, [r5, 0x3A]
- adds r0, r2, 0
- adds r0, 0xA
- strh r0, [r5, 0x3C]
- adds r0, r5, 0
- movs r1, 0x3C
- bl sub_80A33B8
- movs r0, 0x3
-_080A3716:
- strh r0, [r5, 0x34]
- movs r0, 0x3C
- strh r0, [r5, 0x36]
- ldr r0, _080A3728 @ =sub_80A372C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A3728: .4byte sub_80A372C
- thumb_func_end sub_80A36B4
-
- thumb_func_start sub_80A372C
-sub_80A372C: @ 80A372C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- lsls r0, 7
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __divsi3
- ldrh r1, [r4, 0x2E]
- adds r1, r0
- movs r5, 0
- strh r1, [r4, 0x2E]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- ble _080A3756
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x2E]
-_080A3756:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x80
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x30
- ldrsh r2, [r4, r1]
- lsls r2, 3
- movs r1, 0x1E
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Sin
- strh r0, [r4, 0x26]
- lsls r0, 16
- cmp r0, 0
- bne _080A378A
- movs r0, 0x3F
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x76
- bl PlaySE12WithPanning
-_080A378A:
- adds r0, r4, 0
- bl sub_80A33E0
- lsls r0, 24
- cmp r0, 0
- beq _080A37B2
- strh r5, [r4, 0x26]
- strh r5, [r4, 0x2E]
- ldr r0, _080A37B8 @ =sub_80A3484
- str r0, [r4, 0x1C]
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x76
- bl PlaySE12WithPanning
-_080A37B2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A37B8: .4byte sub_80A3484
- thumb_func_end sub_80A372C
-
- thumb_func_start sub_80A37BC
-sub_80A37BC: @ 80A37BC
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A3850
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080A37E4
- ldr r0, _080A37E0 @ =gUnknown_2037F02
- ldrh r1, [r0, 0x2]
- strh r1, [r4, 0x30]
- movs r1, 0x78
- strh r1, [r4, 0x20]
- adds r5, r0, 0
- b _080A3806
- .align 2, 0
-_080A37E0: .4byte gUnknown_2037F02
-_080A37E4:
- ldr r0, _080A3840 @ =gUnknown_2037F02
- movs r1, 0x2
- ldrsh r3, [r0, r1]
- adds r1, r3, 0
- subs r1, 0x20
- adds r2, r1, 0
- adds r5, r0, 0
- cmp r1, 0
- bge _080A37FA
- adds r2, r3, 0
- adds r2, 0xDF
-_080A37FA:
- asrs r0, r2, 8
- lsls r0, 8
- subs r0, r1, r0
- strh r0, [r4, 0x30]
- movs r0, 0x46
- strh r0, [r4, 0x20]
-_080A3806:
- ldrh r0, [r5]
- strh r0, [r4, 0x22]
- strh r0, [r4, 0x32]
- movs r0, 0x14
- strh r0, [r4, 0x36]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x3C
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x14
- bl Sin
- strh r0, [r4, 0x26]
- ldr r0, _080A3844 @ =sub_80A3858
- str r0, [r4, 0x1C]
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xBE
- bhi _080A3848
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1F
- b _080A384E
- .align 2, 0
-_080A3840: .4byte gUnknown_2037F02
-_080A3844: .4byte sub_80A3858
-_080A3848:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1D
-_080A384E:
- strb r0, [r1]
-_080A3850:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A37BC
-
- thumb_func_start sub_80A3858
-sub_80A3858: @ 80A3858
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080A386A
- cmp r0, 0x1
- beq _080A389A
- b _080A38BA
-_080A386A:
- ldrh r5, [r4, 0x32]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x4E
- ble _080A3882
- movs r0, 0x1
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _080A38BA
-_080A3882:
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl __divsi3
- adds r0, r5, r0
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x36]
- adds r1, 0x3
- strh r1, [r4, 0x36]
- strh r0, [r4, 0x22]
- b _080A38BA
-_080A389A:
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080A38BA
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080A38BA
- movs r0, 0
- strh r0, [r4, 0x2E]
- strh r0, [r4, 0x32]
- ldr r0, _080A38C0 @ =sub_80A38C4
- str r0, [r4, 0x1C]
-_080A38BA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A38C0: .4byte sub_80A38C4
- thumb_func_end sub_80A3858
-
- thumb_func_start sub_80A38C4
-sub_80A38C4: @ 80A38C4
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, _080A3908 @ =gUnknown_83E2F78
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 1
- adds r3, r0, r1
- adds r0, r5, 0x1
- adds r0, r3, r0
- ldrh r2, [r4, 0x32]
- movs r6, 0x32
- ldrsh r1, [r4, r6]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r1, r0
- bne _080A3910
- adds r0, r5, 0x2
- adds r0, r3, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x7F
- bne _080A38FC
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, _080A390C @ =sub_80A397C
- str r0, [r4, 0x1C]
-_080A38FC:
- movs r0, 0
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080A3976
- .align 2, 0
-_080A3908: .4byte gUnknown_83E2F78
-_080A390C: .4byte sub_80A397C
-_080A3910:
- adds r0, r2, 0x1
- strh r0, [r4, 0x32]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 1
- adds r0, r1
- adds r1, r0, r5
- movs r2, 0
- ldrsb r2, [r1, r2]
- adds r1, r5, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- muls r0, r2
- ldrh r1, [r4, 0x30]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080A395E
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xBE
- bhi _080A3956
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1F
- b _080A395C
-_080A3956:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1D
-_080A395C:
- strb r0, [r1]
-_080A395E:
- movs r6, 0x30
- ldrsh r0, [r4, r6]
- movs r1, 0x3C
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x14
- bl Sin
- strh r0, [r4, 0x26]
-_080A3976:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80A38C4
-
- thumb_func_start sub_80A397C
-sub_80A397C: @ 80A397C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x14
- ble _080A398E
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A398E:
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A397C
-
- thumb_func_start sub_80A39C0
-sub_80A39C0: @ 80A39C0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080A3B14 @ =gTasks
- adds r5, r0, r1
- ldr r4, _080A3B18 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- bl sub_807685C
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- strh r0, [r5, 0x10]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x14]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x16]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8076B2C
- strh r0, [r5, 0x1C]
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8076B2C
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0x1
- bne _080A3A28
- movs r1, 0x1
-_080A3A28:
- strh r1, [r5, 0x12]
- movs r3, 0x12
- ldrsh r0, [r5, r3]
- lsls r0, 6
- movs r1, 0x38
- subs r1, r0
- strh r1, [r5, 0x1A]
- ldrh r0, [r5, 0x16]
- subs r0, r1
- ldrh r1, [r5, 0x14]
- adds r0, r1
- strh r0, [r5, 0x18]
- ldr r0, _080A3B1C @ =gUnknown_83E2FF0
- movs r2, 0x18
- ldrsh r1, [r5, r2]
- movs r3, 0x1A
- ldrsh r2, [r5, r3]
- ldrb r3, [r5, 0x10]
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xC]
- cmp r0, 0x40
- bne _080A3A60
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080A3A60:
- ldr r4, _080A3B20 @ =gSprites
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xA
- strh r1, [r0, 0x2E]
- movs r2, 0xC
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r5, 0x18]
- strh r1, [r0, 0x30]
- movs r3, 0xC
- ldrsh r0, [r5, r3]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- movs r1, 0x1C
- ldrsh r0, [r5, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r3, 0x12
- ldrsh r1, [r5, r3]
- muls r1, r0
- ldrh r0, [r5, 0x14]
- subs r0, r1
- strh r0, [r2, 0x32]
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r5, 0x1A]
- strh r1, [r0, 0x34]
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- movs r2, 0x1E
- ldrsh r0, [r5, r2]
- lsrs r2, r0, 31
- adds r0, r2
- asrs r0, 1
- adds r0, 0xA
- movs r3, 0x12
- ldrsh r2, [r5, r3]
- muls r0, r2
- ldrh r2, [r5, 0x16]
- adds r0, r2
- strh r0, [r1, 0x36]
- movs r3, 0xC
- ldrsh r1, [r5, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl sub_80A3F04
- movs r1, 0xC
- ldrsh r2, [r5, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r0, [r1, 0x38]
- movs r2, 0xC
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl sub_8075068
- ldr r0, _080A3B24 @ =sub_80A3B28
- str r0, [r5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A3B14: .4byte gTasks
-_080A3B18: .4byte gUnknown_2037F1B
-_080A3B1C: .4byte gUnknown_83E2FF0
-_080A3B20: .4byte gSprites
-_080A3B24: .4byte sub_80A3B28
- thumb_func_end sub_80A39C0
-
- thumb_func_start sub_80A3B28
-sub_80A3B28: @ 80A3B28
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080A3B6C @ =gTasks
- adds r6, r0, r1
- movs r0, 0xC
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080A3B70 @ =gSprites
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r5, [r6, r1]
- cmp r5, 0x7
- bne _080A3B50
- b _080A3D80
-_080A3B50:
- cmp r5, 0x7
- bgt _080A3B9E
- cmp r5, 0x3
- bne _080A3B5A
- b _080A3C72
-_080A3B5A:
- cmp r5, 0x3
- bgt _080A3B74
- cmp r5, 0x1
- beq _080A3C04
- cmp r5, 0x1
- bgt _080A3C54
- cmp r5, 0
- beq _080A3BE6
- b _080A3EFC
- .align 2, 0
-_080A3B6C: .4byte gTasks
-_080A3B70: .4byte gSprites
-_080A3B74:
- cmp r5, 0x5
- bne _080A3B7A
- b _080A3CE8
-_080A3B7A:
- cmp r5, 0x5
- ble _080A3B80
- b _080A3D62
-_080A3B80:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_80A3F24
- adds r0, r4, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- bne _080A3B96
- b _080A3EFC
-_080A3B96:
- movs r0, 0x5
- strh r0, [r6, 0x26]
- movs r0, 0xFF
- b _080A3EFA
-_080A3B9E:
- cmp r5, 0xB
- bne _080A3BA4
- b _080A3E64
-_080A3BA4:
- cmp r5, 0xB
- bgt _080A3BD2
- cmp r5, 0x9
- bne _080A3BAE
- b _080A3DD2
-_080A3BAE:
- cmp r5, 0x9
- ble _080A3BB4
- b _080A3E48
-_080A3BB4:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_80A3F24
- adds r0, r4, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- bne _080A3BCA
- b _080A3EFC
-_080A3BCA:
- movs r0, 0x9
- strh r0, [r6, 0x26]
- movs r0, 0xFF
- b _080A3EFA
-_080A3BD2:
- cmp r5, 0xD
- bne _080A3BD8
- b _080A3ED6
-_080A3BD8:
- cmp r5, 0xD
- bge _080A3BDE
- b _080A3EB6
-_080A3BDE:
- cmp r5, 0xFF
- bne _080A3BE4
- b _080A3EE6
-_080A3BE4:
- b _080A3EFC
-_080A3BE6:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_80A3F24
- adds r0, r4, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- bne _080A3BFC
- b _080A3EFC
-_080A3BFC:
- movs r0, 0x1
- strh r0, [r6, 0x26]
- movs r0, 0xFF
- b _080A3EFA
-_080A3C04:
- ldrh r2, [r4, 0x24]
- ldrh r3, [r4, 0x20]
- adds r2, r3
- movs r0, 0
- strh r2, [r4, 0x20]
- ldrh r1, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r1, r3
- strh r1, [r4, 0x22]
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- strh r2, [r4, 0x30]
- ldrh r0, [r6, 0x14]
- strh r0, [r4, 0x32]
- strh r1, [r4, 0x34]
- ldrh r0, [r6, 0x16]
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_80A3F04
- strh r0, [r4, 0x38]
- ldrh r0, [r6, 0x10]
- adds r0, 0x2
- strh r0, [r6, 0x10]
- strh r5, [r6, 0xE]
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl sub_8075068
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _080A3EFA
-_080A3C54:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_80A3F24
- adds r0, r4, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- bne _080A3C6A
- b _080A3EFC
-_080A3C6A:
- movs r0, 0x3
- strh r0, [r6, 0x26]
- movs r0, 0xFF
- b _080A3EFA
-_080A3C72:
- ldrh r1, [r4, 0x24]
- ldrh r0, [r4, 0x20]
- adds r1, r0
- movs r0, 0
- strh r1, [r4, 0x20]
- ldrh r2, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r2, r3
- strh r2, [r4, 0x22]
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- movs r1, 0x1C
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r3, 0x12
- ldrsh r1, [r6, r3]
- muls r1, r0
- ldrh r0, [r6, 0x14]
- subs r0, r1
- strh r0, [r4, 0x32]
- strh r2, [r4, 0x34]
- movs r1, 0x1E
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r2, 0x12
- ldrsh r1, [r6, r2]
- muls r1, r0
- ldrh r0, [r6, 0x16]
- subs r0, r1
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_80A3F04
- strh r0, [r4, 0x38]
- movs r0, 0x2
- strh r0, [r6, 0xE]
- ldrh r0, [r6, 0x10]
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl sub_8075068
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _080A3EFA
-_080A3CE8:
- ldrh r1, [r4, 0x24]
- ldrh r3, [r4, 0x20]
- adds r1, r3
- movs r0, 0
- strh r1, [r4, 0x20]
- ldrh r2, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r2, r3
- strh r2, [r4, 0x22]
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- movs r1, 0x1C
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r3, 0x12
- ldrsh r1, [r6, r3]
- muls r0, r1
- ldrh r1, [r6, 0x14]
- adds r0, r1
- strh r0, [r4, 0x32]
- strh r2, [r4, 0x34]
- movs r2, 0x1E
- ldrsh r0, [r6, r2]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r3, 0x12
- ldrsh r1, [r6, r3]
- muls r0, r1
- ldrh r1, [r6, 0x16]
- adds r0, r1
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_80A3F04
- strh r0, [r4, 0x38]
- ldrh r1, [r6, 0x10]
- subs r1, 0x2
- strh r1, [r6, 0x10]
- movs r0, 0x3
- strh r0, [r6, 0xE]
- adds r0, r4, 0
- adds r0, 0x43
- strb r1, [r0]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl sub_8075068
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _080A3EFA
-_080A3D62:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_80A3F24
- adds r0, r4, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- bne _080A3D78
- b _080A3EFC
-_080A3D78:
- movs r0, 0x7
- strh r0, [r6, 0x26]
- movs r0, 0xFF
- b _080A3EFA
-_080A3D80:
- ldrh r2, [r4, 0x24]
- ldrh r3, [r4, 0x20]
- adds r2, r3
- movs r0, 0
- strh r2, [r4, 0x20]
- ldrh r1, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r1, r3
- strh r1, [r4, 0x22]
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- strh r2, [r4, 0x30]
- ldrh r0, [r6, 0x14]
- strh r0, [r4, 0x32]
- strh r1, [r4, 0x34]
- ldrh r0, [r6, 0x16]
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_80A3F04
- strh r0, [r4, 0x38]
- ldrh r1, [r6, 0x10]
- adds r1, 0x2
- strh r1, [r6, 0x10]
- movs r0, 0x4
- strh r0, [r6, 0xE]
- adds r0, r4, 0
- adds r0, 0x43
- strb r1, [r0]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl sub_8075068
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _080A3EFA
-_080A3DD2:
- ldrh r1, [r4, 0x24]
- ldrh r0, [r4, 0x20]
- adds r1, r0
- movs r0, 0
- strh r1, [r4, 0x20]
- ldrh r2, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r2, r3
- strh r2, [r4, 0x22]
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- movs r1, 0x1C
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r3, 0x12
- ldrsh r1, [r6, r3]
- muls r1, r0
- ldrh r0, [r6, 0x14]
- subs r0, r1
- strh r0, [r4, 0x32]
- strh r2, [r4, 0x34]
- movs r1, 0x1E
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0xA
- movs r2, 0x12
- ldrsh r1, [r6, r2]
- muls r0, r1
- ldrh r3, [r6, 0x16]
- adds r0, r3
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_80A3F04
- strh r0, [r4, 0x38]
- movs r0, 0x5
- strh r0, [r6, 0xE]
- ldrh r0, [r6, 0x10]
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl sub_8075068
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _080A3EFA
-_080A3E48:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_80A3F24
- adds r0, r4, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080A3EFC
- movs r0, 0xB
- strh r0, [r6, 0x26]
- movs r0, 0xFF
- b _080A3EFA
-_080A3E64:
- ldrh r2, [r4, 0x24]
- ldrh r0, [r4, 0x20]
- adds r2, r0
- movs r0, 0
- strh r2, [r4, 0x20]
- ldrh r1, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r1, r3
- strh r1, [r4, 0x22]
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r0, 0xA
- strh r0, [r4, 0x2E]
- strh r2, [r4, 0x30]
- ldrh r0, [r6, 0x18]
- strh r0, [r4, 0x32]
- strh r1, [r4, 0x34]
- ldrh r0, [r6, 0x1A]
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_80A3F04
- strh r0, [r4, 0x38]
- ldrh r1, [r6, 0x10]
- subs r1, 0x2
- strh r1, [r6, 0x10]
- movs r0, 0x6
- strh r0, [r6, 0xE]
- adds r0, r4, 0
- adds r0, 0x43
- strb r1, [r0]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl sub_8075068
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _080A3EFA
-_080A3EB6:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_80A3F24
- adds r0, r4, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080A3EFC
- adds r0, r4, 0
- bl DestroySprite
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- b _080A3EFA
-_080A3ED6:
- movs r1, 0x20
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080A3EFC
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- b _080A3EFC
-_080A3EE6:
- ldrh r0, [r6, 0xA]
- adds r0, 0x1
- strh r0, [r6, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080A3EFC
- movs r0, 0
- strh r0, [r6, 0xA]
- ldrh r0, [r6, 0x26]
-_080A3EFA:
- strh r0, [r6, 0x8]
-_080A3EFC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80A3B28
-
- thumb_func_start sub_80A3F04
-sub_80A3F04: @ 80A3F04
- push {lr}
- movs r2, 0x8
- movs r3, 0x36
- ldrsh r1, [r0, r3]
- movs r3, 0x22
- ldrsh r0, [r0, r3]
- cmp r1, r0
- bge _080A3F1A
- negs r0, r2
- lsls r0, 16
- lsrs r2, r0, 16
-_080A3F1A:
- lsls r0, r2, 16
- asrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_80A3F04
-
- thumb_func_start sub_80A3F24
-sub_80A3F24: @ 80A3F24
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r7, r1, 24
- ldrh r0, [r6, 0x24]
- adds r0, 0x1
- strh r0, [r6, 0x24]
- lsls r0, 16
- cmp r0, 0
- ble _080A3FBA
- movs r0, 0
- strh r0, [r6, 0x24]
- ldr r0, _080A3FC4 @ =gSprites
- mov r8, r0
- movs r2, 0xC
- ldrsh r1, [r6, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrh r1, [r0, 0x24]
- ldrh r2, [r0, 0x20]
- adds r1, r2
- ldrh r2, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r2, r0
- ldr r0, _080A3FC8 @ =gUnknown_83E2FF0
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- ldrb r3, [r6, 0x10]
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080A3FBA
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- mov r0, r8
- adds r4, r5, r0
- strh r7, [r4, 0x3A]
- movs r0, 0xC
- strh r0, [r4, 0x3C]
- ldr r0, _080A3FCC @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- ldrh r2, [r6, 0x22]
- movs r0, 0x1
- ands r0, r2
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x22]
- adds r0, 0x1
- strh r0, [r1, 0x22]
- ldrb r1, [r6, 0xE]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrh r0, [r6, 0x10]
- adds r4, 0x43
- strb r0, [r4]
- mov r0, r8
- adds r0, 0x1C
- adds r5, r0
- ldr r0, _080A3FD0 @ =sub_80A3FD4
- str r0, [r5]
-_080A3FBA:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A3FC4: .4byte gSprites
-_080A3FC8: .4byte gUnknown_83E2FF0
-_080A3FCC: .4byte gTasks
-_080A3FD0: .4byte sub_80A3FD4
- thumb_func_end sub_80A3F24
-
- thumb_func_start sub_80A3FD4
-sub_80A3FD4: @ 80A3FD4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080A4036
- movs r0, 0
- strh r0, [r4, 0x2E]
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080A4036
- ldr r3, _080A403C @ =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_080A4036:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A403C: .4byte gTasks
- thumb_func_end sub_80A3FD4
-
- thumb_func_start sub_80A4040
-sub_80A4040: @ 80A4040
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r0, _080A4054 @ =gUnknown_2037F02
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A405C
- ldr r0, _080A4058 @ =gUnknown_2037F1A
- b _080A405E
- .align 2, 0
-_080A4054: .4byte gUnknown_2037F02
-_080A4058: .4byte gUnknown_2037F1A
-_080A405C:
- ldr r0, _080A407C @ =gUnknown_2037F1B
-_080A405E:
- ldrb r6, [r0]
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A4088
- movs r0, 0
- strh r0, [r4, 0x36]
- ldr r1, _080A4080 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x32]
- ldr r0, _080A4084 @ =0x0000fff0
- b _080A4098
- .align 2, 0
-_080A407C: .4byte gUnknown_2037F1B
-_080A4080: .4byte gUnknown_2037F02
-_080A4084: .4byte 0x0000fff0
-_080A4088:
- movs r0, 0x1
- strh r0, [r4, 0x36]
- ldr r1, _080A40BC @ =gUnknown_2037F02
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r4, 0x32]
- movs r0, 0x80
- lsls r0, 1
-_080A4098:
- strh r0, [r4, 0x20]
- adds r7, r1, 0
- adds r5, r7, 0
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x34]
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080A40CE
- cmp r0, 0x1
- bgt _080A40C0
- cmp r0, 0
- beq _080A40CA
- b _080A4138
- .align 2, 0
-_080A40BC: .4byte gUnknown_2037F02
-_080A40C0:
- cmp r0, 0x2
- beq _080A40D4
- cmp r0, 0x3
- beq _080A4100
- b _080A4138
-_080A40CA:
- ldrh r0, [r5]
- b _080A40E4
-_080A40CE:
- ldrh r0, [r5]
- strh r0, [r4, 0x22]
- b _080A411A
-_080A40D4:
- adds r0, r6, 0
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5]
- adds r0, r5
-_080A40E4:
- strh r0, [r4, 0x22]
- adds r0, r6, 0
- bl sub_8076884
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- b _080A4138
-_080A4100:
- ldr r0, _080A4144 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r7, [r7]
- adds r0, r7
- strh r0, [r4, 0x22]
- movs r0, 0x1
- bl GetAnimBankSpriteId
-_080A411A:
- adds r0, r6, 0
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x5]
-_080A4138:
- ldr r0, _080A4148 @ =sub_80A414C
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4144: .4byte gUnknown_2037F1B
-_080A4148: .4byte sub_80A414C
- thumb_func_end sub_80A4040
-
- thumb_func_start sub_80A414C
-sub_80A414C: @ 80A414C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x3C
- ldrsh r3, [r4, r0]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- movs r1, 0x30
- ldrsh r2, [r4, r1]
- ldr r1, _080A41A0 @ =gSineTable
- movs r5, 0x2E
- ldrsh r0, [r4, r5]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- muls r0, r2
- asrs r0, 8
- strh r0, [r4, 0x26]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- muls r0, r3
- strh r0, [r4, 0x24]
- movs r5, 0x34
- ldrsh r0, [r4, r5]
- muls r0, r3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A41A4
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- movs r5, 0x20
- ldrsh r1, [r4, r5]
- adds r0, r1
- cmp r0, 0xF7
- ble _080A41BC
- b _080A41B6
- .align 2, 0
-_080A41A0: .4byte gSineTable
-_080A41A4:
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- movs r2, 0x20
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r1, 0x10
- negs r1, r1
- cmp r0, r1
- bgt _080A41BC
-_080A41B6:
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080A41BC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A414C
-
- thumb_func_start sub_80A41C4
-sub_80A41C4: @ 80A41C4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080A41E4 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080A41E8
- cmp r0, 0x1
- beq _080A421C
- b _080A4276
- .align 2, 0
-_080A41E4: .4byte gTasks
-_080A41E8:
- ldr r0, _080A4214 @ =0x0000274f
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r2, 0x80
- lsls r2, 1
- adds r4, r2, 0
- adds r0, r4
- strh r0, [r5, 0x18]
- ldr r0, _080A4218 @ =0x000027b0
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- adds r0, r4
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080A4276
- .align 2, 0
-_080A4214: .4byte 0x0000274f
-_080A4218: .4byte 0x000027b0
-_080A421C:
- ldrh r0, [r5, 0x1A]
- adds r0, 0x1
- movs r7, 0
- strh r0, [r5, 0x1A]
- lsls r0, 16
- cmp r0, 0
- blt _080A4276
- strh r7, [r5, 0x1A]
- ldrh r0, [r5, 0x18]
- ldrb r2, [r5, 0x1C]
- ldr r4, _080A4290 @ =gUnknown_83E30F0
- movs r3, 0x1E
- ldrsh r1, [r5, r3]
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- movs r1, 0x10
- bl BlendPalette
- ldrh r0, [r5, 0x20]
- ldrb r2, [r5, 0x1C]
- movs r3, 0x1E
- ldrsh r1, [r5, r3]
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- movs r1, 0x10
- bl BlendPalette
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x11
- bne _080A4276
- strh r7, [r5, 0x1C]
- ldrh r0, [r5, 0x1E]
- adds r0, 0x1
- strh r0, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- bne _080A4276
- strh r7, [r5, 0x1E]
-_080A4276:
- ldr r0, _080A4294 @ =gUnknown_2037F02
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080A428A
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080A428A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4290: .4byte gUnknown_83E30F0
-_080A4294: .4byte gUnknown_2037F02
- thumb_func_end sub_80A41C4
-
- thumb_func_start sub_80A4298
-sub_80A4298: @ 80A4298
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r1, _080A42B0 @ =gUnknown_2037F02
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080A42B4
- adds r0, r6, 0
- bl DestroyAnimSprite
- b _080A438E
- .align 2, 0
-_080A42B0: .4byte gUnknown_2037F02
-_080A42B4:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _080A42C4
- ldr r4, _080A42C0 @ =gUnknown_2037F1A
- b _080A42C6
- .align 2, 0
-_080A42C0: .4byte gUnknown_2037F1A
-_080A42C4:
- ldr r4, _080A4300 @ =gUnknown_2037F1B
-_080A42C6:
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080A4304 @ =gUnknown_2037F02
- ldrh r1, [r0, 0x8]
- strh r1, [r6, 0x2E]
- movs r3, 0x2
- ldrsh r1, [r0, r3]
- adds r7, r0, 0
- cmp r1, 0
- bne _080A4308
- ldrh r0, [r7, 0x4]
- adds r0, r5
- strh r0, [r6, 0x20]
- ldrh r0, [r7, 0x6]
- adds r0, r2
- strh r0, [r6, 0x22]
- strh r5, [r6, 0x38]
- strh r2, [r6, 0x3A]
- b _080A4318
- .align 2, 0
-_080A4300: .4byte gUnknown_2037F1B
-_080A4304: .4byte gUnknown_2037F02
-_080A4308:
- strh r5, [r6, 0x20]
- strh r2, [r6, 0x22]
- ldrh r0, [r7, 0x4]
- adds r0, r5
- strh r0, [r6, 0x38]
- ldrh r0, [r7, 0x6]
- adds r0, r2
- strh r0, [r6, 0x3A]
-_080A4318:
- ldrh r4, [r6, 0x20]
- lsls r0, r4, 4
- strh r0, [r6, 0x30]
- ldrh r5, [r6, 0x22]
- lsls r0, r5, 4
- strh r0, [r6, 0x32]
- movs r1, 0x38
- ldrsh r0, [r6, r1]
- movs r2, 0x20
- ldrsh r1, [r6, r2]
- subs r0, r1
- lsls r0, 4
- movs r3, 0x8
- ldrsh r1, [r7, r3]
- bl __divsi3
- strh r0, [r6, 0x34]
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- movs r2, 0x22
- ldrsh r1, [r6, r2]
- subs r0, r1
- lsls r0, 4
- movs r3, 0x8
- ldrsh r1, [r7, r3]
- bl __divsi3
- strh r0, [r6, 0x36]
- ldrh r0, [r6, 0x38]
- subs r0, r4
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r6, 0x3A]
- subs r1, r5
- lsls r1, 16
- asrs r1, 16
- bl sub_8075B30
- lsls r0, 16
- lsrs r4, r0, 16
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A437A
- ldr r1, _080A4398 @ =0xffff8000
- adds r0, r4, r1
- lsls r0, 16
- lsrs r4, r0, 16
-_080A437A:
- movs r3, 0x80
- lsls r3, 1
- str r4, [sp]
- adds r0, r6, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_8075A1C
- ldr r0, _080A439C @ =sub_80A43A0
- str r0, [r6, 0x1C]
-_080A438E:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4398: .4byte 0xffff8000
-_080A439C: .4byte sub_80A43A0
- thumb_func_end sub_80A4298
-
- thumb_func_start sub_80A43A0
-sub_80A43A0: @ 80A43A0
- push {r4,lr}
- adds r2, r0, 0
- ldrh r3, [r2, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _080A43D0
- ldrh r0, [r2, 0x34]
- ldrh r4, [r2, 0x30]
- adds r0, r4
- strh r0, [r2, 0x30]
- ldrh r1, [r2, 0x36]
- ldrh r4, [r2, 0x32]
- adds r1, r4
- strh r1, [r2, 0x32]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r2, 0x22]
- subs r0, r3, 0x1
- strh r0, [r2, 0x2E]
- b _080A43D6
-_080A43D0:
- adds r0, r2, 0
- bl move_anim_8074EE0
-_080A43D6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A43A0
-
- thumb_func_start sub_80A43DC
-sub_80A43DC: @ 80A43DC
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080A43F2
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080A43F2:
- pop {r0}
- bx r0
- thumb_func_end sub_80A43DC
-
- thumb_func_start sub_80A43F8
-sub_80A43F8: @ 80A43F8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080A4418 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A4420
- ldr r2, _080A441C @ =gUnknown_2037F02
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- b _080A442C
- .align 2, 0
-_080A4418: .4byte gUnknown_2037F1A
-_080A441C: .4byte gUnknown_2037F02
-_080A4420:
- ldr r0, _080A4444 @ =gUnknown_2037F02
- ldrh r1, [r0]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- strh r1, [r4, 0x20]
- ldrh r0, [r0, 0x2]
-_080A442C:
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, _080A4448 @ =sub_8074F6C
- str r0, [r4, 0x1C]
- ldr r1, _080A444C @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4444: .4byte gUnknown_2037F02
-_080A4448: .4byte sub_8074F6C
-_080A444C: .4byte DestroyAnimSprite
- thumb_func_end sub_80A43F8
-
- thumb_func_start sub_80A4450
-sub_80A4450: @ 80A4450
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080A4488 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A446A
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080A446A:
- ldr r0, _080A448C @ =sub_80A43DC
- str r0, [r5, 0x1C]
- ldr r4, _080A4490 @ =gUnknown_2037F02
- movs r0, 0
- ldrsh r1, [r4, r0]
- adds r0, r5, 0
- bl sub_8074FF8
- ldrh r0, [r4, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4488: .4byte gUnknown_2037F1A
-_080A448C: .4byte sub_80A43DC
-_080A4490: .4byte gUnknown_2037F02
- thumb_func_end sub_80A4450
-
- thumb_func_start sub_80A4494
-sub_80A4494: @ 80A4494
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080A44D4 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x38]
- ldrb r1, [r1, 0xC]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- ldr r1, _080A44D8 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A44DC @ =sub_8074E70
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A44D4: .4byte gUnknown_2037F02
-_080A44D8: .4byte move_anim_8074EE0
-_080A44DC: .4byte sub_8074E70
- thumb_func_end sub_80A4494
-
- thumb_func_start sub_80A44E0
-sub_80A44E0: @ 80A44E0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080A4530 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A4514
- ldrh r0, [r5, 0x22]
- adds r0, 0x8
- strh r0, [r5, 0x22]
-_080A4514:
- ldr r0, _080A4534 @ =sub_80A46CC
- str r0, [r5, 0x1C]
- ldr r0, _080A4538 @ =gUnknown_2037F02
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- adds r3, r0, 0
- cmp r1, 0
- bne _080A453C
- ldrh r0, [r3]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- strh r0, [r5, 0x20]
- b _080A4550
- .align 2, 0
-_080A4530: .4byte gUnknown_2037F1B
-_080A4534: .4byte sub_80A46CC
-_080A4538: .4byte gUnknown_2037F02
-_080A453C:
- ldrh r0, [r5, 0x20]
- ldrh r1, [r3]
- subs r0, r1
- strh r0, [r5, 0x20]
- adds r2, r5, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_080A4550:
- ldrh r0, [r3, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- ldr r1, _080A4584 @ =0xfffffc00
- adds r0, r1, 0
- ldrh r2, [r5, 0x30]
- adds r1, r0, r2
- strh r1, [r5, 0x30]
- movs r2, 0x80
- lsls r2, 3
- adds r0, r2, 0
- ldrh r2, [r5, 0x32]
- adds r0, r2
- strh r0, [r5, 0x32]
- ldrh r0, [r3, 0x4]
- strh r0, [r5, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080A457E
- negs r0, r1
- strh r0, [r5, 0x30]
-_080A457E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4584: .4byte 0xfffffc00
- thumb_func_end sub_80A44E0
-
- thumb_func_start sub_80A4588
-sub_80A4588: @ 80A4588
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- ldr r0, _080A45A4 @ =gUnknown_2037F02
- movs r1, 0x6
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- beq _080A45A8
- cmp r0, 0x1
- ble _080A4624
- cmp r0, 0x2
- beq _080A45C8
- b _080A4624
- .align 2, 0
-_080A45A4: .4byte gUnknown_2037F02
-_080A45A8:
- ldr r5, _080A45C4 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r4, 0x2
- eors r0, r4
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r5]
- eors r4, r0
- adds r0, r4, 0
- b _080A4634
- .align 2, 0
-_080A45C4: .4byte gUnknown_2037F1B
-_080A45C8:
- ldr r5, _080A4620 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r5]
- movs r2, 0x2
- mov r8, r2
- mov r1, r8
- eors r0, r1
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080A463E
- ldrb r0, [r5]
- mov r2, r8
- eors r0, r2
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, r7
- lsrs r7, r0, 1
- ldrb r0, [r5]
- mov r1, r8
- eors r0, r1
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- lsrs r4, r0, 1
- b _080A463E
- .align 2, 0
-_080A4620: .4byte gUnknown_2037F1B
-_080A4624:
- ldr r4, _080A4670 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r4]
-_080A4634:
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r4, r0, 24
-_080A463E:
- strh r7, [r6, 0x20]
- strh r4, [r6, 0x22]
- ldr r0, _080A4670 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A4656
- ldrh r0, [r6, 0x22]
- adds r0, 0x8
- strh r0, [r6, 0x22]
-_080A4656:
- ldr r0, _080A4674 @ =sub_80A46CC
- str r0, [r6, 0x1C]
- ldr r0, _080A4678 @ =gUnknown_2037F02
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- adds r3, r0, 0
- cmp r1, 0
- bne _080A467C
- ldrh r0, [r3]
- ldrh r1, [r6, 0x20]
- adds r0, r1
- strh r0, [r6, 0x20]
- b _080A4690
- .align 2, 0
-_080A4670: .4byte gUnknown_2037F1B
-_080A4674: .4byte sub_80A46CC
-_080A4678: .4byte gUnknown_2037F02
-_080A467C:
- ldrh r0, [r6, 0x20]
- ldrh r1, [r3]
- subs r0, r1
- strh r0, [r6, 0x20]
- adds r2, r6, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_080A4690:
- ldrh r0, [r3, 0x2]
- ldrh r2, [r6, 0x22]
- adds r0, r2
- strh r0, [r6, 0x22]
- ldr r1, _080A46C8 @ =0xfffffc00
- adds r0, r1, 0
- ldrh r2, [r6, 0x30]
- adds r1, r0, r2
- strh r1, [r6, 0x30]
- movs r2, 0x80
- lsls r2, 3
- adds r0, r2, 0
- ldrh r2, [r6, 0x32]
- adds r0, r2
- strh r0, [r6, 0x32]
- ldrh r0, [r3, 0x4]
- strh r0, [r6, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080A46BE
- negs r0, r1
- strh r0, [r6, 0x30]
-_080A46BE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A46C8: .4byte 0xfffffc00
- thumb_func_end sub_80A4588
-
- thumb_func_start sub_80A46CC
-sub_80A46CC: @ 80A46CC
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- ldrh r2, [r4, 0x34]
- adds r0, r1, r2
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080A46EE
- adds r0, r1, 0
- adds r0, 0x18
- b _080A46F2
-_080A46EE:
- adds r0, r1, 0
- subs r0, 0x18
-_080A46F2:
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- subs r0, 0x18
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- bne _080A4728
- ldr r1, _080A4730 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- movs r0, 0x3
- strh r0, [r4, 0x2E]
- ldr r0, _080A4734 @ =sub_8074C44
- str r0, [r4, 0x1C]
-_080A4728:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4730: .4byte DestroyAnimSprite
-_080A4734: .4byte sub_8074C44
- thumb_func_end sub_80A46CC
-
- thumb_func_start sub_80A4738
-sub_80A4738: @ 80A4738
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x32]
- movs r2, 0x32
- ldrsh r0, [r5, r2]
- cmp r0, 0x1
- ble _080A47DC
- ldrh r1, [r5, 0x34]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A4794
- adds r3, r5, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r1
- strb r0, [r3]
- ldr r4, _080A4790 @ =gSprites
- movs r0, 0x2E
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r3, [r0]
- adds r1, r2, 0
- ands r1, r3
- strb r1, [r0]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- b _080A47CA
- .align 2, 0
-_080A4790: .4byte gSprites
-_080A4794:
- adds r1, r5, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- ldr r3, _080A47D8 @ =gSprites
- movs r0, 0x2E
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
-_080A47CA:
- movs r0, 0
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- b _080A47E0
- .align 2, 0
-_080A47D8: .4byte gSprites
-_080A47DC:
- adds r0, r1, 0x1
- strh r0, [r5, 0x32]
-_080A47E0:
- movs r1, 0x34
- ldrsh r0, [r5, r1]
- cmp r0, 0xA
- bne _080A4810
- movs r2, 0x2E
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080A4818 @ =gSprites
- adds r0, r4
- bl DestroySprite
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- adds r0, r5, 0
- bl DestroyAnimSprite
-_080A4810:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4818: .4byte gSprites
- thumb_func_end sub_80A4738
-
- thumb_func_start sub_80A481C
-sub_80A481C: @ 80A481C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080A483C @ =gUnknown_2037F02
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x2E]
- ldr r0, _080A4840 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A4844
- ldrh r0, [r5, 0x20]
- ldrh r1, [r4]
- subs r0, r1
- b _080A484A
- .align 2, 0
-_080A483C: .4byte gUnknown_2037F02
-_080A4840: .4byte gUnknown_2037F1A
-_080A4844:
- ldrh r0, [r4]
- ldrh r1, [r5, 0x20]
- adds r0, r1
-_080A484A:
- strh r0, [r5, 0x20]
- ldr r4, _080A4878 @ =gUnknown_2037F02
- ldrb r1, [r4, 0xA]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldrh r0, [r4, 0x6]
- negs r0, r0
- strh r0, [r5, 0x30]
- ldrh r0, [r4, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x34]
- ldr r1, _080A487C @ =sub_80A4880
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4878: .4byte gUnknown_2037F02
-_080A487C: .4byte sub_80A4880
- thumb_func_end sub_80A481C
-
- thumb_func_start sub_80A4880
-sub_80A4880: @ 80A4880
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x64
- bl Cos
- strh r0, [r4, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r1, 0x14
- bl Sin
- strh r0, [r4, 0x26]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x7F
- bgt _080A48AC
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0
- b _080A48B2
-_080A48AC:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0xE
-_080A48B2:
- strb r0, [r1]
- ldrh r0, [r4, 0x30]
- ldrh r2, [r4, 0x2E]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x38]
- adds r0, 0x82
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080A48E8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A48E8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A4880
-
- thumb_func_start sub_80A48F0
-sub_80A48F0: @ 80A48F0
- push {r4-r6,lr}
- adds r5, r0, 0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A4906
- ldr r1, _080A4964 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- adds r0, 0x8
- strh r0, [r1, 0x2]
-_080A4906:
- ldr r6, _080A4968 @ =gUnknown_2037F1A
- ldrb r0, [r6]
- movs r1, 0
- bl sub_8074844
- lsls r0, 24
- ldr r4, _080A4964 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r6]
- movs r1, 0x1
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
- strh r0, [r5, 0x22]
- ldrb r0, [r6]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A4944
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A496C
-_080A4944:
- ldrb r0, [r6]
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r5, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x5]
- b _080A4984
- .align 2, 0
-_080A4964: .4byte gUnknown_2037F02
-_080A4968: .4byte gUnknown_2037F1A
-_080A496C:
- ldrb r0, [r6]
- bl sub_8076884
- 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]
-_080A4984:
- ldr r0, _080A49C8 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0x2E]
- ldr r0, _080A49CC @ =0x00002828
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r5, 0x32]
- movs r4, 0x10
- movs r0, 0x10
- strh r0, [r5, 0x3C]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r0, [r5, 0x3C]
- lsls r1, r0, 8
- subs r4, r0
- orrs r1, r4
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, _080A49D0 @ =sub_80A49D4
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A49C8: .4byte gUnknown_2037F02
-_080A49CC: .4byte 0x00002828
-_080A49D0: .4byte sub_80A49D4
- thumb_func_end sub_80A48F0
-
- thumb_func_start sub_80A49D4
-sub_80A49D4: @ 80A49D4
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x38]
- adds r0, 0x60
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080A4A32
- movs r0, 0
- strh r0, [r4, 0x30]
- ldr r1, _080A4A7C @ =gPlttBufferFaded
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- adds r0, 0x1
- lsls r0, 1
- adds r0, r1
- ldrh r5, [r0]
- movs r2, 0
- adds r6, r1, 0
- adds r3, r6, 0
-_080A4A0C:
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- adds r2, 0x1
- adds r0, r2
- lsls r1, r0, 1
- adds r1, r3
- adds r0, 0x1
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r1]
- cmp r2, 0x5
- ble _080A4A0C
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- adds r0, 0x7
- lsls r0, 1
- adds r0, r6
- strh r5, [r0]
-_080A4A32:
- ldrh r2, [r4, 0x3C]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- ble _080A4A6C
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- ble _080A4A80
- ldrh r0, [r4, 0x3A]
- adds r0, 0x1
- strh r0, [r4, 0x3A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080A4A6C
- movs r0, 0
- strh r0, [r4, 0x3A]
- subs r2, 0x1
- strh r2, [r4, 0x3C]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
-_080A4A6C:
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080A4A80
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- b _080A4AC2
- .align 2, 0
-_080A4A7C: .4byte gPlttBufferFaded
-_080A4A80:
- ldrh r0, [r4, 0x3A]
- adds r0, 0x1
- strh r0, [r4, 0x3A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080A4AC2
- movs r0, 0
- strh r0, [r4, 0x3A]
- ldrh r2, [r4, 0x3C]
- adds r2, 0x1
- strh r2, [r4, 0x3C]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _080A4AC2
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080A4AC8 @ =sub_8074F88
- str r0, [r4, 0x1C]
-_080A4AC2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4AC8: .4byte sub_8074F88
- thumb_func_end sub_80A49D4
-
- thumb_func_start sub_80A4ACC
-sub_80A4ACC: @ 80A4ACC
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r6, _080A4B2C @ =gUnknown_2037F1B
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r4, 0x20]
- ldrb r0, [r6]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080A4B30 @ =0x0000ffe8
- adds r0, r1
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x2E]
- strh r5, [r4, 0x30]
- strh r5, [r4, 0x32]
- strh r5, [r4, 0x34]
- strh r5, [r4, 0x36]
- strh r5, [r4, 0x3A]
- movs r0, 0x10
- strh r0, [r4, 0x3C]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r4, 0x3C]
- lsls r1, 8
- ldrh r0, [r4, 0x3A]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, _080A4B34 @ =sub_80A4B38
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4B2C: .4byte gUnknown_2037F1B
-_080A4B30: .4byte 0x0000ffe8
-_080A4B34: .4byte sub_80A4B38
- thumb_func_end sub_80A4ACC
-
- thumb_func_start sub_80A4B38
-sub_80A4B38: @ 80A4B38
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080A4B46
- b _080A4C90
-_080A4B46:
- lsls r0, 2
- ldr r1, _080A4B50 @ =_080A4B54
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080A4B50: .4byte _080A4B54
- .align 2, 0
-_080A4B54:
- .4byte _080A4B68
- .4byte _080A4BCC
- .4byte _080A4BE8
- .4byte _080A4C66
- .4byte _080A4C7A
-_080A4B68:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- cmp r0, 0
- bgt _080A4B76
- b _080A4C90
-_080A4B76:
- movs r0, 0
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A4B98
- ldrh r1, [r4, 0x3A]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080A4BA6
- adds r0, r1, 0x1
- strh r0, [r4, 0x3A]
- b _080A4BA6
-_080A4B98:
- ldrh r1, [r4, 0x3C]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080A4BA6
- subs r0, r1, 0x1
- strh r0, [r4, 0x3C]
-_080A4BA6:
- ldrh r1, [r4, 0x3C]
- lsls r1, 8
- ldrh r0, [r4, 0x3A]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _080A4C90
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080A4C90
- strh r0, [r4, 0x30]
- b _080A4C72
-_080A4BCC:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080A4C90
- movs r0, 0
- strh r0, [r4, 0x30]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _080A4C72
-_080A4BE8:
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0x4
- bl sub_80A4C98
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080A4C0A
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
-_080A4C0A:
- ldrh r0, [r4, 0x32]
- adds r1, r0, 0x1
- strh r1, [r4, 0x32]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x1D
- ble _080A4C90
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080A4C30
- ldrh r1, [r4, 0x3A]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080A4C3E
- subs r0, r1, 0x1
- strh r0, [r4, 0x3A]
- b _080A4C3E
-_080A4C30:
- ldrh r1, [r4, 0x3C]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080A4C3E
- adds r0, r1, 0x1
- strh r0, [r4, 0x3C]
-_080A4C3E:
- ldrh r1, [r4, 0x3C]
- lsls r1, 8
- ldrh r0, [r4, 0x3A]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- cmp r1, 0
- bne _080A4C90
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0x10
- bne _080A4C90
- strh r1, [r4, 0x30]
- strh r1, [r4, 0x32]
- b _080A4C72
-_080A4C66:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_080A4C72:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080A4C90
-_080A4C7A:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A4C90:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A4B38
-
- thumb_func_start sub_80A4C98
-sub_80A4C98: @ 80A4C98
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0xB
- bgt _080A4CAA
- ldrh r0, [r4, 0x36]
- adds r0, 0x2
- strh r0, [r4, 0x36]
-_080A4CAA:
- ldrh r5, [r4, 0x34]
- adds r0, r5, 0
- subs r0, 0x12
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- cmp r0, 0x17
- bhi _080A4CC0
- ldrh r0, [r4, 0x36]
- subs r0, 0x2
- strh r0, [r4, 0x36]
-_080A4CC0:
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x2F
- ble _080A4CCE
- ldrh r0, [r4, 0x36]
- adds r0, 0x2
- strh r0, [r4, 0x36]
-_080A4CCE:
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0x9
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0xE
- bl __divsi3
- strh r0, [r4, 0x26]
- lsls r0, 16
- cmp r0, 0
- bge _080A4CF4
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0x26]
-_080A4CF4:
- adds r0, r5, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3B
- ble _080A4D04
- movs r0, 0
- strh r0, [r4, 0x34]
-_080A4D04:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A4C98
-
- thumb_func_start sub_80A4D0C
-sub_80A4D0C: @ 80A4D0C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080A4D50 @ =gUnknown_2037F02
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A4D20
- adds r0, r4, 0
- bl sub_8074FCC
-_080A4D20:
- movs r0, 0
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl sub_8074FF8
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0xA]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x32]
- ldr r1, _080A4D54 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A4D58 @ =sub_8074D00
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4D50: .4byte gUnknown_2037F02
-_080A4D54: .4byte DestroyAnimSprite
-_080A4D58: .4byte sub_8074D00
- thumb_func_end sub_80A4D0C
-
- thumb_func_start sub_80A4D5C
-sub_80A4D5C: @ 80A4D5C
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, _080A4D70 @ =gUnknown_2037F02
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A4D78
- ldr r0, _080A4D74 @ =gUnknown_2037F1A
- b _080A4D7A
- .align 2, 0
-_080A4D70: .4byte gUnknown_2037F02
-_080A4D74: .4byte gUnknown_2037F1A
-_080A4D78:
- ldr r0, _080A4DBC @ =gUnknown_2037F1B
-_080A4D7A:
- ldrb r6, [r0]
- bl sub_8075290
- lsls r0, 24
- cmp r0, 0
- beq _080A4DC4
- movs r1, 0x2
- adds r0, r6, 0
- eors r0, r1
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080A4DC4
- ldr r4, _080A4DC0 @ =gUnknown_2037F02
- ldrb r1, [r4, 0xC]
- adds r2, r5, 0
- adds r2, 0x20
- adds r3, r5, 0
- adds r3, 0x22
- adds r0, r6, 0
- bl sub_8076D9C
- movs r2, 0
- ldrsh r1, [r4, r2]
- adds r0, r5, 0
- bl sub_8074FF8
- ldrh r0, [r4, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- b _080A4E14
- .align 2, 0
-_080A4DBC: .4byte gUnknown_2037F1B
-_080A4DC0: .4byte gUnknown_2037F02
-_080A4DC4:
- ldr r4, _080A4DE4 @ =gUnknown_2037F02
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080A4DE8
- adds r0, r6, 0
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- adds r0, r6, 0
- movs r1, 0x1
- b _080A4DFA
- .align 2, 0
-_080A4DE4: .4byte gUnknown_2037F02
-_080A4DE8:
- adds r0, r6, 0
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- adds r0, r6, 0
- movs r1, 0x3
-_080A4DFA:
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
- strh r0, [r5, 0x22]
- ldr r0, _080A4E34 @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r0, r5, 0
- bl sub_8074FF8
-_080A4E14:
- ldr r1, _080A4E34 @ =gUnknown_2037F02
- ldrh r0, [r1, 0xA]
- strh r0, [r5, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r5, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r5, 0x32]
- ldr r1, _080A4E38 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A4E3C @ =sub_8074D00
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4E34: .4byte gUnknown_2037F02
-_080A4E38: .4byte DestroyAnimSprite
-_080A4E3C: .4byte sub_8074D00
- thumb_func_end sub_80A4D5C
-
- thumb_func_start sub_80A4E40
-sub_80A4E40: @ 80A4E40
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8074FCC
- ldr r0, _080A4E6C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A4E74
- ldr r0, _080A4E70 @ =gUnknown_2037F02
- ldrh r1, [r0]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- strh r1, [r4, 0x20]
- ldrh r0, [r0, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- b _080A4E8E
- .align 2, 0
-_080A4E6C: .4byte gUnknown_2037F1A
-_080A4E70: .4byte gUnknown_2037F02
-_080A4E74:
- ldr r2, _080A4E98 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080A4E8E:
- ldr r0, _080A4E9C @ =sub_80A4EA0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4E98: .4byte gUnknown_2037F02
-_080A4E9C: .4byte sub_80A4EA0
- thumb_func_end sub_80A4E40
-
- thumb_func_start sub_80A4EA0
-sub_80A4EA0: @ 80A4EA0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- ble _080A4ED8
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r0, 0x1E
- subs r0, r1
- movs r1, 0x3
- bl __divsi3
- strh r0, [r4, 0x26]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- lsls r0, 18
- asrs r0, 16
- movs r1, 0x3
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
-_080A4ED8:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080A4EEC
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A4EEC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A4EA0
-
- thumb_func_start sub_80A4EF4
-sub_80A4EF4: @ 80A4EF4
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8074FCC
- ldr r0, _080A4F24 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A4F2C
- ldr r1, _080A4F28 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- movs r0, 0x1
- strh r0, [r4, 0x34]
- b _080A4F4A
- .align 2, 0
-_080A4F24: .4byte gUnknown_2037F1A
-_080A4F28: .4byte gUnknown_2037F02
-_080A4F2C:
- ldr r2, _080A4F54 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldr r0, _080A4F58 @ =0x0000ffff
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080A4F4A:
- ldr r0, _080A4F5C @ =sub_80A4F60
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A4F54: .4byte gUnknown_2037F02
-_080A4F58: .4byte 0x0000ffff
-_080A4F5C: .4byte sub_80A4F60
- thumb_func_end sub_80A4EF4
-
- thumb_func_start sub_80A4F60
-sub_80A4F60: @ 80A4F60
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x28
- bl __divsi3
- negs r0, r0
- strh r0, [r4, 0x26]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- lsls r0, 1
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x30]
- ldrh r2, [r4, 0x2E]
- adds r1, r0, r2
- strh r1, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _080A4FA4
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080A4FA4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A4F60
-
- thumb_func_start sub_80A4FAC
-sub_80A4FAC: @ 80A4FAC
- push {lr}
- ldrh r1, [r0, 0x20]
- subs r1, 0x20
- strh r1, [r0, 0x20]
- ldrh r1, [r0, 0x22]
- subs r1, 0x20
- strh r1, [r0, 0x22]
- movs r1, 0x14
- strh r1, [r0, 0x2E]
- ldr r1, _080A4FCC @ =sub_8074C44
- str r1, [r0, 0x1C]
- ldr r1, _080A4FD0 @ =sub_80A4FD4
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .align 2, 0
-_080A4FCC: .4byte sub_8074C44
-_080A4FD0: .4byte sub_80A4FD4
- thumb_func_end sub_80A4FAC
-
- thumb_func_start sub_80A4FD4
-sub_80A4FD4: @ 80A4FD4
- push {r4-r6,lr}
- adds r5, r0, 0
- ldrh r6, [r5, 0x38]
- movs r1, 0x1
- adds r0, r1, 0
- ands r0, r6
- cmp r0, 0
- beq _080A4FEA
- cmp r0, 0x1
- beq _080A5004
- b _080A506A
-_080A4FEA:
- strh r1, [r5, 0x2E]
- ldr r0, _080A4FFC @ =sub_8074C44
- str r0, [r5, 0x1C]
- ldr r1, _080A5000 @ =sub_80A4FD4
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- b _080A506A
- .align 2, 0
-_080A4FFC: .4byte sub_8074C44
-_080A5000: .4byte sub_80A4FD4
-_080A5004:
- ldrh r3, [r5, 0x24]
- ldrh r0, [r5, 0x20]
- adds r3, r0
- movs r0, 0
- strh r3, [r5, 0x20]
- ldrh r4, [r5, 0x26]
- ldrh r1, [r5, 0x22]
- adds r4, r1
- strh r4, [r5, 0x22]
- strh r0, [r5, 0x26]
- strh r0, [r5, 0x24]
- movs r0, 0x8
- strh r0, [r5, 0x2E]
- ldr r2, _080A5078 @ =gUnknown_83E3548
- lsls r0, r6, 16
- asrs r0, 24
- lsls r0, 1
- adds r1, r0, r2
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- adds r3, r1
- strh r3, [r5, 0x32]
- adds r2, 0x1
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r4, r0
- strh r4, [r5, 0x36]
- ldr r0, _080A507C @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _080A5080 @ =sub_80A5084
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r5, 0x38]
- adds r0, r1
- strh r0, [r5, 0x38]
- movs r0, 0x3F
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xCB
- bl PlaySE12WithPanning
-_080A506A:
- ldrh r0, [r5, 0x38]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r5, 0x38]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5078: .4byte gUnknown_83E3548
-_080A507C: .4byte sub_8075590
-_080A5080: .4byte sub_80A5084
- thumb_func_end sub_80A4FD4
-
- thumb_func_start sub_80A5084
-sub_80A5084: @ 80A5084
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x38]
- lsls r0, 16
- asrs r0, 24
- cmp r0, 0x4
- bne _080A50AC
- movs r0, 0xA
- strh r0, [r2, 0x2E]
- ldr r0, _080A50A4 @ =sub_8074C44
- str r0, [r2, 0x1C]
- ldr r1, _080A50A8 @ =sub_80A50B8
- adds r0, r2, 0
- bl StoreSpriteCallbackInData6
- b _080A50B0
- .align 2, 0
-_080A50A4: .4byte sub_8074C44
-_080A50A8: .4byte sub_80A50B8
-_080A50AC:
- ldr r0, _080A50B4 @ =sub_80A4FD4
- str r0, [r2, 0x1C]
-_080A50B0:
- pop {r0}
- bx r0
- .align 2, 0
-_080A50B4: .4byte sub_80A4FD4
- thumb_func_end sub_80A5084
-
- thumb_func_start sub_80A50B8
-sub_80A50B8: @ 80A50B8
- push {r4-r7,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x6]
- cmp r1, 0
- bne _080A50E0
- movs r0, 0x3
- strh r0, [r5, 0x2E]
- strh r1, [r5, 0x30]
- strh r1, [r5, 0x32]
- ldr r0, _080A50D8 @ =sub_8074C44
- str r0, [r5, 0x1C]
- ldr r1, _080A50DC @ =sub_80A5174
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- b _080A5160
- .align 2, 0
-_080A50D8: .4byte sub_8074C44
-_080A50DC: .4byte sub_80A5174
-_080A50E0:
- ldrh r0, [r5, 0x6]
- cmp r0, 0x2
- beq _080A5100
- cmp r0, 0x2
- bgt _080A50F0
- cmp r0, 0x1
- beq _080A50F6
- b _080A5114
-_080A50F0:
- cmp r0, 0x3
- beq _080A5108
- b _080A5114
-_080A50F6:
- ldr r6, _080A50FC @ =0x0000fff8
- adds r7, r6, 0
- b _080A5118
- .align 2, 0
-_080A50FC: .4byte 0x0000fff8
-_080A5100:
- ldr r7, _080A5104 @ =0x0000fff8
- b _080A5116
- .align 2, 0
-_080A5104: .4byte 0x0000fff8
-_080A5108:
- movs r7, 0x8
- ldr r6, _080A5110 @ =0x0000fff8
- b _080A5118
- .align 2, 0
-_080A5110: .4byte 0x0000fff8
-_080A5114:
- movs r7, 0x8
-_080A5116:
- movs r6, 0x8
-_080A5118:
- ldrh r0, [r5, 0x24]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x26]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- strh r1, [r5, 0x26]
- strh r1, [r5, 0x24]
- movs r0, 0x6
- strh r0, [r5, 0x2E]
- ldr r4, _080A5168 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, r7
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- strh r0, [r5, 0x36]
- ldr r0, _080A516C @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _080A5170 @ =sub_80A5220
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
-_080A5160:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5168: .4byte gUnknown_2037F1B
-_080A516C: .4byte sub_8075590
-_080A5170: .4byte sub_80A5220
- thumb_func_end sub_80A50B8
-
- thumb_func_start sub_80A5174
-sub_80A5174: @ 80A5174
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A5194
- ldrh r0, [r4, 0x30]
- adds r0, 0x3
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080A51A4
- movs r0, 0x10
- b _080A51A2
-_080A5194:
- ldrh r0, [r4, 0x30]
- subs r0, 0x3
- strh r0, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- bge _080A51A4
- movs r0, 0
-_080A51A2:
- strh r0, [r4, 0x30]
-_080A51A4:
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x1
- bl sub_8075BE8
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080A5200 @ =0x00007fff
- bl BlendPalettes
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- cmp r0, 0x10
- bne _080A520C
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- ldrb r1, [r4, 0x5]
- lsrs r1, 4
- lsls r0, r1, 5
- ldr r2, _080A5204 @ =gPlttBufferUnfaded + 0x210
- adds r0, r2
- lsls r1, 4
- ldr r3, _080A5208 @ =0x00000101
- adds r2, r3, 0
- orrs r1, r2
- movs r2, 0x4
- bl LoadPalette
- movs r0, 0x3F
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xB9
- bl PlaySE12WithPanning
- b _080A5214
- .align 2, 0
-_080A5200: .4byte 0x00007fff
-_080A5204: .4byte gPlttBufferUnfaded + 0x210
-_080A5208: .4byte 0x00000101
-_080A520C:
- cmp r0, 0
- bne _080A5214
- ldr r0, _080A521C @ =sub_80A5220
- str r0, [r4, 0x1C]
-_080A5214:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A521C: .4byte sub_80A5220
- thumb_func_end sub_80A5174
-
- thumb_func_start sub_80A5220
-sub_80A5220: @ 80A5220
- push {lr}
- adds r2, r0, 0
- ldr r0, _080A523C @ =gUnknown_2037F02
- ldrh r1, [r0, 0xE]
- ldr r0, _080A5240 @ =0x0000ffff
- cmp r1, r0
- bne _080A5238
- movs r0, 0
- strh r0, [r2, 0x30]
- strh r0, [r2, 0x2E]
- ldr r0, _080A5244 @ =sub_80A5248
- str r0, [r2, 0x1C]
-_080A5238:
- pop {r0}
- bx r0
- .align 2, 0
-_080A523C: .4byte gUnknown_2037F02
-_080A5240: .4byte 0x0000ffff
-_080A5244: .4byte sub_80A5248
- thumb_func_end sub_80A5220
-
- thumb_func_start sub_80A5248
-sub_80A5248: @ 80A5248
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _080A527C
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080A527C:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- bne _080A5290
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A5290:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A5248
-
- thumb_func_start sub_80A5298
-sub_80A5298: @ 80A5298
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, _080A52B8 @ =gUnknown_2037F02
- ldrh r0, [r0]
- strh r0, [r3, 0x6]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080A52BC
- ldrh r0, [r3, 0x20]
- subs r0, 0x18
- strh r0, [r3, 0x20]
- ldrh r0, [r3, 0x22]
- subs r0, 0x18
- strh r0, [r3, 0x22]
- b _080A530E
- .align 2, 0
-_080A52B8: .4byte gUnknown_2037F02
-_080A52BC:
- cmp r0, 0x2
- bne _080A52D8
- ldrh r0, [r3, 0x20]
- subs r0, 0x18
- strh r0, [r3, 0x20]
- ldrh r0, [r3, 0x22]
- adds r0, 0x18
- strh r0, [r3, 0x22]
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x20
- b _080A530A
-_080A52D8:
- cmp r0, 0x3
- bne _080A52F4
- ldrh r0, [r3, 0x20]
- adds r0, 0x18
- strh r0, [r3, 0x20]
- ldrh r0, [r3, 0x22]
- subs r0, 0x18
- strh r0, [r3, 0x22]
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x10
- b _080A530A
-_080A52F4:
- ldrh r0, [r3, 0x20]
- adds r0, 0x18
- strh r0, [r3, 0x20]
- ldrh r0, [r3, 0x22]
- adds r0, 0x18
- strh r0, [r3, 0x22]
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x30
-_080A530A:
- orrs r0, r1
- strb r0, [r3, 0x3]
-_080A530E:
- ldrh r2, [r3, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x10
- ldr r4, _080A5334 @ =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, _080A5338 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- ldr r1, _080A533C @ =sub_80A4FAC
- str r1, [r3, 0x1C]
- adds r0, r3, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5334: .4byte 0x000003ff
-_080A5338: .4byte 0xfffffc00
-_080A533C: .4byte sub_80A4FAC
- thumb_func_end sub_80A5298
-
- thumb_func_start sub_80A5340
-sub_80A5340: @ 80A5340
- push {lr}
- adds r3, r0, 0
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0
- strh r0, [r3, 0x2E]
- ldr r0, _080A5368 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- beq _080A537C
- cmp r0, 0x1
- bgt _080A536C
- cmp r0, 0
- beq _080A5372
- b _080A538C
- .align 2, 0
-_080A5368: .4byte gUnknown_2037F02
-_080A536C:
- cmp r0, 0x2
- beq _080A5384
- b _080A538C
-_080A5372:
- ldr r0, _080A5378 @ =sub_80A5398
- b _080A538E
- .align 2, 0
-_080A5378: .4byte sub_80A5398
-_080A537C:
- ldr r0, _080A5380 @ =sub_80A5474
- b _080A538E
- .align 2, 0
-_080A5380: .4byte sub_80A5474
-_080A5384:
- ldr r0, _080A5388 @ =sub_80A54C4
- b _080A538E
- .align 2, 0
-_080A5388: .4byte sub_80A54C4
-_080A538C:
- ldr r0, _080A5394 @ =sub_80A5584
-_080A538E:
- str r0, [r3, 0x1C]
- pop {r0}
- bx r0
- .align 2, 0
-_080A5394: .4byte sub_80A5584
- thumb_func_end sub_80A5340
-
- thumb_func_start sub_80A5398
-sub_80A5398: @ 80A5398
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- strh r0, [r4, 0x2E]
- ldr r5, _080A53D8 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- movs r2, 0x2
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- beq _080A53B6
- movs r1, 0x2
-_080A53B6:
- strh r1, [r4, 0x30]
- movs r0, 0
- strh r0, [r4, 0x32]
- ldr r1, _080A53DC @ =gUnknown_2023D44
- ldrb r0, [r5]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r4, 0x34]
- ldr r1, _080A53E0 @ =sub_80A53E8
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A53E4 @ =sub_8074DC4
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A53D8: .4byte gUnknown_2037F1A
-_080A53DC: .4byte gUnknown_2023D44
-_080A53E0: .4byte sub_80A53E8
-_080A53E4: .4byte sub_8074DC4
- thumb_func_end sub_80A5398
-
- thumb_func_start sub_80A53E8
-sub_80A53E8: @ 80A53E8
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r0, 0x2E
- ldrsh r6, [r5, r0]
- cmp r6, 0
- bne _080A5424
- ldr r1, _080A5464 @ =gUnknown_2023D44
- ldr r4, _080A5468 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r5, 0x34]
- movs r1, 0
- bl sub_80758E0
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x3A]
- ldr r2, _080A546C @ =0xfffffd00
- adds r1, r2, 0
- cmp r0, 0
- beq _080A5420
- movs r0, 0xC0
- lsls r0, 2
- adds r1, r0, 0
-_080A5420:
- strh r1, [r5, 0x36]
- strh r6, [r5, 0x38]
-_080A5424:
- ldrh r0, [r5, 0x36]
- ldrh r1, [r5, 0x38]
- adds r0, r1
- strh r0, [r5, 0x38]
- ldrh r0, [r5, 0x34]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r5, 0x38]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r5, 0x34]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80759DC
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080A545E
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldr r0, _080A5470 @ =sub_80A5584
- str r0, [r5, 0x1C]
-_080A545E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5464: .4byte gUnknown_2023D44
-_080A5468: .4byte gUnknown_2037F1A
-_080A546C: .4byte 0xfffffd00
-_080A5470: .4byte sub_80A5584
- thumb_func_end sub_80A53E8
-
- thumb_func_start sub_80A5474
-sub_80A5474: @ 80A5474
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x4
- strh r0, [r4, 0x2E]
- ldr r5, _080A54B4 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0x3
- cmp r0, 0
- beq _080A5492
- movs r0, 0x3
- negs r0, r0
- adds r1, r0, 0
-_080A5492:
- strh r1, [r4, 0x30]
- movs r0, 0
- strh r0, [r4, 0x32]
- ldr r1, _080A54B8 @ =gUnknown_2023D44
- ldrb r0, [r5]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r4, 0x34]
- ldr r1, _080A54BC @ =sub_80A5584
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A54C0 @ =sub_8074DC4
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A54B4: .4byte gUnknown_2037F1A
-_080A54B8: .4byte gUnknown_2023D44
-_080A54BC: .4byte sub_80A5584
-_080A54C0: .4byte sub_8074DC4
- thumb_func_end sub_80A5474
-
- thumb_func_start sub_80A54C4
-sub_80A54C4: @ 80A54C4
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080A54DE
- movs r0, 0
- strh r0, [r1, 0x2E]
- ldr r0, _080A54E4 @ =sub_80A54E8
- str r0, [r1, 0x1C]
-_080A54DE:
- pop {r0}
- bx r0
- .align 2, 0
-_080A54E4: .4byte sub_80A54E8
- thumb_func_end sub_80A54C4
-
- thumb_func_start sub_80A54E8
-sub_80A54E8: @ 80A54E8
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A5538
- ldr r1, _080A5524 @ =gUnknown_2023D44
- ldr r4, _080A5528 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x3A]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A552C
- movs r0, 0xFC
- lsls r0, 8
- strh r0, [r5, 0x36]
- movs r0, 0xC0
- lsls r0, 4
- b _080A5536
- .align 2, 0
-_080A5524: .4byte gUnknown_2023D44
-_080A5528: .4byte gUnknown_2037F1A
-_080A552C:
- movs r0, 0x80
- lsls r0, 3
- strh r0, [r5, 0x36]
- movs r0, 0xF4
- lsls r0, 8
-_080A5536:
- strh r0, [r5, 0x38]
-_080A5538:
- ldrh r0, [r5, 0x36]
- ldrh r1, [r5, 0x38]
- adds r0, r1
- strh r0, [r5, 0x38]
- ldrh r0, [r5, 0x34]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r5, 0x38]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r5, 0x34]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80759DC
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080A5578
- ldrh r0, [r5, 0x34]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8075980
- ldr r0, _080A5580 @ =sub_80A5584
- str r0, [r5, 0x1C]
-_080A5578:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5580: .4byte sub_80A5584
- thumb_func_end sub_80A54E8
-
- thumb_func_start sub_80A5584
-sub_80A5584: @ 80A5584
- push {lr}
- bl DestroyAnimSprite
- pop {r0}
- bx r0
- thumb_func_end sub_80A5584
-
- thumb_func_start sub_80A5590
-sub_80A5590: @ 80A5590
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldr r1, _080A559C @ =sub_80A55A0
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080A559C: .4byte sub_80A55A0
- thumb_func_end sub_80A5590
-
- thumb_func_start sub_80A55A0
-sub_80A55A0: @ 80A55A0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _080A55FA
- cmp r5, 0x1
- bgt _080A55B6
- cmp r5, 0
- beq _080A55BC
- b _080A568E
-_080A55B6:
- cmp r5, 0x2
- beq _080A564C
- b _080A568E
-_080A55BC:
- strh r5, [r4, 0x30]
- ldr r1, _080A5640 @ =gUnknown_2023D44
- ldr r2, _080A5644 @ =gUnknown_2037F1A
- ldrb r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r4, 0x32]
- ldrb r0, [r2]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x34]
- ldr r2, _080A5648 @ =0xfffffe00
- adds r1, r2, 0
- cmp r0, 0
- beq _080A55E4
- movs r0, 0x80
- lsls r0, 2
- adds r1, r0, 0
-_080A55E4:
- strh r1, [r4, 0x36]
- strh r5, [r4, 0x38]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_80758E0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_080A55FA:
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x38]
- adds r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0x38]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80759DC
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080A568E
- movs r0, 0
- strh r0, [r4, 0x30]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- negs r0, r0
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080A568E
- .align 2, 0
-_080A5640: .4byte gUnknown_2023D44
-_080A5644: .4byte gUnknown_2037F1A
-_080A5648: .4byte 0xfffffe00
-_080A564C:
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x38]
- adds r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0x38]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80759DC
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080A568E
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8075980
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A568E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A55A0
-
- thumb_func_start sub_80A5694
-sub_80A5694: @ 80A5694
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080A56D8 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldr r1, _080A56DC @ =gUnknown_2023D44
- ldr r2, _080A56E0 @ =gUnknown_2037F1A
- ldrb r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- movs r4, 0
- strh r0, [r5, 0x8]
- ldrb r0, [r2]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r2, r0, 24
- strh r2, [r5, 0xA]
- strh r4, [r5, 0xC]
- ldr r0, _080A56E4 @ =gUnknown_2037F02
- movs r3, 0
- ldrsh r1, [r0, r3]
- cmp r1, 0
- beq _080A56E8
- cmp r1, 0x1
- beq _080A5704
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- b _080A5722
- .align 2, 0
-_080A56D8: .4byte gTasks
-_080A56DC: .4byte gUnknown_2023D44
-_080A56E0: .4byte gUnknown_2037F1A
-_080A56E4: .4byte gUnknown_2037F02
-_080A56E8:
- strh r1, [r5, 0xC]
- movs r0, 0x8
- strh r0, [r5, 0xE]
- strh r1, [r5, 0x10]
- movs r0, 0x3
- strh r0, [r5, 0x12]
- cmp r2, 0
- bne _080A56FC
- negs r0, r0
- strh r0, [r5, 0x12]
-_080A56FC:
- ldr r0, _080A5700 @ =sub_80A572C
- b _080A5720
- .align 2, 0
-_080A5700: .4byte sub_80A572C
-_080A5704:
- movs r0, 0x8
- strh r0, [r5, 0xE]
- movs r0, 0xC0
- lsls r0, 3
- strh r0, [r5, 0x10]
- movs r1, 0xC0
- strh r1, [r5, 0x12]
- cmp r2, 0
- bne _080A571E
- negs r0, r0
- strh r0, [r5, 0x10]
- negs r0, r1
- strh r0, [r5, 0x12]
-_080A571E:
- ldr r0, _080A5728 @ =sub_80A58EC
-_080A5720:
- str r0, [r5]
-_080A5722:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5728: .4byte sub_80A58EC
- thumb_func_end sub_80A5694
-
- thumb_func_start sub_80A572C
-sub_80A572C: @ 80A572C
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080A5750 @ =gTasks
- adds r4, r0, r1
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080A5746
- b _080A58E6
-_080A5746:
- lsls r0, 2
- ldr r1, _080A5754 @ =_080A5758
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080A5750: .4byte gTasks
-_080A5754: .4byte _080A5758
- .align 2, 0
-_080A5758:
- .4byte _080A576C
- .4byte _080A579E
- .4byte _080A57F8
- .4byte _080A5870
- .4byte _080A58B4
-_080A576C:
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- cmp r1, 0
- beq _080A577C
- ldrh r2, [r4, 0x12]
- ldrh r3, [r4, 0x10]
- adds r2, r3
- b _080A58C2
-_080A577C:
- movs r0, 0x8
- strh r0, [r4, 0xE]
- strh r1, [r4, 0x10]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r1, 0xC0
- cmp r0, 0
- bne _080A5792
- movs r2, 0xC0
- negs r2, r2
- adds r1, r2, 0
-_080A5792:
- strh r1, [r4, 0x12]
- ldrb r0, [r4, 0x8]
- movs r1, 0
- bl sub_80758E0
- b _080A58A8
-_080A579E:
- movs r3, 0xE
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080A57C4
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0x10]
- adds r0, r1
- strh r0, [r4, 0x10]
- ldrb r0, [r4, 0x8]
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0x10]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrb r0, [r4, 0x8]
- bl sub_80759DC
- b _080A58D4
-_080A57C4:
- movs r0, 0x8
- strh r0, [r4, 0xE]
- ldr r2, _080A57F4 @ =gSprites
- movs r3, 0x8
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x24]
- strh r0, [r4, 0x10]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r2, 0x2
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _080A57EA
- movs r1, 0x2
-_080A57EA:
- strh r1, [r4, 0x12]
- movs r0, 0x1
- strh r0, [r4, 0x14]
- b _080A58A8
- .align 2, 0
-_080A57F4: .4byte gSprites
-_080A57F8:
- ldrh r2, [r4, 0xE]
- movs r3, 0xE
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080A5854
- ldrh r1, [r4, 0x14]
- movs r3, 0x14
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080A5812
- subs r0, r1, 0x1
- strh r0, [r4, 0x14]
- b _080A58E6
-_080A5812:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _080A5834
- ldr r2, _080A5830 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x12]
- ldrh r2, [r4, 0x10]
- adds r1, r2
- b _080A5848
- .align 2, 0
-_080A5830: .4byte gSprites
-_080A5834:
- ldr r2, _080A5850 @ =gSprites
- movs r3, 0x8
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x10]
- ldrh r2, [r4, 0x12]
- subs r1, r2
-_080A5848:
- strh r1, [r0, 0x24]
- movs r0, 0x1
- strh r0, [r4, 0x14]
- b _080A58D4
- .align 2, 0
-_080A5850: .4byte gSprites
-_080A5854:
- ldr r2, _080A586C @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x10]
- strh r1, [r0, 0x24]
- movs r0, 0xC
- strh r0, [r4, 0xE]
- b _080A58A8
- .align 2, 0
-_080A586C: .4byte gSprites
-_080A5870:
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080A5880
- subs r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _080A58E6
-_080A5880:
- movs r0, 0x3
- strh r0, [r4, 0xE]
- ldr r2, _080A58B0 @ =gSprites
- movs r3, 0x8
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x24]
- strh r0, [r4, 0x10]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r2, 0x8
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _080A58A6
- movs r1, 0x8
-_080A58A6:
- strh r1, [r4, 0x12]
-_080A58A8:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- b _080A58E6
- .align 2, 0
-_080A58B0: .4byte gSprites
-_080A58B4:
- movs r3, 0xE
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080A58E0
- ldrh r2, [r4, 0x12]
- ldrh r0, [r4, 0x10]
- adds r2, r0
-_080A58C2:
- strh r2, [r4, 0x10]
- ldr r3, _080A58DC @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x24]
-_080A58D4:
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- b _080A58E6
- .align 2, 0
-_080A58DC: .4byte gSprites
-_080A58E0:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080A58E6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A572C
-
- thumb_func_start sub_80A58EC
-sub_80A58EC: @ 80A58EC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080A5928 @ =gTasks
- adds r4, r0, r1
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080A592C
- ldrh r0, [r4, 0x10]
- ldrh r1, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0x10]
- ldrb r0, [r4, 0x8]
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0x10]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrb r0, [r4, 0x8]
- bl sub_80759DC
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- b _080A5938
- .align 2, 0
-_080A5928: .4byte gTasks
-_080A592C:
- ldrb r0, [r4, 0x8]
- bl sub_8075980
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080A5938:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A58EC
-
- thumb_func_start sub_80A5940
-sub_80A5940: @ 80A5940
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080A5954 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080A595C
- ldr r4, _080A5958 @ =gUnknown_2037F1A
- b _080A595E
- .align 2, 0
-_080A5954: .4byte gUnknown_2037F02
-_080A5958: .4byte gUnknown_2037F1A
-_080A595C:
- ldr r4, _080A599C @ =gUnknown_2037F1B
-_080A595E:
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x2]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x4]
- adds r0, r6
- strh r0, [r5, 0x22]
- movs r0, 0
- strh r0, [r5, 0x2E]
- strh r0, [r5, 0x30]
- ldr r1, _080A59A0 @ =sub_80A5A8C
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A59A4 @ =sub_8074F6C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A599C: .4byte gUnknown_2037F1B
-_080A59A0: .4byte sub_80A5A8C
-_080A59A4: .4byte sub_8074F6C
- thumb_func_end sub_80A5940
-
- thumb_func_start sub_80A59A8
-sub_80A59A8: @ 80A59A8
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080A59E0 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080A59E4 @ =0x0000ffd0
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r1, _080A59E8 @ =sub_80A5A44
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A59EC @ =sub_8074F6C
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A59E0: .4byte gUnknown_2037F1B
-_080A59E4: .4byte 0x0000ffd0
-_080A59E8: .4byte sub_80A5A44
-_080A59EC: .4byte sub_8074F6C
- thumb_func_end sub_80A59A8
-
- thumb_func_start sub_80A59F0
-sub_80A59F0: @ 80A59F0
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, _080A5A34 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080A5A38 @ =gUnknown_2037F02
- ldr r2, _080A5A3C @ =0x0000ffd0
- adds r0, r2
- ldrh r1, [r1]
- adds r0, r1
- movs r6, 0
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- strh r6, [r4, 0x2E]
- strh r6, [r4, 0x30]
- ldr r0, _080A5A40 @ =sub_80A5A8C
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5A34: .4byte gUnknown_2037F1B
-_080A5A38: .4byte gUnknown_2037F02
-_080A5A3C: .4byte 0x0000ffd0
-_080A5A40: .4byte sub_80A5A8C
- thumb_func_end sub_80A59F0
-
- thumb_func_start sub_80A5A44
-sub_80A5A44: @ 80A5A44
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080A5A6E
- movs r0, 0xC
- strh r0, [r4, 0x2E]
- movs r0, 0x8
- strh r0, [r4, 0x30]
- movs r0, 0
- strh r0, [r4, 0x32]
- ldr r1, _080A5A74 @ =sub_80A5A7C
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A5A78 @ =sub_8074CD0
- str r0, [r4, 0x1C]
-_080A5A6E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5A74: .4byte sub_80A5A7C
-_080A5A78: .4byte sub_8074CD0
- thumb_func_end sub_80A5A44
-
- thumb_func_start sub_80A5A7C
-sub_80A5A7C: @ 80A5A7C
- movs r1, 0
- strh r1, [r0, 0x2E]
- strh r1, [r0, 0x30]
- ldr r1, _080A5A88 @ =sub_80A5A8C
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080A5A88: .4byte sub_80A5A8C
- thumb_func_end sub_80A5A7C
-
- thumb_func_start sub_80A5A8C
-sub_80A5A8C: @ 80A5A8C
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080A5AD4
- movs r0, 0
- strh r0, [r3, 0x2E]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080A5AD4
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080A5AD4:
- pop {r0}
- bx r0
- thumb_func_end sub_80A5A8C
-
- thumb_func_start sub_80A5AD8
-sub_80A5AD8: @ 80A5AD8
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080A5AEC @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080A5AF4
- ldr r4, _080A5AF0 @ =gUnknown_2037F1A
- b _080A5AF6
- .align 2, 0
-_080A5AEC: .4byte gUnknown_2037F02
-_080A5AF0: .4byte gUnknown_2037F1A
-_080A5AF4:
- ldr r4, _080A5B30 @ =gUnknown_2037F1B
-_080A5AF6:
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x2]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x4]
- adds r0, r6
- strh r0, [r5, 0x22]
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldr r0, _080A5B34 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x6]
- strh r0, [r5, 0x30]
- ldr r0, _080A5B38 @ =sub_80A5B3C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5B30: .4byte gUnknown_2037F1B
-_080A5B34: .4byte gUnknown_2037F02
-_080A5B38: .4byte sub_80A5B3C
- thumb_func_end sub_80A5AD8
-
- thumb_func_start sub_80A5B3C
-sub_80A5B3C: @ 80A5B3C
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x30
- ldrsh r1, [r2, r3]
- cmp r0, r1
- ble _080A5B5C
- movs r0, 0
- strh r0, [r2, 0x2E]
- ldrh r0, [r2, 0x22]
- subs r0, 0x1
- strh r0, [r2, 0x22]
-_080A5B5C:
- ldrh r0, [r2, 0x22]
- ldrh r1, [r2, 0x2E]
- subs r0, r1
- strh r0, [r2, 0x22]
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080A5B78
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080A5B78:
- pop {r0}
- bx r0
- thumb_func_end sub_80A5B3C
-
- thumb_func_start sub_80A5B7C
-sub_80A5B7C: @ 80A5B7C
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r6, _080A5BC4 @ =gUnknown_2037F1A
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r4, 0x20]
- ldrb r0, [r6]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0xC
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x2E]
- movs r0, 0x2
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x32]
- strh r5, [r4, 0x34]
- strh r5, [r4, 0x36]
- subs r0, 0x42
- bl sub_8073A44
- lsls r0, 24
- asrs r0, 24
- strh r0, [r4, 0x38]
- ldr r0, _080A5BC8 @ =sub_80A5BCC
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5BC4: .4byte gUnknown_2037F1A
-_080A5BC8: .4byte sub_80A5BCC
- thumb_func_end sub_80A5B7C
-
- thumb_func_start sub_80A5BCC
-sub_80A5BCC: @ 80A5BCC
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _080A5C38
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r1, 0x4
- ands r0, r1
- cmp r0, 0
- bne _080A5C1E
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080A5C1E
- ldrh r1, [r4, 0x38]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xBB
- bl PlaySE12WithPanning
-_080A5C1E:
- movs r1, 0
- strh r1, [r4, 0x2E]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080A5C38
- strh r1, [r4, 0x32]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
-_080A5C38:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080A5C62
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- ble _080A5C62
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080A5C62
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A5C62:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A5BCC
-
- thumb_func_start sub_80A5C68
-sub_80A5C68: @ 80A5C68
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080A5CB2
- ldr r4, _080A5CC8 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- ldr r5, _080A5CCC @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x2]
- adds r0, r5
- strh r0, [r6, 0x22]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A5CAC
- ldrh r0, [r6, 0x22]
- adds r0, 0xA
- strh r0, [r6, 0x22]
-_080A5CAC:
- ldrh r0, [r6, 0x2E]
- adds r0, 0x1
- strh r0, [r6, 0x2E]
-_080A5CB2:
- ldr r0, _080A5CCC @ =gUnknown_2037F02
- ldrh r1, [r0, 0xE]
- ldr r0, _080A5CD0 @ =0x0000ffff
- cmp r1, r0
- bne _080A5CC2
- adds r0, r6, 0
- bl DestroyAnimSprite
-_080A5CC2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5CC8: .4byte gUnknown_2037F1A
-_080A5CCC: .4byte gUnknown_2037F02
-_080A5CD0: .4byte 0x0000ffff
- thumb_func_end sub_80A5C68
-
- thumb_func_start sub_80A5CD4
-sub_80A5CD4: @ 80A5CD4
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080A5CF4 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080A5D00
- ldr r1, _080A5CF8 @ =gUnknown_2037F02
- ldr r0, _080A5CFC @ =0x0000ffff
- strh r0, [r1, 0xE]
- b _080A5D3E
- .align 2, 0
-_080A5CF4: .4byte gTasks
-_080A5CF8: .4byte gUnknown_2037F02
-_080A5CFC: .4byte 0x0000ffff
-_080A5D00:
- cmp r0, 0x2
- bne _080A5D0C
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- b _080A5D44
-_080A5D0C:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080A5D44
- movs r0, 0
- strh r0, [r4, 0x8]
- ldrh r2, [r4, 0xA]
- adds r2, 0x1
- strh r2, [r4, 0xA]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _080A5D44
-_080A5D3E:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
-_080A5D44:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A5CD4
-
- thumb_func_start sub_80A5D4C
-sub_80A5D4C: @ 80A5D4C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_8075114
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080A5D74 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x2E]
- ldr r0, _080A5D78 @ =sub_80A5D7C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5D74: .4byte gUnknown_2037F02
-_080A5D78: .4byte sub_80A5D7C
- thumb_func_end sub_80A5D4C
-
- thumb_func_start sub_80A5D7C
-sub_80A5D7C: @ 80A5D7C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _080A5D90
- subs r0, r1, 0x1
- strh r0, [r5, 0x2E]
- b _080A5DCC
-_080A5D90:
- adds r2, r5, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x1E
- strh r0, [r5, 0x2E]
- ldr r4, _080A5DD4 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, _080A5DD8 @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _080A5DDC @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
-_080A5DCC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5DD4: .4byte gUnknown_2037F1A
-_080A5DD8: .4byte sub_8075590
-_080A5DDC: .4byte DestroyAnimSprite
- thumb_func_end sub_80A5D7C
-
- thumb_func_start sub_80A5DE0
-sub_80A5DE0: @ 80A5DE0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080A5E30 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080A5E28
- movs r0, 0
- strh r0, [r4, 0x8]
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _080A5E28
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080A5E28:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5E30: .4byte gTasks
- thumb_func_end sub_80A5DE0
-
- thumb_func_start sub_80A5E34
-sub_80A5E34: @ 80A5E34
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r4, 0
- ldr r0, _080A5E9C @ =gBattlersCount
- ldrb r0, [r0]
- cmp r4, r0
- bcs _080A5E90
- ldr r6, _080A5EA0 @ =gUnknown_2037F02
- ldr r5, _080A5EA4 @ =gUnknown_3004FF0
-_080A5E48:
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x1
- bne _080A5E64
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A5E64
- adds r0, r4, r5
- ldrb r0, [r0]
- bl SetHealthboxSpriteInvisible
-_080A5E64:
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- cmp r0, 0x1
- bne _080A5E82
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A5E82
- adds r0, r4, r5
- ldrb r0, [r0]
- bl SetHealthboxSpriteInvisible
-_080A5E82:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A5E9C @ =gBattlersCount
- ldrb r0, [r0]
- cmp r4, r0
- bcc _080A5E48
-_080A5E90:
- adds r0, r7, 0
- bl DestroyAnimVisualTask
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5E9C: .4byte gBattlersCount
-_080A5EA0: .4byte gUnknown_2037F02
-_080A5EA4: .4byte gUnknown_3004FF0
- thumb_func_end sub_80A5E34
-
- thumb_func_start sub_80A5EA8
-sub_80A5EA8: @ 80A5EA8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- b _080A5EC2
-_080A5EB2:
- ldr r0, _080A5ED8 @ =gUnknown_3004FF0
- adds r0, r4, r0
- ldrb r0, [r0]
- bl SetHealthboxSpriteVisible
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080A5EC2:
- ldr r0, _080A5EDC @ =gBattlersCount
- ldrb r0, [r0]
- cmp r4, r0
- bcc _080A5EB2
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5ED8: .4byte gUnknown_3004FF0
-_080A5EDC: .4byte gBattlersCount
- thumb_func_end sub_80A5EA8
-
- thumb_func_start sub_80A5EE0
-sub_80A5EE0: @ 80A5EE0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A5EF6
- movs r0, 0x30
- strh r0, [r4, 0x20]
- movs r0, 0x28
- b _080A5EFE
-_080A5EF6:
- ldr r0, _080A5F20 @ =gUnknown_2037F02
- ldrh r1, [r0]
- strh r1, [r4, 0x20]
- ldrh r0, [r0, 0x2]
-_080A5EFE:
- strh r0, [r4, 0x22]
- ldrb r1, [r4, 0x1]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r4, 0x1]
- ldrb r0, [r4, 0x3]
- movs r1, 0xC0
- orrs r0, r1
- strb r0, [r4, 0x3]
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, _080A5F24 @ =sub_80A5F28
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5F20: .4byte gUnknown_2037F02
-_080A5F24: .4byte sub_80A5F28
- thumb_func_end sub_80A5EE0
-
- thumb_func_start sub_80A5F28
-sub_80A5F28: @ 80A5F28
- push {lr}
- adds r1, r0, 0
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _080A5F3A
- adds r0, r1, 0
- bl DestroyAnimSprite
-_080A5F3A:
- pop {r0}
- bx r0
- thumb_func_end sub_80A5F28
-
- thumb_func_start sub_80A5F40
-sub_80A5F40: @ 80A5F40
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080A5F78 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- ldr r2, _080A5F7C @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r2]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x2E]
- strh r1, [r4, 0x30]
- strh r1, [r4, 0x32]
- strh r1, [r4, 0x34]
- movs r0, 0x1
- strh r0, [r4, 0x36]
- ldr r0, _080A5F80 @ =sub_80A5F84
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A5F78: .4byte gUnknown_2037F1A
-_080A5F7C: .4byte gUnknown_2037F02
-_080A5F80: .4byte sub_80A5F84
- thumb_func_end sub_80A5F40
-
- thumb_func_start sub_80A5F84
-sub_80A5F84: @ 80A5F84
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080A5FAE
- movs r0, 0
- strh r0, [r1, 0x30]
- ldrh r2, [r1, 0x32]
- movs r3, 0x32
- ldrsh r0, [r1, r3]
- cmp r0, 0x77
- bgt _080A5FAE
- ldrh r0, [r1, 0x22]
- adds r0, 0x1
- strh r0, [r1, 0x22]
- adds r0, r2, 0x1
- strh r0, [r1, 0x32]
-_080A5FAE:
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _080A5FBC
- adds r0, r1, 0
- bl DestroyAnimSprite
-_080A5FBC:
- pop {r0}
- bx r0
- thumb_func_end sub_80A5F84
-
- thumb_func_start sub_80A5FC0
-sub_80A5FC0: @ 80A5FC0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r7, r0, 24
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8075BE8
- mov r8, r0
- ldr r0, _080A6090 @ =0x0000ffff
- mov r1, r8
- ands r1, r0
- mov r8, r1
- ldr r0, _080A6094 @ =gTasks
- mov r9, r0
- lsls r5, r7, 2
- adds r5, r7
- lsls r5, 3
- adds r6, r5, r0
- strh r4, [r6, 0x8]
- strh r4, [r6, 0xA]
- strh r4, [r6, 0xC]
- strh r1, [r6, 0xE]
- strh r4, [r6, 0x10]
- strh r4, [r6, 0x12]
- strh r4, [r6, 0x14]
- movs r0, 0xD
- strh r0, [r6, 0x16]
- movs r0, 0xE
- strh r0, [r6, 0x18]
- movs r0, 0xF
- strh r0, [r6, 0x1A]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x1
- bl sub_8075CB8
- mov r10, r0
- mov r1, r8
- orrs r1, r0
- mov r8, r1
- movs r0, 0x8
- add r9, r0
- add r5, r9
- adds r0, r5, 0
- adds r0, 0x1C
- adds r5, 0x1E
- adds r1, r5, 0
- mov r2, r8
- bl sub_80765C0
- ldr r0, _080A6098 @ =0x000027d2
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0x80
- lsls r4, 9
- adds r1, r4, 0
- lsls r1, r0
- mov r0, r10
- orrs r0, r1
- mov r10, r0
- ldr r0, _080A609C @ =0x000027d3
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0
- mov r1, r10
- orrs r4, r1
- ldr r0, _080A60A0 @ =0x00007fbb
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _080A60A4 @ =sub_80A60A8
- str r1, [r6]
- adds r0, r7, 0
- bl _call_via_r1
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6090: .4byte 0x0000ffff
-_080A6094: .4byte gTasks
-_080A6098: .4byte 0x000027d2
-_080A609C: .4byte 0x000027d3
-_080A60A0: .4byte 0x00007fbb
-_080A60A4: .4byte sub_80A60A8
- thumb_func_end sub_80A5FC0
-
- thumb_func_start sub_80A60A8
-sub_80A60A8: @ 80A60A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080A60D0 @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080A6194
- cmp r1, 0x1
- bgt _080A60D4
- cmp r1, 0
- beq _080A60E2
- b _080A6232
- .align 2, 0
-_080A60D0: .4byte gTasks
-_080A60D4:
- cmp r1, 0x2
- bne _080A60DA
- b _080A61EC
-_080A60DA:
- cmp r1, 0x3
- bne _080A60E0
- b _080A6220
-_080A60E0:
- b _080A6232
-_080A60E2:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bgt _080A60F0
- b _080A6232
-_080A60F0:
- strh r1, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bgt _080A613C
- ldrh r0, [r4, 0x16]
- ldrh r1, [r4, 0x10]
- adds r0, r1
- strh r0, [r4, 0x10]
- ldrh r2, [r4, 0x18]
- ldrh r3, [r4, 0x12]
- adds r2, r3
- strh r2, [r4, 0x12]
- ldrh r1, [r4, 0x1A]
- ldrh r5, [r4, 0x14]
- adds r1, r5
- strh r1, [r4, 0x14]
- lsls r0, 16
- asrs r0, 19
- lsls r0, 16
- lsrs r0, 16
- lsls r2, 16
- asrs r2, 19
- lsls r2, 16
- lsls r1, 16
- asrs r1, 19
- lsls r1, 16
- lsrs r2, 11
- orrs r0, r2
- lsrs r1, 6
- orrs r0, r1
- lsls r0, 16
- lsrs r0, 16
- mov r12, r0
- b _080A6146
-_080A613C:
- ldr r7, _080A618C @ =0x00007fbb
- mov r12, r7
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080A6146:
- movs r2, 0x1
- movs r3, 0
- movs r1, 0
-_080A614C:
- movs r5, 0xE
- ldrsh r0, [r4, r5]
- ands r0, r2
- lsls r5, r2, 17
- adds r6, r3, 0
- adds r6, 0x10
- adds r1, 0x1
- mov r8, r1
- cmp r0, 0
- beq _080A6178
- movs r1, 0x1
- ldr r2, _080A6190 @ =gPlttBufferFaded
-_080A6164:
- adds r0, r3, r1
- lsls r0, 1
- adds r0, r2
- mov r7, r12
- strh r7, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xF
- bls _080A6164
-_080A6178:
- lsrs r2, r5, 16
- lsls r0, r6, 16
- lsrs r3, r0, 16
- mov r1, r8
- lsls r0, r1, 16
- lsrs r1, r0, 16
- cmp r1, 0xF
- bls _080A614C
- b _080A6232
- .align 2, 0
-_080A618C: .4byte 0x00007fbb
-_080A6190: .4byte gPlttBufferFaded
-_080A6194:
- ldr r0, _080A61DC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A6232
- movs r2, 0
- ldr r3, _080A61E0 @ =gSprites
- movs r5, 0x14
- adds r5, r3
- mov r12, r5
- ldr r7, _080A61E4 @ =gUnknown_83E3734
- mov r8, r7
- ldr r6, _080A61E8 @ =gUnknown_83E3764
- movs r5, 0x1
-_080A61B2:
- lsls r0, r2, 4
- adds r0, r2
- lsls r1, r0, 2
- mov r7, r12
- adds r0, r1, r7
- ldr r0, [r0]
- cmp r0, r8
- beq _080A61C6
- cmp r0, r6
- bne _080A61CA
-_080A61C6:
- adds r0, r1, r3
- strh r5, [r0, 0x2E]
-_080A61CA:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3F
- bls _080A61B2
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080A6214
- .align 2, 0
-_080A61DC: .4byte gPaletteFade
-_080A61E0: .4byte gSprites
-_080A61E4: .4byte gUnknown_83E3734
-_080A61E8: .4byte gUnknown_83E3764
-_080A61EC:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- ble _080A6232
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- bl sub_80765C8
- ldr r1, _080A621C @ =0x00007fbb
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_080A6214:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080A6232
- .align 2, 0
-_080A621C: .4byte 0x00007fbb
-_080A6220:
- ldr r0, _080A6240 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A6232
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080A6232:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6240: .4byte gPaletteFade
- thumb_func_end sub_80A60A8
-
- thumb_func_start sub_80A6244
-sub_80A6244: @ 80A6244
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080A62C8 @ =gUnknown_2037F02
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- cmp r0, 0x1
- bgt _080A6256
- movs r0, 0x2
- strh r0, [r6, 0x4]
-_080A6256:
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- cmp r0, 0x7F
- ble _080A6262
- movs r0, 0x7F
- strh r0, [r6, 0x4]
-_080A6262:
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldrh r0, [r6, 0x4]
- strh r0, [r5, 0x30]
- ldr r4, _080A62CC @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x2]
- adds r0, r6
- strh r0, [r5, 0x22]
- ldrh r1, [r5, 0x20]
- strh r1, [r5, 0x3A]
- strh r0, [r5, 0x3C]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A62D4
- ldrb r1, [r5, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r5, 0x3]
- ldrh r0, [r5, 0x20]
- adds r0, 0x28
- strh r0, [r5, 0x20]
- ldrh r4, [r5, 0x22]
- adds r4, 0x14
- strh r4, [r5, 0x22]
- lsls r0, 7
- strh r0, [r5, 0x32]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- ldr r0, _080A62D0 @ =0xffffec00
- b _080A62FA
- .align 2, 0
-_080A62C8: .4byte gUnknown_2037F02
-_080A62CC: .4byte gUnknown_2037F1B
-_080A62D0: .4byte 0xffffec00
-_080A62D4:
- ldr r0, _080A6314 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A631C
- ldrh r0, [r5, 0x20]
- subs r0, 0x28
- strh r0, [r5, 0x20]
- ldrh r4, [r5, 0x22]
- adds r4, 0x14
- strh r4, [r5, 0x22]
- lsls r0, 7
- strh r0, [r5, 0x32]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- movs r0, 0xA0
- lsls r0, 5
-_080A62FA:
- bl __divsi3
- strh r0, [r5, 0x34]
- lsls r4, 7
- strh r4, [r5, 0x36]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- ldr r0, _080A6318 @ =0xfffff600
- bl __divsi3
- strh r0, [r5, 0x38]
- b _080A6358
- .align 2, 0
-_080A6314: .4byte gUnknown_2037F1A
-_080A6318: .4byte 0xfffff600
-_080A631C:
- ldrh r0, [r5, 0x20]
- adds r0, 0x28
- strh r0, [r5, 0x20]
- ldrh r4, [r5, 0x22]
- subs r4, 0x14
- strh r4, [r5, 0x22]
- lsls r0, 7
- strh r0, [r5, 0x32]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- ldr r0, _080A6364 @ =0xffffec00
- bl __divsi3
- strh r0, [r5, 0x34]
- lsls r4, 7
- strh r4, [r5, 0x36]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- movs r0, 0xA0
- lsls r0, 4
- bl __divsi3
- strh r0, [r5, 0x38]
- ldrb r1, [r5, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x30
- orrs r0, r1
- strb r0, [r5, 0x3]
-_080A6358:
- ldr r0, _080A6368 @ =sub_80A636C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6364: .4byte 0xffffec00
-_080A6368: .4byte sub_80A636C
- thumb_func_end sub_80A6244
-
- thumb_func_start sub_80A636C
-sub_80A636C: @ 80A636C
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x34]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- ldrh r1, [r2, 0x38]
- ldrh r3, [r2, 0x36]
- adds r1, r3
- strh r1, [r2, 0x36]
- lsls r0, 16
- asrs r0, 23
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r1, 23
- strh r1, [r2, 0x22]
- ldrh r0, [r2, 0x30]
- subs r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080A63A2
- ldrh r0, [r2, 0x3A]
- strh r0, [r2, 0x20]
- ldrh r0, [r2, 0x3C]
- strh r0, [r2, 0x22]
-_080A63A2:
- movs r1, 0x30
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _080A63B0
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080A63B0:
- pop {r0}
- bx r0
- thumb_func_end sub_80A636C
-
- thumb_func_start sub_80A63B4
-sub_80A63B4: @ 80A63B4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, _080A6444 @ =gTasks
- adds r6, r0, r1
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x8]
- ldr r0, _080A6448 @ =0x00002771
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0xA]
- movs r1, 0xA
- ldrsh r0, [r6, r1]
- lsls r0, 20
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r3, r0, 16
- ldr r2, _080A644C @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- lsls r4, r0, 4
- movs r5, 0x1
- ldr r2, _080A6450 @ =gPlttBufferUnfaded
-_080A640C:
- adds r1, r3, r5
- lsls r1, 1
- adds r1, r2
- adds r0, r4, r5
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xF
- bls _080A640C
- adds r0, r3, 0
- movs r1, 0x10
- movs r2, 0xB
- movs r3, 0
- bl BlendPalette
- movs r0, 0
- strh r0, [r6, 0xE]
- movs r5, 0
- ldr r7, _080A644C @ =gSprites
- movs r1, 0x1C
- adds r1, r7
- mov r9, r1
- b _080A6488
- .align 2, 0
-_080A6444: .4byte gTasks
-_080A6448: .4byte 0x00002771
-_080A644C: .4byte gSprites
-_080A6450: .4byte gPlttBufferUnfaded
-_080A6454:
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r4, r2, r7
- ldrb r1, [r6, 0xA]
- lsls r1, 4
- ldrb r3, [r4, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r1
- strb r0, [r4, 0x5]
- movs r0, 0
- strh r0, [r4, 0x2E]
- lsls r0, r5, 7
- strh r0, [r4, 0x30]
- mov r0, r8
- strh r0, [r4, 0x32]
- add r2, r9
- ldr r0, _080A64BC @ =sub_80A653C
- str r0, [r2]
- ldrh r0, [r6, 0xE]
- adds r0, 0x1
- strh r0, [r6, 0xE]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080A6488:
- cmp r5, 0x1
- bhi _080A649A
- movs r0, 0
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _080A6454
-_080A649A:
- ldr r0, _080A64C0 @ =sub_80A64E0
- str r0, [r6]
- ldr r0, _080A64C4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A64C8
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl ClearGpuRegBits
- b _080A64D2
- .align 2, 0
-_080A64BC: .4byte sub_80A653C
-_080A64C0: .4byte sub_80A64E0
-_080A64C4: .4byte gUnknown_2037F1A
-_080A64C8:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl ClearGpuRegBits
-_080A64D2:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A63B4
-
- thumb_func_start sub_80A64E0
-sub_80A64E0: @ 80A64E0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080A6514 @ =gTasks
- adds r0, r1
- movs r1, 0xE
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A6532
- ldr r0, _080A6518 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A651C
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl SetGpuRegBits
- b _080A6526
- .align 2, 0
-_080A6514: .4byte gTasks
-_080A6518: .4byte gUnknown_2037F1A
-_080A651C:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
-_080A6526:
- ldr r0, _080A6538 @ =0x00002771
- bl FreeSpritePaletteByTag
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080A6532:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6538: .4byte 0x00002771
- thumb_func_end sub_80A64E0
-
- thumb_func_start sub_80A653C
-sub_80A653C: @ 80A653C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080A6558
- movs r0, 0
- strh r0, [r5, 0x34]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
-_080A6558:
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x40
- ble _080A6580
- ldr r2, _080A657C @ =gTasks
- movs r0, 0x32
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0xE]
- subs r1, 0x1
- strh r1, [r0, 0xE]
- adds r0, r5, 0
- bl obj_delete_but_dont_free_vram
- b _080A65C2
- .align 2, 0
-_080A657C: .4byte gTasks
-_080A6580:
- ldr r4, _080A65C8 @ =gSineTable
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- lsls r0, 1
- adds r0, r4
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0x6
- bl __divsi3
- strh r0, [r5, 0x36]
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- lsls r0, 1
- adds r0, r4
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0xD
- bl __divsi3
- strh r0, [r5, 0x38]
- ldrh r1, [r5, 0x30]
- adds r1, r0
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r5, 0x30]
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- movs r2, 0x36
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r5, 0x24]
-_080A65C2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A65C8: .4byte gSineTable
- thumb_func_end sub_80A653C
-
- thumb_func_start sub_80A65CC
-sub_80A65CC: @ 80A65CC
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080A65E0 @ =DestroyAnimSprite
- bl StoreSpriteCallbackInData6
- ldr r0, _080A65E4 @ =sub_8074F6C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A65E0: .4byte DestroyAnimSprite
-_080A65E4: .4byte sub_8074F6C
- thumb_func_end sub_80A65CC
-
- thumb_func_start sub_80A65E8
-sub_80A65E8: @ 80A65E8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r4, _080A6698 @ =gUnknown_83E3898
- ldrh r0, [r4]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xFF
- beq _080A662C
- lsls r0, r3, 20
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r3, r0, 16
- movs r2, 0x1
- ldr r5, _080A669C @ =gPlttBufferFaded
-_080A6614:
- adds r1, r3, r2
- lsls r1, 1
- adds r1, r5
- lsls r0, r2, 1
- adds r0, r4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x5
- bls _080A6614
-_080A662C:
- movs r4, 0x1
- ldr r0, _080A6698 @ =gUnknown_83E3898
- mov r8, r0
-_080A6632:
- lsls r0, r4, 1
- adds r0, r4
- lsls r5, r0, 2
- mov r1, r8
- adds r0, r5, r1
- ldrh r0, [r0]
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, 0x1
- mov r12, r4
- cmp r3, 0xFF
- beq _080A667A
- lsls r0, r3, 20
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r3, r0, 16
- movs r2, 0x1
- ldr r7, _080A669C @ =gPlttBufferFaded
- ldr r6, _080A6698 @ =gUnknown_83E3898
- adds r4, r5, 0
-_080A6660:
- adds r1, r3, r2
- lsls r1, 1
- adds r1, r7
- lsls r0, r2, 1
- adds r0, r4
- adds r0, r6
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x5
- bls _080A6660
-_080A667A:
- mov r1, r12
- lsls r0, r1, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080A6632
- mov r0, r9
- bl DestroyAnimVisualTask
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6698: .4byte gUnknown_83E3898
-_080A669C: .4byte gPlttBufferFaded
- thumb_func_end sub_80A65E8
-
- thumb_func_start sub_80A66A0
-sub_80A66A0: @ 80A66A0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0x1
- ldr r6, _080A66D0 @ =gUnknown_83E3898
-_080A66AA:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r0, r6
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080A66AA
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A66D0: .4byte gUnknown_83E3898
- thumb_func_end sub_80A66A0
-
- thumb_func_start sub_80A66D4
-sub_80A66D4: @ 80A66D4
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- bl sub_8074FCC
- ldr r4, _080A672C @ =gUnknown_2037F02
- ldrb r1, [r4]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r2, _080A6730 @ =gUnknown_83E3898
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _080A6710
- lsls r2, r0, 4
- ldrb r1, [r5, 0x5]
- movs r0, 0xF
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
-_080A6710:
- ldrh r0, [r4, 0x2]
- movs r1, 0
- strh r0, [r5, 0x30]
- strh r1, [r5, 0x32]
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x34]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A6734
- movs r6, 0x30
- movs r3, 0x28
- b _080A674E
- .align 2, 0
-_080A672C: .4byte gUnknown_2037F02
-_080A6730: .4byte gUnknown_83E3898
-_080A6734:
- ldr r4, _080A6784 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r3, r0, 24
-_080A674E:
- ldrh r0, [r5, 0x20]
- lsls r1, r0, 4
- strh r1, [r5, 0x36]
- ldrh r1, [r5, 0x22]
- lsls r2, r1, 4
- strh r2, [r5, 0x38]
- subs r0, r6, r0
- lsls r0, 16
- asrs r0, 16
- subs r1, r3, r1
- lsls r1, 16
- asrs r1, 16
- adds r2, r5, 0
- adds r2, 0x3A
- adds r3, r5, 0
- adds r3, 0x3C
- movs r4, 0x28
- str r4, [sp]
- bl sub_80A678C
- ldr r0, _080A6788 @ =sub_80A67E4
- str r0, [r5, 0x1C]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6784: .4byte gUnknown_2037F1B
-_080A6788: .4byte sub_80A67E4
- thumb_func_end sub_80A66D4
-
- thumb_func_start sub_80A678C
-sub_80A678C: @ 80A678C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r2, 0
- mov r8, r3
- ldr r2, [sp, 0x18]
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 24
- lsrs r1, r2, 24
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- bge _080A67AE
- lsls r0, r1, 24
- negs r0, r0
- lsrs r1, r0, 24
-_080A67AE:
- lsls r5, r2, 8
- lsls r1, 24
- asrs r1, 24
- adds r0, r5, 0
- bl __divsi3
- adds r4, r0, 0
- cmp r4, 0
- bne _080A67C2
- movs r4, 0x1
-_080A67C2:
- adds r0, r5, 0
- adds r1, r4, 0
- bl __divsi3
- strh r0, [r7]
- lsls r0, r6, 16
- asrs r0, 8
- adds r1, r4, 0
- bl __divsi3
- mov r1, r8
- strh r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A678C
-
- thumb_func_start sub_80A67E4
-sub_80A67E4: @ 80A67E4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x2E]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r1, r0, r1
- adds r0, r1, 0
- cmp r1, 0
- bge _080A6800
- adds r0, 0xFF
-_080A6800:
- asrs r0, 8
- lsls r0, 8
- subs r0, r1, r0
- ldrh r1, [r4, 0x3A]
- ldrh r2, [r4, 0x36]
- adds r1, r2
- strh r1, [r4, 0x36]
- ldrh r2, [r4, 0x3C]
- ldrh r3, [r4, 0x38]
- adds r2, r3
- strh r2, [r4, 0x38]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r4, 0x20]
- lsls r2, 16
- asrs r2, 20
- strh r2, [r4, 0x22]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0xF
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- ldrh r0, [r4, 0x20]
- adds r0, 0x10
- lsls r0, 16
- movs r1, 0x88
- lsls r1, 17
- cmp r0, r1
- bhi _080A684E
- lsls r0, r2, 16
- asrs r1, r0, 16
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- blt _080A684E
- cmp r1, 0x80
- ble _080A6856
-_080A684E:
- adds r0, r4, 0
- bl move_anim_8074EE0
- b _080A68A6
-_080A6856:
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- cmp r1, 0
- beq _080A68A6
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, r1
- ble _080A68A6
- strh r5, [r4, 0x32]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080A687E
- strh r5, [r4, 0x30]
-_080A687E:
- ldr r2, _080A68AC @ =gUnknown_83E3898
- movs r3, 0x30
- ldrsh r1, [r4, r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _080A68A6
- lsls r2, r0, 4
- ldrb r1, [r4, 0x5]
- movs r0, 0xF
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x5]
-_080A68A6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A68AC: .4byte gUnknown_83E3898
- thumb_func_end sub_80A67E4
-
- thumb_func_start sub_80A68B0
-sub_80A68B0: @ 80A68B0
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r7, _080A6934 @ =gUnknown_2037F1A
- ldrb r0, [r7]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A68CE
- ldr r1, _080A6938 @ =gUnknown_2037F02
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_080A68CE:
- ldrb r0, [r7]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- ldr r4, _080A6938 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- movs r5, 0
- strh r0, [r6, 0x20]
- ldrb r0, [r7]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r4, 0x4]
- adds r0, r2
- strh r0, [r6, 0x22]
- ldrb r1, [r4]
- adds r0, r6, 0
- bl StartSpriteAnim
- strh r5, [r6, 0x32]
- strh r5, [r6, 0x34]
- ldrh r0, [r6, 0x20]
- lsls r0, 4
- strh r0, [r6, 0x36]
- ldrh r0, [r6, 0x22]
- lsls r0, 4
- strh r0, [r6, 0x38]
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- lsls r0, 4
- movs r1, 0x5
- bl __divsi3
- strh r0, [r6, 0x3A]
- movs r2, 0x4
- ldrsh r0, [r4, r2]
- lsls r0, 7
- movs r1, 0x5
- bl __divsi3
- strh r0, [r6, 0x3C]
- ldr r0, _080A693C @ =sub_80A6940
- str r0, [r6, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6934: .4byte gUnknown_2037F1A
-_080A6938: .4byte gUnknown_2037F02
-_080A693C: .4byte sub_80A6940
- thumb_func_end sub_80A68B0
-
- thumb_func_start sub_80A6940
-sub_80A6940: @ 80A6940
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x36]
- adds r0, r1
- strh r0, [r4, 0x36]
- ldrh r1, [r4, 0x3C]
- ldrh r2, [r4, 0x38]
- adds r1, r2
- strh r1, [r4, 0x38]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r4, 0x22]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- ble _080A699E
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080A699E
- ldrh r0, [r4, 0x32]
- adds r0, 0x10
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x32]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r1, 0x12
- bl Cos
- strh r0, [r4, 0x24]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- movs r1, 0x12
- bl Sin
- strh r0, [r4, 0x26]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A699E
- movs r0, 0x1
- strh r0, [r4, 0x34]
-_080A699E:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x30
- bne _080A69B2
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080A69B2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A6940
-
- thumb_func_start sub_80A69B8
-sub_80A69B8: @ 80A69B8
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, _080A69D8 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- bne _080A69DC
- ldrb r0, [r5, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r5, 0x3]
- movs r6, 0x10
- b _080A69DE
- .align 2, 0
-_080A69D8: .4byte gUnknown_2037F02
-_080A69DC:
- ldr r6, _080A6A18 @ =0x0000fff0
-_080A69DE:
- ldr r4, _080A6A1C @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x8
- strh r0, [r5, 0x22]
- movs r0, 0x8
- strh r0, [r5, 0x2E]
- ldr r0, _080A6A20 @ =sub_8074C44
- str r0, [r5, 0x1C]
- ldr r1, _080A6A24 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6A18: .4byte 0x0000fff0
-_080A6A1C: .4byte gUnknown_2037F1A
-_080A6A20: .4byte sub_8074C44
-_080A6A24: .4byte DestroyAnimSprite
- thumb_func_end sub_80A69B8
-
- thumb_func_start sub_80A6A28
-sub_80A6A28: @ 80A6A28
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_8074FCC
- ldrh r0, [r4, 0x22]
- adds r0, 0x8
- strh r0, [r4, 0x22]
- ldr r5, _080A6AA0 @ =gUnknown_2037F02
- ldrb r1, [r5, 0x2]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r2, _080A6AA4 @ =gUnknown_83E3898
- movs r0, 0x4
- ldrsh r1, [r5, r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _080A6A68
- lsls r2, r0, 4
- ldrb r1, [r4, 0x5]
- movs r0, 0xF
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x5]
-_080A6A68:
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r2, 0x20
- cmp r0, 0
- bne _080A6A74
- ldr r2, _080A6AA8 @ =0x0000ffe0
-_080A6A74:
- movs r0, 0x28
- strh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x20]
- strh r1, [r4, 0x30]
- lsls r0, r2, 16
- asrs r0, 16
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- subs r0, 0x28
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x38]
- ldr r0, _080A6AAC @ =sub_80A6AB0
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6AA0: .4byte gUnknown_2037F02
-_080A6AA4: .4byte gUnknown_83E3898
-_080A6AA8: .4byte 0x0000ffe0
-_080A6AAC: .4byte sub_80A6AB0
- thumb_func_end sub_80A6A28
-
- thumb_func_start sub_80A6AB0
-sub_80A6AB0: @ 80A6AB0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- bne _080A6B00
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Sin
- lsls r0, 16
- lsrs r1, r0, 16
- ldrh r2, [r4, 0x24]
- movs r3, 0x24
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bge _080A6ADC
- lsls r0, r1, 16
- negs r0, r0
- lsrs r1, r0, 16
-_080A6ADC:
- lsls r0, r1, 16
- asrs r0, 16
- adds r0, r2
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x4
- bl Sin
- ldrh r3, [r4, 0x26]
- adds r0, r3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0x8
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- b _080A6B06
-_080A6B00:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A6B06:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A6AB0
-
- thumb_func_start sub_80A6B0C
-sub_80A6B0C: @ 80A6B0C
- push {r4-r6,lr}
- adds r6, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A6B2C
- adds r0, r5, 0
- movs r1, 0x5
- bl sub_8076B2C
- adds r0, 0x8
- b _080A6B36
-_080A6B2C:
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_8076B2C
- subs r0, 0x8
-_080A6B36:
- strh r0, [r6, 0x20]
- adds r0, r5, 0
- movs r1, 0x3
- bl sub_8074480
- adds r4, r0, 0
- adds r0, r5, 0
- movs r1, 0
- bl sub_8076B2C
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _080A6B58
- adds r0, 0x3
-_080A6B58:
- asrs r0, 2
- subs r0, r4, r0
- strh r0, [r6, 0x22]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80A6B0C
-
- thumb_func_start sub_80A6B64
-sub_80A6B64: @ 80A6B64
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080A6B78 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A6B80
- ldr r0, _080A6B7C @ =gUnknown_2037F1A
- b _080A6B82
- .align 2, 0
-_080A6B78: .4byte gUnknown_2037F02
-_080A6B7C: .4byte gUnknown_2037F1A
-_080A6B80:
- ldr r0, _080A6BC0 @ =gUnknown_2037F1B
-_080A6B82:
- ldrb r4, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80A6B0C
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- negs r1, r0
- orrs r1, r0
- lsrs r1, 31
- ldr r0, _080A6BC4 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x2]
- strh r0, [r5, 0x2E]
- adds r0, r1, 0x2
- strh r0, [r5, 0x30]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r1, _080A6BC8 @ =sub_80A6BD0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A6BCC @ =sub_8074F6C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6BC0: .4byte gUnknown_2037F1B
-_080A6BC4: .4byte gUnknown_2037F02
-_080A6BC8: .4byte sub_80A6BD0
-_080A6BCC: .4byte sub_8074F6C
- thumb_func_end sub_80A6B64
-
- thumb_func_start sub_80A6BD0
-sub_80A6BD0: @ 80A6BD0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _080A6BF8
- ldr r1, _080A6C00 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, _080A6C04 @ =sub_8074F6C
- str r0, [r4, 0x1C]
-_080A6BF8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6C00: .4byte DestroyAnimSprite
-_080A6C04: .4byte sub_8074F6C
- thumb_func_end sub_80A6BD0
-
- thumb_func_start sub_80A6C08
-sub_80A6C08: @ 80A6C08
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080A6C1C @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A6C24
- ldr r0, _080A6C20 @ =gUnknown_2037F1A
- b _080A6C26
- .align 2, 0
-_080A6C1C: .4byte gUnknown_2037F02
-_080A6C20: .4byte gUnknown_2037F1A
-_080A6C24:
- ldr r0, _080A6C44 @ =gUnknown_2037F1B
-_080A6C26:
- ldrb r0, [r0]
- adds r1, r4, 0
- bl sub_80A6B0C
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r1, _080A6C48 @ =sub_80A6C50
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A6C4C @ =sub_8074F50
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6C44: .4byte gUnknown_2037F1B
-_080A6C48: .4byte sub_80A6C50
-_080A6C4C: .4byte sub_8074F50
- thumb_func_end sub_80A6C08
-
- thumb_func_start sub_80A6C50
-sub_80A6C50: @ 80A6C50
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080A6C76
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r1, _080A6C7C @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A6C80 @ =sub_8074F50
- str r0, [r4, 0x1C]
-_080A6C76:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6C7C: .4byte move_anim_8074EE0
-_080A6C80: .4byte sub_8074F50
- thumb_func_end sub_80A6C50
-
- thumb_func_start sub_80A6C84
-sub_80A6C84: @ 80A6C84
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r0, _080A6C98 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A6CA0
- ldr r0, _080A6C9C @ =gUnknown_2037F1A
- b _080A6CA2
- .align 2, 0
-_080A6C98: .4byte gUnknown_2037F02
-_080A6C9C: .4byte gUnknown_2037F1A
-_080A6CA0:
- ldr r0, _080A6CF4 @ =gUnknown_2037F1B
-_080A6CA2:
- ldrb r5, [r0]
- adds r0, r5, 0
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8076B2C
- strh r0, [r4, 0x22]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bgt _080A6CCA
- movs r0, 0xA
- strh r0, [r4, 0x22]
-_080A6CCA:
- movs r0, 0x1
- strh r0, [r4, 0x2E]
- strh r6, [r4, 0x30]
- adds r1, r4, 0
- adds r1, 0x43
- ldrb r0, [r1]
- strh r0, [r4, 0x32]
- ldrb r0, [r1]
- adds r0, 0x4
- strh r0, [r4, 0x34]
- strh r6, [r4, 0x36]
- ldr r1, _080A6CF8 @ =sub_80A6D00
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A6CFC @ =sub_8074F50
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6CF4: .4byte gUnknown_2037F1B
-_080A6CF8: .4byte sub_80A6D00
-_080A6CFC: .4byte sub_8074F50
- thumb_func_end sub_80A6C84
-
- thumb_func_start sub_80A6D00
-sub_80A6D00: @ 80A6D00
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x36]
- adds r0, 0x1
- strh r0, [r1, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _080A6D16
- ldr r0, _080A6D1C @ =sub_80A6D20
- str r0, [r1, 0x1C]
-_080A6D16:
- pop {r0}
- bx r0
- .align 2, 0
-_080A6D1C: .4byte sub_80A6D20
- thumb_func_end sub_80A6D00
-
- thumb_func_start sub_80A6D20
-sub_80A6D20: @ 80A6D20
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- adds r1, r0, 0x4
- strh r1, [r2, 0x30]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFE
- ble _080A6D52
- ldrh r0, [r2, 0x2E]
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bne _080A6D4C
- strh r0, [r2, 0x24]
- ldr r0, _080A6D48 @ =sub_80A6C50
- str r0, [r2, 0x1C]
- b _080A6D88
- .align 2, 0
-_080A6D48: .4byte sub_80A6C50
-_080A6D4C:
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2, 0x30]
-_080A6D52:
- movs r1, 0x30
- ldrsh r0, [r2, r1]
- cmp r0, 0x4F
- ble _080A6D62
- ldrh r0, [r2, 0x34]
- adds r1, r2, 0
- adds r1, 0x43
- strb r0, [r1]
-_080A6D62:
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- cmp r0, 0x9F
- ble _080A6D72
- ldrh r0, [r2, 0x32]
- adds r1, r2, 0
- adds r1, 0x43
- strb r0, [r1]
-_080A6D72:
- ldr r1, _080A6D8C @ =gSineTable
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- asrs r1, r0, 1
- adds r0, r1
- strh r0, [r2, 0x24]
-_080A6D88:
- pop {r0}
- bx r0
- .align 2, 0
-_080A6D8C: .4byte gSineTable
- thumb_func_end sub_80A6D20
-
- thumb_func_start sub_80A6D90
-sub_80A6D90: @ 80A6D90
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080A6DA4 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A6DAC
- ldr r0, _080A6DA8 @ =gUnknown_2037F1A
- b _080A6DAE
- .align 2, 0
-_080A6DA4: .4byte gUnknown_2037F02
-_080A6DA8: .4byte gUnknown_2037F1A
-_080A6DAC:
- ldr r0, _080A6DD0 @ =gUnknown_2037F1B
-_080A6DAE:
- ldrb r4, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80A6B0C
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A6DD4
- adds r0, r5, 0
- movs r1, 0
- bl StartSpriteAnim
- movs r0, 0x2
- b _080A6DDE
- .align 2, 0
-_080A6DD0: .4byte gUnknown_2037F1B
-_080A6DD4:
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0x3
-_080A6DDE:
- strh r0, [r5, 0x2E]
- ldr r0, _080A6DEC @ =sub_80A6DF0
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6DEC: .4byte sub_80A6DF0
- thumb_func_end sub_80A6D90
-
- thumb_func_start sub_80A6DF0
-sub_80A6DF0: @ 80A6DF0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- ble _080A6E1E
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r1, _080A6E24 @ =sub_80A6E2C
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A6E28 @ =sub_8074F6C
- str r0, [r4, 0x1C]
-_080A6E1E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6E24: .4byte sub_80A6E2C
-_080A6E28: .4byte sub_8074F6C
- thumb_func_end sub_80A6DF0
-
- thumb_func_start sub_80A6E2C
-sub_80A6E2C: @ 80A6E2C
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080A6E44
- adds r0, r1, 0
- bl DestroyAnimSprite
-_080A6E44:
- pop {r0}
- bx r0
- thumb_func_end sub_80A6E2C
-
- thumb_func_start sub_80A6E48
-sub_80A6E48: @ 80A6E48
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_8074FCC
- ldr r5, _080A6E8C @ =gUnknown_2037F02
- movs r0, 0
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl sub_8074FF8
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x32]
- ldrh r0, [r5, 0xA]
- strh r0, [r4, 0x34]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x36]
- ldr r1, _080A6E90 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r1, _080A6E94 @ =sub_8074BE4
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6E8C: .4byte gUnknown_2037F02
-_080A6E90: .4byte move_anim_8074EE0
-_080A6E94: .4byte sub_8074BE4
- thumb_func_end sub_80A6E48
-
- thumb_func_start sub_80A6E98
-sub_80A6E98: @ 80A6E98
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080A6EAC @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A6EB4
- ldr r0, _080A6EB0 @ =gUnknown_2037F1A
- b _080A6EB6
- .align 2, 0
-_080A6EAC: .4byte gUnknown_2037F02
-_080A6EB0: .4byte gUnknown_2037F1A
-_080A6EB4:
- ldr r0, _080A6ED0 @ =gUnknown_2037F1B
-_080A6EB6:
- ldrb r0, [r0]
- adds r1, r4, 0
- bl sub_80A6B0C
- movs r0, 0
- strh r0, [r4, 0x2E]
- strh r0, [r4, 0x30]
- ldr r0, _080A6ED4 @ =sub_80A6ED8
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6ED0: .4byte gUnknown_2037F1B
-_080A6ED4: .4byte sub_80A6ED8
- thumb_func_end sub_80A6E98
-
- thumb_func_start sub_80A6ED8
-sub_80A6ED8: @ 80A6ED8
- push {lr}
- adds r1, r0, 0
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- beq _080A6F0A
- cmp r0, 0x1
- bgt _080A6EEE
- cmp r0, 0
- beq _080A6EF4
- b _080A6F38
-_080A6EEE:
- cmp r0, 0x2
- beq _080A6F24
- b _080A6F38
-_080A6EF4:
- ldrh r0, [r1, 0x26]
- subs r0, 0x3
- strh r0, [r1, 0x26]
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _080A6F38
- b _080A6F1C
-_080A6F0A:
- ldrh r0, [r1, 0x26]
- adds r0, 0x3
- strh r0, [r1, 0x26]
- ldrh r0, [r1, 0x30]
- subs r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- cmp r0, 0
- bne _080A6F38
-_080A6F1C:
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- b _080A6F38
-_080A6F24:
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x40
- bne _080A6F38
- adds r0, r1, 0
- bl DestroyAnimSprite
-_080A6F38:
- pop {r0}
- bx r0
- thumb_func_end sub_80A6ED8
-
- thumb_func_start sub_80A6F3C
-sub_80A6F3C: @ 80A6F3C
- push {r4,lr}
- adds r4, r0, 0
- ldr r3, _080A6F88 @ =gSprites
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r4, 0x30]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- strh r1, [r0, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0x30]
- movs r0, 0x2E
- ldrsh r2, [r4, r0]
- cmp r2, 0
- bne _080A6F7A
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x24]
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080A6F7A:
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A6F88: .4byte gSprites
- thumb_func_end sub_80A6F3C
-
- thumb_func_start sub_80A6F8C
-sub_80A6F8C: @ 80A6F8C
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r4, _080A6FD4 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r1, _080A6FD8 @ =gUnknown_2023D44
- ldr r0, _080A6FDC @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r0, r1
- ldrb r6, [r0]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A6FE4
- ldr r0, _080A6FE0 @ =gUnknown_2037F02
- ldrh r1, [r5, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r5, 0x20]
- adds r1, r0, 0
- b _080A6FEE
- .align 2, 0
-_080A6FD4: .4byte gUnknown_2037F1A
-_080A6FD8: .4byte gUnknown_2023D44
-_080A6FDC: .4byte gUnknown_2037F1B
-_080A6FE0: .4byte gUnknown_2037F02
-_080A6FE4:
- ldr r1, _080A7018 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- strh r0, [r5, 0x20]
-_080A6FEE:
- ldrh r0, [r1, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r5, 0x30]
- strh r6, [r5, 0x32]
- ldr r0, _080A701C @ =sub_80A6F3C
- str r0, [r5, 0x1C]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7018: .4byte gUnknown_2037F02
-_080A701C: .4byte sub_80A6F3C
- thumb_func_end sub_80A6F8C
-
- thumb_func_start sub_80A7020
-sub_80A7020: @ 80A7020
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r1, _080A704C @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x38]
- ldr r0, _080A7050 @ =sub_8074C44
- str r0, [r4, 0x1C]
- ldr r1, _080A7054 @ =sub_80A7058
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A704C: .4byte gUnknown_2037F02
-_080A7050: .4byte sub_8074C44
-_080A7054: .4byte sub_80A7058
- thumb_func_end sub_80A7020
-
- thumb_func_start sub_80A7058
-sub_80A7058: @ 80A7058
- push {lr}
- ldrh r1, [r0, 0x30]
- strh r1, [r0, 0x2E]
- ldrh r1, [r0, 0x20]
- strh r1, [r0, 0x32]
- ldrh r1, [r0, 0x22]
- adds r1, 0xF
- strh r1, [r0, 0x36]
- ldr r1, _080A7078 @ =sub_8075590
- str r1, [r0, 0x1C]
- ldr r1, _080A707C @ =sub_80A7080
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .align 2, 0
-_080A7078: .4byte sub_8075590
-_080A707C: .4byte sub_80A7080
- thumb_func_end sub_80A7058
-
- thumb_func_start sub_80A7080
-sub_80A7080: @ 80A7080
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x38]
- movs r3, 0x38
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _080A7096
- adds r0, r1, 0
- bl DestroyAnimSprite
- b _080A709A
-_080A7096:
- subs r0, r2, 0x1
- strh r0, [r1, 0x38]
-_080A709A:
- pop {r0}
- bx r0
- thumb_func_end sub_80A7080
-
- thumb_func_start sub_80A70A0
-sub_80A70A0: @ 80A70A0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080A70CC @ =gUnknown_2023D44
- ldr r0, _080A70D0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_80758E0
- ldr r1, _080A70D4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080A70D8 @ =sub_80A70DC
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A70CC: .4byte gUnknown_2023D44
-_080A70D0: .4byte gUnknown_2037F1A
-_080A70D4: .4byte gTasks
-_080A70D8: .4byte sub_80A70DC
- thumb_func_end sub_80A70A0
-
- thumb_func_start sub_80A70DC
-sub_80A70DC: @ 80A70DC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080A710C @ =gUnknown_2023D44
- ldr r0, _080A7110 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r1, r0, r1
- ldrb r4, [r1]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A7118
- ldr r1, _080A7114 @ =gTasks
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x8]
- negs r0, r0
- lsls r0, 16
- lsrs r3, r0, 16
- adds r6, r2, 0
- b _080A7126
- .align 2, 0
-_080A710C: .4byte gUnknown_2023D44
-_080A7110: .4byte gUnknown_2037F1A
-_080A7114: .4byte gTasks
-_080A7118:
- ldr r2, _080A7158 @ =gTasks
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- adds r0, r2
- ldrh r3, [r0, 0x8]
- adds r6, r1, 0
-_080A7126:
- movs r2, 0x80
- lsls r2, 1
- adds r0, r4, 0
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldr r1, _080A7158 @ =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080A7160
- ldrh r0, [r1, 0x8]
- adds r0, 0xB0
- strh r0, [r1, 0x8]
- ldr r1, _080A715C @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x26]
- adds r1, 0x1
- b _080A718A
- .align 2, 0
-_080A7158: .4byte gTasks
-_080A715C: .4byte gSprites
-_080A7160:
- cmp r0, 0x1
- bne _080A7176
- ldrh r0, [r1, 0xE]
- adds r0, 0x1
- strh r0, [r1, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- bne _080A71D0
- movs r0, 0x2
- b _080A71CE
-_080A7176:
- ldrh r0, [r1, 0x8]
- subs r0, 0xB0
- strh r0, [r1, 0x8]
- ldr r1, _080A71C4 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x26]
- subs r1, 0x1
-_080A718A:
- strh r1, [r0, 0x26]
- adds r0, r4, 0
- bl sub_80759DC
- ldr r0, _080A71C8 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r3, 0x8
- ldrsh r2, [r1, r3]
- movs r0, 0xF2
- lsls r0, 4
- cmp r2, r0
- beq _080A71AA
- cmp r2, 0
- bne _080A71D0
-_080A71AA:
- ldrh r2, [r1, 0xA]
- movs r3, 0xA
- ldrsh r0, [r1, r3]
- cmp r0, 0x2
- bne _080A71CC
- adds r0, r4, 0
- bl sub_8075980
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _080A71D0
- .align 2, 0
-_080A71C4: .4byte gSprites
-_080A71C8: .4byte gTasks
-_080A71CC:
- adds r0, r2, 0x1
-_080A71CE:
- strh r0, [r1, 0xA]
-_080A71D0:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80A70DC
-
- thumb_func_start sub_80A71D8
-sub_80A71D8: @ 80A71D8
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_8074FCC
- ldr r0, _080A71FC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A7204
- ldr r0, _080A7200 @ =gUnknown_2037F02
- ldrh r1, [r4, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r4, 0x20]
- adds r5, r0, 0
- b _080A7210
- .align 2, 0
-_080A71FC: .4byte gUnknown_2037F1A
-_080A7200: .4byte gUnknown_2037F02
-_080A7204:
- ldr r1, _080A7244 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r5, r1, 0
-_080A7210:
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, _080A7248 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A724C
- adds r3, r4, 0
- adds r3, 0x3F
- ldrb r0, [r3]
- movs r1, 0x1
- adds r2, r0, 0
- orrs r2, r1
- strb r2, [r3]
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080A7260
- movs r0, 0x2
- orrs r2, r0
- strb r2, [r3]
- b _080A7260
- .align 2, 0
-_080A7244: .4byte gUnknown_2037F02
-_080A7248: .4byte gUnknown_2037F1A
-_080A724C:
- movs r2, 0x4
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _080A7260
- adds r2, r4, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
-_080A7260:
- ldr r0, _080A7274 @ =sub_8074F6C
- str r0, [r4, 0x1C]
- ldr r1, _080A7278 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7274: .4byte sub_8074F6C
-_080A7278: .4byte DestroyAnimSprite
- thumb_func_end sub_80A71D8
-
- thumb_func_start sub_80A727C
-sub_80A727C: @ 80A727C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_8075160
- ldr r0, _080A7298 @ =sub_8074F50
- str r0, [r4, 0x1C]
- ldr r1, _080A729C @ =sub_80A72A0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7298: .4byte sub_8074F50
-_080A729C: .4byte sub_80A72A0
- thumb_func_end sub_80A727C
-
- thumb_func_start sub_80A72A0
-sub_80A72A0: @ 80A72A0
- push {lr}
- movs r1, 0x6
- strh r1, [r0, 0x2E]
- ldrh r1, [r0, 0x20]
- strh r1, [r0, 0x32]
- ldrh r1, [r0, 0x22]
- subs r1, 0x20
- strh r1, [r0, 0x36]
- ldr r1, _080A72C0 @ =sub_8075590
- str r1, [r0, 0x1C]
- ldr r1, _080A72C4 @ =DestroyAnimSprite
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .align 2, 0
-_080A72C0: .4byte sub_8075590
-_080A72C4: .4byte DestroyAnimSprite
- thumb_func_end sub_80A72A0
-
- thumb_func_start sub_80A72C8
-sub_80A72C8: @ 80A72C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r5, r0, 0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A72EC
- ldr r1, _080A72E8 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- b _080A730E
- .align 2, 0
-_080A72E8: .4byte gUnknown_2037F02
-_080A72EC:
- ldr r0, _080A73B4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A730E
- ldr r1, _080A73B8 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r1, 0x6]
-_080A730E:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r4, _080A73BC @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- ldr r6, _080A73B8 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r6, 0x4]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r6, 0x6]
- adds r0, r2
- lsls r0, 16
- lsrs r0, 16
- adds r7, r0, 0
- ldrh r1, [r5, 0x20]
- mov r2, r8
- lsls r0, r2, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r5, 0x22]
- lsls r1, r7, 16
- asrs r1, 16
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl sub_8075B30
- lsls r0, 16
- movs r1, 0xF0
- lsls r1, 24
- adds r0, r1
- lsrs r4, r0, 16
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A7380
- ldr r2, _080A73C0 @ =0xffffa000
- adds r0, r4, r2
- lsls r0, 16
- lsrs r4, r0, 16
-_080A7380:
- movs r3, 0x80
- lsls r3, 1
- str r4, [sp]
- adds r0, r5, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_8075A1C
- ldrh r0, [r6, 0x8]
- strh r0, [r5, 0x2E]
- mov r0, r8
- strh r0, [r5, 0x32]
- strh r7, [r5, 0x36]
- ldr r0, _080A73C4 @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _080A73C8 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A73B4: .4byte gUnknown_2037F1A
-_080A73B8: .4byte gUnknown_2037F02
-_080A73BC: .4byte gUnknown_2037F1B
-_080A73C0: .4byte 0xffffa000
-_080A73C4: .4byte sub_8075590
-_080A73C8: .4byte DestroyAnimSprite
- thumb_func_end sub_80A72C8
-
- thumb_func_start sub_80A73CC
-sub_80A73CC: @ 80A73CC
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- subs r1, r0, 0x1
- strh r1, [r3, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bgt _080A73F6
- ldr r2, _080A73FC @ =gTasks
- movs r0, 0x3C
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0xA]
- subs r1, 0x1
- strh r1, [r0, 0xA]
- adds r0, r3, 0
- bl DestroySprite
-_080A73F6:
- pop {r0}
- bx r0
- .align 2, 0
-_080A73FC: .4byte gTasks
- thumb_func_end sub_80A73CC
-
- thumb_func_start sub_80A7400
-sub_80A7400: @ 80A7400
- push {r4,lr}
- adds r2, r0, 0
- movs r0, 0x3C
- ldrsh r1, [r2, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _080A7430 @ =gTasks
- adds r4, r0, r1
- movs r3, 0x2E
- ldrsh r1, [r2, r3]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- ble _080A7434
- ldrh r0, [r2, 0x34]
- ldrh r1, [r2, 0x38]
- adds r0, r1
- strh r0, [r2, 0x38]
- ldrh r0, [r2, 0x36]
- ldrh r3, [r2, 0x3A]
- adds r0, r3
- b _080A7442
- .align 2, 0
-_080A7430: .4byte gTasks
-_080A7434:
- ldrh r0, [r2, 0x38]
- ldrh r1, [r2, 0x34]
- subs r0, r1
- strh r0, [r2, 0x38]
- ldrh r0, [r2, 0x3A]
- ldrh r1, [r2, 0x36]
- subs r0, r1
-_080A7442:
- strh r0, [r2, 0x3A]
- ldrh r0, [r2, 0x38]
- ldrh r1, [r2, 0x30]
- adds r3, r0, r1
- strh r3, [r2, 0x30]
- ldrh r0, [r2, 0x3A]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- ldrh r1, [r4, 0x16]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A7466
- lsls r0, r3, 16
- lsrs r0, 24
- negs r0, r0
- b _080A746A
-_080A7466:
- lsls r0, r3, 16
- lsrs r0, 24
-_080A746A:
- strh r0, [r2, 0x24]
- ldrh r1, [r4, 0x18]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A747E
- ldrh r0, [r2, 0x32]
- lsrs r0, 8
- negs r0, r0
- b _080A7482
-_080A747E:
- ldrh r0, [r2, 0x32]
- lsrs r0, 8
-_080A7482:
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x2E]
- subs r1, r0, 0x1
- strh r1, [r2, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bgt _080A7498
- movs r0, 0x1E
- strh r0, [r2, 0x2E]
- ldr r0, _080A74A0 @ =sub_80A73CC
- str r0, [r2, 0x1C]
-_080A7498:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A74A0: .4byte sub_80A73CC
- thumb_func_end sub_80A7400
-
- thumb_func_start sub_80A74A4
-sub_80A74A4: @ 80A74A4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- movs r0, 0x3C
- ldrsh r1, [r7, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _080A74E8 @ =gTasks
- adds r6, r0, r1
- ldrh r2, [r6, 0x16]
- movs r1, 0x2
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- ldrh r3, [r7, 0x30]
- adds r2, r0, r3
- strh r2, [r7, 0x30]
- ldrh r0, [r6, 0x18]
- ands r1, r0
- ldrh r0, [r7, 0x32]
- adds r1, r0
- strh r1, [r7, 0x32]
- ldrh r1, [r6, 0x16]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A74EC
- lsls r0, r2, 16
- lsrs r0, 24
- negs r0, r0
- b _080A74F0
- .align 2, 0
-_080A74E8: .4byte gTasks
-_080A74EC:
- lsls r0, r2, 16
- lsrs r0, 24
-_080A74F0:
- strh r0, [r7, 0x24]
- ldrh r1, [r6, 0x18]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A7504
- ldrh r0, [r7, 0x32]
- lsrs r0, 8
- negs r0, r0
- b _080A7508
-_080A7504:
- ldrh r0, [r7, 0x32]
- lsrs r0, 8
-_080A7508:
- strh r0, [r7, 0x26]
- ldrh r0, [r7, 0x2E]
- subs r1, r0, 0x1
- strh r1, [r7, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bgt _080A75D4
- movs r4, 0
- movs r0, 0x8
- strh r0, [r7, 0x2E]
- movs r0, 0x4
- strh r0, [r6, 0x12]
- movs r0, 0x80
- lsls r0, 5
- bl sub_80D8B90
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r7, 0x24]
- ldrh r1, [r7, 0x20]
- adds r2, r0, r1
- strh r2, [r7, 0x20]
- ldrh r0, [r7, 0x26]
- ldrh r3, [r7, 0x22]
- adds r0, r3
- strh r0, [r7, 0x22]
- strh r4, [r7, 0x26]
- strh r4, [r7, 0x24]
- ldrh r3, [r6, 0x1E]
- movs r0, 0x1E
- ldrsh r1, [r6, r0]
- lsls r0, r2, 16
- asrs r0, 16
- cmp r1, r0
- blt _080A7552
- subs r0, r3, r2
- b _080A7554
-_080A7552:
- subs r0, r2, r3
-_080A7554:
- lsls r0, 24
- lsrs r4, r0, 16
- ldrh r3, [r6, 0x20]
- movs r0, 0x20
- ldrsh r1, [r6, r0]
- ldrh r2, [r7, 0x22]
- movs r6, 0x22
- ldrsh r0, [r7, r6]
- cmp r1, r0
- blt _080A756C
- subs r0, r3, r2
- b _080A756E
-_080A756C:
- subs r0, r2, r3
-_080A756E:
- lsls r0, 24
- lsrs r0, 16
- mov r8, r0
- movs r0, 0
- strh r0, [r7, 0x32]
- strh r0, [r7, 0x30]
- strh r0, [r7, 0x3A]
- strh r0, [r7, 0x38]
- lsls r0, r4, 16
- asrs r0, 16
- lsls r5, 16
- asrs r5, 16
- adds r1, r5, 0
- bl sub_80D8AA0
- adds r4, r0, 0
- lsls r4, 16
- asrs r4, 16
- movs r6, 0xE0
- lsls r6, 1
- adds r0, r6, 0
- bl sub_80D8B90
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl sub_80D8AA0
- strh r0, [r7, 0x34]
- mov r1, r8
- lsls r0, r1, 16
- asrs r0, 16
- adds r1, r5, 0
- bl sub_80D8AA0
- adds r4, r0, 0
- lsls r4, 16
- asrs r4, 16
- adds r0, r6, 0
- bl sub_80D8B90
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl sub_80D8AA0
- strh r0, [r7, 0x36]
- ldr r0, _080A75E0 @ =sub_80A7400
- str r0, [r7, 0x1C]
-_080A75D4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A75E0: .4byte sub_80A7400
- thumb_func_end sub_80A74A4
-
- thumb_func_start sub_80A75E4
-sub_80A75E4: @ 80A75E4
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080A7608 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0xA
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A7602
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080A7602:
- pop {r0}
- bx r0
- .align 2, 0
-_080A7608: .4byte gTasks
- thumb_func_end sub_80A75E4
-
- thumb_func_start sub_80A760C
-sub_80A760C: @ 80A760C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080A7660 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0x8]
- subs r1, r0, 0x1
- strh r1, [r5, 0x8]
- lsls r0, 16
- cmp r0, 0
- bgt _080A76E0
- ldr r0, _080A7664 @ =gUnknown_83E3C28
- movs r2, 0x1A
- ldrsh r1, [r5, r2]
- movs r3, 0x1C
- ldrsh r2, [r5, r3]
- ldrb r3, [r5, 0xC]
- ldrb r4, [r5, 0xA]
- subs r3, r4
- lsls r3, 24
- lsrs r3, 24
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- lsls r0, 4
- add r0, r12
- lsls r0, 2
- ldr r1, _080A7668 @ =gSprites
- adds r6, r0, r1
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080A766C
- cmp r0, 0x2
- beq _080A7682
- b _080A7690
- .align 2, 0
-_080A7660: .4byte gTasks
-_080A7664: .4byte gUnknown_83E3C28
-_080A7668: .4byte gSprites
-_080A766C:
- ldrb r2, [r6, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x18
- orrs r1, r0
- lsls r1, 1
- subs r0, 0x57
- ands r0, r2
- orrs r0, r1
- strb r0, [r6, 0x3]
- b _080A7690
-_080A7682:
- ldrb r0, [r6, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r6, 0x3]
-_080A7690:
- ldr r3, _080A76E8 @ =gTasks
- lsls r2, r7, 2
- adds r2, r7
- lsls r2, 3
- adds r4, r2, r3
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0x14]
- subs r0, r1
- strh r0, [r6, 0x2E]
- strh r7, [r6, 0x3C]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- adds r0, 0xD
- lsls r0, 1
- adds r0, r2
- adds r3, 0x8
- adds r0, r3
- mov r2, r12
- strh r2, [r0]
- ldrh r0, [r4, 0xE]
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r0, 0x3F
- negs r0, r0
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x93
- bl PlaySE12WithPanning
- movs r3, 0xA
- ldrsh r0, [r4, r3]
- cmp r0, 0x2
- ble _080A76E0
- ldr r0, _080A76EC @ =sub_80A75E4
- str r0, [r4]
-_080A76E0:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A76E8: .4byte gTasks
-_080A76EC: .4byte sub_80A75E4
- thumb_func_end sub_80A760C
-
- thumb_func_start sub_80A76F0
-sub_80A76F0: @ 80A76F0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0
- mov r9, r0
- movs r5, 0
- mov r0, sp
- mov r1, r9
- strh r1, [r0]
- mov r4, sp
- adds r4, 0x2
- strh r1, [r4]
- bl sub_8073788
- lsls r0, 24
- mov r10, r4
- cmp r0, 0
- beq _080A775C
- ldr r1, _080A774C @ =gTasks
- lsls r2, r7, 2
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0x2
- strh r1, [r0, 0x10]
- ldr r3, _080A7750 @ =gUnknown_2037F02
- ldrh r0, [r3]
- negs r0, r0
- strh r0, [r3]
- ldrh r1, [r3, 0x4]
- movs r0, 0x1
- ands r0, r1
- mov r8, r2
- cmp r0, 0
- beq _080A7754
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strh r0, [r3, 0x4]
- b _080A77B6
- .align 2, 0
-_080A774C: .4byte gTasks
-_080A7750: .4byte gUnknown_2037F02
-_080A7754:
- movs r0, 0x1
- orrs r0, r1
- strh r0, [r3, 0x4]
- b _080A77B6
-_080A775C:
- ldr r1, _080A77A0 @ =gUnknown_2023BD6
- ldr r0, _080A77A4 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- lsls r2, r7, 2
- mov r8, r2
- cmp r0, 0
- bne _080A77B6
- ldr r1, _080A77A8 @ =gTasks
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- strh r3, [r0, 0x10]
- ldr r2, _080A77AC @ =gUnknown_2037F02
- ldrh r0, [r2]
- negs r0, r0
- strh r0, [r2]
- ldrh r0, [r2, 0x2]
- negs r0, r0
- strh r0, [r2, 0x2]
- ldrh r1, [r2, 0x4]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080A77B0
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- b _080A77B4
- .align 2, 0
-_080A77A0: .4byte gUnknown_2023BD6
-_080A77A4: .4byte gUnknown_2037F1B
-_080A77A8: .4byte gTasks
-_080A77AC: .4byte gUnknown_2037F02
-_080A77B0:
- movs r0, 0x1
- orrs r0, r1
-_080A77B4:
- strh r0, [r2, 0x4]
-_080A77B6:
- ldr r5, _080A7810 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8074480
- ldr r1, _080A7814 @ =gTasks
- mov r3, r8
- adds r4, r3, r7
- lsls r4, 3
- adds r4, r1
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1A]
- adds r6, r0, 0
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1C]
- mov r9, r0
- ldr r0, _080A7818 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A7820
- ldr r4, _080A781C @ =gUnknown_2037F1B
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080A7820
- ldrb r0, [r4]
- movs r1, 0
- mov r2, sp
- mov r3, r10
- bl sub_8076D9C
- b _080A7842
- .align 2, 0
-_080A7810: .4byte gUnknown_2037F1A
-_080A7814: .4byte gTasks
-_080A7818: .4byte gBattleTypeFlags
-_080A781C: .4byte gUnknown_2037F1B
-_080A7820:
- mov r5, sp
- ldr r4, _080A787C @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- mov r1, r10
- strh r0, [r1]
-_080A7842:
- mov r4, sp
- ldr r0, _080A7880 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- mov r2, sp
- ldr r3, _080A7884 @ =gUnknown_2037F02
- ldrh r0, [r3]
- ldrh r2, [r2]
- adds r0, r2
- strh r0, [r1, 0x1E]
- strh r0, [r4]
- ldrh r0, [r3, 0x2]
- mov r3, r10
- ldrh r3, [r3]
- adds r0, r3
- strh r0, [r1, 0x20]
- mov r1, r10
- strh r0, [r1]
- mov r0, sp
- ldrh r2, [r0]
- movs r3, 0
- ldrsh r0, [r0, r3]
- adds r1, r6, 0
- cmp r0, r1
- blt _080A7888
- subs r0, r2, r1
- b _080A788A
- .align 2, 0
-_080A787C: .4byte gUnknown_2037F1B
-_080A7880: .4byte gTasks
-_080A7884: .4byte gUnknown_2037F02
-_080A7888:
- subs r0, r1, r2
-_080A788A:
- lsls r0, 16
- lsrs r0, 16
- lsls r4, r0, 16
- asrs r4, 16
- ldr r5, _080A7900 @ =gUnknown_2037F02
- ldrh r1, [r5, 0x4]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- lsls r0, 16
- asrs r0, 16
- bl sub_80D8B90
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl sub_80D8AA0
- ldr r2, _080A7904 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r6, r1, r2
- strh r0, [r6, 0x12]
- movs r1, 0x12
- ldrsh r0, [r6, r1]
- movs r1, 0x80
- bl sub_80D8AA0
- strh r0, [r6, 0x14]
- ldrh r0, [r5, 0x4]
- strh r0, [r6, 0x16]
- mov r2, r10
- ldrh r1, [r2]
- movs r3, 0
- ldrsh r0, [r2, r3]
- mov r4, r9
- cmp r0, r4
- blt _080A7908
- subs r4, r1, r4
- lsls r4, 16
- asrs r4, 16
- movs r1, 0x12
- ldrsh r0, [r6, r1]
- bl sub_80D8B90
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl sub_80D8AA0
- movs r1, 0x2
- negs r1, r1
- ands r1, r0
- strh r1, [r6, 0x18]
- b _080A7928
- .align 2, 0
-_080A7900: .4byte gUnknown_2037F02
-_080A7904: .4byte gTasks
-_080A7908:
- subs r4, r1
- lsls r4, 16
- asrs r4, 16
- movs r2, 0x12
- ldrsh r0, [r6, r2]
- bl sub_80D8B90
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl sub_80D8AA0
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r6, 0x18]
-_080A7928:
- ldr r1, _080A7968 @ =gTasks
- mov r3, r8
- adds r0, r3, r7
- lsls r0, 3
- adds r5, r0, r1
- ldr r4, _080A796C @ =gUnknown_2037F02
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0xE]
- ldrh r1, [r4, 0x8]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080A7978
- movs r0, 0x80
- eors r0, r1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3F
- ble _080A79A0
- ldr r0, _080A7970 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_807685C
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A7974 @ =0x0000ffc0
- adds r1, r2, 0
- ldrh r4, [r4, 0x8]
- adds r1, r4
- adds r0, r1
- b _080A79B0
- .align 2, 0
-_080A7968: .4byte gTasks
-_080A796C: .4byte gUnknown_2037F02
-_080A7970: .4byte gUnknown_2037F1B
-_080A7974: .4byte 0x0000ffc0
-_080A7978:
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x3F
- ble _080A79A0
- ldr r0, _080A7998 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_807685C
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080A799C @ =0x0000ffc0
- adds r1, r3, 0
- ldrh r4, [r4, 0x8]
- adds r1, r4
- adds r0, r1
- b _080A79B0
- .align 2, 0
-_080A7998: .4byte gUnknown_2037F1B
-_080A799C: .4byte 0x0000ffc0
-_080A79A0:
- ldr r0, _080A79DC @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_807685C
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x8]
- subs r0, r1
-_080A79B0:
- strh r0, [r5, 0xC]
- ldr r0, _080A79E0 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0x2
- bgt _080A79C8
- movs r0, 0x3
- strh r0, [r1, 0xC]
-_080A79C8:
- ldr r0, _080A79E4 @ =sub_80A760C
- str r0, [r1]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A79DC: .4byte gUnknown_2037F1B
-_080A79E0: .4byte gTasks
-_080A79E4: .4byte sub_80A760C
- thumb_func_end sub_80A76F0
-
- thumb_func_start sub_80A79E8
-sub_80A79E8: @ 80A79E8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_8075160
- ldr r0, _080A7A10 @ =gUnknown_83E3D18
- ldrh r0, [r0, 0x2]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r4, 0x2E]
- ldr r0, _080A7A14 @ =sub_80A7A18
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7A10: .4byte gUnknown_83E3D18
-_080A7A14: .4byte sub_80A7A18
- thumb_func_end sub_80A79E8
-
- thumb_func_start sub_80A7A18
-sub_80A7A18: @ 80A7A18
- push {r4-r7,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080A7A7C
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r5, [r4, 0x2E]
- ldr r1, _080A7A84 @ =gPlttBufferFaded
- adds r0, r5, 0
- adds r0, 0x8
- lsls r0, 1
- adds r0, r1
- ldrh r7, [r0]
- adds r6, r1, 0
- adds r1, r5, 0
- adds r1, 0x9
- lsls r0, r5, 1
- adds r0, r6
- adds r2, r0, 0
- adds r2, 0x10
- movs r3, 0x7
- lsls r1, 1
- adds r1, r6
-_080A7A50:
- ldrh r0, [r1]
- strh r0, [r2]
- adds r1, 0x2
- adds r2, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080A7A50
- adds r0, r5, 0
- adds r0, 0xF
- lsls r0, 1
- adds r0, r6
- strh r7, [r0]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x18
- bne _080A7A7C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A7A7C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7A84: .4byte gPlttBufferFaded
- thumb_func_end sub_80A7A18
-
- thumb_func_start sub_80A7A88
-sub_80A7A88: @ 80A7A88
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r4, _080A7B28 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- ldr r4, _080A7B2C @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- adds r0, r1
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r0, _080A7B30 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A7ACC
- ldrh r0, [r4, 0x4]
- negs r0, r0
- strh r0, [r4, 0x4]
-_080A7ACC:
- lsls r0, r6, 16
- asrs r0, 16
- ldrh r1, [r4, 0x4]
- adds r0, r1
- lsls r0, 16
- ldrh r1, [r5, 0x20]
- lsrs r6, r0, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r5, 0x22]
- lsls r1, r7, 16
- asrs r1, 16
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl sub_8075B30
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 24
- adds r0, r1
- lsrs r0, 16
- movs r3, 0x80
- lsls r3, 1
- str r0, [sp]
- adds r0, r5, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_8075A1C
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x2E]
- strh r6, [r5, 0x32]
- strh r7, [r5, 0x36]
- ldr r0, _080A7B34 @ =sub_80756A4
- str r0, [r5, 0x1C]
- ldr r1, _080A7B38 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7B28: .4byte gUnknown_2037F1B
-_080A7B2C: .4byte gUnknown_2037F02
-_080A7B30: .4byte gUnknown_2037F1A
-_080A7B34: .4byte sub_80756A4
-_080A7B38: .4byte DestroyAnimSprite
- thumb_func_end sub_80A7A88
-
- thumb_func_start sub_80A7B3C
-sub_80A7B3C: @ 80A7B3C
- ldr r1, _080A7B4C @ =0x0000fff0
- strh r1, [r0, 0x32]
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- ldr r1, _080A7B50 @ =sub_80A7B54
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080A7B4C: .4byte 0x0000fff0
-_080A7B50: .4byte sub_80A7B54
- thumb_func_end sub_80A7B3C
-
- thumb_func_start sub_80A7B54
-sub_80A7B54: @ 80A7B54
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x80
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- ldr r0, _080A7BC0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A7B78
- ldrh r0, [r4, 0x24]
- negs r0, r0
- strh r0, [r4, 0x24]
-_080A7B78:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x5
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7E
- ble _080A7BB8
- movs r0, 0
- strh r0, [r4, 0x30]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080A7BB8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A7BB8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7BC0: .4byte gUnknown_2037F1A
- thumb_func_end sub_80A7B54
-
- thumb_func_start sub_80A7BC4
-sub_80A7BC4: @ 80A7BC4
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- movs r0, 0x14
- strh r0, [r4, 0x2E]
- ldr r5, _080A7C10 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldr r0, _080A7C14 @ =sub_8075590
- str r0, [r4, 0x1C]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080A7C18 @ =sub_80A7C1C
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7C10: .4byte gUnknown_2037F1B
-_080A7C14: .4byte sub_8075590
-_080A7C18: .4byte sub_80A7C1C
- thumb_func_end sub_80A7BC4
-
- thumb_func_start sub_80A7C1C
-sub_80A7C1C: @ 80A7C1C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x3F
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x9F
- bl PlaySE12WithPanning
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x26]
- strh r1, [r4, 0x24]
- movs r2, 0
- movs r1, 0x7
- adds r0, r4, 0
- adds r0, 0x3C
-_080A7C50:
- strh r2, [r0]
- subs r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _080A7C50
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x7
- ands r0, r1
- ldr r2, _080A7C98 @ =0x0000fff4
- adds r1, r2, 0
- subs r1, r0
- strh r1, [r4, 0x3A]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA0
- bl __umodsi3
- adds r0, 0xA0
- strh r0, [r4, 0x3C]
- ldr r0, _080A7C9C @ =sub_80A7CA0
- str r0, [r4, 0x1C]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7C98: .4byte 0x0000fff4
-_080A7C9C: .4byte sub_80A7CA0
- thumb_func_end sub_80A7C1C
-
- thumb_func_start sub_80A7CA0
-sub_80A7CA0: @ 80A7CA0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x3C]
- ldrh r2, [r4, 0x2E]
- adds r0, r1, r2
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r2, r0, 24
- strh r2, [r4, 0x24]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A7CBE
- negs r0, r2
- strh r0, [r4, 0x24]
-_080A7CBE:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r2, 0x3A
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x8
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7E
- ble _080A7CFE
- movs r0, 0
- strh r0, [r4, 0x30]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080A7CFE
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A7CFE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A7CA0
-
- thumb_func_start sub_80A7D04
-sub_80A7D04: @ 80A7D04
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_8075160
- ldr r0, _080A7D54 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A7D22
- ldrh r0, [r4, 0x22]
- adds r0, 0x10
- strh r0, [r4, 0x22]
-_080A7D22:
- ldr r1, _080A7D58 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0xC]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x36]
- ldr r0, _080A7D5C @ =sub_8074A80
- str r0, [r4, 0x1C]
- ldr r1, _080A7D60 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7D54: .4byte gUnknown_2037F1A
-_080A7D58: .4byte gUnknown_2037F02
-_080A7D5C: .4byte sub_8074A80
-_080A7D60: .4byte DestroyAnimSprite
- thumb_func_end sub_80A7D04
-
- thumb_func_start sub_80A7D64
-sub_80A7D64: @ 80A7D64
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- movs r7, 0x20
- ldr r4, _080A7DE0 @ =0x0000ffe0
- movs r0, 0x10
- mov r8, r0
- ldr r6, _080A7DE4 @ =0x0000fff0
- ldr r0, _080A7DE8 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080A7D90
- adds r7, r4, 0
- movs r4, 0x20
- mov r8, r6
- movs r6, 0x10
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080A7D90:
- lsls r0, r7, 16
- asrs r0, 16
- ldrh r1, [r5, 0x20]
- adds r0, r1
- strh r0, [r5, 0x20]
- lsls r0, r4, 16
- asrs r0, 16
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- movs r0, 0x6
- strh r0, [r5, 0x2E]
- ldr r4, _080A7DEC @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- add r0, r8
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- strh r0, [r5, 0x36]
- ldr r0, _080A7DF0 @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _080A7DF4 @ =sub_80A7DF8
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7DE0: .4byte 0x0000ffe0
-_080A7DE4: .4byte 0x0000fff0
-_080A7DE8: .4byte gUnknown_2037F02
-_080A7DEC: .4byte gUnknown_2037F1B
-_080A7DF0: .4byte sub_8075590
-_080A7DF4: .4byte sub_80A7DF8
- thumb_func_end sub_80A7D64
-
- thumb_func_start sub_80A7DF8
-sub_80A7DF8: @ 80A7DF8
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080A7E0E
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080A7E0E:
- pop {r0}
- bx r0
- thumb_func_end sub_80A7DF8
-
- thumb_func_start sub_80A7E14
-sub_80A7E14: @ 80A7E14
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- movs r0, 0x20
- mov r8, r0
- ldr r4, _080A7EA8 @ =0x0000ffe0
- movs r2, 0x10
- mov r9, r2
- ldr r6, _080A7EAC @ =0x0000fff0
- ldr r7, _080A7EB0 @ =gUnknown_2037F02
- ldrh r1, [r7]
- movs r2, 0
- ldrsh r0, [r7, r2]
- cmp r0, 0
- beq _080A7E48
- mov r8, r4
- movs r4, 0x20
- mov r9, r6
- movs r6, 0x10
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnim
-_080A7E48:
- mov r0, r8
- lsls r1, r0, 16
- asrs r1, 16
- ldrh r2, [r5, 0x20]
- adds r1, r2
- strh r1, [r5, 0x20]
- lsls r0, r4, 16
- asrs r0, 16
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- movs r0, 0x6
- strh r0, [r5, 0x2E]
- strh r1, [r5, 0x30]
- ldr r4, _080A7EB4 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- add r0, r9
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldrh r0, [r7]
- strh r0, [r5, 0x38]
- ldrh r0, [r5, 0x2E]
- strh r0, [r5, 0x3A]
- ldr r0, _080A7EB8 @ =sub_80A7EBC
- str r0, [r5, 0x1C]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7EA8: .4byte 0x0000ffe0
-_080A7EAC: .4byte 0x0000fff0
-_080A7EB0: .4byte gUnknown_2037F02
-_080A7EB4: .4byte gUnknown_2037F1B
-_080A7EB8: .4byte sub_80A7EBC
- thumb_func_end sub_80A7E14
-
- thumb_func_start sub_80A7EBC
-sub_80A7EBC: @ 80A7EBC
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080A7F20
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080A7F20
- adds r0, r4, 0
- movs r1, 0
- bl SeekSpriteAnim
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- movs r2, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- movs r0, 0x2
- strh r0, [r4, 0x24]
- ldr r0, _080A7F28 @ =0x0000fffe
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- eors r0, r1
- strh r0, [r4, 0x32]
- strh r2, [r4, 0x36]
- strh r2, [r4, 0x34]
- ldr r0, _080A7F2C @ =sub_80A7F30
- str r0, [r4, 0x1C]
-_080A7F20:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7F28: .4byte 0x0000fffe
-_080A7F2C: .4byte sub_80A7F30
- thumb_func_end sub_80A7EBC
-
- thumb_func_start sub_80A7F30
-sub_80A7F30: @ 80A7F30
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080A7F48
- ldrh r0, [r4, 0x24]
- negs r0, r0
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x26]
- negs r0, r0
- strh r0, [r4, 0x26]
-_080A7F48:
- ldrh r0, [r4, 0x34]
- movs r1, 0x1
- eors r0, r1
- movs r1, 0
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _080A7F8A
- strh r1, [r4, 0x26]
- strh r1, [r4, 0x24]
- strh r1, [r4, 0x36]
- strh r1, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x38]
- movs r1, 0x1
- eors r1, r0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, _080A7F90 @ =sub_80A7F94
- str r0, [r4, 0x1C]
-_080A7F8A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A7F90: .4byte sub_80A7F94
- thumb_func_end sub_80A7F30
-
- thumb_func_start sub_80A7F94
-sub_80A7F94: @ 80A7F94
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080A7FA8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A7FA8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A7F94
-
- thumb_func_start sub_80A7FB0
-sub_80A7FB0: @ 80A7FB0
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x1
- bl GetAnimBankSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80758E0
- adds r0, r4, 0
- movs r1, 0xD0
- movs r2, 0xD0
- movs r3, 0
- bl obj_id_set_rotscale
- ldr r1, _080A8008 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- movs r1, 0
- bl sub_8075B48
- ldr r1, _080A800C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x50
- strh r1, [r0, 0x8]
- ldr r1, _080A8010 @ =sub_80A8014
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8008: .4byte gSprites
-_080A800C: .4byte gTasks
-_080A8010: .4byte sub_80A8014
- thumb_func_end sub_80A7FB0
-
- thumb_func_start sub_80A8014
-sub_80A8014: @ 80A8014
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080A806C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- subs r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080A8064
- movs r0, 0x1
- bl GetAnimBankSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_8075980
- ldr r1, _080A8070 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- movs r1, 0x1
- bl sub_8075B48
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080A8064:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A806C: .4byte gTasks
-_080A8070: .4byte gSprites
- thumb_func_end sub_80A8014
-
- thumb_func_start sub_80A8074
-sub_80A8074: @ 80A8074
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080A80C0 @ =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r4, 0x8]
- movs r1, 0
- bl sub_80758E0
- strh r5, [r4, 0xA]
- strh r5, [r4, 0xC]
- strh r5, [r4, 0xE]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0x10]
- strh r5, [r4, 0x12]
- strh r5, [r4, 0x14]
- ldr r0, _080A80C4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_807685C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x16]
- ldr r0, _080A80C8 @ =sub_80A80CC
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A80C0: .4byte gTasks
-_080A80C4: .4byte gUnknown_2037F1A
-_080A80C8: .4byte sub_80A80CC
- thumb_func_end sub_80A8074
-
- thumb_func_start sub_80A80CC
-sub_80A80CC: @ 80A80CC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080A80F0 @ =gTasks
- adds r4, r0, r1
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bls _080A80E6
- b _080A81F6
-_080A80E6:
- lsls r0, 2
- ldr r1, _080A80F4 @ =_080A80F8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080A80F0: .4byte gTasks
-_080A80F4: .4byte _080A80F8
- .align 2, 0
-_080A80F8:
- .4byte _080A8110
- .4byte _080A8158
- .4byte _080A818E
- .4byte _080A8194
- .4byte _080A81A4
- .4byte _080A81D8
-_080A8110:
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080A8120
- cmp r0, 0x3
- beq _080A8120
- cmp r0, 0x6
- bne _080A8128
-_080A8120:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80A8200
-_080A8128:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x10]
- adds r0, 0x28
- strh r0, [r4, 0x10]
- ldrb r0, [r4, 0x8]
- movs r1, 0x10
- ldrsh r2, [r4, r1]
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrb r0, [r4, 0x8]
- bl sub_8076440
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0x20
- bne _080A81F6
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- b _080A81D0
-_080A8158:
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A81F6
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- cmp r1, 0x3
- bne _080A816E
- strh r0, [r4, 0xC]
- strh r1, [r4, 0xA]
- b _080A81F6
-_080A816E:
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- movs r2, 0x80
- lsls r2, 1
- strh r2, [r4, 0x10]
- ldrb r0, [r4, 0x8]
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrb r0, [r4, 0x8]
- bl sub_8076440
- movs r0, 0x2
- strh r0, [r4, 0xA]
- b _080A81F6
-_080A818E:
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080A81F6
-_080A8194:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x20
- ble _080A81F6
- b _080A81CC
-_080A81A4:
- ldrh r0, [r4, 0xC]
- adds r0, 0x2
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x10]
- subs r0, 0x50
- strh r0, [r4, 0x10]
- ldrb r0, [r4, 0x8]
- movs r1, 0x10
- ldrsh r2, [r4, r1]
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrb r0, [r4, 0x8]
- bl sub_8076440
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0x20
- bne _080A81F6
-_080A81CC:
- movs r0, 0
- strh r0, [r4, 0xC]
-_080A81D0:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _080A81F6
-_080A81D8:
- ldrb r0, [r4, 0x8]
- bl sub_8075980
- ldr r2, _080A81FC @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x26]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080A81F6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A81FC: .4byte gSprites
- thumb_func_end sub_80A80CC
-
- thumb_func_start sub_80A8200
-sub_80A8200: @ 80A8200
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- movs r0, 0
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r0, 16
- asrs r4, r0, 16
- cmp r4, 0
- blt _080A82DA
- bl AllocOamMatrix
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xFF
- bne _080A8244
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _080A8240 @ =gSprites
- adds r0, r1
- bl obj_delete_but_dont_free_vram
- b _080A82DA
- .align 2, 0
-_080A8240: .4byte gSprites
-_080A8244:
- ldr r5, _080A82E8 @ =gSprites
- lsls r3, r4, 4
- adds r3, r4
- lsls r3, 2
- adds r4, r3, r5
- ldrb r1, [r4, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r4, 0x1]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x1F
- ands r6, r0
- lsls r2, r6, 1
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x3]
- ldrb r0, [r7, 0x16]
- ldrb r1, [r7, 0xE]
- subs r0, r1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrh r0, [r7, 0xE]
- adds r0, 0x1
- strh r0, [r7, 0xE]
- ldrh r0, [r7, 0x14]
- adds r0, 0x1
- strh r0, [r7, 0x14]
- movs r0, 0x10
- strh r0, [r4, 0x2E]
- mov r0, r9
- strh r0, [r4, 0x30]
- movs r0, 0x6
- strh r0, [r4, 0x32]
- adds r5, 0x1C
- adds r3, r5
- ldr r0, _080A82EC @ =sub_80A82F0
- str r0, [r3]
- mov r1, r8
- lsls r0, r1, 24
- lsrs r0, 24
- movs r1, 0x10
- ldrsh r2, [r7, r1]
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrb r0, [r4, 0x1]
- movs r3, 0x4
- negs r3, r3
- ands r3, r0
- movs r0, 0x1
- orrs r3, r0
- strb r3, [r4, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r4, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- adds r0, r4, 0
- bl CalcCenterToCornerVec
-_080A82DA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A82E8: .4byte gSprites
-_080A82EC: .4byte sub_80A82F0
- thumb_func_end sub_80A8200
-
- thumb_func_start sub_80A82F0
-sub_80A82F0: @ 80A82F0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _080A832E
- ldr r3, _080A8334 @ =gTasks
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x30
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl obj_delete_but_dont_free_vram
-_080A832E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8334: .4byte gTasks
- thumb_func_end sub_80A82F0
-
- thumb_func_start sub_80A8338
-sub_80A8338: @ 80A8338
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080A835C @ =gTasks
- adds r4, r0, r1
- ldr r5, _080A8360 @ =gUnknown_2037F02
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A8364
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- b _080A838A
- .align 2, 0
-_080A835C: .4byte gTasks
-_080A8360: .4byte gUnknown_2037F02
-_080A8364:
- ldrb r0, [r5]
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- strh r1, [r4, 0x8]
- strh r2, [r4, 0xA]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0xC]
- strh r2, [r4, 0xE]
- strh r2, [r4, 0x10]
- ldr r2, _080A8390 @ =gUnknown_83E3E60
- adds r0, r4, 0
- bl sub_80762D0
- ldr r0, _080A8394 @ =sub_80A8398
- str r0, [r4]
-_080A838A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8390: .4byte gUnknown_83E3E60
-_080A8394: .4byte sub_80A8398
- thumb_func_end sub_80A8338
-
- thumb_func_start sub_80A8398
-sub_80A8398: @ 80A8398
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080A83BC @ =gTasks
- adds r4, r0, r1
- movs r0, 0xA
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _080A8400
- cmp r5, 0x1
- bgt _080A83C0
- cmp r5, 0
- beq _080A83CA
- b _080A84A8
- .align 2, 0
-_080A83BC: .4byte gTasks
-_080A83C0:
- cmp r5, 0x2
- beq _080A8434
- cmp r5, 0x3
- beq _080A8464
- b _080A84A8
-_080A83CA:
- adds r0, r4, 0
- bl sub_8076308
- ldrh r2, [r4, 0x10]
- adds r2, 0x3
- strh r2, [r4, 0x10]
- ldr r3, _080A83FC @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x26]
- adds r1, r2
- strh r1, [r0, 0x26]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080A84A8
- strh r5, [r4, 0xE]
- b _080A845C
- .align 2, 0
-_080A83FC: .4byte gSprites
-_080A8400:
- adds r0, r4, 0
- bl sub_8076308
- ldr r2, _080A8430 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x10]
- ldrh r2, [r0, 0x26]
- adds r1, r2
- strh r1, [r0, 0x26]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080A84A8
- movs r0, 0
- strh r0, [r4, 0xE]
- b _080A845C
- .align 2, 0
-_080A8430: .4byte gSprites
-_080A8434:
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080A845C
- ldr r2, _080A8458 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x2
- strh r1, [r0, 0x26]
- ldrh r0, [r4, 0x10]
- subs r0, 0x2
- strh r0, [r4, 0x10]
- b _080A84A8
- .align 2, 0
-_080A8458: .4byte gSprites
-_080A845C:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _080A84A8
-_080A8464:
- adds r0, r4, 0
- bl sub_8076308
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080A84A8
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- cmp r0, 0
- bne _080A849C
- ldr r2, _080A8498 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x26]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- b _080A84A8
- .align 2, 0
-_080A8498: .4byte gSprites
-_080A849C:
- ldrb r1, [r4, 0x8]
- ldr r2, _080A84B0 @ =gUnknown_83E3E60
- adds r0, r4, 0
- bl sub_80762D0
- strh r5, [r4, 0xA]
-_080A84A8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A84B0: .4byte gUnknown_83E3E60
- thumb_func_end sub_80A8398
-
- thumb_func_start sub_80A84B4
-sub_80A84B4: @ 80A84B4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080A84E4 @ =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080A84E8 @ =gUnknown_83E3E80
- adds r0, r4, 0
- bl sub_80762D0
- ldr r0, _080A84EC @ =sub_80A84F0
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A84E4: .4byte gTasks
-_080A84E8: .4byte gUnknown_83E3E80
-_080A84EC: .4byte sub_80A84F0
- thumb_func_end sub_80A84B4
-
- thumb_func_start sub_80A84F0
-sub_80A84F0: @ 80A84F0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080A8518 @ =gTasks
- adds r0, r1
- bl sub_8076308
- lsls r0, 24
- cmp r0, 0
- bne _080A8510
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080A8510:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8518: .4byte gTasks
- thumb_func_end sub_80A84F0
-
- thumb_func_start sub_80A851C
-sub_80A851C: @ 80A851C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080A854C @ =gUnknown_2037F1A
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A8550
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x20
- strh r0, [r4, 0x20]
- movs r0, 0x40
- b _080A856A
- .align 2, 0
-_080A854C: .4byte gUnknown_2037F1A
-_080A8550:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x20
- strh r0, [r4, 0x20]
- ldr r0, _080A859C @ =0x0000ffc0
-_080A856A:
- strh r0, [r4, 0x30]
- ldr r0, _080A85A0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- strh r0, [r4, 0x22]
- movs r0, 0x34
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x32]
- strh r1, [r4, 0x34]
- strh r1, [r4, 0x36]
- ldr r1, _080A85A4 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A85A8 @ =sub_8074D00
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A859C: .4byte 0x0000ffc0
-_080A85A0: .4byte gUnknown_2037F1A
-_080A85A4: .4byte DestroyAnimSprite
-_080A85A8: .4byte sub_8074D00
- thumb_func_end sub_80A851C
-
- thumb_func_start sub_80A85AC
-sub_80A85AC: @ 80A85AC
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r0, _080A85C0 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A85C8
- ldr r0, _080A85C4 @ =gUnknown_2037F1A
- b _080A85CA
- .align 2, 0
-_080A85C0: .4byte gUnknown_2037F02
-_080A85C4: .4byte gUnknown_2037F1A
-_080A85C8:
- ldr r0, _080A8628 @ =gUnknown_2037F1B
-_080A85CA:
- ldrb r5, [r0]
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A85E4
- ldr r1, _080A862C @ =gUnknown_2037F02
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_080A85E4:
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- ldr r4, _080A862C @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x20]
- adds r0, r5, 0
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x4]
- adds r0, r4
- strh r0, [r6, 0x22]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- bgt _080A8616
- movs r0, 0x8
- strh r0, [r6, 0x22]
-_080A8616:
- ldr r1, _080A8630 @ =move_anim_8074EE0
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080A8634 @ =sub_8074F50
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8628: .4byte gUnknown_2037F1B
-_080A862C: .4byte gUnknown_2037F02
-_080A8630: .4byte move_anim_8074EE0
-_080A8634: .4byte sub_8074F50
- thumb_func_end sub_80A85AC
-
- thumb_func_start sub_80A8638
-sub_80A8638: @ 80A8638
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080A866C @ =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- strh r1, [r4, 0x8]
- strh r0, [r4, 0xA]
- ldr r2, _080A8670 @ =gUnknown_83E3F1C
- adds r0, r4, 0
- bl sub_80762D0
- ldr r0, _080A8674 @ =sub_80A8678
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A866C: .4byte gTasks
-_080A8670: .4byte gUnknown_83E3F1C
-_080A8674: .4byte sub_80A8678
- thumb_func_end sub_80A8638
-
- thumb_func_start sub_80A8678
-sub_80A8678: @ 80A8678
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080A86A0 @ =gTasks
- adds r0, r1
- bl sub_8076308
- lsls r0, 24
- cmp r0, 0
- bne _080A8698
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080A8698:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A86A0: .4byte gTasks
- thumb_func_end sub_80A8678
-
- thumb_func_start sub_80A86A4
-sub_80A86A4: @ 80A86A4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080A8718 @ =gTasks
- adds r4, r1, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- strh r0, [r4, 0x8]
- strh r2, [r4, 0xA]
- movs r0, 0x4
- strh r0, [r4, 0xC]
- movs r0, 0x7
- strh r0, [r4, 0xE]
- movs r0, 0x3
- strh r0, [r4, 0x10]
- ldr r3, _080A871C @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x20]
- strh r0, [r4, 0x12]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x22]
- strh r0, [r4, 0x14]
- strh r2, [r4, 0x16]
- strh r2, [r4, 0x18]
- movs r0, 0x2
- strh r0, [r4, 0x1A]
- ldr r0, _080A8720 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A870E
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0xC]
-_080A870E:
- ldr r0, _080A8724 @ =sub_80A8728
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8718: .4byte gTasks
-_080A871C: .4byte gSprites
-_080A8720: .4byte gUnknown_2037F1A
-_080A8724: .4byte sub_80A8728
- thumb_func_end sub_80A86A4
-
- thumb_func_start sub_80A8728
-sub_80A8728: @ 80A8728
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080A8770 @ =gTasks
- adds r3, r0, r1
- ldrh r0, [r3, 0x16]
- adds r0, 0x1
- strh r0, [r3, 0x16]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080A878E
- movs r0, 0
- strh r0, [r3, 0x16]
- ldrh r0, [r3, 0x18]
- adds r0, 0x1
- strh r0, [r3, 0x18]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A8778
- ldr r2, _080A8774 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x1A]
- ldrh r2, [r0, 0x22]
- adds r1, r2
- b _080A878C
- .align 2, 0
-_080A8770: .4byte gTasks
-_080A8774: .4byte gSprites
-_080A8778:
- ldr r2, _080A87A0 @ =gSprites
- movs r5, 0x8
- ldrsh r1, [r3, r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- ldrh r2, [r3, 0x1A]
- subs r1, r2
-_080A878C:
- strh r1, [r0, 0x22]
-_080A878E:
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- beq _080A87DC
- cmp r0, 0x1
- bgt _080A87A4
- cmp r0, 0
- beq _080A87AA
- b _080A886C
- .align 2, 0
-_080A87A0: .4byte gSprites
-_080A87A4:
- cmp r0, 0x2
- beq _080A880C
- b _080A886C
-_080A87AA:
- ldr r2, _080A87D8 @ =gSprites
- movs r5, 0x8
- ldrsh r1, [r3, r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0xC]
- ldrh r2, [r0, 0x20]
- adds r1, r2
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0xE]
- subs r0, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _080A886C
- movs r0, 0xE
- strh r0, [r3, 0xE]
- movs r0, 0x1
- strh r0, [r3, 0xA]
- b _080A886C
- .align 2, 0
-_080A87D8: .4byte gSprites
-_080A87DC:
- ldr r2, _080A8808 @ =gSprites
- movs r5, 0x8
- ldrsh r1, [r3, r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x20]
- ldrh r2, [r3, 0xC]
- subs r1, r2
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0xE]
- subs r0, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _080A886C
- movs r0, 0x7
- strh r0, [r3, 0xE]
- movs r0, 0x2
- strh r0, [r3, 0xA]
- b _080A886C
- .align 2, 0
-_080A8808: .4byte gSprites
-_080A880C:
- ldr r2, _080A8844 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0xC]
- ldrh r5, [r0, 0x20]
- adds r1, r5
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0xE]
- subs r0, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0
- bne _080A886C
- ldrh r0, [r3, 0x10]
- subs r0, 0x1
- strh r0, [r3, 0x10]
- lsls r0, 16
- cmp r0, 0
- beq _080A8848
- movs r0, 0x7
- strh r0, [r3, 0xE]
- strh r1, [r3, 0xA]
- b _080A886C
- .align 2, 0
-_080A8844: .4byte gSprites
-_080A8848:
- ldrh r1, [r3, 0x18]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A8866
- movs r0, 0x8
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- ldrh r2, [r3, 0x1A]
- subs r1, r2
- strh r1, [r0, 0x22]
-_080A8866:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080A886C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A8728
-
- thumb_func_start sub_80A8874
-sub_80A8874: @ 80A8874
- 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, _080A88C4 @ =gTasks
- adds r5, r1, r0
- ldr r4, _080A88C8 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x20
- movs r1, 0
- strh r0, [r5, 0x8]
- movs r0, 0x4
- strh r0, [r5, 0xA]
- strh r1, [r5, 0xC]
- strh r1, [r5, 0xE]
- strh r1, [r5, 0x10]
- strh r1, [r5, 0x12]
- ldrb r0, [r4]
- bl sub_8076B2C
- strh r0, [r5, 0x26]
- ldrb r0, [r4]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A88D4
- ldr r0, _080A88CC @ =gBattle_BG1_X
- ldrh r0, [r0]
- strh r0, [r5, 0x14]
- ldr r0, _080A88D0 @ =0x04000014
- b _080A88DC
- .align 2, 0
-_080A88C4: .4byte gTasks
-_080A88C8: .4byte gUnknown_2037F1B
-_080A88CC: .4byte gBattle_BG1_X
-_080A88D0: .4byte 0x04000014
-_080A88D4:
- ldr r0, _080A8940 @ =gBattle_BG2_X
- ldrh r0, [r0]
- strh r0, [r5, 0x14]
- ldr r0, _080A8944 @ =0x04000018
-_080A88DC:
- str r0, [sp]
- ldrh r0, [r5, 0x8]
- adds r1, r0, 0
- subs r1, 0x40
- lsls r2, r1, 16
- lsls r0, 16
- cmp r2, r0
- bgt _080A891A
- ldr r4, _080A8948 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r4, r0
-_080A88F4:
- asrs r3, r2, 16
- cmp r3, 0
- blt _080A890C
- lsls r1, r3, 1
- adds r2, r1, r4
- ldrh r0, [r5, 0x14]
- adds r0, 0xF0
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r5, 0x14]
- adds r0, 0xF0
- strh r0, [r1]
-_080A890C:
- adds r0, r3, 0x1
- lsls r2, r0, 16
- asrs r1, r2, 16
- movs r3, 0x8
- ldrsh r0, [r5, r3]
- cmp r1, r0
- ble _080A88F4
-_080A891A:
- ldr r0, _080A894C @ =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, _080A8950 @ =sub_80A8954
- str r0, [r5]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8940: .4byte gBattle_BG2_X
-_080A8944: .4byte 0x04000018
-_080A8948: .4byte gScanlineEffectRegBuffers
-_080A894C: .4byte 0xa2600001
-_080A8950: .4byte sub_80A8954
- thumb_func_end sub_80A8874
-
- thumb_func_start sub_80A8954
-sub_80A8954: @ 80A8954
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080A8974 @ =gTasks
- adds r3, r0, r1
- movs r1, 0x10
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _080A8978
- cmp r0, 0x1
- beq _080A898E
- b _080A8A0E
- .align 2, 0
-_080A8974: .4byte gTasks
-_080A8978:
- ldrh r0, [r3, 0x12]
- adds r0, 0x1
- strh r0, [r3, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080A8A0E
- ldrh r0, [r3, 0x10]
- adds r0, 0x1
- strh r0, [r3, 0x10]
- b _080A8A0E
-_080A898E:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080A8A0E
- movs r0, 0
- strh r0, [r3, 0xA]
- ldrh r1, [r3, 0xE]
- movs r0, 0x3
- ands r0, r1
- strh r0, [r3, 0xC]
- ldrh r0, [r3, 0x8]
- subs r0, r1
- strh r0, [r3, 0x12]
- movs r2, 0xC
- ldrsh r1, [r3, r2]
- cmp r1, 0x1
- beq _080A89C4
- cmp r1, 0x1
- ble _080A89CC
- cmp r1, 0x2
- beq _080A89C8
- cmp r1, 0x3
- beq _080A89C8
- b _080A89CC
-_080A89C4:
- subs r0, 0x2
- b _080A89CA
-_080A89C8:
- adds r0, 0x1
-_080A89CA:
- strh r0, [r3, 0x12]
-_080A89CC:
- movs r1, 0x12
- ldrsh r0, [r3, r1]
- cmp r0, 0
- blt _080A89F0
- ldr r2, _080A8A14 @ =gScanlineEffectRegBuffers
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r3, 0x14]
- strh r1, [r0]
- movs r1, 0x12
- ldrsh r0, [r3, r1]
- lsls r0, 1
- movs r1, 0xF0
- lsls r1, 3
- adds r2, r1
- adds r0, r2
- ldrh r1, [r3, 0x14]
- strh r1, [r0]
-_080A89F0:
- ldrh r0, [r3, 0xE]
- adds r0, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x26
- ldrsh r1, [r3, r2]
- cmp r0, r1
- blt _080A8A0E
- ldr r1, _080A8A18 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080A8A0E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8A14: .4byte gScanlineEffectRegBuffers
-_080A8A18: .4byte gScanlineEffect
- thumb_func_end sub_80A8954
-
- thumb_func_start sub_80A8A1C
-sub_80A8A1C: @ 80A8A1C
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r6, _080A8A70 @ =gUnknown_2037F1B
- ldrb r0, [r6]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x10
- movs r5, 0
- strh r0, [r4, 0x20]
- ldrb r0, [r6]
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x2E]
- strh r5, [r4, 0x30]
- strh r5, [r4, 0x32]
- movs r0, 0x10
- strh r0, [r4, 0x34]
- strh r5, [r4, 0x36]
- ldrb r0, [r6]
- movs r1, 0
- bl sub_8076B2C
- adds r0, 0x2
- strh r0, [r4, 0x38]
- movs r0, 0x3F
- bl sub_8073A44
- lsls r0, 24
- asrs r0, 24
- strh r0, [r4, 0x3A]
- ldr r0, _080A8A74 @ =sub_80A8A78
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8A70: .4byte gUnknown_2037F1B
-_080A8A74: .4byte sub_80A8A78
- thumb_func_end sub_80A8A1C
-
- thumb_func_start sub_80A8A78
-sub_80A8A78: @ 80A8A78
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080A8ADC
- cmp r1, 0x1
- bgt _080A8A8E
- cmp r1, 0
- beq _080A8A94
- b _080A8BBC
-_080A8A8E:
- cmp r1, 0x2
- beq _080A8B6E
- b _080A8BBC
-_080A8A94:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080A8ABE
- strh r1, [r4, 0x32]
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080A8ABE:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080A8BBC
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r2]
- b _080A8B66
-_080A8ADC:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080A8B22
- ldrh r2, [r4, 0x32]
- movs r3, 0x32
- ldrsh r1, [r4, r3]
- movs r3, 0x38
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bge _080A8B22
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- subs r0, 0x1
- strh r0, [r4, 0x22]
- adds r0, r2, 0x1
- strh r0, [r4, 0x32]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _080A8B22
- ldrh r1, [r4, 0x3A]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xC6
- bl PlaySE12WithPanning
-_080A8B22:
- ldrh r0, [r4, 0x34]
- ldrh r2, [r4, 0x36]
- adds r1, r0, r2
- strh r1, [r4, 0x36]
- lsls r0, r1, 16
- asrs r2, r0, 16
- cmp r2, 0x1F
- ble _080A8B36
- movs r0, 0x40
- b _080A8B44
-_080A8B36:
- movs r0, 0x20
- negs r0, r0
- cmp r2, r0
- bgt _080A8B50
- movs r2, 0x40
- negs r2, r2
- adds r0, r2, 0
-_080A8B44:
- subs r0, r1
- strh r0, [r4, 0x36]
- movs r3, 0x34
- ldrsh r0, [r4, r3]
- negs r0, r0
- strh r0, [r4, 0x34]
-_080A8B50:
- ldrh r0, [r4, 0x36]
- movs r2, 0
- strh r0, [r4, 0x24]
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- movs r3, 0x32
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _080A8BBC
- strh r2, [r4, 0x30]
- strh r2, [r4, 0x32]
-_080A8B66:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080A8BBC
-_080A8B6E:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080A8B9A
- movs r0, 0
- strh r0, [r4, 0x32]
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080A8B9A:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080A8BBC
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A8BBC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A8A78
-
- thumb_func_start sub_80A8BC4
-sub_80A8BC4: @ 80A8BC4
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- movs r5, 0
- mov r0, sp
- strh r5, [r0]
- mov r1, sp
- adds r1, 0x2
- strh r5, [r1]
- ldr r0, _080A8BE8 @ =gUnknown_2037F02
- movs r3, 0x4
- ldrsh r2, [r0, r3]
- adds r7, r1, 0
- adds r1, r0, 0
- cmp r2, 0
- bne _080A8BF0
- ldr r0, _080A8BEC @ =gUnknown_2037F1A
- b _080A8BF2
- .align 2, 0
-_080A8BE8: .4byte gUnknown_2037F02
-_080A8BEC: .4byte gUnknown_2037F1A
-_080A8BF0:
- ldr r0, _080A8C2C @ =gUnknown_2037F1B
-_080A8BF2:
- ldrb r5, [r0]
- ldrb r1, [r1, 0x6]
- movs r0, 0x1
- adds r4, r0, 0
- eors r4, r1
- bl sub_8075290
- lsls r0, 24
- cmp r0, 0
- beq _080A8C6A
- movs r1, 0x2
- adds r0, r5, 0
- eors r0, r1
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080A8C6A
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, sp
- adds r3, r7, 0
- bl sub_8076D9C
- cmp r4, 0
- bne _080A8C30
- adds r0, r5, 0
- movs r1, 0
- b _080A8C34
- .align 2, 0
-_080A8C2C: .4byte gUnknown_2037F1B
-_080A8C30:
- adds r0, r5, 0
- movs r1, 0x2
-_080A8C34:
- bl sub_8074480
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A8C60
- ldr r2, _080A8C5C @ =gUnknown_2037F02
- mov r0, sp
- ldrh r1, [r0]
- subs r1, r4
- ldrh r0, [r2]
- subs r1, r0
- subs r0, r1
- strh r0, [r2]
- b _080A8C6A
- .align 2, 0
-_080A8C5C: .4byte gUnknown_2037F02
-_080A8C60:
- ldr r1, _080A8C7C @ =gUnknown_2037F02
- mov r0, sp
- ldrh r0, [r0]
- subs r0, r4
- strh r0, [r1]
-_080A8C6A:
- ldr r1, _080A8C80 @ =sub_8075D9C
- str r1, [r6, 0x1C]
- adds r0, r6, 0
- bl _call_via_r1
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8C7C: .4byte gUnknown_2037F02
-_080A8C80: .4byte sub_8075D9C
- thumb_func_end sub_80A8BC4
-
- thumb_func_start sub_80A8C84
-sub_80A8C84: @ 80A8C84
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080A8C9E
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A8C9E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A8C84
-
- thumb_func_start sub_80A8CA4
-sub_80A8CA4: @ 80A8CA4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r5, r0, 0
- movs r6, 0
- mov r0, sp
- strh r6, [r0]
- mov r1, sp
- adds r1, 0x2
- strh r6, [r1]
- ldr r0, _080A8CD0 @ =gUnknown_2037F02
- movs r2, 0xA
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bne _080A8CDC
- ldr r0, _080A8CD4 @ =gUnknown_2037F1A
- ldrb r7, [r0]
- ldr r0, _080A8CD8 @ =gUnknown_2037F1B
- b _080A8CE2
- .align 2, 0
-_080A8CD0: .4byte gUnknown_2037F02
-_080A8CD4: .4byte gUnknown_2037F1A
-_080A8CD8: .4byte gUnknown_2037F1B
-_080A8CDC:
- ldr r0, _080A8CFC @ =gUnknown_2037F1B
- ldrb r7, [r0]
- ldr r0, _080A8D00 @ =gUnknown_2037F1A
-_080A8CE2:
- ldrb r0, [r0]
- mov r8, r0
- ldr r0, _080A8D04 @ =gUnknown_2037F02
- movs r3, 0xC
- ldrsh r0, [r0, r3]
- cmp r0, 0
- bne _080A8D08
- movs r0, 0
- mov r10, r0
- movs r1, 0x1
- str r1, [sp, 0x4]
- b _080A8D10
- .align 2, 0
-_080A8CFC: .4byte gUnknown_2037F1B
-_080A8D00: .4byte gUnknown_2037F1A
-_080A8D04: .4byte gUnknown_2037F02
-_080A8D08:
- movs r2, 0x2
- mov r10, r2
- movs r3, 0x3
- str r3, [sp, 0x4]
-_080A8D10:
- adds r0, r7, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A8D6C
- adds r0, r7, 0
- mov r1, r10
- bl sub_8074480
- lsls r0, 24
- ldr r1, _080A8D50 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- movs r0, 0x2
- mov r4, r8
- eors r4, r0
- adds r0, r4, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080A8D5C
- ldr r2, _080A8D54 @ =gSprites
- ldr r0, _080A8D58 @ =gUnknown_2023D44
- adds r0, r4, r0
- b _080A8DEA
- .align 2, 0
-_080A8D50: .4byte gUnknown_2037F02
-_080A8D54: .4byte gSprites
-_080A8D58: .4byte gUnknown_2023D44
-_080A8D5C:
- ldr r2, _080A8D64 @ =gSprites
- ldr r0, _080A8D68 @ =gUnknown_2023D44
- add r0, r8
- b _080A8DEA
- .align 2, 0
-_080A8D64: .4byte gSprites
-_080A8D68: .4byte gUnknown_2023D44
-_080A8D6C:
- adds r0, r7, 0
- mov r1, r10
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080A8DD4 @ =gUnknown_2037F02
- ldrh r1, [r1]
- subs r0, r1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080A8DE4
- movs r0, 0x2
- adds r4, r7, 0
- eors r4, r0
- adds r0, r4, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080A8DE4
- ldr r3, _080A8DD8 @ =gSprites
- ldr r2, _080A8DDC @ =gUnknown_2023D44
- adds r0, r7, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r6, r0, r3
- adds r2, r4, r2
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r3
- movs r0, 0x20
- ldrsh r1, [r6, r0]
- movs r3, 0x20
- ldrsh r0, [r2, r3]
- cmp r1, r0
- bge _080A8DE0
- adds r0, r2, 0
- adds r0, 0x43
- ldrb r0, [r0]
- adds r0, 0x1
- b _080A8DFA
- .align 2, 0
-_080A8DD4: .4byte gUnknown_2037F02
-_080A8DD8: .4byte gSprites
-_080A8DDC: .4byte gUnknown_2023D44
-_080A8DE0:
- adds r0, r6, 0
- b _080A8DF4
-_080A8DE4:
- ldr r2, _080A8E40 @ =gSprites
- ldr r0, _080A8E44 @ =gUnknown_2023D44
- adds r0, r7, r0
-_080A8DEA:
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
-_080A8DF4:
- adds r0, 0x43
- ldrb r0, [r0]
- subs r0, 0x1
-_080A8DFA:
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
- adds r0, r7, 0
- ldr r1, [sp, 0x4]
- bl sub_8074480
- lsls r0, 24
- ldr r4, _080A8E48 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- lsls r0, 16
- lsrs r6, r0, 16
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080A8E4C
- movs r1, 0x2
- mov r0, r8
- eors r0, r1
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080A8E4C
- ldrb r1, [r4, 0xC]
- mov r0, r8
- mov r2, sp
- mov r3, sp
- adds r3, 0x2
- bl sub_8076D9C
- b _080A8E6C
- .align 2, 0
-_080A8E40: .4byte gSprites
-_080A8E44: .4byte gUnknown_2023D44
-_080A8E48: .4byte gUnknown_2037F02
-_080A8E4C:
- mov r4, sp
- mov r0, r8
- mov r1, r10
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- mov r0, r8
- ldr r1, [sp, 0x4]
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- mov r2, sp
- strh r0, [r2, 0x2]
-_080A8E6C:
- mov r0, r8
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A8E90
- mov r3, sp
- mov r2, sp
- ldr r1, _080A8E8C @ =gUnknown_2037F02
- ldrh r0, [r1, 0x6]
- ldrh r2, [r2]
- adds r0, r2
- strh r0, [r3]
- adds r2, r1, 0
- b _080A8E9E
- .align 2, 0
-_080A8E8C: .4byte gUnknown_2037F02
-_080A8E90:
- mov r3, sp
- mov r0, sp
- ldr r2, _080A8EE0 @ =gUnknown_2037F02
- ldrh r0, [r0]
- ldrh r1, [r2, 0x6]
- subs r0, r1
- strh r0, [r3]
-_080A8E9E:
- ldrh r1, [r2, 0x8]
- mov r3, sp
- ldrh r3, [r3, 0x2]
- adds r1, r3
- mov r0, sp
- strh r1, [r0, 0x2]
- mov r3, r9
- strh r3, [r5, 0x30]
- strh r3, [r5, 0x20]
- strh r6, [r5, 0x34]
- strh r6, [r5, 0x22]
- ldrh r0, [r0]
- strh r0, [r5, 0x32]
- strh r1, [r5, 0x36]
- ldrh r0, [r2]
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r1, _080A8EE4 @ =sub_80A8C84
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8EE0: .4byte gUnknown_2037F02
-_080A8EE4: .4byte sub_80A8C84
- thumb_func_end sub_80A8CA4
-
- thumb_func_start sub_80A8EE8
-sub_80A8EE8: @ 80A8EE8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080A8F28 @ =0x000027db
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _080A8F0E
- lsls r0, 20
- ldr r1, _080A8F2C @ =0x01010000
- adds r0, r1
- lsrs r0, 16
- ldr r1, _080A8F30 @ =gUnknown_2037F02
- ldrb r2, [r1, 0xA]
- ldrh r3, [r1, 0x8]
- movs r1, 0xF
- bl BlendPalette
-_080A8F0E:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r1, _080A8F34 @ =sub_8075D9C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8F28: .4byte 0x000027db
-_080A8F2C: .4byte 0x01010000
-_080A8F30: .4byte gUnknown_2037F02
-_080A8F34: .4byte sub_8075D9C
- thumb_func_end sub_80A8EE8
-
- thumb_func_start sub_80A8F38
-sub_80A8F38: @ 80A8F38
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_8075160
- ldr r0, _080A8F6C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0xA0
- cmp r0, 0
- beq _080A8F54
- ldr r1, _080A8F70 @ =0x0000ff60
-_080A8F54:
- movs r0, 0xE0
- lsls r0, 2
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- ldr r0, _080A8F74 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x3C]
- ldr r0, _080A8F78 @ =sub_80A8F7C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8F6C: .4byte gUnknown_2037F1A
-_080A8F70: .4byte 0x0000ff60
-_080A8F74: .4byte gUnknown_2037F02
-_080A8F78: .4byte sub_80A8F7C
- thumb_func_end sub_80A8F38
-
- thumb_func_start sub_80A8F7C
-sub_80A8F7C: @ 80A8F7C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x2E]
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- subs r1, r0
- movs r5, 0
- strh r1, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- subs r2, 0x20
- strh r2, [r4, 0x2E]
- ldr r0, _080A8FE8 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0xA0
- cmp r0, 0
- beq _080A8FAC
- ldr r1, _080A8FEC @ =0x0000ff60
-_080A8FAC:
- lsls r0, r1, 16
- asrs r0, 16
- ldrh r1, [r4, 0x30]
- adds r0, r1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x26]
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080A8FE0
- ldrh r2, [r4, 0x22]
- adds r0, r1, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- strh r5, [r4, 0x26]
- strh r5, [r4, 0x24]
- strh r5, [r4, 0x2E]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, _080A8FF0 @ =sub_80A8FF4
- str r0, [r4, 0x1C]
-_080A8FE0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A8FE8: .4byte gUnknown_2037F1A
-_080A8FEC: .4byte 0x0000ff60
-_080A8FF0: .4byte sub_80A8FF4
- thumb_func_end sub_80A8F7C
-
- thumb_func_start sub_80A8FF4
-sub_80A8FF4: @ 80A8FF4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r1, r0, 0x1
- strh r1, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _080A9012
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldr r0, _080A9018 @ =sub_80A901C
- str r0, [r4, 0x1C]
-_080A9012:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9018: .4byte sub_80A901C
- thumb_func_end sub_80A8FF4
-
- thumb_func_start sub_80A901C
-sub_80A901C: @ 80A901C
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080A9082
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- movs r0, 0
- strh r0, [r4, 0x2E]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A9068
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x10
- ldr r3, _080A905C @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080A9060 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- ldr r0, _080A9064 @ =sub_80A9094
- b _080A9080
- .align 2, 0
-_080A905C: .4byte 0x000003ff
-_080A9060: .4byte 0xfffffc00
-_080A9064: .4byte sub_80A9094
-_080A9068:
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x20
- ldr r3, _080A9088 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080A908C @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- ldr r0, _080A9090 @ =sub_80A911C
-_080A9080:
- str r0, [r4, 0x1C]
-_080A9082:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9088: .4byte 0x000003ff
-_080A908C: .4byte 0xfffffc00
-_080A9090: .4byte sub_80A911C
- thumb_func_end sub_80A901C
-
- thumb_func_start sub_80A9094
-sub_80A9094: @ 80A9094
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x26]
- subs r0, 0x2
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bne _080A90CA
- movs r0, 0x10
- strh r0, [r4, 0x2E]
- movs r0, 0
- strh r0, [r4, 0x30]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r4, 0x2E]
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, _080A90D0 @ =sub_80A90D4
- str r0, [r4, 0x1C]
-_080A90CA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A90D0: .4byte sub_80A90D4
- thumb_func_end sub_80A9094
-
- thumb_func_start sub_80A90D4
-sub_80A90D4: @ 80A90D4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r1, r0, 0x1
- strh r1, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _080A9112
- ldrh r1, [r4, 0x2E]
- subs r1, 0x1
- strh r1, [r4, 0x2E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A9112
- ldr r0, _080A9118 @ =sub_80A911C
- str r0, [r4, 0x1C]
-_080A9112:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9118: .4byte sub_80A911C
- thumb_func_end sub_80A90D4
-
- thumb_func_start sub_80A911C
-sub_80A911C: @ 80A911C
- push {lr}
- adds r3, r0, 0
- ldr r0, _080A9144 @ =gUnknown_2037F02
- ldrh r1, [r0, 0xE]
- ldr r0, _080A9148 @ =0x0000ffff
- cmp r1, r0
- bne _080A9154
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r1, 0x3C
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080A9150
- ldr r0, _080A914C @ =sub_80A915C
- b _080A9152
- .align 2, 0
-_080A9144: .4byte gUnknown_2037F02
-_080A9148: .4byte 0x0000ffff
-_080A914C: .4byte sub_80A915C
-_080A9150:
- ldr r0, _080A9158 @ =DestroyAnimSprite
-_080A9152:
- str r0, [r3, 0x1C]
-_080A9154:
- pop {r0}
- bx r0
- .align 2, 0
-_080A9158: .4byte DestroyAnimSprite
- thumb_func_end sub_80A911C
-
- thumb_func_start sub_80A915C
-sub_80A915C: @ 80A915C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A915C
-
- thumb_func_start sub_80A917C
-sub_80A917C: @ 80A917C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080A91AC @ =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, _080A91B0 @ =gUnknown_83E4128
- adds r0, r4, 0
- bl sub_80762D0
- ldr r0, _080A91B4 @ =sub_80A91B8
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A91AC: .4byte gTasks
-_080A91B0: .4byte gUnknown_83E4128
-_080A91B4: .4byte sub_80A91B8
- thumb_func_end sub_80A917C
-
- thumb_func_start sub_80A91B8
-sub_80A91B8: @ 80A91B8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080A9208 @ =gTasks
- adds r4, r0, r1
- adds r0, r4, 0
- bl sub_8076308
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- bne _080A9202
- ldr r2, _080A920C @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x26]
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080A9202:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9208: .4byte gTasks
-_080A920C: .4byte gSprites
- thumb_func_end sub_80A91B8
-
- thumb_func_start sub_80A9210
-sub_80A9210: @ 80A9210
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080A9244 @ =gTasks
- adds r4, r1, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- movs r0, 0x3
- strh r0, [r4, 0x20]
- ldr r0, _080A9248 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080A9250
- ldr r0, _080A924C @ =0x0000ffff
- strh r0, [r4, 0x22]
- movs r0, 0x8
- b _080A9256
- .align 2, 0
-_080A9244: .4byte gTasks
-_080A9248: .4byte gUnknown_2037F1B
-_080A924C: .4byte 0x0000ffff
-_080A9250:
- movs r0, 0x1
- strh r0, [r4, 0x22]
- ldr r0, _080A9270 @ =0x0000fff8
-_080A9256:
- strh r0, [r4, 0x24]
- movs r0, 0x1
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r0, _080A9274 @ =sub_80A9278
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9270: .4byte 0x0000fff8
-_080A9274: .4byte sub_80A9278
- thumb_func_end sub_80A9210
-
- thumb_func_start sub_80A9278
-sub_80A9278: @ 80A9278
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080A929C @ =gTasks
- adds r3, r0, r1
- movs r0, 0x8
- ldrsh r4, [r3, r0]
- cmp r4, 0x1
- beq _080A92CC
- cmp r4, 0x1
- bgt _080A92A0
- cmp r4, 0
- beq _080A92AA
- b _080A9392
- .align 2, 0
-_080A929C: .4byte gTasks
-_080A92A0:
- cmp r4, 0x2
- beq _080A9348
- cmp r4, 0x3
- beq _080A9362
- b _080A9392
-_080A92AA:
- ldr r2, _080A92C8 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x24]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- strh r1, [r0, 0x24]
- strh r4, [r3, 0xA]
- strh r4, [r3, 0xC]
- strh r4, [r3, 0xE]
- b _080A935A
- .align 2, 0
-_080A92C8: .4byte gSprites
-_080A92CC:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080A9392
- movs r0, 0
- strh r0, [r3, 0xA]
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- ands r0, r4
- lsls r0, 16
- cmp r0, 0
- beq _080A9304
- ldr r2, _080A9300 @ =gSprites
- movs r4, 0x26
- ldrsh r1, [r3, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- adds r1, 0x6
- b _080A9316
- .align 2, 0
-_080A9300: .4byte gSprites
-_080A9304:
- ldr r2, _080A9344 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- subs r1, 0x6
-_080A9316:
- strh r1, [r0, 0x24]
- ldrh r0, [r3, 0xE]
- adds r0, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080A9392
- ldrh r1, [r3, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A935A
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x24]
- subs r0, 0x6
- strh r0, [r1, 0x24]
- b _080A935A
- .align 2, 0
-_080A9344: .4byte gSprites
-_080A9348:
- ldrh r0, [r3, 0x20]
- subs r0, 0x1
- strh r0, [r3, 0x20]
- lsls r0, 16
- cmp r0, 0
- beq _080A935A
- movs r0, 0
- strh r0, [r3, 0x8]
- b _080A9392
-_080A935A:
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- b _080A9392
-_080A9362:
- ldr r2, _080A9398 @ =gSprites
- movs r4, 0x26
- ldrsh r1, [r3, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x22]
- ldrh r4, [r0, 0x24]
- adds r1, r4
- strh r1, [r0, 0x24]
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x24
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A9392
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080A9392:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9398: .4byte gSprites
- thumb_func_end sub_80A9278
-
- thumb_func_start sub_80A939C
-sub_80A939C: @ 80A939C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080A93D8 @ =gTasks
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- movs r0, 0x1
- strh r0, [r4, 0x10]
- movs r0, 0xE
- strh r0, [r4, 0x22]
- movs r0, 0x2
- strh r0, [r4, 0x24]
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r0, _080A93DC @ =sub_80A93E0
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A93D8: .4byte gTasks
-_080A93DC: .4byte sub_80A93E0
- thumb_func_end sub_80A939C
-
- thumb_func_start sub_80A93E0
-sub_80A93E0: @ 80A93E0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080A9434 @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r2, [r4, r0]
- cmp r2, 0
- bne _080A94A6
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x10
- ldrsh r1, [r4, r3]
- cmp r0, r1
- ble _080A94A6
- strh r2, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A943C
- ldr r3, _080A9438 @ =gSprites
- movs r6, 0x26
- ldrsh r1, [r4, r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- b _080A9452
- .align 2, 0
-_080A9434: .4byte gTasks
-_080A9438: .4byte gSprites
-_080A943C:
- ldr r3, _080A9484 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
-_080A9452:
- strb r1, [r0]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- movs r2, 0
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r6, 0x22
- ldrsh r1, [r4, r6]
- cmp r0, r1
- blt _080A94A6
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- movs r6, 0x24
- ldrsh r1, [r4, r6]
- cmp r0, r1
- bge _080A9488
- strh r2, [r4, 0xA]
- strh r2, [r4, 0xC]
- strh r2, [r4, 0xE]
- b _080A94A6
- .align 2, 0
-_080A9484: .4byte gSprites
-_080A9488:
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080A94A6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80A93E0
-
- thumb_func_start sub_80A94AC
-sub_80A94AC: @ 80A94AC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080A94FC @ =gTasks
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- movs r1, 0x4
- strh r1, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- strh r0, [r4, 0x10]
- strh r0, [r4, 0x12]
- strh r0, [r4, 0x14]
- strh r0, [r4, 0x16]
- strh r0, [r4, 0x18]
- strh r0, [r4, 0x22]
- ldr r5, _080A9500 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x24]
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r0, _080A9504 @ =sub_80A9508
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A94FC: .4byte gTasks
-_080A9500: .4byte gUnknown_2037F1A
-_080A9504: .4byte sub_80A9508
- thumb_func_end sub_80A94AC
-
- thumb_func_start sub_80A9508
-sub_80A9508: @ 80A9508
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080A952C @ =gTasks
- adds r4, r0, r1
- movs r0, 0x18
- ldrsh r2, [r4, r0]
- cmp r2, 0x1
- beq _080A9574
- cmp r2, 0x1
- bgt _080A9530
- cmp r2, 0
- beq _080A9536
- b _080A9590
- .align 2, 0
-_080A952C: .4byte gTasks
-_080A9530:
- cmp r2, 0x2
- beq _080A958C
- b _080A9590
-_080A9536:
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080A9590
- strh r2, [r4, 0x10]
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- movs r1, 0x1
- ands r0, r1
- strh r0, [r4, 0x12]
- ldrh r0, [r4, 0x14]
- adds r0, 0x1
- strh r0, [r4, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080A9590
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A956E
- strh r2, [r4, 0x14]
- movs r0, 0x1
- strh r0, [r4, 0x18]
- b _080A9590
-_080A956E:
- movs r0, 0x2
- strh r0, [r4, 0x18]
- b _080A9590
-_080A9574:
- movs r1, 0
- strh r1, [r4, 0x12]
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080A9590
- strh r2, [r4, 0x16]
- strh r1, [r4, 0x18]
- b _080A9590
-_080A958C:
- movs r0, 0x1
- strh r0, [r4, 0x12]
-_080A9590:
- movs r2, 0x8
- ldrsh r5, [r4, r2]
- cmp r5, 0
- beq _080A959E
- cmp r5, 0x1
- beq _080A9634
- b _080A9642
-_080A959E:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080A9642
- strh r5, [r4, 0xA]
- ldr r0, _080A9628 @ =gUnknown_83E4154
- movs r3, 0x24
- ldrsh r1, [r4, r3]
- movs r3, 0x26
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080A9642
- ldr r0, _080A962C @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- strh r6, [r1, 0x2E]
- movs r0, 0xD
- strh r0, [r1, 0x30]
- ldr r2, _080A9630 @ =gUnknown_83E416C
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- lsls r0, 1
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r1, 0x24]
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- lsls r0, 1
- adds r2, 0x1
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r1, 0x26]
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080A9642
- strh r5, [r4, 0xC]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080A9642
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080A9642
- .align 2, 0
-_080A9628: .4byte gUnknown_83E4154
-_080A962C: .4byte gSprites
-_080A9630: .4byte gUnknown_83E416C
-_080A9634:
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A9642
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080A9642:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80A9508
-
- thumb_func_start sub_80A9648
-sub_80A9648: @ 80A9648
- push {r4,lr}
- adds r3, r0, 0
- ldr r4, _080A96B0 @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- movs r2, 0x1
- ldrb r1, [r0, 0x12]
- ands r1, r2
- lsls r1, 2
- mov r0, r12
- ldrb r2, [r0]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- adds r0, r3, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080A96AA
- movs r0, 0x30
- ldrsh r1, [r3, r0]
- lsls r1, 1
- movs r0, 0x2E
- ldrsh r2, [r3, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r0, r4, 0
- adds r0, 0x8
- adds r1, r0
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r3, 0
- bl DestroySprite
-_080A96AA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A96B0: .4byte gTasks
- thumb_func_end sub_80A9648
-
- thumb_func_start sub_80A96B4
-sub_80A96B4: @ 80A96B4
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080A9750 @ =0x000027de
- bl IndexOfSpritePaletteTag
- mov r1, sp
- strb r0, [r1]
- movs r4, 0x1
- ldr r0, _080A9754 @ =0x00002710
- adds r5, r0, 0
-_080A96CC:
- subs r0, r5, r4
- lsls r0, 16
- lsrs r0, 16
- bl AllocSpritePalette
- mov r2, sp
- adds r1, r2, r4
- strb r0, [r1]
- adds r4, 0x1
- cmp r4, 0x2
- ble _080A96CC
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- adds r1, r0, 0
- ldr r0, _080A9758 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r2, 0xBE
- lsls r2, 1
- adds r0, r2
- str r1, [r0]
- ldr r0, _080A975C @ =gFile_graphics_battle_anims_sprites_206_palette
- bl LZDecompressWram
- movs r4, 0
-_080A9700:
- ldr r5, _080A9758 @ =gMonSpritesGfxPtr
- ldr r0, [r5]
- movs r1, 0xBE
- lsls r1, 1
- adds r0, r1
- lsls r1, r4, 6
- ldr r0, [r0]
- adds r0, r1
- mov r2, sp
- adds r1, r2, r4
- ldrb r1, [r1]
- lsls r1, 20
- movs r2, 0x80
- lsls r2, 17
- adds r1, r2
- lsrs r1, 16
- movs r2, 0x20
- bl LoadPalette
- adds r4, 0x1
- cmp r4, 0x2
- ble _080A9700
- ldr r0, [r5]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- ldr r0, [r0]
- bl Free
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0
- str r1, [r0]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9750: .4byte 0x000027de
-_080A9754: .4byte 0x00002710
-_080A9758: .4byte gMonSpritesGfxPtr
-_080A975C: .4byte gFile_graphics_battle_anims_sprites_206_palette
- thumb_func_end sub_80A96B4
-
- thumb_func_start sub_80A9760
-sub_80A9760: @ 80A9760
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, _080A9784 @ =gUnknown_83E41C8
- movs r4, 0x2
-_080A976A:
- ldrh r0, [r5]
- bl FreeSpritePaletteByTag
- adds r5, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080A976A
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9784: .4byte gUnknown_83E41C8
- thumb_func_end sub_80A9760
-
- thumb_func_start sub_80A9788
-sub_80A9788: @ 80A9788
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsls r2, 24
- lsrs r3, r2, 24
- movs r0, 0x1
- ands r3, r0
- negs r0, r3
- orrs r0, r3
- asrs r0, 31
- movs r3, 0x20
- ands r0, r3
- ldrh r4, [r5, 0x4]
- lsls r3, r4, 22
- lsrs r3, 22
- lsrs r1, 22
- adds r0, r1
- adds r3, r0
- ldr r1, _080A97DC @ =0x000003ff
- adds r0, r1, 0
- ands r3, r0
- ldr r0, _080A97E0 @ =0xfffffc00
- ands r0, r4
- orrs r0, r3
- strh r0, [r5, 0x4]
- ldr r0, _080A97E4 @ =gUnknown_83E41C8
- lsrs r2, 25
- lsls r2, 1
- adds r2, r0
- ldrh r0, [r2]
- bl IndexOfSpritePaletteTag
- lsls r0, 4
- ldrb r2, [r5, 0x5]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A97DC: .4byte 0x000003ff
-_080A97E0: .4byte 0xfffffc00
-_080A97E4: .4byte gUnknown_83E41C8
- thumb_func_end sub_80A9788
-
- thumb_func_start sub_80A97E8
-sub_80A97E8: @ 80A97E8
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0
- bl sub_8075160
- ldr r6, _080A9850 @ =gUnknown_2037F1A
- ldrb r0, [r6]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080A9808
- ldr r1, _080A9854 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080A9808:
- ldr r4, _080A9854 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x2E]
- ldrb r0, [r6]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrb r0, [r6]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r5, 0x36]
- ldr r0, _080A9858 @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _080A985C @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldrb r1, [r4, 0xA]
- ldrb r2, [r4, 0xC]
- adds r0, r5, 0
- bl sub_80A9788
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9850: .4byte gUnknown_2037F1A
-_080A9854: .4byte gUnknown_2037F02
-_080A9858: .4byte sub_8075590
-_080A985C: .4byte DestroyAnimSprite
- thumb_func_end sub_80A97E8
-
- thumb_func_start sub_80A9860
-sub_80A9860: @ 80A9860
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080A987A
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075160
-_080A987A:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r2, [r4, 0x32]
- lsls r0, r2, 16
- asrs r0, 24
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x7
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- subs r2, 0x80
- strh r2, [r4, 0x32]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x3C
- bne _080A98AA
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A98AA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A9860
-
- thumb_func_start sub_80A98B0
-sub_80A98B0: @ 80A98B0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- bl sub_8073788
- lsls r0, 24
- movs r6, 0xF0
- cmp r0, 0
- beq _080A98C4
- movs r6, 0x98
-_080A98C4:
- movs r5, 0
- ldr r1, _080A9918 @ =gUnknown_2022984
- strh r6, [r1]
- ldr r4, _080A991C @ =gUnknown_2022986
- movs r0, 0xA0
- strh r0, [r4]
- ldrh r1, [r1]
- movs r0, 0x40
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x44
- bl SetGpuReg
- ldr r1, _080A9920 @ =0x00003f1f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080A9924 @ =0x00003f3f
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0xC8
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x10
- bl SetGpuReg
- ldr r1, _080A9928 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- strh r6, [r0, 0xA]
- ldr r1, _080A992C @ =sub_80A9930
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9918: .4byte gUnknown_2022984
-_080A991C: .4byte gUnknown_2022986
-_080A9920: .4byte 0x00003f1f
-_080A9924: .4byte 0x00003f3f
-_080A9928: .4byte gTasks
-_080A992C: .4byte sub_80A9930
- thumb_func_end sub_80A98B0
-
- thumb_func_start sub_80A9930
-sub_80A9930: @ 80A9930
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A9964 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r3, r1, r2
- ldrh r0, [r3, 0x8]
- adds r4, r0, 0
- adds r4, 0xD
- strh r4, [r3, 0x8]
- ldrh r0, [r3, 0xA]
- adds r2, r0, 0
- subs r2, 0xD
- strh r2, [r3, 0xA]
- lsls r1, r4, 16
- lsls r0, r2, 16
- cmp r1, r0
- blt _080A9970
- ldr r0, _080A9968 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080A996C @ =sub_80A9984
- str r0, [r3]
- b _080A9978
- .align 2, 0
-_080A9964: .4byte gTasks
-_080A9968: .4byte gUnknown_2022984
-_080A996C: .4byte sub_80A9984
-_080A9970:
- ldr r1, _080A9980 @ =gUnknown_2022984
- lsls r0, r4, 8
- orrs r2, r0
- strh r2, [r1]
-_080A9978:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9980: .4byte gUnknown_2022984
- thumb_func_end sub_80A9930
-
- thumb_func_start sub_80A9984
-sub_80A9984: @ 80A9984
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080A99D0 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0x1C]
- adds r0, 0x1
- movs r4, 0
- strh r0, [r1, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080A99D8
- movs r0, 0x88
- strh r0, [r1, 0x1E]
- movs r0, 0x50
- movs r1, 0x88
- bl SetGpuReg
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8075BE8
- ldr r2, _080A99D4 @ =0x00007fff
- movs r1, 0x10
- bl BlendPalettes
- b _080A9A0C
- .align 2, 0
-_080A99D0: .4byte gTasks
-_080A99D4: .4byte 0x00007fff
-_080A99D8:
- cmp r0, 0x4
- ble _080A9A0C
- ldr r0, _080A9A14 @ =gUnknown_2022984
- strh r4, [r0]
- ldr r0, _080A9A18 @ =gUnknown_2022986
- strh r4, [r0]
- ldr r4, _080A9A1C @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080A9A0C:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9A14: .4byte gUnknown_2022984
-_080A9A18: .4byte gUnknown_2022986
-_080A9A1C: .4byte 0x00003f3f
- thumb_func_end sub_80A9984
-
- thumb_func_start sub_80A9A20
-sub_80A9A20: @ 80A9A20
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- movs r0, 0x1
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080A9A70 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080A9A7C
- movs r0, 0x1
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080A9A74 @ =gUnknown_83E4200
- adds r0, r5, 0
- bl sub_80762D0
- ldr r1, _080A9A78 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- movs r1, 0x4
- strh r1, [r0, 0x24]
- b _080A9AA4
- .align 2, 0
-_080A9A70: .4byte gTasks
-_080A9A74: .4byte gUnknown_83E4200
-_080A9A78: .4byte gSprites
-_080A9A7C:
- ldr r1, _080A9AAC @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r4, r0, r1
- ldrh r0, [r4, 0x24]
- negs r0, r0
- strh r0, [r4, 0x24]
- adds r0, r5, 0
- bl sub_8076308
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080A9AA4
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080A9AA4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9AAC: .4byte gSprites
- thumb_func_end sub_80A9A20
-
- thumb_func_start sub_80A9AB0
-sub_80A9AB0: @ 80A9AB0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080A9B00 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080A9B0C
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080A9B04 @ =gUnknown_83E4200
- adds r0, r5, 0
- bl sub_80762D0
- ldr r1, _080A9B08 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- movs r1, 0x4
- strh r1, [r0, 0x24]
- b _080A9B34
- .align 2, 0
-_080A9B00: .4byte gTasks
-_080A9B04: .4byte gUnknown_83E4200
-_080A9B08: .4byte gSprites
-_080A9B0C:
- ldr r1, _080A9B3C @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r4, r0, r1
- ldrh r0, [r4, 0x24]
- negs r0, r0
- strh r0, [r4, 0x24]
- adds r0, r5, 0
- bl sub_8076308
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080A9B34
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080A9B34:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9B3C: .4byte gSprites
- thumb_func_end sub_80A9AB0
-
- thumb_func_start sub_80A9B40
-sub_80A9B40: @ 80A9B40
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- movs r0, 0x5F
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldr r5, _080A9B84 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- 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 r0, _080A9B88 @ =sub_80A9B8C
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9B84: .4byte gUnknown_2037F1B
-_080A9B88: .4byte sub_80A9B8C
- thumb_func_end sub_80A9B40
-
- thumb_func_start sub_80A9B8C
-sub_80A9B8C: @ 80A9B8C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- bne _080A9BB6
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xE
- bl Sin
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0x4
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- b _080A9BBC
-_080A9BB6:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A9BBC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A9B8C
-
- thumb_func_start sub_80A9BC4
-sub_80A9BC4: @ 80A9BC4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080A9BE8
- ldr r1, _080A9BE4 @ =gUnknown_2037F02
- ldrh r0, [r1]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x32]
- adds r0, r2, 0x1
- strh r0, [r4, 0x2E]
- b _080A9C44
- .align 2, 0
-_080A9BE4: .4byte gUnknown_2037F02
-_080A9BE8:
- 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 _080A9C36
- 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]
-_080A9C36:
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x78
- ble _080A9C44
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A9C44:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A9BC4
-
- thumb_func_start sub_80A9C4C
-sub_80A9C4C: @ 80A9C4C
- push {lr}
- ldr r2, _080A9C70 @ =gUnknown_2037F02
- ldrh r1, [r2]
- strh r1, [r0, 0x20]
- movs r1, 0xA0
- strh r1, [r0, 0x22]
- ldrh r1, [r2, 0x4]
- strh r1, [r0, 0x2E]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0x30]
- ldr r1, _080A9C74 @ =sub_8074C44
- str r1, [r0, 0x1C]
- ldr r1, _080A9C78 @ =sub_80A9C7C
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .align 2, 0
-_080A9C70: .4byte gUnknown_2037F02
-_080A9C74: .4byte sub_8074C44
-_080A9C78: .4byte sub_80A9C7C
- thumb_func_end sub_80A9C4C
-
- thumb_func_start sub_80A9C7C
-sub_80A9C7C: @ 80A9C7C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- lsls r0, 16
- lsrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x26]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r1, 0x4
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x34]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x26]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- lsls r0, 16
- asrs r5, r0, 16
- cmp r5, 0x48
- bgt _080A9CE2
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- cmp r5, 0x40
- bgt _080A9CE2
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080A9CE2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A9C7C
-
- thumb_func_start sub_80A9CE8
-sub_80A9CE8: @ 80A9CE8
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080A9DA0 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x3
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080A9D2A
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080A9D2A:
- ldr r0, _080A9DA4 @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r4, _080A9DA8 @ =gBattle_BG1_Y
- strh r1, [r4]
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x16
- bl SetGpuReg
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080A9DAC @ =gFile_graphics_battle_anims_backgrounds_attract_tilemap
- bl sub_807543C
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080A9DB0 @ =gFile_graphics_battle_anims_backgrounds_attract_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080A9DB4 @ =gFile_graphics_battle_anims_backgrounds_attract_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A9D88
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
-_080A9D88:
- ldr r0, _080A9DB8 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080A9DBC @ =sub_80A9DC0
- str r0, [r1]
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A9DA0: .4byte 0x00003f42
-_080A9DA4: .4byte gBattle_BG1_X
-_080A9DA8: .4byte gBattle_BG1_Y
-_080A9DAC: .4byte gFile_graphics_battle_anims_backgrounds_attract_tilemap
-_080A9DB0: .4byte gFile_graphics_battle_anims_backgrounds_attract_sheet
-_080A9DB4: .4byte gFile_graphics_battle_anims_backgrounds_attract_palette
-_080A9DB8: .4byte gTasks
-_080A9DBC: .4byte sub_80A9DC0
- thumb_func_end sub_80A9CE8
-
- thumb_func_start sub_80A9DC0
-sub_80A9DC0: @ 80A9DC0
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080A9DE8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x20
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0x4
- bls _080A9DDE
- b _080A9F08
-_080A9DDE:
- lsls r0, 2
- ldr r1, _080A9DEC @ =_080A9DF0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080A9DE8: .4byte gTasks
-_080A9DEC: .4byte _080A9DF0
- .align 2, 0
-_080A9DF0:
- .4byte _080A9E04
- .4byte _080A9E48
- .4byte _080A9E6A
- .4byte _080A9EAE
- .4byte _080A9ED4
-_080A9E04:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080A9F08
- strh r5, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- adds r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _080A9F08
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r5, [r4, 0x1E]
- b _080A9F08
-_080A9E48:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r2
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- strh r0, [r1, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8D
- bne _080A9F08
- movs r0, 0x10
- strh r0, [r1, 0x1E]
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- b _080A9F08
-_080A9E6A:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080A9F08
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- subs r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _080A9F08
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r1, [r4, 0x1E]
- b _080A9F08
-_080A9EAE:
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- bl sub_8075358
- ldr r1, _080A9ED0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- b _080A9F08
- .align 2, 0
-_080A9ED0: .4byte gTasks
-_080A9ED4:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080A9EE8
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080A9EE8:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080A9F08:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A9DC0
-
- thumb_func_start sub_80A9F10
-sub_80A9F10: @ 80A9F10
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080A9F88 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080A9F52
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080A9F52:
- ldr r0, _080A9F8C @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r4, _080A9F90 @ =gBattle_BG1_Y
- strh r1, [r4]
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x16
- bl SetGpuReg
- mov r0, sp
- bl sub_80752A0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A9F98
- ldr r0, _080A9F94 @ =gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap
- ldr r1, [sp, 0x4]
- bl LZDecompressVram
- b _080A9FC6
- .align 2, 0
-_080A9F88: .4byte 0x00003f42
-_080A9F8C: .4byte gBattle_BG1_X
-_080A9F90: .4byte gBattle_BG1_Y
-_080A9F94: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap
-_080A9F98:
- ldr r0, _080A9FB4 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A9FBC
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080A9FB8 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
- bl sub_807543C
- b _080A9FC6
- .align 2, 0
-_080A9FB4: .4byte gUnknown_2037F1B
-_080A9FB8: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
-_080A9FBC:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080AA010 @ =gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap
- bl sub_807543C
-_080A9FC6:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080AA014 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080AA018 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080A9FFA
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
-_080A9FFA:
- ldr r0, _080AA01C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080AA020 @ =sub_80AA024
- str r0, [r1]
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA010: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap
-_080AA014: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet
-_080AA018: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette
-_080AA01C: .4byte gTasks
-_080AA020: .4byte sub_80AA024
- thumb_func_end sub_80A9F10
-
- thumb_func_start sub_80AA024
-sub_80AA024: @ 80AA024
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080AA04C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x20
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0x4
- bls _080AA042
- b _080AA168
-_080AA042:
- lsls r0, 2
- ldr r1, _080AA050 @ =_080AA054
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080AA04C: .4byte gTasks
-_080AA050: .4byte _080AA054
- .align 2, 0
-_080AA054:
- .4byte _080AA068
- .4byte _080AA0AC
- .4byte _080AA0CE
- .4byte _080AA112
- .4byte _080AA134
-_080AA068:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080AA168
- strh r5, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- adds r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0xE
- bne _080AA168
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r5, [r4, 0x1E]
- b _080AA168
-_080AA0AC:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r2
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- strh r0, [r1, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x15
- bne _080AA168
- movs r0, 0xE
- strh r0, [r1, 0x1E]
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- b _080AA168
-_080AA0CE:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080AA168
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- subs r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _080AA168
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r1, [r4, 0x1E]
- b _080AA168
-_080AA112:
- mov r0, sp
- bl sub_80752A0
- movs r0, 0x1
- bl sub_8075358
- movs r0, 0x2
- bl sub_8075358
- ldr r0, _080AA170 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
-_080AA134:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080AA148
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080AA148:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080AA168:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA170: .4byte gTasks
- thumb_func_end sub_80AA024
-
- thumb_func_start sub_80AA174
-sub_80AA174: @ 80AA174
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080AA1C8 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080AA1CC @ =gUnknown_2037F02
- ldrh r0, [r1]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x30]
- ldrb r0, [r5]
- bl sub_807685C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x3C]
- ldr r1, _080AA1D0 @ =sub_80AA1D4
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA1C8: .4byte gUnknown_2037F1A
-_080AA1CC: .4byte gUnknown_2037F02
-_080AA1D0: .4byte sub_80AA1D4
- thumb_func_end sub_80AA174
-
- thumb_func_start sub_80AA1D4
-sub_80AA1D4: @ 80AA1D4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x7F
- bhi _080AA1EA
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- b _080AA1EE
-_080AA1EA:
- ldrh r0, [r4, 0x3C]
- subs r0, 0x1
-_080AA1EE:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x32]
- lsls r1, 16
- asrs r1, 24
- bl Sin
- strh r0, [r4, 0x24]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- ldrh r1, [r4, 0x34]
- lsls r1, 16
- asrs r1, 24
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x9
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- movs r3, 0x38
- ldrsh r2, [r4, r3]
- cmp r2, 0
- beq _080AA260
- cmp r2, 0x1
- bne _080AA290
- ldr r1, _080AA258 @ =0xfffffc00
- adds r0, r1, 0
- ldrh r2, [r4, 0x32]
- adds r0, r2
- strh r0, [r4, 0x32]
- ldr r3, _080AA25C @ =0xffffff00
- adds r0, r3, 0
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080AA290
- movs r0, 0x2
- strh r0, [r4, 0x38]
- b _080AA2A0
- .align 2, 0
-_080AA258: .4byte 0xfffffc00
-_080AA25C: .4byte 0xffffff00
-_080AA260:
- movs r3, 0x80
- lsls r3, 3
- adds r0, r3, 0
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- movs r3, 0x80
- lsls r3, 1
- adds r0, r3, 0
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x2E
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bne _080AA290
- strh r2, [r4, 0x36]
- movs r0, 0x1
- strh r0, [r4, 0x38]
-_080AA290:
- ldr r0, _080AA2A8 @ =gUnknown_2037F02
- ldrh r1, [r0, 0xE]
- ldr r0, _080AA2AC @ =0x0000ffff
- cmp r1, r0
- bne _080AA2A0
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AA2A0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA2A8: .4byte gUnknown_2037F02
-_080AA2AC: .4byte 0x0000ffff
- thumb_func_end sub_80AA1D4
-
- thumb_func_start sub_80AA2B0
-sub_80AA2B0: @ 80AA2B0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080AA2F8 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r4, _080AA2FC @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl Sin
- strh r0, [r5, 0x2E]
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0x7
- bl Cos
- strh r0, [r5, 0x30]
- ldr r0, _080AA300 @ =sub_80AA304
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA2F8: .4byte gUnknown_2037F1A
-_080AA2FC: .4byte gUnknown_2037F02
-_080AA300: .4byte sub_80AA304
- thumb_func_end sub_80AA2B0
-
- thumb_func_start sub_80AA304
-sub_80AA304: @ 80AA304
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x30]
- ldrh r3, [r2, 0x26]
- adds r0, r3
- strh r0, [r2, 0x26]
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- movs r3, 0x24
- ldrsh r1, [r2, r3]
- adds r0, r1
- adds r0, 0x10
- movs r1, 0x88
- lsls r1, 1
- cmp r0, r1
- bhi _080AA342
- movs r0, 0x22
- ldrsh r1, [r2, r0]
- movs r3, 0x26
- ldrsh r0, [r2, r3]
- adds r1, r0
- cmp r1, 0xA0
- bgt _080AA342
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- bge _080AA348
-_080AA342:
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080AA348:
- pop {r0}
- bx r0
- thumb_func_end sub_80AA304
-
- thumb_func_start sub_80AA34C
-sub_80AA34C: @ 80AA34C
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x30]
- ldrh r3, [r2, 0x26]
- adds r0, r3
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x34]
- adds r1, r0, 0x1
- strh r1, [r2, 0x34]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x32
- ldrsh r1, [r2, r3]
- cmp r0, r1
- blt _080AA378
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080AA378:
- pop {r0}
- bx r0
- thumb_func_end sub_80AA34C
-
- thumb_func_start sub_80AA37C
-sub_80AA37C: @ 80AA37C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080AA3C8 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r4, _080AA3CC @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl Sin
- strh r0, [r5, 0x2E]
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0x7
- bl Cos
- strh r0, [r5, 0x30]
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0x32]
- ldr r0, _080AA3D0 @ =sub_80AA34C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA3C8: .4byte gUnknown_2037F1A
-_080AA3CC: .4byte gUnknown_2037F02
-_080AA3D0: .4byte sub_80AA34C
- thumb_func_end sub_80AA37C
-
- thumb_func_start sub_80AA3D4
-sub_80AA3D4: @ 80AA3D4
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080AA3EA
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080AA3EA:
- pop {r0}
- bx r0
- thumb_func_end sub_80AA3D4
-
- thumb_func_start sub_80AA3F0
-sub_80AA3F0: @ 80AA3F0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080AA404 @ =sub_80AA3D4
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA404: .4byte sub_80AA3D4
- thumb_func_end sub_80AA3F0
-
- thumb_func_start sub_80AA408
-sub_80AA408: @ 80AA408
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AA426
- ldr r0, _080AA498 @ =gUnknown_2037F02
- ldrh r1, [r0]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- strh r1, [r4, 0x20]
- ldrh r0, [r0, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
-_080AA426:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r5, r0, 1
- movs r0, 0xFF
- ands r5, r0
- adds r0, r5, 0
- movs r1, 0x50
- bl Sin
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x4F
- bgt _080AA46A
- adds r0, r5, 0
- movs r1, 0x50
- bl Cos
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- lsrs r2, r1, 31
- adds r1, r2
- asrs r1, 1
- lsls r0, 16
- asrs r0, 24
- adds r1, r0
- strh r1, [r4, 0x26]
-_080AA46A:
- movs r0, 0x2E
- ldrsh r2, [r4, r0]
- cmp r2, 0x5A
- ble _080AA488
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- ldrh r0, [r4, 0x24]
- subs r0, r1
- strh r0, [r4, 0x24]
-_080AA488:
- cmp r2, 0x64
- ble _080AA492
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AA492:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA498: .4byte gUnknown_2037F02
- thumb_func_end sub_80AA408
-
- thumb_func_start sub_80AA49C
-sub_80AA49C: @ 80AA49C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r1, 0x5
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x34]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x34]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x14
- ble _080AA4F2
- adds r1, r0, 0
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080AA4F2:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x1E
- ble _080AA500
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AA500:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AA49C
-
- thumb_func_start sub_80AA508
-sub_80AA508: @ 80AA508
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AA52C
- ldr r1, _080AA528 @ =gUnknown_2037F02
- ldrh r0, [r1]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x32]
- adds r0, r2, 0x1
- strh r0, [r4, 0x2E]
- b _080AA580
- .align 2, 0
-_080AA528: .4byte gUnknown_2037F02
-_080AA52C:
- ldrh r0, [r4, 0x30]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- movs r5, 0
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Sin
- adds r2, r0, 0
- strh r2, [r4, 0x26]
- ldrh r0, [r4, 0x34]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x34]
- cmp r0, 0x46
- ble _080AA580
- ldr r0, _080AA588 @ =sub_80AA49C
- str r0, [r4, 0x1C]
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r1, [r4, 0x22]
- adds r0, r2, r1
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x24]
- strh r5, [r4, 0x26]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xB4
- bl __umodsi3
- strh r0, [r4, 0x34]
-_080AA580:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA588: .4byte sub_80AA49C
- thumb_func_end sub_80AA508
-
- thumb_func_start sub_80AA58C
-sub_80AA58C: @ 80AA58C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AA5C6
- ldr r1, _080AA688 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
- ldr r0, _080AA68C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_807685C
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- movs r0, 0x1
- strh r0, [r4, 0x32]
-_080AA5C6:
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x2E]
- adds r0, r2
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r1, r0, 2
- adds r0, r1, 0
- cmp r1, 0
- bge _080AA5DC
- adds r0, 0xFF
-_080AA5DC:
- asrs r0, 8
- lsls r0, 8
- subs r0, r1, r0
- strh r0, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- bge _080AA5EE
- movs r0, 0
- strh r0, [r4, 0x30]
-_080AA5EE:
- movs r0, 0x30
- ldrsh r2, [r4, r0]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _080AA5FC
- adds r0, 0x3
-_080AA5FC:
- asrs r0, 2
- movs r1, 0x1E
- subs r1, r0
- adds r0, r2, 0
- bl Cos
- strh r0, [r4, 0x24]
- movs r0, 0x30
- ldrsh r2, [r4, r0]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _080AA618
- adds r0, 0x7
-_080AA618:
- asrs r0, 3
- movs r1, 0xA
- subs r1, r0
- adds r0, r2, 0
- bl Sin
- strh r0, [r4, 0x26]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x80
- ble _080AA63C
- ldrh r1, [r4, 0x32]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080AA63C
- ldr r0, _080AA690 @ =0x0000ffff
- strh r0, [r4, 0x32]
-_080AA63C:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AA650
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bge _080AA650
- movs r0, 0x1
- strh r0, [r4, 0x32]
-_080AA650:
- ldrh r0, [r4, 0x34]
- adds r1, r0, 0x1
- strh r1, [r4, 0x34]
- subs r0, 0x9
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x46
- bls _080AA694
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _080AA6A2
- .align 2, 0
-_080AA688: .4byte gUnknown_2037F02
-_080AA68C: .4byte gUnknown_2037F1B
-_080AA690: .4byte 0x0000ffff
-_080AA694:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080AA6A2:
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x5A
- ble _080AA6B0
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AA6B0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AA58C
-
- thumb_func_start sub_80AA6B8
-sub_80AA6B8: @ 80AA6B8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AA6EC
- ldr r1, _080AA6E8 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrb r1, [r1, 0x4]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080AA700
- .align 2, 0
-_080AA6E8: .4byte gUnknown_2037F02
-_080AA6EC:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080AA700
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AA700:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AA6B8
-
- thumb_func_start sub_80AA708
-sub_80AA708: @ 80AA708
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r1, _080AA720 @ =gUnknown_2037F02
- movs r2, 0x4
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080AA724
- adds r0, r5, 0
- bl DestroyAnimSprite
- b _080AA788
- .align 2, 0
-_080AA720: .4byte gUnknown_2037F02
-_080AA724:
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080AA734
- ldr r4, _080AA730 @ =gUnknown_2037F1A
- b _080AA736
- .align 2, 0
-_080AA730: .4byte gUnknown_2037F1A
-_080AA734:
- ldr r4, _080AA764 @ =gUnknown_2037F1B
-_080AA736:
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r0, _080AA768 @ =gUnknown_2037F02
- movs r2, 0x2
- ldrsh r1, [r0, r2]
- adds r2, r0, 0
- cmp r1, 0
- bne _080AA76C
- ldrh r0, [r5, 0x20]
- adds r0, 0x20
- b _080AA770
- .align 2, 0
-_080AA764: .4byte gUnknown_2037F1B
-_080AA768: .4byte gUnknown_2037F02
-_080AA76C:
- ldrh r0, [r5, 0x20]
- subs r0, 0x20
-_080AA770:
- strh r0, [r5, 0x20]
- ldrh r0, [r2, 0x4]
- strh r0, [r5, 0x2E]
- ldrh r1, [r2, 0x2]
- strh r1, [r5, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, _080AA790 @ =sub_80AA794
- str r0, [r5, 0x1C]
-_080AA788:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA790: .4byte sub_80AA794
- thumb_func_end sub_80AA708
-
- thumb_func_start sub_80AA794
-sub_80AA794: @ 80AA794
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080AA7C4
- ldrh r0, [r2, 0x2E]
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- cmp r0, 0
- beq _080AA7BE
- ldrh r1, [r2, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r2, 0
- bl StartSpriteAnim
- b _080AA7C4
-_080AA7BE:
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080AA7C4:
- pop {r0}
- bx r0
- thumb_func_end sub_80AA794
-
- thumb_func_start sub_80AA7C8
-sub_80AA7C8: @ 80AA7C8
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _080AA7FC @ =gUnknown_2037F02
- ldrb r0, [r0]
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _080AA800 @ =gTasks
- adds r4, r0
- ldr r2, _080AA804 @ =gUnknown_83E4410
- adds r0, r4, 0
- bl sub_80762D0
- ldr r0, _080AA808 @ =sub_80AA80C
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA7FC: .4byte gUnknown_2037F02
-_080AA800: .4byte gTasks
-_080AA804: .4byte gUnknown_83E4410
-_080AA808: .4byte sub_80AA80C
- thumb_func_end sub_80AA7C8
-
- thumb_func_start sub_80AA80C
-sub_80AA80C: @ 80AA80C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080AA834 @ =gTasks
- adds r0, r1
- bl sub_8076308
- lsls r0, 24
- cmp r0, 0
- bne _080AA82C
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080AA82C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA834: .4byte gTasks
- thumb_func_end sub_80AA80C
-
- thumb_func_start sub_80AA838
-sub_80AA838: @ 80AA838
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r0, _080AA84C @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080AA854
- ldr r0, _080AA850 @ =gUnknown_2037F1A
- b _080AA856
- .align 2, 0
-_080AA84C: .4byte gUnknown_2037F02
-_080AA850: .4byte gUnknown_2037F1A
-_080AA854:
- ldr r0, _080AA8EC @ =gUnknown_2037F1B
-_080AA856:
- ldrb r6, [r0]
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080AA870
- ldr r1, _080AA8F0 @ =gUnknown_2037F02
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_080AA870:
- adds r0, r6, 0
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- ldr r7, _080AA8F0 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r3, [r7, 0x2]
- adds r0, r3
- movs r4, 0
- strh r0, [r5, 0x20]
- adds r0, r6, 0
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r7, 0x4]
- adds r0, r1
- strh r0, [r5, 0x22]
- strh r4, [r5, 0x2E]
- ldrh r1, [r5, 0x20]
- lsls r1, 3
- strh r1, [r5, 0x30]
- lsls r0, 3
- strh r0, [r5, 0x32]
- movs r2, 0x2
- ldrsh r0, [r7, r2]
- lsls r0, 3
- cmp r0, 0
- bge _080AA8B0
- adds r0, 0x7
-_080AA8B0:
- asrs r0, 3
- strh r0, [r5, 0x34]
- movs r3, 0x4
- ldrsh r0, [r7, r3]
- lsls r0, 3
- cmp r0, 0
- bge _080AA8C0
- adds r0, 0x7
-_080AA8C0:
- asrs r0, 3
- strh r0, [r5, 0x36]
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- movs r3, 0x6
- ldrsh r0, [r7, r3]
- lsls r0, 4
- adds r1, r0
- ldr r3, _080AA8F4 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080AA8F8 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- ldr r0, _080AA8FC @ =sub_80AA900
- str r0, [r5, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA8EC: .4byte gUnknown_2037F1B
-_080AA8F0: .4byte gUnknown_2037F02
-_080AA8F4: .4byte 0x000003ff
-_080AA8F8: .4byte 0xfffffc00
-_080AA8FC: .4byte sub_80AA900
- thumb_func_end sub_80AA838
-
- thumb_func_start sub_80AA900
-sub_80AA900: @ 80AA900
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x34]
- ldrh r1, [r2, 0x30]
- adds r0, r1
- strh r0, [r2, 0x30]
- ldrh r1, [r2, 0x36]
- ldrh r3, [r2, 0x32]
- adds r1, r3
- strh r1, [r2, 0x32]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r1, 19
- strh r1, [r2, 0x22]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080AA934
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080AA934:
- pop {r0}
- bx r0
- thumb_func_end sub_80AA900
-
- thumb_func_start sub_80AA938
-sub_80AA938: @ 80AA938
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AA95A
- ldr r0, _080AA994 @ =gUnknown_2037F02
- ldrh r1, [r0]
- movs r0, 0x78
- subs r0, r1
- strh r0, [r4, 0x30]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_080AA95A:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080AA978
- ldrb r0, [r4, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- movs r1, 0
- bl sub_8075B48
-_080AA978:
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- adds r0, 0x50
- cmp r1, r0
- bne _080AA98C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AA98C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA994: .4byte gUnknown_2037F02
- thumb_func_end sub_80AA938
-
- thumb_func_start sub_80AA998
-sub_80AA998: @ 80AA998
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080AA9C6
- movs r5, 0x78
- strh r5, [r6, 0x20]
- ldr r4, _080AAA48 @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r0, [r4, r2]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- subs r0, 0xF
- strh r0, [r6, 0x22]
- ldrb r1, [r4, 0x2]
- adds r0, r6, 0
- bl StartSpriteAnim
- strh r5, [r6, 0x38]
- ldrh r0, [r4, 0x4]
- strh r0, [r6, 0x34]
-_080AA9C6:
- ldrh r0, [r6, 0x2E]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r6, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r6, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r6, 0x30]
- movs r2, 0x2E
- ldrsh r0, [r6, r2]
- lsls r4, r0, 1
- adds r4, r0
- ldrh r0, [r6, 0x34]
- adds r4, r0
- movs r2, 0xFF
- ldrh r0, [r6, 0x3A]
- adds r0, 0xA
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r6, 0x3A]
- ands r4, r2
- adds r0, r4, 0
- movs r1, 0x64
- bl Cos
- strh r0, [r6, 0x24]
- adds r0, r4, 0
- movs r1, 0xA
- bl Sin
- adds r4, r0, 0
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- movs r1, 0x4
- bl Cos
- ldrh r2, [r6, 0x30]
- adds r4, r2
- adds r0, r4
- strh r0, [r6, 0x26]
- movs r0, 0x2E
- ldrsh r1, [r6, r0]
- movs r2, 0x38
- ldrsh r0, [r6, r2]
- cmp r1, r0
- ble _080AAA42
- ldr r0, _080AAA4C @ =sub_80AAA50
- str r0, [r6, 0x1C]
- strh r5, [r6, 0x2E]
- adds r0, r6, 0
- bl oamt_add_pos2_onto_pos1
- movs r0, 0x5
- strh r0, [r6, 0x32]
- strh r5, [r6, 0x36]
- strh r5, [r6, 0x34]
- adds r0, r6, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080AAA42:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAA48: .4byte gUnknown_2037F02
-_080AAA4C: .4byte sub_80AAA50
- thumb_func_end sub_80AA998
-
- thumb_func_start sub_80AAA50
-sub_80AAA50: @ 80AAA50
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- ble _080AAA6A
- movs r0, 0
- strh r0, [r1, 0x2E]
- ldr r0, _080AAA70 @ =sub_80AAA74
- str r0, [r1, 0x1C]
-_080AAA6A:
- pop {r0}
- bx r0
- .align 2, 0
-_080AAA70: .4byte sub_80AAA74
- thumb_func_end sub_80AAA50
-
- thumb_func_start sub_80AAA74
-sub_80AAA74: @ 80AAA74
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x34]
- adds r0, r1, r2
- strh r0, [r4, 0x34]
- strh r0, [r4, 0x26]
- adds r1, 0x1
- strh r1, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x30
- ble _080AAA9E
- lsls r0, r1, 16
- cmp r0, 0
- ble _080AAA9E
- ldrh r0, [r4, 0x36]
- subs r1, r0, 0x5
- strh r1, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x36]
-_080AAA9E:
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0x3
- ble _080AAAD0
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AAAD0:
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bne _080AAADE
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AAADE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AAA74
-
- thumb_func_start sub_80AAAE4
-sub_80AAAE4: @ 80AAAE4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080AAB28 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080AAB30
- ldr r4, _080AAB2C @ =gUnknown_2037F1A
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080AAB30
- ldrb r0, [r4]
- adds r2, r5, 0
- adds r2, 0x20
- adds r3, r5, 0
- adds r3, 0x22
- movs r1, 0
- bl sub_8076D9C
- ldrh r0, [r5, 0x22]
- adds r0, 0x28
- strh r0, [r5, 0x22]
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _080AAB50
- .align 2, 0
-_080AAB28: .4byte gBattleTypeFlags
-_080AAB2C: .4byte gUnknown_2037F1A
-_080AAB30:
- ldr r4, _080AAB70 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x28
- strh r0, [r5, 0x22]
-_080AAB50:
- movs r0, 0xD
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- subs r0, 0x48
- strh r0, [r5, 0x36]
- ldr r0, _080AAB74 @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _080AAB78 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAB70: .4byte gUnknown_2037F1A
-_080AAB74: .4byte sub_8075590
-_080AAB78: .4byte DestroyAnimSprite
- thumb_func_end sub_80AAAE4
-
- thumb_func_start sub_80AAB7C
-sub_80AAB7C: @ 80AAB7C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080AAB98 @ =gUnknown_2037F02
- ldr r1, _080AAB9C @ =gUnknown_2037EE4
- ldr r1, [r1]
- ldrb r2, [r1, 0x10]
- movs r1, 0x1
- ands r1, r2
- strh r1, [r3, 0xE]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080AAB98: .4byte gUnknown_2037F02
-_080AAB9C: .4byte gUnknown_2037EE4
- thumb_func_end sub_80AAB7C
-
- thumb_func_start update_fury_cutter_counter_copy
-update_fury_cutter_counter_copy: @ 80AABA0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080AABB8 @ =gUnknown_2037F02
- ldr r1, _080AABBC @ =gUnknown_2037EE4
- ldr r1, [r1]
- ldrb r1, [r1, 0x10]
- strh r1, [r2, 0xE]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080AABB8: .4byte gUnknown_2037F02
-_080AABBC: .4byte gUnknown_2037EE4
- thumb_func_end update_fury_cutter_counter_copy
-
- thumb_func_start sub_80AABC0
-sub_80AABC0: @ 80AABC0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, _080AAC48 @ =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 _080AABE8
- ldr r1, _080AAC4C @ =gUnknown_2037F02
- ldrh r0, [r1]
- strh r0, [r5, 0xA]
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0xC]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0xE]
-_080AABE8:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r2, 0x8
- ldrsh r0, [r5, r2]
- movs r2, 0xC
- ldrsh r1, [r5, r2]
- bl __modsi3
- cmp r0, 0x1
- bne _080AAC30
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF0
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x50
- bl __umodsi3
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _080AAC50 @ =gUnknown_83E5898
- adds r1, r4, 0
- movs r3, 0x4
- bl CreateSprite
-_080AAC30:
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bne _080AAC42
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080AAC42:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAC48: .4byte gTasks
-_080AAC4C: .4byte gUnknown_2037F02
-_080AAC50: .4byte gUnknown_83E5898
- thumb_func_end sub_80AABC0
-
- thumb_func_start sub_80AAC54
-sub_80AAC54: @ 80AAC54
- ldr r1, _080AAC5C @ =sub_80AAC60
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080AAC5C: .4byte sub_80AAC60
- thumb_func_end sub_80AAC54
-
- thumb_func_start sub_80AAC60
-sub_80AAC60: @ 80AAC60
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- bgt _080AAC7E
- ldrh r0, [r2, 0x24]
- adds r0, 0x1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x26]
- adds r0, 0x4
- strh r0, [r2, 0x26]
-_080AAC7E:
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080AAC92
- adds r0, r2, 0
- bl DestroySprite
-_080AAC92:
- pop {r0}
- bx r0
- thumb_func_end sub_80AAC60
-
- thumb_func_start sub_80AAC98
-sub_80AAC98: @ 80AAC98
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r5, _080AACC0 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AACC8
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _080AACC4 @ =gUnknown_2037F02
- ldrh r1, [r4]
- subs r0, r1
- b _080AACDA
- .align 2, 0
-_080AACC0: .4byte gUnknown_2037F1A
-_080AACC4: .4byte gUnknown_2037F02
-_080AACC8:
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- ldr r4, _080AADA0 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
-_080AACDA:
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
- strh r0, [r6, 0x22]
- adds r2, r6, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080AADA4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AAD10
- ldr r1, _080AADA0 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080AAD10:
- ldr r5, _080AADA0 @ =gUnknown_2037F02
- ldrh r0, [r5, 0xC]
- strh r0, [r6, 0x2E]
- ldrh r0, [r6, 0x20]
- strh r0, [r6, 0x30]
- ldr r4, _080AADA8 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x32]
- ldrh r0, [r6, 0x22]
- strh r0, [r6, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x36]
- adds r0, r6, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r0, _080AADAC @ =SpriteCallbackDummy
- bl CreateInvisibleSpriteWithCallback
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- strh r4, [r6, 0x38]
- ldrb r0, [r5, 0x8]
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- bl Sin
- ldrh r1, [r6, 0x20]
- subs r1, r0
- strh r1, [r6, 0x20]
- ldrb r0, [r5, 0x8]
- movs r2, 0x6
- ldrsh r1, [r5, r2]
- bl Cos
- ldrh r1, [r6, 0x22]
- subs r1, r0
- strh r1, [r6, 0x22]
- ldr r0, _080AADB0 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r5, 0x4]
- strh r0, [r1, 0x2E]
- ldrh r0, [r5, 0x6]
- strh r0, [r1, 0x30]
- ldrh r0, [r5, 0xA]
- strh r0, [r1, 0x32]
- ldrb r0, [r5, 0x8]
- lsls r0, 8
- strh r0, [r1, 0x34]
- ldrh r0, [r5, 0xC]
- strh r0, [r1, 0x36]
- ldr r1, _080AADB4 @ =sub_80AADB8
- str r1, [r6, 0x1C]
- adds r0, r6, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AADA0: .4byte gUnknown_2037F02
-_080AADA4: .4byte gUnknown_2037F1A
-_080AADA8: .4byte gUnknown_2037F1B
-_080AADAC: .4byte SpriteCallbackDummy
-_080AADB0: .4byte gSprites
-_080AADB4: .4byte sub_80AADB8
- thumb_func_end sub_80AAC98
-
- thumb_func_start sub_80AADB8
-sub_80AADB8: @ 80AADB8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r1, [r5, 0x38]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080AAE20 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r7, r0, r2
- ldrh r4, [r7, 0x36]
- lsls r4, 24
- lsrs r4, 24
- ldrh r0, [r7, 0x34]
- mov r8, r0
- movs r0, 0x1
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- bl sub_80755E0
- mov r1, r8
- lsrs r6, r1, 8
- movs r0, 0x2E
- ldrsh r1, [r7, r0]
- adds r0, r6, 0
- bl Sin
- ldrh r1, [r5, 0x24]
- adds r0, r1
- strh r0, [r5, 0x24]
- movs r0, 0x30
- ldrsh r1, [r7, r0]
- adds r0, r6, 0
- bl Cos
- ldrh r1, [r5, 0x26]
- adds r0, r1
- strh r0, [r5, 0x26]
- ldrh r0, [r7, 0x32]
- mov r1, r8
- adds r1, r0
- strh r1, [r7, 0x34]
- subs r4, 0x1
- lsls r4, 24
- lsrs r4, 24
- cmp r4, 0
- beq _080AAE24
- strh r4, [r7, 0x36]
- b _080AAE2E
- .align 2, 0
-_080AAE20: .4byte gSprites
-_080AAE24:
- ldr r0, _080AAE3C @ =sub_80AAE40
- str r0, [r5, 0x1C]
- adds r0, r7, 0
- bl DestroySprite
-_080AAE2E:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAE3C: .4byte sub_80AAE40
- thumb_func_end sub_80AADB8
-
- thumb_func_start sub_80AAE40
-sub_80AAE40: @ 80AAE40
- push {lr}
- adds r3, r0, 0
- adds r3, 0x2C
- ldrb r2, [r3]
- movs r1, 0x41
- negs r1, r1
- ands r1, r2
- strb r1, [r3]
- ldr r1, _080AAE60 @ =sub_8074F6C
- str r1, [r0, 0x1C]
- ldr r1, _080AAE64 @ =sub_80AAE68
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .align 2, 0
-_080AAE60: .4byte sub_8074F6C
-_080AAE64: .4byte sub_80AAE68
- thumb_func_end sub_80AAE40
-
- thumb_func_start sub_80AAE68
-sub_80AAE68: @ 80AAE68
- push {lr}
- movs r1, 0xA
- strh r1, [r0, 0x2E]
- ldr r1, _080AAE7C @ =sub_8074C44
- str r1, [r0, 0x1C]
- ldr r1, _080AAE80 @ =move_anim_8074EE0
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .align 2, 0
-_080AAE7C: .4byte sub_8074C44
-_080AAE80: .4byte move_anim_8074EE0
- thumb_func_end sub_80AAE68
-
- thumb_func_start sub_80AAE84
-sub_80AAE84: @ 80AAE84
- push {r4-r7,lr}
- adds r5, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080AAEAC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AAEB4
- ldr r1, _080AAEB0 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- lsls r0, 16
- lsrs r6, r0, 16
- adds r7, r1, 0
- b _080AAEBA
- .align 2, 0
-_080AAEAC: .4byte gUnknown_2037F1A
-_080AAEB0: .4byte gUnknown_2037F02
-_080AAEB4:
- ldr r0, _080AAF10 @ =gUnknown_2037F02
- ldrh r6, [r0, 0x4]
- adds r7, r0, 0
-_080AAEBA:
- ldrh r0, [r7, 0x8]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldr r4, _080AAF14 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r7, [r7, 0x6]
- adds r0, r7
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r0, _080AAF18 @ =sub_80AAF1C
- str r0, [r5, 0x1C]
- adds r2, r5, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAF10: .4byte gUnknown_2037F02
-_080AAF14: .4byte gUnknown_2037F1B
-_080AAF18: .4byte sub_80AAF1C
- thumb_func_end sub_80AAE84
-
- thumb_func_start sub_80AAF1C
-sub_80AAF1C: @ 80AAF1C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080AAF58 @ =gUnknown_2037F02
- ldrh r1, [r0, 0xE]
- ldr r0, _080AAF5C @ =0x0000ffff
- cmp r1, r0
- bne _080AAF3E
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
-_080AAF3E:
- adds r0, r4, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080AAF50
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AAF50:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAF58: .4byte gUnknown_2037F02
-_080AAF5C: .4byte 0x0000ffff
- thumb_func_end sub_80AAF1C
-
- thumb_func_start sub_80AAF60
-sub_80AAF60: @ 80AAF60
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080AAF94 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r0, _080AAF98 @ =gUnknown_2037F02
- ldrh r0, [r0]
- strh r0, [r4, 0x8]
- ldr r0, _080AAF9C @ =0x0000279c
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r4, 0xC]
- ldr r0, _080AAFA0 @ =sub_80AAFA4
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAF94: .4byte gTasks
-_080AAF98: .4byte gUnknown_2037F02
-_080AAF9C: .4byte 0x0000279c
-_080AAFA0: .4byte sub_80AAFA4
- thumb_func_end sub_80AAF60
-
- thumb_func_start sub_80AAFA4
-sub_80AAFA4: @ 80AAFA4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080AB01C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0x1C]
- adds r0, 0x1
- strh r0, [r2, 0x1C]
- lsls r0, 16
- asrs r0, 16
- mov r12, r1
- cmp r0, 0x3
- bne _080AAFF6
- movs r0, 0
- strh r0, [r2, 0x1C]
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r1, _080AB020 @ =gPlttBufferFaded
- lsls r0, r5, 1
- adds r0, r1
- ldrh r6, [r0]
- adds r7, r1, 0
- adds r3, r0, 0x2
- movs r1, 0x6
- adds r2, r0, 0
-_080AAFE0:
- ldrh r0, [r3]
- strh r0, [r2]
- adds r3, 0x2
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _080AAFE0
- adds r0, r5, 0x7
- lsls r0, 1
- adds r0, r7
- strh r6, [r0]
-_080AAFF6:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r12
- ldrh r1, [r0, 0x1E]
- adds r1, 0x1
- strh r1, [r0, 0x1E]
- lsls r1, 16
- asrs r1, 16
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- cmp r1, r0
- bne _080AB016
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080AB016:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AB01C: .4byte gTasks
-_080AB020: .4byte gPlttBufferFaded
- thumb_func_end sub_80AAFA4
-
- thumb_func_start sub_80AB024
-sub_80AB024: @ 80AB024
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x1
- bl sub_8075160
- movs r0, 0x1E
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldr r4, _080AB08C @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
- movs r0, 0x2E
- ldrsh r1, [r5, r0]
- movs r0, 0xD2
- lsls r0, 8
- bl __divsi3
- strh r0, [r5, 0x38]
- ldr r0, _080AB090 @ =gUnknown_2037F02
- ldrh r2, [r0, 0x6]
- strh r2, [r5, 0x3C]
- ldrh r1, [r0, 0xE]
- movs r3, 0xE
- ldrsh r0, [r0, r3]
- cmp r0, 0x7F
- ble _080AB094
- adds r0, r1, 0
- subs r0, 0x7F
- lsls r0, 8
- strh r0, [r5, 0x3A]
- negs r0, r2
- strh r0, [r5, 0x3C]
- b _080AB098
- .align 2, 0
-_080AB08C: .4byte gUnknown_2037F1B
-_080AB090: .4byte gUnknown_2037F02
-_080AB094:
- lsls r0, r1, 8
- strh r0, [r5, 0x3A]
-_080AB098:
- ldr r1, _080AB0A8 @ =sub_80AB0AC
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AB0A8: .4byte sub_80AB0AC
- thumb_func_end sub_80AB024
-
- thumb_func_start sub_80AB0AC
-sub_80AB0AC: @ 80AB0AC
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080AB0C0
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AB0C0:
- ldrh r0, [r4, 0x3A]
- lsls r0, 16
- asrs r0, 24
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- adds r0, r1
- asrs r0, 8
- cmp r0, 0x7F
- ble _080AB0F0
- movs r0, 0
- strh r0, [r4, 0x3A]
- ldrh r0, [r4, 0x3C]
- negs r0, r0
- strh r0, [r4, 0x3C]
- b _080AB0F8
-_080AB0F0:
- ldrh r0, [r4, 0x38]
- ldrh r1, [r4, 0x3A]
- adds r0, r1
- strh r0, [r4, 0x3A]
-_080AB0F8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AB0AC
-
- thumb_func_start sub_80AB100
-sub_80AB100: @ 80AB100
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080AB120 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r3, _080AB124 @ =gUnknown_2037F02
- ldrh r0, [r3]
- movs r2, 0
- strh r0, [r1, 0x8]
- strh r2, [r3, 0xE]
- ldr r0, _080AB128 @ =sub_80AB12C
- str r0, [r1]
- bx lr
- .align 2, 0
-_080AB120: .4byte gTasks
-_080AB124: .4byte gUnknown_2037F02
-_080AB128: .4byte sub_80AB12C
- thumb_func_end sub_80AB100
-
- thumb_func_start sub_80AB12C
-sub_80AB12C: @ 80AB12C
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080AB160 @ =gUnknown_2037F02
- ldrh r0, [r2, 0xE]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r2, 0xE]
- ldr r1, _080AB164 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- subs r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- cmp r1, 0
- bne _080AB15A
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_080AB15A:
- pop {r0}
- bx r0
- .align 2, 0
-_080AB160: .4byte gUnknown_2037F02
-_080AB164: .4byte gTasks
- thumb_func_end sub_80AB12C
-
- thumb_func_start sub_80AB168
-sub_80AB168: @ 80AB168
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r7, _080AB1B4 @ =gUnknown_2037F1A
- ldrb r0, [r7]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r7]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r6, _080AB1B8 @ =0x0000fff6
- strh r6, [r4, 0x26]
- ldrb r0, [r7]
- bl sub_807685C
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080AB1C2
- ldrb r0, [r7]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080AB1BC
- movs r0, 0xA
- strh r0, [r4, 0x24]
- b _080AB1C4
- .align 2, 0
-_080AB1B4: .4byte gUnknown_2037F1A
-_080AB1B8: .4byte 0x0000fff6
-_080AB1BC:
- strh r6, [r4, 0x24]
- subs r0, r5, 0x2
- b _080AB1C6
-_080AB1C2:
- strh r6, [r4, 0x24]
-_080AB1C4:
- adds r0, r5, 0x2
-_080AB1C6:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldr r0, _080AB1D8 @ =sub_80AB1DC
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AB1D8: .4byte sub_80AB1DC
- thumb_func_end sub_80AB168
-
- thumb_func_start sub_80AB1DC
-sub_80AB1DC: @ 80AB1DC
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080AB1F2
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080AB1F2:
- pop {r0}
- bx r0
- thumb_func_end sub_80AB1DC
-
- thumb_func_start sub_80AB1F8
-sub_80AB1F8: @ 80AB1F8
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r5, _080AB2B8 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- bl GetBattlerSide
- adds r4, r0, 0
- ldr r0, _080AB2BC @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080AB242
- ldr r4, _080AB2C0 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4]
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- beq _080AB23A
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080AB242
-_080AB23A:
- movs r1, 0
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4]
-_080AB242:
- ldr r5, _080AB2C0 @ =gUnknown_2037F02
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0
- cmp r0, 0
- bne _080AB256
- movs r1, 0x1
-_080AB256:
- ldrb r0, [r5, 0xA]
- movs r7, 0x1
- cmp r0, 0
- bne _080AB260
- movs r7, 0x3
-_080AB260:
- adds r0, r6, 0
- bl sub_8075160
- ldr r0, _080AB2B8 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AB27A
- ldrh r0, [r5, 0x4]
- negs r0, r0
- strh r0, [r5, 0x4]
-_080AB27A:
- ldrh r0, [r5, 0x8]
- strh r0, [r6, 0x2E]
- ldr r4, _080AB2BC @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r4]
- adds r1, r7, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x6]
- adds r0, r5
- strh r0, [r6, 0x36]
- ldr r0, _080AB2C4 @ =sub_8075590
- str r0, [r6, 0x1C]
- ldr r1, _080AB2C8 @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AB2B8: .4byte gUnknown_2037F1A
-_080AB2BC: .4byte gUnknown_2037F1B
-_080AB2C0: .4byte gUnknown_2037F02
-_080AB2C4: .4byte sub_8075590
-_080AB2C8: .4byte DestroyAnimSprite
- thumb_func_end sub_80AB1F8
-
- thumb_func_start sub_80AB2CC
-sub_80AB2CC: @ 80AB2CC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r0, _080AB2FC @ =gUnknown_2037F02
- ldrh r1, [r0, 0x8]
- strh r1, [r4, 0x2E]
- ldrh r0, [r0, 0x4]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- adds r1, r0
- strh r1, [r4, 0x36]
- ldr r0, _080AB300 @ =sub_8075590
- str r0, [r4, 0x1C]
- ldr r1, _080AB304 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AB2FC: .4byte gUnknown_2037F02
-_080AB300: .4byte sub_8075590
-_080AB304: .4byte DestroyAnimSprite
- thumb_func_end sub_80AB2CC
-
- thumb_func_start sub_80AB308
-sub_80AB308: @ 80AB308
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080AB320 @ =gUnknown_2037F02
- movs r1, 0x6
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080AB324
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075114
- b _080AB32C
- .align 2, 0
-_080AB320: .4byte gUnknown_2037F02
-_080AB324:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075160
-_080AB32C:
- ldr r0, _080AB33C @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x3C]
- ldr r0, _080AB340 @ =sub_80AB344
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AB33C: .4byte gUnknown_2037F02
-_080AB340: .4byte sub_80AB344
- thumb_func_end sub_80AB308
-
- thumb_func_start sub_80AB344
-sub_80AB344: @ 80AB344
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0xB
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x4
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x30
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3C]
- subs r0, 0x1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080AB384
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AB384:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AB344
-
- thumb_func_start sub_80AB38C
-sub_80AB38C: @ 80AB38C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r1, _080AB3FC @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x1
- bl SetAnimBgAttribute
- mov r0, sp
- bl sub_80752A0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080AB418
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
- ldr r0, _080AB400 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080AB408
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080AB404 @ =gFile_graphics_unknown_unknown_E81D14_tilemap
- bl sub_807543C
- b _080AB42E
- .align 2, 0
-_080AB3FC: .4byte 0x00003f42
-_080AB400: .4byte gUnknown_2037F1A
-_080AB404: .4byte gFile_graphics_unknown_unknown_E81D14_tilemap
-_080AB408:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080AB414 @ =gFile_graphics_unknown_unknown_E81FE4_tilemap
- bl sub_807543C
- b _080AB42E
- .align 2, 0
-_080AB414: .4byte gFile_graphics_unknown_unknown_E81FE4_tilemap
-_080AB418:
- ldr r0, _080AB458 @ =gFile_graphics_unknown_unknown_E822B8_tilemap
- ldr r1, [sp, 0x4]
- bl LZDecompressVram
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0x1
- bl sub_80730C0
-_080AB42E:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080AB45C @ =gFile_graphics_battle_anims_backgrounds_water_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080AB460 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080AB468
- ldr r0, _080AB464 @ =gFile_graphics_battle_anims_backgrounds_water_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- b _080AB476
- .align 2, 0
-_080AB458: .4byte gFile_graphics_unknown_unknown_E822B8_tilemap
-_080AB45C: .4byte gFile_graphics_battle_anims_backgrounds_water_sheet
-_080AB460: .4byte gUnknown_2037F02
-_080AB464: .4byte gFile_graphics_battle_anims_backgrounds_water_palette
-_080AB468:
- ldr r0, _080AB4E0 @ =gFile_graphics_battle_anims_backgrounds_water_muddy_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
-_080AB476:
- ldr r0, _080AB4E4 @ =sub_80AB79C
- ldr r4, _080AB4E8 @ =gTasks
- mov r2, r10
- lsls r5, r2, 2
- adds r1, r5, r2
- lsls r1, 3
- adds r6, r1, r4
- ldrb r1, [r6, 0x7]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r0, 0
- mov r9, r0
- mov r1, r8
- strh r1, [r6, 0x26]
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r7, r0, r4
- mov r0, r9
- strh r0, [r7, 0x8]
- movs r0, 0x80
- lsls r0, 5
- strh r0, [r7, 0xA]
- strh r0, [r7, 0xC]
- bl sub_8073788
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _080AB4F8
- ldr r1, _080AB4EC @ =0x0000ffb0
- adds r0, r1, 0
- ldr r2, _080AB4F0 @ =gBattle_BG1_X
- strh r0, [r2]
- adds r1, 0x20
- adds r0, r1, 0
- ldr r2, _080AB4F4 @ =gBattle_BG1_Y
- strh r0, [r2]
- movs r0, 0x2
- strh r0, [r6, 0x8]
- movs r0, 0x1
- strh r0, [r6, 0xA]
- mov r0, r9
- strh r0, [r7, 0xE]
- b _080AB552
- .align 2, 0
-_080AB4E0: .4byte gFile_graphics_battle_anims_backgrounds_water_muddy_palette
-_080AB4E4: .4byte sub_80AB79C
-_080AB4E8: .4byte gTasks
-_080AB4EC: .4byte 0x0000ffb0
-_080AB4F0: .4byte gBattle_BG1_X
-_080AB4F4: .4byte gBattle_BG1_Y
-_080AB4F8:
- ldr r0, _080AB528 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1
- bne _080AB53C
- ldr r2, _080AB52C @ =0x0000ff20
- adds r0, r2, 0
- ldr r2, _080AB530 @ =gBattle_BG1_X
- strh r0, [r2]
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- ldr r2, _080AB534 @ =gBattle_BG1_Y
- strh r0, [r2]
- movs r0, 0x2
- strh r0, [r6, 0x8]
- ldr r0, _080AB538 @ =0x0000ffff
- strh r0, [r6, 0xA]
- strh r1, [r7, 0xE]
- b _080AB552
- .align 2, 0
-_080AB528: .4byte gUnknown_2037F1A
-_080AB52C: .4byte 0x0000ff20
-_080AB530: .4byte gBattle_BG1_X
-_080AB534: .4byte gBattle_BG1_Y
-_080AB538: .4byte 0x0000ffff
-_080AB53C:
- ldr r0, _080AB584 @ =gBattle_BG1_X
- strh r4, [r0]
- ldr r1, _080AB588 @ =0x0000ffd0
- adds r0, r1, 0
- ldr r2, _080AB58C @ =gBattle_BG1_Y
- strh r0, [r2]
- ldr r0, _080AB590 @ =0x0000fffe
- strh r0, [r6, 0x8]
- movs r0, 0x1
- strh r0, [r6, 0xA]
- strh r4, [r7, 0xE]
-_080AB552:
- ldr r0, _080AB584 @ =gBattle_BG1_X
- ldrh r1, [r0]
- movs r0, 0x14
- bl SetGpuReg
- ldr r2, _080AB58C @ =gBattle_BG1_Y
- ldrh r1, [r2]
- movs r0, 0x16
- bl SetGpuReg
- ldr r1, _080AB594 @ =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r1, r0, r1
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080AB598
- movs r0, 0x30
- strh r0, [r1, 0x10]
- movs r0, 0x70
- b _080AB59C
- .align 2, 0
-_080AB584: .4byte gBattle_BG1_X
-_080AB588: .4byte 0x0000ffd0
-_080AB58C: .4byte gBattle_BG1_Y
-_080AB590: .4byte 0x0000fffe
-_080AB594: .4byte gTasks
-_080AB598:
- movs r0, 0
- strh r0, [r1, 0x10]
-_080AB59C:
- strh r0, [r1, 0x12]
- ldr r1, _080AB5C0 @ =gTasks
- mov r2, r10
- adds r0, r5, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0, 0x14]
- ldr r1, _080AB5C4 @ =sub_80AB5C8
- str r1, [r0]
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AB5C0: .4byte gTasks
-_080AB5C4: .4byte sub_80AB5C8
- thumb_func_end sub_80AB38C
-
- thumb_func_start sub_80AB5C8
-sub_80AB5C8: @ 80AB5C8
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080AB6F4 @ =gBattle_BG1_X
- ldr r2, _080AB6F8 @ =gBattle_BG1_Y
- ldr r0, _080AB6FC @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0x8]
- ldrh r3, [r1]
- adds r0, r3
- strh r0, [r1]
- ldrh r0, [r4, 0xA]
- ldrh r1, [r2]
- adds r0, r1
- strh r0, [r2]
- mov r0, sp
- bl sub_80752A0
- ldrh r0, [r4, 0xA]
- ldrh r3, [r4, 0xC]
- adds r0, r3
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080AB65C
- ldr r1, _080AB700 @ =gPlttBufferFaded
- mov r0, sp
- ldrb r0, [r0, 0x8]
- lsls r0, 4
- adds r0, 0x7
- lsls r0, 1
- adds r0, r1
- ldrh r6, [r0]
- movs r2, 0x6
- adds r7, r1, 0
- adds r3, r7, 0
- mov r4, sp
-_080AB622:
- ldrb r0, [r4, 0x8]
- lsls r0, 4
- adds r1, r2, 0x1
- adds r0, r1
- lsls r1, r0, 1
- adds r1, r3
- subs r0, 0x1
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r1]
- subs r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080AB622
- mov r0, sp
- ldrb r0, [r0, 0x8]
- lsls r0, 4
- adds r0, 0x1
- lsls r0, 1
- adds r0, r7
- strh r6, [r0]
- ldr r1, _080AB6FC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r2, [r0, 0x12]
-_080AB65C:
- ldr r1, _080AB6FC @ =gTasks
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r3, r0, r1
- ldrh r0, [r3, 0x14]
- adds r0, 0x1
- strh r0, [r3, 0x14]
- lsls r0, 16
- asrs r0, 16
- adds r4, r1, 0
- adds r6, r2, 0
- cmp r0, 0x1
- ble _080AB6CA
- movs r0, 0
- strh r0, [r3, 0x14]
- ldrh r0, [r3, 0xE]
- adds r2, r0, 0x1
- strh r2, [r3, 0xE]
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0xD
- bgt _080AB6A6
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- movs r0, 0x10
- subs r0, r2
- lsls r0, 8
- orrs r2, r0
- strh r2, [r1, 0xA]
- ldrh r0, [r3, 0x10]
- adds r0, 0x1
- strh r0, [r3, 0x10]
-_080AB6A6:
- movs r1, 0xE
- ldrsh r0, [r3, r1]
- cmp r0, 0x36
- ble _080AB6CA
- ldrh r2, [r3, 0x10]
- subs r2, 0x1
- strh r2, [r3, 0x10]
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- movs r0, 0x10
- subs r0, r2
- lsls r0, 8
- orrs r2, r0
- strh r2, [r1, 0xA]
-_080AB6CA:
- adds r0, r6, r5
- lsls r0, 3
- adds r2, r0, r4
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- ldrh r0, [r0, 0xA]
- movs r3, 0x1F
- ands r3, r0
- cmp r3, 0
- bne _080AB6EC
- strh r3, [r2, 0x8]
- ldr r0, _080AB704 @ =sub_80AB708
- str r0, [r2]
-_080AB6EC:
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AB6F4: .4byte gBattle_BG1_X
-_080AB6F8: .4byte gBattle_BG1_Y
-_080AB6FC: .4byte gTasks
-_080AB700: .4byte gPlttBufferFaded
-_080AB704: .4byte sub_80AB708
- thumb_func_end sub_80AB5C8
-
- thumb_func_start sub_80AB708
-sub_80AB708: @ 80AB708
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r7, _080AB740 @ =gBattle_BG1_X
- ldr r0, _080AB744 @ =gBattle_BG1_Y
- mov r8, r0
- ldr r6, _080AB748 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r6
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AB74C
- movs r0, 0x1
- bl sub_8075358
- movs r0, 0x2
- bl sub_8075358
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080AB78E
- .align 2, 0
-_080AB740: .4byte gBattle_BG1_X
-_080AB744: .4byte gBattle_BG1_Y
-_080AB748: .4byte gTasks
-_080AB74C:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080AB760
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080AB760:
- movs r0, 0
- strh r0, [r7]
- mov r1, r8
- strh r0, [r1]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldr r1, _080AB798 @ =0x0000ffff
- strh r1, [r0, 0x26]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080AB78E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AB798: .4byte 0x0000ffff
- thumb_func_end sub_80AB708
-
- thumb_func_start sub_80AB79C
-sub_80AB79C: @ 80AB79C
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _080AB7C4 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080AB7B8
- b _080AB8F0
-_080AB7B8:
- cmp r0, 0x1
- bgt _080AB7C8
- cmp r0, 0
- beq _080AB7D0
- b _080ABA66
- .align 2, 0
-_080AB7C4: .4byte gTasks
-_080AB7C8:
- cmp r0, 0x2
- bne _080AB7CE
- b _080AB9BC
-_080AB7CE:
- b _080ABA66
-_080AB7D0:
- movs r3, 0
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- ldr r1, _080AB8A0 @ =gScanlineEffectRegBuffers
- mov r12, r1
- cmp r3, r0
- bge _080AB80E
- mov r7, r12
- movs r5, 0xF0
- lsls r5, 3
- add r5, r12
- ldr r6, _080AB8A4 @ =0x0000ffff
-_080AB7E8:
- lsls r2, r3, 16
- asrs r2, 16
- lsls r1, r2, 1
- adds r3, r1, r7
- adds r1, r5
- ldrh r0, [r4, 0xC]
- strh r0, [r1]
- ldrh r1, [r4, 0xC]
- adds r0, r6, 0
- ands r0, r1
- strh r0, [r3]
- adds r2, 0x1
- lsls r2, 16
- lsrs r3, r2, 16
- asrs r2, 16
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r2, r0
- blt _080AB7E8
-_080AB80E:
- ldrh r3, [r4, 0x10]
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bge _080AB848
- ldr r5, _080AB8A0 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
- ldr r7, _080AB8A4 @ =0x0000ffff
-_080AB826:
- asrs r2, 16
- lsls r1, r2, 1
- adds r3, r1, r5
- adds r1, r6
- ldrh r0, [r4, 0xA]
- strh r0, [r1]
- ldrh r1, [r4, 0xA]
- adds r0, r7, 0
- ands r0, r1
- strh r0, [r3]
- adds r2, 0x1
- lsls r2, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- blt _080AB826
-_080AB848:
- ldrh r3, [r4, 0x12]
- lsls r2, r3, 16
- asrs r0, r2, 16
- cmp r0, 0x9F
- bgt _080AB87E
- ldr r5, _080AB8A0 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
- ldr r7, _080AB8A4 @ =0x0000ffff
-_080AB85C:
- asrs r2, 16
- lsls r1, r2, 1
- adds r3, r1, r5
- adds r1, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r1]
- ldrh r1, [r4, 0xC]
- adds r0, r7, 0
- ands r0, r1
- strh r0, [r3]
- adds r2, 0x1
- lsls r2, 16
- lsrs r3, r2, 16
- lsls r2, r3, 16
- asrs r0, r2, 16
- cmp r0, 0x9F
- ble _080AB85C
-_080AB87E:
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AB8A8
- lsls r0, r3, 16
- asrs r0, 15
- mov r3, r12
- adds r2, r0, r3
- movs r1, 0xF0
- lsls r1, 3
- add r1, r12
- adds r0, r1
- ldrh r1, [r4, 0xA]
- strh r1, [r0]
- ldrh r0, [r4, 0xA]
- b _080AB8BE
- .align 2, 0
-_080AB8A0: .4byte gScanlineEffectRegBuffers
-_080AB8A4: .4byte 0x0000ffff
-_080AB8A8:
- lsls r0, r3, 16
- asrs r0, 15
- mov r1, r12
- adds r2, r0, r1
- movs r1, 0xF0
- lsls r1, 3
- add r1, r12
- adds r0, r1
- ldrh r1, [r4, 0xC]
- strh r1, [r0]
- ldrh r0, [r4, 0xC]
-_080AB8BE:
- strh r0, [r2]
- ldr r0, _080AB8E8 @ =0x04000052
- str r0, [sp]
- ldr r0, _080AB8EC @ =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r2, [r0, 0x9]
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080ABA66
- .align 2, 0
-_080AB8E8: .4byte 0x04000052
-_080AB8EC: .4byte 0xa2600001
-_080AB8F0:
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _080AB908
- ldrh r0, [r4, 0x10]
- subs r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bgt _080AB91C
- strh r1, [r4, 0x10]
- b _080AB916
-_080AB908:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6F
- ble _080AB91C
-_080AB916:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080AB91C:
- movs r3, 0
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r3, r0
- bge _080AB950
- ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers
- ldr r5, _080AB9B8 @ =gScanlineEffect
-_080AB92A:
- lsls r1, r3, 16
- asrs r1, 16
- lsls r3, r1, 1
- ldrb r2, [r5, 0x14]
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 7
- adds r3, r0
- adds r3, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r3]
- adds r1, 0x1
- lsls r1, 16
- lsrs r3, r1, 16
- asrs r1, 16
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r1, r0
- blt _080AB92A
-_080AB950:
- ldrh r3, [r4, 0x10]
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bge _080AB984
- ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers
- ldr r5, _080AB9B8 @ =gScanlineEffect
-_080AB962:
- asrs r3, r2, 16
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- ldrh r0, [r4, 0xA]
- strh r0, [r2]
- adds r3, 0x1
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- blt _080AB962
-_080AB984:
- ldrh r3, [r4, 0x12]
- lsls r1, r3, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- bgt _080ABA66
- ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers
- ldr r5, _080AB9B8 @ =gScanlineEffect
-_080AB992:
- asrs r3, r1, 16
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- lsls r1, r3, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- ble _080AB992
- b _080ABA66
- .align 2, 0
-_080AB9B4: .4byte gScanlineEffectRegBuffers
-_080AB9B8: .4byte gScanlineEffect
-_080AB9BC:
- movs r3, 0
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r3, r0
- bge _080AB9F0
- ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers
- ldr r5, _080ABA74 @ =gScanlineEffect
-_080AB9CA:
- lsls r1, r3, 16
- asrs r1, 16
- lsls r3, r1, 1
- ldrb r2, [r5, 0x14]
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 7
- adds r3, r0
- adds r3, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r3]
- adds r1, 0x1
- lsls r1, 16
- lsrs r3, r1, 16
- asrs r1, 16
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r1, r0
- blt _080AB9CA
-_080AB9F0:
- ldrh r3, [r4, 0x10]
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bge _080ABA24
- ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers
- ldr r5, _080ABA74 @ =gScanlineEffect
-_080ABA02:
- asrs r3, r2, 16
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- ldrh r0, [r4, 0xA]
- strh r0, [r2]
- adds r3, 0x1
- lsls r2, r3, 16
- asrs r1, r2, 16
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- blt _080ABA02
-_080ABA24:
- ldrh r3, [r4, 0x12]
- lsls r1, r3, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- bgt _080ABA50
- ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers
- ldr r5, _080ABA74 @ =gScanlineEffect
-_080ABA32:
- asrs r3, r1, 16
- lsls r2, r3, 1
- ldrb r1, [r5, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- lsls r1, r3, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- ble _080ABA32
-_080ABA50:
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080ABA66
- bl ScanlineEffect_Stop
- adds r0, r7, 0
- bl DestroyTask
-_080ABA66:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080ABA70: .4byte gScanlineEffectRegBuffers
-_080ABA74: .4byte gScanlineEffect
- thumb_func_end sub_80AB79C
-
- thumb_func_start sub_80ABA78
-sub_80ABA78: @ 80ABA78
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x8
- ldr r3, _080ABACC @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080ABAD0 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075114
- bl Random
- movs r5, 0xFF
- ands r5, r0
- movs r0, 0x80
- lsls r0, 1
- adds r6, r0, 0
- orrs r5, r6
- bl Random
- ldr r1, _080ABAD4 @ =0x000001ff
- ands r1, r0
- adds r0, r1, 0
- cmp r0, 0xFF
- ble _080ABABE
- subs r0, r6, r0
- lsls r0, 16
- lsrs r1, r0, 16
-_080ABABE:
- strh r5, [r4, 0x30]
- strh r1, [r4, 0x32]
- ldr r0, _080ABAD8 @ =sub_80ABADC
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080ABACC: .4byte 0x000003ff
-_080ABAD0: .4byte 0xfffffc00
-_080ABAD4: .4byte 0x000001ff
-_080ABAD8: .4byte sub_80ABADC
- thumb_func_end sub_80ABA78
-
- thumb_func_start sub_80ABADC
-sub_80ABADC: @ 80ABADC
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x34]
- adds r3, r0, r1
- strh r3, [r2, 0x34]
- ldrh r1, [r2, 0x32]
- ldrh r4, [r2, 0x36]
- adds r1, r4
- strh r1, [r2, 0x36]
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080ABB00
- lsls r0, r3, 16
- asrs r0, 24
- negs r0, r0
- b _080ABB04
-_080ABB00:
- lsls r0, r3, 16
- asrs r0, 24
-_080ABB04:
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x15
- bne _080ABB22
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080ABB22:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ABADC
-
- thumb_func_start sub_80ABB28
-sub_80ABB28: @ 80ABB28
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080ABB78 @ =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r2, _080ABB7C @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x22]
- strh r0, [r4, 0x12]
- bl sub_80ABDC8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_80758E0
- ldr r0, _080ABB80 @ =sub_80ABB84
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ABB78: .4byte gTasks
-_080ABB7C: .4byte gSprites
-_080ABB80: .4byte sub_80ABB84
- thumb_func_end sub_80ABB28
-
- thumb_func_start sub_80ABB84
-sub_80ABB84: @ 80ABB84
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080ABBAC @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x7
- bls _080ABBA0
- b _080ABDBE
-_080ABBA0:
- lsls r0, 2
- ldr r1, _080ABBB0 @ =_080ABBB4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080ABBAC: .4byte gTasks
-_080ABBB0: .4byte _080ABBB4
- .align 2, 0
-_080ABBB4:
- .4byte _080ABBD4
- .4byte _080ABBFA
- .4byte _080ABC8C
- .4byte _080ABCC2
- .4byte _080ABCD6
- .4byte _080ABCE4
- .4byte _080ABD64
- .4byte _080ABDB0
-_080ABBD4:
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0x80
- lsls r3, 1
- movs r0, 0xE0
- str r0, [sp]
- movs r0, 0x80
- lsls r0, 2
- str r0, [sp, 0x4]
- movs r0, 0x20
- str r0, [sp, 0x8]
- adds r0, r4, 0
- adds r2, r3, 0
- bl sub_80765D4
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080ABBFA:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080ABC56
- movs r0, 0
- strh r0, [r4, 0xE]
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080ABC44
- ldr r2, _080ABC40 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x3
- strh r1, [r0, 0x24]
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x1
- strh r1, [r0, 0x22]
- b _080ABC56
- .align 2, 0
-_080ABC40: .4byte gSprites
-_080ABC44:
- ldr r2, _080ABC84 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _080ABC88 @ =0x0000fffd
- strh r1, [r0, 0x24]
-_080ABC56:
- adds r0, r4, 0
- bl sub_8076640
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _080ABC66
- b _080ABDBE
-_080ABC66:
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8076440
- ldr r2, _080ABC84 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
- strh r5, [r4, 0xE]
- b _080ABDA0
- .align 2, 0
-_080ABC84: .4byte gSprites
-_080ABC88: .4byte 0x0000fffd
-_080ABC8C:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bgt _080ABC9C
- b _080ABDBE
-_080ABC9C:
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0x80
- lsls r3, 2
- movs r0, 0xC0
- lsls r0, 1
- str r0, [sp]
- movs r0, 0xE0
- str r0, [sp, 0x4]
- movs r0, 0x8
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r2, 0xE0
- bl sub_80765D4
- movs r0, 0
- strh r0, [r4, 0xE]
- b _080ABDA2
-_080ABCC2:
- adds r0, r4, 0
- bl sub_8076640
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080ABDBE
- strh r0, [r4, 0xE]
- strh r0, [r4, 0x10]
- b _080ABDA2
-_080ABCD6:
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_80ABE4C
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080ABCE4:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080ABDBE
- movs r0, 0
- strh r0, [r4, 0xE]
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080ABD1C
- ldr r2, _080ABD18 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- adds r1, 0x2
- b _080ABD2E
- .align 2, 0
-_080ABD18: .4byte gSprites
-_080ABD1C:
- ldr r2, _080ABD60 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x2
-_080ABD2E:
- strh r1, [r0, 0x26]
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0xA
- bne _080ABDBE
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0xC0
- lsls r2, 1
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x8
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r3, 0xE0
- bl sub_80765D4
- movs r0, 0
- strh r0, [r4, 0xE]
- strh r0, [r4, 0x10]
- b _080ABDA2
- .align 2, 0
-_080ABD60: .4byte gSprites
-_080ABD64:
- ldr r6, _080ABDAC @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrh r1, [r0, 0x22]
- subs r1, 0x1
- strh r1, [r0, 0x22]
- adds r0, r4, 0
- bl sub_8076640
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080ABDBE
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8075980
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrh r1, [r4, 0x12]
- strh r1, [r0, 0x22]
-_080ABDA0:
- strh r5, [r4, 0x10]
-_080ABDA2:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080ABDBE
- .align 2, 0
-_080ABDAC: .4byte gSprites
-_080ABDB0:
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080ABDBE
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080ABDBE:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80ABB84
-
- thumb_func_start sub_80ABDC8
-sub_80ABDC8: @ 80ABDC8
- push {r4,r5,lr}
- ldr r4, _080ABDEC @ =gUnknown_2037F1A
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080ABDFC
- ldr r1, _080ABDF0 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _080ABDF4 @ =gPlayerParty
- b _080ABE0C
- .align 2, 0
-_080ABDEC: .4byte gUnknown_2037F1A
-_080ABDF0: .4byte gBattlerPartyIndexes
-_080ABDF4: .4byte gPlayerParty
-_080ABDF8:
- adds r0, r2, 0
- b _080ABE3E
-_080ABDFC:
- ldr r1, _080ABE44 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _080ABE48 @ =gEnemyParty
-_080ABE0C:
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x3A
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r3, r0, 16
- lsrs r4, 18
- movs r2, 0
-_080ABE2A:
- adds r1, r2, 0x1
- adds r0, r4, 0
- muls r0, r1
- cmp r3, r0
- blt _080ABDF8
- lsls r0, r1, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _080ABE2A
- movs r0, 0x3
-_080ABE3E:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080ABE44: .4byte gBattlerPartyIndexes
-_080ABE48: .4byte gEnemyParty
- thumb_func_end sub_80ABDC8
-
- thumb_func_start sub_80ABE4C
-sub_80ABE4C: @ 80ABE4C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- adds r7, r0, 0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- ldr r4, _080ABF54 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0xAC
- ldrb r0, [r4]
- bl sub_807685C
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- ldrh r1, [r7, 0xA]
- movs r0, 0x4
- subs r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r0, 0
- bgt _080ABE9C
- movs r1, 0x1
-_080ABE9C:
- movs r0, 0
- str r0, [sp, 0x4]
- lsls r0, r1, 16
- mov r10, r8
- mov r9, r6
- mov r1, r10
- lsls r1, 4
- str r1, [sp, 0xC]
- mov r1, r9
- lsls r1, 4
- str r1, [sp, 0x10]
- asrs r0, 16
- mov r8, r0
-_080ABEB6:
- ldr r0, _080ABF58 @ =gUnknown_83E5AE0
- mov r1, r10
- mov r2, r9
- ldr r3, [sp, 0x8]
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r6, r5, 16
- cmp r2, 0x40
- beq _080ABF1E
- ldr r1, _080ABF5C @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r0, r1
- mov r0, sp
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0x30]
- mov r1, sp
- ldrh r1, [r1, 0xC]
- strh r1, [r5, 0x32]
- mov r0, sp
- ldrh r0, [r0, 0x10]
- strh r0, [r5, 0x34]
- asrs r4, r6, 16
- adds r0, r4, 0
- movs r1, 0x40
- bl Cos
- strh r0, [r5, 0x36]
- adds r0, r4, 0
- movs r1, 0x40
- bl Sin
- strh r0, [r5, 0x38]
- mov r1, sp
- ldrh r1, [r1]
- strh r1, [r5, 0x3A]
- movs r0, 0x2
- strh r0, [r5, 0x3C]
- ldrh r1, [r7, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080ABF18
- adds r0, r5, 0
- bl sub_80ABF60
-_080ABF18:
- ldrh r0, [r7, 0xC]
- adds r0, 0x1
- strh r0, [r7, 0xC]
-_080ABF1E:
- mov r1, r8
- lsls r0, r1, 1
- asrs r1, r6, 16
- adds r1, r0
- lsls r1, 16
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r5, r0, 16
- ldr r1, [sp, 0x4]
- lsls r0, r1, 16
- asrs r0, 16
- add r0, r8
- lsls r0, 16
- lsrs r1, r0, 16
- str r1, [sp, 0x4]
- asrs r0, 16
- cmp r0, 0x13
- ble _080ABEB6
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080ABF54: .4byte gUnknown_2037F1A
-_080ABF58: .4byte gUnknown_83E5AE0
-_080ABF5C: .4byte gSprites
- thumb_func_end sub_80ABE4C
-
- thumb_func_start sub_80ABF60
-sub_80ABF60: @ 80ABF60
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080ABF72
- cmp r0, 0x1
- beq _080ABFA8
- b _080AC002
-_080ABF72:
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- movs r1, 0x6
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- ldrh r0, [r4, 0x36]
- adds r1, r0
- strh r1, [r4, 0x36]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- ldrh r2, [r4, 0x38]
- adds r1, r2
- strh r1, [r4, 0x38]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_080ABFA8:
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x38]
- ldrh r2, [r4, 0x34]
- adds r1, r2
- strh r1, [r4, 0x34]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x20]
- lsls r1, 16
- asrs r2, r1, 20
- strh r2, [r4, 0x22]
- adds r0, 0x8
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 17
- cmp r0, r1
- bhi _080ABFDE
- adds r1, r2, 0
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- blt _080ABFDE
- cmp r1, 0x78
- ble _080AC002
-_080ABFDE:
- ldr r3, _080AC008 @ =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_080AC002:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC008: .4byte gTasks
- thumb_func_end sub_80ABF60
-
- thumb_func_start sub_80AC00C
-sub_80AC00C: @ 80AC00C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080AC03C @ =gTasks
- adds r4, r1, r0
- bl sub_80ABDC8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
- ldr r0, _080AC040 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080AC044
- movs r0, 0x88
- strh r0, [r4, 0x10]
- movs r0, 0x28
- b _080AC04A
- .align 2, 0
-_080AC03C: .4byte gTasks
-_080AC040: .4byte gUnknown_2037F1A
-_080AC044:
- movs r0, 0x10
- strh r0, [r4, 0x10]
- movs r0, 0x50
-_080AC04A:
- strh r0, [r4, 0x14]
- movs r0, 0x62
- strh r0, [r4, 0x12]
- ldrh r0, [r4, 0x10]
- adds r0, 0x31
- strh r0, [r4, 0x16]
- movs r0, 0xA
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, 0x5
- strh r0, [r4, 0x20]
- ldr r0, _080AC06C @ =sub_80AC070
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC06C: .4byte sub_80AC070
- thumb_func_end sub_80AC00C
-
- thumb_func_start sub_80AC070
-sub_80AC070: @ 80AC070
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r7, _080AC094 @ =gTasks
- adds r4, r0, r7
- movs r0, 0x8
- ldrsh r2, [r4, r0]
- cmp r2, 0
- beq _080AC098
- cmp r2, 0x1
- beq _080AC148
- b _080AC156
- .align 2, 0
-_080AC094: .4byte gTasks
-_080AC098:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080AC0AE
- strh r2, [r4, 0xC]
- adds r0, r4, 0
- bl sub_80AC160
-_080AC0AE:
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080AC128
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080AC128
- ldr r5, _080AC13C @ =gUnknown_2037F02
- movs r1, 0x1
- mov r8, r1
- mov r2, r8
- strh r2, [r5]
- strh r0, [r5, 0x2]
- movs r0, 0xC
- strh r0, [r5, 0x4]
- ldr r6, _080AC140 @ =sub_80B94B4
- adds r0, r6, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080AC0F8
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r7
- ldr r1, [r0]
- adds r0, r2, 0
- bl _call_via_r1
- ldr r1, _080AC144 @ =gUnknown_2037EE2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080AC0F8:
- movs r0, 0x3
- strh r0, [r5]
- adds r0, r6, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080AC124
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r7
- ldr r1, [r0]
- adds r0, r2, 0
- bl _call_via_r1
- ldr r1, _080AC144 @ =gUnknown_2037EE2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080AC124:
- mov r0, r8
- strh r0, [r4, 0x22]
-_080AC128:
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r1, r0
- blt _080AC156
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080AC156
- .align 2, 0
-_080AC13C: .4byte gUnknown_2037F02
-_080AC140: .4byte sub_80B94B4
-_080AC144: .4byte gUnknown_2037EE2
-_080AC148:
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080AC156
- adds r0, r1, 0
- bl DestroyAnimVisualTask
-_080AC156:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80AC070
-
- thumb_func_start sub_80AC160
-sub_80AC160: @ 80AC160
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r1, _080AC1EC @ =gSineTable
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r0, 0x3
- asrs r0, 4
- ldrh r2, [r4, 0x14]
- adds r0, r2
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, _080AC1F0 @ =gUnknown_83E5AE0
- movs r2, 0x16
- ldrsh r1, [r4, r2]
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080AC1BA
- ldr r3, _080AC1F4 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x1C
- adds r1, r0, r1
- ldr r2, _080AC1F8 @ =sub_80AC204
- str r2, [r1]
- adds r0, r3
- strh r5, [r0, 0x38]
- strh r6, [r0, 0x3A]
- movs r1, 0x9
- strh r1, [r0, 0x3C]
- ldrh r0, [r4, 0x1A]
- adds r0, 0x1
- strh r0, [r4, 0x1A]
-_080AC1BA:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
- ldrh r0, [r4, 0x18]
- adds r0, 0x27
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x18]
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- ldr r0, _080AC1FC @ =0x41c64e6d
- muls r0, r1
- ldr r1, _080AC200 @ =0x00003039
- adds r0, r1
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- bl __modsi3
- ldrh r1, [r4, 0x10]
- adds r1, r0
- strh r1, [r4, 0x16]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC1EC: .4byte gSineTable
-_080AC1F0: .4byte gUnknown_83E5AE0
-_080AC1F4: .4byte gSprites
-_080AC1F8: .4byte sub_80AC204
-_080AC1FC: .4byte 0x41c64e6d
-_080AC200: .4byte 0x00003039
- thumb_func_end sub_80AC160
-
- thumb_func_start sub_80AC204
-sub_80AC204: @ 80AC204
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080AC29A
- ldrh r0, [r5, 0x22]
- adds r0, 0x8
- strh r0, [r5, 0x22]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x38
- ldrsh r1, [r5, r2]
- cmp r0, r1
- blt _080AC29A
- ldr r2, _080AC2A0 @ =gTasks
- movs r3, 0x3A
- ldrsh r1, [r5, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x1
- strh r1, [r0, 0x1C]
- ldr r0, _080AC2A4 @ =gUnknown_83E7C38
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- movs r3, 0x22
- ldrsh r2, [r5, r3]
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x30]
- cmp r0, 0x40
- beq _080AC294
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080AC2A8 @ =gSprites
- adds r0, r4
- movs r1, 0x3
- bl StartSpriteAffineAnim
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r5, 0x3A]
- strh r1, [r0, 0x3A]
- movs r3, 0x30
- ldrsh r1, [r5, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r5, 0x3C]
- strh r1, [r0, 0x3C]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, 0x1C
- adds r0, r4
- ldr r1, _080AC2AC @ =sub_80AC2B0
- str r1, [r0]
-_080AC294:
- adds r0, r5, 0
- bl DestroySprite
-_080AC29A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC2A0: .4byte gTasks
-_080AC2A4: .4byte gUnknown_83E7C38
-_080AC2A8: .4byte gSprites
-_080AC2AC: .4byte sub_80AC2B0
- thumb_func_end sub_80AC204
-
- thumb_func_start sub_80AC2B0
-sub_80AC2B0: @ 80AC2B0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080AC31C
- movs r0, 0
- strh r0, [r4, 0x30]
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bne _080AC31C
- ldr r3, _080AC324 @ =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080AC31C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC324: .4byte gTasks
- thumb_func_end sub_80AC2B0
-
- thumb_func_start sub_80AC328
-sub_80AC328: @ 80AC328
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080AC3AC @ =gTasks
- adds r5, r1, r0
- ldr r4, _080AC3B0 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- strh r0, [r5, 0xE]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x10]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _080AC36C
- movs r1, 0x1
-_080AC36C:
- strh r1, [r5, 0x16]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080AC380
- movs r1, 0x16
- ldrsh r0, [r5, r1]
- negs r0, r0
- strh r0, [r5, 0x16]
-_080AC380:
- movs r2, 0x16
- ldrsh r0, [r5, r2]
- lsls r0, 3
- ldrh r1, [r5, 0xE]
- adds r0, r1
- strh r0, [r5, 0x12]
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- lsls r1, 3
- ldrh r0, [r5, 0x10]
- subs r0, r1
- strh r0, [r5, 0x14]
- ldr r0, _080AC3B4 @ =0x0000ffe0
- strh r0, [r5, 0x1A]
- strh r6, [r5, 0xA]
- strh r6, [r5, 0x8]
- ldr r0, _080AC3B8 @ =sub_80AC3BC
- str r0, [r5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC3AC: .4byte gTasks
-_080AC3B0: .4byte gUnknown_2037F1A
-_080AC3B4: .4byte 0x0000ffe0
-_080AC3B8: .4byte sub_80AC3BC
- thumb_func_end sub_80AC328
-
- thumb_func_start sub_80AC3BC
-sub_80AC3BC: @ 80AC3BC
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080AC3E0 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- bls _080AC3D6
- b _080AC4F6
-_080AC3D6:
- lsls r0, 2
- ldr r1, _080AC3E4 @ =_080AC3E8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080AC3E0: .4byte gTasks
-_080AC3E4: .4byte _080AC3E8
- .align 2, 0
-_080AC3E8:
- .4byte _080AC404
- .4byte _080AC414
- .4byte _080AC42E
- .4byte _080AC470
- .4byte _080AC492
- .4byte _080AC4C0
- .4byte _080AC4E6
-_080AC404:
- adds r0, r4, 0
- bl sub_80AC504
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080AC4FC
- b _080AC4EE
-_080AC414:
- adds r0, r4, 0
- bl sub_80AC504
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080AC4FC
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080AC4EE
-_080AC42E:
- adds r0, r4, 0
- bl sub_80AC504
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- ldrh r0, [r4, 0x12]
- adds r1, r0
- movs r2, 0
- strh r1, [r4, 0x12]
- adds r1, 0x10
- lsls r1, 16
- movs r0, 0x88
- lsls r0, 17
- cmp r1, r0
- bls _080AC4FC
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080AC46C
- movs r0, 0x1
- strh r0, [r4, 0x22]
- movs r0, 0x6
- strh r0, [r4, 0x8]
- strh r2, [r4, 0xA]
- b _080AC4FC
-_080AC46C:
- strh r2, [r4, 0xA]
- b _080AC4EE
-_080AC470:
- adds r0, r4, 0
- bl sub_80AC504
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- lsls r1, 1
- ldrh r0, [r4, 0x14]
- subs r0, r1
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080AC4FC
- b _080AC4EE
-_080AC492:
- adds r0, r4, 0
- bl sub_80AC504
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- ldrh r0, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0x12]
- adds r0, 0x10
- lsls r0, 16
- movs r1, 0x88
- lsls r1, 17
- cmp r0, r1
- bls _080AC4FC
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080AC4EE
-_080AC4C0:
- adds r0, r4, 0
- bl sub_80AC504
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- lsls r1, 1
- ldrh r0, [r4, 0x14]
- subs r0, r1
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080AC4FC
- movs r0, 0x2
- strh r0, [r4, 0x8]
- b _080AC4FC
-_080AC4E6:
- movs r1, 0x18
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AC4FC
-_080AC4EE:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080AC4FC
-_080AC4F6:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080AC4FC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AC3BC
-
- thumb_func_start sub_80AC504
-sub_80AC504: @ 80AC504
- push {r4-r6,lr}
- adds r6, r0, 0
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080AC55E
- movs r0, 0
- strh r0, [r6, 0xC]
- ldr r0, _080AC564 @ =gUnknown_83E5AE0
- movs r2, 0xE
- ldrsh r1, [r6, r2]
- movs r3, 0x10
- ldrsh r2, [r6, r3]
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080AC55E
- ldr r5, _080AC568 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r0, r4, r5
- movs r1, 0x10
- strh r1, [r0, 0x2E]
- ldrh r1, [r6, 0x12]
- strh r1, [r0, 0x32]
- ldrh r1, [r6, 0x14]
- strh r1, [r0, 0x36]
- ldrh r1, [r6, 0x1A]
- strh r1, [r0, 0x38]
- bl sub_8075068
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _080AC56C @ =sub_80AC570
- str r0, [r4]
- ldrh r0, [r6, 0x18]
- adds r0, 0x1
- strh r0, [r6, 0x18]
-_080AC55E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC564: .4byte gUnknown_83E5AE0
-_080AC568: .4byte gSprites
-_080AC56C: .4byte sub_80AC570
- thumb_func_end sub_80AC504
-
- thumb_func_start sub_80AC570
-sub_80AC570: @ 80AC570
- push {r4-r6,lr}
- adds r6, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080AC5CA
- ldrh r0, [r6, 0x24]
- ldrh r1, [r6, 0x20]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrh r0, [r6, 0x26]
- ldrh r1, [r6, 0x22]
- adds r0, r1
- strh r0, [r6, 0x22]
- movs r0, 0x6
- strh r0, [r6, 0x2E]
- bl Random
- movs r4, 0x1F
- adds r1, r4, 0
- ands r1, r0
- ldr r5, _080AC5D0 @ =0x0000fff0
- adds r1, r5
- ldrh r0, [r6, 0x20]
- adds r1, r0
- strh r1, [r6, 0x32]
- bl Random
- ands r4, r0
- adds r4, r5
- ldrh r1, [r6, 0x22]
- adds r4, r1
- strh r4, [r6, 0x36]
- bl Random
- movs r1, 0x7
- ands r1, r0
- mvns r1, r1
- strh r1, [r6, 0x38]
- adds r0, r6, 0
- bl sub_8075068
- ldr r0, _080AC5D4 @ =sub_80AC5D8
- str r0, [r6, 0x1C]
-_080AC5CA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC5D0: .4byte 0x0000fff0
-_080AC5D4: .4byte sub_80AC5D8
- thumb_func_end sub_80AC570
-
- thumb_func_start sub_80AC5D8
-sub_80AC5D8: @ 80AC5D8
- push {r4-r6,lr}
- adds r5, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080AC614
- movs r4, 0
- ldr r6, _080AC61C @ =gTasks
-_080AC5EA:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r6
- ldr r1, [r2]
- ldr r0, _080AC620 @ =sub_80AC3BC
- cmp r1, r0
- bne _080AC60A
- movs r0, 0x1
- strh r0, [r2, 0x1C]
- ldrh r0, [r2, 0x18]
- subs r0, 0x1
- strh r0, [r2, 0x18]
- adds r0, r5, 0
- bl DestroySprite
-_080AC60A:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xF
- bls _080AC5EA
-_080AC614:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC61C: .4byte gTasks
-_080AC620: .4byte sub_80AC3BC
- thumb_func_end sub_80AC5D8
-
- thumb_func_start sub_80AC624
-sub_80AC624: @ 80AC624
- ldr r2, _080AC644 @ =gUnknown_2037F02
- ldrh r1, [r2]
- strh r1, [r0, 0x20]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0x22]
- ldrh r1, [r2, 0x4]
- strh r1, [r0, 0x2E]
- ldrh r1, [r2, 0x6]
- strh r1, [r0, 0x30]
- ldrh r1, [r2, 0x8]
- strh r1, [r0, 0x32]
- ldrh r1, [r2, 0xA]
- strh r1, [r0, 0x34]
- ldr r1, _080AC648 @ =sub_80AC64C
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080AC644: .4byte gUnknown_2037F02
-_080AC648: .4byte sub_80AC64C
- thumb_func_end sub_80AC624
-
- thumb_func_start sub_80AC64C
-sub_80AC64C: @ 80AC64C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x2E]
- subs r0, r1
- strh r0, [r4, 0x36]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- ldrh r2, [r4, 0x38]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- cmp r0, 0
- bne _080AC690
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AC690:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AC64C
-
- thumb_func_start sub_80AC698
-sub_80AC698: @ 80AC698
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r1, r2
- strh r1, [r4, 0x36]
- lsls r0, 16
- asrs r0, 23
- strh r0, [r4, 0x24]
- lsls r1, 16
- asrs r1, 23
- strh r1, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _080AC6D0
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080AC6D0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AC698
-
- thumb_func_start sub_80AC6D8
-sub_80AC6D8: @ 80AC6D8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r5, _080AC714 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x30]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldr r1, _080AC718 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x36]
- ldr r0, _080AC71C @ =sub_80AC720
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC714: .4byte gUnknown_2037F1B
-_080AC718: .4byte gUnknown_2037F02
-_080AC71C: .4byte sub_80AC720
- thumb_func_end sub_80AC6D8
-
- thumb_func_start sub_80AC720
-sub_80AC720: @ 80AC720
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- subs r6, r1, r0
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- subs r5, r1, r0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- muls r0, r6
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- muls r0, r5
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl __divsi3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080AC778
- movs r0, 0
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl sub_80AC798
-_080AC778:
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080AC78A
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AC78A:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80AC720
-
- thumb_func_start sub_80AC798
-sub_80AC798: @ 80AC798
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- adds r4, r1, 0
- adds r5, r2, 0
- movs r2, 0x2E
- ldrsh r1, [r0, r2]
- lsrs r2, r1, 31
- adds r1, r2
- lsls r1, 15
- lsrs r1, 16
- str r1, [sp]
- ldrh r1, [r0, 0x24]
- ldrh r3, [r0, 0x20]
- adds r1, r3
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- adds r0, r5, r0
- subs r0, 0x5
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- bl Random
- negs r4, r4
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- adds r4, r0
- subs r4, 0x5
- lsls r4, 16
- lsrs r7, r4, 16
- movs r6, 0
- mov r0, r8
- lsls r0, 16
- mov r8, r0
- mov r1, r10
- lsls r1, 16
- str r1, [sp, 0xC]
- ldr r2, [sp]
- lsls r2, 16
- str r2, [sp, 0x10]
- asrs r1, 16
- lsls r0, r7, 16
- asrs r5, r0, 16
- str r0, [sp, 0x14]
- negs r3, r5
- str r3, [sp, 0x4]
- asrs r0, r2, 16
- adds r1, r0
- lsls r1, 16
- mov r10, r1
-_080AC826:
- ldr r0, _080AC868 @ =gUnknown_83E5B88
- mov r2, r8
- asrs r1, r2, 16
- mov r3, r10
- asrs r2, r3, 16
- movs r3, 0x82
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080AC86C @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r4, r0, r1
- movs r0, 0x14
- strh r0, [r4, 0x2E]
- mov r0, r9
- strh r0, [r4, 0x30]
- ldr r0, _080AC870 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_807685C
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- cmp r5, 0
- bge _080AC874
- mov r1, sp
- ldrh r1, [r1, 0x4]
- strh r1, [r4, 0x32]
- b _080AC876
- .align 2, 0
-_080AC868: .4byte gUnknown_83E5B88
-_080AC86C: .4byte gSprites
-_080AC870: .4byte gUnknown_2037F1A
-_080AC874:
- strh r7, [r4, 0x32]
-_080AC876:
- lsls r0, r6, 16
- movs r2, 0x80
- lsls r2, 9
- adds r0, r2
- lsrs r6, r0, 16
- cmp r0, 0
- ble _080AC826
- movs r6, 0
- ldr r3, [sp, 0xC]
- asrs r1, r3, 16
- ldr r0, [sp, 0x14]
- asrs r5, r0, 16
- negs r2, r5
- str r2, [sp, 0x8]
- ldr r3, [sp, 0x10]
- asrs r0, r3, 16
- subs r1, r0
- lsls r1, 16
- mov r10, r1
-_080AC89C:
- ldr r0, _080AC8E0 @ =gUnknown_83E5B88
- mov r2, r8
- asrs r1, r2, 16
- mov r3, r10
- asrs r2, r3, 16
- movs r3, 0x82
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080AC8E4 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r4, r0, r1
- movs r0, 0x14
- strh r0, [r4, 0x2E]
- mov r0, r9
- strh r0, [r4, 0x30]
- ldr r0, _080AC8E8 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_807685C
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- cmp r5, 0
- ble _080AC8EC
- mov r1, sp
- ldrh r1, [r1, 0x8]
- strh r1, [r4, 0x32]
- b _080AC8EE
- .align 2, 0
-_080AC8E0: .4byte gUnknown_83E5B88
-_080AC8E4: .4byte gSprites
-_080AC8E8: .4byte gUnknown_2037F1A
-_080AC8EC:
- strh r7, [r4, 0x32]
-_080AC8EE:
- lsls r0, r6, 16
- movs r2, 0x80
- lsls r2, 9
- adds r0, r2
- lsrs r6, r0, 16
- cmp r0, 0
- ble _080AC89C
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80AC798
-
- thumb_func_start sub_80AC90C
-sub_80AC90C: @ 80AC90C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080AC940 @ =gUnknown_2037F02
- ldrh r0, [r0]
- strh r0, [r4, 0x2E]
- movs r0, 0x3C
- strh r0, [r4, 0x30]
- movs r0, 0x9
- strh r0, [r4, 0x32]
- movs r0, 0x1E
- strh r0, [r4, 0x34]
- movs r0, 0xFE
- lsls r0, 8
- strh r0, [r4, 0x36]
- ldr r1, _080AC944 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r1, _080AC948 @ =sub_8074AE0
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC940: .4byte gUnknown_2037F02
-_080AC944: .4byte DestroyAnimSprite
-_080AC948: .4byte sub_8074AE0
- thumb_func_end sub_80AC90C
-
- thumb_func_start sub_80AC94C
-sub_80AC94C: @ 80AC94C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080AC984 @ =gUnknown_2037F02
- movs r0, 0
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl sub_8074FF8
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x32]
- ldr r0, _080AC988 @ =sub_8074D00
- str r0, [r4, 0x1C]
- ldr r1, _080AC98C @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC984: .4byte gUnknown_2037F02
-_080AC988: .4byte sub_8074D00
-_080AC98C: .4byte DestroyAnimSprite
- thumb_func_end sub_80AC94C
-
- thumb_func_start sub_80AC990
-sub_80AC990: @ 80AC990
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8074FCC
- ldr r0, _080AC9C4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AC9CC
- ldr r2, _080AC9C8 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r2, 0x8]
- negs r0, r0
- strh r0, [r4, 0x32]
- adds r1, r2, 0
- b _080AC9E2
- .align 2, 0
-_080AC9C4: .4byte gUnknown_2037F1A
-_080AC9C8: .4byte gUnknown_2037F02
-_080AC9CC:
- ldr r1, _080AC9F8 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x32]
-_080AC9E2:
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x36]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x34]
- ldr r0, _080AC9FC @ =sub_80ACA6C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AC9F8: .4byte gUnknown_2037F02
-_080AC9FC: .4byte sub_80ACA6C
- thumb_func_end sub_80AC990
-
- thumb_func_start sub_80ACA00
-sub_80ACA00: @ 80ACA00
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080ACA2C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080ACA34
- ldr r2, _080ACA30 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r2, 0x8]
- strh r0, [r4, 0x32]
- adds r1, r2, 0
- b _080ACA4C
- .align 2, 0
-_080ACA2C: .4byte gUnknown_2037F1A
-_080ACA30: .4byte gUnknown_2037F02
-_080ACA34:
- ldr r1, _080ACA64 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x8]
- negs r0, r0
- strh r0, [r4, 0x32]
-_080ACA4C:
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x36]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x34]
- ldr r0, _080ACA68 @ =sub_80ACA6C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ACA64: .4byte gUnknown_2037F02
-_080ACA68: .4byte sub_80ACA6C
- thumb_func_end sub_80ACA00
-
- thumb_func_start sub_80ACA6C
-sub_80ACA6C: @ 80ACA6C
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x36
- ldrsh r1, [r2, r3]
- cmp r0, r1
- bge _080ACA92
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x34]
- ldrh r3, [r2, 0x26]
- adds r0, r3
- strh r0, [r2, 0x26]
-_080ACA92:
- movs r0, 0x2E
- ldrsh r1, [r2, r0]
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- cmp r1, r0
- bne _080ACAA4
- adds r0, r2, 0
- bl move_anim_8074EE0
-_080ACAA4:
- pop {r0}
- bx r0
- thumb_func_end sub_80ACA6C
-
- thumb_func_start sub_80ACAA8
-sub_80ACAA8: @ 80ACAA8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8074FCC
- ldr r0, _080ACACC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080ACAD4
- ldr r0, _080ACAD0 @ =gUnknown_2037F02
- ldrh r1, [r4, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r4, 0x20]
- b _080ACAE6
- .align 2, 0
-_080ACACC: .4byte gUnknown_2037F1A
-_080ACAD0: .4byte gUnknown_2037F02
-_080ACAD4:
- ldr r0, _080ACB14 @ =gUnknown_2037F02
- ldrh r1, [r0]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- strh r1, [r4, 0x20]
- adds r2, r4, 0
- adds r2, 0x43
- movs r1, 0x8
- strb r1, [r2]
-_080ACAE6:
- adds r2, r0, 0
- ldrh r0, [r2, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x22]
- ldrh r0, [r2, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r2, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r2, 0x8]
- strh r0, [r4, 0x32]
- ldrh r0, [r2, 0xA]
- strh r0, [r4, 0x34]
- ldrh r0, [r2, 0xC]
- strh r0, [r4, 0x36]
- strh r1, [r4, 0x38]
- ldr r0, _080ACB18 @ =sub_80ACB1C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ACB14: .4byte gUnknown_2037F02
-_080ACB18: .4byte sub_80ACB1C
- thumb_func_end sub_80ACAA8
-
- thumb_func_start sub_80ACB1C
-sub_80ACB1C: @ 80ACB1C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080ACBA4
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- ldr r0, _080ACB88 @ =0x00002710
- cmp r1, r0
- ble _080ACB3A
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1
- strb r0, [r1]
-_080ACB3A:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x38]
- lsls r1, 16
- asrs r1, 24
- ldrh r2, [r4, 0x30]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x38]
- lsls r1, 16
- asrs r1, 24
- ldrh r2, [r4, 0x30]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x2E]
- adds r1, r0, r2
- strh r1, [r4, 0x2E]
- ldrh r0, [r4, 0x36]
- ldrh r2, [r4, 0x38]
- adds r0, r2
- strh r0, [r4, 0x38]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _080ACB90
- ldr r2, _080ACB8C @ =0xffffff00
- b _080ACB98
- .align 2, 0
-_080ACB88: .4byte 0x00002710
-_080ACB8C: .4byte 0xffffff00
-_080ACB90:
- cmp r0, 0
- bge _080ACB9C
- movs r2, 0x80
- lsls r2, 1
-_080ACB98:
- adds r0, r1, r2
- strh r0, [r4, 0x2E]
-_080ACB9C:
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- b _080ACBAA
-_080ACBA4:
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080ACBAA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ACB1C
-
- thumb_func_start sub_80ACBB0
-sub_80ACBB0: @ 80ACBB0
- push {lr}
- movs r1, 0
- strh r1, [r0, 0x20]
- strh r1, [r0, 0x22]
- movs r1, 0x3C
- strh r1, [r0, 0x2E]
- movs r1, 0x8C
- strh r1, [r0, 0x32]
- movs r1, 0x50
- strh r1, [r0, 0x36]
- ldr r1, _080ACBD4 @ =sub_8075590
- str r1, [r0, 0x1C]
- ldr r1, _080ACBD8 @ =DestroyAnimSprite
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .align 2, 0
-_080ACBD4: .4byte sub_8075590
-_080ACBD8: .4byte DestroyAnimSprite
- thumb_func_end sub_80ACBB0
-
- thumb_func_start sub_80ACBDC
-sub_80ACBDC: @ 80ACBDC
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r5, _080ACC34 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- bl GetBattlerSide
- adds r4, r0, 0
- ldr r0, _080ACC38 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080ACC22
- movs r0, 0x2
- bl GetBattlerAtPosition
- ldrb r1, [r5]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- beq _080ACC1A
- movs r0, 0x3
- bl GetBattlerAtPosition
- ldrb r1, [r5]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- bne _080ACC22
-_080ACC1A:
- ldr r1, _080ACC3C @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080ACC22:
- ldr r1, _080ACC40 @ =sub_8075F0C
- str r1, [r6, 0x1C]
- adds r0, r6, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080ACC34: .4byte gUnknown_2037F1A
-_080ACC38: .4byte gUnknown_2037F1B
-_080ACC3C: .4byte gUnknown_2037F02
-_080ACC40: .4byte sub_8075F0C
- thumb_func_end sub_80ACBDC
-
- thumb_func_start sub_80ACC44
-sub_80ACC44: @ 80ACC44
- ldr r2, _080ACC58 @ =gUnknown_2037F02
- ldrh r1, [r2]
- negs r1, r1
- strh r1, [r2]
- ldrh r1, [r2, 0x4]
- negs r1, r1
- strh r1, [r2, 0x4]
- ldr r1, _080ACC5C @ =sub_8075F0C
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080ACC58: .4byte gUnknown_2037F02
-_080ACC5C: .4byte sub_8075F0C
- thumb_func_end sub_80ACC44
-
- thumb_func_start sub_80ACC60
-sub_80ACC60: @ 80ACC60
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080ACC80 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- movs r1, 0
- strh r0, [r4, 0x3C]
- strh r1, [r4, 0x2E]
- ldr r0, _080ACC84 @ =sub_80ACC88
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ACC80: .4byte gUnknown_2037F02
-_080ACC84: .4byte sub_80ACC88
- thumb_func_end sub_80ACC60
-
- thumb_func_start sub_80ACC88
-sub_80ACC88: @ 80ACC88
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_80ACD7C
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x12
- bne _080ACCD2
- movs r0, 0x19
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldr r4, _080ACCD8 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- 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 r0, _080ACCDC @ =sub_80ACCE0
- str r0, [r5, 0x1C]
-_080ACCD2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080ACCD8: .4byte gUnknown_2037F1B
-_080ACCDC: .4byte sub_80ACCE0
- thumb_func_end sub_80ACC88
-
- thumb_func_start sub_80ACCE0
-sub_80ACCE0: @ 80ACCE0
- push {r4-r6,lr}
- adds r6, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080ACD28
- movs r4, 0
- strh r4, [r6, 0x2E]
- ldr r5, _080ACD20 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x22]
- strh r4, [r6, 0x26]
- strh r4, [r6, 0x24]
- ldr r1, _080ACD24 @ =sub_80ACD58
- str r1, [r6, 0x1C]
- adds r0, r6, 0
- bl _call_via_r1
- b _080ACD52
- .align 2, 0
-_080ACD20: .4byte gUnknown_2037F1B
-_080ACD24: .4byte sub_80ACD58
-_080ACD28:
- movs r1, 0x3C
- ldrsh r0, [r6, r1]
- movs r1, 0x1C
- bl Sin
- ldrh r1, [r6, 0x24]
- adds r0, r1
- strh r0, [r6, 0x24]
- movs r1, 0x3C
- ldrsh r0, [r6, r1]
- movs r1, 0x1C
- bl Cos
- ldrh r1, [r6, 0x26]
- adds r0, r1
- strh r0, [r6, 0x26]
- ldrh r0, [r6, 0x3C]
- adds r0, 0x14
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r6, 0x3C]
-_080ACD52:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80ACCE0
-
- thumb_func_start sub_80ACD58
-sub_80ACD58: @ 80ACD58
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80ACD7C
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _080ACD74
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080ACD74:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ACD58
-
- thumb_func_start sub_80ACD7C
-sub_80ACD7C: @ 80ACD7C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r1, 0x1C
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r1, 0x1C
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x14
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3C]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ACD7C
-
- thumb_func_start sub_80ACDA8
-sub_80ACDA8: @ 80ACDA8
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080ACDDC @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x32]
- ldr r1, _080ACDE0 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080ACDE4 @ =sub_8074CD0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ACDDC: .4byte gUnknown_2037F02
-_080ACDE0: .4byte DestroyAnimSprite
-_080ACDE4: .4byte sub_8074CD0
- thumb_func_end sub_80ACDA8
-
- thumb_func_start sub_80ACDE8
-sub_80ACDE8: @ 80ACDE8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r1, _080ACE1C @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x2E]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080ACE20 @ =sub_8074C44
- str r0, [r4, 0x1C]
- ldr r1, _080ACE24 @ =sub_80ACE28
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ACE1C: .4byte gUnknown_2037F02
-_080ACE20: .4byte sub_8074C44
-_080ACE24: .4byte sub_80ACE28
- thumb_func_end sub_80ACDE8
-
- thumb_func_start sub_80ACE28
-sub_80ACE28: @ 80ACE28
- push {lr}
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r3]
- ldrh r1, [r0, 0x30]
- movs r2, 0
- strh r1, [r0, 0x2E]
- strh r2, [r0, 0x30]
- ldr r1, _080ACE4C @ =sub_80ACE50
- str r1, [r0, 0x1C]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_080ACE4C: .4byte sub_80ACE50
- thumb_func_end sub_80ACE28
-
- thumb_func_start sub_80ACE50
-sub_80ACE50: @ 80ACE50
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x32]
- lsls r1, 16
- asrs r1, 24
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x32]
- lsls r1, 16
- asrs r1, 24
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0xA
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- adds r0, 0xD0
- strh r0, [r4, 0x32]
- 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 _080ACE9C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080ACE9C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ACE50
-
- thumb_func_start sub_80ACEA4
-sub_80ACEA4: @ 80ACEA4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080ACF04 @ =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r4, 0x26]
- strh r5, [r4, 0x8]
- strh r5, [r4, 0xA]
- strh r5, [r4, 0xC]
- strh r5, [r4, 0xE]
- ldr r2, _080ACF08 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x22]
- strh r0, [r4, 0x10]
- ldr r0, _080ACF0C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x12]
- strh r5, [r4, 0x14]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_80758E0
- ldr r0, _080ACF10 @ =sub_80ACF14
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080ACF04: .4byte gTasks
-_080ACF08: .4byte gSprites
-_080ACF0C: .4byte gUnknown_2037F1A
-_080ACF10: .4byte sub_80ACF14
- thumb_func_end sub_80ACEA4
-
- thumb_func_start sub_80ACF14
-sub_80ACF14: @ 80ACF14
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080ACF3C @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- bls _080ACF30
- b _080AD1EE
-_080ACF30:
- lsls r0, 2
- ldr r1, _080ACF40 @ =_080ACF44
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080ACF3C: .4byte gTasks
-_080ACF40: .4byte _080ACF44
- .align 2, 0
-_080ACF44:
- .4byte _080ACF60
- .4byte _080ACF86
- .4byte _080AD038
- .4byte _080AD098
- .4byte _080AD0B6
- .4byte _080AD18C
- .4byte _080AD1E0
-_080ACF60:
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0x80
- lsls r3, 1
- movs r0, 0xE0
- str r0, [sp]
- movs r0, 0x80
- lsls r0, 2
- str r0, [sp, 0x4]
- movs r0, 0x20
- str r0, [sp, 0x8]
- adds r0, r4, 0
- adds r2, r3, 0
- bl sub_80765D4
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080ACF86:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080ACFCE
- 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 _080ACFBC
- ldr r2, _080ACFB8 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x3
- b _080ACFCC
- .align 2, 0
-_080ACFB8: .4byte gSprites
-_080ACFBC:
- ldr r2, _080AD030 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _080AD034 @ =0x0000fffd
-_080ACFCC:
- strh r1, [r0, 0x24]
-_080ACFCE:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080ACFFC
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080ACFFC
- movs r0, 0
- strh r0, [r4, 0xE]
- ldr r2, _080AD030 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x1
- strh r1, [r0, 0x22]
-_080ACFFC:
- adds r0, r4, 0
- bl sub_8076640
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _080AD00C
- b _080AD1EE
-_080AD00C:
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8076440
- ldr r2, _080AD030 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
- strh r5, [r4, 0xA]
- strh r5, [r4, 0xC]
- strh r5, [r4, 0xE]
- b _080AD1D4
- .align 2, 0
-_080AD030: .4byte gSprites
-_080AD034: .4byte 0x0000fffd
-_080AD038:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bgt _080AD048
- b _080AD1EE
-_080AD048:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080AD072
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0x80
- lsls r3, 2
- movs r0, 0xC0
- lsls r0, 1
- str r0, [sp]
- movs r0, 0xF0
- str r0, [sp, 0x4]
- movs r0, 0x6
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r2, 0xE0
- bl sub_80765D4
- b _080AD092
-_080AD072:
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0x80
- lsls r3, 2
- movs r0, 0xC0
- lsls r0, 1
- str r0, [sp]
- movs r0, 0xC0
- str r0, [sp, 0x4]
- movs r0, 0x6
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r2, 0xE0
- bl sub_80765D4
-_080AD092:
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080AD1D4
-_080AD098:
- adds r0, r4, 0
- bl sub_8076640
- lsls r0, 24
- cmp r0, 0
- beq _080AD0A6
- b _080AD1EE
-_080AD0A6:
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- adds r1, r5, 0
- movs r2, 0x6
- bl sub_80AD1F8
- b _080AD1D4
-_080AD0B6:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080AD104
- 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 _080AD0F0
- ldr r2, _080AD0EC @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- b _080AD102
- .align 2, 0
-_080AD0EC: .4byte gSprites
-_080AD0F0:
- ldr r2, _080AD13C @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x3
-_080AD102:
- strh r1, [r0, 0x26]
-_080AD104:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x18
- ble _080AD1EE
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080AD140
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0xC0
- lsls r2, 1
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x8
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r3, 0xF0
- bl sub_80765D4
- b _080AD15E
- .align 2, 0
-_080AD13C: .4byte gSprites
-_080AD140:
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0xC0
- lsls r2, 1
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x8
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r3, 0xC0
- bl sub_80765D4
-_080AD15E:
- ldrh r1, [r4, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080AD17C
- ldr r2, _080AD188 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x3
- strh r1, [r0, 0x26]
-_080AD17C:
- movs r0, 0
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- b _080AD1D4
- .align 2, 0
-_080AD188: .4byte gSprites
-_080AD18C:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080AD1A8
- ldr r2, _080AD1DC @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- subs r1, 0x1
- strh r1, [r0, 0x22]
-_080AD1A8:
- adds r0, r4, 0
- bl sub_8076640
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080AD1EE
- ldr r2, _080AD1DC @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x10]
- strh r1, [r0, 0x22]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8075980
- strh r5, [r4, 0xC]
-_080AD1D4:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080AD1EE
- .align 2, 0
-_080AD1DC: .4byte gSprites
-_080AD1E0:
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AD1EE
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080AD1EE:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80ACF14
-
- thumb_func_start sub_80AD1F8
-sub_80AD1F8: @ 80AD1F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- adds r0, r4, 0
- bl sub_80AD374
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- ldr r1, _080AD248 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r4, [r0, 0x20]
- ldr r0, _080AD24C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080AD250
- adds r0, r4, 0
- subs r0, 0xC
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0x1
- b _080AD25A
- .align 2, 0
-_080AD248: .4byte gSprites
-_080AD24C: .4byte gUnknown_2037F1A
-_080AD250:
- adds r0, r4, 0
- adds r0, 0x10
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0xFF
-_080AD25A:
- movs r6, 0
- movs r5, 0
- lsls r4, 16
- str r4, [sp, 0x8]
- mov r1, r9
- lsls r1, 16
- str r1, [sp, 0x4]
- ldr r2, _080AD314 @ =gUnknown_83E5E44
- mov r9, r2
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r3, r8
- lsls r3, 1
- mov r10, r3
-_080AD278:
- ldr r0, _080AD318 @ =gUnknown_83E5E2C
- ldr r2, [sp, 0x8]
- asrs r1, r2, 16
- ldr r3, [sp, 0x4]
- asrs r2, r3, 16
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080AD2FA
- ldr r1, _080AD31C @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r4, r0, r1
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- lsls r0, r5, 2
- adds r0, 0x40
- adds r1, r0
- ldr r3, _080AD320 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r3, _080AD324 @ =0xfffffc00
- adds r0, r3, 0
- ands r2, r0
- orrs r2, r1
- strh r2, [r4, 0x4]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x4
- bls _080AD2C2
- movs r5, 0
-_080AD2C2:
- lsls r2, r6, 2
- mov r1, r9
- adds r0, r2, r1
- ldrh r0, [r0]
- ldr r3, [sp]
- adds r1, r0, 0
- muls r1, r3
- lsls r1, 16
- asrs r1, 16
- ldr r0, _080AD328 @ =gUnknown_83E5E46
- adds r2, r0
- movs r3, 0
- ldrsh r2, [r2, r3]
- adds r0, r4, 0
- bl sub_80AD3C8
- strh r7, [r4, 0x3A]
- mov r0, r8
- strh r0, [r4, 0x3C]
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- add r0, r10
- ldr r1, _080AD32C @ =gTasks+0x8
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- strh r1, [r0]
-_080AD2FA:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x6
- bls _080AD278
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AD314: .4byte gUnknown_83E5E44
-_080AD318: .4byte gUnknown_83E5E2C
-_080AD31C: .4byte gSprites
-_080AD320: .4byte 0x000003ff
-_080AD324: .4byte 0xfffffc00
-_080AD328: .4byte gUnknown_83E5E46
-_080AD32C: .4byte gTasks+0x8
- thumb_func_end sub_80AD1F8
-
- thumb_func_start sub_80AD330
-sub_80AD330: @ 80AD330
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80AD3E4
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080AD36A
- ldr r3, _080AD370 @ =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_080AD36A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AD370: .4byte gTasks
- thumb_func_end sub_80AD330
-
- thumb_func_start sub_80AD374
-sub_80AD374: @ 80AD374
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080AD3AC @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r2, [r1, 0x26]
- ldrh r0, [r1, 0x22]
- adds r2, r0
- adds r1, 0x29
- movs r0, 0
- ldrsb r0, [r1, r0]
- adds r0, r2
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _080AD3B0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080AD3B4
- lsls r0, r4, 16
- movs r1, 0x94
- lsls r1, 15
- b _080AD3BA
- .align 2, 0
-_080AD3AC: .4byte gSprites
-_080AD3B0: .4byte gUnknown_2037F1A
-_080AD3B4:
- lsls r0, r4, 16
- movs r1, 0xB0
- lsls r1, 14
-_080AD3BA:
- adds r0, r1
- lsrs r4, r0, 16
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80AD374
-
- thumb_func_start sub_80AD3C8
-sub_80AD3C8: @ 80AD3C8
- movs r3, 0
- strh r3, [r0, 0x2E]
- strh r3, [r0, 0x30]
- ldrh r3, [r0, 0x20]
- lsls r3, 3
- strh r3, [r0, 0x32]
- ldrh r3, [r0, 0x22]
- lsls r3, 3
- strh r3, [r0, 0x34]
- lsls r1, 3
- strh r1, [r0, 0x36]
- lsls r2, 3
- strh r2, [r0, 0x38]
- bx lr
- thumb_func_end sub_80AD3C8
-
- thumb_func_start sub_80AD3E4
-sub_80AD3E4: @ 80AD3E4
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080AD40E
- movs r0, 0
- strh r0, [r2, 0x2E]
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- ldrh r0, [r2, 0x30]
- adds r1, r0, 0
- muls r1, r0
- adds r0, r1, 0
- ldrh r3, [r2, 0x34]
- adds r0, r3
- strh r0, [r2, 0x34]
-_080AD40E:
- ldrh r0, [r2, 0x36]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r2, 0x20]
- ldrh r1, [r2, 0x38]
- ldrh r3, [r2, 0x34]
- adds r1, r3
- strh r1, [r2, 0x34]
- lsls r1, 16
- asrs r3, r1, 19
- strh r3, [r2, 0x22]
- adds r0, 0x8
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 17
- cmp r0, r1
- bhi _080AD444
- adds r1, r3, 0
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- blt _080AD444
- cmp r1, 0x78
- ble _080AD450
-_080AD444:
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080AD450:
- pop {r0}
- bx r0
- thumb_func_end sub_80AD3E4
-
- thumb_func_start sub_80AD454
-sub_80AD454: @ 80AD454
- push {r4,r5,lr}
- ldr r3, _080AD498 @ =gUnknown_2037F02
- ldrh r1, [r3]
- movs r2, 0
- strh r1, [r0, 0x20]
- ldrh r1, [r3, 0x2]
- strh r1, [r0, 0x22]
- strh r2, [r0, 0x2E]
- strh r2, [r0, 0x30]
- strh r2, [r0, 0x32]
- ldrh r1, [r3, 0x4]
- strh r1, [r0, 0x3A]
- ldrh r1, [r3, 0x6]
- strh r1, [r0, 0x3C]
- ldrh r4, [r0, 0x4]
- lsls r2, r4, 22
- lsrs r2, 22
- movs r5, 0x8
- ldrsh r1, [r3, r5]
- lsls r1, 4
- adds r2, r1
- ldr r3, _080AD49C @ =0x000003ff
- adds r1, r3, 0
- ands r2, r1
- ldr r1, _080AD4A0 @ =0xfffffc00
- ands r1, r4
- orrs r1, r2
- strh r1, [r0, 0x4]
- ldr r1, _080AD4A4 @ =sub_80AD4A8
- str r1, [r0, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AD498: .4byte gUnknown_2037F02
-_080AD49C: .4byte 0x000003ff
-_080AD4A0: .4byte 0xfffffc00
-_080AD4A4: .4byte sub_80AD4A8
- thumb_func_end sub_80AD454
-
- thumb_func_start sub_80AD4A8
-sub_80AD4A8: @ 80AD4A8
- push {r4,lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- beq _080AD4DA
- cmp r0, 0x1
- bgt _080AD4BE
- cmp r0, 0
- beq _080AD4C4
- b _080AD538
-_080AD4BE:
- cmp r0, 0x2
- beq _080AD4F8
- b _080AD538
-_080AD4C4:
- ldrh r1, [r2, 0x3A]
- movs r3, 0x3A
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _080AD4D4
- subs r0, r1, 0x1
- strh r0, [r2, 0x3A]
- b _080AD538
-_080AD4D4:
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
-_080AD4DA:
- ldrh r0, [r2, 0x22]
- adds r0, 0x8
- strh r0, [r2, 0x22]
- lsls r0, 16
- asrs r0, 16
- ldrh r3, [r2, 0x3C]
- movs r4, 0x3C
- ldrsh r1, [r2, r4]
- cmp r0, r1
- blt _080AD538
- strh r3, [r2, 0x22]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- b _080AD538
-_080AD4F8:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080AD524
- movs r0, 0
- strh r0, [r2, 0x30]
- ldrh r0, [r2, 0x32]
- adds r0, 0x1
- strh r0, [r2, 0x32]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080AD520
- ldr r0, _080AD51C @ =0x0000fffd
- b _080AD522
- .align 2, 0
-_080AD51C: .4byte 0x0000fffd
-_080AD520:
- movs r0, 0x3
-_080AD522:
- strh r0, [r2, 0x26]
-_080AD524:
- ldrh r0, [r2, 0x34]
- adds r0, 0x1
- strh r0, [r2, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080AD538
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080AD538:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AD4A8
-
- thumb_func_start sub_80AD540
-sub_80AD540: @ 80AD540
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080AD5B4
- cmp r0, 0x1
- bgt _080AD556
- cmp r0, 0
- beq _080AD55C
- b _080AD682
-_080AD556:
- cmp r0, 0x2
- beq _080AD612
- b _080AD682
-_080AD55C:
- adds r0, r5, 0
- movs r1, 0
- bl sub_8075160
- ldr r4, _080AD584 @ =gUnknown_2037F02
- ldrb r1, [r4, 0x4]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x3C]
- ldr r0, _080AD588 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AD58C
- movs r0, 0x4
- b _080AD58E
- .align 2, 0
-_080AD584: .4byte gUnknown_2037F02
-_080AD588: .4byte gUnknown_2037F1A
-_080AD58C:
- ldr r0, _080AD5AC @ =0x0000fffc
-_080AD58E:
- strh r0, [r5, 0x36]
- ldr r0, _080AD5B0 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_8076884
- 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]
- b _080AD60A
- .align 2, 0
-_080AD5AC: .4byte 0x0000fffc
-_080AD5B0: .4byte gUnknown_2037F1B
-_080AD5B4:
- ldrh r0, [r5, 0x30]
- adds r0, 0xC0
- strh r0, [r5, 0x30]
- ldr r0, _080AD5D4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AD5D8
- ldrh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- b _080AD5DE
- .align 2, 0
-_080AD5D4: .4byte gUnknown_2037F1A
-_080AD5D8:
- ldrh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 24
-_080AD5DE:
- strh r0, [r5, 0x26]
- movs r2, 0x32
- ldrsh r0, [r5, r2]
- movs r2, 0x36
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r5, 0x24]
- ldrh r0, [r5, 0x32]
- adds r0, 0x4
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080AD682
- movs r0, 0
- strh r0, [r5, 0x34]
-_080AD60A:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080AD682
-_080AD612:
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r2, 0x36
- ldrsh r1, [r5, r2]
- bl Sin
- adds r2, r0, 0
- movs r3, 0
- strh r2, [r5, 0x24]
- ldrh r0, [r5, 0x32]
- adds r0, 0x4
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _080AD682
- ldrh r0, [r5, 0x20]
- adds r1, r2, r0
- strh r1, [r5, 0x20]
- ldrh r0, [r5, 0x26]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- strh r3, [r5, 0x26]
- strh r3, [r5, 0x24]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r5, 0x2E]
- strh r1, [r5, 0x30]
- ldr r4, _080AD688 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl sub_8075678
- ldr r0, _080AD68C @ =sub_80AD690
- str r0, [r5, 0x1C]
-_080AD682:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AD688: .4byte gUnknown_2037F1B
-_080AD68C: .4byte sub_80AD690
- thumb_func_end sub_80AD540
-
- thumb_func_start sub_80AD690
-sub_80AD690: @ 80AD690
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- bne _080AD6E8
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0x10
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldrh r2, [r4, 0x38]
- adds r0, r2, 0x4
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x38]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0
- beq _080AD6C6
- cmp r2, 0xC4
- ble _080AD6EE
-_080AD6C6:
- lsls r0, 16
- cmp r0, 0
- ble _080AD6EE
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AD6EE
- ldr r0, _080AD6E4 @ =gUnknown_2037F24
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0x89
- bl PlaySE12WithPanning
- b _080AD6EE
- .align 2, 0
-_080AD6E4: .4byte gUnknown_2037F24
-_080AD6E8:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AD6EE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AD690
-
- thumb_func_start sub_80AD6F4
-sub_80AD6F4: @ 80AD6F4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080AD70C
- ldr r0, _080AD778 @ =gUnknown_2037F02
- ldrh r0, [r0]
- strh r0, [r4, 0x30]
- adds r0, r1, 0x1
- strh r0, [r4, 0x2E]
-_080AD70C:
- movs r0, 0xC0
- lsls r0, 1
- adds r1, r0, 0
- ldrh r2, [r4, 0x34]
- adds r1, r2
- strh r1, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r0, 0xA0
- strh r0, [r4, 0x36]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- lsls r1, 16
- asrs r1, 24
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x36]
- lsls r1, 16
- asrs r1, 24
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x7
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080AD7A8
- ldrh r0, [r4, 0x30]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x83
- bls _080AD780
- ldr r0, _080AD77C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_8076884
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- b _080AD7C4
- .align 2, 0
-_080AD778: .4byte gUnknown_2037F02
-_080AD77C: .4byte gUnknown_2037F1B
-_080AD780:
- ldr r0, _080AD7A4 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x5]
- b _080AD7C4
- .align 2, 0
-_080AD7A4: .4byte gUnknown_2037F1B
-_080AD7A8:
- ldrh r0, [r4, 0x30]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x83
- bls _080AD7BC
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1D
- b _080AD7C2
-_080AD7BC:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1F
-_080AD7C2:
- strb r0, [r1]
-_080AD7C4:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080AD7EC
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080AD7EC:
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r0, 0x1E
- bne _080AD7FA
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AD7FA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AD6F4
-
- thumb_func_start sub_80AD800
-sub_80AD800: @ 80AD800
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080AD860 @ =gTasks
- adds r4, r1, r0
- ldr r0, _080AD864 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _080AD826
- movs r1, 0x1
-_080AD826:
- strh r1, [r4, 0x20]
- ldr r0, _080AD868 @ =gUnknown_2037F1B
- ldrb r1, [r0]
- movs r0, 0x2
- eors r0, r1
- bl sub_8072DF0
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- strh r0, [r4, 0x22]
- movs r0, 0x1
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x24]
- movs r0, 0x3
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r0, _080AD86C @ =sub_80AD870
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AD860: .4byte gTasks
-_080AD864: .4byte gUnknown_2037F1A
-_080AD868: .4byte gUnknown_2037F1B
-_080AD86C: .4byte sub_80AD870
- thumb_func_end sub_80AD800
-
- thumb_func_start sub_80AD870
-sub_80AD870: @ 80AD870
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080AD894 @ =gTasks
- adds r2, r0, r1
- movs r0, 0x8
- ldrsh r3, [r2, r0]
- cmp r3, 0x1
- beq _080AD938
- cmp r3, 0x1
- bgt _080AD898
- cmp r3, 0
- beq _080AD8A6
- b _080ADA98
- .align 2, 0
-_080AD894: .4byte gTasks
-_080AD898:
- cmp r3, 0x2
- bne _080AD89E
- b _080AD9C0
-_080AD89E:
- cmp r3, 0x3
- bne _080AD8A4
- b _080ADA54
-_080AD8A4:
- b _080ADA98
-_080AD8A6:
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- lsls r0, 1
- ldrh r5, [r2, 0x1C]
- adds r0, r5
- strh r0, [r2, 0x1C]
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080AD8D8
- strh r3, [r2, 0xA]
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080AD8D4
- movs r0, 0x2
- b _080AD8D6
-_080AD8D4:
- ldr r0, _080AD930 @ =0x0000fffe
-_080AD8D6:
- strh r0, [r2, 0x1E]
-_080AD8D8:
- movs r1, 0
- strh r1, [r2, 0xE]
- movs r7, 0x22
- ldrsh r0, [r2, r7]
- cmp r1, r0
- bge _080AD91A
- ldr r4, _080AD934 @ =gSprites
- adds r3, r2, 0
- adds r3, 0x8
-_080AD8EA:
- movs r1, 0xE
- ldrsh r0, [r2, r1]
- adds r0, 0xE
- lsls r0, 1
- adds r0, r3, r0
- movs r5, 0
- ldrsh r0, [r0, r5]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r2, 0x1E]
- ldrh r7, [r2, 0x1C]
- adds r0, r7
- strh r0, [r1, 0x24]
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r5, 0x22
- ldrsh r1, [r2, r5]
- cmp r0, r1
- blt _080AD8EA
-_080AD91A:
- ldrh r0, [r2, 0x1A]
- adds r0, 0x1
- strh r0, [r2, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- beq _080AD92A
- b _080ADA98
-_080AD92A:
- movs r0, 0
- strh r0, [r2, 0x1A]
- b _080ADA44
- .align 2, 0
-_080AD930: .4byte 0x0000fffe
-_080AD934: .4byte gSprites
-_080AD938:
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080AD960
- movs r0, 0
- strh r0, [r2, 0xA]
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- ands r0, r3
- lsls r0, 16
- cmp r0, 0
- beq _080AD95C
- movs r0, 0x2
- b _080AD95E
-_080AD95C:
- ldr r0, _080AD9B8 @ =0x0000fffe
-_080AD95E:
- strh r0, [r2, 0x1E]
-_080AD960:
- movs r1, 0
- strh r1, [r2, 0xE]
- movs r7, 0x22
- ldrsh r0, [r2, r7]
- cmp r1, r0
- bge _080AD9A2
- ldr r4, _080AD9BC @ =gSprites
- adds r3, r2, 0
- adds r3, 0x8
-_080AD972:
- movs r1, 0xE
- ldrsh r0, [r2, r1]
- adds r0, 0xE
- lsls r0, 1
- adds r0, r3, r0
- movs r5, 0
- ldrsh r0, [r0, r5]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r2, 0x1E]
- ldrh r7, [r2, 0x1C]
- adds r0, r7
- strh r0, [r1, 0x24]
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r5, 0x22
- ldrsh r1, [r2, r5]
- cmp r0, r1
- blt _080AD972
-_080AD9A2:
- ldrh r0, [r2, 0x1A]
- adds r0, 0x1
- strh r0, [r2, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x60
- bne _080ADA98
- movs r0, 0
- strh r0, [r2, 0x1A]
- b _080ADA44
- .align 2, 0
-_080AD9B8: .4byte 0x0000fffe
-_080AD9BC: .4byte gSprites
-_080AD9C0:
- movs r7, 0x20
- ldrsh r1, [r2, r7]
- lsls r1, 1
- ldrh r0, [r2, 0x1C]
- subs r0, r1
- strh r0, [r2, 0x1C]
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080AD9F4
- movs r0, 0
- strh r0, [r2, 0xA]
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080AD9F0
- strh r3, [r2, 0x1E]
- b _080AD9F4
-_080AD9F0:
- ldr r0, _080ADA4C @ =0x0000fffe
- strh r0, [r2, 0x1E]
-_080AD9F4:
- movs r1, 0
- strh r1, [r2, 0xE]
- movs r3, 0x22
- ldrsh r0, [r2, r3]
- cmp r1, r0
- bge _080ADA36
- ldr r4, _080ADA50 @ =gSprites
- adds r3, r2, 0
- adds r3, 0x8
-_080ADA06:
- movs r5, 0xE
- ldrsh r0, [r2, r5]
- adds r0, 0xE
- lsls r0, 1
- adds r0, r3, r0
- movs r7, 0
- ldrsh r0, [r0, r7]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r2, 0x1E]
- ldrh r5, [r2, 0x1C]
- adds r0, r5
- strh r0, [r1, 0x24]
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r7, 0x22
- ldrsh r1, [r2, r7]
- cmp r0, r1
- blt _080ADA06
-_080ADA36:
- ldrh r0, [r2, 0x1A]
- adds r0, 0x1
- strh r0, [r2, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- bne _080ADA98
-_080ADA44:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _080ADA98
- .align 2, 0
-_080ADA4C: .4byte 0x0000fffe
-_080ADA50: .4byte gSprites
-_080ADA54:
- movs r1, 0
- strh r1, [r2, 0xE]
- movs r3, 0x22
- ldrsh r0, [r2, r3]
- cmp r1, r0
- bge _080ADA92
- ldr r6, _080ADAA0 @ =gSprites
- adds r3, r2, 0
- adds r3, 0x8
- movs r5, 0
-_080ADA68:
- movs r7, 0xE
- ldrsh r0, [r2, r7]
- adds r0, 0xE
- lsls r0, 1
- adds r0, r3, r0
- movs r7, 0
- ldrsh r1, [r0, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r5, [r0, 0x24]
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r7, 0x22
- ldrsh r1, [r2, r7]
- cmp r0, r1
- blt _080ADA68
-_080ADA92:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080ADA98:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080ADAA0: .4byte gSprites
- thumb_func_end sub_80AD870
-
- thumb_func_start sub_80ADAA4
-sub_80ADAA4: @ 80ADAA4
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x8]
- lsls r0, 4
- ldr r1, _080ADAD4 @ =gUnknown_2037F02
- ldrb r2, [r1]
- ldrh r3, [r1, 0x2]
- movs r1, 0x10
- bl BlendPalette
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ADAD4: .4byte gUnknown_2037F02
- thumb_func_end sub_80ADAA4
-
- thumb_func_start sub_80ADAD8
-sub_80ADAD8: @ 80ADAD8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080ADB30 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r2, r0, r1
- movs r3, 0x8
- ldrsh r0, [r2, r3]
- mov r9, r1
- ldr r4, _080ADB34 @ =gUnknown_2037F02
- mov r8, r4
- cmp r0, 0
- bne _080ADB0E
- ldrh r0, [r4]
- strh r0, [r2, 0xA]
- ldrh r0, [r4, 0x2]
- strh r0, [r2, 0xC]
- ldrh r0, [r4, 0x4]
- strh r0, [r2, 0xE]
- ldrh r0, [r4, 0x6]
- strh r0, [r2, 0x10]
-_080ADB0E:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- ldr r1, _080ADB38 @ =gUnknown_2023D44
- ldr r0, _080ADB3C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r0, r1
- ldrb r6, [r0]
- movs r5, 0x10
- ldrsh r0, [r2, r5]
- cmp r0, 0
- bne _080ADB44
- ldr r4, _080ADB40 @ =gUnknown_83E5EFC
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- b _080ADB4A
- .align 2, 0
-_080ADB30: .4byte gTasks
-_080ADB34: .4byte gUnknown_2037F02
-_080ADB38: .4byte gUnknown_2023D44
-_080ADB3C: .4byte gUnknown_2037F1B
-_080ADB40: .4byte gUnknown_83E5EFC
-_080ADB44:
- ldr r4, _080ADB90 @ =gUnknown_83E5F0C
- movs r3, 0x8
- ldrsh r0, [r2, r3]
-_080ADB4A:
- movs r1, 0xA
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- adds r0, r4
- ldrb r5, [r0]
- lsls r0, r7, 2
- adds r1, r0, r7
- lsls r1, 3
- add r1, r9
- movs r4, 0xE
- ldrsh r1, [r1, r4]
- mov r12, r0
- cmp r1, 0x1
- bne _080ADB98
- ldr r2, _080ADB94 @ =gSprites
- lsls r3, r6, 4
- adds r0, r3, r6
- lsls r0, 2
- adds r0, r2
- mov r10, r0
- mov r0, r8
- movs r4, 0x2
- ldrsh r1, [r0, r4]
- lsls r0, r5, 24
- asrs r0, 24
- muls r0, r1
- cmp r0, 0
- bge _080ADB88
- negs r0, r0
-_080ADB88:
- mov r5, r10
- strh r0, [r5, 0x26]
- b _080ADBB2
- .align 2, 0
-_080ADB90: .4byte gUnknown_83E5F0C
-_080ADB94: .4byte gSprites
-_080ADB98:
- ldr r3, _080ADBE8 @ =gSprites
- lsls r4, r6, 4
- adds r2, r4, r6
- lsls r2, 2
- adds r2, r3
- lsls r0, r5, 24
- asrs r0, 24
- mov r5, r8
- ldrh r1, [r5, 0x2]
- muls r0, r1
- strh r0, [r2, 0x24]
- adds r2, r3, 0
- adds r3, r4, 0
-_080ADBB2:
- mov r1, r12
- adds r0, r1, r7
- lsls r0, 3
- add r0, r9
- movs r4, 0x8
- ldrsh r1, [r0, r4]
- movs r5, 0xA
- ldrsh r0, [r0, r5]
- cmp r1, r0
- bne _080ADBD8
- adds r0, r3, r6
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x24]
- strh r1, [r0, 0x26]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080ADBD8:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080ADBE8: .4byte gSprites
- thumb_func_end sub_80ADAD8
-
- thumb_func_start sub_80ADBEC
-sub_80ADBEC: @ 80ADBEC
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080ADC0C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080ADC14
- ldr r0, _080ADC10 @ =gUnknown_2037F02
- ldrh r1, [r4, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r4, 0x20]
- b _080ADC20
- .align 2, 0
-_080ADC0C: .4byte gUnknown_2037F1A
-_080ADC10: .4byte gUnknown_2037F02
-_080ADC14:
- ldr r1, _080ADC34 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r0, r1, 0
-_080ADC20:
- ldrh r0, [r0, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, _080ADC38 @ =sub_80ADC3C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ADC34: .4byte gUnknown_2037F02
-_080ADC38: .4byte sub_80ADC3C
- thumb_func_end sub_80ADBEC
-
- thumb_func_start sub_80ADC3C
-sub_80ADC3C: @ 80ADC3C
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080ADC52
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080ADC52:
- pop {r0}
- bx r0
- thumb_func_end sub_80ADC3C
-
- thumb_func_start sub_80ADC58
-sub_80ADC58: @ 80ADC58
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080ADC78 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080ADC80
- ldr r0, _080ADC7C @ =gUnknown_2037F02
- ldrh r1, [r4, 0x20]
- ldrh r0, [r0]
- subs r1, r0
- strh r1, [r4, 0x20]
- b _080ADC8A
- .align 2, 0
-_080ADC78: .4byte gUnknown_2037F1A
-_080ADC7C: .4byte gUnknown_2037F02
-_080ADC80:
- ldr r0, _080ADC94 @ =gUnknown_2037F02
- ldrh r0, [r0]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
-_080ADC8A:
- ldr r0, _080ADC98 @ =sub_80ADC9C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ADC94: .4byte gUnknown_2037F02
-_080ADC98: .4byte sub_80ADC9C
- thumb_func_end sub_80ADC58
-
- thumb_func_start sub_80ADC9C
-sub_80ADC9C: @ 80ADC9C
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080ADCB2
- adds r0, r2, 0
- bl move_anim_8074EE0
-_080ADCB2:
- pop {r0}
- bx r0
- thumb_func_end sub_80ADC9C
-
- thumb_func_start sub_80ADCB8
-sub_80ADCB8: @ 80ADCB8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080ADCFC @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r0, _080ADD00 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080ADD08
- ldr r2, _080ADD04 @ =gUnknown_2037F02
- ldrh r0, [r5, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x22]
- ldrh r1, [r2, 0x2]
- subs r0, r1
- strh r0, [r5, 0x22]
- b _080ADD1C
- .align 2, 0
-_080ADCFC: .4byte gUnknown_2037F1B
-_080ADD00: .4byte gUnknown_2037F1A
-_080ADD04: .4byte gUnknown_2037F02
-_080ADD08:
- ldr r0, _080ADD40 @ =gUnknown_2037F02
- ldrh r1, [r0]
- ldrh r2, [r5, 0x20]
- adds r1, r2
- strh r1, [r5, 0x20]
- ldrh r1, [r0, 0x2]
- ldrh r2, [r5, 0x22]
- adds r1, r2
- strh r1, [r5, 0x22]
- adds r2, r0, 0
-_080ADD1C:
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldrh r0, [r2, 0x4]
- strh r0, [r5, 0x30]
- ldrh r0, [r2, 0x6]
- strh r0, [r5, 0x32]
- ldrh r0, [r2, 0x8]
- strh r0, [r5, 0x34]
- ldr r1, _080ADD44 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080ADD48 @ =sub_8074A80
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080ADD40: .4byte gUnknown_2037F02
-_080ADD44: .4byte move_anim_8074EE0
-_080ADD48: .4byte sub_8074A80
- thumb_func_end sub_80ADCB8
-
- thumb_func_start sub_80ADD4C
-sub_80ADD4C: @ 80ADD4C
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r0, _080ADD64 @ =gUnknown_2037F02
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- beq _080ADDC4
- cmp r0, 0x1
- bgt _080ADD68
- cmp r0, 0
- beq _080ADD72
- b _080ADDC4
- .align 2, 0
-_080ADD64: .4byte gUnknown_2037F02
-_080ADD68:
- cmp r0, 0x2
- beq _080ADD7C
- cmp r0, 0x3
- beq _080ADDA0
- b _080ADDC4
-_080ADD72:
- ldr r0, _080ADD78 @ =gUnknown_2037F1A
- b _080ADDC6
- .align 2, 0
-_080ADD78: .4byte gUnknown_2037F1A
-_080ADD7C:
- ldr r4, _080ADD94 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r6, 0x2
- eors r0, r6
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- bne _080ADD98
- ldrb r4, [r4]
- b _080ADDC8
- .align 2, 0
-_080ADD94: .4byte gUnknown_2037F1A
-_080ADD98:
- ldrb r0, [r4]
- adds r4, r6, 0
- eors r4, r0
- b _080ADDC8
-_080ADDA0:
- ldr r0, _080ADDBC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- movs r4, 0x2
- eors r0, r4
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080ADDC4
- ldr r0, _080ADDC0 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- eors r4, r0
- b _080ADDC8
- .align 2, 0
-_080ADDBC: .4byte gUnknown_2037F1A
-_080ADDC0: .4byte gUnknown_2037F1B
-_080ADDC4:
- ldr r0, _080ADDE8 @ =gUnknown_2037F1B
-_080ADDC6:
- ldrb r4, [r0]
-_080ADDC8:
- ldr r0, _080ADDEC @ =gUnknown_2037F02
- movs r2, 0xA
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bne _080ADDF0
- adds r0, r4, 0
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- adds r0, r4, 0
- movs r1, 0x1
- b _080ADE02
- .align 2, 0
-_080ADDE8: .4byte gUnknown_2037F1B
-_080ADDEC: .4byte gUnknown_2037F02
-_080ADDF0:
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- adds r0, r4, 0
- movs r1, 0x3
-_080ADE02:
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r7, _080ADEA0 @ =gSineTable
- ldr r6, _080ADEA4 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r6, r1]
- lsls r0, 1
- adds r0, r7
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r2, 0x2
- ldrsh r0, [r6, r2]
- muls r0, r1
- asrs r0, 8
- strh r0, [r5, 0x24]
- movs r1, 0
- ldrsh r0, [r6, r1]
- adds r0, 0x40
- lsls r0, 1
- adds r0, r7
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r2, 0x2
- ldrsh r0, [r6, r2]
- muls r0, r1
- asrs r0, 8
- strh r0, [r5, 0x26]
- ldrh r1, [r6, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080ADE66
- adds r0, r4, 0
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r5, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x5]
-_080ADE66:
- ldrb r2, [r5, 0x3]
- lsls r2, 26
- lsrs r2, 27
- movs r0, 0x4
- ldrsh r1, [r6, r0]
- lsls r0, r1, 1
- adds r0, r7
- ldrh r0, [r0]
- ldr r3, _080ADEA8 @ =gOamMatrices
- lsls r2, 3
- adds r2, r3
- adds r1, 0x40
- lsls r1, 1
- adds r1, r7
- ldrh r1, [r1]
- strh r1, [r2, 0x6]
- strh r1, [r2]
- strh r0, [r2, 0x2]
- lsls r0, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r2, 0x4]
- ldrh r0, [r6, 0x6]
- strh r0, [r5, 0x2E]
- ldr r0, _080ADEAC @ =sub_80B1D3C
- str r0, [r5, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080ADEA0: .4byte gSineTable
-_080ADEA4: .4byte gUnknown_2037F02
-_080ADEA8: .4byte gOamMatrices
-_080ADEAC: .4byte sub_80B1D3C
- thumb_func_end sub_80ADD4C
-
- thumb_func_start sub_80ADEB0
-sub_80ADEB0: @ 80ADEB0
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r5, _080ADF24 @ =gUnknown_2037F02
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldr r6, _080ADF28 @ =gUnknown_2037F1B
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldrb r0, [r6]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x38]
- ldrh r0, [r5, 0xA]
- strh r0, [r4, 0x3A]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x3C]
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- movs r3, 0xC
- ldrsh r0, [r5, r3]
- lsls r0, 2
- adds r1, r0
- ldr r3, _080ADF2C @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080ADF30 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- ldr r1, _080ADF34 @ =sub_80ADF38
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080ADF24: .4byte gUnknown_2037F02
-_080ADF28: .4byte gUnknown_2037F1B
-_080ADF2C: .4byte 0x000003ff
-_080ADF30: .4byte 0xfffffc00
-_080ADF34: .4byte sub_80ADF38
- thumb_func_end sub_80ADEB0
-
- thumb_func_start sub_80ADF38
-sub_80ADF38: @ 80ADF38
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- bne _080ADFA2
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- ldrh r2, [r4, 0x3C]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3C]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _080ADFA8
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _080ADFA8
-_080ADFA2:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080ADFA8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ADF38
-
- thumb_func_start sub_80ADFB0
-sub_80ADFB0: @ 80ADFB0
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x38]
- subs r0, 0x1
- strh r0, [r3, 0x38]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080ADFE8
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x36]
- strh r0, [r3, 0x38]
-_080ADFE8:
- ldrh r0, [r3, 0x34]
- subs r1, r0, 0x1
- strh r1, [r3, 0x34]
- lsls r0, 16
- cmp r0, 0
- bgt _080ADFFA
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080ADFFA:
- pop {r0}
- bx r0
- thumb_func_end sub_80ADFB0
-
- thumb_func_start sub_80AE000
-sub_80AE000: @ 80AE000
- push {r4-r6,lr}
- adds r6, r0, 0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080AE01C
- ldr r0, _080AE060 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080AE024
-_080AE01C:
- ldr r1, _080AE064 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_080AE024:
- ldr r5, _080AE060 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- ldr r4, _080AE064 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x22]
- ldrh r0, [r4]
- strh r0, [r6, 0x34]
- ldrh r0, [r4, 0x6]
- strh r0, [r6, 0x36]
- strh r0, [r6, 0x38]
- ldr r0, _080AE068 @ =sub_80ADFB0
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AE060: .4byte gUnknown_2037F1B
-_080AE064: .4byte gUnknown_2037F02
-_080AE068: .4byte sub_80ADFB0
- thumb_func_end sub_80AE000
-
- thumb_func_start sub_80AE06C
-sub_80AE06C: @ 80AE06C
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r1, _080AE088 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x6]
- strh r0, [r5, 0x2E]
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _080AE090
- ldr r0, _080AE08C @ =gUnknown_2037F1B
- b _080AE092
- .align 2, 0
-_080AE088: .4byte gUnknown_2037F02
-_080AE08C: .4byte gUnknown_2037F1B
-_080AE090:
- ldr r0, _080AE118 @ =gUnknown_2037F1A
-_080AE092:
- ldrb r6, [r0]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080AE0AA
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080AE0B2
-_080AE0AA:
- ldr r1, _080AE11C @ =gUnknown_2037F02
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080AE0B2:
- adds r0, r6, 0
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- ldr r4, _080AE11C @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r3, [r4]
- adds r0, r3
- strh r0, [r5, 0x20]
- adds r0, r6, 0
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldrh r1, [r4, 0xE]
- ldr r0, _080AE120 @ =0x00007fff
- ands r0, r1
- strh r0, [r5, 0x36]
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x38]
- ldrh r0, [r4, 0xA]
- strh r0, [r5, 0x3A]
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x3C]
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- lsls r0, 2
- adds r1, r0
- ldr r3, _080AE124 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080AE128 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- ldr r1, _080AE12C @ =sub_80AE130
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AE118: .4byte gUnknown_2037F1A
-_080AE11C: .4byte gUnknown_2037F02
-_080AE120: .4byte 0x00007fff
-_080AE124: .4byte 0x000003ff
-_080AE128: .4byte 0xfffffc00
-_080AE12C: .4byte sub_80AE130
- thumb_func_end sub_80AE06C
-
- thumb_func_start sub_80AE130
-sub_80AE130: @ 80AE130
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x3C]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3C]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __modsi3
- cmp r0, 0
- bne _080AE186
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080AE186:
- ldrh r0, [r4, 0x2E]
- subs r1, r0, 0x1
- strh r1, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bgt _080AE198
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AE198:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AE130
-
- thumb_func_start sub_80AE1A0
-sub_80AE1A0: @ 80AE1A0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_8075114
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- ldr r3, _080AE1DC @ =gUnknown_2037F02
- movs r5, 0x6
- ldrsh r0, [r3, r5]
- lsls r0, 2
- adds r1, r0
- ldr r5, _080AE1E0 @ =0x000003ff
- adds r0, r5, 0
- ands r1, r0
- ldr r0, _080AE1E4 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- movs r1, 0x6
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- bne _080AE1E8
- ldrb r0, [r4, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- b _080AE1F6
- .align 2, 0
-_080AE1DC: .4byte gUnknown_2037F02
-_080AE1E0: .4byte 0x000003ff
-_080AE1E4: .4byte 0xfffffc00
-_080AE1E8:
- cmp r0, 0x2
- bne _080AE1FA
- ldrb r0, [r4, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x20
-_080AE1F6:
- orrs r1, r0
- strb r1, [r4, 0x3]
-_080AE1FA:
- ldr r0, _080AE214 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x2E]
- ldr r0, _080AE218 @ =sub_8074C44
- str r0, [r4, 0x1C]
- ldr r1, _080AE21C @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AE214: .4byte gUnknown_2037F02
-_080AE218: .4byte sub_8074C44
-_080AE21C: .4byte DestroyAnimSprite
- thumb_func_end sub_80AE1A0
-
- thumb_func_start sub_80AE220
-sub_80AE220: @ 80AE220
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r6, _080AE268 @ =gUnknown_2037F1B
- ldrb r0, [r6]
- movs r1, 0
- bl sub_8074480
- ldr r1, _080AE26C @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r1
- lsls r0, 24
- ldr r5, _080AE270 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r4, 0x8]
- ldrb r0, [r6]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x2]
- adds r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0xC]
- ldr r0, _080AE274 @ =sub_80AE278
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AE268: .4byte gUnknown_2037F1B
-_080AE26C: .4byte gTasks
-_080AE270: .4byte gUnknown_2037F02
-_080AE274: .4byte sub_80AE278
- thumb_func_end sub_80AE220
-
- thumb_func_start sub_80AE278
-sub_80AE278: @ 80AE278
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r5, 0
- movs r7, 0
- ldr r1, _080AE2B8 @ =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldrb r2, [r0, 0xC]
- str r2, [sp]
- ldrh r4, [r0, 0x8]
- ldrh r6, [r0, 0xA]
- movs r3, 0xC
- ldrsh r0, [r0, r3]
- mov r10, r1
- cmp r0, 0
- bne _080AE2BC
- movs r0, 0
- mov r8, r0
- movs r2, 0x1
- movs r1, 0x10
- mov r12, r1
- b _080AE2C6
- .align 2, 0
-_080AE2B8: .4byte gTasks
-_080AE2BC:
- movs r2, 0x10
- mov r12, r2
- movs r3, 0x8
- mov r8, r3
- movs r2, 0x4
-_080AE2C6:
- mov r0, r9
- lsls r1, r0, 2
- adds r0, r1, r0
- lsls r0, 3
- add r0, r10
- movs r3, 0x1C
- ldrsh r0, [r0, r3]
- mov r10, r1
- cmp r0, 0xA
- bhi _080AE3BC
- lsls r0, 2
- ldr r1, _080AE2E4 @ =_080AE2E8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080AE2E4: .4byte _080AE2E8
- .align 2, 0
-_080AE2E8:
- .4byte _080AE314
- .4byte _080AE3BC
- .4byte _080AE328
- .4byte _080AE3BC
- .4byte _080AE348
- .4byte _080AE3BC
- .4byte _080AE35E
- .4byte _080AE3BC
- .4byte _080AE380
- .4byte _080AE3BC
- .4byte _080AE3B4
-_080AE314:
- ldr r0, _080AE324 @ =gUnknown_83E60A0
- lsls r1, r4, 16
- asrs r1, 16
- lsls r2, r6, 16
- asrs r2, 16
- mov r4, r12
- lsls r3, r4, 16
- b _080AE396
- .align 2, 0
-_080AE324: .4byte gUnknown_83E60A0
-_080AE328:
- mov r0, r12
- lsls r3, r0, 17
- mov r1, r8
- adds r0, r1, r2
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r0, _080AE344 @ =gUnknown_83E60A0
- lsls r1, r4, 16
- asrs r1, 16
- lsls r2, r6, 16
- asrs r2, 16
- b _080AE396
- .align 2, 0
-_080AE344: .4byte gUnknown_83E60A0
-_080AE348:
- mov r3, r12
- lsls r0, r3, 16
- asrs r0, 16
- lsls r3, r0, 1
- adds r3, r0
- lsls r0, r2, 1
- add r0, r8
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- b _080AE38A
-_080AE35E:
- mov r0, r12
- lsls r3, r0, 18
- lsls r0, r2, 1
- adds r0, r2
- add r0, r8
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r0, _080AE37C @ =gUnknown_83E60A0
- lsls r1, r4, 16
- asrs r1, 16
- lsls r2, r6, 16
- asrs r2, 16
- b _080AE396
- .align 2, 0
-_080AE37C: .4byte gUnknown_83E60A0
-_080AE380:
- mov r1, r12
- lsls r0, r1, 16
- asrs r0, 16
- lsls r3, r0, 2
- adds r3, r0
-_080AE38A:
- ldr r0, _080AE3B0 @ =gUnknown_83E60A0
- lsls r1, r4, 16
- asrs r1, 16
- lsls r2, r6, 16
- asrs r2, 16
- lsls r3, 16
-_080AE396:
- asrs r3, 16
- adds r2, r3
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- b _080AE3BC
- .align 2, 0
-_080AE3B0: .4byte gUnknown_83E60A0
-_080AE3B4:
- mov r0, r9
- bl DestroyAnimVisualTask
- b _080AE400
-_080AE3BC:
- cmp r7, 0
- beq _080AE3F0
- ldr r4, _080AE410 @ =gSprites
- lsls r3, r5, 4
- adds r3, r5
- lsls r3, 2
- adds r0, r3, r4
- ldrh r5, [r0, 0x4]
- lsls r2, r5, 22
- lsrs r2, 22
- add r2, r8
- ldr r6, _080AE414 @ =0x000003ff
- adds r1, r6, 0
- ands r2, r1
- ldr r1, _080AE418 @ =0xfffffc00
- ands r1, r5
- orrs r1, r2
- strh r1, [r0, 0x4]
- mov r1, sp
- ldrh r1, [r1]
- strh r1, [r0, 0x2E]
- adds r4, 0x1C
- adds r3, r4
- ldr r1, [r3]
- bl _call_via_r1
-_080AE3F0:
- ldr r0, _080AE41C @ =gTasks
- mov r1, r10
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1C]
- adds r0, 0x1
- strh r0, [r1, 0x1C]
-_080AE400:
- 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
-_080AE410: .4byte gSprites
-_080AE414: .4byte 0x000003ff
-_080AE418: .4byte 0xfffffc00
-_080AE41C: .4byte gTasks
- thumb_func_end sub_80AE278
-
- thumb_func_start sub_80AE420
-sub_80AE420: @ 80AE420
- push {lr}
- adds r3, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080AE442
- ldrb r1, [r3, 0x1]
- movs r2, 0x3F
- adds r0, r2, 0
- ands r0, r1
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r3, 0x1]
- ldrb r0, [r3, 0x3]
- ands r2, r0
- strb r2, [r3, 0x3]
- b _080AE456
-_080AE442:
- ldrb r2, [r3, 0x1]
- movs r1, 0x3F
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3, 0x1]
- ldrb r0, [r3, 0x3]
- ands r1, r0
- movs r0, 0x40
- orrs r1, r0
- strb r1, [r3, 0x3]
-_080AE456:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bne _080AE46A
- adds r0, r3, 0
- bl DestroySprite
-_080AE46A:
- pop {r0}
- bx r0
- thumb_func_end sub_80AE420
-
- thumb_func_start sub_80AE470
-sub_80AE470: @ 80AE470
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r0, _080AE4D8 @ =gUnknown_2037F02
- ldrh r1, [r0]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- strh r1, [r4, 0x20]
- ldrh r0, [r0, 0x2]
- ldrh r3, [r4, 0x22]
- adds r0, r3
- strh r0, [r4, 0x22]
- ldr r0, _080AE4DC @ =gUnknown_83E60B8
- adds r1, 0x20
- lsls r1, 16
- asrs r1, 16
- movs r7, 0x22
- ldrsh r2, [r4, r7]
- adds r3, r4, 0
- adds r3, 0x43
- ldrb r3, [r3]
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080AE4E0 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r6, r2, r3
- ldrh r5, [r6, 0x4]
- lsls r1, r5, 22
- lsrs r1, 22
- adds r1, 0x8
- ldr r7, _080AE4E4 @ =0x000003ff
- adds r0, r7, 0
- ands r1, r0
- ldr r0, _080AE4E8 @ =0xfffffc00
- ands r0, r5
- orrs r0, r1
- strh r0, [r6, 0x4]
- ldr r1, _080AE4EC @ =gUnknown_2037EE2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- adds r3, 0x1C
- adds r2, r3
- ldr r0, _080AE4F0 @ =sub_80AE4F4
- str r0, [r2]
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AE4D8: .4byte gUnknown_2037F02
-_080AE4DC: .4byte gUnknown_83E60B8
-_080AE4E0: .4byte gSprites
-_080AE4E4: .4byte 0x000003ff
-_080AE4E8: .4byte 0xfffffc00
-_080AE4EC: .4byte gUnknown_2037EE2
-_080AE4F0: .4byte sub_80AE4F4
- thumb_func_end sub_80AE470
-
- thumb_func_start sub_80AE4F4
-sub_80AE4F4: @ 80AE4F4
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080AE528
- movs r0, 0
- strh r0, [r3, 0x2E]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
-_080AE528:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _080AE53C
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080AE53C:
- pop {r0}
- bx r0
- thumb_func_end sub_80AE4F4
-
- thumb_func_start sub_80AE540
-sub_80AE540: @ 80AE540
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080AE560 @ =gTasks
- adds r5, r1, r0
- ldr r0, _080AE564 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080AE56C
- ldr r4, _080AE568 @ =gUnknown_2037F1A
- b _080AE56E
- .align 2, 0
-_080AE560: .4byte gTasks
-_080AE564: .4byte gUnknown_2037F02
-_080AE568: .4byte gUnknown_2037F1A
-_080AE56C:
- ldr r4, _080AE5B0 @ =gUnknown_2037F1B
-_080AE56E:
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x24]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x26]
- ldr r2, _080AE5B4 @ =gUnknown_2037F02
- ldrh r0, [r2, 0x2]
- movs r1, 0
- strh r0, [r5, 0x14]
- strh r1, [r5, 0x16]
- strh r1, [r5, 0x18]
- strh r1, [r5, 0x1A]
- strh r1, [r5, 0x1C]
- ldrh r0, [r2, 0x6]
- strh r0, [r5, 0x1E]
- strh r1, [r5, 0x20]
- ldrh r0, [r2, 0x4]
- strh r0, [r5, 0x22]
- ldr r0, _080AE5B8 @ =sub_80AE5BC
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AE5B0: .4byte gUnknown_2037F1B
-_080AE5B4: .4byte gUnknown_2037F02
-_080AE5B8: .4byte sub_80AE5BC
- thumb_func_end sub_80AE540
-
- thumb_func_start sub_80AE5BC
-sub_80AE5BC: @ 80AE5BC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- adds r2, r6, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080AE6A4 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080AE6BC
- ldrh r0, [r5, 0x20]
- adds r0, 0x1
- movs r7, 0
- strh r0, [r5, 0x20]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x22
- ldrsh r1, [r5, r2]
- cmp r0, r1
- ble _080AE6CA
- strh r7, [r5, 0x20]
- ldr r0, _080AE6A8 @ =gUnknown_83E6120
- movs r3, 0x24
- ldrsh r1, [r5, r3]
- movs r3, 0x26
- ldrsh r2, [r5, r3]
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080AE6CA
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _080AE6AC @ =gSprites
- adds r4, r0
- ldr r1, _080AE6B0 @ =gUnknown_83E60D0
- movs r2, 0x1A
- ldrsh r0, [r5, r2]
- lsls r0, 1
- adds r0, r1
- movs r3, 0
- ldrsb r3, [r0, r3]
- ldrh r0, [r4, 0x20]
- adds r3, r0
- strh r3, [r4, 0x20]
- movs r2, 0x1A
- ldrsh r0, [r5, r2]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- movs r2, 0
- ldrsb r2, [r0, r2]
- ldrh r0, [r4, 0x22]
- adds r2, r0
- strh r2, [r4, 0x22]
- movs r1, 0x18
- ldrsh r0, [r5, r1]
- lsls r1, r0, 2
- adds r1, r0
- movs r0, 0x28
- subs r0, r1
- strh r0, [r4, 0x2E]
- strh r3, [r4, 0x30]
- ldrh r0, [r5, 0x24]
- strh r0, [r4, 0x32]
- strh r2, [r4, 0x34]
- ldrh r0, [r5, 0x26]
- strh r0, [r4, 0x36]
- strh r6, [r4, 0x38]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r1, _080AE6B4 @ =sub_80AE704
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080AE6B8 @ =sub_8074F6C
- str r0, [r4, 0x1C]
- ldrh r0, [r5, 0x1A]
- adds r0, 0x1
- strh r0, [r5, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _080AE674
- strh r7, [r5, 0x1A]
-_080AE674:
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x1E
- ldrsh r1, [r5, r2]
- cmp r0, r1
- blt _080AE696
- strh r7, [r5, 0x1C]
- ldrh r1, [r5, 0x18]
- movs r3, 0x18
- ldrsh r0, [r5, r3]
- cmp r0, 0x5
- bgt _080AE696
- adds r0, r1, 0x1
- strh r0, [r5, 0x18]
-_080AE696:
- ldrh r0, [r5, 0x16]
- adds r0, 0x1
- strh r0, [r5, 0x16]
- ldrh r0, [r5, 0x14]
- subs r0, 0x1
- strh r0, [r5, 0x14]
- b _080AE6CA
- .align 2, 0
-_080AE6A4: .4byte gTasks
-_080AE6A8: .4byte gUnknown_83E6120
-_080AE6AC: .4byte gSprites
-_080AE6B0: .4byte gUnknown_83E60D0
-_080AE6B4: .4byte sub_80AE704
-_080AE6B8: .4byte sub_8074F6C
-_080AE6BC:
- movs r1, 0x16
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080AE6CA
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080AE6CA:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80AE5BC
-
- thumb_func_start sub_80AE6D0
-sub_80AE6D0: @ 80AE6D0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080AE6F8
- ldr r2, _080AE700 @ =gTasks
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x16]
- subs r1, 0x1
- strh r1, [r0, 0x16]
- adds r0, r4, 0
- bl DestroySprite
-_080AE6F8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AE700: .4byte gTasks
- thumb_func_end sub_80AE6D0
-
- thumb_func_start sub_80AE704
-sub_80AE704: @ 80AE704
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r0, _080AE718 @ =sub_80AE6D0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AE718: .4byte sub_80AE6D0
- thumb_func_end sub_80AE704
-
- thumb_func_start sub_80AE71C
-sub_80AE71C: @ 80AE71C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080AE730 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080AE738
- ldr r4, _080AE734 @ =gUnknown_2037F1A
- b _080AE73A
- .align 2, 0
-_080AE730: .4byte gUnknown_2037F02
-_080AE734: .4byte gUnknown_2037F1A
-_080AE738:
- ldr r4, _080AE768 @ =gUnknown_2037F1B
-_080AE73A:
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r1, _080AE76C @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080AE770 @ =sub_8074F50
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AE768: .4byte gUnknown_2037F1B
-_080AE76C: .4byte move_anim_8074EE0
-_080AE770: .4byte sub_8074F50
- thumb_func_end sub_80AE71C
-
- thumb_func_start sub_80AE774
-sub_80AE774: @ 80AE774
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080AE788 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080AE790
- ldr r4, _080AE78C @ =gUnknown_2037F1A
- b _080AE792
- .align 2, 0
-_080AE788: .4byte gUnknown_2037F02
-_080AE78C: .4byte gUnknown_2037F1A
-_080AE790:
- ldr r4, _080AE7CC @ =gUnknown_2037F1B
-_080AE792:
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r1, _080AE7D0 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0x24]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x26]
- ldr r1, _080AE7D4 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080AE7D8 @ =sub_8074F6C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AE7CC: .4byte gUnknown_2037F1B
-_080AE7D0: .4byte gUnknown_2037F02
-_080AE7D4: .4byte DestroyAnimSprite
-_080AE7D8: .4byte sub_8074F6C
- thumb_func_end sub_80AE774
-
- thumb_func_start sub_80AE7DC
-sub_80AE7DC: @ 80AE7DC
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r4, _080AE834 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x3A]
- movs r0, 0x10
- strh r0, [r5, 0x3C]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080AE82A
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- negs r0, r0
- strh r0, [r5, 0x3C]
-_080AE82A:
- ldr r0, _080AE838 @ =sub_80AE83C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AE834: .4byte gUnknown_2037F1A
-_080AE838: .4byte sub_80AE83C
- thumb_func_end sub_80AE7DC
-
- thumb_func_start sub_80AE83C
-sub_80AE83C: @ 80AE83C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080AE84E
- cmp r0, 0x1
- beq _080AE864
- b _080AE894
-_080AE84E:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x28
- ble _080AE894
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080AE894
-_080AE864:
- ldrh r2, [r4, 0x3C]
- ldrh r1, [r4, 0x20]
- adds r0, r2, r1
- strh r0, [r4, 0x20]
- ldr r3, _080AE89C @ =gSprites
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x24]
- adds r2, r1
- strh r2, [r0, 0x24]
- ldrh r0, [r4, 0x20]
- adds r0, 0x50
- lsls r0, 16
- movs r1, 0xC8
- lsls r1, 17
- cmp r0, r1
- bls _080AE894
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080AE894:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AE89C: .4byte gSprites
- thumb_func_end sub_80AE83C
-
- thumb_func_start sub_80AE8A0
-sub_80AE8A0: @ 80AE8A0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, _080AE8C4 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080AE934
- cmp r0, 0x1
- bgt _080AE8C8
- cmp r0, 0
- beq _080AE8D4
- b _080AEA04
- .align 2, 0
-_080AE8C4: .4byte gTasks
-_080AE8C8:
- cmp r0, 0x2
- beq _080AE990
- cmp r0, 0x3
- bne _080AE8D2
- b _080AE9E4
-_080AE8D2:
- b _080AEA04
-_080AE8D4:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- strh r0, [r5, 0x26]
- ldr r4, _080AE908 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x24]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080AE910
- ldr r0, _080AE90C @ =0x0000ffe0
- strh r0, [r5, 0x24]
- movs r0, 0x2
- b _080AE916
- .align 2, 0
-_080AE908: .4byte gUnknown_2037F1A
-_080AE90C: .4byte 0x0000ffe0
-_080AE910:
- movs r0, 0x20
- strh r0, [r5, 0x24]
- ldr r0, _080AE92C @ =0x0000fffe
-_080AE916:
- strh r0, [r5, 0x22]
- ldr r2, _080AE930 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r5, 0x24]
- strh r1, [r0, 0x24]
- b _080AE9D6
- .align 2, 0
-_080AE92C: .4byte 0x0000fffe
-_080AE930: .4byte gSprites
-_080AE934:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080AEA04
- movs r0, 0
- strh r0, [r5, 0xA]
- ldr r4, _080AE98C @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r5, r1]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- adds r2, 0x3E
- ldrb r3, [r2]
- lsls r0, r3, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldrh r1, [r5, 0x24]
- movs r2, 0x24
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _080AE9D6
- ldrh r2, [r5, 0x22]
- adds r2, r1, r2
- strh r2, [r5, 0x24]
- movs r0, 0x26
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r2, [r0, 0x24]
- b _080AEA04
- .align 2, 0
-_080AE98C: .4byte gSprites
-_080AE990:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080AEA04
- movs r0, 0
- strh r0, [r5, 0xA]
- ldr r1, _080AE9E0 @ =gSprites
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- adds r2, 0x3E
- ldrb r3, [r2]
- lsls r0, r3, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r5, 0xC]
- adds r0, 0x1
- strh r0, [r5, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- bne _080AEA04
-_080AE9D6:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080AEA04
- .align 2, 0
-_080AE9E0: .4byte gSprites
-_080AE9E4:
- ldr r2, _080AEA0C @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_080AEA04:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AEA0C: .4byte gSprites
- thumb_func_end sub_80AE8A0
-
- thumb_func_start sub_80AEA10
-sub_80AEA10: @ 80AEA10
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080AEA34 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080AEA2A
- b _080AEB50
-_080AEA2A:
- cmp r0, 0x1
- bgt _080AEA38
- cmp r0, 0
- beq _080AEA40
- b _080AEB92
- .align 2, 0
-_080AEA34: .4byte gTasks
-_080AEA38:
- cmp r0, 0x2
- bne _080AEA3E
- b _080AEB84
-_080AEA3E:
- b _080AEB92
-_080AEA40:
- ldr r4, _080AEA80 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _080AEA56
- movs r1, 0x1
-_080AEA56:
- movs r6, 0
- strh r1, [r5, 0xA]
- ldr r0, _080AEA84 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r2, [r0, r1]
- adds r3, r0, 0
- cmp r2, 0
- beq _080AEA8C
- cmp r2, 0x4
- beq _080AEAB4
- ldrh r1, [r3]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080AEAEC
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r5, 0xE]
- ldr r0, _080AEA88 @ =0x0000fff0
- b _080AEAF4
- .align 2, 0
-_080AEA80: .4byte gUnknown_2037F1A
-_080AEA84: .4byte gUnknown_2037F02
-_080AEA88: .4byte 0x0000fff0
-_080AEA8C:
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xE]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x12]
- movs r2, 0xA
- ldrsh r0, [r5, r2]
- lsls r0, 7
- adds r0, 0x78
- strh r0, [r5, 0x10]
- b _080AEB2A
-_080AEAB4:
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r1, 7
- movs r0, 0x78
- subs r0, r1
- strh r0, [r5, 0xE]
- ldr r4, _080AEAE8 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x12]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0xA
- ldrsh r1, [r5, r2]
- lsls r1, 5
- subs r0, r1
- strh r0, [r5, 0x10]
- b _080AEB2A
- .align 2, 0
-_080AEAE8: .4byte gUnknown_2037F1B
-_080AEAEC:
- ldr r0, _080AEB10 @ =0x0000fff0
- strh r0, [r5, 0xE]
- movs r0, 0x80
- lsls r0, 1
-_080AEAF4:
- strh r0, [r5, 0x10]
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080AEB14
- movs r2, 0
- ldrsh r0, [r3, r2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 1
- movs r0, 0x50
- subs r0, r1
- strh r0, [r5, 0x12]
- b _080AEB2A
- .align 2, 0
-_080AEB10: .4byte 0x0000fff0
-_080AEB14:
- movs r0, 0
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- adds r0, 0x28
- strh r0, [r5, 0x12]
- ldrh r1, [r5, 0xE]
- ldrh r0, [r5, 0x10]
- strh r0, [r5, 0xE]
- strh r1, [r5, 0x10]
-_080AEB2A:
- movs r2, 0xE
- ldrsh r1, [r5, r2]
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bge _080AEB40
- movs r1, 0
- movs r0, 0x1
- strh r0, [r5, 0xA]
- strh r1, [r5, 0x14]
- b _080AEB7C
-_080AEB40:
- ldr r0, _080AEB4C @ =0x0000ffff
- strh r0, [r5, 0xA]
- movs r0, 0x3
- strh r0, [r5, 0x14]
- b _080AEB7C
- .align 2, 0
-_080AEB4C: .4byte 0x0000ffff
-_080AEB50:
- ldrh r0, [r5, 0xC]
- adds r0, 0x1
- strh r0, [r5, 0xC]
- lsls r0, 16
- cmp r0, 0
- ble _080AEB92
- movs r0, 0
- strh r0, [r5, 0xC]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80AEB98
- lsls r0, 24
- cmp r0, 0
- bne _080AEB7C
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80AEB98
- lsls r0, 24
- cmp r0, 0
- beq _080AEB92
-_080AEB7C:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080AEB92
-_080AEB84:
- movs r1, 0x16
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080AEB92
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080AEB92:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80AEA10
-
- thumb_func_start sub_80AEB98
-sub_80AEB98: @ 80AEB98
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _080AEC24 @ =gUnknown_83E6278
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- movs r3, 0x12
- ldrsh r2, [r4, r3]
- movs r3, 0x23
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080AEBCE
- ldr r1, _080AEC28 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- strh r5, [r0, 0x3A]
- movs r1, 0x7
- strh r1, [r0, 0x3C]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
-_080AEBCE:
- ldrh r1, [r4, 0xA]
- ldrh r5, [r4, 0x14]
- adds r0, r1, r5
- strh r0, [r4, 0x14]
- lsls r0, 16
- cmp r0, 0
- bge _080AEBE0
- movs r0, 0x3
- strh r0, [r4, 0x14]
-_080AEBE0:
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- ble _080AEBEC
- movs r0, 0
- strh r0, [r4, 0x14]
-_080AEBEC:
- movs r3, 0xA
- ldrsh r0, [r4, r3]
- lsls r0, 4
- ldrh r5, [r4, 0xE]
- adds r2, r0, r5
- strh r2, [r4, 0xE]
- lsls r0, r1, 16
- asrs r3, r0, 16
- cmp r3, 0x1
- bne _080AEC0C
- lsls r0, r2, 16
- asrs r0, 16
- movs r5, 0x10
- ldrsh r1, [r4, r5]
- cmp r0, r1
- bge _080AEC20
-_080AEC0C:
- movs r0, 0x1
- negs r0, r0
- cmp r3, r0
- bne _080AEC2C
- lsls r0, r2, 16
- asrs r0, 16
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bgt _080AEC2C
-_080AEC20:
- movs r0, 0x1
- b _080AEC2E
- .align 2, 0
-_080AEC24: .4byte gUnknown_83E6278
-_080AEC28: .4byte gSprites
-_080AEC2C:
- movs r0, 0
-_080AEC2E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80AEB98
-
- thumb_func_start sub_80AEC34
-sub_80AEC34: @ 80AEC34
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _080AEC74
- ldr r3, _080AEC7C @ =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080AEC74:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AEC7C: .4byte gTasks
- thumb_func_end sub_80AEC34
-
- thumb_func_start sub_80AEC80
-sub_80AEC80: @ 80AEC80
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080AEC92
- cmp r0, 0x1
- beq _080AECC4
- b _080AECD8
-_080AEC92:
- ldr r4, _080AECC0 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- adds r0, r5, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080AECD8
- .align 2, 0
-_080AECC0: .4byte gUnknown_2037F1A
-_080AECC4:
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080AECD8
- adds r0, r5, 0
- bl move_anim_8074EE0
-_080AECD8:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80AEC80
-
- thumb_func_start sub_80AECE0
-sub_80AECE0: @ 80AECE0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080AED04 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bls _080AECFA
- b _080AEE6C
-_080AECFA:
- lsls r0, 2
- ldr r1, _080AED08 @ =_080AED0C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080AED04: .4byte gTasks
-_080AED08: .4byte _080AED0C
- .align 2, 0
-_080AED0C:
- .4byte _080AED20
- .4byte _080AEDB0
- .4byte _080AEDEC
- .4byte _080AEE48
- .4byte _080AEE58
-_080AED20:
- ldr r4, _080AEDA4 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x14]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x16]
- movs r0, 0x4
- strh r0, [r5, 0x18]
- ldr r0, _080AEDA8 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x1C]
- movs r2, 0x1C
- ldrsh r0, [r5, r2]
- movs r2, 0x14
- ldrsh r1, [r5, r2]
- subs r0, r1
- movs r1, 0x5
- bl __divsi3
- strh r0, [r5, 0x1A]
- movs r0, 0x7
- strh r0, [r5, 0x10]
- ldr r0, _080AEDAC @ =0x0000ffff
- strh r0, [r5, 0x12]
- movs r0, 0xC
- strh r0, [r5, 0x1E]
- subs r0, 0x4C
- bl sub_8073A44
- lsls r0, 24
- asrs r0, 24
- strh r0, [r5, 0x20]
- movs r0, 0x3F
- bl sub_8073A44
- lsls r0, 24
- asrs r0, 24
- strh r0, [r5, 0x22]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x24]
- movs r1, 0x22
- ldrsh r0, [r5, r1]
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- subs r0, r1
- movs r1, 0x3
- bl __divsi3
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- b _080AEE6A
- .align 2, 0
-_080AEDA4: .4byte gUnknown_2037F1A
-_080AEDA8: .4byte gUnknown_2037F1B
-_080AEDAC: .4byte 0x0000ffff
-_080AEDB0:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- cmp r0, 0
- ble _080AEDE0
- movs r0, 0
- strh r0, [r5, 0xA]
- adds r0, r5, 0
- adds r1, r2, 0
- bl sub_80AEE74
- lsls r0, 24
- cmp r0, 0
- beq _080AEDE0
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- cmp r0, 0x5
- bne _080AEDDA
- movs r0, 0x3
- b _080AEDDE
-_080AEDDA:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
-_080AEDDE:
- strh r0, [r5, 0x8]
-_080AEDE0:
- ldrh r1, [r5, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _080AEE6C
- b _080AEE62
-_080AEDEC:
- ldrh r1, [r5, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _080AEDFA
- subs r0, r1, 0x1
- strh r0, [r5, 0x1E]
-_080AEDFA:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080AEE6C
- strh r3, [r5, 0xA]
- ldrh r1, [r5, 0xC]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _080AEE26
- movs r0, 0x4
- strh r0, [r5, 0x16]
- movs r0, 0x44
- strh r0, [r5, 0x18]
- strh r3, [r5, 0x10]
- strh r2, [r5, 0x12]
- b _080AEE36
-_080AEE26:
- movs r0, 0x44
- strh r0, [r5, 0x16]
- movs r0, 0x4
- strh r0, [r5, 0x18]
- movs r0, 0x7
- strh r0, [r5, 0x10]
- ldr r0, _080AEE44 @ =0x0000ffff
- strh r0, [r5, 0x12]
-_080AEE36:
- movs r1, 0x1E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080AEE68
- movs r0, 0x4
- b _080AEE6A
- .align 2, 0
-_080AEE44: .4byte 0x0000ffff
-_080AEE48:
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080AEE6C
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- b _080AEE6C
-_080AEE58:
- ldrh r1, [r5, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _080AEE68
-_080AEE62:
- subs r0, r1, 0x1
- strh r0, [r5, 0x1E]
- b _080AEE6C
-_080AEE68:
- movs r0, 0x1
-_080AEE6A:
- strh r0, [r5, 0x8]
-_080AEE6C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80AECE0
-
- thumb_func_start sub_80AEE74
-sub_80AEE74: @ 80AEE74
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _080AEF3C @ =gUnknown_83E62A8
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- movs r3, 0x16
- ldrsh r2, [r4, r3]
- movs r3, 0x23
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080AEEE0
- ldr r1, _080AEF40 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r3, r0, r1
- ldrh r2, [r3, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- ldrh r6, [r4, 0x10]
- adds r1, r6
- ldr r6, _080AEF44 @ =0x000003ff
- adds r0, r6, 0
- ands r1, r0
- ldr r0, _080AEF48 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0x10]
- adds r0, r1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bge _080AEEC8
- movs r0, 0x7
- strh r0, [r4, 0x10]
-_080AEEC8:
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0x7
- ble _080AEED4
- movs r0, 0
- strh r0, [r4, 0x10]
-_080AEED4:
- strh r5, [r3, 0x3A]
- movs r0, 0x3
- strh r0, [r3, 0x3C]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
-_080AEEE0:
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _080AEF02
- movs r5, 0x12
- ldrsh r0, [r4, r5]
- cmp r0, 0
- ble _080AEF02
- ldrh r1, [r4, 0x26]
- ldrh r6, [r4, 0x24]
- adds r1, r6
- strh r1, [r4, 0x24]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x6F
- bl PlaySE12WithPanning
-_080AEF02:
- movs r0, 0x12
- ldrsh r3, [r4, r0]
- ldrh r2, [r4, 0x16]
- cmp r3, 0
- bge _080AEF18
- lsls r0, r2, 16
- asrs r0, 16
- movs r5, 0x18
- ldrsh r1, [r4, r5]
- cmp r0, r1
- ble _080AEF28
-_080AEF18:
- cmp r3, 0
- ble _080AEF4C
- lsls r0, r2, 16
- asrs r0, 16
- movs r6, 0x18
- ldrsh r1, [r4, r6]
- cmp r0, r1
- blt _080AEF4C
-_080AEF28:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x1A]
- ldrh r1, [r4, 0x14]
- adds r0, r1
- strh r0, [r4, 0x14]
- movs r0, 0x1
- b _080AEF58
- .align 2, 0
-_080AEF3C: .4byte gUnknown_83E62A8
-_080AEF40: .4byte gSprites
-_080AEF44: .4byte 0x000003ff
-_080AEF48: .4byte 0xfffffc00
-_080AEF4C:
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- lsls r0, 3
- adds r0, r2, r0
- strh r0, [r4, 0x16]
- movs r0, 0
-_080AEF58:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80AEE74
-
- thumb_func_start sub_80AEF60
-sub_80AEF60: @ 80AEF60
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _080AEF96
- ldr r3, _080AEF9C @ =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_080AEF96:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AEF9C: .4byte gTasks
- thumb_func_end sub_80AEF60
-
- thumb_func_start sub_80AEFA0
-sub_80AEFA0: @ 80AEFA0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080AEFC4 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080AF01C
- cmp r0, 0x1
- bgt _080AEFC8
- cmp r0, 0
- beq _080AEFCE
- b _080AF052
- .align 2, 0
-_080AEFC4: .4byte gTasks
-_080AEFC8:
- cmp r0, 0x2
- beq _080AF044
- b _080AF052
-_080AEFCE:
- ldr r0, _080AF018 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x20
- strh r0, [r5, 0x26]
- strh r0, [r5, 0x24]
- cmp r0, 0x10
- ble _080AEFF8
- adds r2, r0, 0
-_080AEFE8:
- adds r1, r2, 0
- subs r1, 0x20
- adds r2, r1, 0
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x10
- bgt _080AEFE8
- strh r1, [r5, 0x24]
-_080AEFF8:
- ldr r4, _080AF018 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl sub_807685C
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x2
- strh r0, [r5, 0x20]
- b _080AF03C
- .align 2, 0
-_080AF018: .4byte gUnknown_2037F1B
-_080AF01C:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080AF052
- movs r0, 0
- strh r0, [r5, 0xA]
- adds r0, r5, 0
- adds r1, r2, 0
- bl sub_80AF058
- lsls r0, 24
- cmp r0, 0
- beq _080AF052
-_080AF03C:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080AF052
-_080AF044:
- movs r1, 0x1C
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080AF052
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080AF052:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80AEFA0
-
- thumb_func_start sub_80AF058
-sub_80AF058: @ 80AF058
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _080AF0B4 @ =gUnknown_83E5F38
- movs r2, 0x22
- ldrsh r1, [r4, r2]
- movs r3, 0x24
- ldrsh r2, [r4, r3]
- ldrh r3, [r4, 0x20]
- lsls r3, 24
- lsrs r3, 24
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080AF09C
- ldr r3, _080AF0B8 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x1C
- adds r1, r0, r1
- ldr r2, _080AF0BC @ =sub_80AF0C8
- str r2, [r1]
- adds r0, r3
- strh r5, [r0, 0x3A]
- movs r1, 0xA
- strh r1, [r0, 0x3C]
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
-_080AF09C:
- ldrh r2, [r4, 0x24]
- movs r0, 0x24
- ldrsh r1, [r4, r0]
- movs r3, 0x26
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bge _080AF0C0
- adds r0, r2, 0
- adds r0, 0x20
- strh r0, [r4, 0x24]
- movs r0, 0
- b _080AF0C2
- .align 2, 0
-_080AF0B4: .4byte gUnknown_83E5F38
-_080AF0B8: .4byte gSprites
-_080AF0BC: .4byte sub_80AF0C8
-_080AF0C0:
- movs r0, 0x1
-_080AF0C2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80AF058
-
- thumb_func_start sub_80AF0C8
-sub_80AF0C8: @ 80AF0C8
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080AF0FC
- ldr r3, _080AF104 @ =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_080AF0FC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF104: .4byte gTasks
- thumb_func_end sub_80AF0C8
-
- thumb_func_start sub_80AF108
-sub_80AF108: @ 80AF108
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x7
- ldr r3, _080AF210 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080AF214 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- ldr r4, _080AF218 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r4, _080AF21C @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r3, r0, 24
- ldrb r0, [r4]
- movs r1, 0x3
- str r3, [sp]
- bl sub_8074480
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080AF220 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x8]
- strh r0, [r5, 0x2E]
- ldrh r0, [r1]
- ldr r3, [sp]
- adds r0, r3
- strh r0, [r5, 0x30]
- ldrh r0, [r1, 0x4]
- mov r4, r9
- adds r0, r4, r0
- strh r0, [r5, 0x32]
- ldrh r0, [r1, 0x2]
- adds r0, r6
- strh r0, [r5, 0x34]
- ldrh r0, [r1, 0x6]
- mov r7, r8
- adds r0, r7, r0
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl sub_8074C80
- adds r4, 0x20
- movs r0, 0x98
- lsls r0, 1
- mov r12, r0
- ldr r3, [sp]
- cmp r4, r12
- bhi _080AF1E2
- adds r0, r7, 0
- adds r0, 0x20
- ldrh r1, [r5, 0x30]
- ldrh r2, [r5, 0x32]
- cmp r0, 0xE0
- bhi _080AF1E2
- adds r4, r1, 0
- mov r10, r12
-_080AF1AE:
- mov r7, r9
- lsls r1, r7, 16
- asrs r1, 16
- adds r1, r4
- lsls r1, 16
- mov r7, r8
- lsls r0, r7, 16
- asrs r0, 16
- adds r0, r2
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsrs r0, r1, 16
- mov r9, r0
- movs r7, 0x80
- lsls r7, 14
- adds r1, r7
- lsrs r1, 16
- cmp r1, r10
- bhi _080AF1E2
- mov r1, r8
- lsls r0, r1, 16
- adds r0, r7
- lsrs r0, 16
- cmp r0, 0xE0
- bls _080AF1AE
-_080AF1E2:
- ldrh r0, [r5, 0x30]
- negs r7, r0
- strh r7, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- negs r4, r0
- strh r4, [r5, 0x32]
- lsls r0, r3, 16
- movs r1, 0x80
- lsls r1, 14
- adds r0, r1
- lsrs r0, 16
- movs r2, 0x98
- lsls r2, 1
- mov r12, r2
- ldr r1, _080AF220 @ =gUnknown_2037F02
- mov r10, r1
- cmp r0, r12
- bhi _080AF24E
- lsls r1, r6, 16
- movs r2, 0x80
- lsls r2, 14
- adds r0, r1, r2
- b _080AF246
- .align 2, 0
-_080AF210: .4byte 0x000003ff
-_080AF214: .4byte 0xfffffc00
-_080AF218: .4byte gUnknown_2037F1B
-_080AF21C: .4byte gUnknown_2037F1A
-_080AF220: .4byte gUnknown_2037F02
-_080AF224:
- lsls r1, r3, 16
- asrs r1, 16
- adds r1, r7
- lsls r1, 16
- asrs r0, r2, 16
- adds r0, r4
- lsls r0, 16
- lsrs r6, r0, 16
- lsrs r3, r1, 16
- movs r0, 0x80
- lsls r0, 14
- adds r1, r0
- lsrs r1, 16
- cmp r1, r12
- bhi _080AF24E
- lsls r1, r6, 16
- adds r0, r1, r0
-_080AF246:
- lsrs r0, 16
- adds r2, r1, 0
- cmp r0, 0xE0
- bls _080AF224
-_080AF24E:
- strh r3, [r5, 0x20]
- strh r6, [r5, 0x22]
- mov r1, r10
- ldrh r0, [r1, 0x8]
- strh r0, [r5, 0x2E]
- strh r3, [r5, 0x30]
- mov r2, r9
- strh r2, [r5, 0x32]
- strh r6, [r5, 0x34]
- mov r3, r8
- strh r3, [r5, 0x36]
- adds r0, r5, 0
- bl sub_8074C80
- mov r7, r10
- ldrh r0, [r7, 0xA]
- strh r0, [r5, 0x34]
- ldrh r0, [r7, 0xC]
- strh r0, [r5, 0x36]
- ldr r0, _080AF288 @ =sub_80AF28C
- str r0, [r5, 0x1C]
- 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
-_080AF288: .4byte sub_80AF28C
- thumb_func_end sub_80AF108
-
- thumb_func_start sub_80AF28C
-sub_80AF28C: @ 80AF28C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080AF2E4
- ldrh r1, [r4, 0x30]
- ldrh r2, [r4, 0x38]
- adds r1, r2
- strh r1, [r4, 0x38]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x3A]
- adds r0, r2
- strh r0, [r4, 0x3A]
- strh r1, [r4, 0x24]
- strh r0, [r4, 0x26]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x36]
- ldrh r2, [r4, 0x3C]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3C]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- b _080AF2EA
-_080AF2E4:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AF2EA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AF28C
-
- thumb_func_start sub_80AF2F0
-sub_80AF2F0: @ 80AF2F0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080AF324 @ =gUnknown_2037F02
- ldrh r0, [r0]
- strh r0, [r4, 0x2E]
- movs r0, 0x3C
- strh r0, [r4, 0x30]
- movs r0, 0x9
- strh r0, [r4, 0x32]
- movs r0, 0x1E
- strh r0, [r4, 0x34]
- movs r0, 0xFE
- lsls r0, 8
- strh r0, [r4, 0x36]
- ldr r1, _080AF328 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r1, _080AF32C @ =sub_8074AE0
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF324: .4byte gUnknown_2037F02
-_080AF328: .4byte DestroyAnimSprite
-_080AF32C: .4byte sub_8074AE0
- thumb_func_end sub_80AF2F0
-
- thumb_func_start sub_80AF330
-sub_80AF330: @ 80AF330
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080AF364 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldr r0, _080AF368 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AF370
- ldr r0, _080AF36C @ =gUnknown_2037F02
- ldrh r1, [r4, 0x32]
- ldrh r0, [r0, 0x4]
- subs r1, r0
- strh r1, [r4, 0x32]
- b _080AF37A
- .align 2, 0
-_080AF364: .4byte gUnknown_2037F1B
-_080AF368: .4byte gUnknown_2037F1A
-_080AF36C: .4byte gUnknown_2037F02
-_080AF370:
- ldr r0, _080AF3A8 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
-_080AF37A:
- ldr r0, _080AF3AC @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- ldr r1, _080AF3A8 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r2, [r1, 0x6]
- adds r0, r2
- strh r0, [r4, 0x36]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x2E]
- ldr r1, _080AF3B0 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080AF3B4 @ =sub_8075590
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF3A8: .4byte gUnknown_2037F02
-_080AF3AC: .4byte gUnknown_2037F1B
-_080AF3B0: .4byte DestroyAnimSprite
-_080AF3B4: .4byte sub_8075590
- thumb_func_end sub_80AF330
-
- thumb_func_start sub_80AF3B8
-sub_80AF3B8: @ 80AF3B8
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080AF3D0 @ =gUnknown_2037F02
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080AF3D4
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075114
- b _080AF40A
- .align 2, 0
-_080AF3D0: .4byte gUnknown_2037F02
-_080AF3D4:
- ldr r0, _080AF41C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- movs r1, 0x1
- bl sub_8076D9C
- ldr r0, _080AF420 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AF3FA
- ldrh r0, [r5]
- negs r0, r0
- strh r0, [r5]
-_080AF3FA:
- 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]
-_080AF40A:
- ldr r1, _080AF424 @ =sub_80AF42C
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080AF428 @ =sub_8074F50
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF41C: .4byte gUnknown_2037F1B
-_080AF420: .4byte gUnknown_2037F1A
-_080AF424: .4byte sub_80AF42C
-_080AF428: .4byte sub_8074F50
- thumb_func_end sub_80AF3B8
-
- thumb_func_start sub_80AF42C
-sub_80AF42C: @ 80AF42C
- push {lr}
- adds r3, r0, 0
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- bne _080AF462
- adds r0, r3, 0
- bl move_anim_8074EE0
-_080AF462:
- pop {r0}
- bx r0
- thumb_func_end sub_80AF42C
-
- thumb_func_start sub_80AF468
-sub_80AF468: @ 80AF468
- push {r4-r7,lr}
- sub sp, 0x10
- adds r5, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r6, _080AF4B0 @ =gUnknown_2037F02
- ldrh r0, [r6, 0x8]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- movs r1, 0xA
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080AF4B8
- ldr r4, _080AF4B4 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x6]
- adds r0, r6
- strh r0, [r5, 0x36]
- b _080AF4CA
- .align 2, 0
-_080AF4B0: .4byte gUnknown_2037F02
-_080AF4B4: .4byte gUnknown_2037F1B
-_080AF4B8:
- ldr r0, _080AF4E4 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x32
- adds r3, r5, 0
- adds r3, 0x36
- movs r1, 0x1
- bl sub_8076D9C
-_080AF4CA:
- ldr r0, _080AF4E8 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AF4F0
- ldr r0, _080AF4EC @ =gUnknown_2037F02
- ldrh r1, [r5, 0x32]
- ldrh r0, [r0, 0x4]
- subs r1, r0
- strh r1, [r5, 0x32]
- b _080AF4FA
- .align 2, 0
-_080AF4E4: .4byte gUnknown_2037F1B
-_080AF4E8: .4byte gUnknown_2037F1A
-_080AF4EC: .4byte gUnknown_2037F02
-_080AF4F0:
- ldr r0, _080AF598 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- ldrh r2, [r5, 0x32]
- adds r0, r2
- strh r0, [r5, 0x32]
-_080AF4FA:
- adds r7, r5, 0
- adds r7, 0x2E
- adds r2, r7, 0
- mov r1, sp
- movs r4, 0x7
-_080AF504:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080AF504
- adds r0, r5, 0
- bl sub_8075804
- ldrh r0, [r5, 0x30]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- eors r0, r1
- strh r0, [r5, 0x32]
-_080AF526:
- movs r0, 0x1
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- bl sub_807578C
- movs r0, 0x20
- ldrsh r1, [r5, r0]
- movs r2, 0x24
- ldrsh r0, [r5, r2]
- adds r1, r0
- adds r1, 0x10
- movs r0, 0x88
- lsls r0, 1
- cmp r1, r0
- bhi _080AF55A
- movs r0, 0x22
- ldrsh r1, [r5, r0]
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- adds r1, r0
- cmp r1, 0xA0
- bgt _080AF55A
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- bge _080AF526
-_080AF55A:
- ldrh r0, [r5, 0x24]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x26]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- strh r1, [r5, 0x26]
- strh r1, [r5, 0x24]
- ldr r6, _080AF59C @ =sub_8075830
- ldr r1, _080AF5A0 @ =sub_80AF5A4
- mov r3, sp
- adds r2, r7, 0
- movs r4, 0x7
-_080AF57A:
- ldrh r0, [r3]
- strh r0, [r2]
- adds r3, 0x2
- adds r2, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080AF57A
- str r6, [r5, 0x1C]
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF598: .4byte gUnknown_2037F02
-_080AF59C: .4byte sub_8075830
-_080AF5A0: .4byte sub_80AF5A4
- thumb_func_end sub_80AF468
-
- thumb_func_start sub_80AF5A4
-sub_80AF5A4: @ 80AF5A4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- movs r5, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x26]
- strh r5, [r4, 0x24]
- movs r0, 0x80
- strh r0, [r4, 0x2E]
- ldr r0, _080AF600 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- ldr r1, _080AF604 @ =0x0000ffec
- cmp r0, 0
- beq _080AF5D4
- movs r1, 0x14
-_080AF5D4:
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- lsls r1, 16
- asrs r1, 16
- bl Sin
- strh r0, [r4, 0x34]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0xF
- bl Cos
- strh r0, [r4, 0x36]
- strh r5, [r4, 0x38]
- ldr r1, _080AF608 @ =sub_80AF60C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF600: .4byte gUnknown_2037F1A
-_080AF604: .4byte 0x0000ffec
-_080AF608: .4byte sub_80AF60C
- thumb_func_end sub_80AF5A4
-
- thumb_func_start sub_80AF60C
-sub_80AF60C: @ 80AF60C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080AF660 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- ldr r1, _080AF664 @ =0x0000ffec
- cmp r0, 0
- beq _080AF622
- movs r1, 0x14
-_080AF622:
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmp r0, 0x1F
- bgt _080AF668
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- lsls r1, 16
- asrs r1, 16
- bl Sin
- ldrh r1, [r4, 0x34]
- subs r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0xF
- bl Cos
- ldrh r1, [r4, 0x36]
- subs r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x10
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- b _080AF686
- .align 2, 0
-_080AF660: .4byte gUnknown_2037F1A
-_080AF664: .4byte 0x0000ffec
-_080AF668:
- ldrh r0, [r4, 0x24]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x26]
- strh r1, [r4, 0x24]
- strh r1, [r4, 0x36]
- strh r1, [r4, 0x34]
- ldr r0, _080AF68C @ =sub_80AF690
- str r0, [r4, 0x1C]
-_080AF686:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF68C: .4byte sub_80AF690
- thumb_func_end sub_80AF60C
-
- thumb_func_start sub_80AF690
-sub_80AF690: @ 80AF690
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl sub_807578C
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- adds r0, r1
- adds r0, 0x10
- movs r1, 0x88
- lsls r1, 1
- cmp r0, r1
- bhi _080AF6CC
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r1, r0, r1
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- bgt _080AF6CC
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- bge _080AF6D2
-_080AF6CC:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AF6D2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AF690
-
- thumb_func_start sub_80AF6D8
-sub_80AF6D8: @ 80AF6D8
- push {r4-r7,lr}
- sub sp, 0x10
- adds r5, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r1, _080AF71C @ =gUnknown_2037F02
- ldrh r0, [r1, 0x8]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080AF724
- ldr r4, _080AF720 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- b _080AF736
- .align 2, 0
-_080AF71C: .4byte gUnknown_2037F02
-_080AF720: .4byte gUnknown_2037F1B
-_080AF724:
- ldr r0, _080AF754 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x32
- adds r3, r5, 0
- adds r3, 0x36
- movs r1, 0x1
- bl sub_8076D9C
-_080AF736:
- ldr r0, _080AF758 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AF760
- ldr r0, _080AF75C @ =gUnknown_2037F02
- ldrh r1, [r5, 0x32]
- ldrh r2, [r0, 0x4]
- subs r1, r2
- strh r1, [r5, 0x32]
- adds r1, r0, 0
- b _080AF76A
- .align 2, 0
-_080AF754: .4byte gUnknown_2037F1B
-_080AF758: .4byte gUnknown_2037F1A
-_080AF75C: .4byte gUnknown_2037F02
-_080AF760:
- ldr r1, _080AF814 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- ldrh r2, [r5, 0x32]
- adds r0, r2
- strh r0, [r5, 0x32]
-_080AF76A:
- ldrh r0, [r1, 0x6]
- ldrh r1, [r5, 0x36]
- adds r0, r1
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl sub_8075804
- adds r7, r5, 0
- adds r7, 0x2E
- adds r2, r7, 0
- mov r1, sp
- movs r4, 0x7
-_080AF782:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080AF782
- ldrh r0, [r5, 0x30]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- eors r0, r1
- strh r0, [r5, 0x32]
-_080AF79E:
- movs r0, 0x1
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- bl sub_807578C
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- movs r2, 0x24
- ldrsh r0, [r5, r2]
- adds r1, r0
- adds r1, 0x10
- movs r0, 0x88
- lsls r0, 1
- cmp r1, r0
- bhi _080AF7D2
- movs r0, 0x22
- ldrsh r1, [r5, r0]
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- adds r1, r0
- cmp r1, 0xA0
- bgt _080AF7D2
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- bge _080AF79E
-_080AF7D2:
- ldrh r0, [r5, 0x24]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x26]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- strh r1, [r5, 0x26]
- strh r1, [r5, 0x24]
- ldr r1, _080AF814 @ =gUnknown_2037F02
- ldr r6, _080AF818 @ =sub_80AF81C
- mov r3, sp
- adds r2, r7, 0
- movs r4, 0x7
-_080AF7F2:
- ldrh r0, [r3]
- strh r0, [r2]
- adds r3, 0x2
- adds r2, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080AF7F2
- ldrh r0, [r1, 0xA]
- strh r0, [r5, 0x38]
- ldrh r0, [r1, 0xC]
- strh r0, [r5, 0x3A]
- str r6, [r5, 0x1C]
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AF814: .4byte gUnknown_2037F02
-_080AF818: .4byte sub_80AF81C
- thumb_func_end sub_80AF6D8
-
- thumb_func_start sub_80AF81C
-sub_80AF81C: @ 80AF81C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_807578C
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AF830
- movs r0, 0x1
- strh r0, [r4, 0x2E]
-_080AF830:
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- 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
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3C]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080AF886
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- adds r0, r1
- adds r0, 0x10
- movs r1, 0x88
- lsls r1, 1
- cmp r0, r1
- bhi _080AF880
- movs r0, 0x22
- ldrsh r1, [r4, r0]
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- adds r1, r0
- cmp r1, 0xA0
- bgt _080AF880
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- bge _080AF886
-_080AF880:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AF886:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AF81C
-
- thumb_func_start sub_80AF88C
-sub_80AF88C: @ 80AF88C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080AF8F8
- ldr r5, _080AF8AC @ =gUnknown_2037F02
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080AF8B0
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075114
- b _080AF8E6
- .align 2, 0
-_080AF8AC: .4byte gUnknown_2037F02
-_080AF8B0:
- ldr r0, _080AF8F0 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- movs r1, 0
- bl sub_8076D9C
- ldr r0, _080AF8F4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AF8D6
- ldrh r0, [r5]
- negs r0, r0
- strh r0, [r5]
-_080AF8D6:
- 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]
-_080AF8E6:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080AF90C
- .align 2, 0
-_080AF8F0: .4byte gUnknown_2037F1B
-_080AF8F4: .4byte gUnknown_2037F1A
-_080AF8F8:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080AF90C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AF90C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80AF88C
-
- thumb_func_start sub_80AF914
-sub_80AF914: @ 80AF914
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080AF934 @ =gUnknown_2037F02
- movs r1, 0x8
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080AF984
- movs r1, 0xA
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080AF938
- adds r0, r5, 0
- movs r1, 0
- bl sub_8075160
- b _080AF976
- .align 2, 0
-_080AF934: .4byte gUnknown_2037F02
-_080AF938:
- ldr r4, _080AF960 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- adds r2, r5, 0
- adds r2, 0x20
- adds r3, r5, 0
- adds r3, 0x22
- movs r1, 0
- bl sub_8076D9C
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AF964
- ldrh r0, [r5, 0x20]
- ldrh r1, [r6]
- subs r0, r1
- b _080AF96A
- .align 2, 0
-_080AF960: .4byte gUnknown_2037F1A
-_080AF964:
- ldrh r0, [r6]
- ldrh r1, [r5, 0x20]
- adds r0, r1
-_080AF96A:
- strh r0, [r5, 0x20]
- ldr r0, _080AF97C @ =gUnknown_2037F02
- ldrh r0, [r0, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
-_080AF976:
- ldr r0, _080AF980 @ =gUnknown_2037F1A
- b _080AF9D4
- .align 2, 0
-_080AF97C: .4byte gUnknown_2037F02
-_080AF980: .4byte gUnknown_2037F1A
-_080AF984:
- movs r1, 0xA
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080AF996
- adds r0, r5, 0
- movs r1, 0
- bl sub_8075114
- b _080AF9D2
-_080AF996:
- ldr r4, _080AF9BC @ =gUnknown_2037F1B
- ldrb r0, [r4]
- adds r2, r5, 0
- adds r2, 0x20
- adds r3, r5, 0
- adds r3, 0x22
- movs r1, 0
- bl sub_8076D9C
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080AF9C0
- ldrh r0, [r5, 0x20]
- ldrh r1, [r6]
- subs r0, r1
- b _080AF9C6
- .align 2, 0
-_080AF9BC: .4byte gUnknown_2037F1B
-_080AF9C0:
- ldrh r0, [r6]
- ldrh r1, [r5, 0x20]
- adds r0, r1
-_080AF9C6:
- strh r0, [r5, 0x20]
- ldr r0, _080AF9F0 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
-_080AF9D2:
- ldr r0, _080AF9F4 @ =gUnknown_2037F1B
-_080AF9D4:
- ldrb r0, [r0]
- strh r0, [r5, 0x3C]
- ldr r0, _080AF9F0 @ =gUnknown_2037F02
- movs r1, 0xA
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080AF9EC
- bl sub_8075290
- lsls r0, 24
- cmp r0, 0
- bne _080AF9F8
-_080AF9EC:
- movs r0, 0x20
- b _080AF9FA
- .align 2, 0
-_080AF9F0: .4byte gUnknown_2037F02
-_080AF9F4: .4byte gUnknown_2037F1B
-_080AF9F8:
- movs r0, 0x40
-_080AF9FA:
- strh r0, [r5, 0x3A]
- ldr r0, _080AFA40 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080AFA10
- ldrh r0, [r5, 0x22]
- adds r0, 0x8
- strh r0, [r5, 0x22]
-_080AFA10:
- ldr r1, _080AFA44 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x6]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrh r1, [r1, 0x4]
- adds r0, r1
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
- movs r0, 0x40
- strh r0, [r5, 0x38]
- ldr r1, _080AFA48 @ =sub_80AFA4C
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AFA40: .4byte gUnknown_2037F1B
-_080AFA44: .4byte gUnknown_2037F02
-_080AFA48: .4byte sub_80AFA4C
- thumb_func_end sub_80AF914
-
- thumb_func_start sub_80AFA4C
-sub_80AFA4C: @ 80AFA4C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- bne _080AFAD6
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x3A
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- movs r1, 0x6
- negs r1, r1
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x7F
- bhi _080AFAA8
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8076884
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- b _080AFACA
-_080AFAA8:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x5]
-_080AFACA:
- ldrh r0, [r4, 0x38]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- b _080AFADC
-_080AFAD6:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080AFADC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AFA4C
-
- thumb_func_start sub_80AFAE4
-sub_80AFAE4: @ 80AFAE4
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080AFBA0 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080AFB26
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080AFB26:
- ldr r0, _080AFBA4 @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r4, _080AFBA8 @ =gBattle_BG1_Y
- strh r1, [r4]
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x16
- bl SetGpuReg
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080AFBAC @ =gUnknown_83C3540
- movs r2, 0x80
- lsls r2, 4
- mov r3, sp
- ldrh r3, [r3, 0xA]
- bl LoadBgTiles
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080AFBB0 @ =gFile_graphics_battle_anims_backgrounds_fog_tilemap
- bl sub_807543C
- ldr r0, _080AFBB4 @ =gUnknown_83C2CE0
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadPalette
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080AFB88
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
-_080AFB88:
- ldr r0, _080AFBB8 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080AFBBC @ =sub_80AFBC0
- str r0, [r1]
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AFBA0: .4byte 0x00003f42
-_080AFBA4: .4byte gBattle_BG1_X
-_080AFBA8: .4byte gBattle_BG1_Y
-_080AFBAC: .4byte gUnknown_83C3540
-_080AFBB0: .4byte gFile_graphics_battle_anims_backgrounds_fog_tilemap
-_080AFBB4: .4byte gUnknown_83C2CE0
-_080AFBB8: .4byte gTasks
-_080AFBBC: .4byte sub_80AFBC0
- thumb_func_end sub_80AFAE4
-
- thumb_func_start sub_80AFBC0
-sub_80AFBC0: @ 80AFBC0
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080AFBF4 @ =gBattle_BG1_X
- ldr r2, _080AFBF8 @ =0x0000ffff
- adds r0, r2, 0
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- ldr r1, _080AFBFC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x20
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0x4
- bls _080AFBEA
- b _080AFD36
-_080AFBEA:
- lsls r0, 2
- ldr r1, _080AFC00 @ =_080AFC04
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080AFBF4: .4byte gBattle_BG1_X
-_080AFBF8: .4byte 0x0000ffff
-_080AFBFC: .4byte gTasks
-_080AFC00: .4byte _080AFC04
- .align 2, 0
-_080AFC04:
- .4byte _080AFC18
- .4byte _080AFC70
- .4byte _080AFC92
- .4byte _080AFCD6
- .4byte _080AFCF8
-_080AFC18:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- beq _080AFC32
- b _080AFD36
-_080AFC32:
- strh r5, [r4, 0x1C]
- ldrh r0, [r4, 0x1A]
- adds r0, 0x1
- strh r0, [r4, 0x1A]
- ldr r1, _080AFC6C @ =gUnknown_83E64D4
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- adds r0, r1
- ldrb r1, [r0]
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0x9
- bne _080AFD36
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r5, [r4, 0x1E]
- b _080AFD36
- .align 2, 0
-_080AFC6C: .4byte gUnknown_83E64D4
-_080AFC70:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r2
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- strh r0, [r1, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x51
- bne _080AFD36
- movs r0, 0x9
- strh r0, [r1, 0x1E]
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- b _080AFD36
-_080AFC92:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080AFD36
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- subs r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _080AFD36
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r1, [r4, 0x1E]
- b _080AFD36
-_080AFCD6:
- mov r0, sp
- bl sub_80752A0
- movs r0, 0x1
- bl sub_8075358
- movs r0, 0x2
- bl sub_8075358
- ldr r0, _080AFD40 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
-_080AFCF8:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080AFD0C
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080AFD0C:
- ldr r0, _080AFD44 @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080AFD48 @ =gBattle_BG1_Y
- strh r1, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080AFD36:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AFD40: .4byte gTasks
-_080AFD44: .4byte gBattle_BG1_X
-_080AFD48: .4byte gBattle_BG1_Y
- thumb_func_end sub_80AFBC0
-
- thumb_func_start sub_80AFD4C
-sub_80AFD4C: @ 80AFD4C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080AFD78 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r0, _080AFD7C @ =sub_8075DF4
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AFD78: .4byte gUnknown_2037F1A
-_080AFD7C: .4byte sub_8075DF4
- thumb_func_end sub_80AFD4C
-
- thumb_func_start sub_80AFD80
-sub_80AFD80: @ 80AFD80
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080AFE40 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080AFDC2
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080AFDC2:
- ldr r0, _080AFE44 @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r4, _080AFE48 @ =gBattle_BG1_Y
- strh r1, [r4]
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x16
- bl SetGpuReg
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080AFE4C @ =gUnknown_83C3540
- movs r2, 0x80
- lsls r2, 4
- mov r3, sp
- ldrh r3, [r3, 0xA]
- bl LoadBgTiles
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080AFE50 @ =gFile_graphics_battle_anims_backgrounds_fog_tilemap
- bl sub_807543C
- ldr r0, _080AFE54 @ =gUnknown_83C2CE0
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadPalette
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080AFE24
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
-_080AFE24:
- ldr r1, _080AFE58 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080AFE5C @ =0x0000ffff
- strh r1, [r0, 0x26]
- ldr r1, _080AFE60 @ =sub_80AFE64
- str r1, [r0]
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AFE40: .4byte 0x00003f42
-_080AFE44: .4byte gBattle_BG1_X
-_080AFE48: .4byte gBattle_BG1_Y
-_080AFE4C: .4byte gUnknown_83C3540
-_080AFE50: .4byte gFile_graphics_battle_anims_backgrounds_fog_tilemap
-_080AFE54: .4byte gUnknown_83C2CE0
-_080AFE58: .4byte gTasks
-_080AFE5C: .4byte 0x0000ffff
-_080AFE60: .4byte sub_80AFE64
- thumb_func_end sub_80AFD80
-
- thumb_func_start sub_80AFE64
-sub_80AFE64: @ 80AFE64
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _080AFE94 @ =gBattle_BG1_X
- ldr r3, _080AFE98 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r3
- ldrh r0, [r1, 0x26]
- ldrh r5, [r2]
- adds r0, r5
- strh r0, [r2]
- movs r2, 0x20
- ldrsh r0, [r1, r2]
- cmp r0, 0x4
- bls _080AFE8A
- b _080AFFBE
-_080AFE8A:
- lsls r0, 2
- ldr r1, _080AFE9C @ =_080AFEA0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080AFE94: .4byte gBattle_BG1_X
-_080AFE98: .4byte gTasks
-_080AFE9C: .4byte _080AFEA0
- .align 2, 0
-_080AFEA0:
- .4byte _080AFEB4
- .4byte _080AFEF8
- .4byte _080AFF1A
- .4byte _080AFF5E
- .4byte _080AFF80
-_080AFEB4:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r3
- ldrh r0, [r4, 0x1A]
- adds r0, 0x1
- strh r0, [r4, 0x1A]
- ldr r1, _080AFEF4 @ =gUnknown_83E6500
- movs r5, 0x1A
- ldrsh r0, [r4, r5]
- adds r0, r1
- ldrb r1, [r0]
- strh r1, [r4, 0x1E]
- movs r0, 0x11
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bne _080AFFBE
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- movs r0, 0
- strh r0, [r4, 0x1E]
- b _080AFFBE
- .align 2, 0
-_080AFEF4: .4byte gUnknown_83E6500
-_080AFEF8:
- lsls r0, r4, 2
- adds r0, r4
- 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, 0x51
- bne _080AFFBE
- movs r0, 0x5
- strh r0, [r1, 0x1E]
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- b _080AFFBE
-_080AFF1A:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r3
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080AFFBE
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- subs r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _080AFFBE
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r1, [r4, 0x1E]
- b _080AFFBE
-_080AFF5E:
- mov r0, sp
- bl sub_80752A0
- movs r0, 0x1
- bl sub_8075358
- movs r0, 0x2
- bl sub_8075358
- ldr r0, _080AFFC8 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
-_080AFF80:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080AFF94
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080AFF94:
- ldr r0, _080AFFCC @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080AFFD0 @ =gBattle_BG1_Y
- strh r1, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080AFFBE:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AFFC8: .4byte gTasks
-_080AFFCC: .4byte gBattle_BG1_X
-_080AFFD0: .4byte gBattle_BG1_Y
- thumb_func_end sub_80AFE64
-
- thumb_func_start sub_80AFFD4
-sub_80AFFD4: @ 80AFFD4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- ldr r6, _080B00BC @ =gUnknown_2037F02
- ldrh r0, [r6]
- strh r0, [r5, 0x2E]
- ldr r0, _080B00C0 @ =gUnknown_2037F1A
- mov r8, r0
- ldrb r0, [r0]
- movs r1, 0x2
- bl sub_8074480
- adds r4, r0, 0
- ldr r7, _080B00C4 @ =gUnknown_2037F1B
- ldrb r0, [r7]
- movs r1, 0x2
- bl sub_8074480
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bcs _080B0008
- movs r0, 0x80
- lsls r0, 8
- strh r0, [r5, 0x3C]
-_080B0008:
- ldr r3, _080B00C8 @ =gUnknown_2023BD6
- ldrb r0, [r7]
- adds r0, r3
- ldrb r1, [r0]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _080B0068
- ldrh r0, [r6, 0x2]
- negs r0, r0
- strh r0, [r6, 0x2]
- ldrh r0, [r6, 0x6]
- negs r0, r0
- strh r0, [r6, 0x6]
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _080B0064
- mov r1, r8
- ldrb r0, [r1]
- adds r0, r3
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _080B0064
- movs r0, 0x1
- bl GetAnimBankSpriteId
- ldr r2, _080B00CC @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
-_080B0064:
- movs r0, 0x1
- strh r0, [r5, 0x3A]
-_080B0068:
- ldr r4, _080B00C0 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r6, _080B00BC @ =gUnknown_2037F02
- movs r1, 0xE
- ldrsh r0, [r6, r1]
- cmp r0, 0
- beq _080B00D0
- ldrh r0, [r6, 0x2]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- strh r0, [r5, 0x30]
- ldr r4, _080B00C4 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x6]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r6, 0x4]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- b _080B00F8
- .align 2, 0
-_080B00BC: .4byte gUnknown_2037F02
-_080B00C0: .4byte gUnknown_2037F1A
-_080B00C4: .4byte gUnknown_2037F1B
-_080B00C8: .4byte gUnknown_2023BD6
-_080B00CC: .4byte gSprites
-_080B00D0:
- ldrh r0, [r6, 0x2]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- strh r0, [r5, 0x30]
- ldr r4, _080B0140 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x6]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r6, 0x4]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x1
-_080B00F8:
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x8]
- adds r0, r6
- strh r0, [r5, 0x36]
- ldrb r0, [r4]
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 16
- ldrh r1, [r5, 0x3C]
- orrs r0, r1
- strh r0, [r5, 0x3C]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B012C
- movs r0, 0x1
- strh r0, [r5, 0x3A]
- adds r1, r5, 0
- adds r1, 0x43
- movs r0, 0x80
- strb r0, [r1]
-_080B012C:
- adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r0, _080B0144 @ =sub_80B0148
- str r0, [r5, 0x1C]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0140: .4byte gUnknown_2037F1B
-_080B0144: .4byte sub_80B0148
- thumb_func_end sub_80AFFD4
-
- thumb_func_start sub_80B0148
-sub_80B0148: @ 80B0148
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x3C]
- movs r5, 0xFF
- movs r1, 0xFF
- ands r1, r0
- cmp r1, 0x1
- beq _080B0230
- cmp r1, 0x1
- bgt _080B0162
- cmp r1, 0
- beq _080B016A
- b _080B0380
-_080B0162:
- cmp r1, 0x2
- bne _080B0168
- b _080B0344
-_080B0168:
- b _080B0380
-_080B016A:
- adds r0, r4, 0
- bl sub_80755E0
- ldr r1, _080B0194 @ =gSineTable
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- asrs r0, 4
- ldrh r2, [r4, 0x24]
- adds r0, r2
- strh r0, [r4, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B0198
- ldrh r0, [r4, 0x38]
- subs r0, 0x8
- b _080B019C
- .align 2, 0
-_080B0194: .4byte gSineTable
-_080B0198:
- ldrh r0, [r4, 0x38]
- adds r0, 0x8
-_080B019C:
- ands r0, r5
- strh r0, [r4, 0x38]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080B01AA
- b _080B0380
-_080B01AA:
- movs r5, 0x50
- strh r5, [r4, 0x2E]
- ldr r6, _080B01F8 @ =gUnknown_2037F1B
- ldrb r0, [r6]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x26]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, 0x1D
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B0200
- ldr r1, _080B01FC @ =gUnknown_2023BD6
- ldrb r0, [r6]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B0200
- movs r0, 0xCC
- strh r0, [r4, 0x38]
- b _080B0202
- .align 2, 0
-_080B01F8: .4byte gUnknown_2037F1B
-_080B01FC: .4byte gUnknown_2023BD6
-_080B0200:
- strh r5, [r4, 0x38]
-_080B0202:
- movs r0, 0
- strh r0, [r4, 0x26]
- ldr r1, _080B022C @ =gSineTable
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- asrs r0, 3
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x38]
- adds r0, 0x2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- b _080B0380
- .align 2, 0
-_080B022C: .4byte gSineTable
-_080B0230:
- adds r0, r4, 0
- bl sub_80755E0
- ldr r1, _080B028C @ =gSineTable
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- ldrsh r0, [r0, r2]
- asrs r0, 3
- ldrh r2, [r4, 0x24]
- adds r0, r2
- strh r0, [r4, 0x24]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- adds r0, 0x40
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r0, r1, 1
- adds r0, r1
- negs r0, r0
- asrs r0, 8
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B02AE
- ldrh r1, [r4, 0x38]
- adds r0, r1, 0
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- adds r3, r1, 0
- cmp r0, 0x7F
- bhi _080B0290
- ldrh r1, [r4, 0x3C]
- lsls r1, 16
- asrs r1, 24
- b _080B0298
- .align 2, 0
-_080B028C: .4byte gSineTable
-_080B0290:
- ldrh r1, [r4, 0x3C]
- lsls r1, 16
- asrs r1, 24
- adds r1, 0x1
-_080B0298:
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- adds r0, r3, 0x4
- b _080B02CE
-_080B02AE:
- ldrh r0, [r4, 0x38]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x7F
- bhi _080B02C2
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x80
- b _080B02C8
-_080B02C2:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x8C
-_080B02C8:
- strb r0, [r1]
- ldrh r0, [r4, 0x38]
- subs r0, 0x4
-_080B02CE:
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bgt _080B0380
- movs r5, 0
- movs r0, 0xC0
- lsls r0, 2
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, 0x4
- strh r0, [r4, 0x36]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B0328
- ldr r1, _080B0320 @ =gUnknown_2023BD6
- ldr r0, _080B0324 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B0328
- movs r0, 0x80
- lsls r0, 1
- b _080B032A
- .align 2, 0
-_080B0320: .4byte gUnknown_2023BD6
-_080B0324: .4byte gUnknown_2037F1B
-_080B0328:
- ldr r0, _080B0340 @ =0x0000fff0
-_080B032A:
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x3C]
- strh r1, [r4, 0x26]
- strh r1, [r4, 0x24]
- adds r0, r4, 0
- bl sub_8075678
- b _080B0380
- .align 2, 0
-_080B0340: .4byte 0x0000fff0
-_080B0344:
- adds r0, r4, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080B0380
- ldrb r0, [r4, 0x1]
- lsls r0, 30
- lsrs r0, 30
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B0372
- 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]
-_080B0372:
- adds r0, r4, 0
- bl DestroySprite
- ldr r1, _080B0388 @ =gUnknown_2037EE2
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_080B0380:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0388: .4byte gUnknown_2037EE2
- thumb_func_end sub_80B0148
-
- thumb_func_start sub_80B038C
-sub_80B038C: @ 80B038C
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B03A0 @ =gTasks
- adds r1, r0
- ldr r0, _080B03A4 @ =sub_80B03A8
- str r0, [r1]
- bx lr
- .align 2, 0
-_080B03A0: .4byte gTasks
-_080B03A4: .4byte sub_80B03A8
- thumb_func_end sub_80B038C
-
- thumb_func_start sub_80B03A8
-sub_80B03A8: @ 80B03A8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B03CC @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _080B03EC
- cmp r5, 0x1
- bgt _080B03D0
- cmp r5, 0
- beq _080B03D6
- b _080B0450
- .align 2, 0
-_080B03CC: .4byte gTasks
-_080B03D0:
- cmp r5, 0x2
- beq _080B0442
- b _080B0450
-_080B03D6:
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B0450
- strh r5, [r4, 0x10]
- strh r5, [r4, 0x12]
- strh r5, [r4, 0xC]
- b _080B0428
-_080B03EC:
- ldrh r1, [r4, 0x12]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _080B043C
- ldrb r0, [r4, 0xE]
- ldrb r1, [r4, 0xC]
- movs r3, 0x1
- bl sub_80B0458
- lsls r0, 24
- cmp r0, 0
- beq _080B040C
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
-_080B040C:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080B0438
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _080B0430
-_080B0428:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B0450
-_080B0430:
- ldrh r0, [r4, 0x8]
- subs r0, 0x1
- strh r0, [r4, 0x8]
- b _080B0450
-_080B0438:
- strh r5, [r4, 0x12]
- b _080B0450
-_080B043C:
- subs r0, r1, 0x1
- strh r0, [r4, 0x12]
- b _080B0450
-_080B0442:
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B0450
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B0450:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B03A8
-
- thumb_func_start sub_80B0458
-sub_80B0458: @ 80B0458
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- movs r1, 0
- str r1, [sp, 0x4]
- ldr r1, _080B04D0 @ =gUnknown_83E652C
- lsrs r0, 22
- adds r4, r0, r1
- ldrb r0, [r4, 0x3]
- lsls r0, 24
- asrs r0, 28
- mov r8, r0
- cmp r0, 0x2
- beq _080B0544
- ldrh r0, [r4, 0x2]
- lsls r0, 20
- lsrs r0, 24
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080B0544
- movs r0, 0x1
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r5, 0
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r6, r0, 24
- mov r1, r8
- cmp r1, 0
- beq _080B04D4
- cmp r1, 0x1
- beq _080B050A
- b _080B0556
- .align 2, 0
-_080B04D0: .4byte gUnknown_83E652C
-_080B04D4:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8076B2C
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x6
- bl __divsi3
- lsls r1, r7, 16
- asrs r1, 16
- subs r1, r0
- lsls r1, 16
- lsrs r7, r1, 16
- adds r0, r5, 0
- movs r1, 0
- bl sub_8076B2C
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x6
- bl __divsi3
- lsls r1, r6, 16
- asrs r1, 16
- subs r1, r0
- b _080B053E
-_080B050A:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8076B2C
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x6
- bl __divsi3
- lsls r1, r7, 16
- asrs r1, 16
- adds r1, r0
- lsls r1, 16
- lsrs r7, r1, 16
- adds r0, r5, 0
- movs r1, 0
- bl sub_8076B2C
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x6
- bl __divsi3
- lsls r1, r6, 16
- asrs r1, 16
- adds r1, r0
-_080B053E:
- lsls r1, 16
- lsrs r6, r1, 16
- b _080B0556
-_080B0544:
- ldrh r0, [r4]
- lsls r0, 22
- asrs r0, 6
- lsrs r7, r0, 16
- ldr r0, [r4]
- lsls r0, 12
- asrs r0, 22
- lsls r0, 16
- lsrs r6, r0, 16
-_080B0556:
- lsls r0, r6, 16
- asrs r0, 16
- adds r0, 0x8
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- lsls r1, r7, 16
- asrs r1, 16
- subs r1, r0
- ldr r0, _080B05B0 @ =gUnknown_83E65A4
- lsls r1, 16
- asrs r1, 16
- movs r2, 0x8
- negs r2, r2
- movs r3, 0x12
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x40
- beq _080B05B8
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- ldr r0, _080B05B4 @ =gSprites
- adds r4, r0
- adds r0, r4, 0
- mov r1, r9
- bl StartSpriteAffineAnim
- mov r0, sp
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x2E]
- strh r7, [r4, 0x34]
- strh r6, [r4, 0x36]
- mov r1, r9
- strh r1, [r4, 0x38]
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x3A]
- mov r1, r10
- strh r1, [r4, 0x3C]
- movs r0, 0x1
- b _080B05BA
- .align 2, 0
-_080B05B0: .4byte gUnknown_83E65A4
-_080B05B4: .4byte gSprites
-_080B05B8:
- movs r0, 0
-_080B05BA:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80B0458
-
- thumb_func_start sub_80B05CC
-sub_80B05CC: @ 80B05CC
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- adds r0, 0x4
- strh r0, [r4, 0x20]
- ldrh r1, [r4, 0x22]
- adds r2, r1, 0
- adds r2, 0x8
- strh r2, [r4, 0x22]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x34
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bge _080B05F6
- lsls r0, r2, 16
- asrs r0, 16
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _080B06A6
-_080B05F6:
- movs r3, 0x2E
- ldrsh r0, [r4, r3]
- cmp r0, 0x1
- bne _080B0678
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B0678
- ldr r0, _080B066C @ =gUnknown_83E63E0
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- movs r3, 0x36
- ldrsh r2, [r4, r3]
- adds r3, r4, 0
- adds r3, 0x43
- ldrb r3, [r3]
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x2E]
- cmp r0, 0x40
- beq _080B065A
- ldr r2, _080B0670 @ =gSprites
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r2, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _080B0674 @ =sub_80B06B0
- str r1, [r0]
- movs r3, 0x2E
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x3A]
- strh r1, [r0, 0x3A]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x3C]
- strh r1, [r0, 0x3C]
-_080B065A:
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- b _080B06A6
- .align 2, 0
-_080B066C: .4byte gUnknown_83E63E0
-_080B0670: .4byte gSprites
-_080B0674: .4byte sub_80B06B0
-_080B0678:
- ldr r3, _080B06AC @ =gTasks
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080B06A6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B06AC: .4byte gTasks
- thumb_func_end sub_80B05CC
-
- thumb_func_start sub_80B06B0
-sub_80B06B0: @ 80B06B0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- bne _080B06F0
- ldr r3, _080B06F8 @ =gTasks
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080B06F0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B06F8: .4byte gTasks
- thumb_func_end sub_80B06B0
-
- thumb_func_start unc_080B06FC
-unc_080B06FC: @ 80B06FC
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, _080B077C @ =gUnknown_2037EE4
- ldr r0, [r0]
- ldrb r1, [r0, 0x11]
- lsrs r0, r1, 4
- lsls r1, 28
- lsrs r1, 28
- subs r0, r1
- subs r0, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080B071A
- movs r1, 0x4
-_080B071A:
- adds r0, r5, 0
- bl StartSpriteAffineAnim
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r6, _080B0780 @ =gUnknown_2037F02
- ldrh r0, [r6, 0x8]
- strh r0, [r5, 0x2E]
- ldr r0, _080B0784 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B0742
- ldrh r0, [r6, 0x4]
- negs r0, r0
- strh r0, [r6, 0x4]
-_080B0742:
- ldr r4, _080B0788 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x4]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x6]
- adds r0, r1
- strh r0, [r5, 0x36]
- ldrh r0, [r6, 0xA]
- strh r0, [r5, 0x38]
- adds r0, r5, 0
- bl sub_8075068
- ldr r0, _080B078C @ =sub_80B0790
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B077C: .4byte gUnknown_2037EE4
-_080B0780: .4byte gUnknown_2037F02
-_080B0784: .4byte gUnknown_2037F1A
-_080B0788: .4byte gUnknown_2037F1B
-_080B078C: .4byte sub_80B0790
- thumb_func_end unc_080B06FC
-
- thumb_func_start sub_80B0790
-sub_80B0790: @ 80B0790
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B07B2
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r0, _080B07B8 @ =sub_8074F6C
- str r0, [r4, 0x1C]
- ldr r1, _080B07BC @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
-_080B07B2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B07B8: .4byte sub_8074F6C
-_080B07BC: .4byte DestroyAnimSprite
- thumb_func_end sub_80B0790
-
- thumb_func_start sub_80B07C0
-sub_80B07C0: @ 80B07C0
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x8
- ldr r3, _080B0814 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080B0818 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075114
- bl Random
- movs r5, 0xFF
- ands r5, r0
- movs r0, 0x80
- lsls r0, 1
- adds r6, r0, 0
- orrs r5, r6
- bl Random
- ldr r1, _080B081C @ =0x000001ff
- ands r1, r0
- adds r0, r1, 0
- cmp r0, 0xFF
- ble _080B0806
- subs r0, r6, r0
- lsls r0, 16
- lsrs r1, r0, 16
-_080B0806:
- strh r5, [r4, 0x30]
- strh r1, [r4, 0x32]
- ldr r0, _080B0820 @ =sub_80B0824
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0814: .4byte 0x000003ff
-_080B0818: .4byte 0xfffffc00
-_080B081C: .4byte 0x000001ff
-_080B0820: .4byte sub_80B0824
- thumb_func_end sub_80B07C0
-
- thumb_func_start sub_80B0824
-sub_80B0824: @ 80B0824
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x34]
- adds r3, r0, r1
- strh r3, [r2, 0x34]
- ldrh r1, [r2, 0x32]
- ldrh r4, [r2, 0x36]
- adds r1, r4
- strh r1, [r2, 0x36]
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080B0848
- lsls r0, r3, 16
- asrs r0, 24
- negs r0, r0
- b _080B084C
-_080B0848:
- lsls r0, r3, 16
- asrs r0, 24
-_080B084C:
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x15
- bne _080B086A
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080B086A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B0824
-
- thumb_func_start sub_80B0870
-sub_80B0870: @ 80B0870
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B0898 @ =gUnknown_2037F02
- ldrb r3, [r1]
- lsls r3, 1
- adds r3, r1
- ldr r1, _080B089C @ =gUnknown_2037EE4
- ldr r1, [r1]
- ldrb r1, [r1, 0x11]
- lsrs r2, r1, 4
- lsls r1, 28
- lsrs r1, 28
- subs r2, r1
- subs r2, 0x1
- strh r2, [r3]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080B0898: .4byte gUnknown_2037F02
-_080B089C: .4byte gUnknown_2037EE4
- thumb_func_end sub_80B0870
-
- thumb_func_start unc_080B08A0
-unc_080B08A0: @ 80B08A0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B08D0 @ =gUnknown_2037F02
- movs r0, 0
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl sub_8074FF8
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- movs r0, 0xF
- strh r0, [r4, 0x2E]
- ldr r0, _080B08D4 @ =sub_8074C44
- str r0, [r4, 0x1C]
- ldr r1, _080B08D8 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B08D0: .4byte gUnknown_2037F02
-_080B08D4: .4byte sub_8074C44
-_080B08D8: .4byte DestroyAnimSprite
- thumb_func_end unc_080B08A0
-
- thumb_func_start sub_80B08DC
-sub_80B08DC: @ 80B08DC
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B0920 @ =gUnknown_2037F02
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080B0904
- ldr r0, _080B0924 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B0904
- ldrh r0, [r4, 0x2]
- negs r0, r0
- strh r0, [r4, 0x2]
- ldrh r0, [r4, 0x6]
- negs r0, r0
- strh r0, [r4, 0x6]
-_080B0904:
- ldr r4, _080B0920 @ =gUnknown_2037F02
- ldrb r1, [r4, 0xC]
- adds r0, r5, 0
- bl StartSpriteAnim
- movs r0, 0
- strh r0, [r4, 0xC]
- adds r0, r5, 0
- bl sub_8075F0C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0920: .4byte gUnknown_2037F02
-_080B0924: .4byte gUnknown_2037F1A
- thumb_func_end sub_80B08DC
-
- thumb_func_start sub_80B0928
-sub_80B0928: @ 80B0928
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B0944
- ldr r0, _080B0950 @ =gUnknown_2037F02
- ldrh r1, [r0, 0x2]
- negs r1, r1
- strh r1, [r0, 0x2]
- ldrh r1, [r0, 0x6]
- negs r1, r1
- strh r1, [r0, 0x6]
-_080B0944:
- adds r0, r4, 0
- bl sub_80B08DC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0950: .4byte gUnknown_2037F02
- thumb_func_end sub_80B0928
-
- thumb_func_start sub_80B0954
-sub_80B0954: @ 80B0954
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B0974 @ =gUnknown_2037F02
- ldrb r1, [r4, 0x8]
- bl StartSpriteAnim
- movs r1, 0x6
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B0978
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075160
- b _080B0980
- .align 2, 0
-_080B0974: .4byte gUnknown_2037F02
-_080B0978:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075114
-_080B0980:
- ldr r0, _080B0998 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0x2E]
- ldr r0, _080B099C @ =sub_8074C44
- str r0, [r5, 0x1C]
- ldr r1, _080B09A0 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0998: .4byte gUnknown_2037F02
-_080B099C: .4byte sub_8074C44
-_080B09A0: .4byte DestroyAnimSprite
- thumb_func_end sub_80B0954
-
- thumb_func_start sub_80B09A4
-sub_80B09A4: @ 80B09A4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- ldr r0, _080B09C0 @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r1, [r0, r2]
- mov r9, r0
- cmp r1, 0
- bne _080B09C8
- ldr r0, _080B09C4 @ =gUnknown_2037F1A
- b _080B09CA
- .align 2, 0
-_080B09C0: .4byte gUnknown_2037F02
-_080B09C4: .4byte gUnknown_2037F1A
-_080B09C8:
- ldr r0, _080B0B10 @ =gUnknown_2037F1B
-_080B09CA:
- ldrb r0, [r0]
- mov r8, r0
- mov r4, r9
- movs r3, 0x4
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bge _080B09E8
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x5
- bl __umodsi3
- strh r0, [r4, 0x4]
-_080B09E8:
- ldrb r1, [r4, 0x4]
- adds r0, r5, 0
- bl StartSpriteAnim
- mov r0, r8
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- mov r0, r8
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- mov r0, r8
- movs r1, 0x1
- bl sub_8076B2C
- 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_8076B2C
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _080B0A32
- adds r0, 0x3
-_080B0A32:
- 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 _080B0A74
- lsls r0, r6, 16
- negs r0, r0
- lsrs r6, r0, 16
-_080B0A74:
- bl Random
- adds r1, r7, 0
- ands r1, r0
- cmp r1, 0
- beq _080B0A86
- lsls r0, r4, 16
- negs r0, r0
- lsrs r4, r0, 16
-_080B0A86:
- ldr r0, _080B0B14 @ =gUnknown_2023BD6
- add r0, r8
- ldrb r1, [r0]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- bne _080B0A9C
- lsls r0, r4, 16
- ldr r1, _080B0B18 @ =0xfff00000
- adds r0, r1
- lsrs r4, r0, 16
-_080B0A9C:
- 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, _080B0B1C @ =gUnknown_83E7C08
- 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 _080B0B00
- movs r0, 0x3C
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080B0B20 @ =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, _080B0B24 @ =SpriteCallbackDummy
- str r1, [r0]
-_080B0B00:
- ldr r0, _080B0B28 @ =sub_80B0B2C
- str r0, [r5, 0x1C]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0B10: .4byte gUnknown_2037F1B
-_080B0B14: .4byte gUnknown_2023BD6
-_080B0B18: .4byte 0xfff00000
-_080B0B1C: .4byte gUnknown_83E7C08
-_080B0B20: .4byte gSprites
-_080B0B24: .4byte SpriteCallbackDummy
-_080B0B28: .4byte sub_80B0B2C
- thumb_func_end sub_80B09A4
-
- thumb_func_start sub_80B0B2C
-sub_80B0B2C: @ 80B0B2C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bne _080B0B74
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- cmp r0, 0x40
- beq _080B0B68
- ldr r4, _080B0B70 @ =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
-_080B0B68:
- adds r0, r5, 0
- bl DestroyAnimSprite
- b _080B0B78
- .align 2, 0
-_080B0B70: .4byte gSprites
-_080B0B74:
- subs r0, r1, 0x1
- strh r0, [r5, 0x2E]
-_080B0B78:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B0B2C
-
- thumb_func_start sub_80B0B80
-sub_80B0B80: @ 80B0B80
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075114
- movs r0, 0x1E
- strh r0, [r4, 0x2E]
- ldr r0, _080B0BA0 @ =gUnknown_2037F02
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B0BA4
- ldrh r0, [r4, 0x20]
- subs r0, 0x14
- strh r0, [r4, 0x32]
- b _080B0BB6
- .align 2, 0
-_080B0BA0: .4byte gUnknown_2037F02
-_080B0BA4:
- 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]
-_080B0BB6:
- ldrh r0, [r4, 0x22]
- subs r0, 0x14
- strh r0, [r4, 0x36]
- ldr r0, _080B0BD0 @ =sub_8075590
- str r0, [r4, 0x1C]
- ldr r1, _080B0BD4 @ =sub_80B0BD8
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0BD0: .4byte sub_8075590
-_080B0BD4: .4byte sub_80B0BD8
- thumb_func_end sub_80B0B80
-
- thumb_func_start sub_80B0BD8
-sub_80B0BD8: @ 80B0BD8
- 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 _080B0C18
- 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, _080B0C20 @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _080B0C24 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
-_080B0C18:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0C20: .4byte sub_8075590
-_080B0C24: .4byte DestroyAnimSprite
- thumb_func_end sub_80B0BD8
-
- thumb_func_start sub_80B0C28
-sub_80B0C28: @ 80B0C28
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r0, _080B0CA4 @ =gUnknown_2037F1A
- ldrb r1, [r0]
- movs r0, 0x2
- ldr r2, _080B0CA8 @ =gUnknown_2037F1B
- eors r0, r1
- ldrb r1, [r2]
- cmp r0, r1
- bne _080B0C54
- ldrb r0, [r2]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080B0C54
- ldr r1, _080B0CAC @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1]
-_080B0C54:
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r0, _080B0CA4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B0C72
- ldr r1, _080B0CAC @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080B0C72:
- ldr r4, _080B0CAC @ =gUnknown_2037F02
- 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, _080B0CB0 @ =sub_80B0CB4
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0CA4: .4byte gUnknown_2037F1A
-_080B0CA8: .4byte gUnknown_2037F1B
-_080B0CAC: .4byte gUnknown_2037F02
-_080B0CB0: .4byte sub_80B0CB4
- thumb_func_end sub_80B0C28
-
- thumb_func_start sub_80B0CB4
-sub_80B0CB4: @ 80B0CB4
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- bne _080B0CE0
- 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 _080B0CE6
-_080B0CE0:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B0CE6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B0CB4
-
- thumb_func_start sub_80B0CEC
-sub_80B0CEC: @ 80B0CEC
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r5, _080B0D18 @ =gUnknown_2037F02
- ldrb r1, [r5, 0x4]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldr r0, _080B0D1C @ =sub_8074C44
- str r0, [r4, 0x1C]
- ldr r1, _080B0D20 @ =sub_80B0D24
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0D18: .4byte gUnknown_2037F02
-_080B0D1C: .4byte sub_8074C44
-_080B0D20: .4byte sub_80B0D24
- thumb_func_end sub_80B0CEC
-
- thumb_func_start sub_80B0D24
-sub_80B0D24: @ 80B0D24
- 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, _080B0D50 @ =sub_8074C44
- str r0, [r4, 0x1C]
- ldr r1, _080B0D54 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0D50: .4byte sub_8074C44
-_080B0D54: .4byte DestroyAnimSprite
- thumb_func_end sub_80B0D24
-
- thumb_func_start sub_80B0D58
-sub_80B0D58: @ 80B0D58
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r0, _080B0D74 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x2E]
- ldr r0, _080B0D78 @ =sub_80B0D7C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0D74: .4byte gUnknown_2037F02
-_080B0D78: .4byte sub_80B0D7C
- thumb_func_end sub_80B0D58
-
- thumb_func_start sub_80B0D7C
-sub_80B0D7C: @ 80B0D7C
- 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 _080B0DC0
- movs r0, 0x6
- strh r0, [r5, 0x2E]
- ldr r4, _080B0DC8 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, _080B0DCC @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _080B0DD0 @ =sub_80B0DD4
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
-_080B0DC0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0DC8: .4byte gUnknown_2037F1B
-_080B0DCC: .4byte sub_8075590
-_080B0DD0: .4byte sub_80B0DD4
- thumb_func_end sub_80B0D7C
-
- thumb_func_start sub_80B0DD4
-sub_80B0DD4: @ 80B0DD4
- push {lr}
- movs r1, 0xF
- strh r1, [r0, 0x2E]
- ldr r1, _080B0DE8 @ =sub_8074C44
- str r1, [r0, 0x1C]
- ldr r1, _080B0DEC @ =DestroyAnimSprite
- bl StoreSpriteCallbackInData6
- pop {r0}
- bx r0
- .align 2, 0
-_080B0DE8: .4byte sub_8074C44
-_080B0DEC: .4byte DestroyAnimSprite
- thumb_func_end sub_80B0DD4
-
- thumb_func_start sub_80B0DF0
-sub_80B0DF0: @ 80B0DF0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B0E1C
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r1, _080B0E18 @ =gUnknown_2037F02
- 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 _080B0E78
- .align 2, 0
-_080B0E18: .4byte gUnknown_2037F02
-_080B0E1C:
- 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 _080B0E6A
- 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]
-_080B0E6A:
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x78
- ble _080B0E78
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B0E78:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B0DF0
-
- thumb_func_start sub_80B0E80
-sub_80B0E80: @ 80B0E80
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080B0E94 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B0E9C
- ldr r4, _080B0E98 @ =gUnknown_2037F1A
- b _080B0E9E
- .align 2, 0
-_080B0E94: .4byte gUnknown_2037F02
-_080B0E98: .4byte gUnknown_2037F1A
-_080B0E9C:
- ldr r4, _080B0EE4 @ =gUnknown_2037F1B
-_080B0E9E:
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r1, _080B0EE8 @ =gUnknown_2037F02
- 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, _080B0EEC @ =sub_80B0EF0
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B0EE4: .4byte gUnknown_2037F1B
-_080B0EE8: .4byte gUnknown_2037F02
-_080B0EEC: .4byte sub_80B0EF0
- thumb_func_end sub_80B0E80
-
- thumb_func_start sub_80B0EF0
-sub_80B0EF0: @ 80B0EF0
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- cmp r2, 0
- beq _080B0F02
- cmp r2, 0x1
- beq _080B0F26
- b _080B0F60
-_080B0F02:
- ldrh r0, [r1, 0x30]
- subs r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- cmp r0, 0
- bne _080B0F60
- movs r2, 0x32
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080B0F1E
- adds r0, r1, 0
- bl DestroyAnimSprite
- b _080B0F60
-_080B0F1E:
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- b _080B0F60
-_080B0F26:
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B0F4E
- 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 _080B0F4A
- movs r0, 0x2
- b _080B0F4C
-_080B0F4A:
- ldr r0, _080B0F64 @ =0x0000fffe
-_080B0F4C:
- strh r0, [r1, 0x24]
-_080B0F4E:
- ldrh r0, [r1, 0x32]
- subs r0, 0x1
- strh r0, [r1, 0x32]
- lsls r0, 16
- cmp r0, 0
- bne _080B0F60
- adds r0, r1, 0
- bl DestroyAnimSprite
-_080B0F60:
- pop {r0}
- bx r0
- .align 2, 0
-_080B0F64: .4byte 0x0000fffe
- thumb_func_end sub_80B0EF0
-
- thumb_func_start sub_80B0F68
-sub_80B0F68: @ 80B0F68
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080B0F8C @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080B0F94
- ldr r4, _080B0F90 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r6, 0x4]
- adds r0, r2
- b _080B0FA6
- .align 2, 0
-_080B0F8C: .4byte gUnknown_2037F02
-_080B0F90: .4byte gUnknown_2037F1A
-_080B0F94:
- ldr r4, _080B0FF0 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x4]
- adds r0, r1
-_080B0FA6:
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- 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, _080B0FF4 @ =gUnknown_2037F02
- movs r4, 0x2
- ldrsh r0, [r3, r4]
- lsls r0, 4
- adds r1, r0
- ldr r4, _080B0FF8 @ =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, _080B0FFC @ =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 _080B1014
- cmp r0, 0x1
- bgt _080B1000
- cmp r0, 0
- beq _080B100A
- b _080B103A
- .align 2, 0
-_080B0FF0: .4byte gUnknown_2037F1B
-_080B0FF4: .4byte gUnknown_2037F02
-_080B0FF8: .4byte 0x000003ff
-_080B0FFC: .4byte 0xfffffc00
-_080B1000:
- cmp r0, 0x2
- beq _080B1024
- cmp r0, 0x3
- beq _080B1034
- b _080B103A
-_080B100A:
- ldr r0, _080B1010 @ =0x0000fffd
- b _080B1034
- .align 2, 0
-_080B1010: .4byte 0x0000fffd
-_080B1014:
- movs r0, 0x3
- strh r0, [r5, 0x3A]
- ldr r0, _080B1020 @ =0x0000fffd
- strh r0, [r5, 0x3C]
- b _080B1042
- .align 2, 0
-_080B1020: .4byte 0x0000fffd
-_080B1024:
- ldr r0, _080B1030 @ =0x0000fffd
- strh r0, [r5, 0x3A]
- movs r0, 0x3
- strh r0, [r5, 0x3C]
- b _080B1042
- .align 2, 0
-_080B1030: .4byte 0x0000fffd
-_080B1034:
- strh r0, [r5, 0x3A]
- strh r0, [r5, 0x3C]
- b _080B1042
-_080B103A:
- adds r0, r5, 0
- bl DestroyAnimSprite
- b _080B1046
-_080B1042:
- ldr r0, _080B104C @ =sub_80B1050
- str r0, [r5, 0x1C]
-_080B1046:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B104C: .4byte sub_80B1050
- thumb_func_end sub_80B0F68
-
- thumb_func_start sub_80B1050
-sub_80B1050: @ 80B1050
- 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 _080B1078
- adds r0, r1, 0
- bl DestroyAnimSprite
-_080B1078:
- pop {r0}
- bx r0
- thumb_func_end sub_80B1050
-
- thumb_func_start sub_80B107C
-sub_80B107C: @ 80B107C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080B10C8 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B10D8
- ldr r4, _080B10CC @ =sBattler_AI
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r0, _080B10D0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_8076884
- 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, _080B10D4 @ =gUnknown_2037F1B
- b _080B10F4
- .align 2, 0
-_080B10C8: .4byte gUnknown_2037F02
-_080B10CC: .4byte sBattler_AI
-_080B10D0: .4byte gUnknown_2037F1A
-_080B10D4: .4byte gUnknown_2037F1B
-_080B10D8:
- ldr r0, _080B1110 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_8076884
- 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, _080B1114 @ =gUnknown_2037F1A
-_080B10F4:
- 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, _080B1118 @ =sub_80B111C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1110: .4byte gUnknown_2037F1B
-_080B1114: .4byte gUnknown_2037F1A
-_080B1118: .4byte sub_80B111C
- thumb_func_end sub_80B107C
-
- thumb_func_start sub_80B111C
-sub_80B111C: @ 80B111C
- 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 _080B1178
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- 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 sub_8074480
- 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 sub_8074480
- 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, _080B1180 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080B1184 @ =sub_807563C
- str r0, [r4, 0x1C]
-_080B1178:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1180: .4byte move_anim_8074EE0
-_080B1184: .4byte sub_807563C
- thumb_func_end sub_80B111C
-
- thumb_func_start sub_80B1188
-sub_80B1188: @ 80B1188
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B11D4 @ =gUnknown_2037F02
- 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_80765C0
- 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, _080B11D8 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080B11DC @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- ldr r0, _080B11E0 @ =sub_80B11E4
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B11D4: .4byte gUnknown_2037F02
-_080B11D8: .4byte 0x000003ff
-_080B11DC: .4byte 0xfffffc00
-_080B11E0: .4byte sub_80B11E4
- thumb_func_end sub_80B1188
-
- thumb_func_start sub_80B11E4
-sub_80B11E4: @ 80B11E4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r7, r1]
- cmp r0, 0
- beq _080B1236
- movs r2, 0x36
- ldrsh r0, [r7, r2]
- movs r2, 0x38
- ldrsh r1, [r7, r2]
- bl sub_80765C8
- 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_80765C0
- asrs r4, 8
- strh r4, [r7, 0x22]
- lsls r4, 16
- asrs r4, 16
- movs r0, 0x8
- negs r0, r0
- cmp r4, r0
- bge _080B122E
- adds r0, r7, 0
- bl DestroyAnimSprite
- b _080B128C
-_080B122E:
- ldrh r0, [r7, 0x2E]
- subs r0, 0x1
- strh r0, [r7, 0x2E]
- b _080B128C
-_080B1236:
- ldr r4, _080B1298 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r2, _080B129C @ =gUnknown_2037F1B
- mov r8, r2
- ldrb r0, [r2]
- movs r1, 0x2
- bl sub_8074480
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x3
- bl sub_8074480
- 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, _080B12A0 @ =sub_80B12A4
- str r0, [r7, 0x1C]
-_080B128C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1298: .4byte gUnknown_2037F1A
-_080B129C: .4byte gUnknown_2037F1B
-_080B12A0: .4byte sub_80B12A4
- thumb_func_end sub_80B11E4
-
- thumb_func_start sub_80B12A4
-sub_80B12A4: @ 80B12A4
- 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 _080B12DE
- adds r1, r3, 0
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- blt _080B12DE
- cmp r1, 0x78
- ble _080B12E4
-_080B12DE:
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080B12E4:
- pop {r0}
- bx r0
- thumb_func_end sub_80B12A4
-
- thumb_func_start sub_80B12E8
-sub_80B12E8: @ 80B12E8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080B131C @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B132C
- ldr r4, _080B1320 @ =sBattler_AI
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r0, _080B1324 @ =gUnknown_2037F1B
- ldrb r4, [r0]
- ldr r0, _080B1328 @ =gUnknown_2037F1A
- b _080B1332
- .align 2, 0
-_080B131C: .4byte gUnknown_2037F02
-_080B1320: .4byte sBattler_AI
-_080B1324: .4byte gUnknown_2037F1B
-_080B1328: .4byte gUnknown_2037F1A
-_080B132C:
- ldr r0, _080B1364 @ =gUnknown_2037F1A
- ldrb r4, [r0]
- ldr r0, _080B1368 @ =gUnknown_2037F1B
-_080B1332:
- ldrb r0, [r0]
- bl sub_8076884
- 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 sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B136C
- ldrb r2, [r5, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x8
- orrs r1, r0
- lsls r1, 1
- subs r0, 0x47
- b _080B1386
- .align 2, 0
-_080B1364: .4byte gUnknown_2037F1A
-_080B1368: .4byte gUnknown_2037F1B
-_080B136C:
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B138C
- ldrb r2, [r5, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x18
- orrs r1, r0
- lsls r1, 1
- subs r0, 0x57
-_080B1386:
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x3]
-_080B138C:
- movs r0, 0x10
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8074480
- 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 sub_8074480
- 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, _080B13CC @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080B13D0 @ =sub_807563C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B13CC: .4byte DestroyAnimSprite
-_080B13D0: .4byte sub_807563C
- thumb_func_end sub_80B12E8
-
- thumb_func_start sub_80B13D4
-sub_80B13D4: @ 80B13D4
- 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 _080B13EA
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B13EA:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B13D4
-
- thumb_func_start sub_80B13F8
-sub_80B13F8: @ 80B13F8
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r4, _080B1474 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r1, _080B1478 @ =gUnknown_2037F02
- 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, _080B147C @ =gUnknown_2037F16
- ldrb r6, [r0]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B1442
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_080B1442:
- movs r0, 0x1
- ands r6, r0
- cmp r6, 0
- beq _080B1456
- ldrh r0, [r5, 0x32]
- negs r0, r0
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
-_080B1456:
- 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, _080B1480 @ =sub_80B13D4
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1474: .4byte gUnknown_2037F1B
-_080B1478: .4byte gUnknown_2037F02
-_080B147C: .4byte gUnknown_2037F16
-_080B1480: .4byte sub_80B13D4
- thumb_func_end sub_80B13F8
-
- thumb_func_start sub_80B1484
-sub_80B1484: @ 80B1484
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080B149C @ =gUnknown_2037F02
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B14A0
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075160
- b _080B14A8
- .align 2, 0
-_080B149C: .4byte gUnknown_2037F02
-_080B14A0:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075114
-_080B14A8:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B14BC
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
- b _080B14D2
-_080B14BC:
- ldr r0, _080B14E4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B14D2
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080B14D2:
- ldr r0, _080B14E8 @ =sub_8074F6C
- str r0, [r4, 0x1C]
- ldr r1, _080B14EC @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B14E4: .4byte gUnknown_2037F1A
-_080B14E8: .4byte sub_8074F6C
-_080B14EC: .4byte DestroyAnimSprite
- thumb_func_end sub_80B1484
-
- thumb_func_start sub_80B14F0
-sub_80B14F0: @ 80B14F0
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B152A
- 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 _080B152A
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B152A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B14F0
-
- thumb_func_start sub_80B1530
-sub_80B1530: @ 80B1530
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080B1560 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B1568
- cmp r0, 0x1
- bgt _080B1582
- cmp r0, 0
- bne _080B1582
- movs r0, 0
- bl sub_8075458
- ldr r0, _080B1564 @ =gUnknown_2037F02
- ldrh r0, [r0]
- strh r0, [r4, 0x18]
- b _080B157A
- .align 2, 0
-_080B1560: .4byte gTasks
-_080B1564: .4byte gUnknown_2037F02
-_080B1568:
- 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 _080B158E
-_080B157A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B158E
-_080B1582:
- movs r2, 0xA0
- lsls r2, 3
- adds r0, r2, 0
- ldrh r1, [r4, 0x1A]
- adds r0, r1
- strh r0, [r4, 0x1A]
-_080B158E:
- movs r2, 0xB0
- lsls r2, 4
- adds r0, r2, 0
- ldrh r1, [r4, 0x1C]
- adds r0, r1
- strh r0, [r4, 0x1C]
- ldr r0, _080B15BC @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B15C4
- ldr r1, _080B15C0 @ =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 _080B15D4
- .align 2, 0
-_080B15BC: .4byte gUnknown_2037F1B
-_080B15C0: .4byte gBattle_BG3_X
-_080B15C4:
- ldr r2, _080B1614 @ =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
-_080B15D4:
- ldr r3, _080B1618 @ =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, _080B161C @ =gUnknown_2037F02
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080B160C
- strh r5, [r7]
- strh r5, [r3]
- movs r0, 0x1
- bl sub_8075458
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080B160C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1614: .4byte gBattle_BG3_X
-_080B1618: .4byte gBattle_BG3_Y
-_080B161C: .4byte gUnknown_2037F02
- thumb_func_end sub_80B1530
-
- thumb_func_start sub_80B1620
-sub_80B1620: @ 80B1620
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B1674 @ =gUnknown_2037F02
- movs r1, 0x6
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B1636
- adds r0, r5, 0
- movs r1, 0x2
- bl StartSpriteAnim
-_080B1636:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075160
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x2E]
- ldr r4, _080B1678 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, _080B167C @ =0x0000ffe2
- strh r0, [r5, 0x38]
- adds r0, r5, 0
- bl sub_8075068
- ldr r0, _080B1680 @ =sub_80B1684
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1674: .4byte gUnknown_2037F02
-_080B1678: .4byte gUnknown_2037F1B
-_080B167C: .4byte 0x0000ffe2
-_080B1680: .4byte sub_80B1684
- thumb_func_end sub_80B1620
-
- thumb_func_start sub_80B1684
-sub_80B1684: @ 80B1684
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B1698
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B1698:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B1684
-
- thumb_func_start sub_80B16A0
-sub_80B16A0: @ 80B16A0
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r5, _080B1714 @ =gUnknown_2037F02
- movs r1, 0x6
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080B16B8
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
-_080B16B8:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080B1718 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- mov r6, sp
- adds r6, 0x2
- movs r1, 0x1
- mov r2, sp
- adds r3, r6, 0
- bl sub_8076D9C
- ldr r0, _080B171C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B16E6
- ldrh r0, [r5, 0x8]
- negs r0, r0
- strh r0, [r5, 0x8]
-_080B16E6:
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- mov r1, sp
- ldrh r0, [r5, 0x8]
- ldrh r1, [r1]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r0, [r5, 0xA]
- ldrh r6, [r6]
- adds r0, r6
- strh r0, [r4, 0x36]
- ldr r0, _080B1720 @ =0x0000ffe2
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_8075068
- ldr r0, _080B1724 @ =sub_80B1728
- str r0, [r4, 0x1C]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1714: .4byte gUnknown_2037F02
-_080B1718: .4byte gUnknown_2037F1B
-_080B171C: .4byte gUnknown_2037F1A
-_080B1720: .4byte 0x0000ffe2
-_080B1724: .4byte sub_80B1728
- thumb_func_end sub_80B16A0
-
- thumb_func_start sub_80B1728
-sub_80B1728: @ 80B1728
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B173C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B173C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B1728
-
- thumb_func_start sub_80B1744
-sub_80B1744: @ 80B1744
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B1790 @ =gUnknown_2037F02
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldrh r1, [r5, 0x2]
- adds r0, r1
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_80754B8
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r4, 0x38]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r4, 0x3A]
- ldr r0, _080B1794 @ =sub_80B1798
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1790: .4byte gUnknown_2037F02
-_080B1794: .4byte sub_80B1798
- thumb_func_end sub_80B1744
-
- thumb_func_start sub_80B1798
-sub_80B1798: @ 80B1798
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8074D00
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x38]
- subs r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- ldrh r1, [r4, 0x3A]
- subs r0, r1
- strh r0, [r4, 0x32]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B17BE
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B17BE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B1798
-
- thumb_func_start sub_80B17C4
-sub_80B17C4: @ 80B17C4
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080B1824 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- movs r1, 0x1
- bl sub_8076D9C
- ldr r0, _080B1828 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B17F0
- ldr r1, _080B182C @ =gUnknown_2037F02
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080B17F0:
- ldr r0, _080B182C @ =gUnknown_2037F02
- ldrh r2, [r0]
- ldrh r1, [r4, 0x20]
- adds r2, r1
- strh r2, [r4, 0x20]
- ldrh r1, [r0, 0x2]
- ldrh r3, [r4, 0x22]
- adds r1, r3
- strh r1, [r4, 0x22]
- ldrh r3, [r0, 0x8]
- strh r3, [r4, 0x2E]
- ldrh r0, [r0, 0x4]
- adds r2, r0
- strh r2, [r4, 0x32]
- adds r1, r3
- strh r1, [r4, 0x36]
- ldr r0, _080B1830 @ =sub_8075590
- str r0, [r4, 0x1C]
- ldr r1, _080B1834 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1824: .4byte gUnknown_2037F1B
-_080B1828: .4byte gUnknown_2037F1A
-_080B182C: .4byte gUnknown_2037F02
-_080B1830: .4byte sub_8075590
-_080B1834: .4byte DestroyAnimSprite
- thumb_func_end sub_80B17C4
-
- thumb_func_start sub_80B1838
-sub_80B1838: @ 80B1838
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B1850 @ =gUnknown_2037F02
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080B1854
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075114
- b _080B188A
- .align 2, 0
-_080B1850: .4byte gUnknown_2037F02
-_080B1854:
- ldr r0, _080B1894 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- movs r1, 0x1
- bl sub_8076D9C
- ldr r0, _080B1898 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B187A
- ldrh r0, [r5]
- negs r0, r0
- strh r0, [r5]
-_080B187A:
- 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]
-_080B188A:
- ldr r0, _080B189C @ =sub_80B18A0
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1894: .4byte gUnknown_2037F1B
-_080B1898: .4byte gUnknown_2037F1A
-_080B189C: .4byte sub_80B18A0
- thumb_func_end sub_80B1838
-
- thumb_func_start sub_80B18A0
-sub_80B18A0: @ 80B18A0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0xB
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x4
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x30
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B18DC
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B18DC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B18A0
-
- thumb_func_start sub_80B18E4
-sub_80B18E4: @ 80B18E4
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_8075114
- ldrh r0, [r4, 0x22]
- adds r0, 0x14
- strh r0, [r4, 0x22]
- movs r0, 0xBF
- strh r0, [r4, 0x30]
- ldr r1, _080B1908 @ =sub_80B190C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1908: .4byte sub_80B190C
- thumb_func_end sub_80B18E4
-
- thumb_func_start sub_80B190C
-sub_80B190C: @ 80B190C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x47
- bne _080B1946
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B1946:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B190C
-
- thumb_func_start sub_80B194C
-sub_80B194C: @ 80B194C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B197C @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r1, _080B1980 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x8]
- ldrh r0, [r1]
- strh r0, [r4, 0xA]
- ldr r0, _080B1984 @ =0x00002719
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xC]
- ldr r0, _080B1988 @ =sub_80B198C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B197C: .4byte gTasks
-_080B1980: .4byte gUnknown_2037F02
-_080B1984: .4byte 0x00002719
-_080B1988: .4byte sub_80B198C
- thumb_func_end sub_80B194C
-
- thumb_func_start sub_80B198C
-sub_80B198C: @ 80B198C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, _080B1A0C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r3, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r4, 0xA
- ldrsh r1, [r3, r4]
- adds r7, r2, 0
- cmp r0, r1
- bne _080B19EA
- movs r0, 0
- strh r0, [r3, 0x1C]
- ldrb r0, [r3, 0xC]
- ldr r2, _080B1A10 @ =gPlttBufferFaded
- lsls r0, 4
- movs r3, 0x84
- lsls r3, 1
- adds r1, r0, r3
- lsls r1, 1
- adds r1, r2
- ldrh r6, [r1]
- movs r4, 0x7
- mov r12, r0
- ldr r0, _080B1A14 @ =0x00000107
- add r0, r12
- lsls r0, 1
- adds r3, r0, r2
-_080B19D2:
- ldrh r0, [r3]
- strh r0, [r1]
- subs r3, 0x2
- subs r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bgt _080B19D2
- ldr r0, _080B1A18 @ =0x00000101
- add r0, r12
- lsls r0, 1
- adds r0, r2
- strh r6, [r0]
-_080B19EA:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r7
- ldrh r1, [r0, 0x8]
- subs r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- cmp r1, 0
- bne _080B1A04
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B1A04:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1A0C: .4byte gTasks
-_080B1A10: .4byte gPlttBufferFaded
-_080B1A14: .4byte 0x00000107
-_080B1A18: .4byte 0x00000101
- thumb_func_end sub_80B198C
-
- thumb_func_start sub_80B1A1C
-sub_80B1A1C: @ 80B1A1C
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080B1A88 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B1A3C
- ldr r1, _080B1A8C @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080B1A3C:
- ldr r4, _080B1A8C @ =gUnknown_2037F02
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldrh r0, [r6, 0x20]
- strh r0, [r6, 0x30]
- ldr r5, _080B1A90 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrh r0, [r6, 0x22]
- strh r0, [r6, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x6]
- adds r0, r4
- strh r0, [r6, 0x36]
- adds r0, r6, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r0, _080B1A94 @ =sub_8074F50
- str r0, [r6, 0x1C]
- ldr r1, _080B1A98 @ =sub_80B1A9C
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1A88: .4byte gUnknown_2037F1A
-_080B1A8C: .4byte gUnknown_2037F02
-_080B1A90: .4byte gUnknown_2037F1B
-_080B1A94: .4byte sub_8074F50
-_080B1A98: .4byte sub_80B1A9C
- thumb_func_end sub_80B1A1C
-
- thumb_func_start sub_80B1A9C
-sub_80B1A9C: @ 80B1A9C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080B1AB0
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B1AB0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B1A9C
-
- thumb_func_start sub_80B1AB8
-sub_80B1AB8: @ 80B1AB8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B1B54 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B1AE4
- ldr r1, _080B1B58 @ =gUnknown_2037F02
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r1, 0x6]
-_080B1AE4:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B1AFC
- ldr r0, _080B1B58 @ =gUnknown_2037F02
- ldrh r1, [r0, 0x2]
- negs r1, r1
- strh r1, [r0, 0x2]
- ldrh r1, [r0, 0x6]
- negs r1, r1
- strh r1, [r0, 0x6]
-_080B1AFC:
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- ldr r2, _080B1B58 @ =gUnknown_2037F02
- ldrh r1, [r2]
- ldrh r3, [r5, 0x20]
- adds r1, r3
- strh r1, [r5, 0x20]
- lsrs r0, 24
- ldrh r1, [r2, 0x2]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldrh r0, [r2, 0x8]
- strh r0, [r5, 0x2E]
- movs r3, 0xC
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _080B1B60
- ldr r4, _080B1B5C @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- b _080B1B72
- .align 2, 0
-_080B1B54: .4byte gUnknown_2037F1A
-_080B1B58: .4byte gUnknown_2037F02
-_080B1B5C: .4byte gUnknown_2037F1B
-_080B1B60:
- ldr r0, _080B1BA0 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x32
- adds r3, r5, 0
- adds r3, 0x36
- movs r1, 0x1
- bl sub_8076D9C
-_080B1B72:
- ldr r4, _080B1BA4 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x4]
- ldrh r1, [r5, 0x32]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r4, 0x6]
- ldrh r3, [r5, 0x36]
- adds r0, r3
- strh r0, [r5, 0x36]
- ldr r0, _080B1BA8 @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _080B1BAC @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldrb r1, [r4, 0xA]
- adds r0, r5, 0
- bl SeekSpriteAnim
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1BA0: .4byte gUnknown_2037F1B
-_080B1BA4: .4byte gUnknown_2037F02
-_080B1BA8: .4byte sub_8075590
-_080B1BAC: .4byte DestroyAnimSprite
- thumb_func_end sub_80B1AB8
-
- thumb_func_start sub_80B1BB0
-sub_80B1BB0: @ 80B1BB0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r1, _080B1BEC @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldr r0, _080B1BF0 @ =sub_80B1BF8
- str r0, [r4, 0x1C]
- movs r0, 0
- bl GetAnimBankSpriteId
- ldr r2, _080B1BF4 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1BEC: .4byte gUnknown_2037F02
-_080B1BF0: .4byte sub_80B1BF8
-_080B1BF4: .4byte gSprites
- thumb_func_end sub_80B1BB0
-
- thumb_func_start sub_80B1BF8
-sub_80B1BF8: @ 80B1BF8
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r0, 0
- ble _080B1C0C
- subs r0, r1, 0x1
- strh r0, [r2, 0x2E]
- b _080B1C1E
-_080B1C0C:
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r2, 0x26]
- subs r1, r0
- strh r1, [r2, 0x26]
-_080B1C1E:
- movs r3, 0x22
- ldrsh r0, [r2, r3]
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _080B1C36
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080B1C36:
- pop {r0}
- bx r0
- thumb_func_end sub_80B1BF8
-
- thumb_func_start sub_80B1C3C
-sub_80B1C3C: @ 80B1C3C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080B1C64 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B1C6C
- movs r0, 0x88
- lsls r0, 1
- strh r0, [r5, 0x20]
- ldr r0, _080B1C68 @ =0x0000ffe0
- strh r0, [r5, 0x22]
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _080B1C72
- .align 2, 0
-_080B1C64: .4byte gUnknown_2037F1A
-_080B1C68: .4byte 0x0000ffe0
-_080B1C6C:
- ldr r0, _080B1CB0 @ =0x0000ffe0
- strh r0, [r5, 0x20]
- strh r0, [r5, 0x22]
-_080B1C72:
- ldr r0, _080B1CB4 @ =gUnknown_2037F02
- ldrh r0, [r0]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldr r4, _080B1CB8 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- 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 r0, _080B1CBC @ =sub_80B1CC0
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1CB0: .4byte 0x0000ffe0
-_080B1CB4: .4byte gUnknown_2037F02
-_080B1CB8: .4byte gUnknown_2037F1B
-_080B1CBC: .4byte sub_80B1CC0
- thumb_func_end sub_80B1C3C
-
- thumb_func_start sub_80B1CC0
-sub_80B1CC0: @ 80B1CC0
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl sub_80755E0
- ldrh r1, [r4, 0x34]
- lsrs r0, r1, 8
- cmp r0, 0xC8
- bls _080B1CE8
- ldrh r0, [r4, 0x24]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- movs r0, 0
- strh r0, [r4, 0x24]
- movs r0, 0xFF
- ands r0, r1
- strh r0, [r4, 0x34]
-_080B1CE8:
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- adds r0, r1
- adds r0, 0x20
- movs r1, 0x98
- lsls r1, 1
- cmp r0, r1
- bhi _080B1D0A
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- cmp r0, 0xA0
- ble _080B1D30
-_080B1D0A:
- movs r0, 0
- bl GetAnimBankSpriteId
- ldr r2, _080B1D38 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B1D30:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1D38: .4byte gSprites
- thumb_func_end sub_80B1CC0
-
- thumb_func_start sub_80B1D3C
-sub_80B1D3C: @ 80B1D3C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- subs r1, r0, 0x1
- strh r1, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bgt _080B1D7C
- ldrb r0, [r4, 0x1]
- lsls r0, 30
- lsrs r0, 30
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B1D6E
- 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]
-_080B1D6E:
- adds r0, r4, 0
- bl DestroySprite
- ldr r1, _080B1D84 @ =gUnknown_2037EE2
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_080B1D7C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1D84: .4byte gUnknown_2037EE2
- thumb_func_end sub_80B1D3C
-
- thumb_func_start sub_80B1D88
-sub_80B1D88: @ 80B1D88
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r5, r7, 0
- adds r5, 0x2E
- ldr r0, _080B1DA8 @ =gUnknown_2037F02
- ldrh r1, [r0, 0xE]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080B1DB0
- ldr r0, _080B1DAC @ =gUnknown_2037F1A
- b _080B1DB2
- .align 2, 0
-_080B1DA8: .4byte gUnknown_2037F02
-_080B1DAC: .4byte gUnknown_2037F1A
-_080B1DB0:
- ldr r0, _080B1E5C @ =gUnknown_2037F1B
-_080B1DB2:
- ldrb r6, [r0]
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B1DC8
- ldr r1, _080B1E60 @ =gUnknown_2037F02
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080B1DC8:
- adds r0, r6, 0
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- ldr r4, _080B1E60 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r7, 0x20]
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- ldrh r1, [r4, 0x2]
- lsrs r0, 24
- adds r1, r0, r1
- strh r1, [r7, 0x22]
- lsls r1, 8
- strh r1, [r5, 0x8]
- ldrh r1, [r4, 0xC]
- adds r0, r1
- lsls r0, 1
- ldrh r2, [r5, 0xE]
- movs r1, 0x1
- ands r1, r2
- orrs r1, r0
- strh r1, [r5, 0xE]
- ldrb r0, [r5]
- movs r2, 0x4
- mov r8, r2
- mov r1, r8
- orrs r0, r1
- strb r0, [r5]
- ldrh r0, [r4, 0x4]
- ldrb r1, [r4, 0x4]
- strh r1, [r5, 0x2]
- lsls r0, 16
- lsrs r0, 24
- strh r0, [r5, 0xA]
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0x4]
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x6]
- ldrh r0, [r4, 0xA]
- strh r0, [r5, 0xC]
- subs r1, 0x40
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0x7F
- bhi _080B1EBE
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B1E64
- adds r0, r6, 0
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r7, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r7, 0x5]
- b _080B1E7C
- .align 2, 0
-_080B1E5C: .4byte gUnknown_2037F1B
-_080B1E60: .4byte gUnknown_2037F02
-_080B1E64:
- adds r0, r6, 0
- bl sub_8076884
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r7, 0x5]
-_080B1E7C:
- ldrb r1, [r5, 0xE]
- movs r4, 0x2
- negs r4, r4
- adds r0, r4, 0
- ands r0, r1
- strb r0, [r5, 0xE]
- movs r2, 0x4
- ldrsh r0, [r5, r2]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- bne _080B1F1E
- adds r3, r7, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r0, r2, 31
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r7, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- b _080B1F16
-_080B1EBE:
- adds r0, r6, 0
- bl sub_8076884
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r7, 0x5]
- ldrb r0, [r5, 0xE]
- movs r4, 0x1
- orrs r0, r4
- strb r0, [r5, 0xE]
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _080B1F1E
- adds r3, r7, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r1, r2, 31
- lsrs r1, 31
- movs r0, 0x1
- eors r1, r0
- ands r1, r4
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r7, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- mov r2, r8
- orrs r0, r2
-_080B1F16:
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
-_080B1F1E:
- ldrh r1, [r5, 0x2]
- lsrs r1, 6
- lsls r1, 4
- ldrb r2, [r5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r1
- strb r0, [r5]
- ldr r3, _080B1F88 @ =gSineTable
- ldrh r0, [r5, 0x2]
- lsls r0, 1
- adds r0, r3
- movs r2, 0
- ldrsh r1, [r0, r2]
- ldrb r0, [r5, 0xC]
- muls r0, r1
- asrs r0, 8
- strh r0, [r7, 0x24]
- ldrb r2, [r7, 0x3]
- lsls r2, 26
- lsrs r2, 27
- movs r1, 0x24
- ldrsh r0, [r7, r1]
- negs r0, r0
- asrs r0, 1
- ldrb r5, [r5, 0xA]
- adds r0, r5
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r3
- ldrh r4, [r1]
- ldr r1, _080B1F8C @ =gOamMatrices
- lsls r2, 3
- adds r2, r1
- adds r0, 0x40
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r2, 0x6]
- strh r0, [r2]
- strh r4, [r2, 0x2]
- lsls r0, r4, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r2, 0x4]
- ldr r0, _080B1F90 @ =sub_80B1F94
- str r0, [r7, 0x1C]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1F88: .4byte gSineTable
-_080B1F8C: .4byte gOamMatrices
-_080B1F90: .4byte sub_80B1F94
- thumb_func_end sub_80B1D88
-
- thumb_func_start sub_80B1F94
-sub_80B1F94: @ 80B1F94
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- movs r6, 0
- adds r4, r5, 0
- adds r4, 0x2E
- ldrb r2, [r4]
- movs r7, 0x1
- movs r0, 0x1
- mov r9, r0
- ands r0, r2
- cmp r0, 0
- beq _080B1FCE
- ldrb r0, [r4, 0x1]
- adds r1, r0, 0
- adds r1, 0xFF
- strb r1, [r4, 0x1]
- lsls r0, 24
- cmp r0, 0
- beq _080B1FC2
- b _080B24AA
-_080B1FC2:
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r4]
- strb r6, [r4, 0x1]
- b _080B24AA
-_080B1FCE:
- ldrh r0, [r4, 0x2]
- lsrs r1, r0, 6
- mov r12, r0
- cmp r1, 0x1
- bne _080B1FDA
- b _080B20FE
-_080B1FDA:
- cmp r1, 0x1
- bgt _080B1FE4
- cmp r1, 0
- beq _080B1FF2
- b _080B23F0
-_080B1FE4:
- cmp r1, 0x2
- bne _080B1FEA
- b _080B21F2
-_080B1FEA:
- cmp r1, 0x3
- bne _080B1FF0
- b _080B22E6
-_080B1FF0:
- b _080B23F0
-_080B1FF2:
- lsls r1, r2, 24
- lsrs r0, r1, 28
- cmp r0, 0x1
- bne _080B2006
- movs r0, 0x8
- orrs r0, r2
- orrs r0, r7
- strb r0, [r4]
- strb r6, [r4, 0x1]
- b _080B20F4
-_080B2006:
- lsrs r0, r1, 28
- cmp r0, 0x3
- bne _080B2028
- lsls r0, r2, 30
- lsrs r0, 31
- movs r1, 0x1
- eors r0, r1
- ands r0, r7
- lsls r0, 1
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- orrs r1, r7
- strb r1, [r4]
- strb r6, [r4, 0x1]
- b _080B20F4
-_080B2028:
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _080B20F4
- adds r3, r5, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r1, r2, 31
- lsrs r1, 31
- movs r6, 0x1
- eors r1, r6
- ands r1, r7
- movs r0, 0x2
- negs r0, r0
- mov r8, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r5, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
- ldrb r1, [r4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080B20E6
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B20B6
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B209C
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B20D4
-_080B209C:
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B20D4
-_080B20B6:
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B20CA
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0xC
- b _080B20D2
-_080B20CA:
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0xC
-_080B20D2:
- strb r0, [r1]
-_080B20D4:
- ldrb r2, [r4, 0xE]
- lsls r0, r2, 31
- lsrs r0, 31
- eors r0, r6
- ands r0, r7
- mov r1, r8
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0xE]
-_080B20E6:
- ldrb r1, [r4]
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
- ldrh r1, [r4, 0x2]
- mov r12, r1
-_080B20F4:
- ldrb r1, [r4]
- movs r0, 0xF
- ands r0, r1
- strb r0, [r4]
- b _080B23F0
-_080B20FE:
- lsls r1, r2, 24
- lsrs r0, r1, 28
- cmp r0, 0
- bne _080B210C
- movs r0, 0x8
- orrs r0, r2
- b _080B2114
-_080B210C:
- lsrs r0, r1, 28
- cmp r0, 0x2
- bne _080B211C
- adds r0, r2, 0
-_080B2114:
- orrs r0, r7
- strb r0, [r4]
- strb r6, [r4, 0x1]
- b _080B21E8
-_080B211C:
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _080B21E8
- adds r3, r5, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r1, r2, 31
- lsrs r1, 31
- movs r6, 0x1
- eors r1, r6
- ands r1, r7
- movs r0, 0x2
- negs r0, r0
- mov r8, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r5, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
- ldrb r1, [r4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080B21DA
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B21AA
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B2190
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B21C8
-_080B2190:
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B21C8
-_080B21AA:
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B21BE
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0xC
- b _080B21C6
-_080B21BE:
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0xC
-_080B21C6:
- strb r0, [r1]
-_080B21C8:
- ldrb r2, [r4, 0xE]
- lsls r0, r2, 31
- lsrs r0, 31
- eors r0, r6
- ands r0, r7
- mov r1, r8
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0xE]
-_080B21DA:
- ldrb r1, [r4]
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
- ldrh r1, [r4, 0x2]
- mov r12, r1
-_080B21E8:
- ldrb r0, [r4]
- movs r1, 0xF
- ands r1, r0
- movs r0, 0x10
- b _080B23EC
-_080B21F2:
- lsls r1, r2, 24
- lsrs r0, r1, 28
- cmp r0, 0x3
- bne _080B2200
- movs r0, 0x8
- orrs r0, r2
- b _080B2208
-_080B2200:
- lsrs r0, r1, 28
- cmp r0, 0x1
- bne _080B2210
- adds r0, r2, 0
-_080B2208:
- orrs r0, r7
- strb r0, [r4]
- strb r6, [r4, 0x1]
- b _080B22DC
-_080B2210:
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _080B22DC
- adds r3, r5, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r1, r2, 31
- lsrs r1, 31
- movs r6, 0x1
- eors r1, r6
- ands r1, r7
- movs r0, 0x2
- negs r0, r0
- mov r8, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r5, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
- ldrb r1, [r4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080B22CE
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B229E
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B2284
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B22BC
-_080B2284:
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B22BC
-_080B229E:
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B22B2
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0xC
- b _080B22BA
-_080B22B2:
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0xC
-_080B22BA:
- strb r0, [r1]
-_080B22BC:
- ldrb r2, [r4, 0xE]
- lsls r0, r2, 31
- lsrs r0, 31
- eors r0, r6
- ands r0, r7
- mov r1, r8
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0xE]
-_080B22CE:
- ldrb r1, [r4]
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
- ldrh r1, [r4, 0x2]
- mov r12, r1
-_080B22DC:
- ldrb r0, [r4]
- movs r1, 0xF
- ands r1, r0
- movs r0, 0x20
- b _080B23EC
-_080B22E6:
- lsls r1, r2, 24
- lsrs r0, r1, 28
- cmp r0, 0x2
- bne _080B22F6
- movs r0, 0x8
- orrs r0, r2
- strb r0, [r4]
- b _080B23E4
-_080B22F6:
- lsrs r0, r1, 28
- cmp r0, 0
- bne _080B2318
- lsls r0, r2, 30
- lsrs r0, 31
- movs r1, 0x1
- eors r0, r1
- ands r0, r7
- lsls r0, 1
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- orrs r1, r7
- strb r1, [r4]
- strb r6, [r4, 0x1]
- b _080B23E4
-_080B2318:
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _080B23E4
- adds r3, r5, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r1, r2, 31
- lsrs r1, 31
- movs r6, 0x1
- eors r1, r6
- ands r1, r7
- movs r0, 0x2
- negs r0, r0
- mov r8, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r5, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
- ldrb r1, [r4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080B23D6
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B23A6
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B238C
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B23C4
-_080B238C:
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B23C4
-_080B23A6:
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B23BA
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0xC
- b _080B23C2
-_080B23BA:
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0xC
-_080B23C2:
- strb r0, [r1]
-_080B23C4:
- ldrb r2, [r4, 0xE]
- lsls r0, r2, 31
- lsrs r0, 31
- eors r0, r6
- ands r0, r7
- mov r1, r8
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0xE]
-_080B23D6:
- ldrb r1, [r4]
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
- ldrh r1, [r4, 0x2]
- mov r12, r1
-_080B23E4:
- ldrb r0, [r4]
- movs r1, 0xF
- ands r1, r0
- movs r0, 0x30
-_080B23EC:
- orrs r1, r0
- strb r1, [r4]
-_080B23F0:
- ldrb r1, [r4]
- lsls r1, 30
- lsrs r1, 31
- adds r0, r4, 0
- adds r0, 0xC
- adds r0, r1
- ldrb r1, [r0]
- ldr r3, _080B2478 @ =gSineTable
- mov r2, r12
- lsls r0, r2, 1
- adds r0, r3
- movs r2, 0
- ldrsh r0, [r0, r2]
- muls r0, r1
- asrs r0, 8
- strh r0, [r5, 0x24]
- ldrb r2, [r5, 0x3]
- lsls r2, 26
- lsrs r2, 27
- movs r1, 0x24
- ldrsh r0, [r5, r1]
- negs r0, r0
- asrs r0, 1
- ldrb r1, [r4, 0xA]
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r3
- ldrh r6, [r1]
- ldr r1, _080B247C @ =gOamMatrices
- lsls r2, 3
- adds r2, r1
- adds r0, 0x40
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r2, 0x6]
- strh r0, [r2]
- strh r6, [r2, 0x2]
- lsls r0, r6, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r2, 0x4]
- ldrh r0, [r4, 0x6]
- ldrh r2, [r4, 0x8]
- adds r0, r2
- strh r0, [r4, 0x8]
- lsls r0, 16
- lsrs r0, 24
- strh r0, [r5, 0x22]
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _080B2480
- ldrh r0, [r4, 0x4]
- subs r1, 0x1
- ands r1, r0
- ldrh r0, [r4, 0x2]
- subs r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2]
- b _080B2490
- .align 2, 0
-_080B2478: .4byte gSineTable
-_080B247C: .4byte gOamMatrices
-_080B2480:
- ldrh r0, [r4, 0x4]
- ldr r1, _080B24B8 @ =0x00007fff
- ands r1, r0
- ldrh r2, [r4, 0x2]
- adds r1, r2
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r4, 0x2]
-_080B2490:
- movs r0, 0x22
- ldrsh r1, [r5, r0]
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- adds r1, r0
- ldrh r0, [r4, 0xE]
- lsrs r0, 1
- cmp r1, r0
- blt _080B24AA
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldr r0, _080B24BC @ =sub_80B1D3C
- str r0, [r5, 0x1C]
-_080B24AA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B24B8: .4byte 0x00007fff
-_080B24BC: .4byte sub_80B1D3C
- thumb_func_end sub_80B1F94
-
- thumb_func_start sub_80B24C0
-sub_80B24C0: @ 80B24C0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, _080B2508 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_8076884
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- ldr r5, _080B250C @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r0, _080B2510 @ =sub_8075DF4
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2508: .4byte gUnknown_2037F1B
-_080B250C: .4byte gUnknown_2037F1A
-_080B2510: .4byte sub_8075DF4
- thumb_func_end sub_80B24C0
-
- thumb_func_start sub_80B2514
-sub_80B2514: @ 80B2514
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r5, _080B2554 @ =gUnknown_2037F02
- ldrh r0, [r5]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x32]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x34]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B25C4
- ldr r0, _080B2558 @ =gUnknown_2023BD6
- ldr r1, _080B255C @ =gUnknown_2037F1B
- ldrb r2, [r1]
- adds r0, r2, r0
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B2560
- adds r0, r2, 0
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x6]
- adds r0, r5
- b _080B256E
- .align 2, 0
-_080B2554: .4byte gUnknown_2037F02
-_080B2558: .4byte gUnknown_2023BD6
-_080B255C: .4byte gUnknown_2037F1B
-_080B2560:
- adds r0, r2, 0
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x28
-_080B256E:
- strh r0, [r4, 0x3C]
- ldr r0, _080B259C @ =gUnknown_2037F02
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080B25A4
- ldr r0, _080B25A0 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x5]
- b _080B25D8
- .align 2, 0
-_080B259C: .4byte gUnknown_2037F02
-_080B25A0: .4byte gUnknown_2037F1B
-_080B25A4:
- ldr r0, _080B25C0 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_8076884
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- b _080B25D8
- .align 2, 0
-_080B25C0: .4byte gUnknown_2037F1B
-_080B25C4:
- ldr r0, _080B267C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x6]
- adds r0, r5
- strh r0, [r4, 0x3C]
-_080B25D8:
- ldr r5, _080B2680 @ =gSineTable
- ldrh r3, [r4, 0x30]
- movs r1, 0xFF
- ands r1, r3
- lsls r0, r1, 1
- adds r0, r5
- ldrh r0, [r0]
- movs r2, 0
- strh r0, [r4, 0x36]
- adds r1, 0x40
- lsls r1, 1
- adds r1, r5
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r4, 0x38]
- strh r2, [r4, 0x3A]
- strh r2, [r4, 0x26]
- strh r2, [r4, 0x24]
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r6, r0, 27
- lsls r3, 16
- lsrs r3, 24
- strh r3, [r4, 0x30]
- bl Random
- lsls r0, 16
- asrs r7, r0, 16
- movs r0, 0x80
- lsls r0, 8
- ands r0, r7
- cmp r0, 0
- beq _080B2622
- ldrh r1, [r4, 0x30]
- movs r0, 0xFF
- subs r0, r1
- strh r0, [r4, 0x30]
-_080B2622:
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r0, r1, 1
- adds r0, r5
- ldrh r0, [r0]
- ldr r3, _080B2684 @ =gOamMatrices
- lsls r2, r6, 3
- adds r2, r3
- adds r1, 0x40
- lsls r1, 1
- adds r1, r5
- ldrh r1, [r1]
- strh r1, [r2, 0x6]
- strh r1, [r2]
- strh r0, [r2, 0x2]
- lsls r0, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r2, 0x4]
- adds r3, r4, 0
- adds r3, 0x3F
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
- movs r0, 0x1
- ands r0, r7
- cmp r0, 0
- beq _080B2672
- adds r2, r4, 0
- adds r2, 0x2A
- movs r1, 0x1
- movs r0, 0x1
- strb r0, [r2]
- ldrb r0, [r3]
- orrs r0, r1
- strb r0, [r3]
-_080B2672:
- ldr r0, _080B2688 @ =sub_80B268C
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B267C: .4byte gUnknown_2037F1B
-_080B2680: .4byte gSineTable
-_080B2684: .4byte gOamMatrices
-_080B2688: .4byte sub_80B268C
- thumb_func_end sub_80B2514
-
- thumb_func_start sub_80B268C
-sub_80B268C: @ 80B268C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r4, r0, 0
- adds r5, r4, 0
- adds r5, 0x2E
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- movs r1, 0
- mov r8, r1
- movs r7, 0
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080B2770
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- muls r0, r1
- asrs r6, r0, 8
- strh r6, [r4, 0x24]
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- muls r0, r1
- asrs r3, r0, 8
- strh r3, [r4, 0x26]
- ldrh r2, [r4, 0x34]
- movs r1, 0xFF
- adds r0, r1, 0
- ands r0, r2
- ldrh r2, [r4, 0x3A]
- adds r0, r2
- strh r0, [r4, 0x3A]
- ldrh r2, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- ands r1, r2
- cmp r0, r1
- blt _080B2770
- ldrh r0, [r4, 0x20]
- adds r0, r6
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x22]
- adds r0, r3
- strh r0, [r4, 0x22]
- strh r7, [r4, 0x24]
- strh r7, [r4, 0x26]
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0x10
- bl memcpy
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x10
- bl memset
- ldrh r0, [r4, 0x22]
- lsls r0, 8
- strh r0, [r5, 0x8]
- mov r0, sp
- ldrh r0, [r0, 0x6]
- lsrs r1, r0, 8
- strh r1, [r5, 0x6]
- strh r7, [r5, 0x2]
- mov r0, sp
- ldrh r0, [r0, 0x2]
- strh r0, [r5, 0xA]
- adds r0, r4, 0
- adds r0, 0x2A
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B2740
- movs r0, 0x8
- ands r1, r0
- cmp r1, 0
- beq _080B2738
- ldr r0, _080B2734 @ =0x00008001
- b _080B274E
- .align 2, 0
-_080B2734: .4byte 0x00008001
-_080B2738:
- ldr r0, _080B273C @ =0x00008002
- b _080B274E
- .align 2, 0
-_080B273C: .4byte 0x00008002
-_080B2740:
- movs r0, 0x8
- ands r1, r0
- cmp r1, 0
- beq _080B274C
- movs r0, 0x1
- b _080B274E
-_080B274C:
- movs r0, 0x2
-_080B274E:
- strh r0, [r5, 0x4]
- mov r0, sp
- ldrh r0, [r0, 0x4]
- lsrs r0, 8
- strb r0, [r5, 0xC]
- subs r0, 0x2
- strb r0, [r5, 0xD]
- mov r0, sp
- ldrh r1, [r0, 0xE]
- lsls r1, 1
- ldrh r2, [r5, 0xE]
- movs r0, 0x1
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0xE]
- ldr r0, _080B277C @ =sub_80B1F94
- str r0, [r4, 0x1C]
-_080B2770:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B277C: .4byte sub_80B1F94
- thumb_func_end sub_80B268C
-
- thumb_func_start sub_80B2780
-sub_80B2780: @ 80B2780
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080B2798 @ =gUnknown_2037F02
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B279C
- adds r0, r5, 0
- movs r1, 0
- bl sub_8075160
- b _080B27A4
- .align 2, 0
-_080B2798: .4byte gUnknown_2037F02
-_080B279C:
- adds r0, r5, 0
- movs r1, 0
- bl sub_8075114
-_080B27A4:
- ldr r4, _080B280C @ =gUnknown_2037F02
- movs r2, 0x4
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080B27BC
- ldr r0, _080B2810 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B27D2
-_080B27BC:
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080B27D8
- ldr r0, _080B2814 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B27D8
-_080B27D2:
- ldrh r0, [r5, 0x20]
- adds r0, 0x8
- strh r0, [r5, 0x20]
-_080B27D8:
- ldr r4, _080B280C @ =gUnknown_2037F02
- ldrb r1, [r4, 0x8]
- adds r0, r5, 0
- bl SeekSpriteAnim
- ldrh r0, [r5, 0x20]
- subs r0, 0x20
- strh r0, [r5, 0x20]
- ldr r0, _080B2818 @ =0x00000ccc
- strh r0, [r5, 0x30]
- ldrh r1, [r4, 0x8]
- movs r0, 0xC
- adds r2, r0, 0
- muls r2, r1
- adds r0, r2, 0
- ldrh r2, [r5, 0x24]
- adds r0, r2
- strh r0, [r5, 0x24]
- strh r1, [r5, 0x2E]
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0x3C]
- ldr r0, _080B281C @ =sub_80B2820
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B280C: .4byte gUnknown_2037F02
-_080B2810: .4byte gUnknown_2037F1A
-_080B2814: .4byte gUnknown_2037F1B
-_080B2818: .4byte 0x00000ccc
-_080B281C: .4byte sub_80B2820
- thumb_func_end sub_80B2780
-
- thumb_func_start sub_80B2820
-sub_80B2820: @ 80B2820
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x24]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _080B284A
- strh r1, [r4, 0x2E]
- strh r1, [r4, 0x24]
- adds r0, r4, 0
- bl StartSpriteAnim
-_080B284A:
- ldrh r0, [r4, 0x3C]
- subs r0, 0x1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080B2862
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B2862:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B2820
-
- thumb_func_start sub_80B2868
-sub_80B2868: @ 80B2868
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, _080B2900 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r7, r0, r1
- ldrh r0, [r7, 0x8]
- movs r1, 0x1F
- ands r0, r1
- cmp r0, 0
- bne _080B28E2
- ldr r1, _080B2904 @ =gUnknown_2037EE2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r1, 0x8
- ldrsh r0, [r7, r1]
- movs r5, 0xD
- negs r5, r5
- adds r1, r5, 0
- bl Sin
- ldr r4, _080B2908 @ =gUnknown_2037F02
- strh r0, [r4]
- movs r1, 0x8
- ldrsh r0, [r7, r1]
- adds r1, r5, 0
- bl Cos
- strh r0, [r4, 0x2]
- movs r0, 0x1
- strh r0, [r4, 0x4]
- movs r0, 0x3
- strh r0, [r4, 0x6]
- ldr r0, _080B290C @ =gUnknown_83E7C98
- mov r8, r0
- ldr r5, _080B2910 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- mov r0, r8
- adds r1, r4, 0
- movs r3, 0x3
- bl CreateSpriteAndAnimate
-_080B28E2:
- ldrh r0, [r7, 0x8]
- adds r0, 0x8
- strh r0, [r7, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _080B28F6
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080B28F6:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2900: .4byte gTasks
-_080B2904: .4byte gUnknown_2037EE2
-_080B2908: .4byte gUnknown_2037F02
-_080B290C: .4byte gUnknown_83E7C98
-_080B2910: .4byte gUnknown_2037F1B
- thumb_func_end sub_80B2868
-
- thumb_func_start sub_80B2914
-sub_80B2914: @ 80B2914
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B2926
- cmp r0, 0x1
- beq _080B2958
- b _080B296C
-_080B2926:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075160
- movs r0, 0
- bl GetAnimBankSpriteId
- ldr r2, _080B2954 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080B296C
- .align 2, 0
-_080B2954: .4byte gSprites
-_080B2958:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B296C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B296C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B2914
-
- thumb_func_start sub_80B2974
-sub_80B2974: @ 80B2974
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B29AC
- cmp r0, 0x1
- bgt _080B298A
- cmp r0, 0
- beq _080B2990
- b _080B29FE
-_080B298A:
- cmp r0, 0x2
- beq _080B29C0
- b _080B29FE
-_080B2990:
- ldr r0, _080B29A8 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- negs r0, r0
- subs r0, 0x20
- strh r0, [r4, 0x26]
- b _080B29B8
- .align 2, 0
-_080B29A8: .4byte gUnknown_2037F1B
-_080B29AC:
- ldrh r0, [r4, 0x26]
- adds r0, 0xA
- strh r0, [r4, 0x26]
- lsls r0, 16
- cmp r0, 0
- blt _080B29FE
-_080B29B8:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080B29FE
-_080B29C0:
- ldrh r0, [r4, 0x26]
- subs r0, 0xA
- strh r0, [r4, 0x26]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _080B29FE
- movs r0, 0
- bl GetAnimBankSpriteId
- ldr r2, _080B2A04 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B29FE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2A04: .4byte gSprites
- thumb_func_end sub_80B2974
-
- thumb_func_start sub_80B2A08
-sub_80B2A08: @ 80B2A08
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r1, _080B2A44 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldr r0, _080B2A48 @ =sub_80B2A50
- str r0, [r4, 0x1C]
- movs r0, 0
- bl GetAnimBankSpriteId
- ldr r2, _080B2A4C @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2A44: .4byte gUnknown_2037F02
-_080B2A48: .4byte sub_80B2A50
-_080B2A4C: .4byte gSprites
- thumb_func_end sub_80B2A08
-
- thumb_func_start sub_80B2A50
-sub_80B2A50: @ 80B2A50
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r0, 0
- ble _080B2A64
- subs r0, r1, 0x1
- strh r0, [r2, 0x2E]
- b _080B2AA8
-_080B2A64:
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- ble _080B2A8A
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r2, 0x26]
- subs r1, r0
- strh r1, [r2, 0x26]
- b _080B2AA8
-_080B2A8A:
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
- ldrh r0, [r2, 0x34]
- adds r1, r0, 0x1
- strh r1, [r2, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080B2AA8
- ldr r0, _080B2AAC @ =sub_80B2AB0
- str r0, [r2, 0x1C]
-_080B2AA8:
- pop {r0}
- bx r0
- .align 2, 0
-_080B2AAC: .4byte sub_80B2AB0
- thumb_func_end sub_80B2A50
-
- thumb_func_start sub_80B2AB0
-sub_80B2AB0: @ 80B2AB0
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r2, 0x26]
- adds r0, r1
- strh r0, [r2, 0x26]
- movs r3, 0x22
- ldrsh r0, [r2, r3]
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- ble _080B2AE0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
-_080B2AE0:
- movs r1, 0x26
- ldrsh r0, [r2, r1]
- cmp r0, 0
- ble _080B2AEE
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080B2AEE:
- pop {r0}
- bx r0
- thumb_func_end sub_80B2AB0
-
- thumb_func_start sub_80B2AF4
-sub_80B2AF4: @ 80B2AF4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080B2B08
- cmp r0, 0x1
- beq _080B2B60
- b _080B2BCC
-_080B2B08:
- ldr r0, _080B2B18 @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bne _080B2B20
- ldr r4, _080B2B1C @ =gUnknown_2037F1A
- b _080B2B22
- .align 2, 0
-_080B2B18: .4byte gUnknown_2037F02
-_080B2B1C: .4byte gUnknown_2037F1A
-_080B2B20:
- ldr r4, _080B2B5C @ =gUnknown_2037F1B
-_080B2B22:
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- movs r0, 0
- movs r3, 0x80
- lsls r3, 2
- strh r3, [r5, 0x30]
- movs r2, 0x80
- lsls r2, 1
- str r0, [sp]
- adds r0, r5, 0
- movs r1, 0
- bl sub_8075A1C
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080B2BCC
- .align 2, 0
-_080B2B5C: .4byte gUnknown_2037F1B
-_080B2B60:
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- cmp r0, 0xB
- bgt _080B2B6E
- ldrh r0, [r5, 0x30]
- subs r0, 0x28
- b _080B2B72
-_080B2B6E:
- ldrh r0, [r5, 0x30]
- adds r0, 0x28
-_080B2B72:
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r5, 0x32]
- movs r2, 0x80
- lsls r2, 1
- movs r0, 0x30
- ldrsh r3, [r5, r0]
- str r1, [sp]
- adds r0, r5, 0
- bl sub_8075A1C
- ldrb r1, [r5, 0x3]
- lsls r1, 26
- lsrs r1, 27
- movs r0, 0xF4
- lsls r0, 6
- ldr r2, _080B2BD4 @ =gOamMatrices
- lsls r1, 3
- adds r1, r2
- movs r2, 0x6
- ldrsh r1, [r1, r2]
- bl __divsi3
- adds r1, r0, 0x1
- cmp r1, 0x80
- ble _080B2BAC
- movs r1, 0x80
-_080B2BAC:
- movs r0, 0x40
- subs r0, r1
- lsrs r1, r0, 31
- adds r0, r1
- asrs r1, r0, 1
- strh r1, [r5, 0x26]
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- cmp r0, 0x18
- bne _080B2BCC
- adds r0, r5, 0
- bl sub_8075AD8
- adds r0, r5, 0
- bl DestroyAnimSprite
-_080B2BCC:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2BD4: .4byte gOamMatrices
- thumb_func_end sub_80B2AF4
-
- thumb_func_start sub_80B2BD8
-sub_80B2BD8: @ 80B2BD8
- push {r4,r5,lr}
- adds r5, r0, 0
- bl Random
- ldr r4, _080B2BFC @ =0x000001ff
- ands r4, r0
- bl Random
- movs r1, 0x7F
- ands r1, r0
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _080B2C00
- movs r2, 0xB8
- lsls r2, 2
- adds r0, r4, r2
- b _080B2C08
- .align 2, 0
-_080B2BFC: .4byte 0x000001ff
-_080B2C00:
- movs r2, 0xB8
- lsls r2, 2
- adds r0, r2, 0
- subs r0, r4
-_080B2C08:
- strh r0, [r5, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B2C1C
- movs r2, 0xE0
- lsls r2, 2
- adds r0, r2, 0
- adds r0, r1, r0
- b _080B2C24
-_080B2C1C:
- movs r2, 0xE0
- lsls r2, 2
- adds r0, r2, 0
- subs r0, r1
-_080B2C24:
- strh r0, [r5, 0x30]
- ldr r2, _080B2C4C @ =gUnknown_2037F02
- ldrh r0, [r2]
- strh r0, [r5, 0x32]
- lsls r0, 16
- cmp r0, 0
- beq _080B2C40
- ldrb r0, [r5, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r5, 0x3]
-_080B2C40:
- movs r1, 0x2
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _080B2C54
- ldr r4, _080B2C50 @ =gUnknown_2037F1A
- b _080B2C56
- .align 2, 0
-_080B2C4C: .4byte gUnknown_2037F02
-_080B2C50: .4byte gUnknown_2037F1A
-_080B2C54:
- ldr r4, _080B2C80 @ =gUnknown_2037F1B
-_080B2C56:
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x20
- strh r0, [r5, 0x22]
- ldr r0, _080B2C84 @ =sub_80B2C88
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2C80: .4byte gUnknown_2037F1B
-_080B2C84: .4byte sub_80B2C88
- thumb_func_end sub_80B2BD8
-
- thumb_func_start sub_80B2C88
-sub_80B2C88: @ 80B2C88
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B2CA0
- ldrh r3, [r4, 0x2E]
- lsls r0, r3, 16
- asrs r0, 24
- ldrh r1, [r4, 0x24]
- adds r0, r1
- b _080B2CAA
-_080B2CA0:
- ldrh r3, [r4, 0x2E]
- lsls r1, r3, 16
- asrs r1, 24
- ldrh r0, [r4, 0x24]
- subs r0, r1
-_080B2CAA:
- strh r0, [r4, 0x24]
- ldrh r2, [r4, 0x30]
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r4, 0x26]
- subs r0, r1
- strh r0, [r4, 0x26]
- strh r3, [r4, 0x2E]
- adds r0, r2, 0
- subs r0, 0x20
- strh r0, [r4, 0x30]
- lsls r0, r3, 16
- cmp r0, 0
- bge _080B2CCA
- movs r0, 0
- strh r0, [r4, 0x2E]
-_080B2CCA:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _080B2CDE
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B2CDE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B2C88
-
- thumb_func_start sub_80B2CE4
-sub_80B2CE4: @ 80B2CE4
- movs r1, 0
- strh r1, [r0, 0x3A]
- movs r1, 0x40
- strh r1, [r0, 0x3C]
- ldr r1, _080B2CF4 @ =sub_80B2CF8
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080B2CF4: .4byte sub_80B2CF8
- thumb_func_end sub_80B2CE4
-
- thumb_func_start sub_80B2CF8
-sub_80B2CF8: @ 80B2CF8
- push {lr}
- adds r3, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- cmp r1, 0
- beq _080B2D0A
- cmp r1, 0x1
- beq _080B2D58
- b _080B2D5E
-_080B2D0A:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080B2D5E
- strh r1, [r3, 0x30]
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- ldrb r2, [r1]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080B2D5E
- ldrb r1, [r1]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080B2D5E
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- b _080B2D5E
-_080B2D58:
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080B2D5E:
- pop {r0}
- bx r0
- thumb_func_end sub_80B2CF8
-
- thumb_func_start sub_80B2D64
-sub_80B2D64: @ 80B2D64
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- mov r8, r0
- ldrh r4, [r0, 0x20]
- ldrh r5, [r0, 0x22]
- ldr r6, _080B2E18 @ =gUnknown_2037F1A
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- strh r0, [r1, 0x20]
- ldrb r0, [r6]
- movs r1, 0x3
- bl sub_8074480
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- mov r2, r8
- strh r6, [r2, 0x22]
- ldrh r0, [r2, 0x20]
- mov r9, r0
- mov r1, r9
- lsls r0, r1, 4
- strh r0, [r2, 0x36]
- lsls r0, r6, 4
- strh r0, [r2, 0x38]
- lsls r4, 16
- asrs r4, 16
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- subs r0, r4, r0
- lsls r0, 4
- movs r1, 0xC
- bl __divsi3
- mov r2, r8
- strh r0, [r2, 0x3A]
- lsls r5, 16
- asrs r5, 16
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- subs r0, r5, r0
- lsls r0, 4
- movs r1, 0xC
- bl __divsi3
- mov r2, r8
- strh r0, [r2, 0x3C]
- mov r0, r9
- subs r4, r0
- lsls r4, 16
- asrs r4, 16
- subs r5, r6
- lsls r5, 16
- asrs r5, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8075B30
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 24
- adds r0, r1
- lsrs r0, 16
- movs r3, 0x80
- lsls r3, 1
- str r0, [sp]
- mov r0, r8
- movs r1, 0x1
- adds r2, r3, 0
- bl sub_8075A1C
- ldr r0, _080B2E1C @ =sub_80B2E20
- mov r2, r8
- str r0, [r2, 0x1C]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2E18: .4byte gUnknown_2037F1A
-_080B2E1C: .4byte sub_80B2E20
- thumb_func_end sub_80B2D64
-
- thumb_func_start sub_80B2E20
-sub_80B2E20: @ 80B2E20
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x3A]
- ldrh r1, [r2, 0x36]
- adds r0, r1
- strh r0, [r2, 0x36]
- ldrh r1, [r2, 0x3C]
- ldrh r3, [r2, 0x38]
- adds r1, r3
- strh r1, [r2, 0x38]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r3, r1, 20
- strh r3, [r2, 0x22]
- adds r0, 0x2D
- lsls r0, 16
- movs r1, 0xA5
- lsls r1, 17
- cmp r0, r1
- bhi _080B2E5A
- adds r1, r3, 0
- cmp r1, 0x9D
- bgt _080B2E5A
- movs r0, 0x2D
- negs r0, r0
- cmp r1, r0
- bge _080B2E60
-_080B2E5A:
- adds r0, r2, 0
- bl move_anim_8074EE0
-_080B2E60:
- pop {r0}
- bx r0
- thumb_func_end sub_80B2E20
-
- thumb_func_start sub_80B2E64
-sub_80B2E64: @ 80B2E64
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080B2E94 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B2E9C
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B2E98 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- b _080B2EBA
- .align 2, 0
-_080B2E94: .4byte gUnknown_2037F02
-_080B2E98: .4byte gSprites
-_080B2E9C:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B2EC8 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
-_080B2EBA:
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2EC8: .4byte gSprites
- thumb_func_end sub_80B2E64
-
- thumb_func_start sub_80B2ECC
-sub_80B2ECC: @ 80B2ECC
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r0, _080B2F84 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B2EE8
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B2EFE
-_080B2EE8:
- 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]
-_080B2EFE:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B2F5A
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r4, r0, 24
- adds r7, r4, 0
- adds r0, r4, 0
- bl sub_80768B0
- 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 sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080B2F3C
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8072E48
-_080B2F3C:
- movs r0, 0x2
- adds r4, r0, 0
- eors r4, r7
- adds r0, r4, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080B2F5A
- movs r0, 0x1
- eors r5, r0
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8072E48
-_080B2F5A:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B2F90
- bl sub_8075290
- lsls r0, 24
- cmp r0, 0
- beq _080B2F90
- ldr r0, _080B2F84 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B2F88
- movs r0, 0x48
- strh r0, [r6, 0x20]
- movs r0, 0x50
- b _080B2FCA
- .align 2, 0
-_080B2F84: .4byte gUnknown_2037F1A
-_080B2F88:
- movs r0, 0xB0
- strh r0, [r6, 0x20]
- movs r0, 0x28
- b _080B2FCA
-_080B2F90:
- ldr r5, _080B3000 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B2FA6
- ldr r1, _080B3004 @ =gUnknown_2037F02
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080B2FA6:
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- ldr r4, _080B3004 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
-_080B2FCA:
- strh r0, [r6, 0x22]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B2FDC
- ldrh r0, [r6, 0x22]
- adds r0, 0x9
- strh r0, [r6, 0x22]
-_080B2FDC:
- ldr r0, _080B3004 @ =gUnknown_2037F02
- 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, _080B3008 @ =sub_80B300C
- str r1, [r6, 0x1C]
- adds r0, r6, 0
- bl _call_via_r1
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3000: .4byte gUnknown_2037F1A
-_080B3004: .4byte gUnknown_2037F02
-_080B3008: .4byte sub_80B300C
- thumb_func_end sub_80B2ECC
-
- thumb_func_start sub_80B300C
-sub_80B300C: @ 80B300C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r1, [r4, 0x34]
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- cmp r0, 0xD
- bne _080B3038
- ldr r0, _080B3034 @ =sub_80B3044
- str r0, [r4, 0x1C]
- b _080B303C
- .align 2, 0
-_080B3034: .4byte sub_80B3044
-_080B3038:
- adds r0, r1, 0x1
- strh r0, [r4, 0x34]
-_080B303C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B300C
-
- thumb_func_start sub_80B3044
-sub_80B3044: @ 80B3044
- 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 _080B30A2
- movs r0, 0
- strh r0, [r3, 0x30]
- ldrh r4, [r3, 0x2E]
- ldr r1, _080B30A8 @ =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
-_080B307A:
- ldrh r0, [r1]
- strh r0, [r2]
- subs r1, 0x2
- subs r2, 0x2
- subs r5, 0x1
- cmp r5, 0
- bgt _080B307A
- 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 _080B30A2
- ldr r0, _080B30AC @ =sub_80B30B0
- str r0, [r3, 0x1C]
-_080B30A2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B30A8: .4byte gPlttBufferFaded
-_080B30AC: .4byte sub_80B30B0
- thumb_func_end sub_80B3044
-
- thumb_func_start sub_80B30B0
-sub_80B30B0: @ 80B30B0
- push {r4-r6,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x34]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r0, [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 _080B3156
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B3146
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- adds r0, r4, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080B3118
- ldr r2, _080B315C @ =gSprites
- ldr r0, _080B3160 @ =gUnknown_2023D44
- 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]
-_080B3118:
- movs r0, 0x2
- adds r4, r0, 0
- eors r4, r6
- adds r0, r4, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080B3146
- ldr r2, _080B315C @ =gSprites
- ldr r0, _080B3160 @ =gUnknown_2023D44
- 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]
-_080B3146:
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B3164 @ =sub_80B3168
- str r0, [r5, 0x1C]
-_080B3156:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B315C: .4byte gSprites
-_080B3160: .4byte gUnknown_2023D44
-_080B3164: .4byte sub_80B3168
- thumb_func_end sub_80B30B0
-
- thumb_func_start sub_80B3168
-sub_80B3168: @ 80B3168
- push {r4-r6,lr}
- adds r6, r0, 0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B31C0
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- bl sub_80768B0
- 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 sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080B31A6
- adds r0, r5, 0
- bl sub_8073128
-_080B31A6:
- movs r0, 0x2
- eors r4, r0
- adds r0, r4, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080B31C0
- movs r0, 0x1
- eors r5, r0
- adds r0, r5, 0
- bl sub_8073128
-_080B31C0:
- ldr r0, _080B31CC @ =DestroyAnimSprite
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B31CC: .4byte DestroyAnimSprite
- thumb_func_end sub_80B3168
-
- thumb_func_start sub_80B31D0
-sub_80B31D0: @ 80B31D0
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B325C
- ldr r5, _080B321C @ =gUnknown_2037F02
- movs r1, 0x6
- ldrsh r0, [r5, r1]
- movs r6, 0
- cmp r0, 0
- bne _080B31EA
- movs r6, 0x1
-_080B31EA:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B3232
- bl sub_8075290
- lsls r0, 24
- cmp r0, 0
- beq _080B3232
- ldr r0, _080B3220 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B3224
- 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 _080B3254
- .align 2, 0
-_080B321C: .4byte gUnknown_2037F02
-_080B3220: .4byte gUnknown_2037F1A
-_080B3224:
- ldrh r0, [r5]
- adds r0, 0xB0
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x2]
- adds r0, 0x28
- strh r0, [r4, 0x22]
- b _080B3254
-_080B3232:
- ldr r0, _080B3248 @ =gUnknown_2037F02
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B324C
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_8075160
- b _080B3254
- .align 2, 0
-_080B3248: .4byte gUnknown_2037F02
-_080B324C:
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_8075114
-_080B3254:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080B3270
-_080B325C:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- beq _080B3270
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080B3270:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B31D0
-
- thumb_func_start sub_80B3278
-sub_80B3278: @ 80B3278
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B32C0 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B32C8
- 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, _080B32C4 @ =0x0000ffff
- b _080B32D6
- .align 2, 0
-_080B32C0: .4byte gUnknown_2037F1A
-_080B32C4: .4byte 0x0000ffff
-_080B32C8:
- 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
-_080B32D6:
- strh r0, [r5, 0x30]
- ldr r1, _080B32EC @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080B32F0 @ =sub_8074F6C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B32EC: .4byte DestroyAnimSprite
-_080B32F0: .4byte sub_8074F6C
- thumb_func_end sub_80B3278
-
- thumb_func_start sub_80B32F4
-sub_80B32F4: @ 80B32F4
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r6, _080B3378 @ =gUnknown_2037F1A
- ldrb r0, [r6]
- movs r1, 0x1
- bl sub_8076B2C
- 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_8076B2C
- 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 GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B333A
- lsls r0, r4, 16
- negs r0, r0
- lsrs r4, r0, 16
-_080B333A:
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- strh r0, [r5, 0x20]
- ldrb r0, [r6]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, r7
- strh r0, [r5, 0x22]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bgt _080B3366
- movs r0, 0x10
- strh r0, [r5, 0x22]
-_080B3366:
- ldr r1, _080B337C @ =sub_80B3384
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080B3380 @ =sub_8074F6C
- str r0, [r5, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3378: .4byte gUnknown_2037F1A
-_080B337C: .4byte sub_80B3384
-_080B3380: .4byte sub_8074F6C
- thumb_func_end sub_80B32F4
-
- thumb_func_start sub_80B3384
-sub_80B3384: @ 80B3384
- 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, _080B33B0 @ =gUnknown_83E6FF0
- str r0, [r4, 0x10]
- movs r0, 0
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl InitSpriteAffineAnim
- ldr r0, _080B33B4 @ =sub_80B33B8
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B33B0: .4byte gUnknown_83E6FF0
-_080B33B4: .4byte sub_80B33B8
- thumb_func_end sub_80B3384
-
- thumb_func_start sub_80B33B8
-sub_80B33B8: @ 80B33B8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B33CA
- cmp r0, 0x1
- beq _080B33F8
- b _080B3410
-_080B33CA:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B3410
- 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 _080B3410
-_080B33F8:
- 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 _080B3410
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B3410:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B33B8
-
- thumb_func_start sub_80B3418
-sub_80B3418: @ 80B3418
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080B3448 @ =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, _080B344C @ =gUnknown_83E700C
- adds r0, r4, 0
- bl sub_80762D0
- ldr r0, _080B3450 @ =sub_80B3454
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3448: .4byte gTasks
-_080B344C: .4byte gUnknown_83E700C
-_080B3450: .4byte sub_80B3454
- thumb_func_end sub_80B3418
-
- thumb_func_start sub_80B3454
-sub_80B3454: @ 80B3454
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080B347C @ =gTasks
- adds r0, r1
- bl sub_8076308
- lsls r0, 24
- cmp r0, 0
- bne _080B3474
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080B3474:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B347C: .4byte gTasks
- thumb_func_end sub_80B3454
-
- thumb_func_start sub_80B3480
-sub_80B3480: @ 80B3480
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B34CC @ =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, _080B34D0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0x8
- cmp r0, 0
- beq _080B34B4
- movs r1, 0x4
-_080B34B4:
- strh r1, [r4, 0xE]
- ldrb r1, [r4, 0x8]
- ldr r2, _080B34D4 @ =gUnknown_83E702C
- adds r0, r4, 0
- bl sub_80762D0
- ldr r0, _080B34D8 @ =sub_80B34DC
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B34CC: .4byte gTasks
-_080B34D0: .4byte gUnknown_2037F1A
-_080B34D4: .4byte gUnknown_83E702C
-_080B34D8: .4byte sub_80B34DC
- thumb_func_end sub_80B3480
-
- thumb_func_start sub_80B34DC
-sub_80B34DC: @ 80B34DC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B34FC @ =gTasks
- adds r4, r0, r1
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B3500
- cmp r0, 0x1
- beq _080B351C
- b _080B357A
- .align 2, 0
-_080B34FC: .4byte gTasks
-_080B3500:
- adds r0, r4, 0
- bl sub_8076308
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _080B357A
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _080B357A
-_080B351C:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B3544
- ldr r2, _080B3540 @ =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 _080B357A
- .align 2, 0
-_080B3540: .4byte gSprites
-_080B3544:
- ldr r3, _080B3580 @ =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_8075980
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B357A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3580: .4byte gSprites
- thumb_func_end sub_80B34DC
-
- thumb_func_start sub_80B3584
-sub_80B3584: @ 80B3584
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B360C @ =gTasks
- adds r5, r1, r0
- movs r1, 0
- movs r0, 0x10
- strh r0, [r5, 0xE]
- strh r1, [r5, 0x10]
- ldr r4, _080B3610 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x24]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8076B2C
- 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_8076B2C
- 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 _080B35EE
- adds r1, r6, 0
-_080B35EE:
- strh r1, [r5, 0x20]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldr r0, _080B3614 @ =sub_80B3618
- str r0, [r5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B360C: .4byte gTasks
-_080B3610: .4byte gUnknown_2037F1A
-_080B3614: .4byte sub_80B3618
- thumb_func_end sub_80B3584
-
- thumb_func_start sub_80B3618
-sub_80B3618: @ 80B3618
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B363C @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080B3718
- cmp r1, 0x1
- bgt _080B3640
- cmp r1, 0
- beq _080B364E
- b _080B379E
- .align 2, 0
-_080B363C: .4byte gTasks
-_080B3640:
- cmp r1, 0x2
- bne _080B3646
- b _080B377A
-_080B3646:
- cmp r1, 0x3
- bne _080B364C
- b _080B3788
-_080B364C:
- b _080B379E
-_080B364E:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- bgt _080B365E
- b _080B379E
-_080B365E:
- strh r1, [r4, 0xA]
- ldr r0, _080B369C @ =gUnknown_83E7044
- 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 _080B3702
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B36BC
- cmp r0, 0x1
- bgt _080B36A0
- cmp r0, 0
- beq _080B36AA
- b _080B3702
- .align 2, 0
-_080B369C: .4byte gUnknown_83E7044
-_080B36A0:
- cmp r0, 0x2
- beq _080B36D4
- cmp r0, 0x3
- beq _080B36EC
- b _080B3702
-_080B36AA:
- ldr r0, _080B36B8 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r4, 0x20]
- b _080B36FA
- .align 2, 0
-_080B36B8: .4byte gSprites
-_080B36BC:
- ldr r0, _080B36D0 @ =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 _080B3700
- .align 2, 0
-_080B36D0: .4byte gSprites
-_080B36D4:
- ldr r1, _080B36E8 @ =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 _080B3702
- .align 2, 0
-_080B36E8: .4byte gSprites
-_080B36EC:
- ldr r0, _080B3714 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r4, 0x20]
- negs r0, r0
-_080B36FA:
- strh r0, [r1, 0x24]
- ldrh r0, [r4, 0x20]
- negs r0, r0
-_080B3700:
- strh r0, [r1, 0x26]
-_080B3702:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080B379E
- b _080B377A
- .align 2, 0
-_080B3714: .4byte gSprites
-_080B3718:
- ldrh r0, [r4, 0xA]
- ands r1, r0
- cmp r1, 0
- beq _080B3728
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- b _080B372E
-_080B3728:
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
-_080B372E:
- ldrh r1, [r4, 0x10]
- lsls r1, 8
- ldrh r0, [r4, 0xE]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x20
- bne _080B379E
- movs r5, 0x8
- adds r6, r4, 0
- adds r6, 0x8
-_080B3754:
- lsls r0, r5, 1
- adds r1, r6, r0
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x40
- beq _080B3770
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B3784 @ =gSprites
- adds r0, r1
- bl DestroySprite
-_080B3770:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xC
- bls _080B3754
-_080B377A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B379E
- .align 2, 0
-_080B3784: .4byte gSprites
-_080B3788:
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B379E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3618
-
- thumb_func_start sub_80B37A4
-sub_80B37A4: @ 80B37A4
- 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 _080B37CE
- 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]
-_080B37CE:
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080B37E0
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B37E0:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B37A4
-
- thumb_func_start sub_80B37EC
-sub_80B37EC: @ 80B37EC
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080B3828 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080B3818
- ldr r4, _080B382C @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
-_080B3818:
- ldrh r0, [r6, 0x2]
- strh r0, [r5, 0x2E]
- ldr r0, _080B3830 @ =sub_80B37A4
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3828: .4byte gUnknown_2037F02
-_080B382C: .4byte gUnknown_2037F1A
-_080B3830: .4byte sub_80B37A4
- thumb_func_end sub_80B37EC
-
- thumb_func_start sub_80B3834
-sub_80B3834: @ 80B3834
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B3890 @ =gTasks
- adds r5, r1, r0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B38D8
- ldr r0, _080B3894 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- bne _080B38A4
- ldr r0, _080B3898 @ =0x0000fff6
- strh r0, [r5, 0x1C]
- ldr r4, _080B389C @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0x8
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r5, 0x20]
- ldr r4, _080B38A0 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0x8
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x8
- b _080B3962
- .align 2, 0
-_080B3890: .4byte gTasks
-_080B3894: .4byte gUnknown_2037F02
-_080B3898: .4byte 0x0000fff6
-_080B389C: .4byte gUnknown_2037F1B
-_080B38A0: .4byte gUnknown_2037F1A
-_080B38A4:
- movs r0, 0xA
- strh r0, [r5, 0x1C]
- ldr r4, _080B38D0 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8076B2C
- subs r0, 0x8
- strh r0, [r5, 0x20]
- ldr r4, _080B38D4 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0x8
- b _080B3956
- .align 2, 0
-_080B38D0: .4byte gUnknown_2037F1A
-_080B38D4: .4byte gUnknown_2037F1B
-_080B38D8:
- ldr r0, _080B391C @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- bne _080B392C
- ldr r0, _080B3920 @ =0x0000fff6
- strh r0, [r5, 0x1C]
- ldr r4, _080B3924 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r5, 0x20]
- ldr r4, _080B3928 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x8
- b _080B3962
- .align 2, 0
-_080B391C: .4byte gUnknown_2037F02
-_080B3920: .4byte 0x0000fff6
-_080B3924: .4byte gUnknown_2037F1B
-_080B3928: .4byte gUnknown_2037F1A
-_080B392C:
- movs r0, 0xA
- strh r0, [r5, 0x1C]
- ldr r4, _080B3974 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0x8
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8076B2C
- subs r0, 0x8
- strh r0, [r5, 0x20]
- ldr r4, _080B3978 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0x8
-_080B3956:
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8076B2C
- subs r0, 0x8
-_080B3962:
- strh r0, [r5, 0x24]
- movs r0, 0x6
- strh r0, [r5, 0xA]
- ldr r0, _080B397C @ =sub_80B3980
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3974: .4byte gUnknown_2037F1A
-_080B3978: .4byte gUnknown_2037F1B
-_080B397C: .4byte sub_80B3980
- thumb_func_end sub_80B3834
-
- thumb_func_start sub_80B3980
-sub_80B3980: @ 80B3980
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B39A0 @ =gTasks
- adds r5, r0, r1
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- cmp r1, 0
- beq _080B39A4
- cmp r1, 0x1
- beq _080B3A18
- b _080B3A2C
- .align 2, 0
-_080B39A0: .4byte gTasks
-_080B39A4:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _080B3A2C
- strh r1, [r5, 0xA]
- ldr r0, _080B3A10 @ =gUnknown_83E7114
- 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 _080B39F8
- ldr r0, _080B3A14 @ =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_8075068
- ldrb r0, [r5, 0xC]
- movs r1, 0x3
- ands r1, r0
- adds r0, r4, 0
- bl StartSpriteAffineAnim
-_080B39F8:
- ldrh r0, [r5, 0xC]
- adds r0, 0x1
- strh r0, [r5, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bne _080B3A2C
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080B3A2C
- .align 2, 0
-_080B3A10: .4byte gUnknown_83E7114
-_080B3A14: .4byte gSprites
-_080B3A18:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x11
- ble _080B3A2C
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B3A2C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3980
-
- thumb_func_start sub_80B3A34
-sub_80B3A34: @ 80B3A34
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B3A52
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080B3A52:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3A34
-
- thumb_func_start sub_80B3A58
-sub_80B3A58: @ 80B3A58
- 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, _080B3A90 @ =gTasks
- adds r4, r1, r0
- ldr r0, _080B3A94 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_807492C
- lsls r0, 24
- lsrs r1, r0, 24
- adds r0, r1, 0
- subs r0, 0x20
- strh r0, [r4, 0x24]
- ldr r0, _080B3A98 @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0x1
- beq _080B3AAE
- cmp r0, 0x1
- bgt _080B3A9C
- cmp r0, 0
- beq _080B3AA2
- b _080B3ACA
- .align 2, 0
-_080B3A90: .4byte gTasks
-_080B3A94: .4byte gUnknown_2037F1B
-_080B3A98: .4byte gUnknown_2037F02
-_080B3A9C:
- cmp r0, 0x2
- beq _080B3ABA
- b _080B3ACA
-_080B3AA2:
- movs r0, 0x2
- strh r0, [r4, 0x1E]
- movs r0, 0x5
- strh r0, [r4, 0x20]
- movs r0, 0x40
- b _080B3AC2
-_080B3AAE:
- movs r0, 0x2
- strh r0, [r4, 0x1E]
- movs r0, 0x5
- strh r0, [r4, 0x20]
- movs r0, 0xC0
- b _080B3AC2
-_080B3ABA:
- movs r0, 0x4
- strh r0, [r4, 0x1E]
- strh r0, [r4, 0x20]
- movs r0, 0
-_080B3AC2:
- strh r0, [r4, 0x22]
- adds r0, r1, 0
- adds r0, 0x20
- strh r0, [r4, 0x26]
-_080B3ACA:
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _080B3AD6
- movs r0, 0
- strh r0, [r4, 0x24]
-_080B3AD6:
- ldr r0, _080B3AF0 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B3AFC
- ldr r0, _080B3AF4 @ =gBattle_BG1_X
- ldrh r0, [r0]
- strh r0, [r4, 0x1C]
- ldr r0, _080B3AF8 @ =0x04000014
- b _080B3B04
- .align 2, 0
-_080B3AF0: .4byte gUnknown_2037F1B
-_080B3AF4: .4byte gBattle_BG1_X
-_080B3AF8: .4byte 0x04000014
-_080B3AFC:
- ldr r0, _080B3B64 @ =gBattle_BG2_X
- ldrh r0, [r0]
- strh r0, [r4, 0x1C]
- ldr r0, _080B3B68 @ =0x04000018
-_080B3B04:
- 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 _080B3B3E
- ldr r5, _080B3B6C @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
-_080B3B1E:
- 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 _080B3B1E
-_080B3B3E:
- ldr r0, _080B3B70 @ =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, _080B3B74 @ =sub_80B3B78
- str r0, [r4]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3B64: .4byte gBattle_BG2_X
-_080B3B68: .4byte 0x04000018
-_080B3B6C: .4byte gScanlineEffectRegBuffers
-_080B3B70: .4byte 0xa2600001
-_080B3B74: .4byte sub_80B3B78
- thumb_func_end sub_80B3A58
-
- thumb_func_start sub_80B3B78
-sub_80B3B78: @ 80B3B78
- 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, _080B3BA0 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080B3C52
- cmp r0, 0x1
- bgt _080B3BA4
- cmp r0, 0
- beq _080B3BAA
- b _080B3C6A
- .align 2, 0
-_080B3BA0: .4byte gTasks
-_080B3BA4:
- cmp r0, 0x2
- beq _080B3C64
- b _080B3C6A
-_080B3BAA:
- 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 _080B3C42
- ldr r0, _080B3BF4 @ =gSineTable
- mov r9, r0
- movs r7, 0x3
- ldr r1, _080B3BF8 @ =gScanlineEffectRegBuffers
- mov r12, r1
- movs r2, 0xF0
- lsls r2, 3
- add r2, r12
- mov r8, r2
-_080B3BCC:
- 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 _080B3BFC
- ldrh r1, [r5, 0xA]
- adds r0, r7, 0
- ands r0, r1
- adds r0, r3, r0
- b _080B3C08
- .align 2, 0
-_080B3BF4: .4byte gSineTable
-_080B3BF8: .4byte gScanlineEffectRegBuffers
-_080B3BFC:
- cmp r3, 0
- bge _080B3C0C
- ldrh r1, [r5, 0xA]
- adds r0, r7, 0
- ands r0, r1
- subs r0, r3, r0
-_080B3C08:
- lsls r0, 16
- lsrs r1, r0, 16
-_080B3C0C:
- 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 _080B3BCC
-_080B3C42:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x17
- ble _080B3C6A
- b _080B3C58
-_080B3C52:
- ldr r1, _080B3C60 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080B3C58:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080B3C6A
- .align 2, 0
-_080B3C60: .4byte gScanlineEffect
-_080B3C64:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B3C6A:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3B78
-
- thumb_func_start sub_80B3C78
-sub_80B3C78: @ 80B3C78
- 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, _080B3CAC @ =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 _080B3CB0
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080B3D5A
- .align 2, 0
-_080B3CAC: .4byte gTasks
-_080B3CB0:
- ldr r1, _080B3CD4 @ =gUnknown_2037F02
- 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 _080B3CD8
- adds r0, r5, 0
- bl FreeOamMatrix
- mov r0, r8
- bl DestroyAnimVisualTask
- b _080B3D5A
- .align 2, 0
-_080B3CD4: .4byte gUnknown_2037F02
-_080B3CD8:
- ldr r2, _080B3D68 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r0, r2, 0
- adds r0, 0x1C
- adds r0, r4, r0
- ldr r1, _080B3D6C @ =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, _080B3D70 @ =gUnknown_2037F02
- 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, _080B3D74 @ =sub_80B3D78
- str r0, [r7]
-_080B3D5A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3D68: .4byte gSprites
-_080B3D6C: .4byte SpriteCallbackDummy
-_080B3D70: .4byte gUnknown_2037F02
-_080B3D74: .4byte sub_80B3D78
- thumb_func_end sub_80B3C78
-
- thumb_func_start sub_80B3D78
-sub_80B3D78: @ 80B3D78
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B3D9C @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B3DFC
- cmp r0, 0x1
- bgt _080B3DA0
- cmp r0, 0
- beq _080B3DAA
- b _080B3E7C
- .align 2, 0
-_080B3D9C: .4byte gTasks
-_080B3DA0:
- cmp r0, 0x2
- beq _080B3E4C
- cmp r0, 0x3
- beq _080B3E6C
- b _080B3E7C
-_080B3DAA:
- ldrh r0, [r4, 0xA]
- adds r0, 0x4
- strh r0, [r4, 0xA]
- ldr r1, _080B3DF8 @ =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_8076494
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0x30
- bne _080B3E7C
- b _080B3E5E
- .align 2, 0
-_080B3DF8: .4byte gSineTable
-_080B3DFC:
- ldrh r0, [r4, 0xA]
- subs r0, 0x4
- strh r0, [r4, 0xA]
- ldr r1, _080B3E48 @ =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_8076494
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080B3E7C
- b _080B3E5E
- .align 2, 0
-_080B3E48: .4byte gSineTable
-_080B3E4C:
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B3E68 @ =gSprites
- adds r0, r1
- bl obj_delete_but_dont_free_vram
-_080B3E5E:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B3E7C
- .align 2, 0
-_080B3E68: .4byte gSprites
-_080B3E6C:
- ldrh r0, [r4, 0x24]
- lsls r0, 24
- lsrs r0, 24
- bl FreeOamMatrix
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B3E7C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3D78
-
- thumb_func_start sub_80B3E84
-sub_80B3E84: @ 80B3E84
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080B3EFC
- cmp r0, 0x1
- bgt _080B3E9A
- cmp r0, 0
- beq _080B3EA4
- b _080B3FA4
-_080B3E9A:
- cmp r0, 0x2
- beq _080B3F2E
- cmp r0, 0x3
- beq _080B3F8E
- b _080B3FA4
-_080B3EA4:
- ldr r4, _080B3EF8 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B3ED2
- ldrh r0, [r5, 0x22]
- adds r0, 0xC
- strh r0, [r5, 0x22]
-_080B3ED2:
- movs r0, 0x8
- strh r0, [r5, 0x30]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r0, [r5, 0x30]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- b _080B3F26
- .align 2, 0
-_080B3EF8: .4byte gUnknown_2037F1A
-_080B3EFC:
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B3FA4
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xC4
- bl PlaySE12WithPanning
- adds r0, r5, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
-_080B3F26:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080B3FA4
-_080B3F2E:
- ldrh r0, [r5, 0x32]
- adds r1, r0, 0x1
- strh r1, [r5, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B3F72
- movs r0, 0
- strh r0, [r5, 0x32]
- ldrh r1, [r5, 0x30]
- subs r1, 0x1
- strh r1, [r5, 0x30]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080B3F72
- 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]
-_080B3F72:
- 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 _080B3FA4
-_080B3F8E:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimSprite
-_080B3FA4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3E84
-
- thumb_func_start sub_80B3FAC
-sub_80B3FAC: @ 80B3FAC
- push {r4-r6,lr}
- adds r6, r0, 0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B3FD8
- adds r0, r6, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldr r0, _080B3FD4 @ =gUnknown_2037F02
- ldrh r1, [r0, 0x4]
- negs r1, r1
- strh r1, [r0, 0x4]
- ldrh r1, [r0]
- negs r1, r1
- strh r1, [r0]
- b _080B4008
- .align 2, 0
-_080B3FD4: .4byte gUnknown_2037F02
-_080B3FD8:
- ldr r0, _080B406C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B4008
- adds r0, r6, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r1, _080B4070 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r1, 0x6]
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080B4008:
- ldr r5, _080B406C @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074844
- lsls r0, 24
- ldr r4, _080B4070 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x22]
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x6]
- adds r0, r4
- strh r0, [r6, 0x36]
- ldr r0, _080B4074 @ =sub_8075590
- str r0, [r6, 0x1C]
- ldr r1, _080B4078 @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B406C: .4byte gUnknown_2037F1B
-_080B4070: .4byte gUnknown_2037F02
-_080B4074: .4byte sub_8075590
-_080B4078: .4byte DestroyAnimSprite
- thumb_func_end sub_80B3FAC
-
- thumb_func_start sub_80B407C
-sub_80B407C: @ 80B407C
- push {r4-r6,lr}
- adds r6, r0, 0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B40A0
- ldr r1, _080B409C @ =gUnknown_2037F02
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
- adds r0, r6, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- b _080B40BC
- .align 2, 0
-_080B409C: .4byte gUnknown_2037F02
-_080B40A0:
- ldr r0, _080B4118 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B40BC
- ldr r0, _080B411C @ =gUnknown_2037F02
- ldrh r1, [r0, 0x2]
- negs r1, r1
- strh r1, [r0, 0x2]
- ldrh r1, [r0]
- negs r1, r1
- strh r1, [r0]
-_080B40BC:
- ldr r5, _080B4118 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074844
- lsls r0, 24
- ldr r4, _080B411C @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x22]
- ldrh r0, [r4, 0x4]
- strh r0, [r6, 0x2E]
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x36]
- ldr r0, _080B4120 @ =sub_8075590
- str r0, [r6, 0x1C]
- ldr r1, _080B4124 @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4118: .4byte gUnknown_2037F1B
-_080B411C: .4byte gUnknown_2037F02
-_080B4120: .4byte sub_8075590
-_080B4124: .4byte DestroyAnimSprite
- thumb_func_end sub_80B407C
-
- thumb_func_start sub_80B4128
-sub_80B4128: @ 80B4128
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B4144
- ldr r0, _080B4184 @ =gUnknown_2037F02
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- lsrs r2, r1, 31
- adds r1, r2
- asrs r1, 1
- strh r1, [r0, 0x4]
-_080B4144:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r1, _080B4184 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080B418C
- ldr r4, _080B4188 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- b _080B419E
- .align 2, 0
-_080B4184: .4byte gUnknown_2037F02
-_080B4188: .4byte gUnknown_2037F1B
-_080B418C:
- ldr r0, _080B41B4 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x32
- adds r3, r5, 0
- adds r3, 0x36
- movs r1, 0x1
- bl sub_8076D9C
-_080B419E:
- adds r0, r5, 0
- bl sub_8075678
- ldr r0, _080B41B8 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x6]
- strh r0, [r5, 0x38]
- ldr r0, _080B41BC @ =sub_80B41C0
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B41B4: .4byte gUnknown_2037F1B
-_080B41B8: .4byte gUnknown_2037F02
-_080B41BC: .4byte sub_80B41C0
- thumb_func_end sub_80B4128
-
- thumb_func_start sub_80B41C0
-sub_80B41C0: @ 80B41C0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080B41D6
- adds r0, r4, 0
- bl DestroyAnimSprite
- b _080B41F2
-_080B41D6:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x3A]
- adds r0, 0xD
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
-_080B41F2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B41C0
-
- thumb_func_start sub_80B41F8
-sub_80B41F8: @ 80B41F8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080B4228 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- movs r1, 0
- bl sub_8076D9C
- ldr r0, _080B422C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B4234
- ldr r0, _080B4230 @ =gUnknown_2037F02
- ldrh r1, [r4, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r4, 0x20]
- b _080B4240
- .align 2, 0
-_080B4228: .4byte gUnknown_2037F1B
-_080B422C: .4byte gUnknown_2037F1A
-_080B4230: .4byte gUnknown_2037F02
-_080B4234:
- ldr r1, _080B4268 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r0, r1, 0
-_080B4240:
- ldrh r0, [r0, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, _080B426C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B425C
- ldrh r0, [r4, 0x22]
- adds r0, 0x8
- strh r0, [r4, 0x22]
-_080B425C:
- ldr r0, _080B4270 @ =sub_80B4274
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4268: .4byte gUnknown_2037F02
-_080B426C: .4byte gUnknown_2037F1B
-_080B4270: .4byte sub_80B4274
- thumb_func_end sub_80B41F8
-
- thumb_func_start sub_80B4274
-sub_80B4274: @ 80B4274
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080B42A8
- movs r0, 0
- strh r0, [r3, 0x2E]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
-_080B42A8:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _080B42BC
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080B42BC:
- pop {r0}
- bx r0
- thumb_func_end sub_80B4274
-
- thumb_func_start sub_80B42C0
-sub_80B42C0: @ 80B42C0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- movs r0, 0x10
- strh r0, [r4, 0x2E]
- ldr r0, _080B42E4 @ =sub_80B42E8
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B42E4: .4byte sub_80B42E8
- thumb_func_end sub_80B42C0
-
- thumb_func_start sub_80B42E8
-sub_80B42E8: @ 80B42E8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x32]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r0, 0x13
- bgt _080B42FC
- adds r0, r1, 0x1
- strh r0, [r4, 0x32]
- b _080B433A
-_080B42FC:
- ldrh r1, [r4, 0x30]
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B433A
- ldrh r1, [r4, 0x2E]
- subs r1, 0x1
- strh r1, [r4, 0x2E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B433A
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B4340 @ =sub_80B4344
- str r0, [r4, 0x1C]
-_080B433A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4340: .4byte sub_80B4344
- thumb_func_end sub_80B42E8
-
- thumb_func_start sub_80B4344
-sub_80B4344: @ 80B4344
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B4344
-
- thumb_func_start sub_80B4364
-sub_80B4364: @ 80B4364
- push {r4-r7,lr}
- sub sp, 0x4
- adds r7, r0, 0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B4384
- ldr r1, _080B4380 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- b _080B43A6
- .align 2, 0
-_080B4380: .4byte gUnknown_2037F02
-_080B4384:
- ldr r0, _080B4480 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B43A6
- ldr r1, _080B4484 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r1, 0x6]
-_080B43A6:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B43F6
- ldr r0, _080B4480 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- adds r4, r0, 0
- ldr r5, _080B4488 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080B43F6
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- beq _080B43E4
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B43F6
-_080B43E4:
- ldr r0, _080B4484 @ =gUnknown_2037F02
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- negs r1, r1
- strh r1, [r0, 0x4]
- movs r2, 0
- ldrsh r1, [r0, r2]
- negs r1, r1
- strh r1, [r0]
-_080B43F6:
- adds r0, r7, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r5, _080B4488 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- adds r4, r0, 0
- lsls r4, 24
- ldr r6, _080B4484 @ =gUnknown_2037F02
- lsrs r4, 24
- ldrh r0, [r6, 0x4]
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r6, 0x6]
- adds r1, r2
- lsls r1, 16
- ldrh r2, [r7, 0x20]
- lsls r0, r4, 16
- asrs r0, 16
- subs r0, r2
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r7, 0x22]
- lsrs r5, r1, 16
- asrs r1, 16
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl sub_8075B30
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 24
- adds r0, r1
- lsrs r0, 16
- movs r3, 0x80
- lsls r3, 1
- str r0, [sp]
- adds r0, r7, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_8075A1C
- ldrh r0, [r6, 0x8]
- strh r0, [r7, 0x2E]
- strh r4, [r7, 0x32]
- strh r5, [r7, 0x36]
- ldr r0, _080B448C @ =sub_8075590
- str r0, [r7, 0x1C]
- ldr r1, _080B4490 @ =DestroyAnimSprite
- adds r0, r7, 0
- bl StoreSpriteCallbackInData6
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4480: .4byte gUnknown_2037F1A
-_080B4484: .4byte gUnknown_2037F02
-_080B4488: .4byte gUnknown_2037F1B
-_080B448C: .4byte sub_8075590
-_080B4490: .4byte DestroyAnimSprite
- thumb_func_end sub_80B4364
-
- thumb_func_start sub_80B4494
-sub_80B4494: @ 80B4494
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080B4500 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B44B4
- ldr r1, _080B4504 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080B44B4:
- ldr r4, _080B4504 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldr r5, _080B4508 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r6, 0x36]
- ldrh r0, [r4, 0xA]
- strh r0, [r6, 0x38]
- adds r0, r6, 0
- bl sub_8075068
- ldr r0, _080B450C @ =sub_80B4510
- str r0, [r6, 0x1C]
- adds r2, r6, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4500: .4byte gUnknown_2037F1A
-_080B4504: .4byte gUnknown_2037F02
-_080B4508: .4byte gUnknown_2037F1B
-_080B450C: .4byte sub_80B4510
- thumb_func_end sub_80B4494
-
- thumb_func_start sub_80B4510
-sub_80B4510: @ 80B4510
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r4, r0, 0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r2]
- adds r0, r4, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B453C
- adds r0, r4, 0
- bl DestroyAnimSprite
- b _080B45CC
-_080B453C:
- movs r0, 0x2E
- adds r0, r4
- mov r8, r0
- ldrh r7, [r4, 0x20]
- ldrh r5, [r4, 0x24]
- ldrh r1, [r4, 0x22]
- mov r12, r1
- ldrh r6, [r4, 0x26]
- mov r2, r8
- add r1, sp, 0x4
- movs r3, 0x7
-_080B4552:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080B4552
- adds r0, r7, r5
- lsls r0, 16
- lsrs r5, r0, 16
- mov r2, r12
- adds r0, r2, r6
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- bne _080B45CC
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- lsls r1, r5, 16
- asrs r1, 16
- subs r0, r1
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r1, r2
- lsls r2, r6, 16
- asrs r2, 16
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl sub_8075B30
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 24
- adds r0, r1
- lsrs r0, 16
- movs r3, 0x80
- lsls r3, 1
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_8075A1C
- add r2, sp, 0x4
- mov r1, r8
- movs r3, 0x7
-_080B45BE:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080B45BE
-_080B45CC:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B4510
-
- thumb_func_start sub_80B45D8
-sub_80B45D8: @ 80B45D8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080B45EC @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B45F4
- ldr r4, _080B45F0 @ =gUnknown_2037F1A
- b _080B45F6
- .align 2, 0
-_080B45EC: .4byte gUnknown_2037F02
-_080B45F0: .4byte gUnknown_2037F1A
-_080B45F4:
- ldr r4, _080B4628 @ =gUnknown_2037F1B
-_080B45F6:
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x12
- strh r0, [r5, 0x22]
- ldr r1, _080B462C @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080B4630 @ =sub_8074F50
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4628: .4byte gUnknown_2037F1B
-_080B462C: .4byte move_anim_8074EE0
-_080B4630: .4byte sub_8074F50
- thumb_func_end sub_80B45D8
-
- thumb_func_start sub_80B4634
-sub_80B4634: @ 80B4634
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080B46A0 @ =gUnknown_2037F02
- movs r1, 0x6
- ldrsh r0, [r6, r1]
- cmp r0, 0
- beq _080B4654
- ldr r0, _080B46A4 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x20
- adds r3, r5, 0
- adds r3, 0x22
- movs r1, 0
- bl sub_8076D9C
-_080B4654:
- 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, _080B46A8 @ =0x0000ffba
- strh r0, [r5, 0x36]
- ldrh r0, [r6, 0x4]
- strh r0, [r5, 0x38]
- ldr r1, _080B46AC @ =sub_80B46B4
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r1, _080B46B0 @ =sub_8074BE4
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B46A0: .4byte gUnknown_2037F02
-_080B46A4: .4byte gUnknown_2037F1B
-_080B46A8: .4byte 0x0000ffba
-_080B46AC: .4byte sub_80B46B4
-_080B46B0: .4byte sub_8074BE4
- thumb_func_end sub_80B4634
-
- thumb_func_start sub_80B46B4
-sub_80B46B4: @ 80B46B4
- 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, _080B46EC @ =0x0000ffe8
- strh r0, [r4, 0x36]
- ldr r1, _080B46F0 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r1, _080B46F4 @ =sub_8074BE4
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B46EC: .4byte 0x0000ffe8
-_080B46F0: .4byte move_anim_8074EE0
-_080B46F4: .4byte sub_8074BE4
- thumb_func_end sub_80B46B4
-
- thumb_func_start sub_80B46F8
-sub_80B46F8: @ 80B46F8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B4720 @ =gUnknown_2037F02
- ldrb r1, [r4, 0xA]
- bl StartSpriteAnim
- adds r0, r5, 0
- bl AnimateSprite
- ldr r0, _080B4724 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B4728
- ldrh r0, [r5, 0x20]
- ldrh r1, [r4]
- subs r0, r1
- b _080B472E
- .align 2, 0
-_080B4720: .4byte gUnknown_2037F02
-_080B4724: .4byte gUnknown_2037F1A
-_080B4728:
- ldrh r0, [r4]
- ldrh r1, [r5, 0x20]
- adds r0, r1
-_080B472E:
- strh r0, [r5, 0x20]
- ldr r3, _080B4770 @ =gUnknown_2037F02
- 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_80754B8
- strh r4, [r5, 0x34]
- strh r4, [r5, 0x36]
- ldr r0, _080B4774 @ =sub_8074D00
- str r0, [r5, 0x1C]
- ldr r1, _080B4778 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4770: .4byte gUnknown_2037F02
-_080B4774: .4byte sub_8074D00
-_080B4778: .4byte move_anim_8074EE0
- thumb_func_end sub_80B46F8
-
- thumb_func_start sub_80B477C
-sub_80B477C: @ 80B477C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080B4794 @ =gUnknown_2037F02
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B4798
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075160
- b _080B47A0
- .align 2, 0
-_080B4794: .4byte gUnknown_2037F02
-_080B4798:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075114
-_080B47A0:
- ldr r1, _080B47BC @ =gUnknown_2037F02
- 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, _080B47C0 @ =sub_80B47C4
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B47BC: .4byte gUnknown_2037F02
-_080B47C0: .4byte sub_80B47C4
- thumb_func_end sub_80B477C
-
- thumb_func_start sub_80B47C4
-sub_80B47C4: @ 80B47C4
- 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 _080B480A
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B480A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B47C4
-
- thumb_func_start do_boulder_dust
-do_boulder_dust: @ 80B4810
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r1, _080B48E4 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B4854
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080B4854:
- ldr r0, _080B48E8 @ =gBattle_BG1_X
- strh r5, [r0]
- ldr r4, _080B48EC @ =gBattle_BG1_Y
- strh r5, [r4]
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x16
- bl SetGpuReg
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080B48F0 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap
- bl sub_807543C
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080B48F4 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080B48F8 @ =gFile_graphics_battle_anims_sprites_261_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B48B0
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
-_080B48B0:
- ldr r0, _080B48FC @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080B48CA
- ldr r0, _080B4900 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B48CA
- movs r5, 0x1
-_080B48CA:
- ldr r0, _080B4904 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- strh r5, [r1, 0x8]
- ldr r0, _080B4908 @ =sub_80B490C
- str r0, [r1]
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B48E4: .4byte 0x00003f42
-_080B48E8: .4byte gBattle_BG1_X
-_080B48EC: .4byte gBattle_BG1_Y
-_080B48F0: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap
-_080B48F4: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet
-_080B48F8: .4byte gFile_graphics_battle_anims_sprites_261_palette
-_080B48FC: .4byte gUnknown_2037F02
-_080B4900: .4byte gUnknown_2037F1A
-_080B4904: .4byte gTasks
-_080B4908: .4byte sub_80B490C
- thumb_func_end do_boulder_dust
-
- thumb_func_start sub_80B490C
-sub_80B490C: @ 80B490C
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080B4934 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0
- bne _080B4940
- ldr r1, _080B4938 @ =gBattle_BG1_X
- ldr r3, _080B493C @ =0x0000fffa
- adds r0, r3, 0
- ldrh r3, [r1]
- adds r0, r3
- b _080B4946
- .align 2, 0
-_080B4934: .4byte gTasks
-_080B4938: .4byte gBattle_BG1_X
-_080B493C: .4byte 0x0000fffa
-_080B4940:
- ldr r1, _080B4974 @ =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x6
-_080B4946:
- strh r0, [r1]
- ldr r1, _080B4978 @ =gBattle_BG1_Y
- ldr r3, _080B497C @ =0x0000ffff
- adds r0, r3, 0
- ldrh r3, [r1]
- adds r0, r3
- strh r0, [r1]
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- adds r0, r2
- movs r3, 0x20
- ldrsh r0, [r0, r3]
- adds r4, r1, 0
- cmp r0, 0x4
- bls _080B4968
- b _080B4A96
-_080B4968:
- lsls r0, 2
- ldr r1, _080B4980 @ =_080B4984
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B4974: .4byte gBattle_BG1_X
-_080B4978: .4byte gBattle_BG1_Y
-_080B497C: .4byte 0x0000ffff
-_080B4980: .4byte _080B4984
- .align 2, 0
-_080B4984:
- .4byte _080B4998
- .4byte _080B49DA
- .4byte _080B49F4
- .4byte _080B4A36
- .4byte _080B4A58
-_080B4998:
- adds r0, r4, r5
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080B4A96
- strh r5, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- adds r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0x7
- bne _080B4A96
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r5, [r4, 0x1E]
- b _080B4A96
-_080B49DA:
- adds r0, r4, r5
- lsls r0, 3
- adds r1, r0, r2
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- strh r0, [r1, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x65
- bne _080B4A96
- movs r0, 0x7
- strh r0, [r1, 0x1E]
- b _080B4A4C
-_080B49F4:
- adds r0, r4, r5
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080B4A96
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- subs r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _080B4A96
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r1, [r4, 0x1E]
- b _080B4A96
-_080B4A36:
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- bl sub_8075358
- ldr r0, _080B4A54 @ =gTasks
- adds r1, r4, r5
- lsls r1, 3
- adds r1, r0
-_080B4A4C:
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- b _080B4A96
- .align 2, 0
-_080B4A54: .4byte gTasks
-_080B4A58:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B4A6C
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080B4A6C:
- ldr r0, _080B4AA0 @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080B4AA4 @ =gBattle_BG1_Y
- strh r1, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B4A96:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4AA0: .4byte gBattle_BG1_X
-_080B4AA4: .4byte gBattle_BG1_Y
- thumb_func_end sub_80B490C
-
- thumb_func_start sub_80B4AA8
-sub_80B4AA8: @ 80B4AA8
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080B4B24
- ldr r4, _080B4AEC @ =gUnknown_2037F02
- movs r2, 0x6
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B4AF4
- ldr r0, _080B4AF0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B4AF4
- 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 _080B4AF8
- .align 2, 0
-_080B4AEC: .4byte gUnknown_2037F02
-_080B4AF0: .4byte gUnknown_2037F1A
-_080B4AF4:
- ldr r0, _080B4B18 @ =0x0000ffc0
- strh r0, [r5, 0x20]
-_080B4AF8:
- ldr r4, _080B4B1C @ =gUnknown_2037F02
- ldrh r0, [r4]
- strh r0, [r5, 0x22]
- ldr r1, _080B4B20 @ =gUnknown_83E7470
- 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 _080B4B80
- .align 2, 0
-_080B4B18: .4byte 0x0000ffc0
-_080B4B1C: .4byte gUnknown_2037F02
-_080B4B20: .4byte gUnknown_83E7470
-_080B4B24:
- 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 _080B4B6A
- 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 _080B4B80
- b _080B4B7C
-_080B4B6A:
- 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 _080B4B80
-_080B4B7C:
- ldr r0, _080B4B88 @ =DestroyAnimSprite
- str r0, [r5, 0x1C]
-_080B4B80:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4B88: .4byte DestroyAnimSprite
- thumb_func_end sub_80B4AA8
-
- thumb_func_start sub_80B4B8C
-sub_80B4B8C: @ 80B4B8C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B4BC4 @ =gUnknown_2037F02
- ldrb r1, [r5, 0x8]
- bl StartSpriteAnim
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075160
- 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, _080B4BC8 @ =sub_8075590
- str r0, [r4, 0x1C]
- ldr r1, _080B4BCC @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4BC4: .4byte gUnknown_2037F02
-_080B4BC8: .4byte sub_8075590
-_080B4BCC: .4byte DestroyAnimSprite
- thumb_func_end sub_80B4B8C
-
- thumb_func_start sub_80B4BD0
-sub_80B4BD0: @ 80B4BD0
- 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, _080B4C50 @ =gTasks
- adds r6, r1, r0
- ldr r5, _080B4C54 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 8
- movs r1, 0xC0
- lsls r1, 13
- adds r0, r1
- lsrs r7, r0, 16
- ldr r4, _080B4C58 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- 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 _080B4C40
- mov r8, r7
-_080B4C40:
- bl sub_80B4FB8
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bne _080B4C5C
- movs r0, 0x20
- b _080B4C62
- .align 2, 0
-_080B4C50: .4byte gTasks
-_080B4C54: .4byte gUnknown_2037F1A
-_080B4C58: .4byte gUnknown_2037F1B
-_080B4C5C:
- lsls r1, r5, 3
- movs r0, 0x30
- subs r0, r1
-_080B4C62:
- 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 _080B4C7A
- adds r0, 0x7
-_080B4C7A:
- 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 sub_8073A44
- adds r4, r0, 0
- lsls r4, 24
- asrs r4, 8
- lsrs r4, 16
- movs r0, 0x3F
- bl sub_8073A44
- 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, _080B4CFC @ =sub_80B4D00
- 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
-_080B4CFC: .4byte sub_80B4D00
- thumb_func_end sub_80B4BD0
-
- thumb_func_start sub_80B4D00
-sub_80B4D00: @ 80B4D00
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B4D24 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080B4D1A
- b _080B4E68
-_080B4D1A:
- lsls r0, 2
- ldr r1, _080B4D28 @ =_080B4D2C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B4D24: .4byte gTasks
-_080B4D28: .4byte _080B4D2C
- .align 2, 0
-_080B4D2C:
- .4byte _080B4D40
- .4byte _080B4DA4
- .4byte _080B4DAC
- .4byte _080B4E08
- .4byte _080B4E5A
-_080B4D40:
- 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, _080B4DA0 @ =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 _080B4D90
- movs r0, 0x14
- strh r0, [r4, 0x1E]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080B4D90:
- ldrh r1, [r4, 0x22]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x9B
- bl PlaySE12WithPanning
- b _080B4E68
- .align 2, 0
-_080B4DA0: .4byte gSprites
-_080B4DA4:
- ldrh r0, [r4, 0x1E]
- subs r0, 0x1
- strh r0, [r4, 0x1E]
- b _080B4E4C
-_080B4DAC:
- ldrh r0, [r4, 0x1A]
- subs r0, 0x1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- beq _080B4DCC
- 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 _080B4DD6
-_080B4DCC:
- strh r0, [r4, 0x14]
- strh r0, [r4, 0x16]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080B4DD6:
- ldr r2, _080B4E04 @ =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 _080B4E68
- .align 2, 0
-_080B4E04: .4byte gSprites
-_080B4E08:
- 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 _080B4E46
- movs r0, 0
- strh r0, [r4, 0x1A]
- adds r0, r4, 0
- bl sub_80B4E70
- ldrh r1, [r4, 0x24]
- ldrh r0, [r4, 0x22]
- adds r1, r0
- strh r1, [r4, 0x22]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xA8
- bl PlaySE12WithPanning
-_080B4E46:
- ldrh r0, [r4, 0x18]
- subs r0, 0x1
- strh r0, [r4, 0x18]
-_080B4E4C:
- lsls r0, 16
- cmp r0, 0
- bne _080B4E68
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B4E68
-_080B4E5A:
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B4E68
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B4E68:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B4D00
-
- thumb_func_start sub_80B4E70
-sub_80B4E70: @ 80B4E70
- 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 _080B4F60
- lsls r0, 2
- ldr r1, _080B4E8C @ =_080B4E90
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B4E8C: .4byte _080B4E90
- .align 2, 0
-_080B4E90:
- .4byte _080B4EA4
- .4byte _080B4EB0
- .4byte _080B4EB0
- .4byte _080B4EBC
- .4byte _080B4EC8
-_080B4EA4:
- ldr r3, _080B4EAC @ =gUnknown_83E74D8
- movs r5, 0
- b _080B4ECC
- .align 2, 0
-_080B4EAC: .4byte gUnknown_83E74D8
-_080B4EB0:
- ldr r3, _080B4EB8 @ =gUnknown_83E74F0
- movs r5, 0x50
- b _080B4ECC
- .align 2, 0
-_080B4EB8: .4byte gUnknown_83E74F0
-_080B4EBC:
- ldr r3, _080B4EC4 @ =gUnknown_83E74F0
- movs r5, 0x40
- b _080B4ECC
- .align 2, 0
-_080B4EC4: .4byte gUnknown_83E74F0
-_080B4EC8:
- ldr r3, _080B4F68 @ =gUnknown_83E74F0
- movs r5, 0x30
-_080B4ECC:
- 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 _080B4F58
- ldr r1, _080B4F6C @ =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, _080B4F70 @ =0x000003ff
- adds r1, r5, 0
- ands r2, r1
- ldr r1, _080B4F74 @ =0xfffffc00
- ands r1, r3
- orrs r1, r2
- strh r1, [r0, 0x4]
- bl sub_8075068
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
-_080B4F58:
- movs r6, 0x20
- ldrsh r0, [r4, r6]
- negs r0, r0
- strh r0, [r4, 0x20]
-_080B4F60:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4F68: .4byte gUnknown_83E74F0
-_080B4F6C: .4byte gSprites
-_080B4F70: .4byte 0x000003ff
-_080B4F74: .4byte 0xfffffc00
- thumb_func_end sub_80B4E70
-
- thumb_func_start sub_80B4F78
-sub_80B4F78: @ 80B4F78
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B4FAA
- ldr r0, _080B4FB0 @ =sub_80B4D00
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080B4FA4
- ldr r0, _080B4FB4 @ =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]
-_080B4FA4:
- adds r0, r4, 0
- bl DestroySprite
-_080B4FAA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4FB0: .4byte sub_80B4D00
-_080B4FB4: .4byte gTasks
- thumb_func_end sub_80B4F78
-
- thumb_func_start sub_80B4FB8
-sub_80B4FB8: @ 80B4FB8
- push {lr}
- ldr r0, _080B4FE0 @ =gUnknown_2037EE4
- 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 _080B4FDA
- movs r1, 0x1
-_080B4FDA:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080B4FE0: .4byte gUnknown_2037EE4
- thumb_func_end sub_80B4FB8
-
- thumb_func_start sub_80B4FE4
-sub_80B4FE4: @ 80B4FE4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B501C @ =gUnknown_2037F02
- 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, _080B5020 @ =sub_80B5024
- 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
-_080B501C: .4byte gUnknown_2037F02
-_080B5020: .4byte sub_80B5024
- thumb_func_end sub_80B4FE4
-
- thumb_func_start sub_80B5024
-sub_80B5024: @ 80B5024
- 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 _080B505C
- 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 _080B506E
- movs r0, 0
- strh r0, [r2, 0x34]
- b _080B506E
-_080B505C:
- ldrh r0, [r2, 0x30]
- subs r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- cmp r0, 0
- bne _080B506E
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080B506E:
- pop {r0}
- bx r0
- thumb_func_end sub_80B5024
-
- thumb_func_start sub_80B5074
-sub_80B5074: @ 80B5074
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080B509C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B5090
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080B5090:
- adds r0, r4, 0
- bl sub_8075DF4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B509C: .4byte gUnknown_2037F1A
- thumb_func_end sub_80B5074
-
- thumb_func_start sub_80B50A0
-sub_80B50A0: @ 80B50A0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B50EC @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B50F0 @ =gUnknown_2037F02
- 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, _080B50F4 @ =sub_80B50F8
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B50EC: .4byte gUnknown_2037F1B
-_080B50F0: .4byte gUnknown_2037F02
-_080B50F4: .4byte sub_80B50F8
- thumb_func_end sub_80B50A0
-
- thumb_func_start sub_80B50F8
-sub_80B50F8: @ 80B50F8
- 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 _080B5142
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B5142:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B50F8
-
- thumb_func_start sub_80B5148
-sub_80B5148: @ 80B5148
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080B5180 @ =gUnknown_2037EE8
- ldr r0, [r2]
- cmp r0, 0x20
- bgt _080B515C
- ldr r1, _080B5184 @ =gUnknown_2037F02
- movs r0, 0
- strh r0, [r1, 0xE]
-_080B515C:
- ldr r2, [r2]
- adds r0, r2, 0
- subs r0, 0x21
- cmp r0, 0x20
- bhi _080B516C
- ldr r1, _080B5184 @ =gUnknown_2037F02
- movs r0, 0x1
- strh r0, [r1, 0xE]
-_080B516C:
- cmp r2, 0x41
- ble _080B5176
- ldr r1, _080B5184 @ =gUnknown_2037F02
- movs r0, 0x2
- strh r0, [r1, 0xE]
-_080B5176:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080B5180: .4byte gUnknown_2037EE8
-_080B5184: .4byte gUnknown_2037F02
- thumb_func_end sub_80B5148
-
- thumb_func_start sub_80B5188
-sub_80B5188: @ 80B5188
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080B51E4 @ =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 _080B51AA
- movs r0, 0
- bl sub_8075458
- movs r0, 0xC8
- strh r0, [r5, 0xA]
-_080B51AA:
- ldr r4, _080B51E8 @ =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 _080B51D6
- movs r0, 0x1
- bl sub_8075458
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080B51D6:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B51E4: .4byte gTasks
-_080B51E8: .4byte gBattle_BG3_Y
- thumb_func_end sub_80B5188
-
- thumb_func_start sub_80B51EC
-sub_80B51EC: @ 80B51EC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080B5258 @ =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 _080B5218
- movs r0, 0
- bl sub_8075458
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- ldr r0, _080B525C @ =gBattle_BG3_Y
- ldrh r0, [r0]
- strh r0, [r4, 0xC]
-_080B5218:
- ldrh r0, [r4, 0xA]
- adds r0, 0x50
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0xA]
- ldr r6, _080B525C @ =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, _080B5260 @ =gUnknown_2037F02
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- ldr r0, _080B5264 @ =0x00000fff
- cmp r1, r0
- bne _080B5250
- movs r0, 0
- strh r0, [r6]
- movs r0, 0x1
- bl sub_8075458
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B5250:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5258: .4byte gTasks
-_080B525C: .4byte gBattle_BG3_Y
-_080B5260: .4byte gUnknown_2037F02
-_080B5264: .4byte 0x00000fff
- thumb_func_end sub_80B51EC
-
- thumb_func_start sub_80B5268
-sub_80B5268: @ 80B5268
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080B52C4 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldr r5, _080B52C8 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_8075678
- ldr r0, _080B52CC @ =sub_80B52D0
- str r0, [r4, 0x1C]
- movs r0, 0x10
- strh r0, [r4, 0x3A]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r4, 0x3A]
- movs r0, 0x52
- bl SetGpuReg
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B52C4: .4byte gUnknown_2037F02
-_080B52C8: .4byte gUnknown_2037F1B
-_080B52CC: .4byte sub_80B52D0
- thumb_func_end sub_80B5268
-
- thumb_func_start sub_80B52D0
-sub_80B52D0: @ 80B52D0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80B53C0
- adds r0, r4, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080B52F0
- ldr r0, _080B52EC @ =sub_80B5344
- str r0, [r4, 0x1C]
- b _080B533A
- .align 2, 0
-_080B52EC: .4byte sub_80B5344
-_080B52F0:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xF
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r2, [r4, 0x38]
- adds r0, r2, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x38]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0
- beq _080B5328
- cmp r2, 0xC4
- ble _080B533A
-_080B5328:
- lsls r0, 16
- cmp r0, 0
- ble _080B533A
- ldr r0, _080B5340 @ =gUnknown_2037F24
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0xBD
- bl PlaySE12WithPanning
-_080B533A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5340: .4byte gUnknown_2037F24
- thumb_func_end sub_80B52D0
-
- thumb_func_start sub_80B5344
-sub_80B5344: @ 80B5344
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl sub_80755E0
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xF
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r2, [r4, 0x38]
- adds r0, r2, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x38]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0
- beq _080B538A
- cmp r2, 0xC4
- ble _080B5396
-_080B538A:
- lsls r0, 16
- cmp r0, 0
- ble _080B5396
- movs r0, 0xBD
- bl PlaySE
-_080B5396:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B53B4
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B53B0 @ =sub_8074F88
- str r0, [r4, 0x1C]
- b _080B53BA
- .align 2, 0
-_080B53B0: .4byte sub_8074F88
-_080B53B4:
- adds r0, r4, 0
- bl sub_80B53C0
-_080B53BA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B5344
-
- thumb_func_start sub_80B53C0
-sub_80B53C0: @ 80B53C0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x3A]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0xFF
- ble _080B53E4
- adds r0, r2, 0x1
- strh r0, [r4, 0x3A]
- lsls r0, 16
- ldr r1, _080B53E0 @ =0x010d0000
- cmp r0, r1
- bne _080B544A
- movs r0, 0
- b _080B5448
- .align 2, 0
-_080B53E0: .4byte 0x010d0000
-_080B53E4:
- ldrh r1, [r4, 0x3C]
- adds r3, r1, 0x1
- strh r3, [r4, 0x3C]
- movs r0, 0xFF
- ands r0, r1
- cmp r0, 0
- bne _080B544A
- ldr r1, _080B5408 @ =0xffffff00
- ands r1, r3
- strh r1, [r4, 0x3C]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080B540C
- adds r0, r2, 0x1
- b _080B540E
- .align 2, 0
-_080B5408: .4byte 0xffffff00
-_080B540C:
- subs r0, r2, 0x1
-_080B540E:
- strh r0, [r4, 0x3A]
- ldrh r0, [r4, 0x3A]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B5430
- cmp r0, 0x10
- bne _080B543C
-_080B5430:
- ldrh r0, [r4, 0x3C]
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- eors r0, r1
- strh r0, [r4, 0x3C]
-_080B543C:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B544A
- movs r0, 0x80
- lsls r0, 1
-_080B5448:
- strh r0, [r4, 0x3A]
-_080B544A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B53C0
-
- thumb_func_start sub_80B5450
-sub_80B5450: @ 80B5450
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r1, _080B546C @ =sub_80B5470
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B546C: .4byte sub_80B5470
- thumb_func_end sub_80B5450
-
- thumb_func_start sub_80B5470
-sub_80B5470: @ 80B5470
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x41
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x82
- bhi _080B54A4
- ldrb r0, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x8
- b _080B54AE
-_080B54A4:
- ldrb r0, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
-_080B54AE:
- orrs r1, r0
- strb r1, [r4, 0x5]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x13
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x32]
- adds r0, 0x50
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3D
- bne _080B54E0
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B54E0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B5470
-
- thumb_func_start sub_80B54E8
-sub_80B54E8: @ 80B54E8
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80758E0
- adds r0, r4, 0
- movs r1, 0x80
- movs r2, 0x80
- movs r3, 0
- bl obj_id_set_rotscale
- ldr r1, _080B5560 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r1, _080B5564 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0x80
- strh r1, [r0, 0x8]
- ldr r1, _080B5568 @ =gUnknown_2037F02
- ldrh r1, [r1]
- strh r1, [r0, 0xA]
- strh r2, [r0, 0xC]
- movs r1, 0x10
- strh r1, [r0, 0xE]
- ldr r1, _080B556C @ =sub_80B5570
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5560: .4byte gSprites
-_080B5564: .4byte gTasks
-_080B5568: .4byte gUnknown_2037F02
-_080B556C: .4byte sub_80B5570
- thumb_func_end sub_80B54E8
-
- thumb_func_start sub_80B5570
-sub_80B5570: @ 80B5570
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B55C0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080B55B8
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0xC]
- adds r1, 0x1
- strh r1, [r4, 0xC]
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x9
- bne _080B55B8
- ldr r0, _080B55C4 @ =sub_80B55C8
- str r0, [r4]
-_080B55B8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B55C0: .4byte gTasks
-_080B55C4: .4byte sub_80B55C8
- thumb_func_end sub_80B5570
-
- thumb_func_start sub_80B55C8
-sub_80B55C8: @ 80B55C8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080B55EC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0xA]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080B55F0
- subs r0, r1, 0x1
- strh r0, [r4, 0xA]
- b _080B5634
- .align 2, 0
-_080B55EC: .4byte gTasks
-_080B55F0:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r1, r0, 24
- ldrh r0, [r4, 0x8]
- adds r0, 0x8
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xFF
- bgt _080B5618
- movs r0, 0x8
- ldrsh r2, [r4, r0]
- adds r0, r1, 0
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- b _080B5634
-_080B5618:
- adds r0, r1, 0
- bl sub_8075980
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
-_080B5634:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B55C8
-
- thumb_func_start sub_80B563C
-sub_80B563C: @ 80B563C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r5, [r4, 0x20]
- ldrh r6, [r4, 0x22]
- ldr r0, _080B56D8 @ =gUnknown_2037F1A
- mov r8, r0
- ldrb r0, [r0]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- mov r9, r1
- strh r0, [r4, 0x20]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- mov r1, r9
- strh r1, [r4, 0x2E]
- ldr r2, _080B56DC @ =gUnknown_2037F02
- ldrh r1, [r2]
- strh r1, [r4, 0x30]
- ldrh r1, [r2, 0x2]
- strh r1, [r4, 0x32]
- ldrh r1, [r2, 0x4]
- strh r1, [r4, 0x34]
- ldrh r1, [r4, 0x20]
- lsls r1, 4
- strh r1, [r4, 0x36]
- lsls r0, 4
- strh r0, [r4, 0x38]
- lsls r5, 16
- asrs r5, 16
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- subs r5, r0
- lsls r5, 4
- movs r0, 0
- ldrsh r1, [r2, r0]
- lsls r1, 1
- adds r0, r5, 0
- str r2, [sp]
- bl __divsi3
- strh r0, [r4, 0x3A]
- lsls r6, 16
- asrs r6, 16
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- subs r6, r0
- lsls r6, 4
- ldr r2, [sp]
- movs r0, 0
- ldrsh r1, [r2, r0]
- lsls r1, 1
- adds r0, r6, 0
- bl __divsi3
- strh r0, [r4, 0x3C]
- ldr r0, _080B56E0 @ =sub_80B56E4
- str r0, [r4, 0x1C]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B56D8: .4byte gUnknown_2037F1A
-_080B56DC: .4byte gUnknown_2037F02
-_080B56E0: .4byte sub_80B56E4
- thumb_func_end sub_80B563C
-
- thumb_func_start sub_80B56E4
-sub_80B56E4: @ 80B56E4
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080B572E
- cmp r0, 0x1
- bgt _080B56FA
- cmp r0, 0
- beq _080B5704
- b _080B57F2
-_080B56FA:
- cmp r0, 0x2
- beq _080B5798
- cmp r0, 0x3
- beq _080B57EC
- b _080B57F2
-_080B5704:
- ldrh r0, [r5, 0x3A]
- ldrh r2, [r5, 0x36]
- adds r0, r2
- strh r0, [r5, 0x36]
- ldrh r1, [r5, 0x3C]
- ldrh r2, [r5, 0x38]
- adds r1, r2
- strh r1, [r5, 0x38]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r5, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r5, 0x22]
- ldrh r0, [r5, 0x30]
- subs r0, 0x1
- strh r0, [r5, 0x30]
- lsls r0, 16
- cmp r0, 0
- bgt _080B57F2
- b _080B57DE
-_080B572E:
- ldrh r0, [r5, 0x32]
- subs r0, 0x1
- strh r0, [r5, 0x32]
- lsls r0, 16
- cmp r0, 0
- bgt _080B57F2
- ldr r4, _080B5794 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x30]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x20]
- lsls r0, 4
- strh r0, [r5, 0x36]
- ldrh r0, [r5, 0x22]
- lsls r0, 4
- strh r0, [r5, 0x38]
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- subs r0, r1
- lsls r0, 4
- movs r2, 0x34
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r5, 0x3A]
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r2, 0x22
- ldrsh r1, [r5, r2]
- subs r0, r1
- lsls r0, 4
- movs r2, 0x34
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r5, 0x3C]
- b _080B57DE
- .align 2, 0
-_080B5794: .4byte gUnknown_2037F1B
-_080B5798:
- ldrh r0, [r5, 0x3A]
- ldrh r1, [r5, 0x36]
- adds r0, r1
- strh r0, [r5, 0x36]
- ldrh r1, [r5, 0x3C]
- ldrh r2, [r5, 0x38]
- adds r1, r2
- strh r1, [r5, 0x38]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r5, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r5, 0x22]
- ldrh r0, [r5, 0x34]
- subs r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- cmp r0, 0
- bgt _080B57F2
- ldr r4, _080B57E8 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
-_080B57DE:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080B57F2
- .align 2, 0
-_080B57E8: .4byte gUnknown_2037F1B
-_080B57EC:
- adds r0, r5, 0
- bl move_anim_8074EE0
-_080B57F2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B56E4
-
- thumb_func_start sub_80B57F8
-sub_80B57F8: @ 80B57F8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r0, _080B580C @ =sub_80B5810
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B580C: .4byte sub_80B5810
- thumb_func_end sub_80B57F8
-
- thumb_func_start sub_80B5810
-sub_80B5810: @ 80B5810
- push {r4-r6,lr}
- adds r3, r0, 0
- movs r5, 0
- movs r6, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080B58A6
- adds r1, r3, 0
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x4
- ands r0, r2
- adds r4, r1, 0
- cmp r0, 0
- bne _080B583A
- movs r0, 0x4
- orrs r0, r2
- strb r0, [r4]
-_080B583A:
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _080B584A
- cmp r0, 0x1
- beq _080B5854
- movs r6, 0x1
- b _080B585E
-_080B584A:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0x2
- bne _080B585E
- b _080B5862
-_080B5854:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0x4
- bne _080B585E
- movs r5, 0x1
-_080B585E:
- cmp r5, 0
- beq _080B5894
-_080B5862:
- ldrb r2, [r4]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r3, 0x32]
- strh r1, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080B58A6
- strh r1, [r3, 0x32]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- b _080B58A6
-_080B5894:
- cmp r6, 0
- beq _080B58A0
- adds r0, r3, 0
- bl DestroyAnimSprite
- b _080B58A6
-_080B58A0:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
-_080B58A6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B5810
-
- thumb_func_start sub_80B58AC
-sub_80B58AC: @ 80B58AC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080B58D8 @ =gTasks
- adds r5, r0, r1
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- movs r6, 0
- movs r1, 0
- strh r0, [r5, 0x8]
- lsls r0, 16
- cmp r0, 0
- bge _080B58DC
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080B59B8
- .align 2, 0
-_080B58D8: .4byte gTasks
-_080B58DC:
- strh r1, [r5, 0xA]
- movs r0, 0xF
- strh r0, [r5, 0xC]
- movs r0, 0x2
- strh r0, [r5, 0xE]
- strh r1, [r5, 0x10]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r5, 0xE]
- lsls r1, 8
- ldrh r0, [r5, 0xC]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r4, _080B5944 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x50
- strh r1, [r0, 0x2E]
- ldr r0, _080B5948 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B5950
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _080B594C @ =0x0000ff70
- strh r1, [r0, 0x30]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x70
- b _080B596E
- .align 2, 0
-_080B5944: .4byte gSprites
-_080B5948: .4byte gUnknown_2037F1B
-_080B594C: .4byte 0x0000ff70
-_080B5950:
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x90
- strh r1, [r0, 0x30]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _080B59C0 @ =0x0000ff90
-_080B596E:
- strh r1, [r0, 0x32]
- ldr r4, _080B59C4 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r2, 0
- strh r2, [r0, 0x34]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r2, [r0, 0x36]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _080B59C8 @ =SpriteCallbackDummy
- bl StoreSpriteCallbackInData6
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, 0x1C
- adds r0, r4
- ldr r1, _080B59CC @ =sub_8074D00
- str r1, [r0]
- ldr r0, _080B59D0 @ =sub_80B59D4
- str r0, [r5]
-_080B59B8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B59C0: .4byte 0x0000ff90
-_080B59C4: .4byte gSprites
-_080B59C8: .4byte SpriteCallbackDummy
-_080B59CC: .4byte sub_8074D00
-_080B59D0: .4byte sub_80B59D4
- thumb_func_end sub_80B58AC
-
- thumb_func_start sub_80B59D4
-sub_80B59D4: @ 80B59D4
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B59F8 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B5A78
- cmp r0, 0x1
- bgt _080B59FC
- cmp r0, 0
- beq _080B5A02
- b _080B5AA4
- .align 2, 0
-_080B59F8: .4byte gTasks
-_080B59FC:
- cmp r0, 0x2
- beq _080B5A9E
- b _080B5AA4
-_080B5A02:
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x3
- ands r0, r1
- strh r0, [r4, 0x12]
- cmp r0, 0x1
- bne _080B5A20
- ldrh r1, [r4, 0xC]
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080B5A20
- subs r0, r1, 0x1
- strh r0, [r4, 0xC]
-_080B5A20:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0x3
- bne _080B5A36
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080B5A36
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
-_080B5A36:
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0xC]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, [r4, 0xC]
- movs r0, 0x80
- lsls r0, 13
- cmp r1, r0
- bne _080B5AA4
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x50
- ble _080B5AA4
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B5A74 @ =gSprites
- adds r0, r1
- bl obj_delete_but_dont_free_vram
- movs r0, 0x1
- strh r0, [r4, 0x10]
- b _080B5AA4
- .align 2, 0
-_080B5A74: .4byte gSprites
-_080B5A78:
- ldrh r0, [r4, 0x14]
- adds r0, 0x1
- strh r0, [r4, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B5AA4
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- b _080B5AA4
-_080B5A9E:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B5AA4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B59D4
-
- thumb_func_start sub_80B5AAC
-sub_80B5AAC: @ 80B5AAC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r2, _080B5ACC @ =gTasks
- adds r1, r2
- movs r2, 0
- strh r2, [r1, 0x26]
- ldr r2, _080B5AD0 @ =sub_80B5AD4
- str r2, [r1]
- bl _call_via_r2
- pop {r0}
- bx r0
- .align 2, 0
-_080B5ACC: .4byte gTasks
-_080B5AD0: .4byte sub_80B5AD4
- thumb_func_end sub_80B5AAC
-
- thumb_func_start sub_80B5AD4
-sub_80B5AD4: @ 80B5AD4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080B5B0C @ =gTasks
- adds r5, r0, r1
- ldr r0, _080B5B10 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0x26
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bls _080B5B00
- b _080B5D22
-_080B5B00:
- lsls r0, 2
- ldr r1, _080B5B14 @ =_080B5B18
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B5B0C: .4byte gTasks
-_080B5B10: .4byte gUnknown_2037F1B
-_080B5B14: .4byte _080B5B18
- .align 2, 0
-_080B5B18:
- .4byte _080B5B2C
- .4byte _080B5C2C
- .4byte _080B5C70
- .4byte _080B5CD8
- .4byte _080B5D04
-_080B5B2C:
- ldr r7, _080B5B64 @ =0x00002771
- adds r0, r7, 0
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- mov r8, r2
- strh r0, [r5, 0x24]
- cmp r0, 0xFF
- beq _080B5B5A
- cmp r0, 0xF
- beq _080B5B5A
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- strh r0, [r5, 0x8]
- lsls r0, 16
- cmp r0, 0
- bge _080B5B68
- adds r0, r7, 0
- bl FreeSpritePaletteByTag
-_080B5B5A:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080B5D28
- .align 2, 0
-_080B5B64: .4byte 0x00002771
-_080B5B68:
- ldr r4, _080B5C14 @ =gSprites
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r2, [r5, 0x24]
- lsls r2, 4
- ldrb r3, [r1, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r2, 0x8
- ldrsh r0, [r5, r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- ldr r0, _080B5C18 @ =gUnknown_2024018
- ldr r1, [r0]
- ldr r0, _080B5C1C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 31
- adds r2, 0x3E
- lsrs r1, 31
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- mov r2, r8
- strh r2, [r5, 0xA]
- strh r2, [r5, 0xC]
- movs r0, 0x10
- strh r0, [r5, 0xE]
- movs r0, 0x1
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- movs r0, 0x22
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- lsls r0, 4
- strh r0, [r5, 0x10]
- cmp r6, 0x1
- bne _080B5C20
- movs r1, 0x80
- lsls r1, 2
- b _080B5C24
- .align 2, 0
-_080B5C14: .4byte gSprites
-_080B5C18: .4byte gUnknown_2024018
-_080B5C1C: .4byte gUnknown_2037F1B
-_080B5C20:
- movs r1, 0x80
- lsls r1, 3
-_080B5C24:
- movs r0, 0
- bl ClearGpuRegBits
- b _080B5D22
-_080B5C2C:
- movs r1, 0x24
- ldrsh r0, [r5, r1]
- adds r0, 0x10
- lsls r0, 4
- strh r0, [r5, 0x24]
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- lsls r0, 1
- ldr r1, _080B5C60 @ =gPlttBufferUnfaded
- adds r0, r1
- movs r2, 0x24
- ldrsh r1, [r5, r2]
- lsls r1, 1
- ldr r2, _080B5C64 @ =gPlttBufferFaded
- adds r1, r2
- ldr r2, _080B5C68 @ =0x04000008
- bl CpuSet
- ldrh r0, [r5, 0x10]
- ldr r3, _080B5C6C @ =0x00003c0d
- movs r1, 0x10
- movs r2, 0xA
- bl BlendPalette
- b _080B5D22
- .align 2, 0
-_080B5C60: .4byte gPlttBufferUnfaded
-_080B5C64: .4byte gPlttBufferFaded
-_080B5C68: .4byte 0x04000008
-_080B5C6C: .4byte 0x00003c0d
-_080B5C70:
- ldr r2, _080B5CAC @ =gSprites
- movs r0, 0x22
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- subs r1, 0x20
- lsls r1, 16
- lsrs r2, r1, 16
- cmp r1, 0
- bge _080B5C90
- movs r2, 0
-_080B5C90:
- cmp r6, 0x1
- bne _080B5CB0
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r2, 0
- adds r1, 0x40
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- str r2, [sp]
- movs r2, 0x4
- str r2, [sp, 0x4]
- str r6, [sp, 0x8]
- b _080B5CC8
- .align 2, 0
-_080B5CAC: .4byte gSprites
-_080B5CB0:
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r2, 0
- adds r1, 0x40
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- str r2, [sp]
- movs r2, 0x8
- str r2, [sp, 0x4]
- movs r2, 0x1
- str r2, [sp, 0x8]
-_080B5CC8:
- movs r2, 0x2
- movs r3, 0x6
- bl ScanlineEffect_InitWave
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x1C]
- b _080B5D22
-_080B5CD8:
- cmp r6, 0x1
- bne _080B5CEC
- ldr r1, _080B5CE8 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- b _080B5CF4
- .align 2, 0
-_080B5CE8: .4byte 0x00003f42
-_080B5CEC:
- ldr r1, _080B5D00 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
-_080B5CF4:
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- b _080B5D22
- .align 2, 0
-_080B5D00: .4byte 0x00003f44
-_080B5D04:
- cmp r6, 0x1
- bne _080B5D14
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl SetGpuRegBits
- b _080B5D1E
-_080B5D14:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
-_080B5D1E:
- ldr r0, _080B5D34 @ =sub_80B5D38
- str r0, [r5]
-_080B5D22:
- ldrh r0, [r5, 0x26]
- adds r0, 0x1
- strh r0, [r5, 0x26]
-_080B5D28:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5D34: .4byte sub_80B5D38
- thumb_func_end sub_80B5AD4
-
- thumb_func_start sub_80B5D38
-sub_80B5D38: @ 80B5D38
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B5DC0 @ =gTasks
- adds r4, r0, r1
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x1
- ands r0, r1
- strh r0, [r4, 0x12]
- cmp r0, 0
- bne _080B5D70
- ldr r1, _080B5DC4 @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x12
- bl __divsi3
- strh r0, [r4, 0xC]
-_080B5D70:
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bne _080B5D92
- ldr r1, _080B5DC4 @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x12
- bl __divsi3
- movs r1, 0x10
- subs r1, r0
- strh r1, [r4, 0xE]
-_080B5D92:
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0xC]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0x80
- bne _080B5DBA
- movs r0, 0
- strh r0, [r4, 0x26]
- ldr r1, _080B5DC8 @ =sub_80B5DCC
- str r1, [r4]
- adds r0, r5, 0
- bl _call_via_r1
-_080B5DBA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5DC0: .4byte gTasks
-_080B5DC4: .4byte gSineTable
-_080B5DC8: .4byte sub_80B5DCC
- thumb_func_end sub_80B5D38
-
- thumb_func_start sub_80B5DCC
-sub_80B5DCC: @ 80B5DCC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B5DFC @ =gTasks
- adds r4, r0, r1
- ldr r0, _080B5E00 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B5E38
- cmp r0, 0x1
- bgt _080B5E04
- cmp r0, 0
- beq _080B5E0A
- b _080B5EB4
- .align 2, 0
-_080B5DFC: .4byte gTasks
-_080B5E00: .4byte gUnknown_2037F1B
-_080B5E04:
- cmp r0, 0x2
- beq _080B5E4C
- b _080B5EB4
-_080B5E0A:
- ldr r1, _080B5E28 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- movs r0, 0x1
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x24]
- cmp r6, 0x1
- bne _080B5E2C
- movs r1, 0x80
- lsls r1, 2
- b _080B5E30
- .align 2, 0
-_080B5E28: .4byte gScanlineEffect
-_080B5E2C:
- movs r1, 0x80
- lsls r1, 3
-_080B5E30:
- movs r0, 0
- bl ClearGpuRegBits
- b _080B5EB4
-_080B5E38:
- ldrh r0, [r4, 0x10]
- ldr r3, _080B5E48 @ =0x00003c0d
- movs r1, 0x10
- movs r2, 0
- bl BlendPalette
- b _080B5EB4
- .align 2, 0
-_080B5E48: .4byte 0x00003c0d
-_080B5E4C:
- ldr r3, _080B5E9C @ =gSprites
- movs r0, 0x24
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- bl obj_delete_but_dont_free_vram
- ldr r0, _080B5EA0 @ =0x00002771
- bl FreeSpritePaletteByTag
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- cmp r6, 0x1
- bne _080B5EA4
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl SetGpuRegBits
- b _080B5EAE
- .align 2, 0
-_080B5E9C: .4byte gSprites
-_080B5EA0: .4byte 0x00002771
-_080B5EA4:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
-_080B5EAE:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B5EB4:
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B5DCC
-
- thumb_func_start sub_80B5EC0
-sub_80B5EC0: @ 80B5EC0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r7, r0, 0
- ldr r0, _080B5EFC @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B5F08
- ldr r4, _080B5F00 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 8
- movs r2, 0xE0
- lsls r2, 13
- adds r0, r2
- lsrs r5, r0, 16
- ldr r4, _080B5F04 @ =gUnknown_2037F1B
- b _080B5F2C
- .align 2, 0
-_080B5EFC: .4byte gUnknown_2037F02
-_080B5F00: .4byte gUnknown_2037F1A
-_080B5F04: .4byte gUnknown_2037F1B
-_080B5F08:
- ldr r4, _080B5FD0 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 8
- movs r2, 0xE0
- lsls r2, 13
- adds r0, r2
- lsrs r5, r0, 16
- ldr r4, _080B5FD4 @ =gUnknown_2037F1A
-_080B5F2C:
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 8
- movs r1, 0xE0
- lsls r1, 13
- adds r0, r1
- lsrs r0, 16
- mov r9, r0
- mov r8, r5
- mov r2, r9
- subs r4, r2, r5
- lsls r4, 16
- lsrs r4, 16
- lsls r0, r6, 4
- strh r0, [r7, 0x2E]
- lsls r0, r5, 4
- strh r0, [r7, 0x30]
- mov r1, r10
- subs r0, r1, r6
- lsls r0, 4
- ldr r5, _080B5FD8 @ =gUnknown_2037F02
- movs r2, 0x2
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r7, 0x32]
- lsls r4, 16
- asrs r4, 12
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl __divsi3
- strh r0, [r7, 0x34]
- ldrh r0, [r5, 0x2]
- strh r0, [r7, 0x36]
- mov r1, r10
- strh r1, [r7, 0x38]
- mov r2, r9
- strh r2, [r7, 0x3A]
- movs r1, 0x36
- ldrsh r0, [r7, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r7, 0x3C]
- ldrb r1, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r7, 0x5]
- strh r6, [r7, 0x20]
- mov r2, r8
- strh r2, [r7, 0x22]
- ldr r0, _080B5FDC @ =sub_80B5FE0
- str r0, [r7, 0x1C]
- adds r2, r7, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5FD0: .4byte gUnknown_2037F1B
-_080B5FD4: .4byte gUnknown_2037F1A
-_080B5FD8: .4byte gUnknown_2037F02
-_080B5FDC: .4byte sub_80B5FE0
- thumb_func_end sub_80B5EC0
-
- thumb_func_start sub_80B5FE0
-sub_80B5FE0: @ 80B5FE0
- push {r4,lr}
- adds r2, r0, 0
- ldrh r3, [r2, 0x36]
- movs r1, 0x36
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _080B6018
- ldrh r0, [r2, 0x32]
- ldrh r4, [r2, 0x2E]
- adds r0, r4
- strh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x34]
- ldrh r4, [r2, 0x30]
- adds r1, r4
- strh r1, [r2, 0x30]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r2, 0x22]
- subs r0, r3, 0x1
- strh r0, [r2, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bne _080B6018
- strh r0, [r2, 0x2E]
-_080B6018:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B5FE0
-
- thumb_func_start sub_80B6020
-sub_80B6020: @ 80B6020
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B6170 @ =gTasks
- adds r1, r0
- str r1, [sp]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0
- ldr r1, [sp]
- strh r0, [r1, 0x12]
- strh r0, [r1, 0x14]
- strh r0, [r1, 0x16]
- strh r0, [r1, 0x18]
- movs r0, 0x10
- strh r0, [r1, 0x1A]
- ldr r2, _080B6174 @ =gUnknown_2037F02
- ldrh r0, [r2]
- strh r0, [r1, 0x1C]
- ldr r4, _080B6178 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8076B2C
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B6090
- b _080B618C
-_080B6090:
- movs r4, 0
-_080B6092:
- lsls r1, r4, 16
- asrs r3, r1, 16
- ldr r0, _080B6178 @ =gUnknown_2037F1A
- ldrb r2, [r0]
- str r1, [sp, 0x10]
- cmp r3, r2
- beq _080B615E
- movs r0, 0x2
- eors r2, r0
- cmp r3, r2
- beq _080B615E
- lsls r0, r4, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080B615E
- ldr r6, [sp, 0x4]
- ldr r3, [sp, 0x8]
- lsls r0, r3, 16
- asrs r7, r0, 16
- ldr r0, _080B617C @ =gUnknown_83E7668
- adds r1, r6, 0
- adds r2, r7, 0
- movs r3, 0x37
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x40
- beq _080B615E
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- adds r0, r4, 0
- movs r1, 0x3
- bl sub_8076B2C
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- mov r0, r8
- lsls r5, r0, 4
- add r5, r8
- lsls r5, 2
- ldr r1, _080B6180 @ =gSprites
- adds r4, r5, r1
- lsls r0, r6, 4
- strh r0, [r4, 0x2E]
- lsls r0, r7, 4
- strh r0, [r4, 0x30]
- mov r2, r10
- subs r0, r2, r6
- lsls r0, 4
- ldr r3, _080B6174 @ =gUnknown_2037F02
- movs r2, 0x2
- ldrsh r1, [r3, r2]
- bl __divsi3
- strh r0, [r4, 0x32]
- mov r3, r9
- lsls r0, r3, 16
- asrs r0, 16
- subs r0, r7
- lsls r0, 4
- ldr r2, _080B6174 @ =gUnknown_2037F02
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- bl __divsi3
- strh r0, [r4, 0x34]
- ldr r1, _080B6174 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x36]
- mov r2, r10
- strh r2, [r4, 0x38]
- mov r3, r9
- strh r3, [r4, 0x3A]
- ldr r0, _080B6184 @ =gSprites + 0x1C
- adds r5, r0
- ldr r0, _080B6188 @ =sub_80B5FE0
- str r0, [r5]
- ldr r2, [sp]
- movs r3, 0x20
- ldrsh r1, [r2, r3]
- adds r1, 0xD
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1
- mov r1, r8
- strh r1, [r0]
- ldrh r0, [r2, 0x20]
- adds r0, 0x1
- strh r0, [r2, 0x20]
-_080B615E:
- ldr r2, [sp, 0x10]
- movs r3, 0x80
- lsls r3, 9
- adds r0, r2, r3
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080B6092
- b _080B6210
- .align 2, 0
-_080B6170: .4byte gTasks
-_080B6174: .4byte gUnknown_2037F02
-_080B6178: .4byte gUnknown_2037F1A
-_080B617C: .4byte gUnknown_83E7668
-_080B6180: .4byte gSprites
-_080B6184: .4byte gSprites + 0x1C
-_080B6188: .4byte sub_80B5FE0
-_080B618C:
- ldr r0, _080B6228 @ =gUnknown_83E7668
- ldr r7, [sp, 0x4]
- ldr r2, [sp, 0x8]
- lsls r1, r2, 16
- asrs r1, 16
- str r1, [sp, 0xC]
- adds r1, r7, 0
- ldr r2, [sp, 0xC]
- movs r3, 0x37
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x40
- beq _080B6210
- movs r3, 0x30
- mov r10, r3
- movs r0, 0x28
- mov r9, r0
- ldr r6, _080B622C @ =gSprites
- mov r1, r8
- lsls r5, r1, 4
- add r5, r8
- lsls r5, 2
- adds r4, r5, r6
- lsls r0, r7, 4
- strh r0, [r4, 0x2E]
- ldr r2, [sp, 0xC]
- lsls r0, r2, 4
- strh r0, [r4, 0x30]
- subs r0, r3, r7
- lsls r0, 4
- ldr r3, _080B6230 @ =gUnknown_2037F02
- movs r2, 0x2
- ldrsh r1, [r3, r2]
- bl __divsi3
- strh r0, [r4, 0x32]
- mov r3, r9
- ldr r1, [sp, 0xC]
- subs r0, r3, r1
- lsls r0, 4
- ldr r2, _080B6230 @ =gUnknown_2037F02
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- bl __divsi3
- strh r0, [r4, 0x34]
- ldr r1, _080B6230 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x36]
- mov r2, r10
- strh r2, [r4, 0x38]
- mov r3, r9
- strh r3, [r4, 0x3A]
- adds r6, 0x1C
- adds r5, r6
- ldr r0, _080B6234 @ =sub_80B5FE0
- str r0, [r5]
- mov r1, r8
- ldr r0, [sp]
- strh r1, [r0, 0x22]
- movs r0, 0x1
- ldr r2, [sp]
- strh r0, [r2, 0x20]
-_080B6210:
- ldr r0, _080B6238 @ =sub_80B623C
- ldr r3, [sp]
- str r0, [r3]
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6228: .4byte gUnknown_83E7668
-_080B622C: .4byte gSprites
-_080B6230: .4byte gUnknown_2037F02
-_080B6234: .4byte sub_80B5FE0
-_080B6238: .4byte sub_80B623C
- thumb_func_end sub_80B6020
-
- thumb_func_start sub_80B623C
-sub_80B623C: @ 80B623C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B6260 @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080B62F2
- cmp r1, 0x1
- bgt _080B6264
- cmp r1, 0
- beq _080B6272
- b _080B63AE
- .align 2, 0
-_080B6260: .4byte gTasks
-_080B6264:
- cmp r1, 0x2
- bne _080B626A
- b _080B6384
-_080B626A:
- cmp r1, 0x3
- bne _080B6270
- b _080B6398
-_080B6270:
- b _080B63AE
-_080B6272:
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080B62D8
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B62D8
- strh r1, [r4, 0x12]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B62A8
- ldrh r1, [r4, 0x18]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080B62B6
- adds r0, r1, 0x1
- strh r0, [r4, 0x18]
- b _080B62B6
-_080B62A8:
- ldrh r1, [r4, 0x1A]
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B62B6
- subs r0, r1, 0x1
- strh r0, [r4, 0x1A]
-_080B62B6:
- ldrh r1, [r4, 0x1A]
- lsls r1, 8
- ldrh r0, [r4, 0x18]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- cmp r0, 0x17
- ble _080B62D8
- movs r0, 0
- strh r0, [r4, 0x16]
- movs r0, 0x1
- strh r0, [r4, 0x14]
-_080B62D8:
- ldrh r1, [r4, 0x1C]
- movs r2, 0x1C
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B62E8
- subs r0, r1, 0x1
- strh r0, [r4, 0x1C]
- b _080B63AE
-_080B62E8:
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B63AE
- b _080B6390
-_080B62F2:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B63AE
- movs r0, 0
- strh r0, [r4, 0x12]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
- ands r0, r1
- lsls r0, 16
- cmp r0, 0
- beq _080B6322
- ldrh r1, [r4, 0x18]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B6330
- subs r0, r1, 0x1
- strh r0, [r4, 0x18]
- b _080B6330
-_080B6322:
- ldrh r1, [r4, 0x1A]
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080B6330
- adds r0, r1, 0x1
- strh r0, [r4, 0x1A]
-_080B6330:
- ldrh r1, [r4, 0x1A]
- lsls r1, 8
- ldrh r0, [r4, 0x18]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, [r4, 0x18]
- movs r0, 0x80
- lsls r0, 13
- cmp r1, r0
- bne _080B63AE
- movs r5, 0
- b _080B6374
-_080B6350:
- adds r1, r5, 0
- adds r1, 0xD
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0x8
- adds r0, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B6380 @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080B6374:
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- cmp r5, r0
- blt _080B6350
- b _080B6390
- .align 2, 0
-_080B6380: .4byte gSprites
-_080B6384:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- cmp r0, 0
- ble _080B63AE
-_080B6390:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B63AE
-_080B6398:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B63AE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B623C
-
- thumb_func_start sub_80B63B4
-sub_80B63B4: @ 80B63B4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _080B6400 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080B6404 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r1, _080B6408 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080B640C @ =0x00003f1f
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0xC8
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x10
- bl SetGpuReg
- ldr r0, _080B6410 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B63FC
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080B6414
-_080B63FC:
- movs r6, 0x28
- b _080B6416
- .align 2, 0
-_080B6400: .4byte gUnknown_2022984
-_080B6404: .4byte gUnknown_2022986
-_080B6408: .4byte 0x00003f3f
-_080B640C: .4byte 0x00003f1f
-_080B6410: .4byte gUnknown_2037F1A
-_080B6414:
- movs r6, 0xC8
-_080B6416:
- ldr r1, _080B6454 @ =gUnknown_2022984
- lsls r3, r6, 16
- asrs r2, r3, 16
- lsls r0, r2, 8
- orrs r0, r2
- strh r0, [r1]
- ldr r1, _080B6458 @ =gUnknown_2022986
- movs r5, 0x28
- ldr r0, _080B645C @ =0x00002828
- strh r0, [r1]
- lsrs r3, 16
- movs r1, 0xF0
- subs r1, r2
- movs r4, 0x48
- ldr r2, _080B6460 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r2
- strh r3, [r0, 0xA]
- strh r1, [r0, 0xC]
- strh r5, [r0, 0xE]
- strh r4, [r0, 0x10]
- strh r6, [r0, 0x12]
- strh r5, [r0, 0x14]
- ldr r1, _080B6464 @ =sub_80B6468
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6454: .4byte gUnknown_2022984
-_080B6458: .4byte gUnknown_2022986
-_080B645C: .4byte 0x00002828
-_080B6460: .4byte gTasks
-_080B6464: .4byte sub_80B6468
- thumb_func_end sub_80B63B4
-
- thumb_func_start sub_80B6468
-sub_80B6468: @ 80B6468
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B6588 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r1, [r4, 0x8]
- adds r0, r1, 0x1
- strh r0, [r4, 0x8]
- ldrh r5, [r4, 0xA]
- ldrh r7, [r4, 0xC]
- ldrh r0, [r4, 0xE]
- mov r10, r0
- ldrh r2, [r4, 0x10]
- str r2, [sp, 0xC]
- ldrh r0, [r4, 0x12]
- ldrh r2, [r4, 0x14]
- mov r8, r2
- lsls r1, 16
- asrs r6, r1, 16
- cmp r6, 0xF
- ble _080B64A4
- b _080B6594
-_080B64A4:
- lsls r0, 16
- asrs r0, 16
- bl __floatsidf
- str r0, [sp, 0x10]
- str r1, [sp, 0x14]
- lsls r0, r5, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _080B658C @ =0x3fb00000
- ldr r3, _080B6590 @ =0x00000000
- bl __muldf3
- adds r5, r1, 0
- adds r4, r0, 0
- adds r0, r6, 0
- bl __floatsidf
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- adds r1, r5, 0
- adds r0, r4, 0
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- bl __subdf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- lsls r0, r7, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _080B658C @ =0x3fb00000
- ldr r3, _080B6590 @ =0x00000000
- bl __muldf3
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- bl __adddf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r7, r0, 16
- mov r1, r8
- lsls r0, r1, 16
- asrs r0, 16
- bl __floatsidf
- adds r5, r1, 0
- adds r4, r0, 0
- mov r2, r10
- lsls r0, r2, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _080B658C @ =0x3fb00000
- ldr r3, _080B6590 @ =0x00000000
- bl __muldf3
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- adds r1, r5, 0
- adds r0, r4, 0
- bl __subdf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r1, [sp, 0xC]
- lsls r0, r1, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _080B658C @ =0x3fb00000
- ldr r3, _080B6590 @ =0x00000000
- bl __muldf3
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- adds r1, r5, 0
- adds r0, r4, 0
- bl __adddf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r5, r0, 16
- b _080B65C2
- .align 2, 0
-_080B6588: .4byte gTasks
-_080B658C: .4byte 0x3fb00000
-_080B6590: .4byte 0x00000000
-_080B6594:
- movs r2, 0
- mov r9, r2
- movs r7, 0xF0
- movs r6, 0
- movs r5, 0x70
- str r6, [sp]
- str r6, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r3, 0
- bl sub_8075BE8
- lsls r0, 16
- lsrs r0, 16
- str r6, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _080B65E4 @ =sub_80B65F0
- str r0, [r4]
-_080B65C2:
- ldr r1, _080B65E8 @ =gUnknown_2022984
- mov r2, r9
- lsls r0, r2, 8
- orrs r7, r0
- strh r7, [r1]
- ldr r1, _080B65EC @ =gUnknown_2022986
- lsls r0, r6, 8
- orrs r5, r0
- strh r5, [r1]
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B65E4: .4byte sub_80B65F0
-_080B65E8: .4byte gUnknown_2022984
-_080B65EC: .4byte gUnknown_2022986
- thumb_func_end sub_80B6468
-
- thumb_func_start sub_80B65F0
-sub_80B65F0: @ 80B65F0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080B663C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080B6636
- ldr r0, _080B6640 @ =gUnknown_2022984
- strh r1, [r0]
- ldr r0, _080B6644 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r4, _080B6648 @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B6636:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B663C: .4byte gPaletteFade
-_080B6640: .4byte gUnknown_2022984
-_080B6644: .4byte gUnknown_2022986
-_080B6648: .4byte 0x00003f3f
- thumb_func_end sub_80B65F0
-
- thumb_func_start sub_80B664C
-sub_80B664C: @ 80B664C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080B6678 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B6680
- movs r2, 0x18
- ldr r3, _080B667C @ =0x0000fffe
- ldrb r0, [r4, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r4, 0x3]
- b _080B6684
- .align 2, 0
-_080B6678: .4byte gUnknown_2037F1A
-_080B667C: .4byte 0x0000fffe
-_080B6680:
- ldr r2, _080B66A0 @ =0x0000ffe8
- movs r3, 0x2
-_080B6684:
- lsls r0, r2, 16
- asrs r0, 16
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- strh r3, [r4, 0x30]
- movs r0, 0x3C
- strh r0, [r4, 0x2E]
- ldr r0, _080B66A4 @ =sub_80B66A8
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B66A0: .4byte 0x0000ffe8
-_080B66A4: .4byte sub_80B66A8
- thumb_func_end sub_80B664C
-
- thumb_func_start sub_80B66A8
-sub_80B66A8: @ 80B66A8
- push {r4,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _080B66BA
- subs r0, r1, 0x1
- b _080B671E
-_080B66BA:
- ldrh r0, [r3, 0x30]
- ldrh r4, [r3, 0x24]
- adds r1, r0, r4
- strh r1, [r3, 0x24]
- adds r0, r1, 0x7
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xE
- bls _080B6720
- ldrh r0, [r3, 0x20]
- adds r0, r1
- strh r0, [r3, 0x20]
- movs r0, 0
- strh r0, [r3, 0x24]
- ldrh r2, [r3, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x8
- ldr r4, _080B670C @ =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, _080B6710 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080B671C
- movs r0, 0x1E
- strh r0, [r3, 0x2E]
- ldr r0, _080B6714 @ =sub_8074C44
- str r0, [r3, 0x1C]
- ldr r1, _080B6718 @ =sub_80B6728
- adds r0, r3, 0
- bl StoreSpriteCallbackInData6
- b _080B6720
- .align 2, 0
-_080B670C: .4byte 0x000003ff
-_080B6710: .4byte 0xfffffc00
-_080B6714: .4byte sub_8074C44
-_080B6718: .4byte sub_80B6728
-_080B671C:
- movs r0, 0x28
-_080B671E:
- strh r0, [r3, 0x2E]
-_080B6720:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B66A8
-
- thumb_func_start sub_80B6728
-sub_80B6728: @ 80B6728
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r5, [r4, r0]
- cmp r5, 0
- bne _080B6752
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- strh r5, [r4, 0x30]
- strh r5, [r4, 0x32]
- b _080B6796
-_080B6752:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bgt _080B6762
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _080B6796
-_080B6762:
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- movs r1, 0x10
- subs r1, r0
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _080B6796
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B679C @ =sub_80B67A0
- str r0, [r4, 0x1C]
-_080B6796:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B679C: .4byte sub_80B67A0
- thumb_func_end sub_80B6728
-
- thumb_func_start sub_80B67A0
-sub_80B67A0: @ 80B67A0
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- ldr r0, _080B67CC @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080B67D0 @ =gUnknown_2022986
- strh r1, [r0]
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B67CC: .4byte gUnknown_2022984
-_080B67D0: .4byte gUnknown_2022986
- thumb_func_end sub_80B67A0
-
- thumb_func_start sub_80B67D4
-sub_80B67D4: @ 80B67D4
- push {r4-r7,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- movs r1, 0xC
- bl Sin
- strh r0, [r5, 0x24]
- ldr r0, _080B683C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B67F8
- ldrh r0, [r5, 0x24]
- negs r0, r0
- strh r0, [r5, 0x24]
-_080B67F8:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x6
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x2E]
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r5, 0x30]
- adds r0, r1
- strh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x3C]
- adds r0, 0x1
- strh r0, [r5, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080B6844
- ldr r0, _080B6840 @ =0x0000050b
- strh r0, [r5, 0x3A]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r5, 0x3A]
- movs r0, 0x52
- bl SetGpuReg
- b _080B689C
- .align 2, 0
-_080B683C: .4byte gUnknown_2037F1A
-_080B6840: .4byte 0x0000050b
-_080B6844:
- cmp r0, 0x1E
- ble _080B689C
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- ldrh r1, [r5, 0x3A]
- lsls r0, r1, 16
- asrs r0, 24
- lsls r0, 16
- movs r6, 0xFF
- ands r6, r1
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r7, r0, 16
- cmp r7, 0x10
- bls _080B6868
- movs r7, 0x10
-_080B6868:
- subs r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r0, 0
- bge _080B6874
- movs r6, 0
-_080B6874:
- lsls r4, r7, 8
- orrs r4, r6
- lsls r1, r4, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- strh r4, [r5, 0x3A]
- cmp r7, 0x10
- bne _080B689C
- cmp r6, 0
- bne _080B689C
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B68A4 @ =sub_80B68A8
- str r0, [r5, 0x1C]
-_080B689C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B68A4: .4byte sub_80B68A8
- thumb_func_end sub_80B67D4
-
- thumb_func_start sub_80B68A8
-sub_80B68A8: @ 80B68A8
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B68A8
-
- thumb_func_start sub_80B68C8
-sub_80B68C8: @ 80B68C8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080B6960 @ =gTasks
- adds r4, r0
- movs r6, 0
- strh r6, [r4, 0x8]
- movs r0, 0x10
- mov r8, r0
- mov r0, r8
- strh r0, [r4, 0xA]
- ldr r5, _080B6964 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1A]
- ldrb r0, [r5]
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1C]
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8076B2C
- lsls r0, 16
- asrs r1, r0, 16
- lsrs r0, 31
- adds r1, r0
- asrs r1, 1
- adds r1, 0x8
- strh r1, [r4, 0x1E]
- strh r6, [r4, 0x16]
- ldrb r0, [r5]
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x12]
- ldrb r0, [r5]
- bl sub_807685C
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x2
- strh r0, [r4, 0x14]
- strh r6, [r4, 0xE]
- mov r0, r8
- strh r0, [r4, 0x10]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- strh r6, [r4, 0x18]
- ldr r0, _080B6968 @ =sub_80B696C
- str r0, [r4]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6960: .4byte gTasks
-_080B6964: .4byte gUnknown_2037F1A
-_080B6968: .4byte sub_80B696C
- thumb_func_end sub_80B68C8
-
- thumb_func_start sub_80B696C
-sub_80B696C: @ 80B696C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _080B6990 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bls _080B6986
- b _080B6AF2
-_080B6986:
- lsls r0, 2
- ldr r1, _080B6994 @ =_080B6998
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B6990: .4byte gTasks
-_080B6994: .4byte _080B6998
- .align 2, 0
-_080B6998:
- .4byte _080B69B0
- .4byte _080B6A20
- .4byte _080B6A62
- .4byte _080B6A76
- .4byte _080B6ACC
- .4byte _080B6ADC
-_080B69B0:
- movs r6, 0
-_080B69B2:
- movs r2, 0x1A
- ldrsh r1, [r4, r2]
- movs r0, 0x1C
- ldrsh r2, [r4, r0]
- ldrb r3, [r4, 0x14]
- ldr r0, _080B6A14 @ =gUnknown_83E76E0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080B6A06
- ldr r1, _080B6A18 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r0, r1
- strh r7, [r5, 0x2E]
- ldr r0, _080B6A1C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- movs r1, 0
- lsls r0, 24
- cmp r0, 0
- bne _080B69E8
- movs r1, 0x1
-_080B69E8:
- strh r1, [r5, 0x30]
- movs r0, 0x2A
- muls r0, r6
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r4, 0x1E]
- strh r0, [r5, 0x34]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 1
- strh r0, [r5, 0x38]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
-_080B6A06:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x5
- bls _080B69B2
- b _080B6AD4
- .align 2, 0
-_080B6A14: .4byte gUnknown_83E76E0
-_080B6A18: .4byte gSprites
-_080B6A1C: .4byte gUnknown_2037F1A
-_080B6A20:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B6A3E
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0xD
- bgt _080B6A4C
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _080B6A4C
-_080B6A3E:
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0x4
- ble _080B6A4C
- subs r0, r1, 0x1
- strh r0, [r4, 0x10]
-_080B6A4C:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- ldrh r2, [r4, 0xE]
- ldrh r1, [r4, 0x10]
- cmp r0, 0xE
- bne _080B6ABC
- cmp r1, 0x4
- bne _080B6ABC
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080B6AB6
-_080B6A62:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- ble _080B6AF2
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080B6AD4
-_080B6A76:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B6A94
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080B6AA2
- subs r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _080B6AA2
-_080B6A94:
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080B6AA2
- adds r0, r1, 0x1
- strh r0, [r4, 0x10]
-_080B6AA2:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- ldrh r2, [r4, 0xE]
- ldrh r1, [r4, 0x10]
- cmp r0, 0
- bne _080B6ABC
- cmp r1, 0x10
- bne _080B6ABC
- movs r0, 0x1
- strh r0, [r4, 0x18]
-_080B6AB6:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080B6ABC:
- lsls r1, 8
- orrs r1, r2
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- b _080B6AF2
-_080B6ACC:
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080B6AF2
-_080B6AD4:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B6AF2
-_080B6ADC:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080B6AF2:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B696C
-
- thumb_func_start sub_80B6AF8
-sub_80B6AF8: @ 80B6AF8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B6B0A
- ldrh r0, [r4, 0x32]
- adds r0, 0x2
- b _080B6B0E
-_080B6B0A:
- ldrh r0, [r4, 0x32]
- subs r0, 0x2
-_080B6B0E:
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x32]
- movs r0, 0xFF
- ands r0, r1
- strh r0, [r4, 0x32]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x32]
- subs r0, 0x41
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x7E
- bhi _080B6B50
- ldr r2, _080B6B4C @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x12]
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- b _080B6B64
- .align 2, 0
-_080B6B4C: .4byte gTasks
-_080B6B50:
- ldr r2, _080B6BB8 @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0x3
- ldrb r1, [r0, 0x12]
- ands r1, r2
-_080B6B64:
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- lsls r0, 3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- movs r1, 0x7
- bl Sin
- strh r0, [r4, 0x26]
- ldr r2, _080B6BB8 @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r2
- movs r2, 0x18
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _080B6BB2
- ldrh r0, [r1, 0x16]
- subs r0, 0x1
- strh r0, [r1, 0x16]
- adds r0, r4, 0
- bl DestroySprite
-_080B6BB2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6BB8: .4byte gTasks
- thumb_func_end sub_80B6AF8
-
- thumb_func_start sub_80B6BBC
-sub_80B6BBC: @ 80B6BBC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r2, _080B6BDC @ =gTasks
- adds r1, r2
- movs r2, 0
- strh r2, [r1, 0x26]
- ldr r2, _080B6BE0 @ =sub_80B6BE4
- str r2, [r1]
- bl _call_via_r2
- pop {r0}
- bx r0
- .align 2, 0
-_080B6BDC: .4byte gTasks
-_080B6BE0: .4byte sub_80B6BE4
- thumb_func_end sub_80B6BBC
-
- thumb_func_start sub_80B6BE4
-sub_80B6BE4: @ 80B6BE4
- push {r4-r6,lr}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B6C18 @ =gTasks
- adds r6, r1, r0
- ldr r0, _080B6C1C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r4, r0, 24
- movs r1, 0x26
- ldrsh r0, [r6, r1]
- cmp r0, 0x7
- bls _080B6C0C
- b _080B6F1E
-_080B6C0C:
- lsls r0, 2
- ldr r1, _080B6C20 @ =_080B6C24
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B6C18: .4byte gTasks
-_080B6C1C: .4byte gUnknown_2037F1A
-_080B6C20: .4byte _080B6C24
- .align 2, 0
-_080B6C24:
- .4byte _080B6C44
- .4byte _080B6CCC
- .4byte _080B6D28
- .4byte _080B6D8C
- .4byte _080B6E04
- .4byte _080B6E6C
- .4byte _080B6E82
- .4byte _080B6EEC
-_080B6C44:
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x2
- bl SetAnimBgAttribute
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0
- strh r0, [r6, 0xA]
- strh r0, [r6, 0xC]
- movs r0, 0x10
- strh r0, [r6, 0xE]
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x10]
- ldr r3, _080B6CC8 @ =gSprites
- movs r2, 0x10
- ldrsh r1, [r6, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x5]
- lsls r0, 28
- lsrs r0, 30
- strh r0, [r6, 0x12]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- lsls r0, 4
- strh r0, [r6, 0x14]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r2, [r0, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x1]
- movs r0, 0x10
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r0, 0x80
- strh r0, [r6, 0x16]
- b _080B6F1E
- .align 2, 0
-_080B6CC8: .4byte gSprites
-_080B6CCC:
- ldrh r0, [r6, 0xA]
- adds r0, 0x1
- strh r0, [r6, 0xA]
- movs r5, 0x1
- ands r5, r0
- cmp r5, 0
- beq _080B6CDC
- b _080B6F24
-_080B6CDC:
- ldrh r0, [r6, 0x14]
- ldrb r2, [r6, 0xC]
- ldr r4, _080B6D08 @ =0x000066e0
- movs r1, 0x10
- adds r3, r4, 0
- bl BlendPalette
- ldrh r0, [r6, 0x16]
- ldrb r2, [r6, 0xC]
- movs r1, 0x10
- adds r3, r4, 0
- bl BlendPalette
- ldrh r1, [r6, 0xC]
- movs r2, 0xC
- ldrsh r0, [r6, r2]
- cmp r0, 0xB
- bgt _080B6D0C
- adds r0, r1, 0x1
- strh r0, [r6, 0xC]
- b _080B6F24
- .align 2, 0
-_080B6D08: .4byte 0x000066e0
-_080B6D0C:
- strh r5, [r6, 0xA]
- strh r5, [r6, 0xC]
- ldr r1, _080B6D24 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- b _080B6F1E
- .align 2, 0
-_080B6D24: .4byte 0x00003f44
-_080B6D28:
- movs r0, 0x2
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- ldr r0, _080B6D7C @ =gBattle_BG2_X
- movs r1, 0
- strh r1, [r0]
- ldr r4, _080B6D80 @ =gBattle_BG2_Y
- strh r1, [r4]
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x1A
- bl SetGpuReg
- add r0, sp, 0xC
- movs r1, 0x2
- bl sub_80752C8
- add r0, sp, 0xC
- ldrb r0, [r0, 0x9]
- ldr r1, _080B6D84 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet
- add r2, sp, 0xC
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080B6D88 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette
- add r1, sp, 0xC
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- b _080B6F1E
- .align 2, 0
-_080B6D7C: .4byte gBattle_BG2_X
-_080B6D80: .4byte gBattle_BG2_Y
-_080B6D84: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet
-_080B6D88: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette
-_080B6D8C:
- add r0, sp, 0xC
- movs r1, 0x2
- bl sub_80752C8
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- adds r1, r0, 0
- ldr r5, _080B6DFC @ =gMonSpritesGfxPtr
- ldr r0, [r5]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- str r1, [r0]
- ldr r0, _080B6E00 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
- bl LZDecompressWram
- add r0, sp, 0xC
- ldrb r0, [r0, 0x8]
- ldr r1, [r5]
- adds r1, r4
- ldr r1, [r1]
- movs r2, 0x80
- lsls r2, 1
- movs r3, 0
- bl sub_80730C0
- add r0, sp, 0xC
- ldrb r0, [r0, 0x9]
- ldr r1, [r5]
- adds r1, r4
- ldr r1, [r1]
- movs r2, 0x20
- str r2, [sp]
- str r2, [sp, 0x4]
- movs r2, 0x11
- str r2, [sp, 0x8]
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldr r0, [r5]
- adds r0, r4
- ldr r0, [r0]
- bl Free
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0
- str r1, [r0]
- b _080B6F1E
- .align 2, 0
-_080B6DFC: .4byte gMonSpritesGfxPtr
-_080B6E00: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
-_080B6E04:
- ldrh r0, [r6, 0xA]
- adds r0, 0x1
- strh r0, [r6, 0xA]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B6E14
- b _080B6F24
-_080B6E14:
- ldrh r1, [r6, 0xC]
- adds r1, 0x1
- strh r1, [r6, 0xC]
- ldrh r0, [r6, 0xE]
- subs r0, 0x1
- strh r0, [r6, 0xE]
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xE
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080B6F24
- strh r0, [r6, 0xA]
- strh r0, [r6, 0xC]
- movs r0, 0x10
- strh r0, [r6, 0xE]
- ldr r1, _080B6E68 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x2
- bl SetAnimBgAttribute
- b _080B6F1E
- .align 2, 0
-_080B6E68: .4byte 0x00003f42
-_080B6E6C:
- cmp r4, 0x1
- bne _080B6E76
- movs r1, 0x80
- lsls r1, 2
- b _080B6E7A
-_080B6E76:
- movs r1, 0x80
- lsls r1, 3
-_080B6E7A:
- movs r0, 0
- bl ClearGpuRegBits
- b _080B6F1E
-_080B6E82:
- ldr r2, _080B6EC0 @ =gSprites
- movs r0, 0x10
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- subs r1, 0x20
- lsls r1, 16
- lsrs r2, r1, 16
- cmp r1, 0
- bge _080B6EA2
- movs r2, 0
-_080B6EA2:
- cmp r4, 0x1
- bne _080B6EC4
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r2, 0
- adds r1, 0x40
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- str r2, [sp]
- movs r2, 0x4
- str r2, [sp, 0x4]
- str r4, [sp, 0x8]
- b _080B6EDE
- .align 2, 0
-_080B6EC0: .4byte gSprites
-_080B6EC4:
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r2, 0
- adds r1, 0x40
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- str r2, [sp]
- movs r2, 0x8
- str r2, [sp, 0x4]
- movs r2, 0x1
- str r2, [sp, 0x8]
- movs r2, 0x4
-_080B6EDE:
- movs r3, 0x8
- bl ScanlineEffect_InitWave
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x1C]
- b _080B6F1E
-_080B6EEC:
- ldrh r0, [r6, 0x16]
- ldr r3, _080B6F08 @ =0x000077ff
- movs r1, 0x10
- movs r2, 0xC
- bl BlendPalette
- cmp r4, 0x1
- bne _080B6F0C
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl SetGpuRegBits
- b _080B6F16
- .align 2, 0
-_080B6F08: .4byte 0x000077ff
-_080B6F0C:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
-_080B6F16:
- ldr r0, _080B6F2C @ =sub_80B6F30
- str r0, [r6]
- movs r0, 0
- strh r0, [r6, 0x26]
-_080B6F1E:
- ldrh r0, [r6, 0x26]
- adds r0, 0x1
- strh r0, [r6, 0x26]
-_080B6F24:
- add sp, 0x1C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6F2C: .4byte sub_80B6F30
- thumb_func_end sub_80B6BE4
-
- thumb_func_start sub_80B6F30
-sub_80B6F30: @ 80B6F30
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B6FB8 @ =gTasks
- adds r4, r0, r1
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x1
- ands r0, r1
- strh r0, [r4, 0x18]
- cmp r0, 0
- bne _080B6F68
- ldr r1, _080B6FBC @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x12
- bl __divsi3
- strh r0, [r4, 0xC]
-_080B6F68:
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bne _080B6F8A
- ldr r1, _080B6FBC @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x12
- bl __divsi3
- movs r1, 0x10
- subs r1, r0
- strh r1, [r4, 0xE]
-_080B6F8A:
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0xC]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0x80
- bne _080B6FB2
- movs r0, 0
- strh r0, [r4, 0x26]
- ldr r1, _080B6FC0 @ =sub_80B6FC4
- str r1, [r4]
- adds r0, r5, 0
- bl _call_via_r1
-_080B6FB2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6FB8: .4byte gTasks
-_080B6FBC: .4byte gSineTable
-_080B6FC0: .4byte sub_80B6FC4
- thumb_func_end sub_80B6F30
-
- thumb_func_start sub_80B6FC4
-sub_80B6FC4: @ 80B6FC4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _080B6FE8 @ =gTasks
- adds r6, r0, r1
- movs r1, 0x26
- ldrsh r0, [r6, r1]
- cmp r0, 0x5
- bls _080B6FDE
- b _080B7148
-_080B6FDE:
- lsls r0, 2
- ldr r1, _080B6FEC @ =_080B6FF0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B6FE8: .4byte gTasks
-_080B6FEC: .4byte _080B6FF0
- .align 2, 0
-_080B6FF0:
- .4byte _080B7008
- .4byte _080B7024
- .4byte _080B7044
- .4byte _080B707C
- .4byte _080B709C
- .4byte _080B70E8
-_080B7008:
- ldr r1, _080B701C @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- ldrh r0, [r6, 0x16]
- ldr r3, _080B7020 @ =0x000066e0
- movs r1, 0x10
- movs r2, 0xC
- bl BlendPalette
- b _080B7148
- .align 2, 0
-_080B701C: .4byte gScanlineEffect
-_080B7020: .4byte 0x000066e0
-_080B7024:
- ldr r1, _080B7040 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- movs r1, 0
- movs r0, 0x10
- strh r0, [r6, 0xC]
- strh r1, [r6, 0xE]
- b _080B7148
- .align 2, 0
-_080B7040: .4byte 0x00003f44
-_080B7044:
- ldrh r1, [r6, 0xC]
- subs r1, 0x1
- strh r1, [r6, 0xC]
- ldrh r0, [r6, 0xE]
- adds r0, 0x1
- strh r0, [r6, 0xE]
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0xE
- ldrsh r0, [r6, r2]
- cmp r0, 0xF
- ble _080B714E
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x2
- bl SetAnimBgAttribute
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x2
- bl SetAnimBgAttribute
- b _080B7148
-_080B707C:
- movs r0, 0x2
- bl sub_8075358
- movs r0, 0
- movs r1, 0x90
- movs r2, 0x20
- bl FillPalette
- movs r0, 0x2
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0xC
- strh r0, [r6, 0xA]
- b _080B7148
-_080B709C:
- ldrh r0, [r6, 0x14]
- ldrb r2, [r6, 0xA]
- ldr r4, _080B70C8 @ =0x000066e0
- movs r1, 0x10
- adds r3, r4, 0
- bl BlendPalette
- ldrh r0, [r6, 0x16]
- ldrb r2, [r6, 0xA]
- movs r1, 0x10
- adds r3, r4, 0
- bl BlendPalette
- ldrh r0, [r6, 0xA]
- movs r2, 0xA
- ldrsh r1, [r6, r2]
- cmp r1, 0
- beq _080B70CC
- subs r0, 0x1
- strh r0, [r6, 0xA]
- b _080B714E
- .align 2, 0
-_080B70C8: .4byte 0x000066e0
-_080B70CC:
- strh r1, [r6, 0xA]
- ldr r1, _080B70E4 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- b _080B7148
- .align 2, 0
-_080B70E4: .4byte 0x00003f44
-_080B70E8:
- ldr r5, _080B7154 @ =gSprites
- movs r1, 0x10
- ldrsh r0, [r6, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- movs r0, 0x3
- ldrb r2, [r6, 0x12]
- ands r2, r0
- lsls r2, 2
- ldrb r4, [r1, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r0, r4
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r2, 0x10
- ldrsh r1, [r6, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- ands r3, r1
- strb r3, [r0, 0x1]
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080B7148:
- ldrh r0, [r6, 0x26]
- adds r0, 0x1
- strh r0, [r6, 0x26]
-_080B714E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7154: .4byte gSprites
- thumb_func_end sub_80B6FC4
-
- thumb_func_start sub_80B7158
-sub_80B7158: @ 80B7158
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r3]
- ldr r2, _080B719C @ =gUnknown_2023D44
- ldr r1, _080B71A0 @ =gUnknown_2037F1A
- ldrb r1, [r1]
- adds r1, r2
- ldrb r1, [r1]
- strh r1, [r0, 0x38]
- movs r1, 0x80
- strh r1, [r0, 0x2E]
- movs r1, 0xA
- strh r1, [r0, 0x30]
- ldr r2, _080B71A4 @ =gUnknown_2037F02
- ldrh r1, [r2]
- strh r1, [r0, 0x32]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0x34]
- ldr r1, _080B71A8 @ =sub_80B71B0
- str r1, [r0, 0x1C]
- ldr r2, _080B71AC @ =gSprites
- movs r3, 0x38
- ldrsh r1, [r0, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_080B719C: .4byte gUnknown_2023D44
-_080B71A0: .4byte gUnknown_2037F1A
-_080B71A4: .4byte gUnknown_2037F02
-_080B71A8: .4byte sub_80B71B0
-_080B71AC: .4byte gSprites
- thumb_func_end sub_80B7158
-
- thumb_func_start sub_80B71B0
-sub_80B71B0: @ 80B71B0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x34]
- movs r1, 0x34
- ldrsh r3, [r5, r1]
- cmp r3, 0
- beq _080B7218
- subs r0, 0x1
- strh r0, [r5, 0x34]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Sin
- ldr r4, _080B7210 @ =gSprites
- movs r1, 0x38
- ldrsh r2, [r5, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r0, [r1, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Cos
- movs r1, 0x38
- ldrsh r2, [r5, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r0, [r1, 0x26]
- ldrh r0, [r5, 0x32]
- ldrh r2, [r5, 0x2E]
- adds r1, r0, r2
- strh r1, [r5, 0x2E]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _080B724C
- ldr r2, _080B7214 @ =0xffffff00
- adds r0, r1, r2
- strh r0, [r5, 0x2E]
- b _080B724C
- .align 2, 0
-_080B7210: .4byte gSprites
-_080B7214: .4byte 0xffffff00
-_080B7218:
- ldr r2, _080B7254 @ =gSprites
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x24]
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x26]
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- subs r1, 0x8
- strh r1, [r0, 0x22]
- ldr r0, _080B7258 @ =move_anim_8074EE0
- str r0, [r5, 0x1C]
-_080B724C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7254: .4byte gSprites
-_080B7258: .4byte move_anim_8074EE0
- thumb_func_end sub_80B71B0
-
- thumb_func_start sub_80B725C
-sub_80B725C: @ 80B725C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B72A4 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B72AC
- ldr r2, _080B72A8 @ =gUnknown_2037F02
- ldrh r0, [r5, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r5, 0x20]
- ldrh r0, [r2, 0x6]
- negs r0, r0
- strh r0, [r2, 0x6]
- ldrh r0, [r2, 0x8]
- negs r0, r0
- strh r0, [r2, 0x8]
- adds r1, r2, 0
- b _080B72B6
- .align 2, 0
-_080B72A4: .4byte gUnknown_2037F1A
-_080B72A8: .4byte gUnknown_2037F02
-_080B72AC:
- ldr r1, _080B72EC @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- strh r0, [r5, 0x20]
-_080B72B6:
- ldrh r0, [r1, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r5, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r5, 0x34]
- ldrh r0, [r1, 0xA]
- strh r0, [r5, 0x38]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080B72F0 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080B72F4 @ =sub_8074E70
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B72EC: .4byte gUnknown_2037F02
-_080B72F0: .4byte move_anim_8074EE0
-_080B72F4: .4byte sub_8074E70
- thumb_func_end sub_80B725C
-
- thumb_func_start sub_80B72F8
-sub_80B72F8: @ 80B72F8
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_8074FCC
- ldr r4, _080B7350 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, _080B7354 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B735C
- ldr r2, _080B7358 @ =gUnknown_2037F02
- ldrh r0, [r5, 0x20]
- ldrh r1, [r2, 0x2]
- subs r0, r1
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x22]
- adds r1, r0
- strh r1, [r5, 0x22]
- ldrh r0, [r5, 0x32]
- ldrh r1, [r2, 0x4]
- subs r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r2, 0x6]
- ldrh r1, [r5, 0x36]
- adds r0, r1
- strh r0, [r5, 0x36]
- b _080B7386
- .align 2, 0
-_080B7350: .4byte gUnknown_2037F1B
-_080B7354: .4byte gUnknown_2037F1A
-_080B7358: .4byte gUnknown_2037F02
-_080B735C:
- ldr r1, _080B73A0 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- strh r0, [r5, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- ldrh r0, [r1, 0x4]
- ldrh r2, [r5, 0x32]
- adds r0, r2
- strh r0, [r5, 0x32]
- ldrh r0, [r1, 0x6]
- ldrh r1, [r5, 0x36]
- adds r0, r1
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080B7386:
- ldr r0, _080B73A0 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x8]
- strh r0, [r5, 0x2E]
- ldr r0, _080B73A4 @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _080B73A8 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B73A0: .4byte gUnknown_2037F02
-_080B73A4: .4byte sub_8075590
-_080B73A8: .4byte move_anim_8074EE0
- thumb_func_end sub_80B72F8
-
- thumb_func_start sub_80B73AC
-sub_80B73AC: @ 80B73AC
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080B73C0 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B73C8
- ldr r4, _080B73C4 @ =gUnknown_2037F1A
- b _080B73CA
- .align 2, 0
-_080B73C0: .4byte gUnknown_2037F02
-_080B73C4: .4byte gUnknown_2037F1A
-_080B73C8:
- ldr r4, _080B740C @ =gUnknown_2037F1B
-_080B73CA:
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r4, _080B7410 @ =gUnknown_2037F02
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- adds r0, r5, 0
- bl sub_8074FF8
- ldrh r0, [r4, 0x4]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldr r0, _080B7414 @ =sub_8074F6C
- str r0, [r5, 0x1C]
- ldr r1, _080B7418 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B740C: .4byte gUnknown_2037F1B
-_080B7410: .4byte gUnknown_2037F02
-_080B7414: .4byte sub_8074F6C
-_080B7418: .4byte move_anim_8074EE0
- thumb_func_end sub_80B73AC
-
- thumb_func_start sub_80B741C
-sub_80B741C: @ 80B741C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080B7444 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B7436
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080B7436:
- adds r0, r4, 0
- bl sub_80B72F8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7444: .4byte gUnknown_2037F1A
- thumb_func_end sub_80B741C
-
- thumb_func_start sub_80B7448
-sub_80B7448: @ 80B7448
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r4, _080B749C @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r6, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x22]
- strh r5, [r6, 0x36]
- movs r0, 0x1
- strh r0, [r6, 0x38]
- ldr r0, _080B74A0 @ =gUnknown_2037F02
- ldrh r0, [r0]
- strh r0, [r6, 0x3A]
- ldr r4, _080B74A4 @ =sBattler_AI
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8076B2C
- lsls r7, r0, 16
- lsrs r5, r7, 16
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8076B2C
- lsls r1, r0, 16
- lsrs r0, r1, 16
- cmp r5, r0
- bls _080B74A8
- lsrs r0, r7, 17
- b _080B74AA
- .align 2, 0
-_080B749C: .4byte gUnknown_2037F1A
-_080B74A0: .4byte gUnknown_2037F02
-_080B74A4: .4byte sBattler_AI
-_080B74A8:
- lsrs r0, r1, 17
-_080B74AA:
- strh r0, [r6, 0x3C]
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- movs r2, 0x3C
- ldrsh r1, [r6, r2]
- bl Cos
- strh r0, [r6, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- movs r2, 0x3C
- ldrsh r1, [r6, r2]
- bl Sin
- strh r0, [r6, 0x26]
- ldr r0, _080B74D4 @ =sub_80B74D8
- str r0, [r6, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B74D4: .4byte sub_80B74D8
- thumb_func_end sub_80B7448
-
- thumb_func_start sub_80B74D8
-sub_80B74D8: @ 80B74D8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r5, [r4, r0]
- cmp r5, 0
- beq _080B74EA
- cmp r5, 0x1
- beq _080B7556
- b _080B75DA
-_080B74EA:
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x38]
- subs r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080B753C
- strh r5, [r4, 0x36]
- ldrh r1, [r4, 0x38]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080B753C
- adds r0, r1, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _080B753C
- movs r0, 0x10
- strh r0, [r4, 0x38]
-_080B753C:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _080B75DA
- movs r0, 0
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080B75DA
-_080B7556:
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x38]
- subs r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x3C]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0x95
- bgt _080B757E
- adds r0, r1, 0
- adds r0, 0x8
- strh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x95
- ble _080B757E
- movs r0, 0x96
- strh r0, [r4, 0x3C]
-_080B757E:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080B75C6
- movs r0, 0
- strh r0, [r4, 0x36]
- ldrh r1, [r4, 0x38]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080B75C6
- adds r0, r1, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _080B75C6
- movs r0, 0x10
- strh r0, [r4, 0x38]
-_080B75C6:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080B75DA
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B75DA:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B74D8
-
- thumb_func_start sub_80B75E0
-sub_80B75E0: @ 80B75E0
- 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, _080B760C @ =gTasks
- adds r4, r1, r0
- ldr r0, _080B7610 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B761C
- ldr r0, _080B7614 @ =0x04000014
- str r0, [sp]
- ldr r0, _080B7618 @ =gBattle_BG1_X
- b _080B7622
- .align 2, 0
-_080B760C: .4byte gTasks
-_080B7610: .4byte gUnknown_2037F1A
-_080B7614: .4byte 0x04000014
-_080B7618: .4byte gBattle_BG1_X
-_080B761C:
- ldr r0, _080B7698 @ =0x04000018
- str r0, [sp]
- ldr r0, _080B769C @ =gBattle_BG2_X
-_080B7622:
- ldrh r0, [r0]
- strh r0, [r4, 0xC]
- ldr r0, _080B76A0 @ =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r5, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r5, [r0, 0x9]
- ldr r0, _080B76A4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- subs r1, 0x20
- strh r1, [r4, 0xE]
- adds r0, 0x20
- strh r0, [r4, 0x10]
- cmp r1, 0
- bge _080B7652
- strh r5, [r4, 0xE]
-_080B7652:
- ldrh r3, [r4, 0xE]
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r3, r0
- bgt _080B7680
- ldr r5, _080B76A8 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
-_080B7664:
- lsls r1, r3, 1
- adds r2, r1, r5
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r3, r0
- ble _080B7664
-_080B7680:
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- ldr r0, _080B76AC @ =sub_80B76B0
- str r0, [r4]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7698: .4byte 0x04000018
-_080B769C: .4byte gBattle_BG2_X
-_080B76A0: .4byte 0xa2600001
-_080B76A4: .4byte gUnknown_2037F1A
-_080B76A8: .4byte gScanlineEffectRegBuffers
-_080B76AC: .4byte sub_80B76B0
- thumb_func_end sub_80B75E0
-
- thumb_func_start sub_80B76B0
-sub_80B76B0: @ 80B76B0
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, _080B76D4 @ =gTasks
- adds r2, r0, r1
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- cmp r0, 0x4
- bhi _080B7766
- lsls r0, 2
- ldr r1, _080B76D8 @ =_080B76DC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B76D4: .4byte gTasks
-_080B76D8: .4byte _080B76DC
- .align 2, 0
-_080B76DC:
- .4byte _080B76F0
- .4byte _080B7712
- .4byte _080B7722
- .4byte _080B774E
- .4byte _080B7760
-_080B76F0:
- ldrh r0, [r2, 0x16]
- adds r0, 0x1
- strh r0, [r2, 0x16]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B7746
- movs r0, 0
- strh r0, [r2, 0x16]
- ldrh r0, [r2, 0x14]
- adds r0, 0x1
- strh r0, [r2, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080B7746
- b _080B7740
-_080B7712:
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _080B7746
- b _080B7740
-_080B7722:
- ldrh r0, [r2, 0x16]
- adds r0, 0x1
- strh r0, [r2, 0x16]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B7746
- movs r0, 0
- strh r0, [r2, 0x16]
- ldrh r0, [r2, 0x14]
- subs r0, 0x1
- strh r0, [r2, 0x14]
- lsls r0, 16
- cmp r0, 0
- bne _080B7746
-_080B7740:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
-_080B7746:
- adds r0, r2, 0
- bl sub_80B776C
- b _080B7766
-_080B774E:
- ldr r1, _080B775C @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _080B7766
- .align 2, 0
-_080B775C: .4byte gScanlineEffect
-_080B7760:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_080B7766:
- pop {r0}
- bx r0
- thumb_func_end sub_80B76B0
-
- thumb_func_start sub_80B776C
-sub_80B776C: @ 80B776C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- ldrh r3, [r5, 0x12]
- ldrh r4, [r5, 0xE]
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- cmp r4, r0
- bgt _080B77C2
- ldr r7, _080B77D8 @ =gScanlineEffectRegBuffers
- mov r12, r7
- ldr r0, _080B77DC @ =gSineTable
- mov r8, r0
- ldr r6, _080B77E0 @ =gScanlineEffect
-_080B778A:
- lsls r2, r4, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r12
- lsls r0, r3, 1
- add r0, r8
- movs r7, 0
- ldrsh r1, [r0, r7]
- movs r7, 0x14
- ldrsh r0, [r5, r7]
- muls r0, r1
- asrs r0, 7
- ldrh r1, [r5, 0xC]
- adds r0, r1
- strh r0, [r2]
- adds r3, 0x8
- movs r0, 0xFF
- ands r3, r0
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- movs r7, 0x10
- ldrsh r0, [r5, r7]
- cmp r4, r0
- ble _080B778A
-_080B77C2:
- ldrh r0, [r5, 0x12]
- adds r0, 0x9
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x12]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B77D8: .4byte gScanlineEffectRegBuffers
-_080B77DC: .4byte gSineTable
-_080B77E0: .4byte gScanlineEffect
- thumb_func_end sub_80B776C
-
- thumb_func_start sub_80B77E4
-sub_80B77E4: @ 80B77E4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- ldr r5, _080B7884 @ =gUnknown_2037F02
- movs r0, 0x4
- ldrsh r1, [r5, r0]
- lsls r0, r1, 1
- adds r0, r1
- movs r1, 0x5
- bl __divsi3
- adds r6, r0, 0
- ldr r1, _080B7888 @ =gUnknown_2037F1A
- mov r8, r1
- ldrb r0, [r1]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- mov r2, r8
- ldrb r0, [r2]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r3, [r5, 0x8]
- adds r0, r3
- strh r0, [r4, 0x22]
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- bl Cos
- strh r0, [r4, 0x30]
- movs r3, 0x2
- ldrsh r0, [r5, r3]
- lsls r6, 16
- asrs r6, 16
- adds r1, r6, 0
- bl Sin
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x30]
- ldrh r2, [r5]
- adds r3, r2, 0
- muls r3, r1
- adds r1, r3, 0
- ldrh r3, [r4, 0x20]
- adds r1, r3
- strh r1, [r4, 0x20]
- adds r1, r2, 0
- muls r1, r0
- adds r0, r1, 0
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x34]
- ldr r0, _080B788C @ =sub_80B7894
- str r0, [r4, 0x1C]
- adds r4, 0x2E
- ldr r2, _080B7890 @ =gUnknown_20399A4
- movs r1, 0x6
-_080B786C:
- ldrh r0, [r4]
- strh r0, [r2]
- adds r4, 0x2
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _080B786C
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7884: .4byte gUnknown_2037F02
-_080B7888: .4byte gUnknown_2037F1A
-_080B788C: .4byte sub_80B7894
-_080B7890: .4byte gUnknown_20399A4
- thumb_func_end sub_80B77E4
-
- thumb_func_start sub_80B7894
-sub_80B7894: @ 80B7894
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x36]
- adds r0, r1
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x38]
- adds r0, r2
- strh r0, [r4, 0x38]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- cmp r0, r1
- ble _080B78D8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B78D8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7894
-
- thumb_func_start sub_80B78E0
-sub_80B78E0: @ 80B78E0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080B791C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080B7920 @ =gUnknown_2037F02
- ldrh r1, [r1]
- strh r1, [r0, 0x8]
- ldr r1, _080B7924 @ =gUnknown_2037F1A
- ldrb r4, [r1]
- movs r1, 0x10
- strh r1, [r0, 0xA]
- movs r0, 0x52
- bl SetGpuReg
- adds r0, r4, 0
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B792C
- ldr r1, _080B7928 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- b _080B7934
- .align 2, 0
-_080B791C: .4byte gTasks
-_080B7920: .4byte gUnknown_2037F02
-_080B7924: .4byte gUnknown_2037F1A
-_080B7928: .4byte 0x00003f42
-_080B792C:
- ldr r1, _080B7948 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
-_080B7934:
- ldr r0, _080B794C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080B7950 @ =sub_80B7954
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7948: .4byte 0x00003f44
-_080B794C: .4byte gTasks
-_080B7950: .4byte sub_80B7954
- thumb_func_end sub_80B78E0
-
- thumb_func_start sub_80B7954
-sub_80B7954: @ 80B7954
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080B79C0 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r6, r0, r1
- ldrh r0, [r6, 0xA]
- lsrs r4, r0, 8
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xC
- ldrsh r0, [r6, r2]
- ldrb r2, [r6, 0x8]
- cmp r0, r2
- bne _080B79D0
- adds r4, 0x1
- lsls r4, 24
- lsrs r4, 24
- subs r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r4, 8
- orrs r1, r0
- movs r5, 0
- strh r1, [r6, 0xA]
- ldrh r1, [r6, 0xA]
- movs r0, 0x52
- bl SetGpuReg
- strh r5, [r6, 0xC]
- cmp r4, 0x10
- bne _080B79D6
- ldr r2, _080B79C4 @ =gSprites
- ldr r1, _080B79C8 @ =gUnknown_2023D44
- ldr r0, _080B79CC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
- b _080B79D6
- .align 2, 0
-_080B79C0: .4byte gTasks
-_080B79C4: .4byte gSprites
-_080B79C8: .4byte gUnknown_2023D44
-_080B79CC: .4byte gUnknown_2037F1A
-_080B79D0:
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
-_080B79D6:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7954
-
- thumb_func_start sub_80B79DC
-sub_80B79DC: @ 80B79DC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B7A08 @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r1
- ldr r0, _080B7A0C @ =gUnknown_2037F02
- ldrh r0, [r0]
- strh r0, [r2, 0x8]
- movs r1, 0x80
- lsls r1, 5
- strh r1, [r2, 0xA]
- ldr r0, _080B7A10 @ =sub_80B7A14
- str r0, [r2]
- movs r0, 0x52
- bl SetGpuReg
- pop {r0}
- bx r0
- .align 2, 0
-_080B7A08: .4byte gTasks
-_080B7A0C: .4byte gUnknown_2037F02
-_080B7A10: .4byte sub_80B7A14
- thumb_func_end sub_80B79DC
-
- thumb_func_start sub_80B7A14
-sub_80B7A14: @ 80B7A14
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080B7A70 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r6, r0, r1
- ldrh r0, [r6, 0xA]
- lsrs r4, r0, 8
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xC
- ldrsh r0, [r6, r2]
- ldrb r2, [r6, 0x8]
- cmp r0, r2
- bne _080B7A74
- subs r4, 0x1
- lsls r4, 24
- lsrs r4, 24
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r4, 8
- orrs r1, r0
- movs r5, 0
- strh r1, [r6, 0xA]
- ldrh r1, [r6, 0xA]
- movs r0, 0x52
- bl SetGpuReg
- strh r5, [r6, 0xC]
- cmp r4, 0
- bne _080B7A7A
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r7, 0
- bl DestroyAnimVisualTask
- b _080B7A7A
- .align 2, 0
-_080B7A70: .4byte gTasks
-_080B7A74:
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
-_080B7A7A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7A14
-
- thumb_func_start sub_80B7A80
-sub_80B7A80: @ 80B7A80
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, _080B7AAC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B7AB4
- ldr r1, _080B7AB0 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- b _080B7ABC
- .align 2, 0
-_080B7AAC: .4byte gUnknown_2037F1A
-_080B7AB0: .4byte 0x00003f42
-_080B7AB4:
- ldr r1, _080B7AC8 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
-_080B7ABC:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7AC8: .4byte 0x00003f44
- thumb_func_end sub_80B7A80
-
- thumb_func_start sub_80B7ACC
-sub_80B7ACC: @ 80B7ACC
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r6, _080B7B38 @ =gUnknown_2037F1B
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x30]
- ldr r5, _080B7B3C @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r6]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- movs r0, 0x7E
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl sub_80754B8
- ldrh r0, [r4, 0x30]
- negs r0, r0
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x32]
- negs r0, r0
- strh r0, [r4, 0x36]
- ldr r0, _080B7B40 @ =0x0000ffd8
- strh r0, [r4, 0x3A]
- ldr r1, _080B7B44 @ =sub_80B7B48
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7B38: .4byte gUnknown_2037F1B
-_080B7B3C: .4byte gUnknown_2037F1A
-_080B7B40: .4byte 0x0000ffd8
-_080B7B44: .4byte sub_80B7B48
- thumb_func_end sub_80B7ACC
-
- thumb_func_start sub_80B7B48
-sub_80B7B48: @ 80B7B48
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r5, [r4, 0x30]
- ldrh r0, [r4, 0x34]
- adds r2, r5, r0
- strh r2, [r4, 0x34]
- ldrh r3, [r4, 0x32]
- ldrh r6, [r4, 0x36]
- adds r1, r3, r6
- strh r1, [r4, 0x36]
- lsls r0, r2, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r4, 0x26]
- movs r6, 0x3C
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bne _080B7B8A
- adds r0, r2, r5
- strh r0, [r4, 0x34]
- adds r1, r3
- strh r1, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
-_080B7B8A:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x3A
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r6, [r4, 0x26]
- adds r0, r6
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- cmp r0, 0x7F
- ble _080B7BBA
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x3A]
- adds r0, 0x14
- strh r0, [r4, 0x3A]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
-_080B7BBA:
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _080B7BCC
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B7BCC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7B48
-
- thumb_func_start sub_80B7BD4
-sub_80B7BD4: @ 80B7BD4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B7C08 @ =gUnknown_2037F02
- 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, _080B7C0C @ =sub_80B7C10
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7C08: .4byte gUnknown_2037F02
-_080B7C0C: .4byte sub_80B7C10
- thumb_func_end sub_80B7BD4
-
- thumb_func_start sub_80B7C10
-sub_80B7C10: @ 80B7C10
- 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 _080B7C46
- ldr r0, _080B7C4C @ =sub_80B7C50
- str r0, [r2, 0x1C]
-_080B7C46:
- pop {r0}
- bx r0
- .align 2, 0
-_080B7C4C: .4byte sub_80B7C50
- thumb_func_end sub_80B7C10
-
- thumb_func_start sub_80B7C50
-sub_80B7C50: @ 80B7C50
- 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 _080B7C82
- adds r0, r3, 0
- bl move_anim_8074EE0
-_080B7C82:
- pop {r0}
- bx r0
- thumb_func_end sub_80B7C50
-
- thumb_func_start sub_80B7C88
-sub_80B7C88: @ 80B7C88
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r0, _080B7C9C @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r3, r0, 0
- cmp r1, 0
- bne _080B7CA4
- ldr r0, _080B7CA0 @ =gUnknown_2037F1A
- b _080B7CA6
- .align 2, 0
-_080B7C9C: .4byte gUnknown_2037F02
-_080B7CA0: .4byte gUnknown_2037F1A
-_080B7CA4:
- ldr r0, _080B7CD4 @ =gUnknown_2037F1B
-_080B7CA6:
- ldrb r5, [r0]
- movs r6, 0x14
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x4
- ldr r7, _080B7CD8 @ =0x000003ff
- adds r0, r7, 0
- ands r1, r0
- ldr r0, _080B7CDC @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- movs r1, 0x2
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- beq _080B7D04
- cmp r0, 0x1
- bgt _080B7CE0
- cmp r0, 0
- beq _080B7CEA
- b _080B7D58
- .align 2, 0
-_080B7CD4: .4byte gUnknown_2037F1B
-_080B7CD8: .4byte 0x000003ff
-_080B7CDC: .4byte 0xfffffc00
-_080B7CE0:
- cmp r0, 0x2
- beq _080B7D1E
- cmp r0, 0x3
- beq _080B7D36
- b _080B7D58
-_080B7CEA:
- adds r0, r5, 0
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0x8
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r4, 0x22]
- b _080B7D58
-_080B7D04:
- adds r0, r5, 0
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0xE
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x10
- strh r0, [r4, 0x22]
- b _080B7D58
-_080B7D1E:
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x8
- b _080B7D4C
-_080B7D36:
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0xE
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x10
-_080B7D4C:
- strh r0, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- movs r6, 0xEC
-_080B7D58:
- 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, _080B7D80 @ =0x0000fff4
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_8075068
- ldr r0, _080B7D84 @ =sub_80B7D88
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7D80: .4byte 0x0000fff4
-_080B7D84: .4byte sub_80B7D88
- thumb_func_end sub_80B7C88
-
- thumb_func_start sub_80B7D88
-sub_80B7D88: @ 80B7D88
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B7D9C
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080B7D9C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7D88
-
- thumb_func_start sub_80B7DA4
-sub_80B7DA4: @ 80B7DA4
- push {r4-r7,lr}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B7E08 @ =gTasks
- adds r5, r1, r0
- ldr r4, _080B7E0C @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1F
- movs r6, 0
- strh r0, [r5, 0x16]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- 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 sub_8074480
- 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 GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B7E14
- ldr r0, _080B7E10 @ =0x0000fff4
- b _080B7E16
- .align 2, 0
-_080B7E08: .4byte gTasks
-_080B7E0C: .4byte gUnknown_2037F1A
-_080B7E10: .4byte 0x0000fff4
-_080B7E14:
- ldr r0, _080B7E60 @ =0x0000ffc0
-_080B7E16:
- strh r0, [r5, 0x18]
- ldr r0, _080B7E64 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xE]
- cmp r0, 0x1
- bne _080B7E78
- add r4, sp, 0xC
- adds r0, r4, 0
- bl sub_80752A0
- ldr r0, _080B7E68 @ =gBattle_BG1_Y
- ldrh r0, [r0]
- strh r0, [r5, 0x1C]
- ldr r1, _080B7E6C @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- ldrb r1, [r4, 0x8]
- lsls r1, 4
- movs r0, 0
- movs r2, 0x20
- bl FillPalette
- ldr r0, _080B7E70 @ =0x04000016
- str r0, [sp]
- movs r7, 0x2
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B7EA8
- ldr r1, _080B7E74 @ =gBattle_BG2_X
- b _080B7EA2
- .align 2, 0
-_080B7E60: .4byte 0x0000ffc0
-_080B7E64: .4byte gUnknown_2037F1A
-_080B7E68: .4byte gBattle_BG1_Y
-_080B7E6C: .4byte 0x00003f42
-_080B7E70: .4byte 0x04000016
-_080B7E74: .4byte gBattle_BG2_X
-_080B7E78:
- ldr r0, _080B7F30 @ =gBattle_BG2_Y
- ldrh r0, [r0]
- strh r0, [r5, 0x1C]
- ldr r1, _080B7F34 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0
- movs r1, 0x90
- movs r2, 0x20
- bl FillPalette
- ldr r0, _080B7F38 @ =0x0400001a
- str r0, [sp]
- movs r7, 0x4
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B7EA8
- ldr r1, _080B7F3C @ =gBattle_BG1_X
-_080B7EA2:
- ldrh r0, [r1]
- adds r0, 0xF0
- strh r0, [r1]
-_080B7EA8:
- ldr r0, _080B7F40 @ =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_80B856C
- movs r3, 0
- ldr r4, _080B7F44 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r4, r0
-_080B7ED4:
- 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 _080B7ED4
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- movs r0, 0x3F
- eors r7, r0
- movs r1, 0xFC
- lsls r1, 6
- adds r0, r1, 0
- orrs r7, r0
- movs r0, 0x4A
- adds r1, r7, 0
- bl SetGpuReg
- ldr r1, _080B7F48 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r2, _080B7F4C @ =gUnknown_2022984
- ldrh r0, [r5, 0x24]
- lsls r0, 8
- ldrh r1, [r5, 0x26]
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _080B7F50 @ =gUnknown_2022986
- movs r0, 0xA0
- strh r0, [r1]
- ldr r0, _080B7F54 @ =sub_80B7F58
- str r0, [r5]
- add sp, 0x1C
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7F30: .4byte gBattle_BG2_Y
-_080B7F34: .4byte 0x00003f44
-_080B7F38: .4byte 0x0400001a
-_080B7F3C: .4byte gBattle_BG1_X
-_080B7F40: .4byte 0xa2600001
-_080B7F44: .4byte gScanlineEffectRegBuffers
-_080B7F48: .4byte 0x00003f3f
-_080B7F4C: .4byte gUnknown_2022984
-_080B7F50: .4byte gUnknown_2022986
-_080B7F54: .4byte sub_80B7F58
- thumb_func_end sub_80B7DA4
-
- thumb_func_start sub_80B7F58
-sub_80B7F58: @ 80B7F58
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B7F7C @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080B7F72
- b _080B806A
-_080B7F72:
- lsls r0, 2
- ldr r1, _080B7F80 @ =_080B7F84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B7F7C: .4byte gTasks
-_080B7F80: .4byte _080B7F84
- .align 2, 0
-_080B7F84:
- .4byte _080B7F98
- .4byte _080B7FFA
- .4byte _080B8014
- .4byte _080B8050
- .4byte _080B8064
-_080B7F98:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B806A
- 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 _080B7FC8
- ldrh r1, [r4, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r4, r2]
- cmp r0, 0xC
- beq _080B7FD6
- adds r0, r1, 0x1
- strh r0, [r4, 0x1E]
- b _080B7FD6
-_080B7FC8:
- ldrh r1, [r4, 0x20]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x8
- beq _080B7FD6
- subs r0, r1, 0x1
- strh r0, [r4, 0x20]
-_080B7FD6:
- ldrh r1, [r4, 0x20]
- lsls r1, 8
- ldrh r0, [r4, 0x1E]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0xC
- bne _080B806A
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x8
- bne _080B806A
- b _080B8056
-_080B7FFA:
- ldrh r0, [r4, 0x10]
- subs r0, 0x8
- strh r0, [r4, 0x10]
- adds r0, r4, 0
- bl sub_80B843C
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bge _080B806A
- b _080B8056
-_080B8014:
- ldrh r0, [r4, 0x10]
- subs r0, 0x8
- strh r0, [r4, 0x10]
- adds r0, r4, 0
- bl sub_80B843C
- 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 _080B8036
- strh r2, [r4, 0x24]
-_080B8036:
- ldr r3, _080B804C @ =gUnknown_2022984
- 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 _080B806A
- b _080B8056
- .align 2, 0
-_080B804C: .4byte gUnknown_2022984
-_080B8050:
- ldr r1, _080B8060 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080B8056:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B806A
- .align 2, 0
-_080B8060: .4byte gScanlineEffect
-_080B8064:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B806A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7F58
-
- thumb_func_start sub_80B8070
-sub_80B8070: @ 80B8070
- push {r4-r7,lr}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080B8098 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bls _080B808C
- b _080B829E
-_080B808C:
- lsls r0, 2
- ldr r1, _080B809C @ =_080B80A0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B8098: .4byte gTasks
-_080B809C: .4byte _080B80A0
- .align 2, 0
-_080B80A0:
- .4byte _080B80B4
- .4byte _080B8138
- .4byte _080B817C
- .4byte _080B81E8
- .4byte _080B8250
-_080B80B4:
- bl sub_8073788
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B80F0
- ldr r0, _080B80E4 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080B80E8 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r4, _080B80EC @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- b _080B829E
- .align 2, 0
-_080B80E4: .4byte gUnknown_2022984
-_080B80E8: .4byte gUnknown_2022986
-_080B80EC: .4byte 0x00003f3f
-_080B80F0:
- ldr r0, _080B8110 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xE]
- cmp r0, 0x1
- bne _080B811C
- ldr r1, _080B8114 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, _080B8118 @ =gBattle_BG2_X
- b _080B8126
- .align 2, 0
-_080B8110: .4byte gUnknown_2037F1B
-_080B8114: .4byte 0x00003f42
-_080B8118: .4byte gBattle_BG2_X
-_080B811C:
- ldr r1, _080B8130 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, _080B8134 @ =gBattle_BG1_X
-_080B8126:
- ldrh r0, [r1]
- adds r0, 0xF0
- strh r0, [r1]
- b _080B823C
- .align 2, 0
-_080B8130: .4byte 0x00003f44
-_080B8134: .4byte gBattle_BG1_X
-_080B8138:
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080B8160
- mov r0, sp
- bl sub_80752A0
- ldr r0, _080B815C @ =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 _080B8170
- .align 2, 0
-_080B815C: .4byte gBattle_BG1_Y
-_080B8160:
- ldr r0, _080B8178 @ =gBattle_BG2_Y
- ldrh r0, [r0]
- strh r0, [r5, 0x1C]
- movs r0, 0
- movs r1, 0x90
- movs r2, 0x20
- bl FillPalette
-_080B8170:
- movs r0, 0x3
- bl sub_80B856C
- b _080B823C
- .align 2, 0
-_080B8178: .4byte gBattle_BG2_Y
-_080B817C:
- ldr r4, _080B81C8 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1F
- movs r6, 0
- strh r0, [r5, 0x16]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- 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 sub_8074480
- 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 GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B81D0
- ldr r0, _080B81CC @ =0x0000fff4
- b _080B81D2
- .align 2, 0
-_080B81C8: .4byte gUnknown_2037F1B
-_080B81CC: .4byte 0x0000fff4
-_080B81D0:
- ldr r0, _080B81E4 @ =0x0000ffc0
-_080B81D2:
- 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 _080B823C
- .align 2, 0
-_080B81E4: .4byte 0x0000ffc0
-_080B81E8:
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080B81F8
- ldr r0, _080B81F4 @ =0x04000016
- b _080B81FA
- .align 2, 0
-_080B81F4: .4byte 0x04000016
-_080B81F8:
- ldr r0, _080B8244 @ =0x0400001a
-_080B81FA:
- str r0, [sp, 0x10]
- movs r3, 0
- add r4, sp, 0x10
- ldr r6, _080B8248 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r7, r6, r0
-_080B8208:
- 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 _080B8208
- ldr r1, _080B824C @ =0xa2600001
- str r1, [r4, 0x4]
- movs r2, 0
- movs r0, 0x1
- strb r0, [r4, 0x8]
- strb r2, [r4, 0x9]
- ldr r0, [sp, 0x10]
- ldr r2, [r4, 0x8]
- bl ScanlineEffect_SetParams
-_080B823C:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080B829E
- .align 2, 0
-_080B8244: .4byte 0x0400001a
-_080B8248: .4byte gScanlineEffectRegBuffers
-_080B824C: .4byte 0xa2600001
-_080B8250:
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080B8268
- ldr r1, _080B8264 @ =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- b _080B8270
- .align 2, 0
-_080B8264: .4byte 0x00003f3d
-_080B8268:
- ldr r1, _080B82A8 @ =0x00003f3b
- movs r0, 0x4A
- bl SetGpuReg
-_080B8270:
- ldr r1, _080B82AC @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r2, _080B82B0 @ =gUnknown_2022984
- ldrh r0, [r5, 0x24]
- lsls r0, 8
- ldrh r1, [r5, 0x26]
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _080B82B4 @ =gUnknown_2022986
- movs r0, 0xA0
- strh r0, [r1]
- movs r0, 0
- strh r0, [r5, 0x8]
- strh r0, [r5, 0xA]
- strh r0, [r5, 0xC]
- ldr r1, _080B82B8 @ =0x0000080c
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, _080B82BC @ =sub_80B82C0
- str r0, [r5]
-_080B829E:
- add sp, 0x1C
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B82A8: .4byte 0x00003f3b
-_080B82AC: .4byte 0x00003f3f
-_080B82B0: .4byte gUnknown_2022984
-_080B82B4: .4byte gUnknown_2022986
-_080B82B8: .4byte 0x0000080c
-_080B82BC: .4byte sub_80B82C0
- thumb_func_end sub_80B8070
-
- thumb_func_start sub_80B82C0
-sub_80B82C0: @ 80B82C0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B82E4 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080B82DA
- b _080B842A
-_080B82DA:
- lsls r0, 2
- ldr r1, _080B82E8 @ =_080B82EC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B82E4: .4byte gTasks
-_080B82E8: .4byte _080B82EC
- .align 2, 0
-_080B82EC:
- .4byte _080B8300
- .4byte _080B832C
- .4byte _080B8394
- .4byte _080B83F6
- .4byte _080B8408
-_080B8300:
- 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 _080B8316
- strh r2, [r4, 0x12]
-_080B8316:
- adds r0, r4, 0
- bl sub_80B843C
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r1, r0
- beq _080B832A
- b _080B842A
-_080B832A:
- b _080B83FC
-_080B832C:
- movs r3, 0x26
- ldrsh r0, [r4, r3]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- subs r0, r1
- cmp r0, 0x3F
- bgt _080B8348
- ldrh r0, [r4, 0x24]
- subs r0, 0x4
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x26]
- adds r0, 0x4
- strh r0, [r4, 0x26]
- b _080B834C
-_080B8348:
- movs r0, 0x1
- strh r0, [r4, 0xA]
-_080B834C:
- ldr r2, _080B8390 @ =gUnknown_2022984
- 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 _080B836E
- strh r2, [r4, 0x10]
-_080B836E:
- adds r0, r4, 0
- bl sub_80B843C
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080B842A
- movs r3, 0xA
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080B842A
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080B83FC
- .align 2, 0
-_080B8390: .4byte gUnknown_2022984
-_080B8394:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B842A
- 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 _080B83C4
- ldrh r1, [r4, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B83D2
- subs r0, r1, 0x1
- strh r0, [r4, 0x1E]
- b _080B83D2
-_080B83C4:
- ldrh r1, [r4, 0x20]
- movs r3, 0x20
- ldrsh r0, [r4, r3]
- cmp r0, 0xF
- bgt _080B83D2
- adds r0, r1, 0x1
- strh r0, [r4, 0x20]
-_080B83D2:
- ldrh r1, [r4, 0x20]
- lsls r1, 8
- ldrh r0, [r4, 0x1E]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B842A
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x10
- bne _080B842A
- b _080B83FC
-_080B83F6:
- ldr r1, _080B8404 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080B83FC:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B842A
- .align 2, 0
-_080B8404: .4byte gScanlineEffect
-_080B8408:
- ldr r0, _080B8430 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080B8434 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r4, _080B8438 @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B842A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8430: .4byte gUnknown_2022984
-_080B8434: .4byte gUnknown_2022986
-_080B8438: .4byte 0x00003f3f
- thumb_func_end sub_80B82C0
-
- thumb_func_start sub_80B843C
-sub_80B843C: @ 80B843C
- 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 _080B8530
- 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 _080B849C
- ldr r0, _080B8528 @ =gScanlineEffectRegBuffers
- mov r12, r0
- ldr r7, _080B852C @ =gScanlineEffect
-_080B8470:
- 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 _080B8470
-_080B849C:
- ldrh r4, [r6, 0x10]
- lsls r3, r4, 16
- asrs r1, r3, 16
- movs r2, 0x12
- ldrsh r0, [r6, r2]
- cmp r1, r0
- bgt _080B84E6
- ldr r0, _080B8528 @ =gScanlineEffectRegBuffers
- mov r12, r0
- ldr r7, _080B852C @ =gScanlineEffect
-_080B84B0:
- asrs r4, r3, 16
- cmp r4, 0
- blt _080B84D2
- 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]
-_080B84D2:
- 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 _080B84B0
-_080B84E6:
- 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 _080B855E
- ldr r7, _080B8528 @ =gScanlineEffectRegBuffers
- ldr r4, _080B852C @ =gScanlineEffect
-_080B84FE:
- asrs r3, r2, 16
- cmp r3, 0
- blt _080B8516
- 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
-_080B8516:
- adds r0, r3, 0x1
- lsls r2, r0, 16
- asrs r1, r2, 16
- movs r3, 0x16
- ldrsh r0, [r6, r3]
- cmp r1, r0
- blt _080B84FE
- b _080B855E
- .align 2, 0
-_080B8528: .4byte gScanlineEffectRegBuffers
-_080B852C: .4byte gScanlineEffect
-_080B8530:
- movs r1, 0x1C
- ldrsh r0, [r6, r1]
- adds r5, r0, 0
- adds r5, 0x9F
- movs r4, 0
- ldr r3, _080B8568 @ =gScanlineEffectRegBuffers
- movs r2, 0xF0
- lsls r2, 3
- adds r6, r3, r2
-_080B8542:
- 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 _080B8542
-_080B855E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8568: .4byte gScanlineEffectRegBuffers
- thumb_func_end sub_80B843C
-
- thumb_func_start sub_80B856C
-sub_80B856C: @ 80B856C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0
- ldr r7, _080B85B4 @ =gSprites
- movs r1, 0x3
- ands r0, r1
- lsls r5, r0, 2
- movs r0, 0xD
- negs r0, r0
- adds r6, r0, 0
-_080B8582:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _080B85A2
- 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]
-_080B85A2:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080B8582
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B85B4: .4byte gSprites
- thumb_func_end sub_80B856C
-
- thumb_func_start sub_80B85B8
-sub_80B85B8: @ 80B85B8
- 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, _080B8658 @ =gUnknown_2037F1A
- ldrb r0, [r6]
- bl sub_80768B0
- 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_8072E48
- ldr r0, _080B865C @ =gSprites
- mov r9, r0
- ldr r0, _080B8660 @ =gUnknown_2023D44
- 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 sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080B8642
- ldrb r0, [r6]
- eors r0, r5
- movs r1, 0x1
- eors r4, r1
- adds r1, r4, 0
- bl sub_8072E48
- 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]
-_080B8642:
- 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
-_080B8658: .4byte gUnknown_2037F1A
-_080B865C: .4byte gSprites
-_080B8660: .4byte gUnknown_2023D44
- thumb_func_end sub_80B85B8
-
- thumb_func_start sub_80B8664
-sub_80B8664: @ 80B8664
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, _080B86AC @ =gUnknown_2037F1A
- ldrb r0, [r4]
- bl sub_80768B0
- 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_8073128
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080B86A0
- movs r0, 0x1
- eors r5, r0
- adds r0, r5, 0
- bl sub_8073128
-_080B86A0:
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B86AC: .4byte gUnknown_2037F1A
- thumb_func_end sub_80B8664
-
- thumb_func_start sub_80B86B0
-sub_80B86B0: @ 80B86B0
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080B86E0 @ =gUnknown_2037F02
- 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, _080B86E4 @ =sub_8074F6C
- str r0, [r4, 0x1C]
- ldr r1, _080B86E8 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B86E0: .4byte gUnknown_2037F02
-_080B86E4: .4byte sub_8074F6C
-_080B86E8: .4byte DestroyAnimSprite
- thumb_func_end sub_80B86B0
-
- thumb_func_start sub_80B86EC
-sub_80B86EC: @ 80B86EC
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0
- ldr r0, _080B87EC @ =gUnknown_2022984
- strh r6, [r0]
- ldr r0, _080B87F0 @ =gUnknown_2022986
- strh r6, [r0]
- ldr r1, _080B87F4 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080B87F8 @ =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r1, _080B87FC @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, _080B8800 @ =0x00000c08
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B8750
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080B8750:
- bl sub_8075290
- lsls r0, 24
- cmp r0, 0
- beq _080B87CA
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B87CA
- ldr r4, _080B8804 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080B8780
- ldrb r0, [r4]
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- bne _080B87CA
-_080B8780:
- ldrb r0, [r4]
- movs r5, 0x2
- eors r0, r5
- bl sub_8072DF0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B87CA
- ldr r3, _080B8808 @ =gSprites
- ldr r1, _080B880C @ =gUnknown_2023D44
- ldrb r0, [r4]
- eors r0, r5
- 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]
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r6, 0x1
-_080B87CA:
- ldr r4, _080B8804 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B8818
- ldr r1, _080B8810 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080B8814 @ =gEnemyParty
- b _080B8828
- .align 2, 0
-_080B87EC: .4byte gUnknown_2022984
-_080B87F0: .4byte gUnknown_2022986
-_080B87F4: .4byte 0x00003f3f
-_080B87F8: .4byte 0x00003f3d
-_080B87FC: .4byte 0x00003f42
-_080B8800: .4byte 0x00000c08
-_080B8804: .4byte gUnknown_2037F1A
-_080B8808: .4byte gSprites
-_080B880C: .4byte gUnknown_2023D44
-_080B8810: .4byte gBattlerPartyIndexes
-_080B8814: .4byte gEnemyParty
-_080B8818:
- ldr r1, _080B88B8 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080B88BC @ =gPlayerParty
-_080B8828:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080B88C0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_8076E34
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080B88C4 @ =gFile_graphics_battle_anims_masks_metal_shine_tilemap
- bl sub_807543C
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080B88C8 @ =gFile_graphics_battle_anims_masks_metal_shine_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080B88CC @ =gFile_graphics_battle_anims_masks_metal_shine_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r2, _080B88D0 @ =gBattle_BG1_X
- ldr r0, _080B88D4 @ =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, _080B88D8 @ =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, _080B88DC @ =gUnknown_2037F02
- movs r3, 0x2
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _080B88E0
- adds r0, r1, 0
- movs r1, 0
- bl sub_8075B48
- b _080B88EC
- .align 2, 0
-_080B88B8: .4byte gBattlerPartyIndexes
-_080B88BC: .4byte gPlayerParty
-_080B88C0: .4byte gUnknown_2037F1A
-_080B88C4: .4byte gFile_graphics_battle_anims_masks_metal_shine_tilemap
-_080B88C8: .4byte gFile_graphics_battle_anims_masks_metal_shine_sheet
-_080B88CC: .4byte gFile_graphics_battle_anims_masks_metal_shine_palette
-_080B88D0: .4byte gBattle_BG1_X
-_080B88D4: .4byte gSprites
-_080B88D8: .4byte gBattle_BG1_Y
-_080B88DC: .4byte gUnknown_2037F02
-_080B88E0:
- lsls r0, r1, 4
- ldrh r3, [r2, 0x4]
- movs r1, 0x10
- movs r2, 0xB
- bl BlendPalette
-_080B88EC:
- ldr r1, _080B8914 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- ldr r2, _080B8918 @ =gUnknown_2037F02
- ldrh r1, [r2]
- strh r1, [r0, 0xA]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0xC]
- ldrh r1, [r2, 0x4]
- strh r1, [r0, 0xE]
- strh r6, [r0, 0x14]
- ldr r1, _080B891C @ =sub_80B8920
- str r1, [r0]
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8914: .4byte gTasks
-_080B8918: .4byte gUnknown_2037F02
-_080B891C: .4byte sub_80B8920
- thumb_func_end sub_80B86EC
-
- thumb_func_start sub_80B8920
-sub_80B8920: @ 80B8920
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, _080B89E8 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x1C]
- adds r0, 0x4
- movs r5, 0
- strh r0, [r4, 0x1C]
- ldr r2, _080B89EC @ =gBattle_BG1_X
- ldrh r3, [r2]
- subs r1, r3, 0x4
- strh r1, [r2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x80
- beq _080B894E
- b _080B8A5E
-_080B894E:
- 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 _080B89FC
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080B89F0 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- 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 _080B8990
- adds r0, r1, 0
- movs r1, 0x1
- bl sub_8075B48
-_080B8990:
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- bl sub_8075358
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080B8A5E
- ldr r2, _080B89F4 @ =gUnknown_2023D44
- ldr r0, _080B89F8 @ =gUnknown_2037F1A
- 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, r5
- 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]
- b _080B8A5E
- .align 2, 0
-_080B89E8: .4byte gTasks
-_080B89EC: .4byte gBattle_BG1_X
-_080B89F0: .4byte gSprites
-_080B89F4: .4byte gUnknown_2023D44
-_080B89F8: .4byte gUnknown_2037F1A
-_080B89FC:
- cmp r0, 0x3
- bne _080B8A5E
- ldr r0, _080B8A68 @ =gUnknown_2022984
- strh r5, [r0]
- ldr r0, _080B8A6C @ =gUnknown_2022986
- strh r5, [r0]
- ldr r4, _080B8A70 @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080B8A2E
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080B8A2E:
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- eors r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080B8A5E:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8A68: .4byte gUnknown_2022984
-_080B8A6C: .4byte gUnknown_2022986
-_080B8A70: .4byte 0x00003f3f
- thumb_func_end sub_80B8920
-
- thumb_func_start sub_80B8A74
-sub_80B8A74: @ 80B8A74
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _080B8A94 @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r2, r0, 0
- cmp r1, 0x7
- bhi _080B8AD8
- lsls r0, r1, 2
- ldr r1, _080B8A98 @ =_080B8A9C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B8A94: .4byte gUnknown_2037F02
-_080B8A98: .4byte _080B8A9C
- .align 2, 0
-_080B8A9C:
- .4byte _080B8ABC
- .4byte _080B8ABC
- .4byte _080B8ABC
- .4byte _080B8ABC
- .4byte _080B8AC8
- .4byte _080B8ACC
- .4byte _080B8AD0
- .4byte _080B8AD4
-_080B8ABC:
- ldrb r0, [r2]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r2, r0, 24
- b _080B8ADA
-_080B8AC8:
- movs r4, 0
- b _080B8AE0
-_080B8ACC:
- movs r4, 0x2
- b _080B8AE0
-_080B8AD0:
- movs r4, 0x1
- b _080B8AE0
-_080B8AD4:
- movs r4, 0x3
- b _080B8AE0
-_080B8AD8:
- movs r2, 0xFF
-_080B8ADA:
- movs r0, 0
- cmp r0, 0
- beq _080B8B06
-_080B8AE0:
- adds r0, r4, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080B8B04
- ldr r0, _080B8B00 @ =gUnknown_2023D44
- adds r0, r4, r0
- ldrb r2, [r0]
- b _080B8B06
- .align 2, 0
-_080B8B00: .4byte gUnknown_2023D44
-_080B8B04:
- movs r2, 0xFF
-_080B8B06:
- cmp r2, 0xFF
- beq _080B8B22
- ldr r1, _080B8B30 @ =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, _080B8B34 @ =gUnknown_2037F02
- ldrb r1, [r1, 0x2]
- bl sub_8075B48
-_080B8B22:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8B30: .4byte gSprites
-_080B8B34: .4byte gUnknown_2037F02
- thumb_func_end sub_80B8A74
-
- thumb_func_start sub_80B8B38
-sub_80B8B38: @ 80B8B38
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080B8B64 @ =gUnknown_2037F16
- ldrb r0, [r2]
- cmp r0, 0x1
- bhi _080B8B4C
- ldr r1, _080B8B68 @ =gUnknown_2037F02
- movs r0, 0
- strh r0, [r1, 0xE]
-_080B8B4C:
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _080B8B58
- ldr r1, _080B8B68 @ =gUnknown_2037F02
- movs r0, 0x1
- strh r0, [r1, 0xE]
-_080B8B58:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080B8B64: .4byte gUnknown_2037F16
-_080B8B68: .4byte gUnknown_2037F02
- thumb_func_end sub_80B8B38
-
- thumb_func_start sub_80B8B6C
-sub_80B8B6C: @ 80B8B6C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B8BC4 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- movs r0, 0x14
- strh r0, [r4, 0x2E]
- ldr r5, _080B8BC8 @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldr r0, _080B8BCC @ =0x0000ffd8
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_8075068
- ldr r0, _080B8BD0 @ =sub_80B8BD4
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8BC4: .4byte gUnknown_2037F1A
-_080B8BC8: .4byte gUnknown_2037F1B
-_080B8BCC: .4byte 0x0000ffd8
-_080B8BD0: .4byte sub_80B8BD4
- thumb_func_end sub_80B8B6C
-
- thumb_func_start sub_80B8BD4
-sub_80B8BD4: @ 80B8BD4
- push {r4,r5,lr}
- adds r5, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B8C28
- ldrh r0, [r5, 0x24]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x26]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- strh r1, [r5, 0x26]
- strh r1, [r5, 0x24]
- movs r0, 0x14
- strh r0, [r5, 0x2E]
- ldr r4, _080B8C30 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- movs r0, 0x28
- strh r0, [r5, 0x38]
- adds r0, r5, 0
- bl sub_8075068
- ldr r0, _080B8C34 @ =sub_80B8C38
- str r0, [r5, 0x1C]
-_080B8C28:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8C30: .4byte gUnknown_2037F1A
-_080B8C34: .4byte sub_80B8C38
- thumb_func_end sub_80B8BD4
-
- thumb_func_start sub_80B8C38
-sub_80B8C38: @ 80B8C38
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B8C4C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B8C4C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B8C38
-
- thumb_func_start sub_80B8C54
-sub_80B8C54: @ 80B8C54
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r0, _080B8CB4 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B8C74
- ldr r1, _080B8CB8 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080B8C74:
- ldr r4, _080B8CB8 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldr r5, _080B8CBC @ =gUnknown_2037F1B
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x6]
- adds r0, r4
- strh r0, [r6, 0x36]
- ldr r0, _080B8CC0 @ =sub_8075590
- str r0, [r6, 0x1C]
- ldr r1, _080B8CC4 @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8CB4: .4byte gUnknown_2037F1A
-_080B8CB8: .4byte gUnknown_2037F02
-_080B8CBC: .4byte gUnknown_2037F1B
-_080B8CC0: .4byte sub_8075590
-_080B8CC4: .4byte DestroyAnimSprite
- thumb_func_end sub_80B8C54
-
- thumb_func_start sub_80B8CC8
-sub_80B8CC8: @ 80B8CC8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r4, _080B8D48 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074844
- lsls r0, 24
- lsrs r7, r0, 24
- bl Random
- movs r4, 0x1F
- adds r5, r4, 0
- ands r5, r0
- bl Random
- ands r4, r0
- adds r1, r5, 0
- cmp r1, 0x10
- ble _080B8D10
- movs r0, 0x10
- subs r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
-_080B8D10:
- lsls r0, r4, 16
- asrs r1, r0, 16
- cmp r1, 0x10
- ble _080B8D20
- movs r0, 0x10
- subs r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
-_080B8D20:
- ldr r0, _080B8D4C @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r6, 0x2E]
- mov r1, r8
- adds r0, r1, r5
- strh r0, [r6, 0x32]
- adds r0, r7, r4
- strh r0, [r6, 0x36]
- ldr r0, _080B8D50 @ =sub_8075590
- str r0, [r6, 0x1C]
- ldr r1, _080B8D54 @ =move_anim_8074EE0
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8D48: .4byte gUnknown_2037F1B
-_080B8D4C: .4byte gUnknown_2037F02
-_080B8D50: .4byte sub_8075590
-_080B8D54: .4byte move_anim_8074EE0
- thumb_func_end sub_80B8CC8
-
- thumb_func_start sub_80B8D58
-sub_80B8D58: @ 80B8D58
- push {r4-r6,lr}
- adds r5, r0, 0
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x1
- ldr r3, _080B8DB8 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080B8DBC @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- ldr r6, _080B8DC0 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080B8DCC
- ldr r4, _080B8DC4 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r6, 0x2]
- adds r0, r2
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r3, [r6, 0x4]
- adds r0, r3
- strh r0, [r5, 0x22]
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- ble _080B8DB2
- movs r1, 0x1
-_080B8DB2:
- strh r1, [r5, 0x2E]
- ldr r0, _080B8DC8 @ =sub_80B8DE8
- b _080B8DDA
- .align 2, 0
-_080B8DB8: .4byte 0x000003ff
-_080B8DBC: .4byte 0xfffffc00
-_080B8DC0: .4byte gUnknown_2037F02
-_080B8DC4: .4byte gUnknown_2037F1A
-_080B8DC8: .4byte sub_80B8DE8
-_080B8DCC:
- ldrh r0, [r6, 0x2]
- strh r0, [r5, 0x20]
- ldrh r0, [r6, 0x4]
- strh r0, [r5, 0x22]
- negs r0, r0
- strh r0, [r5, 0x26]
- ldr r0, _080B8DE4 @ =sub_80B8E24
-_080B8DDA:
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8DE4: .4byte sub_80B8E24
- thumb_func_end sub_80B8D58
-
- thumb_func_start sub_80B8DE8
-sub_80B8DE8: @ 80B8DE8
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B8E06
- movs r0, 0
- strh r0, [r2, 0x30]
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
-_080B8E06:
- ldrh r0, [r2, 0x22]
- subs r0, 0x4
- strh r0, [r2, 0x22]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x4
- negs r1, r1
- cmp r0, r1
- bge _080B8E1E
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080B8E1E:
- pop {r0}
- bx r0
- thumb_func_end sub_80B8DE8
-
- thumb_func_start sub_80B8E24
-sub_80B8E24: @ 80B8E24
- push {lr}
- adds r3, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- cmp r1, 0
- beq _080B8E36
- cmp r1, 0x1
- beq _080B8E4C
- b _080B8E8E
-_080B8E36:
- ldrh r0, [r3, 0x26]
- adds r0, 0x4
- strh r0, [r3, 0x26]
- lsls r0, 16
- cmp r0, 0
- blt _080B8E8E
- strh r1, [r3, 0x26]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- b _080B8E8E
-_080B8E4C:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- cmp r0, 0
- ble _080B8E8E
- movs r0, 0
- strh r0, [r3, 0x30]
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- ldrb r2, [r1]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _080B8E8E
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080B8E8E:
- pop {r0}
- bx r0
- thumb_func_end sub_80B8E24
-
- thumb_func_start sub_80B8E94
-sub_80B8E94: @ 80B8E94
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B8EB4 @ =gTasks
- adds r1, r0, r1
- ldr r0, _080B8EB8 @ =gUnknown_2037F02
- movs r3, 0
- ldrsh r0, [r0, r3]
- cmp r0, 0
- bne _080B8EC0
- ldr r0, _080B8EBC @ =sub_80B8ED4
- b _080B8EC2
- .align 2, 0
-_080B8EB4: .4byte gTasks
-_080B8EB8: .4byte gUnknown_2037F02
-_080B8EBC: .4byte sub_80B8ED4
-_080B8EC0:
- ldr r0, _080B8ED0 @ =sub_80B908C
-_080B8EC2:
- str r0, [r1]
- ldr r1, [r1]
- adds r0, r2, 0
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_080B8ED0: .4byte sub_80B908C
- thumb_func_end sub_80B8E94
-
- thumb_func_start sub_80B8ED4
-sub_80B8ED4: @ 80B8ED4
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B8EF8 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080B8EEE
- b _080B9082
-_080B8EEE:
- lsls r0, 2
- ldr r1, _080B8EFC @ =_080B8F00
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B8EF8: .4byte gTasks
-_080B8EFC: .4byte _080B8F00
- .align 2, 0
-_080B8F00:
- .4byte _080B8F14
- .4byte _080B8F9C
- .4byte _080B8FAC
- .4byte _080B9050
- .4byte _080B9064
-_080B8F14:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1C]
- ldr r0, _080B8F3C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1E]
- cmp r0, 0x1
- bne _080B8F48
- ldr r0, _080B8F40 @ =gBattle_BG1_X
- ldrh r0, [r0]
- strh r0, [r4, 0x20]
- ldr r0, _080B8F44 @ =gBattle_BG1_Y
- b _080B8F50
- .align 2, 0
-_080B8F3C: .4byte gUnknown_2037F1A
-_080B8F40: .4byte gBattle_BG1_X
-_080B8F44: .4byte gBattle_BG1_Y
-_080B8F48:
- ldr r0, _080B8F8C @ =gBattle_BG2_X
- ldrh r0, [r0]
- strh r0, [r4, 0x20]
- ldr r0, _080B8F90 @ =gBattle_BG2_Y
-_080B8F50:
- ldrh r0, [r0]
- strh r0, [r4, 0x22]
- ldr r0, _080B8F94 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- subs r1, 0x20
- strh r1, [r4, 0x24]
- adds r0, 0x20
- strh r0, [r4, 0x26]
- cmp r1, 0
- bge _080B8F72
- movs r0, 0
- strh r0, [r4, 0x24]
-_080B8F72:
- ldr r2, _080B8F98 @ =gSprites
- movs r3, 0x1C
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _080B9056
- .align 2, 0
-_080B8F8C: .4byte gBattle_BG2_X
-_080B8F90: .4byte gBattle_BG2_Y
-_080B8F94: .4byte gUnknown_2037F1A
-_080B8F98: .4byte gSprites
-_080B8F9C:
- ldrb r0, [r4, 0x1E]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- movs r3, 0x26
- ldrsh r2, [r4, r3]
- bl sub_80B92B8
- b _080B9056
-_080B8FAC:
- ldrh r0, [r4, 0xC]
- adds r0, 0x6
- movs r1, 0x7F
- ands r0, r1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B8FCE
- movs r0, 0
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
-_080B8FCE:
- ldr r1, _080B8FF0 @ =gSineTable
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 20
- ldrh r3, [r4, 0xE]
- adds r2, r0, r3
- strh r2, [r4, 0x12]
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080B8FF8
- ldr r1, _080B8FF4 @ =gBattle_BG1_Y
- b _080B8FFA
- .align 2, 0
-_080B8FF0: .4byte gSineTable
-_080B8FF4: .4byte gBattle_BG1_Y
-_080B8FF8:
- ldr r1, _080B901C @ =gBattle_BG2_Y
-_080B8FFA:
- ldrh r0, [r4, 0x22]
- subs r0, r2
- strh r0, [r1]
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0x3F
- ble _080B9082
- ldrh r0, [r4, 0x24]
- movs r1, 0x78
- subs r2, r1, r0
- strh r2, [r4, 0x12]
- movs r3, 0x1E
- ldrsh r0, [r4, r3]
- cmp r0, 0x1
- bne _080B9024
- ldr r1, _080B9020 @ =gBattle_BG1_Y
- b _080B9026
- .align 2, 0
-_080B901C: .4byte gBattle_BG2_Y
-_080B9020: .4byte gBattle_BG1_Y
-_080B9024:
- ldr r1, _080B9048 @ =gBattle_BG2_Y
-_080B9026:
- ldrh r0, [r4, 0x22]
- subs r0, r2
- strh r0, [r1]
- ldr r2, _080B904C @ =gSprites
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r2, [r1, 0x20]
- movs r3, 0x88
- lsls r3, 1
- adds r0, r3, 0
- subs r0, r2
- strh r0, [r1, 0x24]
- b _080B9056
- .align 2, 0
-_080B9048: .4byte gBattle_BG2_Y
-_080B904C: .4byte gSprites
-_080B9050:
- ldr r1, _080B9060 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080B9056:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B9082
- .align 2, 0
-_080B9060: .4byte gScanlineEffect
-_080B9064:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- ldr r2, _080B9088 @ =gSprites
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080B9082:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9088: .4byte gSprites
- thumb_func_end sub_80B8ED4
-
- thumb_func_start sub_80B908C
-sub_80B908C: @ 80B908C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B90CC @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r3]
- movs r4, 0
- strh r4, [r1, 0x24]
- strh r4, [r1, 0x26]
- ldr r0, _080B90D0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B90D8
- ldr r0, _080B90D4 @ =gBattle_BG1_Y
- b _080B90DA
- .align 2, 0
-_080B90CC: .4byte gSprites
-_080B90D0: .4byte gUnknown_2037F1A
-_080B90D4: .4byte gBattle_BG1_Y
-_080B90D8:
- ldr r0, _080B90E8 @ =gBattle_BG2_Y
-_080B90DA:
- strh r4, [r0]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B90E8: .4byte gBattle_BG2_Y
- thumb_func_end sub_80B908C
-
- thumb_func_start sub_80B90EC
-sub_80B90EC: @ 80B90EC
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B910C @ =gTasks
- adds r1, r0, r1
- ldr r0, _080B9110 @ =gUnknown_2037F02
- movs r3, 0
- ldrsh r0, [r0, r3]
- cmp r0, 0
- bne _080B9118
- ldr r0, _080B9114 @ =sub_80B912C
- b _080B911A
- .align 2, 0
-_080B910C: .4byte gTasks
-_080B9110: .4byte gUnknown_2037F02
-_080B9114: .4byte sub_80B912C
-_080B9118:
- ldr r0, _080B9128 @ =sub_80B91B0
-_080B911A:
- str r0, [r1]
- ldr r1, [r1]
- adds r0, r2, 0
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_080B9128: .4byte sub_80B91B0
- thumb_func_end sub_80B90EC
-
- thumb_func_start sub_80B912C
-sub_80B912C: @ 80B912C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B914C @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r5, [r4, r0]
- cmp r5, 0
- beq _080B9150
- cmp r5, 0x1
- beq _080B91A4
- b _080B91AA
- .align 2, 0
-_080B914C: .4byte gTasks
-_080B9150:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1C]
- ldr r3, _080B91A0 @ =gSprites
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r5, [r0, 0x24]
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrh r2, [r1, 0x22]
- movs r0, 0xA0
- subs r0, r2
- strh r0, [r1, 0x26]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B91AA
- .align 2, 0
-_080B91A0: .4byte gSprites
-_080B91A4:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B91AA:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B912C
-
- thumb_func_start sub_80B91B0
-sub_80B91B0: @ 80B91B0
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B91D4 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bhi _080B92B2
- lsls r0, 2
- ldr r1, _080B91D8 @ =_080B91DC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B91D4: .4byte gTasks
-_080B91D8: .4byte _080B91DC
- .align 2, 0
-_080B91DC:
- .4byte _080B91F0
- .4byte _080B9244
- .4byte _080B9252
- .4byte _080B926C
- .4byte _080B92AC
-_080B91F0:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1C]
- ldr r0, _080B9214 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1E]
- cmp r0, 0x1
- bne _080B921C
- ldr r0, _080B9218 @ =gBattle_BG1_X
- b _080B921E
- .align 2, 0
-_080B9214: .4byte gUnknown_2037F1A
-_080B9218: .4byte gBattle_BG1_X
-_080B921C:
- ldr r0, _080B923C @ =gBattle_BG2_X
-_080B921E:
- ldrh r0, [r0]
- strh r0, [r4, 0x20]
- ldr r0, _080B9240 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- subs r1, 0x20
- strh r1, [r4, 0x24]
- adds r0, 0x20
- strh r0, [r4, 0x26]
- b _080B929A
- .align 2, 0
-_080B923C: .4byte gBattle_BG2_X
-_080B9240: .4byte gUnknown_2037F1A
-_080B9244:
- ldrb r0, [r4, 0x1E]
- movs r1, 0x26
- ldrsh r2, [r4, r1]
- movs r1, 0
- bl sub_80B92B8
- b _080B929A
-_080B9252:
- ldr r2, _080B9268 @ =gSprites
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x60
- strh r1, [r0, 0x26]
- b _080B929A
- .align 2, 0
-_080B9268: .4byte gSprites
-_080B926C:
- ldr r2, _080B92A4 @ =gSprites
- movs r0, 0x1C
- 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]
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x26
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B92B2
- ldr r1, _080B92A8 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080B929A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B92B2
- .align 2, 0
-_080B92A4: .4byte gSprites
-_080B92A8: .4byte gScanlineEffect
-_080B92AC:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B92B2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B91B0
-
- thumb_func_start sub_80B92B8
-sub_80B92B8: @ 80B92B8
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r4, r2, 16
- cmp r0, 0x1
- bne _080B92DC
- ldr r0, _080B92D4 @ =gBattle_BG1_X
- ldrh r3, [r0]
- ldr r0, _080B92D8 @ =0x04000014
- b _080B92E2
- .align 2, 0
-_080B92D4: .4byte gBattle_BG1_X
-_080B92D8: .4byte 0x04000014
-_080B92DC:
- ldr r0, _080B9368 @ =gBattle_BG2_X
- ldrh r3, [r0]
- ldr r0, _080B936C @ =0x04000018
-_080B92E2:
- str r0, [sp]
- lsls r0, r1, 16
- cmp r0, 0
- bge _080B92EC
- movs r1, 0
-_080B92EC:
- lsls r2, r1, 16
- lsls r0, r4, 16
- asrs r4, r0, 16
- cmp r2, r0
- bge _080B9318
- ldr r5, _080B9370 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
-_080B92FE:
- asrs r2, 16
- lsls r1, r2, 1
- adds r0, r1, r5
- strh r3, [r0]
- adds r1, r6
- strh r3, [r1]
- adds r2, 0x1
- lsls r2, 16
- lsrs r1, r2, 16
- lsls r2, r1, 16
- asrs r0, r2, 16
- cmp r0, r4
- blt _080B92FE
-_080B9318:
- lsls r1, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- bgt _080B9346
- ldr r4, _080B9370 @ =gScanlineEffectRegBuffers
- lsls r0, r3, 16
- asrs r0, 16
- adds r3, r0, 0
- adds r3, 0xF0
- movs r0, 0xF0
- lsls r0, 3
- adds r5, r4, r0
-_080B9330:
- asrs r2, r1, 16
- lsls r1, r2, 1
- adds r0, r1, r4
- strh r3, [r0]
- adds r1, r5
- strh r3, [r1]
- adds r2, 0x1
- lsls r1, r2, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- ble _080B9330
-_080B9346:
- ldr r0, _080B9374 @ =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
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9368: .4byte gBattle_BG2_X
-_080B936C: .4byte 0x04000018
-_080B9370: .4byte gScanlineEffectRegBuffers
-_080B9374: .4byte 0xa2600001
- thumb_func_end sub_80B92B8
-
- thumb_func_start sub_80B9378
-sub_80B9378: @ 80B9378
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r0, _080B938C @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r7, r0, 0
- cmp r1, 0
- bne _080B9394
- ldr r0, _080B9390 @ =gUnknown_2037F1A
- b _080B9396
- .align 2, 0
-_080B938C: .4byte gUnknown_2037F02
-_080B9390: .4byte gUnknown_2037F1A
-_080B9394:
- ldr r0, _080B93F8 @ =gUnknown_2037F1B
-_080B9396:
- ldrb r4, [r0]
- movs r6, 0x18
- adds r1, r7, 0
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- bne _080B93B2
- negs r0, r6
- lsls r0, 16
- lsrs r6, r0, 16
- movs r2, 0x4
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080B93B2:
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- strh r0, [r5, 0x20]
- adds r0, r4, 0
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1E
- strh r0, [r5, 0x22]
- ldrh r1, [r7, 0xA]
- strh r1, [r5, 0x2E]
- ldrh r1, [r7, 0x4]
- ldrh r2, [r5, 0x20]
- adds r1, r2
- strh r1, [r5, 0x32]
- ldrh r1, [r7, 0x6]
- adds r0, r1
- strh r0, [r5, 0x36]
- ldrh r0, [r7, 0x8]
- strh r0, [r5, 0x38]
- adds r0, r5, 0
- bl sub_8075068
- ldr r0, _080B93FC @ =sub_80B9400
- str r0, [r5, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B93F8: .4byte gUnknown_2037F1B
-_080B93FC: .4byte sub_80B9400
- thumb_func_end sub_80B9378
-
- thumb_func_start sub_80B9400
-sub_80B9400: @ 80B9400
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B9414
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B9414:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B9400
-
- thumb_func_start sub_80B941C
-sub_80B941C: @ 80B941C
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r0, _080B9430 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B9438
- ldr r0, _080B9434 @ =gUnknown_2037F1A
- b _080B943A
- .align 2, 0
-_080B9430: .4byte gUnknown_2037F02
-_080B9434: .4byte gUnknown_2037F1A
-_080B9438:
- ldr r0, _080B9498 @ =gUnknown_2037F1B
-_080B943A:
- ldrb r5, [r0]
- adds r0, r5, 0
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B949C @ =0x0000fff0
- adds r0, r2
- ldr r4, _080B94A0 @ =gUnknown_2037F02
- movs r3, 0x2
- ldrsh r1, [r4, r3]
- lsls r1, 5
- adds r0, r1
- strh r0, [r6, 0x20]
- adds r0, r5, 0
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x20
- strh r0, [r6, 0x22]
- ldrh r2, [r6, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- movs r3, 0x2
- ldrsh r0, [r4, r3]
- lsls r0, 3
- adds r1, r0
- ldr r3, _080B94A4 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080B94A8 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r6, 0x4]
- ldr r1, _080B94AC @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- ldrh r0, [r4, 0x4]
- strh r0, [r6, 0x2E]
- ldr r0, _080B94B0 @ =sub_8074C44
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9498: .4byte gUnknown_2037F1B
-_080B949C: .4byte 0x0000fff0
-_080B94A0: .4byte gUnknown_2037F02
-_080B94A4: .4byte 0x000003ff
-_080B94A8: .4byte 0xfffffc00
-_080B94AC: .4byte DestroyAnimSprite
-_080B94B0: .4byte sub_8074C44
- thumb_func_end sub_80B941C
-
- thumb_func_start sub_80B94B4
-sub_80B94B4: @ 80B94B4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B94D8 @ =gTasks
- adds r4, r0, r1
- ldr r0, _080B94DC @ =gUnknown_2037F02
- ldrh r2, [r0, 0x2]
- movs r3, 0x2
- ldrsh r1, [r0, r3]
- adds r6, r0, 0
- cmp r1, 0
- beq _080B94E0
- adds r0, r2, 0x3
- b _080B94EC
- .align 2, 0
-_080B94D8: .4byte gTasks
-_080B94DC: .4byte gUnknown_2037F02
-_080B94E0:
- ldr r0, _080B950C @ =gUnknown_2037EEC
- ldrh r0, [r0]
- movs r1, 0xA
- bl __udivsi3
- adds r0, 0x3
-_080B94EC:
- strh r0, [r4, 0x26]
- strh r0, [r4, 0x24]
- adds r1, r6, 0
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0xE]
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x4
- beq _080B9518
- cmp r0, 0x5
- bne _080B9558
- ldr r0, _080B9510 @ =gBattle_BG3_X
- ldrh r0, [r0]
- strh r0, [r4, 0x22]
- ldr r0, _080B9514 @ =sub_80B9584
- b _080B9576
- .align 2, 0
-_080B950C: .4byte gUnknown_2037EEC
-_080B9510: .4byte gBattle_BG3_X
-_080B9514: .4byte sub_80B9584
-_080B9518:
- movs r0, 0
- strh r0, [r4, 0x22]
- movs r5, 0
-_080B951E:
- lsls r0, r5, 24
- lsrs r0, 24
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080B9548
- movs r3, 0x22
- ldrsh r0, [r4, r3]
- adds r0, 0x9
- lsls r0, 1
- adds r1, r4, 0
- adds r1, 0x8
- adds r1, r0
- ldr r0, _080B9554 @ =gUnknown_2023D44
- adds r0, r5, r0
- ldrb r0, [r0]
- strh r0, [r1]
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
-_080B9548:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _080B951E
- b _080B9574
- .align 2, 0
-_080B9554: .4byte gUnknown_2023D44
-_080B9558:
- ldrb r0, [r6]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1A]
- cmp r0, 0xFF
- bne _080B9570
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _080B9578
-_080B9570:
- movs r0, 0x1
- strh r0, [r4, 0x22]
-_080B9574:
- ldr r0, _080B9580 @ =sub_80B967C
-_080B9576:
- str r0, [r4]
-_080B9578:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9580: .4byte sub_80B967C
- thumb_func_end sub_80B94B4
-
- thumb_func_start sub_80B9584
-sub_80B9584: @ 80B9584
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B95A8 @ =gTasks
- adds r3, r0, r1
- movs r0, 0x8
- ldrsh r1, [r3, r0]
- cmp r1, 0x1
- beq _080B9608
- cmp r1, 0x1
- bgt _080B95AC
- cmp r1, 0
- beq _080B95B2
- b _080B9674
- .align 2, 0
-_080B95A8: .4byte gTasks
-_080B95AC:
- cmp r1, 0x2
- beq _080B9668
- b _080B9674
-_080B95B2:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B9674
- strh r1, [r3, 0xA]
- ldrh r1, [r3, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080B95DC
- ldr r1, _080B95D8 @ =gBattle_BG3_X
- ldrh r0, [r3, 0x26]
- ldrh r2, [r3, 0x22]
- adds r0, r2
- strh r0, [r1]
- b _080B95E6
- .align 2, 0
-_080B95D8: .4byte gBattle_BG3_X
-_080B95DC:
- ldr r0, _080B9604 @ =gBattle_BG3_X
- ldrh r1, [r3, 0x22]
- ldrh r2, [r3, 0x26]
- subs r1, r2
- strh r1, [r0]
-_080B95E6:
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xE
- ldrsh r1, [r3, r2]
- cmp r0, r1
- bne _080B9674
- movs r0, 0
- strh r0, [r3, 0xC]
- ldrh r0, [r3, 0x24]
- subs r0, 0x1
- strh r0, [r3, 0x24]
- b _080B965C
- .align 2, 0
-_080B9604: .4byte gBattle_BG3_X
-_080B9608:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B9674
- movs r0, 0
- strh r0, [r3, 0xA]
- ldrh r0, [r3, 0xC]
- ands r1, r0
- cmp r1, 0
- bne _080B9634
- ldr r1, _080B9630 @ =gBattle_BG3_X
- ldrh r0, [r3, 0x24]
- ldrh r2, [r3, 0x22]
- adds r0, r2
- strh r0, [r1]
- b _080B963E
- .align 2, 0
-_080B9630: .4byte gBattle_BG3_X
-_080B9634:
- ldr r0, _080B9664 @ =gBattle_BG3_X
- ldrh r1, [r3, 0x22]
- ldrh r2, [r3, 0x24]
- subs r1, r2
- strh r1, [r0]
-_080B963E:
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080B9674
- movs r0, 0
- strh r0, [r3, 0xC]
- ldrh r0, [r3, 0x24]
- subs r0, 0x1
- strh r0, [r3, 0x24]
- lsls r0, 16
- cmp r0, 0
- bne _080B9674
-_080B965C:
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- b _080B9674
- .align 2, 0
-_080B9664: .4byte gBattle_BG3_X
-_080B9668:
- ldr r1, _080B9678 @ =gBattle_BG3_X
- ldrh r0, [r3, 0x22]
- strh r0, [r1]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B9674:
- pop {r0}
- bx r0
- .align 2, 0
-_080B9678: .4byte gBattle_BG3_X
- thumb_func_end sub_80B9584
-
- thumb_func_start sub_80B967C
-sub_80B967C: @ 80B967C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, _080B96A0 @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _080B96DC
- cmp r5, 0x1
- bgt _080B96A4
- cmp r5, 0
- beq _080B96AA
- b _080B9756
- .align 2, 0
-_080B96A0: .4byte gTasks
-_080B96A4:
- cmp r5, 0x2
- beq _080B9718
- b _080B9756
-_080B96AA:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B9756
- strh r5, [r4, 0xA]
- adds r0, r4, 0
- bl sub_80B9760
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080B9756
- strh r5, [r4, 0xC]
- ldrh r0, [r4, 0x24]
- subs r0, 0x1
- strh r0, [r4, 0x24]
- b _080B9710
-_080B96DC:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B9756
- strh r5, [r4, 0xA]
- adds r0, r4, 0
- bl sub_80B9760
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080B9756
- strh r5, [r4, 0xC]
- ldrh r0, [r4, 0x24]
- subs r0, 0x1
- strh r0, [r4, 0x24]
- lsls r0, 16
- cmp r0, 0
- bne _080B9756
-_080B9710:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B9756
-_080B9718:
- movs r2, 0
- movs r7, 0x22
- ldrsh r0, [r4, r7]
- cmp r2, r0
- bge _080B9750
- ldr r0, _080B975C @ =gSprites
- mov r12, r0
- adds r5, r4, 0
- adds r5, 0x8
- movs r6, 0
-_080B972C:
- adds r0, r2, 0
- adds r0, 0x9
- lsls r0, 1
- adds r0, r5, r0
- movs r7, 0
- ldrsh r1, [r0, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r12
- strh r6, [r0, 0x24]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- cmp r2, r0
- blt _080B972C
-_080B9750:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_080B9756:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B975C: .4byte gSprites
- thumb_func_end sub_80B967C
-
- thumb_func_start sub_80B9760
-sub_80B9760: @ 80B9760
- push {r4-r7,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0xC]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _080B9788
- movs r0, 0x24
- ldrsh r1, [r3, r0]
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- ldrh r2, [r3, 0x24]
- adds r0, r4, 0
- ands r0, r2
- adds r1, r0
- lsls r1, 16
- lsrs r4, r1, 16
- b _080B9798
-_080B9788:
- movs r1, 0x24
- ldrsh r0, [r3, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- negs r0, r0
- lsls r0, 16
- lsrs r4, r0, 16
-_080B9798:
- movs r2, 0
- movs r7, 0x22
- ldrsh r0, [r3, r7]
- cmp r2, r0
- bge _080B97CC
- ldr r6, _080B97D4 @ =gSprites
- adds r5, r3, 0
- adds r5, 0x8
-_080B97A8:
- adds r0, r2, 0
- adds r0, 0x9
- lsls r0, 1
- adds r0, r5, r0
- movs r7, 0
- ldrsh r1, [r0, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r4, [r0, 0x24]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- movs r1, 0x22
- ldrsh r0, [r3, r1]
- cmp r2, r0
- blt _080B97A8
-_080B97CC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B97D4: .4byte gSprites
- thumb_func_end sub_80B9760
-
- thumb_func_start sub_80B97D8
-sub_80B97D8: @ 80B97D8
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, _080B97F8 @ =gUnknown_2037F02
- movs r2, 0
- ldr r0, _080B97FC @ =gUnknown_2037EEC
- ldrh r0, [r0]
- cmp r0, 0x63
- bls _080B97EC
- movs r2, 0x1
-_080B97EC:
- strh r2, [r3, 0x1E]
- adds r0, r1, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080B97F8: .4byte gUnknown_2037F02
-_080B97FC: .4byte gUnknown_2037EEC
- thumb_func_end sub_80B97D8
-
- thumb_func_start sub_80B9800
-sub_80B9800: @ 80B9800
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, _080B9818 @ =gUnknown_2037F02
- ldrh r1, [r2]
- movs r0, 0x1
- ands r0, r1
- adds r6, r2, 0
- cmp r0, 0
- beq _080B9820
- ldr r0, _080B981C @ =gUnknown_2037F1B
- b _080B9822
- .align 2, 0
-_080B9818: .4byte gUnknown_2037F02
-_080B981C: .4byte gUnknown_2037F1B
-_080B9820:
- ldr r0, _080B9890 @ =gUnknown_2037F1A
-_080B9822:
- ldrb r0, [r0]
- adds r5, r0, 0
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x1
- ble _080B9832
- movs r0, 0x2
- eors r5, r0
-_080B9832:
- ldr r0, _080B9894 @ =sub_80B98A8
- ldrb r1, [r6, 0x2]
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080B9898 @ =gTasks
- adds r4, r0
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x20
- subs r1, r0
- ldr r2, _080B989C @ =0x000001ff
- adds r0, r2, 0
- ands r1, r0
- strh r1, [r4, 0xA]
- adds r0, r5, 0
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x40
- subs r1, r0
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r4, 0xC]
- ldr r2, _080B98A0 @ =gBattle_BG3_X
- ldrh r0, [r4, 0xA]
- strh r0, [r2]
- ldr r0, _080B98A4 @ =gBattle_BG3_Y
- strh r1, [r0]
- ldrh r0, [r6, 0x4]
- strh r0, [r4, 0xE]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9890: .4byte gUnknown_2037F1A
-_080B9894: .4byte sub_80B98A8
-_080B9898: .4byte gTasks
-_080B989C: .4byte 0x000001ff
-_080B98A0: .4byte gBattle_BG3_X
-_080B98A4: .4byte gBattle_BG3_Y
- thumb_func_end sub_80B9800
-
- thumb_func_start sub_80B98A8
-sub_80B98A8: @ 80B98A8
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, _080B98D8 @ =gTasks
- adds r2, r0, r1
- ldr r0, _080B98DC @ =gUnknown_2037F02
- movs r4, 0xE
- ldrsh r1, [r0, r4]
- movs r4, 0xE
- ldrsh r0, [r2, r4]
- cmp r1, r0
- bne _080B98E8
- ldr r0, _080B98E0 @ =gBattle_BG3_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080B98E4 @ =gBattle_BG3_Y
- strh r1, [r0]
- adds r0, r3, 0
- bl DestroyTask
- b _080B98F4
- .align 2, 0
-_080B98D8: .4byte gTasks
-_080B98DC: .4byte gUnknown_2037F02
-_080B98E0: .4byte gBattle_BG3_X
-_080B98E4: .4byte gBattle_BG3_Y
-_080B98E8:
- ldr r1, _080B98FC @ =gBattle_BG3_X
- ldrh r0, [r2, 0xA]
- strh r0, [r1]
- ldr r1, _080B9900 @ =gBattle_BG3_Y
- ldrh r0, [r2, 0xC]
- strh r0, [r1]
-_080B98F4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B98FC: .4byte gBattle_BG3_X
-_080B9900: .4byte gBattle_BG3_Y
- thumb_func_end sub_80B98A8
-
- thumb_func_start sub_80B9904
-sub_80B9904: @ 80B9904
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B993C @ =gUnknown_2037F02
- ldrh r0, [r5]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldr r0, _080B9940 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080B9944
- ldrh r0, [r5, 0x6]
- negs r0, r0
- strh r0, [r4, 0x30]
- movs r0, 0x1
- strh r0, [r4, 0x36]
- b _080B9952
- .align 2, 0
-_080B993C: .4byte gUnknown_2037F02
-_080B9940: .4byte gUnknown_2037F1A
-_080B9944:
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x30]
- strh r1, [r4, 0x36]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080B9952:
- ldr r0, _080B9968 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x8]
- strh r0, [r4, 0x34]
- ldr r1, _080B996C @ =sub_80B9970
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9968: .4byte gUnknown_2037F02
-_080B996C: .4byte sub_80B9970
- thumb_func_end sub_80B9904
-
- thumb_func_start sub_80B9970
-sub_80B9970: @ 80B9970
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x1E
- bl Cos
- strh r0, [r4, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r1, 0xA
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- cmp r0, 0x7F
- bhi _080B99A2
- ldrb r0, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4, 0x5]
- b _080B99AA
-_080B99A2:
- ldrb r0, [r4, 0x5]
- movs r1, 0xC
- orrs r0, r1
- strb r0, [r4, 0x5]
-_080B99AA:
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x2E]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080B99CE
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B99CE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B9970
-
- thumb_func_start sub_80B99D4
-sub_80B99D4: @ 80B99D4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r4, _080B9A0C @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r4, r1]
- bl sub_80B9A14
- movs r1, 0x2
- ldrsb r1, [r4, r1]
- ldrb r2, [r4, 0x4]
- ldrb r3, [r4, 0x6]
- ldrh r4, [r4, 0x8]
- str r4, [sp]
- bl BeginNormalPaletteFade
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B9A10 @ =sub_80B9A5C
- str r0, [r5, 0x1C]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9A0C: .4byte gUnknown_2037F02
-_080B9A10: .4byte sub_80B9A5C
- thumb_func_end sub_80B99D4
-
- thumb_func_start sub_80B9A14
-sub_80B9A14: @ 80B9A14
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- lsls r0, 16
- lsrs r0, 16
- movs r4, 0x1
- mov r8, r0
- mov r1, r8
- ands r1, r4
- mov r8, r1
- lsls r0, 16
- asrs r1, r0, 17
- ands r1, r4
- asrs r2, r0, 18
- ands r2, r4
- asrs r3, r0, 19
- ands r3, r4
- asrs r6, r0, 20
- ands r6, r4
- asrs r5, r0, 21
- ands r5, r4
- asrs r0, 22
- ands r0, r4
- str r6, [sp]
- str r5, [sp, 0x4]
- str r0, [sp, 0x8]
- mov r0, r8
- bl sub_8075BE8
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80B9A14
-
- thumb_func_start sub_80B9A5C
-sub_80B9A5C: @ 80B9A5C
- push {lr}
- adds r2, r0, 0
- ldr r0, _080B9A78 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B9A72
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080B9A72:
- pop {r0}
- bx r0
- .align 2, 0
-_080B9A78: .4byte gPaletteFade
- thumb_func_end sub_80B9A5C
-
- thumb_func_start sub_80B9A7C
-sub_80B9A7C: @ 80B9A7C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B9AC8 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0x2E]
- strh r0, [r5, 0x30]
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x32]
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0x34]
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x36]
- ldrh r0, [r4, 0xA]
- strh r0, [r5, 0x38]
- ldrh r0, [r4, 0xC]
- strh r0, [r5, 0x3A]
- ldrh r0, [r4]
- strh r0, [r5, 0x3C]
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- bl sub_80B9A14
- ldrb r1, [r4, 0x8]
- ldrh r2, [r4, 0x6]
- bl BlendPalettes
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B9ACC @ =sub_80B9AD0
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9AC8: .4byte gUnknown_2037F02
-_080B9ACC: .4byte sub_80B9AD0
- thumb_func_end sub_80B9A7C
-
- thumb_func_start sub_80B9AD0
-sub_80B9AD0: @ 80B9AD0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080B9AE4
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- b _080B9B54
-_080B9AE4:
- ldr r0, _080B9B00 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B9B54
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B9B08
- ldr r0, _080B9B04 @ =sub_80B9B5C
- str r0, [r4, 0x1C]
- b _080B9B54
- .align 2, 0
-_080B9B00: .4byte gPaletteFade
-_080B9B04: .4byte sub_80B9B5C
-_080B9B08:
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- bl sub_80B9A14
- adds r3, r0, 0
- ldrh r1, [r4, 0x30]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080B9B2E
- ldrh r1, [r4, 0x36]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x34]
- adds r0, r3, 0
- bl BlendPalettes
- b _080B9B3C
-_080B9B2E:
- ldrh r1, [r4, 0x3A]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x38]
- adds r0, r3, 0
- bl BlendPalettes
-_080B9B3C:
- ldrh r0, [r4, 0x30]
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- eors r0, r1
- strh r0, [r4, 0x30]
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x32]
- subs r0, 0x1
- strh r0, [r4, 0x32]
-_080B9B54:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B9AD0
-
- thumb_func_start sub_80B9B5C
-sub_80B9B5C: @ 80B9B5C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080B9B88 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B9B82
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- bl sub_80B9A14
- movs r1, 0
- movs r2, 0
- bl BlendPalettes
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B9B82:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9B88: .4byte gPaletteFade
- thumb_func_end sub_80B9B5C
-
- thumb_func_start sub_80B9B8C
-sub_80B9B8C: @ 80B9B8C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080B9BD0 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- movs r2, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- strh r2, [r4, 0x2E]
- movs r0, 0xA
- strh r0, [r4, 0x30]
- movs r0, 0x8
- strh r0, [r4, 0x32]
- movs r0, 0x28
- strh r0, [r4, 0x34]
- movs r0, 0x70
- strh r0, [r4, 0x36]
- strh r2, [r4, 0x38]
- ldr r1, _080B9BD4 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r1, _080B9BD8 @ =sub_8074AE0
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9BD0: .4byte gUnknown_2037F02
-_080B9BD4: .4byte move_anim_8074EE0
-_080B9BD8: .4byte sub_8074AE0
- thumb_func_end sub_80B9B8C
-
- thumb_func_start sub_80B9BDC
-sub_80B9BDC: @ 80B9BDC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B9C20 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r3, _080B9C24 @ =gUnknown_2037F02
- ldrh r1, [r3]
- movs r5, 0
- strh r1, [r4, 0x8]
- ldrh r1, [r3, 0x2]
- strh r1, [r4, 0xA]
- ldrh r1, [r3, 0x4]
- strh r1, [r4, 0xC]
- ldrh r1, [r3, 0x6]
- strh r1, [r4, 0xE]
- ldrh r2, [r3, 0x8]
- strh r2, [r4, 0x10]
- ldrh r1, [r3, 0xA]
- strh r1, [r4, 0x12]
- strh r5, [r4, 0x18]
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0
- bl sub_80B9C2C
- ldr r0, _080B9C28 @ =sub_80B9C7C
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9C20: .4byte gTasks
-_080B9C24: .4byte gUnknown_2037F02
-_080B9C28: .4byte sub_80B9C7C
- thumb_func_end sub_80B9BDC
-
- thumb_func_start sub_80B9C2C
-sub_80B9C2C: @ 80B9C2C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r1, _080B9C78 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- bl sub_80B9A14
- movs r1, 0xA
- ldrsb r1, [r4, r1]
- ldrh r2, [r4, 0x12]
- str r2, [sp]
- adds r2, r5, 0
- adds r3, r6, 0
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x18]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x18]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9C78: .4byte gTasks
- thumb_func_end sub_80B9C2C
-
- thumb_func_start sub_80B9C7C
-sub_80B9C7C: @ 80B9C7C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, r3, 0
- ldr r0, _080B9CB4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B9CDE
- ldr r1, _080B9CB8 @ =gTasks
- lsls r2, r3, 2
- adds r0, r2, r3
- lsls r0, 3
- adds r3, r0, r1
- movs r5, 0xC
- ldrsh r0, [r3, r5]
- adds r6, r1, 0
- adds r5, r2, 0
- cmp r0, 0
- ble _080B9CD8
- movs r1, 0x18
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080B9CBC
- ldrb r1, [r3, 0xE]
- ldrb r2, [r3, 0x10]
- b _080B9CC0
- .align 2, 0
-_080B9CB4: .4byte gPaletteFade
-_080B9CB8: .4byte gTasks
-_080B9CBC:
- ldrb r1, [r3, 0x10]
- ldrb r2, [r3, 0xE]
-_080B9CC0:
- adds r0, r5, r4
- lsls r0, 3
- adds r0, r6
- movs r3, 0xC
- ldrsh r0, [r0, r3]
- cmp r0, 0x1
- bne _080B9CD0
- movs r2, 0
-_080B9CD0:
- adds r0, r4, 0
- bl sub_80B9C2C
- b _080B9CDE
-_080B9CD8:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080B9CDE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B9C7C
-
- thumb_func_start sub_80B9CE4
-sub_80B9CE4: @ 80B9CE4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r3, _080B9D88 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r3
- ldr r2, _080B9D8C @ =gUnknown_2037F02
- ldrh r1, [r2]
- strh r1, [r0, 0x8]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0xA]
- ldrh r1, [r2, 0x4]
- strh r1, [r0, 0xC]
- ldrh r1, [r2, 0x6]
- strh r1, [r0, 0xE]
- ldrh r1, [r2, 0x8]
- strh r1, [r0, 0x10]
- ldrh r1, [r2, 0xA]
- strh r1, [r0, 0x12]
- strh r5, [r0, 0x18]
- movs r4, 0
- ldr r0, _080B9D90 @ =gBattlersCount
- ldrb r1, [r0]
- mov r9, r3
- mov r8, r2
- cmp r5, r1
- bge _080B9D4C
- ldr r0, _080B9D94 @ =gUnknown_2037F1A
- ldrb r3, [r0]
- ldr r7, _080B9D98 @ =gUnknown_2037F1B
- movs r0, 0x1
- mov r12, r0
- adds r2, r1, 0
-_080B9D32:
- cmp r4, r3
- beq _080B9D46
- ldrb r1, [r7]
- cmp r4, r1
- beq _080B9D46
- adds r1, r4, 0
- adds r1, 0x10
- mov r0, r12
- lsls r0, r1
- orrs r5, r0
-_080B9D46:
- adds r4, 0x1
- cmp r4, r2
- blt _080B9D32
-_080B9D4C:
- mov r2, r8
- movs r1, 0
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bne _080B9D5A
- movs r0, 0xE
- orrs r5, r0
-_080B9D5A:
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- add r4, r9
- lsrs r0, r5, 16
- strh r0, [r4, 0x1A]
- movs r0, 0xFF
- ands r5, r0
- strh r5, [r4, 0x1C]
- ldrb r2, [r4, 0x10]
- adds r0, r6, 0
- movs r1, 0
- bl sub_80B9DA0
- ldr r0, _080B9D9C @ =sub_80B9DF0
- str r0, [r4]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9D88: .4byte gTasks
-_080B9D8C: .4byte gUnknown_2037F02
-_080B9D90: .4byte gBattlersCount
-_080B9D94: .4byte gUnknown_2037F1A
-_080B9D98: .4byte gUnknown_2037F1B
-_080B9D9C: .4byte sub_80B9DF0
- thumb_func_end sub_80B9CE4
-
- thumb_func_start sub_80B9DA0
-sub_80B9DA0: @ 80B9DA0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r1, 0
- adds r3, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r1, _080B9DEC @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldrh r0, [r4, 0x1A]
- lsls r0, 16
- ldrh r1, [r4, 0x1C]
- orrs r0, r1
- movs r1, 0xA
- ldrsb r1, [r4, r1]
- ldrh r2, [r4, 0x12]
- str r2, [sp]
- adds r2, r5, 0
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x18]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x18]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9DEC: .4byte gTasks
- thumb_func_end sub_80B9DA0
-
- thumb_func_start sub_80B9DF0
-sub_80B9DF0: @ 80B9DF0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, r3, 0
- ldr r0, _080B9E28 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B9E52
- ldr r1, _080B9E2C @ =gTasks
- lsls r2, r3, 2
- adds r0, r2, r3
- lsls r0, 3
- adds r3, r0, r1
- movs r5, 0xC
- ldrsh r0, [r3, r5]
- adds r6, r1, 0
- adds r5, r2, 0
- cmp r0, 0
- ble _080B9E4C
- movs r1, 0x18
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080B9E30
- ldrb r1, [r3, 0xE]
- ldrb r2, [r3, 0x10]
- b _080B9E34
- .align 2, 0
-_080B9E28: .4byte gPaletteFade
-_080B9E2C: .4byte gTasks
-_080B9E30:
- ldrb r1, [r3, 0x10]
- ldrb r2, [r3, 0xE]
-_080B9E34:
- adds r0, r5, r4
- lsls r0, 3
- adds r0, r6
- movs r3, 0xC
- ldrsh r0, [r0, r3]
- cmp r0, 0x1
- bne _080B9E44
- movs r2, 0
-_080B9E44:
- adds r0, r4, 0
- bl sub_80B9DA0
- b _080B9E52
-_080B9E4C:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080B9E52:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B9DF0
-
- thumb_func_start sub_80B9E58
-sub_80B9E58: @ 80B9E58
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B9E9C @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r3, _080B9EA0 @ =gUnknown_2037F02
- ldrh r1, [r3]
- movs r5, 0
- strh r1, [r4, 0x8]
- ldrh r1, [r3, 0x2]
- strh r1, [r4, 0xA]
- ldrh r1, [r3, 0x4]
- strh r1, [r4, 0xC]
- ldrh r1, [r3, 0x6]
- strh r1, [r4, 0xE]
- ldrh r2, [r3, 0x8]
- strh r2, [r4, 0x10]
- ldrh r1, [r3, 0xA]
- strh r1, [r4, 0x12]
- strh r5, [r4, 0x18]
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0
- bl sub_80B9EA8
- ldr r0, _080B9EA4 @ =sub_80B9F04
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9E9C: .4byte gTasks
-_080B9EA0: .4byte gUnknown_2037F02
-_080B9EA4: .4byte sub_80B9F04
- thumb_func_end sub_80B9E58
-
- thumb_func_start sub_80B9EA8
-sub_80B9EA8: @ 80B9EA8
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r1, _080B9F00 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldrh r0, [r4, 0x8]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r2, 0x1
- lsls r2, r0
- movs r1, 0xA
- ldrsb r1, [r4, r1]
- ldrh r0, [r4, 0x12]
- str r0, [sp]
- adds r0, r2, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x18]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x18]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9F00: .4byte gTasks
- thumb_func_end sub_80B9EA8
-
- thumb_func_start sub_80B9F04
-sub_80B9F04: @ 80B9F04
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, r3, 0
- ldr r0, _080B9F3C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B9F66
- ldr r1, _080B9F40 @ =gTasks
- lsls r2, r3, 2
- adds r0, r2, r3
- lsls r0, 3
- adds r3, r0, r1
- movs r5, 0xC
- ldrsh r0, [r3, r5]
- adds r6, r1, 0
- adds r5, r2, 0
- cmp r0, 0
- ble _080B9F60
- movs r1, 0x18
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080B9F44
- ldrb r1, [r3, 0xE]
- ldrb r2, [r3, 0x10]
- b _080B9F48
- .align 2, 0
-_080B9F3C: .4byte gPaletteFade
-_080B9F40: .4byte gTasks
-_080B9F44:
- ldrb r1, [r3, 0x10]
- ldrb r2, [r3, 0xE]
-_080B9F48:
- adds r0, r5, r4
- lsls r0, 3
- adds r0, r6
- movs r3, 0xC
- ldrsh r0, [r0, r3]
- cmp r0, 0x1
- bne _080B9F58
- movs r2, 0
-_080B9F58:
- adds r0, r4, 0
- bl sub_80B9EA8
- b _080B9F66
-_080B9F60:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080B9F66:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B9F04
-
- thumb_func_start sub_80B9F6C
-sub_80B9F6C: @ 80B9F6C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B9FCC @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r5, _080B9FD0 @ =gUnknown_2037F02
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x8]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0xA]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0xC]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0xE]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x10]
- ldrh r0, [r5, 0xA]
- strh r0, [r4, 0x12]
- ldrh r0, [r5, 0xC]
- strh r0, [r4, 0x14]
- ldrh r0, [r5]
- strh r0, [r4, 0x16]
- ldrh r0, [r5]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- ldrb r3, [r5, 0x8]
- ldrh r0, [r5, 0x6]
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0
- adds r2, r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _080B9FD4 @ =sub_80B9FD8
- str r0, [r4]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9FCC: .4byte gTasks
-_080B9FD0: .4byte gUnknown_2037F02
-_080B9FD4: .4byte sub_80B9FD8
- thumb_func_end sub_80B9F6C
-
- thumb_func_start sub_80B9FD8
-sub_80B9FD8: @ 80B9FD8
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080B9FFC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0x8]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080BA000
- subs r0, r1, 0x1
- strh r0, [r4, 0x8]
- b _080BA084
- .align 2, 0
-_080B9FFC: .4byte gTasks
-_080BA000:
- ldr r0, _080BA01C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BA084
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _080BA024
- ldr r0, _080BA020 @ =sub_80BA090
- str r0, [r4]
- b _080BA084
- .align 2, 0
-_080BA01C: .4byte gPaletteFade
-_080BA020: .4byte sub_80BA090
-_080BA024:
- ldrh r0, [r4, 0x16]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r2, 0x1
- lsls r2, r0
- ldrh r1, [r4, 0xA]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080BA052
- ldrb r3, [r4, 0x10]
- ldrh r0, [r4, 0xE]
- str r0, [sp]
- adds r0, r2, 0
- movs r1, 0
- adds r2, r3, 0
- bl BeginNormalPaletteFade
- b _080BA062
-_080BA052:
- ldrb r3, [r4, 0x14]
- ldrh r0, [r4, 0x12]
- str r0, [sp]
- adds r0, r2, 0
- movs r1, 0
- adds r2, r3, 0
- bl BeginNormalPaletteFade
-_080BA062:
- ldr r0, _080BA08C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xA]
- movs r3, 0x80
- lsls r3, 1
- adds r2, r3, 0
- eors r0, r2
- strh r0, [r1, 0xA]
- movs r2, 0xFF
- ands r0, r2
- strh r0, [r1, 0x8]
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
-_080BA084:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA08C: .4byte gTasks
- thumb_func_end sub_80B9FD8
-
- thumb_func_start sub_80BA090
-sub_80BA090: @ 80BA090
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080BA0E0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080BA0D6
- ldr r1, _080BA0E4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x16]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- str r5, [sp]
- adds r0, r1, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl BeginNormalPaletteFade
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080BA0D6:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA0E0: .4byte gPaletteFade
-_080BA0E4: .4byte gTasks
- thumb_func_end sub_80BA090
-
- thumb_func_start sub_80BA0E8
-sub_80BA0E8: @ 80BA0E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r2, 0
- ldr r0, _080BA160 @ =gUnknown_2037F1A
- ldrb r6, [r0]
- ldr r0, _080BA164 @ =gUnknown_2037F1B
- ldrb r7, [r0]
- ldr r4, _080BA168 @ =gUnknown_2037F02
- ldrh r1, [r4]
- movs r5, 0x80
- lsls r5, 1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA122
- str r2, [sp]
- str r2, [sp, 0x4]
- str r2, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r3, 0
- bl sub_8075BE8
- adds r2, r0, 0
-_080BA122:
- ldrh r1, [r4, 0x2]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA134
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r6
- orrs r2, r0
-_080BA134:
- ldrh r1, [r4, 0x4]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA146
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r7
- orrs r2, r0
-_080BA146:
- adds r0, r2, 0
- bl InvertPlttBuffer
- mov r0, r8
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA160: .4byte gUnknown_2037F1A
-_080BA164: .4byte gUnknown_2037F1B
-_080BA168: .4byte gUnknown_2037F02
- thumb_func_end sub_80BA0E8
-
- thumb_func_start sub_80BA16C
-sub_80BA16C: @ 80BA16C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r5, 0
- ldr r1, _080BA260 @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080BA1AE
- ldr r1, _080BA264 @ =gUnknown_2037F02
- ldrh r0, [r1]
- strh r0, [r4, 0xC]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0xE]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x10]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0xA]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x12]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x14]
- ldrh r0, [r1, 0xC]
- strh r0, [r4, 0x16]
-_080BA1AE:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- ldr r0, _080BA268 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- mov r9, r0
- ldr r0, _080BA26C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- mov r10, r0
- ldrh r1, [r4, 0xC]
- movs r7, 0x80
- lsls r7, 1
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA1D0
- ldr r5, _080BA270 @ =0x0000ffff
-_080BA1D0:
- movs r6, 0x1
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA200
- ldr r2, _080BA274 @ =gSprites
- ldr r0, _080BA278 @ =gUnknown_3004FF0
- add r0, r9
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x14
- adds r0, r2
- ldr r0, [r0]
- ldrh r0, [r0, 0x2]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r1, r6, 0
- lsls r1, r0
- lsls r1, 16
- orrs r5, r1
-_080BA200:
- ldrh r1, [r4, 0xE]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA214
- adds r0, r6, 0
- mov r2, r9
- lsls r0, r2
- lsls r0, 16
- orrs r5, r0
-_080BA214:
- ldrh r1, [r4, 0x10]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA228
- adds r0, r6, 0
- mov r1, r10
- lsls r0, r1
- lsls r0, 16
- orrs r5, r0
-_080BA228:
- movs r1, 0x12
- ldrsb r1, [r4, r1]
- movs r2, 0x14
- ldrsb r2, [r4, r2]
- movs r3, 0x16
- ldrsb r3, [r4, r3]
- adds r0, r5, 0
- bl TintPlttBuffer
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080BA252
- adds r0, r5, 0
- bl UnfadePlttBuffer
- mov r0, r8
- bl DestroyAnimVisualTask
-_080BA252:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA260: .4byte gTasks
-_080BA264: .4byte gUnknown_2037F02
-_080BA268: .4byte gUnknown_2037F1A
-_080BA26C: .4byte gUnknown_2037F1B
-_080BA270: .4byte 0x0000ffff
-_080BA274: .4byte gSprites
-_080BA278: .4byte gUnknown_3004FF0
- thumb_func_end sub_80BA16C
-
- thumb_func_start sub_80BA27C
-sub_80BA27C: @ 80BA27C
- push {r4,lr}
- adds r4, r0, 0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080BA2B0 @ =gUnknown_2037F02
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x30]
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x34]
- movs r2, 0x6
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- beq _080BA2C4
- cmp r0, 0x1
- bgt _080BA2B4
- cmp r0, 0
- beq _080BA2BA
- b _080BA2DC
- .align 2, 0
-_080BA2B0: .4byte gUnknown_2037F02
-_080BA2B4:
- cmp r0, 0x2
- beq _080BA2CC
- b _080BA2DC
-_080BA2BA:
- ldr r1, _080BA2C0 @ =gBattle_BG3_X
- b _080BA2CE
- .align 2, 0
-_080BA2C0: .4byte gBattle_BG3_X
-_080BA2C4:
- ldr r1, _080BA2C8 @ =gBattle_BG3_Y
- b _080BA2CE
- .align 2, 0
-_080BA2C8: .4byte gBattle_BG3_Y
-_080BA2CC:
- ldr r1, _080BA2D8 @ =gSpriteCoordOffsetX
-_080BA2CE:
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- b _080BA2E4
- .align 2, 0
-_080BA2D8: .4byte gSpriteCoordOffsetX
-_080BA2DC:
- ldr r1, _080BA314 @ =gSpriteCoordOffsetY
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
-_080BA2E4:
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- lsls r0, 16
- orrs r1, r0
- ldrh r0, [r1]
- strh r0, [r4, 0x36]
- ldr r0, _080BA318 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x6]
- strh r0, [r4, 0x38]
- subs r0, 0x2
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080BA308
- bl sub_80BA3CC
-_080BA308:
- ldr r0, _080BA31C @ =sub_80BA320
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA314: .4byte gSpriteCoordOffsetY
-_080BA318: .4byte gUnknown_2037F02
-_080BA31C: .4byte sub_80BA320
- thumb_func_end sub_80BA27C
-
- thumb_func_start sub_80BA320
-sub_80BA320: @ 80BA320
- push {r4-r7,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x34]
- movs r2, 0x34
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _080BA362
- subs r0, r1, 0x1
- strh r0, [r3, 0x34]
- ldrh r1, [r3, 0x30]
- movs r2, 0x30
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _080BA342
- subs r0, r1, 0x1
- strh r0, [r3, 0x30]
- b _080BA3BA
-_080BA342:
- ldrh r0, [r3, 0x32]
- strh r0, [r3, 0x30]
- movs r0, 0x3A
- ldrsh r1, [r3, r0]
- movs r2, 0x3C
- ldrsh r0, [r3, r2]
- lsls r0, 16
- orrs r1, r0
- ldrh r0, [r3, 0x2E]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- ldrh r0, [r3, 0x2E]
- negs r0, r0
- strh r0, [r3, 0x2E]
- b _080BA3BA
-_080BA362:
- movs r0, 0x3A
- ldrsh r1, [r3, r0]
- movs r2, 0x3C
- ldrsh r0, [r3, r2]
- lsls r0, 16
- orrs r1, r0
- ldrh r0, [r3, 0x36]
- strh r0, [r1]
- ldrh r0, [r3, 0x38]
- subs r0, 0x2
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080BA3B4
- movs r4, 0
- ldr r5, _080BA3C0 @ =gBattlersCount
- ldrb r0, [r5]
- cmp r4, r0
- bcs _080BA3B4
- ldr r2, _080BA3C4 @ =gSprites
- mov r12, r2
- ldr r6, _080BA3C8 @ =gUnknown_2023D44
- movs r7, 0x3
- negs r7, r7
-_080BA392:
- adds r0, r4, r6
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r12
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r7, 0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r5]
- cmp r4, r0
- bcc _080BA392
-_080BA3B4:
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080BA3BA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA3C0: .4byte gBattlersCount
-_080BA3C4: .4byte gSprites
-_080BA3C8: .4byte gUnknown_2023D44
- thumb_func_end sub_80BA320
-
- thumb_func_start sub_80BA3CC
-sub_80BA3CC: @ 80BA3CC
- push {r4-r6,lr}
- ldr r6, _080BA440 @ =gSprites
- ldr r4, _080BA444 @ =gUnknown_2023D44
- ldr r5, _080BA448 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x3
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- ldr r3, _080BA44C @ =gUnknown_2037F1B
- ldrb r0, [r3]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- ldr r0, _080BA450 @ =gUnknown_2037F02
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x2
- bne _080BA454
- ldrb r0, [r5]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
- ldrb r0, [r3]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- b _080BA470
- .align 2, 0
-_080BA440: .4byte gSprites
-_080BA444: .4byte gUnknown_2023D44
-_080BA448: .4byte gUnknown_2037F1A
-_080BA44C: .4byte gUnknown_2037F1B
-_080BA450: .4byte gUnknown_2037F02
-_080BA454:
- cmp r0, 0
- bne _080BA45C
- ldrb r0, [r5]
- b _080BA45E
-_080BA45C:
- ldrb r0, [r3]
-_080BA45E:
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x2
-_080BA470:
- orrs r1, r2
- strb r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BA3CC
-
- thumb_func_start sub_80BA47C
-sub_80BA47C: @ 80BA47C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080BA4BC @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r1
- ldr r3, _080BA4C0 @ =gUnknown_2037F02
- ldrh r1, [r3]
- strh r1, [r2, 0x8]
- ldrh r1, [r3, 0x2]
- strh r1, [r2, 0xA]
- ldrh r1, [r3, 0x4]
- strh r1, [r2, 0xC]
- ldrh r1, [r3, 0x6]
- strh r1, [r2, 0xE]
- ldrh r1, [r3, 0x6]
- strh r1, [r2, 0x18]
- ldr r4, _080BA4C4 @ =gBattle_BG3_X
- ldrh r1, [r3]
- strh r1, [r4]
- ldr r4, _080BA4C8 @ =gBattle_BG3_Y
- ldrh r1, [r3, 0x2]
- strh r1, [r4]
- ldr r1, _080BA4CC @ =sub_80BA4D0
- str r1, [r2]
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA4BC: .4byte gTasks
-_080BA4C0: .4byte gUnknown_2037F02
-_080BA4C4: .4byte gBattle_BG3_X
-_080BA4C8: .4byte gBattle_BG3_Y
-_080BA4CC: .4byte sub_80BA4D0
- thumb_func_end sub_80BA47C
-
- thumb_func_start sub_80BA4D0
-sub_80BA4D0: @ 80BA4D0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080BA500 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r1
- ldrh r2, [r3, 0xE]
- movs r4, 0xE
- ldrsh r0, [r3, r4]
- mov r12, r1
- cmp r0, 0
- bne _080BA556
- ldr r0, _080BA504 @ =gBattle_BG3_X
- ldrh r2, [r0]
- movs r7, 0x8
- ldrsh r1, [r3, r7]
- adds r6, r0, 0
- cmp r2, r1
- bne _080BA508
- ldrh r0, [r3, 0x8]
- negs r0, r0
- b _080BA50A
- .align 2, 0
-_080BA500: .4byte gTasks
-_080BA504: .4byte gBattle_BG3_X
-_080BA508:
- ldrh r0, [r3, 0x8]
-_080BA50A:
- strh r0, [r6]
- ldr r2, _080BA528 @ =gBattle_BG3_Y
- ldrh r3, [r2]
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- mov r7, r12
- adds r4, r0, r7
- movs r7, 0xA
- ldrsh r0, [r4, r7]
- cmn r3, r0
- bne _080BA52C
- movs r0, 0
- b _080BA530
- .align 2, 0
-_080BA528: .4byte gBattle_BG3_Y
-_080BA52C:
- ldrh r0, [r4, 0xA]
- negs r0, r0
-_080BA530:
- strh r0, [r2]
- adds r0, r1, r5
- lsls r0, 3
- add r0, r12
- ldrh r1, [r0, 0x18]
- strh r1, [r0, 0xE]
- ldrh r1, [r0, 0xC]
- subs r1, 0x1
- strh r1, [r0, 0xC]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0
- bne _080BA55A
- strh r1, [r6]
- strh r1, [r2]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _080BA55A
-_080BA556:
- subs r0, r2, 0x1
- strh r0, [r3, 0xE]
-_080BA55A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BA4D0
-
- thumb_func_start sub_80BA560
-sub_80BA560: @ 80BA560
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080BA580 @ =gUnknown_2037F02
- ldrb r1, [r4, 0x6]
- bl StartSpriteAffineAnim
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080BA584
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075160
- b _080BA58C
- .align 2, 0
-_080BA580: .4byte gUnknown_2037F02
-_080BA584:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075114
-_080BA58C:
- ldr r0, _080BA5A0 @ =sub_8074F50
- str r0, [r5, 0x1C]
- ldr r1, _080BA5A4 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA5A0: .4byte sub_8074F50
-_080BA5A4: .4byte DestroyAnimSprite
- thumb_func_end sub_80BA560
-
- thumb_func_start sub_80BA5A8
-sub_80BA5A8: @ 80BA5A8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080BA5C8 @ =gUnknown_2037F02
- ldrb r1, [r4, 0x6]
- bl StartSpriteAffineAnim
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080BA5CC
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075160
- b _080BA5D4
- .align 2, 0
-_080BA5C8: .4byte gUnknown_2037F02
-_080BA5CC:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075114
-_080BA5D4:
- ldr r0, _080BA5EC @ =gUnknown_2037F02
- ldrh r0, [r0, 0x8]
- strh r0, [r5, 0x2E]
- ldr r0, _080BA5F0 @ =sub_8074F50
- str r0, [r5, 0x1C]
- ldr r1, _080BA5F4 @ =sub_80B1D3C
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA5EC: .4byte gUnknown_2037F02
-_080BA5F0: .4byte sub_8074F50
-_080BA5F4: .4byte sub_80B1D3C
- thumb_func_end sub_80BA5A8
-
- thumb_func_start sub_80BA5F8
-sub_80BA5F8: @ 80BA5F8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080BA628 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080BA61C
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080BA61C
- ldr r1, _080BA62C @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_080BA61C:
- adds r0, r4, 0
- bl sub_80BA560
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA628: .4byte gUnknown_2037F1A
-_080BA62C: .4byte gUnknown_2037F02
- thumb_func_end sub_80BA5F8
-
- thumb_func_start sub_80BA630
-sub_80BA630: @ 80BA630
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080BA668 @ =gUnknown_2037F02
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080BA64C
- bl Random
- movs r1, 0x3
- ands r1, r0
- strh r1, [r5, 0x2]
-_080BA64C:
- ldrb r1, [r5, 0x2]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080BA66C
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075160
- b _080BA674
- .align 2, 0
-_080BA668: .4byte gUnknown_2037F02
-_080BA66C:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075114
-_080BA674:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x30
- bl __umodsi3
- ldr r1, _080BA6B8 @ =0x0000ffe8
- adds r0, r1
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x18
- bl __umodsi3
- ldr r1, _080BA6BC @ =0x0000fff4
- adds r0, r1
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldr r1, _080BA6C0 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080BA6C4 @ =sub_8074F50
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA6B8: .4byte 0x0000ffe8
-_080BA6BC: .4byte 0x0000fff4
-_080BA6C0: .4byte move_anim_8074EE0
-_080BA6C4: .4byte sub_8074F50
- thumb_func_end sub_80BA630
-
- thumb_func_start sub_80BA6C8
-sub_80BA6C8: @ 80BA6C8
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080BA728 @ =gUnknown_2037F02
- ldrb r0, [r5]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x2E]
- ldr r2, _080BA72C @ =gSprites
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- ldrh r0, [r0, 0x20]
- adds r1, r0
- strh r1, [r4, 0x20]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- strh r1, [r4, 0x22]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x24]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x26]
- ldrb r1, [r5, 0x6]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- ldr r1, _080BA730 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080BA734 @ =sub_8074F50
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA728: .4byte gUnknown_2037F02
-_080BA72C: .4byte gSprites
-_080BA730: .4byte move_anim_8074EE0
-_080BA734: .4byte sub_8074F50
- thumb_func_end sub_80BA6C8
-
- thumb_func_start sub_80BA738
-sub_80BA738: @ 80BA738
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080BA750 @ =gUnknown_2037F02
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080BA754
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075160
- b _080BA75C
- .align 2, 0
-_080BA750: .4byte gUnknown_2037F02
-_080BA754:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075114
-_080BA75C:
- ldr r0, _080BA774 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x6]
- strh r0, [r4, 0x2E]
- ldr r1, _080BA778 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080BA77C @ =sub_8074C44
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA774: .4byte gUnknown_2037F02
-_080BA778: .4byte DestroyAnimSprite
-_080BA77C: .4byte sub_8074C44
- thumb_func_end sub_80BA738
-
- thumb_func_start sub_80BA780
-sub_80BA780: @ 80BA780
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080BA7A0 @ =gUnknown_2037F02
- ldrb r1, [r4, 0x6]
- bl StartSpriteAffineAnim
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080BA7A4
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075160
- b _080BA7AC
- .align 2, 0
-_080BA7A0: .4byte gUnknown_2037F02
-_080BA7A4:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075114
-_080BA7AC:
- ldr r0, _080BA7B8 @ =sub_80BA7BC
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA7B8: .4byte sub_80BA7BC
- thumb_func_end sub_80BA780
-
- thumb_func_start sub_80BA7BC
-sub_80BA7BC: @ 80BA7BC
- push {lr}
- adds r3, r0, 0
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x2E]
- adds r1, r0, 0x1
- strh r1, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _080BA7F2
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080BA7F2:
- pop {r0}
- bx r0
- thumb_func_end sub_80BA7BC
-
- thumb_func_start sub_80BA7F8
-sub_80BA7F8: @ 80BA7F8
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _080BA838 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r4, r1]
- bl sub_80B9A14
- adds r6, r0, 0
- ldrh r3, [r4]
- lsls r3, 16
- asrs r0, r3, 23
- movs r4, 0x1
- ands r0, r4
- asrs r1, r3, 24
- ands r1, r4
- asrs r2, r3, 25
- ands r2, r4
- asrs r3, 26
- ands r3, r4
- bl sub_8075CB8
- orrs r6, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_80BAA4C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA838: .4byte gUnknown_2037F02
- thumb_func_end sub_80BA7F8
-
- thumb_func_start sub_80BA83C
-sub_80BA83C: @ 80BA83C
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- mov r1, sp
- movs r0, 0xFF
- strb r0, [r1, 0x1]
- movs r0, 0x1
- bl sub_80B9A14
- adds r5, r0, 0
- ldr r0, _080BA868 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x7
- bhi _080BA8E6
- lsls r0, 2
- ldr r1, _080BA86C @ =_080BA870
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BA868: .4byte gUnknown_2037F02
-_080BA86C: .4byte _080BA870
- .align 2, 0
-_080BA870:
- .4byte _080BA892
- .4byte _080BA89E
- .4byte _080BA890
- .4byte _080BA89C
- .4byte _080BA8AC
- .4byte _080BA8C4
- .4byte _080BA8CC
- .4byte _080BA8D8
-_080BA890:
- movs r5, 0
-_080BA892:
- mov r0, sp
- ldr r1, _080BA898 @ =gUnknown_2037F1A
- b _080BA8A2
- .align 2, 0
-_080BA898: .4byte gUnknown_2037F1A
-_080BA89C:
- movs r5, 0
-_080BA89E:
- mov r0, sp
- ldr r1, _080BA8A8 @ =gUnknown_2037F1B
-_080BA8A2:
- ldrb r1, [r1]
- strb r1, [r0]
- b _080BA8E6
- .align 2, 0
-_080BA8A8: .4byte gUnknown_2037F1B
-_080BA8AC:
- mov r1, sp
- ldr r0, _080BA8BC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _080BA8C0 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- strb r0, [r1, 0x1]
- b _080BA8E6
- .align 2, 0
-_080BA8BC: .4byte gUnknown_2037F1A
-_080BA8C0: .4byte gUnknown_2037F1B
-_080BA8C4:
- mov r1, sp
- movs r0, 0xFF
- strb r0, [r1]
- b _080BA8E6
-_080BA8CC:
- movs r5, 0
- mov r2, sp
- ldr r0, _080BA8D4 @ =gUnknown_2037F1A
- b _080BA8DE
- .align 2, 0
-_080BA8D4: .4byte gUnknown_2037F1A
-_080BA8D8:
- movs r5, 0
- mov r2, sp
- ldr r0, _080BA930 @ =gUnknown_2037F1B
-_080BA8DE:
- ldrb r0, [r0]
- movs r1, 0x2
- eors r0, r1
- strb r0, [r2]
-_080BA8E6:
- movs r4, 0
- mov r6, sp
-_080BA8EA:
- ldrb r0, [r6]
- cmp r4, r0
- beq _080BA914
- ldrb r0, [r6, 0x1]
- cmp r4, r0
- beq _080BA914
- adds r0, r4, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080BA914
- adds r0, r4, 0
- bl sub_8075D80
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x80
- lsls r1, 9
- lsls r1, r0
- orrs r5, r1
-_080BA914:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080BA8EA
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_80BAA4C
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA930: .4byte gUnknown_2037F1B
- thumb_func_end sub_80BA83C
-
- thumb_func_start sub_80BA934
-sub_80BA934: @ 80BA934
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080BA958 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- bl sub_80B9A14
- adds r2, r0, 0
- ldr r0, _080BA95C @ =gUnknown_2022B50
- ldrb r0, [r0]
- cmp r0, 0x9
- bhi _080BAA0A
- lsls r0, 2
- ldr r1, _080BA960 @ =_080BA964
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BA958: .4byte gUnknown_2037F02
-_080BA95C: .4byte gUnknown_2022B50
-_080BA960: .4byte _080BA964
- .align 2, 0
-_080BA964:
- .4byte _080BA98C
- .4byte _080BA99C
- .4byte _080BA9A8
- .4byte _080BA9B8
- .4byte _080BA9C4
- .4byte _080BA9D4
- .4byte _080BA9E4
- .4byte _080BA9F4
- .4byte _080BAA04
- .4byte _080BAA04
-_080BA98C:
- ldr r1, _080BA994 @ =gUnknown_2037F02
- ldr r0, _080BA998 @ =0x00000b0c
- b _080BAA08
- .align 2, 0
-_080BA994: .4byte gUnknown_2037F02
-_080BA998: .4byte 0x00000b0c
-_080BA99C:
- ldr r1, _080BA9A4 @ =gUnknown_2037F02
- movs r0, 0x9E
- lsls r0, 4
- b _080BAA08
- .align 2, 0
-_080BA9A4: .4byte gUnknown_2037F02
-_080BA9A8:
- ldr r1, _080BA9B0 @ =gUnknown_2037F02
- ldr r0, _080BA9B4 @ =0x00002f1e
- b _080BAA08
- .align 2, 0
-_080BA9B0: .4byte gUnknown_2037F02
-_080BA9B4: .4byte 0x00002f1e
-_080BA9B8:
- ldr r1, _080BA9C0 @ =gUnknown_2037F02
- movs r0, 0x90
- lsls r0, 7
- b _080BAA08
- .align 2, 0
-_080BA9C0: .4byte gUnknown_2037F02
-_080BA9C4:
- ldr r1, _080BA9CC @ =gUnknown_2037F02
- ldr r0, _080BA9D0 @ =0x00007ecb
- b _080BAA08
- .align 2, 0
-_080BA9CC: .4byte gUnknown_2037F02
-_080BA9D0: .4byte 0x00007ecb
-_080BA9D4:
- ldr r1, _080BA9DC @ =gUnknown_2037F02
- ldr r0, _080BA9E0 @ =0x00007ecb
- b _080BAA08
- .align 2, 0
-_080BA9DC: .4byte gUnknown_2037F02
-_080BA9E0: .4byte 0x00007ecb
-_080BA9E4:
- ldr r1, _080BA9EC @ =gUnknown_2037F02
- ldr r0, _080BA9F0 @ =0x00002a16
- b _080BAA08
- .align 2, 0
-_080BA9EC: .4byte gUnknown_2037F02
-_080BA9F0: .4byte 0x00002a16
-_080BA9F4:
- ldr r1, _080BA9FC @ =gUnknown_2037F02
- ldr r0, _080BAA00 @ =0x00000d2e
- b _080BAA08
- .align 2, 0
-_080BA9FC: .4byte gUnknown_2037F02
-_080BAA00: .4byte 0x00000d2e
-_080BAA04:
- ldr r1, _080BAA18 @ =gUnknown_2037F02
- ldr r0, _080BAA1C @ =0x00007fff
-_080BAA08:
- strh r0, [r1, 0x8]
-_080BAA0A:
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_80BAA4C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BAA18: .4byte gUnknown_2037F02
-_080BAA1C: .4byte 0x00007fff
- thumb_func_end sub_80BA934
-
- thumb_func_start sub_80BAA20
-sub_80BAA20: @ 80BAA20
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080BAA48 @ =gUnknown_2037F02
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- adds r0, r4, 0
- bl sub_80BAA4C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BAA48: .4byte gUnknown_2037F02
- thumb_func_end sub_80BAA20
-
- thumb_func_start sub_80BAA4C
-sub_80BAA4C: @ 80BAA4C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080BAA84 @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r3
- strh r1, [r2, 0x8]
- lsrs r1, 16
- strh r1, [r2, 0xA]
- ldr r3, _080BAA88 @ =gUnknown_2037F02
- ldrh r1, [r3, 0x2]
- strh r1, [r2, 0xC]
- ldrh r1, [r3, 0x4]
- strh r1, [r2, 0xE]
- ldrh r1, [r3, 0x6]
- strh r1, [r2, 0x10]
- ldrh r1, [r3, 0x8]
- strh r1, [r2, 0x12]
- ldrh r1, [r3, 0x4]
- strh r1, [r2, 0x1C]
- ldr r1, _080BAA8C @ =sub_80BAA90
- str r1, [r2]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_080BAA84: .4byte gTasks
-_080BAA88: .4byte gUnknown_2037F02
-_080BAA8C: .4byte sub_80BAA90
- thumb_func_end sub_80BAA4C
-
- thumb_func_start sub_80BAA90
-sub_80BAA90: @ 80BAA90
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0
- ldr r2, _080BAB10 @ =gTasks
- lsls r5, r7, 2
- adds r0, r5, r7
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x1A]
- mov r8, r0
- movs r4, 0x1A
- ldrsh r1, [r3, r4]
- movs r4, 0xC
- ldrsh r0, [r3, r4]
- mov r9, r2
- cmp r1, r0
- bne _080BAB26
- strh r6, [r3, 0x1A]
- movs r0, 0x8
- ldrsh r4, [r3, r0]
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- lsls r0, 16
- orrs r4, r0
- mov r8, r5
- cmp r4, 0
- beq _080BAAF2
- adds r5, r3, 0
-_080BAAD0:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _080BAAE4
- ldrb r2, [r5, 0x1C]
- ldrh r3, [r5, 0x12]
- adds r0, r6, 0
- movs r1, 0x10
- bl BlendPalette
-_080BAAE4:
- adds r0, r6, 0
- adds r0, 0x10
- lsls r0, 16
- lsrs r6, r0, 16
- lsrs r4, 1
- cmp r4, 0
- bne _080BAAD0
-_080BAAF2:
- mov r4, r8
- adds r0, r4, r7
- lsls r0, 3
- mov r1, r9
- adds r2, r0, r1
- ldrh r0, [r2, 0x1C]
- movs r4, 0x1C
- ldrsh r3, [r2, r4]
- movs r4, 0x10
- ldrsh r1, [r2, r4]
- cmp r3, r1
- bge _080BAB14
- adds r0, 0x1
- strh r0, [r2, 0x1C]
- b _080BAB2C
- .align 2, 0
-_080BAB10: .4byte gTasks
-_080BAB14:
- cmp r3, r1
- ble _080BAB1E
- subs r0, 0x1
- strh r0, [r2, 0x1C]
- b _080BAB2C
-_080BAB1E:
- adds r0, r7, 0
- bl DestroyAnimVisualTask
- b _080BAB2C
-_080BAB26:
- mov r0, r8
- adds r0, 0x1
- strh r0, [r3, 0x1A]
-_080BAB2C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BAA90
-
- thumb_func_start sub_80BAB38
-sub_80BAB38: @ 80BAB38
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _080BAB6C @ =gUnknown_2037F02
- ldrb r0, [r4]
- ldrb r1, [r4, 0x2]
- ldrb r2, [r4, 0x4]
- ldrb r3, [r4, 0x6]
- ldrb r4, [r4, 0x8]
- str r4, [sp]
- bl BeginHardwarePaletteFade
- ldr r1, _080BAB70 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BAB74 @ =sub_80BAB78
- str r1, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BAB6C: .4byte gUnknown_2037F02
-_080BAB70: .4byte gTasks
-_080BAB74: .4byte sub_80BAB78
- thumb_func_end sub_80BAB38
-
- thumb_func_start sub_80BAB78
-sub_80BAB78: @ 80BAB78
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080BAB94 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BAB90
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080BAB90:
- pop {r0}
- bx r0
- .align 2, 0
-_080BAB94: .4byte gPaletteFade
- thumb_func_end sub_80BAB78
-
- thumb_func_start sub_80BAB98
-sub_80BAB98: @ 80BAB98
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080BABC4 @ =gTasks
- adds r1, r0
- ldr r2, _080BABC8 @ =gUnknown_2037F02
- ldrh r0, [r2]
- movs r3, 0
- strh r0, [r1, 0x8]
- strh r3, [r1, 0xA]
- ldrh r0, [r2, 0x2]
- strh r0, [r1, 0xC]
- ldrh r0, [r2, 0x4]
- strh r0, [r1, 0xE]
- ldrh r0, [r2, 0x6]
- strh r0, [r1, 0x10]
- strh r3, [r1, 0x12]
- ldr r0, _080BABCC @ =sub_80BABD0
- str r0, [r1]
- bx lr
- .align 2, 0
-_080BABC4: .4byte gTasks
-_080BABC8: .4byte gUnknown_2037F02
-_080BABCC: .4byte sub_80BABD0
- thumb_func_end sub_80BAB98
-
- thumb_func_start sub_80BABD0
-sub_80BABD0: @ 80BABD0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r2, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080BABFC @ =gTasks
- adds r4, r0, r1
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080BAC94
- ldrh r1, [r4, 0xA]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080BAC00
- subs r0, r1, 0x1
- strh r0, [r4, 0xA]
- b _080BACA2
- .align 2, 0
-_080BABFC: .4byte gTasks
-_080BAC00:
- ldrb r0, [r4, 0x8]
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- strh r0, [r4, 0x14]
- lsls r0, 16
- cmp r0, 0
- blt _080BAC7E
- ldr r6, _080BAC8C @ =gSprites
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r3, r1, r6
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- movs r2, 0x2
- cmp r0, 0
- beq _080BAC28
- movs r2, 0x1
-_080BAC28:
- lsls r2, 2
- ldrb r1, [r3, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x5]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrh r1, [r4, 0xE]
- strh r1, [r0, 0x2E]
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r5, [r0, 0x30]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x5
- strh r1, [r0, 0x32]
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r6, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _080BAC90 @ =sub_80BACA8
- str r1, [r0]
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
-_080BAC7E:
- ldrh r0, [r4, 0x10]
- subs r0, 0x1
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0xC]
- strh r0, [r4, 0xA]
- b _080BACA2
- .align 2, 0
-_080BAC8C: .4byte gSprites
-_080BAC90: .4byte sub_80BACA8
-_080BAC94:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080BACA2
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080BACA2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BABD0
-
- thumb_func_start sub_80BACA8
-sub_80BACA8: @ 80BACA8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080BACBC
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- b _080BACE0
-_080BACBC:
- ldr r3, _080BACE8 @ =gTasks
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x30
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl obj_delete_but_dont_free_vram
-_080BACE0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BACE8: .4byte gTasks
- thumb_func_end sub_80BACA8
-
- thumb_func_start sub_80BACEC
-sub_80BACEC: @ 80BACEC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r7, 0
- ldr r0, _080BAE20 @ =gUnknown_2022984
- strh r7, [r0]
- ldr r0, _080BAE24 @ =gUnknown_2022986
- strh r7, [r0]
- ldr r1, _080BAE28 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080BAE2C @ =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r1, _080BAE30 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, _080BAE34 @ =0x00000c08
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0xA
- bl GetGpuReg
- add r4, sp, 0x10
- strh r0, [r4]
- ldrb r1, [r4]
- movs r0, 0x4
- negs r0, r0
- mov r8, r0
- ands r0, r1
- strb r0, [r4]
- mov r2, sp
- adds r2, 0x11
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2]
- ldrh r1, [r4]
- movs r0, 0xA
- bl SetGpuReg
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080BAD7A
- ldrb r1, [r4]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4]
- ldrh r1, [r4]
- movs r0, 0xA
- bl SetGpuReg
-_080BAD7A:
- bl sub_8075290
- lsls r0, 24
- cmp r0, 0
- beq _080BADFE
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080BADFE
- ldr r5, _080BAE38 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080BADAA
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- bne _080BADFE
-_080BADAA:
- ldrb r0, [r5]
- movs r6, 0x2
- eors r0, r6
- bl sub_8072DF0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080BADFE
- ldr r3, _080BAE3C @ =gSprites
- ldr r1, _080BAE40 @ =gUnknown_2023D44
- ldrb r0, [r5]
- 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, [r4]
- mov r0, r8
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4]
- ldrh r1, [r4]
- movs r0, 0xA
- bl SetGpuReg
- movs r7, 0x1
-_080BADFE:
- ldr r4, _080BAE38 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080BAE4C
- ldr r1, _080BAE44 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BAE48 @ =gEnemyParty
- b _080BAE5C
- .align 2, 0
-_080BAE20: .4byte gUnknown_2022984
-_080BAE24: .4byte gUnknown_2022986
-_080BAE28: .4byte 0x00003f3f
-_080BAE2C: .4byte 0x00003f3d
-_080BAE30: .4byte 0x00003f42
-_080BAE34: .4byte 0x00000c08
-_080BAE38: .4byte gUnknown_2037F1A
-_080BAE3C: .4byte gSprites
-_080BAE40: .4byte gUnknown_2023D44
-_080BAE44: .4byte gBattlerPartyIndexes
-_080BAE48: .4byte gEnemyParty
-_080BAE4C:
- ldr r1, _080BAF0C @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BAF10 @ =gPlayerParty
-_080BAE5C:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r0, _080BAF14 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_8076E34
- lsls r0, 24
- lsrs r4, r0, 24
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080BAF18 @ =gFile_graphics_battle_anims_masks_curse_tilemap
- bl sub_807543C
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080BAEAC
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
-_080BAEAC:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080BAF1C @ =gFile_graphics_battle_anims_masks_curse_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080BAF20 @ =gUnknown_83E7CC8
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- adds r1, 0x1
- movs r2, 0x2
- bl LoadPalette
- ldr r2, _080BAF24 @ =gBattle_BG1_X
- ldr r0, _080BAF28 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x20]
- negs r0, r0
- adds r0, 0x20
- strh r0, [r2]
- ldr r2, _080BAF2C @ =gBattle_BG1_Y
- ldrh r0, [r1, 0x22]
- negs r0, r0
- adds r0, 0x20
- strh r0, [r2]
- ldr r1, _080BAF30 @ =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- strh r7, [r0, 0x14]
- ldr r1, _080BAF34 @ =sub_80BAF38
- str r1, [r0]
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BAF0C: .4byte gBattlerPartyIndexes
-_080BAF10: .4byte gPlayerParty
-_080BAF14: .4byte gUnknown_2037F1A
-_080BAF18: .4byte gFile_graphics_battle_anims_masks_curse_tilemap
-_080BAF1C: .4byte gFile_graphics_battle_anims_masks_curse_sheet
-_080BAF20: .4byte gUnknown_83E7CC8
-_080BAF24: .4byte gBattle_BG1_X
-_080BAF28: .4byte gSprites
-_080BAF2C: .4byte gBattle_BG1_Y
-_080BAF30: .4byte gTasks
-_080BAF34: .4byte sub_80BAF38
- thumb_func_end sub_80BACEC
-
- thumb_func_start sub_80BAF38
-sub_80BAF38: @ 80BAF38
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, _080BB068 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0x1C]
- adds r0, 0x4
- movs r1, 0
- mov r8, r1
- strh r0, [r5, 0x1C]
- ldr r7, _080BB06C @ =gBattle_BG1_Y
- ldrh r2, [r7]
- subs r1, r2, 0x4
- strh r1, [r7]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x40
- bne _080BB05A
- mov r0, r8
- strh r0, [r5, 0x1C]
- adds r0, r2, 0
- adds r0, 0x3C
- strh r0, [r7]
- ldrh r0, [r5, 0x1E]
- adds r0, 0x1
- strh r0, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080BB05A
- movs r0, 0
- bl sub_8073128
- ldr r0, _080BB070 @ =gUnknown_2022984
- mov r1, r8
- strh r1, [r0]
- ldr r0, _080BB074 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r4, _080BB078 @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080BAFCA
- movs r0, 0xA
- bl GetGpuReg
- add r1, sp, 0x10
- strh r0, [r1]
- ldrb r2, [r1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrh r1, [r1]
- movs r0, 0xA
- bl SetGpuReg
-_080BAFCA:
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- eors r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- bl GetAnimBankSpriteId
- ldr r4, _080BB07C @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- bl sub_8075358
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080BB050
- ldr r2, _080BB080 @ =gUnknown_2023D44
- ldr r0, _080BB084 @ =gUnknown_2037F1A
- 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, r4
- 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]
-_080BB050:
- mov r2, r8
- strh r2, [r7]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080BB05A:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB068: .4byte gTasks
-_080BB06C: .4byte gBattle_BG1_Y
-_080BB070: .4byte gUnknown_2022984
-_080BB074: .4byte gUnknown_2022986
-_080BB078: .4byte 0x00003f3f
-_080BB07C: .4byte gSprites
-_080BB080: .4byte gUnknown_2023D44
-_080BB084: .4byte gUnknown_2037F1A
- thumb_func_end sub_80BAF38
-
- thumb_func_start sub_80BB088
-sub_80BB088: @ 80BB088
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080BB0C8 @ =gUnknown_20399B4
- movs r0, 0x18
- bl AllocZeroed
- str r0, [r4]
- movs r2, 0
- ldr r3, _080BB0CC @ =gUnknown_2037F02
-_080BB09C:
- ldr r1, [r4]
- lsls r0, r2, 1
- adds r1, 0x4
- adds r1, r0
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _080BB09C
- ldr r0, _080BB0D0 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080BB0D4 @ =sub_80BB0D8
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB0C8: .4byte gUnknown_20399B4
-_080BB0CC: .4byte gUnknown_2037F02
-_080BB0D0: .4byte gTasks
-_080BB0D4: .4byte sub_80BB0D8
- thumb_func_end sub_80BB088
-
- thumb_func_start sub_80BB0D8
-sub_80BB0D8: @ 80BB0D8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080BB0F0 @ =gUnknown_20399B4
- ldr r1, [r0]
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080BB0F8
- ldr r0, _080BB0F4 @ =gUnknown_2037F1A
- b _080BB0FA
- .align 2, 0
-_080BB0F0: .4byte gUnknown_20399B4
-_080BB0F4: .4byte gUnknown_2037F1A
-_080BB0F8:
- ldr r0, _080BB230 @ =gUnknown_2037F1B
-_080BB0FA:
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r4, _080BB234 @ =gUnknown_20399B4
- ldr r2, [r4]
- ldrb r0, [r2]
- movs r1, 0x2
- eors r0, r1
- strb r0, [r2, 0x1]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080BB12A
- ldr r1, [r4]
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _080BB130
- ldrb r0, [r1, 0x1]
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- bne _080BB130
-_080BB12A:
- ldr r1, [r4]
- movs r0, 0
- strh r0, [r1, 0xA]
-_080BB130:
- ldr r0, _080BB238 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080BB23C @ =gUnknown_2022986
- strh r1, [r0]
- ldr r1, _080BB240 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080BB244 @ =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r1, _080BB248 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080BB18E
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080BB18E:
- bl sub_8075290
- lsls r0, 24
- cmp r0, 0
- beq _080BB20A
- ldr r4, _080BB234 @ =gUnknown_20399B4
- ldr r1, [r4]
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080BB20A
- ldrb r0, [r1]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080BB1C0
- ldr r0, [r4]
- ldrb r0, [r0]
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- bne _080BB20A
-_080BB1C0:
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8072DF0
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bne _080BB20A
- ldr r3, _080BB24C @ =gSprites
- ldr r1, _080BB250 @ =gUnknown_2023D44
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- 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]
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- ldr r0, [r4]
- strb r5, [r0, 0x2]
-_080BB20A:
- ldr r4, _080BB234 @ =gUnknown_20399B4
- ldr r0, [r4]
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080BB25C
- ldr r1, _080BB254 @ =gBattlerPartyIndexes
- ldr r0, [r4]
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BB258 @ =gEnemyParty
- b _080BB26E
- .align 2, 0
-_080BB230: .4byte gUnknown_2037F1B
-_080BB234: .4byte gUnknown_20399B4
-_080BB238: .4byte gUnknown_2022984
-_080BB23C: .4byte gUnknown_2022986
-_080BB240: .4byte 0x00003f3f
-_080BB244: .4byte 0x00003f3d
-_080BB248: .4byte 0x00003f42
-_080BB24C: .4byte gSprites
-_080BB250: .4byte gUnknown_2023D44
-_080BB254: .4byte gBattlerPartyIndexes
-_080BB258: .4byte gEnemyParty
-_080BB25C:
- ldr r1, _080BB290 @ =gBattlerPartyIndexes
- ldr r0, [r4]
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BB294 @ =gPlayerParty
-_080BB26E:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- ldr r1, [r4]
- strh r0, [r1, 0x14]
- ldr r0, _080BB298 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _080BB29C @ =sub_80BB2A0
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB290: .4byte gBattlerPartyIndexes
-_080BB294: .4byte gPlayerParty
-_080BB298: .4byte gTasks
-_080BB29C: .4byte sub_80BB2A0
- thumb_func_end sub_80BB0D8
-
- thumb_func_start sub_80BB2A0
-sub_80BB2A0: @ 80BB2A0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0
- mov r8, r0
- ldr r6, _080BB300 @ =gUnknown_2023D44
- ldr r4, _080BB304 @ =gUnknown_20399B4
- ldr r2, [r4]
- ldrb r0, [r2]
- adds r1, r0, r6
- ldrb r1, [r1]
- ldrh r2, [r2, 0x14]
- bl sub_8076E34
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, [r4]
- movs r1, 0xA
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _080BB2E2
- ldrb r0, [r2, 0x1]
- adds r1, r0, r6
- ldrb r1, [r1]
- ldrh r2, [r2, 0x14]
- bl sub_8076E34
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
-_080BB2E2:
- mov r0, sp
- bl sub_80752A0
- ldr r0, [r4]
- movs r4, 0x4
- ldrsh r0, [r0, r4]
- cmp r0, 0
- bne _080BB30C
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080BB308 @ =gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap
- bl sub_807543C
- b _080BB316
- .align 2, 0
-_080BB300: .4byte gUnknown_2023D44
-_080BB304: .4byte gUnknown_20399B4
-_080BB308: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap
-_080BB30C:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080BB354 @ =gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap
- bl sub_807543C
-_080BB316:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080BB32E
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
-_080BB32E:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080BB358 @ =gFile_graphics_battle_anims_masks_stat_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080BB35C @ =gUnknown_20399B4
- ldr r0, [r0]
- movs r1, 0x6
- ldrsh r0, [r0, r1]
- cmp r0, 0x6
- bhi _080BB3C4
- lsls r0, 2
- ldr r1, _080BB360 @ =_080BB364
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BB354: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap
-_080BB358: .4byte gFile_graphics_battle_anims_masks_stat_sheet
-_080BB35C: .4byte gUnknown_20399B4
-_080BB360: .4byte _080BB364
- .align 2, 0
-_080BB364:
- .4byte _080BB380
- .4byte _080BB388
- .4byte _080BB390
- .4byte _080BB398
- .4byte _080BB3A0
- .4byte _080BB3A8
- .4byte _080BB3B0
-_080BB380:
- ldr r0, _080BB384 @ =gFile_graphics_battle_anims_masks_stat2_palette
- b _080BB3B2
- .align 2, 0
-_080BB384: .4byte gFile_graphics_battle_anims_masks_stat2_palette
-_080BB388:
- ldr r0, _080BB38C @ =gFile_graphics_battle_anims_masks_stat1_palette
- b _080BB3B2
- .align 2, 0
-_080BB38C: .4byte gFile_graphics_battle_anims_masks_stat1_palette
-_080BB390:
- ldr r0, _080BB394 @ =gFile_graphics_battle_anims_masks_stat3_palette
- b _080BB3B2
- .align 2, 0
-_080BB394: .4byte gFile_graphics_battle_anims_masks_stat3_palette
-_080BB398:
- ldr r0, _080BB39C @ =gFile_graphics_battle_anims_masks_stat4_palette
- b _080BB3B2
- .align 2, 0
-_080BB39C: .4byte gFile_graphics_battle_anims_masks_stat4_palette
-_080BB3A0:
- ldr r0, _080BB3A4 @ =gFile_graphics_battle_anims_masks_stat6_palette
- b _080BB3B2
- .align 2, 0
-_080BB3A4: .4byte gFile_graphics_battle_anims_masks_stat6_palette
-_080BB3A8:
- ldr r0, _080BB3AC @ =gFile_graphics_battle_anims_masks_stat7_palette
- b _080BB3B2
- .align 2, 0
-_080BB3AC: .4byte gFile_graphics_battle_anims_masks_stat7_palette
-_080BB3B0:
- ldr r0, _080BB3C0 @ =gFile_graphics_battle_anims_masks_stat8_palette
-_080BB3B2:
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- b _080BB3D2
- .align 2, 0
-_080BB3C0: .4byte gFile_graphics_battle_anims_masks_stat8_palette
-_080BB3C4:
- ldr r0, _080BB3FC @ =gFile_graphics_battle_anims_masks_stat5_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
-_080BB3D2:
- ldr r3, _080BB400 @ =gBattle_BG1_X
- movs r2, 0
- strh r2, [r3]
- ldr r0, _080BB404 @ =gBattle_BG1_Y
- strh r2, [r0]
- ldr r1, _080BB408 @ =gUnknown_20399B4
- ldr r0, [r1]
- movs r4, 0x4
- ldrsh r0, [r0, r4]
- adds r4, r1, 0
- cmp r0, 0x1
- bne _080BB414
- movs r0, 0x40
- strh r0, [r3]
- ldr r2, _080BB40C @ =gTasks
- lsls r3, r5, 2
- adds r0, r3, r5
- lsls r0, 3
- adds r0, r2
- ldr r1, _080BB410 @ =0x0000fffd
- b _080BB420
- .align 2, 0
-_080BB3FC: .4byte gFile_graphics_battle_anims_masks_stat5_palette
-_080BB400: .4byte gBattle_BG1_X
-_080BB404: .4byte gBattle_BG1_Y
-_080BB408: .4byte gUnknown_20399B4
-_080BB40C: .4byte gTasks
-_080BB410: .4byte 0x0000fffd
-_080BB414:
- ldr r2, _080BB43C @ =gTasks
- lsls r3, r5, 2
- adds r0, r3, r5
- lsls r0, 3
- adds r0, r2
- movs r1, 0x3
-_080BB420:
- strh r1, [r0, 0xA]
- ldr r0, [r4]
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080BB440
- adds r0, r3, r5
- lsls r0, 3
- adds r0, r2
- movs r1, 0xA
- strh r1, [r0, 0x10]
- movs r1, 0x14
- b _080BB44C
- .align 2, 0
-_080BB43C: .4byte gTasks
-_080BB440:
- adds r0, r3, r5
- lsls r0, 3
- adds r0, r2
- movs r1, 0xD
- strh r1, [r0, 0x10]
- movs r1, 0x1E
-_080BB44C:
- strh r1, [r0, 0x12]
- adds r1, r3, r5
- lsls r1, 3
- adds r1, r2
- strh r7, [r1, 0x8]
- ldr r3, [r4]
- ldrh r0, [r3, 0xA]
- strh r0, [r1, 0xC]
- mov r4, r8
- strh r4, [r1, 0xE]
- ldrb r0, [r3, 0x2]
- strh r0, [r1, 0x14]
- ldr r2, _080BB490 @ =gUnknown_2023D44
- ldrb r0, [r3, 0x1]
- adds r0, r2
- ldrb r0, [r0]
- strh r0, [r1, 0x16]
- ldr r0, _080BB494 @ =sub_80BB4B8
- str r0, [r1]
- movs r1, 0x4
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080BB498
- movs r0, 0x40
- negs r0, r0
- bl sub_8073B08
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xE8
- bl PlaySE12WithPanning
- b _080BB4AC
- .align 2, 0
-_080BB490: .4byte gUnknown_2023D44
-_080BB494: .4byte sub_80BB4B8
-_080BB498:
- movs r0, 0x40
- negs r0, r0
- bl sub_8073B08
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xEE
- bl PlaySE12WithPanning
-_080BB4AC:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BB2A0
-
- thumb_func_start sub_80BB4B8
-sub_80BB4B8: @ 80BB4B8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r2, _080BB4E4 @ =gBattle_BG1_Y
- ldr r1, _080BB4E8 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0xA]
- ldrh r1, [r2]
- adds r0, r1
- strh r0, [r2]
- movs r0, 0x26
- ldrsh r2, [r5, r0]
- cmp r2, 0x1
- beq _080BB52E
- cmp r2, 0x1
- bgt _080BB4EC
- cmp r2, 0
- beq _080BB4F6
- b _080BB644
- .align 2, 0
-_080BB4E4: .4byte gBattle_BG1_Y
-_080BB4E8: .4byte gTasks
-_080BB4EC:
- cmp r2, 0x2
- beq _080BB544
- cmp r2, 0x3
- beq _080BB582
- b _080BB644
-_080BB4F6:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- cmp r0, 0
- bgt _080BB504
- b _080BB644
-_080BB504:
- strh r2, [r5, 0x1E]
- ldrh r1, [r5, 0x20]
- adds r1, 0x1
- strh r1, [r5, 0x20]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- cmp r1, r0
- beq _080BB52C
- b _080BB644
-_080BB52C:
- b _080BB57A
-_080BB52E:
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- cmp r0, r1
- beq _080BB542
- b _080BB644
-_080BB542:
- b _080BB57A
-_080BB544:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- cmp r0, 0
- ble _080BB644
- movs r0, 0
- strh r0, [r5, 0x1E]
- ldrh r1, [r5, 0x20]
- subs r1, 0x1
- strh r1, [r5, 0x20]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x20
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080BB644
- movs r0, 0
- bl sub_8073128
-_080BB57A:
- ldrh r0, [r5, 0x26]
- adds r0, 0x1
- strh r0, [r5, 0x26]
- b _080BB644
-_080BB582:
- ldr r0, _080BB64C @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080BB650 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r4, _080BB654 @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080BB5B2
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080BB5B2:
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- eors r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080BB658 @ =gSprites
- adds r0, r4
- bl DestroySprite
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080BB606
- movs r2, 0xE
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
-_080BB606:
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080BB632
- movs r2, 0x16
- ldrsh r0, [r5, r2]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- 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]
-_080BB632:
- ldr r4, _080BB65C @ =gUnknown_20399B4
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080BB644:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB64C: .4byte gUnknown_2022984
-_080BB650: .4byte gUnknown_2022986
-_080BB654: .4byte 0x00003f3f
-_080BB658: .4byte gSprites
-_080BB65C: .4byte gUnknown_20399B4
- thumb_func_end sub_80BB4B8
-
- thumb_func_start sub_80BB660
-sub_80BB660: @ 80BB660
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x1
- bl sub_8075CB8
- adds r6, r0, 0
- movs r1, 0
- bl sub_80BB790
- ldr r0, _080BB6C0 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- lsrs r0, r6, 16
- movs r5, 0
- strh r0, [r4, 0x24]
- str r5, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8075BE8
- adds r6, r0, 0
- ldr r1, _080BB6C4 @ =0x0000ffff
- ands r6, r1
- adds r0, r6, 0
- bl sub_80BB790
- strh r6, [r4, 0x26]
- strh r5, [r4, 0x8]
- strh r5, [r4, 0xA]
- ldr r0, _080BB6C8 @ =sub_80BB6CC
- str r0, [r4]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB6C0: .4byte gTasks
-_080BB6C4: .4byte 0x0000ffff
-_080BB6C8: .4byte sub_80BB6CC
- thumb_func_end sub_80BB660
-
- thumb_func_start sub_80BB6CC
-sub_80BB6CC: @ 80BB6CC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080BB6F0 @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080BB710
- cmp r1, 0x1
- bgt _080BB6F4
- cmp r1, 0
- beq _080BB6FA
- b _080BB78A
- .align 2, 0
-_080BB6F0: .4byte gTasks
-_080BB6F4:
- cmp r1, 0x2
- beq _080BB784
- b _080BB78A
-_080BB6FA:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _080BB78A
- strh r1, [r4, 0xA]
- movs r0, 0x10
- strh r0, [r4, 0xC]
- b _080BB778
-_080BB710:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080BB78A
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- movs r5, 0
- movs r6, 0x1
-_080BB72C:
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- asrs r0, r5
- ands r0, r6
- cmp r0, 0
- beq _080BB746
- lsls r0, r5, 20
- lsrs r0, 16
- ldrb r2, [r4, 0xC]
- movs r1, 0x10
- ldr r3, _080BB780 @ =0x0000ffff
- bl BlendPalette
-_080BB746:
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- asrs r0, r5
- ands r0, r6
- cmp r0, 0
- beq _080BB766
- lsls r0, r5, 20
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r0, 16
- ldrb r2, [r4, 0xC]
- movs r1, 0x10
- movs r3, 0
- bl BlendPalette
-_080BB766:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xF
- bls _080BB72C
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080BB78A
-_080BB778:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080BB78A
- .align 2, 0
-_080BB780: .4byte 0x0000ffff
-_080BB784:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080BB78A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BB6CC
-
- thumb_func_start sub_80BB790
-sub_80BB790: @ 80BB790
- push {r4-r6,lr}
- adds r3, r0, 0
- lsls r1, 16
- lsrs r6, r1, 16
- movs r2, 0
-_080BB79A:
- movs r0, 0x1
- ands r0, r3
- lsrs r4, r3, 1
- adds r5, r2, 0x1
- cmp r0, 0
- beq _080BB7C6
- lsls r0, r2, 20
- lsrs r2, r0, 16
- adds r0, r2, 0
- adds r0, 0x10
- cmp r2, r0
- bge _080BB7C6
- ldr r1, _080BB7D8 @ =gPlttBufferFaded
- adds r3, r0, 0
-_080BB7B6:
- lsls r0, r2, 1
- adds r0, r1
- strh r6, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r3
- blt _080BB7B6
-_080BB7C6:
- adds r3, r4, 0
- lsls r0, r5, 16
- lsrs r2, r0, 16
- cmp r2, 0x1F
- bls _080BB79A
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB7D8: .4byte gPlttBufferFaded
- thumb_func_end sub_80BB790
-
- thumb_func_start sub_80BB7DC
-sub_80BB7DC: @ 80BB7DC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- movs r2, 0
- ldr r0, _080BB824 @ =gUnknown_2037F1A
- ldrb r3, [r0]
- movs r5, 0x1
-_080BB7EC:
- cmp r3, r2
- beq _080BB7FA
- adds r1, r2, 0
- adds r1, 0x10
- adds r0, r5, 0
- lsls r0, r1
- orrs r4, r0
-_080BB7FA:
- adds r2, 0x1
- cmp r2, 0x3
- bls _080BB7EC
- movs r2, 0x5
- ldr r0, _080BB828 @ =gUnknown_2037F02
- adds r1, r0, 0
- adds r1, 0x8
-_080BB808:
- ldrh r0, [r1]
- strh r0, [r1, 0x2]
- subs r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bne _080BB808
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80BAA4C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB824: .4byte gUnknown_2037F1A
-_080BB828: .4byte gUnknown_2037F02
- thumb_func_end sub_80BB7DC
-
- thumb_func_start sub_80BB82C
-sub_80BB82C: @ 80BB82C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- bl sub_8075458
- ldr r0, _080BB894 @ =sub_80BB8A4
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080BB898 @ =gUnknown_2037F02
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080BB868
- ldr r0, _080BB89C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080BB868
- ldrh r0, [r4]
- negs r0, r0
- strh r0, [r4]
- ldrh r0, [r4, 0x2]
- negs r0, r0
- strh r0, [r4, 0x2]
-_080BB868:
- ldr r0, _080BB8A0 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r2, _080BB898 @ =gUnknown_2037F02
- ldrh r0, [r2]
- strh r0, [r1, 0xA]
- ldrh r0, [r2, 0x2]
- strh r0, [r1, 0xC]
- ldrh r0, [r2, 0x6]
- strh r0, [r1, 0xE]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB894: .4byte sub_80BB8A4
-_080BB898: .4byte gUnknown_2037F02
-_080BB89C: .4byte gUnknown_2037F1A
-_080BB8A0: .4byte gTasks
- thumb_func_end sub_80BB82C
-
- thumb_func_start sub_80BB8A4
-sub_80BB8A4: @ 80BB8A4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080BB910 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r3, [r1, 0xA]
- ldrh r0, [r1, 0x1C]
- adds r3, r0
- movs r4, 0
- mov r12, r4
- strh r3, [r1, 0x1C]
- ldrh r2, [r1, 0xC]
- ldrh r7, [r1, 0x1E]
- adds r2, r7
- strh r2, [r1, 0x1E]
- ldr r6, _080BB914 @ =gBattle_BG3_X
- lsls r0, r3, 16
- asrs r0, 24
- ldrh r4, [r6]
- adds r0, r4
- strh r0, [r6]
- ldr r4, _080BB918 @ =gBattle_BG3_Y
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r7, [r4]
- adds r0, r7
- strh r0, [r4]
- movs r0, 0xFF
- ands r3, r0
- strh r3, [r1, 0x1C]
- ands r2, r0
- strh r2, [r1, 0x1E]
- ldr r0, _080BB91C @ =gUnknown_2037F02
- movs r3, 0xE
- ldrsh r2, [r0, r3]
- movs r7, 0xE
- ldrsh r0, [r1, r7]
- cmp r2, r0
- bne _080BB90A
- mov r0, r12
- strh r0, [r6]
- strh r0, [r4]
- movs r0, 0x1
- bl sub_8075458
- adds r0, r5, 0
- bl DestroyTask
-_080BB90A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB910: .4byte gTasks
-_080BB914: .4byte gBattle_BG3_X
-_080BB918: .4byte gBattle_BG3_Y
-_080BB91C: .4byte gUnknown_2037F02
- thumb_func_end sub_80BB8A4
-
- thumb_func_start sub_80BB920
-sub_80BB920: @ 80BB920
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080BB944 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- ldr r1, _080BB948 @ =gUnknown_2037F02
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0xE]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB944: .4byte gUnknown_2037F1A
-_080BB948: .4byte gUnknown_2037F02
- thumb_func_end sub_80BB920
-
- thumb_func_start sub_80BB94C
-sub_80BB94C: @ 80BB94C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080BB970 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- ldr r1, _080BB974 @ =gUnknown_2037F02
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0xE]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB970: .4byte gUnknown_2037F1B
-_080BB974: .4byte gUnknown_2037F02
- thumb_func_end sub_80BB94C
-
- thumb_func_start sub_80BB978
-sub_80BB978: @ 80BB978
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r5, _080BB9A4 @ =gUnknown_2037F02
- movs r4, 0
- ldr r0, _080BB9A8 @ =gUnknown_2037F1A
- ldrb r2, [r0]
- movs r0, 0x2
- ldr r1, _080BB9AC @ =gUnknown_2037F1B
- eors r0, r2
- ldrb r1, [r1]
- cmp r0, r1
- bne _080BB994
- movs r4, 0x1
-_080BB994:
- strh r4, [r5, 0xE]
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB9A4: .4byte gUnknown_2037F02
-_080BB9A8: .4byte gUnknown_2037F1A
-_080BB9AC: .4byte gUnknown_2037F1B
- thumb_func_end sub_80BB978
-
- thumb_func_start sub_80BB9B0
-sub_80BB9B0: @ 80BB9B0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r6, _080BBA10 @ =gSprites
-_080BB9BA:
- ldr r0, _080BBA14 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- cmp r4, r0
- beq _080BB9F8
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080BB9F8
- ldr r0, _080BBA18 @ =gUnknown_2023D44
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldr r1, _080BBA1C @ =gUnknown_2037F02
- adds r2, 0x3E
- movs r0, 0x1
- ldrb r3, [r1]
- ands r3, r0
- lsls r3, 2
- ldrb r0, [r2]
- movs r7, 0x5
- negs r7, r7
- adds r1, r7, 0
- ands r0, r1
- orrs r0, r3
- strb r0, [r2]
-_080BB9F8:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080BB9BA
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBA10: .4byte gSprites
-_080BBA14: .4byte gUnknown_2037F1A
-_080BBA18: .4byte gUnknown_2023D44
-_080BBA1C: .4byte gUnknown_2037F02
- thumb_func_end sub_80BB9B0
-
- thumb_func_start sub_80BBA20
-sub_80BBA20: @ 80BBA20
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- ldr r1, [sp, 0x44]
- ldr r4, [sp, 0x48]
- ldr r5, [sp, 0x4C]
- ldr r6, [sp, 0x50]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0x14]
- lsls r3, 24
- lsrs r7, r3, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp, 0x18]
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp, 0x1C]
- lsls r6, 24
- lsrs r6, 24
- mov r10, r6
- movs r0, 0
- str r0, [sp, 0x20]
- movs r0, 0x2
- adds r6, r7, 0
- eors r6, r0
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080BBA82
- mov r1, r8
- cmp r1, 0
- beq _080BBA86
- adds r0, r6, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- bne _080BBA86
-_080BBA82:
- movs r2, 0
- mov r8, r2
-_080BBA86:
- ldr r0, _080BBB20 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080BBB24 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r1, _080BBB28 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080BBB2C @ =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r1, _080BBB30 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0xA
- bl GetGpuReg
- add r4, sp, 0x10
- strh r0, [r4]
- ldrb r1, [r4]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
- mov r2, sp
- adds r2, 0x11
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2]
- ldrb r0, [r2]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080BBAFC
- ldrb r0, [r4]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4]
-_080BBAFC:
- ldrh r1, [r4]
- movs r0, 0xA
- bl SetGpuReg
- adds r0, r7, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080BBB3C
- ldr r1, _080BBB34 @ =gBattlerPartyIndexes
- lsls r0, r7, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BBB38 @ =gEnemyParty
- b _080BBB4A
- .align 2, 0
-_080BBB20: .4byte gUnknown_2022984
-_080BBB24: .4byte gUnknown_2022986
-_080BBB28: .4byte 0x00003f3f
-_080BBB2C: .4byte 0x00003f3d
-_080BBB30: .4byte 0x00003f42
-_080BBB34: .4byte gBattlerPartyIndexes
-_080BBB38: .4byte gEnemyParty
-_080BBB3C:
- ldr r1, _080BBC10 @ =gBattlerPartyIndexes
- lsls r0, r7, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BBC14 @ =gPlayerParty
-_080BBB4A:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r5, _080BBC18 @ =gUnknown_2023D44
- adds r0, r7, r5
- ldrb r1, [r0]
- adds r0, r7, 0
- adds r2, r4, 0
- bl sub_8076E34
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, r8
- cmp r0, 0
- beq _080BBB80
- adds r0, r6, r5
- ldrb r1, [r0]
- adds r0, r6, 0
- adds r2, r4, 0
- bl sub_8076E34
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x20]
-_080BBB80:
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, [sp, 0x58]
- bl sub_807543C
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080BBBA8
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
-_080BBBA8:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- mov r1, sp
- ldrh r2, [r1, 0xA]
- ldr r1, [sp, 0x54]
- bl sub_80753B4
- mov r0, sp
- ldrb r1, [r0, 0x8]
- lsls r1, 4
- ldr r0, [sp, 0x5C]
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r0, _080BBC1C @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080BBC20 @ =gBattle_BG1_Y
- strh r1, [r0]
- ldr r1, _080BBC24 @ =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- mov r1, sp
- ldrh r1, [r1, 0x14]
- strh r1, [r0, 0xA]
- mov r2, sp
- ldrh r2, [r2, 0x18]
- strh r2, [r0, 0x10]
- mov r1, r10
- strh r1, [r0, 0x12]
- mov r2, sp
- ldrh r2, [r2, 0x1C]
- strh r2, [r0, 0x14]
- strh r7, [r0, 0x8]
- mov r1, r8
- strh r1, [r0, 0xC]
- mov r2, sp
- ldrh r2, [r2, 0x20]
- strh r2, [r0, 0xE]
- ldr r1, _080BBC28 @ =sub_80BBC2C
- str r1, [r0]
- 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
-_080BBC10: .4byte gBattlerPartyIndexes
-_080BBC14: .4byte gPlayerParty
-_080BBC18: .4byte gUnknown_2023D44
-_080BBC1C: .4byte gBattle_BG1_X
-_080BBC20: .4byte gBattle_BG1_Y
-_080BBC24: .4byte gTasks
-_080BBC28: .4byte sub_80BBC2C
- thumb_func_end sub_80BBA20
-
- thumb_func_start sub_80BBC2C
-sub_80BBC2C: @ 80BBC2C
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080BBC68 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r3, r0, r1
- movs r0, 0xA
- ldrsh r2, [r3, r0]
- adds r5, r1, 0
- cmp r2, 0
- bge _080BBC4A
- negs r2, r2
-_080BBC4A:
- ldrh r0, [r3, 0x22]
- adds r4, r0, r2
- strh r4, [r3, 0x22]
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bge _080BBC70
- ldr r2, _080BBC6C @ =gBattle_BG1_Y
- lsls r1, r4, 16
- asrs r1, 24
- ldrh r0, [r2]
- subs r0, r1
- strh r0, [r2]
- b _080BBC7C
- .align 2, 0
-_080BBC68: .4byte gTasks
-_080BBC6C: .4byte gBattle_BG1_Y
-_080BBC70:
- ldr r1, _080BBCA0 @ =gBattle_BG1_Y
- lsls r0, r4, 16
- asrs r0, 24
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
-_080BBC7C:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r5
- ldrh r1, [r5, 0x22]
- movs r0, 0xFF
- ands r0, r1
- movs r2, 0
- strh r0, [r5, 0x22]
- movs r3, 0x26
- ldrsh r0, [r5, r3]
- cmp r0, 0x1
- beq _080BBCE6
- cmp r0, 0x1
- bgt _080BBCA4
- cmp r0, 0
- beq _080BBCAA
- b _080BBDD8
- .align 2, 0
-_080BBCA0: .4byte gBattle_BG1_Y
-_080BBCA4:
- cmp r0, 0x2
- beq _080BBD00
- b _080BBDD8
-_080BBCAA:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x14
- ldrsh r1, [r5, r3]
- cmp r0, r1
- bge _080BBCBE
- b _080BBDD8
-_080BBCBE:
- strh r2, [r5, 0x1E]
- ldrh r1, [r5, 0x20]
- adds r1, 0x1
- strh r1, [r5, 0x20]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x20
- ldrsh r1, [r5, r0]
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bne _080BBDD8
- b _080BBCF8
-_080BBCE6:
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x12
- ldrsh r1, [r5, r3]
- cmp r0, r1
- bne _080BBDD8
-_080BBCF8:
- ldrh r0, [r5, 0x26]
- adds r0, 0x1
- strh r0, [r5, 0x26]
- b _080BBDD8
-_080BBD00:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x14
- ldrsh r1, [r5, r3]
- cmp r0, r1
- blt _080BBDD8
- strh r2, [r5, 0x1E]
- ldrh r1, [r5, 0x20]
- subs r1, 0x1
- strh r1, [r5, 0x20]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x20
- ldrsh r4, [r5, r0]
- cmp r4, 0
- bne _080BBDD8
- movs r0, 0
- bl sub_8073128
- ldr r0, _080BBDE0 @ =gUnknown_2022984
- strh r4, [r0]
- ldr r0, _080BBDE4 @ =gUnknown_2022986
- strh r4, [r0]
- ldr r4, _080BBDE8 @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080BBD7E
- movs r0, 0xA
- bl GetGpuReg
- mov r1, sp
- strh r0, [r1]
- mov r2, sp
- ldrb r1, [r2]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- mov r0, sp
- ldrh r1, [r0]
- movs r0, 0xA
- bl SetGpuReg
-_080BBD7E:
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- eors r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r3, 0x8
- ldrsh r1, [r5, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080BBDEC @ =gSprites
- adds r0, r4
- bl DestroySprite
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080BBDD2
- movs r2, 0xE
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
-_080BBDD2:
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080BBDD8:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBDE0: .4byte gUnknown_2022984
-_080BBDE4: .4byte gUnknown_2022986
-_080BBDE8: .4byte 0x00003f3f
-_080BBDEC: .4byte gSprites
- thumb_func_end sub_80BBC2C
-
- thumb_func_start sub_80BBDF0
-sub_80BBDF0: @ 80BBDF0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BBE08 @ =gUnknown_2037F02
- ldr r1, _080BBE0C @ =gUnknown_2022B50
- ldrb r1, [r1]
- strh r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080BBE08: .4byte gUnknown_2037F02
-_080BBE0C: .4byte gUnknown_2022B50
- thumb_func_end sub_80BBDF0
-
- thumb_func_start sub_80BBE10
-sub_80BBE10: @ 80BBE10
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- ldr r1, _080BBE38 @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- movs r2, 0xBE
- lsls r2, 1
- adds r1, r2
- str r0, [r1]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBE38: .4byte gMonSpritesGfxPtr
- thumb_func_end sub_80BBE10
-
- thumb_func_start sub_80BBE3C
-sub_80BBE3C: @ 80BBE3C
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r6, _080BBE68 @ =gMonSpritesGfxPtr
- ldr r0, [r6]
- movs r5, 0xBE
- lsls r5, 1
- adds r0, r5
- ldr r0, [r0]
- bl Free
- ldr r0, [r6]
- adds r0, r5
- movs r1, 0
- str r1, [r0]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBE68: .4byte gMonSpritesGfxPtr
- thumb_func_end sub_80BBE3C
-
- thumb_func_start sub_80BBE6C
-sub_80BBE6C: @ 80BBE6C
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _080BBEAC @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080BBEB0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8075BE8
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080BBEC8
- movs r2, 0x1
-_080BBE9E:
- lsrs r1, 1
- adds r4, 0x1
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _080BBE9E
- b _080BBEC8
- .align 2, 0
-_080BBEAC: .4byte gUnknown_2037F02
-_080BBEB0:
- cmp r0, 0x1
- bne _080BBEBC
- ldr r0, _080BBEB8 @ =gUnknown_2037F1A
- b _080BBEC2
- .align 2, 0
-_080BBEB8: .4byte gUnknown_2037F1A
-_080BBEBC:
- cmp r0, 0x2
- bne _080BBEC8
- ldr r0, _080BBEF8 @ =gUnknown_2037F1B
-_080BBEC2:
- ldrb r0, [r0]
- adds r4, r0, 0
- adds r4, 0x10
-_080BBEC8:
- ldr r0, _080BBEFC @ =gMonSpritesGfxPtr
- ldr r1, [r0]
- ldr r0, _080BBF00 @ =gUnknown_2037F02
- movs r2, 0x2
- ldrsh r0, [r0, r2]
- movs r2, 0xBE
- lsls r2, 1
- adds r1, r2
- ldr r1, [r1]
- lsls r0, 5
- adds r0, r1
- lsls r1, r4, 5
- ldr r2, _080BBF04 @ =gPlttBufferUnfaded
- adds r1, r2
- movs r2, 0x20
- bl memcpy
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBEF8: .4byte gUnknown_2037F1B
-_080BBEFC: .4byte gMonSpritesGfxPtr
-_080BBF00: .4byte gUnknown_2037F02
-_080BBF04: .4byte gPlttBufferUnfaded
- thumb_func_end sub_80BBE6C
-
- thumb_func_start sub_80BBF08
-sub_80BBF08: @ 80BBF08
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _080BBF48 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080BBF4C
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8075BE8
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080BBF64
- movs r2, 0x1
-_080BBF3A:
- lsrs r1, 1
- adds r4, 0x1
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _080BBF3A
- b _080BBF64
- .align 2, 0
-_080BBF48: .4byte gUnknown_2037F02
-_080BBF4C:
- cmp r0, 0x1
- bne _080BBF58
- ldr r0, _080BBF54 @ =gUnknown_2037F1A
- b _080BBF5E
- .align 2, 0
-_080BBF54: .4byte gUnknown_2037F1A
-_080BBF58:
- cmp r0, 0x2
- bne _080BBF64
- ldr r0, _080BBF94 @ =gUnknown_2037F1B
-_080BBF5E:
- ldrb r0, [r0]
- adds r4, r0, 0
- adds r4, 0x10
-_080BBF64:
- lsls r0, r4, 5
- ldr r1, _080BBF98 @ =gPlttBufferUnfaded
- adds r0, r1
- ldr r1, _080BBF9C @ =gMonSpritesGfxPtr
- ldr r2, [r1]
- ldr r1, _080BBFA0 @ =gUnknown_2037F02
- movs r3, 0x2
- ldrsh r1, [r1, r3]
- movs r3, 0xBE
- lsls r3, 1
- adds r2, r3
- ldr r2, [r2]
- lsls r1, 5
- adds r1, r2
- movs r2, 0x20
- bl memcpy
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBF94: .4byte gUnknown_2037F1B
-_080BBF98: .4byte gPlttBufferUnfaded
-_080BBF9C: .4byte gMonSpritesGfxPtr
-_080BBFA0: .4byte gUnknown_2037F02
- thumb_func_end sub_80BBF08
-
- thumb_func_start sub_80BBFA4
-sub_80BBFA4: @ 80BBFA4
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _080BBFE4 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080BBFE8
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8075BE8
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080BC000
- movs r2, 0x1
-_080BBFD6:
- lsrs r1, 1
- adds r4, 0x1
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _080BBFD6
- b _080BC000
- .align 2, 0
-_080BBFE4: .4byte gUnknown_2037F02
-_080BBFE8:
- cmp r0, 0x1
- bne _080BBFF4
- ldr r0, _080BBFF0 @ =gUnknown_2037F1A
- b _080BBFFA
- .align 2, 0
-_080BBFF0: .4byte gUnknown_2037F1A
-_080BBFF4:
- cmp r0, 0x2
- bne _080BC000
- ldr r0, _080BC020 @ =gUnknown_2037F1B
-_080BBFFA:
- ldrb r0, [r0]
- adds r4, r0, 0
- adds r4, 0x10
-_080BC000:
- lsls r1, r4, 5
- ldr r0, _080BC024 @ =gPlttBufferUnfaded
- adds r0, r1, r0
- ldr r2, _080BC028 @ =gPlttBufferFaded
- adds r1, r2
- movs r2, 0x20
- bl memcpy
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC020: .4byte gUnknown_2037F1B
-_080BC024: .4byte gPlttBufferUnfaded
-_080BC028: .4byte gPlttBufferFaded
- thumb_func_end sub_80BBFA4
-
- thumb_func_start sub_80BC02C
-sub_80BC02C: @ 80BC02C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8073788
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080BC04C
- ldr r1, _080BC048 @ =gUnknown_2037F02
- movs r0, 0x1
- strh r0, [r1, 0xE]
- b _080BC050
- .align 2, 0
-_080BC048: .4byte gUnknown_2037F02
-_080BC04C:
- ldr r0, _080BC05C @ =gUnknown_2037F02
- strh r1, [r0, 0xE]
-_080BC050:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC05C: .4byte gUnknown_2037F02
- thumb_func_end sub_80BC02C
-
- thumb_func_start sub_80BC060
-sub_80BC060: @ 80BC060
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BC080 @ =gUnknown_2037F1A
- ldr r1, _080BC084 @ =gBattlerTarget
- ldrb r1, [r1]
- strb r1, [r2]
- ldr r2, _080BC088 @ =gUnknown_2037F1B
- ldr r1, _080BC08C @ =gUnknown_2023D6E
- ldrb r1, [r1]
- strb r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080BC080: .4byte gUnknown_2037F1A
-_080BC084: .4byte gBattlerTarget
-_080BC088: .4byte gUnknown_2037F1B
-_080BC08C: .4byte gUnknown_2023D6E
- thumb_func_end sub_80BC060
-
- thumb_func_start sub_80BC090
-sub_80BC090: @ 80BC090
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080BC0B8 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- adds r4, r0, 0
- ldr r0, _080BC0BC @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080BC0C4
- ldr r1, _080BC0C0 @ =gUnknown_2037F02
- movs r0, 0x1
- b _080BC0C8
- .align 2, 0
-_080BC0B8: .4byte gUnknown_2037F1A
-_080BC0BC: .4byte gUnknown_2037F1B
-_080BC0C0: .4byte gUnknown_2037F02
-_080BC0C4:
- ldr r1, _080BC0D8 @ =gUnknown_2037F02
- movs r0, 0
-_080BC0C8:
- strh r0, [r1, 0xE]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC0D8: .4byte gUnknown_2037F02
- thumb_func_end sub_80BC090
-
- thumb_func_start sub_80BC0DC
-sub_80BC0DC: @ 80BC0DC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BC0F4 @ =gUnknown_2037F1B
- ldr r1, _080BC0F8 @ =gBattlerTarget
- ldrb r1, [r1]
- strb r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080BC0F4: .4byte gUnknown_2037F1B
-_080BC0F8: .4byte gBattlerTarget
- thumb_func_end sub_80BC0DC
-
- thumb_func_start sub_80BC0FC
-sub_80BC0FC: @ 80BC0FC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BC11C @ =gUnknown_2037F1A
- ldr r1, _080BC120 @ =sBattler_AI
- ldrb r1, [r1]
- strb r1, [r2]
- ldr r2, _080BC124 @ =gUnknown_2037F1B
- ldr r1, _080BC128 @ =gUnknown_2023D6E
- ldrb r1, [r1]
- strb r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080BC11C: .4byte gUnknown_2037F1A
-_080BC120: .4byte sBattler_AI
-_080BC124: .4byte gUnknown_2037F1B
-_080BC128: .4byte gUnknown_2023D6E
- thumb_func_end sub_80BC0FC
-
- thumb_func_start sub_80BC12C
-sub_80BC12C: @ 80BC12C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080BC144
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080BC180
-_080BC144:
- ldr r0, _080BC188 @ =gTasks
- lsls r3, r4, 2
- adds r3, r4
- lsls r3, 3
- adds r3, r0
- ldr r0, _080BC18C @ =gUnknown_2024018
- ldr r4, [r0]
- ldr r2, _080BC190 @ =gUnknown_2037F1A
- ldrb r0, [r2]
- ldr r1, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- strh r0, [r3, 0x8]
- ldrb r1, [r2]
- ldr r0, [r4]
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r1]
- ldr r0, _080BC194 @ =sub_80BC19C
- str r0, [r3]
- ldr r1, _080BC198 @ =gUnknown_2037EE2
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_080BC180:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC188: .4byte gTasks
-_080BC18C: .4byte gUnknown_2024018
-_080BC190: .4byte gUnknown_2037F1A
-_080BC194: .4byte sub_80BC19C
-_080BC198: .4byte gUnknown_2037EE2
- thumb_func_end sub_80BC12C
-
- thumb_func_start sub_80BC19C
-sub_80BC19C: @ 80BC19C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080BC1E8 @ =gUnknown_2037F02
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- bne _080BC1E0
- ldr r0, _080BC1EC @ =gUnknown_2024018
- ldr r1, [r0]
- ldr r0, _080BC1F0 @ =gUnknown_2037F1A
- ldrb r3, [r0]
- ldr r0, [r1]
- lsls r3, 2
- adds r3, r0
- ldr r1, _080BC1F4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x8]
- movs r1, 0x1
- ands r1, r0
- ldrb r2, [r3]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- adds r0, r4, 0
- bl DestroyTask
-_080BC1E0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC1E8: .4byte gUnknown_2037F02
-_080BC1EC: .4byte gUnknown_2024018
-_080BC1F0: .4byte gUnknown_2037F1A
-_080BC1F4: .4byte gTasks
- thumb_func_end sub_80BC19C
-
- thumb_func_start SetAnimBgAttribute
-SetAnimBgAttribute: @ 80BC1F8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- cmp r6, 0x3
- bls _080BC20C
- b _080BC2FE
-_080BC20C:
- ldr r0, _080BC228 @ =gUnknown_83E7CCA
- adds r0, r6, r0
- ldrb r0, [r0]
- bl GetGpuReg
- ldr r1, _080BC22C @ =gUnknown_20399B8
- strh r0, [r1]
- cmp r5, 0x6
- bhi _080BC2F0
- lsls r0, r5, 2
- ldr r1, _080BC230 @ =_080BC234
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BC228: .4byte gUnknown_83E7CCA
-_080BC22C: .4byte gUnknown_20399B8
-_080BC230: .4byte _080BC234
- .align 2, 0
-_080BC234:
- .4byte _080BC250
- .4byte _080BC264
- .4byte _080BC27C
- .4byte _080BC294
- .4byte _080BC2AC
- .4byte _080BC2C8
- .4byte _080BC2DC
-_080BC250:
- ldr r2, _080BC260 @ =gUnknown_20399B8
- lsls r3, r4, 6
- ldrb r1, [r2, 0x1]
- movs r0, 0x3F
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0x1]
- b _080BC2F0
- .align 2, 0
-_080BC260: .4byte gUnknown_20399B8
-_080BC264:
- ldr r3, _080BC278 @ =gUnknown_20399B8
- movs r0, 0x1
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 5
- ldrb r2, [r3, 0x1]
- movs r0, 0x21
- negs r0, r0
- b _080BC2EA
- .align 2, 0
-_080BC278: .4byte gUnknown_20399B8
-_080BC27C:
- ldr r3, _080BC290 @ =gUnknown_20399B8
- movs r0, 0x1
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 6
- ldrb r2, [r3]
- movs r0, 0x41
- negs r0, r0
- b _080BC2BA
- .align 2, 0
-_080BC290: .4byte gUnknown_20399B8
-_080BC294:
- ldr r3, _080BC2A8 @ =gUnknown_20399B8
- movs r0, 0x3
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0xD
- negs r0, r0
- b _080BC2BA
- .align 2, 0
-_080BC2A8: .4byte gUnknown_20399B8
-_080BC2AC:
- ldr r3, _080BC2C4 @ =gUnknown_20399B8
- movs r0, 0x3
- adds r1, r4, 0
- ands r1, r0
- ldrb r2, [r3]
- movs r0, 0x4
- negs r0, r0
-_080BC2BA:
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _080BC2F0
- .align 2, 0
-_080BC2C4: .4byte gUnknown_20399B8
-_080BC2C8:
- ldr r2, _080BC2D8 @ =gUnknown_20399B8
- lsls r3, r4, 7
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- orrs r0, r3
- strb r0, [r2]
- b _080BC2F0
- .align 2, 0
-_080BC2D8: .4byte gUnknown_20399B8
-_080BC2DC:
- ldr r3, _080BC304 @ =gUnknown_20399B8
- movs r0, 0x1F
- adds r1, r4, 0
- ands r1, r0
- ldrb r2, [r3, 0x1]
- movs r0, 0x20
- negs r0, r0
-_080BC2EA:
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x1]
-_080BC2F0:
- ldr r0, _080BC308 @ =gUnknown_83E7CCA
- adds r0, r6, r0
- ldrb r0, [r0]
- ldr r1, _080BC304 @ =gUnknown_20399B8
- ldrh r1, [r1]
- bl SetGpuReg
-_080BC2FE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC304: .4byte gUnknown_20399B8
-_080BC308: .4byte gUnknown_83E7CCA
- thumb_func_end SetAnimBgAttribute
-
- thumb_func_start sub_80BC30C
-sub_80BC30C: @ 80BC30C
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r2, 0x3
- bhi _080BC394
- ldr r0, _080BC338 @ =gUnknown_83E7CCE
- adds r0, r2, r0
- ldrb r0, [r0]
- bl GetGpuReg
- mov r1, sp
- strh r0, [r1]
- cmp r4, 0x6
- bhi _080BC394
- lsls r0, r4, 2
- ldr r1, _080BC33C @ =_080BC340
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BC338: .4byte gUnknown_83E7CCE
-_080BC33C: .4byte _080BC340
- .align 2, 0
-_080BC340:
- .4byte _080BC35C
- .4byte _080BC364
- .4byte _080BC36C
- .4byte _080BC374
- .4byte _080BC37C
- .4byte _080BC384
- .4byte _080BC38C
-_080BC35C:
- ldr r0, [sp]
- lsls r0, 16
- lsrs r0, 30
- b _080BC396
-_080BC364:
- ldr r0, [sp]
- lsls r0, 18
- lsrs r0, 31
- b _080BC396
-_080BC36C:
- ldr r0, [sp]
- lsls r0, 25
- lsrs r0, 31
- b _080BC396
-_080BC374:
- ldr r0, [sp]
- lsls r0, 28
- lsrs r0, 30
- b _080BC396
-_080BC37C:
- ldr r0, [sp]
- lsls r0, 30
- lsrs r0, 30
- b _080BC396
-_080BC384:
- ldr r0, [sp]
- lsls r0, 24
- lsrs r0, 31
- b _080BC396
-_080BC38C:
- ldr r0, [sp]
- lsls r0, 19
- lsrs r0, 27
- b _080BC396
-_080BC394:
- movs r0, 0
-_080BC396:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BC30C
-
- thumb_func_start sub_80BC3A0
-sub_80BC3A0: @ 80BC3A0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080BC3B8 @ =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BC3C0
- ldr r0, _080BC3BC @ =sub_80BCC4C
- b _080BC3E8
- .align 2, 0
-_080BC3B8: .4byte gBattleTypeFlags
-_080BC3BC: .4byte sub_80BCC4C
-_080BC3C0:
- movs r0, 0x80
- lsls r0, 5
- ands r1, r0
- cmp r1, 0
- beq _080BC3E0
- ldr r0, _080BC3D8 @ =gGameVersion
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _080BC3E0
- movs r4, 0x3
- ldr r0, _080BC3DC @ =task00_battle_intro_80BC6C8
- b _080BC3E8
- .align 2, 0
-_080BC3D8: .4byte gGameVersion
-_080BC3DC: .4byte task00_battle_intro_80BC6C8
-_080BC3E0:
- ldr r1, _080BC414 @ =gUnknown_83E7CD4
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
-_080BC3E8:
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080BC418 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x8]
- strh r4, [r1, 0xA]
- strh r0, [r1, 0xC]
- strh r0, [r1, 0xE]
- strh r0, [r1, 0x10]
- strh r0, [r1, 0x12]
- strh r0, [r1, 0x14]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC414: .4byte gUnknown_83E7CD4
-_080BC418: .4byte gTasks
- thumb_func_end sub_80BC3A0
-
- thumb_func_start sub_80BC41C
-sub_80BC41C: @ 80BC41C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r0, _080BC468 @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080BC46C @ =gBattle_BG1_Y
- strh r1, [r0]
- ldr r0, _080BC470 @ =gBattle_BG2_X
- strh r1, [r0]
- ldr r0, _080BC474 @ =gBattle_BG2_Y
- strh r1, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r4, _080BC478 @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC468: .4byte gBattle_BG1_X
-_080BC46C: .4byte gBattle_BG1_Y
-_080BC470: .4byte gBattle_BG2_X
-_080BC474: .4byte gBattle_BG2_Y
-_080BC478: .4byte 0x00003f3f
- thumb_func_end sub_80BC41C
-
- thumb_func_start task_battle_intro_80BC47C
-task_battle_intro_80BC47C: @ 80BC47C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080BC4B4 @ =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x6
- strh r0, [r1]
- ldr r1, _080BC4B8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- mov r8, r1
- cmp r0, 0x4
- bls _080BC4A8
- b _080BC6BA
-_080BC4A8:
- lsls r0, 2
- ldr r1, _080BC4BC @ =_080BC4C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BC4B4: .4byte gBattle_BG1_X
-_080BC4B8: .4byte gTasks
-_080BC4BC: .4byte _080BC4C0
- .align 2, 0
-_080BC4C0:
- .4byte _080BC4D4
- .4byte _080BC504
- .4byte _080BC52C
- .4byte _080BC574
- .4byte _080BC6B4
-_080BC4D4:
- ldr r0, _080BC4EC @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BC4F0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r8
- movs r1, 0x10
- b _080BC4FA
- .align 2, 0
-_080BC4EC: .4byte gBattleTypeFlags
-_080BC4F0:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r8
- movs r1, 0x1
-_080BC4FA:
- strh r1, [r0, 0xC]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _080BC6BA
-_080BC504:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- mov r3, r8
- adds r1, r0, r3
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _080BC51C
- b _080BC6BA
-_080BC51C:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- b _080BC6BA
-_080BC52C:
- ldr r1, _080BC568 @ =gUnknown_2022986
- ldrh r0, [r1]
- subs r0, 0xFF
- strh r0, [r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- cmp r0, r1
- beq _080BC544
- b _080BC6BA
-_080BC544:
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- add r1, r8
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- movs r0, 0x20
- strh r0, [r1, 0xE]
- ldr r2, _080BC56C @ =gUnknown_2023F4C
- ldrh r1, [r2]
- ldr r0, _080BC570 @ =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _080BC6BA
- .align 2, 0
-_080BC568: .4byte gUnknown_2022986
-_080BC56C: .4byte gUnknown_2023F4C
-_080BC570: .4byte 0x0000fffe
-_080BC574:
- lsls r0, r4, 2
- adds r1, r0, r4
- lsls r1, 3
- mov r5, r8
- adds r2, r1, r5
- ldrh r3, [r2, 0xE]
- movs r5, 0xE
- ldrsh r1, [r2, r5]
- mov r12, r0
- cmp r1, 0
- beq _080BC590
- subs r0, r3, 0x1
- strh r0, [r2, 0xE]
- b _080BC5BE
-_080BC590:
- movs r1, 0xA
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bne _080BC5B0
- ldr r2, _080BC5A8 @ =gBattle_BG1_Y
- ldrh r1, [r2]
- ldr r0, _080BC5AC @ =0x0000ffb0
- cmp r1, r0
- beq _080BC5BE
- subs r0, r1, 0x2
- b _080BC5BC
- .align 2, 0
-_080BC5A8: .4byte gBattle_BG1_Y
-_080BC5AC: .4byte 0x0000ffb0
-_080BC5B0:
- ldr r2, _080BC690 @ =gBattle_BG1_Y
- ldrh r1, [r2]
- ldr r0, _080BC694 @ =0x0000ffc8
- cmp r1, r0
- beq _080BC5BE
- subs r0, r1, 0x1
-_080BC5BC:
- strh r0, [r2]
-_080BC5BE:
- ldr r2, _080BC698 @ =gUnknown_2022986
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _080BC5D2
- ldr r3, _080BC69C @ =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_080BC5D2:
- mov r5, r12
- adds r0, r5, r4
- lsls r0, 3
- mov r2, r8
- adds r1, r0, r2
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _080BC5EA
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_080BC5EA:
- movs r3, 0
- ldr r5, _080BC6A0 @ =gScanlineEffect
- mov r9, r5
- ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
- mov r6, r9
- adds r5, r1, 0
-_080BC5F6:
- lsls r2, r3, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- ldrh r0, [r5, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x4F
- ble _080BC5F6
- cmp r3, 0x9F
- bgt _080BC63A
- ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
- ldr r6, _080BC6A0 @ =gScanlineEffect
- ldr r1, _080BC6A8 @ =gTasks
- mov r2, r12
- adds r0, r2, r4
- lsls r0, 3
- adds r5, r0, r1
-_080BC620:
- lsls r2, r3, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- ldrh r0, [r5, 0xC]
- negs r0, r0
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x9F
- ble _080BC620
-_080BC63A:
- mov r3, r12
- adds r0, r3, r4
- lsls r0, 3
- mov r5, r8
- adds r1, r0, r5
- movs r0, 0xC
- ldrsh r2, [r1, r0]
- cmp r2, 0
- bne _080BC6BA
- movs r0, 0x3
- mov r3, r9
- strb r0, [r3, 0x15]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- str r2, [sp]
- ldr r1, _080BC6AC @ =0x0600e000
- ldr r2, _080BC6B0 @ =0x05000200
- mov r0, sp
- bl CpuSet
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- b _080BC6BA
- .align 2, 0
-_080BC690: .4byte gBattle_BG1_Y
-_080BC694: .4byte 0x0000ffc8
-_080BC698: .4byte gUnknown_2022986
-_080BC69C: .4byte 0xfffffc04
-_080BC6A0: .4byte gScanlineEffect
-_080BC6A4: .4byte gScanlineEffectRegBuffers
-_080BC6A8: .4byte gTasks
-_080BC6AC: .4byte 0x0600e000
-_080BC6B0: .4byte 0x05000200
-_080BC6B4:
- adds r0, r4, 0
- bl sub_80BC41C
-_080BC6BA:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end task_battle_intro_80BC47C
-
- thumb_func_start task00_battle_intro_80BC6C8
-task00_battle_intro_80BC6C8: @ 80BC6C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080BC6F4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0xA
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0x3
- beq _080BC708
- cmp r0, 0x3
- bgt _080BC6F8
- cmp r0, 0x2
- beq _080BC6FC
- b _080BC710
- .align 2, 0
-_080BC6F4: .4byte gTasks
-_080BC6F8:
- cmp r0, 0x4
- bne _080BC710
-_080BC6FC:
- ldr r1, _080BC704 @ =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x8
- b _080BC70E
- .align 2, 0
-_080BC704: .4byte gBattle_BG1_X
-_080BC708:
- ldr r1, _080BC74C @ =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x6
-_080BC70E:
- strh r0, [r1]
-_080BC710:
- lsls r0, r5, 2
- adds r1, r0, r5
- lsls r1, 3
- adds r4, r1, r2
- movs r3, 0xA
- ldrsh r1, [r4, r3]
- adds r6, r0, 0
- cmp r1, 0x4
- bne _080BC774
- ldr r7, _080BC750 @ =gBattle_BG1_Y
- ldrh r0, [r4, 0x14]
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _080BC736
- ldr r1, _080BC754 @ =0x000001ff
- adds r0, r1
-_080BC736:
- asrs r0, 9
- subs r0, 0x8
- strh r0, [r7]
- ldrh r1, [r4, 0x14]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0xB3
- bgt _080BC758
- adds r0, r1, 0x4
- b _080BC75A
- .align 2, 0
-_080BC74C: .4byte gBattle_BG1_X
-_080BC750: .4byte gBattle_BG1_Y
-_080BC754: .4byte 0x000001ff
-_080BC758:
- adds r0, r1, 0x6
-_080BC75A:
- strh r0, [r4, 0x14]
- ldr r2, _080BC790 @ =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r3, r0, r2
- movs r0, 0x14
- ldrsh r1, [r3, r0]
- movs r0, 0xB4
- lsls r0, 1
- cmp r1, r0
- bne _080BC774
- movs r0, 0
- strh r0, [r3, 0x14]
-_080BC774:
- adds r0, r6, r5
- lsls r0, 3
- adds r0, r2
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x4
- bls _080BC784
- b _080BC9AA
-_080BC784:
- lsls r0, 2
- ldr r1, _080BC794 @ =_080BC798
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BC790: .4byte gTasks
-_080BC794: .4byte _080BC798
- .align 2, 0
-_080BC798:
- .4byte _080BC7AC
- .4byte _080BC7DC
- .4byte _080BC808
- .4byte _080BC858
- .4byte _080BC9A4
-_080BC7AC:
- ldr r1, _080BC7C8 @ =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r2, r0, r1
- movs r3, 0x10
- strh r3, [r2, 0x10]
- ldr r0, _080BC7CC @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BC7D0
- strh r3, [r2, 0xC]
- b _080BC7D4
- .align 2, 0
-_080BC7C8: .4byte gTasks
-_080BC7CC: .4byte gBattleTypeFlags
-_080BC7D0:
- movs r0, 0x1
- strh r0, [r2, 0xC]
-_080BC7D4:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _080BC9AA
-_080BC7DC:
- ldr r0, _080BC804 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _080BC7F2
- b _080BC9AA
-_080BC7F2:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- b _080BC9AA
- .align 2, 0
-_080BC804: .4byte gTasks
-_080BC808:
- ldr r1, _080BC848 @ =gUnknown_2022986
- ldrh r0, [r1]
- subs r0, 0xFF
- strh r0, [r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- cmp r0, r1
- beq _080BC820
- b _080BC9AA
-_080BC820:
- ldr r0, _080BC84C @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- movs r0, 0x20
- strh r0, [r1, 0xE]
- movs r0, 0x1
- strh r0, [r1, 0x12]
- ldr r2, _080BC850 @ =gUnknown_2023F4C
- ldrh r1, [r2]
- ldr r0, _080BC854 @ =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _080BC9AA
- .align 2, 0
-_080BC848: .4byte gUnknown_2022986
-_080BC84C: .4byte gTasks
-_080BC850: .4byte gUnknown_2023F4C
-_080BC854: .4byte 0x0000fffe
-_080BC858:
- ldr r0, _080BC890 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xE]
- movs r3, 0xE
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _080BC898
- subs r0, r2, 0x1
- strh r0, [r1, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _080BC8B8
- ldr r1, _080BC894 @ =0x00001842
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0xF
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- b _080BC8B8
- .align 2, 0
-_080BC890: .4byte gTasks
-_080BC894: .4byte 0x00001842
-_080BC898:
- ldrh r2, [r1, 0x10]
- movs r0, 0x1F
- ands r0, r2
- cmp r0, 0
- beq _080BC8B8
- ldrh r0, [r1, 0x12]
- subs r0, 0x1
- strh r0, [r1, 0x12]
- lsls r0, 16
- cmp r0, 0
- bne _080BC8B8
- adds r0, r2, 0
- adds r0, 0xFF
- strh r0, [r1, 0x10]
- movs r0, 0x4
- strh r0, [r1, 0x12]
-_080BC8B8:
- ldr r2, _080BC988 @ =gUnknown_2022986
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _080BC8CC
- ldr r3, _080BC98C @ =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_080BC8CC:
- ldr r0, _080BC990 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _080BC8E2
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_080BC8E2:
- movs r3, 0
- ldr r0, _080BC994 @ =gScanlineEffect
- mov r8, r0
- ldr r2, _080BC998 @ =gScanlineEffectRegBuffers
- mov r12, r2
- mov r7, r8
- adds r4, r1, 0
-_080BC8F0:
- lsls r2, r3, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r12
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x4F
- ble _080BC8F0
- cmp r3, 0x9F
- bgt _080BC934
- ldr r0, _080BC998 @ =gScanlineEffectRegBuffers
- mov r12, r0
- ldr r7, _080BC994 @ =gScanlineEffect
- ldr r1, _080BC990 @ =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r4, r0, r1
-_080BC91A:
- lsls r2, r3, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r12
- ldrh r0, [r4, 0xC]
- negs r0, r0
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x9F
- ble _080BC91A
-_080BC934:
- ldr r1, _080BC990 @ =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r3, 0xC
- ldrsh r2, [r1, r3]
- cmp r2, 0
- bne _080BC9AA
- movs r0, 0x3
- mov r3, r8
- strb r0, [r3, 0x15]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- str r2, [sp]
- ldr r1, _080BC99C @ =0x0600e000
- ldr r2, _080BC9A0 @ =0x05000200
- mov r0, sp
- bl CpuSet
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- b _080BC9AA
- .align 2, 0
-_080BC988: .4byte gUnknown_2022986
-_080BC98C: .4byte 0xfffffc04
-_080BC990: .4byte gTasks
-_080BC994: .4byte gScanlineEffect
-_080BC998: .4byte gScanlineEffectRegBuffers
-_080BC99C: .4byte 0x0600e000
-_080BC9A0: .4byte 0x05000200
-_080BC9A4:
- adds r0, r5, 0
- bl sub_80BC41C
-_080BC9AA:
- ldr r0, _080BC9D0 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x4
- beq _080BC9C2
- ldrh r1, [r1, 0x10]
- movs r0, 0x52
- bl SetGpuReg
-_080BC9C2:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC9D0: .4byte gTasks
- thumb_func_end task00_battle_intro_80BC6C8
-
- thumb_func_start task_battle_intro_anim
-task_battle_intro_anim: @ 80BC9D4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080BCA08 @ =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x8
- strh r0, [r1]
- ldr r1, _080BCA0C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0x4
- bls _080BC9FE
- b _080BCC22
-_080BC9FE:
- lsls r0, 2
- ldr r1, _080BCA10 @ =_080BCA14
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BCA08: .4byte gBattle_BG1_X
-_080BCA0C: .4byte gTasks
-_080BCA10: .4byte _080BCA14
- .align 2, 0
-_080BCA14:
- .4byte _080BCA28
- .4byte _080BCA7C
- .4byte _080BCAA8
- .4byte _080BCAF8
- .4byte _080BCC1C
-_080BCA28:
- ldr r1, _080BCA60 @ =0x00001842
- movs r0, 0x50
- bl SetGpuReg
- ldr r4, _080BCA64 @ =0x00000808
- movs r0, 0x52
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r1, _080BCA68 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r2, r0, r1
- strh r4, [r2, 0x10]
- ldr r0, _080BCA6C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BCA70
- movs r0, 0x10
- b _080BCA72
- .align 2, 0
-_080BCA60: .4byte 0x00001842
-_080BCA64: .4byte 0x00000808
-_080BCA68: .4byte gTasks
-_080BCA6C: .4byte gBattleTypeFlags
-_080BCA70:
- movs r0, 0x1
-_080BCA72:
- strh r0, [r2, 0xC]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _080BCC22
-_080BCA7C:
- ldr r0, _080BCAA4 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _080BCA94
- b _080BCC22
-_080BCA94:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- b _080BCC22
- .align 2, 0
-_080BCAA4: .4byte gTasks
-_080BCAA8:
- ldr r1, _080BCAE8 @ =gUnknown_2022986
- ldrh r0, [r1]
- subs r0, 0xFF
- strh r0, [r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- cmp r0, r1
- beq _080BCAC0
- b _080BCC22
-_080BCAC0:
- ldr r0, _080BCAEC @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- movs r0, 0x20
- strh r0, [r1, 0xE]
- movs r0, 0x1
- strh r0, [r1, 0x12]
- ldr r2, _080BCAF0 @ =gUnknown_2023F4C
- ldrh r1, [r2]
- ldr r0, _080BCAF4 @ =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _080BCC22
- .align 2, 0
-_080BCAE8: .4byte gUnknown_2022986
-_080BCAEC: .4byte gTasks
-_080BCAF0: .4byte gUnknown_2023F4C
-_080BCAF4: .4byte 0x0000fffe
-_080BCAF8:
- lsls r0, r5, 2
- adds r1, r0, r5
- lsls r1, 3
- adds r2, r1, r4
- ldrh r3, [r2, 0xE]
- movs r6, 0xE
- ldrsh r1, [r2, r6]
- mov r12, r0
- cmp r1, 0
- beq _080BCB12
- subs r0, r3, 0x1
- strh r0, [r2, 0xE]
- b _080BCB32
-_080BCB12:
- ldrh r1, [r2, 0x10]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- beq _080BCB32
- ldrh r0, [r2, 0x12]
- subs r0, 0x1
- strh r0, [r2, 0x12]
- lsls r0, 16
- cmp r0, 0
- bne _080BCB32
- adds r0, r1, 0
- adds r0, 0xFF
- strh r0, [r2, 0x10]
- movs r0, 0x6
- strh r0, [r2, 0x12]
-_080BCB32:
- ldr r2, _080BCC00 @ =gUnknown_2022986
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _080BCB46
- ldr r3, _080BCC04 @ =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_080BCB46:
- mov r6, r12
- adds r0, r6, r5
- lsls r0, 3
- adds r1, r0, r4
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _080BCB5C
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_080BCB5C:
- movs r3, 0
- ldr r6, _080BCC08 @ =gScanlineEffect
- mov r8, r6
- ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
- adds r4, r1, 0
-_080BCB66:
- lsls r2, r3, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x4F
- ble _080BCB66
- cmp r3, 0x9F
- bgt _080BCBAA
- ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
- ldr r6, _080BCC08 @ =gScanlineEffect
- ldr r1, _080BCC10 @ =gTasks
- mov r2, r12
- adds r0, r2, r5
- lsls r0, 3
- adds r4, r0, r1
-_080BCB90:
- lsls r2, r3, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- ldrh r0, [r4, 0xC]
- negs r0, r0
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x9F
- ble _080BCB90
-_080BCBAA:
- ldr r1, _080BCC10 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r3, 0xC
- ldrsh r2, [r1, r3]
- cmp r2, 0
- bne _080BCC22
- movs r0, 0x3
- mov r6, r8
- strb r0, [r6, 0x15]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- str r2, [sp]
- ldr r1, _080BCC14 @ =0x0600e000
- ldr r2, _080BCC18 @ =0x05000200
- mov r0, sp
- bl CpuSet
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- b _080BCC22
- .align 2, 0
-_080BCC00: .4byte gUnknown_2022986
-_080BCC04: .4byte 0xfffffc04
-_080BCC08: .4byte gScanlineEffect
-_080BCC0C: .4byte gScanlineEffectRegBuffers
-_080BCC10: .4byte gTasks
-_080BCC14: .4byte 0x0600e000
-_080BCC18: .4byte 0x05000200
-_080BCC1C:
- adds r0, r5, 0
- bl sub_80BC41C
-_080BCC22:
- ldr r0, _080BCC48 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x4
- beq _080BCC3C
- ldrh r1, [r1, 0x10]
- movs r0, 0x52
- bl SetGpuReg
-_080BCC3C:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BCC48: .4byte gTasks
- thumb_func_end task_battle_intro_anim
-
- thumb_func_start sub_80BCC4C
-sub_80BCC4C: @ 80BCC4C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080BCC98 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r7, r0, r1
- movs r1, 0x8
- ldrsh r0, [r7, r1]
- cmp r0, 0x1
- ble _080BCCC2
- movs r2, 0x10
- ldrsh r0, [r7, r2]
- cmp r0, 0
- bne _080BCCC2
- ldr r2, _080BCC9C @ =gBattle_BG1_X
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- bne _080BCC8A
- cmp r1, 0x4F
- bhi _080BCCA4
-_080BCC8A:
- adds r0, r1, 0x3
- strh r0, [r2]
- ldr r1, _080BCCA0 @ =gBattle_BG2_X
- ldrh r0, [r1]
- subs r0, 0x3
- strh r0, [r1]
- b _080BCCC2
- .align 2, 0
-_080BCC98: .4byte gTasks
-_080BCC9C: .4byte gBattle_BG1_X
-_080BCCA0: .4byte gBattle_BG2_X
-_080BCCA4:
- str r5, [sp]
- ldr r1, _080BCCE4 @ =0x0600e000
- ldr r4, _080BCCE8 @ =0x05000200
- mov r0, sp
- adds r2, r4, 0
- bl CpuSet
- str r5, [sp, 0x4]
- add r0, sp, 0x4
- ldr r1, _080BCCEC @ =0x0600f000
- adds r2, r4, 0
- bl CpuSet
- movs r0, 0x1
- strh r0, [r7, 0x10]
-_080BCCC2:
- ldr r0, _080BCCF0 @ =gTasks
- lsls r2, r6, 2
- adds r1, r2, r6
- lsls r1, 3
- adds r1, r0
- movs r3, 0x8
- ldrsh r1, [r1, r3]
- mov r9, r0
- adds r5, r2, 0
- cmp r1, 0x4
- bls _080BCCDA
- b _080BCEE6
-_080BCCDA:
- lsls r0, r1, 2
- ldr r1, _080BCCF4 @ =_080BCCF8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BCCE4: .4byte 0x0600e000
-_080BCCE8: .4byte 0x05000200
-_080BCCEC: .4byte 0x0600f000
-_080BCCF0: .4byte gTasks
-_080BCCF4: .4byte _080BCCF8
- .align 2, 0
-_080BCCF8:
- .4byte _080BCD0C
- .4byte _080BCD1E
- .4byte _080BCDC4
- .4byte _080BCE08
- .4byte _080BCEE0
-_080BCD0C:
- adds r0, r5, r6
- lsls r0, 3
- add r0, r9
- movs r1, 0x20
- strh r1, [r0, 0xC]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _080BCEE6
-_080BCD1E:
- adds r0, r5, r6
- lsls r0, 3
- mov r2, r9
- adds r1, r0, r2
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _080BCD34
- b _080BCEE6
-_080BCD34:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- ldr r4, _080BCDB4 @ =gSprites
- ldr r5, _080BCDB8 @ =gBattleStruct
- ldr r0, [r5]
- adds r0, 0x7D
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r3, [r1, 0x1]
- movs r2, 0xD
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- movs r3, 0x8
- mov r9, r3
- mov r3, r9
- orrs r0, r3
- strb r0, [r1, 0x1]
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x7D
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- movs r1, 0x1C
- adds r1, r4
- mov r8, r1
- add r0, r8
- ldr r6, _080BCDBC @ =sub_801182C
- str r6, [r0]
- adds r3, 0x7E
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x1]
- ands r2, r1
- mov r3, r9
- orrs r2, r3
- strb r2, [r0, 0x1]
- ldr r0, [r5]
- adds r0, 0x7E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- str r6, [r0]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- ldr r1, _080BCDC0 @ =0x00003f06
- movs r0, 0x4A
- bl SetGpuReg
- b _080BCEE6
- .align 2, 0
-_080BCDB4: .4byte gSprites
-_080BCDB8: .4byte gBattleStruct
-_080BCDBC: .4byte sub_801182C
-_080BCDC0: .4byte 0x00003f06
-_080BCDC4:
- ldr r1, _080BCDFC @ =gUnknown_2022986
- ldrh r0, [r1]
- subs r0, 0xFF
- strh r0, [r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- cmp r0, r1
- beq _080BCDDC
- b _080BCEE6
-_080BCDDC:
- adds r1, r5, r6
- lsls r1, 3
- add r1, r9
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- movs r0, 0x20
- strh r0, [r1, 0xE]
- ldr r2, _080BCE00 @ =gUnknown_2023F4C
- ldrh r1, [r2]
- ldr r0, _080BCE04 @ =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _080BCEE6
- .align 2, 0
-_080BCDFC: .4byte gUnknown_2022986
-_080BCE00: .4byte gUnknown_2023F4C
-_080BCE04: .4byte 0x0000fffe
-_080BCE08:
- ldr r2, _080BCECC @ =gUnknown_2022986
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _080BCE1C
- ldr r3, _080BCED0 @ =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_080BCE1C:
- adds r0, r5, r6
- lsls r0, 3
- mov r2, r9
- adds r1, r0, r2
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _080BCE32
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_080BCE32:
- movs r3, 0
- ldr r0, _080BCED4 @ =gScanlineEffect
- mov r12, r0
- ldr r2, _080BCED8 @ =gScanlineEffectRegBuffers
- mov r8, r2
- mov r7, r12
- adds r4, r1, 0
-_080BCE40:
- lsls r2, r3, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r8
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x4F
- ble _080BCE40
- cmp r3, 0x9F
- bgt _080BCE84
- ldr r0, _080BCED8 @ =gScanlineEffectRegBuffers
- mov r8, r0
- ldr r7, _080BCED4 @ =gScanlineEffect
- ldr r1, _080BCEDC @ =gTasks
- adds r0, r5, r6
- lsls r0, 3
- adds r4, r0, r1
-_080BCE6A:
- lsls r2, r3, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r8
- ldrh r0, [r4, 0xC]
- negs r0, r0
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x9F
- ble _080BCE6A
-_080BCE84:
- adds r0, r5, r6
- lsls r0, 3
- mov r2, r9
- adds r1, r0, r2
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _080BCEE6
- movs r0, 0x3
- mov r2, r12
- strb r0, [r2, 0x15]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- b _080BCEE6
- .align 2, 0
-_080BCECC: .4byte gUnknown_2022986
-_080BCED0: .4byte 0xfffffc04
-_080BCED4: .4byte gScanlineEffect
-_080BCED8: .4byte gScanlineEffectRegBuffers
-_080BCEDC: .4byte gTasks
-_080BCEE0:
- adds r0, r6, 0
- bl sub_80BC41C
-_080BCEE6:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BCC4C
-
- thumb_func_start sub_80BCEF4
-sub_80BCEF4: @ 80BCEF4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- str r0, [sp]
- adds r6, r2, 0
- adds r4, r3, 0
- ldr r0, [sp, 0x24]
- ldr r7, [sp, 0x28]
- ldr r2, [sp, 0x2C]
- mov r9, r2
- ldr r5, [sp, 0x30]
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080BCFC4 @ =gMonSpritesGfxPtr
- ldr r2, [r1]
- lsls r4, 2
- adds r2, 0x4
- adds r2, r4
- ldr r1, _080BCFC8 @ =gBattleMonForms
- adds r0, r1
- ldrb r1, [r0]
- lsls r1, 11
- ldr r0, [r2]
- adds r0, r1
- movs r2, 0x80
- lsls r2, 3
- adds r1, r7, 0
- bl CpuSet
- ldr r1, [sp]
- lsls r0, r1, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 5
- adds r1, r7, 0
- adds r3, r5, 0
- bl LoadBgTiles
- adds r0, r6, 0
- adds r0, 0x8
- cmp r6, r0
- bge _080BCFA0
- mov r12, r0
- mov r2, r8
- lsls r7, r2, 1
-_080BCF72:
- mov r1, r8
- adds r2, r1, 0
- adds r2, 0x8
- adds r4, r6, 0x1
- cmp r1, r2
- bge _080BCF9A
- mov r0, r10
- lsls r3, r0, 12
- lsls r0, r6, 6
- add r0, r9
- adds r6, r7, r0
- subs r1, r2, r1
-_080BCF8A:
- adds r0, r5, 0
- orrs r0, r3
- strh r0, [r6]
- adds r5, 0x1
- adds r6, 0x2
- subs r1, 0x1
- cmp r1, 0
- bne _080BCF8A
-_080BCF9A:
- adds r6, r4, 0
- cmp r6, r12
- blt _080BCF72
-_080BCFA0:
- ldr r1, [sp]
- lsls r0, r1, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 4
- mov r1, r9
- movs r3, 0
- bl LoadBgTilemap
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BCFC4: .4byte gMonSpritesGfxPtr
-_080BCFC8: .4byte gBattleMonForms
- thumb_func_end sub_80BCEF4
-
- thumb_func_start sub_80BCFCC
-sub_80BCFCC: @ 80BCFCC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- ldr r5, [sp, 0x28]
- mov r8, r5
- ldr r5, [sp, 0x2C]
- ldr r6, [sp, 0x30]
- mov r9, r6
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- lsls r1, 24
- lsls r2, 24
- lsls r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r10, r4
- mov r7, r8
- lsls r7, 16
- lsrs r6, r7, 16
- lsls r5, 24
- lsrs r5, 24
- mov r0, r9
- lsls r0, 24
- mov r9, r0
- ldr r4, _080BD090 @ =0x040000d4
- ldr r0, _080BD094 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- lsrs r2, 22
- adds r0, 0x4
- adds r0, r2
- lsrs r3, 13
- ldr r0, [r0]
- adds r0, r3
- str r0, [r4]
- movs r0, 0xC0
- lsls r0, 19
- adds r6, r0
- str r6, [r4, 0x4]
- ldr r0, _080BD098 @ =0x80000400
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- adds r2, r7, 0
- lsrs r2, 21
- mov r6, r9
- lsrs r6, 15
- subs r4, r2, r6
- lsrs r0, r1, 24
- adds r1, r0, 0
- adds r1, 0x8
- cmp r0, r1
- bge _080BD080
- mov r9, r1
- mov r7, r12
- lsls r7, 1
- mov r8, r7
- lsls r5, 11
- str r5, [sp]
-_080BD048:
- mov r2, r12
- adds r3, r2, 0
- adds r3, 0x8
- adds r5, r0, 0x1
- cmp r2, r3
- bge _080BD07A
- mov r1, r10
- lsls r6, r1, 12
- lsls r0, 6
- movs r7, 0xC0
- lsls r7, 19
- adds r0, r7
- ldr r1, [sp]
- adds r0, r1, r0
- mov r7, r8
- adds r1, r7, r0
- subs r2, r3, r2
-_080BD06A:
- adds r0, r4, 0
- orrs r0, r6
- strh r0, [r1]
- adds r4, 0x1
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bne _080BD06A
-_080BD07A:
- adds r0, r5, 0
- cmp r0, r9
- blt _080BD048
-_080BD080:
- 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
-_080BD090: .4byte 0x040000d4
-_080BD094: .4byte gMonSpritesGfxPtr
-_080BD098: .4byte 0x80000400
- thumb_func_end sub_80BCFCC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_80DE2C0.s b/asm/battle_anim_80DE2C0.s
deleted file mode 100644
index 603005d78..000000000
--- a/asm/battle_anim_80DE2C0.s
+++ /dev/null
@@ -1,12857 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80DE2C0
-sub_80DE2C0: @ 80DE2C0
- push {lr}
- adds r2, r0, 0
- ldr r1, _080DE2E4 @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r3, [r2, 0x20]
- adds r0, r3
- strh r0, [r2, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r3, [r2, 0x22]
- adds r0, r3
- strh r0, [r2, 0x22]
- movs r3, 0x6
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _080DE2E8
- ldrh r0, [r1, 0x4]
- b _080DE2EC
- .align 2, 0
-_080DE2E4: .4byte gUnknown_2037F02
-_080DE2E8:
- ldrh r0, [r1, 0x4]
- negs r0, r0
-_080DE2EC:
- strh r0, [r2, 0x2E]
- ldrh r0, [r1, 0x8]
- strh r0, [r2, 0x30]
- ldr r0, _080DE2FC @ =sub_80DE300
- str r0, [r2, 0x1C]
- pop {r0}
- bx r0
- .align 2, 0
-_080DE2FC: .4byte sub_80DE300
- thumb_func_end sub_80DE2C0
-
- thumb_func_start sub_80DE300
-sub_80DE300: @ 80DE300
- push {lr}
- adds r3, r0, 0
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0
- ble _080DE340
- ldrh r1, [r3, 0x32]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r3, 0x24]
- ldrh r0, [r3, 0x2E]
- adds r1, r0
- strh r1, [r3, 0x32]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x30]
- subs r0, 0x1
- strh r0, [r3, 0x30]
- b _080DE346
-_080DE340:
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080DE346:
- pop {r0}
- bx r0
- thumb_func_end sub_80DE300
-
- thumb_func_start sub_80DE34C
-sub_80DE34C: @ 80DE34C
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r6, _080DE398 @ =gUnknown_2037F1B
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_8074480
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 8
- movs r0, 0x80
- lsls r0, 12
- adds r4, r0
- asrs r4, 16
- ldrb r0, [r6]
- movs r1, 0x3
- bl sub_8074480
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 8
- movs r0, 0x80
- lsls r0, 12
- adds r1, r0
- asrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- bl sub_804A76C
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE398: .4byte gUnknown_2037F1B
- thumb_func_end sub_80DE34C
-
- thumb_func_start sub_80DE39C
-sub_80DE39C: @ 80DE39C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x5A
- strh r0, [r4, 0x2E]
- ldr r0, _080DE3D8 @ =sub_8074C44
- str r0, [r4, 0x1C]
- movs r0, 0x7
- strh r0, [r4, 0x30]
- ldr r1, _080DE3DC @ =sub_80DE3E0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r0, [r4, 0x30]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE3D8: .4byte sub_8074C44
-_080DE3DC: .4byte sub_80DE3E0
- thumb_func_end sub_80DE39C
-
- thumb_func_start sub_80DE3E0
-sub_80DE3E0: @ 80DE3E0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- bge _080DE414
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080DE41C @ =sub_80DE420
- str r0, [r4, 0x1C]
-_080DE414:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE41C: .4byte sub_80DE420
- thumb_func_end sub_80DE3E0
-
- thumb_func_start sub_80DE420
-sub_80DE420: @ 80DE420
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DE420
-
- thumb_func_start sub_80DE440
-sub_80DE440: @ 80DE440
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r4, _080DE4CC @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r7, r0, 0
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075114
- ldrh r0, [r5, 0x20]
- subs r0, r7
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r5, 0x22]
- subs r1, r6
- lsls r1, 16
- asrs r1, 16
- bl sub_8075B30
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 23
- adds r0, r1
- lsrs r4, r0, 16
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080DE49E
- movs r1, 0x80
- lsls r1, 7
- adds r0, r4, r1
- lsls r0, 16
- lsrs r4, r0, 16
-_080DE49E:
- movs r3, 0x80
- lsls r3, 1
- str r4, [sp]
- adds r0, r5, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_8075A1C
- ldr r0, _080DE4D0 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0x2E]
- strh r7, [r5, 0x32]
- strh r6, [r5, 0x36]
- ldr r0, _080DE4D4 @ =sub_8075590
- str r0, [r5, 0x1C]
- ldr r1, _080DE4D8 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE4CC: .4byte gUnknown_2037F1B
-_080DE4D0: .4byte gUnknown_2037F02
-_080DE4D4: .4byte sub_8075590
-_080DE4D8: .4byte DestroyAnimSprite
- thumb_func_end sub_80DE440
-
- thumb_func_start sub_80DE4DC
-sub_80DE4DC: @ 80DE4DC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x4
- strh r0, [r4, 0x2E]
- ldr r0, _080DE504 @ =sub_80DE508
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE504: .4byte sub_80DE508
- thumb_func_end sub_80DE4DC
-
- thumb_func_start sub_80DE508
-sub_80DE508: @ 80DE508
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080DE52E
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- b _080DE532
-_080DE52E:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
-_080DE532:
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- beq _080DE540
- cmp r0, 0x4
- bne _080DE548
-_080DE540:
- ldrh r0, [r4, 0x30]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x30]
-_080DE548:
- ldrh r0, [r4, 0x32]
- adds r1, r0, 0x1
- strh r1, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x46
- ble _080DE58C
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- movs r0, 0
- strh r0, [r4, 0x32]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- subs r2, 0x12
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080DE594 @ =sub_80DE598
- str r0, [r4, 0x1C]
-_080DE58C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE594: .4byte sub_80DE598
- thumb_func_end sub_80DE508
-
- thumb_func_start sub_80DE598
-sub_80DE598: @ 80DE598
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x32]
- adds r1, r0, 0x1
- strh r1, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- ble _080DE5D4
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- subs r2, 0x12
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- adds r0, r3, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080DE5D4
- ldr r0, _080DE5D8 @ =sub_80DE5DC
- str r0, [r3, 0x1C]
-_080DE5D4:
- pop {r0}
- bx r0
- .align 2, 0
-_080DE5D8: .4byte sub_80DE5DC
- thumb_func_end sub_80DE598
-
- thumb_func_start sub_80DE5DC
-sub_80DE5DC: @ 80DE5DC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- bhi _080DE634
- lsls r0, 2
- ldr r1, _080DE5F4 @ =_080DE5F8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080DE5F4: .4byte _080DE5F8
- .align 2, 0
-_080DE5F8:
- .4byte _080DE614
- .4byte _080DE614
- .4byte _080DE61E
- .4byte _080DE61E
- .4byte _080DE62C
- .4byte _080DE62C
- .4byte _080DE634
-_080DE614:
- movs r1, 0
- movs r0, 0x1
- strh r0, [r4, 0x24]
- strh r1, [r4, 0x26]
- b _080DE63C
-_080DE61E:
- ldr r0, _080DE628 @ =0x0000ffff
- strh r0, [r4, 0x24]
- movs r0, 0
- b _080DE63A
- .align 2, 0
-_080DE628: .4byte 0x0000ffff
-_080DE62C:
- movs r0, 0
- strh r0, [r4, 0x24]
- movs r0, 0x1
- b _080DE63A
-_080DE634:
- movs r0, 0
- strh r0, [r4, 0x24]
- ldr r0, _080DE680 @ =0x0000ffff
-_080DE63A:
- strh r0, [r4, 0x26]
-_080DE63C:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- movs r2, 0
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080DE64E
- strh r2, [r4, 0x34]
-_080DE64E:
- ldrh r0, [r4, 0x36]
- adds r1, r0, 0x1
- strh r1, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _080DE678
- movs r0, 0x10
- strh r0, [r4, 0x2E]
- strh r2, [r4, 0x30]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r4, 0x2E]
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, _080DE684 @ =sub_80DE688
- str r0, [r4, 0x1C]
-_080DE678:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE680: .4byte 0x0000ffff
-_080DE684: .4byte sub_80DE688
- thumb_func_end sub_80DE5DC
-
- thumb_func_start sub_80DE688
-sub_80DE688: @ 80DE688
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r0, [r4, 0x30]
- adds r1, r0, 0x1
- strh r1, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080DE6B8
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
-_080DE6B8:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080DE6CC
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_080DE6CC:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _080DE6EA
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DE6EA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DE688
-
- thumb_func_start sub_80DE6F0
-sub_80DE6F0: @ 80DE6F0
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080DE70C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080DE710 @ =sub_80DE718
- str r0, [r1]
- ldr r1, _080DE714 @ =gUnknown_2037EE2
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080DE70C: .4byte gTasks
-_080DE710: .4byte sub_80DE718
-_080DE714: .4byte gUnknown_2037EE2
- thumb_func_end sub_80DE6F0
-
- thumb_func_start sub_80DE718
-sub_80DE718: @ 80DE718
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8075454
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r7, _080DE7A4 @ =gTasks
- lsls r5, r4, 2
- adds r1, r5, r4
- lsls r1, 3
- adds r1, r7
- ldrh r0, [r1, 0x12]
- adds r0, 0x1
- strh r0, [r1, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080DE788
- ldr r0, _080DE7A8 @ =gPlttBufferFaded
- lsls r2, r6, 4
- adds r1, r2, 0
- adds r1, 0xB
- lsls r1, 1
- adds r1, r0
- ldrh r3, [r1]
- mov r8, r3
- movs r3, 0xA
- mov r9, r7
- adds r7, r5, 0
- mov r12, r0
- adds r5, r2, 0
- lsls r0, r6, 5
- add r0, r12
- adds r2, r0, 0
- adds r2, 0x14
-_080DE766:
- ldrh r0, [r2]
- strh r0, [r1]
- subs r2, 0x2
- subs r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bgt _080DE766
- adds r0, r5, 0x1
- lsls r0, 1
- add r0, r12
- movs r1, 0
- mov r2, r8
- strh r2, [r0]
- adds r0, r7, r4
- lsls r0, 3
- add r0, r9
- strh r1, [r0, 0x12]
-_080DE788:
- ldr r0, _080DE7AC @ =gUnknown_2037F02
- ldrh r1, [r0, 0xE]
- ldr r0, _080DE7B0 @ =0x0000ffff
- cmp r1, r0
- bne _080DE798
- adds r0, r4, 0
- bl DestroyTask
-_080DE798:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE7A4: .4byte gTasks
-_080DE7A8: .4byte gPlttBufferFaded
-_080DE7AC: .4byte gUnknown_2037F02
-_080DE7B0: .4byte 0x0000ffff
- thumb_func_end sub_80DE718
-
- thumb_func_start sub_80DE7B4
-sub_80DE7B4: @ 80DE7B4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080DE7D0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080DE7D4 @ =sub_80DE7DC
- str r0, [r1]
- ldr r1, _080DE7D8 @ =gUnknown_2037EE2
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080DE7D0: .4byte gTasks
-_080DE7D4: .4byte sub_80DE7DC
-_080DE7D8: .4byte gUnknown_2037EE2
- thumb_func_end sub_80DE7B4
-
- thumb_func_start sub_80DE7DC
-sub_80DE7DC: @ 80DE7DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- bl sub_8075454
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r5, _080DE89C @ =gTasks
- mov r0, r8
- lsls r3, r0, 2
- adds r1, r3, r0
- lsls r1, 3
- adds r1, r5
- ldrh r0, [r1, 0x12]
- adds r0, 0x1
- strh r0, [r1, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080DE87E
- ldr r0, _080DE8A0 @ =gPlttBufferFaded
- lsls r2, r7, 4
- adds r1, r2, 0
- adds r1, 0xB
- lsls r1, 1
- adds r1, r0
- ldrh r6, [r1]
- movs r4, 0xA
- mov r10, r3
- mov r9, r0
- adds r5, r2, 0
- ldr r2, _080DE8A4 @ =gPlttBufferUnfaded
- mov r12, r2
- lsls r0, r7, 5
- add r0, r9
- adds r3, r0, 0
- adds r3, 0x14
-_080DE830:
- ldrh r0, [r3]
- strh r0, [r1]
- subs r3, 0x2
- subs r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bgt _080DE830
- adds r0, r5, 0x1
- lsls r0, 1
- add r0, r9
- strh r6, [r0]
- adds r1, r5, 0
- adds r1, 0xB
- lsls r1, 1
- add r1, r12
- ldrh r6, [r1]
- movs r4, 0xA
- lsls r0, r7, 5
- add r0, r12
- adds r2, r0, 0
- adds r2, 0x14
-_080DE85A:
- ldrh r0, [r2]
- strh r0, [r1]
- subs r2, 0x2
- subs r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bgt _080DE85A
- adds r0, r5, 0x1
- lsls r0, 1
- add r0, r12
- movs r1, 0
- strh r6, [r0]
- mov r0, r10
- add r0, r8
- lsls r0, 3
- ldr r2, _080DE89C @ =gTasks
- adds r0, r2
- strh r1, [r0, 0x12]
-_080DE87E:
- ldr r0, _080DE8A8 @ =gUnknown_2037F02
- ldrh r1, [r0, 0xE]
- ldr r0, _080DE8AC @ =0x0000ffff
- cmp r1, r0
- bne _080DE88E
- mov r0, r8
- bl DestroyTask
-_080DE88E:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE89C: .4byte gTasks
-_080DE8A0: .4byte gPlttBufferFaded
-_080DE8A4: .4byte gPlttBufferUnfaded
-_080DE8A8: .4byte gUnknown_2037F02
-_080DE8AC: .4byte 0x0000ffff
- thumb_func_end sub_80DE7DC
-
- thumb_func_start sub_80DE8B0
-sub_80DE8B0: @ 80DE8B0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080DE914 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- mov r5, sp
- adds r5, 0x2
- movs r1, 0
- mov r2, sp
- adds r3, r5, 0
- bl sub_8076D9C
- ldr r0, _080DE918 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080DE8E4
- ldr r1, _080DE91C @ =gUnknown_2037F02
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080DE8E4:
- ldr r1, _080DE91C @ =gUnknown_2037F02
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x2E]
- mov r2, sp
- ldrh r0, [r1, 0x4]
- ldrh r2, [r2]
- adds r0, r2
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0x6]
- ldrh r5, [r5]
- adds r0, r5
- strh r0, [r4, 0x36]
- ldr r0, _080DE920 @ =0x0000ffce
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_8075068
- ldr r0, _080DE924 @ =sub_80DE928
- str r0, [r4, 0x1C]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE914: .4byte gUnknown_2037F1B
-_080DE918: .4byte gUnknown_2037F1A
-_080DE91C: .4byte gUnknown_2037F02
-_080DE920: .4byte 0x0000ffce
-_080DE924: .4byte sub_80DE928
- thumb_func_end sub_80DE8B0
-
- thumb_func_start sub_80DE928
-sub_80DE928: @ 80DE928
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080DE94A
- movs r1, 0
- movs r0, 0x1E
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- ldr r0, _080DE950 @ =sub_8074C44
- str r0, [r4, 0x1C]
- ldr r1, _080DE954 @ =sub_80DE958
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
-_080DE94A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE950: .4byte sub_8074C44
-_080DE954: .4byte sub_80DE958
- thumb_func_end sub_80DE928
-
- thumb_func_start sub_80DE958
-sub_80DE958: @ 80DE958
- push {lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x30]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080DE984
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
-_080DE984:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- bne _080DE998
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080DE998:
- pop {r0}
- bx r0
- thumb_func_end sub_80DE958
-
- thumb_func_start sub_80DE99C
-sub_80DE99C: @ 80DE99C
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_8074FCC
- ldr r5, _080DE9CC @ =gUnknown_2037F02
- movs r0, 0
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl sub_8074FF8
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, _080DE9D0 @ =sub_8074F6C
- str r0, [r4, 0x1C]
- ldr r1, _080DE9D4 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE9CC: .4byte gUnknown_2037F02
-_080DE9D0: .4byte sub_8074F6C
-_080DE9D4: .4byte DestroyAnimSprite
- thumb_func_end sub_80DE99C
-
- thumb_func_start sub_80DE9D8
-sub_80DE9D8: @ 80DE9D8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080DEA38
- adds r0, r4, 0
- bl sub_8074FCC
- ldr r5, _080DEA14 @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r1, [r5, r2]
- adds r0, r4, 0
- bl sub_8074FF8
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080DEA2C
- ldr r0, _080DEA18 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080DEA1C
- ldrh r0, [r5, 0x4]
- b _080DEA32
- .align 2, 0
-_080DEA14: .4byte gUnknown_2037F02
-_080DEA18: .4byte gUnknown_2037F1A
-_080DEA1C:
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- negs r0, r0
- strh r0, [r4, 0x30]
- movs r2, 0x6
- ldrsh r0, [r5, r2]
- negs r0, r0
- b _080DEA36
-_080DEA2C:
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- negs r0, r0
-_080DEA32:
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x6]
-_080DEA36:
- strh r0, [r4, 0x32]
-_080DEA38:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- movs r3, 0xFF
- ldrh r1, [r4, 0x30]
- ldrh r2, [r4, 0x34]
- adds r1, r2
- strh r1, [r4, 0x34]
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r1, r2
- strh r1, [r4, 0x36]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- lsrs r2, r1, 31
- adds r1, r2
- asrs r1, 1
- strh r1, [r4, 0x24]
- ands r0, r3
- movs r1, 0x5
- bl Sin
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- lsrs r2, r1, 31
- adds r1, r2
- asrs r1, 1
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xF0
- bls _080DEA90
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DEA90:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DE9D8
-
- thumb_func_start sub_80DEA98
-sub_80DEA98: @ 80DEA98
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080DEAAE
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080DEAAE:
- pop {r0}
- bx r0
- thumb_func_end sub_80DEA98
-
- thumb_func_start sub_80DEAB4
-sub_80DEAB4: @ 80DEAB4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080DEAD0 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080DEAD8
- ldr r1, _080DEAD4 @ =gUnknown_2037F02
- movs r0, 0
- b _080DEADC
- .align 2, 0
-_080DEAD0: .4byte gUnknown_2037F1B
-_080DEAD4: .4byte gUnknown_2037F02
-_080DEAD8:
- ldr r1, _080DEAEC @ =gUnknown_2037F02
- movs r0, 0x1
-_080DEADC:
- strh r0, [r1, 0xE]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DEAEC: .4byte gUnknown_2037F02
- thumb_func_end sub_80DEAB4
-
- thumb_func_start sub_80DEAF0
-sub_80DEAF0: @ 80DEAF0
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080DEB04 @ =gUnknown_2037EE8
- ldr r0, [r0]
- cmp r0, 0
- ble _080DEB0C
- ldr r1, _080DEB08 @ =gUnknown_2037F02
- movs r0, 0
- b _080DEB10
- .align 2, 0
-_080DEB04: .4byte gUnknown_2037EE8
-_080DEB08: .4byte gUnknown_2037F02
-_080DEB0C:
- ldr r1, _080DEB1C @ =gUnknown_2037F02
- movs r0, 0x1
-_080DEB10:
- strh r0, [r1, 0xE]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080DEB1C: .4byte gUnknown_2037F02
- thumb_func_end sub_80DEAF0
-
- thumb_func_start sub_80DEB20
-sub_80DEB20: @ 80DEB20
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r1, _080DEB7C @ =0x00001f3f
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r0, _080DEB80 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r4, _080DEB84 @ =gUnknown_2022986
- strh r1, [r4]
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x44
- bl SetGpuReg
- adds r0, r5, 0
- movs r1, 0
- bl sub_8075114
- ldrb r1, [r5, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r5, 0x1]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080DEB88 @ =sub_80DEB8C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DEB7C: .4byte 0x00001f3f
-_080DEB80: .4byte gUnknown_2022984
-_080DEB84: .4byte gUnknown_2022986
-_080DEB88: .4byte sub_80DEB8C
- thumb_func_end sub_80DEB20
-
- thumb_func_start sub_80DEB8C
-sub_80DEB8C: @ 80DEB8C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bhi _080DEC4C
- lsls r0, 2
- ldr r1, _080DEBA4 @ =_080DEBA8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080DEBA4: .4byte _080DEBA8
- .align 2, 0
-_080DEBA8:
- .4byte _080DEBC0
- .4byte _080DEBDE
- .4byte _080DEBFE
- .4byte _080DEBDE
- .4byte _080DEC1E
- .4byte _080DEC2E
-_080DEBC0:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080DEC4C
- b _080DEC26
-_080DEBDE:
- ldrh r0, [r4, 0x30]
- adds r0, 0x75
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x15
- bne _080DEC4C
- movs r0, 0
- strh r0, [r4, 0x32]
- b _080DEC26
-_080DEBFE:
- ldrh r0, [r4, 0x30]
- subs r0, 0x75
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x29
- bne _080DEC4C
- movs r0, 0
- strh r0, [r4, 0x32]
- b _080DEC26
-_080DEC1E:
- adds r0, r4, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
-_080DEC26:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080DEC4C
-_080DEC2E:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080DEC4C
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080DEC54 @ =sub_80DEC58
- str r0, [r4, 0x1C]
-_080DEC4C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DEC54: .4byte sub_80DEC58
- thumb_func_end sub_80DEB8C
-
- thumb_func_start sub_80DEC58
-sub_80DEC58: @ 80DEC58
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080DEC8C @ =0x00003f3f
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- eors r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DEC8C: .4byte 0x00003f3f
- thumb_func_end sub_80DEC58
-
- thumb_func_start sub_80DEC90
-sub_80DEC90: @ 80DEC90
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080DED04 @ =gUnknown_2037F02
- movs r1, 0x6
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080DECBC
- ldr r4, _080DED08 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
-_080DECBC:
- ldrh r0, [r6]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- movs r3, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r6, 0x2]
- ldrh r4, [r5, 0x22]
- adds r0, r4
- strh r0, [r5, 0x22]
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x10
- ldr r4, _080DED0C @ =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, _080DED10 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080DED18
- ldrb r1, [r5, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r5, 0x3]
- ldr r0, _080DED14 @ =0x0000fff4
- strh r0, [r5, 0x24]
- movs r0, 0x2
- b _080DED1E
- .align 2, 0
-_080DED04: .4byte gUnknown_2037F02
-_080DED08: .4byte gUnknown_2037F1A
-_080DED0C: .4byte 0x000003ff
-_080DED10: .4byte 0xfffffc00
-_080DED14: .4byte 0x0000fff4
-_080DED18:
- movs r0, 0xC
- strh r0, [r5, 0x24]
- ldr r0, _080DED3C @ =0x0000fffe
-_080DED1E:
- strh r0, [r5, 0x30]
- ldr r1, _080DED40 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x8]
- strh r0, [r5, 0x2E]
- movs r2, 0x34
- ldrsh r0, [r5, r2]
- cmp r0, 0xFF
- beq _080DED32
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x34]
-_080DED32:
- ldr r0, _080DED44 @ =sub_80DED48
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DED3C: .4byte 0x0000fffe
-_080DED40: .4byte gUnknown_2037F02
-_080DED44: .4byte sub_80DED48
- thumb_func_end sub_80DEC90
-
- thumb_func_start sub_80DED48
-sub_80DED48: @ 80DED48
- push {r4,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x32]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080DED86
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- lsls r0, 16
- cmp r0, 0
- bne _080DEDA6
- adds r0, r2, 0x1
- strh r0, [r4, 0x32]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080DEDA6
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xD7
- bl PlaySE1WithPanning
- b _080DEDA6
-_080DED86:
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x30]
- subs r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _080DED98
- negs r0, r0
-_080DED98:
- cmp r0, 0xC
- bne _080DEDA6
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- subs r0, r2, 0x1
- strh r0, [r4, 0x32]
-_080DEDA6:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080DEDB4
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DEDB4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DED48
-
- thumb_func_start sub_80DEDBC
-sub_80DEDBC: @ 80DEDBC
- push {lr}
- ldrb r2, [r0, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0, 0x1]
- movs r1, 0xFF
- strh r1, [r0, 0x34]
- bl sub_80DEC90
- pop {r0}
- bx r0
- thumb_func_end sub_80DEDBC
-
- thumb_func_start sub_80DEDD8
-sub_80DEDD8: @ 80DEDD8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080DEE2C
- ldr r1, _080DEE14 @ =0x00001f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080DEE18 @ =gUnknown_2022988
- ldr r2, _080DEE1C @ =0x000098f0
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _080DEE20 @ =gUnknown_202298A
- movs r0, 0xA0
- strh r0, [r1]
- ldr r0, _080DEE24 @ =gUnknown_2022984
- ldrh r1, [r0]
- movs r0, 0x42
- bl SetGpuReg
- ldr r0, _080DEE28 @ =gUnknown_2022986
- ldrh r1, [r0]
- movs r0, 0x46
- bl SetGpuReg
- b _080DEE5C
- .align 2, 0
-_080DEE14: .4byte 0x00001f3f
-_080DEE18: .4byte gUnknown_2022988
-_080DEE1C: .4byte 0x000098f0
-_080DEE20: .4byte gUnknown_202298A
-_080DEE24: .4byte gUnknown_2022984
-_080DEE28: .4byte gUnknown_2022986
-_080DEE2C:
- ldr r1, _080DEE68 @ =0x00001f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080DEE6C @ =gUnknown_2022988
- movs r0, 0xF0
- strh r0, [r1]
- ldr r4, _080DEE70 @ =gUnknown_202298A
- ldr r1, _080DEE74 @ =0x000078a0
- adds r0, r1, 0
- strh r0, [r4]
- movs r0, 0x42
- movs r1, 0xF0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x46
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 7
- movs r0, 0
- bl SetGpuRegBits
-_080DEE5C:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DEE68: .4byte 0x00001f3f
-_080DEE6C: .4byte gUnknown_2022988
-_080DEE70: .4byte gUnknown_202298A
-_080DEE74: .4byte 0x000078a0
- thumb_func_end sub_80DEDD8
-
- thumb_func_start sub_80DEE78
-sub_80DEE78: @ 80DEE78
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080DEEB0 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r0, _080DEEB4 @ =gUnknown_2022988
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080DEEB8 @ =gUnknown_202298A
- strh r1, [r0]
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080DEEA4
- movs r1, 0x80
- lsls r1, 7
- movs r0, 0
- bl ClearGpuRegBits
-_080DEEA4:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DEEB0: .4byte 0x00003f3f
-_080DEEB4: .4byte gUnknown_2022988
-_080DEEB8: .4byte gUnknown_202298A
- thumb_func_end sub_80DEE78
-
- thumb_func_start sub_80DEEBC
-sub_80DEEBC: @ 80DEEBC
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080DEED0 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080DEED8
- ldr r4, _080DEED4 @ =gUnknown_2037F1A
- b _080DEEDA
- .align 2, 0
-_080DEED0: .4byte gUnknown_2037F02
-_080DEED4: .4byte gUnknown_2037F1A
-_080DEED8:
- ldr r4, _080DEF2C @ =gUnknown_2037F1B
-_080DEEDA:
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x2]
- adds r0, r6
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r2, _080DEF30 @ =gUnknown_2037F02
- ldrh r0, [r2, 0x4]
- strh r0, [r5, 0x26]
- movs r3, 0
- lsls r0, 16
- asrs r0, 16
- ldrh r4, [r2, 0x6]
- movs r6, 0x6
- ldrsh r1, [r2, r6]
- cmp r0, r1
- ble _080DEF12
- movs r3, 0x1
-_080DEF12:
- strh r3, [r5, 0x2E]
- movs r0, 0
- strh r0, [r5, 0x30]
- ldrh r0, [r2, 0x8]
- strh r0, [r5, 0x32]
- ldrh r0, [r2, 0xA]
- strh r0, [r5, 0x34]
- strh r4, [r5, 0x36]
- ldr r0, _080DEF34 @ =sub_80DEF38
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DEF2C: .4byte gUnknown_2037F1B
-_080DEF30: .4byte gUnknown_2037F02
-_080DEF34: .4byte sub_80DEF38
- thumb_func_end sub_80DEEBC
-
- thumb_func_start sub_80DEF38
-sub_80DEF38: @ 80DEF38
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x30]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r2, 0x30]
- ldr r1, _080DEF80 @ =gSineTable
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x34]
- ldrh r3, [r2, 0x26]
- adds r1, r0, r3
- strh r1, [r2, 0x26]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _080DEF84
- lsls r0, r1, 16
- asrs r0, 16
- movs r3, 0x36
- ldrsh r1, [r2, r3]
- cmp r0, r1
- bge _080DEF96
- adds r0, r2, 0
- bl DestroyAnimSprite
- b _080DEF96
- .align 2, 0
-_080DEF80: .4byte gSineTable
-_080DEF84:
- lsls r0, r1, 16
- asrs r0, 16
- movs r3, 0x36
- ldrsh r1, [r2, r3]
- cmp r0, r1
- ble _080DEF96
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080DEF96:
- pop {r0}
- bx r0
- thumb_func_end sub_80DEF38
-
- thumb_func_start sub_80DEF9C
-sub_80DEF9C: @ 80DEF9C
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080DEFBC @ =gTasks
- adds r5, r1, r0
- ldr r0, _080DEFC0 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080DEFC8
- ldr r4, _080DEFC4 @ =gUnknown_2037F1A
- b _080DEFCA
- .align 2, 0
-_080DEFBC: .4byte gTasks
-_080DEFC0: .4byte gUnknown_2037F02
-_080DEFC4: .4byte gUnknown_2037F1A
-_080DEFC8:
- ldr r4, _080DF010 @ =gUnknown_2037F1B
-_080DEFCA:
- ldrb r0, [r4]
- bl sub_807492C
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- bl sub_80768B0
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r6, 0
- adds r1, r0, 0
- adds r1, 0x24
- movs r2, 0
- strh r1, [r5, 0x8]
- strh r1, [r5, 0xA]
- subs r0, 0x21
- strh r0, [r5, 0xC]
- cmp r0, 0
- bge _080DEFF4
- strh r2, [r5, 0xC]
-_080DEFF4:
- ldrh r0, [r5, 0x8]
- strh r0, [r5, 0xE]
- movs r0, 0x8
- strh r0, [r5, 0x10]
- ldr r1, _080DF014 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0x12]
- strh r2, [r5, 0x14]
- strh r2, [r5, 0x16]
- cmp r7, 0x1
- bne _080DF01C
- ldr r0, _080DF018 @ =gBattle_BG1_X
- b _080DF01E
- .align 2, 0
-_080DF010: .4byte gUnknown_2037F1B
-_080DF014: .4byte gUnknown_2037F02
-_080DF018: .4byte gBattle_BG1_X
-_080DF01C:
- ldr r0, _080DF03C @ =gBattle_BG2_X
-_080DF01E:
- ldrh r2, [r0]
- strh r2, [r5, 0x18]
- adds r3, r2, 0
- adds r3, 0xF0
- strh r3, [r5, 0x1A]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x1C]
- movs r4, 0x4
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bne _080DF040
- strh r3, [r5, 0x1E]
- ldrh r3, [r5, 0x18]
- b _080DF044
- .align 2, 0
-_080DF03C: .4byte gBattle_BG2_X
-_080DF040:
- strh r2, [r5, 0x1E]
- ldrh r3, [r5, 0x1A]
-_080DF044:
- movs r0, 0
- strh r0, [r5, 0x26]
- ldrh r1, [r5, 0xC]
- lsls r2, r1, 16
- asrs r1, r2, 16
- movs r6, 0xE
- ldrsh r0, [r5, r6]
- cmp r1, r0
- bgt _080DF07A
- ldr r4, _080DF084 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r0, r4
- mov r12, r0
-_080DF060:
- asrs r2, 16
- lsls r1, r2, 1
- adds r0, r1, r4
- strh r3, [r0]
- add r1, r12
- strh r3, [r1]
- adds r2, 0x1
- lsls r2, 16
- asrs r1, r2, 16
- movs r6, 0xE
- ldrsh r0, [r5, r6]
- cmp r1, r0
- ble _080DF060
-_080DF07A:
- cmp r7, 0x1
- bne _080DF08C
- ldr r0, _080DF088 @ =0x04000014
- b _080DF08E
- .align 2, 0
-_080DF084: .4byte gScanlineEffectRegBuffers
-_080DF088: .4byte 0x04000014
-_080DF08C:
- ldr r0, _080DF0B8 @ =0x04000018
-_080DF08E:
- str r0, [sp]
- ldr r0, _080DF0BC @ =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, _080DF0C0 @ =sub_80DF0C4
- str r0, [r5]
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF0B8: .4byte 0x04000018
-_080DF0BC: .4byte 0xa2600001
-_080DF0C0: .4byte sub_80DF0C4
- thumb_func_end sub_80DEF9C
-
- thumb_func_start sub_80DF0C4
-sub_80DF0C4: @ 80DF0C4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _080DF114 @ =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0x8]
- ldrh r1, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r4, 0xC]
- movs r3, 0xC
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bge _080DF0EC
- strh r2, [r4, 0x8]
-_080DF0EC:
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080DF118
- ldrh r0, [r4, 0xA]
- ldrh r1, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r4, 0xC]
- movs r3, 0xC
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bge _080DF11C
- strh r2, [r4, 0xA]
- movs r0, 0x1
- strh r0, [r4, 0x26]
- b _080DF11C
- .align 2, 0
-_080DF114: .4byte gTasks
-_080DF118:
- subs r0, r1, 0x1
- strh r0, [r4, 0x10]
-_080DF11C:
- ldrh r0, [r4, 0x14]
- adds r0, 0x1
- strh r0, [r4, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080DF148
- movs r0, 0
- strh r0, [r4, 0x14]
- movs r1, 0
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080DF13A
- movs r1, 0x1
-_080DF13A:
- strh r1, [r4, 0x16]
- cmp r1, 0
- beq _080DF144
- ldrh r0, [r4, 0x18]
- b _080DF146
-_080DF144:
- ldrh r0, [r4, 0x1A]
-_080DF146:
- strh r0, [r4, 0x20]
-_080DF148:
- ldrh r1, [r4, 0x8]
- lsls r3, r1, 16
- asrs r1, r3, 16
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bge _080DF17C
- ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
-_080DF15E:
- asrs r3, 16
- lsls r1, r3, 1
- adds r2, r1, r5
- ldrh r0, [r4, 0x20]
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r4, 0x20]
- strh r0, [r1]
- adds r3, 0x1
- lsls r3, 16
- asrs r1, r3, 16
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r1, r0
- blt _080DF15E
-_080DF17C:
- ldrh r1, [r4, 0xA]
- lsls r3, r1, 16
- asrs r1, r3, 16
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bgt _080DF1B0
- ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
-_080DF192:
- asrs r3, 16
- lsls r1, r3, 1
- adds r2, r1, r5
- ldrh r0, [r4, 0x1E]
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r4, 0x1E]
- strh r0, [r1]
- adds r3, 0x1
- lsls r3, 16
- asrs r1, r3, 16
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r1, r0
- ble _080DF192
-_080DF1B0:
- movs r3, 0x26
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080DF1CC
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080DF1C6
- ldr r1, _080DF1D8 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080DF1C6:
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080DF1CC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF1D4: .4byte gScanlineEffectRegBuffers
-_080DF1D8: .4byte gScanlineEffect
- thumb_func_end sub_80DF0C4
-
- thumb_func_start sub_80DF1DC
-sub_80DF1DC: @ 80DF1DC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080DF230 @ =gTasks
- adds r4, r0
- movs r5, 0
- strh r5, [r4, 0x8]
- strh r5, [r4, 0xA]
- ldr r6, _080DF234 @ =gUnknown_2037F1A
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xC]
- ldrb r0, [r6]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xE]
- movs r0, 0x20
- strh r0, [r4, 0x10]
- ldr r0, _080DF238 @ =0x0000ffec
- strh r0, [r4, 0x12]
- strh r5, [r4, 0x14]
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r0, _080DF23C @ =sub_80DF240
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF230: .4byte gTasks
-_080DF234: .4byte gUnknown_2037F1A
-_080DF238: .4byte 0x0000ffec
-_080DF23C: .4byte sub_80DF240
- thumb_func_end sub_80DF1DC
-
- thumb_func_start sub_80DF240
-sub_80DF240: @ 80DF240
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080DF26C @ =gTasks
- adds r6, r0, r1
- movs r1, 0x8
- ldrsh r0, [r6, r1]
- cmp r0, 0x5
- bls _080DF260
- b _080DF41A
-_080DF260:
- lsls r0, 2
- ldr r1, _080DF270 @ =_080DF274
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080DF26C: .4byte gTasks
-_080DF270: .4byte _080DF274
- .align 2, 0
-_080DF274:
- .4byte _080DF28C
- .4byte _080DF34C
- .4byte _080DF37A
- .4byte _080DF38E
- .4byte _080DF3A4
- .4byte _080DF40C
-_080DF28C:
- movs r0, 0xC
- ldrsh r2, [r6, r0]
- ldrh r1, [r6, 0xA]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080DF2A2
- movs r1, 0x10
- ldrsh r0, [r6, r1]
- subs r0, r2, r0
- b _080DF2A8
-_080DF2A2:
- movs r1, 0x10
- ldrsh r0, [r6, r1]
- adds r0, r2, r0
-_080DF2A8:
- lsls r0, 16
- lsrs r1, r0, 16
- ldrh r2, [r6, 0x12]
- ldrh r0, [r6, 0xE]
- adds r2, r0
- ldr r0, _080DF33C @ =gUnknown_83E398C
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- ldrb r4, [r6, 0xA]
- movs r3, 0x6
- subs r3, r4
- lsls r3, 24
- lsrs r3, 24
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xB3
- bl PlaySE12WithPanning
- cmp r4, 0x40
- beq _080DF30C
- ldr r5, _080DF340 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r3, r1, r5
- ldrh r0, [r6, 0xA]
- movs r2, 0x1
- ands r2, r0
- adds r3, 0x3F
- ldrb r4, [r3]
- movs r0, 0x2
- negs r0, r0
- ands r0, r4
- orrs r0, r2
- strb r0, [r3]
- adds r5, 0x1C
- adds r1, r5
- ldr r0, _080DF344 @ =SpriteCallbackDummy
- str r0, [r1]
-_080DF30C:
- ldrh r1, [r6, 0xA]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _080DF324
- ldrh r0, [r6, 0x10]
- subs r0, 0x6
- strh r0, [r6, 0x10]
- ldrh r0, [r6, 0x12]
- subs r0, 0x6
- strh r0, [r6, 0x12]
-_080DF324:
- ldrh r1, [r6, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080DF348 @ =gUnknown_83FF080
- adds r0, r6, 0
- bl sub_80762D0
- ldrh r0, [r6, 0xA]
- adds r0, 0x1
- strh r0, [r6, 0xA]
- strh r4, [r6, 0x8]
- b _080DF41A
- .align 2, 0
-_080DF33C: .4byte gUnknown_83E398C
-_080DF340: .4byte gSprites
-_080DF344: .4byte SpriteCallbackDummy
-_080DF348: .4byte gUnknown_83FF080
-_080DF34C:
- adds r0, r6, 0
- bl sub_8076308
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080DF41A
- movs r2, 0xA
- ldrsh r1, [r6, r2]
- cmp r1, 0x6
- bne _080DF36C
- movs r0, 0x8
- strh r0, [r6, 0x14]
- movs r0, 0x3
- strh r0, [r6, 0x8]
- b _080DF41A
-_080DF36C:
- cmp r1, 0x2
- bgt _080DF372
- movs r0, 0xA
-_080DF372:
- strh r0, [r6, 0x14]
- movs r0, 0x2
- strh r0, [r6, 0x8]
- b _080DF41A
-_080DF37A:
- ldrh r0, [r6, 0x14]
- movs r2, 0x14
- ldrsh r1, [r6, r2]
- cmp r1, 0
- beq _080DF38A
- subs r0, 0x1
- strh r0, [r6, 0x14]
- b _080DF41A
-_080DF38A:
- strh r1, [r6, 0x8]
- b _080DF41A
-_080DF38E:
- ldrh r1, [r6, 0x14]
- movs r2, 0x14
- ldrsh r0, [r6, r2]
- cmp r0, 0
- beq _080DF39E
- subs r0, r1, 0x1
- strh r0, [r6, 0x14]
- b _080DF41A
-_080DF39E:
- movs r0, 0x4
- strh r0, [r6, 0x8]
- b _080DF41A
-_080DF3A4:
- movs r5, 0
- movs r7, 0
- ldr r3, _080DF400 @ =gSprites
- movs r0, 0x1C
- adds r0, r3
- mov r8, r0
-_080DF3B0:
- lsls r0, r5, 4
- adds r0, r5
- lsls r4, r0, 2
- adds r0, r3, 0
- adds r0, 0x14
- adds r0, r4, r0
- ldr r1, [r0]
- ldr r0, _080DF404 @ =gUnknown_83E398C
- cmp r1, r0
- bne _080DF3EC
- adds r0, r4, r3
- strh r2, [r0, 0x2E]
- movs r1, 0x6
- strh r1, [r0, 0x30]
- movs r1, 0x2
- str r2, [sp]
- str r3, [sp, 0x4]
- bl StartSpriteAnim
- mov r0, r8
- adds r1, r4, r0
- ldr r0, _080DF408 @ =sub_80DF428
- str r0, [r1]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r2, [sp]
- ldr r3, [sp, 0x4]
- cmp r7, 0x6
- beq _080DF3F6
-_080DF3EC:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3F
- bls _080DF3B0
-_080DF3F6:
- strh r7, [r6, 0x14]
- movs r0, 0x5
- strh r0, [r6, 0x8]
- b _080DF41A
- .align 2, 0
-_080DF400: .4byte gSprites
-_080DF404: .4byte gUnknown_83E398C
-_080DF408: .4byte sub_80DF428
-_080DF40C:
- movs r1, 0x14
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080DF41A
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080DF41A:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80DF240
-
- thumb_func_start sub_80DF428
-sub_80DF428: @ 80DF428
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080DF45C
- ldr r3, _080DF464 @ =gTasks
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x2E
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_080DF45C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF464: .4byte gTasks
- thumb_func_end sub_80DF428
-
- thumb_func_start sub_80DF468
-sub_80DF468: @ 80DF468
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080DF47C
- adds r0, r5, 0
- movs r1, 0
- bl sub_8075160
-_080DF47C:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x27
- bgt _080DF4AE
- ldrh r0, [r5, 0x2E]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080DF4A0
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- b _080DF4AC
-_080DF4A0:
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
-_080DF4AC:
- strb r0, [r2]
-_080DF4AE:
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0x1E
- ble _080DF4C4
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080DF4C4:
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x3D
- bne _080DF510
- ldr r1, _080DF518 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldrh r0, [r5, 0x24]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- movs r1, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x26]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- strh r1, [r5, 0x24]
- strh r1, [r5, 0x26]
- movs r0, 0x14
- strh r0, [r5, 0x2E]
- ldr r4, _080DF51C @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, _080DF520 @ =sub_8075590
- str r0, [r5, 0x1C]
-_080DF510:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF518: .4byte DestroyAnimSprite
-_080DF51C: .4byte gUnknown_2037F1B
-_080DF520: .4byte sub_8075590
- thumb_func_end sub_80DF468
-
- thumb_func_start sub_80DF524
-sub_80DF524: @ 80DF524
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080DF544 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080DF548
- cmp r0, 0x1
- beq _080DF568
- b _080DF57A
- .align 2, 0
-_080DF544: .4byte gTasks
-_080DF548:
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080DF564 @ =gUnknown_83FF130
- adds r0, r4, 0
- bl sub_80762D0
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080DF57A
- .align 2, 0
-_080DF564: .4byte gUnknown_83FF130
-_080DF568:
- adds r0, r4, 0
- bl sub_8076308
- lsls r0, 24
- cmp r0, 0
- bne _080DF57A
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DF57A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DF524
-
- thumb_func_start sub_80DF580
-sub_80DF580: @ 80DF580
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080DF5E0
- cmp r0, 0x1
- bgt _080DF5A0
- cmp r0, 0
- beq _080DF5AA
- b _080DF682
-_080DF5A0:
- cmp r0, 0x2
- beq _080DF610
- cmp r0, 0x3
- beq _080DF664
- b _080DF682
-_080DF5AA:
- ldr r4, _080DF5DC @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- adds r0, r6, 0
- movs r1, 0
- bl sub_80758E0
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r5, 0x30]
- strh r0, [r5, 0x32]
- b _080DF658
- .align 2, 0
-_080DF5DC: .4byte gUnknown_2037F1A
-_080DF5E0:
- ldrh r0, [r5, 0x30]
- adds r0, 0x60
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- subs r0, 0x1A
- strh r0, [r5, 0x32]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- movs r0, 0x32
- ldrsh r2, [r5, r0]
- adds r0, r6, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080DF610
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
-_080DF610:
- ldrh r0, [r5, 0x30]
- adds r0, 0x60
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x30
- strh r0, [r5, 0x32]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- movs r0, 0x32
- ldrsh r2, [r5, r0]
- adds r0, r6, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bne _080DF682
- movs r0, 0
- strh r0, [r5, 0x34]
- ldr r1, _080DF660 @ =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r0, r6, 0
- bl sub_8075980
-_080DF658:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080DF682
- .align 2, 0
-_080DF660: .4byte gSprites
-_080DF664:
- ldrh r0, [r5, 0x26]
- subs r0, 0x6
- strh r0, [r5, 0x26]
- movs r1, 0x22
- ldrsh r0, [r5, r1]
- movs r2, 0x26
- ldrsh r1, [r5, r2]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _080DF682
- adds r0, r5, 0
- bl DestroyAnimSprite
-_080DF682:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80DF580
-
- thumb_func_start sub_80DF688
-sub_80DF688: @ 80DF688
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080DF6A0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080DF6A8
- ldr r0, _080DF6A4 @ =0x0000fff0
- b _080DF6AC
- .align 2, 0
-_080DF6A0: .4byte gUnknown_2037F1A
-_080DF6A4: .4byte 0x0000fff0
-_080DF6A8:
- movs r0, 0x80
- lsls r0, 1
-_080DF6AC:
- strh r0, [r4, 0x20]
- movs r0, 0
- strh r0, [r4, 0x22]
- ldr r0, _080DF6BC @ =sub_80DF6C0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF6BC: .4byte sub_80DF6C0
- thumb_func_end sub_80DF688
-
- thumb_func_start sub_80DF6C0
-sub_80DF6C0: @ 80DF6C0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x48
- strh r0, [r4, 0x2E]
- ldr r0, _080DF6E0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080DF6E4
- ldrh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 20
- b _080DF6EC
- .align 2, 0
-_080DF6E0: .4byte gUnknown_2037F1A
-_080DF6E4:
- ldrh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 20
- negs r0, r0
-_080DF6EC:
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x10
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r5, r0, r1
- strh r5, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _080DF738
- ldr r0, _080DF758 @ =gUnknown_83FF180
- ldrh r1, [r4, 0x24]
- ldrh r2, [r4, 0x20]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- ldrh r2, [r4, 0x22]
- adds r2, r5
- lsls r2, 16
- asrs r2, 16
- adds r3, r4, 0
- adds r3, 0x43
- ldrb r3, [r3]
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- bl CreateSpriteAndAnimate
-_080DF738:
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- adds r0, r1
- adds r0, 0x20
- movs r1, 0x98
- lsls r1, 1
- cmp r0, r1
- bls _080DF752
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DF752:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF758: .4byte gUnknown_83FF180
- thumb_func_end sub_80DF6C0
-
- thumb_func_start sub_80DF75C
-sub_80DF75C: @ 80DF75C
- push {r4,lr}
- adds r4, r0, 0
- bl Random
- movs r1, 0x3
- ands r0, r1
- cmp r0, 0
- bne _080DF776
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x4
- b _080DF77E
-_080DF776:
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x5
-_080DF77E:
- ldr r3, _080DF7B0 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080DF7B4 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- bl Random
- movs r1, 0x7
- ands r0, r1
- adds r1, r0, 0
- cmp r1, 0x3
- ble _080DF7A0
- negs r0, r1
- lsls r0, 24
- lsrs r0, 24
-_080DF7A0:
- lsls r0, 24
- asrs r0, 24
- strh r0, [r4, 0x26]
- ldr r0, _080DF7B8 @ =sub_80DF7BC
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF7B0: .4byte 0x000003ff
-_080DF7B4: .4byte 0xfffffc00
-_080DF7B8: .4byte sub_80DF7BC
- thumb_func_end sub_80DF75C
-
- thumb_func_start sub_80DF7BC
-sub_80DF7BC: @ 80DF7BC
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1D
- bgt _080DF7FE
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080DF832
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- movs r0, 0
- b _080DF830
-_080DF7FE:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0x2
- bne _080DF814
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080DF814:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0x3
- bne _080DF82C
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080DF844 @ =0x0000ffff
- strh r0, [r3, 0x30]
-_080DF82C:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
-_080DF830:
- strh r0, [r3, 0x30]
-_080DF832:
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- cmp r0, 0x3C
- ble _080DF840
- adds r0, r3, 0
- bl DestroySprite
-_080DF840:
- pop {r0}
- bx r0
- .align 2, 0
-_080DF844: .4byte 0x0000ffff
- thumb_func_end sub_80DF7BC
-
- thumb_func_start sub_80DF848
-sub_80DF848: @ 80DF848
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080DF880 @ =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 _080DF888
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080DF884 @ =gUnknown_83FF198
- adds r0, r4, 0
- bl sub_80762D0
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080DF89A
- .align 2, 0
-_080DF880: .4byte gTasks
-_080DF884: .4byte gUnknown_83FF198
-_080DF888:
- adds r0, r4, 0
- bl sub_8076308
- lsls r0, 24
- cmp r0, 0
- bne _080DF89A
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DF89A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DF848
-
- thumb_func_start sub_80DF8A0
-sub_80DF8A0: @ 80DF8A0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080DF8D8 @ =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 _080DF8E0
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080DF8DC @ =gUnknown_83FF1C0
- adds r0, r4, 0
- bl sub_80762D0
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080DF8F2
- .align 2, 0
-_080DF8D8: .4byte gTasks
-_080DF8DC: .4byte gUnknown_83FF1C0
-_080DF8E0:
- adds r0, r4, 0
- bl sub_8076308
- lsls r0, 24
- cmp r0, 0
- bne _080DF8F2
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DF8F2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DF8A0
-
- thumb_func_start sub_80DF8F8
-sub_80DF8F8: @ 80DF8F8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080DF90A
- cmp r0, 0x1
- beq _080DF934
- b _080DF95C
-_080DF90A:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075160
- movs r0, 0x90
- lsls r0, 4
- strh r0, [r4, 0x30]
- ldr r0, _080DF930 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080DF95C
- .align 2, 0
-_080DF930: .4byte gUnknown_2037F1A
-_080DF934:
- ldrh r2, [r4, 0x30]
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r4, 0x26]
- subs r0, r1
- strh r0, [r4, 0x26]
- subs r2, 0x60
- strh r2, [r4, 0x30]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- cmp r0, r1
- ble _080DF95C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DF95C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DF8F8
-
- thumb_func_start sub_80DF964
-sub_80DF964: @ 80DF964
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080DF99C @ =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 _080DF9A4
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080DF9A0 @ =gUnknown_83FF210
- adds r0, r4, 0
- bl sub_80762D0
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080DF9B6
- .align 2, 0
-_080DF99C: .4byte gTasks
-_080DF9A0: .4byte gUnknown_83FF210
-_080DF9A4:
- adds r0, r4, 0
- bl sub_8076308
- lsls r0, 24
- cmp r0, 0
- bne _080DF9B6
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DF9B6:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DF964
-
- thumb_func_start sub_80DF9BC
-sub_80DF9BC: @ 80DF9BC
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080DF9E4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r3, r1, 0
- cmp r0, 0x4
- bls _080DF9DA
- b _080DFBCE
-_080DF9DA:
- lsls r0, 2
- ldr r1, _080DF9E8 @ =_080DF9EC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080DF9E4: .4byte gTasks
-_080DF9E8: .4byte _080DF9EC
- .align 2, 0
-_080DF9EC:
- .4byte _080DFA00
- .4byte _080DFA4C
- .4byte _080DFA86
- .4byte _080DFB1C
- .4byte _080DFB58
-_080DFA00:
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- ldr r0, _080DFA24 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080DFA28
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x1
- bl SetAnimBgAttribute
- b _080DFA32
- .align 2, 0
-_080DFA24: .4byte gUnknown_2037F1A
-_080DFA28:
- movs r0, 0x2
- movs r1, 0x2
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080DFA32:
- ldr r0, _080DFA44 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080DFA48 @ =gUnknown_2037F02
- ldrh r0, [r0]
- strh r0, [r1, 0x1C]
- b _080DFB00
- .align 2, 0
-_080DFA44: .4byte gTasks
-_080DFA48: .4byte gUnknown_2037F02
-_080DFA4C:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r5, r0, r3
- ldrh r0, [r5, 0xC]
- adds r1, r0, 0x1
- strh r1, [r5, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bgt _080DFA64
- b _080DFBCE
-_080DFA64:
- movs r0, 0
- strh r0, [r5, 0xC]
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- ldrh r4, [r5, 0xA]
- lsls r1, r4, 4
- orrs r1, r4
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4C
- bl SetGpuReg
- cmp r4, 0xF
- beq _080DFA84
- b _080DFBCE
-_080DFA84:
- b _080DFB50
-_080DFA86:
- ldr r6, _080DFAB4 @ =gUnknown_2037F1A
- ldrb r0, [r6]
- ldr r1, _080DFAB8 @ =gUnknown_2037F1B
- ldrb r1, [r1]
- lsls r4, r5, 2
- adds r2, r4, r5
- lsls r2, 3
- adds r2, r3
- ldrb r2, [r2, 0x1C]
- bl sub_8034BF4
- ldrb r1, [r6]
- mov r0, sp
- bl sub_8075300
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080DFABC
- movs r1, 0
- b _080DFAC6
- .align 2, 0
-_080DFAB4: .4byte gUnknown_2037F1A
-_080DFAB8: .4byte gUnknown_2037F1B
-_080DFABC:
- ldrb r0, [r6]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r1, r0, 24
-_080DFAC6:
- ldr r0, _080DFB08 @ =gMonSpritesGfxPtr
- ldr r2, [r0]
- lsls r0, r1, 2
- adds r2, 0x4
- adds r2, r0
- ldr r1, _080DFB0C @ =gBattleMonForms
- ldr r0, _080DFB10 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r1, 11
- ldr r0, [r2]
- adds r0, r1
- ldr r1, [sp]
- ldr r2, _080DFB14 @ =0x04000200
- bl CpuSet
- ldr r1, [sp]
- movs r2, 0x80
- lsls r2, 4
- mov r0, sp
- ldrh r3, [r0, 0xA]
- movs r0, 0x1
- bl LoadBgTiles
- ldr r0, _080DFB18 @ =gTasks
- adds r1, r4, r5
- lsls r1, 3
- adds r1, r0
-_080DFB00:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _080DFBCE
- .align 2, 0
-_080DFB08: .4byte gMonSpritesGfxPtr
-_080DFB0C: .4byte gBattleMonForms
-_080DFB10: .4byte gUnknown_2037F1A
-_080DFB14: .4byte 0x04000200
-_080DFB18: .4byte gTasks
-_080DFB1C:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r5, r0, r3
- ldrh r0, [r5, 0xC]
- adds r1, r0, 0x1
- strh r1, [r5, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080DFBCE
- movs r0, 0
- strh r0, [r5, 0xC]
- ldrh r0, [r5, 0xA]
- subs r0, 0x1
- strh r0, [r5, 0xA]
- ldrh r4, [r5, 0xA]
- lsls r1, r4, 4
- orrs r1, r4
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4C
- bl SetGpuReg
- cmp r4, 0
- bne _080DFBCE
-_080DFB50:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080DFBCE
-_080DFB58:
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- ldr r0, _080DFB7C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080DFB80
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl SetAnimBgAttribute
- b _080DFB8A
- .align 2, 0
-_080DFB7C: .4byte gUnknown_2037F1A
-_080DFB80:
- movs r0, 0x2
- movs r1, 0x2
- movs r2, 0
- bl SetAnimBgAttribute
-_080DFB8A:
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080DFBC8
- ldr r4, _080DFBD8 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080DFBC8
- ldr r0, _080DFBDC @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x1C
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080DFBC8
- ldrb r0, [r4]
- ldr r1, _080DFBE0 @ =gUnknown_2024018
- ldr r1, [r1]
- ldr r2, [r1]
- lsls r1, r0, 2
- adds r1, r2
- ldrh r1, [r1, 0x2]
- bl SetBankEnemyShadowSpriteCallback
-_080DFBC8:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DFBCE:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DFBD8: .4byte gUnknown_2037F1A
-_080DFBDC: .4byte gTasks
-_080DFBE0: .4byte gUnknown_2024018
- thumb_func_end sub_80DF9BC
-
- thumb_func_start c3_80DFBE4
-c3_80DFBE4: @ 80DFBE4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _080DFC14 @ =gUnknown_2037F02
- ldr r3, _080DFC18 @ =gSprites
- ldr r2, _080DFC1C @ =gUnknown_2023D44
- ldr r1, _080DFC20 @ =gUnknown_2037F1A
- ldrb r1, [r1]
- adds r1, r2
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- adds r1, 0x3E
- ldrb r1, [r1]
- lsls r1, 29
- lsrs r1, 31
- strh r1, [r4, 0xE]
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DFC14: .4byte gUnknown_2037F02
-_080DFC18: .4byte gSprites
-_080DFC1C: .4byte gUnknown_2023D44
-_080DFC20: .4byte gUnknown_2037F1A
- thumb_func_end c3_80DFBE4
-
- thumb_func_start sub_80DFC24
-sub_80DFC24: @ 80DFC24
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080DFC48 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- ldr r1, _080DFC4C @ =gUnknown_2037F1B
- ldrb r1, [r1]
- movs r2, 0x1
- bl sub_8034BF4
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DFC48: .4byte gUnknown_2037F1A
-_080DFC4C: .4byte gUnknown_2037F1B
- thumb_func_end sub_80DFC24
-
- thumb_func_start sub_80DFC50
-sub_80DFC50: @ 80DFC50
- push {r4,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080DFC78 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0x4
- bls _080DFC6E
- b _080DFECA
-_080DFC6E:
- lsls r0, 2
- ldr r1, _080DFC7C @ =_080DFC80
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080DFC78: .4byte gTasks
-_080DFC7C: .4byte _080DFC80
- .align 2, 0
-_080DFC80:
- .4byte _080DFC94
- .4byte _080DFD90
- .4byte _080DFDE0
- .4byte _080DFE4A
- .4byte _080DFE7E
-_080DFC94:
- ldr r1, _080DFD18 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080DFCCE
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080DFCCE:
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080DFD1C @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap
- bl sub_807543C
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080DFD20 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080DFD24 @ =gFile_graphics_battle_anims_masks_morning_sun_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080DFD30
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
- ldr r1, _080DFD28 @ =gBattle_BG1_X
- ldr r3, _080DFD2C @ =0x0000ffc8
- b _080DFD58
- .align 2, 0
-_080DFD18: .4byte 0x00003f42
-_080DFD1C: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap
-_080DFD20: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet
-_080DFD24: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette
-_080DFD28: .4byte gBattle_BG1_X
-_080DFD2C: .4byte 0x0000ffc8
-_080DFD30:
- ldr r0, _080DFD48 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080DFD54
- ldr r1, _080DFD4C @ =gBattle_BG1_X
- ldr r2, _080DFD50 @ =0x0000ff79
- adds r0, r2, 0
- b _080DFD5A
- .align 2, 0
-_080DFD48: .4byte gUnknown_2037F1A
-_080DFD4C: .4byte gBattle_BG1_X
-_080DFD50: .4byte 0x0000ff79
-_080DFD54:
- ldr r1, _080DFD80 @ =gBattle_BG1_X
- ldr r3, _080DFD84 @ =0x0000fff6
-_080DFD58:
- adds r0, r3, 0
-_080DFD5A:
- strh r0, [r1]
- ldr r1, _080DFD88 @ =gBattle_BG1_Y
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080DFD8C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080DFD80 @ =gBattle_BG1_X
- ldrh r0, [r0]
- strh r0, [r1, 0x1C]
- ldr r0, _080DFD88 @ =gBattle_BG1_Y
- ldrh r0, [r0]
- strh r0, [r1, 0x1E]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- b _080DFE66
- .align 2, 0
-_080DFD80: .4byte gBattle_BG1_X
-_080DFD84: .4byte 0x0000fff6
-_080DFD88: .4byte gBattle_BG1_Y
-_080DFD8C: .4byte gTasks
-_080DFD90:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x10]
- adds r1, r0, 0x1
- strh r1, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bgt _080DFDA6
- b _080DFECA
-_080DFDA6:
- movs r0, 0
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _080DFDBC
- movs r0, 0xC
- strh r0, [r4, 0xA]
-_080DFDBC:
- ldrh r0, [r4, 0xA]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0xC
- bne _080DFECA
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080DFECA
-_080DFDE0:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bge _080DFDF8
- movs r0, 0
- strh r0, [r4, 0xA]
-_080DFDF8:
- ldrh r0, [r4, 0xA]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080DFECA
- ldr r2, _080DFE3C @ =gBattle_BG1_X
- ldr r1, _080DFE40 @ =gUnknown_83FF240
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r1, [r4, 0x1C]
- adds r0, r1
- strh r0, [r2]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080DFE44
- strh r0, [r4, 0x8]
- b _080DFECA
- .align 2, 0
-_080DFE3C: .4byte gBattle_BG1_X
-_080DFE40: .4byte gUnknown_83FF240
-_080DFE44:
- movs r0, 0x3
- strh r0, [r4, 0x8]
- b _080DFECA
-_080DFE4A:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r2
- ldrh r0, [r1, 0xE]
- adds r0, 0x1
- strh r0, [r1, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080DFECA
- movs r0, 0
- strh r0, [r1, 0xE]
- movs r0, 0x1
-_080DFE66:
- strh r0, [r1, 0x8]
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xDD
- bl PlaySE12WithPanning
- b _080DFECA
-_080DFE7E:
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- bl sub_8075358
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080DFEA0
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080DFEA0:
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- ldr r0, _080DFED4 @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080DFED8 @ =gBattle_BG1_Y
- strh r1, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080DFECA:
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DFED4: .4byte gBattle_BG1_X
-_080DFED8: .4byte gBattle_BG1_Y
- thumb_func_end sub_80DFC50
-
- thumb_func_start sub_80DFEDC
-sub_80DFEDC: @ 80DFEDC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r7, r0, 0
- bl Random
- lsls r0, 16
- movs r1, 0xFC
- lsls r1, 14
- ands r1, r0
- lsrs r5, r1, 16
- adds r1, r5, 0
- cmp r1, 0x1F
- ble _080DFF06
- movs r0, 0x20
- subs r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
-_080DFF06:
- ldr r4, _080E0000 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, r5
- strh r0, [r7, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x20
- strh r0, [r7, 0x22]
- ldr r1, _080E0004 @ =gUnknown_2037F02
- ldrh r0, [r1]
- strh r0, [r7, 0x30]
- ldrh r0, [r1, 0x2]
- strh r0, [r7, 0x32]
- ldr r4, _080E0008 @ =gUnknown_83FF26C
- movs r0, 0x20
- ldrsh r1, [r7, r0]
- movs r0, 0x22
- ldrsh r2, [r7, r0]
- adds r5, r7, 0
- adds r5, 0x43
- ldrb r3, [r5]
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- bl CreateSprite
- mov r9, r0
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- movs r0, 0x20
- ldrsh r1, [r7, r0]
- movs r0, 0x22
- ldrsh r2, [r7, r0]
- ldrb r3, [r5]
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- bl CreateSprite
- mov r8, r0
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- mov r0, r9
- lsls r2, r0, 4
- add r2, r9
- lsls r2, 2
- ldr r1, _080E000C @ =gSprites
- mov r10, r1
- adds r5, r2, r1
- adds r0, r5, 0
- movs r1, 0x1
- str r2, [sp]
- bl StartSpriteAnim
- mov r0, r8
- lsls r6, r0, 4
- add r6, r8
- lsls r6, 2
- mov r1, r10
- adds r4, r6, r1
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
- ldr r1, _080E0004 @ =gUnknown_2037F02
- ldrh r0, [r1]
- strh r0, [r5, 0x30]
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0x32]
- ldrh r0, [r1]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x32]
- ldr r0, _080E0010 @ =0x0000ffff
- strh r0, [r5, 0x3C]
- movs r0, 0x1
- negs r0, r0
- strh r0, [r4, 0x3C]
- adds r5, 0x3E
- ldrb r0, [r5]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r5]
- adds r4, 0x3E
- ldrb r0, [r4]
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x1C
- add r10, r0
- ldr r2, [sp]
- add r2, r10
- ldr r0, _080E0014 @ =sub_80E0128
- str r0, [r2]
- add r6, r10
- str r0, [r6]
- mov r1, r9
- strh r1, [r7, 0x3A]
- mov r0, r8
- strh r0, [r7, 0x3C]
- ldr r0, _080E0018 @ =sub_80E001C
- str r0, [r7, 0x1C]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0000: .4byte gUnknown_2037F1A
-_080E0004: .4byte gUnknown_2037F02
-_080E0008: .4byte gUnknown_83FF26C
-_080E000C: .4byte gSprites
-_080E0010: .4byte 0x0000ffff
-_080E0014: .4byte sub_80E0128
-_080E0018: .4byte sub_80E001C
- thumb_func_end sub_80DFEDC
-
- thumb_func_start sub_80E001C
-sub_80E001C: @ 80E001C
- push {lr}
- adds r3, r0, 0
- ldrh r2, [r3, 0x32]
- ldrh r0, [r3, 0x34]
- adds r2, r0
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r1, [r3, 0x26]
- subs r1, r0
- strh r1, [r3, 0x26]
- movs r0, 0xFF
- ands r2, r0
- strh r2, [r3, 0x34]
- movs r2, 0x36
- ldrsh r0, [r3, r2]
- cmp r0, 0
- bne _080E006A
- lsls r0, r1, 16
- asrs r0, 16
- movs r1, 0x8
- negs r1, r1
- cmp r0, r1
- bge _080E006A
- ldr r2, _080E00C4 @ =gSprites
- movs r0, 0x3A
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldrh r0, [r3, 0x36]
- adds r0, 0x1
- strh r0, [r3, 0x36]
-_080E006A:
- movs r1, 0x36
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- bne _080E009E
- movs r2, 0x26
- ldrsh r1, [r3, r2]
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- bge _080E009E
- ldr r2, _080E00C4 @ =gSprites
- movs r0, 0x3C
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldrh r0, [r3, 0x36]
- adds r0, 0x1
- strh r0, [r3, 0x36]
-_080E009E:
- ldrh r0, [r3, 0x30]
- subs r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080E00C0
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080E00C8 @ =sub_80E00CC
- str r0, [r3, 0x1C]
-_080E00C0:
- pop {r0}
- bx r0
- .align 2, 0
-_080E00C4: .4byte gSprites
-_080E00C8: .4byte sub_80E00CC
- thumb_func_end sub_80E001C
-
- thumb_func_start sub_80E00CC
-sub_80E00CC: @ 80E00CC
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, _080E0120 @ =gSprites
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r3, r0, 2
- adds r6, r5, 0
- adds r6, 0x1C
- adds r0, r3, r6
- ldr r2, [r0]
- ldr r0, _080E0124 @ =SpriteCallbackDummy
- cmp r2, r0
- bne _080E0118
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldr r0, [r1]
- cmp r0, r2
- bne _080E0118
- adds r0, r3, r5
- bl DestroySprite
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E0118:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0120: .4byte gSprites
-_080E0124: .4byte SpriteCallbackDummy
- thumb_func_end sub_80E00CC
-
- thumb_func_start sub_80E0128
-sub_80E0128: @ 80E0128
- push {lr}
- adds r3, r0, 0
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _080E0174
- ldrh r2, [r3, 0x32]
- ldrh r1, [r3, 0x34]
- adds r2, r1
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r3, 0x26]
- subs r0, r1
- strh r0, [r3, 0x26]
- movs r0, 0xFF
- ands r2, r0
- strh r2, [r3, 0x34]
- ldrh r0, [r3, 0x30]
- subs r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080E0174
- mov r1, r12
- ldrb r0, [r1]
- movs r1, 0x4
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldr r0, _080E0178 @ =SpriteCallbackDummy
- str r0, [r3, 0x1C]
-_080E0174:
- pop {r0}
- bx r0
- .align 2, 0
-_080E0178: .4byte SpriteCallbackDummy
- thumb_func_end sub_80E0128
-
- thumb_func_start sub_80E017C
-sub_80E017C: @ 80E017C
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080E01A4 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0x5
- bls _080E019A
- b _080E0476
-_080E019A:
- lsls r0, 2
- ldr r1, _080E01A8 @ =_080E01AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E01A4: .4byte gTasks
-_080E01A8: .4byte _080E01AC
- .align 2, 0
-_080E01AC:
- .4byte _080E01C4
- .4byte _080E0304
- .4byte _080E038C
- .4byte _080E03C2
- .4byte _080E03F0
- .4byte _080E042A
-_080E01C4:
- ldr r1, _080E0248 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, _080E024C @ =0x00000d03
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080E01FC
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080E01FC:
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080E0250 @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap
- bl sub_807543C
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080E0254 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080E0258 @ =gFile_graphics_battle_anims_masks_morning_sun_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- beq _080E0264
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
- ldr r1, _080E025C @ =gBattle_BG1_X
- ldr r3, _080E0260 @ =0x0000ffc8
- adds r0, r3, 0
- b _080E02CE
- .align 2, 0
-_080E0248: .4byte 0x00003f42
-_080E024C: .4byte 0x00000d03
-_080E0250: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap
-_080E0254: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet
-_080E0258: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette
-_080E025C: .4byte gBattle_BG1_X
-_080E0260: .4byte 0x0000ffc8
-_080E0264:
- ldr r0, _080E02A4 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8075290
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E02B8
- ldr r1, _080E02A8 @ =gBattle_BG1_X
- cmp r4, 0x1
- bne _080E0288
- ldr r2, _080E02AC @ =0x0000ff65
- adds r0, r2, 0
- strh r0, [r1]
-_080E0288:
- cmp r4, 0x3
- bne _080E0292
- ldr r3, _080E02B0 @ =0x0000ff8d
- adds r0, r3, 0
- strh r0, [r1]
-_080E0292:
- cmp r4, 0
- bne _080E029A
- movs r0, 0xE
- strh r0, [r1]
-_080E029A:
- cmp r4, 0x2
- bne _080E02D0
- ldr r1, _080E02A8 @ =gBattle_BG1_X
- ldr r2, _080E02B4 @ =0x0000ffec
- b _080E02CC
- .align 2, 0
-_080E02A4: .4byte gUnknown_2037F1B
-_080E02A8: .4byte gBattle_BG1_X
-_080E02AC: .4byte 0x0000ff65
-_080E02B0: .4byte 0x0000ff8d
-_080E02B4: .4byte 0x0000ffec
-_080E02B8:
- cmp r4, 0x1
- bne _080E02C4
- ldr r1, _080E02F0 @ =gBattle_BG1_X
- ldr r3, _080E02F4 @ =0x0000ff79
- adds r0, r3, 0
- strh r0, [r1]
-_080E02C4:
- cmp r4, 0
- bne _080E02D0
- ldr r1, _080E02F0 @ =gBattle_BG1_X
- ldr r2, _080E02F8 @ =0x0000fff6
-_080E02CC:
- adds r0, r2, 0
-_080E02CE:
- strh r0, [r1]
-_080E02D0:
- ldr r1, _080E02FC @ =gBattle_BG1_Y
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080E0300 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _080E02F0 @ =gBattle_BG1_X
- ldrh r0, [r0]
- strh r0, [r1, 0x1C]
- ldr r0, _080E02FC @ =gBattle_BG1_Y
- ldrh r0, [r0]
- strh r0, [r1, 0x1E]
- b _080E0384
- .align 2, 0
-_080E02F0: .4byte gBattle_BG1_X
-_080E02F4: .4byte 0x0000ff79
-_080E02F8: .4byte 0x0000fff6
-_080E02FC: .4byte gBattle_BG1_Y
-_080E0300: .4byte gTasks
-_080E0304:
- ldr r1, _080E0338 @ =gTasks
- lsls r4, r6, 2
- adds r0, r4, r6
- lsls r0, 3
- adds r5, r0, r1
- movs r0, 0
- strh r0, [r5, 0xE]
- ldr r0, _080E033C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E0348
- ldr r2, _080E0340 @ =gBattle_BG1_X
- ldr r1, _080E0344 @ =gUnknown_83FF284
- movs r3, 0xC
- ldrsh r0, [r5, r3]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r5, [r5, 0x1C]
- adds r0, r5
- b _080E035A
- .align 2, 0
-_080E0338: .4byte gTasks
-_080E033C: .4byte gUnknown_2037F1B
-_080E0340: .4byte gBattle_BG1_X
-_080E0344: .4byte gUnknown_83FF284
-_080E0348:
- ldr r2, _080E0378 @ =gBattle_BG1_X
- ldr r1, _080E037C @ =gUnknown_83FF284
- movs r3, 0xC
- ldrsh r0, [r5, r3]
- adds r0, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- ldrh r0, [r5, 0x1C]
- subs r0, r1
-_080E035A:
- strh r0, [r2]
- ldr r0, _080E0380 @ =gTasks
- adds r1, r4, r6
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xC]
- adds r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080E0384
- strh r0, [r1, 0x8]
- b _080E0476
- .align 2, 0
-_080E0378: .4byte gBattle_BG1_X
-_080E037C: .4byte gUnknown_83FF284
-_080E0380: .4byte gTasks
-_080E0384:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _080E0476
-_080E038C:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r4
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bgt _080E03A6
- movs r0, 0x5
- strh r0, [r4, 0xA]
-_080E03A6:
- ldrh r1, [r4, 0xA]
- lsls r1, 8
- movs r0, 0x3
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bne _080E0476
- b _080E03E2
-_080E03C2:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r4
- ldrh r1, [r4, 0xE]
- adds r1, 0x1
- strh r1, [r4, 0xE]
- lsls r1, 16
- asrs r1, 16
- ldr r2, _080E03EC @ =gUnknown_83FF288
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- adds r0, r2
- ldrb r0, [r0]
- cmp r1, r0
- ble _080E0476
-_080E03E2:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080E0476
- .align 2, 0
-_080E03EC: .4byte gUnknown_83FF288
-_080E03F0:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r4
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- ble _080E040A
- movs r0, 0xD
- strh r0, [r4, 0xA]
-_080E040A:
- ldrh r1, [r4, 0xA]
- lsls r1, 8
- movs r0, 0x3
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0xD
- bne _080E0476
- movs r0, 0x1
- strh r0, [r4, 0x8]
- b _080E0476
-_080E042A:
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- bl sub_8075358
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080E044C
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080E044C:
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- ldr r0, _080E0480 @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080E0484 @ =gBattle_BG1_Y
- strh r1, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080E0476:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0480: .4byte gBattle_BG1_X
-_080E0484: .4byte gBattle_BG1_Y
- thumb_func_end sub_80E017C
-
- thumb_func_start sub_80E0488
-sub_80E0488: @ 80E0488
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080E04C0 @ =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 _080E04C8
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080E04C4 @ =gUnknown_83FF290
- adds r0, r4, 0
- bl sub_80762D0
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080E04DA
- .align 2, 0
-_080E04C0: .4byte gTasks
-_080E04C4: .4byte gUnknown_83FF290
-_080E04C8:
- adds r0, r4, 0
- bl sub_8076308
- lsls r0, 24
- cmp r0, 0
- bne _080E04DA
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080E04DA:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80E0488
-
- thumb_func_start sub_80E04E0
-sub_80E04E0: @ 80E04E0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _080E04FE
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075160
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080E0552
-_080E04FE:
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- cmp r1, 0x14
- ble _080E0552
- ldrh r0, [r4, 0x30]
- adds r0, 0xA0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- adds r0, 0x80
- strh r0, [r4, 0x32]
- ldr r0, _080E052C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080E0530
- ldrh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- b _080E0536
- .align 2, 0
-_080E052C: .4byte gUnknown_2037F1A
-_080E0530:
- ldrh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
-_080E0536:
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x40
- ble _080E0552
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E0552:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E04E0
-
- thumb_func_start sub_80E0558
-sub_80E0558: @ 80E0558
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080E057C @ =gTasks
- adds r4, r0, r1
- ldr r5, _080E0580 @ =gUnknown_2037F02
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080E0584
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- b _080E0618
- .align 2, 0
-_080E057C: .4byte gTasks
-_080E0580: .4byte gUnknown_2037F02
-_080E0584:
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bge _080E0590
- movs r0, 0
- strh r0, [r5, 0x4]
-_080E0590:
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0x2
- ble _080E059C
- movs r0, 0x2
- strh r0, [r5, 0x4]
-_080E059C:
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- movs r0, 0x4
- ldrsh r1, [r5, r0]
- lsls r1, 1
- movs r0, 0x8
- subs r0, r1
- strh r0, [r4, 0xE]
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- lsls r0, 7
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r4, 0x10]
- ldrh r0, [r5, 0x4]
- adds r0, 0x2
- strh r0, [r4, 0x12]
- ldrh r0, [r5, 0x2]
- subs r0, 0x1
- strh r0, [r4, 0x14]
- ldrb r0, [r5]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080E05E8
- ldr r0, _080E05E4 @ =gUnknown_2037F1A
- b _080E05EA
- .align 2, 0
-_080E05E4: .4byte gUnknown_2037F1A
-_080E05E8:
- ldr r0, _080E0620 @ =gUnknown_2037F1B
-_080E05EA:
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E0608
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0x10]
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0x12]
-_080E0608:
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_80758E0
- ldr r0, _080E0624 @ =sub_80E0628
- str r0, [r4]
-_080E0618:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0620: .4byte gUnknown_2037F1B
-_080E0624: .4byte sub_80E0628
- thumb_func_end sub_80E0558
-
- thumb_func_start sub_80E0628
-sub_80E0628: @ 80E0628
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080E064C @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r6, [r4, r0]
- cmp r6, 0x1
- beq _080E06B0
- cmp r6, 0x1
- bgt _080E0650
- cmp r6, 0
- beq _080E065C
- b _080E0788
- .align 2, 0
-_080E064C: .4byte gTasks
-_080E0650:
- cmp r6, 0x2
- beq _080E0708
- cmp r6, 0x3
- bne _080E065A
- b _080E0778
-_080E065A:
- b _080E0788
-_080E065C:
- ldr r2, _080E06AC @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x12]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- strh r1, [r0, 0x24]
- ldrh r0, [r4, 0xC]
- ldrh r1, [r4, 0x10]
- subs r0, r1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0xC]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80759DC
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _080E0788
- strh r6, [r4, 0xA]
- b _080E0770
- .align 2, 0
-_080E06AC: .4byte gSprites
-_080E06B0:
- ldr r2, _080E0704 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- ldrh r2, [r4, 0x12]
- subs r1, r2
- strh r1, [r0, 0x24]
- ldrh r0, [r4, 0x10]
- ldrh r1, [r4, 0xC]
- adds r0, r1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0xC]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80759DC
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- lsls r1, 16
- asrs r1, 16
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- lsls r0, 1
- cmp r1, r0
- blt _080E0788
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080E0770
- .align 2, 0
-_080E0704: .4byte gSprites
-_080E0708:
- ldr r2, _080E076C @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0x12]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- movs r5, 0
- strh r1, [r0, 0x24]
- ldrh r0, [r4, 0xC]
- ldrh r1, [r4, 0x10]
- subs r0, r1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r4, 0xC]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80759DC
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _080E0788
- ldrh r1, [r4, 0x14]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080E0770
- subs r0, r1, 0x1
- strh r0, [r4, 0x14]
- strh r5, [r4, 0xA]
- strh r5, [r4, 0x8]
- b _080E0788
- .align 2, 0
-_080E076C: .4byte gSprites
-_080E0770:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080E0788
-_080E0778:
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8075980
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080E0788:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E0628
-
- thumb_func_start sub_80E0790
-sub_80E0790: @ 80E0790
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080E07AC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080E07B4
- strh r0, [r4, 0x20]
- ldr r1, _080E07B0 @ =gUnknown_2037F02
- ldrh r0, [r1]
- b _080E07BE
- .align 2, 0
-_080E07AC: .4byte gUnknown_2037F1A
-_080E07B0: .4byte gUnknown_2037F02
-_080E07B4:
- movs r0, 0xF0
- strh r0, [r4, 0x20]
- ldr r1, _080E07D8 @ =gUnknown_2037F02
- ldrh r0, [r1]
- subs r0, 0x1E
-_080E07BE:
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x32]
- ldrb r1, [r1, 0x2]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, _080E07DC @ =sub_80E07E0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E07D8: .4byte gUnknown_2037F02
-_080E07DC: .4byte sub_80E07E0
- thumb_func_end sub_80E0790
-
- thumb_func_start sub_80E07E0
-sub_80E07E0: @ 80E07E0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x3
- strh r0, [r4, 0x2E]
- ldr r0, _080E0820 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080E0824
- ldrh r1, [r4, 0x20]
- adds r1, 0x5
- strh r1, [r4, 0x20]
- ldrh r0, [r4, 0x22]
- subs r0, 0x1
- strh r0, [r4, 0x22]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0xF0
- ble _080E0812
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E0812:
- ldrh r1, [r4, 0x2E]
- movs r0, 0xFF
- ands r0, r1
- movs r1, 0x10
- bl Sin
- b _080E0848
- .align 2, 0
-_080E0820: .4byte gUnknown_2037F1A
-_080E0824:
- ldrh r1, [r4, 0x20]
- subs r1, 0x5
- strh r1, [r4, 0x20]
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
- lsls r1, 16
- cmp r1, 0
- bge _080E083C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E083C:
- ldrh r1, [r4, 0x2E]
- movs r0, 0xFF
- ands r0, r1
- movs r1, 0x10
- bl Cos
-_080E0848:
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E07E0
-
- thumb_func_start sub_80E0850
-sub_80E0850: @ 80E0850
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080E0898 @ =gTasks
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- movs r0, 0x20
- strh r0, [r4, 0x20]
- movs r0, 0x40
- strh r0, [r4, 0x22]
- movs r0, 0x80
- lsls r0, 4
- strh r0, [r4, 0x24]
- ldr r0, _080E089C @ =gUnknown_2037F02
- ldrb r0, [r0]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- movs r1, 0
- bl sub_80758E0
- ldr r0, _080E08A0 @ =sub_80E08A4
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0898: .4byte gTasks
-_080E089C: .4byte gUnknown_2037F02
-_080E08A0: .4byte sub_80E08A4
- thumb_func_end sub_80E0850
-
- thumb_func_start sub_80E08A4
-sub_80E08A4: @ 80E08A4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080E08D0 @ =gTasks
- adds r7, r0, r1
- movs r1, 0x8
- ldrsh r0, [r7, r1]
- mov r8, r0
- cmp r0, 0x1
- beq _080E0940
- cmp r0, 0x1
- bgt _080E08D4
- cmp r0, 0
- beq _080E08DC
- b _080E09BA
- .align 2, 0
-_080E08D0: .4byte gTasks
-_080E08D4:
- mov r2, r8
- cmp r2, 0x2
- beq _080E09A8
- b _080E09BA
-_080E08DC:
- movs r3, 0x80
- lsls r3, 2
- adds r0, r3, 0
- ldrh r1, [r7, 0xC]
- adds r2, r0, r1
- strh r2, [r7, 0xC]
- lsls r0, r2, 16
- asrs r0, 16
- ldrh r3, [r7, 0x24]
- mov r8, r3
- movs r3, 0x24
- ldrsh r1, [r7, r3]
- cmp r0, r1
- blt _080E09BA
- mov r0, r8
- subs r5, r0, r2
- lsls r5, 16
- asrs r5, 16
- adds r6, r1, 0
- lsls r6, 1
- adds r0, r5, 0
- adds r1, r6, 0
- bl __divsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- adds r1, r6, 0
- bl __modsi3
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 16
- asrs r4, 16
- movs r1, 0x1
- ands r4, r1
- cmp r4, 0
- bne _080E0934
- lsls r0, 16
- asrs r0, 16
- mov r2, r8
- subs r0, r2, r0
- b _080E0992
-_080E0934:
- lsls r0, 16
- asrs r0, 16
- mov r3, r8
- subs r0, r3
- strh r0, [r7, 0xC]
- b _080E09BA
-_080E0940:
- ldr r1, _080E0998 @ =0xfffffe00
- adds r0, r1, 0
- ldrh r2, [r7, 0xC]
- adds r1, r0, r2
- strh r1, [r7, 0xC]
- movs r3, 0xC
- ldrsh r0, [r7, r3]
- movs r2, 0x24
- ldrsh r6, [r7, r2]
- cmn r0, r6
- bgt _080E09BA
- ldrh r3, [r7, 0x24]
- mov r9, r3
- mov r0, r9
- subs r4, r0, r1
- lsls r4, 16
- asrs r4, 16
- lsls r6, 1
- adds r0, r4, 0
- adds r1, r6, 0
- bl __divsi3
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- adds r1, r6, 0
- bl __modsi3
- lsls r0, 16
- lsrs r2, r0, 16
- mov r1, r8
- ands r1, r5
- lsls r0, r1, 16
- asrs r1, r0, 16
- cmp r1, 0
- bne _080E099C
- lsls r0, r2, 16
- asrs r0, 16
- mov r2, r9
- subs r0, r2
-_080E0992:
- strh r0, [r7, 0xC]
- strh r1, [r7, 0x8]
- b _080E09BA
- .align 2, 0
-_080E0998: .4byte 0xfffffe00
-_080E099C:
- lsls r0, r2, 16
- asrs r0, 16
- mov r3, r9
- subs r0, r3, r0
- strh r0, [r7, 0xC]
- b _080E09BA
-_080E09A8:
- ldrh r0, [r7, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8075980
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080E0A30
-_080E09BA:
- ldrh r0, [r7, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- ldrh r3, [r7, 0xC]
- adds r1, r2, 0
- bl obj_id_set_rotscale
- ldrh r0, [r7, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80759DC
- ldr r2, _080E0A28 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- movs r2, 0xC
- ldrsh r0, [r7, r2]
- cmp r0, 0
- bge _080E09EE
- adds r0, 0x3F
-_080E09EE:
- asrs r0, 6
- negs r0, r0
- strh r0, [r1, 0x24]
- ldrh r0, [r7, 0xA]
- adds r0, 0x1
- strh r0, [r7, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080E0A30
- ldrh r1, [r7, 0x20]
- movs r3, 0x20
- ldrsh r0, [r7, r3]
- cmp r0, 0
- beq _080E0A2C
- subs r0, r1, 0x1
- strh r0, [r7, 0x20]
- ldrh r0, [r7, 0x24]
- ldrh r1, [r7, 0x22]
- subs r0, r1
- strh r0, [r7, 0x24]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bgt _080E0A30
- movs r0, 0x10
- strh r0, [r7, 0x24]
- b _080E0A30
- .align 2, 0
-_080E0A28: .4byte gSprites
-_080E0A2C:
- movs r0, 0x2
- strh r0, [r7, 0x8]
-_080E0A30:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80E08A4
-
- thumb_func_start sub_80E0A3C
-sub_80E0A3C: @ 80E0A3C
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080E0A9C
- ldr r6, _080E0A94 @ =gUnknown_2037F02
- movs r2, 0x4
- ldrsh r0, [r6, r2]
- cmp r0, 0
- bne _080E0A70
- ldr r4, _080E0A98 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
-_080E0A70:
- ldrh r0, [r6]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrh r1, [r6, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r1, r2
- strh r0, [r5, 0x22]
- movs r0, 0x80
- strh r0, [r5, 0x30]
- movs r0, 0xC0
- lsls r0, 2
- strh r0, [r5, 0x32]
- strh r1, [r5, 0x34]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080E0AFA
- .align 2, 0
-_080E0A94: .4byte gUnknown_2037F02
-_080E0A98: .4byte gUnknown_2037F1A
-_080E0A9C:
- ldrh r1, [r5, 0x30]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r5, 0x24]
- ldrh r0, [r5, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r2, [r5, 0x26]
- adds r0, r2
- strh r0, [r5, 0x26]
- movs r2, 0x36
- ldrsh r0, [r5, r2]
- adds r4, r1, 0
- cmp r0, 0
- bne _080E0ADA
- movs r0, 0x26
- ldrsh r1, [r5, r0]
- movs r2, 0x34
- ldrsh r0, [r5, r2]
- cmn r1, r0
- ble _080E0ADA
- movs r0, 0x1
- strh r0, [r5, 0x36]
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- negs r0, r0
- movs r1, 0x3
- bl __divsi3
- lsls r0, 1
- strh r0, [r5, 0x32]
-_080E0ADA:
- adds r0, r4, 0
- adds r0, 0xC0
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x80
- strh r0, [r5, 0x32]
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080E0AFA
- adds r0, r5, 0
- bl DestroyAnimSprite
-_080E0AFA:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E0A3C
-
- thumb_func_start sub_80E0B00
-sub_80E0B00: @ 80E0B00
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- adds r7, r0, 0
- ldr r1, _080E0B30 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r2, r0, r1
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _080E0C0C
- ldr r0, _080E0B34 @ =gUnknown_2037F02
- movs r3, 0
- ldrsh r1, [r0, r3]
- mov r8, r0
- cmp r1, 0
- bne _080E0B3C
- ldr r0, _080E0B38 @ =gUnknown_2037F1A
- b _080E0B3E
- .align 2, 0
-_080E0B30: .4byte gTasks
-_080E0B34: .4byte gUnknown_2037F02
-_080E0B38: .4byte gUnknown_2037F1A
-_080E0B3C:
- ldr r0, _080E0B78 @ =gUnknown_2037F1B
-_080E0B3E:
- ldrb r0, [r0]
- strh r0, [r2, 0x1E]
- mov r1, r8
- ldrb r0, [r1]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080E0B7C @ =gTasks
- lsls r4, r7, 2
- adds r0, r4, r7
- lsls r0, 3
- adds r6, r0, r1
- strh r5, [r6, 0x1C]
- adds r0, r5, 0
- movs r1, 0
- bl sub_80758E0
- mov r2, r8
- movs r3, 0x2
- ldrsh r0, [r2, r3]
- cmp r0, 0x1
- beq _080E0BA0
- cmp r0, 0x1
- bgt _080E0B80
- cmp r0, 0
- beq _080E0B88
- lsls r2, r5, 4
- b _080E0BE8
- .align 2, 0
-_080E0B78: .4byte gUnknown_2037F1B
-_080E0B7C: .4byte gTasks
-_080E0B80:
- cmp r0, 0x2
- beq _080E0BAA
- lsls r2, r5, 4
- b _080E0BE8
-_080E0B88:
- movs r2, 0xA0
- lsls r2, 1
- adds r0, r5, 0
- movs r1, 0xE0
- movs r3, 0
- bl obj_id_set_rotscale
- adds r0, r5, 0
- bl sub_8076440
- lsls r2, r5, 4
- b _080E0BE8
-_080E0BA0:
- movs r2, 0x98
- lsls r2, 1
- movs r3, 0xF0
- lsls r3, 4
- b _080E0BB2
-_080E0BAA:
- movs r2, 0x98
- lsls r2, 1
- movs r3, 0xF1
- lsls r3, 8
-_080E0BB2:
- adds r0, r5, 0
- movs r1, 0xD0
- bl obj_id_set_rotscale
- adds r0, r5, 0
- bl sub_8076440
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080E0BD8
- ldrb r0, [r6, 0x1E]
- bl GetBattlerSide
- lsls r0, 24
- lsls r2, r5, 4
- cmp r0, 0
- bne _080E0BE8
-_080E0BD8:
- ldr r0, _080E0C04 @ =gSprites
- lsls r2, r5, 4
- adds r1, r2, r5
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x10
- strh r0, [r1, 0x26]
-_080E0BE8:
- ldr r1, _080E0C04 @ =gSprites
- adds r0, r2, r5
- lsls r0, 2
- adds r0, r1
- movs r1, 0x2
- strh r1, [r0, 0x24]
- ldr r0, _080E0C08 @ =gTasks
- adds r1, r4, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _080E0C58
- .align 2, 0
-_080E0C04: .4byte gSprites
-_080E0C08: .4byte gTasks
-_080E0C0C:
- ldrb r5, [r2, 0x1C]
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- movs r4, 0
- strh r0, [r2, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080E0C30
- strh r4, [r2, 0xC]
- ldr r0, _080E0C64 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x24]
- negs r0, r0
- strh r0, [r1, 0x24]
-_080E0C30:
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- bne _080E0C58
- adds r0, r5, 0
- bl sub_8075980
- ldr r1, _080E0C64 @ =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- strh r4, [r0, 0x24]
- strh r4, [r0, 0x26]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080E0C58:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0C64: .4byte gSprites
- thumb_func_end sub_80E0B00
-
- thumb_func_start sub_80E0C68
-sub_80E0C68: @ 80E0C68
- push {r4,r5,lr}
- adds r4, r0, 0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xC
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, r0
- ldr r3, _080E0CB4 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080E0CB8 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- bl Random
- ldr r5, _080E0CBC @ =0x000001ff
- ands r5, r0
- bl Random
- movs r1, 0xFF
- ands r1, r0
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _080E0CC0
- movs r2, 0xBC
- lsls r2, 3
- adds r0, r5, r2
- b _080E0CC8
- .align 2, 0
-_080E0CB4: .4byte 0x000003ff
-_080E0CB8: .4byte 0xfffffc00
-_080E0CBC: .4byte 0x000001ff
-_080E0CC0:
- movs r3, 0xBC
- lsls r3, 3
- adds r0, r3, 0
- subs r0, r5
-_080E0CC8:
- strh r0, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080E0CDA
- movs r2, 0x90
- lsls r2, 3
- adds r0, r1, r2
- b _080E0CE2
-_080E0CDA:
- movs r3, 0x90
- lsls r3, 3
- adds r0, r3, 0
- subs r0, r1
-_080E0CE2:
- strh r0, [r4, 0x30]
- ldr r0, _080E0CF4 @ =gUnknown_2037F02
- ldrh r0, [r0]
- strh r0, [r4, 0x32]
- lsls r0, 16
- cmp r0, 0
- bne _080E0CFC
- ldr r0, _080E0CF8 @ =0x0000fff8
- b _080E0CFE
- .align 2, 0
-_080E0CF4: .4byte gUnknown_2037F02
-_080E0CF8: .4byte 0x0000fff8
-_080E0CFC:
- movs r0, 0xF8
-_080E0CFE:
- strh r0, [r4, 0x20]
- movs r0, 0x68
- strh r0, [r4, 0x22]
- ldr r0, _080E0D10 @ =sub_80E0D14
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0D10: .4byte sub_80E0D14
- thumb_func_end sub_80E0C68
-
- thumb_func_start sub_80E0D14
-sub_80E0D14: @ 80E0D14
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E0D2C
- ldrh r3, [r4, 0x2E]
- lsls r0, r3, 16
- asrs r0, 24
- ldrh r1, [r4, 0x24]
- adds r0, r1
- b _080E0D36
-_080E0D2C:
- ldrh r3, [r4, 0x2E]
- lsls r1, r3, 16
- asrs r1, 24
- ldrh r0, [r4, 0x24]
- subs r0, r1
-_080E0D36:
- strh r0, [r4, 0x24]
- ldrh r2, [r4, 0x30]
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r4, 0x26]
- subs r0, r1
- strh r0, [r4, 0x26]
- adds r0, r3, 0
- subs r0, 0x16
- strh r0, [r4, 0x2E]
- adds r1, r2, 0
- subs r1, 0x30
- strh r1, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- bge _080E0D5A
- movs r0, 0
- strh r0, [r4, 0x2E]
-_080E0D5A:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _080E0D6E
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E0D6E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E0D14
-
- thumb_func_start sub_80E0D74
-sub_80E0D74: @ 80E0D74
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r1, _080E0DD8 @ =0x00001f3f
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r0, _080E0DDC @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r4, _080E0DE0 @ =gUnknown_2022986
- strh r1, [r4]
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x44
- bl SetGpuReg
- ldr r0, _080E0DE4 @ =gUnknown_2037F02
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- movs r1, 0
- bl sub_8075114
- ldrb r1, [r5, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r5, 0x1]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080E0DE8 @ =sub_80E0DEC
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0DD8: .4byte 0x00001f3f
-_080E0DDC: .4byte gUnknown_2022984
-_080E0DE0: .4byte gUnknown_2022986
-_080E0DE4: .4byte gUnknown_2037F02
-_080E0DE8: .4byte sub_80E0DEC
- thumb_func_end sub_80E0D74
-
- thumb_func_start sub_80E0DEC
-sub_80E0DEC: @ 80E0DEC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080E0E2A
- cmp r0, 0x1
- bgt _080E0E02
- cmp r0, 0
- beq _080E0E0C
- b _080E0E8A
-_080E0E02:
- cmp r0, 0x2
- beq _080E0E40
- cmp r0, 0x3
- beq _080E0E62
- b _080E0E8A
-_080E0E0C:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080E0E8A
- b _080E0E5A
-_080E0E2A:
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _080E0E8A
- adds r0, r4, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
- b _080E0E5A
-_080E0E40:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080E0E8A
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_080E0E5A:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- b _080E0E8A
-_080E0E62:
- ldr r1, _080E0E90 @ =0x00003f3f
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- eors r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E0E8A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0E90: .4byte 0x00003f3f
- thumb_func_end sub_80E0DEC
-
- thumb_func_start sub_80E0E94
-sub_80E0E94: @ 80E0E94
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080E0ED0 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r1, _080E0ED4 @ =gUnknown_2037F02
- ldrh r0, [r1]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x30]
- ldr r1, _080E0ED8 @ =sub_80E0EDC
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0ED0: .4byte gUnknown_2037F1A
-_080E0ED4: .4byte gUnknown_2037F02
-_080E0ED8: .4byte sub_80E0EDC
- thumb_func_end sub_80E0E94
-
- thumb_func_start sub_80E0EDC
-sub_80E0EDC: @ 80E0EDC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x32]
- lsls r1, 16
- asrs r1, 24
- bl Sin
- strh r0, [r4, 0x24]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- ldrh r1, [r4, 0x34]
- lsls r1, 16
- asrs r1, 24
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x9
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- lsls r1, r0, 16
- cmp r0, 0x3F
- bls _080E0F16
- asrs r0, r1, 16
- cmp r0, 0xC3
- ble _080E0F28
-_080E0F16:
- ldr r0, _080E0F24 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_807685C
- subs r0, 0x1
- b _080E0F32
- .align 2, 0
-_080E0F24: .4byte gUnknown_2037F1A
-_080E0F28:
- ldr r0, _080E0F74 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_807685C
- adds r0, 0x1
-_080E0F32:
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- movs r3, 0x38
- ldrsh r2, [r4, r3]
- cmp r2, 0
- bne _080E0F78
- movs r1, 0x80
- lsls r1, 3
- adds r0, r1, 0
- ldrh r3, [r4, 0x32]
- adds r0, r3
- strh r0, [r4, 0x32]
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- ldrh r3, [r4, 0x34]
- adds r0, r3
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x2E
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bne _080E0FA8
- strh r2, [r4, 0x36]
- movs r0, 0x1
- strh r0, [r4, 0x38]
- b _080E0FA8
- .align 2, 0
-_080E0F74: .4byte gUnknown_2037F1A
-_080E0F78:
- cmp r2, 0x1
- bne _080E0FA8
- ldr r1, _080E0FB0 @ =0xfffffc00
- adds r0, r1, 0
- ldrh r2, [r4, 0x32]
- adds r0, r2
- strh r0, [r4, 0x32]
- ldr r3, _080E0FB4 @ =0xffffff00
- adds r0, r3, 0
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080E0FA8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E0FA8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0FB0: .4byte 0xfffffc00
-_080E0FB4: .4byte 0xffffff00
- thumb_func_end sub_80E0EDC
-
- thumb_func_start sub_80E0FB8
-sub_80E0FB8: @ 80E0FB8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x18]
- movs r0, 0
- bl GetAnimBankSpriteId
- ldr r0, _080E1040 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080E107C
- movs r0, 0
- str r0, [sp, 0x1C]
- ldr r6, _080E1044 @ =gBattlerPartyIndexes
- ldr r4, _080E1048 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- movs r5, 0x64
- muls r0, r5
- ldr r7, _080E104C @ =gPlayerParty
- adds r0, r7
- movs r1, 0
- bl GetMonData
- mov r10, r0
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- adds r0, r7
- movs r1, 0x1
- bl GetMonData
- mov r9, r0
- ldr r0, _080E1050 @ =gUnknown_2024018
- ldr r0, [r0]
- ldrb r2, [r4]
- ldr r1, [r0]
- lsls r0, r2, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _080E1074
- adds r0, r2, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080E1054
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- adds r0, r7
- b _080E1062
- .align 2, 0
-_080E1040: .4byte gUnknown_2037F1A
-_080E1044: .4byte gBattlerPartyIndexes
-_080E1048: .4byte gUnknown_2037F1B
-_080E104C: .4byte gPlayerParty
-_080E1050: .4byte gUnknown_2024018
-_080E1054:
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- ldr r1, _080E1070 @ =gEnemyParty
- adds r0, r1
-_080E1062:
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- b _080E1076
- .align 2, 0
-_080E1070: .4byte gEnemyParty
-_080E1074:
- ldrh r6, [r1, 0x2]
-_080E1076:
- movs r1, 0x14
- mov r8, r1
- b _080E1112
-_080E107C:
- movs r2, 0x1
- str r2, [sp, 0x1C]
- ldr r6, _080E10E0 @ =gBattlerPartyIndexes
- ldr r4, _080E10E4 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- movs r5, 0x64
- muls r0, r5
- ldr r7, _080E10E8 @ =gEnemyParty
- adds r0, r7
- movs r1, 0
- bl GetMonData
- mov r10, r0
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- adds r0, r7
- movs r1, 0x1
- bl GetMonData
- mov r9, r0
- ldr r0, _080E10EC @ =gUnknown_2024018
- ldr r0, [r0]
- ldrb r2, [r4]
- ldr r1, [r0]
- lsls r0, r2, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _080E110C
- adds r0, r2, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080E10F4
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- ldr r1, _080E10F0 @ =gPlayerParty
- adds r0, r1
- b _080E1100
- .align 2, 0
-_080E10E0: .4byte gBattlerPartyIndexes
-_080E10E4: .4byte gUnknown_2037F1B
-_080E10E8: .4byte gEnemyParty
-_080E10EC: .4byte gUnknown_2024018
-_080E10F0: .4byte gPlayerParty
-_080E10F4:
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- adds r0, r7
-_080E1100:
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- b _080E110E
-_080E110C:
- ldrh r6, [r1, 0x2]
-_080E110E:
- ldr r3, _080E11FC @ =0x0000ffec
- mov r8, r3
-_080E1112:
- ldr r0, _080E1200 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_8076884
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r5, _080E1200 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8074480
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- mov r2, r8
- lsls r1, r2, 16
- asrs r1, 16
- adds r4, r1
- lsls r4, 16
- asrs r4, 16
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0x5
- str r0, [sp, 0x4]
- mov r3, r10
- str r3, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- ldr r0, _080E1204 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- str r0, [sp, 0x10]
- movs r0, 0x1
- str r0, [sp, 0x14]
- adds r0, r6, 0
- ldr r1, [sp, 0x1C]
- movs r2, 0
- adds r3, r4, 0
- bl sub_80768D0
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _080E1208 @ =gSprites
- lsls r5, r6, 4
- adds r5, r6
- lsls r5, 2
- adds r5, r0
- movs r0, 0x3
- ands r7, r0
- lsls r7, 2
- mov r8, r7
- ldrb r0, [r5, 0x5]
- movs r4, 0xD
- negs r4, r4
- adds r1, r4, 0
- ands r1, r0
- mov r2, r8
- orrs r1, r2
- strb r1, [r5, 0x5]
- ldrb r2, [r5, 0x1]
- adds r0, r4, 0
- ands r0, r2
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r5, 0x1]
- ldr r0, _080E120C @ =0x00007fff
- lsrs r1, 4
- lsls r1, 4
- movs r3, 0x80
- lsls r3, 1
- adds r2, r3, 0
- orrs r1, r2
- movs r2, 0x20
- bl FillPalette
- ldrb r0, [r5, 0x5]
- ands r4, r0
- mov r0, r8
- orrs r4, r0
- strb r4, [r5, 0x5]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldr r0, _080E1210 @ =gTasks
- ldr r1, [sp, 0x18]
- lsls r4, r1, 2
- adds r4, r1
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0xA]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- strh r6, [r4, 0x8]
- ldr r0, _080E1214 @ =sub_80E1218
- str r0, [r4]
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E11FC: .4byte 0x0000ffec
-_080E1200: .4byte gUnknown_2037F1A
-_080E1204: .4byte gUnknown_2037F1B
-_080E1208: .4byte gSprites
-_080E120C: .4byte 0x00007fff
-_080E1210: .4byte gTasks
-_080E1214: .4byte sub_80E1218
- thumb_func_end sub_80E0FB8
-
- thumb_func_start sub_80E1218
-sub_80E1218: @ 80E1218
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080E126C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E1266
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0xA
- bne _080E1266
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0x1C]
- strh r0, [r4, 0x1E]
- ldr r0, _080E1270 @ =sub_80E1274
- str r0, [r4]
-_080E1266:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E126C: .4byte gTasks
-_080E1270: .4byte sub_80E1274
- thumb_func_end sub_80E1218
-
- thumb_func_start sub_80E1274
-sub_80E1274: @ 80E1274
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080E12EC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r5, r1, r2
- ldrb r2, [r5, 0x8]
- ldrh r0, [r5, 0x1C]
- subs r0, 0x10
- movs r4, 0
- strh r0, [r5, 0x1C]
- ldrh r0, [r5, 0x1E]
- adds r0, 0x80
- strh r0, [r5, 0x1E]
- ldr r1, _080E12F0 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r6, r0, r1
- ldrb r2, [r6, 0x1]
- lsls r1, r2, 30
- lsrs r1, 30
- movs r0, 0x2
- orrs r1, r0
- subs r0, 0x6
- ands r0, r2
- orrs r0, r1
- strb r0, [r6, 0x1]
- movs r0, 0x1C
- ldrsh r2, [r5, r0]
- movs r0, 0x1E
- ldrsh r3, [r5, r0]
- str r4, [sp]
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_8075A1C
- ldrh r0, [r5, 0x20]
- adds r0, 0x1
- strh r0, [r5, 0x20]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bne _080E12E2
- adds r0, r6, 0
- bl sub_8075AD8
- adds r0, r6, 0
- bl sub_8076B20
- ldr r0, _080E12F4 @ =sub_8074FA8
- str r0, [r5]
-_080E12E2:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E12EC: .4byte gTasks
-_080E12F0: .4byte gSprites
-_080E12F4: .4byte sub_8074FA8
- thumb_func_end sub_80E1274
-
- thumb_func_start sub_80E12F8
-sub_80E12F8: @ 80E12F8
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080E1318 @ =gTasks
- adds r4, r1, r0
- ldr r0, _080E131C @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080E1324
- ldr r0, _080E1320 @ =gUnknown_2037F1A
- b _080E1326
- .align 2, 0
-_080E1318: .4byte gTasks
-_080E131C: .4byte gUnknown_2037F02
-_080E1320: .4byte gUnknown_2037F1A
-_080E1324:
- ldr r0, _080E13A4 @ =gUnknown_2037F1B
-_080E1326:
- ldrb r5, [r0]
- movs r6, 0
- strh r6, [r4, 0x8]
- strh r6, [r4, 0xA]
- strh r6, [r4, 0xC]
- movs r0, 0x10
- strh r0, [r4, 0xE]
- strh r6, [r4, 0x10]
- strh r5, [r4, 0x12]
- movs r0, 0x20
- strh r0, [r4, 0x14]
- strh r6, [r4, 0x16]
- movs r0, 0x18
- strh r0, [r4, 0x18]
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E1358
- movs r1, 0x18
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0x18]
-_080E1358:
- adds r0, r5, 0
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x22
- strh r0, [r4, 0x22]
- cmp r0, 0
- bge _080E136C
- strh r6, [r4, 0x22]
-_080E136C:
- ldrh r0, [r4, 0x22]
- adds r0, 0x42
- strh r0, [r4, 0x24]
- ldr r0, _080E13A8 @ =gUnknown_2037F02
- ldrb r0, [r0]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- adds r0, r5, 0
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E13BC
- ldr r0, _080E13AC @ =0x04000014
- str r0, [sp]
- ldr r1, _080E13B0 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- ldr r0, _080E13B4 @ =gBattle_BG1_X
- ldrh r5, [r0]
- ldr r0, _080E13B8 @ =gBattle_BG1_Y
- b _080E13CE
- .align 2, 0
-_080E13A4: .4byte gUnknown_2037F1B
-_080E13A8: .4byte gUnknown_2037F02
-_080E13AC: .4byte 0x04000014
-_080E13B0: .4byte 0x00003f42
-_080E13B4: .4byte gBattle_BG1_X
-_080E13B8: .4byte gBattle_BG1_Y
-_080E13BC:
- ldr r0, _080E1434 @ =0x04000018
- str r0, [sp]
- ldr r1, _080E1438 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- ldr r0, _080E143C @ =gBattle_BG2_X
- ldrh r5, [r0]
- ldr r0, _080E1440 @ =gBattle_BG2_Y
-_080E13CE:
- ldrh r3, [r0]
- movs r7, 0
- movs r2, 0
- ldr r6, _080E1444 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r0, r6
- mov r12, r0
-_080E13DE:
- lsls r2, 16
- asrs r2, 16
- lsls r1, r2, 1
- adds r0, r1, r6
- strh r5, [r0]
- add r1, r12
- strh r5, [r1]
- adds r0, r2, 0x1
- lsls r0, 1
- adds r1, r0, r6
- strh r3, [r1]
- add r0, r12
- strh r3, [r0]
- lsls r0, r7, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- adds r2, 0x2
- lsls r2, 16
- lsrs r2, 16
- lsrs r7, r0, 16
- asrs r0, 16
- cmp r0, 0x9F
- ble _080E13DE
- ldr r0, _080E1448 @ =0xa6600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r2, [r0, 0x9]
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- ldr r0, _080E144C @ =sub_80E1450
- str r0, [r4]
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1434: .4byte 0x04000018
-_080E1438: .4byte 0x00003f44
-_080E143C: .4byte gBattle_BG2_X
-_080E1440: .4byte gBattle_BG2_Y
-_080E1444: .4byte gScanlineEffectRegBuffers
-_080E1448: .4byte 0xa6600001
-_080E144C: .4byte sub_80E1450
- thumb_func_end sub_80E12F8
-
- thumb_func_start sub_80E1450
-sub_80E1450: @ 80E1450
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080E1484 @ =gTasks
- adds r6, r0, r1
- ldrb r0, [r6, 0x12]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E1490
- ldr r0, _080E1488 @ =gBattle_BG1_X
- ldrh r0, [r0]
- str r0, [sp, 0x4]
- ldr r0, _080E148C @ =gBattle_BG1_Y
- b _080E1498
- .align 2, 0
-_080E1484: .4byte gTasks
-_080E1488: .4byte gBattle_BG1_X
-_080E148C: .4byte gBattle_BG1_Y
-_080E1490:
- ldr r0, _080E14B0 @ =gBattle_BG2_X
- ldrh r0, [r0]
- str r0, [sp, 0x4]
- ldr r0, _080E14B4 @ =gBattle_BG2_Y
-_080E1498:
- ldrh r0, [r0]
- str r0, [sp, 0x8]
- movs r1, 0x8
- ldrsh r0, [r6, r1]
- cmp r0, 0x1
- bne _080E14A6
- b _080E1684
-_080E14A6:
- cmp r0, 0x1
- bgt _080E14B8
- cmp r0, 0
- beq _080E14C6
- b _080E16F4
- .align 2, 0
-_080E14B0: .4byte gBattle_BG2_X
-_080E14B4: .4byte gBattle_BG2_Y
-_080E14B8:
- cmp r0, 0x2
- bne _080E14BE
- b _080E16A4
-_080E14BE:
- cmp r0, 0x3
- bne _080E14C4
- b _080E16EE
-_080E14C4:
- b _080E16F4
-_080E14C6:
- movs r2, 0x24
- ldrsh r0, [r6, r2]
- lsls r0, 17
- lsrs r5, r0, 16
- movs r3, 0
- str r3, [sp]
- mov r9, r3
- movs r4, 0
- ldrh r0, [r6, 0xA]
- adds r0, 0x2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r6, 0xA]
- ldrh r7, [r6, 0xA]
- mov r8, r7
- movs r0, 0x14
- ldrsh r1, [r6, r0]
- movs r0, 0xFC
- lsls r0, 3
- bl __divsi3
- strh r0, [r6, 0x1A]
- movs r1, 0x16
- ldrsh r0, [r6, r1]
- lsls r0, 1
- movs r2, 0x1A
- ldrsh r1, [r6, r2]
- bl __divsi3
- negs r0, r0
- strh r0, [r6, 0x1C]
- ldrh r0, [r6, 0x16]
- strh r0, [r6, 0x1E]
- lsls r0, 16
- asrs r0, 21
- lsls r0, 16
- lsrs r7, r0, 16
- strh r7, [r6, 0x20]
- ldrh r2, [r6, 0x24]
- lsls r3, r2, 16
- mov r12, r3
- asrs r1, r3, 16
- movs r3, 0x22
- ldrsh r0, [r6, r3]
- cmp r1, r0
- ble _080E15E6
- ldr r0, _080E163C @ =gScanlineEffect
- mov r10, r0
- ldr r1, [sp, 0x4]
- lsls r0, r1, 16
- asrs r0, 16
- str r0, [sp, 0x10]
- ldr r2, [sp, 0x8]
- lsls r0, r2, 16
- asrs r0, 16
- str r0, [sp, 0xC]
-_080E1536:
- lsls r5, 16
- asrs r5, 16
- adds r2, r5, 0x1
- lsls r2, 1
- mov r3, r10
- ldrb r1, [r3, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- ldr r0, _080E1640 @ =gScanlineEffectRegBuffers
- adds r2, r0
- lsls r4, 16
- asrs r4, 16
- mov r1, r9
- lsls r0, r1, 16
- asrs r0, 16
- subs r0, r4, r0
- ldr r3, [sp, 0xC]
- adds r0, r3, r0
- strh r0, [r2]
- lsls r3, r5, 1
- mov r0, r10
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r3, r0
- ldr r1, _080E1640 @ =gScanlineEffectRegBuffers
- adds r3, r1
- lsls r1, r7, 16
- asrs r1, 16
- ldr r2, [sp, 0x10]
- adds r1, r2, r1
- mov r7, r8
- lsls r2, r7, 16
- asrs r2, 16
- lsls r0, r2, 1
- ldr r7, _080E1644 @ =gSineTable
- adds r0, r7
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 21
- adds r1, r0
- strh r1, [r3]
- adds r2, 0xA
- mov r8, r2
- movs r0, 0xFF
- mov r1, r8
- ands r1, r0
- mov r8, r1
- ldrh r0, [r6, 0x1C]
- ldrh r2, [r6, 0x1E]
- adds r0, r2
- strh r0, [r6, 0x1E]
- lsls r0, 16
- asrs r0, 21
- lsls r0, 16
- lsrs r7, r0, 16
- strh r7, [r6, 0x20]
- adds r4, 0x1
- lsls r4, 16
- lsrs r4, 16
- subs r5, 0x2
- lsls r5, 16
- lsrs r5, 16
- ldr r3, [sp]
- lsls r0, r3, 16
- asrs r0, 16
- ldrh r1, [r6, 0x14]
- adds r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- str r2, [sp]
- asrs r0, 21
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- ldr r0, _080E1648 @ =0xffff0000
- add r0, r12
- lsrs r2, r0, 16
- lsls r3, r2, 16
- mov r12, r3
- asrs r1, r3, 16
- movs r3, 0x22
- ldrsh r0, [r6, r3]
- cmp r1, r0
- bgt _080E1536
-_080E15E6:
- lsls r1, r2, 17
- cmp r1, 0
- blt _080E1612
- ldr r4, _080E1640 @ =gScanlineEffectRegBuffers
- ldr r7, [sp, 0x4]
- lsls r0, r7, 16
- asrs r0, 16
- adds r3, r0, 0
- adds r3, 0xF0
- movs r0, 0xF0
- lsls r0, 3
- adds r5, r4, r0
-_080E15FE:
- asrs r2, r1, 16
- lsls r1, r2, 1
- adds r0, r1, r4
- strh r3, [r0]
- adds r1, r5
- strh r3, [r1]
- subs r2, 0x2
- lsls r1, r2, 16
- cmp r1, 0
- bge _080E15FE
-_080E1612:
- ldrh r0, [r6, 0x14]
- adds r0, 0x1
- strh r0, [r6, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3F
- ble _080E167A
- movs r0, 0x40
- strh r0, [r6, 0x14]
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080E164C
- ldrh r0, [r6, 0xE]
- subs r0, 0x1
- strh r0, [r6, 0xE]
- b _080E1652
- .align 2, 0
-_080E163C: .4byte gScanlineEffect
-_080E1640: .4byte gScanlineEffectRegBuffers
-_080E1644: .4byte gSineTable
-_080E1648: .4byte 0xffff0000
-_080E164C:
- ldrh r0, [r6, 0x10]
- adds r0, 0x1
- strh r0, [r6, 0x10]
-_080E1652:
- ldrh r1, [r6, 0x10]
- lsls r1, 8
- ldrh r0, [r6, 0xE]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0xE
- ldrsh r1, [r6, r2]
- cmp r1, 0
- bne _080E16F4
- movs r3, 0x10
- ldrsh r0, [r6, r3]
- cmp r0, 0x10
- bne _080E16F4
- strh r1, [r6, 0xC]
- strh r1, [r6, 0xE]
- b _080E16E6
-_080E167A:
- ldrh r0, [r6, 0x18]
- ldrh r7, [r6, 0x16]
- adds r0, r7
- strh r0, [r6, 0x16]
- b _080E16F4
-_080E1684:
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _080E16F4
- ldr r1, _080E16A0 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- movs r0, 0
- strh r0, [r6, 0xC]
- b _080E16E6
- .align 2, 0
-_080E16A0: .4byte gScanlineEffect
-_080E16A4:
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080E16BA
- ldrh r0, [r6, 0xE]
- adds r0, 0x1
- strh r0, [r6, 0xE]
- b _080E16C0
-_080E16BA:
- ldrh r0, [r6, 0x10]
- subs r0, 0x1
- strh r0, [r6, 0x10]
-_080E16C0:
- ldrh r1, [r6, 0x10]
- lsls r1, 8
- ldrh r0, [r6, 0xE]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xE
- ldrsh r0, [r6, r1]
- cmp r0, 0x10
- bne _080E16F4
- movs r2, 0x10
- ldrsh r0, [r6, r2]
- cmp r0, 0
- bne _080E16F4
- strh r0, [r6, 0xC]
- strh r0, [r6, 0xE]
-_080E16E6:
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- b _080E16F4
-_080E16EE:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080E16F4:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80E1450
-
- thumb_func_start sub_80E1704
-sub_80E1704: @ 80E1704
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080E173C @ =gTasks
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r0, _080E1740 @ =gUnknown_2037F02
- ldrb r0, [r0]
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r4, 0x26]
- ldr r2, _080E1744 @ =gUnknown_83FF3D0
- adds r0, r4, 0
- bl sub_80762D0
- ldr r0, _080E1748 @ =sub_80E174C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E173C: .4byte gTasks
-_080E1740: .4byte gUnknown_2037F02
-_080E1744: .4byte gUnknown_83FF3D0
-_080E1748: .4byte sub_80E174C
- thumb_func_end sub_80E1704
-
- thumb_func_start sub_80E174C
-sub_80E174C: @ 80E174C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r2, _080E17A4 @ =gTasks
- adds r3, r0, r2
- ldrh r0, [r3, 0x8]
- adds r1, r0, 0x1
- movs r5, 0
- strh r1, [r3, 0x8]
- subs r0, 0x14
- lsls r0, 16
- lsrs r0, 16
- adds r6, r2, 0
- cmp r0, 0x16
- bhi _080E17B0
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E17C0
- strh r5, [r3, 0xA]
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- movs r5, 0x1
- ands r0, r5
- cmp r0, 0
- bne _080E17B0
- ldr r2, _080E17A8 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _080E17AC @ =0x0000ffff
- strh r1, [r0, 0x24]
- b _080E17C0
- .align 2, 0
-_080E17A4: .4byte gTasks
-_080E17A8: .4byte gSprites
-_080E17AC: .4byte 0x0000ffff
-_080E17B0:
- ldr r2, _080E17E0 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
-_080E17C0:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r6
- bl sub_8076308
- lsls r0, 24
- cmp r0, 0
- bne _080E17D8
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080E17D8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E17E0: .4byte gSprites
- thumb_func_end sub_80E174C
-
- thumb_func_start sub_80E17E4
-sub_80E17E4: @ 80E17E4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- mov r8, r0
- adds r5, r2, 0
- adds r0, r3, 0
- ldr r4, [sp, 0x14]
- ldr r6, [sp, 0x18]
- lsls r1, 16
- lsrs r1, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r6, 16
- lsrs r6, 16
- mov r2, r8
- strh r1, [r2, 0x20]
- strh r5, [r2, 0x22]
- lsls r1, 16
- asrs r1, 16
- lsls r2, r1, 4
- mov r3, r8
- strh r2, [r3, 0x36]
- lsls r5, 16
- asrs r5, 16
- lsls r2, r5, 4
- strh r2, [r3, 0x38]
- lsls r0, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 4
- adds r1, r6, 0
- bl __divsi3
- mov r1, r8
- strh r0, [r1, 0x3A]
- lsls r4, 16
- asrs r4, 16
- subs r4, r5
- lsls r4, 4
- adds r0, r4, 0
- adds r1, r6, 0
- bl __divsi3
- mov r2, r8
- strh r0, [r2, 0x3C]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E17E4
-
- thumb_func_start sub_80E184C
-sub_80E184C: @ 80E184C
- ldrh r1, [r0, 0x3A]
- ldrh r2, [r0, 0x36]
- adds r1, r2
- strh r1, [r0, 0x36]
- ldrh r2, [r0, 0x3C]
- ldrh r3, [r0, 0x38]
- adds r2, r3
- strh r2, [r0, 0x38]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r0, 0x20]
- lsls r2, 16
- asrs r2, 20
- strh r2, [r0, 0x22]
- bx lr
- thumb_func_end sub_80E184C
-
- thumb_func_start sub_80E186C
-sub_80E186C: @ 80E186C
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldrh r6, [r4, 0x20]
- ldrh r5, [r4, 0x22]
- bl sub_8074FCC
- ldr r0, _080E18B4 @ =gUnknown_2037F02
- ldrb r1, [r0]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r0, 0x22
- ldrsh r2, [r4, r0]
- lsls r6, 16
- asrs r6, 16
- lsls r5, 16
- asrs r5, 16
- str r5, [sp]
- movs r0, 0x40
- str r0, [sp, 0x4]
- adds r0, r4, 0
- adds r3, r6, 0
- bl sub_80E17E4
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, _080E18B8 @ =sub_80E18BC
- str r0, [r4, 0x1C]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E18B4: .4byte gUnknown_2037F02
-_080E18B8: .4byte sub_80E18BC
- thumb_func_end sub_80E186C
-
- thumb_func_start sub_80E18BC
-sub_80E18BC: @ 80E18BC
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- lsls r4, 3
- movs r0, 0xFF
- ands r4, r0
- adds r0, r5, 0
- bl sub_80E184C
- adds r0, r4, 0
- movs r1, 0x8
- bl Sin
- strh r0, [r5, 0x26]
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x3A
- ble _080E1922
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E1922
- movs r0, 0
- strh r0, [r5, 0x30]
- ldrh r1, [r5, 0x32]
- adds r1, 0x1
- strh r1, [r5, 0x32]
- movs r0, 0x1
- ands r1, r0
- adds r3, r5, 0
- adds r3, 0x3E
- lsls r1, 2
- ldrb r2, [r3]
- subs r0, 0x6
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- cmp r0, 0x3
- ble _080E1922
- adds r0, r5, 0
- bl move_anim_8074EE0
-_080E1922:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80E18BC
-
- thumb_func_start sub_80E1928
-sub_80E1928: @ 80E1928
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080E1980 @ =gUnknown_2037F02
- ldrh r0, [r6, 0x6]
- strh r0, [r5, 0x2E]
- ldrb r1, [r6]
- adds r0, r5, 0
- bl StartSpriteAffineAnim
- ldr r0, _080E1984 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080E194E
- ldrh r0, [r6, 0x2]
- negs r0, r0
- strh r0, [r6, 0x2]
-_080E194E:
- ldr r4, _080E1988 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x2]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x4]
- adds r0, r6
- strh r0, [r5, 0x22]
- ldr r0, _080E198C @ =sub_80B1D3C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1980: .4byte gUnknown_2037F02
-_080E1984: .4byte gUnknown_2037F1B
-_080E1988: .4byte gUnknown_2037F1A
-_080E198C: .4byte sub_80B1D3C
- thumb_func_end sub_80E1928
-
- thumb_func_start sub_80E1990
-sub_80E1990: @ 80E1990
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r7, 0
- ldr r2, _080E19E0 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x8]
- subs r0, 0x1
- strh r0, [r3, 0x8]
- movs r1, 0x14
- ldrsh r0, [r3, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- mov r8, r2
- cmp r0, 0
- beq _080E1A12
- ldrh r0, [r3, 0xA]
- subs r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080E1A12
- movs r2, 0x1A
- ldrsh r0, [r3, r2]
- cmp r0, 0
- bne _080E19E4
- ldrh r0, [r3, 0x10]
- strh r0, [r3, 0x1A]
- negs r0, r0
- strh r0, [r3, 0x10]
- b _080E19E6
- .align 2, 0
-_080E19E0: .4byte gTasks
-_080E19E4:
- strh r7, [r3, 0x1A]
-_080E19E6:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- mov r2, r8
- adds r1, r0, r2
- movs r2, 0x1C
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080E1A02
- ldrh r0, [r1, 0x12]
- strh r0, [r1, 0x1C]
- negs r0, r0
- strh r0, [r1, 0x12]
- b _080E1A06
-_080E1A02:
- movs r0, 0
- strh r0, [r1, 0x1C]
-_080E1A06:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- add r0, r8
- ldrh r1, [r0, 0x22]
- strh r1, [r0, 0xA]
-_080E1A12:
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- ldrh r6, [r4, 0x16]
- ldrh r7, [r4, 0x18]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- mov r12, r2
- cmp r0, 0
- beq _080E1A50
- ldr r3, _080E1A4C @ =gSprites
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- lsrs r2, r6, 8
- ldrh r0, [r4, 0x1A]
- subs r0, r2
- strh r0, [r1, 0x24]
- adds r2, r3, 0
- b _080E1A66
- .align 2, 0
-_080E1A4C: .4byte gSprites
-_080E1A50:
- ldr r2, _080E1A94 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- lsrs r1, r6, 8
- ldrh r4, [r4, 0x1A]
- adds r1, r4
- strh r1, [r0, 0x24]
-_080E1A66:
- mov r1, r12
- adds r0, r1, r5
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _080E1A98
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- lsrs r2, r7, 8
- ldrh r0, [r4, 0x1C]
- subs r0, r2
- b _080E1AAA
- .align 2, 0
-_080E1A94: .4byte gSprites
-_080E1A98:
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- lsrs r0, r7, 8
- ldrh r4, [r4, 0x1C]
- adds r0, r4
-_080E1AAA:
- strh r0, [r1, 0x26]
- mov r2, r12
- adds r0, r2, r5
- lsls r0, 3
- add r0, r8
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bgt _080E1ACA
- adds r0, r5, 0
- bl DestroyTask
- ldr r1, _080E1AD4 @ =gUnknown_2037EE2
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_080E1ACA:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1AD4: .4byte gUnknown_2037EE2
- thumb_func_end sub_80E1990
-
- thumb_func_start sub_80E1AD8
-sub_80E1AD8: @ 80E1AD8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r7, 0
- ldr r2, _080E1B2C @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x8]
- subs r0, 0x1
- strh r0, [r3, 0x8]
- movs r1, 0x14
- ldrsh r0, [r3, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- mov r8, r2
- cmp r0, 0
- beq _080E1B5E
- ldrh r0, [r3, 0xA]
- subs r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080E1B5E
- movs r2, 0x1A
- ldrsh r0, [r3, r2]
- cmp r0, 0
- bne _080E1B30
- ldrh r0, [r3, 0x10]
- strh r0, [r3, 0x1A]
- negs r0, r0
- strh r0, [r3, 0x10]
- b _080E1B32
- .align 2, 0
-_080E1B2C: .4byte gTasks
-_080E1B30:
- strh r7, [r3, 0x1A]
-_080E1B32:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- mov r2, r8
- adds r1, r0, r2
- movs r2, 0x1C
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080E1B4E
- ldrh r0, [r1, 0x12]
- strh r0, [r1, 0x1C]
- negs r0, r0
- strh r0, [r1, 0x12]
- b _080E1B52
-_080E1B4E:
- movs r0, 0
- strh r0, [r1, 0x1C]
-_080E1B52:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- add r0, r8
- ldrh r1, [r0, 0x22]
- strh r1, [r0, 0xA]
-_080E1B5E:
- lsls r3, r6, 2
- adds r0, r3, r6
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- ldrh r2, [r4, 0xC]
- ldr r1, _080E1BB0 @ =0x00007fff
- adds r0, r1, 0
- ands r0, r2
- ldrh r2, [r4, 0x16]
- adds r0, r2
- lsls r5, r0, 16
- lsrs r0, r5, 16
- mov r9, r0
- ldrh r0, [r4, 0xE]
- ands r1, r0
- ldrh r2, [r4, 0x18]
- adds r1, r2
- lsls r1, 16
- lsrs r7, r1, 16
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- mov r12, r3
- cmp r0, 0
- beq _080E1BB8
- ldr r3, _080E1BB4 @ =gSprites
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- lsrs r2, r5, 24
- ldrh r0, [r4, 0x1A]
- subs r0, r2
- strh r0, [r1, 0x24]
- adds r2, r3, 0
- b _080E1BCE
- .align 2, 0
-_080E1BB0: .4byte 0x00007fff
-_080E1BB4: .4byte gSprites
-_080E1BB8:
- ldr r2, _080E1BFC @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- lsrs r1, r5, 24
- ldrh r4, [r4, 0x1A]
- adds r1, r4
- strh r1, [r0, 0x24]
-_080E1BCE:
- mov r1, r12
- adds r0, r1, r6
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _080E1C00
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- lsrs r2, r7, 8
- ldrh r0, [r4, 0x1C]
- subs r0, r2
- b _080E1C12
- .align 2, 0
-_080E1BFC: .4byte gSprites
-_080E1C00:
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- lsrs r0, r7, 8
- ldrh r4, [r4, 0x1C]
- adds r0, r4
-_080E1C12:
- strh r0, [r1, 0x26]
- mov r2, r12
- adds r0, r2, r6
- lsls r0, 3
- mov r1, r8
- adds r2, r0, r1
- mov r0, r9
- strh r0, [r2, 0x16]
- strh r7, [r2, 0x18]
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bgt _080E1C38
- movs r0, 0x1E
- strh r0, [r2, 0x8]
- movs r0, 0
- strh r0, [r2, 0x22]
- ldr r0, _080E1C44 @ =sub_80E1990
- str r0, [r2]
-_080E1C38:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1C44: .4byte sub_80E1990
- thumb_func_end sub_80E1AD8
-
- thumb_func_start sub_80E1C48
-sub_80E1C48: @ 80E1C48
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080E1CA8 @ =gTasks
- mov r8, r0
- lsls r7, r6, 2
- adds r0, r7, r6
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- ldr r1, _080E1CAC @ =gUnknown_2023D44
- ldr r2, _080E1CB0 @ =gUnknown_2037F1A
- ldrb r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r4, 0x26]
- ldr r5, _080E1CB4 @ =gUnknown_2037F02
- ldrh r0, [r5]
- strh r0, [r4, 0x24]
- ldrh r0, [r5]
- strh r0, [r4, 0x8]
- ldrh r0, [r5, 0xC]
- strh r0, [r4, 0x22]
- movs r3, 0x6
- ldrsh r0, [r5, r3]
- cmp r0, 0
- beq _080E1C8C
- ldrh r0, [r4, 0x14]
- ldr r3, _080E1CB8 @ =0xffff8000
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r4, 0x14]
-_080E1C8C:
- ldrb r0, [r2]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080E1CBC
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0xC]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0xE]
- mov r3, r8
- adds r4, r7, 0
- b _080E1D2C
- .align 2, 0
-_080E1CA8: .4byte gTasks
-_080E1CAC: .4byte gUnknown_2023D44
-_080E1CB0: .4byte gUnknown_2037F1A
-_080E1CB4: .4byte gUnknown_2037F02
-_080E1CB8: .4byte 0xffff8000
-_080E1CBC:
- movs r7, 0x2
- ldrsh r0, [r5, r7]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _080E1CD8
- ldrh r1, [r5, 0x2]
- ldr r0, _080E1CD4 @ =0x00007fff
- ands r0, r1
- b _080E1CE0
- .align 2, 0
-_080E1CD4: .4byte 0x00007fff
-_080E1CD8:
- ldrh r0, [r5, 0x2]
- ldr r2, _080E1D08 @ =0xffff8000
- adds r1, r2, 0
- orrs r0, r1
-_080E1CE0:
- strh r0, [r4, 0xC]
- ldr r0, _080E1D0C @ =gUnknown_2037F02
- movs r3, 0x4
- ldrsh r1, [r0, r3]
- movs r2, 0x80
- lsls r2, 8
- ands r1, r2
- adds r5, r0, 0
- cmp r1, 0
- beq _080E1D18
- ldr r3, _080E1D10 @ =gTasks
- lsls r4, r6, 2
- adds r1, r4, r6
- lsls r1, 3
- adds r1, r3
- ldrh r2, [r5, 0x4]
- ldr r0, _080E1D14 @ =0x00007fff
- ands r0, r2
- b _080E1D2A
- .align 2, 0
-_080E1D08: .4byte 0xffff8000
-_080E1D0C: .4byte gUnknown_2037F02
-_080E1D10: .4byte gTasks
-_080E1D14: .4byte 0x00007fff
-_080E1D18:
- ldr r3, _080E1D50 @ =gTasks
- lsls r4, r6, 2
- adds r1, r4, r6
- lsls r1, 3
- adds r1, r3
- ldrh r2, [r5, 0x4]
- ldr r7, _080E1D54 @ =0xffff8000
- adds r0, r7, 0
- orrs r0, r2
-_080E1D2A:
- strh r0, [r1, 0xE]
-_080E1D2C:
- adds r0, r4, r6
- lsls r0, 3
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x18]
- strh r1, [r0, 0x16]
- ldrh r1, [r5, 0x8]
- strh r1, [r0, 0x10]
- ldrh r1, [r5, 0xA]
- strh r1, [r0, 0x12]
- ldr r1, _080E1D58 @ =sub_80E1AD8
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1D50: .4byte gTasks
-_080E1D54: .4byte 0xffff8000
-_080E1D58: .4byte sub_80E1AD8
- thumb_func_end sub_80E1C48
-
- thumb_func_start sub_80E1D5C
-sub_80E1D5C: @ 80E1D5C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080E1D94 @ =gTasks
- adds r5, r0, r1
- ldr r4, _080E1D98 @ =gUnknown_2037F02
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E1D7C
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080E1D7C:
- movs r0, 0
- strh r0, [r5, 0x8]
- strh r0, [r5, 0xA]
- strh r0, [r5, 0xC]
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0xE]
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E1DA0
- ldr r0, _080E1D9C @ =gUnknown_2037F1A
- b _080E1DA2
- .align 2, 0
-_080E1D94: .4byte gTasks
-_080E1D98: .4byte gUnknown_2037F02
-_080E1D9C: .4byte gUnknown_2037F1A
-_080E1DA0:
- ldr r0, _080E1DF0 @ =gUnknown_2037F1B
-_080E1DA2:
- ldrb r4, [r0]
- adds r0, r4, 0
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x10]
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x12]
- adds r0, r4, 0
- bl sub_807685C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x14]
- ldr r0, _080E1DF4 @ =gUnknown_2037F02
- ldrb r0, [r0]
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r5, 0x26]
- ldr r2, _080E1DF8 @ =gUnknown_83FF52C
- adds r0, r5, 0
- bl sub_80762D0
- ldr r0, _080E1DFC @ =sub_80E1E00
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1DF0: .4byte gUnknown_2037F1B
-_080E1DF4: .4byte gUnknown_2037F02
-_080E1DF8: .4byte gUnknown_83FF52C
-_080E1DFC: .4byte sub_80E1E00
- thumb_func_end sub_80E1D5C
-
- thumb_func_start sub_80E1E00
-sub_80E1E00: @ 80E1E00
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080E1E20 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080E1E24
- cmp r0, 0x1
- beq _080E1E84
- b _080E1E92
- .align 2, 0
-_080E1E20: .4byte gTasks
-_080E1E24:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _080E1E3A
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80E1E98
-_080E1E3A:
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x12
- bne _080E1E4A
- adds r0, r5, 0
- movs r1, 0
- bl sub_80E1E98
-_080E1E4A:
- adds r0, r4, 0
- bl sub_8076308
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080E1E92
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _080E1E6C
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080E1E92
-_080E1E6C:
- strh r1, [r4, 0xA]
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080E1E80 @ =gUnknown_83FF52C
- adds r0, r4, 0
- bl sub_80762D0
- b _080E1E92
- .align 2, 0
-_080E1E80: .4byte gUnknown_83FF52C
-_080E1E84:
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E1E92
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080E1E92:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80E1E00
-
- thumb_func_start sub_80E1E98
-sub_80E1E98: @ 80E1E98
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r2, _080E1EBC @ =gTasks
- adds r4, r0, r2
- cmp r1, 0
- bne _080E1EC0
- movs r1, 0x12
- movs r3, 0xEC
- b _080E1EC4
- .align 2, 0
-_080E1EBC: .4byte gTasks
-_080E1EC0:
- movs r1, 0x1E
- movs r3, 0x14
-_080E1EC4:
- mov r2, sp
- ldrh r0, [r4, 0x10]
- subs r0, r1
- strh r0, [r2]
- ldrh r0, [r4, 0x10]
- subs r0, r1
- subs r0, 0x4
- strh r0, [r2, 0x2]
- ldrh r0, [r4, 0x10]
- adds r0, r1
- strh r0, [r2, 0x4]
- ldrh r0, [r4, 0x10]
- adds r0, r1
- adds r0, 0x4
- strh r0, [r2, 0x6]
- add r2, sp, 0x8
- lsls r1, r3, 24
- asrs r1, 24
- ldrh r0, [r4, 0x12]
- adds r0, r1
- strh r0, [r2]
- ldrh r0, [r4, 0x12]
- adds r0, r1
- adds r0, 0x6
- strh r0, [r2, 0x2]
- movs r5, 0
- mov r8, r2
- ldr r7, _080E1F68 @ =gSprites
-_080E1EFC:
- lsls r0, r5, 1
- add r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0x1
- ands r0, r5
- lsls r0, 1
- add r0, r8
- movs r3, 0
- ldrsh r2, [r0, r3]
- ldrb r3, [r4, 0x14]
- subs r3, 0x5
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _080E1F6C @ =gUnknown_83FF54C
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080E1F50
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r7
- movs r0, 0
- strh r0, [r1, 0x2E]
- movs r0, 0x2
- cmp r5, 0x1
- bhi _080E1F3E
- movs r2, 0x2
- negs r2, r2
- adds r0, r2, 0
-_080E1F3E:
- strh r0, [r1, 0x30]
- ldr r0, _080E1F70 @ =0x0000ffff
- strh r0, [r1, 0x32]
- strh r6, [r1, 0x34]
- movs r0, 0x2
- strh r0, [r1, 0x36]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
-_080E1F50:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _080E1EFC
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1F68: .4byte gSprites
-_080E1F6C: .4byte gUnknown_83FF54C
-_080E1F70: .4byte 0x0000ffff
- thumb_func_end sub_80E1E98
-
- thumb_func_start sub_80E1F74
-sub_80E1F74: @ 80E1F74
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x32]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _080E1FBA
- ldr r3, _080E1FC0 @ =gTasks
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x34
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_080E1FBA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1FC0: .4byte gTasks
- thumb_func_end sub_80E1F74
-
- thumb_func_start sub_80E1FC4
-sub_80E1FC4: @ 80E1FC4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080E200C @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r1, _080E2010 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0xA]
- ldrb r0, [r1]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080E2014 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x5]
- lsrs r0, 4
- lsls r0, 4
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- adds r0, r1
- strh r0, [r4, 0xC]
- ldr r0, _080E2018 @ =sub_80E201C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E200C: .4byte gTasks
-_080E2010: .4byte gUnknown_2037F02
-_080E2014: .4byte gSprites
-_080E2018: .4byte sub_80E201C
- thumb_func_end sub_80E1FC4
-
- thumb_func_start sub_80E201C
-sub_80E201C: @ 80E201C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080E2064 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080E206C
- ldrh r0, [r4, 0xC]
- ldr r2, _080E2068 @ =gUnknown_83FF564
- movs r3, 0x8
- ldrsh r1, [r4, r3]
- lsls r1, 1
- adds r1, r2
- ldrh r3, [r1]
- movs r1, 0x10
- movs r2, 0x8
- bl BlendPalette
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x17
- ble _080E205C
- movs r0, 0
- strh r0, [r4, 0x8]
-_080E205C:
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- b _080E207E
- .align 2, 0
-_080E2064: .4byte gTasks
-_080E2068: .4byte gUnknown_83FF564
-_080E206C:
- ldrh r0, [r4, 0xC]
- movs r1, 0x10
- movs r2, 0
- movs r3, 0
- bl BlendPalette
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080E207E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80E201C
-
- thumb_func_start sub_80E2084
-sub_80E2084: @ 80E2084
- push {lr}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0xD0
- lsls r2, 1
- ldr r1, _080E20C0 @ =gUnknown_2037F1A
- ldrb r3, [r1]
- ldr r1, _080E20C4 @ =gUnknown_2037F02
- ldrb r1, [r1]
- str r1, [sp]
- movs r1, 0xA
- str r1, [sp, 0x4]
- movs r1, 0x2
- str r1, [sp, 0x8]
- movs r1, 0x1E
- str r1, [sp, 0xC]
- ldr r1, _080E20C8 @ =gFile_graphics_battle_anims_masks_cure_bubbles_sheet
- str r1, [sp, 0x10]
- ldr r1, _080E20CC @ =gFile_graphics_battle_anims_masks_cure_bubbles_tilemap
- str r1, [sp, 0x14]
- ldr r1, _080E20D0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette
- str r1, [sp, 0x18]
- movs r1, 0
- bl sub_80BBA20
- add sp, 0x1C
- pop {r0}
- bx r0
- .align 2, 0
-_080E20C0: .4byte gUnknown_2037F1A
-_080E20C4: .4byte gUnknown_2037F02
-_080E20C8: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_sheet
-_080E20CC: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_tilemap
-_080E20D0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette
- thumb_func_end sub_80E2084
-
- thumb_func_start sub_80E20D4
-sub_80E20D4: @ 80E20D4
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080E212C @ =gUnknown_2037F1A
- ldrb r0, [r6]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E20F0
- ldr r1, _080E2130 @ =gUnknown_2037F02
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080E20F0:
- ldrb r0, [r6]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- ldr r4, _080E2130 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r6]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r5, 0x22]
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E2138
- movs r0, 0xA0
- lsls r0, 2
- strh r0, [r5, 0x2E]
- ldr r0, _080E2134 @ =0x0000fd80
- strh r0, [r5, 0x30]
- b _080E2160
- .align 2, 0
-_080E212C: .4byte gUnknown_2037F1A
-_080E2130: .4byte gUnknown_2037F02
-_080E2134: .4byte 0x0000fd80
-_080E2138:
- cmp r0, 0x1
- bne _080E2152
- adds r2, r5, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0xA0
- lsls r0, 2
- strh r0, [r5, 0x2E]
- strh r0, [r5, 0x30]
- b _080E2160
-_080E2152:
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0xA0
- lsls r0, 2
- strh r0, [r5, 0x2E]
-_080E2160:
- ldr r0, _080E218C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080E2180
- ldrh r0, [r5, 0x2E]
- negs r0, r0
- strh r0, [r5, 0x2E]
- adds r2, r5, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_080E2180:
- ldr r0, _080E2190 @ =sub_80E2194
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E218C: .4byte gUnknown_2037F1A
-_080E2190: .4byte sub_80E2194
- thumb_func_end sub_80E20D4
-
- thumb_func_start sub_80E2194
-sub_80E2194: @ 80E2194
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x3A]
- adds r0, r1
- strh r0, [r2, 0x3A]
- ldrh r1, [r2, 0x30]
- ldrh r3, [r2, 0x3C]
- adds r1, r3
- strh r1, [r2, 0x3C]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2, 0x24]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r2, 0x26]
- ldrh r0, [r2, 0x38]
- adds r0, 0x1
- strh r0, [r2, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xE
- bne _080E21C8
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080E21C8:
- pop {r0}
- bx r0
- thumb_func_end sub_80E2194
-
- thumb_func_start sub_80E21CC
-sub_80E21CC: @ 80E21CC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080E221C @ =gTasks
- adds r6, r1, r0
- movs r1, 0
- movs r0, 0xC
- strh r0, [r6, 0x12]
- movs r0, 0x3
- strh r0, [r6, 0x14]
- strh r1, [r6, 0x16]
- ldr r5, _080E2220 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080E2224
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- adds r4, r0, 0
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8076B2C
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _080E2216
- adds r0, 0x3
-_080E2216:
- asrs r0, 2
- adds r0, r4, r0
- b _080E2248
- .align 2, 0
-_080E221C: .4byte gTasks
-_080E2220: .4byte gUnknown_2037F1A
-_080E2224:
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074480
- adds r4, r0, 0
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8076B2C
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _080E2244
- adds r0, 0x3
-_080E2244:
- asrs r0, 2
- subs r0, r4, r0
-_080E2248:
- strh r0, [r6, 0x1E]
- ldr r5, _080E229C @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074480
- adds r4, r0, 0
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8076B2C
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _080E226C
- adds r0, 0x3
-_080E226C:
- asrs r0, 2
- subs r0, r4, r0
- strh r0, [r6, 0x20]
- ldr r4, _080E22A0 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x22]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x24]
- ldr r0, _080E22A4 @ =sub_80E22A8
- str r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E229C: .4byte gUnknown_2037F1A
-_080E22A0: .4byte gUnknown_2037F1B
-_080E22A4: .4byte sub_80E22A8
- thumb_func_end sub_80E21CC
-
- thumb_func_start sub_80E22A8
-sub_80E22A8: @ 80E22A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _080E22D0 @ =gTasks
- adds r5, r0, r1
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- cmp r1, 0
- beq _080E22D4
- cmp r1, 0x1
- bne _080E22CC
- b _080E23CC
-_080E22CC:
- b _080E23DA
- .align 2, 0
-_080E22D0: .4byte gTasks
-_080E22D4:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080E23DA
- strh r1, [r5, 0xA]
- movs r1, 0x1E
- ldrsh r0, [r5, r1]
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- movs r3, 0x22
- ldrsh r2, [r5, r3]
- movs r4, 0x24
- ldrsh r3, [r5, r4]
- ldrb r4, [r5, 0x12]
- str r4, [sp]
- ldrb r4, [r5, 0xC]
- str r4, [sp, 0x4]
- add r4, sp, 0x10
- str r4, [sp, 0x8]
- adds r4, 0x2
- str r4, [sp, 0xC]
- bl sub_80E23E8
- movs r6, 0
- mov r8, r4
- ldr r4, _080E2348 @ =gSprites
-_080E230E:
- add r0, sp, 0x10
- movs r2, 0
- ldrsh r1, [r0, r2]
- mov r3, r8
- movs r0, 0
- ldrsh r2, [r3, r0]
- ldr r0, _080E234C @ =gUnknown_83FF5CC
- movs r3, 0x23
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _080E23A2
- movs r1, 0x16
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080E2362
- cmp r6, 0
- bne _080E2350
- lsls r2, r3, 4
- adds r1, r2, r3
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r5, 0x14]
- negs r0, r0
- strh r0, [r1, 0x26]
- strh r0, [r1, 0x24]
- b _080E238A
- .align 2, 0
-_080E2348: .4byte gSprites
-_080E234C: .4byte gUnknown_83FF5CC
-_080E2350:
- lsls r2, r3, 4
- adds r1, r2, r3
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r5, 0x14]
- strh r0, [r1, 0x26]
- ldrh r0, [r5, 0x14]
- strh r0, [r1, 0x24]
- b _080E238A
-_080E2362:
- cmp r6, 0
- bne _080E2378
- lsls r2, r3, 4
- adds r1, r2, r3
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r5, 0x14]
- negs r0, r0
- strh r0, [r1, 0x24]
- ldrh r0, [r5, 0x14]
- b _080E2388
-_080E2378:
- lsls r2, r3, 4
- adds r1, r2, r3
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r5, 0x14]
- strh r0, [r1, 0x24]
- ldrh r0, [r5, 0x14]
- negs r0, r0
-_080E2388:
- strh r0, [r1, 0x26]
-_080E238A:
- ldr r1, _080E23C8 @ =gSprites
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x2E]
- strh r7, [r0, 0x30]
- movs r1, 0xA
- strh r1, [r0, 0x32]
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
-_080E23A2:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- bls _080E230E
- ldrh r2, [r5, 0xC]
- movs r3, 0xC
- ldrsh r1, [r5, r3]
- movs r4, 0x12
- ldrsh r0, [r5, r4]
- cmp r1, r0
- bne _080E23C0
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
-_080E23C0:
- adds r0, r2, 0x1
- strh r0, [r5, 0xC]
- b _080E23DA
- .align 2, 0
-_080E23C8: .4byte gSprites
-_080E23CC:
- movs r1, 0x1C
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080E23DA
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080E23DA:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80E22A8
-
- thumb_func_start sub_80E23E8
-sub_80E23E8: @ 80E23E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r4, [sp, 0x28]
- ldr r5, [sp, 0x2C]
- ldr r6, [sp, 0x30]
- mov r9, r6
- ldr r6, [sp, 0x34]
- mov r10, r6
- lsls r0, 16
- lsrs r0, 16
- mov r12, r0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- lsls r2, 16
- lsrs r2, 16
- adds r7, r2, 0
- lsls r3, 16
- lsrs r3, 16
- str r3, [sp, 0x4]
- lsls r4, 24
- lsrs r6, r4, 24
- lsls r5, 24
- lsrs r5, 24
- mov r8, r5
- cmp r5, 0
- bne _080E2430
- mov r2, r9
- strh r0, [r2]
- mov r6, r10
- strh r1, [r6]
- b _080E248E
-_080E2430:
- cmp r5, r6
- bcc _080E243E
- mov r0, r9
- strh r2, [r0]
- mov r1, r10
- strh r3, [r1]
- b _080E248E
-_080E243E:
- subs r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- mov r2, r12
- lsls r1, r2, 16
- asrs r1, 16
- lsls r5, r1, 8
- lsls r0, r7, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 8
- adds r1, r6, 0
- bl __divsi3
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r5, r0
- ldr r2, [sp]
- lsls r1, r2, 16
- asrs r1, 16
- lsls r4, r1, 8
- ldr r2, [sp, 0x4]
- lsls r0, r2, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 8
- adds r1, r6, 0
- bl __divsi3
- mov r6, r8
- muls r6, r0
- adds r0, r6, 0
- adds r4, r0
- asrs r5, 8
- mov r0, r9
- strh r5, [r0]
- asrs r4, 8
- mov r1, r10
- strh r4, [r1]
-_080E248E:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80E23E8
-
- thumb_func_start sub_80E24A0
-sub_80E24A0: @ 80E24A0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x24
- ble _080E24D6
- ldr r3, _080E24DC @ =gTasks
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x30
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_080E24D6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E24DC: .4byte gTasks
- thumb_func_end sub_80E24A0
-
- thumb_func_start sub_80E24E0
-sub_80E24E0: @ 80E24E0
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080E250C @ =gUnknown_2037F02
- ldrh r0, [r1]
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x36]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x2E]
- ldr r1, _080E2510 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080E2514 @ =sub_8075764
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E250C: .4byte gUnknown_2037F02
-_080E2510: .4byte DestroyAnimSprite
-_080E2514: .4byte sub_8075764
- thumb_func_end sub_80E24E0
-
- thumb_func_start sub_80E2518
-sub_80E2518: @ 80E2518
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- ldr r1, _080E2638 @ =gTasks
- adds r7, r0, r1
- ldr r0, _080E263C @ =gUnknown_2037F1A
- mov r10, r0
- ldrb r0, [r0]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x1E]
- mov r1, r10
- ldrb r0, [r1]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x20]
- ldr r0, _080E2640 @ =gUnknown_2037F1B
- mov r8, r0
- ldrb r0, [r0]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x22]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x3
- bl sub_8074480
- adds r4, r0, 0
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0
- bl sub_8076B2C
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _080E258A
- adds r0, 0x3
-_080E258A:
- asrs r0, 2
- adds r0, r4, r0
- strh r0, [r7, 0x24]
- ldr r4, _080E2644 @ =gUnknown_83FF62C
- movs r0, 0x1E
- ldrsh r5, [r7, r0]
- movs r1, 0x20
- ldrsh r6, [r7, r1]
- mov r1, r8
- ldrb r0, [r1]
- bl sub_807685C
- adds r3, r0, 0
- subs r3, 0x5
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x26]
- cmp r0, 0x40
- beq _080E2654
- ldr r4, _080E2648 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x10
- strh r1, [r0, 0x2E]
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r7, 0x22]
- strh r1, [r0, 0x32]
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r7, 0x24]
- strh r1, [r0, 0x36]
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _080E264C @ =0x0000ffe0
- strh r1, [r0, 0x38]
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl sub_8075068
- mov r1, r10
- ldrb r0, [r1]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E2632
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080E2632:
- ldr r0, _080E2650 @ =sub_80E2668
- str r0, [r7]
- b _080E265A
- .align 2, 0
-_080E2638: .4byte gTasks
-_080E263C: .4byte gUnknown_2037F1A
-_080E2640: .4byte gUnknown_2037F1B
-_080E2644: .4byte gUnknown_83FF62C
-_080E2648: .4byte gSprites
-_080E264C: .4byte 0x0000ffe0
-_080E2650: .4byte sub_80E2668
-_080E2654:
- mov r0, r9
- bl DestroyAnimVisualTask
-_080E265A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80E2518
-
- thumb_func_start sub_80E2668
-sub_80E2668: @ 80E2668
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080E268C @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080E26D0
- cmp r1, 0x1
- bgt _080E2690
- cmp r1, 0
- beq _080E269A
- b _080E276E
- .align 2, 0
-_080E268C: .4byte gTasks
-_080E2690:
- cmp r1, 0x2
- beq _080E26F4
- cmp r1, 0x3
- beq _080E2768
- b _080E276E
-_080E269A:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E276E
- strh r1, [r4, 0xA]
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E26CC @ =gSprites
- adds r0, r1
- bl AnimateBallThrow
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080E276E
- b _080E275A
- .align 2, 0
-_080E26CC: .4byte gSprites
-_080E26D0:
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E26F0 @ =gSprites
- adds r0, r1
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080E276E
- movs r0, 0
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- b _080E275A
- .align 2, 0
-_080E26F0: .4byte gSprites
-_080E26F4:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E276E
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r2, [r4, 0xC]
- adds r2, 0x1
- strh r2, [r4, 0xC]
- ldr r5, _080E2764 @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- movs r0, 0x1
- ands r2, r0
- adds r1, 0x3E
- lsls r2, 2
- ldrb r3, [r1]
- subs r0, 0x6
- ands r0, r3
- orrs r0, r2
- strb r0, [r1]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _080E276E
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
-_080E275A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080E276E
- .align 2, 0
-_080E2764: .4byte gSprites
-_080E2768:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080E276E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80E2668
-
- thumb_func_start sub_80E2774
-sub_80E2774: @ 80E2774
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r0, _080E2788 @ =gUnknown_2037F02
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r6, r0, 0
- cmp r1, 0
- bne _080E2790
- ldr r0, _080E278C @ =gUnknown_2037F1A
- b _080E2792
- .align 2, 0
-_080E2788: .4byte gUnknown_2037F02
-_080E278C: .4byte gUnknown_2037F1A
-_080E2790:
- ldr r0, _080E27F8 @ =gUnknown_2037F1B
-_080E2792:
- ldrb r5, [r0]
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x10
- ldr r3, _080E27FC @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080E2800 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- adds r1, r6, 0
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x3A]
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- movs r1, 0x1
- cmp r0, 0
- bne _080E27C0
- movs r3, 0x1
- negs r3, r3
- adds r1, r3, 0
-_080E27C0:
- strh r1, [r4, 0x3C]
- adds r0, r5, 0
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080E2804
- ldrb r2, [r4, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x8
- orrs r1, r0
- lsls r1, 1
- subs r0, 0x47
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x3]
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_8076B2C
- subs r0, 0x8
- b _080E280E
- .align 2, 0
-_080E27F8: .4byte gUnknown_2037F1B
-_080E27FC: .4byte 0x000003ff
-_080E2800: .4byte 0xfffffc00
-_080E2804:
- adds r0, r5, 0
- movs r1, 0x5
- bl sub_8076B2C
- adds r0, 0x8
-_080E280E:
- strh r0, [r4, 0x20]
- ldr r0, _080E281C @ =sub_80E2820
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E281C: .4byte sub_80E2820
- thumb_func_end sub_80E2774
-
- thumb_func_start sub_80E2820
-sub_80E2820: @ 80E2820
- push {lr}
- adds r2, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r2, r0]
- cmp r1, 0x1
- beq _080E2868
- cmp r1, 0x1
- bgt _080E2836
- cmp r1, 0
- beq _080E2840
- b _080E28D8
-_080E2836:
- cmp r1, 0x2
- beq _080E2878
- cmp r1, 0x3
- beq _080E289E
- b _080E28D8
-_080E2840:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E28D8
- strh r1, [r2, 0x30]
- ldrh r0, [r2, 0x3C]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x32]
- adds r0, 0x1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bne _080E28D8
- b _080E2896
-_080E2868:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- bne _080E28D8
- b _080E2892
-_080E2878:
- movs r0, 0x3C
- ldrsh r1, [r2, r0]
- lsls r1, 2
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _080E28D8
-_080E2892:
- movs r0, 0
- strh r0, [r2, 0x30]
-_080E2896:
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- b _080E28D8
-_080E289E:
- movs r0, 0x3C
- ldrsh r1, [r2, r0]
- lsls r0, r1, 1
- adds r0, r1
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- bne _080E28D8
- ldrh r0, [r2, 0x3A]
- subs r0, 0x1
- strh r0, [r2, 0x3A]
- lsls r0, 16
- cmp r0, 0
- beq _080E28D2
- movs r0, 0
- strh r0, [r2, 0x30]
- ldrh r0, [r2, 0x2E]
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- b _080E28D8
-_080E28D2:
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080E28D8:
- pop {r0}
- bx r0
- thumb_func_end sub_80E2820
-
- thumb_func_start sub_80E28DC
-sub_80E28DC: @ 80E28DC
- push {r4,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r2, _080E28F4 @ =gUnknown_2037F02
- movs r3, 0
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _080E28F8
- adds r0, r1, 0
- bl DestroyAnimVisualTask
- b _080E2920
- .align 2, 0
-_080E28F4: .4byte gUnknown_2037F02
-_080E28F8:
- ldr r0, _080E2928 @ =gTasks
- lsls r4, r1, 2
- adds r4, r1
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r2, 0x2]
- strh r0, [r4, 0x8]
- ldrb r0, [r2]
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r4, 0x26]
- ldr r2, _080E292C @ =gUnknown_83FF65C
- adds r0, r4, 0
- bl sub_80762D0
- ldr r0, _080E2930 @ =sub_80E2934
- str r0, [r4]
-_080E2920:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2928: .4byte gTasks
-_080E292C: .4byte gUnknown_83FF65C
-_080E2930: .4byte sub_80E2934
- thumb_func_end sub_80E28DC
-
- thumb_func_start sub_80E2934
-sub_80E2934: @ 80E2934
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080E2974 @ =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E298E
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080E297C
- ldr r2, _080E2978 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x2
- b _080E298C
- .align 2, 0
-_080E2974: .4byte gTasks
-_080E2978: .4byte gSprites
-_080E297C:
- ldr r2, _080E29D4 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _080E29D8 @ =0x0000fffe
-_080E298C:
- strh r1, [r0, 0x24]
-_080E298E:
- adds r0, r4, 0
- bl sub_8076308
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080E29EA
- ldr r2, _080E29D4 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
- ldrh r0, [r4, 0x8]
- subs r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- cmp r0, 0
- beq _080E29E4
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080E29DC @ =gTasks
- adds r0, r1
- ldrh r1, [r0, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080E29E0 @ =gUnknown_83FF65C
- bl sub_80762D0
- strh r5, [r4, 0xA]
- strh r5, [r4, 0xC]
- b _080E29EA
- .align 2, 0
-_080E29D4: .4byte gSprites
-_080E29D8: .4byte 0x0000fffe
-_080E29DC: .4byte gTasks
-_080E29E0: .4byte gUnknown_83FF65C
-_080E29E4:
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080E29EA:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E2934
-
- thumb_func_start sub_80E29F0
-sub_80E29F0: @ 80E29F0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080E2A04 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080E2A0C
- ldr r4, _080E2A08 @ =gUnknown_2037F1A
- b _080E2A0E
- .align 2, 0
-_080E2A04: .4byte gUnknown_2037F02
-_080E2A08: .4byte gUnknown_2037F1A
-_080E2A0C:
- ldr r4, _080E2A4C @ =gUnknown_2037F1B
-_080E2A0E:
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- strh r0, [r5, 0x22]
- movs r1, 0x22
- ldrsh r0, [r5, r1]
- cmp r0, 0x7
- bgt _080E2A32
- movs r0, 0x8
- strh r0, [r5, 0x22]
-_080E2A32:
- movs r2, 0
- strh r2, [r5, 0x2E]
- ldr r1, _080E2A50 @ =gUnknown_2037F02
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0x30]
- strh r2, [r5, 0x32]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x34]
- ldr r0, _080E2A54 @ =sub_80E2A58
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2A4C: .4byte gUnknown_2037F1B
-_080E2A50: .4byte gUnknown_2037F02
-_080E2A54: .4byte sub_80E2A58
- thumb_func_end sub_80E29F0
-
- thumb_func_start sub_80E2A58
-sub_80E2A58: @ 80E2A58
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x30
- ldrsh r1, [r3, r2]
- cmp r0, r1
- blt _080E2AAC
- movs r0, 0
- strh r0, [r3, 0x2E]
- ldrh r1, [r3, 0x32]
- adds r1, 0x1
- movs r0, 0x1
- ands r1, r0
- strh r1, [r3, 0x32]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- lsls r1, 2
- ldrb r2, [r0]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- movs r2, 0x32
- ldrsh r0, [r3, r2]
- cmp r0, 0
- beq _080E2AAC
- ldrh r0, [r3, 0x34]
- subs r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- cmp r0, 0
- bne _080E2AAC
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080E2AAC:
- pop {r0}
- bx r0
- thumb_func_end sub_80E2A58
-
- thumb_func_start sub_80E2AB0
-sub_80E2AB0: @ 80E2AB0
- push {lr}
- adds r3, r0, 0
- ldr r0, _080E2ADC @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080E2AE0
- ldrb r2, [r3, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x8
- orrs r1, r0
- lsls r1, 1
- subs r0, 0x47
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x3]
- movs r0, 0x64
- strh r0, [r3, 0x20]
- movs r0, 0x1
- b _080E2AE6
- .align 2, 0
-_080E2ADC: .4byte gUnknown_2037F02
-_080E2AE0:
- movs r0, 0x8C
- strh r0, [r3, 0x20]
- ldr r0, _080E2AF4 @ =0x0000ffff
-_080E2AE6:
- strh r0, [r3, 0x3C]
- movs r0, 0x38
- strh r0, [r3, 0x22]
- ldr r0, _080E2AF8 @ =sub_80E2AFC
- str r0, [r3, 0x1C]
- pop {r0}
- bx r0
- .align 2, 0
-_080E2AF4: .4byte 0x0000ffff
-_080E2AF8: .4byte sub_80E2AFC
- thumb_func_end sub_80E2AB0
-
- thumb_func_start sub_80E2AFC
-sub_80E2AFC: @ 80E2AFC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- bls _080E2B0A
- b _080E2CDC
-_080E2B0A:
- lsls r0, 2
- ldr r1, _080E2B14 @ =_080E2B18
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E2B14: .4byte _080E2B18
- .align 2, 0
-_080E2B18:
- .4byte _080E2B3C
- .4byte _080E2B6E
- .4byte _080E2B80
- .4byte _080E2BC0
- .4byte _080E2BD2
- .4byte _080E2C10
- .4byte _080E2C74
- .4byte _080E2C94
- .4byte _080E2CBA
-_080E2B3C:
- movs r3, 0x3C
- ldrsh r0, [r4, r3]
- lsls r0, 1
- ldrh r1, [r4, 0x22]
- subs r1, r0
- strh r1, [r4, 0x22]
- ldrh r2, [r4, 0x30]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _080E2B5E
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- ldrh r0, [r4, 0x20]
- subs r0, r1
- strh r0, [r4, 0x20]
-_080E2B5E:
- adds r0, r2, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- beq _080E2B6C
- b _080E2CDC
-_080E2B6C:
- b _080E2CAE
-_080E2B6E:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- beq _080E2B7E
- b _080E2CDC
-_080E2B7E:
- b _080E2CAE
-_080E2B80:
- ldrh r2, [r4, 0x30]
- adds r2, 0x1
- strh r2, [r4, 0x30]
- movs r3, 0x3C
- ldrsh r1, [r4, r3]
- lsls r0, r1, 1
- adds r0, r1
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r3, _080E2BBC @ =gSineTable
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- ldrh r1, [r4, 0x3C]
- muls r0, r1
- strh r0, [r4, 0x24]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0xC
- beq _080E2BB8
- b _080E2CDC
-_080E2BB8:
- b _080E2CAE
- .align 2, 0
-_080E2BBC: .4byte gSineTable
-_080E2BC0:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- beq _080E2BD0
- b _080E2CDC
-_080E2BD0:
- b _080E2CAE
-_080E2BD2:
- ldrh r2, [r4, 0x30]
- adds r2, 0x1
- strh r2, [r4, 0x30]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r1, r0, 1
- adds r1, r0
- ldrh r0, [r4, 0x22]
- subs r0, r1
- strh r0, [r4, 0x22]
- ldr r3, _080E2C0C @ =gSineTable
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- ldrh r1, [r4, 0x3C]
- muls r0, r1
- strh r0, [r4, 0x24]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0xC
- bne _080E2CDC
- b _080E2CB2
- .align 2, 0
-_080E2C0C: .4byte gSineTable
-_080E2C10:
- ldrh r2, [r4, 0x30]
- adds r2, 0x1
- strh r2, [r4, 0x30]
- movs r3, 0x3C
- ldrsh r1, [r4, r3]
- lsls r0, r1, 1
- adds r0, r1
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r3, _080E2C68 @ =gSineTable
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- ldrh r1, [r4, 0x3C]
- muls r0, r1
- strh r0, [r4, 0x24]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0xF
- bne _080E2C5C
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x10
- ldr r3, _080E2C6C @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080E2C70 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
-_080E2C5C:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x12
- bne _080E2CDC
- b _080E2CAE
- .align 2, 0
-_080E2C68: .4byte gSineTable
-_080E2C6C: .4byte 0x000003ff
-_080E2C70: .4byte 0xfffffc00
-_080E2C74:
- movs r3, 0x3C
- ldrsh r0, [r4, r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- ldrh r0, [r4, 0x20]
- adds r1, r0
- strh r1, [r4, 0x20]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bne _080E2CDC
- b _080E2CAE
-_080E2C94:
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r0, 1
- ldrh r3, [r4, 0x20]
- adds r0, r3
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080E2CDC
-_080E2CAE:
- movs r0, 0
- strh r0, [r4, 0x30]
-_080E2CB2:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080E2CDC
-_080E2CBA:
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r1, r0, 1
- adds r1, r0
- ldrh r0, [r4, 0x20]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080E2CDC
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E2CDC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E2AFC
-
- thumb_func_start sub_80E2CE4
-sub_80E2CE4: @ 80E2CE4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080E2D34 @ =gTasks
- adds r6, r1, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x26]
- bl sub_8075290
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x1
- bne _080E2D44
- ldr r5, _080E2D38 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8074480
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r1, [r5]
- movs r0, 0x2
- eors r0, r1
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- ble _080E2D3C
- strh r7, [r6, 0x24]
- b _080E2D64
- .align 2, 0
-_080E2D34: .4byte gTasks
-_080E2D38: .4byte gUnknown_2037F1A
-_080E2D3C:
- ldr r0, _080E2D40 @ =0x0000ffff
- b _080E2D62
- .align 2, 0
-_080E2D40: .4byte 0x0000ffff
-_080E2D44:
- ldr r0, _080E2D58 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080E2D60
- ldr r0, _080E2D5C @ =0x0000ffff
- b _080E2D62
- .align 2, 0
-_080E2D58: .4byte gUnknown_2037F1A
-_080E2D5C: .4byte 0x0000ffff
-_080E2D60:
- movs r0, 0x1
-_080E2D62:
- strh r0, [r6, 0x24]
-_080E2D64:
- ldr r0, _080E2D70 @ =sub_80E2D74
- str r0, [r6]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2D70: .4byte sub_80E2D74
- thumb_func_end sub_80E2CE4
-
- thumb_func_start sub_80E2D74
-sub_80E2D74: @ 80E2D74
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080E2D98 @ =gTasks
- adds r3, r0, r1
- movs r1, 0x8
- ldrsh r0, [r3, r1]
- cmp r0, 0x8
- bls _080E2D8E
- b _080E2F08
-_080E2D8E:
- lsls r0, 2
- ldr r1, _080E2D9C @ =_080E2DA0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E2D98: .4byte gTasks
-_080E2D9C: .4byte _080E2DA0
- .align 2, 0
-_080E2DA0:
- .4byte _080E2DC4
- .4byte _080E2DD6
- .4byte _080E2E08
- .4byte _080E2E38
- .4byte _080E2E5E
- .4byte _080E2E88
- .4byte _080E2E98
- .4byte _080E2EB8
- .4byte _080E2EF0
-_080E2DC4:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- beq _080E2DD4
- b _080E2F08
-_080E2DD4:
- b _080E2EE0
-_080E2DD6:
- ldr r2, _080E2E04 @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r2, 0x24
- ldrsh r0, [r3, r2]
- lsls r2, r0, 1
- adds r2, r0
- ldrh r0, [r1, 0x24]
- subs r0, r2
- strh r0, [r1, 0x24]
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- beq _080E2E02
- b _080E2F08
-_080E2E02:
- b _080E2EE0
- .align 2, 0
-_080E2E04: .4byte gSprites
-_080E2E08:
- ldr r2, _080E2E34 @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x24
- ldrsh r2, [r3, r0]
- lsls r0, r2, 1
- adds r0, r2
- ldrh r2, [r1, 0x24]
- adds r0, r2
- strh r0, [r1, 0x24]
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _080E2F08
- b _080E2EE0
- .align 2, 0
-_080E2E34: .4byte gSprites
-_080E2E38:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080E2F08
- movs r0, 0
- strh r0, [r3, 0xA]
- ldrh r1, [r3, 0xC]
- movs r2, 0xC
- ldrsh r0, [r3, r2]
- cmp r0, 0
- bne _080E2EE4
- adds r0, r1, 0x1
- strh r0, [r3, 0xC]
- movs r0, 0x1
- strh r0, [r3, 0x8]
- b _080E2F08
-_080E2E5E:
- ldr r2, _080E2E84 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x24]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- strh r1, [r0, 0x24]
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080E2F08
- b _080E2EE0
- .align 2, 0
-_080E2E84: .4byte gSprites
-_080E2E88:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _080E2F08
- b _080E2EE0
-_080E2E98:
- ldr r2, _080E2EB4 @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x24
- ldrsh r2, [r3, r0]
- lsls r2, 2
- ldrh r0, [r1, 0x24]
- subs r0, r2
- b _080E2ED0
- .align 2, 0
-_080E2EB4: .4byte gSprites
-_080E2EB8:
- ldr r2, _080E2EEC @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r2, 0x24
- ldrsh r0, [r3, r2]
- lsls r0, 2
- ldrh r2, [r1, 0x24]
- adds r0, r2
-_080E2ED0:
- strh r0, [r1, 0x24]
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080E2F08
-_080E2EE0:
- movs r0, 0
- strh r0, [r3, 0xA]
-_080E2EE4:
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- b _080E2F08
- .align 2, 0
-_080E2EEC: .4byte gSprites
-_080E2EF0:
- ldr r2, _080E2F10 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x24]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080E2F08:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2F10: .4byte gSprites
- thumb_func_end sub_80E2D74
-
- thumb_func_start sub_80E2F14
-sub_80E2F14: @ 80E2F14
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080E2F30 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080E2F38
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080E2F34 @ =gUnknown_2037F1A
- b _080E2F3A
- .align 2, 0
-_080E2F30: .4byte gUnknown_2037F02
-_080E2F34: .4byte gUnknown_2037F1A
-_080E2F38:
- ldr r0, _080E2F90 @ =gUnknown_2037F1B
-_080E2F3A:
- ldrb r0, [r0]
- strh r0, [r4, 0x3C]
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E2F5E
- ldrb r0, [r4, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r4, 0x3]
-_080E2F5E:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8076884
- movs r2, 0x3
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- adds r0, r1, 0
- ands r0, r3
- orrs r0, r2
- strb r0, [r4, 0x5]
- ldrb r0, [r4, 0x1]
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4, 0x1]
- ldr r0, _080E2F94 @ =sub_80E2F98
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2F90: .4byte gUnknown_2037F1B
-_080E2F94: .4byte sub_80E2F98
- thumb_func_end sub_80E2F14
-
- thumb_func_start sub_80E2F98
-sub_80E2F98: @ 80E2F98
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080E2FA6
- b _080E3196
-_080E2FA6:
- lsls r0, 2
- ldr r1, _080E2FB0 @ =_080E2FB4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E2FB0: .4byte _080E2FB4
- .align 2, 0
-_080E2FB4:
- .4byte _080E2FC8
- .4byte _080E30C8
- .4byte _080E3130
- .4byte _080E3144
- .4byte _080E3190
-_080E2FC8:
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0x5
- bhi _080E2FF8
- lsls r0, 2
- ldr r1, _080E2FDC @ =_080E2FE0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E2FDC: .4byte _080E2FE0
- .align 2, 0
-_080E2FE0:
- .4byte _080E2FFC
- .4byte _080E3018
- .4byte _080E303A
- .4byte _080E3056
- .4byte _080E2FFC
- .4byte _080E307C
-_080E2FF8:
- movs r0, 0
- strh r0, [r4, 0x3A]
-_080E2FFC:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- b _080E3070
-_080E3018:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x4
- b _080E3076
-_080E303A:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- b _080E3070
-_080E3056:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
-_080E3070:
- bl sub_8076B2C
- subs r0, 0x4
-_080E3076:
- lsls r0, 16
- lsrs r1, r0, 16
- b _080E309C
-_080E307C:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r1, r0, 24
-_080E309C:
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0x4
- bne _080E30A8
- movs r0, 0x18
- b _080E30B2
-_080E30A8:
- cmp r0, 0x5
- bne _080E30B0
- movs r0, 0x6
- b _080E30B2
-_080E30B0:
- movs r0, 0xC
-_080E30B2:
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- strh r1, [r4, 0x36]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- b _080E3188
-_080E30C8:
- adds r0, r4, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080E3196
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- beq _080E3100
- cmp r0, 0x5
- beq _080E3120
- ldrh r0, [r4, 0x24]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x26]
- strh r1, [r4, 0x24]
- strh r1, [r4, 0x2E]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- b _080E3118
-_080E3100:
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x26]
- strh r1, [r4, 0x24]
- strh r1, [r4, 0x38]
-_080E3118:
- ldrh r0, [r4, 0x3A]
- adds r0, 0x1
- strh r0, [r4, 0x3A]
- b _080E3196
-_080E3120:
- movs r0, 0
- strh r0, [r4, 0x2E]
- movs r1, 0x10
- strh r1, [r4, 0x30]
- strh r0, [r4, 0x32]
- movs r0, 0x3
- strh r0, [r4, 0x38]
- b _080E3196
-_080E3130:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080E3196
- movs r0, 0
- strh r0, [r4, 0x38]
- b _080E3196
-_080E3144:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080E3156
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- strh r0, [r4, 0x30]
- b _080E315C
-_080E3156:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
-_080E315C:
- ldrh r1, [r4, 0x32]
- lsls r1, 8
- ldrh r0, [r4, 0x30]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x20
- bne _080E3196
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_080E3188:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- b _080E3196
-_080E3190:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E3196:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80E2F98
-
- thumb_func_start sub_80E319C
-sub_80E319C: @ 80E319C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- subs r0, r1
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- muls r0, r1
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __divsi3
- adds r5, r0, 0
- strh r5, [r4, 0x24]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- subs r0, r1
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- muls r0, r1
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __divsi3
- adds r3, r0, 0
- strh r3, [r4, 0x26]
- ldrh r1, [r4, 0x38]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080E31FA
- ldr r0, _080E3218 @ =gUnknown_83FF180
- ldrh r1, [r4, 0x20]
- adds r1, r5
- lsls r1, 16
- asrs r1, 16
- ldrh r2, [r4, 0x22]
- adds r2, r3
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x5
- bl CreateSprite
-_080E31FA:
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080E320C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E320C:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3218: .4byte gUnknown_83FF180
- thumb_func_end sub_80E319C
-
- thumb_func_start sub_80E321C
-sub_80E321C: @ 80E321C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080E3250 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074480
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080E3258
- ldr r2, _080E3254 @ =gUnknown_2037F02
- ldrh r1, [r5, 0x20]
- ldrh r0, [r2]
- subs r0, r1, r0
- strh r0, [r5, 0x2E]
- ldrh r0, [r2, 0x4]
- subs r1, r0
- b _080E3266
- .align 2, 0
-_080E3250: .4byte gUnknown_2037F1B
-_080E3254: .4byte gUnknown_2037F02
-_080E3258:
- ldr r2, _080E328C @ =gUnknown_2037F02
- ldrh r1, [r5, 0x20]
- ldrh r0, [r2]
- adds r0, r1, r0
- strh r0, [r5, 0x2E]
- ldrh r0, [r2, 0x4]
- adds r1, r0
-_080E3266:
- strh r1, [r5, 0x32]
- adds r3, r2, 0
- ldrh r1, [r5, 0x22]
- ldrh r2, [r3, 0x2]
- adds r2, r1, r2
- strh r2, [r5, 0x30]
- ldrh r0, [r3, 0x6]
- adds r1, r0
- strh r1, [r5, 0x34]
- ldrh r0, [r3, 0x8]
- strh r0, [r5, 0x36]
- ldrh r0, [r5, 0x2E]
- strh r0, [r5, 0x20]
- strh r2, [r5, 0x22]
- ldr r0, _080E3290 @ =sub_80E319C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E328C: .4byte gUnknown_2037F02
-_080E3290: .4byte sub_80E319C
- thumb_func_end sub_80E321C
-
- thumb_func_start sub_80E3294
-sub_80E3294: @ 80E3294
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r5, r0, 24
- adds r2, r5, 0
- ldr r0, _080E32D8 @ =gTasks
- mov r9, r0
- lsls r7, r6, 2
- adds r0, r7, r6
- lsls r0, 3
- mov r8, r0
- mov r4, r8
- add r4, r9
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E32DC
- adds r0, r5, 0
- movs r1, 0
- bl sub_80758E0
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- b _080E3328
- .align 2, 0
-_080E32D8: .4byte gTasks
-_080E32DC:
- cmp r0, 0x1
- bne _080E3334
- ldrh r0, [r4, 0xA]
- adds r0, 0x60
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- subs r0, 0xD
- strh r0, [r4, 0xC]
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- movs r0, 0xC
- ldrsh r2, [r4, r0]
- adds r0, r5, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bne _080E3360
- movs r0, 0
- strh r0, [r4, 0xE]
- adds r0, r5, 0
- bl sub_8075980
- ldr r1, _080E3330 @ =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080E3328:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080E3360
- .align 2, 0
-_080E3330: .4byte gSprites
-_080E3334:
- ldr r0, _080E336C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- movs r1, 0
- bl LoadBattleMonGfxAndAnimate
- adds r3, r7, 0
- mov r4, r9
- movs r1, 0xF
- mov r2, r8
- adds r0, r4, r2
- adds r0, 0x26
- movs r2, 0
-_080E334C:
- strh r2, [r0]
- subs r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _080E334C
- adds r0, r3, r6
- lsls r0, 3
- adds r0, r4
- ldr r1, _080E3370 @ =sub_80E3374
- str r1, [r0]
-_080E3360:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E336C: .4byte gUnknown_2037F1A
-_080E3370: .4byte sub_80E3374
- thumb_func_end sub_80E3294
-
- thumb_func_start sub_80E3374
-sub_80E3374: @ 80E3374
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _080E33A0 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _080E33D8
- cmp r5, 0x1
- bgt _080E33A4
- cmp r5, 0
- beq _080E33AE
- b _080E34C6
- .align 2, 0
-_080E33A0: .4byte gTasks
-_080E33A4:
- cmp r5, 0x2
- beq _080E3444
- cmp r5, 0x3
- beq _080E3480
- b _080E34C6
-_080E33AE:
- ldr r0, _080E33D0 @ =gSprites
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldr r0, _080E33D4 @ =0x0000ff38
- strh r0, [r1, 0x26]
- movs r0, 0xC8
- strh r0, [r1, 0x24]
- adds r1, 0x3E
- ldrb r2, [r1]
- subs r0, 0xCD
- ands r0, r2
- strb r0, [r1]
- strh r5, [r4, 0x1C]
- b _080E3472
- .align 2, 0
-_080E33D0: .4byte gSprites
-_080E33D4: .4byte 0x0000ff38
-_080E33D8:
- ldrh r1, [r4, 0x1C]
- adds r1, 0x70
- movs r5, 0
- strh r1, [r4, 0x1C]
- ldr r2, _080E343C @ =gSprites
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- adds r2, r0, r2
- lsls r1, 16
- asrs r1, 24
- ldrh r3, [r2, 0x26]
- adds r1, r3
- strh r1, [r2, 0x26]
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- blt _080E3408
- strh r5, [r2, 0x24]
-_080E3408:
- movs r1, 0x26
- ldrsh r0, [r2, r1]
- cmp r0, 0
- ble _080E3412
- strh r5, [r2, 0x26]
-_080E3412:
- movs r3, 0x26
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _080E34C6
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x76
- bl PlaySE12WithPanning
- ldr r1, _080E3440 @ =0xfffff800
- adds r0, r1, 0
- ldrh r2, [r4, 0x1C]
- adds r0, r2
- strh r0, [r4, 0x1C]
- b _080E3472
- .align 2, 0
-_080E343C: .4byte gSprites
-_080E3440: .4byte 0xfffff800
-_080E3444:
- ldrh r0, [r4, 0x1C]
- subs r0, 0x70
- strh r0, [r4, 0x1C]
- lsls r0, 16
- cmp r0, 0
- bge _080E3454
- movs r0, 0
- strh r0, [r4, 0x1C]
-_080E3454:
- ldr r0, _080E347C @ =gSprites
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r4, 0x1C]
- lsls r2, 16
- asrs r2, 24
- ldrh r0, [r1, 0x26]
- subs r0, r2
- strh r0, [r1, 0x26]
- movs r3, 0x1C
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _080E34C6
-_080E3472:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080E34C6
- .align 2, 0
-_080E347C: .4byte gSprites
-_080E3480:
- ldrh r0, [r4, 0x1C]
- adds r0, 0x70
- strh r0, [r4, 0x1C]
- ldr r2, _080E34CC @ =gSprites
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r2
- lsls r0, 16
- asrs r0, 24
- ldrh r2, [r1, 0x26]
- adds r0, r2
- strh r0, [r1, 0x26]
- lsls r0, 16
- cmp r0, 0
- ble _080E34A4
- movs r0, 0
- strh r0, [r1, 0x26]
-_080E34A4:
- movs r3, 0x26
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _080E34C6
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x76
- bl PlaySE12WithPanning
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080E34C6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E34CC: .4byte gSprites
- thumb_func_end sub_80E3374
-
- thumb_func_start sub_80E34D0
-sub_80E34D0: @ 80E34D0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080E34F4 @ =gUnknown_2037F1B
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080E34FC
- ldrb r0, [r4]
- bl sub_807685C
- subs r0, 0x2
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
- ldr r4, _080E34F8 @ =0x0000ff70
- b _080E350C
- .align 2, 0
-_080E34F4: .4byte gUnknown_2037F1B
-_080E34F8: .4byte 0x0000ff70
-_080E34FC:
- ldrb r0, [r4]
- bl sub_807685C
- adds r0, 0x2
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
- ldr r4, _080E3528 @ =0x0000ffa0
-_080E350C:
- ldr r0, _080E352C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0x3
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- strh r4, [r5, 0x26]
- ldr r0, _080E3530 @ =sub_80E3534
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3528: .4byte 0x0000ffa0
-_080E352C: .4byte gUnknown_2037F1B
-_080E3530: .4byte sub_80E3534
- thumb_func_end sub_80E34D0
-
- thumb_func_start sub_80E3534
-sub_80E3534: @ 80E3534
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080E3542
- b _080E365E
-_080E3542:
- lsls r0, 2
- ldr r1, _080E354C @ =_080E3550
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E354C: .4byte _080E3550
- .align 2, 0
-_080E3550:
- .4byte _080E3564
- .4byte _080E3588
- .4byte _080E35C8
- .4byte _080E35F8
- .4byte _080E3624
-_080E3564:
- ldrh r0, [r4, 0x26]
- adds r0, 0xA
- strh r0, [r4, 0x26]
- lsls r0, 16
- cmp r0, 0
- blt _080E365E
- movs r0, 0x3F
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xC6
- bl PlaySE12WithPanning
- movs r0, 0
- strh r0, [r4, 0x26]
- b _080E361C
-_080E3588:
- ldrh r1, [r4, 0x30]
- adds r1, 0x4
- movs r5, 0
- strh r1, [r4, 0x30]
- ldr r2, _080E35C4 @ =gSineTable
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- negs r0, r0
- strh r0, [r4, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- ble _080E365E
- movs r0, 0x3F
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xC6
- bl PlaySE12WithPanning
- strh r5, [r4, 0x30]
- strh r5, [r4, 0x26]
- b _080E361C
- .align 2, 0
-_080E35C4: .4byte gSineTable
-_080E35C8:
- ldrh r1, [r4, 0x30]
- adds r1, 0x6
- movs r3, 0
- strh r1, [r4, 0x30]
- ldr r2, _080E35F4 @ =gSineTable
- movs r5, 0x30
- ldrsh r0, [r4, r5]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 20
- negs r0, r0
- strh r0, [r4, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- ble _080E365E
- strh r3, [r4, 0x30]
- strh r3, [r4, 0x26]
- b _080E361C
- .align 2, 0
-_080E35F4: .4byte gSineTable
-_080E35F8:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080E365E
- movs r0, 0x3F
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xB9
- bl PlaySE12WithPanning
- movs r0, 0
- strh r0, [r4, 0x30]
-_080E361C:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080E365E
-_080E3624:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080E365E
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x32]
- adds r1, 0x1
- strh r1, [r4, 0x32]
- movs r0, 0x1
- ands r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- lsls r1, 2
- ldrb r2, [r3]
- subs r0, 0x6
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x7
- bne _080E365E
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E365E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80E3534
-
- thumb_func_start sub_80E3664
-sub_80E3664: @ 80E3664
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- lsrs r1, r0, 16
- str r1, [sp]
- asrs r6, r0, 16
- cmp r6, 0
- blt _080E36A6
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- lsrs r1, r0, 16
- mov r9, r1
- asrs r1, r0, 16
- cmp r1, 0
- bge _080E36B4
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- ldr r1, _080E36B0 @ =gSprites
- adds r0, r1
- bl obj_delete_but_dont_free_vram
-_080E36A6:
- adds r0, r7, 0
- bl DestroyAnimVisualTask
- b _080E37BA
- .align 2, 0
-_080E36B0: .4byte gSprites
-_080E36B4:
- ldr r4, _080E3744 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r5, r0, r4
- ldrh r0, [r5, 0x24]
- adds r0, 0x18
- movs r1, 0
- strh r0, [r5, 0x24]
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r6, r0, r4
- ldrh r0, [r6, 0x24]
- subs r0, 0x18
- strh r0, [r6, 0x24]
- strh r1, [r5, 0x2E]
- strh r1, [r6, 0x2E]
- strh r1, [r5, 0x30]
- strh r1, [r6, 0x30]
- strh r1, [r5, 0x32]
- strh r1, [r6, 0x32]
- movs r0, 0x10
- strh r0, [r5, 0x34]
- ldr r0, _080E3748 @ =0x0000fff0
- strh r0, [r6, 0x34]
- strh r1, [r5, 0x36]
- movs r0, 0x80
- strh r0, [r6, 0x36]
- movs r0, 0x18
- strh r0, [r5, 0x38]
- strh r0, [r6, 0x38]
- strh r7, [r5, 0x3A]
- strh r7, [r6, 0x3A]
- strh r1, [r5, 0x3C]
- strh r1, [r6, 0x3C]
- ldr r2, _080E374C @ =gTasks
- lsls r3, r7, 2
- adds r0, r3, r7
- lsls r0, 3
- adds r0, r2
- movs r1, 0x2
- strh r1, [r0, 0x8]
- ldr r0, _080E3750 @ =gUnknown_2024018
- ldr r1, [r0]
- ldr r0, _080E3754 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- mov r12, r4
- mov r10, r2
- mov r8, r3
- cmp r0, 0
- bne _080E3758
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r2, r6, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- b _080E376E
- .align 2, 0
-_080E3744: .4byte gSprites
-_080E3748: .4byte 0x0000fff0
-_080E374C: .4byte gTasks
-_080E3750: .4byte gUnknown_2024018
-_080E3754: .4byte gUnknown_2037F1B
-_080E3758:
- adds r1, r5, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- adds r1, r6, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- orrs r0, r2
- strb r0, [r1]
-_080E376E:
- mov r1, r9
- lsls r0, r1, 16
- asrs r0, 16
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- mov r0, r12
- adds r4, r2, r0
- ldrb r1, [r4, 0x1]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r0, r1
- strb r0, [r4, 0x1]
- ldr r1, [sp]
- lsls r0, r1, 16
- asrs r0, 16
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- mov r0, r12
- adds r4, r1, r0
- ldrb r0, [r4, 0x1]
- ands r3, r0
- strb r3, [r4, 0x1]
- mov r3, r12
- adds r3, 0x1C
- adds r2, r3
- ldr r0, _080E37CC @ =sub_80E37FC
- str r0, [r2]
- adds r1, r3
- str r0, [r1]
- mov r1, r8
- adds r0, r1, r7
- lsls r0, 3
- add r0, r10
- ldr r1, _080E37D0 @ =sub_80E37D4
- str r1, [r0]
-_080E37BA:
- 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
-_080E37CC: .4byte sub_80E37FC
-_080E37D0: .4byte sub_80E37D4
- thumb_func_end sub_80E3664
-
- thumb_func_start sub_80E37D4
-sub_80E37D4: @ 80E37D4
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080E37F8 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080E37F2
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080E37F2:
- pop {r0}
- bx r0
- .align 2, 0
-_080E37F8: .4byte gTasks
- thumb_func_end sub_80E37D4
-
- thumb_func_start sub_80E37FC
-sub_80E37FC: @ 80E37FC
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E3846
- movs r0, 0
- strh r0, [r4, 0x30]
- ldr r0, _080E3870 @ =gUnknown_2024018
- ldr r1, [r0]
- ldr r0, _080E3874 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080E3846
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r1, r2, 29
- lsrs r1, 31
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080E3846:
- ldrh r0, [r4, 0x34]
- ldrh r1, [r4, 0x36]
- adds r0, r1
- movs r5, 0
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x36]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080E3878
- cmp r0, 0x1
- beq _080E3890
- b _080E38CE
- .align 2, 0
-_080E3870: .4byte gUnknown_2024018
-_080E3874: .4byte gUnknown_2037F1B
-_080E3878:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- bne _080E38CE
- strh r5, [r4, 0x32]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080E38CE
-_080E3890:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- cmp r0, 0
- ble _080E38CE
- strh r5, [r4, 0x32]
- ldrh r0, [r4, 0x38]
- subs r0, 0x2
- strh r0, [r4, 0x38]
- lsls r0, 16
- cmp r0, 0
- bge _080E38CE
- ldr r3, _080E38D4 @ =gTasks
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl obj_delete_but_dont_free_vram
-_080E38CE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E38D4: .4byte gTasks
- thumb_func_end sub_80E37FC
-
- thumb_func_start sub_80E38D8
-sub_80E38D8: @ 80E38D8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r3, _080E3924 @ =gUnknown_2037F02
- movs r2, 0
- strh r2, [r3, 0xE]
- ldr r1, _080E3928 @ =gUnknown_2037EFE
- ldrb r0, [r1]
- ldrb r1, [r1]
- adds r0, r1, 0
- subs r0, 0x3D
- lsls r0, 24
- lsrs r0, 24
- adds r2, r1, 0
- cmp r0, 0x1E
- bhi _080E38FC
- movs r0, 0x1
- strh r0, [r3, 0xE]
-_080E38FC:
- adds r0, r2, 0
- subs r0, 0x5C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6C
- bhi _080E390C
- movs r0, 0x2
- strh r0, [r3, 0xE]
-_080E390C:
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, 0xC8
- bls _080E3918
- movs r0, 0x3
- strh r0, [r3, 0xE]
-_080E3918:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3924: .4byte gUnknown_2037F02
-_080E3928: .4byte gUnknown_2037EFE
- thumb_func_end sub_80E38D8
-
- thumb_func_start sub_80E392C
-sub_80E392C: @ 80E392C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, _080E395C @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x4
- bls _080E3952
- b _080E3E6C
-_080E3952:
- lsls r0, 2
- ldr r1, _080E3960 @ =_080E3964
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E395C: .4byte gTasks
-_080E3960: .4byte _080E3964
- .align 2, 0
-_080E3964:
- .4byte _080E3978
- .4byte _080E3A2C
- .4byte _080E3BEC
- .4byte _080E3D0C
- .4byte _080E3D90
-_080E3978:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080E39C4 @ =gTasks
- mov r2, r8
- lsls r4, r2, 2
- adds r0, r4, r2
- lsls r0, 3
- adds r6, r0, r1
- movs r3, 0x80
- lsls r3, 4
- adds r0, r3, 0
- ldrh r1, [r6, 0xA]
- adds r0, r1
- strh r0, [r6, 0xA]
- ldr r0, _080E39C8 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- mov r9, r4
- cmp r0, 0
- bne _080E39D0
- ldr r2, _080E39CC @ =gSprites
- lsls r3, r7, 4
- adds r1, r3, r7
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r6, 0xA]
- lsls r0, 16
- asrs r0, 24
- ldrh r4, [r1, 0x24]
- adds r0, r4
- strh r0, [r1, 0x24]
- b _080E39EA
- .align 2, 0
-_080E39C4: .4byte gTasks
-_080E39C8: .4byte gUnknown_2037F1A
-_080E39CC: .4byte gSprites
-_080E39D0:
- ldr r3, _080E3A24 @ =gSprites
- lsls r4, r7, 4
- adds r2, r4, r7
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r6, 0xA]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- adds r2, r3, 0
- adds r3, r4, 0
-_080E39EA:
- ldr r1, _080E3A28 @ =gTasks
- mov r0, r9
- add r0, r8
- lsls r0, 3
- adds r4, r0, r1
- ldrb r0, [r4, 0xA]
- strh r0, [r4, 0xA]
- adds r1, r3, r7
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x24]
- ldrh r1, [r1, 0x20]
- adds r0, r1
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 14
- adds r0, r1
- movs r1, 0x98
- lsls r1, 17
- cmp r0, r1
- bhi _080E3A16
- b _080E3E6C
-_080E3A16:
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080E3E6C
- .align 2, 0
-_080E3A24: .4byte gSprites
-_080E3A28: .4byte gTasks
-_080E3A2C:
- ldr r4, _080E3A90 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080E3ACC
- ldr r7, _080E3A94 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _080E3A98 @ =gPlayerParty
- adds r0, r5
- movs r1, 0
- bl GetMonData
- mov r10, r0
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0x1
- bl GetMonData
- mov r9, r0
- ldr r0, _080E3A9C @ =gUnknown_2024018
- ldr r0, [r0]
- ldrb r2, [r4]
- ldr r1, [r0]
- lsls r0, r2, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _080E3AA0
- lsls r0, r2, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- b _080E3AA2
- .align 2, 0
-_080E3A90: .4byte gUnknown_2037F1A
-_080E3A94: .4byte gBattlerPartyIndexes
-_080E3A98: .4byte gPlayerParty
-_080E3A9C: .4byte gUnknown_2024018
-_080E3AA0:
- ldrh r5, [r1, 0x2]
-_080E3AA2:
- movs r0, 0x1
- bl GetAnimBankSpriteId
- ldr r2, _080E3AC8 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- movs r7, 0
- movs r6, 0x88
- lsls r6, 1
- b _080E3B54
- .align 2, 0
-_080E3AC8: .4byte gSprites
-_080E3ACC:
- ldr r7, _080E3B24 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _080E3B28 @ =gEnemyParty
- adds r0, r5
- movs r1, 0
- bl GetMonData
- mov r10, r0
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0x1
- bl GetMonData
- mov r9, r0
- ldr r0, _080E3B2C @ =gUnknown_2024018
- ldr r0, [r0]
- ldrb r2, [r4]
- ldr r1, [r0]
- lsls r0, r2, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _080E3B30
- lsls r0, r2, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- b _080E3B32
- .align 2, 0
-_080E3B24: .4byte gBattlerPartyIndexes
-_080E3B28: .4byte gEnemyParty
-_080E3B2C: .4byte gUnknown_2024018
-_080E3B30:
- ldrh r5, [r1, 0x2]
-_080E3B32:
- movs r0, 0x1
- bl GetAnimBankSpriteId
- ldr r2, _080E3BD0 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- movs r7, 0x1
- ldr r6, _080E3BD4 @ =0x0000ffe0
-_080E3B54:
- ldr r0, _080E3BD8 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- lsls r3, r6, 16
- asrs r3, 16
- str r0, [sp]
- str r4, [sp, 0x4]
- mov r2, r10
- str r2, [sp, 0x8]
- mov r4, r9
- str r4, [sp, 0xC]
- ldr r4, _080E3BDC @ =gUnknown_2037F1A
- ldrb r0, [r4]
- str r0, [sp, 0x10]
- movs r0, 0
- str r0, [sp, 0x14]
- adds r0, r5, 0
- adds r1, r7, 0
- movs r2, 0
- bl sub_80768D0
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080E3BE0 @ =gUnknown_2024018
- ldr r1, [r0]
- ldrb r0, [r4]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x2]
- cmp r0, 0
- beq _080E3BBE
- ldr r1, _080E3BD0 @ =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- lsls r0, 4
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- orrs r0, r1
- ldr r3, _080E3BE4 @ =0x00007fff
- movs r1, 0x10
- movs r2, 0x6
- bl BlendPalette
-_080E3BBE:
- ldr r0, _080E3BE8 @ =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- strh r5, [r1, 0x26]
- b _080E3D82
- .align 2, 0
-_080E3BD0: .4byte gSprites
-_080E3BD4: .4byte 0x0000ffe0
-_080E3BD8: .4byte gUnknown_2037F1B
-_080E3BDC: .4byte gUnknown_2037F1A
-_080E3BE0: .4byte gUnknown_2024018
-_080E3BE4: .4byte 0x00007fff
-_080E3BE8: .4byte gTasks
-_080E3BEC:
- ldr r1, _080E3C38 @ =gTasks
- mov r0, r8
- lsls r4, r0, 2
- adds r0, r4, r0
- lsls r0, 3
- adds r6, r0, r1
- ldrh r0, [r6, 0x26]
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x80
- lsls r1, 4
- adds r0, r1, 0
- ldrh r2, [r6, 0xA]
- adds r0, r2
- strh r0, [r6, 0xA]
- ldr r0, _080E3C3C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- mov r9, r4
- cmp r0, 0
- bne _080E3C44
- ldr r3, _080E3C40 @ =gSprites
- lsls r4, r5, 4
- adds r2, r4, r5
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r6, 0xA]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- adds r2, r3, 0
- adds r3, r4, 0
- b _080E3C5A
- .align 2, 0
-_080E3C38: .4byte gTasks
-_080E3C3C: .4byte gUnknown_2037F1A
-_080E3C40: .4byte gSprites
-_080E3C44:
- ldr r2, _080E3CA8 @ =gSprites
- lsls r3, r5, 4
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r6, 0xA]
- lsls r0, 16
- asrs r0, 24
- ldrh r4, [r1, 0x24]
- adds r0, r4
- strh r0, [r1, 0x24]
-_080E3C5A:
- ldr r1, _080E3CAC @ =gTasks
- mov r0, r9
- add r0, r8
- lsls r0, 3
- adds r6, r0, r1
- ldrb r0, [r6, 0xA]
- strh r0, [r6, 0xA]
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x24]
- ldrh r1, [r1, 0x20]
- adds r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- movs r1, 0x24
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080E3CDA
- ldr r0, _080E3CB0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080E3CB8
- lsls r4, r5, 16
- asrs r4, 16
- ldr r0, _080E3CB4 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bge _080E3CDA
- b _080E3CCE
- .align 2, 0
-_080E3CA8: .4byte gSprites
-_080E3CAC: .4byte gTasks
-_080E3CB0: .4byte gUnknown_2037F1A
-_080E3CB4: .4byte gUnknown_2037F1B
-_080E3CB8:
- lsls r4, r5, 16
- asrs r4, 16
- ldr r0, _080E3CFC @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- ble _080E3CDA
-_080E3CCE:
- ldrh r0, [r6, 0x24]
- adds r0, 0x1
- strh r0, [r6, 0x24]
- ldr r1, _080E3D00 @ =gUnknown_2037F02
- ldr r0, _080E3D04 @ =0x0000ffff
- strh r0, [r1, 0xE]
-_080E3CDA:
- lsls r0, r5, 16
- movs r2, 0x80
- lsls r2, 14
- adds r0, r2
- movs r1, 0x98
- lsls r1, 17
- cmp r0, r1
- bhi _080E3CEC
- b _080E3E6C
-_080E3CEC:
- ldr r0, _080E3D08 @ =gTasks
- mov r1, r9
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0xA]
- b _080E3D82
- .align 2, 0
-_080E3CFC: .4byte gUnknown_2037F1B
-_080E3D00: .4byte gUnknown_2037F02
-_080E3D04: .4byte 0x0000ffff
-_080E3D08: .4byte gTasks
-_080E3D0C:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080E3D58 @ =gTasks
- mov r3, r8
- lsls r4, r3, 2
- adds r0, r4, r3
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x26]
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- ldr r5, _080E3D5C @ =gSprites
- adds r0, r5
- bl sub_8076B20
- ldr r0, _080E3D60 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- mov r9, r4
- cmp r0, 0
- bne _080E3D64
- lsls r1, r7, 4
- adds r1, r7
- lsls r1, 2
- adds r1, r5
- ldrh r0, [r1, 0x20]
- negs r0, r0
- subs r0, 0x20
- strh r0, [r1, 0x24]
- b _080E3D78
- .align 2, 0
-_080E3D58: .4byte gTasks
-_080E3D5C: .4byte gSprites
-_080E3D60: .4byte gUnknown_2037F1A
-_080E3D64:
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r0, r5
- ldrh r2, [r0, 0x20]
- movs r4, 0x88
- lsls r4, 1
- adds r1, r4, 0
- subs r1, r2
- strh r1, [r0, 0x24]
-_080E3D78:
- ldr r0, _080E3D8C @ =gTasks
- mov r1, r9
- add r1, r8
- lsls r1, 3
- adds r1, r0
-_080E3D82:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _080E3E6C
- .align 2, 0
-_080E3D8C: .4byte gTasks
-_080E3D90:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080E3E04 @ =gTasks
- mov r0, r8
- lsls r4, r0, 2
- adds r0, r4, r0
- lsls r0, 3
- adds r2, r0, r1
- movs r1, 0x80
- lsls r1, 4
- adds r0, r1, 0
- ldrh r3, [r2, 0xA]
- adds r0, r3
- strh r0, [r2, 0xA]
- ldr r0, _080E3E08 @ =gUnknown_2037F1A
- mov r10, r0
- ldrb r0, [r0]
- str r2, [sp, 0x18]
- bl GetBattlerSide
- lsls r0, 24
- mov r9, r4
- ldr r2, [sp, 0x18]
- cmp r0, 0
- bne _080E3E10
- ldr r1, _080E3E0C @ =gSprites
- lsls r5, r7, 4
- adds r0, r5, r7
- lsls r0, 2
- adds r6, r0, r1
- ldrh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r6, 0x24]
- adds r0, r1
- strh r0, [r6, 0x24]
- movs r2, 0x24
- ldrsh r4, [r6, r2]
- movs r3, 0x20
- ldrsh r0, [r6, r3]
- adds r4, r0
- mov r1, r10
- ldrb r0, [r1]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r3, r5, 0
- cmp r4, r0
- blt _080E3E48
- movs r2, 0
- strh r2, [r6, 0x24]
- b _080E3E48
- .align 2, 0
-_080E3E04: .4byte gTasks
-_080E3E08: .4byte gUnknown_2037F1A
-_080E3E0C: .4byte gSprites
-_080E3E10:
- ldr r1, _080E3E7C @ =gSprites
- lsls r5, r7, 4
- adds r0, r5, r7
- lsls r0, 2
- adds r6, r0, r1
- ldrh r1, [r2, 0xA]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r6, 0x24]
- subs r0, r1
- strh r0, [r6, 0x24]
- movs r3, 0x24
- ldrsh r4, [r6, r3]
- movs r1, 0x20
- ldrsh r0, [r6, r1]
- adds r4, r0
- mov r2, r10
- ldrb r0, [r2]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r3, r5, 0
- cmp r4, r0
- bgt _080E3E48
- movs r4, 0
- strh r4, [r6, 0x24]
-_080E3E48:
- ldr r1, _080E3E80 @ =gTasks
- mov r0, r9
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0xA]
- strh r1, [r0, 0xA]
- ldr r1, _080E3E7C @ =gSprites
- adds r0, r3, r7
- lsls r0, 2
- adds r0, r1
- movs r1, 0x24
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080E3E6C
- mov r0, r8
- bl DestroyAnimVisualTask
-_080E3E6C:
- 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
-_080E3E7C: .4byte gSprites
-_080E3E80: .4byte gTasks
- thumb_func_end sub_80E392C
-
- thumb_func_start sub_80E3E84
-sub_80E3E84: @ 80E3E84
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080E3E96
- cmp r0, 0x1
- beq _080E3F36
- b _080E3FB8
-_080E3E96:
- ldr r0, _080E3F14 @ =gUnknown_2037F02
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080E3F28
- movs r0, 0x3F
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x73
- bl PlaySE12WithPanning
- ldr r0, _080E3F18 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- strh r0, [r4, 0x22]
- ldr r0, _080E3F1C @ =0x0000ffe0
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, _080E3F20 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E3FB8
- movs r0, 0x1
- bl GetAnimBankSpriteId
- ldr r2, _080E3F24 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- b _080E3FB8
- .align 2, 0
-_080E3F14: .4byte gUnknown_2037F02
-_080E3F18: .4byte gUnknown_2037F1B
-_080E3F1C: .4byte 0x0000ffe0
-_080E3F20: .4byte gUnknown_2037F1A
-_080E3F24: .4byte gSprites
-_080E3F28:
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _080E3FB8
-_080E3F36:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r2, [r4, 0x30]
- adds r0, r2, 0x5
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7F
- ble _080E3F6A
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- adds r0, r2, 0
- subs r0, 0x7A
- strh r0, [r4, 0x30]
-_080E3F6A:
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldr r0, _080E3F94 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080E3F98
- ldrh r2, [r4, 0x32]
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r4, 0x24]
- subs r0, r1
- strh r0, [r4, 0x24]
- adds r1, r2, 0
- b _080E3FA4
- .align 2, 0
-_080E3F94: .4byte gUnknown_2037F1A
-_080E3F98:
- ldrh r1, [r4, 0x32]
- lsls r0, r1, 16
- asrs r0, 24
- ldrh r2, [r4, 0x24]
- adds r0, r2
- strh r0, [r4, 0x24]
-_080E3FA4:
- movs r0, 0xFF
- ands r0, r1
- strh r0, [r4, 0x32]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x2
- bne _080E3FB8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E3FB8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E3E84
-
- thumb_func_start sub_80E3FC0
-sub_80E3FC0: @ 80E3FC0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080E3FE8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x26
- ldrsh r0, [r0, r2]
- adds r3, r1, 0
- cmp r0, 0x4
- bls _080E3FDC
- b _080E412E
-_080E3FDC:
- lsls r0, 2
- ldr r1, _080E3FEC @ =_080E3FF0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E3FE8: .4byte gTasks
-_080E3FEC: .4byte _080E3FF0
- .align 2, 0
-_080E3FF0:
- .4byte _080E4004
- .4byte _080E4054
- .4byte _080E40B0
- .4byte _080E40C8
- .4byte _080E412E
-_080E4004:
- ldr r0, _080E4048 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r0, _080E404C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- ldr r1, _080E4050 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- movs r0, 0x6
- strh r0, [r1, 0x8]
- cmp r5, r2
- ble _080E403A
- negs r0, r0
- strh r0, [r1, 0x8]
-_080E403A:
- strh r5, [r1, 0xA]
- strh r2, [r1, 0xC]
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _080E414C
- .align 2, 0
-_080E4048: .4byte gUnknown_2037F1A
-_080E404C: .4byte gUnknown_2037F1B
-_080E4050: .4byte gTasks
-_080E4054:
- ldr r1, _080E4090 @ =gUnknown_2023D44
- ldr r0, _080E4094 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldr r1, _080E4098 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r1
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r3
- ldrh r0, [r2, 0x8]
- ldrh r3, [r1, 0x24]
- adds r0, r3
- strh r0, [r1, 0x24]
- movs r3, 0x8
- ldrsh r0, [r2, r3]
- cmp r0, 0
- ble _080E409C
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- movs r3, 0x24
- ldrsh r1, [r1, r3]
- adds r0, r1
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- b _080E4122
- .align 2, 0
-_080E4090: .4byte gUnknown_2023D44
-_080E4094: .4byte gUnknown_2037F1A
-_080E4098: .4byte gSprites
-_080E409C:
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- movs r3, 0x24
- ldrsh r1, [r1, r3]
- adds r0, r1
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- cmp r0, r1
- bgt _080E414C
- b _080E4126
-_080E40B0:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r3
- movs r2, 0x8
- ldrsh r1, [r0, r2]
- negs r1, r1
- strh r1, [r0, 0x8]
- ldrh r1, [r0, 0x26]
- adds r1, 0x1
- strh r1, [r0, 0x26]
- b _080E414C
-_080E40C8:
- ldr r1, _080E4108 @ =gUnknown_2023D44
- ldr r0, _080E410C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldr r1, _080E4110 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r1
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r3
- ldrh r0, [r2, 0x8]
- ldrh r3, [r1, 0x24]
- adds r0, r3
- strh r0, [r1, 0x24]
- movs r3, 0x8
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bge _080E4114
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- movs r3, 0x24
- ldrsh r1, [r1, r3]
- adds r0, r1
- movs r3, 0xA
- ldrsh r1, [r2, r3]
- cmp r0, r1
- bgt _080E414C
- b _080E4126
- .align 2, 0
-_080E4108: .4byte gUnknown_2023D44
-_080E410C: .4byte gUnknown_2037F1A
-_080E4110: .4byte gSprites
-_080E4114:
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- movs r3, 0x24
- ldrsh r1, [r1, r3]
- adds r0, r1
- movs r3, 0xA
- ldrsh r1, [r2, r3]
-_080E4122:
- cmp r0, r1
- blt _080E414C
-_080E4126:
- ldrh r0, [r2, 0x26]
- adds r0, 0x1
- strh r0, [r2, 0x26]
- b _080E414C
-_080E412E:
- ldr r1, _080E4154 @ =gUnknown_2023D44
- ldr r0, _080E4158 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldr r1, _080E415C @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x24]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080E414C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E4154: .4byte gUnknown_2023D44
-_080E4158: .4byte gUnknown_2037F1A
-_080E415C: .4byte gSprites
- thumb_func_end sub_80E3FC0
-
- thumb_func_start sub_80E4160
-sub_80E4160: @ 80E4160
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080E41C8 @ =gTasks
- adds r4, r1, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r4, 0xE]
- ldr r0, _080E41CC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _080E4194
- movs r1, 0x1
-_080E4194:
- strh r1, [r4, 0x10]
- ldr r2, _080E41D0 @ =gSprites
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x22]
- strh r0, [r4, 0x14]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x20]
- strh r0, [r4, 0x12]
- strh r5, [r4, 0x1A]
- strh r5, [r4, 0x1E]
- movs r0, 0x1
- strh r0, [r4, 0x1C]
- strh r5, [r4, 0x20]
- ldr r0, _080E41D4 @ =sub_80E41D8
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E41C8: .4byte gTasks
-_080E41CC: .4byte gUnknown_2037F1A
-_080E41D0: .4byte gSprites
-_080E41D4: .4byte sub_80E41D8
- thumb_func_end sub_80E4160
-
- thumb_func_start sub_80E41D8
-sub_80E41D8: @ 80E41D8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080E41FC @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080E4280
- cmp r0, 0x1
- bgt _080E4200
- cmp r0, 0
- beq _080E4206
- b _080E42D6
- .align 2, 0
-_080E41FC: .4byte gTasks
-_080E4200:
- cmp r0, 0x2
- beq _080E42D0
- b _080E42D6
-_080E4206:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x8
- movs r2, 0xFF
- ands r0, r2
- strh r0, [r4, 0x1E]
- ldr r5, _080E4278 @ =gSprites
- movs r6, 0xE
- ldrsh r0, [r4, r6]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldr r3, _080E427C @ =gSineTable
- movs r6, 0x1E
- ldrsh r0, [r4, r6]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 21
- strh r0, [r1, 0x24]
- ldrh r0, [r4, 0x1A]
- adds r0, 0x2
- ands r0, r2
- strh r0, [r4, 0x1A]
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r5
- movs r6, 0x1A
- ldrsh r0, [r4, r6]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- ldrh r1, [r4, 0x10]
- muls r0, r1
- ldrh r1, [r4, 0x12]
- adds r0, r1
- strh r0, [r2, 0x20]
- movs r6, 0x1A
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bne _080E42D6
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r1, [r4, 0x12]
- strh r1, [r0, 0x20]
- b _080E42C0
- .align 2, 0
-_080E4278: .4byte gSprites
-_080E427C: .4byte gSineTable
-_080E4280:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x8
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x1E]
- ldr r3, _080E42C8 @ =gSprites
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldr r2, _080E42CC @ =gSineTable
- movs r5, 0x1E
- ldrsh r0, [r4, r5]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 21
- strh r0, [r1, 0x24]
- movs r6, 0x1E
- ldrsh r2, [r4, r6]
- cmp r2, 0
- bne _080E42D6
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- strh r2, [r1, 0x24]
-_080E42C0:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080E42D6
- .align 2, 0
-_080E42C8: .4byte gSprites
-_080E42CC: .4byte gSineTable
-_080E42D0:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080E42D6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E41D8
-
- thumb_func_start sub_80E42DC
-sub_80E42DC: @ 80E42DC
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080E4330 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- ldrh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x30]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x14
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x14
- bl Sin
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080E4322
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E4322:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E4330: .4byte gUnknown_2037F1B
- thumb_func_end sub_80E42DC
-
- thumb_func_start sub_80E4334
-sub_80E4334: @ 80E4334
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080E436C @ =gUnknown_2037F1B
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080E4378
- ldr r2, _080E4370 @ =gUnknown_2037F02
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, _080E4374 @ =0x0000fff5
- strh r0, [r4, 0x2E]
- movs r0, 0xC0
- strh r0, [r4, 0x30]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _080E4392
- .align 2, 0
-_080E436C: .4byte gUnknown_2037F1B
-_080E4370: .4byte gUnknown_2037F02
-_080E4374: .4byte 0x0000fff5
-_080E4378:
- movs r0, 0xB
- strh r0, [r4, 0x2E]
- movs r0, 0xC0
- strh r0, [r4, 0x30]
- ldr r1, _080E439C @ =gUnknown_2037F02
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
-_080E4392:
- ldr r0, _080E43A0 @ =sub_80E42DC
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E439C: .4byte gUnknown_2037F02
-_080E43A0: .4byte sub_80E42DC
- thumb_func_end sub_80E4334
-
- thumb_func_start sub_80E43A4
-sub_80E43A4: @ 80E43A4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080E43E8 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- strh r0, [r5, 0x22]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bgt _080E43CE
- movs r0, 0x10
- strh r0, [r5, 0x22]
-_080E43CE:
- movs r0, 0
- strh r0, [r5, 0x3A]
- movs r1, 0x10
- strh r1, [r5, 0x3C]
- ldr r0, _080E43EC @ =sub_80E43F0
- str r0, [r5, 0x1C]
- lsls r1, 8
- movs r0, 0x52
- bl SetGpuReg
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E43E8: .4byte gUnknown_2037F1A
-_080E43EC: .4byte sub_80E43F0
- thumb_func_end sub_80E43A4
-
- thumb_func_start sub_80E43F0
-sub_80E43F0: @ 80E43F0
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080E4468
- cmp r1, 0x1
- bgt _080E4406
- cmp r1, 0
- beq _080E4410
- b _080E44E4
-_080E4406:
- cmp r1, 0x2
- beq _080E447E
- cmp r1, 0x3
- beq _080E44DE
- b _080E44E4
-_080E4410:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E44E4
- strh r1, [r4, 0x2E]
- ldrh r1, [r4, 0x30]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080E443A
- ldrh r2, [r4, 0x3A]
- movs r3, 0x3A
- ldrsh r0, [r4, r3]
- cmp r0, 0xF
- bgt _080E4448
- adds r0, r2, 0x1
- strh r0, [r4, 0x3A]
- b _080E4448
-_080E443A:
- ldrh r2, [r4, 0x3C]
- movs r3, 0x3C
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080E4448
- subs r0, r2, 0x1
- strh r0, [r4, 0x3C]
-_080E4448:
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x3C]
- lsls r1, 8
- ldrh r0, [r4, 0x3A]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E44E4
- b _080E44D6
-_080E4468:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _080E44E4
- strh r1, [r4, 0x2E]
- strh r1, [r4, 0x30]
- b _080E44D6
-_080E447E:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E44E4
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x30]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080E44AA
- ldrh r2, [r4, 0x3A]
- movs r3, 0x3A
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080E44B8
- subs r0, r2, 0x1
- strh r0, [r4, 0x3A]
- b _080E44B8
-_080E44AA:
- ldrh r2, [r4, 0x3C]
- movs r3, 0x3C
- ldrsh r0, [r4, r3]
- cmp r0, 0xF
- bgt _080E44B8
- adds r0, r2, 0x1
- strh r0, [r4, 0x3C]
-_080E44B8:
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x3C]
- lsls r1, 8
- ldrh r0, [r4, 0x3A]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _080E44E4
-_080E44D6:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- b _080E44E4
-_080E44DE:
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080E44E4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E43F0
-
- thumb_func_start sub_80E44EC
-sub_80E44EC: @ 80E44EC
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080E4508 @ =gUnknown_2037F02
- movs r0, 0
- strh r0, [r2, 0xE]
- ldr r0, _080E450C @ =gUnknown_2037F00
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _080E4510
- movs r0, 0x1
- b _080E4532
- .align 2, 0
-_080E4508: .4byte gUnknown_2037F02
-_080E450C: .4byte gUnknown_2037F00
-_080E4510:
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _080E451C
- movs r0, 0x2
- b _080E4532
-_080E451C:
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _080E4528
- movs r0, 0x3
- b _080E4532
-_080E4528:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080E4534
- movs r0, 0x4
-_080E4532:
- strh r0, [r2, 0xE]
-_080E4534:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- thumb_func_end sub_80E44EC
-
- thumb_func_start sub_80E4540
-sub_80E4540: @ 80E4540
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080E4578 @ =gTasks
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r0, _080E457C @ =gUnknown_2037F02
- ldrb r0, [r0]
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r4, 0x26]
- ldr r2, _080E4580 @ =gUnknown_83FF7A8
- adds r0, r4, 0
- bl sub_80762D0
- ldr r0, _080E4584 @ =sub_80E4588
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E4578: .4byte gTasks
-_080E457C: .4byte gUnknown_2037F02
-_080E4580: .4byte gUnknown_83FF7A8
-_080E4584: .4byte sub_80E4588
- thumb_func_end sub_80E4540
-
- thumb_func_start sub_80E4588
-sub_80E4588: @ 80E4588
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r2, _080E45E0 @ =gTasks
- adds r3, r0, r2
- ldrh r0, [r3, 0x8]
- adds r1, r0, 0x1
- movs r5, 0
- strh r1, [r3, 0x8]
- subs r0, 0x10
- lsls r0, 16
- lsrs r0, 16
- adds r6, r2, 0
- cmp r0, 0x16
- bhi _080E45EC
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080E45FC
- strh r5, [r3, 0xA]
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- movs r5, 0x1
- ands r0, r5
- cmp r0, 0
- bne _080E45EC
- ldr r2, _080E45E4 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _080E45E8 @ =0x0000ffff
- strh r1, [r0, 0x24]
- b _080E45FC
- .align 2, 0
-_080E45E0: .4byte gTasks
-_080E45E4: .4byte gSprites
-_080E45E8: .4byte 0x0000ffff
-_080E45EC:
- ldr r2, _080E461C @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
-_080E45FC:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r6
- bl sub_8076308
- lsls r0, 24
- cmp r0, 0
- bne _080E4614
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080E4614:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E461C: .4byte gSprites
- thumb_func_end sub_80E4588
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_80EEC0C.s b/asm/battle_anim_80EEC0C.s
deleted file mode 100644
index dbcc63093..000000000
--- a/asm/battle_anim_80EEC0C.s
+++ /dev/null
@@ -1,6299 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80EEC0C
-sub_80EEC0C: @ 80EEC0C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
- ldr r0, _080EEDB4 @ =gUnknown_2037F1A
- ldrb r4, [r0]
- ldr r0, _080EEDB8 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080EEDBC @ =gUnknown_2022986
- strh r1, [r0]
- ldr r1, _080EEDC0 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080EEDC4 @ =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r1, _080EEDC8 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
- ldr r0, _080EEDCC @ =gUnknown_3004FF0
- adds r4, r0
- ldrb r0, [r4]
- ldr r1, _080EEDD0 @ =gSprites
- mov r9, r1
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- add r4, r9
- ldrb r7, [r4, 0x6]
- ldrh r6, [r4, 0x38]
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _080EEDD4 @ =SpriteCallbackDummy
- bl CreateInvisibleSpriteWithCallback
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- ldr r0, _080EEDD4 @ =SpriteCallbackDummy
- bl CreateInvisibleSpriteWithCallback
- mov r10, r0
- mov r2, r10
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- ldrb r1, [r4, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x4
- mov r8, r1
- mov r2, r8
- orrs r0, r2
- strb r0, [r4, 0x5]
- lsls r5, r7, 4
- adds r5, r7
- lsls r5, 2
- add r5, r9
- ldrb r1, [r5, 0x5]
- adds r0, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- add r1, r9
- ldrb r2, [r1, 0x5]
- adds r0, r3, 0
- ands r0, r2
- mov r2, r8
- orrs r0, r2
- strb r0, [r1, 0x5]
- ldr r0, [sp, 0x14]
- lsls r6, r0, 4
- adds r6, r0
- lsls r6, 2
- mov r1, r9
- adds r7, r6, r1
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0x44
- str r3, [sp, 0x18]
- bl memcpy
- mov r2, r10
- lsls r4, r2, 4
- add r4, r10
- lsls r4, 2
- adds r0, r4, 0
- add r0, r9
- mov r8, r0
- adds r1, r5, 0
- movs r2, 0x44
- bl memcpy
- ldrb r1, [r7, 0x1]
- ldr r3, [sp, 0x18]
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r7, 0x1]
- mov r2, r8
- ldrb r0, [r2, 0x1]
- ands r3, r0
- orrs r3, r1
- strb r3, [r2, 0x1]
- movs r0, 0x1C
- add r9, r0
- add r6, r9
- ldr r1, _080EEDD4 @ =SpriteCallbackDummy
- str r1, [r6]
- add r4, r9
- str r1, [r4]
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080EEDD8 @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap
- bl sub_807543C
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080EEDDC @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080EEDE0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r1, _080EEDE4 @ =gBattle_BG1_X
- ldrh r0, [r7, 0x20]
- negs r0, r0
- adds r0, 0x20
- strh r0, [r1]
- ldr r1, _080EEDE8 @ =gBattle_BG1_Y
- ldrh r0, [r7, 0x22]
- negs r0, r0
- subs r0, 0x20
- strh r0, [r1]
- ldr r1, _080EEDEC @ =gTasks
- ldr r2, [sp, 0x10]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0xA0
- lsls r1, 2
- strh r1, [r0, 0xA]
- mov r1, sp
- ldrh r1, [r1, 0x14]
- strh r1, [r0, 0x8]
- mov r2, r10
- strh r2, [r0, 0xC]
- ldr r1, _080EEDF0 @ =sub_80EEDF4
- str r1, [r0]
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EEDB4: .4byte gUnknown_2037F1A
-_080EEDB8: .4byte gUnknown_2022984
-_080EEDBC: .4byte gUnknown_2022986
-_080EEDC0: .4byte 0x00003f3f
-_080EEDC4: .4byte 0x00003f3d
-_080EEDC8: .4byte 0x00003f42
-_080EEDCC: .4byte gUnknown_3004FF0
-_080EEDD0: .4byte gSprites
-_080EEDD4: .4byte SpriteCallbackDummy
-_080EEDD8: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap
-_080EEDDC: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet
-_080EEDE0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette
-_080EEDE4: .4byte gBattle_BG1_X
-_080EEDE8: .4byte gBattle_BG1_Y
-_080EEDEC: .4byte gTasks
-_080EEDF0: .4byte sub_80EEDF4
- thumb_func_end sub_80EEC0C
-
- thumb_func_start sub_80EEDF4
-sub_80EEDF4: @ 80EEDF4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _080EEE3C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- mov r8, r0
- ldr r1, _080EEE40 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r5, r0, r1
- ldrh r1, [r5, 0xA]
- ldrh r0, [r5, 0x22]
- adds r1, r0
- movs r3, 0
- strh r1, [r5, 0x22]
- ldr r2, _080EEE44 @ =gBattle_BG1_Y
- lsls r0, r1, 16
- lsrs r0, 24
- ldrh r4, [r2]
- adds r0, r4
- strh r0, [r2]
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r5, 0x22]
- movs r1, 0x26
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080EEE84
- cmp r0, 0x1
- bgt _080EEE48
- cmp r0, 0
- beq _080EEE4E
- b _080EEFA8
- .align 2, 0
-_080EEE3C: .4byte gUnknown_2037F1A
-_080EEE40: .4byte gTasks
-_080EEE44: .4byte gBattle_BG1_Y
-_080EEE48:
- cmp r0, 0x2
- beq _080EEE9C
- b _080EEFA8
-_080EEE4E:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bgt _080EEE5E
- b _080EEFA8
-_080EEE5E:
- strh r3, [r5, 0x1E]
- ldrh r1, [r5, 0x20]
- adds r1, 0x1
- strh r1, [r5, 0x20]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x20
- ldrsh r0, [r5, r2]
- cmp r0, 0x8
- beq _080EEE82
- b _080EEFA8
-_080EEE82:
- b _080EEE94
-_080EEE84:
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- beq _080EEE94
- b _080EEFA8
-_080EEE94:
- ldrh r0, [r5, 0x26]
- adds r0, 0x1
- strh r0, [r5, 0x26]
- b _080EEFA8
-_080EEE9C:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080EEFA8
- strh r3, [r5, 0x1E]
- ldrh r1, [r5, 0x20]
- subs r1, 0x1
- strh r1, [r5, 0x20]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x20
- ldrsh r4, [r5, r0]
- cmp r4, 0
- bne _080EEFA8
- movs r0, 0
- bl sub_8073128
- ldr r0, _080EEFB4 @ =gUnknown_2022984
- strh r4, [r0]
- ldr r0, _080EEFB8 @ =gUnknown_2022986
- strh r4, [r0]
- ldr r4, _080EEFBC @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- bl sub_8073788
- lsls r0, 24
- cmp r0, 0
- bne _080EEF00
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080EEF00:
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- eors r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r4, 0x8
- ldrsh r1, [r5, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r6, _080EEFC0 @ =gSprites
- adds r0, r6
- bl DestroySprite
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetAnimBgAttribute
- ldr r0, _080EEFC4 @ =gUnknown_3004FF0
- add r0, r8
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r2, [r1, 0x6]
- mov r8, r2
- ldrh r4, [r1, 0x38]
- lsls r4, 24
- lsrs r4, 24
- ldrb r3, [r1, 0x5]
- movs r2, 0xD
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- movs r5, 0x4
- orrs r0, r5
- strb r0, [r1, 0x5]
- mov r0, r8
- lsls r1, r0, 4
- add r1, r8
- lsls r1, 2
- adds r1, r6
- ldrb r3, [r1, 0x5]
- adds r0, r2, 0
- ands r0, r3
- orrs r0, r5
- strb r0, [r1, 0x5]
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0, 0x5]
- ands r2, r1
- orrs r2, r5
- strb r2, [r0, 0x5]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080EEFA8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EEFB4: .4byte gUnknown_2022984
-_080EEFB8: .4byte gUnknown_2022986
-_080EEFBC: .4byte 0x00003f3f
-_080EEFC0: .4byte gSprites
-_080EEFC4: .4byte gUnknown_3004FF0
- thumb_func_end sub_80EEDF4
-
- thumb_func_start sub_80EEFC8
-sub_80EEFC8: @ 80EEFC8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r9, r0
- adds r7, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _080EF0A0 @ =gUnknown_3004FF0
- adds r2, r0
- ldrb r0, [r2]
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r0, _080EF0A4 @ =gSprites
- adds r5, r0
- ldrb r1, [r5, 0x6]
- mov r10, r1
- ldrh r4, [r5, 0x38]
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080EF0A8 @ =0x0000d709
- bl AllocSpritePalette
- mov r2, r9
- strb r0, [r2]
- ldr r0, _080EF0AC @ =0x0000d70a
- bl AllocSpritePalette
- strb r0, [r7]
- ldrb r0, [r5, 0x5]
- lsrs r0, 4
- lsls r0, 4
- movs r1, 0x80
- lsls r1, 1
- adds r3, r1, 0
- orrs r0, r3
- lsls r6, r4, 4
- adds r6, r4
- lsls r6, 2
- ldr r2, _080EF0A4 @ =gSprites
- adds r6, r2
- ldrb r4, [r6, 0x5]
- lsrs r4, 4
- lsls r4, 4
- orrs r4, r3
- lsls r0, 1
- ldr r1, _080EF0B0 @ =gPlttBufferUnfaded
- mov r8, r1
- add r0, r8
- mov r2, r9
- ldrb r1, [r2]
- lsls r1, 4
- adds r1, r3, r1
- movs r2, 0x20
- str r3, [sp]
- bl LoadPalette
- lsls r4, 1
- add r4, r8
- ldrb r0, [r7]
- lsls r0, 4
- ldr r3, [sp]
- adds r3, r0
- adds r0, r4, 0
- adds r1, r3, 0
- movs r2, 0x20
- bl LoadPalette
- mov r0, r9
- ldrb r1, [r0]
- lsls r1, 4
- ldrb r2, [r5, 0x5]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- mov r2, r10
- lsls r1, r2, 4
- add r1, r10
- lsls r1, 2
- ldr r0, _080EF0A4 @ =gSprites
- adds r1, r0
- mov r0, r9
- ldrb r2, [r0]
- lsls r2, 4
- ldrb r4, [r1, 0x5]
- adds r0, r3, 0
- ands r0, r4
- orrs r0, r2
- strb r0, [r1, 0x5]
- ldrb r0, [r7]
- lsls r0, 4
- ldrb r1, [r6, 0x5]
- ands r3, r1
- orrs r3, r0
- strb r3, [r6, 0x5]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF0A0: .4byte gUnknown_3004FF0
-_080EF0A4: .4byte gSprites
-_080EF0A8: .4byte 0x0000d709
-_080EF0AC: .4byte 0x0000d70a
-_080EF0B0: .4byte gPlttBufferUnfaded
- thumb_func_end sub_80EEFC8
-
- thumb_func_start sub_80EF0B4
-sub_80EF0B4: @ 80EF0B4
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r1, sp
- adds r1, 0x1
- ldr r0, _080EF0DC @ =gUnknown_2037F1A
- ldrb r2, [r0]
- mov r0, sp
- bl sub_80EEFC8
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF0DC: .4byte gUnknown_2037F1A
- thumb_func_end sub_80EF0B4
-
- thumb_func_start sub_80EF0E0
-sub_80EF0E0: @ 80EF0E0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080EF168 @ =gUnknown_3004FF0
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _080EF16C @ =gSprites
- mov r8, r1
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- add r5, r8
- ldrb r0, [r5, 0x6]
- mov r9, r0
- ldrh r6, [r5, 0x38]
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _080EF170 @ =0x0000d709
- bl FreeSpritePaletteByTag
- ldr r0, _080EF174 @ =0x0000d70a
- bl FreeSpritePaletteByTag
- ldr r0, _080EF178 @ =0x0000d6ff
- bl IndexOfSpritePaletteTag
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080EF17C @ =0x0000d704
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsls r4, 4
- ldrb r2, [r5, 0x5]
- movs r3, 0xF
- adds r1, r3, 0
- ands r1, r2
- orrs r1, r4
- strb r1, [r5, 0x5]
- mov r1, r9
- lsls r2, r1, 4
- add r2, r9
- lsls r2, 2
- add r2, r8
- ldrb r5, [r2, 0x5]
- adds r1, r3, 0
- ands r1, r5
- orrs r1, r4
- strb r1, [r2, 0x5]
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- add r1, r8
- lsrs r0, 20
- ldrb r2, [r1, 0x5]
- ands r3, r2
- orrs r3, r0
- strb r3, [r1, 0x5]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF168: .4byte gUnknown_3004FF0
-_080EF16C: .4byte gSprites
-_080EF170: .4byte 0x0000d709
-_080EF174: .4byte 0x0000d70a
-_080EF178: .4byte 0x0000d6ff
-_080EF17C: .4byte 0x0000d704
- thumb_func_end sub_80EF0E0
-
- thumb_func_start sub_80EF180
-sub_80EF180: @ 80EF180
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080EF19C @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80EF0E0
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF19C: .4byte gUnknown_2037F1A
- thumb_func_end sub_80EF180
-
- thumb_func_start sub_80EF1A0
-sub_80EF1A0: @ 80EF1A0
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080EF1C0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _080EF1C4 @ =gUnknown_2037F02
- ldrh r0, [r2]
- strh r0, [r1, 0x1C]
- ldrh r0, [r2, 0x2]
- strh r0, [r1, 0x1E]
- ldr r0, _080EF1C8 @ =sub_80EF1CC
- str r0, [r1]
- bx lr
- .align 2, 0
-_080EF1C0: .4byte gTasks
-_080EF1C4: .4byte gUnknown_2037F02
-_080EF1C8: .4byte sub_80EF1CC
- thumb_func_end sub_80EF1A0
-
- thumb_func_start sub_80EF1CC
-sub_80EF1CC: @ 80EF1CC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080EF218 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r6, 0
- adds r1, r0, 0x1
- strh r1, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _080EF28C
- strh r6, [r4, 0x8]
- ldr r0, _080EF21C @ =0x0000d709
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r2, r0, 24
- movs r3, 0x1C
- ldrsh r0, [r4, r3]
- movs r1, 0x2
- cmp r0, 0
- bne _080EF20A
- movs r1, 0x6
-_080EF20A:
- movs r3, 0xA
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080EF220
- cmp r0, 0x1
- beq _080EF25C
- b _080EF28C
- .align 2, 0
-_080EF218: .4byte gTasks
-_080EF21C: .4byte 0x0000d709
-_080EF220:
- ldrh r0, [r4, 0xC]
- adds r0, 0x2
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080EF232
- movs r0, 0x10
- strh r0, [r4, 0xC]
-_080EF232:
- lsls r0, r2, 4
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2
- orrs r0, r1
- ldrb r2, [r4, 0xC]
- ldr r3, _080EF258 @ =0x00007f74
- movs r1, 0x1
- bl BlendPalette
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0x10
- bne _080EF28C
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _080EF28C
- .align 2, 0
-_080EF258: .4byte 0x00007f74
-_080EF25C:
- ldrh r0, [r4, 0xC]
- subs r0, 0x2
- strh r0, [r4, 0xC]
- lsls r0, 16
- cmp r0, 0
- bge _080EF26A
- strh r6, [r4, 0xC]
-_080EF26A:
- lsls r0, r2, 4
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2
- orrs r0, r1
- ldrb r2, [r4, 0xC]
- ldr r3, _080EF294 @ =0x00007f74
- movs r1, 0x1
- bl BlendPalette
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _080EF28C
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080EF28C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF294: .4byte 0x00007f74
- thumb_func_end sub_80EF1CC
-
- thumb_func_start sub_80EF298
-sub_80EF298: @ 80EF298
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080EF2C4 @ =gUnknown_2023D44
- ldr r0, _080EF2C8 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r0, r1
- ldrb r5, [r0]
- ldr r1, _080EF2CC @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080EF2E6
- cmp r0, 0x1
- bgt _080EF2D0
- cmp r0, 0
- beq _080EF2D6
- b _080EF338
- .align 2, 0
-_080EF2C4: .4byte gUnknown_2023D44
-_080EF2C8: .4byte gUnknown_2037F1A
-_080EF2CC: .4byte gTasks
-_080EF2D0:
- cmp r0, 0x2
- beq _080EF318
- b _080EF338
-_080EF2D6:
- adds r0, r5, 0
- movs r1, 0
- bl sub_80758E0
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0x1C]
- b _080EF30A
-_080EF2E6:
- ldrh r0, [r4, 0x1C]
- adds r0, 0x30
- strh r0, [r4, 0x1C]
- movs r0, 0x1C
- ldrsh r2, [r4, r0]
- adds r0, r5, 0
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- adds r0, r5, 0
- bl sub_8076440
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- ldr r0, _080EF314 @ =0x000002cf
- cmp r1, r0
- ble _080EF338
-_080EF30A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080EF338
- .align 2, 0
-_080EF314: .4byte 0x000002cf
-_080EF318:
- adds r0, r5, 0
- bl sub_8075980
- ldr r1, _080EF340 @ =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080EF338:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF340: .4byte gSprites
- thumb_func_end sub_80EF298
-
- thumb_func_start sub_80EF344
-sub_80EF344: @ 80EF344
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080EF37C @ =gUnknown_2023D44
- ldr r4, _080EF380 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- adds r1, r0, r1
- ldrb r1, [r1]
- mov r9, r1
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080EF38C
- ldr r1, _080EF384 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080EF388 @ =gPlayerParty
- b _080EF39C
- .align 2, 0
-_080EF37C: .4byte gUnknown_2023D44
-_080EF380: .4byte gUnknown_2037F1A
-_080EF384: .4byte gBattlerPartyIndexes
-_080EF388: .4byte gPlayerParty
-_080EF38C:
- ldr r1, _080EF3CC @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080EF3D0 @ =gEnemyParty
-_080EF39C:
- adds r0, r1
- movs r1, 0x26
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r2, _080EF3D4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r6, r0, r2
- movs r0, 0x8
- ldrsh r7, [r6, r0]
- cmp r7, 0
- beq _080EF3D8
- cmp r7, 0x1
- beq _080EF458
- b _080EF482
- .align 2, 0
-_080EF3CC: .4byte gBattlerPartyIndexes
-_080EF3D0: .4byte gEnemyParty
-_080EF3D4: .4byte gTasks
-_080EF3D8:
- ldr r5, _080EF450 @ =gUnknown_2037F1A
- ldrb r0, [r5]
- movs r1, 0
- bl sub_8074480
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8074480
- adds r1, r0, 0
- lsls r1, 24
- ldr r2, _080EF454 @ =gSprites
- mov r3, r9
- lsls r0, r3, 4
- add r0, r9
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x5]
- lsls r2, 28
- lsrs r2, 30
- adds r0, 0x43
- ldrb r3, [r0]
- movs r0, 0x80
- lsls r0, 22
- adds r1, r0
- lsrs r1, 24
- mov r0, r8
- str r0, [sp]
- adds r0, r4, 0
- bl LaunchBallStarsTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x1C]
- str r7, [sp]
- str r7, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8075BE8
- adds r2, r0, 0
- ldrb r1, [r5]
- movs r0, 0
- mov r3, r8
- bl LaunchBallFadeMonTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x1E]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- b _080EF482
- .align 2, 0
-_080EF450: .4byte gUnknown_2037F1A
-_080EF454: .4byte gSprites
-_080EF458:
- movs r1, 0x1C
- ldrsh r0, [r6, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- bne _080EF482
- movs r3, 0x1E
- ldrsh r0, [r6, r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- bne _080EF482
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080EF482:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80EF344
-
- thumb_func_start sub_80EF490
-sub_80EF490: @ 80EF490
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080EF4B4 @ =gUnknown_2023D68
- ldrh r0, [r0]
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r0, 24
- bl LoadBallGfx
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF4B4: .4byte gUnknown_2023D68
- thumb_func_end sub_80EF490
-
- thumb_func_start sub_80EF4B8
-sub_80EF4B8: @ 80EF4B8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080EF4DC @ =gUnknown_2023D68
- ldrh r0, [r0]
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r0, 24
- bl FreeBallGfx
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF4DC: .4byte gUnknown_2023D68
- thumb_func_end sub_80EF4B8
-
- thumb_func_start sub_80EF4E0
-sub_80EF4E0: @ 80EF4E0
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080EF4FC @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0x8]
- cmp r0, 0x5
- beq _080EF504
- cmp r0, 0x6
- beq _080EF514
- ldr r1, _080EF500 @ =gUnknown_2037F02
- movs r0, 0
- b _080EF518
- .align 2, 0
-_080EF4FC: .4byte gUnknown_2024018
-_080EF500: .4byte gUnknown_2037F02
-_080EF504:
- ldr r1, _080EF50C @ =gUnknown_2037F02
- ldr r0, _080EF510 @ =0x0000ffff
- b _080EF518
- .align 2, 0
-_080EF50C: .4byte gUnknown_2037F02
-_080EF510: .4byte 0x0000ffff
-_080EF514:
- ldr r1, _080EF524 @ =gUnknown_2037F02
- ldr r0, _080EF528 @ =0x0000fffe
-_080EF518:
- strh r0, [r1, 0xE]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080EF524: .4byte gUnknown_2037F02
-_080EF528: .4byte 0x0000fffe
- thumb_func_end sub_80EF4E0
-
- thumb_func_start ItemIdToBallId
-ItemIdToBallId: @ 80EF52C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- subs r0, 0x1
- cmp r0, 0xB
- bhi _080EF5A4
- lsls r0, 2
- ldr r1, _080EF544 @ =_080EF548
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080EF544: .4byte _080EF548
- .align 2, 0
-_080EF548:
- .4byte _080EF578
- .4byte _080EF57C
- .4byte _080EF580
- .4byte _080EF5A4
- .4byte _080EF584
- .4byte _080EF588
- .4byte _080EF58C
- .4byte _080EF590
- .4byte _080EF594
- .4byte _080EF598
- .4byte _080EF59C
- .4byte _080EF5A0
-_080EF578:
- movs r0, 0x4
- b _080EF5A6
-_080EF57C:
- movs r0, 0x3
- b _080EF5A6
-_080EF580:
- movs r0, 0x1
- b _080EF5A6
-_080EF584:
- movs r0, 0x2
- b _080EF5A6
-_080EF588:
- movs r0, 0x5
- b _080EF5A6
-_080EF58C:
- movs r0, 0x6
- b _080EF5A6
-_080EF590:
- movs r0, 0x7
- b _080EF5A6
-_080EF594:
- movs r0, 0x8
- b _080EF5A6
-_080EF598:
- movs r0, 0x9
- b _080EF5A6
-_080EF59C:
- movs r0, 0xA
- b _080EF5A6
-_080EF5A0:
- movs r0, 0xB
- b _080EF5A6
-_080EF5A4:
- movs r0, 0
-_080EF5A6:
- pop {r1}
- bx r1
- thumb_func_end ItemIdToBallId
-
- thumb_func_start sub_80EF5AC
-sub_80EF5AC: @ 80EF5AC
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- mov r10, r0
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, _080EF674 @ =gUnknown_2023D68
- ldrh r0, [r0]
- bl ItemIdToBallId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldr r1, _080EF678 @ =gUnknown_82606F4
- adds r0, r1
- movs r1, 0x20
- movs r2, 0x50
- movs r3, 0x1D
- bl CreateSprite
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r1, _080EF67C @ =gSprites
- mov r9, r1
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- adds r6, r4, r1
- movs r0, 0x22
- strh r0, [r6, 0x2E]
- ldr r2, _080EF680 @ =gUnknown_2037F1B
- mov r8, r2
- ldrb r0, [r2]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x30]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x10
- strh r0, [r6, 0x32]
- mov r0, r9
- adds r0, 0x1C
- adds r4, r0
- ldr r0, _080EF684 @ =sub_80EF8C0
- str r0, [r4]
- ldr r0, _080EF688 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r3, [r0, 0x8]
- ldr r1, _080EF68C @ =gUnknown_2023D44
- mov r2, r8
- ldrb r0, [r2]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- adds r0, 0x3E
- ldrb r1, [r0]
- lsls r1, 29
- lsrs r1, 31
- lsls r1, 1
- ldrb r2, [r3, 0x9]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x9]
- ldr r1, _080EF690 @ =gTasks
- mov r2, r10
- lsls r0, r2, 2
- add r0, r10
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- ldr r1, _080EF694 @ =sub_80EF698
- str r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF674: .4byte gUnknown_2023D68
-_080EF678: .4byte gUnknown_82606F4
-_080EF67C: .4byte gSprites
-_080EF680: .4byte gUnknown_2037F1B
-_080EF684: .4byte sub_80EF8C0
-_080EF688: .4byte gUnknown_2024018
-_080EF68C: .4byte gUnknown_2023D44
-_080EF690: .4byte gTasks
-_080EF694: .4byte sub_80EF698
- thumb_func_end sub_80EF5AC
-
- thumb_func_start sub_80EF698
-sub_80EF698: @ 80EF698
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _080EF6C8 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0x8]
- ldr r2, _080EF6CC @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x2E]
- ldr r0, _080EF6D0 @ =0x0000ffff
- cmp r1, r0
- bne _080EF6C2
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_080EF6C2:
- pop {r0}
- bx r0
- .align 2, 0
-_080EF6C8: .4byte gTasks
-_080EF6CC: .4byte gSprites
-_080EF6D0: .4byte 0x0000ffff
- thumb_func_end sub_80EF698
-
- thumb_func_start sub_80EF6D4
-sub_80EF6D4: @ 80EF6D4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _080EF6F4 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _080EF6F8
- movs r5, 0x1C
- movs r6, 0xB
- b _080EF708
- .align 2, 0
-_080EF6F4: .4byte gBattleTypeFlags
-_080EF6F8:
- movs r5, 0x17
- movs r6, 0xB
- ldr r0, _080EF7C4 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0x1
- bne _080EF708
- movs r6, 0xD
-_080EF708:
- ldr r0, _080EF7C8 @ =gUnknown_2023D68
- ldrh r0, [r0]
- bl ItemIdToBallId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- bl sub_807685C
- adds r3, r0, 0
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- ldr r1, _080EF7CC @ =gUnknown_82606F4
- adds r0, r1
- movs r1, 0x20
- orrs r5, r1
- movs r1, 0x50
- orrs r6, r1
- adds r1, r5, 0
- adds r2, r6, 0
- bl CreateSprite
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _080EF7D0 @ =gSprites
- mov r9, r0
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- adds r6, r4, r0
- movs r0, 0x22
- strh r0, [r6, 0x2E]
- ldr r1, _080EF7D4 @ =gUnknown_2037F1B
- mov r8, r1
- ldrb r0, [r1]
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x30]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x10
- strh r0, [r6, 0x32]
- movs r0, 0x1C
- add r9, r0
- add r4, r9
- ldr r0, _080EF7D8 @ =SpriteCallbackDummy
- str r0, [r4]
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r1, _080EF7DC @ =gUnknown_2023D44
- lsls r0, 24
- lsrs r0, 24
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- ldr r1, _080EF7E0 @ =sub_8012354
- str r1, [r0]
- ldr r1, _080EF7E4 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- ldr r1, _080EF7E8 @ =sub_80EF7EC
- str r1, [r0]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF7C4: .4byte gSaveBlock2Ptr
-_080EF7C8: .4byte gUnknown_2023D68
-_080EF7CC: .4byte gUnknown_82606F4
-_080EF7D0: .4byte gSprites
-_080EF7D4: .4byte gUnknown_2037F1B
-_080EF7D8: .4byte SpriteCallbackDummy
-_080EF7DC: .4byte gUnknown_2023D44
-_080EF7E0: .4byte sub_8012354
-_080EF7E4: .4byte gTasks
-_080EF7E8: .4byte sub_80EF7EC
- thumb_func_end sub_80EF6D4
-
- thumb_func_start sub_80EF7EC
-sub_80EF7EC: @ 80EF7EC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, _080EF84C @ =gSprites
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r1, _080EF850 @ =gUnknown_2023D44
- lsls r0, 24
- lsrs r0, 24
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080EF846
- movs r0, 0x36
- movs r1, 0
- bl PlaySE12WithPanning
- ldr r0, _080EF854 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r6, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _080EF858 @ =sub_80EF8C0
- str r1, [r0]
- ldr r0, _080EF85C @ =sub_80EF864
- movs r1, 0xA
- bl CreateTask
- ldr r0, _080EF860 @ =sub_80EF698
- str r0, [r4]
-_080EF846:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF84C: .4byte gSprites
-_080EF850: .4byte gUnknown_2023D44
-_080EF854: .4byte gTasks
-_080EF858: .4byte sub_80EF8C0
-_080EF85C: .4byte sub_80EF864
-_080EF860: .4byte sub_80EF698
- thumb_func_end sub_80EF7EC
-
- thumb_func_start sub_80EF864
-sub_80EF864: @ 80EF864
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, _080EF8B8 @ =gSprites
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r4, _080EF8BC @ =gUnknown_2023D44
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- cmp r0, 0
- bge _080EF8B0
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0
- bl StartSpriteAnim
- adds r0, r5, 0
- bl DestroyTask
-_080EF8B0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF8B8: .4byte gSprites
-_080EF8BC: .4byte gUnknown_2023D44
- thumb_func_end sub_80EF864
-
- thumb_func_start sub_80EF8C0
-sub_80EF8C0: @ 80EF8C0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- ldrh r2, [r4, 0x32]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- strh r1, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- strh r2, [r4, 0x36]
- ldr r0, _080EF8E8 @ =0x0000ffd8
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_8075068
- ldr r0, _080EF8EC @ =sub_80EF8F0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF8E8: .4byte 0x0000ffd8
-_080EF8EC: .4byte sub_80EF8F0
- thumb_func_end sub_80EF8C0
-
- thumb_func_start sub_80EF8F0
-sub_80EF8F0: @ 80EF8F0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080EF99E
- ldr r0, _080EF914 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0x8]
- cmp r0, 0x5
- bne _080EF91C
- ldr r0, _080EF918 @ =sub_80F0478
- str r0, [r4, 0x1C]
- b _080EF99E
- .align 2, 0
-_080EF914: .4byte gUnknown_2024018
-_080EF918: .4byte sub_80F0478
-_080EF91C:
- cmp r0, 0x6
- bne _080EF92C
- ldr r0, _080EF928 @ =sub_80F052C
- str r0, [r4, 0x1C]
- b _080EF99E
- .align 2, 0
-_080EF928: .4byte sub_80F052C
-_080EF92C:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x24]
- strh r1, [r4, 0x26]
- adds r1, r4, 0
- adds r1, 0x2E
- movs r2, 0
- adds r0, r4, 0
- adds r0, 0x3C
-_080EF954:
- strh r2, [r0]
- subs r0, 0x2
- cmp r0, r1
- bge _080EF954
- movs r0, 0
- strh r0, [r4, 0x38]
- ldr r0, _080EF9A8 @ =sub_80EF9B4
- str r0, [r4, 0x1C]
- ldr r0, _080EF9AC @ =gUnknown_2023D68
- ldrh r0, [r0]
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xB
- bgt _080EF99E
- cmp r5, 0
- blt _080EF99E
- ldrh r0, [r4, 0x20]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x22]
- subs r1, 0x5
- lsls r1, 24
- lsrs r1, 24
- str r5, [sp]
- movs r2, 0x1
- movs r3, 0x1C
- bl LaunchBallStarsTask
- ldr r0, _080EF9B0 @ =gUnknown_2037F1B
- ldrb r1, [r0]
- movs r0, 0
- movs r2, 0xE
- adds r3, r5, 0
- bl LaunchBallFadeMonTask
-_080EF99E:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF9A8: .4byte sub_80EF9B4
-_080EF9AC: .4byte gUnknown_2023D68
-_080EF9B0: .4byte gUnknown_2037F1B
- thumb_func_end sub_80EF8F0
-
- thumb_func_start sub_80EF9B4
-sub_80EF9B4: @ 80EF9B4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _080EF9F0
- ldr r0, _080EF9F8 @ =TaskDummy
- movs r1, 0x32
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x38]
- ldr r0, _080EF9FC @ =sub_80EFA0C
- str r0, [r4, 0x1C]
- ldr r2, _080EFA00 @ =gSprites
- ldr r1, _080EFA04 @ =gUnknown_2023D44
- ldr r0, _080EFA08 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x30]
-_080EF9F0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EF9F8: .4byte TaskDummy
-_080EF9FC: .4byte sub_80EFA0C
-_080EFA00: .4byte gSprites
-_080EFA04: .4byte gUnknown_2023D44
-_080EFA08: .4byte gUnknown_2037F1B
- thumb_func_end sub_80EF9B4
-
- thumb_func_start sub_80EFA0C
-sub_80EFA0C: @ 80EFA0C
- push {r4-r7,lr}
- adds r7, r0, 0
- ldr r1, _080EFA50 @ =gUnknown_2023D44
- ldr r0, _080EFA54 @ =gUnknown_2037F1B
- ldrb r0, [r0]
- adds r0, r1
- ldrb r4, [r0]
- ldrh r0, [r7, 0x38]
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080EFA58 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- bne _080EFA3E
- movs r0, 0x35
- bl PlaySE
-_080EFA3E:
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080EFAB4
- cmp r0, 0x1
- bgt _080EFA5C
- cmp r0, 0
- beq _080EFA62
- b _080EFB20
- .align 2, 0
-_080EFA50: .4byte gUnknown_2023D44
-_080EFA54: .4byte gUnknown_2037F1B
-_080EFA58: .4byte gTasks
-_080EFA5C:
- cmp r0, 0x2
- beq _080EFAF8
- b _080EFB20
-_080EFA62:
- adds r0, r4, 0
- movs r1, 0
- bl sub_80758E0
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r5, 0x1C]
- ldr r1, _080EFAA4 @ =gUnknown_3005424
- movs r0, 0x1C
- str r0, [r1]
- ldr r2, _080EFAA8 @ =gUnknown_300542C
- ldr r1, _080EFAAC @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- ldrh r0, [r7, 0x26]
- ldrh r7, [r7, 0x22]
- adds r0, r7
- subs r1, r0
- strh r1, [r2]
- ldr r4, _080EFAB0 @ =gUnknown_3005428
- ldrh r0, [r2]
- lsls r0, 8
- movs r1, 0x1C
- bl __udivsi3
- strh r0, [r4]
- strh r0, [r5, 0xC]
- b _080EFB12
- .align 2, 0
-_080EFAA4: .4byte gUnknown_3005424
-_080EFAA8: .4byte gUnknown_300542C
-_080EFAAC: .4byte gSprites
-_080EFAB0: .4byte gUnknown_3005428
-_080EFAB4:
- ldrh r0, [r5, 0x1C]
- adds r0, 0x20
- strh r0, [r5, 0x1C]
- movs r0, 0x1C
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r5, 0xC]
- ldrh r1, [r5, 0xE]
- adds r0, r1
- strh r0, [r5, 0xE]
- ldr r0, _080EFAF0 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- negs r0, r0
- asrs r0, 8
- strh r0, [r1, 0x26]
- movs r0, 0x1C
- ldrsh r1, [r5, r0]
- ldr r0, _080EFAF4 @ =0x0000047f
- cmp r1, r0
- ble _080EFB48
- b _080EFB12
- .align 2, 0
-_080EFAF0: .4byte gSprites
-_080EFAF4: .4byte 0x0000047f
-_080EFAF8:
- adds r0, r4, 0
- bl sub_8075980
- ldr r1, _080EFB1C @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080EFB12:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080EFB48
- .align 2, 0
-_080EFB1C: .4byte gSprites
-_080EFB20:
- ldr r0, _080EFB50 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0xA
- ble _080EFB48
- adds r0, r6, 0
- bl DestroyTask
- adds r0, r7, 0
- movs r1, 0x2
- bl StartSpriteAnim
- movs r0, 0
- strh r0, [r7, 0x38]
- ldr r0, _080EFB54 @ =sub_80EFB58
- str r0, [r7, 0x1C]
-_080EFB48:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EFB50: .4byte gTasks
-_080EFB54: .4byte sub_80EFB58
- thumb_func_end sub_80EFA0C
-
- thumb_func_start sub_80EFB58
-sub_80EFB58: @ 80EFB58
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080EFB92
- movs r1, 0
- strh r1, [r4, 0x34]
- movs r0, 0x28
- strh r0, [r4, 0x36]
- strh r1, [r4, 0x38]
- movs r0, 0
- movs r1, 0x28
- bl Cos
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- movs r0, 0
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldr r0, _080EFB98 @ =sub_80EFB9C
- str r0, [r4, 0x1C]
-_080EFB92:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EFB98: .4byte sub_80EFB9C
- thumb_func_end sub_80EFB58
-
- thumb_func_start sub_80EFB9C
-sub_80EFB9C: @ 80EFB9C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r5, 0
- ldrh r0, [r4, 0x34]
- movs r1, 0xFF
- ands r1, r0
- cmp r1, 0
- beq _080EFBB2
- cmp r1, 0x1
- beq _080EFC26
- b _080EFC52
-_080EFBB2:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r1, [r4, 0x38]
- adds r1, 0x4
- ldrh r2, [r4, 0x34]
- lsls r0, r2, 16
- asrs r0, 24
- adds r1, r0
- strh r1, [r4, 0x38]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x3F
- ble _080EFC52
- ldrh r0, [r4, 0x36]
- subs r0, 0xA
- strh r0, [r4, 0x36]
- ldr r1, _080EFBFC @ =0x00000101
- adds r0, r2, r1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 24
- cmp r0, 0x4
- bne _080EFBEE
- movs r5, 0x1
-_080EFBEE:
- cmp r0, 0x2
- beq _080EFC0E
- cmp r0, 0x2
- bgt _080EFC00
- cmp r0, 0x1
- beq _080EFC06
- b _080EFC1E
- .align 2, 0
-_080EFBFC: .4byte 0x00000101
-_080EFC00:
- cmp r0, 0x3
- beq _080EFC16
- b _080EFC1E
-_080EFC06:
- movs r0, 0x31
- bl PlaySE
- b _080EFC52
-_080EFC0E:
- movs r0, 0x32
- bl PlaySE
- b _080EFC52
-_080EFC16:
- movs r0, 0x33
- bl PlaySE
- b _080EFC52
-_080EFC1E:
- movs r0, 0x34
- bl PlaySE
- b _080EFC52
-_080EFC26:
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r1, [r4, 0x38]
- subs r1, 0x4
- ldrh r2, [r4, 0x34]
- lsls r0, r2, 16
- asrs r0, 24
- subs r1, r0
- strh r1, [r4, 0x38]
- lsls r1, 16
- cmp r1, 0
- bgt _080EFC52
- strh r5, [r4, 0x38]
- ldr r0, _080EFC80 @ =0xffffff00
- ands r0, r2
- strh r0, [r4, 0x34]
-_080EFC52:
- cmp r5, 0
- beq _080EFC96
- movs r5, 0
- strh r5, [r4, 0x34]
- movs r0, 0x40
- movs r1, 0x28
- bl Cos
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x26]
- ldr r0, _080EFC84 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _080EFC8C
- strh r5, [r4, 0x38]
- ldr r0, _080EFC88 @ =sub_80EFF80
- str r0, [r4, 0x1C]
- b _080EFC96
- .align 2, 0
-_080EFC80: .4byte 0xffffff00
-_080EFC84: .4byte gUnknown_2024018
-_080EFC88: .4byte sub_80EFF80
-_080EFC8C:
- ldr r0, _080EFC9C @ =sub_80EFCA0
- str r0, [r4, 0x1C]
- movs r0, 0x1
- strh r0, [r4, 0x36]
- strh r5, [r4, 0x38]
-_080EFC96:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EFC9C: .4byte sub_80EFCA0
- thumb_func_end sub_80EFB9C
-
- thumb_func_start sub_80EFCA0
-sub_80EFCA0: @ 80EFCA0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _080EFCDC
- strh r5, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, _080EFCE4 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- strh r5, [r0, 0xC]
- ldr r0, _080EFCE8 @ =sub_80EFCEC
- str r0, [r4, 0x1C]
- movs r0, 0x17
- bl PlaySE
-_080EFCDC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EFCE4: .4byte gUnknown_2024018
-_080EFCE8: .4byte sub_80EFCEC
- thumb_func_end sub_80EFCA0
-
- thumb_func_start sub_80EFCEC
-sub_80EFCEC: @ 80EFCEC
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- movs r1, 0xFF
- ands r1, r0
- cmp r1, 0x6
- bls _080EFCFC
- b _080EFF34
-_080EFCFC:
- lsls r0, r1, 2
- ldr r1, _080EFD08 @ =_080EFD0C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080EFD08: .4byte _080EFD0C
- .align 2, 0
-_080EFD0C:
- .4byte _080EFD28
- .4byte _080EFD7A
- .4byte _080EFDC0
- .4byte _080EFE20
- .4byte _080EFE70
- .4byte _080EFED4
- .4byte _080EFF34
-_080EFD28:
- ldr r1, _080EFD4C @ =gUnknown_2024018
- ldr r5, [r1]
- ldr r2, [r5, 0x8]
- ldrh r3, [r2, 0xC]
- movs r6, 0xC
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0xFF
- ble _080EFD50
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldr r1, [r5, 0x8]
- ldrb r0, [r1, 0xC]
- strh r0, [r1, 0xC]
- b _080EFD56
- .align 2, 0
-_080EFD4C: .4byte gUnknown_2024018
-_080EFD50:
- adds r0, r3, 0
- adds r0, 0xB0
- strh r0, [r2, 0xC]
-_080EFD56:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r4, 0x38]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x38]
- adds r0, 0x7
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xE
- bhi _080EFD78
- b _080EFF7A
-_080EFD78:
- b _080EFE10
-_080EFD7A:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080EFE2C
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x36]
- negs r0, r0
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- movs r6, 0x36
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bge _080EFDB6
- adds r0, r4, 0
- movs r1, 0x2
- bl ChangeSpriteAffineAnim
- b _080EFF7A
-_080EFDB6:
- adds r0, r4, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
- b _080EFF7A
-_080EFDC0:
- ldr r1, _080EFDE4 @ =gUnknown_2024018
- ldr r5, [r1]
- ldr r2, [r5, 0x8]
- ldrh r3, [r2, 0xC]
- movs r6, 0xC
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0xFF
- ble _080EFDE8
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldr r1, [r5, 0x8]
- ldrb r0, [r1, 0xC]
- strh r0, [r1, 0xC]
- b _080EFDEE
- .align 2, 0
-_080EFDE4: .4byte gUnknown_2024018
-_080EFDE8:
- adds r0, r3, 0
- adds r0, 0xB0
- strh r0, [r2, 0xC]
-_080EFDEE:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r4, 0x38]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x38]
- adds r0, 0xC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x18
- bhi _080EFE10
- b _080EFF7A
-_080EFE10:
- ldr r0, [r6]
- ldr r0, [r0, 0x8]
- strh r3, [r0, 0xC]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- strh r3, [r4, 0x38]
- b _080EFF7A
-_080EFE20:
- ldrh r0, [r4, 0x38]
- adds r1, r0, 0x1
- strh r1, [r4, 0x38]
- lsls r0, 16
- cmp r0, 0
- bge _080EFE3A
-_080EFE2C:
- adds r0, r4, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- b _080EFF7A
-_080EFE3A:
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x36]
- negs r0, r0
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- movs r6, 0x36
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bge _080EFE68
- adds r0, r4, 0
- movs r1, 0x2
- bl ChangeSpriteAffineAnim
- b _080EFE70
-_080EFE68:
- adds r0, r4, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
-_080EFE70:
- ldr r1, _080EFE94 @ =gUnknown_2024018
- ldr r5, [r1]
- ldr r2, [r5, 0x8]
- ldrh r3, [r2, 0xC]
- movs r6, 0xC
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0xFF
- ble _080EFE98
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldr r1, [r5, 0x8]
- ldrb r0, [r1, 0xC]
- strh r0, [r1, 0xC]
- b _080EFE9E
- .align 2, 0
-_080EFE94: .4byte gUnknown_2024018
-_080EFE98:
- adds r0, r3, 0
- adds r0, 0xB0
- strh r0, [r2, 0xC]
-_080EFE9E:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r4, 0x38]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x38]
- adds r0, 0x4
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- bls _080EFF7A
- ldr r0, [r6]
- ldr r0, [r0, 0x8]
- strh r3, [r0, 0xC]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- strh r3, [r4, 0x38]
- ldrh r0, [r4, 0x36]
- negs r0, r0
- strh r0, [r4, 0x36]
- b _080EFF7A
-_080EFED4:
- movs r6, 0x80
- lsls r6, 1
- adds r0, r6, 0
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r1, r0, 24
- ldr r0, _080EFF04 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0x8]
- cmp r1, r0
- bne _080EFF0C
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080EFF08 @ =sub_80EFF80
- str r0, [r4, 0x1C]
- b _080EFF7A
- .align 2, 0
-_080EFF04: .4byte gUnknown_2024018
-_080EFF08: .4byte sub_80EFF80
-_080EFF0C:
- cmp r0, 0x4
- bne _080EFF20
- cmp r1, 0x3
- bne _080EFF20
- ldr r0, _080EFF1C @ =sub_80EFFA4
- str r0, [r4, 0x1C]
- b _080EFF26
- .align 2, 0
-_080EFF1C: .4byte sub_80EFFA4
-_080EFF20:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
-_080EFF26:
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- b _080EFF7A
-_080EFF34:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _080EFF7A
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r1, [r4, 0x34]
- ldr r0, _080EFF68 @ =0xffffff00
- ands r0, r1
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- movs r1, 0x3
- bl StartSpriteAffineAnim
- movs r6, 0x36
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bge _080EFF6C
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- b _080EFF74
- .align 2, 0
-_080EFF68: .4byte 0xffffff00
-_080EFF6C:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080EFF74:
- movs r0, 0x17
- bl PlaySE
-_080EFF7A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80EFCEC
-
- thumb_func_start sub_80EFF80
-sub_80EFF80: @ 80EFF80
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x38]
- adds r0, 0x1
- strh r0, [r1, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _080EFF9A
- movs r0, 0
- strh r0, [r1, 0x38]
- ldr r0, _080EFFA0 @ =sub_80F02B0
- str r0, [r1, 0x1C]
-_080EFF9A:
- pop {r0}
- bx r0
- .align 2, 0
-_080EFFA0: .4byte sub_80F02B0
- thumb_func_end sub_80EFF80
-
- thumb_func_start sub_80EFFA4
-sub_80EFFA4: @ 80EFFA4
- adds r3, r0, 0
- adds r3, 0x2C
- ldrb r1, [r3]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r3]
- ldr r1, _080EFFC0 @ =sub_80EFFC4
- str r1, [r0, 0x1C]
- movs r1, 0
- strh r1, [r0, 0x34]
- strh r1, [r0, 0x36]
- strh r1, [r0, 0x38]
- bx lr
- .align 2, 0
-_080EFFC0: .4byte sub_80EFFC4
- thumb_func_end sub_80EFFA4
-
- thumb_func_start sub_80EFFC4
-sub_80EFFC4: @ 80EFFC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r7, _080F0004 @ =gUnknown_2037F1B
- ldrh r0, [r6, 0x36]
- adds r0, 0x1
- movs r1, 0
- mov r8, r1
- strh r0, [r6, 0x36]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0x28
- bne _080F0008
- movs r0, 0xF7
- bl PlaySE
- ldrb r1, [r6, 0x5]
- lsrs r1, 4
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r1
- movs r1, 0x6
- movs r2, 0
- bl BlendPalettes
- adds r0, r6, 0
- bl sub_80F01B8
- b _080F0088
- .align 2, 0
-_080F0004: .4byte gUnknown_2037F1B
-_080F0008:
- cmp r1, 0x3C
- bne _080F0026
- ldrb r1, [r6, 0x5]
- lsrs r1, 4
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r1
- mov r1, r8
- str r1, [sp]
- movs r1, 0x2
- movs r2, 0x6
- movs r3, 0
- bl BeginNormalPaletteFade
- b _080F0088
-_080F0026:
- cmp r1, 0x5F
- bne _080F004C
- ldr r0, _080F0044 @ =gUnknown_2024005
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x1
- bl UpdateOamPriorityInAllHealthboxes
- bl m4aMPlayAllStop
- ldr r0, _080F0048 @ =0x0000013f
- bl PlaySE
- b _080F0088
- .align 2, 0
-_080F0044: .4byte gUnknown_2024005
-_080F0048: .4byte 0x0000013f
-_080F004C:
- ldr r0, _080F0094 @ =0x0000013b
- cmp r1, r0
- bne _080F0088
- ldr r5, _080F0098 @ =gSprites
- ldr r4, _080F009C @ =gUnknown_2023D44
- ldrb r0, [r7]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r0, [r7]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- mov r0, r8
- strh r0, [r6, 0x2E]
- ldr r0, _080F00A0 @ =sub_80F00A4
- str r0, [r6, 0x1C]
-_080F0088:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0094: .4byte 0x0000013b
-_080F0098: .4byte gSprites
-_080F009C: .4byte gUnknown_2023D44
-_080F00A0: .4byte sub_80F00A4
- thumb_func_end sub_80EFFC4
-
- thumb_func_start sub_80F00A4
-sub_80F00A4: @ 80F00A4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080F0110
- cmp r0, 0x1
- bgt _080F00BC
- cmp r0, 0
- beq _080F00C2
- b _080F0156
-_080F00BC:
- cmp r0, 0x2
- beq _080F0142
- b _080F0156
-_080F00C2:
- strh r0, [r4, 0x30]
- strh r0, [r4, 0x32]
- ldrb r1, [r4, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4, 0x1]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldr r0, [r4, 0x14]
- ldrh r0, [r0, 0x2]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- ldr r0, _080F010C @ =0x00007fff
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _080F014E
- .align 2, 0
-_080F010C: .4byte 0x00007fff
-_080F0110:
- ldrh r0, [r4, 0x30]
- adds r1, r0, 0x1
- strh r1, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- ble _080F017C
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r2, [r4, 0x32]
- adds r2, 0x1
- strh r2, [r4, 0x32]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _080F017C
- b _080F014E
-_080F0142:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_080F014E:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080F017C
-_080F0156:
- ldr r0, _080F0184 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080F017C
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- strh r5, [r4, 0x2E]
- ldr r0, _080F0188 @ =sub_80F018C
- str r0, [r4, 0x1C]
-_080F017C:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0184: .4byte gPaletteFade
-_080F0188: .4byte sub_80F018C
- thumb_func_end sub_80F00A4
-
- thumb_func_start sub_80F018C
-sub_80F018C: @ 80F018C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080F01A4
- ldr r0, _080F01A0 @ =0x0000ffff
- strh r0, [r4, 0x2E]
- b _080F01B0
- .align 2, 0
-_080F01A0: .4byte 0x0000ffff
-_080F01A4:
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080F01B0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F018C
-
- thumb_func_start sub_80F01B8
-sub_80F01B8: @ 80F01B8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r6, r0, 0
- adds r1, r6, 0
- adds r1, 0x43
- ldrb r0, [r1]
- cmp r0, 0
- beq _080F01D8
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- b _080F01E0
-_080F01D8:
- movs r0, 0
- mov r8, r0
- movs r0, 0x1
- strb r0, [r1]
-_080F01E0:
- movs r0, 0x4
- bl sub_80F05B4
- movs r7, 0
- ldr r2, _080F0264 @ =gSprites
- mov r9, r2
- movs r0, 0x1C
- add r0, r9
- mov r10, r0
-_080F01F2:
- movs r2, 0x20
- ldrsh r1, [r6, r2]
- movs r0, 0x22
- ldrsh r2, [r6, r0]
- ldr r0, _080F0268 @ =gUnknown_840C104
- mov r3, r8
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080F024E
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- mov r2, r9
- adds r5, r4, r2
- movs r0, 0x18
- strh r0, [r5, 0x2E]
- ldr r0, _080F026C @ =gUnknown_840BF3C
- lsls r1, r7, 2
- adds r1, r0
- movs r0, 0
- ldrsb r0, [r1, r0]
- ldrh r2, [r6, 0x20]
- adds r0, r2
- strh r0, [r5, 0x32]
- movs r0, 0x1
- ldrsb r0, [r1, r0]
- ldrh r2, [r6, 0x22]
- adds r0, r2
- strh r0, [r5, 0x36]
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- strh r0, [r5, 0x38]
- adds r0, r5, 0
- bl sub_8075068
- add r4, r10
- ldr r0, _080F0270 @ =sub_80F0278
- str r0, [r4]
- ldr r0, _080F0274 @ =gUnknown_840C068
- ldrb r1, [r0, 0x4]
- adds r0, r5, 0
- bl StartSpriteAnim
-_080F024E:
- adds r7, 0x1
- cmp r7, 0x2
- bls _080F01F2
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0264: .4byte gSprites
-_080F0268: .4byte gUnknown_840C104
-_080F026C: .4byte gUnknown_840BF3C
-_080F0270: .4byte sub_80F0278
-_080F0274: .4byte gUnknown_840C068
- thumb_func_end sub_80F01B8
-
- thumb_func_start sub_80F0278
-sub_80F0278: @ 80F0278
- push {r4,lr}
- adds r4, r0, 0
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- adds r0, r4, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080F02A8
- adds r0, r4, 0
- bl DestroySprite
-_080F02A8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F0278
-
- thumb_func_start sub_80F02B0
-sub_80F02B0: @ 80F02B0
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r1, 0x1
- bl StartSpriteAnim
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- ldr r0, _080F0364 @ =sub_80F0378
- str r0, [r4, 0x1C]
- ldr r0, _080F0368 @ =gUnknown_2023D68
- ldrh r0, [r0]
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xB
- bgt _080F0302
- cmp r5, 0
- blt _080F0302
- ldrh r0, [r4, 0x20]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x22]
- subs r1, 0x5
- lsls r1, 24
- lsrs r1, 24
- str r5, [sp]
- movs r2, 0x1
- movs r3, 0x1C
- bl LaunchBallStarsTask
- ldr r0, _080F036C @ =gUnknown_2037F1B
- ldrb r1, [r0]
- movs r0, 0x1
- movs r2, 0xE
- adds r3, r5, 0
- bl LaunchBallFadeMonTask
-_080F0302:
- ldr r6, _080F0370 @ =gSprites
- ldr r5, _080F0374 @ =gUnknown_2023D44
- ldr r4, _080F036C @ =gUnknown_2037F1B
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl AnimateSprite
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x80
- lsls r1, 5
- strh r1, [r0, 0x30]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0364: .4byte sub_80F0378
-_080F0368: .4byte gUnknown_2023D68
-_080F036C: .4byte gUnknown_2037F1B
-_080F0370: .4byte gSprites
-_080F0374: .4byte gUnknown_2023D44
- thumb_func_end sub_80F02B0
-
- thumb_func_start sub_80F0378
-sub_80F0378: @ 80F0378
- push {r4-r7,lr}
- adds r7, r0, 0
- movs r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080F0396
- adds r2, r7, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_080F0396:
- ldr r4, _080F03C4 @ =gSprites
- ldr r3, _080F03C8 @ =gUnknown_2023D44
- ldr r2, _080F03CC @ =gUnknown_2037F1B
- ldrb r0, [r2]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r4
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _080F03D0
- adds r0, r1, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- movs r5, 0x1
- b _080F03F0
- .align 2, 0
-_080F03C4: .4byte gSprites
-_080F03C8: .4byte gUnknown_2023D44
-_080F03CC: .4byte gUnknown_2037F1B
-_080F03D0:
- ldr r6, _080F045C @ =0xfffffee0
- adds r0, r6, 0
- ldrh r6, [r1, 0x30]
- adds r0, r6
- strh r0, [r1, 0x30]
- ldrb r0, [r2]
- adds r0, r3
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r1, 0x26]
-_080F03F0:
- adds r0, r7, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080F0456
- cmp r5, 0
- beq _080F0456
- ldr r4, _080F0460 @ =gSprites
- ldr r3, _080F0464 @ =gUnknown_2023D44
- ldr r2, _080F0468 @ =gUnknown_2037F1B
- ldrb r0, [r2]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r6, 0
- movs r5, 0
- strh r5, [r0, 0x26]
- ldrb r0, [r2]
- adds r0, r3
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- ldr r0, _080F046C @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r1, [r0, 0x9]
- lsls r1, 30
- adds r2, 0x3E
- lsrs r1, 31
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- strh r5, [r7, 0x2E]
- ldr r0, _080F0470 @ =sub_80F018C
- str r0, [r7, 0x1C]
- ldr r0, _080F0474 @ =gUnknown_2024005
- strb r6, [r0]
- movs r0, 0x1
- bl UpdateOamPriorityInAllHealthboxes
-_080F0456:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F045C: .4byte 0xfffffee0
-_080F0460: .4byte gSprites
-_080F0464: .4byte gUnknown_2023D44
-_080F0468: .4byte gUnknown_2037F1B
-_080F046C: .4byte gUnknown_2024018
-_080F0470: .4byte sub_80F018C
-_080F0474: .4byte gUnknown_2024005
- thumb_func_end sub_80F0378
-
- thumb_func_start sub_80F0478
-sub_80F0478: @ 80F0478
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x24]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r2, 0x20]
- ldrh r0, [r2, 0x26]
- ldrh r3, [r2, 0x22]
- adds r0, r3
- strh r0, [r2, 0x22]
- strh r1, [r2, 0x26]
- strh r1, [r2, 0x24]
- ldr r4, _080F04B0 @ =sub_80F04B4
- movs r3, 0
- movs r1, 0x5
- adds r0, r2, 0
- adds r0, 0x38
-_080F049C:
- strh r3, [r0]
- subs r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _080F049C
- str r4, [r2, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F04B0: .4byte sub_80F04B4
- thumb_func_end sub_80F0478
-
- thumb_func_start sub_80F04B4
-sub_80F04B4: @ 80F04B4
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x80
- lsls r0, 4
- adds r2, r0, 0
- ldrh r1, [r4, 0x2E]
- adds r2, r1
- movs r0, 0xD0
- lsls r0, 3
- adds r3, r0, 0
- ldrh r1, [r4, 0x30]
- adds r3, r1
- lsls r1, r3, 16
- asrs r1, 24
- ldrh r0, [r4, 0x24]
- subs r0, r1
- strh r0, [r4, 0x24]
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- movs r0, 0xFF
- ands r2, r0
- strh r2, [r4, 0x2E]
- ands r3, r0
- strh r3, [r4, 0x30]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- cmp r0, 0xA0
- bgt _080F050A
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r1, 0x8
- negs r1, r1
- cmp r0, r1
- bge _080F051E
-_080F050A:
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, _080F0524 @ =sub_80F018C
- str r0, [r4, 0x1C]
- ldr r1, _080F0528 @ =gUnknown_2024005
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- bl UpdateOamPriorityInAllHealthboxes
-_080F051E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0524: .4byte sub_80F018C
-_080F0528: .4byte gUnknown_2024005
- thumb_func_end sub_80F04B4
-
- thumb_func_start sub_80F052C
-sub_80F052C: @ 80F052C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x24]
- ldrh r0, [r4, 0x20]
- adds r1, r0
- movs r0, 0
- strh r1, [r4, 0x20]
- ldrh r2, [r4, 0x26]
- ldrh r3, [r4, 0x22]
- adds r2, r3
- strh r2, [r4, 0x22]
- strh r0, [r4, 0x26]
- strh r0, [r4, 0x24]
- movs r0, 0x22
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- subs r1, 0x8
- strh r1, [r4, 0x32]
- strh r2, [r4, 0x34]
- movs r0, 0x90
- strh r0, [r4, 0x36]
- movs r0, 0x20
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_8075068
- adds r0, r4, 0
- bl sub_80750C8
- ldr r0, _080F0570 @ =sub_80F0574
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0570: .4byte sub_80F0574
- thumb_func_end sub_80F052C
-
- thumb_func_start sub_80F0574
-sub_80F0574: @ 80F0574
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80750C8
- lsls r0, 24
- cmp r0, 0
- bne _080F0590
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- cmp r0, 0x40
- ble _080F05A4
-_080F0590:
- movs r1, 0
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, _080F05AC @ =sub_80F018C
- str r0, [r4, 0x1C]
- ldr r0, _080F05B0 @ =gUnknown_2024005
- strb r1, [r0]
- movs r0, 0x1
- bl UpdateOamPriorityInAllHealthboxes
-_080F05A4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F05AC: .4byte sub_80F018C
-_080F05B0: .4byte gUnknown_2024005
- thumb_func_end sub_80F0574
-
- thumb_func_start sub_80F05B4
-sub_80F05B4: @ 80F05B4
- push {r4,r5,lr}
- lsls r0, 24
- ldr r1, _080F05E0 @ =gUnknown_840BF48
- lsrs r5, r0, 21
- adds r4, r5, r1
- ldrh r0, [r4, 0x6]
- bl GetSpriteTileStartByTag
- lsls r0, 16
- ldr r1, _080F05E4 @ =0xffff0000
- cmp r0, r1
- bne _080F05DA
- adds r0, r4, 0
- bl sub_800F034
- ldr r0, _080F05E8 @ =gUnknown_840BFA8
- adds r0, r5, r0
- bl sub_800F078
-_080F05DA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F05E0: .4byte gUnknown_840BF48
-_080F05E4: .4byte 0xffff0000
-_080F05E8: .4byte gUnknown_840BFA8
- thumb_func_end sub_80F05B4
-
- thumb_func_start LaunchBallStarsTask
-LaunchBallStarsTask: @ 80F05EC
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r6, r0, 0
- mov r8, r1
- mov r9, r2
- mov r10, r3
- ldr r5, [sp, 0x1C]
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r5, 0
- bl sub_80F05B4
- ldr r1, _080F066C @ =gUnknown_840C074
- lsls r0, r5, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x5
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080F0670 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r6, [r0, 0xA]
- mov r1, r8
- strh r1, [r0, 0xC]
- mov r1, r9
- strh r1, [r0, 0xE]
- mov r1, r10
- strh r1, [r0, 0x10]
- strh r5, [r0, 0x26]
- movs r0, 0xF
- bl PlaySE
- adds r0, r4, 0
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080F066C: .4byte gUnknown_840C074
-_080F0670: .4byte gTasks
- thumb_func_end LaunchBallStarsTask
-
- thumb_func_start sub_80F0674
-sub_80F0674: @ 80F0674
- push {lr}
- ldr r0, _080F0698 @ =gMain
- ldr r1, _080F069C @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080F0692
- ldr r0, _080F06A0 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0, 0x8]
- ldrb r0, [r1, 0xA]
- adds r0, 0x1
- strb r0, [r1, 0xA]
-_080F0692:
- pop {r0}
- bx r0
- .align 2, 0
-_080F0698: .4byte gMain
-_080F069C: .4byte 0x00000439
-_080F06A0: .4byte gUnknown_2024018
- thumb_func_end sub_80F0674
-
- thumb_func_start sub_80F06A4
-sub_80F06A4: @ 80F06A4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, _080F0780 @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r6, r0, r1
- ldrh r0, [r6, 0x26]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r2, 0x8
- ldrsh r0, [r6, r2]
- adds r2, r1, 0
- cmp r0, 0xF
- bgt _080F079C
- ldrb r1, [r6, 0xA]
- ldrb r2, [r6, 0xC]
- ldrb r4, [r6, 0xE]
- mov r9, r4
- ldrb r3, [r6, 0x10]
- ldr r4, [sp]
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- ldr r4, _080F0784 @ =gUnknown_840C0A4
- adds r0, r4
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- cmp r0, 0x40
- beq _080F0740
- bl sub_80F0674
- mov r0, r10
- lsls r4, r0, 4
- add r4, r10
- lsls r4, 2
- ldr r5, _080F0788 @ =gSprites
- adds r7, r4, r5
- ldr r0, _080F078C @ =gUnknown_840C068
- ldr r1, [sp]
- adds r0, r1, r0
- ldrb r1, [r0]
- adds r0, r7, 0
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _080F0790 @ =sub_80F07BC
- str r0, [r4]
- movs r0, 0x3
- mov r2, r9
- ands r2, r0
- lsls r2, 2
- ldrb r1, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r7, 0x5]
- ldrb r0, [r6, 0x8]
- cmp r0, 0x7
- bls _080F073C
- subs r0, 0x8
- lsls r0, 24
- lsrs r0, 24
-_080F073C:
- lsls r0, 5
- strh r0, [r7, 0x2E]
-_080F0740:
- ldr r0, _080F0780 @ =gTasks
- mov r4, r8
- lsls r1, r4, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r1, [r1, r2]
- adds r2, r0, 0
- cmp r1, 0xF
- bne _080F079C
- ldr r0, _080F0794 @ =gMain
- ldr r4, _080F0798 @ =0x00000439
- adds r0, r4
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080F0776
- ldr r0, _080F0788 @ =gSprites
- mov r2, r10
- lsls r1, r2, 4
- add r1, r10
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_080F0776:
- mov r0, r8
- bl DestroyTask
- b _080F07AC
- .align 2, 0
-_080F0780: .4byte gTasks
-_080F0784: .4byte gUnknown_840C0A4
-_080F0788: .4byte gSprites
-_080F078C: .4byte gUnknown_840C068
-_080F0790: .4byte sub_80F07BC
-_080F0794: .4byte gMain
-_080F0798: .4byte 0x00000439
-_080F079C:
- mov r4, r8
- lsls r0, r4, 2
- add r0, r8
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
-_080F07AC:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F06A4
-
- thumb_func_start sub_80F07BC
-sub_80F07BC: @ 80F07BC
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x30]
- movs r3, 0x30
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _080F07D4
- ldr r0, _080F07D0 @ =sub_80F07DC
- str r0, [r1, 0x1C]
- b _080F07D8
- .align 2, 0
-_080F07D0: .4byte sub_80F07DC
-_080F07D4:
- subs r0, r2, 0x1
- strh r0, [r1, 0x30]
-_080F07D8:
- pop {r0}
- bx r0
- thumb_func_end sub_80F07BC
-
- thumb_func_start sub_80F07DC
-sub_80F07DC: @ 80F07DC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x2
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x32
- bne _080F0810
- adds r0, r4, 0
- bl sub_80F1198
-_080F0810:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F07DC
-
- thumb_func_start sub_80F0818
-sub_80F0818: @ 80F0818
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, _080F08FC @ =gTasks
- mov r2, r9
- lsls r1, r2, 2
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r3, [r1, 0xA]
- str r3, [sp]
- ldrb r0, [r1, 0xC]
- str r0, [sp, 0x4]
- ldrb r2, [r1, 0xE]
- str r2, [sp, 0x8]
- ldrb r1, [r1, 0x10]
- str r1, [sp, 0xC]
- movs r7, 0
- ldr r3, _080F0900 @ =gSprites
- mov r10, r3
- mov r1, r8
- lsls r0, r1, 1
- add r0, r8
- lsls r0, 3
- str r0, [sp, 0x10]
-_080F085E:
- ldr r0, _080F0904 @ =gUnknown_840C0A4
- ldr r2, [sp, 0x10]
- adds r0, r2, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _080F08BE
- bl sub_80F0674
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r3, r10
- adds r5, r4, r3
- ldr r0, _080F0908 @ =gUnknown_840C068
- add r0, r8
- ldrb r1, [r0]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, _080F090C @ =gSprites + 0x1C
- adds r4, r0
- ldr r0, _080F0910 @ =sub_80F0D5C
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0xA
- strh r0, [r5, 0x36]
- movs r0, 0x2
- strh r0, [r5, 0x38]
- movs r0, 0x1
- strh r0, [r5, 0x3A]
-_080F08BE:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _080F085E
- ldr r0, _080F0914 @ =gMain
- ldr r1, _080F0918 @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080F08E6
- ldr r0, _080F0900 @ =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_080F08E6:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F08FC: .4byte gTasks
-_080F0900: .4byte gSprites
-_080F0904: .4byte gUnknown_840C0A4
-_080F0908: .4byte gUnknown_840C068
-_080F090C: .4byte gSprites + 0x1C
-_080F0910: .4byte sub_80F0D5C
-_080F0914: .4byte gMain
-_080F0918: .4byte 0x00000439
- thumb_func_end sub_80F0818
-
- thumb_func_start sub_80F091C
-sub_80F091C: @ 80F091C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, _080F0A00 @ =gTasks
- mov r2, r9
- lsls r1, r2, 2
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r3, [r1, 0xA]
- str r3, [sp]
- ldrb r0, [r1, 0xC]
- str r0, [sp, 0x4]
- ldrb r2, [r1, 0xE]
- str r2, [sp, 0x8]
- ldrb r1, [r1, 0x10]
- str r1, [sp, 0xC]
- movs r7, 0
- ldr r3, _080F0A04 @ =gSprites
- mov r10, r3
- mov r1, r8
- lsls r0, r1, 1
- add r0, r8
- lsls r0, 3
- str r0, [sp, 0x10]
-_080F0962:
- ldr r0, _080F0A08 @ =gUnknown_840C0A4
- ldr r2, [sp, 0x10]
- adds r0, r2, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _080F09C2
- bl sub_80F0674
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r3, r10
- adds r5, r4, r3
- ldr r0, _080F0A0C @ =gUnknown_840C068
- add r0, r8
- ldrb r1, [r0]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, _080F0A10 @ =gSprites + 0x1C
- adds r4, r0
- ldr r0, _080F0A14 @ =sub_80F0D5C
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0xA
- strh r0, [r5, 0x36]
- movs r0, 0x1
- strh r0, [r5, 0x38]
- movs r0, 0x2
- strh r0, [r5, 0x3A]
-_080F09C2:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _080F0962
- ldr r0, _080F0A18 @ =gMain
- ldr r1, _080F0A1C @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080F09EA
- ldr r0, _080F0A04 @ =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_080F09EA:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0A00: .4byte gTasks
-_080F0A04: .4byte gSprites
-_080F0A08: .4byte gUnknown_840C0A4
-_080F0A0C: .4byte gUnknown_840C068
-_080F0A10: .4byte gSprites + 0x1C
-_080F0A14: .4byte sub_80F0D5C
-_080F0A18: .4byte gMain
-_080F0A1C: .4byte 0x00000439
- thumb_func_end sub_80F091C
-
- thumb_func_start sub_80F0A20
-sub_80F0A20: @ 80F0A20
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, _080F0B00 @ =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0xA]
- str r2, [sp]
- ldrb r3, [r0, 0xC]
- str r3, [sp, 0x4]
- ldrb r2, [r0, 0xE]
- str r2, [sp, 0x8]
- ldrb r0, [r0, 0x10]
- str r0, [sp, 0xC]
- movs r7, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- str r0, [sp, 0x10]
- ldr r3, _080F0B04 @ =gSprites
- mov r8, r3
- ldr r0, _080F0B08 @ =gUnknown_840C068
- adds r1, r0
- mov r10, r1
-_080F0A66:
- ldr r0, _080F0B0C @ =gUnknown_840C0A4
- ldr r1, [sp, 0x10]
- adds r0, r1, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _080F0AC2
- bl sub_80F0674
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r2, r8
- adds r5, r4, r2
- mov r3, r10
- ldrb r1, [r3]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, _080F0B10 @ =gSprites + 0x1C
- adds r4, r0
- ldr r0, _080F0B14 @ =sub_80F0D5C
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0x4
- strh r0, [r5, 0x36]
- movs r0, 0x1
- strh r0, [r5, 0x38]
- strh r0, [r5, 0x3A]
-_080F0AC2:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _080F0A66
- ldr r0, _080F0B18 @ =gMain
- ldr r1, _080F0B1C @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080F0AEA
- ldr r0, _080F0B04 @ =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_080F0AEA:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0B00: .4byte gTasks
-_080F0B04: .4byte gSprites
-_080F0B08: .4byte gUnknown_840C068
-_080F0B0C: .4byte gUnknown_840C0A4
-_080F0B10: .4byte gSprites + 0x1C
-_080F0B14: .4byte sub_80F0D5C
-_080F0B18: .4byte gMain
-_080F0B1C: .4byte 0x00000439
- thumb_func_end sub_80F0A20
-
- thumb_func_start sub_80F0B20
-sub_80F0B20: @ 80F0B20
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, _080F0C08 @ =gTasks
- mov r2, r9
- lsls r1, r2, 2
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r3, [r1, 0xA]
- str r3, [sp]
- ldrb r0, [r1, 0xC]
- str r0, [sp, 0x4]
- ldrb r2, [r1, 0xE]
- str r2, [sp, 0x8]
- ldrb r1, [r1, 0x10]
- str r1, [sp, 0xC]
- movs r7, 0
- ldr r3, _080F0C0C @ =gSprites
- mov r10, r3
- mov r1, r8
- lsls r0, r1, 1
- add r0, r8
- lsls r0, 3
- str r0, [sp, 0x10]
-_080F0B66:
- ldr r0, _080F0C10 @ =gUnknown_840C0A4
- ldr r2, [sp, 0x10]
- adds r0, r2, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _080F0BCA
- bl sub_80F0674
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r3, r10
- adds r5, r4, r3
- ldr r0, _080F0C14 @ =gUnknown_840C068
- add r0, r8
- ldrb r1, [r0]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, _080F0C18 @ =gSprites + 0x1C
- adds r4, r0
- ldr r0, _080F0C1C @ =sub_80F0D5C
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 3
- adds r0, r7
- strh r0, [r5, 0x2E]
- movs r0, 0x5
- strh r0, [r5, 0x36]
- movs r0, 0x1
- strh r0, [r5, 0x38]
- strh r0, [r5, 0x3A]
-_080F0BCA:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x9
- bls _080F0B66
- ldr r0, _080F0C20 @ =gMain
- ldr r1, _080F0C24 @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080F0BF2
- ldr r0, _080F0C0C @ =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_080F0BF2:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0C08: .4byte gTasks
-_080F0C0C: .4byte gSprites
-_080F0C10: .4byte gUnknown_840C0A4
-_080F0C14: .4byte gUnknown_840C068
-_080F0C18: .4byte gSprites + 0x1C
-_080F0C1C: .4byte sub_80F0D5C
-_080F0C20: .4byte gMain
-_080F0C24: .4byte 0x00000439
- thumb_func_end sub_80F0B20
-
- thumb_func_start sub_80F0C28
-sub_80F0C28: @ 80F0C28
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, _080F0C54 @ =gTasks
- lsls r2, r0, 2
- adds r0, r2, r0
- lsls r0, 3
- adds r3, r0, r1
- ldrh r1, [r3, 0x16]
- movs r4, 0x16
- ldrsh r0, [r3, r4]
- cmp r0, 0
- beq _080F0C58
- subs r0, r1, 0x1
- strh r0, [r3, 0x16]
- b _080F0D2A
- .align 2, 0
-_080F0C54: .4byte gTasks
-_080F0C58:
- ldrh r0, [r3, 0x26]
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r3, 0xA]
- str r1, [sp]
- ldrb r4, [r3, 0xC]
- str r4, [sp, 0x4]
- ldrb r1, [r3, 0xE]
- str r1, [sp, 0x8]
- ldrb r3, [r3, 0x10]
- str r3, [sp, 0xC]
- movs r7, 0
- str r2, [sp, 0x14]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- str r1, [sp, 0x10]
- ldr r3, _080F0D3C @ =gSprites
- mov r9, r3
- ldr r1, _080F0D40 @ =gUnknown_840C068
- adds r0, r1
- mov r10, r0
-_080F0C84:
- ldr r0, _080F0D44 @ =gUnknown_840C0A4
- ldr r4, [sp, 0x10]
- adds r0, r4, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _080F0CE0
- bl sub_80F0674
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r0, r9
- adds r5, r4, r0
- mov r3, r10
- ldrb r1, [r3]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, _080F0D48 @ =gSprites + 0x1C
- adds r4, r0
- ldr r0, _080F0D4C @ =sub_80F0D5C
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0x8
- strh r0, [r5, 0x36]
- movs r0, 0x2
- strh r0, [r5, 0x38]
- strh r0, [r5, 0x3A]
-_080F0CE0:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _080F0C84
- ldr r0, _080F0D50 @ =gTasks
- ldr r1, [sp, 0x14]
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x8
- strh r0, [r1, 0x16]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0x2
- bne _080F0D2A
- ldr r0, _080F0D54 @ =gMain
- ldr r4, _080F0D58 @ =0x00000439
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _080F0D24
- ldr r0, _080F0D3C @ =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_080F0D24:
- mov r0, r8
- bl DestroyTask
-_080F0D2A:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0D3C: .4byte gSprites
-_080F0D40: .4byte gUnknown_840C068
-_080F0D44: .4byte gUnknown_840C0A4
-_080F0D48: .4byte gSprites + 0x1C
-_080F0D4C: .4byte sub_80F0D5C
-_080F0D50: .4byte gTasks
-_080F0D54: .4byte gMain
-_080F0D58: .4byte 0x00000439
- thumb_func_end sub_80F0C28
-
- thumb_func_start sub_80F0D5C
-sub_80F0D5C: @ 80F0D5C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x2E]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x38]
- ldrh r2, [r4, 0x30]
- adds r0, r2
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _080F0DAC
- adds r0, r4, 0
- bl sub_80F1198
-_080F0DAC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F0D5C
-
- thumb_func_start sub_80F0DB4
-sub_80F0DB4: @ 80F0DB4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, _080F0E90 @ =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0xA]
- str r2, [sp]
- ldrb r3, [r0, 0xC]
- str r3, [sp, 0x4]
- ldrb r2, [r0, 0xE]
- str r2, [sp, 0x8]
- ldrb r0, [r0, 0x10]
- str r0, [sp, 0xC]
- movs r7, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- str r0, [sp, 0x10]
- ldr r3, _080F0E94 @ =gSprites
- mov r8, r3
- ldr r0, _080F0E98 @ =gUnknown_840C068
- adds r1, r0
- mov r10, r1
-_080F0DFA:
- ldr r0, _080F0E9C @ =gUnknown_840C0A4
- ldr r1, [sp, 0x10]
- adds r0, r1, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _080F0E52
- bl sub_80F0674
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r2, r8
- adds r5, r4, r2
- mov r3, r10
- ldrb r1, [r3]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, _080F0EA0 @ =gSprites + 0x1C
- adds r4, r0
- ldr r0, _080F0EA4 @ =sub_80F0EB0
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 2
- adds r0, r7
- strh r0, [r5, 0x2E]
-_080F0E52:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0xB
- bls _080F0DFA
- ldr r0, _080F0EA8 @ =gMain
- ldr r1, _080F0EAC @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080F0E7A
- ldr r0, _080F0E94 @ =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_080F0E7A:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0E90: .4byte gTasks
-_080F0E94: .4byte gSprites
-_080F0E98: .4byte gUnknown_840C068
-_080F0E9C: .4byte gUnknown_840C0A4
-_080F0EA0: .4byte gSprites + 0x1C
-_080F0EA4: .4byte sub_80F0EB0
-_080F0EA8: .4byte gMain
-_080F0EAC: .4byte 0x00000439
- thumb_func_end sub_80F0DB4
-
- thumb_func_start sub_80F0EB0
-sub_80F0EB0: @ 80F0EB0
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r5, 0x24]
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- movs r2, 0x32
- ldrsh r1, [r5, r2]
- adds r0, r4, 0
- bl Sin
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl Cos
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x6
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _080F0F08
- adds r0, r5, 0
- bl sub_80F1198
-_080F0F08:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F0EB0
-
- thumb_func_start sub_80F0F10
-sub_80F0F10: @ 80F0F10
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- ldr r0, _080F0FC4 @ =gTasks
- ldr r2, [sp]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldrb r3, [r1, 0xA]
- str r3, [sp, 0x4]
- ldrb r0, [r1, 0xC]
- str r0, [sp, 0x8]
- ldrb r2, [r1, 0xE]
- str r2, [sp, 0xC]
- ldrb r1, [r1, 0x10]
- str r1, [sp, 0x10]
- movs r3, 0
- mov r8, r3
- mov r1, r9
- lsls r0, r1, 1
- add r0, r9
- lsls r0, 3
- str r0, [sp, 0x14]
-_080F0F54:
- movs r7, 0
- movs r2, 0x1
- add r2, r8
- mov r10, r2
-_080F0F5C:
- ldr r0, _080F0FC8 @ =gUnknown_840C0A4
- ldr r3, [sp, 0x14]
- adds r0, r3, r0
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- ldr r3, [sp, 0x10]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _080F0FE4
- bl sub_80F0674
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- ldr r0, _080F0FCC @ =gSprites
- adds r5, r4, r0
- ldr r0, _080F0FD0 @ =gUnknown_840C068
- add r0, r9
- ldrb r1, [r0]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r1, _080F0FD4 @ =gSprites + 0x1C
- adds r4, r1
- ldr r0, _080F0FD8 @ =sub_80F0D5C
- str r0, [r4]
- movs r0, 0x3
- ldr r1, [sp, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r2, r3, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0x8
- strh r0, [r5, 0x36]
- mov r0, r8
- cmp r0, 0
- bne _080F0FDC
- movs r0, 0x2
- strh r0, [r5, 0x38]
- movs r0, 0x1
- b _080F0FE2
- .align 2, 0
-_080F0FC4: .4byte gTasks
-_080F0FC8: .4byte gUnknown_840C0A4
-_080F0FCC: .4byte gSprites
-_080F0FD0: .4byte gUnknown_840C068
-_080F0FD4: .4byte gSprites + 0x1C
-_080F0FD8: .4byte sub_80F0D5C
-_080F0FDC:
- movs r0, 0x1
- strh r0, [r5, 0x38]
- movs r0, 0x2
-_080F0FE2:
- strh r0, [r5, 0x3A]
-_080F0FE4:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _080F0F5C
- mov r1, r10
- lsls r0, r1, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x1
- bls _080F0F54
- ldr r0, _080F1030 @ =gMain
- ldr r2, _080F1034 @ =0x00000439
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080F1018
- ldr r0, _080F1038 @ =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_080F1018:
- ldr r0, [sp]
- bl DestroyTask
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1030: .4byte gMain
-_080F1034: .4byte 0x00000439
-_080F1038: .4byte gSprites
- thumb_func_end sub_80F0F10
-
- thumb_func_start sub_80F103C
-sub_80F103C: @ 80F103C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, _080F1114 @ =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0xA]
- str r2, [sp]
- ldrb r3, [r0, 0xC]
- str r3, [sp, 0x4]
- ldrb r2, [r0, 0xE]
- str r2, [sp, 0x8]
- ldrb r0, [r0, 0x10]
- str r0, [sp, 0xC]
- movs r7, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- str r0, [sp, 0x10]
- ldr r3, _080F1118 @ =gSprites
- mov r8, r3
- ldr r0, _080F111C @ =gUnknown_840C068
- adds r1, r0
- mov r10, r1
-_080F1082:
- ldr r0, _080F1120 @ =gUnknown_840C0A4
- ldr r1, [sp, 0x10]
- adds r0, r1, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _080F10D4
- bl sub_80F0674
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r2, r8
- adds r5, r4, r2
- mov r3, r10
- ldrb r1, [r3]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, _080F1124 @ =gSprites + 0x1C
- adds r4, r0
- ldr r0, _080F1128 @ =sub_80F1134
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
-_080F10D4:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _080F1082
- ldr r0, _080F112C @ =gMain
- ldr r1, _080F1130 @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080F10FC
- ldr r0, _080F1118 @ =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_080F10FC:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1114: .4byte gTasks
-_080F1118: .4byte gSprites
-_080F111C: .4byte gUnknown_840C068
-_080F1120: .4byte gUnknown_840C0A4
-_080F1124: .4byte gSprites + 0x1C
-_080F1128: .4byte sub_80F1134
-_080F112C: .4byte gMain
-_080F1130: .4byte 0x00000439
- thumb_func_end sub_80F103C
-
- thumb_func_start sub_80F1134
-sub_80F1134: @ 80F1134
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r5, 0x24]
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- ldrh r1, [r5, 0x2E]
- movs r0, 0x3F
- ands r0, r1
- movs r2, 0x32
- ldrsh r1, [r5, r2]
- bl Sin
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl Cos
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x2E]
- adds r0, 0xA
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _080F1190
- adds r0, r5, 0
- bl sub_80F1198
-_080F1190:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F1134
-
- thumb_func_start sub_80F1198
-sub_80F1198: @ 80F1198
- push {r4-r7,lr}
- adds r7, r0, 0
- ldr r0, _080F11BC @ =gMain
- ldr r1, _080F11C0 @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080F11C4
- movs r1, 0x3C
- ldrsh r0, [r7, r1]
- cmp r0, 0x1
- bne _080F11F6
- adds r0, r7, 0
- bl DestroySpriteAndFreeResources
- b _080F1212
- .align 2, 0
-_080F11BC: .4byte gMain
-_080F11C0: .4byte 0x00000439
-_080F11C4:
- ldr r2, _080F1200 @ =gUnknown_2024018
- ldr r0, [r2]
- ldr r1, [r0, 0x8]
- ldrb r0, [r1, 0xA]
- subs r0, 0x1
- strb r0, [r1, 0xA]
- ldr r0, [r2]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- bne _080F120C
- movs r6, 0
- ldr r5, _080F1204 @ =gUnknown_840BF48
- ldr r4, _080F1208 @ =gUnknown_840BFA8
-_080F11E0:
- ldrh r0, [r5, 0x6]
- bl FreeSpriteTilesByTag
- ldrh r0, [r4, 0x4]
- bl FreeSpritePaletteByTag
- adds r5, 0x8
- adds r4, 0x8
- adds r6, 0x1
- cmp r6, 0xB
- ble _080F11E0
-_080F11F6:
- adds r0, r7, 0
- bl DestroySprite
- b _080F1212
- .align 2, 0
-_080F1200: .4byte gUnknown_2024018
-_080F1204: .4byte gUnknown_840BF48
-_080F1208: .4byte gUnknown_840BFA8
-_080F120C:
- adds r0, r7, 0
- bl DestroySprite
-_080F1212:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F1198
-
- thumb_func_start LaunchBallFadeMonTask
-LaunchBallFadeMonTask: @ 80F1218
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r4, r0, 0
- mov r9, r2
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r3, 24
- lsrs r7, r3, 24
- ldr r0, _080F127C @ =sub_80F12E0
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, _080F1280 @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r5, r0, r1
- strh r7, [r5, 0x26]
- strh r6, [r5, 0xE]
- mov r0, r9
- strh r0, [r5, 0x1C]
- mov r1, r9
- lsrs r0, r1, 16
- strh r0, [r5, 0x1E]
- cmp r4, 0
- bne _080F1288
- lsls r0, r6, 20
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r0, 16
- ldr r2, _080F1284 @ =gUnknown_840C1C4
- lsls r1, r7, 1
- adds r1, r2
- ldrh r3, [r1]
- movs r1, 0x10
- movs r2, 0
- bl BlendPalette
- movs r0, 0x1
- strh r0, [r5, 0xA]
- b _080F12AE
- .align 2, 0
-_080F127C: .4byte sub_80F12E0
-_080F1280: .4byte gTasks
-_080F1284: .4byte gUnknown_840C1C4
-_080F1288:
- lsls r0, r6, 20
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r0, 16
- ldr r2, _080F12D0 @ =gUnknown_840C1C4
- lsls r1, r7, 1
- adds r1, r2
- ldrh r3, [r1]
- movs r1, 0x10
- movs r2, 0x10
- bl BlendPalette
- movs r0, 0x10
- strh r0, [r5, 0x8]
- ldr r0, _080F12D4 @ =0x0000ffff
- strh r0, [r5, 0xA]
- ldr r0, _080F12D8 @ =sub_80F1370
- str r0, [r5]
-_080F12AE:
- ldr r0, _080F12DC @ =0x00007fff
- str r0, [sp]
- mov r0, r9
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- mov r0, r8
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080F12D0: .4byte gUnknown_840C1C4
-_080F12D4: .4byte 0x0000ffff
-_080F12D8: .4byte sub_80F1370
-_080F12DC: .4byte 0x00007fff
- thumb_func_end LaunchBallFadeMonTask
-
- thumb_func_start sub_80F12E0
-sub_80F12E0: @ 80F12E0
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080F1330 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0x10
- bgt _080F1338
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- lsls r0, 20
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r0, 16
- ldrb r2, [r4, 0x8]
- ldr r3, _080F1334 @ =gUnknown_840C1C4
- lsls r1, 1
- adds r1, r3
- ldrh r3, [r1]
- movs r1, 0x10
- bl BlendPalette
- ldrh r0, [r4, 0xA]
- ldrh r1, [r4, 0x8]
- adds r0, r1
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- b _080F1360
- .align 2, 0
-_080F1330: .4byte gTasks
-_080F1334: .4byte gUnknown_840C1C4
-_080F1338:
- ldr r0, _080F1368 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F1360
- ldrh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- lsls r1, 16
- orrs r0, r1
- ldr r1, _080F136C @ =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- adds r0, r5, 0
- bl DestroyTask
-_080F1360:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1368: .4byte gPaletteFade
-_080F136C: .4byte 0x00007fff
- thumb_func_end sub_80F12E0
-
- thumb_func_start sub_80F1370
-sub_80F1370: @ 80F1370
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080F13B0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F13A8
- ldr r0, _080F13B4 @ =gTasks
- lsls r4, r2, 2
- adds r4, r2
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- lsls r1, 16
- orrs r0, r1
- ldr r1, _080F13B8 @ =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _080F13BC @ =sub_80F13C0
- str r0, [r4]
-_080F13A8:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F13B0: .4byte gPaletteFade
-_080F13B4: .4byte gTasks
-_080F13B8: .4byte 0x00007fff
-_080F13BC: .4byte sub_80F13C0
- thumb_func_end sub_80F1370
-
- thumb_func_start sub_80F13C0
-sub_80F13C0: @ 80F13C0
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080F140C @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r1, r0, 24
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0x10
- bgt _080F1414
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- lsls r0, 20
- movs r3, 0x80
- lsls r3, 17
- adds r0, r3
- lsrs r0, 16
- ldrb r2, [r4, 0x8]
- ldr r3, _080F1410 @ =gUnknown_840C1C4
- lsls r1, 1
- adds r1, r3
- ldrh r3, [r1]
- movs r1, 0x10
- bl BlendPalette
- ldrh r0, [r4, 0xA]
- ldrh r1, [r4, 0x8]
- adds r0, r1
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- b _080F141A
- .align 2, 0
-_080F140C: .4byte gTasks
-_080F1410: .4byte gUnknown_840C1C4
-_080F1414:
- adds r0, r2, 0
- bl DestroyTask
-_080F141A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F13C0
-
- thumb_func_start sub_80F1420
-sub_80F1420: @ 80F1420
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0
- mov r8, r0
- ldr r0, _080F1454 @ =gUnknown_2023D44
- ldr r3, _080F1458 @ =gUnknown_2037F1A
- ldrb r2, [r3]
- adds r0, r2, r0
- ldrb r6, [r0]
- ldr r1, _080F145C @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0x1C
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080F14F8
- cmp r0, 0x1
- bgt _080F1460
- cmp r0, 0
- beq _080F1466
- b _080F15BA
- .align 2, 0
-_080F1454: .4byte gUnknown_2023D44
-_080F1458: .4byte gUnknown_2037F1A
-_080F145C: .4byte gTasks
-_080F1460:
- cmp r0, 0x2
- beq _080F150A
- b _080F15BA
-_080F1466:
- ldr r0, _080F14A0 @ =gUnknown_2037F02
- ldrh r0, [r0]
- strh r0, [r5, 0x1E]
- movs r2, 0xA0
- lsls r2, 3
- adds r0, r2, 0
- ldrh r4, [r5, 0x8]
- adds r0, r4
- strh r0, [r5, 0x8]
- ldrb r0, [r3]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080F14A8
- ldr r2, _080F14A4 @ =gSprites
- lsls r3, r6, 4
- adds r1, r3, r6
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 24
- ldrh r4, [r1, 0x24]
- adds r0, r4
- strh r0, [r1, 0x24]
- adds r4, r3, 0
- b _080F14C0
- .align 2, 0
-_080F14A0: .4byte gUnknown_2037F02
-_080F14A4: .4byte gSprites
-_080F14A8:
- ldr r3, _080F14F0 @ =gSprites
- lsls r4, r6, 4
- adds r2, r4, r6
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r5, 0x8]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- adds r2, r3, 0
-_080F14C0:
- ldr r1, _080F14F4 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r3, r0, r1
- ldrb r0, [r3, 0x8]
- strh r0, [r3, 0x8]
- adds r0, r4, r6
- lsls r0, 2
- adds r0, r2
- movs r2, 0x20
- ldrsh r1, [r0, r2]
- movs r4, 0x24
- ldrsh r0, [r0, r4]
- adds r1, r0
- adds r1, 0x20
- movs r0, 0x98
- lsls r0, 1
- cmp r1, r0
- bls _080F15BA
- ldrh r0, [r3, 0x1C]
- adds r0, 0x1
- strh r0, [r3, 0x1C]
- b _080F15BA
- .align 2, 0
-_080F14F0: .4byte gSprites
-_080F14F4: .4byte gTasks
-_080F14F8:
- ldrb r1, [r5, 0x1E]
- adds r0, r2, 0
- adds r2, r6, 0
- bl LoadBattleMonGfxAndAnimate
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- b _080F15BA
-_080F150A:
- movs r1, 0xA0
- lsls r1, 3
- adds r0, r1, 0
- ldrh r2, [r5, 0x8]
- adds r0, r2
- strh r0, [r5, 0x8]
- ldrb r0, [r3]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080F1540
- ldr r0, _080F153C @ =gSprites
- lsls r3, r6, 4
- adds r2, r3, r6
- lsls r2, 2
- adds r2, r0
- ldrh r1, [r5, 0x8]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- adds r4, r3, 0
- b _080F1558
- .align 2, 0
-_080F153C: .4byte gSprites
-_080F1540:
- ldr r0, _080F158C @ =gSprites
- lsls r2, r6, 4
- adds r1, r2, r6
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 24
- ldrh r3, [r1, 0x24]
- adds r0, r3
- strh r0, [r1, 0x24]
- adds r4, r2, 0
-_080F1558:
- ldr r1, _080F1590 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0x8]
- strh r1, [r0, 0x8]
- ldr r0, _080F1594 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _080F1598
- ldr r0, _080F158C @ =gSprites
- adds r1, r4, r6
- lsls r1, 2
- adds r1, r0
- movs r4, 0x24
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bgt _080F15AE
- movs r0, 0
- strh r0, [r1, 0x24]
- b _080F15B4
- .align 2, 0
-_080F158C: .4byte gSprites
-_080F1590: .4byte gTasks
-_080F1594: .4byte gUnknown_2037F1A
-_080F1598:
- ldr r0, _080F15C4 @ =gSprites
- adds r1, r4, r6
- lsls r1, 2
- adds r1, r0
- movs r3, 0x24
- ldrsh r0, [r1, r3]
- cmp r0, 0
- blt _080F15AE
- strh r2, [r1, 0x24]
- movs r4, 0x1
- mov r8, r4
-_080F15AE:
- mov r0, r8
- cmp r0, 0
- beq _080F15BA
-_080F15B4:
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080F15BA:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F15C4: .4byte gSprites
- thumb_func_end sub_80F1420
-
- thumb_func_start sub_80F15C8
-sub_80F15C8: @ 80F15C8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080F15EC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080F1644
- cmp r0, 0x1
- bgt _080F15F0
- cmp r0, 0
- beq _080F15F6
- b _080F16B4
- .align 2, 0
-_080F15EC: .4byte gTasks
-_080F15F0:
- cmp r0, 0x2
- beq _080F167E
- b _080F16B4
-_080F15F6:
- ldr r0, _080F1610 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F1618
- ldr r1, _080F1614 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- b _080F1620
- .align 2, 0
-_080F1610: .4byte gUnknown_2037F1A
-_080F1614: .4byte 0x00003f42
-_080F1618:
- ldr r1, _080F163C @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
-_080F1620:
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldr r0, _080F1640 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _080F16B4
- .align 2, 0
-_080F163C: .4byte 0x00003f44
-_080F1640: .4byte gTasks
-_080F1644:
- ldrh r0, [r4, 0xA]
- adds r1, r0, 0x1
- strh r1, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080F16B4
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r2, [r4, 0x8]
- adds r2, 0x1
- strh r2, [r4, 0x8]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _080F16B4
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
- b _080F16B4
-_080F167E:
- ldr r1, _080F16BC @ =gUnknown_2023D44
- ldr r4, _080F16C0 @ =gUnknown_2037F1A
- ldrb r0, [r4]
- adds r0, r1
- ldrb r1, [r0]
- ldr r2, _080F16C4 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r0, _080F16C8 @ =0x06010000
- adds r1, r0
- movs r2, 0x80
- lsls r2, 4
- movs r0, 0
- movs r3, 0x1
- bl RequestDma3Fill
- ldrb r0, [r4]
- bl ClearBehindSubstituteBit
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080F16B4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F16BC: .4byte gUnknown_2023D44
-_080F16C0: .4byte gUnknown_2037F1A
-_080F16C4: .4byte gSprites
-_080F16C8: .4byte 0x06010000
- thumb_func_end sub_80F15C8
-
- thumb_func_start sub_80F16CC
-sub_80F16CC: @ 80F16CC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080F16F4 @ =gUnknown_2037F02
- ldr r1, _080F16F8 @ =gUnknown_2024018
- ldr r2, [r1]
- ldr r1, _080F16FC @ =gUnknown_2037F1A
- ldrb r1, [r1]
- ldr r2, [r2]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- lsls r1, 29
- lsrs r1, 31
- strh r1, [r3, 0xE]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080F16F4: .4byte gUnknown_2037F02
-_080F16F8: .4byte gUnknown_2024018
-_080F16FC: .4byte gUnknown_2037F1A
- thumb_func_end sub_80F16CC
-
- thumb_func_start sub_80F1700
-sub_80F1700: @ 80F1700
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F1718 @ =gUnknown_2037F1B
- ldr r1, _080F171C @ =gUnknown_2023D6E
- ldrb r1, [r1]
- strb r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080F1718: .4byte gUnknown_2037F1B
-_080F171C: .4byte gUnknown_2023D6E
- thumb_func_end sub_80F1700
-
- thumb_func_start sub_80F1720
-sub_80F1720: @ 80F1720
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- mov r8, r0
- ldr r0, _080F17DC @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- adds r5, r0, 0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r4, r0, 0
- adds r0, r6, 0
- bl sub_8072DF0
- lsls r0, 24
- cmp r0, 0
- beq _080F17F8
- lsrs r0, r5, 16
- ldr r7, _080F17E0 @ =0x0000ffff
- ands r5, r7
- eors r0, r5
- lsrs r1, r4, 16
- eors r0, r1
- ands r4, r7
- eors r0, r4
- cmp r0, 0x7
- bhi _080F177E
- movs r0, 0x1
- mov r8, r0
-_080F177E:
- mov r0, r8
- cmp r0, 0
- beq _080F17F8
- ldr r0, _080F17E4 @ =0x000027f9
- bl GetSpriteTileStartByTag
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r7
- bne _080F179E
- ldr r0, _080F17E8 @ =gUnknown_83AD350
- bl sub_800F034
- ldr r0, _080F17EC @ =gUnknown_83ADC58
- bl sub_800F078
-_080F179E:
- ldr r5, _080F17F0 @ =sub_80F181C
- adds r0, r5, 0
- movs r1, 0xA
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080F17F4 @ =gTasks
- lsls r2, r4, 2
- adds r2, r4
- lsls r2, 3
- adds r2, r3
- movs r4, 0
- strh r6, [r2, 0x8]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r3
- strh r6, [r1, 0x8]
- strh r4, [r2, 0xA]
- movs r0, 0x1
- strh r0, [r1, 0xA]
- b _080F180E
- .align 2, 0
-_080F17DC: .4byte gUnknown_2024018
-_080F17E0: .4byte 0x0000ffff
-_080F17E4: .4byte 0x000027f9
-_080F17E8: .4byte gUnknown_83AD350
-_080F17EC: .4byte gUnknown_83ADC58
-_080F17F0: .4byte sub_80F181C
-_080F17F4: .4byte gTasks
-_080F17F8:
- ldr r0, _080F1818 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x1]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x1]
-_080F180E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1818: .4byte gUnknown_2024018
- thumb_func_end sub_80F1720
-
- thumb_func_start sub_80F181C
-sub_80F181C: @ 80F181C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080F1844 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0x22]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- cmp r0, 0x3B
- bgt _080F1848
- adds r0, r1, 0x1
- strh r0, [r4, 0x22]
- b _080F19C0
- .align 2, 0
-_080F1844: .4byte gTasks
-_080F1848:
- ldr r0, _080F189C @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _080F1856
- b _080F19C0
-_080F1856:
- ldrh r0, [r4, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1C]
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- cmp r1, 0
- beq _080F186A
- b _080F19C0
-_080F186A:
- ldrb r0, [r4, 0x8]
- mov r8, r0
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r8
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080F18A4
- ldr r0, _080F18A0 @ =gUnknown_83FF168
- adds r1, r5, 0
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- b _080F1906
- .align 2, 0
-_080F189C: .4byte gUnknown_2024018
-_080F18A0: .4byte gUnknown_83FF168
-_080F18A4:
- cmp r0, 0
- blt _080F18D8
- cmp r0, 0x3
- bgt _080F18D8
- ldr r0, _080F18D0 @ =gUnknown_83FF180
- adds r1, r5, 0
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080F18D4 @ =gSprites
- lsls r2, r5, 4
- adds r2, r5
- lsls r2, 2
- adds r2, r0
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x4
- b _080F18F8
- .align 2, 0
-_080F18D0: .4byte gUnknown_83FF180
-_080F18D4: .4byte gSprites
-_080F18D8:
- ldr r0, _080F1930 @ =gUnknown_83FF180
- adds r1, r5, 0
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080F1934 @ =gSprites
- lsls r2, r5, 4
- adds r2, r5
- lsls r2, 2
- adds r2, r0
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x5
-_080F18F8:
- ldr r4, _080F1938 @ =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, _080F193C @ =0xfffffc00
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
-_080F1906:
- ldr r2, _080F1940 @ =gTasks
- lsls r1, r7, 2
- adds r0, r1, r7
- lsls r0, 3
- adds r6, r0, r2
- movs r2, 0xA
- ldrsh r0, [r6, r2]
- mov r9, r1
- cmp r0, 0
- bne _080F1948
- ldr r1, _080F1934 @ =gSprites
- lsls r2, r5, 4
- adds r0, r2, r5
- lsls r0, 2
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _080F1944 @ =sub_80F1A2C
- str r1, [r0]
- adds r4, r2, 0
- b _080F1990
- .align 2, 0
-_080F1930: .4byte gUnknown_83FF180
-_080F1934: .4byte gSprites
-_080F1938: .4byte 0x000003ff
-_080F193C: .4byte 0xfffffc00
-_080F1940: .4byte gTasks
-_080F1944: .4byte sub_80F1A2C
-_080F1948:
- ldr r3, _080F19CC @ =gSprites
- lsls r4, r5, 4
- adds r1, r4, r5
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x1C
- adds r0, r1, r0
- ldr r2, _080F19D0 @ =sub_80F1A80
- str r2, [r0]
- adds r1, r3
- ldr r0, _080F19D4 @ =0x0000ffe0
- strh r0, [r1, 0x24]
- movs r0, 0x20
- strh r0, [r1, 0x26]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- movs r1, 0x1E
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080F1990
- mov r0, r8
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0x3F
- cmp r0, 0
- bne _080F1986
- movs r1, 0xC0
-_080F1986:
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x5F
- bl PlaySE12WithPanning
-_080F1990:
- ldr r1, _080F19CC @ =gSprites
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r1
- strh r7, [r0, 0x2E]
- ldr r1, _080F19D8 @ =gTasks
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- strh r0, [r1, 0x1E]
- cmp r5, 0x40
- beq _080F19B4
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
-_080F19B4:
- movs r4, 0x1E
- ldrsh r0, [r1, r4]
- cmp r0, 0x5
- bne _080F19C0
- ldr r0, _080F19DC @ =sub_80F19E0
- str r0, [r1]
-_080F19C0:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F19CC: .4byte gSprites
-_080F19D0: .4byte sub_80F1A80
-_080F19D4: .4byte 0x0000ffe0
-_080F19D8: .4byte gTasks
-_080F19DC: .4byte sub_80F19E0
- thumb_func_end sub_80F181C
-
- thumb_func_start sub_80F19E0
-sub_80F19E0: @ 80F19E0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r3, r0, 0
- ldr r1, _080F1A24 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r1, r0, r1
- movs r2, 0x20
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080F1A20
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- bne _080F1A1A
- ldrb r1, [r1, 0x8]
- ldr r0, _080F1A28 @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r2, [r0, 0x4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x1]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x1]
-_080F1A1A:
- adds r0, r3, 0
- bl DestroyTask
-_080F1A20:
- pop {r0}
- bx r0
- .align 2, 0
-_080F1A24: .4byte gTasks
-_080F1A28: .4byte gUnknown_2024018
- thumb_func_end sub_80F19E0
-
- thumb_func_start sub_80F1A2C
-sub_80F1A2C: @ 80F1A2C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x18
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x18
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0xC
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _080F1A76
- ldr r2, _080F1A7C @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080F1A76:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1A7C: .4byte gTasks
- thumb_func_end sub_80F1A2C
-
- thumb_func_start sub_80F1A80
-sub_80F1A80: @ 80F1A80
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- bgt _080F1A94
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _080F1AD6
-_080F1A94:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldrh r1, [r4, 0x24]
- adds r1, 0x5
- strh r1, [r4, 0x24]
- ldrh r0, [r4, 0x26]
- subs r0, 0x5
- strh r0, [r4, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x20
- ble _080F1AD6
- ldr r2, _080F1ADC @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080F1AD6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1ADC: .4byte gTasks
- thumb_func_end sub_80F1A80
-
- thumb_func_start sub_80F1AE0
-sub_80F1AE0: @ 80F1AE0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080F1B08 @ =gUnknown_83AD470
- bl sub_800F034
- ldr r0, _080F1B0C @ =gUnknown_83ADD78
- bl sub_800F078
- ldr r0, _080F1B10 @ =0x0000281d
- bl IndexOfSpritePaletteTag
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1B08: .4byte gUnknown_83AD470
-_080F1B0C: .4byte gUnknown_83ADD78
-_080F1B10: .4byte 0x0000281d
- thumb_func_end sub_80F1AE0
-
- thumb_func_start sub_80F1B14
-sub_80F1B14: @ 80F1B14
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _080F1B38 @ =0x0000281d
- adds r0, r5, 0
- bl FreeSpriteTilesByTag
- adds r0, r5, 0
- bl FreeSpritePaletteByTag
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1B38: .4byte 0x0000281d
- thumb_func_end sub_80F1B14
-
- thumb_func_start sub_80F1B3C
-sub_80F1B3C: @ 80F1B3C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_8075160
- movs r0, 0x1E
- strh r0, [r4, 0x2E]
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_8074480
- lsls r0, 24
- ldr r5, _080F1BB0 @ =gUnknown_2037F02
- lsrs r0, 24
- ldrh r1, [r5, 0x4]
- adds r0, r1
- strh r0, [r4, 0x32]
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl sub_8074480
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x6]
- adds r0, r5
- strh r0, [r4, 0x36]
- ldr r0, _080F1BB4 @ =0x0000ffe0
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_8075068
- ldr r2, _080F1BB8 @ =gSprites
- ldr r1, _080F1BBC @ =gUnknown_2023D44
- ldr r0, _080F1BC0 @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _080F1BC4 @ =sub_8012354
- str r1, [r0]
- ldr r0, _080F1BC8 @ =sub_80F1BCC
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1BB0: .4byte gUnknown_2037F02
-_080F1BB4: .4byte 0x0000ffe0
-_080F1BB8: .4byte gSprites
-_080F1BBC: .4byte gUnknown_2023D44
-_080F1BC0: .4byte gUnknown_2037F1A
-_080F1BC4: .4byte sub_8012354
-_080F1BC8: .4byte sub_80F1BCC
- thumb_func_end sub_80F1B3C
-
- thumb_func_start sub_80F1BCC
-sub_80F1BCC: @ 80F1BCC
- push {lr}
- adds r3, r0, 0
- ldr r2, _080F1BF4 @ =gSprites
- ldr r1, _080F1BF8 @ =gUnknown_2023D44
- ldr r0, _080F1BFC @ =gUnknown_2037F1A
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080F1BF0
- ldr r0, _080F1C00 @ =sub_80F1C04
- str r0, [r3, 0x1C]
-_080F1BF0:
- pop {r0}
- bx r0
- .align 2, 0
-_080F1BF4: .4byte gSprites
-_080F1BF8: .4byte gUnknown_2023D44
-_080F1BFC: .4byte gUnknown_2037F1A
-_080F1C00: .4byte sub_80F1C04
- thumb_func_end sub_80F1BCC
-
- thumb_func_start sub_80F1C04
-sub_80F1C04: @ 80F1C04
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080F1C26
- movs r0, 0
- strh r0, [r4, 0x2E]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080F1C2C @ =sub_80F1C30
- str r0, [r4, 0x1C]
-_080F1C26:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1C2C: .4byte sub_80F1C30
- thumb_func_end sub_80F1C04
-
- thumb_func_start sub_80F1C30
-sub_80F1C30: @ 80F1C30
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080F1C80 @ =gSprites
- ldr r3, _080F1C84 @ =gUnknown_2023D44
- ldr r2, _080F1C88 @ =gUnknown_2037F1A
- ldrb r0, [r2]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- cmp r0, 0
- bge _080F1C78
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- ble _080F1C78
- ldrb r0, [r2]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080F1C78:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1C80: .4byte gSprites
-_080F1C84: .4byte gUnknown_2023D44
-_080F1C88: .4byte gUnknown_2037F1A
- thumb_func_end sub_80F1C30
-
- thumb_func_start sub_80F1C8C
-sub_80F1C8C: @ 80F1C8C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080F1CA4 @ =gUnknown_2037F02
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080F1CA8
- cmp r0, 0x1
- beq _080F1CBC
- b _080F1CD0
- .align 2, 0
-_080F1CA4: .4byte gUnknown_2037F02
-_080F1CA8:
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r1, _080F1CB8 @ =gUnknown_2037F1A
- strb r0, [r1]
- movs r0, 0x1
- b _080F1CC8
- .align 2, 0
-_080F1CB8: .4byte gUnknown_2037F1A
-_080F1CBC:
- movs r0, 0x1
- bl GetBattlerAtPosition
- ldr r1, _080F1CDC @ =gUnknown_2037F1A
- strb r0, [r1]
- movs r0, 0
-_080F1CC8:
- bl GetBattlerAtPosition
- ldr r1, _080F1CE0 @ =gUnknown_2037F1B
- strb r0, [r1]
-_080F1CD0:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1CDC: .4byte gUnknown_2037F1A
-_080F1CE0: .4byte gUnknown_2037F1B
- thumb_func_end sub_80F1C8C
-
- thumb_func_start sub_80F1CE4
-sub_80F1CE4: @ 80F1CE4
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080F1CF8 @ =gUnknown_2023E82
- ldrb r0, [r2, 0x5]
- cmp r0, 0x2
- bls _080F1D00
- ldr r1, _080F1CFC @ =gUnknown_2037F02
- movs r0, 0
- b _080F1D04
- .align 2, 0
-_080F1CF8: .4byte gUnknown_2023E82
-_080F1CFC: .4byte gUnknown_2037F02
-_080F1D00:
- ldr r1, _080F1D10 @ =gUnknown_2037F02
- ldrb r0, [r2, 0x5]
-_080F1D04:
- strh r0, [r1, 0xE]
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080F1D10: .4byte gUnknown_2037F02
- thumb_func_end sub_80F1CE4
-
- thumb_func_start sub_80F1D14
-sub_80F1D14: @ 80F1D14
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080F1D2C @ =gUnknown_2024018
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrh r1, [r0]
- cmp r1, 0x53
- bne _080F1D34
- ldr r1, _080F1D30 @ =gUnknown_2037F02
- movs r0, 0x1
- b _080F1D6C
- .align 2, 0
-_080F1D2C: .4byte gUnknown_2024018
-_080F1D30: .4byte gUnknown_2037F02
-_080F1D34:
- cmp r1, 0xFA
- bne _080F1D44
- ldr r1, _080F1D40 @ =gUnknown_2037F02
- movs r0, 0x2
- b _080F1D6C
- .align 2, 0
-_080F1D40: .4byte gUnknown_2037F02
-_080F1D44:
- cmp r1, 0x80
- bne _080F1D54
- ldr r1, _080F1D50 @ =gUnknown_2037F02
- movs r0, 0x3
- b _080F1D6C
- .align 2, 0
-_080F1D50: .4byte gUnknown_2037F02
-_080F1D54:
- movs r0, 0xA4
- lsls r0, 1
- cmp r1, r0
- bne _080F1D68
- ldr r1, _080F1D64 @ =gUnknown_2037F02
- movs r0, 0x4
- b _080F1D6C
- .align 2, 0
-_080F1D64: .4byte gUnknown_2037F02
-_080F1D68:
- ldr r1, _080F1D78 @ =gUnknown_2037F02
- movs r0, 0
-_080F1D6C:
- strh r0, [r1]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080F1D78: .4byte gUnknown_2037F02
- thumb_func_end sub_80F1D14
-
- thumb_func_start sub_80F1D7C
-sub_80F1D7C: @ 80F1D7C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080F1DA0 @ =gUnknown_2037F1A
- ldr r1, _080F1DA4 @ =gUnknown_2024018
- ldr r2, [r1]
- ldr r1, [r2, 0x8]
- ldrh r1, [r1]
- strb r1, [r3]
- ldr r3, _080F1DA8 @ =gUnknown_2037F1B
- ldr r1, [r2, 0x8]
- ldrh r1, [r1]
- lsrs r1, 8
- strb r1, [r3]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080F1DA0: .4byte gUnknown_2037F1A
-_080F1DA4: .4byte gUnknown_2024018
-_080F1DA8: .4byte gUnknown_2037F1B
- thumb_func_end sub_80F1D7C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s
new file mode 100644
index 000000000..18289e193
--- /dev/null
+++ b/asm/battle_anim_effects_1.s
@@ -0,0 +1,9882 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80A22E8
+sub_80A22E8: @ 80A22E8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080A231C @ =gBattleAnimArgs
+ ldrh r0, [r5]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x30]
+ ldr r0, _080A2320 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A2324
+ ldrh r0, [r5, 0x8]
+ negs r0, r0
+ b _080A2326
+ .align 2, 0
+_080A231C: .4byte gBattleAnimArgs
+_080A2320: .4byte gBattleAnimAttacker
+_080A2324:
+ ldrh r0, [r5, 0x8]
+_080A2326:
+ strh r0, [r4, 0x34]
+ ldr r0, _080A2338 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0xA]
+ strh r0, [r4, 0x36]
+ ldr r0, _080A233C @ =sub_80A2340
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2338: .4byte gBattleAnimArgs
+_080A233C: .4byte sub_80A2340
+ thumb_func_end sub_80A22E8
+
+ thumb_func_start sub_80A2340
+sub_80A2340: @ 80A2340
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080A237C
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x2E]
+ ldrh r1, [r4, 0x32]
+ lsls r0, r1, 16
+ asrs r0, 24
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r1, r0
+ strh r1, [r4, 0x32]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x38]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ b _080A2382
+_080A237C:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A2382:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A2340
+
+ thumb_func_start sub_80A2388
+sub_80A2388: @ 80A2388
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080A23C8 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x2E]
+ ldr r5, _080A23CC @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ ldr r0, _080A23D0 @ =sub_8075590
+ str r0, [r4, 0x1C]
+ ldr r1, _080A23D4 @ =move_anim_8074EE0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A23C8: .4byte gBattleAnimArgs
+_080A23CC: .4byte gBattleAnimAttacker
+_080A23D0: .4byte sub_8075590
+_080A23D4: .4byte move_anim_8074EE0
+ thumb_func_end sub_80A2388
+
+ thumb_func_start sub_80A23D8
+sub_80A23D8: @ 80A23D8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r5, _080A2420 @ =gBattleAnimArgs
+ ldrb r1, [r5, 0x6]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x2E]
+ ldr r5, _080A2424 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ ldr r0, _080A2428 @ =sub_8075590
+ str r0, [r4, 0x1C]
+ ldr r1, _080A242C @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2420: .4byte gBattleAnimArgs
+_080A2424: .4byte gBattleAnimTarget
+_080A2428: .4byte sub_8075590
+_080A242C: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A23D8
+
+ thumb_func_start sub_80A2430
+sub_80A2430: @ 80A2430
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r6, _080A2480 @ =gBattleAnimArgs
+ ldrh r0, [r6, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldr r5, _080A2484 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldrh r0, [r6, 0x6]
+ strh r0, [r4, 0x38]
+ ldr r1, _080A2488 @ =sub_80A248C
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2480: .4byte gBattleAnimArgs
+_080A2484: .4byte gBattleAnimTarget
+_080A2488: .4byte sub_80A248C
+ thumb_func_end sub_80A2430
+
+ thumb_func_start sub_80A248C
+sub_80A248C: @ 80A248C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A24A2
+ adds r0, r4, 0
+ bl DestroySprite
+ b _080A24F6
+_080A24A2:
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x7F
+ ble _080A24BC
+ ldr r0, _080A24B8 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_807685C
+ adds r0, 0x1
+ b _080A24C6
+ .align 2, 0
+_080A24B8: .4byte gBattleAnimTarget
+_080A24BC:
+ ldr r0, _080A24FC @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_807685C
+ adds r0, 0x6
+_080A24C6:
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0x5
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0xE
+ bl Cos
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0xF
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+_080A24F6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A24FC: .4byte gBattleAnimTarget
+ thumb_func_end sub_80A248C
+
+ thumb_func_start sub_80A2500
+sub_80A2500: @ 80A2500
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ ldr r1, _080A2570 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrh r0, [r5, 0x8]
+ subs r0, 0x1
+ movs r2, 0
+ strh r0, [r5, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080A255A
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ movs r0, 0x6
+ strh r0, [r5, 0x8]
+ ldr r1, _080A2574 @ =gBattleAnimArgs
+ movs r0, 0xF
+ strh r0, [r1]
+ strh r2, [r1, 0x2]
+ movs r0, 0x50
+ strh r0, [r1, 0x4]
+ strh r2, [r1, 0x6]
+ ldr r4, _080A2578 @ =gUnknown_83E2A88
+ ldr r0, _080A257C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_807685C
+ adds r3, r0, 0
+ adds r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0
+ bl CreateSpriteAndAnimate
+_080A255A:
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ cmp r0, 0xF
+ bne _080A2568
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080A2568:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2570: .4byte gTasks
+_080A2574: .4byte gBattleAnimArgs
+_080A2578: .4byte gUnknown_83E2A88
+_080A257C: .4byte gBattleAnimTarget
+ thumb_func_end sub_80A2500
+
+ thumb_func_start sub_80A2580
+sub_80A2580: @ 80A2580
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075114
+ ldr r6, _080A25C4 @ =gBattleAnimArgs
+ ldrh r0, [r6, 0x6]
+ strh r0, [r4, 0x2E]
+ ldr r5, _080A25C8 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ ldrh r0, [r6, 0x4]
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_8075068
+ ldr r0, _080A25CC @ =sub_80A25D0
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A25C4: .4byte gBattleAnimArgs
+_080A25C8: .4byte gBattleAnimAttacker
+_080A25CC: .4byte sub_80A25D0
+ thumb_func_end sub_80A2580
+
+ thumb_func_start sub_80A25D0
+sub_80A25D0: @ 80A25D0
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A25E4
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A25E4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A25D0
+
+ thumb_func_start sub_80A25EC
+sub_80A25EC: @ 80A25EC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl Random
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x7
+ ands r1, r0
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r4, _080A2634 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A2638
+ ldrh r0, [r5, 0x20]
+ subs r0, 0x14
+ b _080A263C
+ .align 2, 0
+_080A2634: .4byte gBattleAnimAttacker
+_080A2638:
+ ldrh r0, [r5, 0x20]
+ adds r0, 0x14
+_080A263C:
+ strh r0, [r5, 0x20]
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x1F
+ ands r0, r1
+ adds r0, 0x40
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ ldr r4, _080A269C @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl sub_8075804
+ bl Random
+ movs r1, 0xFF
+ ands r1, r0
+ strh r1, [r5, 0x38]
+ adds r0, r5, 0
+ adds r0, 0x43
+ ldrb r0, [r0]
+ strh r0, [r5, 0x3A]
+ ldr r1, _080A26A0 @ =sub_80A26A4
+ str r1, [r5, 0x1C]
+ adds r0, r5, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A269C: .4byte gBattleAnimTarget
+_080A26A0: .4byte sub_80A26A4
+ thumb_func_end sub_80A25EC
+
+ thumb_func_start sub_80A26A4
+sub_80A26A4: @ 80A26A4
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_807578C
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A26BA
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ b _080A26EA
+_080A26BA:
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0xC
+ bl Cos
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x7E
+ bgt _080A26D6
+ ldrh r0, [r4, 0x3A]
+ b _080A26DA
+_080A26D6:
+ ldrh r0, [r4, 0x3A]
+ adds r0, 0x1
+_080A26DA:
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x18
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+_080A26EA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A26A4
+
+ thumb_func_start sub_80A26F0
+sub_80A26F0: @ 80A26F0
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080A2750 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A2710
+ ldr r1, _080A2754 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080A2710:
+ ldr r4, _080A2754 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x8]
+ strh r0, [r6, 0x2E]
+ ldr r5, _080A2758 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x4]
+ adds r0, r1
+ strh r0, [r6, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x6]
+ adds r0, r1
+ strh r0, [r6, 0x36]
+ ldrh r0, [r4, 0xA]
+ strh r0, [r6, 0x38]
+ adds r0, r6, 0
+ bl sub_8075068
+ ldr r0, _080A275C @ =sub_80A2760
+ str r0, [r6, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2750: .4byte gBattleAnimAttacker
+_080A2754: .4byte gBattleAnimArgs
+_080A2758: .4byte gBattleAnimTarget
+_080A275C: .4byte sub_80A2760
+ thumb_func_end sub_80A26F0
+
+ thumb_func_start sub_80A2760
+sub_80A2760: @ 80A2760
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A278A
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0xA
+ strh r0, [r4, 0x2E]
+ ldr r0, _080A2790 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ ldr r1, _080A2794 @ =sub_80A2798
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+_080A278A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2790: .4byte sub_8074C44
+_080A2794: .4byte sub_80A2798
+ thumb_func_end sub_80A2760
+
+ thumb_func_start sub_80A2798
+sub_80A2798: @ 80A2798
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ movs r0, 0x3C
+ strh r0, [r4, 0x2E]
+ ldr r0, _080A27C8 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ ldr r1, _080A27CC @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A27C8: .4byte sub_8074C44
+_080A27CC: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A2798
+
+ thumb_func_start sub_80A27D0
+sub_80A27D0: @ 80A27D0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075114
+ ldr r5, _080A2814 @ =gBattleAnimArgs
+ ldrb r1, [r5, 0x8]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _080A27FA
+ ldrb r0, [r4, 0x1]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x4
+ orrs r1, r0
+ strb r1, [r4, 0x1]
+_080A27FA:
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x30]
+ ldr r1, _080A2818 @ =sub_80A281C
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2814: .4byte gBattleAnimArgs
+_080A2818: .4byte sub_80A281C
+ thumb_func_end sub_80A27D0
+
+ thumb_func_start sub_80A281C
+sub_80A281C: @ 80A281C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x20
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x3
+ negs r1, r1
+ bl Cos
+ ldrh r1, [r4, 0x32]
+ adds r1, 0x18
+ strh r1, [r4, 0x32]
+ lsls r1, 16
+ asrs r1, 24
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x7F
+ bhi _080A2870
+ ldr r0, _080A286C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ movs r1, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ b _080A2894
+ .align 2, 0
+_080A286C: .4byte gBattleAnimTarget
+_080A2870:
+ ldr r0, _080A28C0 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x3
+ bls _080A2884
+ movs r2, 0x3
+_080A2884:
+ movs r0, 0x3
+ ands r2, r0
+ lsls r2, 2
+ ldrb r1, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ orrs r0, r2
+_080A2894:
+ strb r0, [r4, 0x5]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080A28B8
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A28B8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A28C0: .4byte gBattleAnimTarget
+ thumb_func_end sub_80A281C
+
+ thumb_func_start sub_80A28C4
+sub_80A28C4: @ 80A28C4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A28DE
+ bl sub_8075290
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A28E6
+_080A28DE:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _080A2918
+_080A28E6:
+ ldr r0, _080A2904 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A2908
+ movs r0, 0x2
+ movs r1, 0x4
+ movs r2, 0x3
+ bl SetAnimBgAttribute
+ b _080A2912
+ .align 2, 0
+_080A2904: .4byte gBattleAnimTarget
+_080A2908:
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080A2912:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080A2918:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A28C4
+
+ thumb_func_start sub_80A2920
+sub_80A2920: @ 80A2920
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_8075160
+ ldr r5, _080A2968 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ ldr r0, _080A296C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r5, [r5, 0x4]
+ adds r0, r5
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ movs r0, 0x40
+ strh r0, [r4, 0x38]
+ ldr r1, _080A2970 @ =sub_80A2974
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2968: .4byte gBattleAnimArgs
+_080A296C: .4byte gBattleAnimAttacker
+_080A2970: .4byte sub_80A2974
+ thumb_func_end sub_80A2920
+
+ thumb_func_start sub_80A2974
+sub_80A2974: @ 80A2974
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A29E0
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0x20
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0x5
+ negs r1, r1
+ bl Cos
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x38]
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x7F
+ bhi _080A29C0
+ ldr r0, _080A29BC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_807685C
+ subs r0, 0x1
+ b _080A29CA
+ .align 2, 0
+_080A29BC: .4byte gBattleAnimAttacker
+_080A29C0:
+ ldr r0, _080A29DC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_807685C
+ adds r0, 0x1
+_080A29CA:
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x5
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ b _080A29E6
+ .align 2, 0
+_080A29DC: .4byte gBattleAnimAttacker
+_080A29E0:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A29E6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A2974
+
+ thumb_func_start sub_80A29EC
+sub_80A29EC: @ 80A29EC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r5, _080A2A34 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ ldr r0, _080A2A38 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r5, [r5, 0x4]
+ adds r0, r5
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ movs r0, 0x40
+ strh r0, [r4, 0x38]
+ ldr r1, _080A2A3C @ =sub_80A2A40
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2A34: .4byte gBattleAnimArgs
+_080A2A38: .4byte gBattleAnimAttacker
+_080A2A3C: .4byte sub_80A2A40
+ thumb_func_end sub_80A29EC
+
+ thumb_func_start sub_80A2A40
+sub_80A2A40: @ 80A2A40
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A2A98
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0x8
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x38]
+ adds r0, r1, 0
+ subs r0, 0x3B
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x4
+ bls _080A2A78
+ adds r0, r1, 0
+ subs r0, 0xBB
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x4
+ bhi _080A2A8C
+_080A2A78:
+ ldrb r2, [r4, 0x3]
+ lsls r1, r2, 26
+ lsrs r1, 27
+ movs r0, 0x8
+ eors r1, r0
+ lsls r1, 1
+ subs r0, 0x47
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x3]
+_080A2A8C:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x5
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ b _080A2A9E
+_080A2A98:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A2A9E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A2A40
+
+ thumb_func_start sub_80A2AA4
+sub_80A2AA4: @ 80A2AA4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080A2AE0 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ ldr r1, _080A2AE4 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x32]
+ ldr r0, _080A2AE8 @ =sub_80A2AEC
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2AE0: .4byte gBattleAnimAttacker
+_080A2AE4: .4byte gBattleAnimArgs
+_080A2AE8: .4byte sub_80A2AEC
+ thumb_func_end sub_80A2AA4
+
+ thumb_func_start sub_80A2AEC
+sub_80A2AEC: @ 80A2AEC
+ push {lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0x32]
+ movs r2, 0x32
+ ldrsh r3, [r1, r2]
+ cmp r3, 0
+ bne _080A2B20
+ ldrh r0, [r1, 0x30]
+ movs r2, 0x1
+ ands r2, r0
+ cmp r2, 0
+ beq _080A2B0E
+ movs r0, 0x80
+ strh r0, [r1, 0x2E]
+ strh r3, [r1, 0x30]
+ strh r3, [r1, 0x32]
+ b _080A2B14
+_080A2B0E:
+ strh r2, [r1, 0x2E]
+ strh r2, [r1, 0x30]
+ strh r2, [r1, 0x32]
+_080A2B14:
+ ldr r0, _080A2B1C @ =sub_80A2B38
+ str r0, [r1, 0x1C]
+ b _080A2B34
+ .align 2, 0
+_080A2B1C: .4byte sub_80A2B38
+_080A2B20:
+ subs r0, 0x1
+ strh r0, [r1, 0x32]
+ ldrh r0, [r1, 0x2E]
+ ldrh r2, [r1, 0x20]
+ adds r0, r2
+ strh r0, [r1, 0x20]
+ ldrh r0, [r1, 0x30]
+ ldrh r2, [r1, 0x22]
+ adds r0, r2
+ strh r0, [r1, 0x22]
+_080A2B34:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A2AEC
+
+ thumb_func_start sub_80A2B38
+sub_80A2B38: @ 80A2B38
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080A2B58 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A2B5C
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x19
+ bl Sin
+ negs r0, r0
+ b _080A2B66
+ .align 2, 0
+_080A2B58: .4byte gBattleAnimAttacker
+_080A2B5C:
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x19
+ bl Sin
+_080A2B66:
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080A2B86
+ ldrh r0, [r4, 0x26]
+ adds r0, 0x1
+ strh r0, [r4, 0x26]
+_080A2B86:
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x50
+ ble _080A2B94
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A2B94:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A2B38
+
+ thumb_func_start sub_80A2B9C
+sub_80A2B9C: @ 80A2B9C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080A2BF0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A2BBC
+ ldr r1, _080A2BF4 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080A2BBC:
+ ldr r6, _080A2BF4 @ =gBattleAnimArgs
+ ldrh r0, [r6, 0x8]
+ strh r0, [r5, 0x2E]
+ movs r1, 0xC
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080A2BFC
+ ldr r4, _080A2BF8 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x4]
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x6]
+ adds r0, r6
+ b _080A2C1C
+ .align 2, 0
+_080A2BF0: .4byte gBattleAnimAttacker
+_080A2BF4: .4byte gBattleAnimArgs
+_080A2BF8: .4byte gBattleAnimTarget
+_080A2BFC:
+ ldr r0, _080A2C48 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r2, r5, 0
+ adds r2, 0x32
+ adds r3, r5, 0
+ adds r3, 0x36
+ movs r1, 0x1
+ bl sub_8076D9C
+ ldrh r0, [r6, 0x4]
+ ldrh r1, [r5, 0x32]
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r6, 0x6]
+ ldrh r1, [r5, 0x36]
+ adds r0, r1
+_080A2C1C:
+ strh r0, [r5, 0x36]
+ ldr r0, _080A2C4C @ =gBattleAnimArgs
+ ldrh r0, [r0, 0xA]
+ strh r0, [r5, 0x38]
+ adds r0, r5, 0
+ bl sub_8075068
+ ldr r0, _080A2C50 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ adds r4, r0, 0
+ ldr r0, _080A2C48 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ bne _080A2C54
+ movs r0, 0x1
+ b _080A2C56
+ .align 2, 0
+_080A2C48: .4byte gBattleAnimTarget
+_080A2C4C: .4byte gBattleAnimArgs
+_080A2C50: .4byte gBattleAnimAttacker
+_080A2C54:
+ movs r0, 0
+_080A2C56:
+ strh r0, [r5, 0x2E]
+ ldr r0, _080A2C64 @ =sub_80A2C68
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2C64: .4byte sub_80A2C68
+ thumb_func_end sub_80A2B9C
+
+ thumb_func_start sub_80A2C68
+sub_80A2C68: @ 80A2C68
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ movs r7, 0
+ ldrh r5, [r6, 0x2E]
+ ldrh r4, [r6, 0x3C]
+ movs r0, 0x1
+ strh r0, [r6, 0x2E]
+ adds r0, r6, 0
+ bl AnimateBallThrow
+ ldrh r0, [r6, 0x3C]
+ strh r5, [r6, 0x2E]
+ lsls r4, 16
+ asrs r4, 16
+ cmp r4, 0xC8
+ ble _080A2C9A
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x37
+ bgt _080A2C9A
+ ldrh r0, [r6, 0x6]
+ cmp r0, 0
+ bne _080A2CA0
+ adds r0, 0x1
+ strh r0, [r6, 0x6]
+_080A2C9A:
+ ldrh r0, [r6, 0x6]
+ cmp r0, 0
+ beq _080A2CD2
+_080A2CA0:
+ movs r1, 0x2E
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ beq _080A2CD2
+ adds r3, r6, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ ldrh r0, [r6, 0x6]
+ adds r0, 0x1
+ strh r0, [r6, 0x6]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1E
+ bne _080A2CD2
+ movs r7, 0x1
+_080A2CD2:
+ movs r2, 0x20
+ ldrsh r0, [r6, r2]
+ movs r2, 0x24
+ ldrsh r1, [r6, r2]
+ adds r0, r1
+ adds r0, 0x10
+ movs r1, 0x88
+ lsls r1, 1
+ cmp r0, r1
+ bhi _080A2CFC
+ movs r0, 0x22
+ ldrsh r1, [r6, r0]
+ movs r2, 0x26
+ ldrsh r0, [r6, r2]
+ adds r1, r0
+ cmp r1, 0xA0
+ bgt _080A2CFC
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _080A2CFE
+_080A2CFC:
+ movs r7, 0x1
+_080A2CFE:
+ cmp r7, 0
+ beq _080A2D08
+ adds r0, r6, 0
+ bl DestroyAnimSprite
+_080A2D08:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A2C68
+
+ thumb_func_start sub_80A2D10
+sub_80A2D10: @ 80A2D10
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A2D3C
+ bl sub_8075290
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A2D3C
+ ldr r0, _080A2D64 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r2, r4, 0
+ adds r2, 0x20
+ adds r3, r4, 0
+ adds r3, 0x22
+ movs r1, 0x1
+ bl sub_8076D9C
+_080A2D3C:
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x20
+ strh r0, [r4, 0x22]
+ ldr r1, _080A2D68 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x34]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x36]
+ ldr r0, _080A2D6C @ =sub_80A2D70
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2D64: .4byte gBattleAnimTarget
+_080A2D68: .4byte gBattleAnimArgs
+_080A2D6C: .4byte sub_80A2D70
+ thumb_func_end sub_80A2D10
+
+ thumb_func_start sub_80A2D70
+sub_80A2D70: @ 80A2D70
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x30]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xFF
+ bne _080A2D86
+ ldrh r0, [r4, 0x22]
+ subs r0, 0x2
+ strh r0, [r4, 0x22]
+ b _080A2D94
+_080A2D86:
+ cmp r0, 0
+ ble _080A2D94
+ ldrh r0, [r4, 0x22]
+ subs r0, 0x2
+ strh r0, [r4, 0x22]
+ subs r0, r1, 0x2
+ strh r0, [r4, 0x30]
+_080A2D94:
+ ldrh r3, [r4, 0x32]
+ ldrh r5, [r4, 0x38]
+ adds r2, r3, r5
+ strh r2, [r4, 0x38]
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ movs r5, 0x36
+ ldrsh r0, [r4, r5]
+ cmp r1, r0
+ bge _080A2DAC
+ adds r0, r2, r3
+ strh r0, [r4, 0x38]
+_080A2DAC:
+ ldrh r1, [r4, 0x38]
+ movs r0, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r5, 0x38
+ ldrsh r0, [r4, r5]
+ movs r1, 0x5
+ bl Sin
+ strh r0, [r4, 0x26]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x7F
+ bgt _080A2DEC
+ ldr r0, _080A2DE8 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x1
+ b _080A2DFA
+ .align 2, 0
+_080A2DE8: .4byte gBattleAnimTarget
+_080A2DEC:
+ ldr r0, _080A2E24 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+_080A2DFA:
+ movs r1, 0x3
+ ands r0, r1
+ lsls r0, 2
+ ldrb r2, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0x5]
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080A2E1E
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A2E1E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2E24: .4byte gBattleAnimTarget
+ thumb_func_end sub_80A2D70
+
+ thumb_func_start sub_80A2E28
+sub_80A2E28: @ 80A2E28
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0
+ bl sub_8075114
+ adds r2, r5, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r4, _080A2E5C @ =gBattleAnimArgs
+ ldrb r1, [r4, 0x4]
+ adds r0, r5, 0
+ bl StartSpriteAffineAnim
+ ldrh r0, [r4, 0x4]
+ strh r0, [r5, 0x3A]
+ ldrh r0, [r4, 0x6]
+ strh r0, [r5, 0x3C]
+ ldr r0, _080A2E60 @ =sub_80A2E64
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2E5C: .4byte gBattleAnimArgs
+_080A2E60: .4byte sub_80A2E64
+ thumb_func_end sub_80A2E28
+
+ thumb_func_start sub_80A2E64
+sub_80A2E64: @ 80A2E64
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080A2E94 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _080A2E98 @ =0x0000ffff
+ cmp r1, r0
+ bne _080A2E8E
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r4, 0x2E]
+ ldr r0, _080A2E9C @ =sub_80A2EA0
+ str r0, [r4, 0x1C]
+_080A2E8E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2E94: .4byte gBattleAnimArgs
+_080A2E98: .4byte 0x0000ffff
+_080A2E9C: .4byte sub_80A2EA0
+ thumb_func_end sub_80A2E64
+
+ thumb_func_start sub_80A2EA0
+sub_80A2EA0: @ 80A2EA0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080A2EB8
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0xB
+ b _080A2EBC
+_080A2EB8:
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0xB
+_080A2EBC:
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _080A2ED8
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x32]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r4, 0x32]
+_080A2ED8:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080A2F06
+ ldrh r0, [r4, 0x3C]
+ subs r0, 0x1
+ strh r0, [r4, 0x3C]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080A2F00
+ ldrh r1, [r4, 0x3A]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAffineAnim
+ b _080A2F06
+_080A2F00:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A2F06:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A2EA0
+
+ thumb_func_start sub_80A2F0C
+sub_80A2F0C: @ 80A2F0C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _080A2F38 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r1
+ adds r0, 0x3E
+ ldrb r0, [r0]
+ lsls r0, 29
+ cmp r0, 0
+ bge _080A2F3C
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _080A2F62
+ .align 2, 0
+_080A2F38: .4byte gSprites
+_080A2F3C:
+ adds r0, r2, 0
+ movs r1, 0x1
+ bl sub_80758E0
+ ldr r1, _080A2F68 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldr r2, _080A2F6C @ =gBattleAnimArgs
+ ldrh r1, [r2]
+ strh r1, [r0, 0x8]
+ ldrh r1, [r2, 0x2]
+ strh r1, [r0, 0xA]
+ movs r1, 0x80
+ lsls r1, 1
+ strh r1, [r0, 0x1E]
+ ldr r1, _080A2F70 @ =sub_80A2F74
+ str r1, [r0]
+_080A2F62:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2F68: .4byte gTasks
+_080A2F6C: .4byte gBattleAnimArgs
+_080A2F70: .4byte sub_80A2F74
+ thumb_func_end sub_80A2F0C
+
+ thumb_func_start sub_80A2F74
+sub_80A2F74: @ 80A2F74
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ ldr r1, _080A2FF4 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r1, [r4, 0x8]
+ ldrh r0, [r4, 0x1C]
+ adds r1, r0
+ strh r1, [r4, 0x1C]
+ ldr r2, _080A2FF8 @ =gSprites
+ lsls r0, r6, 4
+ adds r0, r6
+ lsls r0, 2
+ adds r5, r0, r2
+ lsls r1, 16
+ asrs r1, 24
+ strh r1, [r5, 0x24]
+ ldr r0, _080A2FFC @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A2FBE
+ ldrh r0, [r5, 0x24]
+ negs r0, r0
+ strh r0, [r5, 0x24]
+_080A2FBE:
+ ldrh r0, [r4, 0x1E]
+ adds r0, 0x10
+ strh r0, [r4, 0x1E]
+ movs r0, 0x1E
+ ldrsh r2, [r4, r0]
+ adds r0, r6, 0
+ adds r1, r2, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ adds r0, r6, 0
+ bl sub_8076440
+ ldrh r0, [r4, 0xA]
+ subs r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bne _080A2FEC
+ strh r0, [r4, 0x8]
+ ldr r0, _080A3000 @ =sub_80A3004
+ str r0, [r4]
+_080A2FEC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A2FF4: .4byte gTasks
+_080A2FF8: .4byte gSprites
+_080A2FFC: .4byte gBattleAnimTarget
+_080A3000: .4byte sub_80A3004
+ thumb_func_end sub_80A2F74
+
+ thumb_func_start sub_80A3004
+sub_80A3004: @ 80A3004
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r0, _080A3050 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _080A3054 @ =0x0000ffff
+ cmp r1, r0
+ bne _080A3060
+ ldr r0, _080A3058 @ =gTasks
+ lsls r2, r3, 2
+ adds r1, r2, r3
+ lsls r1, 3
+ adds r6, r1, r0
+ movs r1, 0x8
+ ldrsh r5, [r6, r1]
+ adds r4, r0, 0
+ cmp r5, 0
+ bne _080A3074
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ bl sub_8075980
+ ldr r1, _080A305C @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ strh r5, [r0, 0x24]
+ strh r5, [r0, 0x26]
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ strh r0, [r6, 0x8]
+ b _080A308E
+ .align 2, 0
+_080A3050: .4byte gBattleAnimArgs
+_080A3054: .4byte 0x0000ffff
+_080A3058: .4byte gTasks
+_080A305C: .4byte gSprites
+_080A3060:
+ ldr r1, _080A3094 @ =gTasks
+ lsls r2, r3, 2
+ adds r0, r2, r3
+ lsls r0, 3
+ adds r0, r1
+ movs r4, 0x8
+ ldrsh r0, [r0, r4]
+ adds r4, r1, 0
+ cmp r0, 0
+ beq _080A308E
+_080A3074:
+ adds r1, r2, r3
+ lsls r1, 3
+ adds r1, r4
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080A308E
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+_080A308E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A3094: .4byte gTasks
+ thumb_func_end sub_80A3004
+
+ thumb_func_start sub_80A3098
+sub_80A3098: @ 80A3098
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _080A30AA
+ cmp r0, 0x1
+ beq _080A3104
+ b _080A3156
+_080A30AA:
+ ldr r6, _080A30FC @ =gBattleAnimTarget
+ ldrb r0, [r6]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A30C2
+ ldr r1, _080A3100 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ negs r0, r0
+ strh r0, [r1]
+_080A30C2:
+ ldrb r0, [r6]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080A3100 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ ldrb r0, [r6]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r4, [r4, 0x2]
+ adds r0, r4
+ strh r0, [r5, 0x22]
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _080A3156
+ .align 2, 0
+_080A30FC: .4byte gBattleAnimTarget
+_080A3100: .4byte gBattleAnimArgs
+_080A3104:
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080A3156
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+ movs r0, 0x19
+ strh r0, [r5, 0x2E]
+ ldr r4, _080A315C @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ ldr r0, _080A3160 @ =sub_8075764
+ str r0, [r5, 0x1C]
+ ldr r1, _080A3164 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+_080A3156:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A315C: .4byte gBattleAnimAttacker
+_080A3160: .4byte sub_8075764
+_080A3164: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A3098
+
+ thumb_func_start sub_80A3168
+sub_80A3168: @ 80A3168
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080A31D4
+ ldr r4, _080A31E0 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r4, _080A31E4 @ =gBattleAnimArgs
+ ldrh r0, [r4]
+ strh r0, [r5, 0x24]
+ ldrh r0, [r4, 0x2]
+ strh r0, [r5, 0x26]
+ ldrb r0, [r4, 0x4]
+ adds r0, 0x1E
+ adds r1, r5, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldrb r1, [r4, 0x6]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldrh r0, [r4, 0x8]
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ movs r2, 0x22
+ ldrsh r0, [r5, r2]
+ movs r2, 0x26
+ ldrsh r1, [r5, r2]
+ adds r0, r1
+ cmp r0, 0x78
+ ble _080A31D4
+ ldrh r0, [r5, 0x22]
+ adds r1, r0, 0
+ subs r1, 0x78
+ ldrh r2, [r5, 0x26]
+ adds r0, r2
+ adds r1, r0
+ strh r1, [r5, 0x22]
+_080A31D4:
+ ldr r0, _080A31E8 @ =sub_80A32DC
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A31E0: .4byte gBattleAnimAttacker
+_080A31E4: .4byte gBattleAnimArgs
+_080A31E8: .4byte sub_80A32DC
+ thumb_func_end sub_80A3168
+
+ thumb_func_start sub_80A31EC
+sub_80A31EC: @ 80A31EC
+ push {r4-r6,lr}
+ mov r6, r10
+ mov r5, r9
+ mov r4, r8
+ push {r4-r6}
+ sub sp, 0x4
+ mov r9, r0
+ ldr r4, _080A32C8 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ mov r8, r0
+ mov r0, r8
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r6, _080A32CC @ =gBattleAnimTarget
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8074480
+ adds r2, r0, 0
+ lsls r2, 24
+ subs r4, r5
+ lsls r4, 16
+ lsrs r2, 24
+ mov r1, r8
+ subs r2, r1
+ lsls r2, 16
+ lsrs r2, 16
+ lsrs r3, r4, 16
+ mov r10, r3
+ asrs r4, 16
+ ldr r6, _080A32D0 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ muls r0, r4
+ movs r1, 0x64
+ str r2, [sp]
+ bl __divsi3
+ adds r5, r0
+ mov r3, r9
+ strh r5, [r3, 0x20]
+ ldr r2, [sp]
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r3, 0
+ ldrsh r1, [r6, r3]
+ muls r0, r1
+ movs r1, 0x64
+ bl __divsi3
+ add r8, r0
+ mov r1, r8
+ mov r0, r9
+ strh r1, [r0, 0x22]
+ ldrh r0, [r6, 0x2]
+ mov r3, r9
+ strh r0, [r3, 0x24]
+ ldrh r0, [r6, 0x4]
+ strh r0, [r3, 0x26]
+ ldrb r0, [r6, 0x6]
+ adds r0, 0x1E
+ mov r1, r9
+ adds r1, 0x43
+ strb r0, [r1]
+ ldrb r1, [r6, 0x8]
+ mov r0, r9
+ bl StartSpriteAnim
+ ldrh r0, [r6, 0xA]
+ mov r1, r9
+ strh r0, [r1, 0x32]
+ ldr r0, _080A32D4 @ =sub_80A32DC
+ str r0, [r1, 0x1C]
+ ldr r1, _080A32D8 @ =gUnknown_203999C
+ mov r3, r9
+ ldrh r0, [r3, 0x20]
+ strh r0, [r1]
+ ldrh r0, [r3, 0x22]
+ strh r0, [r1, 0x2]
+ mov r0, r10
+ strh r0, [r1, 0x4]
+ ldr r2, [sp]
+ strh r2, [r1, 0x6]
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A32C8: .4byte gBattleAnimAttacker
+_080A32CC: .4byte gBattleAnimTarget
+_080A32D0: .4byte gBattleAnimArgs
+_080A32D4: .4byte sub_80A32DC
+_080A32D8: .4byte gUnknown_203999C
+ thumb_func_end sub_80A31EC
+
+ thumb_func_start sub_80A32DC
+sub_80A32DC: @ 80A32DC
+ push {lr}
+ adds r3, r0, 0
+ ldrh r1, [r3, 0x2E]
+ adds r1, 0x1
+ strh r1, [r3, 0x2E]
+ lsls r1, 16
+ asrs r1, 16
+ movs r2, 0x32
+ ldrsh r0, [r3, r2]
+ subs r0, 0xA
+ cmp r1, r0
+ ble _080A331C
+ movs r0, 0x2E
+ ldrsh r1, [r3, r0]
+ lsrs r0, r1, 31
+ adds r0, r1, r0
+ asrs r0, 1
+ lsls r0, 1
+ subs r1, r0
+ movs r2, 0x3E
+ adds r2, r3
+ mov r12, r2
+ movs r0, 0x1
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+_080A331C:
+ movs r2, 0x2E
+ ldrsh r1, [r3, r2]
+ movs r2, 0x32
+ ldrsh r0, [r3, r2]
+ cmp r1, r0
+ ble _080A332E
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080A332E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A32DC
+
+ thumb_func_start sub_80A3334
+sub_80A3334: @ 80A3334
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080A3374
+ ldr r5, _080A33B0 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080A33B4 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r2, [r4]
+ adds r0, r2
+ strh r0, [r6, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r6, 0x22]
+ ldrh r0, [r4, 0x4]
+ strh r0, [r6, 0x30]
+ ldrh r0, [r4, 0x6]
+ strh r0, [r6, 0x32]
+ ldrh r0, [r4, 0x8]
+ strh r0, [r6, 0x34]
+_080A3374:
+ ldrh r0, [r6, 0x2E]
+ adds r0, 0x1
+ strh r0, [r6, 0x2E]
+ ldrh r1, [r6, 0x30]
+ muls r0, r1
+ strh r0, [r6, 0x24]
+ movs r2, 0x2E
+ ldrsh r1, [r6, r2]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ movs r1, 0xFF
+ ands r0, r1
+ movs r2, 0x32
+ ldrsh r1, [r6, r2]
+ bl Sin
+ strh r0, [r6, 0x26]
+ movs r0, 0x2E
+ ldrsh r1, [r6, r0]
+ movs r2, 0x34
+ ldrsh r0, [r6, r2]
+ cmp r1, r0
+ ble _080A33AA
+ adds r0, r6, 0
+ bl DestroyAnimSprite
+_080A33AA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A33B0: .4byte gBattleAnimAttacker
+_080A33B4: .4byte gBattleAnimArgs
+ thumb_func_end sub_80A3334
+
+ thumb_func_start sub_80A33B8
+sub_80A33B8: @ 80A33B8
+ push {r4,r5,lr}
+ movs r2, 0x20
+ ldrsh r4, [r0, r2]
+ lsls r4, 8
+ movs r3, 0x22
+ ldrsh r2, [r0, r3]
+ orrs r4, r2
+ movs r5, 0x3A
+ ldrsh r2, [r0, r5]
+ lsls r2, 8
+ movs r5, 0x3C
+ ldrsh r3, [r0, r5]
+ orrs r2, r3
+ lsls r1, 8
+ strh r4, [r0, 0x38]
+ strh r2, [r0, 0x3A]
+ strh r1, [r0, 0x3C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A33B8
+
+ thumb_func_start sub_80A33E0
+sub_80A33E0: @ 80A33E0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ mov r8, r0
+ ldrh r0, [r0, 0x38]
+ lsrs r1, r0, 8
+ mov r10, r1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ mov r1, r8
+ ldrh r0, [r1, 0x3A]
+ lsrs r2, r0, 8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldrh r1, [r1, 0x3C]
+ lsls r0, r1, 16
+ asrs r0, 24
+ lsls r0, 16
+ lsrs r6, r0, 16
+ movs r3, 0xFF
+ ands r3, r1
+ cmp r2, 0
+ bne _080A341A
+ movs r2, 0x20
+ negs r2, r2
+ b _080A3422
+_080A341A:
+ cmp r2, 0xFF
+ bne _080A3422
+ movs r2, 0x88
+ lsls r2, 1
+_080A3422:
+ mov r0, r9
+ subs r4, r0
+ lsls r4, 16
+ lsrs r4, 16
+ mov r1, r10
+ subs r0, r2, r1
+ lsls r5, r3, 16
+ asrs r5, 16
+ muls r0, r5
+ lsls r1, r6, 16
+ asrs r7, r1, 16
+ adds r1, r7, 0
+ bl __divsi3
+ adds r6, r0, 0
+ lsls r4, 16
+ asrs r4, 16
+ adds r0, r4, 0
+ muls r0, r5
+ adds r1, r7, 0
+ bl __divsi3
+ add r6, r10
+ mov r1, r8
+ strh r6, [r1, 0x20]
+ add r0, r9
+ strh r0, [r1, 0x22]
+ adds r5, 0x1
+ lsls r5, 16
+ lsrs r3, r5, 16
+ asrs r5, 16
+ cmp r5, r7
+ beq _080A3474
+ lsls r1, r7, 8
+ lsls r0, r3, 16
+ asrs r0, 16
+ orrs r0, r1
+ mov r1, r8
+ strh r0, [r1, 0x3C]
+ movs r0, 0
+ b _080A3476
+_080A3474:
+ movs r0, 0x1
+_080A3476:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80A33E0
+
+ thumb_func_start sub_80A3484
+sub_80A3484: @ 80A3484
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xA
+ bne _080A3498
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+_080A3498:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x32
+ ble _080A34AC
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A34AC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A3484
+
+ thumb_func_start sub_80A34B4
+sub_80A34B4: @ 80A34B4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ lsls r0, 7
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ ldrh r1, [r4, 0x2E]
+ adds r1, r0
+ movs r5, 0
+ strh r1, [r4, 0x2E]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x7F
+ ble _080A34DE
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ strh r5, [r4, 0x2E]
+_080A34DE:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x80
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x30
+ ldrsh r2, [r4, r1]
+ lsls r2, 3
+ movs r1, 0x1E
+ subs r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl Sin
+ strh r0, [r4, 0x26]
+ adds r0, r4, 0
+ bl sub_80A33E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A350E
+ strh r5, [r4, 0x26]
+ strh r5, [r4, 0x2E]
+ ldr r0, _080A3514 @ =sub_80A3484
+ str r0, [r4, 0x1C]
+_080A350E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A3514: .4byte sub_80A3484
+ thumb_func_end sub_80A34B4
+
+ thumb_func_start sub_80A3518
+sub_80A3518: @ 80A3518
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r1, 0
+ bl sub_8075160
+ ldr r4, _080A3560 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080A3564 @ =gBattleAnimAttacker
+ ldrb r1, [r0]
+ movs r0, 0x2
+ eors r0, r1
+ ldrb r4, [r4]
+ cmp r0, r4
+ bne _080A3568
+ strh r6, [r5, 0x3A]
+ adds r0, r2, 0
+ adds r0, 0xA
+ strh r0, [r5, 0x3C]
+ adds r0, r5, 0
+ movs r1, 0x3C
+ bl sub_80A33B8
+ movs r0, 0x1
+ b _080A357A
+ .align 2, 0
+_080A3560: .4byte gBattleAnimTarget
+_080A3564: .4byte gBattleAnimAttacker
+_080A3568:
+ strh r6, [r5, 0x3A]
+ adds r0, r2, 0
+ adds r0, 0xA
+ strh r0, [r5, 0x3C]
+ adds r0, r5, 0
+ movs r1, 0x3C
+ bl sub_80A33B8
+ movs r0, 0x3
+_080A357A:
+ strh r0, [r5, 0x34]
+ movs r0, 0x3C
+ strh r0, [r5, 0x36]
+ ldr r0, _080A358C @ =sub_80A34B4
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A358C: .4byte sub_80A34B4
+ thumb_func_end sub_80A3518
+
+ thumb_func_start sub_80A3590
+sub_80A3590: @ 80A3590
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ lsls r0, 7
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ ldrh r1, [r4, 0x2E]
+ adds r1, r0
+ movs r5, 0
+ strh r1, [r4, 0x2E]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x7F
+ ble _080A35BA
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ strh r5, [r4, 0x2E]
+_080A35BA:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x80
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x30
+ ldrsh r2, [r4, r1]
+ lsls r2, 3
+ movs r1, 0x1E
+ subs r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl Sin
+ strh r0, [r4, 0x26]
+ adds r0, r4, 0
+ bl sub_80A33E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A35EC
+ strh r5, [r4, 0x26]
+ strh r5, [r4, 0x2E]
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A35EC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A3590
+
+ thumb_func_start sub_80A35F4
+sub_80A35F4: @ 80A35F4
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r4, _080A3630 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _080A3638
+ strh r0, [r5, 0x3A]
+ adds r0, r6, 0
+ adds r0, 0xA
+ strh r0, [r5, 0x3C]
+ adds r0, r5, 0
+ movs r1, 0x28
+ bl sub_80A33B8
+ movs r0, 0x3
+ strh r0, [r5, 0x34]
+ movs r0, 0x3C
+ strh r0, [r5, 0x36]
+ ldr r0, _080A3634 @ =sub_80A34B4
+ b _080A3662
+ .align 2, 0
+_080A3630: .4byte gBattleAnimTarget
+_080A3634: .4byte sub_80A34B4
+_080A3638:
+ movs r0, 0xFF
+ strh r0, [r5, 0x3A]
+ adds r0, r6, 0
+ adds r0, 0xA
+ strh r0, [r5, 0x3C]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A3650
+ movs r0, 0
+ strh r0, [r5, 0x3A]
+_080A3650:
+ adds r0, r5, 0
+ movs r1, 0x28
+ bl sub_80A33B8
+ movs r0, 0x3
+ strh r0, [r5, 0x34]
+ movs r0, 0x3C
+ strh r0, [r5, 0x36]
+ ldr r0, _080A366C @ =sub_80A3590
+_080A3662:
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A366C: .4byte sub_80A3590
+ thumb_func_end sub_80A35F4
+
+ thumb_func_start sub_80A3670
+sub_80A3670: @ 80A3670
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080A368A
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075114
+ ldr r0, _080A36B0 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x30]
+_080A368A:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ ldrh r1, [r4, 0x30]
+ muls r0, r1
+ strh r0, [r4, 0x26]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080A36AA
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A36AA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A36B0: .4byte gBattleAnimArgs
+ thumb_func_end sub_80A3670
+
+ thumb_func_start sub_80A36B4
+sub_80A36B4: @ 80A36B4
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r1, 0
+ bl sub_8075114
+ ldr r4, _080A36FC @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080A3700 @ =gBattleAnimTarget
+ ldrb r1, [r0]
+ movs r0, 0x2
+ eors r0, r1
+ ldrb r4, [r4]
+ cmp r0, r4
+ bne _080A3704
+ strh r6, [r5, 0x3A]
+ adds r0, r2, 0
+ adds r0, 0xA
+ strh r0, [r5, 0x3C]
+ adds r0, r5, 0
+ movs r1, 0x3C
+ bl sub_80A33B8
+ movs r0, 0x1
+ b _080A3716
+ .align 2, 0
+_080A36FC: .4byte gBattleAnimAttacker
+_080A3700: .4byte gBattleAnimTarget
+_080A3704:
+ strh r6, [r5, 0x3A]
+ adds r0, r2, 0
+ adds r0, 0xA
+ strh r0, [r5, 0x3C]
+ adds r0, r5, 0
+ movs r1, 0x3C
+ bl sub_80A33B8
+ movs r0, 0x3
+_080A3716:
+ strh r0, [r5, 0x34]
+ movs r0, 0x3C
+ strh r0, [r5, 0x36]
+ ldr r0, _080A3728 @ =sub_80A372C
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A3728: .4byte sub_80A372C
+ thumb_func_end sub_80A36B4
+
+ thumb_func_start sub_80A372C
+sub_80A372C: @ 80A372C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ lsls r0, 7
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ ldrh r1, [r4, 0x2E]
+ adds r1, r0
+ movs r5, 0
+ strh r1, [r4, 0x2E]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x7F
+ ble _080A3756
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ strh r5, [r4, 0x2E]
+_080A3756:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x80
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x30
+ ldrsh r2, [r4, r1]
+ lsls r2, 3
+ movs r1, 0x1E
+ subs r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl Sin
+ strh r0, [r4, 0x26]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080A378A
+ movs r0, 0x3F
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x76
+ bl PlaySE12WithPanning
+_080A378A:
+ adds r0, r4, 0
+ bl sub_80A33E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A37B2
+ strh r5, [r4, 0x26]
+ strh r5, [r4, 0x2E]
+ ldr r0, _080A37B8 @ =sub_80A3484
+ str r0, [r4, 0x1C]
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x76
+ bl PlaySE12WithPanning
+_080A37B2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A37B8: .4byte sub_80A3484
+ thumb_func_end sub_80A372C
+
+ thumb_func_start sub_80A37BC
+sub_80A37BC: @ 80A37BC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080A3850
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A37E4
+ ldr r0, _080A37E0 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0x2]
+ strh r1, [r4, 0x30]
+ movs r1, 0x78
+ strh r1, [r4, 0x20]
+ adds r5, r0, 0
+ b _080A3806
+ .align 2, 0
+_080A37E0: .4byte gBattleAnimArgs
+_080A37E4:
+ ldr r0, _080A3840 @ =gBattleAnimArgs
+ movs r1, 0x2
+ ldrsh r3, [r0, r1]
+ adds r1, r3, 0
+ subs r1, 0x20
+ adds r2, r1, 0
+ adds r5, r0, 0
+ cmp r1, 0
+ bge _080A37FA
+ adds r2, r3, 0
+ adds r2, 0xDF
+_080A37FA:
+ asrs r0, r2, 8
+ lsls r0, 8
+ subs r0, r1, r0
+ strh r0, [r4, 0x30]
+ movs r0, 0x46
+ strh r0, [r4, 0x20]
+_080A3806:
+ ldrh r0, [r5]
+ strh r0, [r4, 0x22]
+ strh r0, [r4, 0x32]
+ movs r0, 0x14
+ strh r0, [r4, 0x36]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x3C
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x14
+ bl Sin
+ strh r0, [r4, 0x26]
+ ldr r0, _080A3844 @ =sub_80A3858
+ str r0, [r4, 0x1C]
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x1
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xBE
+ bhi _080A3848
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x1F
+ b _080A384E
+ .align 2, 0
+_080A3840: .4byte gBattleAnimArgs
+_080A3844: .4byte sub_80A3858
+_080A3848:
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x1D
+_080A384E:
+ strb r0, [r1]
+_080A3850:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A37BC
+
+ thumb_func_start sub_80A3858
+sub_80A3858: @ 80A3858
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080A386A
+ cmp r0, 0x1
+ beq _080A389A
+ b _080A38BA
+_080A386A:
+ ldrh r5, [r4, 0x32]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4E
+ ble _080A3882
+ movs r0, 0x1
+ strh r0, [r4, 0x34]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ b _080A38BA
+_080A3882:
+ movs r1, 0x36
+ ldrsh r0, [r4, r1]
+ movs r1, 0xA
+ bl __divsi3
+ adds r0, r5, r0
+ strh r0, [r4, 0x32]
+ ldrh r1, [r4, 0x36]
+ adds r1, 0x3
+ strh r1, [r4, 0x36]
+ strh r0, [r4, 0x22]
+ b _080A38BA
+_080A389A:
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080A38BA
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080A38BA
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ strh r0, [r4, 0x32]
+ ldr r0, _080A38C0 @ =sub_80A38C4
+ str r0, [r4, 0x1C]
+_080A38BA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A38C0: .4byte sub_80A38C4
+ thumb_func_end sub_80A3858
+
+ thumb_func_start sub_80A38C4
+sub_80A38C4: @ 80A38C4
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r5, _080A3908 @ =gUnknown_83E2F78
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 1
+ adds r3, r0, r1
+ adds r0, r5, 0x1
+ adds r0, r3, r0
+ ldrh r2, [r4, 0x32]
+ movs r6, 0x32
+ ldrsh r1, [r4, r6]
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ cmp r1, r0
+ bne _080A3910
+ adds r0, r5, 0x2
+ adds r0, r3, r0
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ cmp r0, 0x7F
+ bne _080A38FC
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldr r0, _080A390C @ =sub_80A397C
+ str r0, [r4, 0x1C]
+_080A38FC:
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080A3976
+ .align 2, 0
+_080A3908: .4byte gUnknown_83E2F78
+_080A390C: .4byte sub_80A397C
+_080A3910:
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x32]
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ adds r1, r0, r5
+ movs r2, 0
+ ldrsb r2, [r1, r2]
+ adds r1, r5, 0x2
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ muls r0, r2
+ ldrh r1, [r4, 0x30]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A395E
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x1
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xBE
+ bhi _080A3956
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x1F
+ b _080A395C
+_080A3956:
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x1D
+_080A395C:
+ strb r0, [r1]
+_080A395E:
+ movs r6, 0x30
+ ldrsh r0, [r4, r6]
+ movs r1, 0x3C
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x14
+ bl Sin
+ strh r0, [r4, 0x26]
+_080A3976:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A38C4
+
+ thumb_func_start sub_80A397C
+sub_80A397C: @ 80A397C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x14
+ ble _080A398E
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A398E:
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsrs r0, r1, 31
+ adds r0, r1, r0
+ asrs r0, 1
+ lsls r0, 1
+ subs r1, r0
+ adds r3, r4, 0
+ adds r3, 0x3E
+ movs r0, 0x1
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r3]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A397C
+
+ thumb_func_start sub_80A39C0
+sub_80A39C0: @ 80A39C0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _080A3B14 @ =gTasks
+ adds r5, r0, r1
+ ldr r4, _080A3B18 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ bl sub_807685C
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x1
+ strh r0, [r5, 0x10]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x14]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x16]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8076B2C
+ strh r0, [r5, 0x1C]
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8076B2C
+ strh r0, [r5, 0x1E]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x1
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0x1
+ bne _080A3A28
+ movs r1, 0x1
+_080A3A28:
+ strh r1, [r5, 0x12]
+ movs r3, 0x12
+ ldrsh r0, [r5, r3]
+ lsls r0, 6
+ movs r1, 0x38
+ subs r1, r0
+ strh r1, [r5, 0x1A]
+ ldrh r0, [r5, 0x16]
+ subs r0, r1
+ ldrh r1, [r5, 0x14]
+ adds r0, r1
+ strh r0, [r5, 0x18]
+ ldr r0, _080A3B1C @ =gUnknown_83E2FF0
+ movs r2, 0x18
+ ldrsh r1, [r5, r2]
+ movs r3, 0x1A
+ ldrsh r2, [r5, r3]
+ ldrb r3, [r5, 0x10]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0xC]
+ cmp r0, 0x40
+ bne _080A3A60
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080A3A60:
+ ldr r4, _080A3B20 @ =gSprites
+ movs r0, 0xC
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r1, 0xA
+ strh r1, [r0, 0x2E]
+ movs r2, 0xC
+ ldrsh r1, [r5, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r1, [r5, 0x18]
+ strh r1, [r0, 0x30]
+ movs r3, 0xC
+ ldrsh r0, [r5, r3]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r4
+ movs r1, 0x1C
+ ldrsh r0, [r5, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ adds r0, 0xA
+ movs r3, 0x12
+ ldrsh r1, [r5, r3]
+ muls r1, r0
+ ldrh r0, [r5, 0x14]
+ subs r0, r1
+ strh r0, [r2, 0x32]
+ movs r0, 0xC
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r1, [r5, 0x1A]
+ strh r1, [r0, 0x34]
+ movs r1, 0xC
+ ldrsh r0, [r5, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ movs r2, 0x1E
+ ldrsh r0, [r5, r2]
+ lsrs r2, r0, 31
+ adds r0, r2
+ asrs r0, 1
+ adds r0, 0xA
+ movs r3, 0x12
+ ldrsh r2, [r5, r3]
+ muls r0, r2
+ ldrh r2, [r5, 0x16]
+ adds r0, r2
+ strh r0, [r1, 0x36]
+ movs r3, 0xC
+ ldrsh r1, [r5, r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ bl sub_80A3F04
+ movs r1, 0xC
+ ldrsh r2, [r5, r1]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ strh r0, [r1, 0x38]
+ movs r2, 0xC
+ ldrsh r1, [r5, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ bl sub_8075068
+ ldr r0, _080A3B24 @ =sub_80A3B28
+ str r0, [r5]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A3B14: .4byte gTasks
+_080A3B18: .4byte gBattleAnimTarget
+_080A3B1C: .4byte gUnknown_83E2FF0
+_080A3B20: .4byte gSprites
+_080A3B24: .4byte sub_80A3B28
+ thumb_func_end sub_80A39C0
+
+ thumb_func_start sub_80A3B28
+sub_80A3B28: @ 80A3B28
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080A3B6C @ =gTasks
+ adds r6, r0, r1
+ movs r0, 0xC
+ ldrsh r1, [r6, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080A3B70 @ =gSprites
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r5, [r6, r1]
+ cmp r5, 0x7
+ bne _080A3B50
+ b _080A3D80
+_080A3B50:
+ cmp r5, 0x7
+ bgt _080A3B9E
+ cmp r5, 0x3
+ bne _080A3B5A
+ b _080A3C72
+_080A3B5A:
+ cmp r5, 0x3
+ bgt _080A3B74
+ cmp r5, 0x1
+ beq _080A3C04
+ cmp r5, 0x1
+ bgt _080A3C54
+ cmp r5, 0
+ beq _080A3BE6
+ b _080A3EFC
+ .align 2, 0
+_080A3B6C: .4byte gTasks
+_080A3B70: .4byte gSprites
+_080A3B74:
+ cmp r5, 0x5
+ bne _080A3B7A
+ b _080A3CE8
+_080A3B7A:
+ cmp r5, 0x5
+ ble _080A3B80
+ b _080A3D62
+_080A3B80:
+ adds r0, r6, 0
+ adds r1, r2, 0
+ bl sub_80A3F24
+ adds r0, r4, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A3B96
+ b _080A3EFC
+_080A3B96:
+ movs r0, 0x5
+ strh r0, [r6, 0x26]
+ movs r0, 0xFF
+ b _080A3EFA
+_080A3B9E:
+ cmp r5, 0xB
+ bne _080A3BA4
+ b _080A3E64
+_080A3BA4:
+ cmp r5, 0xB
+ bgt _080A3BD2
+ cmp r5, 0x9
+ bne _080A3BAE
+ b _080A3DD2
+_080A3BAE:
+ cmp r5, 0x9
+ ble _080A3BB4
+ b _080A3E48
+_080A3BB4:
+ adds r0, r6, 0
+ adds r1, r2, 0
+ bl sub_80A3F24
+ adds r0, r4, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A3BCA
+ b _080A3EFC
+_080A3BCA:
+ movs r0, 0x9
+ strh r0, [r6, 0x26]
+ movs r0, 0xFF
+ b _080A3EFA
+_080A3BD2:
+ cmp r5, 0xD
+ bne _080A3BD8
+ b _080A3ED6
+_080A3BD8:
+ cmp r5, 0xD
+ bge _080A3BDE
+ b _080A3EB6
+_080A3BDE:
+ cmp r5, 0xFF
+ bne _080A3BE4
+ b _080A3EE6
+_080A3BE4:
+ b _080A3EFC
+_080A3BE6:
+ adds r0, r6, 0
+ adds r1, r2, 0
+ bl sub_80A3F24
+ adds r0, r4, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A3BFC
+ b _080A3EFC
+_080A3BFC:
+ movs r0, 0x1
+ strh r0, [r6, 0x26]
+ movs r0, 0xFF
+ b _080A3EFA
+_080A3C04:
+ ldrh r2, [r4, 0x24]
+ ldrh r3, [r4, 0x20]
+ adds r2, r3
+ movs r0, 0
+ strh r2, [r4, 0x20]
+ ldrh r1, [r4, 0x26]
+ ldrh r3, [r4, 0x22]
+ adds r1, r3
+ strh r1, [r4, 0x22]
+ strh r0, [r4, 0x24]
+ strh r0, [r4, 0x26]
+ movs r0, 0xA
+ strh r0, [r4, 0x2E]
+ strh r2, [r4, 0x30]
+ ldrh r0, [r6, 0x14]
+ strh r0, [r4, 0x32]
+ strh r1, [r4, 0x34]
+ ldrh r0, [r6, 0x16]
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl sub_80A3F04
+ strh r0, [r4, 0x38]
+ ldrh r0, [r6, 0x10]
+ adds r0, 0x2
+ strh r0, [r6, 0x10]
+ strh r5, [r6, 0xE]
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldrb r1, [r6, 0xE]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ adds r0, r4, 0
+ bl sub_8075068
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ b _080A3EFA
+_080A3C54:
+ adds r0, r6, 0
+ adds r1, r2, 0
+ bl sub_80A3F24
+ adds r0, r4, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A3C6A
+ b _080A3EFC
+_080A3C6A:
+ movs r0, 0x3
+ strh r0, [r6, 0x26]
+ movs r0, 0xFF
+ b _080A3EFA
+_080A3C72:
+ ldrh r1, [r4, 0x24]
+ ldrh r0, [r4, 0x20]
+ adds r1, r0
+ movs r0, 0
+ strh r1, [r4, 0x20]
+ ldrh r2, [r4, 0x26]
+ ldrh r3, [r4, 0x22]
+ adds r2, r3
+ strh r2, [r4, 0x22]
+ strh r0, [r4, 0x24]
+ strh r0, [r4, 0x26]
+ movs r0, 0xA
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ movs r1, 0x1C
+ ldrsh r0, [r6, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ adds r0, 0xA
+ movs r3, 0x12
+ ldrsh r1, [r6, r3]
+ muls r1, r0
+ ldrh r0, [r6, 0x14]
+ subs r0, r1
+ strh r0, [r4, 0x32]
+ strh r2, [r4, 0x34]
+ movs r1, 0x1E
+ ldrsh r0, [r6, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ adds r0, 0xA
+ movs r2, 0x12
+ ldrsh r1, [r6, r2]
+ muls r1, r0
+ ldrh r0, [r6, 0x16]
+ subs r0, r1
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl sub_80A3F04
+ strh r0, [r4, 0x38]
+ movs r0, 0x2
+ strh r0, [r6, 0xE]
+ ldrh r0, [r6, 0x10]
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldrb r1, [r6, 0xE]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ adds r0, r4, 0
+ bl sub_8075068
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ b _080A3EFA
+_080A3CE8:
+ ldrh r1, [r4, 0x24]
+ ldrh r3, [r4, 0x20]
+ adds r1, r3
+ movs r0, 0
+ strh r1, [r4, 0x20]
+ ldrh r2, [r4, 0x26]
+ ldrh r3, [r4, 0x22]
+ adds r2, r3
+ strh r2, [r4, 0x22]
+ strh r0, [r4, 0x24]
+ strh r0, [r4, 0x26]
+ movs r0, 0xA
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ movs r1, 0x1C
+ ldrsh r0, [r6, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ adds r0, 0xA
+ movs r3, 0x12
+ ldrsh r1, [r6, r3]
+ muls r0, r1
+ ldrh r1, [r6, 0x14]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ strh r2, [r4, 0x34]
+ movs r2, 0x1E
+ ldrsh r0, [r6, r2]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ adds r0, 0xA
+ movs r3, 0x12
+ ldrsh r1, [r6, r3]
+ muls r0, r1
+ ldrh r1, [r6, 0x16]
+ adds r0, r1
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl sub_80A3F04
+ strh r0, [r4, 0x38]
+ ldrh r1, [r6, 0x10]
+ subs r1, 0x2
+ strh r1, [r6, 0x10]
+ movs r0, 0x3
+ strh r0, [r6, 0xE]
+ adds r0, r4, 0
+ adds r0, 0x43
+ strb r1, [r0]
+ ldrb r1, [r6, 0xE]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ adds r0, r4, 0
+ bl sub_8075068
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ b _080A3EFA
+_080A3D62:
+ adds r0, r6, 0
+ adds r1, r2, 0
+ bl sub_80A3F24
+ adds r0, r4, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A3D78
+ b _080A3EFC
+_080A3D78:
+ movs r0, 0x7
+ strh r0, [r6, 0x26]
+ movs r0, 0xFF
+ b _080A3EFA
+_080A3D80:
+ ldrh r2, [r4, 0x24]
+ ldrh r3, [r4, 0x20]
+ adds r2, r3
+ movs r0, 0
+ strh r2, [r4, 0x20]
+ ldrh r1, [r4, 0x26]
+ ldrh r3, [r4, 0x22]
+ adds r1, r3
+ strh r1, [r4, 0x22]
+ strh r0, [r4, 0x24]
+ strh r0, [r4, 0x26]
+ movs r0, 0xA
+ strh r0, [r4, 0x2E]
+ strh r2, [r4, 0x30]
+ ldrh r0, [r6, 0x14]
+ strh r0, [r4, 0x32]
+ strh r1, [r4, 0x34]
+ ldrh r0, [r6, 0x16]
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl sub_80A3F04
+ strh r0, [r4, 0x38]
+ ldrh r1, [r6, 0x10]
+ adds r1, 0x2
+ strh r1, [r6, 0x10]
+ movs r0, 0x4
+ strh r0, [r6, 0xE]
+ adds r0, r4, 0
+ adds r0, 0x43
+ strb r1, [r0]
+ ldrb r1, [r6, 0xE]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ adds r0, r4, 0
+ bl sub_8075068
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ b _080A3EFA
+_080A3DD2:
+ ldrh r1, [r4, 0x24]
+ ldrh r0, [r4, 0x20]
+ adds r1, r0
+ movs r0, 0
+ strh r1, [r4, 0x20]
+ ldrh r2, [r4, 0x26]
+ ldrh r3, [r4, 0x22]
+ adds r2, r3
+ strh r2, [r4, 0x22]
+ strh r0, [r4, 0x24]
+ strh r0, [r4, 0x26]
+ movs r0, 0xA
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ movs r1, 0x1C
+ ldrsh r0, [r6, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ adds r0, 0xA
+ movs r3, 0x12
+ ldrsh r1, [r6, r3]
+ muls r1, r0
+ ldrh r0, [r6, 0x14]
+ subs r0, r1
+ strh r0, [r4, 0x32]
+ strh r2, [r4, 0x34]
+ movs r1, 0x1E
+ ldrsh r0, [r6, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ adds r0, 0xA
+ movs r2, 0x12
+ ldrsh r1, [r6, r2]
+ muls r0, r1
+ ldrh r3, [r6, 0x16]
+ adds r0, r3
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl sub_80A3F04
+ strh r0, [r4, 0x38]
+ movs r0, 0x5
+ strh r0, [r6, 0xE]
+ ldrh r0, [r6, 0x10]
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldrb r1, [r6, 0xE]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ adds r0, r4, 0
+ bl sub_8075068
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ b _080A3EFA
+_080A3E48:
+ adds r0, r6, 0
+ adds r1, r2, 0
+ bl sub_80A3F24
+ adds r0, r4, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A3EFC
+ movs r0, 0xB
+ strh r0, [r6, 0x26]
+ movs r0, 0xFF
+ b _080A3EFA
+_080A3E64:
+ ldrh r2, [r4, 0x24]
+ ldrh r0, [r4, 0x20]
+ adds r2, r0
+ movs r0, 0
+ strh r2, [r4, 0x20]
+ ldrh r1, [r4, 0x26]
+ ldrh r3, [r4, 0x22]
+ adds r1, r3
+ strh r1, [r4, 0x22]
+ strh r0, [r4, 0x24]
+ strh r0, [r4, 0x26]
+ movs r0, 0xA
+ strh r0, [r4, 0x2E]
+ strh r2, [r4, 0x30]
+ ldrh r0, [r6, 0x18]
+ strh r0, [r4, 0x32]
+ strh r1, [r4, 0x34]
+ ldrh r0, [r6, 0x1A]
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl sub_80A3F04
+ strh r0, [r4, 0x38]
+ ldrh r1, [r6, 0x10]
+ subs r1, 0x2
+ strh r1, [r6, 0x10]
+ movs r0, 0x6
+ strh r0, [r6, 0xE]
+ adds r0, r4, 0
+ adds r0, 0x43
+ strb r1, [r0]
+ ldrb r1, [r6, 0xE]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ adds r0, r4, 0
+ bl sub_8075068
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ b _080A3EFA
+_080A3EB6:
+ adds r0, r6, 0
+ adds r1, r2, 0
+ bl sub_80A3F24
+ adds r0, r4, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A3EFC
+ adds r0, r4, 0
+ bl DestroySprite
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ b _080A3EFA
+_080A3ED6:
+ movs r1, 0x20
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080A3EFC
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ b _080A3EFC
+_080A3EE6:
+ ldrh r0, [r6, 0xA]
+ adds r0, 0x1
+ strh r0, [r6, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ ble _080A3EFC
+ movs r0, 0
+ strh r0, [r6, 0xA]
+ ldrh r0, [r6, 0x26]
+_080A3EFA:
+ strh r0, [r6, 0x8]
+_080A3EFC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A3B28
+
+ thumb_func_start sub_80A3F04
+sub_80A3F04: @ 80A3F04
+ push {lr}
+ movs r2, 0x8
+ movs r3, 0x36
+ ldrsh r1, [r0, r3]
+ movs r3, 0x22
+ ldrsh r0, [r0, r3]
+ cmp r1, r0
+ bge _080A3F1A
+ negs r0, r2
+ lsls r0, 16
+ lsrs r2, r0, 16
+_080A3F1A:
+ lsls r0, r2, 16
+ asrs r0, 16
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80A3F04
+
+ thumb_func_start sub_80A3F24
+sub_80A3F24: @ 80A3F24
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r7, r1, 24
+ ldrh r0, [r6, 0x24]
+ adds r0, 0x1
+ strh r0, [r6, 0x24]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080A3FBA
+ movs r0, 0
+ strh r0, [r6, 0x24]
+ ldr r0, _080A3FC4 @ =gSprites
+ mov r8, r0
+ movs r2, 0xC
+ ldrsh r1, [r6, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ add r0, r8
+ ldrh r1, [r0, 0x24]
+ ldrh r2, [r0, 0x20]
+ adds r1, r2
+ ldrh r2, [r0, 0x26]
+ ldrh r0, [r0, 0x22]
+ adds r2, r0
+ ldr r0, _080A3FC8 @ =gUnknown_83E2FF0
+ lsls r1, 16
+ asrs r1, 16
+ lsls r2, 16
+ asrs r2, 16
+ ldrb r3, [r6, 0x10]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _080A3FBA
+ lsls r5, r0, 4
+ adds r5, r0
+ lsls r5, 2
+ mov r0, r8
+ adds r4, r5, r0
+ strh r7, [r4, 0x3A]
+ movs r0, 0xC
+ strh r0, [r4, 0x3C]
+ ldr r0, _080A3FCC @ =gTasks
+ lsls r1, r7, 2
+ adds r1, r7
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+ ldrh r2, [r6, 0x22]
+ movs r0, 0x1
+ ands r0, r2
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x22]
+ adds r0, 0x1
+ strh r0, [r1, 0x22]
+ ldrb r1, [r6, 0xE]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldrh r0, [r6, 0x10]
+ adds r4, 0x43
+ strb r0, [r4]
+ mov r0, r8
+ adds r0, 0x1C
+ adds r5, r0
+ ldr r0, _080A3FD0 @ =sub_80A3FD4
+ str r0, [r5]
+_080A3FBA:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A3FC4: .4byte gSprites
+_080A3FC8: .4byte gUnknown_83E2FF0
+_080A3FCC: .4byte gTasks
+_080A3FD0: .4byte sub_80A3FD4
+ thumb_func_end sub_80A3F24
+
+ thumb_func_start sub_80A3FD4
+sub_80A3FD4: @ 80A3FD4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080A4036
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _080A4036
+ ldr r3, _080A403C @ =gTasks
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl DestroySprite
+_080A4036:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A403C: .4byte gTasks
+ thumb_func_end sub_80A3FD4
+
+ thumb_func_start sub_80A4040
+sub_80A4040: @ 80A4040
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ ldr r0, _080A4054 @ =gBattleAnimArgs
+ movs r1, 0xC
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080A405C
+ ldr r0, _080A4058 @ =gBattleAnimAttacker
+ b _080A405E
+ .align 2, 0
+_080A4054: .4byte gBattleAnimArgs
+_080A4058: .4byte gBattleAnimAttacker
+_080A405C:
+ ldr r0, _080A407C @ =gBattleAnimTarget
+_080A405E:
+ ldrb r6, [r0]
+ adds r0, r6, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A4088
+ movs r0, 0
+ strh r0, [r4, 0x36]
+ ldr r1, _080A4080 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x32]
+ ldr r0, _080A4084 @ =0x0000fff0
+ b _080A4098
+ .align 2, 0
+_080A407C: .4byte gBattleAnimTarget
+_080A4080: .4byte gBattleAnimArgs
+_080A4084: .4byte 0x0000fff0
+_080A4088:
+ movs r0, 0x1
+ strh r0, [r4, 0x36]
+ ldr r1, _080A40BC @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x6]
+ negs r0, r0
+ strh r0, [r4, 0x32]
+ movs r0, 0x80
+ lsls r0, 1
+_080A4098:
+ strh r0, [r4, 0x20]
+ adds r7, r1, 0
+ adds r5, r7, 0
+ ldrh r0, [r5, 0x2]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r4, 0x34]
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080A40CE
+ cmp r0, 0x1
+ bgt _080A40C0
+ cmp r0, 0
+ beq _080A40CA
+ b _080A4138
+ .align 2, 0
+_080A40BC: .4byte gBattleAnimArgs
+_080A40C0:
+ cmp r0, 0x2
+ beq _080A40D4
+ cmp r0, 0x3
+ beq _080A4100
+ b _080A4138
+_080A40CA:
+ ldrh r0, [r5]
+ b _080A40E4
+_080A40CE:
+ ldrh r0, [r5]
+ strh r0, [r4, 0x22]
+ b _080A411A
+_080A40D4:
+ adds r0, r6, 0
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r5, [r5]
+ adds r0, r5
+_080A40E4:
+ strh r0, [r4, 0x22]
+ adds r0, r6, 0
+ bl sub_8076884
+ movs r1, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ b _080A4138
+_080A4100:
+ ldr r0, _080A4144 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r7, [r7]
+ adds r0, r7
+ strh r0, [r4, 0x22]
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+_080A411A:
+ adds r0, r6, 0
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+ movs r1, 0x3
+ ands r0, r1
+ lsls r0, 2
+ ldrb r2, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0x5]
+_080A4138:
+ ldr r0, _080A4148 @ =sub_80A414C
+ str r0, [r4, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4144: .4byte gBattleAnimTarget
+_080A4148: .4byte sub_80A414C
+ thumb_func_end sub_80A4040
+
+ thumb_func_start sub_80A414C
+sub_80A414C: @ 80A414C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x3C
+ ldrsh r3, [r4, r0]
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x1
+ strh r0, [r4, 0x3C]
+ movs r1, 0x30
+ ldrsh r2, [r4, r1]
+ ldr r1, _080A41A0 @ =gSineTable
+ movs r5, 0x2E
+ ldrsh r0, [r4, r5]
+ lsls r0, 1
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ muls r0, r2
+ asrs r0, 8
+ strh r0, [r4, 0x26]
+ movs r2, 0x32
+ ldrsh r0, [r4, r2]
+ muls r0, r3
+ strh r0, [r4, 0x24]
+ movs r5, 0x34
+ ldrsh r0, [r4, r5]
+ muls r0, r3
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ movs r1, 0x36
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080A41A4
+ movs r2, 0x24
+ ldrsh r0, [r4, r2]
+ movs r5, 0x20
+ ldrsh r1, [r4, r5]
+ adds r0, r1
+ cmp r0, 0xF7
+ ble _080A41BC
+ b _080A41B6
+ .align 2, 0
+_080A41A0: .4byte gSineTable
+_080A41A4:
+ movs r1, 0x24
+ ldrsh r0, [r4, r1]
+ movs r2, 0x20
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ movs r1, 0x10
+ negs r1, r1
+ cmp r0, r1
+ bgt _080A41BC
+_080A41B6:
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080A41BC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A414C
+
+ thumb_func_start sub_80A41C4
+sub_80A41C4: @ 80A41C4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _080A41E4 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _080A41E8
+ cmp r0, 0x1
+ beq _080A421C
+ b _080A4276
+ .align 2, 0
+_080A41E4: .4byte gTasks
+_080A41E8:
+ ldr r0, _080A4214 @ =0x0000274f
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 20
+ movs r2, 0x80
+ lsls r2, 1
+ adds r4, r2, 0
+ adds r0, r4
+ strh r0, [r5, 0x18]
+ ldr r0, _080A4218 @ =0x000027b0
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 20
+ adds r0, r4
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080A4276
+ .align 2, 0
+_080A4214: .4byte 0x0000274f
+_080A4218: .4byte 0x000027b0
+_080A421C:
+ ldrh r0, [r5, 0x1A]
+ adds r0, 0x1
+ movs r7, 0
+ strh r0, [r5, 0x1A]
+ lsls r0, 16
+ cmp r0, 0
+ blt _080A4276
+ strh r7, [r5, 0x1A]
+ ldrh r0, [r5, 0x18]
+ ldrb r2, [r5, 0x1C]
+ ldr r4, _080A4290 @ =gUnknown_83E30F0
+ movs r3, 0x1E
+ ldrsh r1, [r5, r3]
+ lsls r1, 1
+ adds r1, r4
+ ldrh r3, [r1]
+ movs r1, 0x10
+ bl BlendPalette
+ ldrh r0, [r5, 0x20]
+ ldrb r2, [r5, 0x1C]
+ movs r3, 0x1E
+ ldrsh r1, [r5, r3]
+ lsls r1, 1
+ adds r1, r4
+ ldrh r3, [r1]
+ movs r1, 0x10
+ bl BlendPalette
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x1
+ strh r0, [r5, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x11
+ bne _080A4276
+ strh r7, [r5, 0x1C]
+ ldrh r0, [r5, 0x1E]
+ adds r0, 0x1
+ strh r0, [r5, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7
+ bne _080A4276
+ strh r7, [r5, 0x1E]
+_080A4276:
+ ldr r0, _080A4294 @ =gBattleAnimArgs
+ movs r2, 0xE
+ ldrsh r1, [r0, r2]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080A428A
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080A428A:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4290: .4byte gUnknown_83E30F0
+_080A4294: .4byte gBattleAnimArgs
+ thumb_func_end sub_80A41C4
+
+ thumb_func_start sub_80A4298
+sub_80A4298: @ 80A4298
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ ldr r1, _080A42B0 @ =gBattleAnimArgs
+ movs r2, 0x8
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080A42B4
+ adds r0, r6, 0
+ bl DestroyAnimSprite
+ b _080A438E
+ .align 2, 0
+_080A42B0: .4byte gBattleAnimArgs
+_080A42B4:
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _080A42C4
+ ldr r4, _080A42C0 @ =gBattleAnimAttacker
+ b _080A42C6
+ .align 2, 0
+_080A42C0: .4byte gBattleAnimAttacker
+_080A42C4:
+ ldr r4, _080A4300 @ =gBattleAnimTarget
+_080A42C6:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080A4304 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0x8]
+ strh r1, [r6, 0x2E]
+ movs r3, 0x2
+ ldrsh r1, [r0, r3]
+ adds r7, r0, 0
+ cmp r1, 0
+ bne _080A4308
+ ldrh r0, [r7, 0x4]
+ adds r0, r5
+ strh r0, [r6, 0x20]
+ ldrh r0, [r7, 0x6]
+ adds r0, r2
+ strh r0, [r6, 0x22]
+ strh r5, [r6, 0x38]
+ strh r2, [r6, 0x3A]
+ b _080A4318
+ .align 2, 0
+_080A4300: .4byte gBattleAnimTarget
+_080A4304: .4byte gBattleAnimArgs
+_080A4308:
+ strh r5, [r6, 0x20]
+ strh r2, [r6, 0x22]
+ ldrh r0, [r7, 0x4]
+ adds r0, r5
+ strh r0, [r6, 0x38]
+ ldrh r0, [r7, 0x6]
+ adds r0, r2
+ strh r0, [r6, 0x3A]
+_080A4318:
+ ldrh r4, [r6, 0x20]
+ lsls r0, r4, 4
+ strh r0, [r6, 0x30]
+ ldrh r5, [r6, 0x22]
+ lsls r0, r5, 4
+ strh r0, [r6, 0x32]
+ movs r1, 0x38
+ ldrsh r0, [r6, r1]
+ movs r2, 0x20
+ ldrsh r1, [r6, r2]
+ subs r0, r1
+ lsls r0, 4
+ movs r3, 0x8
+ ldrsh r1, [r7, r3]
+ bl __divsi3
+ strh r0, [r6, 0x34]
+ movs r1, 0x3A
+ ldrsh r0, [r6, r1]
+ movs r2, 0x22
+ ldrsh r1, [r6, r2]
+ subs r0, r1
+ lsls r0, 4
+ movs r3, 0x8
+ ldrsh r1, [r7, r3]
+ bl __divsi3
+ strh r0, [r6, 0x36]
+ ldrh r0, [r6, 0x38]
+ subs r0, r4
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r1, [r6, 0x3A]
+ subs r1, r5
+ lsls r1, 16
+ asrs r1, 16
+ bl sub_8075B30
+ lsls r0, 16
+ lsrs r4, r0, 16
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A437A
+ ldr r1, _080A4398 @ =0xffff8000
+ adds r0, r4, r1
+ lsls r0, 16
+ lsrs r4, r0, 16
+_080A437A:
+ movs r3, 0x80
+ lsls r3, 1
+ str r4, [sp]
+ adds r0, r6, 0
+ movs r1, 0
+ adds r2, r3, 0
+ bl sub_8075A1C
+ ldr r0, _080A439C @ =sub_80A43A0
+ str r0, [r6, 0x1C]
+_080A438E:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4398: .4byte 0xffff8000
+_080A439C: .4byte sub_80A43A0
+ thumb_func_end sub_80A4298
+
+ thumb_func_start sub_80A43A0
+sub_80A43A0: @ 80A43A0
+ push {r4,lr}
+ adds r2, r0, 0
+ ldrh r3, [r2, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ beq _080A43D0
+ ldrh r0, [r2, 0x34]
+ ldrh r4, [r2, 0x30]
+ adds r0, r4
+ strh r0, [r2, 0x30]
+ ldrh r1, [r2, 0x36]
+ ldrh r4, [r2, 0x32]
+ adds r1, r4
+ strh r1, [r2, 0x32]
+ lsls r0, 16
+ asrs r0, 20
+ strh r0, [r2, 0x20]
+ lsls r1, 16
+ asrs r1, 20
+ strh r1, [r2, 0x22]
+ subs r0, r3, 0x1
+ strh r0, [r2, 0x2E]
+ b _080A43D6
+_080A43D0:
+ adds r0, r2, 0
+ bl move_anim_8074EE0
+_080A43D6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A43A0
+
+ thumb_func_start sub_80A43DC
+sub_80A43DC: @ 80A43DC
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080A43F2
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080A43F2:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A43DC
+
+ thumb_func_start sub_80A43F8
+sub_80A43F8: @ 80A43F8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080A4418 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A4420
+ ldr r2, _080A441C @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r2, 0x2]
+ b _080A442C
+ .align 2, 0
+_080A4418: .4byte gBattleAnimAttacker
+_080A441C: .4byte gBattleAnimArgs
+_080A4420:
+ ldr r0, _080A4444 @ =gBattleAnimArgs
+ ldrh r1, [r0]
+ ldrh r2, [r4, 0x20]
+ adds r1, r2
+ strh r1, [r4, 0x20]
+ ldrh r0, [r0, 0x2]
+_080A442C:
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r0, _080A4448 @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+ ldr r1, _080A444C @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4444: .4byte gBattleAnimArgs
+_080A4448: .4byte sub_8074F6C
+_080A444C: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A43F8
+
+ thumb_func_start sub_80A4450
+sub_80A4450: @ 80A4450
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080A4488 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A446A
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+_080A446A:
+ ldr r0, _080A448C @ =sub_80A43DC
+ str r0, [r5, 0x1C]
+ ldr r4, _080A4490 @ =gBattleAnimArgs
+ movs r0, 0
+ ldrsh r1, [r4, r0]
+ adds r0, r5, 0
+ bl sub_8074FF8
+ ldrh r0, [r4, 0x2]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4488: .4byte gBattleAnimAttacker
+_080A448C: .4byte sub_80A43DC
+_080A4490: .4byte gBattleAnimArgs
+ thumb_func_end sub_80A4450
+
+ thumb_func_start sub_80A4494
+sub_80A4494: @ 80A4494
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _080A44D4 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x34]
+ ldrh r0, [r1, 0xA]
+ strh r0, [r4, 0x38]
+ ldrb r1, [r1, 0xC]
+ adds r0, r4, 0
+ bl StartSpriteAffineAnim
+ ldr r1, _080A44D8 @ =move_anim_8074EE0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A44DC @ =sub_8074E70
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A44D4: .4byte gBattleAnimArgs
+_080A44D8: .4byte move_anim_8074EE0
+_080A44DC: .4byte sub_8074E70
+ thumb_func_end sub_80A4494
+
+ thumb_func_start sub_80A44E0
+sub_80A44E0: @ 80A44E0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080A4530 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A4514
+ ldrh r0, [r5, 0x22]
+ adds r0, 0x8
+ strh r0, [r5, 0x22]
+_080A4514:
+ ldr r0, _080A4534 @ =sub_80A46CC
+ str r0, [r5, 0x1C]
+ ldr r0, _080A4538 @ =gBattleAnimArgs
+ movs r2, 0x4
+ ldrsh r1, [r0, r2]
+ adds r3, r0, 0
+ cmp r1, 0
+ bne _080A453C
+ ldrh r0, [r3]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ b _080A4550
+ .align 2, 0
+_080A4530: .4byte gBattleAnimTarget
+_080A4534: .4byte sub_80A46CC
+_080A4538: .4byte gBattleAnimArgs
+_080A453C:
+ ldrh r0, [r5, 0x20]
+ ldrh r1, [r3]
+ subs r0, r1
+ strh r0, [r5, 0x20]
+ adds r2, r5, 0
+ adds r2, 0x3F
+ ldrb r0, [r2]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2]
+_080A4550:
+ ldrh r0, [r3, 0x2]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ ldr r1, _080A4584 @ =0xfffffc00
+ adds r0, r1, 0
+ ldrh r2, [r5, 0x30]
+ adds r1, r0, r2
+ strh r1, [r5, 0x30]
+ movs r2, 0x80
+ lsls r2, 3
+ adds r0, r2, 0
+ ldrh r2, [r5, 0x32]
+ adds r0, r2
+ strh r0, [r5, 0x32]
+ ldrh r0, [r3, 0x4]
+ strh r0, [r5, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080A457E
+ negs r0, r1
+ strh r0, [r5, 0x30]
+_080A457E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4584: .4byte 0xfffffc00
+ thumb_func_end sub_80A44E0
+
+ thumb_func_start sub_80A4588
+sub_80A4588: @ 80A4588
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ ldr r0, _080A45A4 @ =gBattleAnimArgs
+ movs r1, 0x6
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x1
+ beq _080A45A8
+ cmp r0, 0x1
+ ble _080A4624
+ cmp r0, 0x2
+ beq _080A45C8
+ b _080A4624
+ .align 2, 0
+_080A45A4: .4byte gBattleAnimArgs
+_080A45A8:
+ ldr r5, _080A45C4 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r4, 0x2
+ eors r0, r4
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r0, [r5]
+ eors r4, r0
+ adds r0, r4, 0
+ b _080A4634
+ .align 2, 0
+_080A45C4: .4byte gBattleAnimTarget
+_080A45C8:
+ ldr r5, _080A4620 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldrb r0, [r5]
+ movs r2, 0x2
+ mov r8, r2
+ mov r1, r8
+ eors r0, r1
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A463E
+ ldrb r0, [r5]
+ mov r2, r8
+ eors r0, r2
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r7
+ lsrs r7, r0, 1
+ ldrb r0, [r5]
+ mov r1, r8
+ eors r0, r1
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ lsrs r4, r0, 1
+ b _080A463E
+ .align 2, 0
+_080A4620: .4byte gBattleAnimTarget
+_080A4624:
+ ldr r4, _080A4670 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r0, [r4]
+_080A4634:
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r4, r0, 24
+_080A463E:
+ strh r7, [r6, 0x20]
+ strh r4, [r6, 0x22]
+ ldr r0, _080A4670 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A4656
+ ldrh r0, [r6, 0x22]
+ adds r0, 0x8
+ strh r0, [r6, 0x22]
+_080A4656:
+ ldr r0, _080A4674 @ =sub_80A46CC
+ str r0, [r6, 0x1C]
+ ldr r0, _080A4678 @ =gBattleAnimArgs
+ movs r2, 0x4
+ ldrsh r1, [r0, r2]
+ adds r3, r0, 0
+ cmp r1, 0
+ bne _080A467C
+ ldrh r0, [r3]
+ ldrh r1, [r6, 0x20]
+ adds r0, r1
+ strh r0, [r6, 0x20]
+ b _080A4690
+ .align 2, 0
+_080A4670: .4byte gBattleAnimTarget
+_080A4674: .4byte sub_80A46CC
+_080A4678: .4byte gBattleAnimArgs
+_080A467C:
+ ldrh r0, [r6, 0x20]
+ ldrh r1, [r3]
+ subs r0, r1
+ strh r0, [r6, 0x20]
+ adds r2, r6, 0
+ adds r2, 0x3F
+ ldrb r0, [r2]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2]
+_080A4690:
+ ldrh r0, [r3, 0x2]
+ ldrh r2, [r6, 0x22]
+ adds r0, r2
+ strh r0, [r6, 0x22]
+ ldr r1, _080A46C8 @ =0xfffffc00
+ adds r0, r1, 0
+ ldrh r2, [r6, 0x30]
+ adds r1, r0, r2
+ strh r1, [r6, 0x30]
+ movs r2, 0x80
+ lsls r2, 3
+ adds r0, r2, 0
+ ldrh r2, [r6, 0x32]
+ adds r0, r2
+ strh r0, [r6, 0x32]
+ ldrh r0, [r3, 0x4]
+ strh r0, [r6, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080A46BE
+ negs r0, r1
+ strh r0, [r6, 0x30]
+_080A46BE:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A46C8: .4byte 0xfffffc00
+ thumb_func_end sub_80A4588
+
+ thumb_func_start sub_80A46CC
+sub_80A46CC: @ 80A46CC
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x30]
+ ldrh r2, [r4, 0x34]
+ adds r0, r1, r2
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x36]
+ adds r0, r2
+ strh r0, [r4, 0x36]
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080A46EE
+ adds r0, r1, 0
+ adds r0, 0x18
+ b _080A46F2
+_080A46EE:
+ adds r0, r1, 0
+ subs r0, 0x18
+_080A46F2:
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x32]
+ subs r0, 0x18
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ bne _080A4728
+ ldr r1, _080A4730 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ movs r0, 0x3
+ strh r0, [r4, 0x2E]
+ ldr r0, _080A4734 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+_080A4728:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4730: .4byte DestroyAnimSprite
+_080A4734: .4byte sub_8074C44
+ thumb_func_end sub_80A46CC
+
+ thumb_func_start sub_80A4738
+sub_80A4738: @ 80A4738
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r1, [r5, 0x32]
+ movs r2, 0x32
+ ldrsh r0, [r5, r2]
+ cmp r0, 0x1
+ ble _080A47DC
+ ldrh r1, [r5, 0x34]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A4794
+ adds r3, r5, 0
+ adds r3, 0x3E
+ ldrb r1, [r3]
+ movs r2, 0x5
+ negs r2, r2
+ adds r0, r2, 0
+ ands r0, r1
+ strb r0, [r3]
+ ldr r4, _080A4790 @ =gSprites
+ movs r0, 0x2E
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ adds r0, 0x3E
+ ldrb r3, [r0]
+ adds r1, r2, 0
+ ands r1, r3
+ strb r1, [r0]
+ movs r0, 0x30
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ ands r2, r1
+ strb r2, [r0]
+ b _080A47CA
+ .align 2, 0
+_080A4790: .4byte gSprites
+_080A4794:
+ adds r1, r5, 0
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ ldr r3, _080A47D8 @ =gSprites
+ movs r0, 0x2E
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ orrs r1, r2
+ strb r1, [r0]
+ movs r0, 0x30
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ orrs r1, r2
+ strb r1, [r0]
+_080A47CA:
+ movs r0, 0
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ b _080A47E0
+ .align 2, 0
+_080A47D8: .4byte gSprites
+_080A47DC:
+ adds r0, r1, 0x1
+ strh r0, [r5, 0x32]
+_080A47E0:
+ movs r1, 0x34
+ ldrsh r0, [r5, r1]
+ cmp r0, 0xA
+ bne _080A4810
+ movs r2, 0x2E
+ ldrsh r1, [r5, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r4, _080A4818 @ =gSprites
+ adds r0, r4
+ bl DestroySprite
+ movs r0, 0x30
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ bl DestroySprite
+ adds r0, r5, 0
+ bl DestroyAnimSprite
+_080A4810:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4818: .4byte gSprites
+ thumb_func_end sub_80A4738
+
+ thumb_func_start sub_80A481C
+sub_80A481C: @ 80A481C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080A483C @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x4]
+ strh r0, [r5, 0x2E]
+ ldr r0, _080A4840 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A4844
+ ldrh r0, [r5, 0x20]
+ ldrh r1, [r4]
+ subs r0, r1
+ b _080A484A
+ .align 2, 0
+_080A483C: .4byte gBattleAnimArgs
+_080A4840: .4byte gBattleAnimAttacker
+_080A4844:
+ ldrh r0, [r4]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+_080A484A:
+ strh r0, [r5, 0x20]
+ ldr r4, _080A4878 @ =gBattleAnimArgs
+ ldrb r1, [r4, 0xA]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldrh r0, [r4, 0x6]
+ negs r0, r0
+ strh r0, [r5, 0x30]
+ ldrh r0, [r4, 0x2]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ ldrh r0, [r4, 0x8]
+ strh r0, [r5, 0x34]
+ ldr r1, _080A487C @ =sub_80A4880
+ str r1, [r5, 0x1C]
+ adds r0, r5, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4878: .4byte gBattleAnimArgs
+_080A487C: .4byte sub_80A4880
+ thumb_func_end sub_80A481C
+
+ thumb_func_start sub_80A4880
+sub_80A4880: @ 80A4880
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x64
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ movs r1, 0x14
+ bl Sin
+ strh r0, [r4, 0x26]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x7F
+ bgt _080A48AC
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0
+ b _080A48B2
+_080A48AC:
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0xE
+_080A48B2:
+ strb r0, [r1]
+ ldrh r0, [r4, 0x30]
+ ldrh r2, [r4, 0x2E]
+ adds r0, r2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x82
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ bne _080A48E8
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A48E8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A4880
+
+ thumb_func_start sub_80A48F0
+sub_80A48F0: @ 80A48F0
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A4906
+ ldr r1, _080A4964 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ adds r0, 0x8
+ strh r0, [r1, 0x2]
+_080A4906:
+ ldr r6, _080A4968 @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ movs r1, 0
+ bl sub_8074844
+ lsls r0, 24
+ ldr r4, _080A4964 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ ldrb r0, [r6]
+ movs r1, 0x1
+ bl sub_8074844
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r4, [r4, 0x2]
+ adds r0, r4
+ strh r0, [r5, 0x22]
+ ldrb r0, [r6]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A4944
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A496C
+_080A4944:
+ ldrb r0, [r6]
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+ movs r1, 0x3
+ ands r0, r1
+ lsls r0, 2
+ ldrb r2, [r5, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r5, 0x5]
+ b _080A4984
+ .align 2, 0
+_080A4964: .4byte gBattleAnimArgs
+_080A4968: .4byte gBattleAnimAttacker
+_080A496C:
+ ldrb r0, [r6]
+ bl sub_8076884
+ 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]
+_080A4984:
+ ldr r0, _080A49C8 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r5, 0x2E]
+ ldr r0, _080A49CC @ =0x00002828
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 20
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ movs r4, 0x10
+ movs r0, 0x10
+ strh r0, [r5, 0x3C]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldrh r0, [r5, 0x3C]
+ lsls r1, r0, 8
+ subs r4, r0
+ orrs r1, r4
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r0, _080A49D0 @ =sub_80A49D4
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A49C8: .4byte gBattleAnimArgs
+_080A49CC: .4byte 0x00002828
+_080A49D0: .4byte sub_80A49D4
+ thumb_func_end sub_80A48F0
+
+ thumb_func_start sub_80A49D4
+sub_80A49D4: @ 80A49D4
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x60
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 24
+ negs r0, r0
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080A4A32
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldr r1, _080A4A7C @ =gPlttBufferFaded
+ movs r2, 0x32
+ ldrsh r0, [r4, r2]
+ adds r0, 0x1
+ lsls r0, 1
+ adds r0, r1
+ ldrh r5, [r0]
+ movs r2, 0
+ adds r6, r1, 0
+ adds r3, r6, 0
+_080A4A0C:
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ adds r2, 0x1
+ adds r0, r2
+ lsls r1, r0, 1
+ adds r1, r3
+ adds r0, 0x1
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ strh r0, [r1]
+ cmp r2, 0x5
+ ble _080A4A0C
+ movs r2, 0x32
+ ldrsh r0, [r4, r2]
+ adds r0, 0x7
+ lsls r0, 1
+ adds r0, r6
+ strh r5, [r0]
+_080A4A32:
+ ldrh r2, [r4, 0x3C]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x6
+ ble _080A4A6C
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ ble _080A4A80
+ ldrh r0, [r4, 0x3A]
+ adds r0, 0x1
+ strh r0, [r4, 0x3A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080A4A6C
+ movs r0, 0
+ strh r0, [r4, 0x3A]
+ subs r2, 0x1
+ strh r2, [r4, 0x3C]
+ lsls r1, r2, 8
+ movs r0, 0x10
+ subs r0, r2
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+_080A4A6C:
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080A4A80
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x2E]
+ b _080A4AC2
+ .align 2, 0
+_080A4A7C: .4byte gPlttBufferFaded
+_080A4A80:
+ ldrh r0, [r4, 0x3A]
+ adds r0, 0x1
+ strh r0, [r4, 0x3A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080A4AC2
+ movs r0, 0
+ strh r0, [r4, 0x3A]
+ ldrh r2, [r4, 0x3C]
+ adds r2, 0x1
+ strh r2, [r4, 0x3C]
+ lsls r1, r2, 8
+ movs r0, 0x10
+ subs r0, r2
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080A4AC2
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080A4AC8 @ =sub_8074F88
+ str r0, [r4, 0x1C]
+_080A4AC2:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4AC8: .4byte sub_8074F88
+ thumb_func_end sub_80A49D4
+
+ thumb_func_start sub_80A4ACC
+sub_80A4ACC: @ 80A4ACC
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r6, _080A4B2C @ =gBattleAnimTarget
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ strh r0, [r4, 0x20]
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080A4B30 @ =0x0000ffe8
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ strh r5, [r4, 0x2E]
+ strh r5, [r4, 0x30]
+ strh r5, [r4, 0x32]
+ strh r5, [r4, 0x34]
+ strh r5, [r4, 0x36]
+ strh r5, [r4, 0x3A]
+ movs r0, 0x10
+ strh r0, [r4, 0x3C]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 8
+ ldrh r0, [r4, 0x3A]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r0, _080A4B34 @ =sub_80A4B38
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4B2C: .4byte gBattleAnimTarget
+_080A4B30: .4byte 0x0000ffe8
+_080A4B34: .4byte sub_80A4B38
+ thumb_func_end sub_80A4ACC
+
+ thumb_func_start sub_80A4B38
+sub_80A4B38: @ 80A4B38
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _080A4B46
+ b _080A4C90
+_080A4B46:
+ lsls r0, 2
+ ldr r1, _080A4B50 @ =_080A4B54
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080A4B50: .4byte _080A4B54
+ .align 2, 0
+_080A4B54:
+ .4byte _080A4B68
+ .4byte _080A4BCC
+ .4byte _080A4BE8
+ .4byte _080A4C66
+ .4byte _080A4C7A
+_080A4B68:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080A4B76
+ b _080A4C90
+_080A4B76:
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A4B98
+ ldrh r1, [r4, 0x3A]
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xF
+ bgt _080A4BA6
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x3A]
+ b _080A4BA6
+_080A4B98:
+ ldrh r1, [r4, 0x3C]
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080A4BA6
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x3C]
+_080A4BA6:
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 8
+ ldrh r0, [r4, 0x3A]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080A4C90
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080A4C90
+ strh r0, [r4, 0x30]
+ b _080A4C72
+_080A4BCC:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _080A4C90
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ b _080A4C72
+_080A4BE8:
+ adds r0, r4, 0
+ movs r1, 0x10
+ movs r2, 0x4
+ bl sub_80A4C98
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _080A4C0A
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x1
+ strh r0, [r4, 0x22]
+_080A4C0A:
+ ldrh r0, [r4, 0x32]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x32]
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0x1D
+ ble _080A4C90
+ movs r0, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _080A4C30
+ ldrh r1, [r4, 0x3A]
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080A4C3E
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x3A]
+ b _080A4C3E
+_080A4C30:
+ ldrh r1, [r4, 0x3C]
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xF
+ bgt _080A4C3E
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x3C]
+_080A4C3E:
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 8
+ ldrh r0, [r4, 0x3A]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x3A
+ ldrsh r1, [r4, r0]
+ cmp r1, 0
+ bne _080A4C90
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x10
+ bne _080A4C90
+ strh r1, [r4, 0x30]
+ strh r1, [r4, 0x32]
+ b _080A4C72
+_080A4C66:
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080A4C72:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080A4C90
+_080A4C7A:
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A4C90:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A4B38
+
+ thumb_func_start sub_80A4C98
+sub_80A4C98: @ 80A4C98
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xB
+ bgt _080A4CAA
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x2
+ strh r0, [r4, 0x36]
+_080A4CAA:
+ ldrh r5, [r4, 0x34]
+ adds r0, r5, 0
+ subs r0, 0x12
+ lsls r0, 16
+ lsrs r0, 16
+ adds r1, r5, 0
+ cmp r0, 0x17
+ bhi _080A4CC0
+ ldrh r0, [r4, 0x36]
+ subs r0, 0x2
+ strh r0, [r4, 0x36]
+_080A4CC0:
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0x2F
+ ble _080A4CCE
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x2
+ strh r0, [r4, 0x36]
+_080A4CCE:
+ movs r1, 0x36
+ ldrsh r0, [r4, r1]
+ movs r1, 0x9
+ bl __divsi3
+ strh r0, [r4, 0x24]
+ movs r1, 0x36
+ ldrsh r0, [r4, r1]
+ movs r1, 0xE
+ bl __divsi3
+ strh r0, [r4, 0x26]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080A4CF4
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ strh r0, [r4, 0x26]
+_080A4CF4:
+ adds r0, r5, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3B
+ ble _080A4D04
+ movs r0, 0
+ strh r0, [r4, 0x34]
+_080A4D04:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A4C98
+
+ thumb_func_start sub_80A4D0C
+sub_80A4D0C: @ 80A4D0C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080A4D50 @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080A4D20
+ adds r0, r4, 0
+ bl sub_8074FCC
+_080A4D20:
+ movs r0, 0
+ ldrsh r1, [r5, r0]
+ adds r0, r4, 0
+ bl sub_8074FF8
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r5, 0xA]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r4, 0x32]
+ ldr r1, _080A4D54 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A4D58 @ =sub_8074D00
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4D50: .4byte gBattleAnimArgs
+_080A4D54: .4byte DestroyAnimSprite
+_080A4D58: .4byte sub_8074D00
+ thumb_func_end sub_80A4D0C
+
+ thumb_func_start sub_80A4D5C
+sub_80A4D5C: @ 80A4D5C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r0, _080A4D70 @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080A4D78
+ ldr r0, _080A4D74 @ =gBattleAnimAttacker
+ b _080A4D7A
+ .align 2, 0
+_080A4D70: .4byte gBattleAnimArgs
+_080A4D74: .4byte gBattleAnimAttacker
+_080A4D78:
+ ldr r0, _080A4DBC @ =gBattleAnimTarget
+_080A4D7A:
+ ldrb r6, [r0]
+ bl sub_8075290
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A4DC4
+ movs r1, 0x2
+ adds r0, r6, 0
+ eors r0, r1
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A4DC4
+ ldr r4, _080A4DC0 @ =gBattleAnimArgs
+ ldrb r1, [r4, 0xC]
+ adds r2, r5, 0
+ adds r2, 0x20
+ adds r3, r5, 0
+ adds r3, 0x22
+ adds r0, r6, 0
+ bl sub_8076D9C
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ adds r0, r5, 0
+ bl sub_8074FF8
+ ldrh r0, [r4, 0x2]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ b _080A4E14
+ .align 2, 0
+_080A4DBC: .4byte gBattleAnimTarget
+_080A4DC0: .4byte gBattleAnimArgs
+_080A4DC4:
+ ldr r4, _080A4DE4 @ =gBattleAnimArgs
+ movs r2, 0xC
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080A4DE8
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ adds r0, r6, 0
+ movs r1, 0x1
+ b _080A4DFA
+ .align 2, 0
+_080A4DE4: .4byte gBattleAnimArgs
+_080A4DE8:
+ adds r0, r6, 0
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ adds r0, r6, 0
+ movs r1, 0x3
+_080A4DFA:
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r4, [r4, 0x2]
+ adds r0, r4
+ strh r0, [r5, 0x22]
+ ldr r0, _080A4E34 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ adds r0, r5, 0
+ bl sub_8074FF8
+_080A4E14:
+ ldr r1, _080A4E34 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0xA]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r5, 0x32]
+ ldr r1, _080A4E38 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A4E3C @ =sub_8074D00
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4E34: .4byte gBattleAnimArgs
+_080A4E38: .4byte DestroyAnimSprite
+_080A4E3C: .4byte sub_8074D00
+ thumb_func_end sub_80A4D5C
+
+ thumb_func_start sub_80A4E40
+sub_80A4E40: @ 80A4E40
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldr r0, _080A4E6C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A4E74
+ ldr r0, _080A4E70 @ =gBattleAnimArgs
+ ldrh r1, [r0]
+ ldrh r2, [r4, 0x20]
+ adds r1, r2
+ strh r1, [r4, 0x20]
+ ldrh r0, [r0, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ b _080A4E8E
+ .align 2, 0
+_080A4E6C: .4byte gBattleAnimAttacker
+_080A4E70: .4byte gBattleAnimArgs
+_080A4E74:
+ ldr r2, _080A4E98 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r2, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+_080A4E8E:
+ ldr r0, _080A4E9C @ =sub_80A4EA0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4E98: .4byte gBattleAnimArgs
+_080A4E9C: .4byte sub_80A4EA0
+ thumb_func_end sub_80A4E40
+
+ thumb_func_start sub_80A4EA0
+sub_80A4EA0: @ 80A4EA0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1E
+ ble _080A4ED8
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ movs r0, 0x1E
+ subs r0, r1
+ movs r1, 0x3
+ bl __divsi3
+ strh r0, [r4, 0x26]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ lsls r0, 18
+ asrs r0, 16
+ movs r1, 0x3
+ bl Sin
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+_080A4ED8:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080A4EEC
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A4EEC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A4EA0
+
+ thumb_func_start sub_80A4EF4
+sub_80A4EF4: @ 80A4EF4
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldr r0, _080A4F24 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A4F2C
+ ldr r1, _080A4F28 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ movs r0, 0x1
+ strh r0, [r4, 0x34]
+ b _080A4F4A
+ .align 2, 0
+_080A4F24: .4byte gBattleAnimAttacker
+_080A4F28: .4byte gBattleAnimArgs
+_080A4F2C:
+ ldr r2, _080A4F54 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r2, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldr r0, _080A4F58 @ =0x0000ffff
+ strh r0, [r4, 0x34]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+_080A4F4A:
+ ldr r0, _080A4F5C @ =sub_80A4F60
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4F54: .4byte gBattleAnimArgs
+_080A4F58: .4byte 0x0000ffff
+_080A4F5C: .4byte sub_80A4F60
+ thumb_func_end sub_80A4EF4
+
+ thumb_func_start sub_80A4F60
+sub_80A4F60: @ 80A4F60
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x28
+ bl __divsi3
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ movs r2, 0x36
+ ldrsh r0, [r4, r2]
+ movs r1, 0xA
+ bl __divsi3
+ strh r0, [r4, 0x24]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ lsls r0, 1
+ ldrh r2, [r4, 0x36]
+ adds r0, r2
+ strh r0, [r4, 0x36]
+ ldrh r0, [r4, 0x30]
+ ldrh r2, [r4, 0x2E]
+ adds r1, r0, r2
+ strh r1, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3C
+ ble _080A4FA4
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080A4FA4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A4F60
+
+ thumb_func_start sub_80A4FAC
+sub_80A4FAC: @ 80A4FAC
+ push {lr}
+ ldrh r1, [r0, 0x20]
+ subs r1, 0x20
+ strh r1, [r0, 0x20]
+ ldrh r1, [r0, 0x22]
+ subs r1, 0x20
+ strh r1, [r0, 0x22]
+ movs r1, 0x14
+ strh r1, [r0, 0x2E]
+ ldr r1, _080A4FCC @ =sub_8074C44
+ str r1, [r0, 0x1C]
+ ldr r1, _080A4FD0 @ =sub_80A4FD4
+ bl StoreSpriteCallbackInData6
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A4FCC: .4byte sub_8074C44
+_080A4FD0: .4byte sub_80A4FD4
+ thumb_func_end sub_80A4FAC
+
+ thumb_func_start sub_80A4FD4
+sub_80A4FD4: @ 80A4FD4
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldrh r6, [r5, 0x38]
+ movs r1, 0x1
+ adds r0, r1, 0
+ ands r0, r6
+ cmp r0, 0
+ beq _080A4FEA
+ cmp r0, 0x1
+ beq _080A5004
+ b _080A506A
+_080A4FEA:
+ strh r1, [r5, 0x2E]
+ ldr r0, _080A4FFC @ =sub_8074C44
+ str r0, [r5, 0x1C]
+ ldr r1, _080A5000 @ =sub_80A4FD4
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ b _080A506A
+ .align 2, 0
+_080A4FFC: .4byte sub_8074C44
+_080A5000: .4byte sub_80A4FD4
+_080A5004:
+ ldrh r3, [r5, 0x24]
+ ldrh r0, [r5, 0x20]
+ adds r3, r0
+ movs r0, 0
+ strh r3, [r5, 0x20]
+ ldrh r4, [r5, 0x26]
+ ldrh r1, [r5, 0x22]
+ adds r4, r1
+ strh r4, [r5, 0x22]
+ strh r0, [r5, 0x26]
+ strh r0, [r5, 0x24]
+ movs r0, 0x8
+ strh r0, [r5, 0x2E]
+ ldr r2, _080A5078 @ =gUnknown_83E3548
+ lsls r0, r6, 16
+ asrs r0, 24
+ lsls r0, 1
+ adds r1, r0, r2
+ ldrb r1, [r1]
+ lsls r1, 24
+ asrs r1, 24
+ adds r3, r1
+ strh r3, [r5, 0x32]
+ adds r2, 0x1
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ adds r4, r0
+ strh r4, [r5, 0x36]
+ ldr r0, _080A507C @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080A5080 @ =sub_80A5084
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1, 0
+ ldrh r1, [r5, 0x38]
+ adds r0, r1
+ strh r0, [r5, 0x38]
+ movs r0, 0x3F
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xCB
+ bl PlaySE12WithPanning
+_080A506A:
+ ldrh r0, [r5, 0x38]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r5, 0x38]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5078: .4byte gUnknown_83E3548
+_080A507C: .4byte sub_8075590
+_080A5080: .4byte sub_80A5084
+ thumb_func_end sub_80A4FD4
+
+ thumb_func_start sub_80A5084
+sub_80A5084: @ 80A5084
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x38]
+ lsls r0, 16
+ asrs r0, 24
+ cmp r0, 0x4
+ bne _080A50AC
+ movs r0, 0xA
+ strh r0, [r2, 0x2E]
+ ldr r0, _080A50A4 @ =sub_8074C44
+ str r0, [r2, 0x1C]
+ ldr r1, _080A50A8 @ =sub_80A50B8
+ adds r0, r2, 0
+ bl StoreSpriteCallbackInData6
+ b _080A50B0
+ .align 2, 0
+_080A50A4: .4byte sub_8074C44
+_080A50A8: .4byte sub_80A50B8
+_080A50AC:
+ ldr r0, _080A50B4 @ =sub_80A4FD4
+ str r0, [r2, 0x1C]
+_080A50B0:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A50B4: .4byte sub_80A4FD4
+ thumb_func_end sub_80A5084
+
+ thumb_func_start sub_80A50B8
+sub_80A50B8: @ 80A50B8
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ ldrh r1, [r5, 0x6]
+ cmp r1, 0
+ bne _080A50E0
+ movs r0, 0x3
+ strh r0, [r5, 0x2E]
+ strh r1, [r5, 0x30]
+ strh r1, [r5, 0x32]
+ ldr r0, _080A50D8 @ =sub_8074C44
+ str r0, [r5, 0x1C]
+ ldr r1, _080A50DC @ =sub_80A5174
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ b _080A5160
+ .align 2, 0
+_080A50D8: .4byte sub_8074C44
+_080A50DC: .4byte sub_80A5174
+_080A50E0:
+ ldrh r0, [r5, 0x6]
+ cmp r0, 0x2
+ beq _080A5100
+ cmp r0, 0x2
+ bgt _080A50F0
+ cmp r0, 0x1
+ beq _080A50F6
+ b _080A5114
+_080A50F0:
+ cmp r0, 0x3
+ beq _080A5108
+ b _080A5114
+_080A50F6:
+ ldr r6, _080A50FC @ =0x0000fff8
+ adds r7, r6, 0
+ b _080A5118
+ .align 2, 0
+_080A50FC: .4byte 0x0000fff8
+_080A5100:
+ ldr r7, _080A5104 @ =0x0000fff8
+ b _080A5116
+ .align 2, 0
+_080A5104: .4byte 0x0000fff8
+_080A5108:
+ movs r7, 0x8
+ ldr r6, _080A5110 @ =0x0000fff8
+ b _080A5118
+ .align 2, 0
+_080A5110: .4byte 0x0000fff8
+_080A5114:
+ movs r7, 0x8
+_080A5116:
+ movs r6, 0x8
+_080A5118:
+ ldrh r0, [r5, 0x24]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x26]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ strh r1, [r5, 0x26]
+ strh r1, [r5, 0x24]
+ movs r0, 0x6
+ strh r0, [r5, 0x2E]
+ ldr r4, _080A5168 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r7
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r6
+ strh r0, [r5, 0x36]
+ ldr r0, _080A516C @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080A5170 @ =sub_80A5220
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+_080A5160:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5168: .4byte gBattleAnimTarget
+_080A516C: .4byte sub_8075590
+_080A5170: .4byte sub_80A5220
+ thumb_func_end sub_80A50B8
+
+ thumb_func_start sub_80A5174
+sub_80A5174: @ 80A5174
+ push {r4,lr}
+ sub sp, 0xC
+ adds r4, r0, 0
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080A5194
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x3
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _080A51A4
+ movs r0, 0x10
+ b _080A51A2
+_080A5194:
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x3
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080A51A4
+ movs r0, 0
+_080A51A2:
+ strh r0, [r4, 0x30]
+_080A51A4:
+ movs r0, 0x1
+ str r0, [sp]
+ movs r0, 0
+ str r0, [sp, 0x4]
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_8075BE8
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080A5200 @ =0x00007fff
+ bl BlendPalettes
+ movs r3, 0x30
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x10
+ bne _080A520C
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ ldrb r1, [r4, 0x5]
+ lsrs r1, 4
+ lsls r0, r1, 5
+ ldr r2, _080A5204 @ =gPlttBufferUnfaded + 0x210
+ adds r0, r2
+ lsls r1, 4
+ ldr r3, _080A5208 @ =0x00000101
+ adds r2, r3, 0
+ orrs r1, r2
+ movs r2, 0x4
+ bl LoadPalette
+ movs r0, 0x3F
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xB9
+ bl PlaySE12WithPanning
+ b _080A5214
+ .align 2, 0
+_080A5200: .4byte 0x00007fff
+_080A5204: .4byte gPlttBufferUnfaded + 0x210
+_080A5208: .4byte 0x00000101
+_080A520C:
+ cmp r0, 0
+ bne _080A5214
+ ldr r0, _080A521C @ =sub_80A5220
+ str r0, [r4, 0x1C]
+_080A5214:
+ add sp, 0xC
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A521C: .4byte sub_80A5220
+ thumb_func_end sub_80A5174
+
+ thumb_func_start sub_80A5220
+sub_80A5220: @ 80A5220
+ push {lr}
+ adds r2, r0, 0
+ ldr r0, _080A523C @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _080A5240 @ =0x0000ffff
+ cmp r1, r0
+ bne _080A5238
+ movs r0, 0
+ strh r0, [r2, 0x30]
+ strh r0, [r2, 0x2E]
+ ldr r0, _080A5244 @ =sub_80A5248
+ str r0, [r2, 0x1C]
+_080A5238:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A523C: .4byte gBattleAnimArgs
+_080A5240: .4byte 0x0000ffff
+_080A5244: .4byte sub_80A5248
+ thumb_func_end sub_80A5220
+
+ thumb_func_start sub_80A5248
+sub_80A5248: @ 80A5248
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x3
+ bl __modsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _080A527C
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_080A527C:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x8
+ bne _080A5290
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A5290:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A5248
+
+ thumb_func_start sub_80A5298
+sub_80A5298: @ 80A5298
+ push {r4,lr}
+ adds r3, r0, 0
+ ldr r0, _080A52B8 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r3, 0x6]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080A52BC
+ ldrh r0, [r3, 0x20]
+ subs r0, 0x18
+ strh r0, [r3, 0x20]
+ ldrh r0, [r3, 0x22]
+ subs r0, 0x18
+ strh r0, [r3, 0x22]
+ b _080A530E
+ .align 2, 0
+_080A52B8: .4byte gBattleAnimArgs
+_080A52BC:
+ cmp r0, 0x2
+ bne _080A52D8
+ ldrh r0, [r3, 0x20]
+ subs r0, 0x18
+ strh r0, [r3, 0x20]
+ ldrh r0, [r3, 0x22]
+ adds r0, 0x18
+ strh r0, [r3, 0x22]
+ ldrb r1, [r3, 0x3]
+ movs r0, 0x3F
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x20
+ b _080A530A
+_080A52D8:
+ cmp r0, 0x3
+ bne _080A52F4
+ ldrh r0, [r3, 0x20]
+ adds r0, 0x18
+ strh r0, [r3, 0x20]
+ ldrh r0, [r3, 0x22]
+ subs r0, 0x18
+ strh r0, [r3, 0x22]
+ ldrb r1, [r3, 0x3]
+ movs r0, 0x3F
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x10
+ b _080A530A
+_080A52F4:
+ ldrh r0, [r3, 0x20]
+ adds r0, 0x18
+ strh r0, [r3, 0x20]
+ ldrh r0, [r3, 0x22]
+ adds r0, 0x18
+ strh r0, [r3, 0x22]
+ ldrb r1, [r3, 0x3]
+ movs r0, 0x3F
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x30
+_080A530A:
+ orrs r0, r1
+ strb r0, [r3, 0x3]
+_080A530E:
+ ldrh r2, [r3, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x10
+ ldr r4, _080A5334 @ =0x000003ff
+ adds r0, r4, 0
+ ands r1, r0
+ ldr r0, _080A5338 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r3, 0x4]
+ ldr r1, _080A533C @ =sub_80A4FAC
+ str r1, [r3, 0x1C]
+ adds r0, r3, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5334: .4byte 0x000003ff
+_080A5338: .4byte 0xfffffc00
+_080A533C: .4byte sub_80A4FAC
+ thumb_func_end sub_80A5298
+
+ thumb_func_start sub_80A5340
+sub_80A5340: @ 80A5340
+ push {lr}
+ adds r3, r0, 0
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0
+ strh r0, [r3, 0x2E]
+ ldr r0, _080A5368 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x1
+ beq _080A537C
+ cmp r0, 0x1
+ bgt _080A536C
+ cmp r0, 0
+ beq _080A5372
+ b _080A538C
+ .align 2, 0
+_080A5368: .4byte gBattleAnimArgs
+_080A536C:
+ cmp r0, 0x2
+ beq _080A5384
+ b _080A538C
+_080A5372:
+ ldr r0, _080A5378 @ =sub_80A5398
+ b _080A538E
+ .align 2, 0
+_080A5378: .4byte sub_80A5398
+_080A537C:
+ ldr r0, _080A5380 @ =sub_80A5474
+ b _080A538E
+ .align 2, 0
+_080A5380: .4byte sub_80A5474
+_080A5384:
+ ldr r0, _080A5388 @ =sub_80A54C4
+ b _080A538E
+ .align 2, 0
+_080A5388: .4byte sub_80A54C4
+_080A538C:
+ ldr r0, _080A5394 @ =sub_80A5584
+_080A538E:
+ str r0, [r3, 0x1C]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5394: .4byte sub_80A5584
+ thumb_func_end sub_80A5340
+
+ thumb_func_start sub_80A5398
+sub_80A5398: @ 80A5398
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x6
+ strh r0, [r4, 0x2E]
+ ldr r5, _080A53D8 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r2, 0x2
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ beq _080A53B6
+ movs r1, 0x2
+_080A53B6:
+ strh r1, [r4, 0x30]
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ ldr r1, _080A53DC @ =gBattlerSpriteIds
+ ldrb r0, [r5]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r4, 0x34]
+ ldr r1, _080A53E0 @ =sub_80A53E8
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A53E4 @ =sub_8074DC4
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A53D8: .4byte gBattleAnimAttacker
+_080A53DC: .4byte gBattlerSpriteIds
+_080A53E0: .4byte sub_80A53E8
+_080A53E4: .4byte sub_8074DC4
+ thumb_func_end sub_80A5398
+
+ thumb_func_start sub_80A53E8
+sub_80A53E8: @ 80A53E8
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r0, 0x2E
+ ldrsh r6, [r5, r0]
+ cmp r6, 0
+ bne _080A5424
+ ldr r1, _080A5464 @ =gBattlerSpriteIds
+ ldr r4, _080A5468 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r5, 0x34]
+ movs r1, 0
+ bl sub_80758E0
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x3A]
+ ldr r2, _080A546C @ =0xfffffd00
+ adds r1, r2, 0
+ cmp r0, 0
+ beq _080A5420
+ movs r0, 0xC0
+ lsls r0, 2
+ adds r1, r0, 0
+_080A5420:
+ strh r1, [r5, 0x36]
+ strh r6, [r5, 0x38]
+_080A5424:
+ ldrh r0, [r5, 0x36]
+ ldrh r1, [r5, 0x38]
+ adds r0, r1
+ strh r0, [r5, 0x38]
+ ldrh r0, [r5, 0x34]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r5, 0x38]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r5, 0x34]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80759DC
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ ble _080A545E
+ movs r0, 0
+ strh r0, [r5, 0x2E]
+ ldr r0, _080A5470 @ =sub_80A5584
+ str r0, [r5, 0x1C]
+_080A545E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5464: .4byte gBattlerSpriteIds
+_080A5468: .4byte gBattleAnimAttacker
+_080A546C: .4byte 0xfffffd00
+_080A5470: .4byte sub_80A5584
+ thumb_func_end sub_80A53E8
+
+ thumb_func_start sub_80A5474
+sub_80A5474: @ 80A5474
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x4
+ strh r0, [r4, 0x2E]
+ ldr r5, _080A54B4 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r1, 0x3
+ cmp r0, 0
+ beq _080A5492
+ movs r0, 0x3
+ negs r0, r0
+ adds r1, r0, 0
+_080A5492:
+ strh r1, [r4, 0x30]
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ ldr r1, _080A54B8 @ =gBattlerSpriteIds
+ ldrb r0, [r5]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r4, 0x34]
+ ldr r1, _080A54BC @ =sub_80A5584
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A54C0 @ =sub_8074DC4
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A54B4: .4byte gBattleAnimAttacker
+_080A54B8: .4byte gBattlerSpriteIds
+_080A54BC: .4byte sub_80A5584
+_080A54C0: .4byte sub_8074DC4
+ thumb_func_end sub_80A5474
+
+ thumb_func_start sub_80A54C4
+sub_80A54C4: @ 80A54C4
+ push {lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0x2E]
+ adds r0, 0x1
+ strh r0, [r1, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _080A54DE
+ movs r0, 0
+ strh r0, [r1, 0x2E]
+ ldr r0, _080A54E4 @ =sub_80A54E8
+ str r0, [r1, 0x1C]
+_080A54DE:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A54E4: .4byte sub_80A54E8
+ thumb_func_end sub_80A54C4
+
+ thumb_func_start sub_80A54E8
+sub_80A54E8: @ 80A54E8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080A5538
+ ldr r1, _080A5524 @ =gBattlerSpriteIds
+ ldr r4, _080A5528 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x3A]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A552C
+ movs r0, 0xFC
+ lsls r0, 8
+ strh r0, [r5, 0x36]
+ movs r0, 0xC0
+ lsls r0, 4
+ b _080A5536
+ .align 2, 0
+_080A5524: .4byte gBattlerSpriteIds
+_080A5528: .4byte gBattleAnimAttacker
+_080A552C:
+ movs r0, 0x80
+ lsls r0, 3
+ strh r0, [r5, 0x36]
+ movs r0, 0xF4
+ lsls r0, 8
+_080A5536:
+ strh r0, [r5, 0x38]
+_080A5538:
+ ldrh r0, [r5, 0x36]
+ ldrh r1, [r5, 0x38]
+ adds r0, r1
+ strh r0, [r5, 0x38]
+ ldrh r0, [r5, 0x34]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r5, 0x38]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r5, 0x34]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80759DC
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _080A5578
+ ldrh r0, [r5, 0x34]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8075980
+ ldr r0, _080A5580 @ =sub_80A5584
+ str r0, [r5, 0x1C]
+_080A5578:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5580: .4byte sub_80A5584
+ thumb_func_end sub_80A54E8
+
+ thumb_func_start sub_80A5584
+sub_80A5584: @ 80A5584
+ push {lr}
+ bl DestroyAnimSprite
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A5584
+
+ thumb_func_start sub_80A5590
+sub_80A5590: @ 80A5590
+ movs r1, 0
+ strh r1, [r0, 0x2E]
+ ldr r1, _080A559C @ =sub_80A55A0
+ str r1, [r0, 0x1C]
+ bx lr
+ .align 2, 0
+_080A559C: .4byte sub_80A55A0
+ thumb_func_end sub_80A5590
+
+ thumb_func_start sub_80A55A0
+sub_80A55A0: @ 80A55A0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x2E
+ ldrsh r5, [r4, r0]
+ cmp r5, 0x1
+ beq _080A55FA
+ cmp r5, 0x1
+ bgt _080A55B6
+ cmp r5, 0
+ beq _080A55BC
+ b _080A568E
+_080A55B6:
+ cmp r5, 0x2
+ beq _080A564C
+ b _080A568E
+_080A55BC:
+ strh r5, [r4, 0x30]
+ ldr r1, _080A5640 @ =gBattlerSpriteIds
+ ldr r2, _080A5644 @ =gBattleAnimAttacker
+ ldrb r0, [r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r4, 0x32]
+ ldrb r0, [r2]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x34]
+ ldr r2, _080A5648 @ =0xfffffe00
+ adds r1, r2, 0
+ cmp r0, 0
+ beq _080A55E4
+ movs r0, 0x80
+ lsls r0, 2
+ adds r1, r0, 0
+_080A55E4:
+ strh r1, [r4, 0x36]
+ strh r5, [r4, 0x38]
+ ldrh r0, [r4, 0x32]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl sub_80758E0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+_080A55FA:
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x38]
+ adds r0, r1
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x32]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r4, 0x38]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r4, 0x32]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80759DC
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ ble _080A568E
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ movs r2, 0x36
+ ldrsh r0, [r4, r2]
+ negs r0, r0
+ strh r0, [r4, 0x36]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080A568E
+ .align 2, 0
+_080A5640: .4byte gBattlerSpriteIds
+_080A5644: .4byte gBattleAnimAttacker
+_080A5648: .4byte 0xfffffe00
+_080A564C:
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x38]
+ adds r0, r1
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x32]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r4, 0x38]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r4, 0x32]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80759DC
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ ble _080A568E
+ ldrh r0, [r4, 0x32]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8075980
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A568E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A55A0
+
+ thumb_func_start sub_80A5694
+sub_80A5694: @ 80A5694
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080A56D8 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ ldr r1, _080A56DC @ =gBattlerSpriteIds
+ ldr r2, _080A56E0 @ =gBattleAnimAttacker
+ ldrb r0, [r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ movs r4, 0
+ strh r0, [r5, 0x8]
+ ldrb r0, [r2]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r2, r0, 24
+ strh r2, [r5, 0xA]
+ strh r4, [r5, 0xC]
+ ldr r0, _080A56E4 @ =gBattleAnimArgs
+ movs r3, 0
+ ldrsh r1, [r0, r3]
+ cmp r1, 0
+ beq _080A56E8
+ cmp r1, 0x1
+ beq _080A5704
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+ b _080A5722
+ .align 2, 0
+_080A56D8: .4byte gTasks
+_080A56DC: .4byte gBattlerSpriteIds
+_080A56E0: .4byte gBattleAnimAttacker
+_080A56E4: .4byte gBattleAnimArgs
+_080A56E8:
+ strh r1, [r5, 0xC]
+ movs r0, 0x8
+ strh r0, [r5, 0xE]
+ strh r1, [r5, 0x10]
+ movs r0, 0x3
+ strh r0, [r5, 0x12]
+ cmp r2, 0
+ bne _080A56FC
+ negs r0, r0
+ strh r0, [r5, 0x12]
+_080A56FC:
+ ldr r0, _080A5700 @ =sub_80A572C
+ b _080A5720
+ .align 2, 0
+_080A5700: .4byte sub_80A572C
+_080A5704:
+ movs r0, 0x8
+ strh r0, [r5, 0xE]
+ movs r0, 0xC0
+ lsls r0, 3
+ strh r0, [r5, 0x10]
+ movs r1, 0xC0
+ strh r1, [r5, 0x12]
+ cmp r2, 0
+ bne _080A571E
+ negs r0, r0
+ strh r0, [r5, 0x10]
+ negs r0, r1
+ strh r0, [r5, 0x12]
+_080A571E:
+ ldr r0, _080A5728 @ =sub_80A58EC
+_080A5720:
+ str r0, [r5]
+_080A5722:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5728: .4byte sub_80A58EC
+ thumb_func_end sub_80A5694
+
+ thumb_func_start sub_80A572C
+sub_80A572C: @ 80A572C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080A5750 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _080A5746
+ b _080A58E6
+_080A5746:
+ lsls r0, 2
+ ldr r1, _080A5754 @ =_080A5758
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080A5750: .4byte gTasks
+_080A5754: .4byte _080A5758
+ .align 2, 0
+_080A5758:
+ .4byte _080A576C
+ .4byte _080A579E
+ .4byte _080A57F8
+ .4byte _080A5870
+ .4byte _080A58B4
+_080A576C:
+ movs r2, 0xE
+ ldrsh r1, [r4, r2]
+ cmp r1, 0
+ beq _080A577C
+ ldrh r2, [r4, 0x12]
+ ldrh r3, [r4, 0x10]
+ adds r2, r3
+ b _080A58C2
+_080A577C:
+ movs r0, 0x8
+ strh r0, [r4, 0xE]
+ strh r1, [r4, 0x10]
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ movs r1, 0xC0
+ cmp r0, 0
+ bne _080A5792
+ movs r2, 0xC0
+ negs r2, r2
+ adds r1, r2, 0
+_080A5792:
+ strh r1, [r4, 0x12]
+ ldrb r0, [r4, 0x8]
+ movs r1, 0
+ bl sub_80758E0
+ b _080A58A8
+_080A579E:
+ movs r3, 0xE
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080A57C4
+ ldrh r0, [r4, 0x12]
+ ldrh r1, [r4, 0x10]
+ adds r0, r1
+ strh r0, [r4, 0x10]
+ ldrb r0, [r4, 0x8]
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r4, 0x10]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrb r0, [r4, 0x8]
+ bl sub_80759DC
+ b _080A58D4
+_080A57C4:
+ movs r0, 0x8
+ strh r0, [r4, 0xE]
+ ldr r2, _080A57F4 @ =gSprites
+ movs r3, 0x8
+ ldrsh r1, [r4, r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x24]
+ strh r0, [r4, 0x10]
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ movs r2, 0x2
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ bne _080A57EA
+ movs r1, 0x2
+_080A57EA:
+ strh r1, [r4, 0x12]
+ movs r0, 0x1
+ strh r0, [r4, 0x14]
+ b _080A58A8
+ .align 2, 0
+_080A57F4: .4byte gSprites
+_080A57F8:
+ ldrh r2, [r4, 0xE]
+ movs r3, 0xE
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080A5854
+ ldrh r1, [r4, 0x14]
+ movs r3, 0x14
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080A5812
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x14]
+ b _080A58E6
+_080A5812:
+ movs r0, 0x1
+ ands r0, r2
+ cmp r0, 0
+ beq _080A5834
+ ldr r2, _080A5830 @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x12]
+ ldrh r2, [r4, 0x10]
+ adds r1, r2
+ b _080A5848
+ .align 2, 0
+_080A5830: .4byte gSprites
+_080A5834:
+ ldr r2, _080A5850 @ =gSprites
+ movs r3, 0x8
+ ldrsh r1, [r4, r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x10]
+ ldrh r2, [r4, 0x12]
+ subs r1, r2
+_080A5848:
+ strh r1, [r0, 0x24]
+ movs r0, 0x1
+ strh r0, [r4, 0x14]
+ b _080A58D4
+ .align 2, 0
+_080A5850: .4byte gSprites
+_080A5854:
+ ldr r2, _080A586C @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x10]
+ strh r1, [r0, 0x24]
+ movs r0, 0xC
+ strh r0, [r4, 0xE]
+ b _080A58A8
+ .align 2, 0
+_080A586C: .4byte gSprites
+_080A5870:
+ ldrh r1, [r4, 0xE]
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080A5880
+ subs r0, r1, 0x1
+ strh r0, [r4, 0xE]
+ b _080A58E6
+_080A5880:
+ movs r0, 0x3
+ strh r0, [r4, 0xE]
+ ldr r2, _080A58B0 @ =gSprites
+ movs r3, 0x8
+ ldrsh r1, [r4, r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x24]
+ strh r0, [r4, 0x10]
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ movs r2, 0x8
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ bne _080A58A6
+ movs r1, 0x8
+_080A58A6:
+ strh r1, [r4, 0x12]
+_080A58A8:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ b _080A58E6
+ .align 2, 0
+_080A58B0: .4byte gSprites
+_080A58B4:
+ movs r3, 0xE
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080A58E0
+ ldrh r2, [r4, 0x12]
+ ldrh r0, [r4, 0x10]
+ adds r2, r0
+_080A58C2:
+ strh r2, [r4, 0x10]
+ ldr r3, _080A58DC @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ strh r2, [r0, 0x24]
+_080A58D4:
+ ldrh r0, [r4, 0xE]
+ subs r0, 0x1
+ strh r0, [r4, 0xE]
+ b _080A58E6
+ .align 2, 0
+_080A58DC: .4byte gSprites
+_080A58E0:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080A58E6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A572C
+
+ thumb_func_start sub_80A58EC
+sub_80A58EC: @ 80A58EC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080A5928 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080A592C
+ ldrh r0, [r4, 0x10]
+ ldrh r1, [r4, 0x12]
+ subs r0, r1
+ strh r0, [r4, 0x10]
+ ldrb r0, [r4, 0x8]
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r4, 0x10]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrb r0, [r4, 0x8]
+ bl sub_80759DC
+ ldrh r0, [r4, 0xE]
+ subs r0, 0x1
+ strh r0, [r4, 0xE]
+ b _080A5938
+ .align 2, 0
+_080A5928: .4byte gTasks
+_080A592C:
+ ldrb r0, [r4, 0x8]
+ bl sub_8075980
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080A5938:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A58EC
+
+ thumb_func_start sub_80A5940
+sub_80A5940: @ 80A5940
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080A5954 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080A595C
+ ldr r4, _080A5958 @ =gBattleAnimAttacker
+ b _080A595E
+ .align 2, 0
+_080A5954: .4byte gBattleAnimArgs
+_080A5958: .4byte gBattleAnimAttacker
+_080A595C:
+ ldr r4, _080A599C @ =gBattleAnimTarget
+_080A595E:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x2]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x4]
+ adds r0, r6
+ strh r0, [r5, 0x22]
+ movs r0, 0
+ strh r0, [r5, 0x2E]
+ strh r0, [r5, 0x30]
+ ldr r1, _080A59A0 @ =sub_80A5A8C
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A59A4 @ =sub_8074F6C
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A599C: .4byte gBattleAnimTarget
+_080A59A0: .4byte sub_80A5A8C
+_080A59A4: .4byte sub_8074F6C
+ thumb_func_end sub_80A5940
+
+ thumb_func_start sub_80A59A8
+sub_80A59A8: @ 80A59A8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080A59E0 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080A59E4 @ =0x0000ffd0
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ ldr r1, _080A59E8 @ =sub_80A5A44
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A59EC @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A59E0: .4byte gBattleAnimTarget
+_080A59E4: .4byte 0x0000ffd0
+_080A59E8: .4byte sub_80A5A44
+_080A59EC: .4byte sub_8074F6C
+ thumb_func_end sub_80A59A8
+
+ thumb_func_start sub_80A59F0
+sub_80A59F0: @ 80A59F0
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r5, _080A5A34 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080A5A38 @ =gBattleAnimArgs
+ ldr r2, _080A5A3C @ =0x0000ffd0
+ adds r0, r2
+ ldrh r1, [r1]
+ adds r0, r1
+ movs r6, 0
+ strh r0, [r4, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ strh r6, [r4, 0x2E]
+ strh r6, [r4, 0x30]
+ ldr r0, _080A5A40 @ =sub_80A5A8C
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5A34: .4byte gBattleAnimTarget
+_080A5A38: .4byte gBattleAnimArgs
+_080A5A3C: .4byte 0x0000ffd0
+_080A5A40: .4byte sub_80A5A8C
+ thumb_func_end sub_80A59F0
+
+ thumb_func_start sub_80A5A44
+sub_80A5A44: @ 80A5A44
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _080A5A6E
+ movs r0, 0xC
+ strh r0, [r4, 0x2E]
+ movs r0, 0x8
+ strh r0, [r4, 0x30]
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ ldr r1, _080A5A74 @ =sub_80A5A7C
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A5A78 @ =sub_8074CD0
+ str r0, [r4, 0x1C]
+_080A5A6E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5A74: .4byte sub_80A5A7C
+_080A5A78: .4byte sub_8074CD0
+ thumb_func_end sub_80A5A44
+
+ thumb_func_start sub_80A5A7C
+sub_80A5A7C: @ 80A5A7C
+ movs r1, 0
+ strh r1, [r0, 0x2E]
+ strh r1, [r0, 0x30]
+ ldr r1, _080A5A88 @ =sub_80A5A8C
+ str r1, [r0, 0x1C]
+ bx lr
+ .align 2, 0
+_080A5A88: .4byte sub_80A5A8C
+ thumb_func_end sub_80A5A7C
+
+ thumb_func_start sub_80A5A8C
+sub_80A5A8C: @ 80A5A8C
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080A5AD4
+ movs r0, 0
+ strh r0, [r3, 0x2E]
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ lsrs r1, r2, 2
+ movs r0, 0x1
+ eors r1, r0
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _080A5AD4
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080A5AD4:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A5A8C
+
+ thumb_func_start sub_80A5AD8
+sub_80A5AD8: @ 80A5AD8
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080A5AEC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080A5AF4
+ ldr r4, _080A5AF0 @ =gBattleAnimAttacker
+ b _080A5AF6
+ .align 2, 0
+_080A5AEC: .4byte gBattleAnimArgs
+_080A5AF0: .4byte gBattleAnimAttacker
+_080A5AF4:
+ ldr r4, _080A5B30 @ =gBattleAnimTarget
+_080A5AF6:
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x2]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x4]
+ adds r0, r6
+ strh r0, [r5, 0x22]
+ movs r0, 0
+ strh r0, [r5, 0x2E]
+ ldr r0, _080A5B34 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x6]
+ strh r0, [r5, 0x30]
+ ldr r0, _080A5B38 @ =sub_80A5B3C
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5B30: .4byte gBattleAnimTarget
+_080A5B34: .4byte gBattleAnimArgs
+_080A5B38: .4byte sub_80A5B3C
+ thumb_func_end sub_80A5AD8
+
+ thumb_func_start sub_80A5B3C
+sub_80A5B3C: @ 80A5B3C
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x30
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ ble _080A5B5C
+ movs r0, 0
+ strh r0, [r2, 0x2E]
+ ldrh r0, [r2, 0x22]
+ subs r0, 0x1
+ strh r0, [r2, 0x22]
+_080A5B5C:
+ ldrh r0, [r2, 0x22]
+ ldrh r1, [r2, 0x2E]
+ subs r0, r1
+ strh r0, [r2, 0x22]
+ adds r0, r2, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080A5B78
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080A5B78:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A5B3C
+
+ thumb_func_start sub_80A5B7C
+sub_80A5B7C: @ 80A5B7C
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r6, _080A5BC4 @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ strh r0, [r4, 0x20]
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0xC
+ strh r0, [r4, 0x22]
+ strh r5, [r4, 0x2E]
+ movs r0, 0x2
+ strh r0, [r4, 0x30]
+ strh r5, [r4, 0x32]
+ strh r5, [r4, 0x34]
+ strh r5, [r4, 0x36]
+ subs r0, 0x42
+ bl sub_8073A44
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r4, 0x38]
+ ldr r0, _080A5BC8 @ =sub_80A5BCC
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5BC4: .4byte gBattleAnimAttacker
+_080A5BC8: .4byte sub_80A5BCC
+ thumb_func_end sub_80A5B7C
+
+ thumb_func_start sub_80A5BCC
+sub_80A5BCC: @ 80A5BCC
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ blt _080A5C38
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsrs r1, r2, 2
+ movs r0, 0x1
+ eors r1, r0
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r1, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _080A5C1E
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x1
+ strh r0, [r4, 0x36]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080A5C1E
+ ldrh r1, [r4, 0x38]
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xBB
+ bl PlaySE12WithPanning
+_080A5C1E:
+ movs r1, 0
+ strh r1, [r4, 0x2E]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080A5C38
+ strh r1, [r4, 0x32]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+_080A5C38:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080A5C62
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ ble _080A5C62
+ adds r0, r4, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080A5C62
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A5C62:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A5BCC
+
+ thumb_func_start sub_80A5C68
+sub_80A5C68: @ 80A5C68
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080A5CB2
+ ldr r4, _080A5CC8 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ ldr r5, _080A5CCC @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r5]
+ adds r0, r1
+ strh r0, [r6, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r5, [r5, 0x2]
+ adds r0, r5
+ strh r0, [r6, 0x22]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A5CAC
+ ldrh r0, [r6, 0x22]
+ adds r0, 0xA
+ strh r0, [r6, 0x22]
+_080A5CAC:
+ ldrh r0, [r6, 0x2E]
+ adds r0, 0x1
+ strh r0, [r6, 0x2E]
+_080A5CB2:
+ ldr r0, _080A5CCC @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _080A5CD0 @ =0x0000ffff
+ cmp r1, r0
+ bne _080A5CC2
+ adds r0, r6, 0
+ bl DestroyAnimSprite
+_080A5CC2:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5CC8: .4byte gBattleAnimAttacker
+_080A5CCC: .4byte gBattleAnimArgs
+_080A5CD0: .4byte 0x0000ffff
+ thumb_func_end sub_80A5C68
+
+ thumb_func_start sub_80A5CD4
+sub_80A5CD4: @ 80A5CD4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _080A5CF4 @ =gTasks
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ bne _080A5D00
+ ldr r1, _080A5CF8 @ =gBattleAnimArgs
+ ldr r0, _080A5CFC @ =0x0000ffff
+ strh r0, [r1, 0xE]
+ b _080A5D3E
+ .align 2, 0
+_080A5CF4: .4byte gTasks
+_080A5CF8: .4byte gBattleAnimArgs
+_080A5CFC: .4byte 0x0000ffff
+_080A5D00:
+ cmp r0, 0x2
+ bne _080A5D0C
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ b _080A5D44
+_080A5D0C:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080A5D44
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldrh r2, [r4, 0xA]
+ adds r2, 0x1
+ strh r2, [r4, 0xA]
+ lsls r1, r2, 8
+ movs r0, 0x10
+ subs r0, r2
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080A5D44
+_080A5D3E:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+_080A5D44:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A5CD4
+
+ thumb_func_start sub_80A5D4C
+sub_80A5D4C: @ 80A5D4C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_8075114
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080A5D74 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x2E]
+ ldr r0, _080A5D78 @ =sub_80A5D7C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5D74: .4byte gBattleAnimArgs
+_080A5D78: .4byte sub_80A5D7C
+ thumb_func_end sub_80A5D4C
+
+ thumb_func_start sub_80A5D7C
+sub_80A5D7C: @ 80A5D7C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r1, [r5, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _080A5D90
+ subs r0, r1, 0x1
+ strh r0, [r5, 0x2E]
+ b _080A5DCC
+_080A5D90:
+ adds r2, r5, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ movs r0, 0x1E
+ strh r0, [r5, 0x2E]
+ ldr r4, _080A5DD4 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ ldr r0, _080A5DD8 @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080A5DDC @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+_080A5DCC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5DD4: .4byte gBattleAnimAttacker
+_080A5DD8: .4byte sub_8075590
+_080A5DDC: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A5D7C
+
+ thumb_func_start sub_80A5DE0
+sub_80A5DE0: @ 80A5DE0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080A5E30 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080A5E28
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldrh r1, [r4, 0xA]
+ adds r1, 0x1
+ strh r1, [r4, 0xA]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080A5E28
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080A5E28:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5E30: .4byte gTasks
+ thumb_func_end sub_80A5DE0
+
+ thumb_func_start sub_80A5E34
+sub_80A5E34: @ 80A5E34
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r4, 0
+ ldr r0, _080A5E9C @ =gBattlersCount
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcs _080A5E90
+ ldr r6, _080A5EA0 @ =gBattleAnimArgs
+ ldr r5, _080A5EA4 @ =gUnknown_3004FF0
+_080A5E48:
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x1
+ bne _080A5E64
+ adds r0, r4, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A5E64
+ adds r0, r4, r5
+ ldrb r0, [r0]
+ bl SetHealthboxSpriteInvisible
+_080A5E64:
+ movs r1, 0x2
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x1
+ bne _080A5E82
+ adds r0, r4, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A5E82
+ adds r0, r4, r5
+ ldrb r0, [r0]
+ bl SetHealthboxSpriteInvisible
+_080A5E82:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080A5E9C @ =gBattlersCount
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcc _080A5E48
+_080A5E90:
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5E9C: .4byte gBattlersCount
+_080A5EA0: .4byte gBattleAnimArgs
+_080A5EA4: .4byte gUnknown_3004FF0
+ thumb_func_end sub_80A5E34
+
+ thumb_func_start sub_80A5EA8
+sub_80A5EA8: @ 80A5EA8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ b _080A5EC2
+_080A5EB2:
+ ldr r0, _080A5ED8 @ =gUnknown_3004FF0
+ adds r0, r4, r0
+ ldrb r0, [r0]
+ bl SetHealthboxSpriteVisible
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+_080A5EC2:
+ ldr r0, _080A5EDC @ =gBattlersCount
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcc _080A5EB2
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5ED8: .4byte gUnknown_3004FF0
+_080A5EDC: .4byte gBattlersCount
+ thumb_func_end sub_80A5EA8
+
+ thumb_func_start sub_80A5EE0
+sub_80A5EE0: @ 80A5EE0
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A5EF6
+ movs r0, 0x30
+ strh r0, [r4, 0x20]
+ movs r0, 0x28
+ b _080A5EFE
+_080A5EF6:
+ ldr r0, _080A5F20 @ =gBattleAnimArgs
+ ldrh r1, [r0]
+ strh r1, [r4, 0x20]
+ ldrh r0, [r0, 0x2]
+_080A5EFE:
+ strh r0, [r4, 0x22]
+ ldrb r1, [r4, 0x1]
+ movs r0, 0x3F
+ ands r0, r1
+ strb r0, [r4, 0x1]
+ ldrb r0, [r4, 0x3]
+ movs r1, 0xC0
+ orrs r0, r1
+ strb r0, [r4, 0x3]
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldr r0, _080A5F24 @ =sub_80A5F28
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5F20: .4byte gBattleAnimArgs
+_080A5F24: .4byte sub_80A5F28
+ thumb_func_end sub_80A5EE0
+
+ thumb_func_start sub_80A5F28
+sub_80A5F28: @ 80A5F28
+ push {lr}
+ adds r1, r0, 0
+ movs r2, 0x2E
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ beq _080A5F3A
+ adds r0, r1, 0
+ bl DestroyAnimSprite
+_080A5F3A:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A5F28
+
+ thumb_func_start sub_80A5F40
+sub_80A5F40: @ 80A5F40
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080A5F78 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ ldr r2, _080A5F7C @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r2]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r2, 0x2]
+ strh r0, [r4, 0x22]
+ strh r1, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ strh r1, [r4, 0x32]
+ strh r1, [r4, 0x34]
+ movs r0, 0x1
+ strh r0, [r4, 0x36]
+ ldr r0, _080A5F80 @ =sub_80A5F84
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A5F78: .4byte gBattleAnimAttacker
+_080A5F7C: .4byte gBattleAnimArgs
+_080A5F80: .4byte sub_80A5F84
+ thumb_func_end sub_80A5F40
+
+ thumb_func_start sub_80A5F84
+sub_80A5F84: @ 80A5F84
+ push {lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0x30]
+ adds r0, 0x1
+ strh r0, [r1, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080A5FAE
+ movs r0, 0
+ strh r0, [r1, 0x30]
+ ldrh r2, [r1, 0x32]
+ movs r3, 0x32
+ ldrsh r0, [r1, r3]
+ cmp r0, 0x77
+ bgt _080A5FAE
+ ldrh r0, [r1, 0x22]
+ adds r0, 0x1
+ strh r0, [r1, 0x22]
+ adds r0, r2, 0x1
+ strh r0, [r1, 0x32]
+_080A5FAE:
+ movs r2, 0x2E
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ beq _080A5FBC
+ adds r0, r1, 0
+ bl DestroyAnimSprite
+_080A5FBC:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A5F84
+
+ thumb_func_start sub_80A5FC0
+sub_80A5FC0: @ 80A5FC0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r4, 0
+ str r4, [sp]
+ str r4, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl sub_8075BE8
+ mov r8, r0
+ ldr r0, _080A6090 @ =0x0000ffff
+ mov r1, r8
+ ands r1, r0
+ mov r8, r1
+ ldr r0, _080A6094 @ =gTasks
+ mov r9, r0
+ lsls r5, r7, 2
+ adds r5, r7
+ lsls r5, 3
+ adds r6, r5, r0
+ strh r4, [r6, 0x8]
+ strh r4, [r6, 0xA]
+ strh r4, [r6, 0xC]
+ strh r1, [r6, 0xE]
+ strh r4, [r6, 0x10]
+ strh r4, [r6, 0x12]
+ strh r4, [r6, 0x14]
+ movs r0, 0xD
+ strh r0, [r6, 0x16]
+ movs r0, 0xE
+ strh r0, [r6, 0x18]
+ movs r0, 0xF
+ strh r0, [r6, 0x1A]
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_8075CB8
+ mov r10, r0
+ mov r1, r8
+ orrs r1, r0
+ mov r8, r1
+ movs r0, 0x8
+ add r9, r0
+ add r5, r9
+ adds r0, r5, 0
+ adds r0, 0x1C
+ adds r5, 0x1E
+ adds r1, r5, 0
+ mov r2, r8
+ bl sub_80765C0
+ ldr r0, _080A6098 @ =0x000027d2
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ movs r4, 0x80
+ lsls r4, 9
+ adds r1, r4, 0
+ lsls r1, r0
+ mov r0, r10
+ orrs r0, r1
+ mov r10, r0
+ ldr r0, _080A609C @ =0x000027d3
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0
+ mov r1, r10
+ orrs r4, r1
+ ldr r0, _080A60A0 @ =0x00007fbb
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ ldr r1, _080A60A4 @ =sub_80A60A8
+ str r1, [r6]
+ adds r0, r7, 0
+ bl _call_via_r1
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6090: .4byte 0x0000ffff
+_080A6094: .4byte gTasks
+_080A6098: .4byte 0x000027d2
+_080A609C: .4byte 0x000027d3
+_080A60A0: .4byte 0x00007fbb
+_080A60A4: .4byte sub_80A60A8
+ thumb_func_end sub_80A5FC0
+
+ thumb_func_start sub_80A60A8
+sub_80A60A8: @ 80A60A8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080A60D0 @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ cmp r1, 0x1
+ beq _080A6194
+ cmp r1, 0x1
+ bgt _080A60D4
+ cmp r1, 0
+ beq _080A60E2
+ b _080A6232
+ .align 2, 0
+_080A60D0: .4byte gTasks
+_080A60D4:
+ cmp r1, 0x2
+ bne _080A60DA
+ b _080A61EC
+_080A60DA:
+ cmp r1, 0x3
+ bne _080A60E0
+ b _080A6220
+_080A60E0:
+ b _080A6232
+_080A60E2:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080A60F0
+ b _080A6232
+_080A60F0:
+ strh r1, [r4, 0xA]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ bgt _080A613C
+ ldrh r0, [r4, 0x16]
+ ldrh r1, [r4, 0x10]
+ adds r0, r1
+ strh r0, [r4, 0x10]
+ ldrh r2, [r4, 0x18]
+ ldrh r3, [r4, 0x12]
+ adds r2, r3
+ strh r2, [r4, 0x12]
+ ldrh r1, [r4, 0x1A]
+ ldrh r5, [r4, 0x14]
+ adds r1, r5
+ strh r1, [r4, 0x14]
+ lsls r0, 16
+ asrs r0, 19
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r2, 16
+ asrs r2, 19
+ lsls r2, 16
+ lsls r1, 16
+ asrs r1, 19
+ lsls r1, 16
+ lsrs r2, 11
+ orrs r0, r2
+ lsrs r1, 6
+ orrs r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+ mov r12, r0
+ b _080A6146
+_080A613C:
+ ldr r7, _080A618C @ =0x00007fbb
+ mov r12, r7
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+_080A6146:
+ movs r2, 0x1
+ movs r3, 0
+ movs r1, 0
+_080A614C:
+ movs r5, 0xE
+ ldrsh r0, [r4, r5]
+ ands r0, r2
+ lsls r5, r2, 17
+ adds r6, r3, 0
+ adds r6, 0x10
+ adds r1, 0x1
+ mov r8, r1
+ cmp r0, 0
+ beq _080A6178
+ movs r1, 0x1
+ ldr r2, _080A6190 @ =gPlttBufferFaded
+_080A6164:
+ adds r0, r3, r1
+ lsls r0, 1
+ adds r0, r2
+ mov r7, r12
+ strh r7, [r0]
+ adds r0, r1, 0x1
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, 0xF
+ bls _080A6164
+_080A6178:
+ lsrs r2, r5, 16
+ lsls r0, r6, 16
+ lsrs r3, r0, 16
+ mov r1, r8
+ lsls r0, r1, 16
+ lsrs r1, r0, 16
+ cmp r1, 0xF
+ bls _080A614C
+ b _080A6232
+ .align 2, 0
+_080A618C: .4byte 0x00007fbb
+_080A6190: .4byte gPlttBufferFaded
+_080A6194:
+ ldr r0, _080A61DC @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080A6232
+ movs r2, 0
+ ldr r3, _080A61E0 @ =gSprites
+ movs r5, 0x14
+ adds r5, r3
+ mov r12, r5
+ ldr r7, _080A61E4 @ =gUnknown_83E3734
+ mov r8, r7
+ ldr r6, _080A61E8 @ =gUnknown_83E3764
+ movs r5, 0x1
+_080A61B2:
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r1, r0, 2
+ mov r7, r12
+ adds r0, r1, r7
+ ldr r0, [r0]
+ cmp r0, r8
+ beq _080A61C6
+ cmp r0, r6
+ bne _080A61CA
+_080A61C6:
+ adds r0, r1, r3
+ strh r5, [r0, 0x2E]
+_080A61CA:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x3F
+ bls _080A61B2
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _080A6214
+ .align 2, 0
+_080A61DC: .4byte gPaletteFade
+_080A61E0: .4byte gSprites
+_080A61E4: .4byte gUnknown_83E3734
+_080A61E8: .4byte gUnknown_83E3764
+_080A61EC:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1E
+ ble _080A6232
+ movs r1, 0x24
+ ldrsh r0, [r4, r1]
+ movs r2, 0x26
+ ldrsh r1, [r4, r2]
+ bl sub_80765C8
+ ldr r1, _080A621C @ =0x00007fbb
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+_080A6214:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080A6232
+ .align 2, 0
+_080A621C: .4byte 0x00007fbb
+_080A6220:
+ ldr r0, _080A6240 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080A6232
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080A6232:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6240: .4byte gPaletteFade
+ thumb_func_end sub_80A60A8
+
+ thumb_func_start sub_80A6244
+sub_80A6244: @ 80A6244
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080A62C8 @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x1
+ bgt _080A6256
+ movs r0, 0x2
+ strh r0, [r6, 0x4]
+_080A6256:
+ movs r1, 0x4
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x7F
+ ble _080A6262
+ movs r0, 0x7F
+ strh r0, [r6, 0x4]
+_080A6262:
+ movs r0, 0
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r6, 0x4]
+ strh r0, [r5, 0x30]
+ ldr r4, _080A62CC @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x2]
+ adds r0, r6
+ strh r0, [r5, 0x22]
+ ldrh r1, [r5, 0x20]
+ strh r1, [r5, 0x3A]
+ strh r0, [r5, 0x3C]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A62D4
+ ldrb r1, [r5, 0x3]
+ movs r0, 0x3F
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x10
+ orrs r0, r1
+ strb r0, [r5, 0x3]
+ ldrh r0, [r5, 0x20]
+ adds r0, 0x28
+ strh r0, [r5, 0x20]
+ ldrh r4, [r5, 0x22]
+ adds r4, 0x14
+ strh r4, [r5, 0x22]
+ lsls r0, 7
+ strh r0, [r5, 0x32]
+ movs r0, 0x30
+ ldrsh r1, [r5, r0]
+ ldr r0, _080A62D0 @ =0xffffec00
+ b _080A62FA
+ .align 2, 0
+_080A62C8: .4byte gBattleAnimArgs
+_080A62CC: .4byte gBattleAnimTarget
+_080A62D0: .4byte 0xffffec00
+_080A62D4:
+ ldr r0, _080A6314 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A631C
+ ldrh r0, [r5, 0x20]
+ subs r0, 0x28
+ strh r0, [r5, 0x20]
+ ldrh r4, [r5, 0x22]
+ adds r4, 0x14
+ strh r4, [r5, 0x22]
+ lsls r0, 7
+ strh r0, [r5, 0x32]
+ movs r0, 0x30
+ ldrsh r1, [r5, r0]
+ movs r0, 0xA0
+ lsls r0, 5
+_080A62FA:
+ bl __divsi3
+ strh r0, [r5, 0x34]
+ lsls r4, 7
+ strh r4, [r5, 0x36]
+ movs r0, 0x30
+ ldrsh r1, [r5, r0]
+ ldr r0, _080A6318 @ =0xfffff600
+ bl __divsi3
+ strh r0, [r5, 0x38]
+ b _080A6358
+ .align 2, 0
+_080A6314: .4byte gBattleAnimAttacker
+_080A6318: .4byte 0xfffff600
+_080A631C:
+ ldrh r0, [r5, 0x20]
+ adds r0, 0x28
+ strh r0, [r5, 0x20]
+ ldrh r4, [r5, 0x22]
+ subs r4, 0x14
+ strh r4, [r5, 0x22]
+ lsls r0, 7
+ strh r0, [r5, 0x32]
+ movs r0, 0x30
+ ldrsh r1, [r5, r0]
+ ldr r0, _080A6364 @ =0xffffec00
+ bl __divsi3
+ strh r0, [r5, 0x34]
+ lsls r4, 7
+ strh r4, [r5, 0x36]
+ movs r0, 0x30
+ ldrsh r1, [r5, r0]
+ movs r0, 0xA0
+ lsls r0, 4
+ bl __divsi3
+ strh r0, [r5, 0x38]
+ ldrb r1, [r5, 0x3]
+ movs r0, 0x3F
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x30
+ orrs r0, r1
+ strb r0, [r5, 0x3]
+_080A6358:
+ ldr r0, _080A6368 @ =sub_80A636C
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6364: .4byte 0xffffec00
+_080A6368: .4byte sub_80A636C
+ thumb_func_end sub_80A6244
+
+ thumb_func_start sub_80A636C
+sub_80A636C: @ 80A636C
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x34]
+ ldrh r1, [r2, 0x32]
+ adds r0, r1
+ strh r0, [r2, 0x32]
+ ldrh r1, [r2, 0x38]
+ ldrh r3, [r2, 0x36]
+ adds r1, r3
+ strh r1, [r2, 0x36]
+ lsls r0, 16
+ asrs r0, 23
+ strh r0, [r2, 0x20]
+ lsls r1, 16
+ asrs r1, 23
+ strh r1, [r2, 0x22]
+ ldrh r0, [r2, 0x30]
+ subs r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080A63A2
+ ldrh r0, [r2, 0x3A]
+ strh r0, [r2, 0x20]
+ ldrh r0, [r2, 0x3C]
+ strh r0, [r2, 0x22]
+_080A63A2:
+ movs r1, 0x30
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bne _080A63B0
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080A63B0:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A636C
+
+ thumb_func_start sub_80A63B4
+sub_80A63B4: @ 80A63B4
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ ldr r1, _080A6444 @ =gTasks
+ adds r6, r0, r1
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x8]
+ ldr r0, _080A6448 @ =0x00002771
+ bl AllocSpritePalette
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0xA]
+ movs r1, 0xA
+ ldrsh r0, [r6, r1]
+ lsls r0, 20
+ movs r1, 0x80
+ lsls r1, 17
+ adds r0, r1
+ lsrs r3, r0, 16
+ ldr r2, _080A644C @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r6, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x5]
+ lsrs r0, 4
+ adds r0, 0x10
+ lsls r4, r0, 4
+ movs r5, 0x1
+ ldr r2, _080A6450 @ =gPlttBufferUnfaded
+_080A640C:
+ adds r1, r3, r5
+ lsls r1, 1
+ adds r1, r2
+ adds r0, r4, r5
+ lsls r0, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ strh r0, [r1]
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0xF
+ bls _080A640C
+ adds r0, r3, 0
+ movs r1, 0x10
+ movs r2, 0xB
+ movs r3, 0
+ bl BlendPalette
+ movs r0, 0
+ strh r0, [r6, 0xE]
+ movs r5, 0
+ ldr r7, _080A644C @ =gSprites
+ movs r1, 0x1C
+ adds r1, r7
+ mov r9, r1
+ b _080A6488
+ .align 2, 0
+_080A6444: .4byte gTasks
+_080A6448: .4byte 0x00002771
+_080A644C: .4byte gSprites
+_080A6450: .4byte gPlttBufferUnfaded
+_080A6454:
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r4, r2, r7
+ ldrb r1, [r6, 0xA]
+ lsls r1, 4
+ ldrb r3, [r4, 0x5]
+ movs r0, 0xF
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ lsls r0, r5, 7
+ strh r0, [r4, 0x30]
+ mov r0, r8
+ strh r0, [r4, 0x32]
+ add r2, r9
+ ldr r0, _080A64BC @ =sub_80A653C
+ str r0, [r2]
+ ldrh r0, [r6, 0xE]
+ adds r0, 0x1
+ strh r0, [r6, 0xE]
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+_080A6488:
+ cmp r5, 0x1
+ bhi _080A649A
+ movs r0, 0
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080A6454
+_080A649A:
+ ldr r0, _080A64C0 @ =sub_80A64E0
+ str r0, [r6]
+ ldr r0, _080A64C4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A64C8
+ movs r1, 0x80
+ lsls r1, 2
+ movs r0, 0
+ bl ClearGpuRegBits
+ b _080A64D2
+ .align 2, 0
+_080A64BC: .4byte sub_80A653C
+_080A64C0: .4byte sub_80A64E0
+_080A64C4: .4byte gBattleAnimAttacker
+_080A64C8:
+ movs r1, 0x80
+ lsls r1, 3
+ movs r0, 0
+ bl ClearGpuRegBits
+_080A64D2:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A63B4
+
+ thumb_func_start sub_80A64E0
+sub_80A64E0: @ 80A64E0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080A6514 @ =gTasks
+ adds r0, r1
+ movs r1, 0xE
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080A6532
+ ldr r0, _080A6518 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A651C
+ movs r1, 0x80
+ lsls r1, 2
+ movs r0, 0
+ bl SetGpuRegBits
+ b _080A6526
+ .align 2, 0
+_080A6514: .4byte gTasks
+_080A6518: .4byte gBattleAnimAttacker
+_080A651C:
+ movs r1, 0x80
+ lsls r1, 3
+ movs r0, 0
+ bl SetGpuRegBits
+_080A6526:
+ ldr r0, _080A6538 @ =0x00002771
+ bl FreeSpritePaletteByTag
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080A6532:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6538: .4byte 0x00002771
+ thumb_func_end sub_80A64E0
+
+ thumb_func_start sub_80A653C
+sub_80A653C: @ 80A653C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080A6558
+ movs r0, 0
+ strh r0, [r5, 0x34]
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+_080A6558:
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x40
+ ble _080A6580
+ ldr r2, _080A657C @ =gTasks
+ movs r0, 0x32
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0xE]
+ subs r1, 0x1
+ strh r1, [r0, 0xE]
+ adds r0, r5, 0
+ bl obj_delete_but_dont_free_vram
+ b _080A65C2
+ .align 2, 0
+_080A657C: .4byte gTasks
+_080A6580:
+ ldr r4, _080A65C8 @ =gSineTable
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ lsls r0, 1
+ adds r0, r4
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ movs r1, 0x6
+ bl __divsi3
+ strh r0, [r5, 0x36]
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ lsls r0, 1
+ adds r0, r4
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ movs r1, 0xD
+ bl __divsi3
+ strh r0, [r5, 0x38]
+ ldrh r1, [r5, 0x30]
+ adds r1, r0
+ movs r0, 0xFF
+ ands r1, r0
+ strh r1, [r5, 0x30]
+ movs r1, 0x30
+ ldrsh r0, [r5, r1]
+ movs r2, 0x36
+ ldrsh r1, [r5, r2]
+ bl Sin
+ strh r0, [r5, 0x24]
+_080A65C2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A65C8: .4byte gSineTable
+ thumb_func_end sub_80A653C
+
+ thumb_func_start sub_80A65CC
+sub_80A65CC: @ 80A65CC
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _080A65E0 @ =DestroyAnimSprite
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A65E4 @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A65E0: .4byte DestroyAnimSprite
+_080A65E4: .4byte sub_8074F6C
+ thumb_func_end sub_80A65CC
+
+ thumb_func_start sub_80A65E8
+sub_80A65E8: @ 80A65E8
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r4, _080A6698 @ =gUnknown_83E3898
+ ldrh r0, [r4]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0xFF
+ beq _080A662C
+ lsls r0, r3, 20
+ movs r1, 0x80
+ lsls r1, 17
+ adds r0, r1
+ lsrs r3, r0, 16
+ movs r2, 0x1
+ ldr r5, _080A669C @ =gPlttBufferFaded
+_080A6614:
+ adds r1, r3, r2
+ lsls r1, 1
+ adds r1, r5
+ lsls r0, r2, 1
+ adds r0, r4
+ ldrh r0, [r0]
+ strh r0, [r1]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, 0x5
+ bls _080A6614
+_080A662C:
+ movs r4, 0x1
+ ldr r0, _080A6698 @ =gUnknown_83E3898
+ mov r8, r0
+_080A6632:
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r5, r0, 2
+ mov r1, r8
+ adds r0, r5, r1
+ ldrh r0, [r0]
+ bl AllocSpritePalette
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r4, 0x1
+ mov r12, r4
+ cmp r3, 0xFF
+ beq _080A667A
+ lsls r0, r3, 20
+ movs r1, 0x80
+ lsls r1, 17
+ adds r0, r1
+ lsrs r3, r0, 16
+ movs r2, 0x1
+ ldr r7, _080A669C @ =gPlttBufferFaded
+ ldr r6, _080A6698 @ =gUnknown_83E3898
+ adds r4, r5, 0
+_080A6660:
+ adds r1, r3, r2
+ lsls r1, 1
+ adds r1, r7
+ lsls r0, r2, 1
+ adds r0, r4
+ adds r0, r6
+ ldrh r0, [r0]
+ strh r0, [r1]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, 0x5
+ bls _080A6660
+_080A667A:
+ mov r1, r12
+ lsls r0, r1, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x3
+ bls _080A6632
+ mov r0, r9
+ bl DestroyAnimVisualTask
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6698: .4byte gUnknown_83E3898
+_080A669C: .4byte gPlttBufferFaded
+ thumb_func_end sub_80A65E8
+
+ thumb_func_start sub_80A66A0
+sub_80A66A0: @ 80A66A0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0x1
+ ldr r6, _080A66D0 @ =gUnknown_83E3898
+_080A66AA:
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r6
+ ldrh r0, [r0]
+ bl FreeSpritePaletteByTag
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x3
+ bls _080A66AA
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A66D0: .4byte gUnknown_83E3898
+ thumb_func_end sub_80A66A0
+
+ thumb_func_start sub_80A66D4
+sub_80A66D4: @ 80A66D4
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ bl sub_8074FCC
+ ldr r4, _080A672C @ =gBattleAnimArgs
+ ldrb r1, [r4]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r2, _080A6730 @ =gUnknown_83E3898
+ movs r0, 0x2
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ beq _080A6710
+ lsls r2, r0, 4
+ ldrb r1, [r5, 0x5]
+ movs r0, 0xF
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+_080A6710:
+ ldrh r0, [r4, 0x2]
+ movs r1, 0
+ strh r0, [r5, 0x30]
+ strh r1, [r5, 0x32]
+ ldrh r0, [r4, 0x4]
+ strh r0, [r5, 0x34]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A6734
+ movs r6, 0x30
+ movs r3, 0x28
+ b _080A674E
+ .align 2, 0
+_080A672C: .4byte gBattleAnimArgs
+_080A6730: .4byte gUnknown_83E3898
+_080A6734:
+ ldr r4, _080A6784 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r3, r0, 24
+_080A674E:
+ ldrh r0, [r5, 0x20]
+ lsls r1, r0, 4
+ strh r1, [r5, 0x36]
+ ldrh r1, [r5, 0x22]
+ lsls r2, r1, 4
+ strh r2, [r5, 0x38]
+ subs r0, r6, r0
+ lsls r0, 16
+ asrs r0, 16
+ subs r1, r3, r1
+ lsls r1, 16
+ asrs r1, 16
+ adds r2, r5, 0
+ adds r2, 0x3A
+ adds r3, r5, 0
+ adds r3, 0x3C
+ movs r4, 0x28
+ str r4, [sp]
+ bl sub_80A678C
+ ldr r0, _080A6788 @ =sub_80A67E4
+ str r0, [r5, 0x1C]
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6784: .4byte gBattleAnimTarget
+_080A6788: .4byte sub_80A67E4
+ thumb_func_end sub_80A66D4
+
+ thumb_func_start sub_80A678C
+sub_80A678C: @ 80A678C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r2, 0
+ mov r8, r3
+ ldr r2, [sp, 0x18]
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r2, 24
+ lsrs r1, r2, 24
+ lsls r0, 16
+ asrs r2, r0, 16
+ cmp r2, 0
+ bge _080A67AE
+ lsls r0, r1, 24
+ negs r0, r0
+ lsrs r1, r0, 24
+_080A67AE:
+ lsls r5, r2, 8
+ lsls r1, 24
+ asrs r1, 24
+ adds r0, r5, 0
+ bl __divsi3
+ adds r4, r0, 0
+ cmp r4, 0
+ bne _080A67C2
+ movs r4, 0x1
+_080A67C2:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl __divsi3
+ strh r0, [r7]
+ lsls r0, r6, 16
+ asrs r0, 8
+ adds r1, r4, 0
+ bl __divsi3
+ mov r1, r8
+ strh r0, [r1]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A678C
+
+ thumb_func_start sub_80A67E4
+sub_80A67E4: @ 80A67E4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ movs r5, 0
+ strh r0, [r4, 0x2E]
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r1, r0, r1
+ adds r0, r1, 0
+ cmp r1, 0
+ bge _080A6800
+ adds r0, 0xFF
+_080A6800:
+ asrs r0, 8
+ lsls r0, 8
+ subs r0, r1, r0
+ ldrh r1, [r4, 0x3A]
+ ldrh r2, [r4, 0x36]
+ adds r1, r2
+ strh r1, [r4, 0x36]
+ ldrh r2, [r4, 0x3C]
+ ldrh r3, [r4, 0x38]
+ adds r2, r3
+ strh r2, [r4, 0x38]
+ lsls r1, 16
+ asrs r1, 20
+ strh r1, [r4, 0x20]
+ lsls r2, 16
+ asrs r2, 20
+ strh r2, [r4, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0xF
+ bl Sin
+ strh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x10
+ lsls r0, 16
+ movs r1, 0x88
+ lsls r1, 17
+ cmp r0, r1
+ bhi _080A684E
+ lsls r0, r2, 16
+ asrs r1, r0, 16
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ blt _080A684E
+ cmp r1, 0x80
+ ble _080A6856
+_080A684E:
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+ b _080A68A6
+_080A6856:
+ movs r0, 0x34
+ ldrsh r1, [r4, r0]
+ cmp r1, 0
+ beq _080A68A6
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, r1
+ ble _080A68A6
+ strh r5, [r4, 0x32]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ ble _080A687E
+ strh r5, [r4, 0x30]
+_080A687E:
+ ldr r2, _080A68AC @ =gUnknown_83E3898
+ movs r3, 0x30
+ ldrsh r1, [r4, r3]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ beq _080A68A6
+ lsls r2, r0, 4
+ ldrb r1, [r4, 0x5]
+ movs r0, 0xF
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r4, 0x5]
+_080A68A6:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A68AC: .4byte gUnknown_83E3898
+ thumb_func_end sub_80A67E4
+
+ thumb_func_start sub_80A68B0
+sub_80A68B0: @ 80A68B0
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ ldr r7, _080A6934 @ =gBattleAnimAttacker
+ ldrb r0, [r7]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A68CE
+ ldr r1, _080A6938 @ =gBattleAnimArgs
+ movs r2, 0x2
+ ldrsh r0, [r1, r2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+_080A68CE:
+ ldrb r0, [r7]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080A6938 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ movs r5, 0
+ strh r0, [r6, 0x20]
+ ldrb r0, [r7]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r2, [r4, 0x4]
+ adds r0, r2
+ strh r0, [r6, 0x22]
+ ldrb r1, [r4]
+ adds r0, r6, 0
+ bl StartSpriteAnim
+ strh r5, [r6, 0x32]
+ strh r5, [r6, 0x34]
+ ldrh r0, [r6, 0x20]
+ lsls r0, 4
+ strh r0, [r6, 0x36]
+ ldrh r0, [r6, 0x22]
+ lsls r0, 4
+ strh r0, [r6, 0x38]
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ lsls r0, 4
+ movs r1, 0x5
+ bl __divsi3
+ strh r0, [r6, 0x3A]
+ movs r2, 0x4
+ ldrsh r0, [r4, r2]
+ lsls r0, 7
+ movs r1, 0x5
+ bl __divsi3
+ strh r0, [r6, 0x3C]
+ ldr r0, _080A693C @ =sub_80A6940
+ str r0, [r6, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6934: .4byte gBattleAnimAttacker
+_080A6938: .4byte gBattleAnimArgs
+_080A693C: .4byte sub_80A6940
+ thumb_func_end sub_80A68B0
+
+ thumb_func_start sub_80A6940
+sub_80A6940: @ 80A6940
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x3A]
+ ldrh r1, [r4, 0x36]
+ adds r0, r1
+ strh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x3C]
+ ldrh r2, [r4, 0x38]
+ adds r1, r2
+ strh r1, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 20
+ strh r0, [r4, 0x20]
+ lsls r1, 16
+ asrs r1, 20
+ strh r1, [r4, 0x22]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ ble _080A699E
+ movs r2, 0x34
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080A699E
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x10
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x32]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ movs r1, 0x12
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r2, 0x32
+ ldrsh r0, [r4, r2]
+ movs r1, 0x12
+ bl Sin
+ strh r0, [r4, 0x26]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080A699E
+ movs r0, 0x1
+ strh r0, [r4, 0x34]
+_080A699E:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x30
+ bne _080A69B2
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080A69B2:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A6940
+
+ thumb_func_start sub_80A69B8
+sub_80A69B8: @ 80A69B8
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r0, _080A69D8 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x1
+ bne _080A69DC
+ ldrb r0, [r5, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x10
+ orrs r1, r0
+ strb r1, [r5, 0x3]
+ movs r6, 0x10
+ b _080A69DE
+ .align 2, 0
+_080A69D8: .4byte gBattleAnimArgs
+_080A69DC:
+ ldr r6, _080A6A18 @ =0x0000fff0
+_080A69DE:
+ ldr r4, _080A6A1C @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r6
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x8
+ strh r0, [r5, 0x22]
+ movs r0, 0x8
+ strh r0, [r5, 0x2E]
+ ldr r0, _080A6A20 @ =sub_8074C44
+ str r0, [r5, 0x1C]
+ ldr r1, _080A6A24 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6A18: .4byte 0x0000fff0
+_080A6A1C: .4byte gBattleAnimAttacker
+_080A6A20: .4byte sub_8074C44
+_080A6A24: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A69B8
+
+ thumb_func_start sub_80A6A28
+sub_80A6A28: @ 80A6A28
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x8
+ strh r0, [r4, 0x22]
+ ldr r5, _080A6AA0 @ =gBattleAnimArgs
+ ldrb r1, [r5, 0x2]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldr r2, _080A6AA4 @ =gUnknown_83E3898
+ movs r0, 0x4
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ beq _080A6A68
+ lsls r2, r0, 4
+ ldrb r1, [r4, 0x5]
+ movs r0, 0xF
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r4, 0x5]
+_080A6A68:
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ movs r2, 0x20
+ cmp r0, 0
+ bne _080A6A74
+ ldr r2, _080A6AA8 @ =0x0000ffe0
+_080A6A74:
+ movs r0, 0x28
+ strh r0, [r4, 0x2E]
+ ldrh r1, [r4, 0x20]
+ strh r1, [r4, 0x30]
+ lsls r0, r2, 16
+ asrs r0, 16
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ subs r0, 0x28
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x38]
+ ldr r0, _080A6AAC @ =sub_80A6AB0
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6AA0: .4byte gBattleAnimArgs
+_080A6AA4: .4byte gUnknown_83E3898
+_080A6AA8: .4byte 0x0000ffe0
+_080A6AAC: .4byte sub_80A6AB0
+ thumb_func_end sub_80A6A28
+
+ thumb_func_start sub_80A6AB0
+sub_80A6AB0: @ 80A6AB0
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A6B00
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0x8
+ bl Sin
+ lsls r0, 16
+ lsrs r1, r0, 16
+ ldrh r2, [r4, 0x24]
+ movs r3, 0x24
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ bge _080A6ADC
+ lsls r0, r1, 16
+ negs r0, r0
+ lsrs r1, r0, 16
+_080A6ADC:
+ lsls r0, r1, 16
+ asrs r0, 16
+ adds r0, r2
+ strh r0, [r4, 0x24]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0x4
+ bl Sin
+ ldrh r3, [r4, 0x26]
+ adds r0, r3
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x8
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ b _080A6B06
+_080A6B00:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A6B06:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A6AB0
+
+ thumb_func_start sub_80A6B0C
+sub_80A6B0C: @ 80A6B0C
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r5, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A6B2C
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl sub_8076B2C
+ adds r0, 0x8
+ b _080A6B36
+_080A6B2C:
+ adds r0, r5, 0
+ movs r1, 0x4
+ bl sub_8076B2C
+ subs r0, 0x8
+_080A6B36:
+ strh r0, [r6, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl sub_8074480
+ adds r4, r0, 0
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8076B2C
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080A6B58
+ adds r0, 0x3
+_080A6B58:
+ asrs r0, 2
+ subs r0, r4, r0
+ strh r0, [r6, 0x22]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A6B0C
+
+ thumb_func_start sub_80A6B64
+sub_80A6B64: @ 80A6B64
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080A6B78 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080A6B80
+ ldr r0, _080A6B7C @ =gBattleAnimAttacker
+ b _080A6B82
+ .align 2, 0
+_080A6B78: .4byte gBattleAnimArgs
+_080A6B7C: .4byte gBattleAnimAttacker
+_080A6B80:
+ ldr r0, _080A6BC0 @ =gBattleAnimTarget
+_080A6B82:
+ ldrb r4, [r0]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80A6B0C
+ adds r0, r4, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ negs r1, r0
+ orrs r1, r0
+ lsrs r1, 31
+ ldr r0, _080A6BC4 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x2]
+ strh r0, [r5, 0x2E]
+ adds r0, r1, 0x2
+ strh r0, [r5, 0x30]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r1, _080A6BC8 @ =sub_80A6BD0
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A6BCC @ =sub_8074F6C
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6BC0: .4byte gBattleAnimTarget
+_080A6BC4: .4byte gBattleAnimArgs
+_080A6BC8: .4byte sub_80A6BD0
+_080A6BCC: .4byte sub_8074F6C
+ thumb_func_end sub_80A6B64
+
+ thumb_func_start sub_80A6BD0
+sub_80A6BD0: @ 80A6BD0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080A6BF8
+ ldr r1, _080A6C00 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldr r0, _080A6C04 @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+_080A6BF8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6C00: .4byte DestroyAnimSprite
+_080A6C04: .4byte sub_8074F6C
+ thumb_func_end sub_80A6BD0
+
+ thumb_func_start sub_80A6C08
+sub_80A6C08: @ 80A6C08
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080A6C1C @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080A6C24
+ ldr r0, _080A6C20 @ =gBattleAnimAttacker
+ b _080A6C26
+ .align 2, 0
+_080A6C1C: .4byte gBattleAnimArgs
+_080A6C20: .4byte gBattleAnimAttacker
+_080A6C24:
+ ldr r0, _080A6C44 @ =gBattleAnimTarget
+_080A6C26:
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ bl sub_80A6B0C
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldr r1, _080A6C48 @ =sub_80A6C50
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A6C4C @ =sub_8074F50
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6C44: .4byte gBattleAnimTarget
+_080A6C48: .4byte sub_80A6C50
+_080A6C4C: .4byte sub_8074F50
+ thumb_func_end sub_80A6C08
+
+ thumb_func_start sub_80A6C50
+sub_80A6C50: @ 80A6C50
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _080A6C76
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldr r1, _080A6C7C @ =move_anim_8074EE0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A6C80 @ =sub_8074F50
+ str r0, [r4, 0x1C]
+_080A6C76:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6C7C: .4byte move_anim_8074EE0
+_080A6C80: .4byte sub_8074F50
+ thumb_func_end sub_80A6C50
+
+ thumb_func_start sub_80A6C84
+sub_80A6C84: @ 80A6C84
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r0, _080A6C98 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080A6CA0
+ ldr r0, _080A6C9C @ =gBattleAnimAttacker
+ b _080A6CA2
+ .align 2, 0
+_080A6C98: .4byte gBattleAnimArgs
+_080A6C9C: .4byte gBattleAnimAttacker
+_080A6CA0:
+ ldr r0, _080A6CF4 @ =gBattleAnimTarget
+_080A6CA2:
+ ldrb r5, [r0]
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ movs r6, 0
+ strh r0, [r4, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_8076B2C
+ strh r0, [r4, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ bgt _080A6CCA
+ movs r0, 0xA
+ strh r0, [r4, 0x22]
+_080A6CCA:
+ movs r0, 0x1
+ strh r0, [r4, 0x2E]
+ strh r6, [r4, 0x30]
+ adds r1, r4, 0
+ adds r1, 0x43
+ ldrb r0, [r1]
+ strh r0, [r4, 0x32]
+ ldrb r0, [r1]
+ adds r0, 0x4
+ strh r0, [r4, 0x34]
+ strh r6, [r4, 0x36]
+ ldr r1, _080A6CF8 @ =sub_80A6D00
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A6CFC @ =sub_8074F50
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6CF4: .4byte gBattleAnimTarget
+_080A6CF8: .4byte sub_80A6D00
+_080A6CFC: .4byte sub_8074F50
+ thumb_func_end sub_80A6C84
+
+ thumb_func_start sub_80A6D00
+sub_80A6D00: @ 80A6D00
+ push {lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0x36]
+ adds r0, 0x1
+ strh r0, [r1, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _080A6D16
+ ldr r0, _080A6D1C @ =sub_80A6D20
+ str r0, [r1, 0x1C]
+_080A6D16:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6D1C: .4byte sub_80A6D20
+ thumb_func_end sub_80A6D00
+
+ thumb_func_start sub_80A6D20
+sub_80A6D20: @ 80A6D20
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x30]
+ adds r1, r0, 0x4
+ strh r1, [r2, 0x30]
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0xFE
+ ble _080A6D52
+ ldrh r0, [r2, 0x2E]
+ subs r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bne _080A6D4C
+ strh r0, [r2, 0x24]
+ ldr r0, _080A6D48 @ =sub_80A6C50
+ str r0, [r2, 0x1C]
+ b _080A6D88
+ .align 2, 0
+_080A6D48: .4byte sub_80A6C50
+_080A6D4C:
+ movs r0, 0xFF
+ ands r1, r0
+ strh r1, [r2, 0x30]
+_080A6D52:
+ movs r1, 0x30
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x4F
+ ble _080A6D62
+ ldrh r0, [r2, 0x34]
+ adds r1, r2, 0
+ adds r1, 0x43
+ strb r0, [r1]
+_080A6D62:
+ movs r3, 0x30
+ ldrsh r0, [r2, r3]
+ cmp r0, 0x9F
+ ble _080A6D72
+ ldrh r0, [r2, 0x32]
+ adds r1, r2, 0
+ adds r1, 0x43
+ strb r0, [r1]
+_080A6D72:
+ ldr r1, _080A6D8C @ =gSineTable
+ movs r3, 0x30
+ ldrsh r0, [r2, r3]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 19
+ asrs r1, r0, 1
+ adds r0, r1
+ strh r0, [r2, 0x24]
+_080A6D88:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6D8C: .4byte gSineTable
+ thumb_func_end sub_80A6D20
+
+ thumb_func_start sub_80A6D90
+sub_80A6D90: @ 80A6D90
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080A6DA4 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080A6DAC
+ ldr r0, _080A6DA8 @ =gBattleAnimAttacker
+ b _080A6DAE
+ .align 2, 0
+_080A6DA4: .4byte gBattleAnimArgs
+_080A6DA8: .4byte gBattleAnimAttacker
+_080A6DAC:
+ ldr r0, _080A6DD0 @ =gBattleAnimTarget
+_080A6DAE:
+ ldrb r4, [r0]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80A6B0C
+ adds r0, r4, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A6DD4
+ adds r0, r5, 0
+ movs r1, 0
+ bl StartSpriteAnim
+ movs r0, 0x2
+ b _080A6DDE
+ .align 2, 0
+_080A6DD0: .4byte gBattleAnimTarget
+_080A6DD4:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ movs r0, 0x3
+_080A6DDE:
+ strh r0, [r5, 0x2E]
+ ldr r0, _080A6DEC @ =sub_80A6DF0
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6DEC: .4byte sub_80A6DF0
+ thumb_func_end sub_80A6D90
+
+ thumb_func_start sub_80A6DF0
+sub_80A6DF0: @ 80A6DF0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ ble _080A6E1E
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x2E]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldr r1, _080A6E24 @ =sub_80A6E2C
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A6E28 @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+_080A6E1E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6E24: .4byte sub_80A6E2C
+_080A6E28: .4byte sub_8074F6C
+ thumb_func_end sub_80A6DF0
+
+ thumb_func_start sub_80A6E2C
+sub_80A6E2C: @ 80A6E2C
+ push {lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0x30]
+ adds r0, 0x1
+ strh r0, [r1, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ ble _080A6E44
+ adds r0, r1, 0
+ bl DestroyAnimSprite
+_080A6E44:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A6E2C
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s
new file mode 100644
index 000000000..34bb0db27
--- /dev/null
+++ b/asm/battle_anim_effects_2.s
@@ -0,0 +1,7946 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80A6E48
+sub_80A6E48: @ 80A6E48
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldr r5, _080A6E8C @ =gBattleAnimArgs
+ movs r0, 0
+ ldrsh r1, [r5, r0]
+ adds r0, r4, 0
+ bl sub_8074FF8
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r5, 0xA]
+ strh r0, [r4, 0x34]
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x36]
+ ldr r1, _080A6E90 @ =move_anim_8074EE0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r1, _080A6E94 @ =sub_8074BE4
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6E8C: .4byte gBattleAnimArgs
+_080A6E90: .4byte move_anim_8074EE0
+_080A6E94: .4byte sub_8074BE4
+ thumb_func_end sub_80A6E48
+
+ thumb_func_start sub_80A6E98
+sub_80A6E98: @ 80A6E98
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080A6EAC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080A6EB4
+ ldr r0, _080A6EB0 @ =gBattleAnimAttacker
+ b _080A6EB6
+ .align 2, 0
+_080A6EAC: .4byte gBattleAnimArgs
+_080A6EB0: .4byte gBattleAnimAttacker
+_080A6EB4:
+ ldr r0, _080A6ED0 @ =gBattleAnimTarget
+_080A6EB6:
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ bl sub_80A6B0C
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ strh r0, [r4, 0x30]
+ ldr r0, _080A6ED4 @ =sub_80A6ED8
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6ED0: .4byte gBattleAnimTarget
+_080A6ED4: .4byte sub_80A6ED8
+ thumb_func_end sub_80A6E98
+
+ thumb_func_start sub_80A6ED8
+sub_80A6ED8: @ 80A6ED8
+ push {lr}
+ adds r1, r0, 0
+ movs r2, 0x2E
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x1
+ beq _080A6F0A
+ cmp r0, 0x1
+ bgt _080A6EEE
+ cmp r0, 0
+ beq _080A6EF4
+ b _080A6F38
+_080A6EEE:
+ cmp r0, 0x2
+ beq _080A6F24
+ b _080A6F38
+_080A6EF4:
+ ldrh r0, [r1, 0x26]
+ subs r0, 0x3
+ strh r0, [r1, 0x26]
+ ldrh r0, [r1, 0x30]
+ adds r0, 0x1
+ strh r0, [r1, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _080A6F38
+ b _080A6F1C
+_080A6F0A:
+ ldrh r0, [r1, 0x26]
+ adds r0, 0x3
+ strh r0, [r1, 0x26]
+ ldrh r0, [r1, 0x30]
+ subs r0, 0x1
+ strh r0, [r1, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080A6F38
+_080A6F1C:
+ ldrh r0, [r1, 0x2E]
+ adds r0, 0x1
+ strh r0, [r1, 0x2E]
+ b _080A6F38
+_080A6F24:
+ ldrh r0, [r1, 0x30]
+ adds r0, 0x1
+ strh r0, [r1, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x40
+ bne _080A6F38
+ adds r0, r1, 0
+ bl DestroyAnimSprite
+_080A6F38:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A6ED8
+
+ thumb_func_start sub_80A6F3C
+sub_80A6F3C: @ 80A6F3C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r3, _080A6F88 @ =gSprites
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r1, [r4, 0x30]
+ ldrh r2, [r0, 0x24]
+ adds r1, r2
+ strh r1, [r0, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ strh r0, [r4, 0x30]
+ movs r0, 0x2E
+ ldrsh r2, [r4, r0]
+ cmp r2, 0
+ bne _080A6F7A
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ strh r2, [r0, 0x24]
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080A6F7A:
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6F88: .4byte gSprites
+ thumb_func_end sub_80A6F3C
+
+ thumb_func_start sub_80A6F8C
+sub_80A6F8C: @ 80A6F8C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r4, _080A6FD4 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r1, _080A6FD8 @ =gBattlerSpriteIds
+ ldr r0, _080A6FDC @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r6, [r0]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A6FE4
+ ldr r0, _080A6FE0 @ =gBattleAnimArgs
+ ldrh r1, [r5, 0x20]
+ ldrh r2, [r0]
+ subs r1, r2
+ strh r1, [r5, 0x20]
+ adds r1, r0, 0
+ b _080A6FEE
+ .align 2, 0
+_080A6FD4: .4byte gBattleAnimAttacker
+_080A6FD8: .4byte gBattlerSpriteIds
+_080A6FDC: .4byte gBattleAnimTarget
+_080A6FE0: .4byte gBattleAnimArgs
+_080A6FE4:
+ ldr r1, _080A7018 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r5, 0x20]
+ adds r0, r2
+ strh r0, [r5, 0x20]
+_080A6FEE:
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r5, 0x30]
+ strh r6, [r5, 0x32]
+ ldr r0, _080A701C @ =sub_80A6F3C
+ str r0, [r5, 0x1C]
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7018: .4byte gBattleAnimArgs
+_080A701C: .4byte sub_80A6F3C
+ thumb_func_end sub_80A6F8C
+
+ thumb_func_start sub_80A7020
+sub_80A7020: @ 80A7020
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r1, _080A704C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x38]
+ ldr r0, _080A7050 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ ldr r1, _080A7054 @ =sub_80A7058
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A704C: .4byte gBattleAnimArgs
+_080A7050: .4byte sub_8074C44
+_080A7054: .4byte sub_80A7058
+ thumb_func_end sub_80A7020
+
+ thumb_func_start sub_80A7058
+sub_80A7058: @ 80A7058
+ push {lr}
+ ldrh r1, [r0, 0x30]
+ strh r1, [r0, 0x2E]
+ ldrh r1, [r0, 0x20]
+ strh r1, [r0, 0x32]
+ ldrh r1, [r0, 0x22]
+ adds r1, 0xF
+ strh r1, [r0, 0x36]
+ ldr r1, _080A7078 @ =sub_8075590
+ str r1, [r0, 0x1C]
+ ldr r1, _080A707C @ =sub_80A7080
+ bl StoreSpriteCallbackInData6
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7078: .4byte sub_8075590
+_080A707C: .4byte sub_80A7080
+ thumb_func_end sub_80A7058
+
+ thumb_func_start sub_80A7080
+sub_80A7080: @ 80A7080
+ push {lr}
+ adds r1, r0, 0
+ ldrh r2, [r1, 0x38]
+ movs r3, 0x38
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _080A7096
+ adds r0, r1, 0
+ bl DestroyAnimSprite
+ b _080A709A
+_080A7096:
+ subs r0, r2, 0x1
+ strh r0, [r1, 0x38]
+_080A709A:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A7080
+
+ thumb_func_start sub_80A70A0
+sub_80A70A0: @ 80A70A0
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r1, _080A70CC @ =gBattlerSpriteIds
+ ldr r0, _080A70D0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_80758E0
+ ldr r1, _080A70D4 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _080A70D8 @ =sub_80A70DC
+ str r1, [r0]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A70CC: .4byte gBattlerSpriteIds
+_080A70D0: .4byte gBattleAnimAttacker
+_080A70D4: .4byte gTasks
+_080A70D8: .4byte sub_80A70DC
+ thumb_func_end sub_80A70A0
+
+ thumb_func_start sub_80A70DC
+sub_80A70DC: @ 80A70DC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080A710C @ =gBattlerSpriteIds
+ ldr r0, _080A7110 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r1, r0, r1
+ ldrb r4, [r1]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A7118
+ ldr r1, _080A7114 @ =gTasks
+ lsls r2, r5, 2
+ adds r0, r2, r5
+ lsls r0, 3
+ adds r0, r1
+ ldrh r0, [r0, 0x8]
+ negs r0, r0
+ lsls r0, 16
+ lsrs r3, r0, 16
+ adds r6, r2, 0
+ b _080A7126
+ .align 2, 0
+_080A710C: .4byte gBattlerSpriteIds
+_080A7110: .4byte gBattleAnimAttacker
+_080A7114: .4byte gTasks
+_080A7118:
+ ldr r2, _080A7158 @ =gTasks
+ lsls r1, r5, 2
+ adds r0, r1, r5
+ lsls r0, 3
+ adds r0, r2
+ ldrh r3, [r0, 0x8]
+ adds r6, r1, 0
+_080A7126:
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r4, 0
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldr r1, _080A7158 @ =gTasks
+ adds r0, r6, r5
+ lsls r0, 3
+ adds r1, r0, r1
+ movs r2, 0xA
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080A7160
+ ldrh r0, [r1, 0x8]
+ adds r0, 0xB0
+ strh r0, [r1, 0x8]
+ ldr r1, _080A715C @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ adds r1, 0x1
+ b _080A718A
+ .align 2, 0
+_080A7158: .4byte gTasks
+_080A715C: .4byte gSprites
+_080A7160:
+ cmp r0, 0x1
+ bne _080A7176
+ ldrh r0, [r1, 0xE]
+ adds r0, 0x1
+ strh r0, [r1, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1E
+ bne _080A71D0
+ movs r0, 0x2
+ b _080A71CE
+_080A7176:
+ ldrh r0, [r1, 0x8]
+ subs r0, 0xB0
+ strh r0, [r1, 0x8]
+ ldr r1, _080A71C4 @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ subs r1, 0x1
+_080A718A:
+ strh r1, [r0, 0x26]
+ adds r0, r4, 0
+ bl sub_80759DC
+ ldr r0, _080A71C8 @ =gTasks
+ adds r1, r6, r5
+ lsls r1, 3
+ adds r1, r0
+ movs r3, 0x8
+ ldrsh r2, [r1, r3]
+ movs r0, 0xF2
+ lsls r0, 4
+ cmp r2, r0
+ beq _080A71AA
+ cmp r2, 0
+ bne _080A71D0
+_080A71AA:
+ ldrh r2, [r1, 0xA]
+ movs r3, 0xA
+ ldrsh r0, [r1, r3]
+ cmp r0, 0x2
+ bne _080A71CC
+ adds r0, r4, 0
+ bl sub_8075980
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ b _080A71D0
+ .align 2, 0
+_080A71C4: .4byte gSprites
+_080A71C8: .4byte gTasks
+_080A71CC:
+ adds r0, r2, 0x1
+_080A71CE:
+ strh r0, [r1, 0xA]
+_080A71D0:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A70DC
+
+ thumb_func_start sub_80A71D8
+sub_80A71D8: @ 80A71D8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldr r0, _080A71FC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A7204
+ ldr r0, _080A7200 @ =gBattleAnimArgs
+ ldrh r1, [r4, 0x20]
+ ldrh r2, [r0]
+ subs r1, r2
+ strh r1, [r4, 0x20]
+ adds r5, r0, 0
+ b _080A7210
+ .align 2, 0
+_080A71FC: .4byte gBattleAnimAttacker
+_080A7200: .4byte gBattleAnimArgs
+_080A7204:
+ ldr r1, _080A7244 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ adds r5, r1, 0
+_080A7210:
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r0, _080A7248 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A724C
+ adds r3, r4, 0
+ adds r3, 0x3F
+ ldrb r0, [r3]
+ movs r1, 0x1
+ adds r2, r0, 0
+ orrs r2, r1
+ strb r2, [r3]
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _080A7260
+ movs r0, 0x2
+ orrs r2, r0
+ strb r2, [r3]
+ b _080A7260
+ .align 2, 0
+_080A7244: .4byte gBattleAnimArgs
+_080A7248: .4byte gBattleAnimAttacker
+_080A724C:
+ movs r2, 0x4
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _080A7260
+ adds r2, r4, 0
+ adds r2, 0x3F
+ ldrb r0, [r2]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r2]
+_080A7260:
+ ldr r0, _080A7274 @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+ ldr r1, _080A7278 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7274: .4byte sub_8074F6C
+_080A7278: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A71D8
+
+ thumb_func_start sub_80A727C
+sub_80A727C: @ 80A727C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_8075160
+ ldr r0, _080A7298 @ =sub_8074F50
+ str r0, [r4, 0x1C]
+ ldr r1, _080A729C @ =sub_80A72A0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7298: .4byte sub_8074F50
+_080A729C: .4byte sub_80A72A0
+ thumb_func_end sub_80A727C
+
+ thumb_func_start sub_80A72A0
+sub_80A72A0: @ 80A72A0
+ push {lr}
+ movs r1, 0x6
+ strh r1, [r0, 0x2E]
+ ldrh r1, [r0, 0x20]
+ strh r1, [r0, 0x32]
+ ldrh r1, [r0, 0x22]
+ subs r1, 0x20
+ strh r1, [r0, 0x36]
+ ldr r1, _080A72C0 @ =sub_8075590
+ str r1, [r0, 0x1C]
+ ldr r1, _080A72C4 @ =DestroyAnimSprite
+ bl StoreSpriteCallbackInData6
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A72C0: .4byte sub_8075590
+_080A72C4: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A72A0
+
+ thumb_func_start sub_80A72C8
+sub_80A72C8: @ 80A72C8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r5, r0, 0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A72EC
+ ldr r1, _080A72E8 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+ b _080A730E
+ .align 2, 0
+_080A72E8: .4byte gBattleAnimArgs
+_080A72EC:
+ ldr r0, _080A73B4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A730E
+ ldr r1, _080A73B8 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+ ldrh r0, [r1, 0x6]
+ negs r0, r0
+ strh r0, [r1, 0x6]
+_080A730E:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r4, _080A73BC @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ ldr r6, _080A73B8 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r6, 0x4]
+ adds r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r2, [r6, 0x6]
+ adds r0, r2
+ lsls r0, 16
+ lsrs r0, 16
+ adds r7, r0, 0
+ ldrh r1, [r5, 0x20]
+ mov r2, r8
+ lsls r0, r2, 16
+ asrs r0, 16
+ subs r0, r1
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r2, [r5, 0x22]
+ lsls r1, r7, 16
+ asrs r1, 16
+ subs r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl sub_8075B30
+ lsls r0, 16
+ movs r1, 0xF0
+ lsls r1, 24
+ adds r0, r1
+ lsrs r4, r0, 16
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A7380
+ ldr r2, _080A73C0 @ =0xffffa000
+ adds r0, r4, r2
+ lsls r0, 16
+ lsrs r4, r0, 16
+_080A7380:
+ movs r3, 0x80
+ lsls r3, 1
+ str r4, [sp]
+ adds r0, r5, 0
+ movs r1, 0
+ adds r2, r3, 0
+ bl sub_8075A1C
+ ldrh r0, [r6, 0x8]
+ strh r0, [r5, 0x2E]
+ mov r0, r8
+ strh r0, [r5, 0x32]
+ strh r7, [r5, 0x36]
+ ldr r0, _080A73C4 @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080A73C8 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A73B4: .4byte gBattleAnimAttacker
+_080A73B8: .4byte gBattleAnimArgs
+_080A73BC: .4byte gBattleAnimTarget
+_080A73C0: .4byte 0xffffa000
+_080A73C4: .4byte sub_8075590
+_080A73C8: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A72C8
+
+ thumb_func_start sub_80A73CC
+sub_80A73CC: @ 80A73CC
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x2E]
+ subs r1, r0, 0x1
+ strh r1, [r3, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080A73F6
+ ldr r2, _080A73FC @ =gTasks
+ movs r0, 0x3C
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0xA]
+ subs r1, 0x1
+ strh r1, [r0, 0xA]
+ adds r0, r3, 0
+ bl DestroySprite
+_080A73F6:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A73FC: .4byte gTasks
+ thumb_func_end sub_80A73CC
+
+ thumb_func_start sub_80A7400
+sub_80A7400: @ 80A7400
+ push {r4,lr}
+ adds r2, r0, 0
+ movs r0, 0x3C
+ ldrsh r1, [r2, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ ldr r1, _080A7430 @ =gTasks
+ adds r4, r0, r1
+ movs r3, 0x2E
+ ldrsh r1, [r2, r3]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ ble _080A7434
+ ldrh r0, [r2, 0x34]
+ ldrh r1, [r2, 0x38]
+ adds r0, r1
+ strh r0, [r2, 0x38]
+ ldrh r0, [r2, 0x36]
+ ldrh r3, [r2, 0x3A]
+ adds r0, r3
+ b _080A7442
+ .align 2, 0
+_080A7430: .4byte gTasks
+_080A7434:
+ ldrh r0, [r2, 0x38]
+ ldrh r1, [r2, 0x34]
+ subs r0, r1
+ strh r0, [r2, 0x38]
+ ldrh r0, [r2, 0x3A]
+ ldrh r1, [r2, 0x36]
+ subs r0, r1
+_080A7442:
+ strh r0, [r2, 0x3A]
+ ldrh r0, [r2, 0x38]
+ ldrh r1, [r2, 0x30]
+ adds r3, r0, r1
+ strh r3, [r2, 0x30]
+ ldrh r0, [r2, 0x3A]
+ ldrh r1, [r2, 0x32]
+ adds r0, r1
+ strh r0, [r2, 0x32]
+ ldrh r1, [r4, 0x16]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A7466
+ lsls r0, r3, 16
+ lsrs r0, 24
+ negs r0, r0
+ b _080A746A
+_080A7466:
+ lsls r0, r3, 16
+ lsrs r0, 24
+_080A746A:
+ strh r0, [r2, 0x24]
+ ldrh r1, [r4, 0x18]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A747E
+ ldrh r0, [r2, 0x32]
+ lsrs r0, 8
+ negs r0, r0
+ b _080A7482
+_080A747E:
+ ldrh r0, [r2, 0x32]
+ lsrs r0, 8
+_080A7482:
+ strh r0, [r2, 0x26]
+ ldrh r0, [r2, 0x2E]
+ subs r1, r0, 0x1
+ strh r1, [r2, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080A7498
+ movs r0, 0x1E
+ strh r0, [r2, 0x2E]
+ ldr r0, _080A74A0 @ =sub_80A73CC
+ str r0, [r2, 0x1C]
+_080A7498:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A74A0: .4byte sub_80A73CC
+ thumb_func_end sub_80A7400
+
+ thumb_func_start sub_80A74A4
+sub_80A74A4: @ 80A74A4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r0, 0
+ movs r0, 0x3C
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ ldr r1, _080A74E8 @ =gTasks
+ adds r6, r0, r1
+ ldrh r2, [r6, 0x16]
+ movs r1, 0x2
+ negs r1, r1
+ adds r0, r1, 0
+ ands r0, r2
+ ldrh r3, [r7, 0x30]
+ adds r2, r0, r3
+ strh r2, [r7, 0x30]
+ ldrh r0, [r6, 0x18]
+ ands r1, r0
+ ldrh r0, [r7, 0x32]
+ adds r1, r0
+ strh r1, [r7, 0x32]
+ ldrh r1, [r6, 0x16]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A74EC
+ lsls r0, r2, 16
+ lsrs r0, 24
+ negs r0, r0
+ b _080A74F0
+ .align 2, 0
+_080A74E8: .4byte gTasks
+_080A74EC:
+ lsls r0, r2, 16
+ lsrs r0, 24
+_080A74F0:
+ strh r0, [r7, 0x24]
+ ldrh r1, [r6, 0x18]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A7504
+ ldrh r0, [r7, 0x32]
+ lsrs r0, 8
+ negs r0, r0
+ b _080A7508
+_080A7504:
+ ldrh r0, [r7, 0x32]
+ lsrs r0, 8
+_080A7508:
+ strh r0, [r7, 0x26]
+ ldrh r0, [r7, 0x2E]
+ subs r1, r0, 0x1
+ strh r1, [r7, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080A75D4
+ movs r4, 0
+ movs r0, 0x8
+ strh r0, [r7, 0x2E]
+ movs r0, 0x4
+ strh r0, [r6, 0x12]
+ movs r0, 0x80
+ lsls r0, 5
+ bl sub_80D8B90
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r0, [r7, 0x24]
+ ldrh r1, [r7, 0x20]
+ adds r2, r0, r1
+ strh r2, [r7, 0x20]
+ ldrh r0, [r7, 0x26]
+ ldrh r3, [r7, 0x22]
+ adds r0, r3
+ strh r0, [r7, 0x22]
+ strh r4, [r7, 0x26]
+ strh r4, [r7, 0x24]
+ ldrh r3, [r6, 0x1E]
+ movs r0, 0x1E
+ ldrsh r1, [r6, r0]
+ lsls r0, r2, 16
+ asrs r0, 16
+ cmp r1, r0
+ blt _080A7552
+ subs r0, r3, r2
+ b _080A7554
+_080A7552:
+ subs r0, r2, r3
+_080A7554:
+ lsls r0, 24
+ lsrs r4, r0, 16
+ ldrh r3, [r6, 0x20]
+ movs r0, 0x20
+ ldrsh r1, [r6, r0]
+ ldrh r2, [r7, 0x22]
+ movs r6, 0x22
+ ldrsh r0, [r7, r6]
+ cmp r1, r0
+ blt _080A756C
+ subs r0, r3, r2
+ b _080A756E
+_080A756C:
+ subs r0, r2, r3
+_080A756E:
+ lsls r0, 24
+ lsrs r0, 16
+ mov r8, r0
+ movs r0, 0
+ strh r0, [r7, 0x32]
+ strh r0, [r7, 0x30]
+ strh r0, [r7, 0x3A]
+ strh r0, [r7, 0x38]
+ lsls r0, r4, 16
+ asrs r0, 16
+ lsls r5, 16
+ asrs r5, 16
+ adds r1, r5, 0
+ bl sub_80D8AA0
+ adds r4, r0, 0
+ lsls r4, 16
+ asrs r4, 16
+ movs r6, 0xE0
+ lsls r6, 1
+ adds r0, r6, 0
+ bl sub_80D8B90
+ adds r1, r0, 0
+ lsls r1, 16
+ asrs r1, 16
+ adds r0, r4, 0
+ bl sub_80D8AA0
+ strh r0, [r7, 0x34]
+ mov r1, r8
+ lsls r0, r1, 16
+ asrs r0, 16
+ adds r1, r5, 0
+ bl sub_80D8AA0
+ adds r4, r0, 0
+ lsls r4, 16
+ asrs r4, 16
+ adds r0, r6, 0
+ bl sub_80D8B90
+ adds r1, r0, 0
+ lsls r1, 16
+ asrs r1, 16
+ adds r0, r4, 0
+ bl sub_80D8AA0
+ strh r0, [r7, 0x36]
+ ldr r0, _080A75E0 @ =sub_80A7400
+ str r0, [r7, 0x1C]
+_080A75D4:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A75E0: .4byte sub_80A7400
+ thumb_func_end sub_80A74A4
+
+ thumb_func_start sub_80A75E4
+sub_80A75E4: @ 80A75E4
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _080A7608 @ =gTasks
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0xA
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080A7602
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080A7602:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7608: .4byte gTasks
+ thumb_func_end sub_80A75E4
+
+ thumb_func_start sub_80A760C
+sub_80A760C: @ 80A760C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080A7660 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrh r0, [r5, 0x8]
+ subs r1, r0, 0x1
+ strh r1, [r5, 0x8]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080A76E0
+ ldr r0, _080A7664 @ =gUnknown_83E3C28
+ movs r2, 0x1A
+ ldrsh r1, [r5, r2]
+ movs r3, 0x1C
+ ldrsh r2, [r5, r3]
+ ldrb r3, [r5, 0xC]
+ ldrb r4, [r5, 0xA]
+ subs r3, r4
+ lsls r3, 24
+ lsrs r3, 24
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ mov r12, r0
+ lsls r0, 4
+ add r0, r12
+ lsls r0, 2
+ ldr r1, _080A7668 @ =gSprites
+ adds r6, r0, r1
+ movs r1, 0x10
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080A766C
+ cmp r0, 0x2
+ beq _080A7682
+ b _080A7690
+ .align 2, 0
+_080A7660: .4byte gTasks
+_080A7664: .4byte gUnknown_83E3C28
+_080A7668: .4byte gSprites
+_080A766C:
+ ldrb r2, [r6, 0x3]
+ lsls r1, r2, 26
+ lsrs r1, 27
+ movs r0, 0x18
+ orrs r1, r0
+ lsls r1, 1
+ subs r0, 0x57
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r6, 0x3]
+ b _080A7690
+_080A7682:
+ ldrb r0, [r6, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x10
+ orrs r1, r0
+ strb r1, [r6, 0x3]
+_080A7690:
+ ldr r3, _080A76E8 @ =gTasks
+ lsls r2, r7, 2
+ adds r2, r7
+ lsls r2, 3
+ adds r4, r2, r3
+ ldrh r0, [r4, 0x12]
+ ldrh r1, [r4, 0x14]
+ subs r0, r1
+ strh r0, [r6, 0x2E]
+ strh r7, [r6, 0x3C]
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ adds r0, 0xD
+ lsls r0, 1
+ adds r0, r2
+ adds r3, 0x8
+ adds r0, r3
+ mov r2, r12
+ strh r2, [r0]
+ ldrh r0, [r4, 0xE]
+ strh r0, [r4, 0x8]
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ movs r0, 0x3F
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x93
+ bl PlaySE12WithPanning
+ movs r3, 0xA
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x2
+ ble _080A76E0
+ ldr r0, _080A76EC @ =sub_80A75E4
+ str r0, [r4]
+_080A76E0:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A76E8: .4byte gTasks
+_080A76EC: .4byte sub_80A75E4
+ thumb_func_end sub_80A760C
+
+ thumb_func_start sub_80A76F0
+sub_80A76F0: @ 80A76F0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r0, 0
+ mov r9, r0
+ movs r5, 0
+ mov r0, sp
+ mov r1, r9
+ strh r1, [r0]
+ mov r4, sp
+ adds r4, 0x2
+ strh r1, [r4]
+ bl sub_8073788
+ lsls r0, 24
+ mov r10, r4
+ cmp r0, 0
+ beq _080A775C
+ ldr r1, _080A774C @ =gTasks
+ lsls r2, r7, 2
+ adds r0, r2, r7
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x2
+ strh r1, [r0, 0x10]
+ ldr r3, _080A7750 @ =gBattleAnimArgs
+ ldrh r0, [r3]
+ negs r0, r0
+ strh r0, [r3]
+ ldrh r1, [r3, 0x4]
+ movs r0, 0x1
+ ands r0, r1
+ mov r8, r2
+ cmp r0, 0
+ beq _080A7754
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r1
+ strh r0, [r3, 0x4]
+ b _080A77B6
+ .align 2, 0
+_080A774C: .4byte gTasks
+_080A7750: .4byte gBattleAnimArgs
+_080A7754:
+ movs r0, 0x1
+ orrs r0, r1
+ strh r0, [r3, 0x4]
+ b _080A77B6
+_080A775C:
+ ldr r1, _080A77A0 @ =gUnknown_2023BD6
+ ldr r0, _080A77A4 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r3, 0x1
+ adds r0, r3, 0
+ ands r0, r1
+ lsls r2, r7, 2
+ mov r8, r2
+ cmp r0, 0
+ bne _080A77B6
+ ldr r1, _080A77A8 @ =gTasks
+ adds r0, r2, r7
+ lsls r0, 3
+ adds r0, r1
+ strh r3, [r0, 0x10]
+ ldr r2, _080A77AC @ =gBattleAnimArgs
+ ldrh r0, [r2]
+ negs r0, r0
+ strh r0, [r2]
+ ldrh r0, [r2, 0x2]
+ negs r0, r0
+ strh r0, [r2, 0x2]
+ ldrh r1, [r2, 0x4]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080A77B0
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r1
+ b _080A77B4
+ .align 2, 0
+_080A77A0: .4byte gUnknown_2023BD6
+_080A77A4: .4byte gBattleAnimTarget
+_080A77A8: .4byte gTasks
+_080A77AC: .4byte gBattleAnimArgs
+_080A77B0:
+ movs r0, 0x1
+ orrs r0, r1
+_080A77B4:
+ strh r0, [r2, 0x4]
+_080A77B6:
+ ldr r5, _080A7810 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8074480
+ ldr r1, _080A7814 @ =gTasks
+ mov r3, r8
+ adds r4, r3, r7
+ lsls r4, 3
+ adds r4, r1
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x1A]
+ adds r6, r0, 0
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x1C]
+ mov r9, r0
+ ldr r0, _080A7818 @ =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A7820
+ ldr r4, _080A781C @ =gBattleAnimTarget
+ ldrb r1, [r4]
+ movs r0, 0x2
+ eors r0, r1
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A7820
+ ldrb r0, [r4]
+ movs r1, 0
+ mov r2, sp
+ mov r3, r10
+ bl sub_8076D9C
+ b _080A7842
+ .align 2, 0
+_080A7810: .4byte gBattleAnimAttacker
+_080A7814: .4byte gTasks
+_080A7818: .4byte gBattleTypeFlags
+_080A781C: .4byte gBattleAnimTarget
+_080A7820:
+ mov r5, sp
+ ldr r4, _080A787C @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ mov r1, r10
+ strh r0, [r1]
+_080A7842:
+ mov r4, sp
+ ldr r0, _080A7880 @ =gTasks
+ mov r2, r8
+ adds r1, r2, r7
+ lsls r1, 3
+ adds r1, r0
+ mov r2, sp
+ ldr r3, _080A7884 @ =gBattleAnimArgs
+ ldrh r0, [r3]
+ ldrh r2, [r2]
+ adds r0, r2
+ strh r0, [r1, 0x1E]
+ strh r0, [r4]
+ ldrh r0, [r3, 0x2]
+ mov r3, r10
+ ldrh r3, [r3]
+ adds r0, r3
+ strh r0, [r1, 0x20]
+ mov r1, r10
+ strh r0, [r1]
+ mov r0, sp
+ ldrh r2, [r0]
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ adds r1, r6, 0
+ cmp r0, r1
+ blt _080A7888
+ subs r0, r2, r1
+ b _080A788A
+ .align 2, 0
+_080A787C: .4byte gBattleAnimTarget
+_080A7880: .4byte gTasks
+_080A7884: .4byte gBattleAnimArgs
+_080A7888:
+ subs r0, r1, r2
+_080A788A:
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r4, r0, 16
+ asrs r4, 16
+ ldr r5, _080A7900 @ =gBattleAnimArgs
+ ldrh r1, [r5, 0x4]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r1
+ lsls r0, 16
+ asrs r0, 16
+ bl sub_80D8B90
+ adds r1, r0, 0
+ lsls r1, 16
+ asrs r1, 16
+ adds r0, r4, 0
+ bl sub_80D8AA0
+ ldr r2, _080A7904 @ =gTasks
+ mov r3, r8
+ adds r1, r3, r7
+ lsls r1, 3
+ adds r6, r1, r2
+ strh r0, [r6, 0x12]
+ movs r1, 0x12
+ ldrsh r0, [r6, r1]
+ movs r1, 0x80
+ bl sub_80D8AA0
+ strh r0, [r6, 0x14]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r6, 0x16]
+ mov r2, r10
+ ldrh r1, [r2]
+ movs r3, 0
+ ldrsh r0, [r2, r3]
+ mov r4, r9
+ cmp r0, r4
+ blt _080A7908
+ subs r4, r1, r4
+ lsls r4, 16
+ asrs r4, 16
+ movs r1, 0x12
+ ldrsh r0, [r6, r1]
+ bl sub_80D8B90
+ adds r1, r0, 0
+ lsls r1, 16
+ asrs r1, 16
+ adds r0, r4, 0
+ bl sub_80D8AA0
+ movs r1, 0x2
+ negs r1, r1
+ ands r1, r0
+ strh r1, [r6, 0x18]
+ b _080A7928
+ .align 2, 0
+_080A7900: .4byte gBattleAnimArgs
+_080A7904: .4byte gTasks
+_080A7908:
+ subs r4, r1
+ lsls r4, 16
+ asrs r4, 16
+ movs r2, 0x12
+ ldrsh r0, [r6, r2]
+ bl sub_80D8B90
+ adds r1, r0, 0
+ lsls r1, 16
+ asrs r1, 16
+ adds r0, r4, 0
+ bl sub_80D8AA0
+ movs r1, 0x1
+ orrs r0, r1
+ strh r0, [r6, 0x18]
+_080A7928:
+ ldr r1, _080A7968 @ =gTasks
+ mov r3, r8
+ adds r0, r3, r7
+ lsls r0, 3
+ adds r5, r0, r1
+ ldr r4, _080A796C @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x6]
+ strh r0, [r5, 0xE]
+ ldrh r1, [r4, 0x8]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _080A7978
+ movs r0, 0x80
+ eors r0, r1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3F
+ ble _080A79A0
+ ldr r0, _080A7970 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_807685C
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080A7974 @ =0x0000ffc0
+ adds r1, r2, 0
+ ldrh r4, [r4, 0x8]
+ adds r1, r4
+ adds r0, r1
+ b _080A79B0
+ .align 2, 0
+_080A7968: .4byte gTasks
+_080A796C: .4byte gBattleAnimArgs
+_080A7970: .4byte gBattleAnimTarget
+_080A7974: .4byte 0x0000ffc0
+_080A7978:
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0x3F
+ ble _080A79A0
+ ldr r0, _080A7998 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_807685C
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _080A799C @ =0x0000ffc0
+ adds r1, r3, 0
+ ldrh r4, [r4, 0x8]
+ adds r1, r4
+ adds r0, r1
+ b _080A79B0
+ .align 2, 0
+_080A7998: .4byte gBattleAnimTarget
+_080A799C: .4byte 0x0000ffc0
+_080A79A0:
+ ldr r0, _080A79DC @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_807685C
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x8]
+ subs r0, r1
+_080A79B0:
+ strh r0, [r5, 0xC]
+ ldr r0, _080A79E0 @ =gTasks
+ mov r2, r8
+ adds r1, r2, r7
+ lsls r1, 3
+ adds r1, r0
+ movs r3, 0xC
+ ldrsh r0, [r1, r3]
+ cmp r0, 0x2
+ bgt _080A79C8
+ movs r0, 0x3
+ strh r0, [r1, 0xC]
+_080A79C8:
+ ldr r0, _080A79E4 @ =sub_80A760C
+ str r0, [r1]
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A79DC: .4byte gBattleAnimTarget
+_080A79E0: .4byte gTasks
+_080A79E4: .4byte sub_80A760C
+ thumb_func_end sub_80A76F0
+
+ thumb_func_start sub_80A79E8
+sub_80A79E8: @ 80A79E8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_8075160
+ ldr r0, _080A7A10 @ =gUnknown_83E3D18
+ ldrh r0, [r0, 0x2]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 20
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1
+ strh r0, [r4, 0x2E]
+ ldr r0, _080A7A14 @ =sub_80A7A18
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7A10: .4byte gUnknown_83E3D18
+_080A7A14: .4byte sub_80A7A18
+ thumb_func_end sub_80A79E8
+
+ thumb_func_start sub_80A7A18
+sub_80A7A18: @ 80A7A18
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _080A7A7C
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldrh r5, [r4, 0x2E]
+ ldr r1, _080A7A84 @ =gPlttBufferFaded
+ adds r0, r5, 0
+ adds r0, 0x8
+ lsls r0, 1
+ adds r0, r1
+ ldrh r7, [r0]
+ adds r6, r1, 0
+ adds r1, r5, 0
+ adds r1, 0x9
+ lsls r0, r5, 1
+ adds r0, r6
+ adds r2, r0, 0
+ adds r2, 0x10
+ movs r3, 0x7
+ lsls r1, 1
+ adds r1, r6
+_080A7A50:
+ ldrh r0, [r1]
+ strh r0, [r2]
+ adds r1, 0x2
+ adds r2, 0x2
+ subs r3, 0x1
+ cmp r3, 0
+ bge _080A7A50
+ adds r0, r5, 0
+ adds r0, 0xF
+ lsls r0, 1
+ adds r0, r6
+ strh r7, [r0]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x18
+ bne _080A7A7C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A7A7C:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7A84: .4byte gPlttBufferFaded
+ thumb_func_end sub_80A7A18
+
+ thumb_func_start sub_80A7A88
+sub_80A7A88: @ 80A7A88
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r4, _080A7B28 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080A7B2C @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4, 0x6]
+ adds r0, r1
+ lsls r0, 16
+ lsrs r7, r0, 16
+ ldr r0, _080A7B30 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A7ACC
+ ldrh r0, [r4, 0x4]
+ negs r0, r0
+ strh r0, [r4, 0x4]
+_080A7ACC:
+ lsls r0, r6, 16
+ asrs r0, 16
+ ldrh r1, [r4, 0x4]
+ adds r0, r1
+ lsls r0, 16
+ ldrh r1, [r5, 0x20]
+ lsrs r6, r0, 16
+ asrs r0, 16
+ subs r0, r1
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r2, [r5, 0x22]
+ lsls r1, r7, 16
+ asrs r1, 16
+ subs r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl sub_8075B30
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 16
+ movs r3, 0x80
+ lsls r3, 1
+ str r0, [sp]
+ adds r0, r5, 0
+ movs r1, 0
+ adds r2, r3, 0
+ bl sub_8075A1C
+ ldrh r0, [r4, 0x8]
+ strh r0, [r5, 0x2E]
+ strh r6, [r5, 0x32]
+ strh r7, [r5, 0x36]
+ ldr r0, _080A7B34 @ =sub_80756A4
+ str r0, [r5, 0x1C]
+ ldr r1, _080A7B38 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7B28: .4byte gBattleAnimTarget
+_080A7B2C: .4byte gBattleAnimArgs
+_080A7B30: .4byte gBattleAnimAttacker
+_080A7B34: .4byte sub_80756A4
+_080A7B38: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A7A88
+
+ thumb_func_start sub_80A7B3C
+sub_80A7B3C: @ 80A7B3C
+ ldr r1, _080A7B4C @ =0x0000fff0
+ strh r1, [r0, 0x32]
+ ldrh r1, [r0, 0x22]
+ adds r1, 0x8
+ strh r1, [r0, 0x22]
+ ldr r1, _080A7B50 @ =sub_80A7B54
+ str r1, [r0, 0x1C]
+ bx lr
+ .align 2, 0
+_080A7B4C: .4byte 0x0000fff0
+_080A7B50: .4byte sub_80A7B54
+ thumb_func_end sub_80A7B3C
+
+ thumb_func_start sub_80A7B54
+sub_80A7B54: @ 80A7B54
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x80
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ ldr r0, _080A7BC0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A7B78
+ ldrh r0, [r4, 0x24]
+ negs r0, r0
+ strh r0, [r4, 0x24]
+_080A7B78:
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r2, 0x32
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x5
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7E
+ ble _080A7BB8
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _080A7BB8
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A7BB8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7BC0: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80A7B54
+
+ thumb_func_start sub_80A7BC4
+sub_80A7BC4: @ 80A7BC4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ movs r0, 0x14
+ strh r0, [r4, 0x2E]
+ ldr r5, _080A7C10 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ ldr r0, _080A7C14 @ =sub_8075590
+ str r0, [r4, 0x1C]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r1, _080A7C18 @ =sub_80A7C1C
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7C10: .4byte gBattleAnimTarget
+_080A7C14: .4byte sub_8075590
+_080A7C18: .4byte sub_80A7C1C
+ thumb_func_end sub_80A7BC4
+
+ thumb_func_start sub_80A7C1C
+sub_80A7C1C: @ 80A7C1C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x3F
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x9F
+ bl PlaySE12WithPanning
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ strh r1, [r4, 0x26]
+ strh r1, [r4, 0x24]
+ movs r2, 0
+ movs r1, 0x7
+ adds r0, r4, 0
+ adds r0, 0x3C
+_080A7C50:
+ strh r2, [r0]
+ subs r0, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bge _080A7C50
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x7
+ ands r0, r1
+ ldr r2, _080A7C98 @ =0x0000fff4
+ adds r1, r2, 0
+ subs r1, r0
+ strh r1, [r4, 0x3A]
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xA0
+ bl __umodsi3
+ adds r0, 0xA0
+ strh r0, [r4, 0x3C]
+ ldr r0, _080A7C9C @ =sub_80A7CA0
+ str r0, [r4, 0x1C]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7C98: .4byte 0x0000fff4
+_080A7C9C: .4byte sub_80A7CA0
+ thumb_func_end sub_80A7C1C
+
+ thumb_func_start sub_80A7CA0
+sub_80A7CA0: @ 80A7CA0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x3C]
+ ldrh r2, [r4, 0x2E]
+ adds r0, r1, r2
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r2, r0, 24
+ strh r2, [r4, 0x24]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A7CBE
+ negs r0, r2
+ strh r0, [r4, 0x24]
+_080A7CBE:
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r2, 0x3A
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x8
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7E
+ ble _080A7CFE
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080A7CFE
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A7CFE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A7CA0
+
+ thumb_func_start sub_80A7D04
+sub_80A7D04: @ 80A7D04
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_8075160
+ ldr r0, _080A7D54 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A7D22
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x10
+ strh r0, [r4, 0x22]
+_080A7D22:
+ ldr r1, _080A7D58 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0xA]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r1, 0xC]
+ strh r0, [r4, 0x34]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x36]
+ ldr r0, _080A7D5C @ =sub_8074A80
+ str r0, [r4, 0x1C]
+ ldr r1, _080A7D60 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7D54: .4byte gBattleAnimAttacker
+_080A7D58: .4byte gBattleAnimArgs
+_080A7D5C: .4byte sub_8074A80
+_080A7D60: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A7D04
+
+ thumb_func_start sub_80A7D64
+sub_80A7D64: @ 80A7D64
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r5, r0, 0
+ movs r7, 0x20
+ ldr r4, _080A7DE0 @ =0x0000ffe0
+ movs r0, 0x10
+ mov r8, r0
+ ldr r6, _080A7DE4 @ =0x0000fff0
+ ldr r0, _080A7DE8 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ beq _080A7D90
+ adds r7, r4, 0
+ movs r4, 0x20
+ mov r8, r6
+ movs r6, 0x10
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+_080A7D90:
+ lsls r0, r7, 16
+ asrs r0, 16
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ lsls r0, r4, 16
+ asrs r0, 16
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ movs r0, 0x6
+ strh r0, [r5, 0x2E]
+ ldr r4, _080A7DEC @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ add r0, r8
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r6
+ strh r0, [r5, 0x36]
+ ldr r0, _080A7DF0 @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080A7DF4 @ =sub_80A7DF8
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7DE0: .4byte 0x0000ffe0
+_080A7DE4: .4byte 0x0000fff0
+_080A7DE8: .4byte gBattleAnimArgs
+_080A7DEC: .4byte gBattleAnimTarget
+_080A7DF0: .4byte sub_8075590
+_080A7DF4: .4byte sub_80A7DF8
+ thumb_func_end sub_80A7D64
+
+ thumb_func_start sub_80A7DF8
+sub_80A7DF8: @ 80A7DF8
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080A7E0E
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080A7E0E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A7DF8
+
+ thumb_func_start sub_80A7E14
+sub_80A7E14: @ 80A7E14
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r5, r0, 0
+ movs r0, 0x20
+ mov r8, r0
+ ldr r4, _080A7EA8 @ =0x0000ffe0
+ movs r2, 0x10
+ mov r9, r2
+ ldr r6, _080A7EAC @ =0x0000fff0
+ ldr r7, _080A7EB0 @ =gBattleAnimArgs
+ ldrh r1, [r7]
+ movs r2, 0
+ ldrsh r0, [r7, r2]
+ cmp r0, 0
+ beq _080A7E48
+ mov r8, r4
+ movs r4, 0x20
+ mov r9, r6
+ movs r6, 0x10
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl StartSpriteAnim
+_080A7E48:
+ mov r0, r8
+ lsls r1, r0, 16
+ asrs r1, 16
+ ldrh r2, [r5, 0x20]
+ adds r1, r2
+ strh r1, [r5, 0x20]
+ lsls r0, r4, 16
+ asrs r0, 16
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ movs r0, 0x6
+ strh r0, [r5, 0x2E]
+ strh r1, [r5, 0x30]
+ ldr r4, _080A7EB4 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ add r0, r9
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r6
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldrh r0, [r7]
+ strh r0, [r5, 0x38]
+ ldrh r0, [r5, 0x2E]
+ strh r0, [r5, 0x3A]
+ ldr r0, _080A7EB8 @ =sub_80A7EBC
+ str r0, [r5, 0x1C]
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7EA8: .4byte 0x0000ffe0
+_080A7EAC: .4byte 0x0000fff0
+_080A7EB0: .4byte gBattleAnimArgs
+_080A7EB4: .4byte gBattleAnimTarget
+_080A7EB8: .4byte sub_80A7EBC
+ thumb_func_end sub_80A7E14
+
+ thumb_func_start sub_80A7EBC
+sub_80A7EBC: @ 80A7EBC
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A7F20
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080A7F20
+ adds r0, r4, 0
+ movs r1, 0
+ bl SeekSpriteAnim
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ movs r2, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ movs r0, 0x2
+ strh r0, [r4, 0x24]
+ ldr r0, _080A7F28 @ =0x0000fffe
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x3A]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x30]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x32]
+ eors r0, r1
+ strh r0, [r4, 0x32]
+ strh r2, [r4, 0x36]
+ strh r2, [r4, 0x34]
+ ldr r0, _080A7F2C @ =sub_80A7F30
+ str r0, [r4, 0x1C]
+_080A7F20:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7F28: .4byte 0x0000fffe
+_080A7F2C: .4byte sub_80A7F30
+ thumb_func_end sub_80A7EBC
+
+ thumb_func_start sub_80A7F30
+sub_80A7F30: @ 80A7F30
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080A7F48
+ ldrh r0, [r4, 0x24]
+ negs r0, r0
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x26]
+ negs r0, r0
+ strh r0, [r4, 0x26]
+_080A7F48:
+ ldrh r0, [r4, 0x34]
+ movs r1, 0x1
+ eors r0, r1
+ movs r1, 0
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x1
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x33
+ bne _080A7F8A
+ strh r1, [r4, 0x26]
+ strh r1, [r4, 0x24]
+ strh r1, [r4, 0x36]
+ strh r1, [r4, 0x34]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldrh r0, [r4, 0x38]
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldr r0, _080A7F90 @ =sub_80A7F94
+ str r0, [r4, 0x1C]
+_080A7F8A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7F90: .4byte sub_80A7F94
+ thumb_func_end sub_80A7F30
+
+ thumb_func_start sub_80A7F94
+sub_80A7F94: @ 80A7F94
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A7FA8
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A7FA8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A7F94
+
+ thumb_func_start sub_80A7FB0
+sub_80A7FB0: @ 80A7FB0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_80758E0
+ adds r0, r4, 0
+ movs r1, 0xD0
+ movs r2, 0xD0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldr r1, _080A8008 @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x5]
+ lsrs r0, 4
+ adds r0, 0x10
+ movs r1, 0
+ bl sub_8075B48
+ ldr r1, _080A800C @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x50
+ strh r1, [r0, 0x8]
+ ldr r1, _080A8010 @ =sub_80A8014
+ str r1, [r0]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8008: .4byte gSprites
+_080A800C: .4byte gTasks
+_080A8010: .4byte sub_80A8014
+ thumb_func_end sub_80A7FB0
+
+ thumb_func_start sub_80A8014
+sub_80A8014: @ 80A8014
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080A806C @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ ldrh r1, [r0, 0x8]
+ subs r1, 0x1
+ strh r1, [r0, 0x8]
+ lsls r1, 16
+ asrs r1, 16
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080A8064
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ bl sub_8075980
+ ldr r1, _080A8070 @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x5]
+ lsrs r0, 4
+ adds r0, 0x10
+ movs r1, 0x1
+ bl sub_8075B48
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080A8064:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A806C: .4byte gTasks
+_080A8070: .4byte gSprites
+ thumb_func_end sub_80A8014
+
+ thumb_func_start sub_80A8074
+sub_80A8074: @ 80A8074
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080A80C0 @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ strh r0, [r4, 0x8]
+ movs r1, 0
+ bl sub_80758E0
+ strh r5, [r4, 0xA]
+ strh r5, [r4, 0xC]
+ strh r5, [r4, 0xE]
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r4, 0x10]
+ strh r5, [r4, 0x12]
+ strh r5, [r4, 0x14]
+ ldr r0, _080A80C4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_807685C
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x16]
+ ldr r0, _080A80C8 @ =sub_80A80CC
+ str r0, [r4]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A80C0: .4byte gTasks
+_080A80C4: .4byte gBattleAnimAttacker
+_080A80C8: .4byte sub_80A80CC
+ thumb_func_end sub_80A8074
+
+ thumb_func_start sub_80A80CC
+sub_80A80CC: @ 80A80CC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080A80F0 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ bls _080A80E6
+ b _080A81F6
+_080A80E6:
+ lsls r0, 2
+ ldr r1, _080A80F4 @ =_080A80F8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080A80F0: .4byte gTasks
+_080A80F4: .4byte _080A80F8
+ .align 2, 0
+_080A80F8:
+ .4byte _080A8110
+ .4byte _080A8158
+ .4byte _080A818E
+ .4byte _080A8194
+ .4byte _080A81A4
+ .4byte _080A81D8
+_080A8110:
+ movs r2, 0xC
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080A8120
+ cmp r0, 0x3
+ beq _080A8120
+ cmp r0, 0x6
+ bne _080A8128
+_080A8120:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80A8200
+_080A8128:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x28
+ strh r0, [r4, 0x10]
+ ldrb r0, [r4, 0x8]
+ movs r1, 0x10
+ ldrsh r2, [r4, r1]
+ adds r1, r2, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrb r0, [r4, 0x8]
+ bl sub_8076440
+ movs r2, 0xC
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x20
+ bne _080A81F6
+ ldrh r0, [r4, 0x12]
+ adds r0, 0x1
+ strh r0, [r4, 0x12]
+ b _080A81D0
+_080A8158:
+ movs r1, 0x14
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080A81F6
+ movs r2, 0x12
+ ldrsh r1, [r4, r2]
+ cmp r1, 0x3
+ bne _080A816E
+ strh r0, [r4, 0xC]
+ strh r1, [r4, 0xA]
+ b _080A81F6
+_080A816E:
+ strh r0, [r4, 0xC]
+ strh r0, [r4, 0xE]
+ movs r2, 0x80
+ lsls r2, 1
+ strh r2, [r4, 0x10]
+ ldrb r0, [r4, 0x8]
+ adds r1, r2, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrb r0, [r4, 0x8]
+ bl sub_8076440
+ movs r0, 0x2
+ strh r0, [r4, 0xA]
+ b _080A81F6
+_080A818E:
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _080A81F6
+_080A8194:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x20
+ ble _080A81F6
+ b _080A81CC
+_080A81A4:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x2
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x10]
+ subs r0, 0x50
+ strh r0, [r4, 0x10]
+ ldrb r0, [r4, 0x8]
+ movs r1, 0x10
+ ldrsh r2, [r4, r1]
+ adds r1, r2, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrb r0, [r4, 0x8]
+ bl sub_8076440
+ movs r2, 0xC
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x20
+ bne _080A81F6
+_080A81CC:
+ movs r0, 0
+ strh r0, [r4, 0xC]
+_080A81D0:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ b _080A81F6
+_080A81D8:
+ ldrb r0, [r4, 0x8]
+ bl sub_8075980
+ ldr r2, _080A81FC @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0
+ strh r1, [r0, 0x26]
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080A81F6:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A81FC: .4byte gSprites
+ thumb_func_end sub_80A80CC
+
+ thumb_func_start sub_80A8200
+sub_80A8200: @ 80A8200
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r7, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ movs r0, 0
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ lsls r0, 16
+ asrs r4, r0, 16
+ cmp r4, 0
+ blt _080A82DA
+ bl AllocOamMatrix
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0xFF
+ bne _080A8244
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ ldr r1, _080A8240 @ =gSprites
+ adds r0, r1
+ bl obj_delete_but_dont_free_vram
+ b _080A82DA
+ .align 2, 0
+_080A8240: .4byte gSprites
+_080A8244:
+ ldr r5, _080A82E8 @ =gSprites
+ lsls r3, r4, 4
+ adds r3, r4
+ lsls r3, 2
+ adds r4, r3, r5
+ ldrb r1, [r4, 0x1]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x4
+ orrs r0, r1
+ movs r1, 0x3
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x1F
+ ands r6, r0
+ lsls r2, r6, 1
+ ldrb r1, [r4, 0x3]
+ movs r0, 0x3F
+ negs r0, r0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r4, 0x3]
+ ldrb r0, [r7, 0x16]
+ ldrb r1, [r7, 0xE]
+ subs r0, r1
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldrh r0, [r7, 0xE]
+ adds r0, 0x1
+ strh r0, [r7, 0xE]
+ ldrh r0, [r7, 0x14]
+ adds r0, 0x1
+ strh r0, [r7, 0x14]
+ movs r0, 0x10
+ strh r0, [r4, 0x2E]
+ mov r0, r9
+ strh r0, [r4, 0x30]
+ movs r0, 0x6
+ strh r0, [r4, 0x32]
+ adds r5, 0x1C
+ adds r3, r5
+ ldr r0, _080A82EC @ =sub_80A82F0
+ str r0, [r3]
+ mov r1, r8
+ lsls r0, r1, 24
+ lsrs r0, 24
+ movs r1, 0x10
+ ldrsh r2, [r7, r1]
+ adds r1, r2, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrb r0, [r4, 0x1]
+ movs r3, 0x4
+ negs r3, r3
+ ands r3, r0
+ movs r0, 0x1
+ orrs r3, r0
+ strb r3, [r4, 0x1]
+ lsrs r1, r3, 6
+ ldrb r2, [r4, 0x3]
+ lsrs r2, 6
+ lsls r3, 30
+ lsrs r3, 30
+ adds r0, r4, 0
+ bl CalcCenterToCornerVec
+_080A82DA:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A82E8: .4byte gSprites
+_080A82EC: .4byte sub_80A82F0
+ thumb_func_end sub_80A8200
+
+ thumb_func_start sub_80A82F0
+sub_80A82F0: @ 80A82F0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080A832E
+ ldr r3, _080A8334 @ =gTasks
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x30
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ adds r0, r4, 0
+ bl obj_delete_but_dont_free_vram
+_080A832E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8334: .4byte gTasks
+ thumb_func_end sub_80A82F0
+
+ thumb_func_start sub_80A8338
+sub_80A8338: @ 80A8338
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080A835C @ =gTasks
+ adds r4, r0, r1
+ ldr r5, _080A8360 @ =gBattleAnimArgs
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080A8364
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ b _080A838A
+ .align 2, 0
+_080A835C: .4byte gTasks
+_080A8360: .4byte gBattleAnimArgs
+_080A8364:
+ ldrb r0, [r5]
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ movs r2, 0
+ strh r1, [r4, 0x8]
+ strh r2, [r4, 0xA]
+ ldrh r0, [r5, 0x2]
+ strh r0, [r4, 0xC]
+ strh r2, [r4, 0xE]
+ strh r2, [r4, 0x10]
+ ldr r2, _080A8390 @ =gUnknown_83E3E60
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080A8394 @ =sub_80A8398
+ str r0, [r4]
+_080A838A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8390: .4byte gUnknown_83E3E60
+_080A8394: .4byte sub_80A8398
+ thumb_func_end sub_80A8338
+
+ thumb_func_start sub_80A8398
+sub_80A8398: @ 80A8398
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _080A83BC @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0xA
+ ldrsh r5, [r4, r0]
+ cmp r5, 0x1
+ beq _080A8400
+ cmp r5, 0x1
+ bgt _080A83C0
+ cmp r5, 0
+ beq _080A83CA
+ b _080A84A8
+ .align 2, 0
+_080A83BC: .4byte gTasks
+_080A83C0:
+ cmp r5, 0x2
+ beq _080A8434
+ cmp r5, 0x3
+ beq _080A8464
+ b _080A84A8
+_080A83CA:
+ adds r0, r4, 0
+ bl sub_8076308
+ ldrh r2, [r4, 0x10]
+ adds r2, 0x3
+ strh r2, [r4, 0x10]
+ ldr r3, _080A83FC @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r1, [r0, 0x26]
+ adds r1, r2
+ strh r1, [r0, 0x26]
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7
+ ble _080A84A8
+ strh r5, [r4, 0xE]
+ b _080A845C
+ .align 2, 0
+_080A83FC: .4byte gSprites
+_080A8400:
+ adds r0, r4, 0
+ bl sub_8076308
+ ldr r2, _080A8430 @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x10]
+ ldrh r2, [r0, 0x26]
+ adds r1, r2
+ strh r1, [r0, 0x26]
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7
+ ble _080A84A8
+ movs r0, 0
+ strh r0, [r4, 0xE]
+ b _080A845C
+ .align 2, 0
+_080A8430: .4byte gSprites
+_080A8434:
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080A845C
+ ldr r2, _080A8458 @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x26]
+ subs r1, 0x2
+ strh r1, [r0, 0x26]
+ ldrh r0, [r4, 0x10]
+ subs r0, 0x2
+ strh r0, [r4, 0x10]
+ b _080A84A8
+ .align 2, 0
+_080A8458: .4byte gSprites
+_080A845C:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ b _080A84A8
+_080A8464:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _080A84A8
+ ldrh r0, [r4, 0xC]
+ subs r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080A849C
+ ldr r2, _080A8498 @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r5, [r0, 0x26]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+ b _080A84A8
+ .align 2, 0
+_080A8498: .4byte gSprites
+_080A849C:
+ ldrb r1, [r4, 0x8]
+ ldr r2, _080A84B0 @ =gUnknown_83E3E60
+ adds r0, r4, 0
+ bl sub_80762D0
+ strh r5, [r4, 0xA]
+_080A84A8:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A84B0: .4byte gUnknown_83E3E60
+ thumb_func_end sub_80A8398
+
+ thumb_func_start sub_80A84B4
+sub_80A84B4: @ 80A84B4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080A84E4 @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080A84E8 @ =gUnknown_83E3E80
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080A84EC @ =sub_80A84F0
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A84E4: .4byte gTasks
+_080A84E8: .4byte gUnknown_83E3E80
+_080A84EC: .4byte sub_80A84F0
+ thumb_func_end sub_80A84B4
+
+ thumb_func_start sub_80A84F0
+sub_80A84F0: @ 80A84F0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080A8518 @ =gTasks
+ adds r0, r1
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A8510
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080A8510:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8518: .4byte gTasks
+ thumb_func_end sub_80A84F0
+
+ thumb_func_start sub_80A851C
+sub_80A851C: @ 80A851C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080A854C @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A8550
+ adds r0, r4, 0
+ movs r1, 0
+ bl StartSpriteAnim
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x20
+ strh r0, [r4, 0x20]
+ movs r0, 0x40
+ b _080A856A
+ .align 2, 0
+_080A854C: .4byte gBattleAnimAttacker
+_080A8550:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x20
+ strh r0, [r4, 0x20]
+ ldr r0, _080A859C @ =0x0000ffc0
+_080A856A:
+ strh r0, [r4, 0x30]
+ ldr r0, _080A85A0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ strh r0, [r4, 0x22]
+ movs r0, 0x34
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x32]
+ strh r1, [r4, 0x34]
+ strh r1, [r4, 0x36]
+ ldr r1, _080A85A4 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A85A8 @ =sub_8074D00
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A859C: .4byte 0x0000ffc0
+_080A85A0: .4byte gBattleAnimAttacker
+_080A85A4: .4byte DestroyAnimSprite
+_080A85A8: .4byte sub_8074D00
+ thumb_func_end sub_80A851C
+
+ thumb_func_start sub_80A85AC
+sub_80A85AC: @ 80A85AC
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ ldr r0, _080A85C0 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080A85C8
+ ldr r0, _080A85C4 @ =gBattleAnimAttacker
+ b _080A85CA
+ .align 2, 0
+_080A85C0: .4byte gBattleAnimArgs
+_080A85C4: .4byte gBattleAnimAttacker
+_080A85C8:
+ ldr r0, _080A8628 @ =gBattleAnimTarget
+_080A85CA:
+ ldrb r5, [r0]
+ adds r0, r5, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A85E4
+ ldr r1, _080A862C @ =gBattleAnimArgs
+ movs r2, 0x2
+ ldrsh r0, [r1, r2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+_080A85E4:
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080A862C @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r6, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r4, [r4, 0x4]
+ adds r0, r4
+ strh r0, [r6, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7
+ bgt _080A8616
+ movs r0, 0x8
+ strh r0, [r6, 0x22]
+_080A8616:
+ ldr r1, _080A8630 @ =move_anim_8074EE0
+ adds r0, r6, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080A8634 @ =sub_8074F50
+ str r0, [r6, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8628: .4byte gBattleAnimTarget
+_080A862C: .4byte gBattleAnimArgs
+_080A8630: .4byte move_anim_8074EE0
+_080A8634: .4byte sub_8074F50
+ thumb_func_end sub_80A85AC
+
+ thumb_func_start sub_80A8638
+sub_80A8638: @ 80A8638
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080A866C @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ movs r0, 0
+ strh r1, [r4, 0x8]
+ strh r0, [r4, 0xA]
+ ldr r2, _080A8670 @ =gUnknown_83E3F1C
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080A8674 @ =sub_80A8678
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A866C: .4byte gTasks
+_080A8670: .4byte gUnknown_83E3F1C
+_080A8674: .4byte sub_80A8678
+ thumb_func_end sub_80A8638
+
+ thumb_func_start sub_80A8678
+sub_80A8678: @ 80A8678
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080A86A0 @ =gTasks
+ adds r0, r1
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A8698
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080A8698:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A86A0: .4byte gTasks
+ thumb_func_end sub_80A8678
+
+ thumb_func_start sub_80A86A4
+sub_80A86A4: @ 80A86A4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080A8718 @ =gTasks
+ adds r4, r1, r0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0
+ strh r0, [r4, 0x8]
+ strh r2, [r4, 0xA]
+ movs r0, 0x4
+ strh r0, [r4, 0xC]
+ movs r0, 0x7
+ strh r0, [r4, 0xE]
+ movs r0, 0x3
+ strh r0, [r4, 0x10]
+ ldr r3, _080A871C @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r0, [r0, 0x20]
+ strh r0, [r4, 0x12]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r0, [r0, 0x22]
+ strh r0, [r4, 0x14]
+ strh r2, [r4, 0x16]
+ strh r2, [r4, 0x18]
+ movs r0, 0x2
+ strh r0, [r4, 0x1A]
+ ldr r0, _080A8720 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A870E
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ strh r0, [r4, 0xC]
+_080A870E:
+ ldr r0, _080A8724 @ =sub_80A8728
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8718: .4byte gTasks
+_080A871C: .4byte gSprites
+_080A8720: .4byte gBattleAnimAttacker
+_080A8724: .4byte sub_80A8728
+ thumb_func_end sub_80A86A4
+
+ thumb_func_start sub_80A8728
+sub_80A8728: @ 80A8728
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080A8770 @ =gTasks
+ adds r3, r0, r1
+ ldrh r0, [r3, 0x16]
+ adds r0, 0x1
+ strh r0, [r3, 0x16]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _080A878E
+ movs r0, 0
+ strh r0, [r3, 0x16]
+ ldrh r0, [r3, 0x18]
+ adds r0, 0x1
+ strh r0, [r3, 0x18]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A8778
+ ldr r2, _080A8774 @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r3, 0x1A]
+ ldrh r2, [r0, 0x22]
+ adds r1, r2
+ b _080A878C
+ .align 2, 0
+_080A8770: .4byte gTasks
+_080A8774: .4byte gSprites
+_080A8778:
+ ldr r2, _080A87A0 @ =gSprites
+ movs r5, 0x8
+ ldrsh r1, [r3, r5]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x22]
+ ldrh r2, [r3, 0x1A]
+ subs r1, r2
+_080A878C:
+ strh r1, [r0, 0x22]
+_080A878E:
+ movs r1, 0xA
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x1
+ beq _080A87DC
+ cmp r0, 0x1
+ bgt _080A87A4
+ cmp r0, 0
+ beq _080A87AA
+ b _080A886C
+ .align 2, 0
+_080A87A0: .4byte gSprites
+_080A87A4:
+ cmp r0, 0x2
+ beq _080A880C
+ b _080A886C
+_080A87AA:
+ ldr r2, _080A87D8 @ =gSprites
+ movs r5, 0x8
+ ldrsh r1, [r3, r5]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r3, 0xC]
+ ldrh r2, [r0, 0x20]
+ adds r1, r2
+ strh r1, [r0, 0x20]
+ ldrh r0, [r3, 0xE]
+ subs r0, 0x1
+ strh r0, [r3, 0xE]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080A886C
+ movs r0, 0xE
+ strh r0, [r3, 0xE]
+ movs r0, 0x1
+ strh r0, [r3, 0xA]
+ b _080A886C
+ .align 2, 0
+_080A87D8: .4byte gSprites
+_080A87DC:
+ ldr r2, _080A8808 @ =gSprites
+ movs r5, 0x8
+ ldrsh r1, [r3, r5]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x20]
+ ldrh r2, [r3, 0xC]
+ subs r1, r2
+ strh r1, [r0, 0x20]
+ ldrh r0, [r3, 0xE]
+ subs r0, 0x1
+ strh r0, [r3, 0xE]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080A886C
+ movs r0, 0x7
+ strh r0, [r3, 0xE]
+ movs r0, 0x2
+ strh r0, [r3, 0xA]
+ b _080A886C
+ .align 2, 0
+_080A8808: .4byte gSprites
+_080A880C:
+ ldr r2, _080A8844 @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r3, 0xC]
+ ldrh r5, [r0, 0x20]
+ adds r1, r5
+ strh r1, [r0, 0x20]
+ ldrh r0, [r3, 0xE]
+ subs r0, 0x1
+ strh r0, [r3, 0xE]
+ lsls r0, 16
+ asrs r1, r0, 16
+ cmp r1, 0
+ bne _080A886C
+ ldrh r0, [r3, 0x10]
+ subs r0, 0x1
+ strh r0, [r3, 0x10]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080A8848
+ movs r0, 0x7
+ strh r0, [r3, 0xE]
+ strh r1, [r3, 0xA]
+ b _080A886C
+ .align 2, 0
+_080A8844: .4byte gSprites
+_080A8848:
+ ldrh r1, [r3, 0x18]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A8866
+ movs r0, 0x8
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x22]
+ ldrh r2, [r3, 0x1A]
+ subs r1, r2
+ strh r1, [r0, 0x22]
+_080A8866:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080A886C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A8728
+
+ thumb_func_start sub_80A8874
+sub_80A8874: @ 80A8874
+ 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, _080A88C4 @ =gTasks
+ adds r5, r1, r0
+ ldr r4, _080A88C8 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x20
+ movs r1, 0
+ strh r0, [r5, 0x8]
+ movs r0, 0x4
+ strh r0, [r5, 0xA]
+ strh r1, [r5, 0xC]
+ strh r1, [r5, 0xE]
+ strh r1, [r5, 0x10]
+ strh r1, [r5, 0x12]
+ ldrb r0, [r4]
+ bl sub_8076B2C
+ strh r0, [r5, 0x26]
+ ldrb r0, [r4]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A88D4
+ ldr r0, _080A88CC @ =gBattle_BG1_X
+ ldrh r0, [r0]
+ strh r0, [r5, 0x14]
+ ldr r0, _080A88D0 @ =0x04000014
+ b _080A88DC
+ .align 2, 0
+_080A88C4: .4byte gTasks
+_080A88C8: .4byte gBattleAnimTarget
+_080A88CC: .4byte gBattle_BG1_X
+_080A88D0: .4byte 0x04000014
+_080A88D4:
+ ldr r0, _080A8940 @ =gBattle_BG2_X
+ ldrh r0, [r0]
+ strh r0, [r5, 0x14]
+ ldr r0, _080A8944 @ =0x04000018
+_080A88DC:
+ str r0, [sp]
+ ldrh r0, [r5, 0x8]
+ adds r1, r0, 0
+ subs r1, 0x40
+ lsls r2, r1, 16
+ lsls r0, 16
+ cmp r2, r0
+ bgt _080A891A
+ ldr r4, _080A8948 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r4, r0
+_080A88F4:
+ asrs r3, r2, 16
+ cmp r3, 0
+ blt _080A890C
+ lsls r1, r3, 1
+ adds r2, r1, r4
+ ldrh r0, [r5, 0x14]
+ adds r0, 0xF0
+ strh r0, [r2]
+ adds r1, r6
+ ldrh r0, [r5, 0x14]
+ adds r0, 0xF0
+ strh r0, [r1]
+_080A890C:
+ adds r0, r3, 0x1
+ lsls r2, r0, 16
+ asrs r1, r2, 16
+ movs r3, 0x8
+ ldrsh r0, [r5, r3]
+ cmp r1, r0
+ ble _080A88F4
+_080A891A:
+ ldr r0, _080A894C @ =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, _080A8950 @ =sub_80A8954
+ str r0, [r5]
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8940: .4byte gBattle_BG2_X
+_080A8944: .4byte 0x04000018
+_080A8948: .4byte gScanlineEffectRegBuffers
+_080A894C: .4byte 0xa2600001
+_080A8950: .4byte sub_80A8954
+ thumb_func_end sub_80A8874
+
+ thumb_func_start sub_80A8954
+sub_80A8954: @ 80A8954
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080A8974 @ =gTasks
+ adds r3, r0, r1
+ movs r1, 0x10
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ beq _080A8978
+ cmp r0, 0x1
+ beq _080A898E
+ b _080A8A0E
+ .align 2, 0
+_080A8974: .4byte gTasks
+_080A8978:
+ ldrh r0, [r3, 0x12]
+ adds r0, 0x1
+ strh r0, [r3, 0x12]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ ble _080A8A0E
+ ldrh r0, [r3, 0x10]
+ adds r0, 0x1
+ strh r0, [r3, 0x10]
+ b _080A8A0E
+_080A898E:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ ble _080A8A0E
+ movs r0, 0
+ strh r0, [r3, 0xA]
+ ldrh r1, [r3, 0xE]
+ movs r0, 0x3
+ ands r0, r1
+ strh r0, [r3, 0xC]
+ ldrh r0, [r3, 0x8]
+ subs r0, r1
+ strh r0, [r3, 0x12]
+ movs r2, 0xC
+ ldrsh r1, [r3, r2]
+ cmp r1, 0x1
+ beq _080A89C4
+ cmp r1, 0x1
+ ble _080A89CC
+ cmp r1, 0x2
+ beq _080A89C8
+ cmp r1, 0x3
+ beq _080A89C8
+ b _080A89CC
+_080A89C4:
+ subs r0, 0x2
+ b _080A89CA
+_080A89C8:
+ adds r0, 0x1
+_080A89CA:
+ strh r0, [r3, 0x12]
+_080A89CC:
+ movs r1, 0x12
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ blt _080A89F0
+ ldr r2, _080A8A14 @ =gScanlineEffectRegBuffers
+ lsls r0, 1
+ adds r0, r2
+ ldrh r1, [r3, 0x14]
+ strh r1, [r0]
+ movs r1, 0x12
+ ldrsh r0, [r3, r1]
+ lsls r0, 1
+ movs r1, 0xF0
+ lsls r1, 3
+ adds r2, r1
+ adds r0, r2
+ ldrh r1, [r3, 0x14]
+ strh r1, [r0]
+_080A89F0:
+ ldrh r0, [r3, 0xE]
+ adds r0, 0x1
+ strh r0, [r3, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x26
+ ldrsh r1, [r3, r2]
+ cmp r0, r1
+ blt _080A8A0E
+ ldr r1, _080A8A18 @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080A8A0E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8A14: .4byte gScanlineEffectRegBuffers
+_080A8A18: .4byte gScanlineEffect
+ thumb_func_end sub_80A8954
+
+ thumb_func_start sub_80A8A1C
+sub_80A8A1C: @ 80A8A1C
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r6, _080A8A70 @ =gBattleAnimTarget
+ ldrb r0, [r6]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x10
+ movs r5, 0
+ strh r0, [r4, 0x20]
+ ldrb r0, [r6]
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ strh r0, [r4, 0x22]
+ strh r5, [r4, 0x2E]
+ strh r5, [r4, 0x30]
+ strh r5, [r4, 0x32]
+ movs r0, 0x10
+ strh r0, [r4, 0x34]
+ strh r5, [r4, 0x36]
+ ldrb r0, [r6]
+ movs r1, 0
+ bl sub_8076B2C
+ adds r0, 0x2
+ strh r0, [r4, 0x38]
+ movs r0, 0x3F
+ bl sub_8073A44
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r4, 0x3A]
+ ldr r0, _080A8A74 @ =sub_80A8A78
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8A70: .4byte gBattleAnimTarget
+_080A8A74: .4byte sub_80A8A78
+ thumb_func_end sub_80A8A1C
+
+ thumb_func_start sub_80A8A78
+sub_80A8A78: @ 80A8A78
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ cmp r1, 0x1
+ beq _080A8ADC
+ cmp r1, 0x1
+ bgt _080A8A8E
+ cmp r1, 0
+ beq _080A8A94
+ b _080A8BBC
+_080A8A8E:
+ cmp r1, 0x2
+ beq _080A8B6E
+ b _080A8BBC
+_080A8A94:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080A8ABE
+ strh r1, [r4, 0x32]
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsrs r1, r2, 2
+ movs r0, 0x1
+ eors r1, r0
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_080A8ABE:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _080A8BBC
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r2]
+ b _080A8B66
+_080A8ADC:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ ble _080A8B22
+ ldrh r2, [r4, 0x32]
+ movs r3, 0x32
+ ldrsh r1, [r4, r3]
+ movs r3, 0x38
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bge _080A8B22
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x22]
+ subs r0, 0x1
+ strh r0, [r4, 0x22]
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x32]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ movs r1, 0xA
+ bl __modsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _080A8B22
+ ldrh r1, [r4, 0x3A]
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xC6
+ bl PlaySE12WithPanning
+_080A8B22:
+ ldrh r0, [r4, 0x34]
+ ldrh r2, [r4, 0x36]
+ adds r1, r0, r2
+ strh r1, [r4, 0x36]
+ lsls r0, r1, 16
+ asrs r2, r0, 16
+ cmp r2, 0x1F
+ ble _080A8B36
+ movs r0, 0x40
+ b _080A8B44
+_080A8B36:
+ movs r0, 0x20
+ negs r0, r0
+ cmp r2, r0
+ bgt _080A8B50
+ movs r2, 0x40
+ negs r2, r2
+ adds r0, r2, 0
+_080A8B44:
+ subs r0, r1
+ strh r0, [r4, 0x36]
+ movs r3, 0x34
+ ldrsh r0, [r4, r3]
+ negs r0, r0
+ strh r0, [r4, 0x34]
+_080A8B50:
+ ldrh r0, [r4, 0x36]
+ movs r2, 0
+ strh r0, [r4, 0x24]
+ movs r0, 0x38
+ ldrsh r1, [r4, r0]
+ movs r3, 0x32
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bne _080A8BBC
+ strh r2, [r4, 0x30]
+ strh r2, [r4, 0x32]
+_080A8B66:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080A8BBC
+_080A8B6E:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080A8B9A
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsrs r1, r2, 2
+ movs r0, 0x1
+ eors r1, r0
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_080A8B9A:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _080A8BBC
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A8BBC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A8A78
+
+ thumb_func_start sub_80A8BC4
+sub_80A8BC4: @ 80A8BC4
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ movs r5, 0
+ mov r0, sp
+ strh r5, [r0]
+ mov r1, sp
+ adds r1, 0x2
+ strh r5, [r1]
+ ldr r0, _080A8BE8 @ =gBattleAnimArgs
+ movs r3, 0x4
+ ldrsh r2, [r0, r3]
+ adds r7, r1, 0
+ adds r1, r0, 0
+ cmp r2, 0
+ bne _080A8BF0
+ ldr r0, _080A8BEC @ =gBattleAnimAttacker
+ b _080A8BF2
+ .align 2, 0
+_080A8BE8: .4byte gBattleAnimArgs
+_080A8BEC: .4byte gBattleAnimAttacker
+_080A8BF0:
+ ldr r0, _080A8C2C @ =gBattleAnimTarget
+_080A8BF2:
+ ldrb r5, [r0]
+ ldrb r1, [r1, 0x6]
+ movs r0, 0x1
+ adds r4, r0, 0
+ eors r4, r1
+ bl sub_8075290
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A8C6A
+ movs r1, 0x2
+ adds r0, r5, 0
+ eors r0, r1
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A8C6A
+ adds r0, r5, 0
+ adds r1, r4, 0
+ mov r2, sp
+ adds r3, r7, 0
+ bl sub_8076D9C
+ cmp r4, 0
+ bne _080A8C30
+ adds r0, r5, 0
+ movs r1, 0
+ b _080A8C34
+ .align 2, 0
+_080A8C2C: .4byte gBattleAnimTarget
+_080A8C30:
+ adds r0, r5, 0
+ movs r1, 0x2
+_080A8C34:
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r5, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A8C60
+ ldr r2, _080A8C5C @ =gBattleAnimArgs
+ mov r0, sp
+ ldrh r1, [r0]
+ subs r1, r4
+ ldrh r0, [r2]
+ subs r1, r0
+ subs r0, r1
+ strh r0, [r2]
+ b _080A8C6A
+ .align 2, 0
+_080A8C5C: .4byte gBattleAnimArgs
+_080A8C60:
+ ldr r1, _080A8C7C @ =gBattleAnimArgs
+ mov r0, sp
+ ldrh r0, [r0]
+ subs r0, r4
+ strh r0, [r1]
+_080A8C6A:
+ ldr r1, _080A8C80 @ =sub_8075D9C
+ str r1, [r6, 0x1C]
+ adds r0, r6, 0
+ bl _call_via_r1
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8C7C: .4byte gBattleAnimArgs
+_080A8C80: .4byte sub_8075D9C
+ thumb_func_end sub_80A8BC4
+
+ thumb_func_start sub_80A8C84
+sub_80A8C84: @ 80A8C84
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A8C9E
+ adds r0, r4, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A8C9E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A8C84
+
+ thumb_func_start sub_80A8CA4
+sub_80A8CA4: @ 80A8CA4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ adds r5, r0, 0
+ movs r6, 0
+ mov r0, sp
+ strh r6, [r0]
+ mov r1, sp
+ adds r1, 0x2
+ strh r6, [r1]
+ ldr r0, _080A8CD0 @ =gBattleAnimArgs
+ movs r2, 0xA
+ ldrsh r0, [r0, r2]
+ cmp r0, 0
+ bne _080A8CDC
+ ldr r0, _080A8CD4 @ =gBattleAnimAttacker
+ ldrb r7, [r0]
+ ldr r0, _080A8CD8 @ =gBattleAnimTarget
+ b _080A8CE2
+ .align 2, 0
+_080A8CD0: .4byte gBattleAnimArgs
+_080A8CD4: .4byte gBattleAnimAttacker
+_080A8CD8: .4byte gBattleAnimTarget
+_080A8CDC:
+ ldr r0, _080A8CFC @ =gBattleAnimTarget
+ ldrb r7, [r0]
+ ldr r0, _080A8D00 @ =gBattleAnimAttacker
+_080A8CE2:
+ ldrb r0, [r0]
+ mov r8, r0
+ ldr r0, _080A8D04 @ =gBattleAnimArgs
+ movs r3, 0xC
+ ldrsh r0, [r0, r3]
+ cmp r0, 0
+ bne _080A8D08
+ movs r0, 0
+ mov r10, r0
+ movs r1, 0x1
+ str r1, [sp, 0x4]
+ b _080A8D10
+ .align 2, 0
+_080A8CFC: .4byte gBattleAnimTarget
+_080A8D00: .4byte gBattleAnimAttacker
+_080A8D04: .4byte gBattleAnimArgs
+_080A8D08:
+ movs r2, 0x2
+ mov r10, r2
+ movs r3, 0x3
+ str r3, [sp, 0x4]
+_080A8D10:
+ adds r0, r7, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A8D6C
+ adds r0, r7, 0
+ mov r1, r10
+ bl sub_8074480
+ lsls r0, 24
+ ldr r1, _080A8D50 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r1]
+ adds r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ movs r0, 0x2
+ mov r4, r8
+ eors r4, r0
+ adds r0, r4, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A8D5C
+ ldr r2, _080A8D54 @ =gSprites
+ ldr r0, _080A8D58 @ =gBattlerSpriteIds
+ adds r0, r4, r0
+ b _080A8DEA
+ .align 2, 0
+_080A8D50: .4byte gBattleAnimArgs
+_080A8D54: .4byte gSprites
+_080A8D58: .4byte gBattlerSpriteIds
+_080A8D5C:
+ ldr r2, _080A8D64 @ =gSprites
+ ldr r0, _080A8D68 @ =gBattlerSpriteIds
+ add r0, r8
+ b _080A8DEA
+ .align 2, 0
+_080A8D64: .4byte gSprites
+_080A8D68: .4byte gBattlerSpriteIds
+_080A8D6C:
+ adds r0, r7, 0
+ mov r1, r10
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080A8DD4 @ =gBattleAnimArgs
+ ldrh r1, [r1]
+ subs r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A8DE4
+ movs r0, 0x2
+ adds r4, r7, 0
+ eors r4, r0
+ adds r0, r4, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A8DE4
+ ldr r3, _080A8DD8 @ =gSprites
+ ldr r2, _080A8DDC @ =gBattlerSpriteIds
+ adds r0, r7, r2
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r6, r0, r3
+ adds r2, r4, r2
+ ldrb r1, [r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, r0, r3
+ movs r0, 0x20
+ ldrsh r1, [r6, r0]
+ movs r3, 0x20
+ ldrsh r0, [r2, r3]
+ cmp r1, r0
+ bge _080A8DE0
+ adds r0, r2, 0
+ adds r0, 0x43
+ ldrb r0, [r0]
+ adds r0, 0x1
+ b _080A8DFA
+ .align 2, 0
+_080A8DD4: .4byte gBattleAnimArgs
+_080A8DD8: .4byte gSprites
+_080A8DDC: .4byte gBattlerSpriteIds
+_080A8DE0:
+ adds r0, r6, 0
+ b _080A8DF4
+_080A8DE4:
+ ldr r2, _080A8E40 @ =gSprites
+ ldr r0, _080A8E44 @ =gBattlerSpriteIds
+ adds r0, r7, r0
+_080A8DEA:
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+_080A8DF4:
+ adds r0, 0x43
+ ldrb r0, [r0]
+ subs r0, 0x1
+_080A8DFA:
+ adds r1, r5, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ adds r0, r7, 0
+ ldr r1, [sp, 0x4]
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080A8E48 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A8E4C
+ movs r1, 0x2
+ mov r0, r8
+ eors r0, r1
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A8E4C
+ ldrb r1, [r4, 0xC]
+ mov r0, r8
+ mov r2, sp
+ mov r3, sp
+ adds r3, 0x2
+ bl sub_8076D9C
+ b _080A8E6C
+ .align 2, 0
+_080A8E40: .4byte gSprites
+_080A8E44: .4byte gBattlerSpriteIds
+_080A8E48: .4byte gBattleAnimArgs
+_080A8E4C:
+ mov r4, sp
+ mov r0, r8
+ mov r1, r10
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4]
+ mov r0, r8
+ ldr r1, [sp, 0x4]
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ mov r2, sp
+ strh r0, [r2, 0x2]
+_080A8E6C:
+ mov r0, r8
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A8E90
+ mov r3, sp
+ mov r2, sp
+ ldr r1, _080A8E8C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x6]
+ ldrh r2, [r2]
+ adds r0, r2
+ strh r0, [r3]
+ adds r2, r1, 0
+ b _080A8E9E
+ .align 2, 0
+_080A8E8C: .4byte gBattleAnimArgs
+_080A8E90:
+ mov r3, sp
+ mov r0, sp
+ ldr r2, _080A8EE0 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ ldrh r1, [r2, 0x6]
+ subs r0, r1
+ strh r0, [r3]
+_080A8E9E:
+ ldrh r1, [r2, 0x8]
+ mov r3, sp
+ ldrh r3, [r3, 0x2]
+ adds r1, r3
+ mov r0, sp
+ strh r1, [r0, 0x2]
+ mov r3, r9
+ strh r3, [r5, 0x30]
+ strh r3, [r5, 0x20]
+ strh r6, [r5, 0x34]
+ strh r6, [r5, 0x22]
+ ldrh r0, [r0]
+ strh r0, [r5, 0x32]
+ strh r1, [r5, 0x36]
+ ldrh r0, [r2]
+ strh r0, [r5, 0x2E]
+ adds r0, r5, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldr r1, _080A8EE4 @ =sub_80A8C84
+ str r1, [r5, 0x1C]
+ adds r0, r5, 0
+ bl _call_via_r1
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8EE0: .4byte gBattleAnimArgs
+_080A8EE4: .4byte sub_80A8C84
+ thumb_func_end sub_80A8CA4
+
+ thumb_func_start sub_80A8EE8
+sub_80A8EE8: @ 80A8EE8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080A8F28 @ =0x000027db
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ beq _080A8F0E
+ lsls r0, 20
+ ldr r1, _080A8F2C @ =0x01010000
+ adds r0, r1
+ lsrs r0, 16
+ ldr r1, _080A8F30 @ =gBattleAnimArgs
+ ldrb r2, [r1, 0xA]
+ ldrh r3, [r1, 0x8]
+ movs r1, 0xF
+ bl BlendPalette
+_080A8F0E:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldr r1, _080A8F34 @ =sub_8075D9C
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8F28: .4byte 0x000027db
+_080A8F2C: .4byte 0x01010000
+_080A8F30: .4byte gBattleAnimArgs
+_080A8F34: .4byte sub_8075D9C
+ thumb_func_end sub_80A8EE8
+
+ thumb_func_start sub_80A8F38
+sub_80A8F38: @ 80A8F38
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_8075160
+ ldr r0, _080A8F6C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r1, 0xA0
+ cmp r0, 0
+ beq _080A8F54
+ ldr r1, _080A8F70 @ =0x0000ff60
+_080A8F54:
+ movs r0, 0xE0
+ lsls r0, 2
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ ldr r0, _080A8F74 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x3C]
+ ldr r0, _080A8F78 @ =sub_80A8F7C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8F6C: .4byte gBattleAnimAttacker
+_080A8F70: .4byte 0x0000ff60
+_080A8F74: .4byte gBattleAnimArgs
+_080A8F78: .4byte sub_80A8F7C
+ thumb_func_end sub_80A8F38
+
+ thumb_func_start sub_80A8F7C
+sub_80A8F7C: @ 80A8F7C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r2, [r4, 0x2E]
+ lsls r0, r2, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x26]
+ subs r1, r0
+ movs r5, 0
+ strh r1, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ subs r2, 0x20
+ strh r2, [r4, 0x2E]
+ ldr r0, _080A8FE8 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r1, 0xA0
+ cmp r0, 0
+ beq _080A8FAC
+ ldr r1, _080A8FEC @ =0x0000ff60
+_080A8FAC:
+ lsls r0, r1, 16
+ asrs r0, 16
+ ldrh r1, [r4, 0x30]
+ adds r0, r1
+ strh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x26]
+ movs r2, 0x26
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080A8FE0
+ ldrh r2, [r4, 0x22]
+ adds r0, r1, r2
+ strh r0, [r4, 0x22]
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ strh r5, [r4, 0x26]
+ strh r5, [r4, 0x24]
+ strh r5, [r4, 0x2E]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldr r0, _080A8FF0 @ =sub_80A8FF4
+ str r0, [r4, 0x1C]
+_080A8FE0:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A8FE8: .4byte gBattleAnimAttacker
+_080A8FEC: .4byte 0x0000ff60
+_080A8FF0: .4byte sub_80A8FF4
+ thumb_func_end sub_80A8F7C
+
+ thumb_func_start sub_80A8FF4
+sub_80A8FF4: @ 80A8FF4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x13
+ ble _080A9012
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl StartSpriteAffineAnim
+ ldr r0, _080A9018 @ =sub_80A901C
+ str r0, [r4, 0x1C]
+_080A9012:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9018: .4byte sub_80A901C
+ thumb_func_end sub_80A8FF4
+
+ thumb_func_start sub_80A901C
+sub_80A901C: @ 80A901C
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080A9082
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080A9068
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x10
+ ldr r3, _080A905C @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080A9060 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ ldr r0, _080A9064 @ =sub_80A9094
+ b _080A9080
+ .align 2, 0
+_080A905C: .4byte 0x000003ff
+_080A9060: .4byte 0xfffffc00
+_080A9064: .4byte sub_80A9094
+_080A9068:
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x20
+ ldr r3, _080A9088 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080A908C @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ ldr r0, _080A9090 @ =sub_80A911C
+_080A9080:
+ str r0, [r4, 0x1C]
+_080A9082:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9088: .4byte 0x000003ff
+_080A908C: .4byte 0xfffffc00
+_080A9090: .4byte sub_80A911C
+ thumb_func_end sub_80A901C
+
+ thumb_func_start sub_80A9094
+sub_80A9094: @ 80A9094
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x26]
+ subs r0, 0x2
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ bne _080A90CA
+ movs r0, 0x10
+ strh r0, [r4, 0x2E]
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r0, _080A90D0 @ =sub_80A90D4
+ str r0, [r4, 0x1C]
+_080A90CA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A90D0: .4byte sub_80A90D4
+ thumb_func_end sub_80A9094
+
+ thumb_func_start sub_80A90D4
+sub_80A90D4: @ 80A90D4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x3
+ bl __modsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _080A9112
+ ldrh r1, [r4, 0x2E]
+ subs r1, 0x1
+ strh r1, [r4, 0x2E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080A9112
+ ldr r0, _080A9118 @ =sub_80A911C
+ str r0, [r4, 0x1C]
+_080A9112:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9118: .4byte sub_80A911C
+ thumb_func_end sub_80A90D4
+
+ thumb_func_start sub_80A911C
+sub_80A911C: @ 80A911C
+ push {lr}
+ adds r3, r0, 0
+ ldr r0, _080A9144 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _080A9148 @ =0x0000ffff
+ cmp r1, r0
+ bne _080A9154
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ movs r1, 0x3C
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ bne _080A9150
+ ldr r0, _080A914C @ =sub_80A915C
+ b _080A9152
+ .align 2, 0
+_080A9144: .4byte gBattleAnimArgs
+_080A9148: .4byte 0x0000ffff
+_080A914C: .4byte sub_80A915C
+_080A9150:
+ ldr r0, _080A9158 @ =DestroyAnimSprite
+_080A9152:
+ str r0, [r3, 0x1C]
+_080A9154:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9158: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A911C
+
+ thumb_func_start sub_80A915C
+sub_80A915C: @ 80A915C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A915C
+
+ thumb_func_start sub_80A917C
+sub_80A917C: @ 80A917C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080A91AC @ =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, _080A91B0 @ =gUnknown_83E4128
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080A91B4 @ =sub_80A91B8
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A91AC: .4byte gTasks
+_080A91B0: .4byte gUnknown_83E4128
+_080A91B4: .4byte sub_80A91B8
+ thumb_func_end sub_80A917C
+
+ thumb_func_start sub_80A91B8
+sub_80A91B8: @ 80A91B8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080A9208 @ =gTasks
+ adds r4, r0, r1
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0
+ bne _080A9202
+ ldr r2, _080A920C @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r3, [r0, 0x26]
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080A9202:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9208: .4byte gTasks
+_080A920C: .4byte gSprites
+ thumb_func_end sub_80A91B8
+
+ thumb_func_start sub_80A9210
+sub_80A9210: @ 80A9210
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080A9244 @ =gTasks
+ adds r4, r1, r0
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ strh r0, [r4, 0xE]
+ movs r0, 0x3
+ strh r0, [r4, 0x20]
+ ldr r0, _080A9248 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A9250
+ ldr r0, _080A924C @ =0x0000ffff
+ strh r0, [r4, 0x22]
+ movs r0, 0x8
+ b _080A9256
+ .align 2, 0
+_080A9244: .4byte gTasks
+_080A9248: .4byte gBattleAnimTarget
+_080A924C: .4byte 0x0000ffff
+_080A9250:
+ movs r0, 0x1
+ strh r0, [r4, 0x22]
+ ldr r0, _080A9270 @ =0x0000fff8
+_080A9256:
+ strh r0, [r4, 0x24]
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ ldr r0, _080A9274 @ =sub_80A9278
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9270: .4byte 0x0000fff8
+_080A9274: .4byte sub_80A9278
+ thumb_func_end sub_80A9210
+
+ thumb_func_start sub_80A9278
+sub_80A9278: @ 80A9278
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080A929C @ =gTasks
+ adds r3, r0, r1
+ movs r0, 0x8
+ ldrsh r4, [r3, r0]
+ cmp r4, 0x1
+ beq _080A92CC
+ cmp r4, 0x1
+ bgt _080A92A0
+ cmp r4, 0
+ beq _080A92AA
+ b _080A9392
+ .align 2, 0
+_080A929C: .4byte gTasks
+_080A92A0:
+ cmp r4, 0x2
+ beq _080A9348
+ cmp r4, 0x3
+ beq _080A9362
+ b _080A9392
+_080A92AA:
+ ldr r2, _080A92C8 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r3, 0x24]
+ ldrh r2, [r0, 0x24]
+ adds r1, r2
+ strh r1, [r0, 0x24]
+ strh r4, [r3, 0xA]
+ strh r4, [r3, 0xC]
+ strh r4, [r3, 0xE]
+ b _080A935A
+ .align 2, 0
+_080A92C8: .4byte gSprites
+_080A92CC:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080A9392
+ movs r0, 0
+ strh r0, [r3, 0xA]
+ ldrh r0, [r3, 0xC]
+ adds r0, 0x1
+ strh r0, [r3, 0xC]
+ ands r0, r4
+ lsls r0, 16
+ cmp r0, 0
+ beq _080A9304
+ ldr r2, _080A9300 @ =gSprites
+ movs r4, 0x26
+ ldrsh r1, [r3, r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x24]
+ adds r1, 0x6
+ b _080A9316
+ .align 2, 0
+_080A9300: .4byte gSprites
+_080A9304:
+ ldr r2, _080A9344 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x24]
+ subs r1, 0x6
+_080A9316:
+ strh r1, [r0, 0x24]
+ ldrh r0, [r3, 0xE]
+ adds r0, 0x1
+ strh r0, [r3, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ ble _080A9392
+ ldrh r1, [r3, 0xC]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A935A
+ movs r1, 0x26
+ ldrsh r0, [r3, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r1, 0x24]
+ subs r0, 0x6
+ strh r0, [r1, 0x24]
+ b _080A935A
+ .align 2, 0
+_080A9344: .4byte gSprites
+_080A9348:
+ ldrh r0, [r3, 0x20]
+ subs r0, 0x1
+ strh r0, [r3, 0x20]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080A935A
+ movs r0, 0
+ strh r0, [r3, 0x8]
+ b _080A9392
+_080A935A:
+ ldrh r0, [r3, 0x8]
+ adds r0, 0x1
+ strh r0, [r3, 0x8]
+ b _080A9392
+_080A9362:
+ ldr r2, _080A9398 @ =gSprites
+ movs r4, 0x26
+ ldrsh r1, [r3, r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r3, 0x22]
+ ldrh r4, [r0, 0x24]
+ adds r1, r4
+ strh r1, [r0, 0x24]
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0x24
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080A9392
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080A9392:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9398: .4byte gSprites
+ thumb_func_end sub_80A9278
+
+ thumb_func_start sub_80A939C
+sub_80A939C: @ 80A939C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080A93D8 @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ strh r0, [r4, 0xE]
+ movs r0, 0x1
+ strh r0, [r4, 0x10]
+ movs r0, 0xE
+ strh r0, [r4, 0x22]
+ movs r0, 0x2
+ strh r0, [r4, 0x24]
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ ldr r0, _080A93DC @ =sub_80A93E0
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A93D8: .4byte gTasks
+_080A93DC: .4byte sub_80A93E0
+ thumb_func_end sub_80A939C
+
+ thumb_func_start sub_80A93E0
+sub_80A93E0: @ 80A93E0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080A9434 @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r2, [r4, r0]
+ cmp r2, 0
+ bne _080A94A6
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x10
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ ble _080A94A6
+ strh r2, [r4, 0xA]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A943C
+ ldr r3, _080A9438 @ =gSprites
+ movs r6, 0x26
+ ldrsh r1, [r4, r6]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ b _080A9452
+ .align 2, 0
+_080A9434: .4byte gTasks
+_080A9438: .4byte gSprites
+_080A943C:
+ ldr r3, _080A9484 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+_080A9452:
+ strb r1, [r0]
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ movs r2, 0
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ movs r6, 0x22
+ ldrsh r1, [r4, r6]
+ cmp r0, r1
+ blt _080A94A6
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ asrs r0, 16
+ movs r6, 0x24
+ ldrsh r1, [r4, r6]
+ cmp r0, r1
+ bge _080A9488
+ strh r2, [r4, 0xA]
+ strh r2, [r4, 0xC]
+ strh r2, [r4, 0xE]
+ b _080A94A6
+ .align 2, 0
+_080A9484: .4byte gSprites
+_080A9488:
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080A94A6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A93E0
+
+ thumb_func_start sub_80A94AC
+sub_80A94AC: @ 80A94AC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080A94FC @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ movs r1, 0x4
+ strh r1, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ strh r0, [r4, 0xE]
+ strh r0, [r4, 0x10]
+ strh r0, [r4, 0x12]
+ strh r0, [r4, 0x14]
+ strh r0, [r4, 0x16]
+ strh r0, [r4, 0x18]
+ strh r0, [r4, 0x22]
+ ldr r5, _080A9500 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x24]
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ ldr r0, _080A9504 @ =sub_80A9508
+ str r0, [r4]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A94FC: .4byte gTasks
+_080A9500: .4byte gBattleAnimAttacker
+_080A9504: .4byte sub_80A9508
+ thumb_func_end sub_80A94AC
+
+ thumb_func_start sub_80A9508
+sub_80A9508: @ 80A9508
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _080A952C @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x18
+ ldrsh r2, [r4, r0]
+ cmp r2, 0x1
+ beq _080A9574
+ cmp r2, 0x1
+ bgt _080A9530
+ cmp r2, 0
+ beq _080A9536
+ b _080A9590
+ .align 2, 0
+_080A952C: .4byte gTasks
+_080A9530:
+ cmp r2, 0x2
+ beq _080A958C
+ b _080A9590
+_080A9536:
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080A9590
+ strh r2, [r4, 0x10]
+ ldrh r0, [r4, 0x12]
+ adds r0, 0x1
+ movs r1, 0x1
+ ands r0, r1
+ strh r0, [r4, 0x12]
+ ldrh r0, [r4, 0x14]
+ adds r0, 0x1
+ strh r0, [r4, 0x14]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ ble _080A9590
+ movs r1, 0x16
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080A956E
+ strh r2, [r4, 0x14]
+ movs r0, 0x1
+ strh r0, [r4, 0x18]
+ b _080A9590
+_080A956E:
+ movs r0, 0x2
+ strh r0, [r4, 0x18]
+ b _080A9590
+_080A9574:
+ movs r1, 0
+ strh r1, [r4, 0x12]
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ ble _080A9590
+ strh r2, [r4, 0x16]
+ strh r1, [r4, 0x18]
+ b _080A9590
+_080A958C:
+ movs r0, 0x1
+ strh r0, [r4, 0x12]
+_080A9590:
+ movs r2, 0x8
+ ldrsh r5, [r4, r2]
+ cmp r5, 0
+ beq _080A959E
+ cmp r5, 0x1
+ beq _080A9634
+ b _080A9642
+_080A959E:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ ble _080A9642
+ strh r5, [r4, 0xA]
+ ldr r0, _080A9628 @ =gUnknown_83E4154
+ movs r3, 0x24
+ ldrsh r1, [r4, r3]
+ movs r3, 0x26
+ ldrsh r2, [r4, r3]
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x40
+ beq _080A9642
+ ldr r0, _080A962C @ =gSprites
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ strh r6, [r1, 0x2E]
+ movs r0, 0xD
+ strh r0, [r1, 0x30]
+ ldr r2, _080A9630 @ =gUnknown_83E416C
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ lsls r0, 1
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r1, 0x24]
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ lsls r0, 1
+ adds r2, 0x1
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r1, 0x26]
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ ble _080A9642
+ strh r5, [r4, 0xC]
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ ble _080A9642
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080A9642
+ .align 2, 0
+_080A9628: .4byte gUnknown_83E4154
+_080A962C: .4byte gSprites
+_080A9630: .4byte gUnknown_83E416C
+_080A9634:
+ movs r1, 0x22
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080A9642
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080A9642:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A9508
+
+ thumb_func_start sub_80A9648
+sub_80A9648: @ 80A9648
+ push {r4,lr}
+ adds r3, r0, 0
+ ldr r4, _080A96B0 @ =gTasks
+ movs r0, 0x2E
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r4
+ movs r1, 0x3E
+ adds r1, r3
+ mov r12, r1
+ movs r2, 0x1
+ ldrb r1, [r0, 0x12]
+ ands r1, r2
+ lsls r1, 2
+ mov r0, r12
+ ldrb r2, [r0]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ adds r0, r3, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080A96AA
+ movs r0, 0x30
+ ldrsh r1, [r3, r0]
+ lsls r1, 1
+ movs r0, 0x2E
+ ldrsh r2, [r3, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r0, r4, 0
+ adds r0, 0x8
+ adds r1, r0
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r3, 0
+ bl DestroySprite
+_080A96AA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A96B0: .4byte gTasks
+ thumb_func_end sub_80A9648
+
+ thumb_func_start sub_80A96B4
+sub_80A96B4: @ 80A96B4
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, _080A9750 @ =0x000027de
+ bl IndexOfSpritePaletteTag
+ mov r1, sp
+ strb r0, [r1]
+ movs r4, 0x1
+ ldr r0, _080A9754 @ =0x00002710
+ adds r5, r0, 0
+_080A96CC:
+ subs r0, r5, r4
+ lsls r0, 16
+ lsrs r0, 16
+ bl AllocSpritePalette
+ mov r2, sp
+ adds r1, r2, r4
+ strb r0, [r1]
+ adds r4, 0x1
+ cmp r4, 0x2
+ ble _080A96CC
+ movs r0, 0x80
+ lsls r0, 6
+ bl AllocZeroed
+ adds r1, r0, 0
+ ldr r0, _080A9758 @ =gMonSpritesGfxPtr
+ ldr r0, [r0]
+ movs r2, 0xBE
+ lsls r2, 1
+ adds r0, r2
+ str r1, [r0]
+ ldr r0, _080A975C @ =gFile_graphics_battle_anims_sprites_206_palette
+ bl LZDecompressWram
+ movs r4, 0
+_080A9700:
+ ldr r5, _080A9758 @ =gMonSpritesGfxPtr
+ ldr r0, [r5]
+ movs r1, 0xBE
+ lsls r1, 1
+ adds r0, r1
+ lsls r1, r4, 6
+ ldr r0, [r0]
+ adds r0, r1
+ mov r2, sp
+ adds r1, r2, r4
+ ldrb r1, [r1]
+ lsls r1, 20
+ movs r2, 0x80
+ lsls r2, 17
+ adds r1, r2
+ lsrs r1, 16
+ movs r2, 0x20
+ bl LoadPalette
+ adds r4, 0x1
+ cmp r4, 0x2
+ ble _080A9700
+ ldr r0, [r5]
+ movs r4, 0xBE
+ lsls r4, 1
+ adds r0, r4
+ ldr r0, [r0]
+ bl Free
+ ldr r0, [r5]
+ adds r0, r4
+ movs r1, 0
+ str r1, [r0]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9750: .4byte 0x000027de
+_080A9754: .4byte 0x00002710
+_080A9758: .4byte gMonSpritesGfxPtr
+_080A975C: .4byte gFile_graphics_battle_anims_sprites_206_palette
+ thumb_func_end sub_80A96B4
+
+ thumb_func_start sub_80A9760
+sub_80A9760: @ 80A9760
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r5, _080A9784 @ =gUnknown_83E41C8
+ movs r4, 0x2
+_080A976A:
+ ldrh r0, [r5]
+ bl FreeSpritePaletteByTag
+ adds r5, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _080A976A
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9784: .4byte gUnknown_83E41C8
+ thumb_func_end sub_80A9760
+
+ thumb_func_start sub_80A9788
+sub_80A9788: @ 80A9788
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r1, 24
+ lsls r2, 24
+ lsrs r3, r2, 24
+ movs r0, 0x1
+ ands r3, r0
+ negs r0, r3
+ orrs r0, r3
+ asrs r0, 31
+ movs r3, 0x20
+ ands r0, r3
+ ldrh r4, [r5, 0x4]
+ lsls r3, r4, 22
+ lsrs r3, 22
+ lsrs r1, 22
+ adds r0, r1
+ adds r3, r0
+ ldr r1, _080A97DC @ =0x000003ff
+ adds r0, r1, 0
+ ands r3, r0
+ ldr r0, _080A97E0 @ =0xfffffc00
+ ands r0, r4
+ orrs r0, r3
+ strh r0, [r5, 0x4]
+ ldr r0, _080A97E4 @ =gUnknown_83E41C8
+ lsrs r2, 25
+ lsls r2, 1
+ adds r2, r0
+ ldrh r0, [r2]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 4
+ ldrb r2, [r5, 0x5]
+ movs r1, 0xF
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r5, 0x5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A97DC: .4byte 0x000003ff
+_080A97E0: .4byte 0xfffffc00
+_080A97E4: .4byte gUnknown_83E41C8
+ thumb_func_end sub_80A9788
+
+ thumb_func_start sub_80A97E8
+sub_80A97E8: @ 80A97E8
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r1, 0
+ bl sub_8075160
+ ldr r6, _080A9850 @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A9808
+ ldr r1, _080A9854 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080A9808:
+ ldr r4, _080A9854 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x8]
+ strh r0, [r5, 0x2E]
+ ldrb r0, [r6]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x4]
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ ldrb r0, [r6]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x6]
+ adds r0, r1
+ strh r0, [r5, 0x36]
+ ldr r0, _080A9858 @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080A985C @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldrb r1, [r4, 0xA]
+ ldrb r2, [r4, 0xC]
+ adds r0, r5, 0
+ bl sub_80A9788
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9850: .4byte gBattleAnimAttacker
+_080A9854: .4byte gBattleAnimArgs
+_080A9858: .4byte sub_8075590
+_080A985C: .4byte DestroyAnimSprite
+ thumb_func_end sub_80A97E8
+
+ thumb_func_start sub_80A9860
+sub_80A9860: @ 80A9860
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080A987A
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075160
+_080A987A:
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x8
+ bl Sin
+ strh r0, [r4, 0x24]
+ ldrh r2, [r4, 0x32]
+ lsls r0, r2, 16
+ asrs r0, 24
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x7
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ subs r2, 0x80
+ strh r2, [r4, 0x32]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x3C
+ bne _080A98AA
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A98AA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A9860
+
+ thumb_func_start sub_80A98B0
+sub_80A98B0: @ 80A98B0
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ bl sub_8073788
+ lsls r0, 24
+ movs r6, 0xF0
+ cmp r0, 0
+ beq _080A98C4
+ movs r6, 0x98
+_080A98C4:
+ movs r5, 0
+ ldr r1, _080A9918 @ =gUnknown_2022984
+ strh r6, [r1]
+ ldr r4, _080A991C @ =gUnknown_2022986
+ movs r0, 0xA0
+ strh r0, [r4]
+ ldrh r1, [r1]
+ movs r0, 0x40
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x44
+ bl SetGpuReg
+ ldr r1, _080A9920 @ =0x00003f1f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r1, _080A9924 @ =0x00003f3f
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r0, 0x50
+ movs r1, 0xC8
+ bl SetGpuReg
+ movs r0, 0x54
+ movs r1, 0x10
+ bl SetGpuReg
+ ldr r1, _080A9928 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r1
+ strh r5, [r0, 0x8]
+ strh r6, [r0, 0xA]
+ ldr r1, _080A992C @ =sub_80A9930
+ str r1, [r0]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9918: .4byte gUnknown_2022984
+_080A991C: .4byte gUnknown_2022986
+_080A9920: .4byte 0x00003f1f
+_080A9924: .4byte 0x00003f3f
+_080A9928: .4byte gTasks
+_080A992C: .4byte sub_80A9930
+ thumb_func_end sub_80A98B0
+
+ thumb_func_start sub_80A9930
+sub_80A9930: @ 80A9930
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080A9964 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r3, r1, r2
+ ldrh r0, [r3, 0x8]
+ adds r4, r0, 0
+ adds r4, 0xD
+ strh r4, [r3, 0x8]
+ ldrh r0, [r3, 0xA]
+ adds r2, r0, 0
+ subs r2, 0xD
+ strh r2, [r3, 0xA]
+ lsls r1, r4, 16
+ lsls r0, r2, 16
+ cmp r1, r0
+ blt _080A9970
+ ldr r0, _080A9968 @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080A996C @ =sub_80A9984
+ str r0, [r3]
+ b _080A9978
+ .align 2, 0
+_080A9964: .4byte gTasks
+_080A9968: .4byte gUnknown_2022984
+_080A996C: .4byte sub_80A9984
+_080A9970:
+ ldr r1, _080A9980 @ =gUnknown_2022984
+ lsls r0, r4, 8
+ orrs r2, r0
+ strh r2, [r1]
+_080A9978:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9980: .4byte gUnknown_2022984
+ thumb_func_end sub_80A9930
+
+ thumb_func_start sub_80A9984
+sub_80A9984: @ 80A9984
+ push {r4,r5,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080A99D0 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x1C]
+ adds r0, 0x1
+ movs r4, 0
+ strh r0, [r1, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ bne _080A99D8
+ movs r0, 0x88
+ strh r0, [r1, 0x1E]
+ movs r0, 0x50
+ movs r1, 0x88
+ bl SetGpuReg
+ str r4, [sp]
+ str r4, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl sub_8075BE8
+ ldr r2, _080A99D4 @ =0x00007fff
+ movs r1, 0x10
+ bl BlendPalettes
+ b _080A9A0C
+ .align 2, 0
+_080A99D0: .4byte gTasks
+_080A99D4: .4byte 0x00007fff
+_080A99D8:
+ cmp r0, 0x4
+ ble _080A9A0C
+ ldr r0, _080A9A14 @ =gUnknown_2022984
+ strh r4, [r0]
+ ldr r0, _080A9A18 @ =gUnknown_2022986
+ strh r4, [r0]
+ ldr r4, _080A9A1C @ =0x00003f3f
+ movs r0, 0x48
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x54
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080A9A0C:
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9A14: .4byte gUnknown_2022984
+_080A9A18: .4byte gUnknown_2022986
+_080A9A1C: .4byte 0x00003f3f
+ thumb_func_end sub_80A9984
+
+ thumb_func_start sub_80A9A20
+sub_80A9A20: @ 80A9A20
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080A9A70 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080A9A7C
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080A9A74 @ =gUnknown_83E4200
+ adds r0, r5, 0
+ bl sub_80762D0
+ ldr r1, _080A9A78 @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0x4
+ strh r1, [r0, 0x24]
+ b _080A9AA4
+ .align 2, 0
+_080A9A70: .4byte gTasks
+_080A9A74: .4byte gUnknown_83E4200
+_080A9A78: .4byte gSprites
+_080A9A7C:
+ ldr r1, _080A9AAC @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x24]
+ negs r0, r0
+ strh r0, [r4, 0x24]
+ adds r0, r5, 0
+ bl sub_8076308
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _080A9AA4
+ strh r0, [r4, 0x24]
+ strh r0, [r4, 0x26]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080A9AA4:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9AAC: .4byte gSprites
+ thumb_func_end sub_80A9A20
+
+ thumb_func_start sub_80A9AB0
+sub_80A9AB0: @ 80A9AB0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080A9B00 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080A9B0C
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080A9B04 @ =gUnknown_83E4200
+ adds r0, r5, 0
+ bl sub_80762D0
+ ldr r1, _080A9B08 @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0x4
+ strh r1, [r0, 0x24]
+ b _080A9B34
+ .align 2, 0
+_080A9B00: .4byte gTasks
+_080A9B04: .4byte gUnknown_83E4200
+_080A9B08: .4byte gSprites
+_080A9B0C:
+ ldr r1, _080A9B3C @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x24]
+ negs r0, r0
+ strh r0, [r4, 0x24]
+ adds r0, r5, 0
+ bl sub_8076308
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _080A9B34
+ strh r0, [r4, 0x24]
+ strh r0, [r4, 0x26]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080A9B34:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9B3C: .4byte gSprites
+ thumb_func_end sub_80A9AB0
+
+ thumb_func_start sub_80A9B40
+sub_80A9B40: @ 80A9B40
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ movs r0, 0x5F
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldr r5, _080A9B84 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ 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 r0, _080A9B88 @ =sub_80A9B8C
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9B84: .4byte gBattleAnimTarget
+_080A9B88: .4byte sub_80A9B8C
+ thumb_func_end sub_80A9B40
+
+ thumb_func_start sub_80A9B8C
+sub_80A9B8C: @ 80A9B8C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A9BB6
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0xE
+ bl Sin
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x4
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ b _080A9BBC
+_080A9BB6:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A9BBC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A9B8C
+
+ thumb_func_start sub_80A9BC4
+sub_80A9BC4: @ 80A9BC4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r2, [r4, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080A9BE8
+ ldr r1, _080A9BE4 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x32]
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x2E]
+ b _080A9C44
+ .align 2, 0
+_080A9BE4: .4byte gBattleAnimArgs
+_080A9BE8:
+ 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 _080A9C36
+ 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]
+_080A9C36:
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x78
+ ble _080A9C44
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A9C44:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A9BC4
+
+ thumb_func_start sub_80A9C4C
+sub_80A9C4C: @ 80A9C4C
+ push {lr}
+ ldr r2, _080A9C70 @ =gBattleAnimArgs
+ ldrh r1, [r2]
+ strh r1, [r0, 0x20]
+ movs r1, 0xA0
+ strh r1, [r0, 0x22]
+ ldrh r1, [r2, 0x4]
+ strh r1, [r0, 0x2E]
+ ldrh r1, [r2, 0x2]
+ strh r1, [r0, 0x30]
+ ldr r1, _080A9C74 @ =sub_8074C44
+ str r1, [r0, 0x1C]
+ ldr r1, _080A9C78 @ =sub_80A9C7C
+ bl StoreSpriteCallbackInData6
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9C70: .4byte gBattleAnimArgs
+_080A9C74: .4byte sub_8074C44
+_080A9C78: .4byte sub_80A9C7C
+ thumb_func_end sub_80A9C4C
+
+ thumb_func_start sub_80A9C7C
+sub_80A9C7C: @ 80A9C7C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x32]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ lsrs r0, 24
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ movs r1, 0x4
+ bl Sin
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x3
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ lsls r0, 16
+ asrs r5, r0, 16
+ cmp r5, 0x48
+ bgt _080A9CE2
+ movs r0, 0x34
+ ldrsh r1, [r4, r0]
+ lsrs r0, r1, 31
+ adds r0, r1, r0
+ asrs r0, 1
+ lsls r0, 1
+ subs r1, r0
+ adds r3, r4, 0
+ adds r3, 0x3E
+ movs r0, 0x1
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r3]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ cmp r5, 0x40
+ bgt _080A9CE2
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080A9CE2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A9C7C
+
+ thumb_func_start sub_80A9CE8
+sub_80A9CE8: @ 80A9CE8
+ push {r4,r5,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080A9DA0 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x3
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A9D2A
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080A9D2A:
+ ldr r0, _080A9DA4 @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r4, _080A9DA8 @ =gBattle_BG1_Y
+ strh r1, [r4]
+ movs r0, 0x14
+ movs r1, 0
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x16
+ bl SetGpuReg
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080A9DAC @ =gFile_graphics_battle_anims_backgrounds_attract_tilemap
+ bl sub_807543C
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080A9DB0 @ =gFile_graphics_battle_anims_backgrounds_attract_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080A9DB4 @ =gFile_graphics_battle_anims_backgrounds_attract_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A9D88
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80730C0
+_080A9D88:
+ ldr r0, _080A9DB8 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080A9DBC @ =sub_80A9DC0
+ str r0, [r1]
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A9DA0: .4byte 0x00003f42
+_080A9DA4: .4byte gBattle_BG1_X
+_080A9DA8: .4byte gBattle_BG1_Y
+_080A9DAC: .4byte gFile_graphics_battle_anims_backgrounds_attract_tilemap
+_080A9DB0: .4byte gFile_graphics_battle_anims_backgrounds_attract_sheet
+_080A9DB4: .4byte gFile_graphics_battle_anims_backgrounds_attract_palette
+_080A9DB8: .4byte gTasks
+_080A9DBC: .4byte sub_80A9DC0
+ thumb_func_end sub_80A9CE8
+
+ thumb_func_start sub_80A9DC0
+sub_80A9DC0: @ 80A9DC0
+ push {r4,r5,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080A9DE8 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x20
+ ldrsh r0, [r0, r2]
+ adds r2, r1, 0
+ cmp r0, 0x4
+ bls _080A9DDE
+ b _080A9F08
+_080A9DDE:
+ lsls r0, 2
+ ldr r1, _080A9DEC @ =_080A9DF0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080A9DE8: .4byte gTasks
+_080A9DEC: .4byte _080A9DF0
+ .align 2, 0
+_080A9DF0:
+ .4byte _080A9E04
+ .4byte _080A9E48
+ .4byte _080A9E6A
+ .4byte _080A9EAE
+ .4byte _080A9ED4
+_080A9E04:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r2
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ movs r5, 0
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080A9F08
+ strh r5, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ adds r1, 0x1
+ strh r1, [r4, 0x1E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080A9F08
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ strh r5, [r4, 0x1E]
+ b _080A9F08
+_080A9E48:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r2
+ ldrh r0, [r1, 0x1E]
+ adds r0, 0x1
+ strh r0, [r1, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8D
+ bne _080A9F08
+ movs r0, 0x10
+ strh r0, [r1, 0x1E]
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+ b _080A9F08
+_080A9E6A:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r2
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080A9F08
+ movs r0, 0
+ strh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ subs r1, 0x1
+ strh r1, [r4, 0x1E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0x1E
+ ldrsh r1, [r4, r2]
+ cmp r1, 0
+ bne _080A9F08
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ strh r1, [r4, 0x1E]
+ b _080A9F08
+_080A9EAE:
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ bl sub_8075358
+ ldr r1, _080A9ED0 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldrh r1, [r0, 0x20]
+ adds r1, 0x1
+ strh r1, [r0, 0x20]
+ b _080A9F08
+ .align 2, 0
+_080A9ED0: .4byte gTasks
+_080A9ED4:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A9EE8
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080A9EE8:
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080A9F08:
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A9DC0
+
+ thumb_func_start sub_80A9F10
+sub_80A9F10: @ 80A9F10
+ push {r4,r5,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080A9F88 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A9F52
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080A9F52:
+ ldr r0, _080A9F8C @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r4, _080A9F90 @ =gBattle_BG1_Y
+ strh r1, [r4]
+ movs r0, 0x14
+ movs r1, 0
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x16
+ bl SetGpuReg
+ mov r0, sp
+ bl sub_80752A0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A9F98
+ ldr r0, _080A9F94 @ =gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap
+ ldr r1, [sp, 0x4]
+ bl LZDecompressVram
+ b _080A9FC6
+ .align 2, 0
+_080A9F88: .4byte 0x00003f42
+_080A9F8C: .4byte gBattle_BG1_X
+_080A9F90: .4byte gBattle_BG1_Y
+_080A9F94: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap
+_080A9F98:
+ ldr r0, _080A9FB4 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080A9FBC
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080A9FB8 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
+ bl sub_807543C
+ b _080A9FC6
+ .align 2, 0
+_080A9FB4: .4byte gBattleAnimTarget
+_080A9FB8: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
+_080A9FBC:
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080AA010 @ =gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap
+ bl sub_807543C
+_080A9FC6:
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080AA014 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080AA018 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A9FFA
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80730C0
+_080A9FFA:
+ ldr r0, _080AA01C @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080AA020 @ =sub_80AA024
+ str r0, [r1]
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA010: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap
+_080AA014: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet
+_080AA018: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette
+_080AA01C: .4byte gTasks
+_080AA020: .4byte sub_80AA024
+ thumb_func_end sub_80A9F10
+
+ thumb_func_start sub_80AA024
+sub_80AA024: @ 80AA024
+ push {r4,r5,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080AA04C @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x20
+ ldrsh r0, [r0, r2]
+ adds r2, r1, 0
+ cmp r0, 0x4
+ bls _080AA042
+ b _080AA168
+_080AA042:
+ lsls r0, 2
+ ldr r1, _080AA050 @ =_080AA054
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080AA04C: .4byte gTasks
+_080AA050: .4byte _080AA054
+ .align 2, 0
+_080AA054:
+ .4byte _080AA068
+ .4byte _080AA0AC
+ .4byte _080AA0CE
+ .4byte _080AA112
+ .4byte _080AA134
+_080AA068:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r2
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ movs r5, 0
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _080AA168
+ strh r5, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ adds r1, 0x1
+ strh r1, [r4, 0x1E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xE
+ bne _080AA168
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ strh r5, [r4, 0x1E]
+ b _080AA168
+_080AA0AC:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r2
+ ldrh r0, [r1, 0x1E]
+ adds r0, 0x1
+ strh r0, [r1, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x15
+ bne _080AA168
+ movs r0, 0xE
+ strh r0, [r1, 0x1E]
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+ b _080AA168
+_080AA0CE:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r2
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _080AA168
+ movs r0, 0
+ strh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ subs r1, 0x1
+ strh r1, [r4, 0x1E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0x1E
+ ldrsh r1, [r4, r2]
+ cmp r1, 0
+ bne _080AA168
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ strh r1, [r4, 0x1E]
+ b _080AA168
+_080AA112:
+ mov r0, sp
+ bl sub_80752A0
+ movs r0, 0x1
+ bl sub_8075358
+ movs r0, 0x2
+ bl sub_8075358
+ ldr r0, _080AA170 @ =gTasks
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+_080AA134:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AA148
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080AA148:
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080AA168:
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA170: .4byte gTasks
+ thumb_func_end sub_80AA024
+
+ thumb_func_start sub_80AA174
+sub_80AA174: @ 80AA174
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080AA1C8 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r1, _080AA1CC @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x30]
+ ldrb r0, [r5]
+ bl sub_807685C
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x3C]
+ ldr r1, _080AA1D0 @ =sub_80AA1D4
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA1C8: .4byte gBattleAnimAttacker
+_080AA1CC: .4byte gBattleAnimArgs
+_080AA1D0: .4byte sub_80AA1D4
+ thumb_func_end sub_80AA174
+
+ thumb_func_start sub_80AA1D4
+sub_80AA1D4: @ 80AA1D4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x7F
+ bhi _080AA1EA
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x1
+ b _080AA1EE
+_080AA1EA:
+ ldrh r0, [r4, 0x3C]
+ subs r0, 0x1
+_080AA1EE:
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x32]
+ lsls r1, 16
+ asrs r1, 24
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ ldrh r1, [r4, 0x34]
+ lsls r1, 16
+ asrs r1, 24
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x9
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ movs r3, 0x38
+ ldrsh r2, [r4, r3]
+ cmp r2, 0
+ beq _080AA260
+ cmp r2, 0x1
+ bne _080AA290
+ ldr r1, _080AA258 @ =0xfffffc00
+ adds r0, r1, 0
+ ldrh r2, [r4, 0x32]
+ adds r0, r2
+ strh r0, [r4, 0x32]
+ ldr r3, _080AA25C @ =0xffffff00
+ adds r0, r3, 0
+ ldrh r1, [r4, 0x34]
+ adds r0, r1
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x1
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ bne _080AA290
+ movs r0, 0x2
+ strh r0, [r4, 0x38]
+ b _080AA2A0
+ .align 2, 0
+_080AA258: .4byte 0xfffffc00
+_080AA25C: .4byte 0xffffff00
+_080AA260:
+ movs r3, 0x80
+ lsls r3, 3
+ adds r0, r3, 0
+ ldrh r1, [r4, 0x32]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ movs r3, 0x80
+ lsls r3, 1
+ adds r0, r3, 0
+ ldrh r1, [r4, 0x34]
+ adds r0, r1
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x1
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x2E
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ bne _080AA290
+ strh r2, [r4, 0x36]
+ movs r0, 0x1
+ strh r0, [r4, 0x38]
+_080AA290:
+ ldr r0, _080AA2A8 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _080AA2AC @ =0x0000ffff
+ cmp r1, r0
+ bne _080AA2A0
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AA2A0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA2A8: .4byte gBattleAnimArgs
+_080AA2AC: .4byte 0x0000ffff
+ thumb_func_end sub_80AA1D4
+
+ thumb_func_start sub_80AA2B0
+sub_80AA2B0: @ 80AA2B0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080AA2F8 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r4, _080AA2FC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ movs r1, 0xA
+ bl Sin
+ strh r0, [r5, 0x2E]
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ movs r1, 0x7
+ bl Cos
+ strh r0, [r5, 0x30]
+ ldr r0, _080AA300 @ =sub_80AA304
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA2F8: .4byte gBattleAnimAttacker
+_080AA2FC: .4byte gBattleAnimArgs
+_080AA300: .4byte sub_80AA304
+ thumb_func_end sub_80AA2B0
+
+ thumb_func_start sub_80AA304
+sub_80AA304: @ 80AA304
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ ldrh r1, [r2, 0x24]
+ adds r0, r1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x30]
+ ldrh r3, [r2, 0x26]
+ adds r0, r3
+ strh r0, [r2, 0x26]
+ movs r1, 0x20
+ ldrsh r0, [r2, r1]
+ movs r3, 0x24
+ ldrsh r1, [r2, r3]
+ adds r0, r1
+ adds r0, 0x10
+ movs r1, 0x88
+ lsls r1, 1
+ cmp r0, r1
+ bhi _080AA342
+ movs r0, 0x22
+ ldrsh r1, [r2, r0]
+ movs r3, 0x26
+ ldrsh r0, [r2, r3]
+ adds r1, r0
+ cmp r1, 0xA0
+ bgt _080AA342
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _080AA348
+_080AA342:
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080AA348:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AA304
+
+ thumb_func_start sub_80AA34C
+sub_80AA34C: @ 80AA34C
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ ldrh r1, [r2, 0x24]
+ adds r0, r1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x30]
+ ldrh r3, [r2, 0x26]
+ adds r0, r3
+ strh r0, [r2, 0x26]
+ ldrh r0, [r2, 0x34]
+ adds r1, r0, 0x1
+ strh r1, [r2, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x32
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ blt _080AA378
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080AA378:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AA34C
+
+ thumb_func_start sub_80AA37C
+sub_80AA37C: @ 80AA37C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080AA3C8 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r4, _080AA3CC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ movs r1, 0xA
+ bl Sin
+ strh r0, [r5, 0x2E]
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ movs r1, 0x7
+ bl Cos
+ strh r0, [r5, 0x30]
+ ldrh r0, [r4, 0x2]
+ strh r0, [r5, 0x32]
+ ldr r0, _080AA3D0 @ =sub_80AA34C
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA3C8: .4byte gBattleAnimAttacker
+_080AA3CC: .4byte gBattleAnimArgs
+_080AA3D0: .4byte sub_80AA34C
+ thumb_func_end sub_80AA37C
+
+ thumb_func_start sub_80AA3D4
+sub_80AA3D4: @ 80AA3D4
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080AA3EA
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080AA3EA:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AA3D4
+
+ thumb_func_start sub_80AA3F0
+sub_80AA3F0: @ 80AA3F0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080AA404 @ =sub_80AA3D4
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA404: .4byte sub_80AA3D4
+ thumb_func_end sub_80AA3F0
+
+ thumb_func_start sub_80AA408
+sub_80AA408: @ 80AA408
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AA426
+ ldr r0, _080AA498 @ =gBattleAnimArgs
+ ldrh r1, [r0]
+ ldrh r2, [r4, 0x20]
+ adds r1, r2
+ strh r1, [r4, 0x20]
+ ldrh r0, [r0, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+_080AA426:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r5, r0, 1
+ movs r0, 0xFF
+ ands r5, r0
+ adds r0, r5, 0
+ movs r1, 0x50
+ bl Sin
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4F
+ bgt _080AA46A
+ adds r0, r5, 0
+ movs r1, 0x50
+ bl Cos
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ lsrs r2, r1, 31
+ adds r1, r2
+ asrs r1, 1
+ lsls r0, 16
+ asrs r0, 24
+ adds r1, r0
+ strh r1, [r4, 0x26]
+_080AA46A:
+ movs r0, 0x2E
+ ldrsh r2, [r4, r0]
+ cmp r2, 0x5A
+ ble _080AA488
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ lsrs r0, r1, 31
+ adds r1, r0
+ asrs r1, 1
+ ldrh r0, [r4, 0x24]
+ subs r0, r1
+ strh r0, [r4, 0x24]
+_080AA488:
+ cmp r2, 0x64
+ ble _080AA492
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AA492:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA498: .4byte gBattleAnimArgs
+ thumb_func_end sub_80AA408
+
+ thumb_func_start sub_80AA49C
+sub_80AA49C: @ 80AA49C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ movs r1, 0x5
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x3
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x34]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x14
+ ble _080AA4F2
+ adds r1, r0, 0
+ lsrs r0, r1, 31
+ adds r0, r1, r0
+ asrs r0, 1
+ lsls r0, 1
+ subs r1, r0
+ adds r3, r4, 0
+ adds r3, 0x3E
+ movs r0, 0x1
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r3]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_080AA4F2:
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1E
+ ble _080AA500
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AA500:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AA49C
+
+ thumb_func_start sub_80AA508
+sub_80AA508: @ 80AA508
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r2, [r4, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AA52C
+ ldr r1, _080AA528 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x32]
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x2E]
+ b _080AA580
+ .align 2, 0
+_080AA528: .4byte gBattleAnimArgs
+_080AA52C:
+ ldrh r0, [r4, 0x30]
+ ldrh r2, [r4, 0x36]
+ adds r0, r2
+ movs r5, 0
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ movs r2, 0x32
+ ldrsh r1, [r4, r2]
+ bl Sin
+ adds r2, r0, 0
+ strh r2, [r4, 0x26]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x3
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x34]
+ cmp r0, 0x46
+ ble _080AA580
+ ldr r0, _080AA588 @ =sub_80AA49C
+ str r0, [r4, 0x1C]
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r1, [r4, 0x22]
+ adds r0, r2, r1
+ strh r0, [r4, 0x22]
+ strh r5, [r4, 0x24]
+ strh r5, [r4, 0x26]
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xB4
+ bl __umodsi3
+ strh r0, [r4, 0x34]
+_080AA580:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA588: .4byte sub_80AA49C
+ thumb_func_end sub_80AA508
+
+ thumb_func_start sub_80AA58C
+sub_80AA58C: @ 80AA58C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AA5C6
+ ldr r1, _080AA688 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ adds r0, r4, 0
+ movs r1, 0
+ bl StartSpriteAnim
+ ldr r0, _080AA68C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_807685C
+ subs r0, 0x1
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+_080AA5C6:
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x2E]
+ adds r0, r2
+ strh r0, [r4, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 2
+ adds r0, r1, 0
+ cmp r1, 0
+ bge _080AA5DC
+ adds r0, 0xFF
+_080AA5DC:
+ asrs r0, 8
+ lsls r0, 8
+ subs r0, r1, r0
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080AA5EE
+ movs r0, 0
+ strh r0, [r4, 0x30]
+_080AA5EE:
+ movs r0, 0x30
+ ldrsh r2, [r4, r0]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bge _080AA5FC
+ adds r0, 0x3
+_080AA5FC:
+ asrs r0, 2
+ movs r1, 0x1E
+ subs r1, r0
+ adds r0, r2, 0
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r0, 0x30
+ ldrsh r2, [r4, r0]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bge _080AA618
+ adds r0, 0x7
+_080AA618:
+ asrs r0, 3
+ movs r1, 0xA
+ subs r1, r0
+ adds r0, r2, 0
+ bl Sin
+ strh r0, [r4, 0x26]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x80
+ ble _080AA63C
+ ldrh r1, [r4, 0x32]
+ movs r2, 0x32
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080AA63C
+ ldr r0, _080AA690 @ =0x0000ffff
+ strh r0, [r4, 0x32]
+_080AA63C:
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AA650
+ movs r2, 0x32
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bge _080AA650
+ movs r0, 0x1
+ strh r0, [r4, 0x32]
+_080AA650:
+ ldrh r0, [r4, 0x34]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x34]
+ subs r0, 0x9
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x46
+ bls _080AA694
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsrs r0, r1, 31
+ adds r0, r1, r0
+ asrs r0, 1
+ lsls r0, 1
+ subs r1, r0
+ adds r3, r4, 0
+ adds r3, 0x3E
+ movs r0, 0x1
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r3]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ b _080AA6A2
+ .align 2, 0
+_080AA688: .4byte gBattleAnimArgs
+_080AA68C: .4byte gBattleAnimTarget
+_080AA690: .4byte 0x0000ffff
+_080AA694:
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_080AA6A2:
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5A
+ ble _080AA6B0
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AA6B0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AA58C
+
+ thumb_func_start sub_80AA6B8
+sub_80AA6B8: @ 80AA6B8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AA6EC
+ ldr r1, _080AA6E8 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldrb r1, [r1, 0x4]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080AA700
+ .align 2, 0
+_080AA6E8: .4byte gBattleAnimArgs
+_080AA6EC:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080AA700
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AA700:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AA6B8
+
+ thumb_func_start sub_80AA708
+sub_80AA708: @ 80AA708
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r1, _080AA720 @ =gBattleAnimArgs
+ movs r2, 0x4
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080AA724
+ adds r0, r5, 0
+ bl DestroyAnimSprite
+ b _080AA788
+ .align 2, 0
+_080AA720: .4byte gBattleAnimArgs
+_080AA724:
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080AA734
+ ldr r4, _080AA730 @ =gBattleAnimAttacker
+ b _080AA736
+ .align 2, 0
+_080AA730: .4byte gBattleAnimAttacker
+_080AA734:
+ ldr r4, _080AA764 @ =gBattleAnimTarget
+_080AA736:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r0, _080AA768 @ =gBattleAnimArgs
+ movs r2, 0x2
+ ldrsh r1, [r0, r2]
+ adds r2, r0, 0
+ cmp r1, 0
+ bne _080AA76C
+ ldrh r0, [r5, 0x20]
+ adds r0, 0x20
+ b _080AA770
+ .align 2, 0
+_080AA764: .4byte gBattleAnimTarget
+_080AA768: .4byte gBattleAnimArgs
+_080AA76C:
+ ldrh r0, [r5, 0x20]
+ subs r0, 0x20
+_080AA770:
+ strh r0, [r5, 0x20]
+ ldrh r0, [r2, 0x4]
+ strh r0, [r5, 0x2E]
+ ldrh r1, [r2, 0x2]
+ strh r1, [r5, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080AA790 @ =sub_80AA794
+ str r0, [r5, 0x1C]
+_080AA788:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA790: .4byte sub_80AA794
+ thumb_func_end sub_80AA708
+
+ thumb_func_start sub_80AA794
+sub_80AA794: @ 80AA794
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080AA7C4
+ ldrh r0, [r2, 0x2E]
+ subs r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080AA7BE
+ ldrh r1, [r2, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r2, 0
+ bl StartSpriteAnim
+ b _080AA7C4
+_080AA7BE:
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080AA7C4:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AA794
+
+ thumb_func_start sub_80AA7C8
+sub_80AA7C8: @ 80AA7C8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r0, _080AA7FC @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r4, r5, 2
+ adds r4, r5
+ lsls r4, 3
+ ldr r0, _080AA800 @ =gTasks
+ adds r4, r0
+ ldr r2, _080AA804 @ =gUnknown_83E4410
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080AA808 @ =sub_80AA80C
+ str r0, [r4]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA7FC: .4byte gBattleAnimArgs
+_080AA800: .4byte gTasks
+_080AA804: .4byte gUnknown_83E4410
+_080AA808: .4byte sub_80AA80C
+ thumb_func_end sub_80AA7C8
+
+ thumb_func_start sub_80AA80C
+sub_80AA80C: @ 80AA80C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080AA834 @ =gTasks
+ adds r0, r1
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AA82C
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080AA82C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA834: .4byte gTasks
+ thumb_func_end sub_80AA80C
+
+ thumb_func_start sub_80AA838
+sub_80AA838: @ 80AA838
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ ldr r0, _080AA84C @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080AA854
+ ldr r0, _080AA850 @ =gBattleAnimAttacker
+ b _080AA856
+ .align 2, 0
+_080AA84C: .4byte gBattleAnimArgs
+_080AA850: .4byte gBattleAnimAttacker
+_080AA854:
+ ldr r0, _080AA8EC @ =gBattleAnimTarget
+_080AA856:
+ ldrb r6, [r0]
+ adds r0, r6, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080AA870
+ ldr r1, _080AA8F0 @ =gBattleAnimArgs
+ movs r2, 0x2
+ ldrsh r0, [r1, r2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+_080AA870:
+ adds r0, r6, 0
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ ldr r7, _080AA8F0 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r3, [r7, 0x2]
+ adds r0, r3
+ movs r4, 0
+ strh r0, [r5, 0x20]
+ adds r0, r6, 0
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r7, 0x4]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ strh r4, [r5, 0x2E]
+ ldrh r1, [r5, 0x20]
+ lsls r1, 3
+ strh r1, [r5, 0x30]
+ lsls r0, 3
+ strh r0, [r5, 0x32]
+ movs r2, 0x2
+ ldrsh r0, [r7, r2]
+ lsls r0, 3
+ cmp r0, 0
+ bge _080AA8B0
+ adds r0, 0x7
+_080AA8B0:
+ asrs r0, 3
+ strh r0, [r5, 0x34]
+ movs r3, 0x4
+ ldrsh r0, [r7, r3]
+ lsls r0, 3
+ cmp r0, 0
+ bge _080AA8C0
+ adds r0, 0x7
+_080AA8C0:
+ asrs r0, 3
+ strh r0, [r5, 0x36]
+ ldrh r2, [r5, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ movs r3, 0x6
+ ldrsh r0, [r7, r3]
+ lsls r0, 4
+ adds r1, r0
+ ldr r3, _080AA8F4 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080AA8F8 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0x4]
+ ldr r0, _080AA8FC @ =sub_80AA900
+ str r0, [r5, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA8EC: .4byte gBattleAnimTarget
+_080AA8F0: .4byte gBattleAnimArgs
+_080AA8F4: .4byte 0x000003ff
+_080AA8F8: .4byte 0xfffffc00
+_080AA8FC: .4byte sub_80AA900
+ thumb_func_end sub_80AA838
+
+ thumb_func_start sub_80AA900
+sub_80AA900: @ 80AA900
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x34]
+ ldrh r1, [r2, 0x30]
+ adds r0, r1
+ strh r0, [r2, 0x30]
+ ldrh r1, [r2, 0x36]
+ ldrh r3, [r2, 0x32]
+ adds r1, r3
+ strh r1, [r2, 0x32]
+ lsls r0, 16
+ asrs r0, 19
+ strh r0, [r2, 0x20]
+ lsls r1, 16
+ asrs r1, 19
+ strh r1, [r2, 0x22]
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _080AA934
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080AA934:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AA900
+
+ thumb_func_start sub_80AA938
+sub_80AA938: @ 80AA938
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AA95A
+ ldr r0, _080AA994 @ =gBattleAnimArgs
+ ldrh r1, [r0]
+ movs r0, 0x78
+ subs r0, r1
+ strh r0, [r4, 0x30]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080AA95A:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ bne _080AA978
+ ldrb r0, [r4, 0x5]
+ lsrs r0, 4
+ adds r0, 0x10
+ movs r1, 0
+ bl sub_8075B48
+_080AA978:
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ adds r0, 0x50
+ cmp r1, r0
+ bne _080AA98C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AA98C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA994: .4byte gBattleAnimArgs
+ thumb_func_end sub_80AA938
+
+ thumb_func_start sub_80AA998
+sub_80AA998: @ 80AA998
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080AA9C6
+ movs r5, 0x78
+ strh r5, [r6, 0x20]
+ ldr r4, _080AAA48 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r0, [r4, r2]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ subs r0, 0xF
+ strh r0, [r6, 0x22]
+ ldrb r1, [r4, 0x2]
+ adds r0, r6, 0
+ bl StartSpriteAnim
+ strh r5, [r6, 0x38]
+ ldrh r0, [r4, 0x4]
+ strh r0, [r6, 0x34]
+_080AA9C6:
+ ldrh r0, [r6, 0x2E]
+ adds r0, 0x1
+ movs r5, 0
+ strh r0, [r6, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r6, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ strh r0, [r6, 0x30]
+ movs r2, 0x2E
+ ldrsh r0, [r6, r2]
+ lsls r4, r0, 1
+ adds r4, r0
+ ldrh r0, [r6, 0x34]
+ adds r4, r0
+ movs r2, 0xFF
+ ldrh r0, [r6, 0x3A]
+ adds r0, 0xA
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r6, 0x3A]
+ ands r4, r2
+ adds r0, r4, 0
+ movs r1, 0x64
+ bl Cos
+ strh r0, [r6, 0x24]
+ adds r0, r4, 0
+ movs r1, 0xA
+ bl Sin
+ adds r4, r0, 0
+ movs r1, 0x3A
+ ldrsh r0, [r6, r1]
+ movs r1, 0x4
+ bl Cos
+ ldrh r2, [r6, 0x30]
+ adds r4, r2
+ adds r0, r4
+ strh r0, [r6, 0x26]
+ movs r0, 0x2E
+ ldrsh r1, [r6, r0]
+ movs r2, 0x38
+ ldrsh r0, [r6, r2]
+ cmp r1, r0
+ ble _080AAA42
+ ldr r0, _080AAA4C @ =sub_80AAA50
+ str r0, [r6, 0x1C]
+ strh r5, [r6, 0x2E]
+ adds r0, r6, 0
+ bl oamt_add_pos2_onto_pos1
+ movs r0, 0x5
+ strh r0, [r6, 0x32]
+ strh r5, [r6, 0x36]
+ strh r5, [r6, 0x34]
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+_080AAA42:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AAA48: .4byte gBattleAnimArgs
+_080AAA4C: .4byte sub_80AAA50
+ thumb_func_end sub_80AA998
+
+ thumb_func_start sub_80AAA50
+sub_80AAA50: @ 80AAA50
+ push {lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0x2E]
+ adds r0, 0x1
+ strh r0, [r1, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ ble _080AAA6A
+ movs r0, 0
+ strh r0, [r1, 0x2E]
+ ldr r0, _080AAA70 @ =sub_80AAA74
+ str r0, [r1, 0x1C]
+_080AAA6A:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AAA70: .4byte sub_80AAA74
+ thumb_func_end sub_80AAA50
+
+ thumb_func_start sub_80AAA74
+sub_80AAA74: @ 80AAA74
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x32]
+ ldrh r2, [r4, 0x34]
+ adds r0, r1, r2
+ strh r0, [r4, 0x34]
+ strh r0, [r4, 0x26]
+ adds r1, 0x1
+ strh r1, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x30
+ ble _080AAA9E
+ lsls r0, r1, 16
+ cmp r0, 0
+ ble _080AAA9E
+ ldrh r0, [r4, 0x36]
+ subs r1, r0, 0x5
+ strh r1, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x36]
+_080AAA9E:
+ movs r1, 0x36
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x3
+ ble _080AAAD0
+ movs r2, 0x32
+ ldrsh r1, [r4, r2]
+ lsrs r0, r1, 31
+ adds r0, r1, r0
+ asrs r0, 1
+ lsls r0, 1
+ subs r1, r0
+ adds r3, r4, 0
+ adds r3, 0x3E
+ movs r0, 0x1
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r3]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AAAD0:
+ movs r1, 0x36
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bne _080AAADE
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AAADE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AAA74
+
+ thumb_func_start sub_80AAAE4
+sub_80AAAE4: @ 80AAAE4
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080AAB28 @ =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080AAB30
+ ldr r4, _080AAB2C @ =gBattleAnimAttacker
+ ldrb r1, [r4]
+ movs r0, 0x2
+ eors r0, r1
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AAB30
+ ldrb r0, [r4]
+ adds r2, r5, 0
+ adds r2, 0x20
+ adds r3, r5, 0
+ adds r3, 0x22
+ movs r1, 0
+ bl sub_8076D9C
+ ldrh r0, [r5, 0x22]
+ adds r0, 0x28
+ strh r0, [r5, 0x22]
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ b _080AAB50
+ .align 2, 0
+_080AAB28: .4byte gBattleTypeFlags
+_080AAB2C: .4byte gBattleAnimAttacker
+_080AAB30:
+ ldr r4, _080AAB70 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x28
+ strh r0, [r5, 0x22]
+_080AAB50:
+ movs r0, 0xD
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x22]
+ subs r0, 0x48
+ strh r0, [r5, 0x36]
+ ldr r0, _080AAB74 @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080AAB78 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AAB70: .4byte gBattleAnimAttacker
+_080AAB74: .4byte sub_8075590
+_080AAB78: .4byte DestroyAnimSprite
+ thumb_func_end sub_80AAAE4
+
+ thumb_func_start sub_80AAB7C
+sub_80AAB7C: @ 80AAB7C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _080AAB98 @ =gBattleAnimArgs
+ ldr r1, _080AAB9C @ =gAnimDisableStructPtr
+ ldr r1, [r1]
+ ldrb r2, [r1, 0x10]
+ movs r1, 0x1
+ ands r1, r2
+ strh r1, [r3, 0xE]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AAB98: .4byte gBattleAnimArgs
+_080AAB9C: .4byte gAnimDisableStructPtr
+ thumb_func_end sub_80AAB7C
+
+ thumb_func_start update_fury_cutter_counter_copy
+update_fury_cutter_counter_copy: @ 80AABA0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080AABB8 @ =gBattleAnimArgs
+ ldr r1, _080AABBC @ =gAnimDisableStructPtr
+ ldr r1, [r1]
+ ldrb r1, [r1, 0x10]
+ strh r1, [r2, 0xE]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AABB8: .4byte gBattleAnimArgs
+_080AABBC: .4byte gAnimDisableStructPtr
+ thumb_func_end update_fury_cutter_counter_copy
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s
new file mode 100644
index 000000000..74f6ef9fc
--- /dev/null
+++ b/asm/battle_anim_effects_3.s
@@ -0,0 +1,12857 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80DE2C0
+sub_80DE2C0: @ 80DE2C0
+ push {lr}
+ adds r2, r0, 0
+ ldr r1, _080DE2E4 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r3, [r2, 0x20]
+ adds r0, r3
+ strh r0, [r2, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r3, [r2, 0x22]
+ adds r0, r3
+ strh r0, [r2, 0x22]
+ movs r3, 0x6
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _080DE2E8
+ ldrh r0, [r1, 0x4]
+ b _080DE2EC
+ .align 2, 0
+_080DE2E4: .4byte gBattleAnimArgs
+_080DE2E8:
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+_080DE2EC:
+ strh r0, [r2, 0x2E]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r2, 0x30]
+ ldr r0, _080DE2FC @ =sub_80DE300
+ str r0, [r2, 0x1C]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE2FC: .4byte sub_80DE300
+ thumb_func_end sub_80DE2C0
+
+ thumb_func_start sub_80DE300
+sub_80DE300: @ 80DE300
+ push {lr}
+ adds r3, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ ble _080DE340
+ ldrh r1, [r3, 0x32]
+ lsls r0, r1, 16
+ asrs r0, 24
+ strh r0, [r3, 0x24]
+ ldrh r0, [r3, 0x2E]
+ adds r1, r0
+ strh r1, [r3, 0x32]
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldrh r0, [r3, 0x30]
+ subs r0, 0x1
+ strh r0, [r3, 0x30]
+ b _080DE346
+_080DE340:
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080DE346:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DE300
+
+ thumb_func_start sub_80DE34C
+sub_80DE34C: @ 80DE34C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r6, _080DE398 @ =gBattleAnimTarget
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 8
+ movs r0, 0x80
+ lsls r0, 12
+ adds r4, r0
+ asrs r4, 16
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8074480
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 8
+ movs r0, 0x80
+ lsls r0, 12
+ adds r1, r0
+ asrs r1, 16
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_804A76C
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE398: .4byte gBattleAnimTarget
+ thumb_func_end sub_80DE34C
+
+ thumb_func_start sub_80DE39C
+sub_80DE39C: @ 80DE39C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x5A
+ strh r0, [r4, 0x2E]
+ ldr r0, _080DE3D8 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ movs r0, 0x7
+ strh r0, [r4, 0x30]
+ ldr r1, _080DE3DC @ =sub_80DE3E0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldrh r0, [r4, 0x30]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE3D8: .4byte sub_8074C44
+_080DE3DC: .4byte sub_80DE3E0
+ thumb_func_end sub_80DE39C
+
+ thumb_func_start sub_80DE3E0
+sub_80DE3E0: @ 80DE3E0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080DE414
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080DE41C @ =sub_80DE420
+ str r0, [r4, 0x1C]
+_080DE414:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE41C: .4byte sub_80DE420
+ thumb_func_end sub_80DE3E0
+
+ thumb_func_start sub_80DE420
+sub_80DE420: @ 80DE420
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DE420
+
+ thumb_func_start sub_80DE440
+sub_80DE440: @ 80DE440
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldr r4, _080DE4CC @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r7, r0, 0
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075114
+ ldrh r0, [r5, 0x20]
+ subs r0, r7
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r1, [r5, 0x22]
+ subs r1, r6
+ lsls r1, 16
+ asrs r1, 16
+ bl sub_8075B30
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 23
+ adds r0, r1
+ lsrs r4, r0, 16
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DE49E
+ movs r1, 0x80
+ lsls r1, 7
+ adds r0, r4, r1
+ lsls r0, 16
+ lsrs r4, r0, 16
+_080DE49E:
+ movs r3, 0x80
+ lsls r3, 1
+ str r4, [sp]
+ adds r0, r5, 0
+ movs r1, 0
+ adds r2, r3, 0
+ bl sub_8075A1C
+ ldr r0, _080DE4D0 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r5, 0x2E]
+ strh r7, [r5, 0x32]
+ strh r6, [r5, 0x36]
+ ldr r0, _080DE4D4 @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080DE4D8 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE4CC: .4byte gBattleAnimTarget
+_080DE4D0: .4byte gBattleAnimArgs
+_080DE4D4: .4byte sub_8075590
+_080DE4D8: .4byte DestroyAnimSprite
+ thumb_func_end sub_80DE440
+
+ thumb_func_start sub_80DE4DC
+sub_80DE4DC: @ 80DE4DC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x4
+ strh r0, [r4, 0x2E]
+ ldr r0, _080DE504 @ =sub_80DE508
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE504: .4byte sub_80DE508
+ thumb_func_end sub_80DE4DC
+
+ thumb_func_start sub_80DE508
+sub_80DE508: @ 80DE508
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080DE52E
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ b _080DE532
+_080DE52E:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+_080DE532:
+ strh r0, [r4, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xF
+ beq _080DE540
+ cmp r0, 0x4
+ bne _080DE548
+_080DE540:
+ ldrh r0, [r4, 0x30]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r4, 0x30]
+_080DE548:
+ ldrh r0, [r4, 0x32]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x46
+ ble _080DE58C
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ subs r2, 0x12
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080DE594 @ =sub_80DE598
+ str r0, [r4, 0x1C]
+_080DE58C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE594: .4byte sub_80DE598
+ thumb_func_end sub_80DE508
+
+ thumb_func_start sub_80DE598
+sub_80DE598: @ 80DE598
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x32]
+ adds r1, r0, 0x1
+ strh r1, [r3, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ ble _080DE5D4
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ subs r2, 0x12
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r3, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080DE5D4
+ ldr r0, _080DE5D8 @ =sub_80DE5DC
+ str r0, [r3, 0x1C]
+_080DE5D4:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE5D8: .4byte sub_80DE5DC
+ thumb_func_end sub_80DE598
+
+ thumb_func_start sub_80DE5DC
+sub_80DE5DC: @ 80DE5DC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x6
+ bhi _080DE634
+ lsls r0, 2
+ ldr r1, _080DE5F4 @ =_080DE5F8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080DE5F4: .4byte _080DE5F8
+ .align 2, 0
+_080DE5F8:
+ .4byte _080DE614
+ .4byte _080DE614
+ .4byte _080DE61E
+ .4byte _080DE61E
+ .4byte _080DE62C
+ .4byte _080DE62C
+ .4byte _080DE634
+_080DE614:
+ movs r1, 0
+ movs r0, 0x1
+ strh r0, [r4, 0x24]
+ strh r1, [r4, 0x26]
+ b _080DE63C
+_080DE61E:
+ ldr r0, _080DE628 @ =0x0000ffff
+ strh r0, [r4, 0x24]
+ movs r0, 0
+ b _080DE63A
+ .align 2, 0
+_080DE628: .4byte 0x0000ffff
+_080DE62C:
+ movs r0, 0
+ strh r0, [r4, 0x24]
+ movs r0, 0x1
+ b _080DE63A
+_080DE634:
+ movs r0, 0
+ strh r0, [r4, 0x24]
+ ldr r0, _080DE680 @ =0x0000ffff
+_080DE63A:
+ strh r0, [r4, 0x26]
+_080DE63C:
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ movs r2, 0
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7
+ ble _080DE64E
+ strh r2, [r4, 0x34]
+_080DE64E:
+ ldrh r0, [r4, 0x36]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ ble _080DE678
+ movs r0, 0x10
+ strh r0, [r4, 0x2E]
+ strh r2, [r4, 0x30]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r0, _080DE684 @ =sub_80DE688
+ str r0, [r4, 0x1C]
+_080DE678:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE680: .4byte 0x0000ffff
+_080DE684: .4byte sub_80DE688
+ thumb_func_end sub_80DE5DC
+
+ thumb_func_start sub_80DE688
+sub_80DE688: @ 80DE688
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldrh r0, [r4, 0x30]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080DE6B8
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ movs r1, 0
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+_080DE6B8:
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DE6CC
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080DE6CC:
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bge _080DE6EA
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080DE6EA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DE688
+
+ thumb_func_start sub_80DE6F0
+sub_80DE6F0: @ 80DE6F0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080DE70C @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r0, _080DE710 @ =sub_80DE718
+ str r0, [r1]
+ ldr r1, _080DE714 @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_080DE70C: .4byte gTasks
+_080DE710: .4byte sub_80DE718
+_080DE714: .4byte gUnknown_2037EE2
+ thumb_func_end sub_80DE6F0
+
+ thumb_func_start sub_80DE718
+sub_80DE718: @ 80DE718
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_8075454
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r7, _080DE7A4 @ =gTasks
+ lsls r5, r4, 2
+ adds r1, r5, r4
+ lsls r1, 3
+ adds r1, r7
+ ldrh r0, [r1, 0x12]
+ adds r0, 0x1
+ strh r0, [r1, 0x12]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080DE788
+ ldr r0, _080DE7A8 @ =gPlttBufferFaded
+ lsls r2, r6, 4
+ adds r1, r2, 0
+ adds r1, 0xB
+ lsls r1, 1
+ adds r1, r0
+ ldrh r3, [r1]
+ mov r8, r3
+ movs r3, 0xA
+ mov r9, r7
+ adds r7, r5, 0
+ mov r12, r0
+ adds r5, r2, 0
+ lsls r0, r6, 5
+ add r0, r12
+ adds r2, r0, 0
+ adds r2, 0x14
+_080DE766:
+ ldrh r0, [r2]
+ strh r0, [r1]
+ subs r2, 0x2
+ subs r1, 0x2
+ subs r3, 0x1
+ cmp r3, 0
+ bgt _080DE766
+ adds r0, r5, 0x1
+ lsls r0, 1
+ add r0, r12
+ movs r1, 0
+ mov r2, r8
+ strh r2, [r0]
+ adds r0, r7, r4
+ lsls r0, 3
+ add r0, r9
+ strh r1, [r0, 0x12]
+_080DE788:
+ ldr r0, _080DE7AC @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _080DE7B0 @ =0x0000ffff
+ cmp r1, r0
+ bne _080DE798
+ adds r0, r4, 0
+ bl DestroyTask
+_080DE798:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE7A4: .4byte gTasks
+_080DE7A8: .4byte gPlttBufferFaded
+_080DE7AC: .4byte gBattleAnimArgs
+_080DE7B0: .4byte 0x0000ffff
+ thumb_func_end sub_80DE718
+
+ thumb_func_start sub_80DE7B4
+sub_80DE7B4: @ 80DE7B4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080DE7D0 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r0, _080DE7D4 @ =sub_80DE7DC
+ str r0, [r1]
+ ldr r1, _080DE7D8 @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_080DE7D0: .4byte gTasks
+_080DE7D4: .4byte sub_80DE7DC
+_080DE7D8: .4byte gUnknown_2037EE2
+ thumb_func_end sub_80DE7B4
+
+ thumb_func_start sub_80DE7DC
+sub_80DE7DC: @ 80DE7DC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ bl sub_8075454
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r5, _080DE89C @ =gTasks
+ mov r0, r8
+ lsls r3, r0, 2
+ adds r1, r3, r0
+ lsls r1, 3
+ adds r1, r5
+ ldrh r0, [r1, 0x12]
+ adds r0, 0x1
+ strh r0, [r1, 0x12]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080DE87E
+ ldr r0, _080DE8A0 @ =gPlttBufferFaded
+ lsls r2, r7, 4
+ adds r1, r2, 0
+ adds r1, 0xB
+ lsls r1, 1
+ adds r1, r0
+ ldrh r6, [r1]
+ movs r4, 0xA
+ mov r10, r3
+ mov r9, r0
+ adds r5, r2, 0
+ ldr r2, _080DE8A4 @ =gPlttBufferUnfaded
+ mov r12, r2
+ lsls r0, r7, 5
+ add r0, r9
+ adds r3, r0, 0
+ adds r3, 0x14
+_080DE830:
+ ldrh r0, [r3]
+ strh r0, [r1]
+ subs r3, 0x2
+ subs r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bgt _080DE830
+ adds r0, r5, 0x1
+ lsls r0, 1
+ add r0, r9
+ strh r6, [r0]
+ adds r1, r5, 0
+ adds r1, 0xB
+ lsls r1, 1
+ add r1, r12
+ ldrh r6, [r1]
+ movs r4, 0xA
+ lsls r0, r7, 5
+ add r0, r12
+ adds r2, r0, 0
+ adds r2, 0x14
+_080DE85A:
+ ldrh r0, [r2]
+ strh r0, [r1]
+ subs r2, 0x2
+ subs r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bgt _080DE85A
+ adds r0, r5, 0x1
+ lsls r0, 1
+ add r0, r12
+ movs r1, 0
+ strh r6, [r0]
+ mov r0, r10
+ add r0, r8
+ lsls r0, 3
+ ldr r2, _080DE89C @ =gTasks
+ adds r0, r2
+ strh r1, [r0, 0x12]
+_080DE87E:
+ ldr r0, _080DE8A8 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _080DE8AC @ =0x0000ffff
+ cmp r1, r0
+ bne _080DE88E
+ mov r0, r8
+ bl DestroyTask
+_080DE88E:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE89C: .4byte gTasks
+_080DE8A0: .4byte gPlttBufferFaded
+_080DE8A4: .4byte gPlttBufferUnfaded
+_080DE8A8: .4byte gBattleAnimArgs
+_080DE8AC: .4byte 0x0000ffff
+ thumb_func_end sub_80DE7DC
+
+ thumb_func_start sub_80DE8B0
+sub_80DE8B0: @ 80DE8B0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080DE914 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ mov r5, sp
+ adds r5, 0x2
+ movs r1, 0
+ mov r2, sp
+ adds r3, r5, 0
+ bl sub_8076D9C
+ ldr r0, _080DE918 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DE8E4
+ ldr r1, _080DE91C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080DE8E4:
+ ldr r1, _080DE91C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x2E]
+ mov r2, sp
+ ldrh r0, [r1, 0x4]
+ ldrh r2, [r2]
+ adds r0, r2
+ strh r0, [r4, 0x32]
+ ldrh r0, [r1, 0x6]
+ ldrh r5, [r5]
+ adds r0, r5
+ strh r0, [r4, 0x36]
+ ldr r0, _080DE920 @ =0x0000ffce
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_8075068
+ ldr r0, _080DE924 @ =sub_80DE928
+ str r0, [r4, 0x1C]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE914: .4byte gBattleAnimTarget
+_080DE918: .4byte gBattleAnimAttacker
+_080DE91C: .4byte gBattleAnimArgs
+_080DE920: .4byte 0x0000ffce
+_080DE924: .4byte sub_80DE928
+ thumb_func_end sub_80DE8B0
+
+ thumb_func_start sub_80DE928
+sub_80DE928: @ 80DE928
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DE94A
+ movs r1, 0
+ movs r0, 0x1E
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ ldr r0, _080DE950 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ ldr r1, _080DE954 @ =sub_80DE958
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+_080DE94A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE950: .4byte sub_8074C44
+_080DE954: .4byte sub_80DE958
+ thumb_func_end sub_80DE928
+
+ thumb_func_start sub_80DE958
+sub_80DE958: @ 80DE958
+ push {lr}
+ adds r3, r0, 0
+ ldrh r1, [r3, 0x30]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080DE984
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+_080DE984:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ bne _080DE998
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080DE998:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DE958
+
+ thumb_func_start sub_80DE99C
+sub_80DE99C: @ 80DE99C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldr r5, _080DE9CC @ =gBattleAnimArgs
+ movs r0, 0
+ ldrsh r1, [r5, r0]
+ adds r0, r4, 0
+ bl sub_8074FF8
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r0, _080DE9D0 @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+ ldr r1, _080DE9D4 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE9CC: .4byte gBattleAnimArgs
+_080DE9D0: .4byte sub_8074F6C
+_080DE9D4: .4byte DestroyAnimSprite
+ thumb_func_end sub_80DE99C
+
+ thumb_func_start sub_80DE9D8
+sub_80DE9D8: @ 80DE9D8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DEA38
+ adds r0, r4, 0
+ bl sub_8074FCC
+ ldr r5, _080DEA14 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ adds r0, r4, 0
+ bl sub_8074FF8
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DEA2C
+ ldr r0, _080DEA18 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DEA1C
+ ldrh r0, [r5, 0x4]
+ b _080DEA32
+ .align 2, 0
+_080DEA14: .4byte gBattleAnimArgs
+_080DEA18: .4byte gBattleAnimAttacker
+_080DEA1C:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ negs r0, r0
+ strh r0, [r4, 0x30]
+ movs r2, 0x6
+ ldrsh r0, [r5, r2]
+ negs r0, r0
+ b _080DEA36
+_080DEA2C:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ negs r0, r0
+_080DEA32:
+ strh r0, [r4, 0x30]
+ ldrh r0, [r5, 0x6]
+_080DEA36:
+ strh r0, [r4, 0x32]
+_080DEA38:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ movs r3, 0xFF
+ ldrh r1, [r4, 0x30]
+ ldrh r2, [r4, 0x34]
+ adds r1, r2
+ strh r1, [r4, 0x34]
+ ldrh r1, [r4, 0x32]
+ ldrh r2, [r4, 0x36]
+ adds r1, r2
+ strh r1, [r4, 0x36]
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ lsrs r2, r1, 31
+ adds r1, r2
+ asrs r1, 1
+ strh r1, [r4, 0x24]
+ ands r0, r3
+ movs r1, 0x5
+ bl Sin
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ lsrs r2, r1, 31
+ adds r1, r2
+ asrs r1, 1
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xF0
+ bls _080DEA90
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080DEA90:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DE9D8
+
+ thumb_func_start sub_80DEA98
+sub_80DEA98: @ 80DEA98
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080DEAAE
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080DEAAE:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DEA98
+
+ thumb_func_start sub_80DEAB4
+sub_80DEAB4: @ 80DEAB4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080DEAD0 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080DEAD8
+ ldr r1, _080DEAD4 @ =gBattleAnimArgs
+ movs r0, 0
+ b _080DEADC
+ .align 2, 0
+_080DEAD0: .4byte gBattleAnimTarget
+_080DEAD4: .4byte gBattleAnimArgs
+_080DEAD8:
+ ldr r1, _080DEAEC @ =gBattleAnimArgs
+ movs r0, 0x1
+_080DEADC:
+ strh r0, [r1, 0xE]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEAEC: .4byte gBattleAnimArgs
+ thumb_func_end sub_80DEAB4
+
+ thumb_func_start sub_80DEAF0
+sub_80DEAF0: @ 80DEAF0
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080DEB04 @ =gUnknown_2037EE8
+ ldr r0, [r0]
+ cmp r0, 0
+ ble _080DEB0C
+ ldr r1, _080DEB08 @ =gBattleAnimArgs
+ movs r0, 0
+ b _080DEB10
+ .align 2, 0
+_080DEB04: .4byte gUnknown_2037EE8
+_080DEB08: .4byte gBattleAnimArgs
+_080DEB0C:
+ ldr r1, _080DEB1C @ =gBattleAnimArgs
+ movs r0, 0x1
+_080DEB10:
+ strh r0, [r1, 0xE]
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEB1C: .4byte gBattleAnimArgs
+ thumb_func_end sub_80DEAF0
+
+ thumb_func_start sub_80DEB20
+sub_80DEB20: @ 80DEB20
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r1, _080DEB7C @ =0x00001f3f
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 8
+ movs r0, 0
+ bl SetGpuRegBits
+ ldr r0, _080DEB80 @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r4, _080DEB84 @ =gUnknown_2022986
+ strh r1, [r4]
+ movs r0, 0x40
+ movs r1, 0
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x44
+ bl SetGpuReg
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075114
+ ldrb r1, [r5, 0x1]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080DEB88 @ =sub_80DEB8C
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEB7C: .4byte 0x00001f3f
+_080DEB80: .4byte gUnknown_2022984
+_080DEB84: .4byte gUnknown_2022986
+_080DEB88: .4byte sub_80DEB8C
+ thumb_func_end sub_80DEB20
+
+ thumb_func_start sub_80DEB8C
+sub_80DEB8C: @ 80DEB8C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ bhi _080DEC4C
+ lsls r0, 2
+ ldr r1, _080DEBA4 @ =_080DEBA8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080DEBA4: .4byte _080DEBA8
+ .align 2, 0
+_080DEBA8:
+ .4byte _080DEBC0
+ .4byte _080DEBDE
+ .4byte _080DEBFE
+ .4byte _080DEBDE
+ .4byte _080DEC1E
+ .4byte _080DEC2E
+_080DEBC0:
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080DEC4C
+ b _080DEC26
+_080DEBDE:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x75
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x15
+ bne _080DEC4C
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ b _080DEC26
+_080DEBFE:
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x75
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x29
+ bne _080DEC4C
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ b _080DEC26
+_080DEC1E:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+_080DEC26:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080DEC4C
+_080DEC2E:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080DEC4C
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080DEC54 @ =sub_80DEC58
+ str r0, [r4, 0x1C]
+_080DEC4C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEC54: .4byte sub_80DEC58
+ thumb_func_end sub_80DEB8C
+
+ thumb_func_start sub_80DEC58
+sub_80DEC58: @ 80DEC58
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _080DEC8C @ =0x00003f3f
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r0, 0
+ bl GetGpuReg
+ adds r1, r0, 0
+ movs r2, 0x80
+ lsls r2, 8
+ adds r0, r2, 0
+ eors r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEC8C: .4byte 0x00003f3f
+ thumb_func_end sub_80DEC58
+
+ thumb_func_start sub_80DEC90
+sub_80DEC90: @ 80DEC90
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080DED04 @ =gBattleAnimArgs
+ movs r1, 0x6
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080DECBC
+ ldr r4, _080DED08 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+_080DECBC:
+ ldrh r0, [r6]
+ ldrh r2, [r5, 0x20]
+ adds r0, r2
+ movs r3, 0
+ strh r0, [r5, 0x20]
+ ldrh r0, [r6, 0x2]
+ ldrh r4, [r5, 0x22]
+ adds r0, r4
+ strh r0, [r5, 0x22]
+ ldrh r2, [r5, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x10
+ ldr r4, _080DED0C @ =0x000003ff
+ adds r0, r4, 0
+ ands r1, r0
+ ldr r0, _080DED10 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0x4]
+ movs r1, 0x4
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080DED18
+ ldrb r1, [r5, 0x3]
+ movs r0, 0x3F
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x10
+ orrs r0, r1
+ strb r0, [r5, 0x3]
+ ldr r0, _080DED14 @ =0x0000fff4
+ strh r0, [r5, 0x24]
+ movs r0, 0x2
+ b _080DED1E
+ .align 2, 0
+_080DED04: .4byte gBattleAnimArgs
+_080DED08: .4byte gBattleAnimAttacker
+_080DED0C: .4byte 0x000003ff
+_080DED10: .4byte 0xfffffc00
+_080DED14: .4byte 0x0000fff4
+_080DED18:
+ movs r0, 0xC
+ strh r0, [r5, 0x24]
+ ldr r0, _080DED3C @ =0x0000fffe
+_080DED1E:
+ strh r0, [r5, 0x30]
+ ldr r1, _080DED40 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x8]
+ strh r0, [r5, 0x2E]
+ movs r2, 0x34
+ ldrsh r0, [r5, r2]
+ cmp r0, 0xFF
+ beq _080DED32
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x34]
+_080DED32:
+ ldr r0, _080DED44 @ =sub_80DED48
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DED3C: .4byte 0x0000fffe
+_080DED40: .4byte gBattleAnimArgs
+_080DED44: .4byte sub_80DED48
+ thumb_func_end sub_80DEC90
+
+ thumb_func_start sub_80DED48
+sub_80DED48: @ 80DED48
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r2, [r4, 0x32]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DED86
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080DEDA6
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x32]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DEDA6
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xD7
+ bl PlaySE1WithPanning
+ b _080DEDA6
+_080DED86:
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x30]
+ subs r0, r1
+ strh r0, [r4, 0x24]
+ movs r1, 0x24
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bge _080DED98
+ negs r0, r0
+_080DED98:
+ cmp r0, 0xC
+ bne _080DEDA6
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ subs r0, r2, 0x1
+ strh r0, [r4, 0x32]
+_080DEDA6:
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DEDB4
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080DEDB4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DED48
+
+ thumb_func_start sub_80DEDBC
+sub_80DEDBC: @ 80DEDBC
+ push {lr}
+ ldrb r2, [r0, 0x1]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ movs r2, 0x8
+ orrs r1, r2
+ strb r1, [r0, 0x1]
+ movs r1, 0xFF
+ strh r1, [r0, 0x34]
+ bl sub_80DEC90
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DEDBC
+
+ thumb_func_start sub_80DEDD8
+sub_80DEDD8: @ 80DEDD8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DEE2C
+ ldr r1, _080DEE14 @ =0x00001f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r1, _080DEE18 @ =gUnknown_2022988
+ ldr r2, _080DEE1C @ =0x000098f0
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _080DEE20 @ =gUnknown_202298A
+ movs r0, 0xA0
+ strh r0, [r1]
+ ldr r0, _080DEE24 @ =gUnknown_2022984
+ ldrh r1, [r0]
+ movs r0, 0x42
+ bl SetGpuReg
+ ldr r0, _080DEE28 @ =gUnknown_2022986
+ ldrh r1, [r0]
+ movs r0, 0x46
+ bl SetGpuReg
+ b _080DEE5C
+ .align 2, 0
+_080DEE14: .4byte 0x00001f3f
+_080DEE18: .4byte gUnknown_2022988
+_080DEE1C: .4byte 0x000098f0
+_080DEE20: .4byte gUnknown_202298A
+_080DEE24: .4byte gUnknown_2022984
+_080DEE28: .4byte gUnknown_2022986
+_080DEE2C:
+ ldr r1, _080DEE68 @ =0x00001f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r1, _080DEE6C @ =gUnknown_2022988
+ movs r0, 0xF0
+ strh r0, [r1]
+ ldr r4, _080DEE70 @ =gUnknown_202298A
+ ldr r1, _080DEE74 @ =0x000078a0
+ adds r0, r1, 0
+ strh r0, [r4]
+ movs r0, 0x42
+ movs r1, 0xF0
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x46
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 7
+ movs r0, 0
+ bl SetGpuRegBits
+_080DEE5C:
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEE68: .4byte 0x00001f3f
+_080DEE6C: .4byte gUnknown_2022988
+_080DEE70: .4byte gUnknown_202298A
+_080DEE74: .4byte 0x000078a0
+ thumb_func_end sub_80DEDD8
+
+ thumb_func_start sub_80DEE78
+sub_80DEE78: @ 80DEE78
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080DEEB0 @ =0x00003f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r0, _080DEEB4 @ =gUnknown_2022988
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080DEEB8 @ =gUnknown_202298A
+ strh r1, [r0]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DEEA4
+ movs r1, 0x80
+ lsls r1, 7
+ movs r0, 0
+ bl ClearGpuRegBits
+_080DEEA4:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEEB0: .4byte 0x00003f3f
+_080DEEB4: .4byte gUnknown_2022988
+_080DEEB8: .4byte gUnknown_202298A
+ thumb_func_end sub_80DEE78
+
+ thumb_func_start sub_80DEEBC
+sub_80DEEBC: @ 80DEEBC
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080DEED0 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080DEED8
+ ldr r4, _080DEED4 @ =gBattleAnimAttacker
+ b _080DEEDA
+ .align 2, 0
+_080DEED0: .4byte gBattleAnimArgs
+_080DEED4: .4byte gBattleAnimAttacker
+_080DEED8:
+ ldr r4, _080DEF2C @ =gBattleAnimTarget
+_080DEEDA:
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x2]
+ adds r0, r6
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r2, _080DEF30 @ =gBattleAnimArgs
+ ldrh r0, [r2, 0x4]
+ strh r0, [r5, 0x26]
+ movs r3, 0
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r4, [r2, 0x6]
+ movs r6, 0x6
+ ldrsh r1, [r2, r6]
+ cmp r0, r1
+ ble _080DEF12
+ movs r3, 0x1
+_080DEF12:
+ strh r3, [r5, 0x2E]
+ movs r0, 0
+ strh r0, [r5, 0x30]
+ ldrh r0, [r2, 0x8]
+ strh r0, [r5, 0x32]
+ ldrh r0, [r2, 0xA]
+ strh r0, [r5, 0x34]
+ strh r4, [r5, 0x36]
+ ldr r0, _080DEF34 @ =sub_80DEF38
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEF2C: .4byte gBattleAnimTarget
+_080DEF30: .4byte gBattleAnimArgs
+_080DEF34: .4byte sub_80DEF38
+ thumb_func_end sub_80DEEBC
+
+ thumb_func_start sub_80DEF38
+sub_80DEF38: @ 80DEF38
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x32]
+ ldrh r1, [r2, 0x30]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r2, 0x30]
+ ldr r1, _080DEF80 @ =gSineTable
+ movs r3, 0x30
+ ldrsh r0, [r2, r3]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 20
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x34]
+ ldrh r3, [r2, 0x26]
+ adds r1, r0, r3
+ strh r1, [r2, 0x26]
+ movs r3, 0x2E
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ beq _080DEF84
+ lsls r0, r1, 16
+ asrs r0, 16
+ movs r3, 0x36
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ bge _080DEF96
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+ b _080DEF96
+ .align 2, 0
+_080DEF80: .4byte gSineTable
+_080DEF84:
+ lsls r0, r1, 16
+ asrs r0, 16
+ movs r3, 0x36
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ ble _080DEF96
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080DEF96:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DEF38
+
+ thumb_func_start sub_80DEF9C
+sub_80DEF9C: @ 80DEF9C
+ push {r4-r7,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080DEFBC @ =gTasks
+ adds r5, r1, r0
+ ldr r0, _080DEFC0 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080DEFC8
+ ldr r4, _080DEFC4 @ =gBattleAnimAttacker
+ b _080DEFCA
+ .align 2, 0
+_080DEFBC: .4byte gTasks
+_080DEFC0: .4byte gBattleAnimArgs
+_080DEFC4: .4byte gBattleAnimAttacker
+_080DEFC8:
+ ldr r4, _080DF010 @ =gBattleAnimTarget
+_080DEFCA:
+ ldrb r0, [r4]
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r0, [r4]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r7, r0, 24
+ adds r0, r6, 0
+ adds r1, r0, 0
+ adds r1, 0x24
+ movs r2, 0
+ strh r1, [r5, 0x8]
+ strh r1, [r5, 0xA]
+ subs r0, 0x21
+ strh r0, [r5, 0xC]
+ cmp r0, 0
+ bge _080DEFF4
+ strh r2, [r5, 0xC]
+_080DEFF4:
+ ldrh r0, [r5, 0x8]
+ strh r0, [r5, 0xE]
+ movs r0, 0x8
+ strh r0, [r5, 0x10]
+ ldr r1, _080DF014 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0x12]
+ strh r2, [r5, 0x14]
+ strh r2, [r5, 0x16]
+ cmp r7, 0x1
+ bne _080DF01C
+ ldr r0, _080DF018 @ =gBattle_BG1_X
+ b _080DF01E
+ .align 2, 0
+_080DF010: .4byte gBattleAnimTarget
+_080DF014: .4byte gBattleAnimArgs
+_080DF018: .4byte gBattle_BG1_X
+_080DF01C:
+ ldr r0, _080DF03C @ =gBattle_BG2_X
+_080DF01E:
+ ldrh r2, [r0]
+ strh r2, [r5, 0x18]
+ adds r3, r2, 0
+ adds r3, 0xF0
+ strh r3, [r5, 0x1A]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x1C]
+ movs r4, 0x4
+ ldrsh r0, [r1, r4]
+ cmp r0, 0
+ bne _080DF040
+ strh r3, [r5, 0x1E]
+ ldrh r3, [r5, 0x18]
+ b _080DF044
+ .align 2, 0
+_080DF03C: .4byte gBattle_BG2_X
+_080DF040:
+ strh r2, [r5, 0x1E]
+ ldrh r3, [r5, 0x1A]
+_080DF044:
+ movs r0, 0
+ strh r0, [r5, 0x26]
+ ldrh r1, [r5, 0xC]
+ lsls r2, r1, 16
+ asrs r1, r2, 16
+ movs r6, 0xE
+ ldrsh r0, [r5, r6]
+ cmp r1, r0
+ bgt _080DF07A
+ ldr r4, _080DF084 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r0, r4
+ mov r12, r0
+_080DF060:
+ asrs r2, 16
+ lsls r1, r2, 1
+ adds r0, r1, r4
+ strh r3, [r0]
+ add r1, r12
+ strh r3, [r1]
+ adds r2, 0x1
+ lsls r2, 16
+ asrs r1, r2, 16
+ movs r6, 0xE
+ ldrsh r0, [r5, r6]
+ cmp r1, r0
+ ble _080DF060
+_080DF07A:
+ cmp r7, 0x1
+ bne _080DF08C
+ ldr r0, _080DF088 @ =0x04000014
+ b _080DF08E
+ .align 2, 0
+_080DF084: .4byte gScanlineEffectRegBuffers
+_080DF088: .4byte 0x04000014
+_080DF08C:
+ ldr r0, _080DF0B8 @ =0x04000018
+_080DF08E:
+ str r0, [sp]
+ ldr r0, _080DF0BC @ =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, _080DF0C0 @ =sub_80DF0C4
+ str r0, [r5]
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF0B8: .4byte 0x04000018
+_080DF0BC: .4byte 0xa2600001
+_080DF0C0: .4byte sub_80DF0C4
+ thumb_func_end sub_80DEF9C
+
+ thumb_func_start sub_80DF0C4
+sub_80DF0C4: @ 80DF0C4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _080DF114 @ =gTasks
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x8]
+ ldrh r1, [r4, 0x12]
+ subs r0, r1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r2, [r4, 0xC]
+ movs r3, 0xC
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ bge _080DF0EC
+ strh r2, [r4, 0x8]
+_080DF0EC:
+ ldrh r1, [r4, 0x10]
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080DF118
+ ldrh r0, [r4, 0xA]
+ ldrh r1, [r4, 0x12]
+ subs r0, r1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r2, [r4, 0xC]
+ movs r3, 0xC
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ bge _080DF11C
+ strh r2, [r4, 0xA]
+ movs r0, 0x1
+ strh r0, [r4, 0x26]
+ b _080DF11C
+ .align 2, 0
+_080DF114: .4byte gTasks
+_080DF118:
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x10]
+_080DF11C:
+ ldrh r0, [r4, 0x14]
+ adds r0, 0x1
+ strh r0, [r4, 0x14]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080DF148
+ movs r0, 0
+ strh r0, [r4, 0x14]
+ movs r1, 0
+ movs r2, 0x16
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080DF13A
+ movs r1, 0x1
+_080DF13A:
+ strh r1, [r4, 0x16]
+ cmp r1, 0
+ beq _080DF144
+ ldrh r0, [r4, 0x18]
+ b _080DF146
+_080DF144:
+ ldrh r0, [r4, 0x1A]
+_080DF146:
+ strh r0, [r4, 0x20]
+_080DF148:
+ ldrh r1, [r4, 0x8]
+ lsls r3, r1, 16
+ asrs r1, r3, 16
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bge _080DF17C
+ ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r5, r0
+_080DF15E:
+ asrs r3, 16
+ lsls r1, r3, 1
+ adds r2, r1, r5
+ ldrh r0, [r4, 0x20]
+ strh r0, [r2]
+ adds r1, r6
+ ldrh r0, [r4, 0x20]
+ strh r0, [r1]
+ adds r3, 0x1
+ lsls r3, 16
+ asrs r1, r3, 16
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ blt _080DF15E
+_080DF17C:
+ ldrh r1, [r4, 0xA]
+ lsls r3, r1, 16
+ asrs r1, r3, 16
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bgt _080DF1B0
+ ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r5, r0
+_080DF192:
+ asrs r3, 16
+ lsls r1, r3, 1
+ adds r2, r1, r5
+ ldrh r0, [r4, 0x1E]
+ strh r0, [r2]
+ adds r1, r6
+ ldrh r0, [r4, 0x1E]
+ strh r0, [r1]
+ adds r3, 0x1
+ lsls r3, 16
+ asrs r1, r3, 16
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ ble _080DF192
+_080DF1B0:
+ movs r3, 0x26
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080DF1CC
+ movs r1, 0x1C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080DF1C6
+ ldr r1, _080DF1D8 @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+_080DF1C6:
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080DF1CC:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF1D4: .4byte gScanlineEffectRegBuffers
+_080DF1D8: .4byte gScanlineEffect
+ thumb_func_end sub_80DF0C4
+
+ thumb_func_start sub_80DF1DC
+sub_80DF1DC: @ 80DF1DC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080DF230 @ =gTasks
+ adds r4, r0
+ movs r5, 0
+ strh r5, [r4, 0x8]
+ strh r5, [r4, 0xA]
+ ldr r6, _080DF234 @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0xC]
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0xE]
+ movs r0, 0x20
+ strh r0, [r4, 0x10]
+ ldr r0, _080DF238 @ =0x0000ffec
+ strh r0, [r4, 0x12]
+ strh r5, [r4, 0x14]
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ ldr r0, _080DF23C @ =sub_80DF240
+ str r0, [r4]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF230: .4byte gTasks
+_080DF234: .4byte gBattleAnimAttacker
+_080DF238: .4byte 0x0000ffec
+_080DF23C: .4byte sub_80DF240
+ thumb_func_end sub_80DF1DC
+
+ thumb_func_start sub_80DF240
+sub_80DF240: @ 80DF240
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080DF26C @ =gTasks
+ adds r6, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x5
+ bls _080DF260
+ b _080DF41A
+_080DF260:
+ lsls r0, 2
+ ldr r1, _080DF270 @ =_080DF274
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080DF26C: .4byte gTasks
+_080DF270: .4byte _080DF274
+ .align 2, 0
+_080DF274:
+ .4byte _080DF28C
+ .4byte _080DF34C
+ .4byte _080DF37A
+ .4byte _080DF38E
+ .4byte _080DF3A4
+ .4byte _080DF40C
+_080DF28C:
+ movs r0, 0xC
+ ldrsh r2, [r6, r0]
+ ldrh r1, [r6, 0xA]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080DF2A2
+ movs r1, 0x10
+ ldrsh r0, [r6, r1]
+ subs r0, r2, r0
+ b _080DF2A8
+_080DF2A2:
+ movs r1, 0x10
+ ldrsh r0, [r6, r1]
+ adds r0, r2, r0
+_080DF2A8:
+ lsls r0, 16
+ lsrs r1, r0, 16
+ ldrh r2, [r6, 0x12]
+ ldrh r0, [r6, 0xE]
+ adds r2, r0
+ ldr r0, _080DF33C @ =gUnknown_83E398C
+ lsls r1, 16
+ asrs r1, 16
+ lsls r2, 16
+ asrs r2, 16
+ ldrb r4, [r6, 0xA]
+ movs r3, 0x6
+ subs r3, r4
+ lsls r3, 24
+ lsrs r3, 24
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xB3
+ bl PlaySE12WithPanning
+ cmp r4, 0x40
+ beq _080DF30C
+ ldr r5, _080DF340 @ =gSprites
+ lsls r1, r4, 4
+ adds r1, r4
+ lsls r1, 2
+ adds r3, r1, r5
+ ldrh r0, [r6, 0xA]
+ movs r2, 0x1
+ ands r2, r0
+ adds r3, 0x3F
+ ldrb r4, [r3]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r4
+ orrs r0, r2
+ strb r0, [r3]
+ adds r5, 0x1C
+ adds r1, r5
+ ldr r0, _080DF344 @ =SpriteCallbackDummy
+ str r0, [r1]
+_080DF30C:
+ ldrh r1, [r6, 0xA]
+ movs r4, 0x1
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080DF324
+ ldrh r0, [r6, 0x10]
+ subs r0, 0x6
+ strh r0, [r6, 0x10]
+ ldrh r0, [r6, 0x12]
+ subs r0, 0x6
+ strh r0, [r6, 0x12]
+_080DF324:
+ ldrh r1, [r6, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080DF348 @ =gUnknown_83FF080
+ adds r0, r6, 0
+ bl sub_80762D0
+ ldrh r0, [r6, 0xA]
+ adds r0, 0x1
+ strh r0, [r6, 0xA]
+ strh r4, [r6, 0x8]
+ b _080DF41A
+ .align 2, 0
+_080DF33C: .4byte gUnknown_83E398C
+_080DF340: .4byte gSprites
+_080DF344: .4byte SpriteCallbackDummy
+_080DF348: .4byte gUnknown_83FF080
+_080DF34C:
+ adds r0, r6, 0
+ bl sub_8076308
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _080DF41A
+ movs r2, 0xA
+ ldrsh r1, [r6, r2]
+ cmp r1, 0x6
+ bne _080DF36C
+ movs r0, 0x8
+ strh r0, [r6, 0x14]
+ movs r0, 0x3
+ strh r0, [r6, 0x8]
+ b _080DF41A
+_080DF36C:
+ cmp r1, 0x2
+ bgt _080DF372
+ movs r0, 0xA
+_080DF372:
+ strh r0, [r6, 0x14]
+ movs r0, 0x2
+ strh r0, [r6, 0x8]
+ b _080DF41A
+_080DF37A:
+ ldrh r0, [r6, 0x14]
+ movs r2, 0x14
+ ldrsh r1, [r6, r2]
+ cmp r1, 0
+ beq _080DF38A
+ subs r0, 0x1
+ strh r0, [r6, 0x14]
+ b _080DF41A
+_080DF38A:
+ strh r1, [r6, 0x8]
+ b _080DF41A
+_080DF38E:
+ ldrh r1, [r6, 0x14]
+ movs r2, 0x14
+ ldrsh r0, [r6, r2]
+ cmp r0, 0
+ beq _080DF39E
+ subs r0, r1, 0x1
+ strh r0, [r6, 0x14]
+ b _080DF41A
+_080DF39E:
+ movs r0, 0x4
+ strh r0, [r6, 0x8]
+ b _080DF41A
+_080DF3A4:
+ movs r5, 0
+ movs r7, 0
+ ldr r3, _080DF400 @ =gSprites
+ movs r0, 0x1C
+ adds r0, r3
+ mov r8, r0
+_080DF3B0:
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r4, r0, 2
+ adds r0, r3, 0
+ adds r0, 0x14
+ adds r0, r4, r0
+ ldr r1, [r0]
+ ldr r0, _080DF404 @ =gUnknown_83E398C
+ cmp r1, r0
+ bne _080DF3EC
+ adds r0, r4, r3
+ strh r2, [r0, 0x2E]
+ movs r1, 0x6
+ strh r1, [r0, 0x30]
+ movs r1, 0x2
+ str r2, [sp]
+ str r3, [sp, 0x4]
+ bl StartSpriteAnim
+ mov r0, r8
+ adds r1, r4, r0
+ ldr r0, _080DF408 @ =sub_80DF428
+ str r0, [r1]
+ adds r0, r7, 0x1
+ lsls r0, 16
+ lsrs r7, r0, 16
+ ldr r2, [sp]
+ ldr r3, [sp, 0x4]
+ cmp r7, 0x6
+ beq _080DF3F6
+_080DF3EC:
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0x3F
+ bls _080DF3B0
+_080DF3F6:
+ strh r7, [r6, 0x14]
+ movs r0, 0x5
+ strh r0, [r6, 0x8]
+ b _080DF41A
+ .align 2, 0
+_080DF400: .4byte gSprites
+_080DF404: .4byte gUnknown_83E398C
+_080DF408: .4byte sub_80DF428
+_080DF40C:
+ movs r1, 0x14
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080DF41A
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080DF41A:
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF240
+
+ thumb_func_start sub_80DF428
+sub_80DF428: @ 80DF428
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080DF45C
+ ldr r3, _080DF464 @ =gTasks
+ movs r0, 0x30
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x2E
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl DestroySprite
+_080DF45C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF464: .4byte gTasks
+ thumb_func_end sub_80DF428
+
+ thumb_func_start sub_80DF468
+sub_80DF468: @ 80DF468
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080DF47C
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075160
+_080DF47C:
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x27
+ bgt _080DF4AE
+ ldrh r0, [r5, 0x2E]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080DF4A0
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ b _080DF4AC
+_080DF4A0:
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+_080DF4AC:
+ strb r0, [r2]
+_080DF4AE:
+ movs r2, 0x2E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0x1E
+ ble _080DF4C4
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_080DF4C4:
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x3D
+ bne _080DF510
+ ldr r1, _080DF518 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldrh r0, [r5, 0x24]
+ ldrh r2, [r5, 0x20]
+ adds r0, r2
+ movs r1, 0
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x26]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ strh r1, [r5, 0x24]
+ strh r1, [r5, 0x26]
+ movs r0, 0x14
+ strh r0, [r5, 0x2E]
+ ldr r4, _080DF51C @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ ldr r0, _080DF520 @ =sub_8075590
+ str r0, [r5, 0x1C]
+_080DF510:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF518: .4byte DestroyAnimSprite
+_080DF51C: .4byte gBattleAnimTarget
+_080DF520: .4byte sub_8075590
+ thumb_func_end sub_80DF468
+
+ thumb_func_start sub_80DF524
+sub_80DF524: @ 80DF524
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080DF544 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080DF548
+ cmp r0, 0x1
+ beq _080DF568
+ b _080DF57A
+ .align 2, 0
+_080DF544: .4byte gTasks
+_080DF548:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080DF564 @ =gUnknown_83FF130
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080DF57A
+ .align 2, 0
+_080DF564: .4byte gUnknown_83FF130
+_080DF568:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DF57A
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080DF57A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF524
+
+ thumb_func_start sub_80DF580
+sub_80DF580: @ 80DF580
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080DF5E0
+ cmp r0, 0x1
+ bgt _080DF5A0
+ cmp r0, 0
+ beq _080DF5AA
+ b _080DF682
+_080DF5A0:
+ cmp r0, 0x2
+ beq _080DF610
+ cmp r0, 0x3
+ beq _080DF664
+ b _080DF682
+_080DF5AA:
+ ldr r4, _080DF5DC @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_80758E0
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r5, 0x30]
+ strh r0, [r5, 0x32]
+ b _080DF658
+ .align 2, 0
+_080DF5DC: .4byte gBattleAnimAttacker
+_080DF5E0:
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x60
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ subs r0, 0x1A
+ strh r0, [r5, 0x32]
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ movs r0, 0x32
+ ldrsh r2, [r5, r0]
+ adds r0, r6, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ bne _080DF610
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+_080DF610:
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x60
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x30
+ strh r0, [r5, 0x32]
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ movs r0, 0x32
+ ldrsh r2, [r5, r0]
+ adds r0, r6, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ bne _080DF682
+ movs r0, 0
+ strh r0, [r5, 0x34]
+ ldr r1, _080DF660 @ =gSprites
+ lsls r0, r6, 4
+ adds r0, r6
+ lsls r0, 2
+ adds r0, r1
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ adds r0, r6, 0
+ bl sub_8075980
+_080DF658:
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _080DF682
+ .align 2, 0
+_080DF660: .4byte gSprites
+_080DF664:
+ ldrh r0, [r5, 0x26]
+ subs r0, 0x6
+ strh r0, [r5, 0x26]
+ movs r1, 0x22
+ ldrsh r0, [r5, r1]
+ movs r2, 0x26
+ ldrsh r1, [r5, r2]
+ adds r0, r1
+ movs r1, 0x20
+ negs r1, r1
+ cmp r0, r1
+ bge _080DF682
+ adds r0, r5, 0
+ bl DestroyAnimSprite
+_080DF682:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF580
+
+ thumb_func_start sub_80DF688
+sub_80DF688: @ 80DF688
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080DF6A0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DF6A8
+ ldr r0, _080DF6A4 @ =0x0000fff0
+ b _080DF6AC
+ .align 2, 0
+_080DF6A0: .4byte gBattleAnimAttacker
+_080DF6A4: .4byte 0x0000fff0
+_080DF6A8:
+ movs r0, 0x80
+ lsls r0, 1
+_080DF6AC:
+ strh r0, [r4, 0x20]
+ movs r0, 0
+ strh r0, [r4, 0x22]
+ ldr r0, _080DF6BC @ =sub_80DF6C0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF6BC: .4byte sub_80DF6C0
+ thumb_func_end sub_80DF688
+
+ thumb_func_start sub_80DF6C0
+sub_80DF6C0: @ 80DF6C0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x48
+ strh r0, [r4, 0x2E]
+ ldr r0, _080DF6E0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DF6E4
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 20
+ b _080DF6EC
+ .align 2, 0
+_080DF6E0: .4byte gBattleAnimAttacker
+_080DF6E4:
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 20
+ negs r0, r0
+_080DF6EC:
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x10
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x26]
+ adds r5, r0, r1
+ strh r5, [r4, 0x26]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x3
+ bl __modsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _080DF738
+ ldr r0, _080DF758 @ =gUnknown_83FF180
+ ldrh r1, [r4, 0x24]
+ ldrh r2, [r4, 0x20]
+ adds r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ ldrh r2, [r4, 0x22]
+ adds r2, r5
+ lsls r2, 16
+ asrs r2, 16
+ adds r3, r4, 0
+ adds r3, 0x43
+ ldrb r3, [r3]
+ adds r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ bl CreateSpriteAndAnimate
+_080DF738:
+ movs r1, 0x20
+ ldrsh r0, [r4, r1]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ adds r0, 0x20
+ movs r1, 0x98
+ lsls r1, 1
+ cmp r0, r1
+ bls _080DF752
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080DF752:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF758: .4byte gUnknown_83FF180
+ thumb_func_end sub_80DF6C0
+
+ thumb_func_start sub_80DF75C
+sub_80DF75C: @ 80DF75C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl Random
+ movs r1, 0x3
+ ands r0, r1
+ cmp r0, 0
+ bne _080DF776
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x4
+ b _080DF77E
+_080DF776:
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x5
+_080DF77E:
+ ldr r3, _080DF7B0 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080DF7B4 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ bl Random
+ movs r1, 0x7
+ ands r0, r1
+ adds r1, r0, 0
+ cmp r1, 0x3
+ ble _080DF7A0
+ negs r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+_080DF7A0:
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r4, 0x26]
+ ldr r0, _080DF7B8 @ =sub_80DF7BC
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF7B0: .4byte 0x000003ff
+_080DF7B4: .4byte 0xfffffc00
+_080DF7B8: .4byte sub_80DF7BC
+ thumb_func_end sub_80DF75C
+
+ thumb_func_start sub_80DF7BC
+sub_80DF7BC: @ 80DF7BC
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1D
+ bgt _080DF7FE
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _080DF832
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ movs r0, 0
+ b _080DF830
+_080DF7FE:
+ movs r1, 0x30
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x2
+ bne _080DF814
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_080DF814:
+ movs r1, 0x30
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x3
+ bne _080DF82C
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080DF844 @ =0x0000ffff
+ strh r0, [r3, 0x30]
+_080DF82C:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+_080DF830:
+ strh r0, [r3, 0x30]
+_080DF832:
+ movs r1, 0x2E
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x3C
+ ble _080DF840
+ adds r0, r3, 0
+ bl DestroySprite
+_080DF840:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF844: .4byte 0x0000ffff
+ thumb_func_end sub_80DF7BC
+
+ thumb_func_start sub_80DF848
+sub_80DF848: @ 80DF848
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080DF880 @ =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 _080DF888
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080DF884 @ =gUnknown_83FF198
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080DF89A
+ .align 2, 0
+_080DF880: .4byte gTasks
+_080DF884: .4byte gUnknown_83FF198
+_080DF888:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DF89A
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080DF89A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF848
+
+ thumb_func_start sub_80DF8A0
+sub_80DF8A0: @ 80DF8A0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080DF8D8 @ =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 _080DF8E0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080DF8DC @ =gUnknown_83FF1C0
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080DF8F2
+ .align 2, 0
+_080DF8D8: .4byte gTasks
+_080DF8DC: .4byte gUnknown_83FF1C0
+_080DF8E0:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DF8F2
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080DF8F2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF8A0
+
+ thumb_func_start sub_80DF8F8
+sub_80DF8F8: @ 80DF8F8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080DF90A
+ cmp r0, 0x1
+ beq _080DF934
+ b _080DF95C
+_080DF90A:
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075160
+ movs r0, 0x90
+ lsls r0, 4
+ strh r0, [r4, 0x30]
+ ldr r0, _080DF930 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080DF95C
+ .align 2, 0
+_080DF930: .4byte gBattleAnimAttacker
+_080DF934:
+ ldrh r2, [r4, 0x30]
+ lsls r1, r2, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x26]
+ subs r0, r1
+ strh r0, [r4, 0x26]
+ subs r2, 0x60
+ strh r2, [r4, 0x30]
+ movs r2, 0x22
+ ldrsh r0, [r4, r2]
+ movs r2, 0x26
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ movs r2, 0x32
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ ble _080DF95C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080DF95C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF8F8
+
+ thumb_func_start sub_80DF964
+sub_80DF964: @ 80DF964
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080DF99C @ =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 _080DF9A4
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080DF9A0 @ =gUnknown_83FF210
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080DF9B6
+ .align 2, 0
+_080DF99C: .4byte gTasks
+_080DF9A0: .4byte gUnknown_83FF210
+_080DF9A4:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DF9B6
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080DF9B6:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF964
+
+ thumb_func_start sub_80DF9BC
+sub_80DF9BC: @ 80DF9BC
+ push {r4-r6,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080DF9E4 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ adds r3, r1, 0
+ cmp r0, 0x4
+ bls _080DF9DA
+ b _080DFBCE
+_080DF9DA:
+ lsls r0, 2
+ ldr r1, _080DF9E8 @ =_080DF9EC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080DF9E4: .4byte gTasks
+_080DF9E8: .4byte _080DF9EC
+ .align 2, 0
+_080DF9EC:
+ .4byte _080DFA00
+ .4byte _080DFA4C
+ .4byte _080DFA86
+ .4byte _080DFB1C
+ .4byte _080DFB58
+_080DFA00:
+ movs r0, 0x4C
+ movs r1, 0
+ bl SetGpuReg
+ ldr r0, _080DFA24 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080DFA28
+ movs r0, 0x1
+ movs r1, 0x2
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ b _080DFA32
+ .align 2, 0
+_080DFA24: .4byte gBattleAnimAttacker
+_080DFA28:
+ movs r0, 0x2
+ movs r1, 0x2
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080DFA32:
+ ldr r0, _080DFA44 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080DFA48 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1C]
+ b _080DFB00
+ .align 2, 0
+_080DFA44: .4byte gTasks
+_080DFA48: .4byte gBattleAnimArgs
+_080DFA4C:
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r5, r0, r3
+ ldrh r0, [r5, 0xC]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bgt _080DFA64
+ b _080DFBCE
+_080DFA64:
+ movs r0, 0
+ strh r0, [r5, 0xC]
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ ldrh r4, [r5, 0xA]
+ lsls r1, r4, 4
+ orrs r1, r4
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x4C
+ bl SetGpuReg
+ cmp r4, 0xF
+ beq _080DFA84
+ b _080DFBCE
+_080DFA84:
+ b _080DFB50
+_080DFA86:
+ ldr r6, _080DFAB4 @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ ldr r1, _080DFAB8 @ =gBattleAnimTarget
+ ldrb r1, [r1]
+ lsls r4, r5, 2
+ adds r2, r4, r5
+ lsls r2, 3
+ adds r2, r3
+ ldrb r2, [r2, 0x1C]
+ bl sub_8034BF4
+ ldrb r1, [r6]
+ mov r0, sp
+ bl sub_8075300
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DFABC
+ movs r1, 0
+ b _080DFAC6
+ .align 2, 0
+_080DFAB4: .4byte gBattleAnimAttacker
+_080DFAB8: .4byte gBattleAnimTarget
+_080DFABC:
+ ldrb r0, [r6]
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r1, r0, 24
+_080DFAC6:
+ ldr r0, _080DFB08 @ =gMonSpritesGfxPtr
+ ldr r2, [r0]
+ lsls r0, r1, 2
+ adds r2, 0x4
+ adds r2, r0
+ ldr r1, _080DFB0C @ =gBattleMonForms
+ ldr r0, _080DFB10 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r1, 11
+ ldr r0, [r2]
+ adds r0, r1
+ ldr r1, [sp]
+ ldr r2, _080DFB14 @ =0x04000200
+ bl CpuSet
+ ldr r1, [sp]
+ movs r2, 0x80
+ lsls r2, 4
+ mov r0, sp
+ ldrh r3, [r0, 0xA]
+ movs r0, 0x1
+ bl LoadBgTiles
+ ldr r0, _080DFB18 @ =gTasks
+ adds r1, r4, r5
+ lsls r1, 3
+ adds r1, r0
+_080DFB00:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _080DFBCE
+ .align 2, 0
+_080DFB08: .4byte gMonSpritesGfxPtr
+_080DFB0C: .4byte gBattleMonForms
+_080DFB10: .4byte gBattleAnimAttacker
+_080DFB14: .4byte 0x04000200
+_080DFB18: .4byte gTasks
+_080DFB1C:
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r5, r0, r3
+ ldrh r0, [r5, 0xC]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080DFBCE
+ movs r0, 0
+ strh r0, [r5, 0xC]
+ ldrh r0, [r5, 0xA]
+ subs r0, 0x1
+ strh r0, [r5, 0xA]
+ ldrh r4, [r5, 0xA]
+ lsls r1, r4, 4
+ orrs r1, r4
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x4C
+ bl SetGpuReg
+ cmp r4, 0
+ bne _080DFBCE
+_080DFB50:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080DFBCE
+_080DFB58:
+ movs r0, 0x4C
+ movs r1, 0
+ bl SetGpuReg
+ ldr r0, _080DFB7C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080DFB80
+ movs r0, 0x1
+ movs r1, 0x2
+ movs r2, 0
+ bl SetAnimBgAttribute
+ b _080DFB8A
+ .align 2, 0
+_080DFB7C: .4byte gBattleAnimAttacker
+_080DFB80:
+ movs r0, 0x2
+ movs r1, 0x2
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080DFB8A:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DFBC8
+ ldr r4, _080DFBD8 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080DFBC8
+ ldr r0, _080DFBDC @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ movs r2, 0x1C
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080DFBC8
+ ldrb r0, [r4]
+ ldr r1, _080DFBE0 @ =gUnknown_2024018
+ ldr r1, [r1]
+ ldr r2, [r1]
+ lsls r1, r0, 2
+ adds r1, r2
+ ldrh r1, [r1, 0x2]
+ bl SetBankEnemyShadowSpriteCallback
+_080DFBC8:
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080DFBCE:
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DFBD8: .4byte gBattleAnimAttacker
+_080DFBDC: .4byte gTasks
+_080DFBE0: .4byte gUnknown_2024018
+ thumb_func_end sub_80DF9BC
+
+ thumb_func_start c3_80DFBE4
+c3_80DFBE4: @ 80DFBE4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r4, _080DFC14 @ =gBattleAnimArgs
+ ldr r3, _080DFC18 @ =gSprites
+ ldr r2, _080DFC1C @ =gBattlerSpriteIds
+ ldr r1, _080DFC20 @ =gBattleAnimAttacker
+ ldrb r1, [r1]
+ adds r1, r2
+ ldrb r2, [r1]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r3
+ adds r1, 0x3E
+ ldrb r1, [r1]
+ lsls r1, 29
+ lsrs r1, 31
+ strh r1, [r4, 0xE]
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DFC14: .4byte gBattleAnimArgs
+_080DFC18: .4byte gSprites
+_080DFC1C: .4byte gBattlerSpriteIds
+_080DFC20: .4byte gBattleAnimAttacker
+ thumb_func_end c3_80DFBE4
+
+ thumb_func_start sub_80DFC24
+sub_80DFC24: @ 80DFC24
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080DFC48 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ ldr r1, _080DFC4C @ =gBattleAnimTarget
+ ldrb r1, [r1]
+ movs r2, 0x1
+ bl sub_8034BF4
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DFC48: .4byte gBattleAnimAttacker
+_080DFC4C: .4byte gBattleAnimTarget
+ thumb_func_end sub_80DFC24
+
+ thumb_func_start sub_80DFC50
+sub_80DFC50: @ 80DFC50
+ push {r4,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080DFC78 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ adds r2, r1, 0
+ cmp r0, 0x4
+ bls _080DFC6E
+ b _080DFECA
+_080DFC6E:
+ lsls r0, 2
+ ldr r1, _080DFC7C @ =_080DFC80
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080DFC78: .4byte gTasks
+_080DFC7C: .4byte _080DFC80
+ .align 2, 0
+_080DFC80:
+ .4byte _080DFC94
+ .4byte _080DFD90
+ .4byte _080DFDE0
+ .4byte _080DFE4A
+ .4byte _080DFE7E
+_080DFC94:
+ ldr r1, _080DFD18 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DFCCE
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080DFCCE:
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080DFD1C @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap
+ bl sub_807543C
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080DFD20 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080DFD24 @ =gFile_graphics_battle_anims_masks_morning_sun_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DFD30
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80730C0
+ ldr r1, _080DFD28 @ =gBattle_BG1_X
+ ldr r3, _080DFD2C @ =0x0000ffc8
+ b _080DFD58
+ .align 2, 0
+_080DFD18: .4byte 0x00003f42
+_080DFD1C: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap
+_080DFD20: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet
+_080DFD24: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette
+_080DFD28: .4byte gBattle_BG1_X
+_080DFD2C: .4byte 0x0000ffc8
+_080DFD30:
+ ldr r0, _080DFD48 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DFD54
+ ldr r1, _080DFD4C @ =gBattle_BG1_X
+ ldr r2, _080DFD50 @ =0x0000ff79
+ adds r0, r2, 0
+ b _080DFD5A
+ .align 2, 0
+_080DFD48: .4byte gBattleAnimAttacker
+_080DFD4C: .4byte gBattle_BG1_X
+_080DFD50: .4byte 0x0000ff79
+_080DFD54:
+ ldr r1, _080DFD80 @ =gBattle_BG1_X
+ ldr r3, _080DFD84 @ =0x0000fff6
+_080DFD58:
+ adds r0, r3, 0
+_080DFD5A:
+ strh r0, [r1]
+ ldr r1, _080DFD88 @ =gBattle_BG1_Y
+ movs r0, 0
+ strh r0, [r1]
+ ldr r0, _080DFD8C @ =gTasks
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080DFD80 @ =gBattle_BG1_X
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1C]
+ ldr r0, _080DFD88 @ =gBattle_BG1_Y
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1E]
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ b _080DFE66
+ .align 2, 0
+_080DFD80: .4byte gBattle_BG1_X
+_080DFD84: .4byte 0x0000fff6
+_080DFD88: .4byte gBattle_BG1_Y
+_080DFD8C: .4byte gTasks
+_080DFD90:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r2
+ ldrh r0, [r4, 0x10]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x10]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080DFDA6
+ b _080DFECA
+_080DFDA6:
+ movs r0, 0
+ strh r0, [r4, 0x10]
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _080DFDBC
+ movs r0, 0xC
+ strh r0, [r4, 0xA]
+_080DFDBC:
+ ldrh r0, [r4, 0xA]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xC
+ bne _080DFECA
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080DFECA
+_080DFDE0:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r2
+ ldrh r0, [r4, 0xA]
+ subs r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080DFDF8
+ movs r0, 0
+ strh r0, [r4, 0xA]
+_080DFDF8:
+ ldrh r0, [r4, 0xA]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080DFECA
+ ldr r2, _080DFE3C @ =gBattle_BG1_X
+ ldr r1, _080DFE40 @ =gUnknown_83FF240
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ ldrh r1, [r4, 0x1C]
+ adds r0, r1
+ strh r0, [r2]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080DFE44
+ strh r0, [r4, 0x8]
+ b _080DFECA
+ .align 2, 0
+_080DFE3C: .4byte gBattle_BG1_X
+_080DFE40: .4byte gUnknown_83FF240
+_080DFE44:
+ movs r0, 0x3
+ strh r0, [r4, 0x8]
+ b _080DFECA
+_080DFE4A:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r2
+ ldrh r0, [r1, 0xE]
+ adds r0, 0x1
+ strh r0, [r1, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080DFECA
+ movs r0, 0
+ strh r0, [r1, 0xE]
+ movs r0, 0x1
+_080DFE66:
+ strh r0, [r1, 0x8]
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xDD
+ bl PlaySE12WithPanning
+ b _080DFECA
+_080DFE7E:
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ bl sub_8075358
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DFEA0
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080DFEA0:
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ ldr r0, _080DFED4 @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080DFED8 @ =gBattle_BG1_Y
+ strh r1, [r0]
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080DFECA:
+ add sp, 0x10
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DFED4: .4byte gBattle_BG1_X
+_080DFED8: .4byte gBattle_BG1_Y
+ thumb_func_end sub_80DFC50
+
+ thumb_func_start sub_80DFEDC
+sub_80DFEDC: @ 80DFEDC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r7, r0, 0
+ bl Random
+ lsls r0, 16
+ movs r1, 0xFC
+ lsls r1, 14
+ ands r1, r0
+ lsrs r5, r1, 16
+ adds r1, r5, 0
+ cmp r1, 0x1F
+ ble _080DFF06
+ movs r0, 0x20
+ subs r0, r1
+ lsls r0, 16
+ lsrs r5, r0, 16
+_080DFF06:
+ ldr r4, _080E0000 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r5
+ strh r0, [r7, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x20
+ strh r0, [r7, 0x22]
+ ldr r1, _080E0004 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r7, 0x30]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r7, 0x32]
+ ldr r4, _080E0008 @ =gUnknown_83FF26C
+ movs r0, 0x20
+ ldrsh r1, [r7, r0]
+ movs r0, 0x22
+ ldrsh r2, [r7, r0]
+ adds r5, r7, 0
+ adds r5, 0x43
+ ldrb r3, [r5]
+ adds r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ bl CreateSprite
+ mov r9, r0
+ mov r1, r9
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ movs r0, 0x20
+ ldrsh r1, [r7, r0]
+ movs r0, 0x22
+ ldrsh r2, [r7, r0]
+ ldrb r3, [r5]
+ adds r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ bl CreateSprite
+ mov r8, r0
+ mov r1, r8
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ mov r0, r9
+ lsls r2, r0, 4
+ add r2, r9
+ lsls r2, 2
+ ldr r1, _080E000C @ =gSprites
+ mov r10, r1
+ adds r5, r2, r1
+ adds r0, r5, 0
+ movs r1, 0x1
+ str r2, [sp]
+ bl StartSpriteAnim
+ mov r0, r8
+ lsls r6, r0, 4
+ add r6, r8
+ lsls r6, 2
+ mov r1, r10
+ adds r4, r6, r1
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl StartSpriteAnim
+ ldr r1, _080E0004 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0x32]
+ ldrh r0, [r1]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x32]
+ ldr r0, _080E0010 @ =0x0000ffff
+ strh r0, [r5, 0x3C]
+ movs r0, 0x1
+ negs r0, r0
+ strh r0, [r4, 0x3C]
+ adds r5, 0x3E
+ ldrb r0, [r5]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r5]
+ adds r4, 0x3E
+ ldrb r0, [r4]
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x1C
+ add r10, r0
+ ldr r2, [sp]
+ add r2, r10
+ ldr r0, _080E0014 @ =sub_80E0128
+ str r0, [r2]
+ add r6, r10
+ str r0, [r6]
+ mov r1, r9
+ strh r1, [r7, 0x3A]
+ mov r0, r8
+ strh r0, [r7, 0x3C]
+ ldr r0, _080E0018 @ =sub_80E001C
+ str r0, [r7, 0x1C]
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0000: .4byte gBattleAnimAttacker
+_080E0004: .4byte gBattleAnimArgs
+_080E0008: .4byte gUnknown_83FF26C
+_080E000C: .4byte gSprites
+_080E0010: .4byte 0x0000ffff
+_080E0014: .4byte sub_80E0128
+_080E0018: .4byte sub_80E001C
+ thumb_func_end sub_80DFEDC
+
+ thumb_func_start sub_80E001C
+sub_80E001C: @ 80E001C
+ push {lr}
+ adds r3, r0, 0
+ ldrh r2, [r3, 0x32]
+ ldrh r0, [r3, 0x34]
+ adds r2, r0
+ lsls r0, r2, 16
+ asrs r0, 24
+ ldrh r1, [r3, 0x26]
+ subs r1, r0
+ strh r1, [r3, 0x26]
+ movs r0, 0xFF
+ ands r2, r0
+ strh r2, [r3, 0x34]
+ movs r2, 0x36
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ bne _080E006A
+ lsls r0, r1, 16
+ asrs r0, 16
+ movs r1, 0x8
+ negs r1, r1
+ cmp r0, r1
+ bge _080E006A
+ ldr r2, _080E00C4 @ =gSprites
+ movs r0, 0x3A
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ ldrh r0, [r3, 0x36]
+ adds r0, 0x1
+ strh r0, [r3, 0x36]
+_080E006A:
+ movs r1, 0x36
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x1
+ bne _080E009E
+ movs r2, 0x26
+ ldrsh r1, [r3, r2]
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _080E009E
+ ldr r2, _080E00C4 @ =gSprites
+ movs r0, 0x3C
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ ldrh r0, [r3, 0x36]
+ adds r0, 0x1
+ strh r0, [r3, 0x36]
+_080E009E:
+ ldrh r0, [r3, 0x30]
+ subs r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080E00C0
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080E00C8 @ =sub_80E00CC
+ str r0, [r3, 0x1C]
+_080E00C0:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E00C4: .4byte gSprites
+_080E00C8: .4byte sub_80E00CC
+ thumb_func_end sub_80E001C
+
+ thumb_func_start sub_80E00CC
+sub_80E00CC: @ 80E00CC
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r5, _080E0120 @ =gSprites
+ movs r0, 0x3A
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r3, r0, 2
+ adds r6, r5, 0
+ adds r6, 0x1C
+ adds r0, r3, r6
+ ldr r2, [r0]
+ ldr r0, _080E0124 @ =SpriteCallbackDummy
+ cmp r2, r0
+ bne _080E0118
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r6
+ ldr r0, [r1]
+ cmp r0, r2
+ bne _080E0118
+ adds r0, r3, r5
+ bl DestroySprite
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ bl DestroySprite
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E0118:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0120: .4byte gSprites
+_080E0124: .4byte SpriteCallbackDummy
+ thumb_func_end sub_80E00CC
+
+ thumb_func_start sub_80E0128
+sub_80E0128: @ 80E0128
+ push {lr}
+ adds r3, r0, 0
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _080E0174
+ ldrh r2, [r3, 0x32]
+ ldrh r1, [r3, 0x34]
+ adds r2, r1
+ lsls r1, r2, 16
+ asrs r1, 24
+ ldrh r0, [r3, 0x26]
+ subs r0, r1
+ strh r0, [r3, 0x26]
+ movs r0, 0xFF
+ ands r2, r0
+ strh r2, [r3, 0x34]
+ ldrh r0, [r3, 0x30]
+ subs r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080E0174
+ mov r1, r12
+ ldrb r0, [r1]
+ movs r1, 0x4
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldr r0, _080E0178 @ =SpriteCallbackDummy
+ str r0, [r3, 0x1C]
+_080E0174:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0178: .4byte SpriteCallbackDummy
+ thumb_func_end sub_80E0128
+
+ thumb_func_start sub_80E017C
+sub_80E017C: @ 80E017C
+ push {r4-r6,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080E01A4 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ adds r4, r1, 0
+ cmp r0, 0x5
+ bls _080E019A
+ b _080E0476
+_080E019A:
+ lsls r0, 2
+ ldr r1, _080E01A8 @ =_080E01AC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E01A4: .4byte gTasks
+_080E01A8: .4byte _080E01AC
+ .align 2, 0
+_080E01AC:
+ .4byte _080E01C4
+ .4byte _080E0304
+ .4byte _080E038C
+ .4byte _080E03C2
+ .4byte _080E03F0
+ .4byte _080E042A
+_080E01C4:
+ ldr r1, _080E0248 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r1, _080E024C @ =0x00000d03
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E01FC
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080E01FC:
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080E0250 @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap
+ bl sub_807543C
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080E0254 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080E0258 @ =gFile_graphics_battle_anims_masks_morning_sun_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E0264
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80730C0
+ ldr r1, _080E025C @ =gBattle_BG1_X
+ ldr r3, _080E0260 @ =0x0000ffc8
+ adds r0, r3, 0
+ b _080E02CE
+ .align 2, 0
+_080E0248: .4byte 0x00003f42
+_080E024C: .4byte 0x00000d03
+_080E0250: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap
+_080E0254: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet
+_080E0258: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette
+_080E025C: .4byte gBattle_BG1_X
+_080E0260: .4byte 0x0000ffc8
+_080E0264:
+ ldr r0, _080E02A4 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_8075290
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E02B8
+ ldr r1, _080E02A8 @ =gBattle_BG1_X
+ cmp r4, 0x1
+ bne _080E0288
+ ldr r2, _080E02AC @ =0x0000ff65
+ adds r0, r2, 0
+ strh r0, [r1]
+_080E0288:
+ cmp r4, 0x3
+ bne _080E0292
+ ldr r3, _080E02B0 @ =0x0000ff8d
+ adds r0, r3, 0
+ strh r0, [r1]
+_080E0292:
+ cmp r4, 0
+ bne _080E029A
+ movs r0, 0xE
+ strh r0, [r1]
+_080E029A:
+ cmp r4, 0x2
+ bne _080E02D0
+ ldr r1, _080E02A8 @ =gBattle_BG1_X
+ ldr r2, _080E02B4 @ =0x0000ffec
+ b _080E02CC
+ .align 2, 0
+_080E02A4: .4byte gBattleAnimTarget
+_080E02A8: .4byte gBattle_BG1_X
+_080E02AC: .4byte 0x0000ff65
+_080E02B0: .4byte 0x0000ff8d
+_080E02B4: .4byte 0x0000ffec
+_080E02B8:
+ cmp r4, 0x1
+ bne _080E02C4
+ ldr r1, _080E02F0 @ =gBattle_BG1_X
+ ldr r3, _080E02F4 @ =0x0000ff79
+ adds r0, r3, 0
+ strh r0, [r1]
+_080E02C4:
+ cmp r4, 0
+ bne _080E02D0
+ ldr r1, _080E02F0 @ =gBattle_BG1_X
+ ldr r2, _080E02F8 @ =0x0000fff6
+_080E02CC:
+ adds r0, r2, 0
+_080E02CE:
+ strh r0, [r1]
+_080E02D0:
+ ldr r1, _080E02FC @ =gBattle_BG1_Y
+ movs r0, 0
+ strh r0, [r1]
+ ldr r0, _080E0300 @ =gTasks
+ lsls r1, r6, 2
+ adds r1, r6
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080E02F0 @ =gBattle_BG1_X
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1C]
+ ldr r0, _080E02FC @ =gBattle_BG1_Y
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1E]
+ b _080E0384
+ .align 2, 0
+_080E02F0: .4byte gBattle_BG1_X
+_080E02F4: .4byte 0x0000ff79
+_080E02F8: .4byte 0x0000fff6
+_080E02FC: .4byte gBattle_BG1_Y
+_080E0300: .4byte gTasks
+_080E0304:
+ ldr r1, _080E0338 @ =gTasks
+ lsls r4, r6, 2
+ adds r0, r4, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ movs r0, 0
+ strh r0, [r5, 0xE]
+ ldr r0, _080E033C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E0348
+ ldr r2, _080E0340 @ =gBattle_BG1_X
+ ldr r1, _080E0344 @ =gUnknown_83FF284
+ movs r3, 0xC
+ ldrsh r0, [r5, r3]
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ ldrh r5, [r5, 0x1C]
+ adds r0, r5
+ b _080E035A
+ .align 2, 0
+_080E0338: .4byte gTasks
+_080E033C: .4byte gBattleAnimTarget
+_080E0340: .4byte gBattle_BG1_X
+_080E0344: .4byte gUnknown_83FF284
+_080E0348:
+ ldr r2, _080E0378 @ =gBattle_BG1_X
+ ldr r1, _080E037C @ =gUnknown_83FF284
+ movs r3, 0xC
+ ldrsh r0, [r5, r3]
+ adds r0, r1
+ movs r1, 0
+ ldrsb r1, [r0, r1]
+ ldrh r0, [r5, 0x1C]
+ subs r0, r1
+_080E035A:
+ strh r0, [r2]
+ ldr r0, _080E0380 @ =gTasks
+ adds r1, r4, r6
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0xC]
+ adds r0, 0x1
+ strh r0, [r1, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ bne _080E0384
+ strh r0, [r1, 0x8]
+ b _080E0476
+ .align 2, 0
+_080E0378: .4byte gBattle_BG1_X
+_080E037C: .4byte gUnknown_83FF284
+_080E0380: .4byte gTasks
+_080E0384:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _080E0476
+_080E038C:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r4
+ ldrh r0, [r4, 0xA]
+ subs r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bgt _080E03A6
+ movs r0, 0x5
+ strh r0, [r4, 0xA]
+_080E03A6:
+ ldrh r1, [r4, 0xA]
+ lsls r1, 8
+ movs r0, 0x3
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ bne _080E0476
+ b _080E03E2
+_080E03C2:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r4
+ ldrh r1, [r4, 0xE]
+ adds r1, 0x1
+ strh r1, [r4, 0xE]
+ lsls r1, 16
+ asrs r1, 16
+ ldr r2, _080E03EC @ =gUnknown_83FF288
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r1, r0
+ ble _080E0476
+_080E03E2:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E0476
+ .align 2, 0
+_080E03EC: .4byte gUnknown_83FF288
+_080E03F0:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r4
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ ble _080E040A
+ movs r0, 0xD
+ strh r0, [r4, 0xA]
+_080E040A:
+ ldrh r1, [r4, 0xA]
+ lsls r1, 8
+ movs r0, 0x3
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xD
+ bne _080E0476
+ movs r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E0476
+_080E042A:
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ bl sub_8075358
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E044C
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080E044C:
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ ldr r0, _080E0480 @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080E0484 @ =gBattle_BG1_Y
+ strh r1, [r0]
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080E0476:
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0480: .4byte gBattle_BG1_X
+_080E0484: .4byte gBattle_BG1_Y
+ thumb_func_end sub_80E017C
+
+ thumb_func_start sub_80E0488
+sub_80E0488: @ 80E0488
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080E04C0 @ =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 _080E04C8
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080E04C4 @ =gUnknown_83FF290
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E04DA
+ .align 2, 0
+_080E04C0: .4byte gTasks
+_080E04C4: .4byte gUnknown_83FF290
+_080E04C8:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E04DA
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080E04DA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E0488
+
+ thumb_func_start sub_80E04E0
+sub_80E04E0: @ 80E04E0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ cmp r1, 0
+ bne _080E04FE
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075160
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080E0552
+_080E04FE:
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ cmp r1, 0x14
+ ble _080E0552
+ ldrh r0, [r4, 0x30]
+ adds r0, 0xA0
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x80
+ strh r0, [r4, 0x32]
+ ldr r0, _080E052C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E0530
+ ldrh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ negs r0, r0
+ b _080E0536
+ .align 2, 0
+_080E052C: .4byte gBattleAnimAttacker
+_080E0530:
+ ldrh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+_080E0536:
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x40
+ ble _080E0552
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E0552:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E04E0
+
+ thumb_func_start sub_80E0558
+sub_80E0558: @ 80E0558
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080E057C @ =gTasks
+ adds r4, r0, r1
+ ldr r5, _080E0580 @ =gBattleAnimArgs
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080E0584
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ b _080E0618
+ .align 2, 0
+_080E057C: .4byte gTasks
+_080E0580: .4byte gBattleAnimArgs
+_080E0584:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bge _080E0590
+ movs r0, 0
+ strh r0, [r5, 0x4]
+_080E0590:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x2
+ ble _080E059C
+ movs r0, 0x2
+ strh r0, [r5, 0x4]
+_080E059C:
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ movs r0, 0x4
+ ldrsh r1, [r5, r0]
+ lsls r1, 1
+ movs r0, 0x8
+ subs r0, r1
+ strh r0, [r4, 0xE]
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ lsls r0, 7
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1
+ strh r0, [r4, 0x10]
+ ldrh r0, [r5, 0x4]
+ adds r0, 0x2
+ strh r0, [r4, 0x12]
+ ldrh r0, [r5, 0x2]
+ subs r0, 0x1
+ strh r0, [r4, 0x14]
+ ldrb r0, [r5]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080E05E8
+ ldr r0, _080E05E4 @ =gBattleAnimAttacker
+ b _080E05EA
+ .align 2, 0
+_080E05E4: .4byte gBattleAnimAttacker
+_080E05E8:
+ ldr r0, _080E0620 @ =gBattleAnimTarget
+_080E05EA:
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E0608
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ strh r0, [r4, 0x10]
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ strh r0, [r4, 0x12]
+_080E0608:
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl sub_80758E0
+ ldr r0, _080E0624 @ =sub_80E0628
+ str r0, [r4]
+_080E0618:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0620: .4byte gBattleAnimTarget
+_080E0624: .4byte sub_80E0628
+ thumb_func_end sub_80E0558
+
+ thumb_func_start sub_80E0628
+sub_80E0628: @ 80E0628
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080E064C @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r6, [r4, r0]
+ cmp r6, 0x1
+ beq _080E06B0
+ cmp r6, 0x1
+ bgt _080E0650
+ cmp r6, 0
+ beq _080E065C
+ b _080E0788
+ .align 2, 0
+_080E064C: .4byte gTasks
+_080E0650:
+ cmp r6, 0x2
+ beq _080E0708
+ cmp r6, 0x3
+ bne _080E065A
+ b _080E0778
+_080E065A:
+ b _080E0788
+_080E065C:
+ ldr r2, _080E06AC @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x12]
+ ldrh r2, [r0, 0x24]
+ adds r1, r2
+ strh r1, [r0, 0x24]
+ ldrh r0, [r4, 0xC]
+ ldrh r1, [r4, 0x10]
+ subs r0, r1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r4, 0xC]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80759DC
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0xE
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ blt _080E0788
+ strh r6, [r4, 0xA]
+ b _080E0770
+ .align 2, 0
+_080E06AC: .4byte gSprites
+_080E06B0:
+ ldr r2, _080E0704 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x24]
+ ldrh r2, [r4, 0x12]
+ subs r1, r2
+ strh r1, [r0, 0x24]
+ ldrh r0, [r4, 0x10]
+ ldrh r1, [r4, 0xC]
+ adds r0, r1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r4, 0xC]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80759DC
+ ldrh r1, [r4, 0xA]
+ adds r1, 0x1
+ strh r1, [r4, 0xA]
+ lsls r1, 16
+ asrs r1, 16
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ cmp r1, r0
+ blt _080E0788
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _080E0770
+ .align 2, 0
+_080E0704: .4byte gSprites
+_080E0708:
+ ldr r2, _080E076C @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x12]
+ ldrh r2, [r0, 0x24]
+ adds r1, r2
+ movs r5, 0
+ strh r1, [r0, 0x24]
+ ldrh r0, [r4, 0xC]
+ ldrh r1, [r4, 0x10]
+ subs r0, r1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r4, 0xC]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80759DC
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0xE
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ blt _080E0788
+ ldrh r1, [r4, 0x14]
+ movs r2, 0x14
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080E0770
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x14]
+ strh r5, [r4, 0xA]
+ strh r5, [r4, 0x8]
+ b _080E0788
+ .align 2, 0
+_080E076C: .4byte gSprites
+_080E0770:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E0788
+_080E0778:
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8075980
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080E0788:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E0628
+
+ thumb_func_start sub_80E0790
+sub_80E0790: @ 80E0790
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080E07AC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _080E07B4
+ strh r0, [r4, 0x20]
+ ldr r1, _080E07B0 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ b _080E07BE
+ .align 2, 0
+_080E07AC: .4byte gBattleAnimAttacker
+_080E07B0: .4byte gBattleAnimArgs
+_080E07B4:
+ movs r0, 0xF0
+ strh r0, [r4, 0x20]
+ ldr r1, _080E07D8 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ subs r0, 0x1E
+_080E07BE:
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x32]
+ ldrb r1, [r1, 0x2]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldr r0, _080E07DC @ =sub_80E07E0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E07D8: .4byte gBattleAnimArgs
+_080E07DC: .4byte sub_80E07E0
+ thumb_func_end sub_80E0790
+
+ thumb_func_start sub_80E07E0
+sub_80E07E0: @ 80E07E0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x3
+ strh r0, [r4, 0x2E]
+ ldr r0, _080E0820 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E0824
+ ldrh r1, [r4, 0x20]
+ adds r1, 0x5
+ strh r1, [r4, 0x20]
+ ldrh r0, [r4, 0x22]
+ subs r0, 0x1
+ strh r0, [r4, 0x22]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0xF0
+ ble _080E0812
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E0812:
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0xFF
+ ands r0, r1
+ movs r1, 0x10
+ bl Sin
+ b _080E0848
+ .align 2, 0
+_080E0820: .4byte gBattleAnimAttacker
+_080E0824:
+ ldrh r1, [r4, 0x20]
+ subs r1, 0x5
+ strh r1, [r4, 0x20]
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x1
+ strh r0, [r4, 0x22]
+ lsls r1, 16
+ cmp r1, 0
+ bge _080E083C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E083C:
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0xFF
+ ands r0, r1
+ movs r1, 0x10
+ bl Cos
+_080E0848:
+ strh r0, [r4, 0x26]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E07E0
+
+ thumb_func_start sub_80E0850
+sub_80E0850: @ 80E0850
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080E0898 @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ strh r0, [r4, 0xE]
+ movs r0, 0x20
+ strh r0, [r4, 0x20]
+ movs r0, 0x40
+ strh r0, [r4, 0x22]
+ movs r0, 0x80
+ lsls r0, 4
+ strh r0, [r4, 0x24]
+ ldr r0, _080E089C @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ movs r1, 0
+ bl sub_80758E0
+ ldr r0, _080E08A0 @ =sub_80E08A4
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0898: .4byte gTasks
+_080E089C: .4byte gBattleAnimArgs
+_080E08A0: .4byte sub_80E08A4
+ thumb_func_end sub_80E0850
+
+ thumb_func_start sub_80E08A4
+sub_80E08A4: @ 80E08A4
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080E08D0 @ =gTasks
+ adds r7, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r7, r1]
+ mov r8, r0
+ cmp r0, 0x1
+ beq _080E0940
+ cmp r0, 0x1
+ bgt _080E08D4
+ cmp r0, 0
+ beq _080E08DC
+ b _080E09BA
+ .align 2, 0
+_080E08D0: .4byte gTasks
+_080E08D4:
+ mov r2, r8
+ cmp r2, 0x2
+ beq _080E09A8
+ b _080E09BA
+_080E08DC:
+ movs r3, 0x80
+ lsls r3, 2
+ adds r0, r3, 0
+ ldrh r1, [r7, 0xC]
+ adds r2, r0, r1
+ strh r2, [r7, 0xC]
+ lsls r0, r2, 16
+ asrs r0, 16
+ ldrh r3, [r7, 0x24]
+ mov r8, r3
+ movs r3, 0x24
+ ldrsh r1, [r7, r3]
+ cmp r0, r1
+ blt _080E09BA
+ mov r0, r8
+ subs r5, r0, r2
+ lsls r5, 16
+ asrs r5, 16
+ adds r6, r1, 0
+ lsls r6, 1
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl __divsi3
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl __modsi3
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r4, 16
+ asrs r4, 16
+ movs r1, 0x1
+ ands r4, r1
+ cmp r4, 0
+ bne _080E0934
+ lsls r0, 16
+ asrs r0, 16
+ mov r2, r8
+ subs r0, r2, r0
+ b _080E0992
+_080E0934:
+ lsls r0, 16
+ asrs r0, 16
+ mov r3, r8
+ subs r0, r3
+ strh r0, [r7, 0xC]
+ b _080E09BA
+_080E0940:
+ ldr r1, _080E0998 @ =0xfffffe00
+ adds r0, r1, 0
+ ldrh r2, [r7, 0xC]
+ adds r1, r0, r2
+ strh r1, [r7, 0xC]
+ movs r3, 0xC
+ ldrsh r0, [r7, r3]
+ movs r2, 0x24
+ ldrsh r6, [r7, r2]
+ cmn r0, r6
+ bgt _080E09BA
+ ldrh r3, [r7, 0x24]
+ mov r9, r3
+ mov r0, r9
+ subs r4, r0, r1
+ lsls r4, 16
+ asrs r4, 16
+ lsls r6, 1
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl __divsi3
+ adds r5, r0, 0
+ lsls r5, 16
+ lsrs r5, 16
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl __modsi3
+ lsls r0, 16
+ lsrs r2, r0, 16
+ mov r1, r8
+ ands r1, r5
+ lsls r0, r1, 16
+ asrs r1, r0, 16
+ cmp r1, 0
+ bne _080E099C
+ lsls r0, r2, 16
+ asrs r0, 16
+ mov r2, r9
+ subs r0, r2
+_080E0992:
+ strh r0, [r7, 0xC]
+ strh r1, [r7, 0x8]
+ b _080E09BA
+ .align 2, 0
+_080E0998: .4byte 0xfffffe00
+_080E099C:
+ lsls r0, r2, 16
+ asrs r0, 16
+ mov r3, r9
+ subs r0, r3, r0
+ strh r0, [r7, 0xC]
+ b _080E09BA
+_080E09A8:
+ ldrh r0, [r7, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8075980
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _080E0A30
+_080E09BA:
+ ldrh r0, [r7, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r7, 0xC]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r7, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80759DC
+ ldr r2, _080E0A28 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r2
+ movs r2, 0xC
+ ldrsh r0, [r7, r2]
+ cmp r0, 0
+ bge _080E09EE
+ adds r0, 0x3F
+_080E09EE:
+ asrs r0, 6
+ negs r0, r0
+ strh r0, [r1, 0x24]
+ ldrh r0, [r7, 0xA]
+ adds r0, 0x1
+ strh r0, [r7, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _080E0A30
+ ldrh r1, [r7, 0x20]
+ movs r3, 0x20
+ ldrsh r0, [r7, r3]
+ cmp r0, 0
+ beq _080E0A2C
+ subs r0, r1, 0x1
+ strh r0, [r7, 0x20]
+ ldrh r0, [r7, 0x24]
+ ldrh r1, [r7, 0x22]
+ subs r0, r1
+ strh r0, [r7, 0x24]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ bgt _080E0A30
+ movs r0, 0x10
+ strh r0, [r7, 0x24]
+ b _080E0A30
+ .align 2, 0
+_080E0A28: .4byte gSprites
+_080E0A2C:
+ movs r0, 0x2
+ strh r0, [r7, 0x8]
+_080E0A30:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E08A4
+
+ thumb_func_start sub_80E0A3C
+sub_80E0A3C: @ 80E0A3C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080E0A9C
+ ldr r6, _080E0A94 @ =gBattleAnimArgs
+ movs r2, 0x4
+ ldrsh r0, [r6, r2]
+ cmp r0, 0
+ bne _080E0A70
+ ldr r4, _080E0A98 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+_080E0A70:
+ ldrh r0, [r6]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ ldrh r1, [r6, 0x2]
+ ldrh r2, [r5, 0x22]
+ adds r0, r1, r2
+ strh r0, [r5, 0x22]
+ movs r0, 0x80
+ strh r0, [r5, 0x30]
+ movs r0, 0xC0
+ lsls r0, 2
+ strh r0, [r5, 0x32]
+ strh r1, [r5, 0x34]
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _080E0AFA
+ .align 2, 0
+_080E0A94: .4byte gBattleAnimArgs
+_080E0A98: .4byte gBattleAnimAttacker
+_080E0A9C:
+ ldrh r1, [r5, 0x30]
+ lsls r0, r1, 16
+ asrs r0, 24
+ strh r0, [r5, 0x24]
+ ldrh r0, [r5, 0x32]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r2, [r5, 0x26]
+ adds r0, r2
+ strh r0, [r5, 0x26]
+ movs r2, 0x36
+ ldrsh r0, [r5, r2]
+ adds r4, r1, 0
+ cmp r0, 0
+ bne _080E0ADA
+ movs r0, 0x26
+ ldrsh r1, [r5, r0]
+ movs r2, 0x34
+ ldrsh r0, [r5, r2]
+ cmn r1, r0
+ ble _080E0ADA
+ movs r0, 0x1
+ strh r0, [r5, 0x36]
+ movs r1, 0x32
+ ldrsh r0, [r5, r1]
+ negs r0, r0
+ movs r1, 0x3
+ bl __divsi3
+ lsls r0, 1
+ strh r0, [r5, 0x32]
+_080E0ADA:
+ adds r0, r4, 0
+ adds r0, 0xC0
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x80
+ strh r0, [r5, 0x32]
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080E0AFA
+ adds r0, r5, 0
+ bl DestroyAnimSprite
+_080E0AFA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E0A3C
+
+ thumb_func_start sub_80E0B00
+sub_80E0B00: @ 80E0B00
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r7, r0, 0
+ ldr r1, _080E0B30 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r2, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bne _080E0C0C
+ ldr r0, _080E0B34 @ =gBattleAnimArgs
+ movs r3, 0
+ ldrsh r1, [r0, r3]
+ mov r8, r0
+ cmp r1, 0
+ bne _080E0B3C
+ ldr r0, _080E0B38 @ =gBattleAnimAttacker
+ b _080E0B3E
+ .align 2, 0
+_080E0B30: .4byte gTasks
+_080E0B34: .4byte gBattleAnimArgs
+_080E0B38: .4byte gBattleAnimAttacker
+_080E0B3C:
+ ldr r0, _080E0B78 @ =gBattleAnimTarget
+_080E0B3E:
+ ldrb r0, [r0]
+ strh r0, [r2, 0x1E]
+ mov r1, r8
+ ldrb r0, [r1]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080E0B7C @ =gTasks
+ lsls r4, r7, 2
+ adds r0, r4, r7
+ lsls r0, 3
+ adds r6, r0, r1
+ strh r5, [r6, 0x1C]
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_80758E0
+ mov r2, r8
+ movs r3, 0x2
+ ldrsh r0, [r2, r3]
+ cmp r0, 0x1
+ beq _080E0BA0
+ cmp r0, 0x1
+ bgt _080E0B80
+ cmp r0, 0
+ beq _080E0B88
+ lsls r2, r5, 4
+ b _080E0BE8
+ .align 2, 0
+_080E0B78: .4byte gBattleAnimTarget
+_080E0B7C: .4byte gTasks
+_080E0B80:
+ cmp r0, 0x2
+ beq _080E0BAA
+ lsls r2, r5, 4
+ b _080E0BE8
+_080E0B88:
+ movs r2, 0xA0
+ lsls r2, 1
+ adds r0, r5, 0
+ movs r1, 0xE0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ adds r0, r5, 0
+ bl sub_8076440
+ lsls r2, r5, 4
+ b _080E0BE8
+_080E0BA0:
+ movs r2, 0x98
+ lsls r2, 1
+ movs r3, 0xF0
+ lsls r3, 4
+ b _080E0BB2
+_080E0BAA:
+ movs r2, 0x98
+ lsls r2, 1
+ movs r3, 0xF1
+ lsls r3, 8
+_080E0BB2:
+ adds r0, r5, 0
+ movs r1, 0xD0
+ bl obj_id_set_rotscale
+ adds r0, r5, 0
+ bl sub_8076440
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E0BD8
+ ldrb r0, [r6, 0x1E]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsls r2, r5, 4
+ cmp r0, 0
+ bne _080E0BE8
+_080E0BD8:
+ ldr r0, _080E0C04 @ =gSprites
+ lsls r2, r5, 4
+ adds r1, r2, r5
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r1, 0x26]
+ adds r0, 0x10
+ strh r0, [r1, 0x26]
+_080E0BE8:
+ ldr r1, _080E0C04 @ =gSprites
+ adds r0, r2, r5
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0x2
+ strh r1, [r0, 0x24]
+ ldr r0, _080E0C08 @ =gTasks
+ adds r1, r4, r7
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _080E0C58
+ .align 2, 0
+_080E0C04: .4byte gSprites
+_080E0C08: .4byte gTasks
+_080E0C0C:
+ ldrb r5, [r2, 0x1C]
+ ldrh r0, [r2, 0xC]
+ adds r0, 0x1
+ movs r4, 0
+ strh r0, [r2, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080E0C30
+ strh r4, [r2, 0xC]
+ ldr r0, _080E0C64 @ =gSprites
+ lsls r1, r5, 4
+ adds r1, r5
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r1, 0x24]
+ negs r0, r0
+ strh r0, [r1, 0x24]
+_080E0C30:
+ ldrh r0, [r2, 0xA]
+ adds r0, 0x1
+ strh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ bne _080E0C58
+ adds r0, r5, 0
+ bl sub_8075980
+ ldr r1, _080E0C64 @ =gSprites
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ adds r0, r1
+ strh r4, [r0, 0x24]
+ strh r4, [r0, 0x26]
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080E0C58:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0C64: .4byte gSprites
+ thumb_func_end sub_80E0B00
+
+ thumb_func_start sub_80E0C68
+sub_80E0C68: @ 80E0C68
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xC
+ bl __umodsi3
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, r0
+ ldr r3, _080E0CB4 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080E0CB8 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ bl Random
+ ldr r5, _080E0CBC @ =0x000001ff
+ ands r5, r0
+ bl Random
+ movs r1, 0xFF
+ ands r1, r0
+ movs r0, 0x1
+ ands r0, r5
+ cmp r0, 0
+ beq _080E0CC0
+ movs r2, 0xBC
+ lsls r2, 3
+ adds r0, r5, r2
+ b _080E0CC8
+ .align 2, 0
+_080E0CB4: .4byte 0x000003ff
+_080E0CB8: .4byte 0xfffffc00
+_080E0CBC: .4byte 0x000001ff
+_080E0CC0:
+ movs r3, 0xBC
+ lsls r3, 3
+ adds r0, r3, 0
+ subs r0, r5
+_080E0CC8:
+ strh r0, [r4, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080E0CDA
+ movs r2, 0x90
+ lsls r2, 3
+ adds r0, r1, r2
+ b _080E0CE2
+_080E0CDA:
+ movs r3, 0x90
+ lsls r3, 3
+ adds r0, r3, 0
+ subs r0, r1
+_080E0CE2:
+ strh r0, [r4, 0x30]
+ ldr r0, _080E0CF4 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080E0CFC
+ ldr r0, _080E0CF8 @ =0x0000fff8
+ b _080E0CFE
+ .align 2, 0
+_080E0CF4: .4byte gBattleAnimArgs
+_080E0CF8: .4byte 0x0000fff8
+_080E0CFC:
+ movs r0, 0xF8
+_080E0CFE:
+ strh r0, [r4, 0x20]
+ movs r0, 0x68
+ strh r0, [r4, 0x22]
+ ldr r0, _080E0D10 @ =sub_80E0D14
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0D10: .4byte sub_80E0D14
+ thumb_func_end sub_80E0C68
+
+ thumb_func_start sub_80E0D14
+sub_80E0D14: @ 80E0D14
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E0D2C
+ ldrh r3, [r4, 0x2E]
+ lsls r0, r3, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ b _080E0D36
+_080E0D2C:
+ ldrh r3, [r4, 0x2E]
+ lsls r1, r3, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x24]
+ subs r0, r1
+_080E0D36:
+ strh r0, [r4, 0x24]
+ ldrh r2, [r4, 0x30]
+ lsls r1, r2, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x26]
+ subs r0, r1
+ strh r0, [r4, 0x26]
+ adds r0, r3, 0
+ subs r0, 0x16
+ strh r0, [r4, 0x2E]
+ adds r1, r2, 0
+ subs r1, 0x30
+ strh r1, [r4, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080E0D5A
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+_080E0D5A:
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080E0D6E
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E0D6E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E0D14
+
+ thumb_func_start sub_80E0D74
+sub_80E0D74: @ 80E0D74
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r1, _080E0DD8 @ =0x00001f3f
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 8
+ movs r0, 0
+ bl SetGpuRegBits
+ ldr r0, _080E0DDC @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r4, _080E0DE0 @ =gUnknown_2022986
+ strh r1, [r4]
+ movs r0, 0x40
+ movs r1, 0
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x44
+ bl SetGpuReg
+ ldr r0, _080E0DE4 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r5, 0x2E]
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075114
+ ldrb r1, [r5, 0x1]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080E0DE8 @ =sub_80E0DEC
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0DD8: .4byte 0x00001f3f
+_080E0DDC: .4byte gUnknown_2022984
+_080E0DE0: .4byte gUnknown_2022986
+_080E0DE4: .4byte gBattleAnimArgs
+_080E0DE8: .4byte sub_80E0DEC
+ thumb_func_end sub_80E0D74
+
+ thumb_func_start sub_80E0DEC
+sub_80E0DEC: @ 80E0DEC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080E0E2A
+ cmp r0, 0x1
+ bgt _080E0E02
+ cmp r0, 0
+ beq _080E0E0C
+ b _080E0E8A
+_080E0E02:
+ cmp r0, 0x2
+ beq _080E0E40
+ cmp r0, 0x3
+ beq _080E0E62
+ b _080E0E8A
+_080E0E0C:
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080E0E8A
+ b _080E0E5A
+_080E0E2A:
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080E0E8A
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+ b _080E0E5A
+_080E0E40:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080E0E8A
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080E0E5A:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ b _080E0E8A
+_080E0E62:
+ ldr r1, _080E0E90 @ =0x00003f3f
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r0, 0
+ bl GetGpuReg
+ adds r1, r0, 0
+ movs r2, 0x80
+ lsls r2, 8
+ adds r0, r2, 0
+ eors r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E0E8A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0E90: .4byte 0x00003f3f
+ thumb_func_end sub_80E0DEC
+
+ thumb_func_start sub_80E0E94
+sub_80E0E94: @ 80E0E94
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080E0ED0 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ ldr r1, _080E0ED4 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x30]
+ ldr r1, _080E0ED8 @ =sub_80E0EDC
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0ED0: .4byte gBattleAnimAttacker
+_080E0ED4: .4byte gBattleAnimArgs
+_080E0ED8: .4byte sub_80E0EDC
+ thumb_func_end sub_80E0E94
+
+ thumb_func_start sub_80E0EDC
+sub_80E0EDC: @ 80E0EDC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x32]
+ lsls r1, 16
+ asrs r1, 24
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ ldrh r1, [r4, 0x34]
+ lsls r1, 16
+ asrs r1, 24
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x9
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ lsls r1, r0, 16
+ cmp r0, 0x3F
+ bls _080E0F16
+ asrs r0, r1, 16
+ cmp r0, 0xC3
+ ble _080E0F28
+_080E0F16:
+ ldr r0, _080E0F24 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_807685C
+ subs r0, 0x1
+ b _080E0F32
+ .align 2, 0
+_080E0F24: .4byte gBattleAnimAttacker
+_080E0F28:
+ ldr r0, _080E0F74 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_807685C
+ adds r0, 0x1
+_080E0F32:
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ movs r3, 0x38
+ ldrsh r2, [r4, r3]
+ cmp r2, 0
+ bne _080E0F78
+ movs r1, 0x80
+ lsls r1, 3
+ adds r0, r1, 0
+ ldrh r3, [r4, 0x32]
+ adds r0, r3
+ strh r0, [r4, 0x32]
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1, 0
+ ldrh r3, [r4, 0x34]
+ adds r0, r3
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x1
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x2E
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ bne _080E0FA8
+ strh r2, [r4, 0x36]
+ movs r0, 0x1
+ strh r0, [r4, 0x38]
+ b _080E0FA8
+ .align 2, 0
+_080E0F74: .4byte gBattleAnimAttacker
+_080E0F78:
+ cmp r2, 0x1
+ bne _080E0FA8
+ ldr r1, _080E0FB0 @ =0xfffffc00
+ adds r0, r1, 0
+ ldrh r2, [r4, 0x32]
+ adds r0, r2
+ strh r0, [r4, 0x32]
+ ldr r3, _080E0FB4 @ =0xffffff00
+ adds r0, r3, 0
+ ldrh r1, [r4, 0x34]
+ adds r0, r1
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x1
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ bne _080E0FA8
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E0FA8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0FB0: .4byte 0xfffffc00
+_080E0FB4: .4byte 0xffffff00
+ thumb_func_end sub_80E0EDC
+
+ thumb_func_start sub_80E0FB8
+sub_80E0FB8: @ 80E0FB8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x20
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x18]
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ ldr r0, _080E1040 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E107C
+ movs r0, 0
+ str r0, [sp, 0x1C]
+ ldr r6, _080E1044 @ =gBattlerPartyIndexes
+ ldr r4, _080E1048 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ movs r5, 0x64
+ muls r0, r5
+ ldr r7, _080E104C @ =gPlayerParty
+ adds r0, r7
+ movs r1, 0
+ bl GetMonData
+ mov r10, r0
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ adds r0, r7
+ movs r1, 0x1
+ bl GetMonData
+ mov r9, r0
+ ldr r0, _080E1050 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldrb r2, [r4]
+ ldr r1, [r0]
+ lsls r0, r2, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _080E1074
+ adds r0, r2, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E1054
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ adds r0, r7
+ b _080E1062
+ .align 2, 0
+_080E1040: .4byte gBattleAnimAttacker
+_080E1044: .4byte gBattlerPartyIndexes
+_080E1048: .4byte gBattleAnimTarget
+_080E104C: .4byte gPlayerParty
+_080E1050: .4byte gUnknown_2024018
+_080E1054:
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ ldr r1, _080E1070 @ =gEnemyParty
+ adds r0, r1
+_080E1062:
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r6, r0, 16
+ b _080E1076
+ .align 2, 0
+_080E1070: .4byte gEnemyParty
+_080E1074:
+ ldrh r6, [r1, 0x2]
+_080E1076:
+ movs r1, 0x14
+ mov r8, r1
+ b _080E1112
+_080E107C:
+ movs r2, 0x1
+ str r2, [sp, 0x1C]
+ ldr r6, _080E10E0 @ =gBattlerPartyIndexes
+ ldr r4, _080E10E4 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ movs r5, 0x64
+ muls r0, r5
+ ldr r7, _080E10E8 @ =gEnemyParty
+ adds r0, r7
+ movs r1, 0
+ bl GetMonData
+ mov r10, r0
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ adds r0, r7
+ movs r1, 0x1
+ bl GetMonData
+ mov r9, r0
+ ldr r0, _080E10EC @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldrb r2, [r4]
+ ldr r1, [r0]
+ lsls r0, r2, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _080E110C
+ adds r0, r2, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E10F4
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ ldr r1, _080E10F0 @ =gPlayerParty
+ adds r0, r1
+ b _080E1100
+ .align 2, 0
+_080E10E0: .4byte gBattlerPartyIndexes
+_080E10E4: .4byte gBattleAnimTarget
+_080E10E8: .4byte gEnemyParty
+_080E10EC: .4byte gUnknown_2024018
+_080E10F0: .4byte gPlayerParty
+_080E10F4:
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ adds r0, r7
+_080E1100:
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r6, r0, 16
+ b _080E110E
+_080E110C:
+ ldrh r6, [r1, 0x2]
+_080E110E:
+ ldr r3, _080E11FC @ =0x0000ffec
+ mov r8, r3
+_080E1112:
+ ldr r0, _080E1200 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r5, _080E1200 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8074480
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ mov r2, r8
+ lsls r1, r2, 16
+ asrs r1, 16
+ adds r4, r1
+ lsls r4, 16
+ asrs r4, 16
+ lsrs r0, 24
+ str r0, [sp]
+ movs r0, 0x5
+ str r0, [sp, 0x4]
+ mov r3, r10
+ str r3, [sp, 0x8]
+ mov r0, r9
+ str r0, [sp, 0xC]
+ ldr r0, _080E1204 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ str r0, [sp, 0x10]
+ movs r0, 0x1
+ str r0, [sp, 0x14]
+ adds r0, r6, 0
+ ldr r1, [sp, 0x1C]
+ movs r2, 0
+ adds r3, r4, 0
+ bl sub_80768D0
+ adds r6, r0, 0
+ lsls r6, 24
+ lsrs r6, 24
+ ldr r0, _080E1208 @ =gSprites
+ lsls r5, r6, 4
+ adds r5, r6
+ lsls r5, 2
+ adds r5, r0
+ movs r0, 0x3
+ ands r7, r0
+ lsls r7, 2
+ mov r8, r7
+ ldrb r0, [r5, 0x5]
+ movs r4, 0xD
+ negs r4, r4
+ adds r1, r4, 0
+ ands r1, r0
+ mov r2, r8
+ orrs r1, r2
+ strb r1, [r5, 0x5]
+ ldrb r2, [r5, 0x1]
+ adds r0, r4, 0
+ ands r0, r2
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r5, 0x1]
+ ldr r0, _080E120C @ =0x00007fff
+ lsrs r1, 4
+ lsls r1, 4
+ movs r3, 0x80
+ lsls r3, 1
+ adds r2, r3, 0
+ orrs r1, r2
+ movs r2, 0x20
+ bl FillPalette
+ ldrb r0, [r5, 0x5]
+ ands r4, r0
+ mov r0, r8
+ orrs r4, r0
+ strb r4, [r5, 0x5]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r0, _080E1210 @ =gTasks
+ ldr r1, [sp, 0x18]
+ lsls r4, r1, 2
+ adds r4, r1
+ lsls r4, 3
+ adds r4, r0
+ ldrh r0, [r4, 0xA]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ strh r6, [r4, 0x8]
+ ldr r0, _080E1214 @ =sub_80E1218
+ str r0, [r4]
+ add sp, 0x20
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E11FC: .4byte 0x0000ffec
+_080E1200: .4byte gBattleAnimAttacker
+_080E1204: .4byte gBattleAnimTarget
+_080E1208: .4byte gSprites
+_080E120C: .4byte 0x00007fff
+_080E1210: .4byte gTasks
+_080E1214: .4byte sub_80E1218
+ thumb_func_end sub_80E0FB8
+
+ thumb_func_start sub_80E1218
+sub_80E1218: @ 80E1218
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080E126C @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r4, r1, r2
+ ldrh r0, [r4, 0x1C]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E1266
+ movs r0, 0
+ strh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0xA]
+ adds r1, 0x1
+ strh r1, [r4, 0xA]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xA
+ bne _080E1266
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r4, 0x1C]
+ strh r0, [r4, 0x1E]
+ ldr r0, _080E1270 @ =sub_80E1274
+ str r0, [r4]
+_080E1266:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E126C: .4byte gTasks
+_080E1270: .4byte sub_80E1274
+ thumb_func_end sub_80E1218
+
+ thumb_func_start sub_80E1274
+sub_80E1274: @ 80E1274
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080E12EC @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r5, r1, r2
+ ldrb r2, [r5, 0x8]
+ ldrh r0, [r5, 0x1C]
+ subs r0, 0x10
+ movs r4, 0
+ strh r0, [r5, 0x1C]
+ ldrh r0, [r5, 0x1E]
+ adds r0, 0x80
+ strh r0, [r5, 0x1E]
+ ldr r1, _080E12F0 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r6, r0, r1
+ ldrb r2, [r6, 0x1]
+ lsls r1, r2, 30
+ lsrs r1, 30
+ movs r0, 0x2
+ orrs r1, r0
+ subs r0, 0x6
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r6, 0x1]
+ movs r0, 0x1C
+ ldrsh r2, [r5, r0]
+ movs r0, 0x1E
+ ldrsh r3, [r5, r0]
+ str r4, [sp]
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl sub_8075A1C
+ ldrh r0, [r5, 0x20]
+ adds r0, 0x1
+ strh r0, [r5, 0x20]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ bne _080E12E2
+ adds r0, r6, 0
+ bl sub_8075AD8
+ adds r0, r6, 0
+ bl sub_8076B20
+ ldr r0, _080E12F4 @ =sub_8074FA8
+ str r0, [r5]
+_080E12E2:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E12EC: .4byte gTasks
+_080E12F0: .4byte gSprites
+_080E12F4: .4byte sub_8074FA8
+ thumb_func_end sub_80E1274
+
+ thumb_func_start sub_80E12F8
+sub_80E12F8: @ 80E12F8
+ push {r4-r7,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080E1318 @ =gTasks
+ adds r4, r1, r0
+ ldr r0, _080E131C @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080E1324
+ ldr r0, _080E1320 @ =gBattleAnimAttacker
+ b _080E1326
+ .align 2, 0
+_080E1318: .4byte gTasks
+_080E131C: .4byte gBattleAnimArgs
+_080E1320: .4byte gBattleAnimAttacker
+_080E1324:
+ ldr r0, _080E13A4 @ =gBattleAnimTarget
+_080E1326:
+ ldrb r5, [r0]
+ movs r6, 0
+ strh r6, [r4, 0x8]
+ strh r6, [r4, 0xA]
+ strh r6, [r4, 0xC]
+ movs r0, 0x10
+ strh r0, [r4, 0xE]
+ strh r6, [r4, 0x10]
+ strh r5, [r4, 0x12]
+ movs r0, 0x20
+ strh r0, [r4, 0x14]
+ strh r6, [r4, 0x16]
+ movs r0, 0x18
+ strh r0, [r4, 0x18]
+ adds r0, r5, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E1358
+ movs r1, 0x18
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ strh r0, [r4, 0x18]
+_080E1358:
+ adds r0, r5, 0
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x22
+ strh r0, [r4, 0x22]
+ cmp r0, 0
+ bge _080E136C
+ strh r6, [r4, 0x22]
+_080E136C:
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x42
+ strh r0, [r4, 0x24]
+ ldr r0, _080E13A8 @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ adds r0, r5, 0
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E13BC
+ ldr r0, _080E13AC @ =0x04000014
+ str r0, [sp]
+ ldr r1, _080E13B0 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r0, _080E13B4 @ =gBattle_BG1_X
+ ldrh r5, [r0]
+ ldr r0, _080E13B8 @ =gBattle_BG1_Y
+ b _080E13CE
+ .align 2, 0
+_080E13A4: .4byte gBattleAnimTarget
+_080E13A8: .4byte gBattleAnimArgs
+_080E13AC: .4byte 0x04000014
+_080E13B0: .4byte 0x00003f42
+_080E13B4: .4byte gBattle_BG1_X
+_080E13B8: .4byte gBattle_BG1_Y
+_080E13BC:
+ ldr r0, _080E1434 @ =0x04000018
+ str r0, [sp]
+ ldr r1, _080E1438 @ =0x00003f44
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r0, _080E143C @ =gBattle_BG2_X
+ ldrh r5, [r0]
+ ldr r0, _080E1440 @ =gBattle_BG2_Y
+_080E13CE:
+ ldrh r3, [r0]
+ movs r7, 0
+ movs r2, 0
+ ldr r6, _080E1444 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r0, r6
+ mov r12, r0
+_080E13DE:
+ lsls r2, 16
+ asrs r2, 16
+ lsls r1, r2, 1
+ adds r0, r1, r6
+ strh r5, [r0]
+ add r1, r12
+ strh r5, [r1]
+ adds r0, r2, 0x1
+ lsls r0, 1
+ adds r1, r0, r6
+ strh r3, [r1]
+ add r0, r12
+ strh r3, [r0]
+ lsls r0, r7, 16
+ movs r1, 0x80
+ lsls r1, 9
+ adds r0, r1
+ adds r2, 0x2
+ lsls r2, 16
+ lsrs r2, 16
+ lsrs r7, r0, 16
+ asrs r0, 16
+ cmp r0, 0x9F
+ ble _080E13DE
+ ldr r0, _080E1448 @ =0xa6600001
+ str r0, [sp, 0x4]
+ mov r1, sp
+ movs r2, 0
+ movs r0, 0x1
+ strb r0, [r1, 0x8]
+ mov r0, sp
+ strb r2, [r0, 0x9]
+ ldr r0, [sp]
+ ldr r1, [sp, 0x4]
+ ldr r2, [sp, 0x8]
+ bl ScanlineEffect_SetParams
+ ldr r0, _080E144C @ =sub_80E1450
+ str r0, [r4]
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1434: .4byte 0x04000018
+_080E1438: .4byte 0x00003f44
+_080E143C: .4byte gBattle_BG2_X
+_080E1440: .4byte gBattle_BG2_Y
+_080E1444: .4byte gScanlineEffectRegBuffers
+_080E1448: .4byte 0xa6600001
+_080E144C: .4byte sub_80E1450
+ thumb_func_end sub_80E12F8
+
+ thumb_func_start sub_80E1450
+sub_80E1450: @ 80E1450
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080E1484 @ =gTasks
+ adds r6, r0, r1
+ ldrb r0, [r6, 0x12]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E1490
+ ldr r0, _080E1488 @ =gBattle_BG1_X
+ ldrh r0, [r0]
+ str r0, [sp, 0x4]
+ ldr r0, _080E148C @ =gBattle_BG1_Y
+ b _080E1498
+ .align 2, 0
+_080E1484: .4byte gTasks
+_080E1488: .4byte gBattle_BG1_X
+_080E148C: .4byte gBattle_BG1_Y
+_080E1490:
+ ldr r0, _080E14B0 @ =gBattle_BG2_X
+ ldrh r0, [r0]
+ str r0, [sp, 0x4]
+ ldr r0, _080E14B4 @ =gBattle_BG2_Y
+_080E1498:
+ ldrh r0, [r0]
+ str r0, [sp, 0x8]
+ movs r1, 0x8
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x1
+ bne _080E14A6
+ b _080E1684
+_080E14A6:
+ cmp r0, 0x1
+ bgt _080E14B8
+ cmp r0, 0
+ beq _080E14C6
+ b _080E16F4
+ .align 2, 0
+_080E14B0: .4byte gBattle_BG2_X
+_080E14B4: .4byte gBattle_BG2_Y
+_080E14B8:
+ cmp r0, 0x2
+ bne _080E14BE
+ b _080E16A4
+_080E14BE:
+ cmp r0, 0x3
+ bne _080E14C4
+ b _080E16EE
+_080E14C4:
+ b _080E16F4
+_080E14C6:
+ movs r2, 0x24
+ ldrsh r0, [r6, r2]
+ lsls r0, 17
+ lsrs r5, r0, 16
+ movs r3, 0
+ str r3, [sp]
+ mov r9, r3
+ movs r4, 0
+ ldrh r0, [r6, 0xA]
+ adds r0, 0x2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r6, 0xA]
+ ldrh r7, [r6, 0xA]
+ mov r8, r7
+ movs r0, 0x14
+ ldrsh r1, [r6, r0]
+ movs r0, 0xFC
+ lsls r0, 3
+ bl __divsi3
+ strh r0, [r6, 0x1A]
+ movs r1, 0x16
+ ldrsh r0, [r6, r1]
+ lsls r0, 1
+ movs r2, 0x1A
+ ldrsh r1, [r6, r2]
+ bl __divsi3
+ negs r0, r0
+ strh r0, [r6, 0x1C]
+ ldrh r0, [r6, 0x16]
+ strh r0, [r6, 0x1E]
+ lsls r0, 16
+ asrs r0, 21
+ lsls r0, 16
+ lsrs r7, r0, 16
+ strh r7, [r6, 0x20]
+ ldrh r2, [r6, 0x24]
+ lsls r3, r2, 16
+ mov r12, r3
+ asrs r1, r3, 16
+ movs r3, 0x22
+ ldrsh r0, [r6, r3]
+ cmp r1, r0
+ ble _080E15E6
+ ldr r0, _080E163C @ =gScanlineEffect
+ mov r10, r0
+ ldr r1, [sp, 0x4]
+ lsls r0, r1, 16
+ asrs r0, 16
+ str r0, [sp, 0x10]
+ ldr r2, [sp, 0x8]
+ lsls r0, r2, 16
+ asrs r0, 16
+ str r0, [sp, 0xC]
+_080E1536:
+ lsls r5, 16
+ asrs r5, 16
+ adds r2, r5, 0x1
+ lsls r2, 1
+ mov r3, r10
+ ldrb r1, [r3, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ ldr r0, _080E1640 @ =gScanlineEffectRegBuffers
+ adds r2, r0
+ lsls r4, 16
+ asrs r4, 16
+ mov r1, r9
+ lsls r0, r1, 16
+ asrs r0, 16
+ subs r0, r4, r0
+ ldr r3, [sp, 0xC]
+ adds r0, r3, r0
+ strh r0, [r2]
+ lsls r3, r5, 1
+ mov r0, r10
+ ldrb r1, [r0, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r3, r0
+ ldr r1, _080E1640 @ =gScanlineEffectRegBuffers
+ adds r3, r1
+ lsls r1, r7, 16
+ asrs r1, 16
+ ldr r2, [sp, 0x10]
+ adds r1, r2, r1
+ mov r7, r8
+ lsls r2, r7, 16
+ asrs r2, 16
+ lsls r0, r2, 1
+ ldr r7, _080E1644 @ =gSineTable
+ adds r0, r7
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 21
+ adds r1, r0
+ strh r1, [r3]
+ adds r2, 0xA
+ mov r8, r2
+ movs r0, 0xFF
+ mov r1, r8
+ ands r1, r0
+ mov r8, r1
+ ldrh r0, [r6, 0x1C]
+ ldrh r2, [r6, 0x1E]
+ adds r0, r2
+ strh r0, [r6, 0x1E]
+ lsls r0, 16
+ asrs r0, 21
+ lsls r0, 16
+ lsrs r7, r0, 16
+ strh r7, [r6, 0x20]
+ adds r4, 0x1
+ lsls r4, 16
+ lsrs r4, 16
+ subs r5, 0x2
+ lsls r5, 16
+ lsrs r5, 16
+ ldr r3, [sp]
+ lsls r0, r3, 16
+ asrs r0, 16
+ ldrh r1, [r6, 0x14]
+ adds r0, r1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ str r2, [sp]
+ asrs r0, 21
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ ldr r0, _080E1648 @ =0xffff0000
+ add r0, r12
+ lsrs r2, r0, 16
+ lsls r3, r2, 16
+ mov r12, r3
+ asrs r1, r3, 16
+ movs r3, 0x22
+ ldrsh r0, [r6, r3]
+ cmp r1, r0
+ bgt _080E1536
+_080E15E6:
+ lsls r1, r2, 17
+ cmp r1, 0
+ blt _080E1612
+ ldr r4, _080E1640 @ =gScanlineEffectRegBuffers
+ ldr r7, [sp, 0x4]
+ lsls r0, r7, 16
+ asrs r0, 16
+ adds r3, r0, 0
+ adds r3, 0xF0
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r5, r4, r0
+_080E15FE:
+ asrs r2, r1, 16
+ lsls r1, r2, 1
+ adds r0, r1, r4
+ strh r3, [r0]
+ adds r1, r5
+ strh r3, [r1]
+ subs r2, 0x2
+ lsls r1, r2, 16
+ cmp r1, 0
+ bge _080E15FE
+_080E1612:
+ ldrh r0, [r6, 0x14]
+ adds r0, 0x1
+ strh r0, [r6, 0x14]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3F
+ ble _080E167A
+ movs r0, 0x40
+ strh r0, [r6, 0x14]
+ ldrh r0, [r6, 0xC]
+ adds r0, 0x1
+ strh r0, [r6, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080E164C
+ ldrh r0, [r6, 0xE]
+ subs r0, 0x1
+ strh r0, [r6, 0xE]
+ b _080E1652
+ .align 2, 0
+_080E163C: .4byte gScanlineEffect
+_080E1640: .4byte gScanlineEffectRegBuffers
+_080E1644: .4byte gSineTable
+_080E1648: .4byte 0xffff0000
+_080E164C:
+ ldrh r0, [r6, 0x10]
+ adds r0, 0x1
+ strh r0, [r6, 0x10]
+_080E1652:
+ ldrh r1, [r6, 0x10]
+ lsls r1, 8
+ ldrh r0, [r6, 0xE]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0xE
+ ldrsh r1, [r6, r2]
+ cmp r1, 0
+ bne _080E16F4
+ movs r3, 0x10
+ ldrsh r0, [r6, r3]
+ cmp r0, 0x10
+ bne _080E16F4
+ strh r1, [r6, 0xC]
+ strh r1, [r6, 0xE]
+ b _080E16E6
+_080E167A:
+ ldrh r0, [r6, 0x18]
+ ldrh r7, [r6, 0x16]
+ adds r0, r7
+ strh r0, [r6, 0x16]
+ b _080E16F4
+_080E1684:
+ ldrh r0, [r6, 0xC]
+ adds r0, 0x1
+ strh r0, [r6, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _080E16F4
+ ldr r1, _080E16A0 @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+ movs r0, 0
+ strh r0, [r6, 0xC]
+ b _080E16E6
+ .align 2, 0
+_080E16A0: .4byte gScanlineEffect
+_080E16A4:
+ ldrh r0, [r6, 0xC]
+ adds r0, 0x1
+ strh r0, [r6, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080E16BA
+ ldrh r0, [r6, 0xE]
+ adds r0, 0x1
+ strh r0, [r6, 0xE]
+ b _080E16C0
+_080E16BA:
+ ldrh r0, [r6, 0x10]
+ subs r0, 0x1
+ strh r0, [r6, 0x10]
+_080E16C0:
+ ldrh r1, [r6, 0x10]
+ lsls r1, 8
+ ldrh r0, [r6, 0xE]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xE
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x10
+ bne _080E16F4
+ movs r2, 0x10
+ ldrsh r0, [r6, r2]
+ cmp r0, 0
+ bne _080E16F4
+ strh r0, [r6, 0xC]
+ strh r0, [r6, 0xE]
+_080E16E6:
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ strh r0, [r6, 0x8]
+ b _080E16F4
+_080E16EE:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080E16F4:
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E1450
+
+ thumb_func_start sub_80E1704
+sub_80E1704: @ 80E1704
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080E173C @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldr r0, _080E1740 @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r4, 0x26]
+ ldr r2, _080E1744 @ =gUnknown_83FF3D0
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080E1748 @ =sub_80E174C
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E173C: .4byte gTasks
+_080E1740: .4byte gBattleAnimArgs
+_080E1744: .4byte gUnknown_83FF3D0
+_080E1748: .4byte sub_80E174C
+ thumb_func_end sub_80E1704
+
+ thumb_func_start sub_80E174C
+sub_80E174C: @ 80E174C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r2, _080E17A4 @ =gTasks
+ adds r3, r0, r2
+ ldrh r0, [r3, 0x8]
+ adds r1, r0, 0x1
+ movs r5, 0
+ strh r1, [r3, 0x8]
+ subs r0, 0x14
+ lsls r0, 16
+ lsrs r0, 16
+ adds r6, r2, 0
+ cmp r0, 0x16
+ bhi _080E17B0
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E17C0
+ strh r5, [r3, 0xA]
+ ldrh r0, [r3, 0xC]
+ adds r0, 0x1
+ strh r0, [r3, 0xC]
+ movs r5, 0x1
+ ands r0, r5
+ cmp r0, 0
+ bne _080E17B0
+ ldr r2, _080E17A8 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, _080E17AC @ =0x0000ffff
+ strh r1, [r0, 0x24]
+ b _080E17C0
+ .align 2, 0
+_080E17A4: .4byte gTasks
+_080E17A8: .4byte gSprites
+_080E17AC: .4byte 0x0000ffff
+_080E17B0:
+ ldr r2, _080E17E0 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r5, [r0, 0x24]
+_080E17C0:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r6
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E17D8
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080E17D8:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E17E0: .4byte gSprites
+ thumb_func_end sub_80E174C
+
+ thumb_func_start sub_80E17E4
+sub_80E17E4: @ 80E17E4
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ mov r8, r0
+ adds r5, r2, 0
+ adds r0, r3, 0
+ ldr r4, [sp, 0x14]
+ ldr r6, [sp, 0x18]
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r5, 16
+ lsrs r5, 16
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r6, 16
+ lsrs r6, 16
+ mov r2, r8
+ strh r1, [r2, 0x20]
+ strh r5, [r2, 0x22]
+ lsls r1, 16
+ asrs r1, 16
+ lsls r2, r1, 4
+ mov r3, r8
+ strh r2, [r3, 0x36]
+ lsls r5, 16
+ asrs r5, 16
+ lsls r2, r5, 4
+ strh r2, [r3, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ subs r0, r1
+ lsls r0, 4
+ adds r1, r6, 0
+ bl __divsi3
+ mov r1, r8
+ strh r0, [r1, 0x3A]
+ lsls r4, 16
+ asrs r4, 16
+ subs r4, r5
+ lsls r4, 4
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl __divsi3
+ mov r2, r8
+ strh r0, [r2, 0x3C]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E17E4
+
+ thumb_func_start sub_80E184C
+sub_80E184C: @ 80E184C
+ ldrh r1, [r0, 0x3A]
+ ldrh r2, [r0, 0x36]
+ adds r1, r2
+ strh r1, [r0, 0x36]
+ ldrh r2, [r0, 0x3C]
+ ldrh r3, [r0, 0x38]
+ adds r2, r3
+ strh r2, [r0, 0x38]
+ lsls r1, 16
+ asrs r1, 20
+ strh r1, [r0, 0x20]
+ lsls r2, 16
+ asrs r2, 20
+ strh r2, [r0, 0x22]
+ bx lr
+ thumb_func_end sub_80E184C
+
+ thumb_func_start sub_80E186C
+sub_80E186C: @ 80E186C
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ ldrh r6, [r4, 0x20]
+ ldrh r5, [r4, 0x22]
+ bl sub_8074FCC
+ ldr r0, _080E18B4 @ =gBattleAnimArgs
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl StartSpriteAffineAnim
+ movs r0, 0x20
+ ldrsh r1, [r4, r0]
+ movs r0, 0x22
+ ldrsh r2, [r4, r0]
+ lsls r6, 16
+ asrs r6, 16
+ lsls r5, 16
+ asrs r5, 16
+ str r5, [sp]
+ movs r0, 0x40
+ str r0, [sp, 0x4]
+ adds r0, r4, 0
+ adds r3, r6, 0
+ bl sub_80E17E4
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldr r0, _080E18B8 @ =sub_80E18BC
+ str r0, [r4, 0x1C]
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E18B4: .4byte gBattleAnimArgs
+_080E18B8: .4byte sub_80E18BC
+ thumb_func_end sub_80E186C
+
+ thumb_func_start sub_80E18BC
+sub_80E18BC: @ 80E18BC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ movs r0, 0x2E
+ ldrsh r4, [r5, r0]
+ lsls r4, 3
+ movs r0, 0xFF
+ ands r4, r0
+ adds r0, r5, 0
+ bl sub_80E184C
+ adds r0, r4, 0
+ movs r1, 0x8
+ bl Sin
+ strh r0, [r5, 0x26]
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x3A
+ ble _080E1922
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x1
+ strh r0, [r5, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E1922
+ movs r0, 0
+ strh r0, [r5, 0x30]
+ ldrh r1, [r5, 0x32]
+ adds r1, 0x1
+ strh r1, [r5, 0x32]
+ movs r0, 0x1
+ ands r1, r0
+ adds r3, r5, 0
+ adds r3, 0x3E
+ lsls r1, 2
+ ldrb r2, [r3]
+ subs r0, 0x6
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r1, 0x32
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x3
+ ble _080E1922
+ adds r0, r5, 0
+ bl move_anim_8074EE0
+_080E1922:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E18BC
+
+ thumb_func_start sub_80E1928
+sub_80E1928: @ 80E1928
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080E1980 @ =gBattleAnimArgs
+ ldrh r0, [r6, 0x6]
+ strh r0, [r5, 0x2E]
+ ldrb r1, [r6]
+ adds r0, r5, 0
+ bl StartSpriteAffineAnim
+ ldr r0, _080E1984 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E194E
+ ldrh r0, [r6, 0x2]
+ negs r0, r0
+ strh r0, [r6, 0x2]
+_080E194E:
+ ldr r4, _080E1988 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x2]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x4]
+ adds r0, r6
+ strh r0, [r5, 0x22]
+ ldr r0, _080E198C @ =sub_80B1D3C
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1980: .4byte gBattleAnimArgs
+_080E1984: .4byte gBattleAnimTarget
+_080E1988: .4byte gBattleAnimAttacker
+_080E198C: .4byte sub_80B1D3C
+ thumb_func_end sub_80E1928
+
+ thumb_func_start sub_80E1990
+sub_80E1990: @ 80E1990
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r7, 0
+ ldr r2, _080E19E0 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r3, r0, r2
+ ldrh r0, [r3, 0x8]
+ subs r0, 0x1
+ strh r0, [r3, 0x8]
+ movs r1, 0x14
+ ldrsh r0, [r3, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ mov r8, r2
+ cmp r0, 0
+ beq _080E1A12
+ ldrh r0, [r3, 0xA]
+ subs r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080E1A12
+ movs r2, 0x1A
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ bne _080E19E4
+ ldrh r0, [r3, 0x10]
+ strh r0, [r3, 0x1A]
+ negs r0, r0
+ strh r0, [r3, 0x10]
+ b _080E19E6
+ .align 2, 0
+_080E19E0: .4byte gTasks
+_080E19E4:
+ strh r7, [r3, 0x1A]
+_080E19E6:
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ mov r2, r8
+ adds r1, r0, r2
+ movs r2, 0x1C
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080E1A02
+ ldrh r0, [r1, 0x12]
+ strh r0, [r1, 0x1C]
+ negs r0, r0
+ strh r0, [r1, 0x12]
+ b _080E1A06
+_080E1A02:
+ movs r0, 0
+ strh r0, [r1, 0x1C]
+_080E1A06:
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ add r0, r8
+ ldrh r1, [r0, 0x22]
+ strh r1, [r0, 0xA]
+_080E1A12:
+ lsls r2, r5, 2
+ adds r0, r2, r5
+ lsls r0, 3
+ mov r1, r8
+ adds r4, r0, r1
+ ldrh r6, [r4, 0x16]
+ ldrh r7, [r4, 0x18]
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ mov r12, r2
+ cmp r0, 0
+ beq _080E1A50
+ ldr r3, _080E1A4C @ =gSprites
+ movs r2, 0x26
+ ldrsh r0, [r4, r2]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ lsrs r2, r6, 8
+ ldrh r0, [r4, 0x1A]
+ subs r0, r2
+ strh r0, [r1, 0x24]
+ adds r2, r3, 0
+ b _080E1A66
+ .align 2, 0
+_080E1A4C: .4byte gSprites
+_080E1A50:
+ ldr r2, _080E1A94 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ lsrs r1, r6, 8
+ ldrh r4, [r4, 0x1A]
+ adds r1, r4
+ strh r1, [r0, 0x24]
+_080E1A66:
+ mov r1, r12
+ adds r0, r1, r5
+ lsls r0, 3
+ mov r1, r8
+ adds r4, r0, r1
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080E1A98
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ lsrs r2, r7, 8
+ ldrh r0, [r4, 0x1C]
+ subs r0, r2
+ b _080E1AAA
+ .align 2, 0
+_080E1A94: .4byte gSprites
+_080E1A98:
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ lsrs r0, r7, 8
+ ldrh r4, [r4, 0x1C]
+ adds r0, r4
+_080E1AAA:
+ strh r0, [r1, 0x26]
+ mov r2, r12
+ adds r0, r2, r5
+ lsls r0, 3
+ add r0, r8
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bgt _080E1ACA
+ adds r0, r5, 0
+ bl DestroyTask
+ ldr r1, _080E1AD4 @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+_080E1ACA:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1AD4: .4byte gUnknown_2037EE2
+ thumb_func_end sub_80E1990
+
+ thumb_func_start sub_80E1AD8
+sub_80E1AD8: @ 80E1AD8
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r7, 0
+ ldr r2, _080E1B2C @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r3, r0, r2
+ ldrh r0, [r3, 0x8]
+ subs r0, 0x1
+ strh r0, [r3, 0x8]
+ movs r1, 0x14
+ ldrsh r0, [r3, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ mov r8, r2
+ cmp r0, 0
+ beq _080E1B5E
+ ldrh r0, [r3, 0xA]
+ subs r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080E1B5E
+ movs r2, 0x1A
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ bne _080E1B30
+ ldrh r0, [r3, 0x10]
+ strh r0, [r3, 0x1A]
+ negs r0, r0
+ strh r0, [r3, 0x10]
+ b _080E1B32
+ .align 2, 0
+_080E1B2C: .4byte gTasks
+_080E1B30:
+ strh r7, [r3, 0x1A]
+_080E1B32:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ mov r2, r8
+ adds r1, r0, r2
+ movs r2, 0x1C
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080E1B4E
+ ldrh r0, [r1, 0x12]
+ strh r0, [r1, 0x1C]
+ negs r0, r0
+ strh r0, [r1, 0x12]
+ b _080E1B52
+_080E1B4E:
+ movs r0, 0
+ strh r0, [r1, 0x1C]
+_080E1B52:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ add r0, r8
+ ldrh r1, [r0, 0x22]
+ strh r1, [r0, 0xA]
+_080E1B5E:
+ lsls r3, r6, 2
+ adds r0, r3, r6
+ lsls r0, 3
+ mov r1, r8
+ adds r4, r0, r1
+ ldrh r2, [r4, 0xC]
+ ldr r1, _080E1BB0 @ =0x00007fff
+ adds r0, r1, 0
+ ands r0, r2
+ ldrh r2, [r4, 0x16]
+ adds r0, r2
+ lsls r5, r0, 16
+ lsrs r0, r5, 16
+ mov r9, r0
+ ldrh r0, [r4, 0xE]
+ ands r1, r0
+ ldrh r2, [r4, 0x18]
+ adds r1, r2
+ lsls r1, 16
+ lsrs r7, r1, 16
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ mov r12, r3
+ cmp r0, 0
+ beq _080E1BB8
+ ldr r3, _080E1BB4 @ =gSprites
+ movs r2, 0x26
+ ldrsh r0, [r4, r2]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ lsrs r2, r5, 24
+ ldrh r0, [r4, 0x1A]
+ subs r0, r2
+ strh r0, [r1, 0x24]
+ adds r2, r3, 0
+ b _080E1BCE
+ .align 2, 0
+_080E1BB0: .4byte 0x00007fff
+_080E1BB4: .4byte gSprites
+_080E1BB8:
+ ldr r2, _080E1BFC @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ lsrs r1, r5, 24
+ ldrh r4, [r4, 0x1A]
+ adds r1, r4
+ strh r1, [r0, 0x24]
+_080E1BCE:
+ mov r1, r12
+ adds r0, r1, r6
+ lsls r0, 3
+ mov r1, r8
+ adds r4, r0, r1
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080E1C00
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ lsrs r2, r7, 8
+ ldrh r0, [r4, 0x1C]
+ subs r0, r2
+ b _080E1C12
+ .align 2, 0
+_080E1BFC: .4byte gSprites
+_080E1C00:
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ lsrs r0, r7, 8
+ ldrh r4, [r4, 0x1C]
+ adds r0, r4
+_080E1C12:
+ strh r0, [r1, 0x26]
+ mov r2, r12
+ adds r0, r2, r6
+ lsls r0, 3
+ mov r1, r8
+ adds r2, r0, r1
+ mov r0, r9
+ strh r0, [r2, 0x16]
+ strh r7, [r2, 0x18]
+ movs r1, 0x8
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bgt _080E1C38
+ movs r0, 0x1E
+ strh r0, [r2, 0x8]
+ movs r0, 0
+ strh r0, [r2, 0x22]
+ ldr r0, _080E1C44 @ =sub_80E1990
+ str r0, [r2]
+_080E1C38:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1C44: .4byte sub_80E1990
+ thumb_func_end sub_80E1AD8
+
+ thumb_func_start sub_80E1C48
+sub_80E1C48: @ 80E1C48
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, _080E1CA8 @ =gTasks
+ mov r8, r0
+ lsls r7, r6, 2
+ adds r0, r7, r6
+ lsls r0, 3
+ mov r1, r8
+ adds r4, r0, r1
+ ldr r1, _080E1CAC @ =gBattlerSpriteIds
+ ldr r2, _080E1CB0 @ =gBattleAnimAttacker
+ ldrb r0, [r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r4, 0x26]
+ ldr r5, _080E1CB4 @ =gBattleAnimArgs
+ ldrh r0, [r5]
+ strh r0, [r4, 0x24]
+ ldrh r0, [r5]
+ strh r0, [r4, 0x8]
+ ldrh r0, [r5, 0xC]
+ strh r0, [r4, 0x22]
+ movs r3, 0x6
+ ldrsh r0, [r5, r3]
+ cmp r0, 0
+ beq _080E1C8C
+ ldrh r0, [r4, 0x14]
+ ldr r3, _080E1CB8 @ =0xffff8000
+ adds r1, r3, 0
+ orrs r0, r1
+ strh r0, [r4, 0x14]
+_080E1C8C:
+ ldrb r0, [r2]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E1CBC
+ ldrh r0, [r5, 0x2]
+ strh r0, [r4, 0xC]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0xE]
+ mov r3, r8
+ adds r4, r7, 0
+ b _080E1D2C
+ .align 2, 0
+_080E1CA8: .4byte gTasks
+_080E1CAC: .4byte gBattlerSpriteIds
+_080E1CB0: .4byte gBattleAnimAttacker
+_080E1CB4: .4byte gBattleAnimArgs
+_080E1CB8: .4byte 0xffff8000
+_080E1CBC:
+ movs r7, 0x2
+ ldrsh r0, [r5, r7]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080E1CD8
+ ldrh r1, [r5, 0x2]
+ ldr r0, _080E1CD4 @ =0x00007fff
+ ands r0, r1
+ b _080E1CE0
+ .align 2, 0
+_080E1CD4: .4byte 0x00007fff
+_080E1CD8:
+ ldrh r0, [r5, 0x2]
+ ldr r2, _080E1D08 @ =0xffff8000
+ adds r1, r2, 0
+ orrs r0, r1
+_080E1CE0:
+ strh r0, [r4, 0xC]
+ ldr r0, _080E1D0C @ =gBattleAnimArgs
+ movs r3, 0x4
+ ldrsh r1, [r0, r3]
+ movs r2, 0x80
+ lsls r2, 8
+ ands r1, r2
+ adds r5, r0, 0
+ cmp r1, 0
+ beq _080E1D18
+ ldr r3, _080E1D10 @ =gTasks
+ lsls r4, r6, 2
+ adds r1, r4, r6
+ lsls r1, 3
+ adds r1, r3
+ ldrh r2, [r5, 0x4]
+ ldr r0, _080E1D14 @ =0x00007fff
+ ands r0, r2
+ b _080E1D2A
+ .align 2, 0
+_080E1D08: .4byte 0xffff8000
+_080E1D0C: .4byte gBattleAnimArgs
+_080E1D10: .4byte gTasks
+_080E1D14: .4byte 0x00007fff
+_080E1D18:
+ ldr r3, _080E1D50 @ =gTasks
+ lsls r4, r6, 2
+ adds r1, r4, r6
+ lsls r1, 3
+ adds r1, r3
+ ldrh r2, [r5, 0x4]
+ ldr r7, _080E1D54 @ =0xffff8000
+ adds r0, r7, 0
+ orrs r0, r2
+_080E1D2A:
+ strh r0, [r1, 0xE]
+_080E1D2C:
+ adds r0, r4, r6
+ lsls r0, 3
+ adds r0, r3
+ movs r1, 0
+ strh r1, [r0, 0x18]
+ strh r1, [r0, 0x16]
+ ldrh r1, [r5, 0x8]
+ strh r1, [r0, 0x10]
+ ldrh r1, [r5, 0xA]
+ strh r1, [r0, 0x12]
+ ldr r1, _080E1D58 @ =sub_80E1AD8
+ str r1, [r0]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1D50: .4byte gTasks
+_080E1D54: .4byte 0xffff8000
+_080E1D58: .4byte sub_80E1AD8
+ thumb_func_end sub_80E1C48
+
+ thumb_func_start sub_80E1D5C
+sub_80E1D5C: @ 80E1D5C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080E1D94 @ =gTasks
+ adds r5, r0, r1
+ ldr r4, _080E1D98 @ =gBattleAnimArgs
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E1D7C
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080E1D7C:
+ movs r0, 0
+ strh r0, [r5, 0x8]
+ strh r0, [r5, 0xA]
+ strh r0, [r5, 0xC]
+ ldrh r0, [r4, 0x2]
+ strh r0, [r5, 0xE]
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E1DA0
+ ldr r0, _080E1D9C @ =gBattleAnimAttacker
+ b _080E1DA2
+ .align 2, 0
+_080E1D94: .4byte gTasks
+_080E1D98: .4byte gBattleAnimArgs
+_080E1D9C: .4byte gBattleAnimAttacker
+_080E1DA0:
+ ldr r0, _080E1DF0 @ =gBattleAnimTarget
+_080E1DA2:
+ ldrb r4, [r0]
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x10]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x12]
+ adds r0, r4, 0
+ bl sub_807685C
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x14]
+ ldr r0, _080E1DF4 @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r5, 0x26]
+ ldr r2, _080E1DF8 @ =gUnknown_83FF52C
+ adds r0, r5, 0
+ bl sub_80762D0
+ ldr r0, _080E1DFC @ =sub_80E1E00
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1DF0: .4byte gBattleAnimTarget
+_080E1DF4: .4byte gBattleAnimArgs
+_080E1DF8: .4byte gUnknown_83FF52C
+_080E1DFC: .4byte sub_80E1E00
+ thumb_func_end sub_80E1D5C
+
+ thumb_func_start sub_80E1E00
+sub_80E1E00: @ 80E1E00
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080E1E20 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080E1E24
+ cmp r0, 0x1
+ beq _080E1E84
+ b _080E1E92
+ .align 2, 0
+_080E1E20: .4byte gTasks
+_080E1E24:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _080E1E3A
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_80E1E98
+_080E1E3A:
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x12
+ bne _080E1E4A
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_80E1E98
+_080E1E4A:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _080E1E92
+ ldrh r0, [r4, 0xE]
+ subs r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080E1E6C
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E1E92
+_080E1E6C:
+ strh r1, [r4, 0xA]
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080E1E80 @ =gUnknown_83FF52C
+ adds r0, r4, 0
+ bl sub_80762D0
+ b _080E1E92
+ .align 2, 0
+_080E1E80: .4byte gUnknown_83FF52C
+_080E1E84:
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E1E92
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080E1E92:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E1E00
+
+ thumb_func_start sub_80E1E98
+sub_80E1E98: @ 80E1E98
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r1, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r2, _080E1EBC @ =gTasks
+ adds r4, r0, r2
+ cmp r1, 0
+ bne _080E1EC0
+ movs r1, 0x12
+ movs r3, 0xEC
+ b _080E1EC4
+ .align 2, 0
+_080E1EBC: .4byte gTasks
+_080E1EC0:
+ movs r1, 0x1E
+ movs r3, 0x14
+_080E1EC4:
+ mov r2, sp
+ ldrh r0, [r4, 0x10]
+ subs r0, r1
+ strh r0, [r2]
+ ldrh r0, [r4, 0x10]
+ subs r0, r1
+ subs r0, 0x4
+ strh r0, [r2, 0x2]
+ ldrh r0, [r4, 0x10]
+ adds r0, r1
+ strh r0, [r2, 0x4]
+ ldrh r0, [r4, 0x10]
+ adds r0, r1
+ adds r0, 0x4
+ strh r0, [r2, 0x6]
+ add r2, sp, 0x8
+ lsls r1, r3, 24
+ asrs r1, 24
+ ldrh r0, [r4, 0x12]
+ adds r0, r1
+ strh r0, [r2]
+ ldrh r0, [r4, 0x12]
+ adds r0, r1
+ adds r0, 0x6
+ strh r0, [r2, 0x2]
+ movs r5, 0
+ mov r8, r2
+ ldr r7, _080E1F68 @ =gSprites
+_080E1EFC:
+ lsls r0, r5, 1
+ add r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0x1
+ ands r0, r5
+ lsls r0, 1
+ add r0, r8
+ movs r3, 0
+ ldrsh r2, [r0, r3]
+ ldrb r3, [r4, 0x14]
+ subs r3, 0x5
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r0, _080E1F6C @ =gUnknown_83FF54C
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _080E1F50
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r7
+ movs r0, 0
+ strh r0, [r1, 0x2E]
+ movs r0, 0x2
+ cmp r5, 0x1
+ bhi _080E1F3E
+ movs r2, 0x2
+ negs r2, r2
+ adds r0, r2, 0
+_080E1F3E:
+ strh r0, [r1, 0x30]
+ ldr r0, _080E1F70 @ =0x0000ffff
+ strh r0, [r1, 0x32]
+ strh r6, [r1, 0x34]
+ movs r0, 0x2
+ strh r0, [r1, 0x36]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+_080E1F50:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3
+ bls _080E1EFC
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1F68: .4byte gSprites
+_080E1F6C: .4byte gUnknown_83FF54C
+_080E1F70: .4byte 0x0000ffff
+ thumb_func_end sub_80E1E98
+
+ thumb_func_start sub_80E1F74
+sub_80E1F74: @ 80E1F74
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x32]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ ble _080E1FBA
+ ldr r3, _080E1FC0 @ =gTasks
+ movs r0, 0x36
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x34
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl DestroySprite
+_080E1FBA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1FC0: .4byte gTasks
+ thumb_func_end sub_80E1F74
+
+ thumb_func_start sub_80E1FC4
+sub_80E1FC4: @ 80E1FC4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080E200C @ =gTasks
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ adds r4, r1
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldr r1, _080E2010 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0xA]
+ ldrb r0, [r1]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080E2014 @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r0, [r1, 0x5]
+ lsrs r0, 4
+ lsls r0, 4
+ movs r2, 0x80
+ lsls r2, 1
+ adds r1, r2, 0
+ adds r0, r1
+ strh r0, [r4, 0xC]
+ ldr r0, _080E2018 @ =sub_80E201C
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E200C: .4byte gTasks
+_080E2010: .4byte gBattleAnimArgs
+_080E2014: .4byte gSprites
+_080E2018: .4byte sub_80E201C
+ thumb_func_end sub_80E1FC4
+
+ thumb_func_start sub_80E201C
+sub_80E201C: @ 80E201C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080E2064 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080E206C
+ ldrh r0, [r4, 0xC]
+ ldr r2, _080E2068 @ =gUnknown_83FF564
+ movs r3, 0x8
+ ldrsh r1, [r4, r3]
+ lsls r1, 1
+ adds r1, r2
+ ldrh r3, [r1]
+ movs r1, 0x10
+ movs r2, 0x8
+ bl BlendPalette
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x17
+ ble _080E205C
+ movs r0, 0
+ strh r0, [r4, 0x8]
+_080E205C:
+ ldrh r0, [r4, 0xA]
+ subs r0, 0x1
+ strh r0, [r4, 0xA]
+ b _080E207E
+ .align 2, 0
+_080E2064: .4byte gTasks
+_080E2068: .4byte gUnknown_83FF564
+_080E206C:
+ ldrh r0, [r4, 0xC]
+ movs r1, 0x10
+ movs r2, 0
+ movs r3, 0
+ bl BlendPalette
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080E207E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E201C
+
+ thumb_func_start sub_80E2084
+sub_80E2084: @ 80E2084
+ push {lr}
+ sub sp, 0x1C
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0xD0
+ lsls r2, 1
+ ldr r1, _080E20C0 @ =gBattleAnimAttacker
+ ldrb r3, [r1]
+ ldr r1, _080E20C4 @ =gBattleAnimArgs
+ ldrb r1, [r1]
+ str r1, [sp]
+ movs r1, 0xA
+ str r1, [sp, 0x4]
+ movs r1, 0x2
+ str r1, [sp, 0x8]
+ movs r1, 0x1E
+ str r1, [sp, 0xC]
+ ldr r1, _080E20C8 @ =gFile_graphics_battle_anims_masks_cure_bubbles_sheet
+ str r1, [sp, 0x10]
+ ldr r1, _080E20CC @ =gFile_graphics_battle_anims_masks_cure_bubbles_tilemap
+ str r1, [sp, 0x14]
+ ldr r1, _080E20D0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette
+ str r1, [sp, 0x18]
+ movs r1, 0
+ bl sub_80BBA20
+ add sp, 0x1C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E20C0: .4byte gBattleAnimAttacker
+_080E20C4: .4byte gBattleAnimArgs
+_080E20C8: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_sheet
+_080E20CC: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_tilemap
+_080E20D0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette
+ thumb_func_end sub_80E2084
+
+ thumb_func_start sub_80E20D4
+sub_80E20D4: @ 80E20D4
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080E212C @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E20F0
+ ldr r1, _080E2130 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r1]
+_080E20F0:
+ ldrb r0, [r6]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080E2130 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ ldrb r0, [r6]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E2138
+ movs r0, 0xA0
+ lsls r0, 2
+ strh r0, [r5, 0x2E]
+ ldr r0, _080E2134 @ =0x0000fd80
+ strh r0, [r5, 0x30]
+ b _080E2160
+ .align 2, 0
+_080E212C: .4byte gBattleAnimAttacker
+_080E2130: .4byte gBattleAnimArgs
+_080E2134: .4byte 0x0000fd80
+_080E2138:
+ cmp r0, 0x1
+ bne _080E2152
+ adds r2, r5, 0
+ adds r2, 0x3F
+ ldrb r0, [r2]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0xA0
+ lsls r0, 2
+ strh r0, [r5, 0x2E]
+ strh r0, [r5, 0x30]
+ b _080E2160
+_080E2152:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ movs r0, 0xA0
+ lsls r0, 2
+ strh r0, [r5, 0x2E]
+_080E2160:
+ ldr r0, _080E218C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E2180
+ ldrh r0, [r5, 0x2E]
+ negs r0, r0
+ strh r0, [r5, 0x2E]
+ adds r2, r5, 0
+ adds r2, 0x3F
+ ldrb r0, [r2]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2]
+_080E2180:
+ ldr r0, _080E2190 @ =sub_80E2194
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E218C: .4byte gBattleAnimAttacker
+_080E2190: .4byte sub_80E2194
+ thumb_func_end sub_80E20D4
+
+ thumb_func_start sub_80E2194
+sub_80E2194: @ 80E2194
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ ldrh r1, [r2, 0x3A]
+ adds r0, r1
+ strh r0, [r2, 0x3A]
+ ldrh r1, [r2, 0x30]
+ ldrh r3, [r2, 0x3C]
+ adds r1, r3
+ strh r1, [r2, 0x3C]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r2, 0x24]
+ lsls r1, 16
+ asrs r1, 24
+ strh r1, [r2, 0x26]
+ ldrh r0, [r2, 0x38]
+ adds r0, 0x1
+ strh r0, [r2, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xE
+ bne _080E21C8
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080E21C8:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2194
+
+ thumb_func_start sub_80E21CC
+sub_80E21CC: @ 80E21CC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080E221C @ =gTasks
+ adds r6, r1, r0
+ movs r1, 0
+ movs r0, 0xC
+ strh r0, [r6, 0x12]
+ movs r0, 0x3
+ strh r0, [r6, 0x14]
+ strh r1, [r6, 0x16]
+ ldr r5, _080E2220 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E2224
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8076B2C
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080E2216
+ adds r0, 0x3
+_080E2216:
+ asrs r0, 2
+ adds r0, r4, r0
+ b _080E2248
+ .align 2, 0
+_080E221C: .4byte gTasks
+_080E2220: .4byte gBattleAnimAttacker
+_080E2224:
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8076B2C
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080E2244
+ adds r0, 0x3
+_080E2244:
+ asrs r0, 2
+ subs r0, r4, r0
+_080E2248:
+ strh r0, [r6, 0x1E]
+ ldr r5, _080E229C @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8076B2C
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080E226C
+ adds r0, 0x3
+_080E226C:
+ asrs r0, 2
+ subs r0, r4, r0
+ strh r0, [r6, 0x20]
+ ldr r4, _080E22A0 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x22]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x24]
+ ldr r0, _080E22A4 @ =sub_80E22A8
+ str r0, [r6]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E229C: .4byte gBattleAnimAttacker
+_080E22A0: .4byte gBattleAnimTarget
+_080E22A4: .4byte sub_80E22A8
+ thumb_func_end sub_80E21CC
+
+ thumb_func_start sub_80E22A8
+sub_80E22A8: @ 80E22A8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _080E22D0 @ =gTasks
+ adds r5, r0, r1
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ cmp r1, 0
+ beq _080E22D4
+ cmp r1, 0x1
+ bne _080E22CC
+ b _080E23CC
+_080E22CC:
+ b _080E23DA
+ .align 2, 0
+_080E22D0: .4byte gTasks
+_080E22D4:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ ble _080E23DA
+ strh r1, [r5, 0xA]
+ movs r1, 0x1E
+ ldrsh r0, [r5, r1]
+ movs r2, 0x20
+ ldrsh r1, [r5, r2]
+ movs r3, 0x22
+ ldrsh r2, [r5, r3]
+ movs r4, 0x24
+ ldrsh r3, [r5, r4]
+ ldrb r4, [r5, 0x12]
+ str r4, [sp]
+ ldrb r4, [r5, 0xC]
+ str r4, [sp, 0x4]
+ add r4, sp, 0x10
+ str r4, [sp, 0x8]
+ adds r4, 0x2
+ str r4, [sp, 0xC]
+ bl sub_80E23E8
+ movs r6, 0
+ mov r8, r4
+ ldr r4, _080E2348 @ =gSprites
+_080E230E:
+ add r0, sp, 0x10
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ mov r3, r8
+ movs r0, 0
+ ldrsh r2, [r3, r0]
+ ldr r0, _080E234C @ =gUnknown_83FF5CC
+ movs r3, 0x23
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x40
+ beq _080E23A2
+ movs r1, 0x16
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080E2362
+ cmp r6, 0
+ bne _080E2350
+ lsls r2, r3, 4
+ adds r1, r2, r3
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r5, 0x14]
+ negs r0, r0
+ strh r0, [r1, 0x26]
+ strh r0, [r1, 0x24]
+ b _080E238A
+ .align 2, 0
+_080E2348: .4byte gSprites
+_080E234C: .4byte gUnknown_83FF5CC
+_080E2350:
+ lsls r2, r3, 4
+ adds r1, r2, r3
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r5, 0x14]
+ strh r0, [r1, 0x26]
+ ldrh r0, [r5, 0x14]
+ strh r0, [r1, 0x24]
+ b _080E238A
+_080E2362:
+ cmp r6, 0
+ bne _080E2378
+ lsls r2, r3, 4
+ adds r1, r2, r3
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r5, 0x14]
+ negs r0, r0
+ strh r0, [r1, 0x24]
+ ldrh r0, [r5, 0x14]
+ b _080E2388
+_080E2378:
+ lsls r2, r3, 4
+ adds r1, r2, r3
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r5, 0x14]
+ strh r0, [r1, 0x24]
+ ldrh r0, [r5, 0x14]
+ negs r0, r0
+_080E2388:
+ strh r0, [r1, 0x26]
+_080E238A:
+ ldr r1, _080E23C8 @ =gSprites
+ adds r0, r2, r3
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0
+ strh r1, [r0, 0x2E]
+ strh r7, [r0, 0x30]
+ movs r1, 0xA
+ strh r1, [r0, 0x32]
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x1
+ strh r0, [r5, 0x1C]
+_080E23A2:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x1
+ bls _080E230E
+ ldrh r2, [r5, 0xC]
+ movs r3, 0xC
+ ldrsh r1, [r5, r3]
+ movs r4, 0x12
+ ldrsh r0, [r5, r4]
+ cmp r1, r0
+ bne _080E23C0
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_080E23C0:
+ adds r0, r2, 0x1
+ strh r0, [r5, 0xC]
+ b _080E23DA
+ .align 2, 0
+_080E23C8: .4byte gSprites
+_080E23CC:
+ movs r1, 0x1C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080E23DA
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080E23DA:
+ add sp, 0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E22A8
+
+ thumb_func_start sub_80E23E8
+sub_80E23E8: @ 80E23E8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ ldr r4, [sp, 0x28]
+ ldr r5, [sp, 0x2C]
+ ldr r6, [sp, 0x30]
+ mov r9, r6
+ ldr r6, [sp, 0x34]
+ mov r10, r6
+ lsls r0, 16
+ lsrs r0, 16
+ mov r12, r0
+ lsls r1, 16
+ lsrs r1, 16
+ str r1, [sp]
+ lsls r2, 16
+ lsrs r2, 16
+ adds r7, r2, 0
+ lsls r3, 16
+ lsrs r3, 16
+ str r3, [sp, 0x4]
+ lsls r4, 24
+ lsrs r6, r4, 24
+ lsls r5, 24
+ lsrs r5, 24
+ mov r8, r5
+ cmp r5, 0
+ bne _080E2430
+ mov r2, r9
+ strh r0, [r2]
+ mov r6, r10
+ strh r1, [r6]
+ b _080E248E
+_080E2430:
+ cmp r5, r6
+ bcc _080E243E
+ mov r0, r9
+ strh r2, [r0]
+ mov r1, r10
+ strh r3, [r1]
+ b _080E248E
+_080E243E:
+ subs r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ mov r2, r12
+ lsls r1, r2, 16
+ asrs r1, 16
+ lsls r5, r1, 8
+ lsls r0, r7, 16
+ asrs r0, 16
+ subs r0, r1
+ lsls r0, 8
+ adds r1, r6, 0
+ bl __divsi3
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ adds r5, r0
+ ldr r2, [sp]
+ lsls r1, r2, 16
+ asrs r1, 16
+ lsls r4, r1, 8
+ ldr r2, [sp, 0x4]
+ lsls r0, r2, 16
+ asrs r0, 16
+ subs r0, r1
+ lsls r0, 8
+ adds r1, r6, 0
+ bl __divsi3
+ mov r6, r8
+ muls r6, r0
+ adds r0, r6, 0
+ adds r4, r0
+ asrs r5, 8
+ mov r0, r9
+ strh r5, [r0]
+ asrs r4, 8
+ mov r1, r10
+ strh r4, [r1]
+_080E248E:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E23E8
+
+ thumb_func_start sub_80E24A0
+sub_80E24A0: @ 80E24A0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x24
+ ble _080E24D6
+ ldr r3, _080E24DC @ =gTasks
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x30
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl DestroySprite
+_080E24D6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E24DC: .4byte gTasks
+ thumb_func_end sub_80E24A0
+
+ thumb_func_start sub_80E24E0
+sub_80E24E0: @ 80E24E0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _080E250C @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x36]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x2E]
+ ldr r1, _080E2510 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080E2514 @ =sub_8075764
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E250C: .4byte gBattleAnimArgs
+_080E2510: .4byte DestroyAnimSprite
+_080E2514: .4byte sub_8075764
+ thumb_func_end sub_80E24E0
+
+ thumb_func_start sub_80E2518
+sub_80E2518: @ 80E2518
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ lsls r0, 2
+ add r0, r9
+ lsls r0, 3
+ ldr r1, _080E2638 @ =gTasks
+ adds r7, r0, r1
+ ldr r0, _080E263C @ =gBattleAnimAttacker
+ mov r10, r0
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r7, 0x1E]
+ mov r1, r10
+ ldrb r0, [r1]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r7, 0x20]
+ ldr r0, _080E2640 @ =gBattleAnimTarget
+ mov r8, r0
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r7, 0x22]
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0x3
+ bl sub_8074480
+ adds r4, r0, 0
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0
+ bl sub_8076B2C
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080E258A
+ adds r0, 0x3
+_080E258A:
+ asrs r0, 2
+ adds r0, r4, r0
+ strh r0, [r7, 0x24]
+ ldr r4, _080E2644 @ =gUnknown_83FF62C
+ movs r0, 0x1E
+ ldrsh r5, [r7, r0]
+ movs r1, 0x20
+ ldrsh r6, [r7, r1]
+ mov r1, r8
+ ldrb r0, [r1]
+ bl sub_807685C
+ adds r3, r0, 0
+ subs r3, 0x5
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r7, 0x26]
+ cmp r0, 0x40
+ beq _080E2654
+ ldr r4, _080E2648 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r1, 0x10
+ strh r1, [r0, 0x2E]
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r1, [r7, 0x22]
+ strh r1, [r0, 0x32]
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r1, [r7, 0x24]
+ strh r1, [r0, 0x36]
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldr r1, _080E264C @ =0x0000ffe0
+ strh r1, [r0, 0x38]
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ bl sub_8075068
+ mov r1, r10
+ ldrb r0, [r1]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E2632
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+_080E2632:
+ ldr r0, _080E2650 @ =sub_80E2668
+ str r0, [r7]
+ b _080E265A
+ .align 2, 0
+_080E2638: .4byte gTasks
+_080E263C: .4byte gBattleAnimAttacker
+_080E2640: .4byte gBattleAnimTarget
+_080E2644: .4byte gUnknown_83FF62C
+_080E2648: .4byte gSprites
+_080E264C: .4byte 0x0000ffe0
+_080E2650: .4byte sub_80E2668
+_080E2654:
+ mov r0, r9
+ bl DestroyAnimVisualTask
+_080E265A:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2518
+
+ thumb_func_start sub_80E2668
+sub_80E2668: @ 80E2668
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080E268C @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ cmp r1, 0x1
+ beq _080E26D0
+ cmp r1, 0x1
+ bgt _080E2690
+ cmp r1, 0
+ beq _080E269A
+ b _080E276E
+ .align 2, 0
+_080E268C: .4byte gTasks
+_080E2690:
+ cmp r1, 0x2
+ beq _080E26F4
+ cmp r1, 0x3
+ beq _080E2768
+ b _080E276E
+_080E269A:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E276E
+ strh r1, [r4, 0xA]
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E26CC @ =gSprites
+ adds r0, r1
+ bl AnimateBallThrow
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7
+ ble _080E276E
+ b _080E275A
+ .align 2, 0
+_080E26CC: .4byte gSprites
+_080E26D0:
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E26F0 @ =gSprites
+ adds r0, r1
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E276E
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ b _080E275A
+ .align 2, 0
+_080E26F0: .4byte gSprites
+_080E26F4:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E276E
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r2, [r4, 0xC]
+ adds r2, 0x1
+ strh r2, [r4, 0xC]
+ ldr r5, _080E2764 @ =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ movs r0, 0x1
+ ands r2, r0
+ adds r1, 0x3E
+ lsls r2, 2
+ ldrb r3, [r1]
+ subs r0, 0x6
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r1]
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080E276E
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrb r0, [r0, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ bl DestroySprite
+_080E275A:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E276E
+ .align 2, 0
+_080E2764: .4byte gSprites
+_080E2768:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080E276E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2668
+
+ thumb_func_start sub_80E2774
+sub_80E2774: @ 80E2774
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r0, _080E2788 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ adds r6, r0, 0
+ cmp r1, 0
+ bne _080E2790
+ ldr r0, _080E278C @ =gBattleAnimAttacker
+ b _080E2792
+ .align 2, 0
+_080E2788: .4byte gBattleAnimArgs
+_080E278C: .4byte gBattleAnimAttacker
+_080E2790:
+ ldr r0, _080E27F8 @ =gBattleAnimTarget
+_080E2792:
+ ldrb r5, [r0]
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x10
+ ldr r3, _080E27FC @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080E2800 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ adds r1, r6, 0
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x3A]
+ movs r2, 0x2
+ ldrsh r0, [r1, r2]
+ movs r1, 0x1
+ cmp r0, 0
+ bne _080E27C0
+ movs r3, 0x1
+ negs r3, r3
+ adds r1, r3, 0
+_080E27C0:
+ strh r1, [r4, 0x3C]
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ movs r1, 0x2
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080E2804
+ ldrb r2, [r4, 0x3]
+ lsls r1, r2, 26
+ lsrs r1, 27
+ movs r0, 0x8
+ orrs r1, r0
+ lsls r1, 1
+ subs r0, 0x47
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x3]
+ adds r0, r5, 0
+ movs r1, 0x4
+ bl sub_8076B2C
+ subs r0, 0x8
+ b _080E280E
+ .align 2, 0
+_080E27F8: .4byte gBattleAnimTarget
+_080E27FC: .4byte 0x000003ff
+_080E2800: .4byte 0xfffffc00
+_080E2804:
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl sub_8076B2C
+ adds r0, 0x8
+_080E280E:
+ strh r0, [r4, 0x20]
+ ldr r0, _080E281C @ =sub_80E2820
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E281C: .4byte sub_80E2820
+ thumb_func_end sub_80E2774
+
+ thumb_func_start sub_80E2820
+sub_80E2820: @ 80E2820
+ push {lr}
+ adds r2, r0, 0
+ movs r0, 0x2E
+ ldrsh r1, [r2, r0]
+ cmp r1, 0x1
+ beq _080E2868
+ cmp r1, 0x1
+ bgt _080E2836
+ cmp r1, 0
+ beq _080E2840
+ b _080E28D8
+_080E2836:
+ cmp r1, 0x2
+ beq _080E2878
+ cmp r1, 0x3
+ beq _080E289E
+ b _080E28D8
+_080E2840:
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E28D8
+ strh r1, [r2, 0x30]
+ ldrh r0, [r2, 0x3C]
+ ldrh r1, [r2, 0x24]
+ adds r0, r1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x32]
+ adds r0, 0x1
+ strh r0, [r2, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ bne _080E28D8
+ b _080E2896
+_080E2868:
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ bne _080E28D8
+ b _080E2892
+_080E2878:
+ movs r0, 0x3C
+ ldrsh r1, [r2, r0]
+ lsls r1, 2
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _080E28D8
+_080E2892:
+ movs r0, 0
+ strh r0, [r2, 0x30]
+_080E2896:
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ b _080E28D8
+_080E289E:
+ movs r0, 0x3C
+ ldrsh r1, [r2, r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ ldrh r1, [r2, 0x24]
+ adds r0, r1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ bne _080E28D8
+ ldrh r0, [r2, 0x3A]
+ subs r0, 0x1
+ strh r0, [r2, 0x3A]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080E28D2
+ movs r0, 0
+ strh r0, [r2, 0x30]
+ ldrh r0, [r2, 0x2E]
+ subs r0, 0x1
+ strh r0, [r2, 0x2E]
+ b _080E28D8
+_080E28D2:
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080E28D8:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2820
+
+ thumb_func_start sub_80E28DC
+sub_80E28DC: @ 80E28DC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldr r2, _080E28F4 @ =gBattleAnimArgs
+ movs r3, 0
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bne _080E28F8
+ adds r0, r1, 0
+ bl DestroyAnimVisualTask
+ b _080E2920
+ .align 2, 0
+_080E28F4: .4byte gBattleAnimArgs
+_080E28F8:
+ ldr r0, _080E2928 @ =gTasks
+ lsls r4, r1, 2
+ adds r4, r1
+ lsls r4, 3
+ adds r4, r0
+ ldrh r0, [r2, 0x2]
+ strh r0, [r4, 0x8]
+ ldrb r0, [r2]
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r4, 0x26]
+ ldr r2, _080E292C @ =gUnknown_83FF65C
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080E2930 @ =sub_80E2934
+ str r0, [r4]
+_080E2920:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E2928: .4byte gTasks
+_080E292C: .4byte gUnknown_83FF65C
+_080E2930: .4byte sub_80E2934
+ thumb_func_end sub_80E28DC
+
+ thumb_func_start sub_80E2934
+sub_80E2934: @ 80E2934
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _080E2974 @ =gTasks
+ adds r4, r0, r1
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E298E
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r1, [r4, 0xC]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080E297C
+ ldr r2, _080E2978 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0x2
+ b _080E298C
+ .align 2, 0
+_080E2974: .4byte gTasks
+_080E2978: .4byte gSprites
+_080E297C:
+ ldr r2, _080E29D4 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, _080E29D8 @ =0x0000fffe
+_080E298C:
+ strh r1, [r0, 0x24]
+_080E298E:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _080E29EA
+ ldr r2, _080E29D4 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r5, [r0, 0x24]
+ ldrh r0, [r4, 0x8]
+ subs r0, 0x1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080E29E4
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _080E29DC @ =gTasks
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080E29E0 @ =gUnknown_83FF65C
+ bl sub_80762D0
+ strh r5, [r4, 0xA]
+ strh r5, [r4, 0xC]
+ b _080E29EA
+ .align 2, 0
+_080E29D4: .4byte gSprites
+_080E29D8: .4byte 0x0000fffe
+_080E29DC: .4byte gTasks
+_080E29E0: .4byte gUnknown_83FF65C
+_080E29E4:
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080E29EA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2934
+
+ thumb_func_start sub_80E29F0
+sub_80E29F0: @ 80E29F0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080E2A04 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080E2A0C
+ ldr r4, _080E2A08 @ =gBattleAnimAttacker
+ b _080E2A0E
+ .align 2, 0
+_080E2A04: .4byte gBattleAnimArgs
+_080E2A08: .4byte gBattleAnimAttacker
+_080E2A0C:
+ ldr r4, _080E2A4C @ =gBattleAnimTarget
+_080E2A0E:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8076B2C
+ strh r0, [r5, 0x22]
+ movs r1, 0x22
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x7
+ bgt _080E2A32
+ movs r0, 0x8
+ strh r0, [r5, 0x22]
+_080E2A32:
+ movs r2, 0
+ strh r2, [r5, 0x2E]
+ ldr r1, _080E2A50 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0x30]
+ strh r2, [r5, 0x32]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x34]
+ ldr r0, _080E2A54 @ =sub_80E2A58
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E2A4C: .4byte gBattleAnimTarget
+_080E2A50: .4byte gBattleAnimArgs
+_080E2A54: .4byte sub_80E2A58
+ thumb_func_end sub_80E29F0
+
+ thumb_func_start sub_80E2A58
+sub_80E2A58: @ 80E2A58
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x30
+ ldrsh r1, [r3, r2]
+ cmp r0, r1
+ blt _080E2AAC
+ movs r0, 0
+ strh r0, [r3, 0x2E]
+ ldrh r1, [r3, 0x32]
+ adds r1, 0x1
+ movs r0, 0x1
+ ands r1, r0
+ strh r1, [r3, 0x32]
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ lsls r1, 2
+ ldrb r2, [r0]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ movs r2, 0x32
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ beq _080E2AAC
+ ldrh r0, [r3, 0x34]
+ subs r0, 0x1
+ strh r0, [r3, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080E2AAC
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080E2AAC:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2A58
+
+ thumb_func_start sub_80E2AB0
+sub_80E2AB0: @ 80E2AB0
+ push {lr}
+ adds r3, r0, 0
+ ldr r0, _080E2ADC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080E2AE0
+ ldrb r2, [r3, 0x3]
+ lsls r1, r2, 26
+ lsrs r1, 27
+ movs r0, 0x8
+ orrs r1, r0
+ lsls r1, 1
+ subs r0, 0x47
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x3]
+ movs r0, 0x64
+ strh r0, [r3, 0x20]
+ movs r0, 0x1
+ b _080E2AE6
+ .align 2, 0
+_080E2ADC: .4byte gBattleAnimArgs
+_080E2AE0:
+ movs r0, 0x8C
+ strh r0, [r3, 0x20]
+ ldr r0, _080E2AF4 @ =0x0000ffff
+_080E2AE6:
+ strh r0, [r3, 0x3C]
+ movs r0, 0x38
+ strh r0, [r3, 0x22]
+ ldr r0, _080E2AF8 @ =sub_80E2AFC
+ str r0, [r3, 0x1C]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E2AF4: .4byte 0x0000ffff
+_080E2AF8: .4byte sub_80E2AFC
+ thumb_func_end sub_80E2AB0
+
+ thumb_func_start sub_80E2AFC
+sub_80E2AFC: @ 80E2AFC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x8
+ bls _080E2B0A
+ b _080E2CDC
+_080E2B0A:
+ lsls r0, 2
+ ldr r1, _080E2B14 @ =_080E2B18
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E2B14: .4byte _080E2B18
+ .align 2, 0
+_080E2B18:
+ .4byte _080E2B3C
+ .4byte _080E2B6E
+ .4byte _080E2B80
+ .4byte _080E2BC0
+ .4byte _080E2BD2
+ .4byte _080E2C10
+ .4byte _080E2C74
+ .4byte _080E2C94
+ .4byte _080E2CBA
+_080E2B3C:
+ movs r3, 0x3C
+ ldrsh r0, [r4, r3]
+ lsls r0, 1
+ ldrh r1, [r4, 0x22]
+ subs r1, r0
+ strh r1, [r4, 0x22]
+ ldrh r2, [r4, 0x30]
+ movs r0, 0x1
+ ands r0, r2
+ cmp r0, 0
+ beq _080E2B5E
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ ldrh r0, [r4, 0x20]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+_080E2B5E:
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ beq _080E2B6C
+ b _080E2CDC
+_080E2B6C:
+ b _080E2CAE
+_080E2B6E:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ beq _080E2B7E
+ b _080E2CDC
+_080E2B7E:
+ b _080E2CAE
+_080E2B80:
+ ldrh r2, [r4, 0x30]
+ adds r2, 0x1
+ strh r2, [r4, 0x30]
+ movs r3, 0x3C
+ ldrsh r1, [r4, r3]
+ lsls r0, r1, 1
+ adds r0, r1
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r3, _080E2BBC @ =gSineTable
+ movs r0, 0x30
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 19
+ ldrh r1, [r4, 0x3C]
+ muls r0, r1
+ strh r0, [r4, 0x24]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0xC
+ beq _080E2BB8
+ b _080E2CDC
+_080E2BB8:
+ b _080E2CAE
+ .align 2, 0
+_080E2BBC: .4byte gSineTable
+_080E2BC0:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ beq _080E2BD0
+ b _080E2CDC
+_080E2BD0:
+ b _080E2CAE
+_080E2BD2:
+ ldrh r2, [r4, 0x30]
+ adds r2, 0x1
+ strh r2, [r4, 0x30]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 1
+ adds r1, r0
+ ldrh r0, [r4, 0x22]
+ subs r0, r1
+ strh r0, [r4, 0x22]
+ ldr r3, _080E2C0C @ =gSineTable
+ movs r0, 0x30
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 19
+ ldrh r1, [r4, 0x3C]
+ muls r0, r1
+ strh r0, [r4, 0x24]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0xC
+ bne _080E2CDC
+ b _080E2CB2
+ .align 2, 0
+_080E2C0C: .4byte gSineTable
+_080E2C10:
+ ldrh r2, [r4, 0x30]
+ adds r2, 0x1
+ strh r2, [r4, 0x30]
+ movs r3, 0x3C
+ ldrsh r1, [r4, r3]
+ lsls r0, r1, 1
+ adds r0, r1
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r3, _080E2C68 @ =gSineTable
+ movs r0, 0x30
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 19
+ ldrh r1, [r4, 0x3C]
+ muls r0, r1
+ strh r0, [r4, 0x24]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0xF
+ bne _080E2C5C
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x10
+ ldr r3, _080E2C6C @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080E2C70 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+_080E2C5C:
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x12
+ bne _080E2CDC
+ b _080E2CAE
+ .align 2, 0
+_080E2C68: .4byte gSineTable
+_080E2C6C: .4byte 0x000003ff
+_080E2C70: .4byte 0xfffffc00
+_080E2C74:
+ movs r3, 0x3C
+ ldrsh r0, [r4, r3]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 1
+ ldrh r0, [r4, 0x20]
+ adds r1, r0
+ strh r1, [r4, 0x20]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ bne _080E2CDC
+ b _080E2CAE
+_080E2C94:
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ lsls r0, 1
+ ldrh r3, [r4, 0x20]
+ adds r0, r3
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080E2CDC
+_080E2CAE:
+ movs r0, 0
+ strh r0, [r4, 0x30]
+_080E2CB2:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080E2CDC
+_080E2CBA:
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 1
+ adds r1, r0
+ ldrh r0, [r4, 0x20]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ bne _080E2CDC
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E2CDC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2AFC
+
+ thumb_func_start sub_80E2CE4
+sub_80E2CE4: @ 80E2CE4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080E2D34 @ =gTasks
+ adds r6, r1, r0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x26]
+ bl sub_8075290
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x1
+ bne _080E2D44
+ ldr r5, _080E2D38 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8074480
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r1, [r5]
+ movs r0, 0x2
+ eors r0, r1
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ ble _080E2D3C
+ strh r7, [r6, 0x24]
+ b _080E2D64
+ .align 2, 0
+_080E2D34: .4byte gTasks
+_080E2D38: .4byte gBattleAnimAttacker
+_080E2D3C:
+ ldr r0, _080E2D40 @ =0x0000ffff
+ b _080E2D62
+ .align 2, 0
+_080E2D40: .4byte 0x0000ffff
+_080E2D44:
+ ldr r0, _080E2D58 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E2D60
+ ldr r0, _080E2D5C @ =0x0000ffff
+ b _080E2D62
+ .align 2, 0
+_080E2D58: .4byte gBattleAnimAttacker
+_080E2D5C: .4byte 0x0000ffff
+_080E2D60:
+ movs r0, 0x1
+_080E2D62:
+ strh r0, [r6, 0x24]
+_080E2D64:
+ ldr r0, _080E2D70 @ =sub_80E2D74
+ str r0, [r6]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E2D70: .4byte sub_80E2D74
+ thumb_func_end sub_80E2CE4
+
+ thumb_func_start sub_80E2D74
+sub_80E2D74: @ 80E2D74
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080E2D98 @ =gTasks
+ adds r3, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x8
+ bls _080E2D8E
+ b _080E2F08
+_080E2D8E:
+ lsls r0, 2
+ ldr r1, _080E2D9C @ =_080E2DA0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E2D98: .4byte gTasks
+_080E2D9C: .4byte _080E2DA0
+ .align 2, 0
+_080E2DA0:
+ .4byte _080E2DC4
+ .4byte _080E2DD6
+ .4byte _080E2E08
+ .4byte _080E2E38
+ .4byte _080E2E5E
+ .4byte _080E2E88
+ .4byte _080E2E98
+ .4byte _080E2EB8
+ .4byte _080E2EF0
+_080E2DC4:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ beq _080E2DD4
+ b _080E2F08
+_080E2DD4:
+ b _080E2EE0
+_080E2DD6:
+ ldr r2, _080E2E04 @ =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r3, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r2, 0x24
+ ldrsh r0, [r3, r2]
+ lsls r2, r0, 1
+ adds r2, r0
+ ldrh r0, [r1, 0x24]
+ subs r0, r2
+ strh r0, [r1, 0x24]
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ beq _080E2E02
+ b _080E2F08
+_080E2E02:
+ b _080E2EE0
+ .align 2, 0
+_080E2E04: .4byte gSprites
+_080E2E08:
+ ldr r2, _080E2E34 @ =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r3, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r0, 0x24
+ ldrsh r2, [r3, r0]
+ lsls r0, r2, 1
+ adds r0, r2
+ ldrh r2, [r1, 0x24]
+ adds r0, r2
+ strh r0, [r1, 0x24]
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _080E2F08
+ b _080E2EE0
+ .align 2, 0
+_080E2E34: .4byte gSprites
+_080E2E38:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _080E2F08
+ movs r0, 0
+ strh r0, [r3, 0xA]
+ ldrh r1, [r3, 0xC]
+ movs r2, 0xC
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ bne _080E2EE4
+ adds r0, r1, 0x1
+ strh r0, [r3, 0xC]
+ movs r0, 0x1
+ strh r0, [r3, 0x8]
+ b _080E2F08
+_080E2E5E:
+ ldr r2, _080E2E84 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r3, 0x24]
+ ldrh r2, [r0, 0x24]
+ adds r1, r2
+ strh r1, [r0, 0x24]
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080E2F08
+ b _080E2EE0
+ .align 2, 0
+_080E2E84: .4byte gSprites
+_080E2E88:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _080E2F08
+ b _080E2EE0
+_080E2E98:
+ ldr r2, _080E2EB4 @ =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r3, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r0, 0x24
+ ldrsh r2, [r3, r0]
+ lsls r2, 2
+ ldrh r0, [r1, 0x24]
+ subs r0, r2
+ b _080E2ED0
+ .align 2, 0
+_080E2EB4: .4byte gSprites
+_080E2EB8:
+ ldr r2, _080E2EEC @ =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r3, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r2, 0x24
+ ldrsh r0, [r3, r2]
+ lsls r0, 2
+ ldrh r2, [r1, 0x24]
+ adds r0, r2
+_080E2ED0:
+ strh r0, [r1, 0x24]
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ bne _080E2F08
+_080E2EE0:
+ movs r0, 0
+ strh r0, [r3, 0xA]
+_080E2EE4:
+ ldrh r0, [r3, 0x8]
+ adds r0, 0x1
+ strh r0, [r3, 0x8]
+ b _080E2F08
+ .align 2, 0
+_080E2EEC: .4byte gSprites
+_080E2EF0:
+ ldr r2, _080E2F10 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0
+ strh r1, [r0, 0x24]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080E2F08:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E2F10: .4byte gSprites
+ thumb_func_end sub_80E2D74
+
+ thumb_func_start sub_80E2F14
+sub_80E2F14: @ 80E2F14
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080E2F30 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080E2F38
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080E2F34 @ =gBattleAnimAttacker
+ b _080E2F3A
+ .align 2, 0
+_080E2F30: .4byte gBattleAnimArgs
+_080E2F34: .4byte gBattleAnimAttacker
+_080E2F38:
+ ldr r0, _080E2F90 @ =gBattleAnimTarget
+_080E2F3A:
+ ldrb r0, [r0]
+ strh r0, [r4, 0x3C]
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E2F5E
+ ldrb r0, [r4, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x10
+ orrs r1, r0
+ strb r1, [r4, 0x3]
+_080E2F5E:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8076884
+ movs r2, 0x3
+ ands r2, r0
+ lsls r2, 2
+ ldrb r3, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ adds r0, r1, 0
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r4, 0x5]
+ ldrb r0, [r4, 0x1]
+ ands r1, r0
+ movs r0, 0x4
+ orrs r1, r0
+ strb r1, [r4, 0x1]
+ ldr r0, _080E2F94 @ =sub_80E2F98
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E2F90: .4byte gBattleAnimTarget
+_080E2F94: .4byte sub_80E2F98
+ thumb_func_end sub_80E2F14
+
+ thumb_func_start sub_80E2F98
+sub_80E2F98: @ 80E2F98
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _080E2FA6
+ b _080E3196
+_080E2FA6:
+ lsls r0, 2
+ ldr r1, _080E2FB0 @ =_080E2FB4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E2FB0: .4byte _080E2FB4
+ .align 2, 0
+_080E2FB4:
+ .4byte _080E2FC8
+ .4byte _080E30C8
+ .4byte _080E3130
+ .4byte _080E3144
+ .4byte _080E3190
+_080E2FC8:
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x5
+ bhi _080E2FF8
+ lsls r0, 2
+ ldr r1, _080E2FDC @ =_080E2FE0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E2FDC: .4byte _080E2FE0
+ .align 2, 0
+_080E2FE0:
+ .4byte _080E2FFC
+ .4byte _080E3018
+ .4byte _080E303A
+ .4byte _080E3056
+ .4byte _080E2FFC
+ .4byte _080E307C
+_080E2FF8:
+ movs r0, 0
+ strh r0, [r4, 0x3A]
+_080E2FFC:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x5
+ bl sub_8076B2C
+ subs r0, 0x4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x3
+ b _080E3070
+_080E3018:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x5
+ bl sub_8076B2C
+ subs r0, 0x4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl sub_8076B2C
+ adds r0, 0x4
+ b _080E3076
+_080E303A:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x4
+ bl sub_8076B2C
+ adds r0, 0x4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x3
+ b _080E3070
+_080E3056:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x4
+ bl sub_8076B2C
+ adds r0, 0x4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+_080E3070:
+ bl sub_8076B2C
+ subs r0, 0x4
+_080E3076:
+ lsls r0, 16
+ lsrs r1, r0, 16
+ b _080E309C
+_080E307C:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r1, r0, 24
+_080E309C:
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x4
+ bne _080E30A8
+ movs r0, 0x18
+ b _080E30B2
+_080E30A8:
+ cmp r0, 0x5
+ bne _080E30B0
+ movs r0, 0x6
+ b _080E30B2
+_080E30B0:
+ movs r0, 0xC
+_080E30B2:
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ strh r5, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ strh r1, [r4, 0x36]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ b _080E3188
+_080E30C8:
+ adds r0, r4, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E3196
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ beq _080E3100
+ cmp r0, 0x5
+ beq _080E3120
+ ldrh r0, [r4, 0x24]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ movs r1, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ strh r1, [r4, 0x26]
+ strh r1, [r4, 0x24]
+ strh r1, [r4, 0x2E]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ b _080E3118
+_080E3100:
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ strh r1, [r4, 0x26]
+ strh r1, [r4, 0x24]
+ strh r1, [r4, 0x38]
+_080E3118:
+ ldrh r0, [r4, 0x3A]
+ adds r0, 0x1
+ strh r0, [r4, 0x3A]
+ b _080E3196
+_080E3120:
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ movs r1, 0x10
+ strh r1, [r4, 0x30]
+ strh r0, [r4, 0x32]
+ movs r0, 0x3
+ strh r0, [r4, 0x38]
+ b _080E3196
+_080E3130:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080E3196
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ b _080E3196
+_080E3144:
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080E3156
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x1
+ strh r0, [r4, 0x30]
+ b _080E315C
+_080E3156:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+_080E315C:
+ ldrh r1, [r4, 0x32]
+ lsls r1, 8
+ ldrh r0, [r4, 0x30]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x20
+ bne _080E3196
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080E3188:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ b _080E3196
+_080E3190:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E3196:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2F98
+
+ thumb_func_start sub_80E319C
+sub_80E319C: @ 80E319C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ subs r0, r1
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ muls r0, r1
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ adds r5, r0, 0
+ strh r5, [r4, 0x24]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ subs r0, r1
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ muls r0, r1
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ adds r3, r0, 0
+ strh r3, [r4, 0x26]
+ ldrh r1, [r4, 0x38]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080E31FA
+ ldr r0, _080E3218 @ =gUnknown_83FF180
+ ldrh r1, [r4, 0x20]
+ adds r1, r5
+ lsls r1, 16
+ asrs r1, 16
+ ldrh r2, [r4, 0x22]
+ adds r2, r3
+ lsls r2, 16
+ asrs r2, 16
+ movs r3, 0x5
+ bl CreateSprite
+_080E31FA:
+ movs r0, 0x38
+ ldrsh r1, [r4, r0]
+ movs r2, 0x36
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _080E320C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E320C:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E3218: .4byte gUnknown_83FF180
+ thumb_func_end sub_80E319C
+
+ thumb_func_start sub_80E321C
+sub_80E321C: @ 80E321C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080E3250 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E3258
+ ldr r2, _080E3254 @ =gBattleAnimArgs
+ ldrh r1, [r5, 0x20]
+ ldrh r0, [r2]
+ subs r0, r1, r0
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r2, 0x4]
+ subs r1, r0
+ b _080E3266
+ .align 2, 0
+_080E3250: .4byte gBattleAnimTarget
+_080E3254: .4byte gBattleAnimArgs
+_080E3258:
+ ldr r2, _080E328C @ =gBattleAnimArgs
+ ldrh r1, [r5, 0x20]
+ ldrh r0, [r2]
+ adds r0, r1, r0
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r2, 0x4]
+ adds r1, r0
+_080E3266:
+ strh r1, [r5, 0x32]
+ adds r3, r2, 0
+ ldrh r1, [r5, 0x22]
+ ldrh r2, [r3, 0x2]
+ adds r2, r1, r2
+ strh r2, [r5, 0x30]
+ ldrh r0, [r3, 0x6]
+ adds r1, r0
+ strh r1, [r5, 0x34]
+ ldrh r0, [r3, 0x8]
+ strh r0, [r5, 0x36]
+ ldrh r0, [r5, 0x2E]
+ strh r0, [r5, 0x20]
+ strh r2, [r5, 0x22]
+ ldr r0, _080E3290 @ =sub_80E319C
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E328C: .4byte gBattleAnimArgs
+_080E3290: .4byte sub_80E319C
+ thumb_func_end sub_80E321C
+
+ thumb_func_start sub_80E3294
+sub_80E3294: @ 80E3294
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r2, r5, 0
+ ldr r0, _080E32D8 @ =gTasks
+ mov r9, r0
+ lsls r7, r6, 2
+ adds r0, r7, r6
+ lsls r0, 3
+ mov r8, r0
+ mov r4, r8
+ add r4, r9
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E32DC
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_80758E0
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ b _080E3328
+ .align 2, 0
+_080E32D8: .4byte gTasks
+_080E32DC:
+ cmp r0, 0x1
+ bne _080E3334
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x60
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0xC]
+ subs r0, 0xD
+ strh r0, [r4, 0xC]
+ movs r2, 0xA
+ ldrsh r1, [r4, r2]
+ movs r0, 0xC
+ ldrsh r2, [r4, r0]
+ adds r0, r5, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ bne _080E3360
+ movs r0, 0
+ strh r0, [r4, 0xE]
+ adds r0, r5, 0
+ bl sub_8075980
+ ldr r1, _080E3330 @ =gSprites
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ adds r0, r1
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+_080E3328:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E3360
+ .align 2, 0
+_080E3330: .4byte gSprites
+_080E3334:
+ ldr r0, _080E336C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r1, 0
+ bl LoadBattleMonGfxAndAnimate
+ adds r3, r7, 0
+ mov r4, r9
+ movs r1, 0xF
+ mov r2, r8
+ adds r0, r4, r2
+ adds r0, 0x26
+ movs r2, 0
+_080E334C:
+ strh r2, [r0]
+ subs r0, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bge _080E334C
+ adds r0, r3, r6
+ lsls r0, 3
+ adds r0, r4
+ ldr r1, _080E3370 @ =sub_80E3374
+ str r1, [r0]
+_080E3360:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E336C: .4byte gBattleAnimAttacker
+_080E3370: .4byte sub_80E3374
+ thumb_func_end sub_80E3294
+
+ thumb_func_start sub_80E3374
+sub_80E3374: @ 80E3374
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r1, _080E33A0 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r5, [r4, r0]
+ cmp r5, 0x1
+ beq _080E33D8
+ cmp r5, 0x1
+ bgt _080E33A4
+ cmp r5, 0
+ beq _080E33AE
+ b _080E34C6
+ .align 2, 0
+_080E33A0: .4byte gTasks
+_080E33A4:
+ cmp r5, 0x2
+ beq _080E3444
+ cmp r5, 0x3
+ beq _080E3480
+ b _080E34C6
+_080E33AE:
+ ldr r0, _080E33D0 @ =gSprites
+ lsls r1, r3, 4
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, _080E33D4 @ =0x0000ff38
+ strh r0, [r1, 0x26]
+ movs r0, 0xC8
+ strh r0, [r1, 0x24]
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ subs r0, 0xCD
+ ands r0, r2
+ strb r0, [r1]
+ strh r5, [r4, 0x1C]
+ b _080E3472
+ .align 2, 0
+_080E33D0: .4byte gSprites
+_080E33D4: .4byte 0x0000ff38
+_080E33D8:
+ ldrh r1, [r4, 0x1C]
+ adds r1, 0x70
+ movs r5, 0
+ strh r1, [r4, 0x1C]
+ ldr r2, _080E343C @ =gSprites
+ lsls r0, r3, 4
+ adds r0, r3
+ lsls r0, 2
+ adds r2, r0, r2
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r3, [r2, 0x26]
+ adds r1, r3
+ strh r1, [r2, 0x26]
+ movs r1, 0x22
+ ldrsh r0, [r2, r1]
+ movs r3, 0x26
+ ldrsh r1, [r2, r3]
+ adds r0, r1
+ movs r1, 0x20
+ negs r1, r1
+ cmp r0, r1
+ blt _080E3408
+ strh r5, [r2, 0x24]
+_080E3408:
+ movs r1, 0x26
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ ble _080E3412
+ strh r5, [r2, 0x26]
+_080E3412:
+ movs r3, 0x26
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bne _080E34C6
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x76
+ bl PlaySE12WithPanning
+ ldr r1, _080E3440 @ =0xfffff800
+ adds r0, r1, 0
+ ldrh r2, [r4, 0x1C]
+ adds r0, r2
+ strh r0, [r4, 0x1C]
+ b _080E3472
+ .align 2, 0
+_080E343C: .4byte gSprites
+_080E3440: .4byte 0xfffff800
+_080E3444:
+ ldrh r0, [r4, 0x1C]
+ subs r0, 0x70
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080E3454
+ movs r0, 0
+ strh r0, [r4, 0x1C]
+_080E3454:
+ ldr r0, _080E347C @ =gSprites
+ lsls r1, r3, 4
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldrh r2, [r4, 0x1C]
+ lsls r2, 16
+ asrs r2, 24
+ ldrh r0, [r1, 0x26]
+ subs r0, r2
+ strh r0, [r1, 0x26]
+ movs r3, 0x1C
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ bne _080E34C6
+_080E3472:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E34C6
+ .align 2, 0
+_080E347C: .4byte gSprites
+_080E3480:
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x70
+ strh r0, [r4, 0x1C]
+ ldr r2, _080E34CC @ =gSprites
+ lsls r1, r3, 4
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r2
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r2, [r1, 0x26]
+ adds r0, r2
+ strh r0, [r1, 0x26]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080E34A4
+ movs r0, 0
+ strh r0, [r1, 0x26]
+_080E34A4:
+ movs r3, 0x26
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _080E34C6
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x76
+ bl PlaySE12WithPanning
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080E34C6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E34CC: .4byte gSprites
+ thumb_func_end sub_80E3374
+
+ thumb_func_start sub_80E34D0
+sub_80E34D0: @ 80E34D0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080E34F4 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E34FC
+ ldrb r0, [r4]
+ bl sub_807685C
+ subs r0, 0x2
+ adds r1, r5, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldr r4, _080E34F8 @ =0x0000ff70
+ b _080E350C
+ .align 2, 0
+_080E34F4: .4byte gBattleAnimTarget
+_080E34F8: .4byte 0x0000ff70
+_080E34FC:
+ ldrb r0, [r4]
+ bl sub_807685C
+ adds r0, 0x2
+ adds r1, r5, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldr r4, _080E3528 @ =0x0000ffa0
+_080E350C:
+ ldr r0, _080E352C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ strh r4, [r5, 0x26]
+ ldr r0, _080E3530 @ =sub_80E3534
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E3528: .4byte 0x0000ffa0
+_080E352C: .4byte gBattleAnimTarget
+_080E3530: .4byte sub_80E3534
+ thumb_func_end sub_80E34D0
+
+ thumb_func_start sub_80E3534
+sub_80E3534: @ 80E3534
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _080E3542
+ b _080E365E
+_080E3542:
+ lsls r0, 2
+ ldr r1, _080E354C @ =_080E3550
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E354C: .4byte _080E3550
+ .align 2, 0
+_080E3550:
+ .4byte _080E3564
+ .4byte _080E3588
+ .4byte _080E35C8
+ .4byte _080E35F8
+ .4byte _080E3624
+_080E3564:
+ ldrh r0, [r4, 0x26]
+ adds r0, 0xA
+ strh r0, [r4, 0x26]
+ lsls r0, 16
+ cmp r0, 0
+ blt _080E365E
+ movs r0, 0x3F
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xC6
+ bl PlaySE12WithPanning
+ movs r0, 0
+ strh r0, [r4, 0x26]
+ b _080E361C
+_080E3588:
+ ldrh r1, [r4, 0x30]
+ adds r1, 0x4
+ movs r5, 0
+ strh r1, [r4, 0x30]
+ ldr r2, _080E35C4 @ =gSineTable
+ movs r3, 0x30
+ ldrsh r0, [r4, r3]
+ lsls r0, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 19
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x7F
+ ble _080E365E
+ movs r0, 0x3F
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xC6
+ bl PlaySE12WithPanning
+ strh r5, [r4, 0x30]
+ strh r5, [r4, 0x26]
+ b _080E361C
+ .align 2, 0
+_080E35C4: .4byte gSineTable
+_080E35C8:
+ ldrh r1, [r4, 0x30]
+ adds r1, 0x6
+ movs r3, 0
+ strh r1, [r4, 0x30]
+ ldr r2, _080E35F4 @ =gSineTable
+ movs r5, 0x30
+ ldrsh r0, [r4, r5]
+ lsls r0, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 20
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x7F
+ ble _080E365E
+ strh r3, [r4, 0x30]
+ strh r3, [r4, 0x26]
+ b _080E361C
+ .align 2, 0
+_080E35F4: .4byte gSineTable
+_080E35F8:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _080E365E
+ movs r0, 0x3F
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xB9
+ bl PlaySE12WithPanning
+ movs r0, 0
+ strh r0, [r4, 0x30]
+_080E361C:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080E365E
+_080E3624:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _080E365E
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x32]
+ adds r1, 0x1
+ strh r1, [r4, 0x32]
+ movs r0, 0x1
+ ands r1, r0
+ adds r3, r4, 0
+ adds r3, 0x3E
+ lsls r1, 2
+ ldrb r2, [r3]
+ subs r0, 0x6
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x7
+ bne _080E365E
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E365E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E3534
+
+ thumb_func_start sub_80E3664
+sub_80E3664: @ 80E3664
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r0, 0x1
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ lsls r0, 16
+ lsrs r1, r0, 16
+ str r1, [sp]
+ asrs r6, r0, 16
+ cmp r6, 0
+ blt _080E36A6
+ movs r0, 0x1
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ lsls r0, 16
+ lsrs r1, r0, 16
+ mov r9, r1
+ asrs r1, r0, 16
+ cmp r1, 0
+ bge _080E36B4
+ lsls r0, r6, 4
+ adds r0, r6
+ lsls r0, 2
+ ldr r1, _080E36B0 @ =gSprites
+ adds r0, r1
+ bl obj_delete_but_dont_free_vram
+_080E36A6:
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+ b _080E37BA
+ .align 2, 0
+_080E36B0: .4byte gSprites
+_080E36B4:
+ ldr r4, _080E3744 @ =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r5, r0, r4
+ ldrh r0, [r5, 0x24]
+ adds r0, 0x18
+ movs r1, 0
+ strh r0, [r5, 0x24]
+ lsls r0, r6, 4
+ adds r0, r6
+ lsls r0, 2
+ adds r6, r0, r4
+ ldrh r0, [r6, 0x24]
+ subs r0, 0x18
+ strh r0, [r6, 0x24]
+ strh r1, [r5, 0x2E]
+ strh r1, [r6, 0x2E]
+ strh r1, [r5, 0x30]
+ strh r1, [r6, 0x30]
+ strh r1, [r5, 0x32]
+ strh r1, [r6, 0x32]
+ movs r0, 0x10
+ strh r0, [r5, 0x34]
+ ldr r0, _080E3748 @ =0x0000fff0
+ strh r0, [r6, 0x34]
+ strh r1, [r5, 0x36]
+ movs r0, 0x80
+ strh r0, [r6, 0x36]
+ movs r0, 0x18
+ strh r0, [r5, 0x38]
+ strh r0, [r6, 0x38]
+ strh r7, [r5, 0x3A]
+ strh r7, [r6, 0x3A]
+ strh r1, [r5, 0x3C]
+ strh r1, [r6, 0x3C]
+ ldr r2, _080E374C @ =gTasks
+ lsls r3, r7, 2
+ adds r0, r3, r7
+ lsls r0, 3
+ adds r0, r2
+ movs r1, 0x2
+ strh r1, [r0, 0x8]
+ ldr r0, _080E3750 @ =gUnknown_2024018
+ ldr r1, [r0]
+ ldr r0, _080E3754 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ ldr r1, [r1]
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ mov r12, r4
+ mov r10, r2
+ mov r8, r3
+ cmp r0, 0
+ bne _080E3758
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ adds r2, r6, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ b _080E376E
+ .align 2, 0
+_080E3744: .4byte gSprites
+_080E3748: .4byte 0x0000fff0
+_080E374C: .4byte gTasks
+_080E3750: .4byte gUnknown_2024018
+_080E3754: .4byte gBattleAnimTarget
+_080E3758:
+ adds r1, r5, 0
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ adds r1, r6, 0
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ orrs r0, r2
+ strb r0, [r1]
+_080E376E:
+ mov r1, r9
+ lsls r0, r1, 16
+ asrs r0, 16
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ mov r0, r12
+ adds r4, r2, r0
+ ldrb r1, [r4, 0x1]
+ movs r3, 0xD
+ negs r3, r3
+ adds r0, r3, 0
+ ands r0, r1
+ strb r0, [r4, 0x1]
+ ldr r1, [sp]
+ lsls r0, r1, 16
+ asrs r0, 16
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ mov r0, r12
+ adds r4, r1, r0
+ ldrb r0, [r4, 0x1]
+ ands r3, r0
+ strb r3, [r4, 0x1]
+ mov r3, r12
+ adds r3, 0x1C
+ adds r2, r3
+ ldr r0, _080E37CC @ =sub_80E37FC
+ str r0, [r2]
+ adds r1, r3
+ str r0, [r1]
+ mov r1, r8
+ adds r0, r1, r7
+ lsls r0, 3
+ add r0, r10
+ ldr r1, _080E37D0 @ =sub_80E37D4
+ str r1, [r0]
+_080E37BA:
+ 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
+_080E37CC: .4byte sub_80E37FC
+_080E37D0: .4byte sub_80E37D4
+ thumb_func_end sub_80E3664
+
+ thumb_func_start sub_80E37D4
+sub_80E37D4: @ 80E37D4
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _080E37F8 @ =gTasks
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080E37F2
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080E37F2:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E37F8: .4byte gTasks
+ thumb_func_end sub_80E37D4
+
+ thumb_func_start sub_80E37FC
+sub_80E37FC: @ 80E37FC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E3846
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldr r0, _080E3870 @ =gUnknown_2024018
+ ldr r1, [r0]
+ ldr r0, _080E3874 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ ldr r1, [r1]
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080E3846
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r1, r2, 29
+ lsrs r1, 31
+ movs r0, 0x1
+ eors r1, r0
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_080E3846:
+ ldrh r0, [r4, 0x34]
+ ldrh r1, [r4, 0x36]
+ adds r0, r1
+ movs r5, 0
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x36]
+ movs r2, 0x36
+ ldrsh r0, [r4, r2]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080E3878
+ cmp r0, 0x1
+ beq _080E3890
+ b _080E38CE
+ .align 2, 0
+_080E3870: .4byte gUnknown_2024018
+_080E3874: .4byte gBattleAnimTarget
+_080E3878:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3C
+ bne _080E38CE
+ strh r5, [r4, 0x32]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080E38CE
+_080E3890:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080E38CE
+ strh r5, [r4, 0x32]
+ ldrh r0, [r4, 0x38]
+ subs r0, 0x2
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080E38CE
+ ldr r3, _080E38D4 @ =gTasks
+ movs r2, 0x3C
+ ldrsh r1, [r4, r2]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl obj_delete_but_dont_free_vram
+_080E38CE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E38D4: .4byte gTasks
+ thumb_func_end sub_80E37FC
+
+ thumb_func_start sub_80E38D8
+sub_80E38D8: @ 80E38D8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r3, _080E3924 @ =gBattleAnimArgs
+ movs r2, 0
+ strh r2, [r3, 0xE]
+ ldr r1, _080E3928 @ =gUnknown_2037EFE
+ ldrb r0, [r1]
+ ldrb r1, [r1]
+ adds r0, r1, 0
+ subs r0, 0x3D
+ lsls r0, 24
+ lsrs r0, 24
+ adds r2, r1, 0
+ cmp r0, 0x1E
+ bhi _080E38FC
+ movs r0, 0x1
+ strh r0, [r3, 0xE]
+_080E38FC:
+ adds r0, r2, 0
+ subs r0, 0x5C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x6C
+ bhi _080E390C
+ movs r0, 0x2
+ strh r0, [r3, 0xE]
+_080E390C:
+ lsls r0, r1, 24
+ lsrs r0, 24
+ cmp r0, 0xC8
+ bls _080E3918
+ movs r0, 0x3
+ strh r0, [r3, 0xE]
+_080E3918:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E3924: .4byte gBattleAnimArgs
+_080E3928: .4byte gUnknown_2037EFE
+ thumb_func_end sub_80E38D8
+
+ thumb_func_start sub_80E392C
+sub_80E392C: @ 80E392C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r1, _080E395C @ =gTasks
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x4
+ bls _080E3952
+ b _080E3E6C
+_080E3952:
+ lsls r0, 2
+ ldr r1, _080E3960 @ =_080E3964
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E395C: .4byte gTasks
+_080E3960: .4byte _080E3964
+ .align 2, 0
+_080E3964:
+ .4byte _080E3978
+ .4byte _080E3A2C
+ .4byte _080E3BEC
+ .4byte _080E3D0C
+ .4byte _080E3D90
+_080E3978:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080E39C4 @ =gTasks
+ mov r2, r8
+ lsls r4, r2, 2
+ adds r0, r4, r2
+ lsls r0, 3
+ adds r6, r0, r1
+ movs r3, 0x80
+ lsls r3, 4
+ adds r0, r3, 0
+ ldrh r1, [r6, 0xA]
+ adds r0, r1
+ strh r0, [r6, 0xA]
+ ldr r0, _080E39C8 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _080E39D0
+ ldr r2, _080E39CC @ =gSprites
+ lsls r3, r7, 4
+ adds r1, r3, r7
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r6, 0xA]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r4, [r1, 0x24]
+ adds r0, r4
+ strh r0, [r1, 0x24]
+ b _080E39EA
+ .align 2, 0
+_080E39C4: .4byte gTasks
+_080E39C8: .4byte gBattleAnimAttacker
+_080E39CC: .4byte gSprites
+_080E39D0:
+ ldr r3, _080E3A24 @ =gSprites
+ lsls r4, r7, 4
+ adds r2, r4, r7
+ lsls r2, 2
+ adds r2, r3
+ ldrh r1, [r6, 0xA]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ adds r2, r3, 0
+ adds r3, r4, 0
+_080E39EA:
+ ldr r1, _080E3A28 @ =gTasks
+ mov r0, r9
+ add r0, r8
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrb r0, [r4, 0xA]
+ strh r0, [r4, 0xA]
+ adds r1, r3, r7
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r1, 0x24]
+ ldrh r1, [r1, 0x20]
+ adds r0, r1
+ lsls r0, 16
+ movs r1, 0x80
+ lsls r1, 14
+ adds r0, r1
+ movs r1, 0x98
+ lsls r1, 17
+ cmp r0, r1
+ bhi _080E3A16
+ b _080E3E6C
+_080E3A16:
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E3E6C
+ .align 2, 0
+_080E3A24: .4byte gSprites
+_080E3A28: .4byte gTasks
+_080E3A2C:
+ ldr r4, _080E3A90 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E3ACC
+ ldr r7, _080E3A94 @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, _080E3A98 @ =gPlayerParty
+ adds r0, r5
+ movs r1, 0
+ bl GetMonData
+ mov r10, r0
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0x1
+ bl GetMonData
+ mov r9, r0
+ ldr r0, _080E3A9C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldrb r2, [r4]
+ ldr r1, [r0]
+ lsls r0, r2, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _080E3AA0
+ lsls r0, r2, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r5, r0, 16
+ b _080E3AA2
+ .align 2, 0
+_080E3A90: .4byte gBattleAnimAttacker
+_080E3A94: .4byte gBattlerPartyIndexes
+_080E3A98: .4byte gPlayerParty
+_080E3A9C: .4byte gUnknown_2024018
+_080E3AA0:
+ ldrh r5, [r1, 0x2]
+_080E3AA2:
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ ldr r2, _080E3AC8 @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x43
+ ldrb r0, [r1]
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r7, 0
+ movs r6, 0x88
+ lsls r6, 1
+ b _080E3B54
+ .align 2, 0
+_080E3AC8: .4byte gSprites
+_080E3ACC:
+ ldr r7, _080E3B24 @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, _080E3B28 @ =gEnemyParty
+ adds r0, r5
+ movs r1, 0
+ bl GetMonData
+ mov r10, r0
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0x1
+ bl GetMonData
+ mov r9, r0
+ ldr r0, _080E3B2C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldrb r2, [r4]
+ ldr r1, [r0]
+ lsls r0, r2, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _080E3B30
+ lsls r0, r2, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r5, r0, 16
+ b _080E3B32
+ .align 2, 0
+_080E3B24: .4byte gBattlerPartyIndexes
+_080E3B28: .4byte gEnemyParty
+_080E3B2C: .4byte gUnknown_2024018
+_080E3B30:
+ ldrh r5, [r1, 0x2]
+_080E3B32:
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ ldr r2, _080E3BD0 @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x43
+ ldrb r0, [r1]
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r7, 0x1
+ ldr r6, _080E3BD4 @ =0x0000ffe0
+_080E3B54:
+ ldr r0, _080E3BD8 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r3, r6, 16
+ asrs r3, 16
+ str r0, [sp]
+ str r4, [sp, 0x4]
+ mov r2, r10
+ str r2, [sp, 0x8]
+ mov r4, r9
+ str r4, [sp, 0xC]
+ ldr r4, _080E3BDC @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ str r0, [sp, 0x10]
+ movs r0, 0
+ str r0, [sp, 0x14]
+ adds r0, r5, 0
+ adds r1, r7, 0
+ movs r2, 0
+ bl sub_80768D0
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _080E3BE0 @ =gUnknown_2024018
+ ldr r1, [r0]
+ ldrb r0, [r4]
+ ldr r1, [r1]
+ lsls r0, 2
+ adds r0, r1
+ ldrh r0, [r0, 0x2]
+ cmp r0, 0
+ beq _080E3BBE
+ ldr r1, _080E3BD0 @ =gSprites
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x5]
+ lsrs r0, 4
+ lsls r0, 4
+ movs r2, 0x80
+ lsls r2, 1
+ adds r1, r2, 0
+ orrs r0, r1
+ ldr r3, _080E3BE4 @ =0x00007fff
+ movs r1, 0x10
+ movs r2, 0x6
+ bl BlendPalette
+_080E3BBE:
+ ldr r0, _080E3BE8 @ =gTasks
+ mov r3, r8
+ lsls r1, r3, 2
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ strh r5, [r1, 0x26]
+ b _080E3D82
+ .align 2, 0
+_080E3BD0: .4byte gSprites
+_080E3BD4: .4byte 0x0000ffe0
+_080E3BD8: .4byte gBattleAnimTarget
+_080E3BDC: .4byte gBattleAnimAttacker
+_080E3BE0: .4byte gUnknown_2024018
+_080E3BE4: .4byte 0x00007fff
+_080E3BE8: .4byte gTasks
+_080E3BEC:
+ ldr r1, _080E3C38 @ =gTasks
+ mov r0, r8
+ lsls r4, r0, 2
+ adds r0, r4, r0
+ lsls r0, 3
+ adds r6, r0, r1
+ ldrh r0, [r6, 0x26]
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r1, 0x80
+ lsls r1, 4
+ adds r0, r1, 0
+ ldrh r2, [r6, 0xA]
+ adds r0, r2
+ strh r0, [r6, 0xA]
+ ldr r0, _080E3C3C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _080E3C44
+ ldr r3, _080E3C40 @ =gSprites
+ lsls r4, r5, 4
+ adds r2, r4, r5
+ lsls r2, 2
+ adds r2, r3
+ ldrh r1, [r6, 0xA]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ adds r2, r3, 0
+ adds r3, r4, 0
+ b _080E3C5A
+ .align 2, 0
+_080E3C38: .4byte gTasks
+_080E3C3C: .4byte gBattleAnimAttacker
+_080E3C40: .4byte gSprites
+_080E3C44:
+ ldr r2, _080E3CA8 @ =gSprites
+ lsls r3, r5, 4
+ adds r1, r3, r5
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r6, 0xA]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r4, [r1, 0x24]
+ adds r0, r4
+ strh r0, [r1, 0x24]
+_080E3C5A:
+ ldr r1, _080E3CAC @ =gTasks
+ mov r0, r9
+ add r0, r8
+ lsls r0, 3
+ adds r6, r0, r1
+ ldrb r0, [r6, 0xA]
+ strh r0, [r6, 0xA]
+ adds r1, r3, r5
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r1, 0x24]
+ ldrh r1, [r1, 0x20]
+ adds r0, r1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ movs r1, 0x24
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080E3CDA
+ ldr r0, _080E3CB0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E3CB8
+ lsls r4, r5, 16
+ asrs r4, 16
+ ldr r0, _080E3CB4 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bge _080E3CDA
+ b _080E3CCE
+ .align 2, 0
+_080E3CA8: .4byte gSprites
+_080E3CAC: .4byte gTasks
+_080E3CB0: .4byte gBattleAnimAttacker
+_080E3CB4: .4byte gBattleAnimTarget
+_080E3CB8:
+ lsls r4, r5, 16
+ asrs r4, 16
+ ldr r0, _080E3CFC @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ ble _080E3CDA
+_080E3CCE:
+ ldrh r0, [r6, 0x24]
+ adds r0, 0x1
+ strh r0, [r6, 0x24]
+ ldr r1, _080E3D00 @ =gBattleAnimArgs
+ ldr r0, _080E3D04 @ =0x0000ffff
+ strh r0, [r1, 0xE]
+_080E3CDA:
+ lsls r0, r5, 16
+ movs r2, 0x80
+ lsls r2, 14
+ adds r0, r2
+ movs r1, 0x98
+ lsls r1, 17
+ cmp r0, r1
+ bhi _080E3CEC
+ b _080E3E6C
+_080E3CEC:
+ ldr r0, _080E3D08 @ =gTasks
+ mov r1, r9
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0
+ strh r0, [r1, 0xA]
+ b _080E3D82
+ .align 2, 0
+_080E3CFC: .4byte gBattleAnimTarget
+_080E3D00: .4byte gBattleAnimArgs
+_080E3D04: .4byte 0x0000ffff
+_080E3D08: .4byte gTasks
+_080E3D0C:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080E3D58 @ =gTasks
+ mov r3, r8
+ lsls r4, r3, 2
+ adds r0, r4, r3
+ lsls r0, 3
+ adds r0, r1
+ ldrh r0, [r0, 0x26]
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ ldr r5, _080E3D5C @ =gSprites
+ adds r0, r5
+ bl sub_8076B20
+ ldr r0, _080E3D60 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _080E3D64
+ lsls r1, r7, 4
+ adds r1, r7
+ lsls r1, 2
+ adds r1, r5
+ ldrh r0, [r1, 0x20]
+ negs r0, r0
+ subs r0, 0x20
+ strh r0, [r1, 0x24]
+ b _080E3D78
+ .align 2, 0
+_080E3D58: .4byte gTasks
+_080E3D5C: .4byte gSprites
+_080E3D60: .4byte gBattleAnimAttacker
+_080E3D64:
+ lsls r0, r7, 4
+ adds r0, r7
+ lsls r0, 2
+ adds r0, r5
+ ldrh r2, [r0, 0x20]
+ movs r4, 0x88
+ lsls r4, 1
+ adds r1, r4, 0
+ subs r1, r2
+ strh r1, [r0, 0x24]
+_080E3D78:
+ ldr r0, _080E3D8C @ =gTasks
+ mov r1, r9
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+_080E3D82:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _080E3E6C
+ .align 2, 0
+_080E3D8C: .4byte gTasks
+_080E3D90:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080E3E04 @ =gTasks
+ mov r0, r8
+ lsls r4, r0, 2
+ adds r0, r4, r0
+ lsls r0, 3
+ adds r2, r0, r1
+ movs r1, 0x80
+ lsls r1, 4
+ adds r0, r1, 0
+ ldrh r3, [r2, 0xA]
+ adds r0, r3
+ strh r0, [r2, 0xA]
+ ldr r0, _080E3E08 @ =gBattleAnimAttacker
+ mov r10, r0
+ ldrb r0, [r0]
+ str r2, [sp, 0x18]
+ bl GetBattlerSide
+ lsls r0, 24
+ mov r9, r4
+ ldr r2, [sp, 0x18]
+ cmp r0, 0
+ bne _080E3E10
+ ldr r1, _080E3E0C @ =gSprites
+ lsls r5, r7, 4
+ adds r0, r5, r7
+ lsls r0, 2
+ adds r6, r0, r1
+ ldrh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r6, 0x24]
+ adds r0, r1
+ strh r0, [r6, 0x24]
+ movs r2, 0x24
+ ldrsh r4, [r6, r2]
+ movs r3, 0x20
+ ldrsh r0, [r6, r3]
+ adds r4, r0
+ mov r1, r10
+ ldrb r0, [r1]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r5, 0
+ cmp r4, r0
+ blt _080E3E48
+ movs r2, 0
+ strh r2, [r6, 0x24]
+ b _080E3E48
+ .align 2, 0
+_080E3E04: .4byte gTasks
+_080E3E08: .4byte gBattleAnimAttacker
+_080E3E0C: .4byte gSprites
+_080E3E10:
+ ldr r1, _080E3E7C @ =gSprites
+ lsls r5, r7, 4
+ adds r0, r5, r7
+ lsls r0, 2
+ adds r6, r0, r1
+ ldrh r1, [r2, 0xA]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r6, 0x24]
+ subs r0, r1
+ strh r0, [r6, 0x24]
+ movs r3, 0x24
+ ldrsh r4, [r6, r3]
+ movs r1, 0x20
+ ldrsh r0, [r6, r1]
+ adds r4, r0
+ mov r2, r10
+ ldrb r0, [r2]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r5, 0
+ cmp r4, r0
+ bgt _080E3E48
+ movs r4, 0
+ strh r4, [r6, 0x24]
+_080E3E48:
+ ldr r1, _080E3E80 @ =gTasks
+ mov r0, r9
+ add r0, r8
+ lsls r0, 3
+ adds r0, r1
+ ldrb r1, [r0, 0xA]
+ strh r1, [r0, 0xA]
+ ldr r1, _080E3E7C @ =gSprites
+ adds r0, r3, r7
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0x24
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080E3E6C
+ mov r0, r8
+ bl DestroyAnimVisualTask
+_080E3E6C:
+ 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
+_080E3E7C: .4byte gSprites
+_080E3E80: .4byte gTasks
+ thumb_func_end sub_80E392C
+
+ thumb_func_start sub_80E3E84
+sub_80E3E84: @ 80E3E84
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080E3E96
+ cmp r0, 0x1
+ beq _080E3F36
+ b _080E3FB8
+_080E3E96:
+ ldr r0, _080E3F14 @ =gBattleAnimArgs
+ movs r2, 0xE
+ ldrsh r1, [r0, r2]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080E3F28
+ movs r0, 0x3F
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x73
+ bl PlaySE12WithPanning
+ ldr r0, _080E3F18 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ strh r0, [r4, 0x22]
+ ldr r0, _080E3F1C @ =0x0000ffe0
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x1
+ strh r0, [r4, 0x3C]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r0, _080E3F20 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E3FB8
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ ldr r2, _080E3F24 @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x43
+ ldrb r0, [r1]
+ subs r0, 0x1
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ b _080E3FB8
+ .align 2, 0
+_080E3F14: .4byte gBattleAnimArgs
+_080E3F18: .4byte gBattleAnimTarget
+_080E3F1C: .4byte 0x0000ffe0
+_080E3F20: .4byte gBattleAnimAttacker
+_080E3F24: .4byte gSprites
+_080E3F28:
+ adds r0, r4, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ b _080E3FB8
+_080E3F36:
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x30]
+ adds r0, r2, 0x5
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7F
+ ble _080E3F6A
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ adds r0, r2, 0
+ subs r0, 0x7A
+ strh r0, [r4, 0x30]
+_080E3F6A:
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r2, 0
+ ldrh r1, [r4, 0x32]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ ldr r0, _080E3F94 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E3F98
+ ldrh r2, [r4, 0x32]
+ lsls r1, r2, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x24]
+ subs r0, r1
+ strh r0, [r4, 0x24]
+ adds r1, r2, 0
+ b _080E3FA4
+ .align 2, 0
+_080E3F94: .4byte gBattleAnimAttacker
+_080E3F98:
+ ldrh r1, [r4, 0x32]
+ lsls r0, r1, 16
+ asrs r0, 24
+ ldrh r2, [r4, 0x24]
+ adds r0, r2
+ strh r0, [r4, 0x24]
+_080E3FA4:
+ movs r0, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x32]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x2
+ bne _080E3FB8
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E3FB8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E3E84
+
+ thumb_func_start sub_80E3FC0
+sub_80E3FC0: @ 80E3FC0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080E3FE8 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x26
+ ldrsh r0, [r0, r2]
+ adds r3, r1, 0
+ cmp r0, 0x4
+ bls _080E3FDC
+ b _080E412E
+_080E3FDC:
+ lsls r0, 2
+ ldr r1, _080E3FEC @ =_080E3FF0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E3FE8: .4byte gTasks
+_080E3FEC: .4byte _080E3FF0
+ .align 2, 0
+_080E3FF0:
+ .4byte _080E4004
+ .4byte _080E4054
+ .4byte _080E40B0
+ .4byte _080E40C8
+ .4byte _080E412E
+_080E4004:
+ ldr r0, _080E4048 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r0, _080E404C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r2, r0, 0
+ ldr r1, _080E4050 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r1
+ movs r0, 0x6
+ strh r0, [r1, 0x8]
+ cmp r5, r2
+ ble _080E403A
+ negs r0, r0
+ strh r0, [r1, 0x8]
+_080E403A:
+ strh r5, [r1, 0xA]
+ strh r2, [r1, 0xC]
+ ldrh r0, [r1, 0x26]
+ adds r0, 0x1
+ strh r0, [r1, 0x26]
+ b _080E414C
+ .align 2, 0
+_080E4048: .4byte gBattleAnimAttacker
+_080E404C: .4byte gBattleAnimTarget
+_080E4050: .4byte gTasks
+_080E4054:
+ ldr r1, _080E4090 @ =gBattlerSpriteIds
+ ldr r0, _080E4094 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r1, _080E4098 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r1, r0, r1
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r2, r0, r3
+ ldrh r0, [r2, 0x8]
+ ldrh r3, [r1, 0x24]
+ adds r0, r3
+ strh r0, [r1, 0x24]
+ movs r3, 0x8
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ ble _080E409C
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xC
+ ldrsh r1, [r2, r3]
+ b _080E4122
+ .align 2, 0
+_080E4090: .4byte gBattlerSpriteIds
+_080E4094: .4byte gBattleAnimAttacker
+_080E4098: .4byte gSprites
+_080E409C:
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xC
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ bgt _080E414C
+ b _080E4126
+_080E40B0:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r3
+ movs r2, 0x8
+ ldrsh r1, [r0, r2]
+ negs r1, r1
+ strh r1, [r0, 0x8]
+ ldrh r1, [r0, 0x26]
+ adds r1, 0x1
+ strh r1, [r0, 0x26]
+ b _080E414C
+_080E40C8:
+ ldr r1, _080E4108 @ =gBattlerSpriteIds
+ ldr r0, _080E410C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r1, _080E4110 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r1, r0, r1
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r2, r0, r3
+ ldrh r0, [r2, 0x8]
+ ldrh r3, [r1, 0x24]
+ adds r0, r3
+ strh r0, [r1, 0x24]
+ movs r3, 0x8
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bge _080E4114
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xA
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ bgt _080E414C
+ b _080E4126
+ .align 2, 0
+_080E4108: .4byte gBattlerSpriteIds
+_080E410C: .4byte gBattleAnimAttacker
+_080E4110: .4byte gSprites
+_080E4114:
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xA
+ ldrsh r1, [r2, r3]
+_080E4122:
+ cmp r0, r1
+ blt _080E414C
+_080E4126:
+ ldrh r0, [r2, 0x26]
+ adds r0, 0x1
+ strh r0, [r2, 0x26]
+ b _080E414C
+_080E412E:
+ ldr r1, _080E4154 @ =gBattlerSpriteIds
+ ldr r0, _080E4158 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r1, _080E415C @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0
+ strh r1, [r0, 0x24]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080E414C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E4154: .4byte gBattlerSpriteIds
+_080E4158: .4byte gBattleAnimAttacker
+_080E415C: .4byte gSprites
+ thumb_func_end sub_80E3FC0
+
+ thumb_func_start sub_80E4160
+sub_80E4160: @ 80E4160
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080E41C8 @ =gTasks
+ adds r4, r1, r0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ strh r0, [r4, 0xE]
+ ldr r0, _080E41CC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r2, 0x1
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ bne _080E4194
+ movs r1, 0x1
+_080E4194:
+ strh r1, [r4, 0x10]
+ ldr r2, _080E41D0 @ =gSprites
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x22]
+ strh r0, [r4, 0x14]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x20]
+ strh r0, [r4, 0x12]
+ strh r5, [r4, 0x1A]
+ strh r5, [r4, 0x1E]
+ movs r0, 0x1
+ strh r0, [r4, 0x1C]
+ strh r5, [r4, 0x20]
+ ldr r0, _080E41D4 @ =sub_80E41D8
+ str r0, [r4]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E41C8: .4byte gTasks
+_080E41CC: .4byte gBattleAnimAttacker
+_080E41D0: .4byte gSprites
+_080E41D4: .4byte sub_80E41D8
+ thumb_func_end sub_80E4160
+
+ thumb_func_start sub_80E41D8
+sub_80E41D8: @ 80E41D8
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080E41FC @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080E4280
+ cmp r0, 0x1
+ bgt _080E4200
+ cmp r0, 0
+ beq _080E4206
+ b _080E42D6
+ .align 2, 0
+_080E41FC: .4byte gTasks
+_080E4200:
+ cmp r0, 0x2
+ beq _080E42D0
+ b _080E42D6
+_080E4206:
+ ldrh r0, [r4, 0x1E]
+ adds r0, 0x8
+ movs r2, 0xFF
+ ands r0, r2
+ strh r0, [r4, 0x1E]
+ ldr r5, _080E4278 @ =gSprites
+ movs r6, 0xE
+ ldrsh r0, [r4, r6]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ ldr r3, _080E427C @ =gSineTable
+ movs r6, 0x1E
+ ldrsh r0, [r4, r6]
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 21
+ strh r0, [r1, 0x24]
+ ldrh r0, [r4, 0x1A]
+ adds r0, 0x2
+ ands r0, r2
+ strh r0, [r4, 0x1A]
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r5
+ movs r6, 0x1A
+ ldrsh r0, [r4, r6]
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 19
+ ldrh r1, [r4, 0x10]
+ muls r0, r1
+ ldrh r1, [r4, 0x12]
+ adds r0, r1
+ strh r0, [r2, 0x20]
+ movs r6, 0x1A
+ ldrsh r0, [r4, r6]
+ cmp r0, 0
+ bne _080E42D6
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrh r1, [r4, 0x12]
+ strh r1, [r0, 0x20]
+ b _080E42C0
+ .align 2, 0
+_080E4278: .4byte gSprites
+_080E427C: .4byte gSineTable
+_080E4280:
+ ldrh r0, [r4, 0x1E]
+ adds r0, 0x8
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x1E]
+ ldr r3, _080E42C8 @ =gSprites
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ ldr r2, _080E42CC @ =gSineTable
+ movs r5, 0x1E
+ ldrsh r0, [r4, r5]
+ lsls r0, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 21
+ strh r0, [r1, 0x24]
+ movs r6, 0x1E
+ ldrsh r2, [r4, r6]
+ cmp r2, 0
+ bne _080E42D6
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ strh r2, [r1, 0x24]
+_080E42C0:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E42D6
+ .align 2, 0
+_080E42C8: .4byte gSprites
+_080E42CC: .4byte gSineTable
+_080E42D0:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080E42D6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E41D8
+
+ thumb_func_start sub_80E42DC
+sub_80E42DC: @ 80E42DC
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080E4330 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ ldrh r0, [r4, 0x2E]
+ ldrh r1, [r4, 0x30]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x14
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x14
+ bl Sin
+ strh r0, [r4, 0x26]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080E4322
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E4322:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E4330: .4byte gBattleAnimTarget
+ thumb_func_end sub_80E42DC
+
+ thumb_func_start sub_80E4334
+sub_80E4334: @ 80E4334
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080E436C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E4378
+ ldr r2, _080E4370 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r2, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r0, _080E4374 @ =0x0000fff5
+ strh r0, [r4, 0x2E]
+ movs r0, 0xC0
+ strh r0, [r4, 0x30]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ b _080E4392
+ .align 2, 0
+_080E436C: .4byte gBattleAnimTarget
+_080E4370: .4byte gBattleAnimArgs
+_080E4374: .4byte 0x0000fff5
+_080E4378:
+ movs r0, 0xB
+ strh r0, [r4, 0x2E]
+ movs r0, 0xC0
+ strh r0, [r4, 0x30]
+ ldr r1, _080E439C @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+_080E4392:
+ ldr r0, _080E43A0 @ =sub_80E42DC
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E439C: .4byte gBattleAnimArgs
+_080E43A0: .4byte sub_80E42DC
+ thumb_func_end sub_80E4334
+
+ thumb_func_start sub_80E43A4
+sub_80E43A4: @ 80E43A4
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080E43E8 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8076B2C
+ strh r0, [r5, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ bgt _080E43CE
+ movs r0, 0x10
+ strh r0, [r5, 0x22]
+_080E43CE:
+ movs r0, 0
+ strh r0, [r5, 0x3A]
+ movs r1, 0x10
+ strh r1, [r5, 0x3C]
+ ldr r0, _080E43EC @ =sub_80E43F0
+ str r0, [r5, 0x1C]
+ lsls r1, 8
+ movs r0, 0x52
+ bl SetGpuReg
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E43E8: .4byte gBattleAnimAttacker
+_080E43EC: .4byte sub_80E43F0
+ thumb_func_end sub_80E43A4
+
+ thumb_func_start sub_80E43F0
+sub_80E43F0: @ 80E43F0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ cmp r1, 0x1
+ beq _080E4468
+ cmp r1, 0x1
+ bgt _080E4406
+ cmp r1, 0
+ beq _080E4410
+ b _080E44E4
+_080E4406:
+ cmp r1, 0x2
+ beq _080E447E
+ cmp r1, 0x3
+ beq _080E44DE
+ b _080E44E4
+_080E4410:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E44E4
+ strh r1, [r4, 0x2E]
+ ldrh r1, [r4, 0x30]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080E443A
+ ldrh r2, [r4, 0x3A]
+ movs r3, 0x3A
+ ldrsh r0, [r4, r3]
+ cmp r0, 0xF
+ bgt _080E4448
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x3A]
+ b _080E4448
+_080E443A:
+ ldrh r2, [r4, 0x3C]
+ movs r3, 0x3C
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080E4448
+ subs r0, r2, 0x1
+ strh r0, [r4, 0x3C]
+_080E4448:
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 8
+ ldrh r0, [r4, 0x3A]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E44E4
+ b _080E44D6
+_080E4468:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ bne _080E44E4
+ strh r1, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ b _080E44D6
+_080E447E:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E44E4
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldrh r1, [r4, 0x30]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080E44AA
+ ldrh r2, [r4, 0x3A]
+ movs r3, 0x3A
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080E44B8
+ subs r0, r2, 0x1
+ strh r0, [r4, 0x3A]
+ b _080E44B8
+_080E44AA:
+ ldrh r2, [r4, 0x3C]
+ movs r3, 0x3C
+ ldrsh r0, [r4, r3]
+ cmp r0, 0xF
+ bgt _080E44B8
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x3C]
+_080E44B8:
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 8
+ ldrh r0, [r4, 0x3A]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080E44E4
+_080E44D6:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ b _080E44E4
+_080E44DE:
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080E44E4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E43F0
+
+ thumb_func_start sub_80E44EC
+sub_80E44EC: @ 80E44EC
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, _080E4508 @ =gBattleAnimArgs
+ movs r0, 0
+ strh r0, [r2, 0xE]
+ ldr r0, _080E450C @ =gUnknown_2037F00
+ ldrh r1, [r0]
+ movs r0, 0x60
+ ands r0, r1
+ cmp r0, 0
+ beq _080E4510
+ movs r0, 0x1
+ b _080E4532
+ .align 2, 0
+_080E4508: .4byte gBattleAnimArgs
+_080E450C: .4byte gUnknown_2037F00
+_080E4510:
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ beq _080E451C
+ movs r0, 0x2
+ b _080E4532
+_080E451C:
+ movs r0, 0x18
+ ands r0, r1
+ cmp r0, 0
+ beq _080E4528
+ movs r0, 0x3
+ b _080E4532
+_080E4528:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _080E4534
+ movs r0, 0x4
+_080E4532:
+ strh r0, [r2, 0xE]
+_080E4534:
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E44EC
+
+ thumb_func_start sub_80E4540
+sub_80E4540: @ 80E4540
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080E4578 @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldr r0, _080E457C @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r4, 0x26]
+ ldr r2, _080E4580 @ =gUnknown_83FF7A8
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080E4584 @ =sub_80E4588
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E4578: .4byte gTasks
+_080E457C: .4byte gBattleAnimArgs
+_080E4580: .4byte gUnknown_83FF7A8
+_080E4584: .4byte sub_80E4588
+ thumb_func_end sub_80E4540
+
+ thumb_func_start sub_80E4588
+sub_80E4588: @ 80E4588
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r2, _080E45E0 @ =gTasks
+ adds r3, r0, r2
+ ldrh r0, [r3, 0x8]
+ adds r1, r0, 0x1
+ movs r5, 0
+ strh r1, [r3, 0x8]
+ subs r0, 0x10
+ lsls r0, 16
+ lsrs r0, 16
+ adds r6, r2, 0
+ cmp r0, 0x16
+ bhi _080E45EC
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _080E45FC
+ strh r5, [r3, 0xA]
+ ldrh r0, [r3, 0xC]
+ adds r0, 0x1
+ strh r0, [r3, 0xC]
+ movs r5, 0x1
+ ands r0, r5
+ cmp r0, 0
+ bne _080E45EC
+ ldr r2, _080E45E4 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, _080E45E8 @ =0x0000ffff
+ strh r1, [r0, 0x24]
+ b _080E45FC
+ .align 2, 0
+_080E45E0: .4byte gTasks
+_080E45E4: .4byte gSprites
+_080E45E8: .4byte 0x0000ffff
+_080E45EC:
+ ldr r2, _080E461C @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r5, [r0, 0x24]
+_080E45FC:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r6
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E4614
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080E4614:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E461C: .4byte gSprites
+ thumb_func_end sub_80E4588
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_mons.s b/asm/battle_anim_mons.s
new file mode 100644
index 000000000..aded063d4
--- /dev/null
+++ b/asm/battle_anim_mons.s
@@ -0,0 +1,6343 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8074480
+sub_8074480: @ 8074480
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r1, 24
+ lsrs r4, r1, 24
+ cmp r4, 0x4
+ bhi _08074500
+ lsls r0, r4, 2
+ ldr r1, _08074498 @ =_0807449C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08074498: .4byte _0807449C
+ .align 2, 0
+_0807449C:
+ .4byte _080744B0
+ .4byte _080744D8
+ .4byte _080744B0
+ .4byte _08074500
+ .4byte _08074500
+_080744B0:
+ ldr r4, _080744D0 @ =gUnknown_83AE01C
+ adds r0, r5, 0
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r0, 22
+ ldr r1, _080744D4 @ =gBattleTypeFlags
+ ldr r1, [r1]
+ movs r2, 0x1
+ ands r1, r2
+ lsls r1, 4
+ adds r0, r1
+ adds r0, r4
+ ldrb r0, [r0]
+ b _08074588
+ .align 2, 0
+_080744D0: .4byte gUnknown_83AE01C
+_080744D4: .4byte gBattleTypeFlags
+_080744D8:
+ ldr r4, _080744F8 @ =gUnknown_83AE01C
+ adds r0, r5, 0
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r0, 22
+ ldr r1, _080744FC @ =gBattleTypeFlags
+ ldr r1, [r1]
+ movs r2, 0x1
+ ands r1, r2
+ lsls r1, 4
+ adds r0, r1
+ adds r0, r4
+ ldrb r0, [r0, 0x1]
+ b _08074588
+ .align 2, 0
+_080744F8: .4byte gUnknown_83AE01C
+_080744FC: .4byte gBattleTypeFlags
+_08074500:
+ adds r0, r5, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08074538
+ ldr r0, _0807452C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0]
+ lsls r0, r5, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _08074570
+ ldr r1, _08074530 @ =gBattlerPartyIndexes
+ lsls r0, r5, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _08074534 @ =gEnemyParty
+ b _08074556
+ .align 2, 0
+_0807452C: .4byte gUnknown_2024018
+_08074530: .4byte gBattlerPartyIndexes
+_08074534: .4byte gEnemyParty
+_08074538:
+ ldr r0, _08074564 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0]
+ lsls r0, r5, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _08074570
+ ldr r1, _08074568 @ =gBattlerPartyIndexes
+ lsls r0, r5, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0807456C @ =gPlayerParty
+_08074556:
+ adds r0, r1
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r1, r0, 16
+ b _08074572
+ .align 2, 0
+_08074564: .4byte gUnknown_2024018
+_08074568: .4byte gBattlerPartyIndexes
+_0807456C: .4byte gPlayerParty
+_08074570:
+ ldrh r1, [r1, 0x2]
+_08074572:
+ cmp r4, 0x3
+ bne _0807457C
+ adds r0, r5, 0
+ movs r2, 0x1
+ b _08074580
+_0807457C:
+ adds r0, r5, 0
+ movs r2, 0
+_08074580:
+ bl sub_80747AC
+ lsls r0, 24
+ lsrs r0, 24
+_08074588:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8074480
+
+ thumb_func_start sub_8074590
+sub_8074590: @ 8074590
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r6, r5, 0
+ lsls r1, 16
+ lsrs r4, r1, 16
+ adds r7, r4, 0
+ adds r0, r5, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08074674
+ cmp r4, 0xC9
+ bne _08074638
+ ldr r0, _080745D8 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ adds r0, r1, r0
+ ldrh r0, [r0, 0x2]
+ cmp r0, 0
+ bne _080745E4
+ ldr r1, _080745DC @ =gBattlerPartyIndexes
+ lsls r0, r5, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080745E0 @ =gPlayerParty
+ adds r0, r1
+ movs r1, 0
+ bl GetMonData
+ adds r2, r0, 0
+ b _080745EA
+ .align 2, 0
+_080745D8: .4byte gUnknown_2024018
+_080745DC: .4byte gBattlerPartyIndexes
+_080745E0: .4byte gPlayerParty
+_080745E4:
+ ldr r0, _08074620 @ =gUnknown_2024008
+ adds r0, r1, r0
+ ldr r2, [r0]
+_080745EA:
+ movs r0, 0xC0
+ lsls r0, 18
+ ands r0, r2
+ lsrs r0, 18
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r2
+ lsrs r1, 12
+ orrs r0, r1
+ movs r1, 0xC0
+ lsls r1, 2
+ ands r1, r2
+ lsrs r1, 6
+ orrs r0, r1
+ movs r1, 0x3
+ ands r1, r2
+ orrs r0, r1
+ movs r1, 0x1C
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0
+ bne _08074624
+ adds r0, r7, 0
+ b _0807462E
+ .align 2, 0
+_08074620: .4byte gUnknown_2024008
+_08074624:
+ movs r1, 0xCE
+ lsls r1, 1
+ adds r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+_0807462E:
+ ldr r1, _08074634 @ =gUnknown_8235E6C
+ lsls r0, 2
+ b _0807473C
+ .align 2, 0
+_08074634: .4byte gUnknown_8235E6C
+_08074638:
+ ldr r0, _0807464C @ =0x00000181
+ cmp r4, r0
+ bne _08074658
+ ldr r0, _08074650 @ =gUnknown_83AE050
+ ldr r1, _08074654 @ =gBattleMonForms
+ adds r1, r5, r1
+ ldrb r1, [r1]
+ adds r1, r0
+ ldrb r0, [r1]
+ b _08074740
+ .align 2, 0
+_0807464C: .4byte 0x00000181
+_08074650: .4byte gUnknown_83AE050
+_08074654: .4byte gBattleMonForms
+_08074658:
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r4, r0
+ bls _08074668
+ ldr r0, _08074664 @ =gUnknown_8235E6C
+ b _0807473E
+ .align 2, 0
+_08074664: .4byte gUnknown_8235E6C
+_08074668:
+ ldr r1, _08074670 @ =gUnknown_8235E6C
+ lsls r0, r4, 2
+ b _0807473C
+ .align 2, 0
+_08074670: .4byte gUnknown_8235E6C
+_08074674:
+ cmp r4, 0xC9
+ bne _08074704
+ ldr r0, _080746A4 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ adds r0, r1, r0
+ ldrh r0, [r0, 0x2]
+ cmp r0, 0
+ bne _080746B0
+ ldr r1, _080746A8 @ =gBattlerPartyIndexes
+ lsls r0, r5, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080746AC @ =gEnemyParty
+ adds r0, r1
+ movs r1, 0
+ bl GetMonData
+ adds r2, r0, 0
+ b _080746B6
+ .align 2, 0
+_080746A4: .4byte gUnknown_2024018
+_080746A8: .4byte gBattlerPartyIndexes
+_080746AC: .4byte gEnemyParty
+_080746B0:
+ ldr r0, _080746EC @ =gUnknown_2024008
+ adds r0, r1, r0
+ ldr r2, [r0]
+_080746B6:
+ movs r0, 0xC0
+ lsls r0, 18
+ ands r0, r2
+ lsrs r0, 18
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r2
+ lsrs r1, 12
+ orrs r0, r1
+ movs r1, 0xC0
+ lsls r1, 2
+ ands r1, r2
+ lsrs r1, 6
+ orrs r0, r1
+ movs r1, 0x3
+ ands r1, r2
+ orrs r0, r1
+ movs r1, 0x1C
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0
+ bne _080746F0
+ adds r0, r7, 0
+ b _080746FA
+ .align 2, 0
+_080746EC: .4byte gUnknown_2024008
+_080746F0:
+ movs r1, 0xCE
+ lsls r1, 1
+ adds r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+_080746FA:
+ ldr r1, _08074700 @ =gUnknown_82349CC
+ lsls r0, 2
+ b _0807473C
+ .align 2, 0
+_08074700: .4byte gUnknown_82349CC
+_08074704:
+ ldr r0, _0807471C @ =0x00000181
+ cmp r4, r0
+ bne _08074728
+ ldr r0, _08074720 @ =gUnknown_83AE03C
+ ldr r1, _08074724 @ =gBattleMonForms
+ adds r1, r6, r1
+ ldrb r1, [r1]
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ b _08074740
+ .align 2, 0
+_0807471C: .4byte 0x00000181
+_08074720: .4byte gUnknown_83AE03C
+_08074724: .4byte gBattleMonForms
+_08074728:
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r4, r0
+ bls _08074738
+ ldr r0, _08074734 @ =gUnknown_82349CC
+ b _0807473E
+ .align 2, 0
+_08074734: .4byte gUnknown_82349CC
+_08074738:
+ ldr r1, _08074748 @ =gUnknown_82349CC
+ lsls r0, r7, 2
+_0807473C:
+ adds r0, r1
+_0807473E:
+ ldrb r0, [r0, 0x1]
+_08074740:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08074748: .4byte gUnknown_82349CC
+ thumb_func_end sub_8074590
+
+ thumb_func_start sub_807474C
+sub_807474C: @ 807474C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r1, 16
+ lsrs r4, r1, 16
+ adds r7, r4, 0
+ movs r5, 0
+ adds r0, r6, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0807479E
+ ldr r0, _0807477C @ =0x00000181
+ cmp r4, r0
+ bne _08074788
+ ldr r0, _08074780 @ =gUnknown_83AE04C
+ ldr r1, _08074784 @ =gBattleMonForms
+ adds r1, r6, r1
+ ldrb r1, [r1]
+ adds r1, r0
+ ldrb r5, [r1]
+ b _0807479E
+ .align 2, 0
+_0807477C: .4byte 0x00000181
+_08074780: .4byte gUnknown_83AE04C
+_08074784: .4byte gBattleMonForms
+_08074788:
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r4, r0
+ bls _08074798
+ ldr r0, _08074794 @ =gUnknown_823A004
+ b _0807479C
+ .align 2, 0
+_08074794: .4byte gUnknown_823A004
+_08074798:
+ ldr r0, _080747A8 @ =gUnknown_823A004
+ adds r0, r7, r0
+_0807479C:
+ ldrb r5, [r0]
+_0807479E:
+ adds r0, r5, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080747A8: .4byte gUnknown_823A004
+ thumb_func_end sub_807474C
+
+ thumb_func_start sub_80747AC
+sub_80747AC: @ 80747AC
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r1, 16
+ lsrs r4, r1, 16
+ lsls r2, 24
+ lsrs r7, r2, 24
+ adds r0, r6, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080747D4
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_8074590
+ lsls r0, 24
+ lsrs r5, r0, 24
+ b _080747F2
+_080747D4:
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_8074590
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_807474C
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, r5, r0
+ lsls r0, 16
+ lsrs r5, r0, 16
+_080747F2:
+ adds r0, r6, 0
+ bl GetBattlerPosition
+ ldr r3, _0807483C @ =gUnknown_83AE01C
+ lsls r0, 24
+ lsrs r0, 22
+ ldr r1, _08074840 @ =gBattleTypeFlags
+ ldr r1, [r1]
+ movs r2, 0x1
+ ands r1, r2
+ lsls r1, 4
+ adds r0, r1
+ adds r0, r3
+ ldrb r0, [r0, 0x1]
+ adds r0, r5
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r7, 0
+ beq _08074832
+ adds r0, r6, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807482C
+ adds r0, r4, 0
+ adds r0, 0x8
+ lsls r0, 24
+ lsrs r4, r0, 24
+_0807482C:
+ cmp r4, 0x68
+ bls _08074832
+ movs r4, 0x68
+_08074832:
+ adds r0, r4, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0807483C: .4byte gUnknown_83AE01C
+_08074840: .4byte gBattleTypeFlags
+ thumb_func_end sub_80747AC
+
+ thumb_func_start sub_8074844
+sub_8074844: @ 8074844
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r1, 24
+ lsrs r3, r1, 24
+ movs r0, 0xFD
+ lsls r0, 24
+ adds r1, r0
+ lsrs r1, 24
+ cmp r1, 0x1
+ bhi _08074896
+ ldr r0, _08074874 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0]
+ lsls r0, r2, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _0807487C
+ ldr r1, _08074878 @ =gUnknown_2037F1C
+ lsls r0, r2, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ b _0807487E
+ .align 2, 0
+_08074874: .4byte gUnknown_2024018
+_08074878: .4byte gUnknown_2037F1C
+_0807487C:
+ ldrh r1, [r1, 0x2]
+_0807487E:
+ cmp r3, 0x3
+ bne _0807488C
+ adds r0, r2, 0
+ movs r2, 0x1
+ bl sub_80747AC
+ b _0807489E
+_0807488C:
+ adds r0, r2, 0
+ movs r2, 0
+ bl sub_80747AC
+ b _0807489E
+_08074896:
+ adds r0, r2, 0
+ adds r1, r3, 0
+ bl sub_8074480
+_0807489E:
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8074844
+
+ thumb_func_start GetBankSpriteDefault_Y
+GetBankSpriteDefault_Y: @ 80748A8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x4
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end GetBankSpriteDefault_Y
+
+ thumb_func_start GetSubstituteSpriteDefault_Y
+GetSubstituteSpriteDefault_Y: @ 80748BC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080748E0
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 8
+ movs r1, 0x80
+ lsls r1, 13
+ b _080748F0
+_080748E0:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 8
+ movs r1, 0x88
+ lsls r1, 13
+_080748F0:
+ adds r0, r1
+ lsrs r0, 16
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end GetSubstituteSpriteDefault_Y
+
+ thumb_func_start sub_8074900
+sub_8074900: @ 8074900
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0807491A
+ adds r0, r4, 0
+ movs r1, 0x1
+ b _0807491E
+_0807491A:
+ adds r0, r4, 0
+ movs r1, 0x4
+_0807491E:
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8074900
+
+ thumb_func_start sub_807492C
+sub_807492C: @ 807492C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r5, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08074978
+ ldr r0, _0807496C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0]
+ lsls r0, r5, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _080749B0
+ ldr r1, _08074970 @ =gBattlerPartyIndexes
+ lsls r0, r5, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _08074974 @ =gEnemyParty
+ b _08074996
+ .align 2, 0
+_0807496C: .4byte gUnknown_2024018
+_08074970: .4byte gBattlerPartyIndexes
+_08074974: .4byte gEnemyParty
+_08074978:
+ ldr r0, _080749A4 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0]
+ lsls r0, r5, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _080749B0
+ ldr r1, _080749A8 @ =gBattlerPartyIndexes
+ lsls r0, r5, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080749AC @ =gPlayerParty
+_08074996:
+ adds r0, r1
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r4, r0, 16
+ b _080749B2
+ .align 2, 0
+_080749A4: .4byte gUnknown_2024018
+_080749A8: .4byte gBattlerPartyIndexes
+_080749AC: .4byte gPlayerParty
+_080749B0:
+ ldrh r4, [r1, 0x2]
+_080749B2:
+ adds r0, r5, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080749CC
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_807474C
+ subs r0, r6, r0
+ lsls r0, 24
+ lsrs r6, r0, 24
+_080749CC:
+ adds r0, r6, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807492C
+
+ thumb_func_start GetAnimBankSpriteId
+GetAnimBankSpriteId: @ 80749D4
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ cmp r0, 0
+ bne _080749FC
+ ldr r4, _080749F4 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl sub_8075224
+ lsls r0, 24
+ cmp r0, 0
+ beq _08074A4A
+ ldr r1, _080749F8 @ =gBattlerSpriteIds
+ ldrb r0, [r4]
+ b _08074A5A
+ .align 2, 0
+_080749F4: .4byte gBattleAnimAttacker
+_080749F8: .4byte gBattlerSpriteIds
+_080749FC:
+ cmp r0, 0x1
+ bne _08074A1C
+ ldr r4, _08074A14 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ bl sub_8075224
+ lsls r0, 24
+ cmp r0, 0
+ beq _08074A4A
+ ldr r1, _08074A18 @ =gBattlerSpriteIds
+ ldrb r0, [r4]
+ b _08074A5A
+ .align 2, 0
+_08074A14: .4byte gBattleAnimTarget
+_08074A18: .4byte gBattlerSpriteIds
+_08074A1C:
+ cmp r1, 0x2
+ bne _08074A38
+ ldr r5, _08074A34 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r4, 0x2
+ eors r0, r4
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08074A4A
+ b _08074A54
+ .align 2, 0
+_08074A34: .4byte gBattleAnimAttacker
+_08074A38:
+ ldr r5, _08074A50 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r4, 0x2
+ eors r0, r4
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ bne _08074A54
+_08074A4A:
+ movs r0, 0xFF
+ b _08074A5E
+ .align 2, 0
+_08074A50: .4byte gBattleAnimTarget
+_08074A54:
+ ldr r1, _08074A64 @ =gBattlerSpriteIds
+ ldrb r0, [r5]
+ eors r0, r4
+_08074A5A:
+ adds r0, r1
+ ldrb r0, [r0]
+_08074A5E:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08074A64: .4byte gBattlerSpriteIds
+ thumb_func_end GetAnimBankSpriteId
+
+ thumb_func_start StoreSpriteCallbackInData6
+StoreSpriteCallbackInData6: @ 8074A68
+ strh r1, [r0, 0x3A]
+ lsrs r1, 16
+ strh r1, [r0, 0x3C]
+ bx lr
+ thumb_func_end StoreSpriteCallbackInData6
+
+ thumb_func_start SetCallbackToStoredInData
+SetCallbackToStoredInData: @ 8074A70
+ ldrh r2, [r0, 0x3A]
+ movs r3, 0x3C
+ ldrsh r1, [r0, r3]
+ lsls r1, 16
+ orrs r2, r1
+ str r2, [r0, 0x1C]
+ bx lr
+ thumb_func_end SetCallbackToStoredInData
+
+ thumb_func_start sub_8074A80
+sub_8074A80: @ 8074A80
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _08074AD4
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x2E]
+ adds r1, r0, r2
+ strh r1, [r4, 0x2E]
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ ble _08074AC0
+ ldr r2, _08074ABC @ =0xffffff00
+ b _08074AC8
+ .align 2, 0
+_08074ABC: .4byte 0xffffff00
+_08074AC0:
+ cmp r0, 0
+ bge _08074ACC
+ movs r2, 0x80
+ lsls r2, 1
+_08074AC8:
+ adds r0, r1, r2
+ strh r0, [r4, 0x2E]
+_08074ACC:
+ ldrh r0, [r4, 0x34]
+ subs r0, 0x1
+ strh r0, [r4, 0x34]
+ b _08074ADA
+_08074AD4:
+ adds r0, r4, 0
+ bl SetCallbackToStoredInData
+_08074ADA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074A80
+
+ thumb_func_start sub_8074AE0
+sub_8074AE0: @ 8074AE0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _08074B50
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ ldrh r1, [r4, 0x38]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r2, [r4, 0x30]
+ adds r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x38]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r2, [r4, 0x30]
+ adds r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x2E]
+ adds r1, r0, r2
+ strh r1, [r4, 0x2E]
+ ldrh r0, [r4, 0x36]
+ ldrh r2, [r4, 0x38]
+ adds r0, r2
+ strh r0, [r4, 0x38]
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ ble _08074B3C
+ ldr r2, _08074B38 @ =0xffffff00
+ b _08074B44
+ .align 2, 0
+_08074B38: .4byte 0xffffff00
+_08074B3C:
+ cmp r0, 0
+ bge _08074B48
+ movs r2, 0x80
+ lsls r2, 1
+_08074B44:
+ adds r0, r1, r2
+ strh r0, [r4, 0x2E]
+_08074B48:
+ ldrh r0, [r4, 0x34]
+ subs r0, 0x1
+ strh r0, [r4, 0x34]
+ b _08074B56
+_08074B50:
+ adds r0, r4, 0
+ bl SetCallbackToStoredInData
+_08074B56:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074AE0
+
+ thumb_func_start sub_8074B5C
+sub_8074B5C: @ 8074B5C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _08074BD8
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x36
+ ldrsh r0, [r4, r1]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x2E]
+ adds r1, r0, r2
+ strh r1, [r4, 0x2E]
+ ldrh r0, [r4, 0x38]
+ ldrh r2, [r4, 0x36]
+ adds r0, r2
+ strh r0, [r4, 0x36]
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ ble _08074BA4
+ ldr r2, _08074BA0 @ =0xffffff00
+ b _08074BAC
+ .align 2, 0
+_08074BA0: .4byte 0xffffff00
+_08074BA4:
+ cmp r0, 0
+ bge _08074BB0
+ movs r2, 0x80
+ lsls r2, 1
+_08074BAC:
+ adds r0, r1, r2
+ strh r0, [r4, 0x2E]
+_08074BB0:
+ ldrh r1, [r4, 0x36]
+ movs r2, 0x36
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xFF
+ ble _08074BC4
+ ldr r2, _08074BC0 @ =0xffffff00
+ b _08074BCC
+ .align 2, 0
+_08074BC0: .4byte 0xffffff00
+_08074BC4:
+ cmp r0, 0
+ bge _08074BD0
+ movs r2, 0x80
+ lsls r2, 1
+_08074BCC:
+ adds r0, r1, r2
+ strh r0, [r4, 0x36]
+_08074BD0:
+ ldrh r0, [r4, 0x34]
+ subs r0, 0x1
+ strh r0, [r4, 0x34]
+ b _08074BDE
+_08074BD8:
+ adds r0, r4, 0
+ bl SetCallbackToStoredInData
+_08074BDE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074B5C
+
+ thumb_func_start sub_8074BE4
+sub_8074BE4: @ 8074BE4
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _08074C38
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x2E]
+ adds r1, r0, r2
+ strh r1, [r4, 0x2E]
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ ble _08074C24
+ ldr r2, _08074C20 @ =0xffffff00
+ b _08074C2C
+ .align 2, 0
+_08074C20: .4byte 0xffffff00
+_08074C24:
+ cmp r0, 0
+ bge _08074C30
+ movs r2, 0x80
+ lsls r2, 1
+_08074C2C:
+ adds r0, r1, r2
+ strh r0, [r4, 0x2E]
+_08074C30:
+ ldrh r0, [r4, 0x34]
+ subs r0, 0x1
+ strh r0, [r4, 0x34]
+ b _08074C3E
+_08074C38:
+ adds r0, r4, 0
+ bl SetCallbackToStoredInData
+_08074C3E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074BE4
+
+ thumb_func_start sub_8074C44
+sub_8074C44: @ 8074C44
+ push {lr}
+ adds r1, r0, 0
+ ldrh r2, [r1, 0x2E]
+ movs r3, 0x2E
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ ble _08074C58
+ subs r0, r2, 0x1
+ strh r0, [r1, 0x2E]
+ b _08074C5E
+_08074C58:
+ adds r0, r1, 0
+ bl SetCallbackToStoredInData
+_08074C5E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074C44
+
+ thumb_func_start sub_8074C64
+sub_8074C64: @ 8074C64
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8074C80
+ ldr r1, _08074C7C @ =sub_8074CD0
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08074C7C: .4byte sub_8074CD0
+ thumb_func_end sub_8074C64
+
+ thumb_func_start sub_8074C80
+sub_8074C80: @ 8074C80
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x30
+ ldrsh r1, [r4, r0]
+ movs r2, 0x32
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ ble _08074C96
+ ldrh r0, [r4, 0x2E]
+ negs r0, r0
+ strh r0, [r4, 0x2E]
+_08074C96:
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ subs r0, r1
+ ldrh r5, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ cmp r0, 0
+ bge _08074CB0
+ negs r0, r0
+_08074CB0:
+ strh r0, [r4, 0x2E]
+ movs r1, 0x36
+ ldrsh r0, [r4, r1]
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ subs r0, r1
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ strh r0, [r4, 0x32]
+ strh r5, [r4, 0x30]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074C80
+
+ thumb_func_start sub_8074CD0
+sub_8074CD0: @ 8074CD0
+ push {lr}
+ adds r1, r0, 0
+ ldrh r2, [r1, 0x2E]
+ movs r3, 0x2E
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ ble _08074CF4
+ subs r0, r2, 0x1
+ strh r0, [r1, 0x2E]
+ ldrh r0, [r1, 0x30]
+ ldrh r2, [r1, 0x24]
+ adds r0, r2
+ strh r0, [r1, 0x24]
+ ldrh r0, [r1, 0x32]
+ ldrh r3, [r1, 0x26]
+ adds r0, r3
+ strh r0, [r1, 0x26]
+ b _08074CFA
+_08074CF4:
+ adds r0, r1, 0
+ bl SetCallbackToStoredInData
+_08074CFA:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074CD0
+
+ thumb_func_start sub_8074D00
+sub_8074D00: @ 8074D00
+ push {lr}
+ adds r2, r0, 0
+ ldrh r1, [r2, 0x2E]
+ movs r3, 0x2E
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ ble _08074D30
+ subs r0, r1, 0x1
+ strh r0, [r2, 0x2E]
+ ldrh r0, [r2, 0x30]
+ ldrh r1, [r2, 0x34]
+ adds r0, r1
+ strh r0, [r2, 0x34]
+ ldrh r1, [r2, 0x32]
+ ldrh r3, [r2, 0x36]
+ adds r1, r3
+ strh r1, [r2, 0x36]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r2, 0x24]
+ lsls r1, 16
+ asrs r1, 24
+ strh r1, [r2, 0x26]
+ b _08074D36
+_08074D30:
+ adds r0, r2, 0
+ bl SetCallbackToStoredInData
+_08074D36:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074D00
+
+ thumb_func_start sub_8074D3C
+sub_8074D3C: @ 8074D3C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _08074D6C
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x34]
+ adds r0, r1
+ strh r0, [r4, 0x34]
+ ldrh r1, [r4, 0x32]
+ ldrh r2, [r4, 0x36]
+ adds r1, r2
+ strh r1, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ lsls r1, 16
+ asrs r1, 24
+ strh r1, [r4, 0x26]
+ b _08074D72
+_08074D6C:
+ adds r0, r4, 0
+ bl SetCallbackToStoredInData
+_08074D72:
+ adds r0, r4, 0
+ bl UpdateMonIconFrame
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074D3C
+
+ thumb_func_start sub_8074D80
+sub_8074D80: @ 8074D80
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x34]
+ ldr r5, _08074DBC @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ ldr r0, _08074DC0 @ =sub_8074C64
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08074DBC: .4byte gBattleAnimTarget
+_08074DC0: .4byte sub_8074C64
+ thumb_func_end sub_8074D80
+
+ thumb_func_start sub_8074DC4
+sub_8074DC4: @ 8074DC4
+ push {r4,lr}
+ adds r3, r0, 0
+ ldrh r1, [r3, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ ble _08074E08
+ subs r0, r1, 0x1
+ strh r0, [r3, 0x2E]
+ ldr r2, _08074E04 @ =gSprites
+ movs r4, 0x34
+ ldrsh r1, [r3, r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r3, 0x30]
+ ldrh r4, [r0, 0x24]
+ adds r1, r4
+ strh r1, [r0, 0x24]
+ movs r0, 0x34
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r3, 0x32]
+ ldrh r2, [r0, 0x26]
+ adds r1, r2
+ strh r1, [r0, 0x26]
+ b _08074E0E
+ .align 2, 0
+_08074E04: .4byte gSprites
+_08074E08:
+ adds r0, r3, 0
+ bl SetCallbackToStoredInData
+_08074E0E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074DC4
+
+ thumb_func_start sub_8074E14
+sub_8074E14: @ 8074E14
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _08074E64
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x2E]
+ ldrh r1, [r4, 0x30]
+ ldrh r0, [r4, 0x34]
+ adds r1, r0
+ strh r1, [r4, 0x34]
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x36]
+ adds r0, r2
+ strh r0, [r4, 0x36]
+ ldr r3, _08074E60 @ =gSprites
+ movs r0, 0x38
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r3
+ lsls r1, 16
+ asrs r1, 24
+ strh r1, [r0, 0x24]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ ldrh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r1, 0x26]
+ b _08074E6A
+ .align 2, 0
+_08074E60: .4byte gSprites
+_08074E64:
+ adds r0, r4, 0
+ bl SetCallbackToStoredInData
+_08074E6A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074E14
+
+ thumb_func_start sub_8074E70
+sub_8074E70: @ 8074E70
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _08074ED2
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x2E]
+ ldrh r1, [r4, 0x32]
+ lsls r0, r1, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x30]
+ adds r1, r0
+ strh r1, [r4, 0x32]
+ ldrh r1, [r4, 0x36]
+ lsls r0, r1, 16
+ asrs r0, 24
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x34]
+ adds r1, r0
+ strh r1, [r4, 0x36]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl __modsi3
+ cmp r0, 0
+ bne _08074ED8
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _08074ED8
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ b _08074ED8
+_08074ED2:
+ adds r0, r4, 0
+ bl SetCallbackToStoredInData
+_08074ED8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074E70
+
+ thumb_func_start move_anim_8074EE0
+move_anim_8074EE0: @ 8074EE0
+ push {r4,lr}
+ adds r4, r0, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end move_anim_8074EE0
+
+ thumb_func_start sub_8074EF4
+sub_8074EF4: @ 8074EF4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x34]
+ ldr r5, _08074F30 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ ldr r0, _08074F34 @ =sub_8074C64
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08074F30: .4byte gBattleAnimAttacker
+_08074F34: .4byte sub_8074C64
+ thumb_func_end sub_8074EF4
+
+ thumb_func_start sub_8074F38
+sub_8074F38: @ 8074F38
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x38]
+ bl ResetPaletteStructByUid
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074F38
+
+ thumb_func_start sub_8074F50
+sub_8074F50: @ 8074F50
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _08074F66
+ adds r0, r2, 0
+ bl SetCallbackToStoredInData
+_08074F66:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074F50
+
+ thumb_func_start sub_8074F6C
+sub_8074F6C: @ 8074F6C
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08074F82
+ adds r0, r2, 0
+ bl SetCallbackToStoredInData
+_08074F82:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074F6C
+
+ thumb_func_start sub_8074F88
+sub_8074F88: @ 8074F88
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074F88
+
+ thumb_func_start sub_8074FA8
+sub_8074FA8: @ 8074FA8
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074FA8
+
+ thumb_func_start sub_8074FCC
+sub_8074FCC: @ 8074FCC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _08074FF4 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08074FF4: .4byte gBattleAnimAttacker
+ thumb_func_end sub_8074FCC
+
+ thumb_func_start sub_8074FF8
+sub_8074FF8: @ 8074FF8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r5, r1, 16
+ mov r8, r5
+ ldr r7, _08075030 @ =gBattleAnimAttacker
+ ldrb r0, [r7]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, _08075034 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r6, r0
+ bhi _08075044
+ cmp r6, r0
+ bcs _08075038
+ lsls r0, r5, 16
+ b _08075054
+ .align 2, 0
+_08075030: .4byte gBattleAnimAttacker
+_08075034: .4byte gBattleAnimTarget
+_08075038:
+ ldrb r0, [r7]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075050
+_08075044:
+ ldrh r1, [r4, 0x20]
+ lsls r0, r5, 16
+ asrs r0, 16
+ subs r1, r0
+ strh r1, [r4, 0x20]
+ b _0807505C
+_08075050:
+ mov r1, r8
+ lsls r0, r1, 16
+_08075054:
+ asrs r0, 16
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+_0807505C:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8074FF8
+
+ thumb_func_start sub_8075068
+sub_8075068: @ 8075068
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x20]
+ movs r5, 0
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ movs r0, 0x80
+ lsls r0, 8
+ bl __divsi3
+ strh r0, [r4, 0x3A]
+ strh r5, [r4, 0x3C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8075068
+
+ thumb_func_start AnimateBallThrow
+AnimateBallThrow: @ 8075094
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080750C0
+ ldrh r0, [r4, 0x3A]
+ ldrh r1, [r4, 0x3C]
+ adds r0, r1
+ strh r0, [r4, 0x3C]
+ lsls r0, 16
+ lsrs r0, 24
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ movs r0, 0
+ b _080750C2
+_080750C0:
+ movs r0, 0x1
+_080750C2:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end AnimateBallThrow
+
+ thumb_func_start sub_80750C8
+sub_80750C8: @ 80750C8
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080750F4
+ ldrh r0, [r4, 0x3A]
+ ldrh r1, [r4, 0x3C]
+ adds r0, r1
+ strh r0, [r4, 0x3C]
+ lsls r0, 16
+ lsrs r0, 24
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ movs r0, 0
+ b _080750F6
+_080750F4:
+ movs r0, 0x1
+_080750F6:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80750C8
+
+ thumb_func_start oamt_add_pos2_onto_pos1
+oamt_add_pos2_onto_pos1: @ 80750FC
+ ldrh r1, [r0, 0x24]
+ ldrh r2, [r0, 0x20]
+ adds r1, r2
+ movs r2, 0
+ strh r1, [r0, 0x20]
+ ldrh r1, [r0, 0x26]
+ ldrh r3, [r0, 0x22]
+ adds r1, r3
+ strh r1, [r0, 0x22]
+ strh r2, [r0, 0x24]
+ strh r2, [r0, 0x26]
+ bx lr
+ thumb_func_end oamt_add_pos2_onto_pos1
+
+ thumb_func_start sub_8075114
+sub_8075114: @ 8075114
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r1, 24
+ cmp r1, 0
+ bne _0807513C
+ ldr r4, _08075158 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074844
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074844
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+_0807513C:
+ ldr r4, _0807515C @ =gBattleAnimArgs
+ movs r0, 0
+ ldrsh r1, [r4, r0]
+ adds r0, r5, 0
+ bl sub_8074FF8
+ ldrh r0, [r4, 0x2]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08075158: .4byte gBattleAnimTarget
+_0807515C: .4byte gBattleAnimArgs
+ thumb_func_end sub_8075114
+
+ thumb_func_start sub_8075160
+sub_8075160: @ 8075160
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r1, 24
+ cmp r1, 0
+ bne _08075184
+ ldr r4, _08075180 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074844
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ b _08075198
+ .align 2, 0
+_08075180: .4byte gBattleAnimAttacker
+_08075184:
+ ldr r4, _080751BC @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074844
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+_08075198:
+ bl sub_8074844
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r4, _080751C0 @ =gBattleAnimArgs
+ movs r0, 0
+ ldrsh r1, [r4, r0]
+ adds r0, r5, 0
+ bl sub_8074FF8
+ ldrh r0, [r4, 0x2]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080751BC: .4byte gBattleAnimAttacker
+_080751C0: .4byte gBattleAnimArgs
+ thumb_func_end sub_8075160
+
+ thumb_func_start GetBattlerSide
+GetBattlerSide: @ 80751C4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080751D4 @ =gUnknown_2023BD6
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ bx lr
+ .align 2, 0
+_080751D4: .4byte gUnknown_2023BD6
+ thumb_func_end GetBattlerSide
+
+ thumb_func_start GetBattlerPosition
+GetBattlerPosition: @ 80751D8
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080751E4 @ =gUnknown_2023BD6
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_080751E4: .4byte gUnknown_2023BD6
+ thumb_func_end GetBattlerPosition
+
+ thumb_func_start GetBattlerAtPosition
+GetBattlerAtPosition: @ 80751E8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ movs r1, 0
+ ldr r0, _0807521C @ =gBattlersCount
+ ldrb r2, [r0]
+ cmp r1, r2
+ bcs _08075212
+ ldr r4, _08075220 @ =gUnknown_2023BD6
+ ldrb r0, [r4]
+ cmp r0, r3
+ beq _08075212
+_08075200:
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, r2
+ bcs _08075212
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ cmp r0, r3
+ bne _08075200
+_08075212:
+ adds r0, r1, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0807521C: .4byte gBattlersCount
+_08075220: .4byte gUnknown_2023BD6
+ thumb_func_end GetBattlerAtPosition
+
+ thumb_func_start sub_8075224
+sub_8075224: @ 8075224
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r5, r4, 0
+ ldr r0, _08075254 @ =gUnknown_2023BD6
+ adds r0, r4, r0
+ ldrb r0, [r0]
+ cmp r0, 0xFF
+ beq _08075288
+ adds r0, r4, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075260
+ ldr r1, _08075258 @ =gBattlerPartyIndexes
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0807525C @ =gEnemyParty
+ b _0807526E
+ .align 2, 0
+_08075254: .4byte gUnknown_2023BD6
+_08075258: .4byte gBattlerPartyIndexes
+_0807525C: .4byte gEnemyParty
+_08075260:
+ ldr r1, _08075280 @ =gBattlerPartyIndexes
+ lsls r0, r5, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _08075284 @ =gPlayerParty
+_0807526E:
+ adds r0, r1
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ beq _08075288
+ movs r0, 0x1
+ b _0807528A
+ .align 2, 0
+_08075280: .4byte gBattlerPartyIndexes
+_08075284: .4byte gPlayerParty
+_08075288:
+ movs r0, 0
+_0807528A:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8075224
+
+ thumb_func_start sub_8075290
+sub_8075290: @ 8075290
+ ldr r0, _0807529C @ =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x1
+ ands r0, r1
+ bx lr
+ .align 2, 0
+_0807529C: .4byte gBattleTypeFlags
+ thumb_func_end sub_8075290
+
+ thumb_func_start sub_80752A0
+sub_80752A0: @ 80752A0
+ ldr r1, _080752C0 @ =gUnknown_2022BB8
+ ldr r1, [r1]
+ str r1, [r0]
+ ldr r1, _080752C4 @ =gUnknown_2022BBC
+ ldr r1, [r1]
+ str r1, [r0, 0x4]
+ movs r2, 0
+ movs r1, 0x8
+ strb r1, [r0, 0x8]
+ movs r1, 0x1
+ strb r1, [r0, 0x9]
+ movs r1, 0x80
+ lsls r1, 2
+ strh r1, [r0, 0xA]
+ strh r2, [r0, 0xC]
+ bx lr
+ .align 2, 0
+_080752C0: .4byte gUnknown_2022BB8
+_080752C4: .4byte gUnknown_2022BBC
+ thumb_func_end sub_80752A0
+
+ thumb_func_start sub_80752C8
+sub_80752C8: @ 80752C8
+ push {lr}
+ adds r2, r0, 0
+ cmp r1, 0x1
+ bne _080752D6
+ bl sub_80752A0
+ b _080752F4
+_080752D6:
+ ldr r0, _080752F8 @ =gUnknown_2022BB8
+ ldr r0, [r0]
+ str r0, [r2]
+ ldr r0, _080752FC @ =gUnknown_2022BBC
+ ldr r0, [r0]
+ str r0, [r2, 0x4]
+ movs r1, 0
+ movs r0, 0x9
+ strb r0, [r2, 0x8]
+ movs r0, 0x2
+ strb r0, [r2, 0x9]
+ movs r0, 0xC0
+ lsls r0, 2
+ strh r0, [r2, 0xA]
+ strh r1, [r2, 0xC]
+_080752F4:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080752F8: .4byte gUnknown_2022BB8
+_080752FC: .4byte gUnknown_2022BBC
+ thumb_func_end sub_80752C8
+
+ thumb_func_start sub_8075300
+sub_8075300: @ 8075300
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _08075334 @ =gUnknown_2022BB8
+ ldr r0, [r0]
+ str r0, [r4]
+ ldr r0, _08075338 @ =gUnknown_2022BBC
+ ldr r0, [r0]
+ str r0, [r4, 0x4]
+ ldr r0, _0807533C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x1
+ bne _08075340
+ movs r0, 0
+ movs r1, 0x8
+ strb r1, [r4, 0x8]
+ strb r2, [r4, 0x9]
+ movs r1, 0x80
+ lsls r1, 2
+ strh r1, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ b _08075352
+ .align 2, 0
+_08075334: .4byte gUnknown_2022BB8
+_08075338: .4byte gUnknown_2022BBC
+_0807533C: .4byte gBattleAnimAttacker
+_08075340:
+ movs r1, 0
+ movs r0, 0x9
+ strb r0, [r4, 0x8]
+ movs r0, 0x2
+ strb r0, [r4, 0x9]
+ movs r0, 0xC0
+ lsls r0, 2
+ strh r0, [r4, 0xA]
+ strh r1, [r4, 0xC]
+_08075352:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8075300
+
+ thumb_func_start sub_8075358
+sub_8075358: @ 8075358
+ push {r4,lr}
+ sub sp, 0x20
+ adds r4, r0, 0
+ add r0, sp, 0xC
+ adds r1, r4, 0
+ bl sub_80752C8
+ movs r0, 0
+ str r0, [sp, 0x1C]
+ add r0, sp, 0x1C
+ ldr r1, [sp, 0xC]
+ ldr r2, _080753B0 @ =0x05000800
+ bl CpuSet
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r1, [sp, 0xC]
+ movs r2, 0x80
+ lsls r2, 6
+ add r0, sp, 0xC
+ ldrh r3, [r0, 0xA]
+ adds r0, r4, 0
+ bl LoadBgTiles
+ movs r0, 0x20
+ str r0, [sp]
+ movs r0, 0x40
+ str r0, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect
+ adds r0, r4, 0
+ bl CopyBgTilemapBufferToVram
+ add sp, 0x20
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080753B0: .4byte 0x05000800
+ thumb_func_end sub_8075358
+
+ thumb_func_start sub_80753B4
+sub_80753B4: @ 80753B4
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0x4
+ adds r5, r0, 0
+ mov r8, r1
+ adds r6, r2, 0
+ movs r0, 0
+ str r0, [sp]
+ ldr r4, _080753FC @ =gUnknown_2022BB8
+ ldr r1, [r4]
+ ldr r2, _08075400 @ =0x05000800
+ mov r0, sp
+ bl CpuSet
+ ldr r1, [r4]
+ mov r0, r8
+ bl LZDecompressWram
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r1, [r4]
+ movs r2, 0x80
+ lsls r2, 6
+ lsls r6, 16
+ lsrs r6, 16
+ adds r0, r5, 0
+ adds r3, r6, 0
+ bl LoadBgTiles
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080753FC: .4byte gUnknown_2022BB8
+_08075400: .4byte 0x05000800
+ thumb_func_end sub_80753B4
+
+ thumb_func_start sub_8075404
+sub_8075404: @ 8075404
+ push {r4,r5,lr}
+ sub sp, 0xC
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x20
+ str r0, [sp]
+ movs r0, 0x40
+ str r0, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBuffer
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8075404
+
+ thumb_func_start sub_807543C
+sub_807543C: @ 807543C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8075404
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ bl CopyBgTilemapBufferToVram
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807543C
+
+ thumb_func_start sub_8075454
+sub_8075454: @ 8075454
+ movs r0, 0x2
+ bx lr
+ thumb_func_end sub_8075454
+
+ thumb_func_start sub_8075458
+sub_8075458: @ 8075458
+ push {lr}
+ lsls r0, 24
+ cmp r0, 0
+ bne _08075476
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ movs r0, 0x3
+ movs r1, 0x1
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ b _0807548A
+_08075476:
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0x3
+ movs r1, 0x1
+ movs r2, 0
+ bl SetAnimBgAttribute
+_0807548A:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8075458
+
+ thumb_func_start sub_8075490
+sub_8075490: @ 8075490
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ adds r0, r4, 0
+ bl sub_80754B8
+ ldr r1, _080754B4 @ =sub_8074D3C
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080754B4: .4byte sub_8074D3C
+ thumb_func_end sub_8075490
+
+ thumb_func_start sub_80754B8
+sub_80754B8: @ 80754B8
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x32]
+ ldrh r1, [r5, 0x30]
+ subs r0, r1
+ ldrh r4, [r5, 0x36]
+ ldrh r1, [r5, 0x34]
+ subs r4, r1
+ lsls r4, 24
+ lsrs r4, 16
+ lsls r0, 24
+ asrs r0, 16
+ movs r2, 0x2E
+ ldrsh r1, [r5, r2]
+ bl __divsi3
+ movs r6, 0
+ strh r0, [r5, 0x30]
+ lsls r4, 16
+ asrs r4, 16
+ movs r0, 0x2E
+ ldrsh r1, [r5, r0]
+ adds r0, r4, 0
+ bl __divsi3
+ strh r0, [r5, 0x32]
+ strh r6, [r5, 0x36]
+ strh r6, [r5, 0x34]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80754B8
+
+ thumb_func_start obj_translate_based_on_private_1_2_3_4
+obj_translate_based_on_private_1_2_3_4: @ 80754F8
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r7, r0, 0
+ movs r0, 0x32
+ ldrsh r1, [r7, r0]
+ movs r2, 0x30
+ ldrsh r0, [r7, r2]
+ subs r1, r0
+ movs r3, 0x36
+ ldrsh r2, [r7, r3]
+ movs r3, 0x34
+ ldrsh r0, [r7, r3]
+ subs r2, r0
+ lsrs r0, r1, 31
+ mov r8, r0
+ lsrs r3, r2, 31
+ mov r9, r3
+ cmp r1, 0
+ bge _08075524
+ negs r1, r1
+_08075524:
+ lsls r0, r1, 24
+ lsrs r6, r0, 16
+ adds r0, r2, 0
+ cmp r0, 0
+ bge _08075530
+ negs r0, r0
+_08075530:
+ lsls r0, 24
+ lsrs r5, r0, 16
+ movs r0, 0x2E
+ ldrsh r4, [r7, r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl __divsi3
+ lsls r0, 16
+ lsrs r6, r0, 16
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl __divsi3
+ lsls r0, 16
+ lsrs r5, r0, 16
+ mov r2, r8
+ cmp r2, 0
+ beq _0807555C
+ movs r0, 0x1
+ orrs r6, r0
+ b _08075560
+_0807555C:
+ ldr r0, _0807556C @ =0x0000fffe
+ ands r6, r0
+_08075560:
+ mov r3, r9
+ cmp r3, 0
+ beq _08075570
+ movs r0, 0x1
+ orrs r5, r0
+ b _08075574
+ .align 2, 0
+_0807556C: .4byte 0x0000fffe
+_08075570:
+ ldr r0, _0807558C @ =0x0000fffe
+ ands r5, r0
+_08075574:
+ movs r0, 0
+ strh r6, [r7, 0x30]
+ strh r5, [r7, 0x32]
+ strh r0, [r7, 0x36]
+ strh r0, [r7, 0x34]
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807558C: .4byte 0x0000fffe
+ thumb_func_end obj_translate_based_on_private_1_2_3_4
+
+ thumb_func_start sub_8075590
+sub_8075590: @ 8075590
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldr r1, _080755B4 @ =sub_807563C
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080755B4: .4byte sub_807563C
+ thumb_func_end sub_8075590
+
+ thumb_func_start sub_80755B8
+sub_80755B8: @ 80755B8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldr r1, _080755DC @ =sub_8075658
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080755DC: .4byte sub_8075658
+ thumb_func_end sub_80755B8
+
+ thumb_func_start sub_80755E0
+sub_80755E0: @ 80755E0
+ push {r4-r6,lr}
+ adds r2, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bne _080755F0
+ movs r0, 0x1
+ b _08075634
+_080755F0:
+ ldrh r1, [r2, 0x30]
+ ldrh r4, [r2, 0x32]
+ ldrh r6, [r2, 0x34]
+ ldrh r5, [r2, 0x36]
+ adds r0, r6, r1
+ lsls r3, r0, 16
+ lsrs r6, r3, 16
+ adds r0, r5, r4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ movs r0, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _08075612
+ lsrs r0, r3, 24
+ negs r0, r0
+ b _08075614
+_08075612:
+ lsrs r0, r3, 24
+_08075614:
+ strh r0, [r2, 0x24]
+ movs r0, 0x1
+ ands r4, r0
+ cmp r4, 0
+ beq _08075624
+ lsrs r0, r5, 8
+ negs r0, r0
+ b _08075626
+_08075624:
+ lsrs r0, r5, 8
+_08075626:
+ strh r0, [r2, 0x26]
+ strh r6, [r2, 0x34]
+ strh r5, [r2, 0x36]
+ ldrh r0, [r2, 0x2E]
+ subs r0, 0x1
+ strh r0, [r2, 0x2E]
+ movs r0, 0
+_08075634:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80755E0
+
+ thumb_func_start sub_807563C
+sub_807563C: @ 807563C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075650
+ adds r0, r4, 0
+ bl SetCallbackToStoredInData
+_08075650:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807563C
+
+ thumb_func_start sub_8075658
+sub_8075658: @ 8075658
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_801236C
+ adds r0, r4, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075672
+ adds r0, r4, 0
+ bl SetCallbackToStoredInData
+_08075672:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8075658
+
+ thumb_func_start sub_8075678
+sub_8075678: @ 8075678
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ subs r0, r1, r0
+ cmp r0, 0
+ bge _0807568C
+ negs r0, r0
+_0807568C:
+ lsls r0, 8
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ strh r0, [r4, 0x2E]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8075678
+
+ thumb_func_start sub_80756A4
+sub_80756A4: @ 80756A4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ adds r0, r4, 0
+ bl sub_8075678
+ ldr r1, _080756C8 @ =sub_807563C
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080756C8: .4byte sub_807563C
+ thumb_func_end sub_80756A4
+
+ thumb_func_start sub_80756CC
+sub_80756CC: @ 80756CC
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r7, r0, 0
+ movs r0, 0x32
+ ldrsh r1, [r7, r0]
+ movs r2, 0x30
+ ldrsh r0, [r7, r2]
+ subs r1, r0
+ movs r3, 0x36
+ ldrsh r2, [r7, r3]
+ movs r3, 0x34
+ ldrsh r0, [r7, r3]
+ subs r2, r0
+ lsrs r0, r1, 31
+ mov r8, r0
+ lsrs r3, r2, 31
+ mov r9, r3
+ cmp r1, 0
+ bge _080756F8
+ negs r1, r1
+_080756F8:
+ lsls r0, r1, 20
+ lsrs r6, r0, 16
+ adds r0, r2, 0
+ cmp r0, 0
+ bge _08075704
+ negs r0, r0
+_08075704:
+ lsls r0, 20
+ lsrs r5, r0, 16
+ movs r0, 0x2E
+ ldrsh r4, [r7, r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl __divsi3
+ lsls r0, 16
+ lsrs r6, r0, 16
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl __divsi3
+ lsls r0, 16
+ lsrs r5, r0, 16
+ mov r2, r8
+ cmp r2, 0
+ beq _08075730
+ movs r0, 0x1
+ orrs r6, r0
+ b _08075734
+_08075730:
+ ldr r0, _08075740 @ =0x0000fffe
+ ands r6, r0
+_08075734:
+ mov r3, r9
+ cmp r3, 0
+ beq _08075744
+ movs r0, 0x1
+ orrs r5, r0
+ b _08075748
+ .align 2, 0
+_08075740: .4byte 0x0000fffe
+_08075744:
+ ldr r0, _08075760 @ =0x0000fffe
+ ands r5, r0
+_08075748:
+ movs r0, 0
+ strh r6, [r7, 0x30]
+ strh r5, [r7, 0x32]
+ strh r0, [r7, 0x36]
+ strh r0, [r7, 0x34]
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08075760: .4byte 0x0000fffe
+ thumb_func_end sub_80756CC
+
+ thumb_func_start sub_8075764
+sub_8075764: @ 8075764
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ adds r0, r4, 0
+ bl sub_80756CC
+ ldr r1, _08075788 @ =sub_80757E8
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08075788: .4byte sub_80757E8
+ thumb_func_end sub_8075764
+
+ thumb_func_start sub_807578C
+sub_807578C: @ 807578C
+ push {r4-r6,lr}
+ adds r2, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bne _0807579C
+ movs r0, 0x1
+ b _080757E0
+_0807579C:
+ ldrh r1, [r2, 0x30]
+ ldrh r4, [r2, 0x32]
+ ldrh r6, [r2, 0x34]
+ ldrh r5, [r2, 0x36]
+ adds r0, r6, r1
+ lsls r3, r0, 16
+ lsrs r6, r3, 16
+ adds r0, r5, r4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ movs r0, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _080757BE
+ lsrs r0, r3, 20
+ negs r0, r0
+ b _080757C0
+_080757BE:
+ lsrs r0, r3, 20
+_080757C0:
+ strh r0, [r2, 0x24]
+ movs r0, 0x1
+ ands r4, r0
+ cmp r4, 0
+ beq _080757D0
+ lsrs r0, r5, 4
+ negs r0, r0
+ b _080757D2
+_080757D0:
+ lsrs r0, r5, 4
+_080757D2:
+ strh r0, [r2, 0x26]
+ strh r6, [r2, 0x34]
+ strh r5, [r2, 0x36]
+ ldrh r0, [r2, 0x2E]
+ subs r0, 0x1
+ strh r0, [r2, 0x2E]
+ movs r0, 0
+_080757E0:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807578C
+
+ thumb_func_start sub_80757E8
+sub_80757E8: @ 80757E8
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_807578C
+ lsls r0, 24
+ cmp r0, 0
+ beq _080757FC
+ adds r0, r4, 0
+ bl SetCallbackToStoredInData
+_080757FC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80757E8
+
+ thumb_func_start sub_8075804
+sub_8075804: @ 8075804
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ subs r0, r1, r0
+ cmp r0, 0
+ bge _08075818
+ negs r0, r0
+_08075818:
+ lsls r0, 4
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ strh r0, [r4, 0x2E]
+ adds r0, r4, 0
+ bl sub_80756CC
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8075804
+
+ thumb_func_start sub_8075830
+sub_8075830: @ 8075830
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ adds r0, r4, 0
+ bl sub_8075804
+ ldr r1, _08075854 @ =sub_80757E8
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08075854: .4byte sub_80757E8
+ thumb_func_end sub_8075830
+
+ thumb_func_start obj_id_set_rotscale
+obj_id_set_rotscale: @ 8075858
+ push {r4,r5,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 16
+ lsls r3, 16
+ lsrs r3, 16
+ ldr r5, _080758D0 @ =0xffff0000
+ lsls r2, 16
+ lsrs r1, 16
+ orrs r1, r2
+ str r1, [sp]
+ ldr r0, [sp, 0x4]
+ ands r0, r5
+ orrs r0, r3
+ str r0, [sp, 0x4]
+ bl sub_80758DC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075894
+ mov r0, sp
+ ldrh r0, [r0]
+ negs r0, r0
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, [sp]
+ ands r1, r5
+ orrs r1, r0
+ str r1, [sp]
+_08075894:
+ ldr r1, _080758D4 @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrb r4, [r0, 0x3]
+ lsls r4, 26
+ lsrs r4, 27
+ add r5, sp, 0x8
+ mov r0, sp
+ adds r1, r5, 0
+ movs r2, 0x1
+ movs r3, 0x2
+ bl ObjAffineSet
+ ldr r0, _080758D8 @ =gOamMatrices
+ lsls r4, 3
+ adds r4, r0
+ ldrh r0, [r5]
+ strh r0, [r4]
+ ldrh r0, [r5, 0x2]
+ strh r0, [r4, 0x2]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x4]
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x6]
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080758D0: .4byte 0xffff0000
+_080758D4: .4byte gSprites
+_080758D8: .4byte gOamMatrices
+ thumb_func_end obj_id_set_rotscale
+
+ thumb_func_start sub_80758DC
+sub_80758DC: @ 80758DC
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_80758DC
+
+ thumb_func_start sub_80758E0
+sub_80758E0: @ 80758E0
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r2, _08075978 @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r4, r1, r2
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075914
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_08075914:
+ movs r7, 0x3
+ ands r5, r7
+ lsls r2, r5, 2
+ ldrb r1, [r4, 0x1]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r4, 0x1]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldrb r0, [r4, 0x1]
+ lsls r0, 30
+ cmp r0, 0
+ bne _0807595C
+ ldr r0, _0807597C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x6]
+ movs r0, 0x1F
+ ands r1, r0
+ lsls r1, 1
+ ldrb r2, [r4, 0x3]
+ movs r0, 0x3F
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x3]
+_0807595C:
+ ldrb r3, [r4, 0x1]
+ orrs r3, r7
+ strb r3, [r4, 0x1]
+ lsrs r1, r3, 6
+ ldrb r2, [r4, 0x3]
+ lsrs r2, 6
+ lsls r3, 30
+ lsrs r3, 30
+ adds r0, r4, 0
+ bl CalcCenterToCornerVec
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08075978: .4byte gSprites
+_0807597C: .4byte gUnknown_2024018
+ thumb_func_end sub_80758E0
+
+ thumb_func_start sub_8075980
+sub_8075980: @ 8075980
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r4, 0
+ adds r1, r2, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldr r1, _080759D8 @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrb r2, [r0, 0x1]
+ movs r1, 0x4
+ negs r1, r1
+ ands r1, r2
+ movs r2, 0x1
+ orrs r1, r2
+ movs r2, 0xD
+ negs r2, r2
+ ands r1, r2
+ strb r1, [r0, 0x1]
+ adds r3, r0, 0
+ adds r3, 0x2C
+ ldrb r2, [r3]
+ movs r1, 0x7F
+ ands r1, r2
+ strb r1, [r3]
+ ldrb r3, [r0, 0x1]
+ lsrs r1, r3, 6
+ ldrb r2, [r0, 0x3]
+ lsrs r2, 6
+ lsls r3, 30
+ lsrs r3, 30
+ bl CalcCenterToCornerVec
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080759D8: .4byte gSprites
+ thumb_func_end sub_8075980
+
+ thumb_func_start sub_80759DC
+sub_80759DC: @ 80759DC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08075A14 @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r2, r1, r2
+ ldrb r0, [r2, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ ldr r1, _08075A18 @ =gOamMatrices
+ lsls r0, 3
+ adds r0, r1
+ ldrh r1, [r0, 0x4]
+ movs r3, 0x4
+ ldrsh r0, [r0, r3]
+ cmp r0, 0
+ bge _08075A08
+ negs r0, r0
+ lsls r0, 16
+ lsrs r1, r0, 16
+_08075A08:
+ lsls r0, r1, 16
+ asrs r0, 19
+ strh r0, [r2, 0x26]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08075A14: .4byte gSprites
+_08075A18: .4byte gOamMatrices
+ thumb_func_end sub_80759DC
+
+ thumb_func_start sub_8075A1C
+sub_8075A1C: @ 8075A1C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x10
+ adds r4, r0, 0
+ ldr r0, [sp, 0x28]
+ lsls r1, 24
+ lsrs r6, r1, 24
+ lsls r2, 16
+ lsrs r5, r2, 16
+ lsls r3, 16
+ lsrs r7, r3, 16
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ ldrb r0, [r4, 0x1]
+ lsls r0, 30
+ lsrs r0, 30
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08075AC2
+ adds r0, r4, 0
+ adds r0, 0x2C
+ ldrb r1, [r0]
+ movs r2, 0x80
+ orrs r1, r2
+ strb r1, [r0]
+ cmp r6, 0
+ beq _08075A6A
+ 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
+_08075A6A:
+ ldr r6, _08075AD0 @ =0xffff0000
+ lsls r0, r7, 16
+ orrs r5, r0
+ str r5, [sp]
+ ldr r0, [sp, 0x4]
+ ands r0, r6
+ mov r1, r8
+ orrs r0, r1
+ str r0, [sp, 0x4]
+ bl sub_80758DC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075A98
+ mov r0, sp
+ ldrh r0, [r0]
+ negs r0, r0
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, [sp]
+ ands r1, r6
+ orrs r1, r0
+ str r1, [sp]
+_08075A98:
+ ldrb r4, [r4, 0x3]
+ lsls r4, 26
+ lsrs r4, 27
+ add r5, sp, 0x8
+ mov r0, sp
+ adds r1, r5, 0
+ movs r2, 0x1
+ movs r3, 0x2
+ bl ObjAffineSet
+ ldr r0, _08075AD4 @ =gOamMatrices
+ lsls r4, 3
+ adds r4, r0
+ ldrh r0, [r5]
+ strh r0, [r4]
+ ldrh r0, [r5, 0x2]
+ strh r0, [r4, 0x2]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x4]
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x6]
+_08075AC2:
+ add sp, 0x10
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08075AD0: .4byte 0xffff0000
+_08075AD4: .4byte gOamMatrices
+ thumb_func_end sub_8075A1C
+
+ thumb_func_start sub_8075AD8
+sub_8075AD8: @ 8075AD8
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ movs r3, 0x80
+ lsls r3, 1
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r1, 0x1
+ adds r2, r3, 0
+ bl sub_8075A1C
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ 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
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8075AD8
+
+ thumb_func_start ArcTan2_
+ArcTan2_: @ 8075B18
+ push {lr}
+ lsls r0, 16
+ asrs r0, 16
+ lsls r1, 16
+ asrs r1, 16
+ bl ArcTan2
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r1}
+ bx r1
+ thumb_func_end ArcTan2_
+
+ thumb_func_start sub_8075B30
+sub_8075B30: @ 8075B30
+ push {lr}
+ lsls r0, 16
+ asrs r0, 16
+ lsls r1, 16
+ asrs r1, 16
+ bl ArcTan2_
+ lsls r0, 16
+ negs r0, r0
+ lsrs r0, 16
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8075B30
+
+ thumb_func_start sub_8075B48
+sub_8075B48: @ 8075B48
+ push {r4-r7,lr}
+ lsls r1, 24
+ lsls r0, 20
+ lsrs r0, 16
+ cmp r1, 0
+ bne _08075BC4
+ ldr r2, _08075BB8 @ =gPlttBufferUnfaded
+ ldr r1, _08075BBC @ =gPlttBufferFaded
+ lsls r0, 1
+ adds r4, r0, r1
+ adds r5, r0, r2
+ movs r6, 0xF
+_08075B60:
+ ldr r0, [r5]
+ lsls r2, r0, 27
+ lsrs r2, 27
+ lsls r1, r0, 22
+ lsrs r1, 27
+ adds r2, r1
+ lsls r0, 17
+ lsrs r0, 27
+ adds r0, r2
+ movs r1, 0x3
+ bl __udivsi3
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x1F
+ ands r0, r1
+ ldrb r1, [r4]
+ movs r3, 0x20
+ negs r3, r3
+ adds r2, r3, 0
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4]
+ lsls r3, r0, 5
+ ldrh r1, [r4]
+ ldr r7, _08075BC0 @ =0xfffffc1f
+ adds r2, r7, 0
+ ands r1, r2
+ orrs r1, r3
+ strh r1, [r4]
+ lsls r0, 2
+ ldrb r1, [r4, 0x1]
+ movs r3, 0x7D
+ negs r3, r3
+ adds r2, r3, 0
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0x1]
+ adds r4, 0x2
+ adds r5, 0x2
+ subs r6, 0x1
+ cmp r6, 0
+ bge _08075B60
+ b _08075BD4
+ .align 2, 0
+_08075BB8: .4byte gPlttBufferUnfaded
+_08075BBC: .4byte gPlttBufferFaded
+_08075BC0: .4byte 0xfffffc1f
+_08075BC4:
+ lsls r1, r0, 1
+ ldr r0, _08075BDC @ =gPlttBufferUnfaded
+ adds r0, r1, r0
+ ldr r2, _08075BE0 @ =gPlttBufferFaded
+ adds r1, r2
+ ldr r2, _08075BE4 @ =0x04000008
+ bl CpuSet
+_08075BD4:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08075BDC: .4byte gPlttBufferUnfaded
+_08075BE0: .4byte gPlttBufferFaded
+_08075BE4: .4byte 0x04000008
+ thumb_func_end sub_8075B48
+
+ thumb_func_start sub_8075BE8
+sub_8075BE8: @ 8075BE8
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ ldr r4, [sp, 0x1C]
+ ldr r5, [sp, 0x20]
+ ldr r6, [sp, 0x24]
+ lsls r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ lsls r4, 24
+ lsrs r7, r4, 24
+ lsls r5, 24
+ lsrs r5, 24
+ mov r8, r5
+ lsls r6, 24
+ lsrs r6, 24
+ mov r9, r6
+ movs r4, 0
+ cmp r0, 0
+ beq _08075C1C
+ movs r4, 0xE
+_08075C1C:
+ cmp r1, 0
+ beq _08075C2E
+ ldr r0, _08075CB0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r1, r0, 0
+ adds r1, 0x10
+ movs r0, 0x1
+ lsls r0, r1
+ orrs r4, r0
+_08075C2E:
+ cmp r2, 0
+ beq _08075C40
+ ldr r0, _08075CB4 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r1, r0, 0
+ adds r1, 0x10
+ movs r0, 0x1
+ lsls r0, r1
+ orrs r4, r0
+_08075C40:
+ cmp r3, 0
+ beq _08075C64
+ ldr r6, _08075CB0 @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ movs r5, 0x2
+ eors r0, r5
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075C64
+ ldrb r0, [r6]
+ eors r0, r5
+ adds r1, r0, 0
+ adds r1, 0x10
+ movs r0, 0x1
+ lsls r0, r1
+ orrs r4, r0
+_08075C64:
+ cmp r7, 0
+ beq _08075C88
+ ldr r6, _08075CB4 @ =gBattleAnimTarget
+ ldrb r0, [r6]
+ movs r5, 0x2
+ eors r0, r5
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075C88
+ ldrb r0, [r6]
+ eors r0, r5
+ adds r1, r0, 0
+ adds r1, 0x10
+ movs r0, 0x1
+ lsls r0, r1
+ orrs r4, r0
+_08075C88:
+ mov r0, r8
+ cmp r0, 0
+ beq _08075C94
+ movs r0, 0x80
+ lsls r0, 1
+ orrs r4, r0
+_08075C94:
+ mov r0, r9
+ cmp r0, 0
+ beq _08075CA0
+ movs r0, 0x80
+ lsls r0, 2
+ orrs r4, r0
+_08075CA0:
+ adds r0, r4, 0
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08075CB0: .4byte gBattleAnimAttacker
+_08075CB4: .4byte gBattleAnimTarget
+ thumb_func_end sub_8075BE8
+
+ thumb_func_start sub_8075CB8
+sub_8075CB8: @ 8075CB8
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ lsls r2, 24
+ lsrs r6, r2, 24
+ lsls r3, 24
+ lsrs r7, r3, 24
+ movs r4, 0
+ cmp r0, 0
+ beq _08075CF2
+ movs r0, 0
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075CF2
+ movs r0, 0
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ movs r4, 0x1
+ lsls r4, r0
+_08075CF2:
+ cmp r5, 0
+ beq _08075D1E
+ movs r0, 0x2
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075D1E
+ movs r0, 0x2
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ adds r1, 0x10
+ movs r0, 0x1
+ lsls r0, r1
+ orrs r4, r0
+_08075D1E:
+ cmp r6, 0
+ beq _08075D4A
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075D4A
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ adds r1, 0x10
+ movs r0, 0x1
+ lsls r0, r1
+ orrs r4, r0
+_08075D4A:
+ cmp r7, 0
+ beq _08075D76
+ movs r0, 0x3
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075D76
+ movs r0, 0x3
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ adds r1, 0x10
+ movs r0, 0x1
+ lsls r0, r1
+ orrs r4, r0
+_08075D76:
+ adds r0, r4, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8075CB8
+
+ thumb_func_start sub_8075D80
+sub_8075D80: @ 8075D80
+ lsls r0, 24
+ lsrs r0, 24
+ bx lr
+ thumb_func_end sub_8075D80
+
+ thumb_func_start sub_8075D88
+sub_8075D88: @ 8075D88
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8075D88
+
+ thumb_func_start sub_8075D9C
+sub_8075D9C: @ 8075D9C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _08075DDA
+ ldr r2, _08075DC8 @ =gBattleAnimArgs
+ movs r3, 0x6
+ ldrsh r0, [r2, r3]
+ movs r1, 0
+ cmp r0, 0
+ bne _08075DB6
+ movs r1, 0x1
+_08075DB6:
+ movs r3, 0x4
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bne _08075DCC
+ adds r0, r4, 0
+ bl sub_8075160
+ b _08075DD2
+ .align 2, 0
+_08075DC8: .4byte gBattleAnimArgs
+_08075DCC:
+ adds r0, r4, 0
+ bl sub_8075114
+_08075DD2:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _08075DEE
+_08075DDA:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x30
+ ands r0, r1
+ cmp r0, 0
+ beq _08075DEE
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_08075DEE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8075D9C
+
+ thumb_func_start sub_8075DF4
+sub_8075DF4: @ 8075DF4
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ ldr r6, _08075E6C @ =gBattleAnimArgs
+ movs r1, 0xA
+ ldrsh r0, [r6, r1]
+ movs r1, 0xFF
+ lsls r1, 8
+ ands r0, r1
+ movs r1, 0
+ cmp r0, 0
+ bne _08075E0C
+ movs r1, 0x1
+_08075E0C:
+ ldrb r0, [r6, 0xA]
+ movs r7, 0x1
+ cmp r0, 0
+ bne _08075E16
+ movs r7, 0x3
+_08075E16:
+ adds r0, r5, 0
+ bl sub_8075160
+ ldr r0, _08075E70 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075E30
+ ldrh r0, [r6, 0x4]
+ negs r0, r0
+ strh r0, [r6, 0x4]
+_08075E30:
+ ldrh r0, [r6, 0x8]
+ strh r0, [r5, 0x2E]
+ ldr r4, _08075E74 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x4]
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ adds r1, r7, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x6]
+ adds r0, r6
+ strh r0, [r5, 0x36]
+ ldr r0, _08075E78 @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _08075E7C @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08075E6C: .4byte gBattleAnimArgs
+_08075E70: .4byte gBattleAnimAttacker
+_08075E74: .4byte gBattleAnimTarget
+_08075E78: .4byte sub_8075590
+_08075E7C: .4byte DestroyAnimSprite
+ thumb_func_end sub_8075DF4
+
+ thumb_func_start sub_8075E80
+sub_8075E80: @ 8075E80
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _08075EE0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075EA0
+ ldr r1, _08075EE4 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_08075EA0:
+ ldr r4, _08075EE4 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x8]
+ strh r0, [r6, 0x2E]
+ ldr r5, _08075EE8 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x4]
+ adds r0, r1
+ strh r0, [r6, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x6]
+ adds r0, r1
+ strh r0, [r6, 0x36]
+ ldrh r0, [r4, 0xA]
+ strh r0, [r6, 0x38]
+ adds r0, r6, 0
+ bl sub_8075068
+ ldr r0, _08075EEC @ =sub_8075EF0
+ str r0, [r6, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08075EE0: .4byte gBattleAnimAttacker
+_08075EE4: .4byte gBattleAnimArgs
+_08075EE8: .4byte gBattleAnimTarget
+_08075EEC: .4byte sub_8075EF0
+ thumb_func_end sub_8075E80
+
+ thumb_func_start sub_8075EF0
+sub_8075EF0: @ 8075EF0
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075F04
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_08075F04:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8075EF0
+
+ thumb_func_start sub_8075F0C
+sub_8075F0C: @ 8075F0C
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ ldr r0, _08075F20 @ =gBattleAnimArgs
+ movs r2, 0xC
+ ldrsh r1, [r0, r2]
+ cmp r1, 0
+ bne _08075F24
+ movs r4, 0x1
+ movs r7, 0x3
+ b _08075F28
+ .align 2, 0
+_08075F20: .4byte gBattleAnimArgs
+_08075F24:
+ movs r4, 0
+ movs r7, 0x1
+_08075F28:
+ movs r1, 0xA
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _08075F40
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8075160
+ ldr r0, _08075F3C @ =gBattleAnimAttacker
+ b _08075F4A
+ .align 2, 0
+_08075F3C: .4byte gBattleAnimAttacker
+_08075F40:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8075114
+ ldr r0, _08075FA8 @ =gBattleAnimTarget
+_08075F4A:
+ ldrb r6, [r0]
+ ldr r0, _08075FAC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08075F62
+ ldr r1, _08075FB0 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_08075F62:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8075114
+ ldr r4, _08075FB0 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x8]
+ strh r0, [r5, 0x2E]
+ adds r0, r6, 0
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r2, [r4, 0x4]
+ adds r0, r2
+ strh r0, [r5, 0x32]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r4, [r4, 0x6]
+ adds r0, r4
+ strh r0, [r5, 0x36]
+ ldr r0, _08075FB4 @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _08075FB8 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08075FA8: .4byte gBattleAnimTarget
+_08075FAC: .4byte gBattleAnimAttacker
+_08075FB0: .4byte gBattleAnimArgs
+_08075FB4: .4byte sub_8075590
+_08075FB8: .4byte DestroyAnimSprite
+ thumb_func_end sub_8075F0C
+
+ thumb_func_start duplicate_obj_of_side_rel2move_in_transparent_mode
+duplicate_obj_of_side_rel2move_in_transparent_mode: @ 8075FBC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0xFF
+ beq _08076026
+ movs r6, 0
+ ldr r2, _08076018 @ =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r1, r0, 2
+_08075FD8:
+ lsls r0, r6, 4
+ adds r0, r6
+ lsls r0, 2
+ adds r4, r0, r2
+ adds r5, r4, 0
+ adds r5, 0x3E
+ ldrb r0, [r5]
+ lsls r0, 31
+ cmp r0, 0
+ bne _0807601C
+ adds r0, r4, 0
+ adds r1, r2
+ movs r2, 0x44
+ bl memcpy
+ ldrb r1, [r4, 0x1]
+ movs r2, 0xD
+ negs r2, r2
+ adds r0, r2, 0
+ ands r1, r0
+ movs r0, 0x4
+ orrs r1, r0
+ strb r1, [r4, 0x1]
+ ldrb r0, [r5]
+ adds r2, 0x8
+ adds r1, r2, 0
+ ands r0, r1
+ strb r0, [r5]
+ lsls r0, r6, 16
+ asrs r0, 16
+ b _0807602A
+ .align 2, 0
+_08076018: .4byte gSprites
+_0807601C:
+ adds r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ cmp r6, 0x3F
+ bls _08075FD8
+_08076026:
+ movs r0, 0x1
+ negs r0, r0
+_0807602A:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end duplicate_obj_of_side_rel2move_in_transparent_mode
+
+ thumb_func_start obj_delete_but_dont_free_vram
+obj_delete_but_dont_free_vram: @ 8076030
+ push {lr}
+ adds r3, r0, 0
+ adds r3, 0x3F
+ ldrb r1, [r3]
+ movs r2, 0x40
+ orrs r1, r2
+ strb r1, [r3]
+ bl DestroySprite
+ pop {r0}
+ bx r0
+ thumb_func_end obj_delete_but_dont_free_vram
+
+ thumb_func_start sub_8076048
+sub_8076048: @ 8076048
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r6, 0
+ movs r3, 0
+ ldr r2, _080760C0 @ =gBattleAnimArgs
+ movs r0, 0x4
+ ldrsh r1, [r2, r0]
+ movs r4, 0
+ ldrsh r0, [r2, r4]
+ cmp r1, r0
+ ble _08076062
+ movs r3, 0x1
+_08076062:
+ cmp r1, r0
+ bge _08076068
+ ldr r3, _080760C4 @ =0x0000ffff
+_08076068:
+ movs r0, 0x6
+ ldrsh r1, [r2, r0]
+ movs r4, 0x2
+ ldrsh r0, [r2, r4]
+ cmp r1, r0
+ ble _08076076
+ movs r6, 0x1
+_08076076:
+ cmp r1, r0
+ bge _0807607C
+ ldr r6, _080760C4 @ =0x0000ffff
+_0807607C:
+ ldr r0, _080760C8 @ =gTasks
+ lsls r4, r5, 2
+ adds r4, r5
+ lsls r4, 3
+ adds r4, r0
+ movs r1, 0
+ strh r1, [r4, 0x8]
+ ldrh r0, [r2, 0x8]
+ strh r0, [r4, 0xA]
+ strh r1, [r4, 0xC]
+ ldrh r0, [r2]
+ strh r0, [r4, 0xE]
+ ldrh r0, [r2, 0x2]
+ strh r0, [r4, 0x10]
+ strh r3, [r4, 0x12]
+ strh r6, [r4, 0x14]
+ ldrh r0, [r2, 0x4]
+ strh r0, [r4, 0x16]
+ ldrh r0, [r2, 0x6]
+ strh r0, [r4, 0x18]
+ ldrh r1, [r2, 0x2]
+ lsls r1, 8
+ ldrh r0, [r2]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r0, _080760CC @ =sub_80760D0
+ str r0, [r4]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080760C0: .4byte gBattleAnimArgs
+_080760C4: .4byte 0x0000ffff
+_080760C8: .4byte gTasks
+_080760CC: .4byte sub_80760D0
+ thumb_func_end sub_8076048
+
+ thumb_func_start sub_80760D0
+sub_80760D0: @ 80760D0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0807611C @ =gTasks
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0xA
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ ble _08076164
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08076120
+ ldrh r2, [r4, 0xE]
+ movs r3, 0xE
+ ldrsh r1, [r4, r3]
+ movs r3, 0x16
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ beq _08076134
+ ldrh r0, [r4, 0x12]
+ adds r0, r2, r0
+ strh r0, [r4, 0xE]
+ b _08076134
+ .align 2, 0
+_0807611C: .4byte gTasks
+_08076120:
+ ldrh r2, [r4, 0x10]
+ movs r0, 0x10
+ ldrsh r1, [r4, r0]
+ movs r3, 0x18
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ beq _08076134
+ ldrh r0, [r4, 0x14]
+ adds r0, r2, r0
+ strh r0, [r4, 0x10]
+_08076134:
+ ldrh r1, [r4, 0x10]
+ lsls r1, 8
+ ldrh r0, [r4, 0xE]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ movs r2, 0x16
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _08076164
+ movs r3, 0x10
+ ldrsh r1, [r4, r3]
+ movs r2, 0x18
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _08076164
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_08076164:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80760D0
+
+ thumb_func_start sub_807616C
+sub_807616C: @ 807616C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _0807618C @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0xFF
+ bne _08076190
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _080761B6
+ .align 2, 0
+_0807618C: .4byte gBattleAnimArgs
+_08076190:
+ ldr r1, _080761BC @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldr r2, _080761C0 @ =gSprites
+ lsls r1, r3, 4
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r2
+ ldrb r1, [r1, 0x5]
+ lsrs r1, 4
+ lsls r1, 4
+ ldr r3, _080761C4 @ =0x00000101
+ adds r2, r3, 0
+ adds r1, r2
+ strh r1, [r0, 0x8]
+ bl sub_80761C8
+_080761B6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080761BC: .4byte gTasks
+_080761C0: .4byte gSprites
+_080761C4: .4byte 0x00000101
+ thumb_func_end sub_807616C
+
+ thumb_func_start sub_80761C8
+sub_80761C8: @ 80761C8
+ ldr r3, _080761E8 @ =gBattleAnimArgs
+ ldrh r1, [r3, 0x2]
+ movs r2, 0
+ strh r1, [r0, 0xA]
+ strh r2, [r0, 0xC]
+ ldrh r1, [r3, 0x4]
+ strh r1, [r0, 0xE]
+ strh r2, [r0, 0x10]
+ ldrh r1, [r3, 0x6]
+ strh r1, [r0, 0x12]
+ strh r2, [r0, 0x14]
+ ldrh r1, [r3, 0x8]
+ strh r1, [r0, 0x16]
+ ldr r1, _080761EC @ =sub_80761F0
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+_080761E8: .4byte gBattleAnimArgs
+_080761EC: .4byte sub_80761F0
+ thumb_func_end sub_80761C8
+
+ thumb_func_start sub_80761F0
+sub_80761F0: @ 80761F0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08076248 @ =gTasks
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x12
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ blt _08076280
+ movs r0, 0
+ strh r0, [r4, 0x10]
+ movs r1, 0x14
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _0807624C
+ ldrh r2, [r4, 0xC]
+ adds r2, 0x1
+ strh r2, [r4, 0xC]
+ ldrh r0, [r4, 0x8]
+ lsls r2, 24
+ lsrs r2, 24
+ ldrh r3, [r4, 0xA]
+ movs r1, 0xF
+ bl BlendPalette
+ movs r2, 0xC
+ ldrsh r1, [r4, r2]
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _08076280
+ movs r0, 0x1
+ strh r0, [r4, 0x14]
+ b _08076280
+ .align 2, 0
+_08076248: .4byte gTasks
+_0807624C:
+ ldrh r2, [r4, 0xC]
+ subs r2, 0x1
+ strh r2, [r4, 0xC]
+ ldrh r0, [r4, 0x8]
+ lsls r2, 24
+ lsrs r2, 24
+ ldrh r3, [r4, 0xA]
+ movs r1, 0xF
+ bl BlendPalette
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ cmp r1, 0
+ bne _08076280
+ ldrh r0, [r4, 0x16]
+ subs r0, 0x1
+ strh r0, [r4, 0x16]
+ lsls r0, 16
+ cmp r0, 0
+ beq _0807627A
+ strh r1, [r4, 0x10]
+ strh r1, [r4, 0x14]
+ b _08076280
+_0807627A:
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_08076280:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80761F0
+
+ thumb_func_start sub_8076288
+sub_8076288: @ 8076288
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080762A8 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xFF
+ bne _080762AC
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _080762C2
+ .align 2, 0
+_080762A8: .4byte gBattleAnimArgs
+_080762AC:
+ ldr r1, _080762C8 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ lsls r1, r2, 4
+ ldr r2, _080762CC @ =0x00000101
+ adds r1, r2
+ strh r1, [r0, 0x8]
+ bl sub_80761C8
+_080762C2:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080762C8: .4byte gTasks
+_080762CC: .4byte 0x00000101
+ thumb_func_end sub_8076288
+
+ thumb_func_start sub_80762D0
+sub_80762D0: @ 80762D0
+ push {r4,lr}
+ adds r3, r0, 0
+ adds r4, r1, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r1, 0
+ strh r1, [r3, 0x16]
+ strh r1, [r3, 0x18]
+ strh r1, [r3, 0x1A]
+ strh r4, [r3, 0x26]
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r3, 0x1C]
+ strh r0, [r3, 0x1E]
+ strh r1, [r3, 0x20]
+ adds r0, r3, 0
+ adds r0, 0x22
+ adds r3, 0x24
+ adds r1, r3, 0
+ bl sub_80765C0
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_80758E0
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80762D0
+
+ thumb_func_start sub_8076308
+sub_8076308: @ 8076308
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r5, _080763A8 @ =gUnknown_2037F28
+ movs r1, 0x22
+ ldrsh r0, [r4, r1]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ bl sub_80765C8
+ movs r3, 0x16
+ ldrsh r1, [r4, r3]
+ lsls r1, 3
+ adds r1, r0, r1
+ str r1, [r5]
+ movs r6, 0
+ ldrsh r2, [r1, r6]
+ ldr r0, _080763AC @ =0x00007ffe
+ cmp r2, r0
+ beq _080763B0
+ cmp r2, r0
+ bgt _08076410
+ subs r0, 0x1
+ cmp r2, r0
+ beq _080763B6
+ ldrb r0, [r1, 0x5]
+ cmp r0, 0
+ bne _08076356
+ ldrh r0, [r1]
+ strh r0, [r4, 0x1C]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x1E]
+ ldrb r0, [r1, 0x4]
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x16]
+ adds r0, 0x1
+ strh r0, [r4, 0x16]
+ adds r0, r1, 0
+ adds r0, 0x8
+ str r0, [r5]
+_08076356:
+ ldr r1, [r5]
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x1C]
+ adds r0, r2
+ strh r0, [r4, 0x1C]
+ ldrh r0, [r1, 0x2]
+ ldrh r3, [r4, 0x1E]
+ adds r0, r3
+ strh r0, [r4, 0x1E]
+ ldrh r0, [r4, 0x20]
+ ldrb r1, [r1, 0x4]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r6, 0x1C
+ ldrsh r1, [r4, r6]
+ movs r3, 0x1E
+ ldrsh r2, [r4, r3]
+ ldrh r3, [r4, 0x20]
+ bl obj_id_set_rotscale
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8076440
+ ldrh r0, [r4, 0x18]
+ adds r0, 0x1
+ strh r0, [r4, 0x18]
+ lsls r0, 16
+ asrs r0, 16
+ ldr r1, [r5]
+ ldrb r1, [r1, 0x5]
+ cmp r0, r1
+ blt _08076436
+ movs r0, 0
+ strh r0, [r4, 0x18]
+ b _08076408
+ .align 2, 0
+_080763A8: .4byte gUnknown_2037F28
+_080763AC: .4byte 0x00007ffe
+_080763B0:
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x16]
+ b _08076436
+_080763B6:
+ ldrh r2, [r1, 0x2]
+ movs r6, 0x2
+ ldrsh r0, [r1, r6]
+ cmp r0, 0
+ beq _08076408
+ ldrh r1, [r4, 0x1A]
+ movs r3, 0x1A
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080763D6
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x1A]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080763D8
+ b _08076408
+_080763D6:
+ strh r2, [r4, 0x1A]
+_080763D8:
+ movs r6, 0x16
+ ldrsh r0, [r4, r6]
+ cmp r0, 0
+ beq _08076436
+ ldr r3, _08076400 @ =gUnknown_2037F28
+ ldr r5, _08076404 @ =0x00007ffd
+_080763E4:
+ ldrh r2, [r4, 0x16]
+ subs r1, r2, 0x1
+ strh r1, [r4, 0x16]
+ ldr r0, [r3]
+ subs r0, 0x8
+ str r0, [r3]
+ movs r6, 0
+ ldrsh r0, [r0, r6]
+ cmp r0, r5
+ beq _08076434
+ lsls r0, r1, 16
+ cmp r0, 0
+ bne _080763E4
+ b _08076436
+ .align 2, 0
+_08076400: .4byte gUnknown_2037F28
+_08076404: .4byte 0x00007ffd
+_08076408:
+ ldrh r0, [r4, 0x16]
+ adds r0, 0x1
+ strh r0, [r4, 0x16]
+ b _08076436
+_08076410:
+ ldr r2, _08076430 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0
+ strh r1, [r0, 0x26]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8075980
+ movs r0, 0
+ b _08076438
+ .align 2, 0
+_08076430: .4byte gSprites
+_08076434:
+ strh r2, [r4, 0x16]
+_08076436:
+ movs r0, 0x1
+_08076438:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8076308
+
+ thumb_func_start sub_8076440
+sub_8076440: @ 8076440
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ bl sub_80764EC
+ lsls r0, 16
+ lsrs r0, 15
+ movs r1, 0x40
+ subs r5, r1, r0
+ ldr r1, _0807648C @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r4, r0, r1
+ ldrb r1, [r4, 0x3]
+ lsls r1, 26
+ lsrs r1, 27
+ lsls r0, r5, 8
+ ldr r2, _08076490 @ =gOamMatrices
+ lsls r1, 3
+ adds r1, r2
+ movs r2, 0x6
+ ldrsh r1, [r1, r2]
+ bl __divsi3
+ cmp r0, 0x80
+ ble _0807647C
+ movs r0, 0x80
+_0807647C:
+ subs r0, r5, r0
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ strh r0, [r4, 0x26]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807648C: .4byte gSprites
+_08076490: .4byte gOamMatrices
+ thumb_func_end sub_8076440
+
+ thumb_func_start sub_8076494
+sub_8076494: @ 8076494
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r0, r1, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80764EC
+ lsls r0, 16
+ lsrs r0, 15
+ movs r1, 0x40
+ subs r5, r1, r0
+ ldr r1, _080764E4 @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r4, r0, r1
+ ldrb r1, [r4, 0x3]
+ lsls r1, 26
+ lsrs r1, 27
+ lsls r0, r5, 8
+ ldr r2, _080764E8 @ =gOamMatrices
+ lsls r1, 3
+ adds r1, r2
+ movs r2, 0x6
+ ldrsh r1, [r1, r2]
+ bl __divsi3
+ cmp r0, 0x80
+ ble _080764D4
+ movs r0, 0x80
+_080764D4:
+ subs r0, r5, r0
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ strh r0, [r4, 0x26]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080764E4: .4byte gSprites
+_080764E8: .4byte gOamMatrices
+ thumb_func_end sub_8076494
+
+ thumb_func_start sub_80764EC
+sub_80764EC: @ 80764EC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _08076548 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r1
+ ldrh r0, [r0, 0x2E]
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r1, _0807654C @ =gBattlerSpriteIds
+ ldr r6, _08076550 @ =gBattlerPartyIndexes
+_08076508:
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ cmp r0, r2
+ bne _080765AC
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08076568
+ ldr r0, _08076554 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0]
+ lsls r0, r5, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _0807655C
+ lsls r0, r4, 1
+ adds r0, r6
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _08076558 @ =gPlayerParty
+ adds r0, r1
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r1, r0, 16
+ b _0807655E
+ .align 2, 0
+_08076548: .4byte gSprites
+_0807654C: .4byte gBattlerSpriteIds
+_08076550: .4byte gBattlerPartyIndexes
+_08076554: .4byte gUnknown_2024018
+_08076558: .4byte gPlayerParty
+_0807655C:
+ ldrh r1, [r1, 0x2]
+_0807655E:
+ ldr r0, _08076564 @ =gUnknown_8235E6C
+ b _080765A0
+ .align 2, 0
+_08076564: .4byte gUnknown_8235E6C
+_08076568:
+ ldr r0, _08076594 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0]
+ lsls r0, r5, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _0807659C
+ lsls r0, r4, 1
+ adds r0, r6
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _08076598 @ =gEnemyParty
+ adds r0, r1
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r1, r0, 16
+ b _0807659E
+ .align 2, 0
+_08076594: .4byte gUnknown_2024018
+_08076598: .4byte gEnemyParty
+_0807659C:
+ ldrh r1, [r1, 0x2]
+_0807659E:
+ ldr r0, _080765A8 @ =gUnknown_82349CC
+_080765A0:
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ b _080765B8
+ .align 2, 0
+_080765A8: .4byte gUnknown_82349CC
+_080765AC:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x3
+ bls _08076508
+ movs r0, 0x40
+_080765B8:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80764EC
+
+ thumb_func_start sub_80765C0
+sub_80765C0: @ 80765C0
+ strh r2, [r0]
+ asrs r2, 16
+ strh r2, [r1]
+ bx lr
+ thumb_func_end sub_80765C0
+
+ thumb_func_start sub_80765C8
+sub_80765C8: @ 80765C8
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 16
+ orrs r0, r1
+ bx lr
+ thumb_func_end sub_80765C8
+
+ thumb_func_start sub_80765D4
+sub_80765D4: @ 80765D4
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ mov r8, r0
+ adds r5, r3, 0
+ ldr r0, [sp, 0x14]
+ ldr r4, [sp, 0x18]
+ ldr r6, [sp, 0x1C]
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 16
+ lsrs r2, 16
+ lsls r5, 16
+ lsrs r5, 16
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r6, 16
+ lsrs r6, 16
+ mov r3, r8
+ strh r6, [r3, 0x18]
+ strh r1, [r3, 0x26]
+ strh r2, [r3, 0x1A]
+ strh r5, [r3, 0x1C]
+ strh r0, [r3, 0x22]
+ strh r4, [r3, 0x24]
+ lsls r0, 16
+ asrs r0, 16
+ lsls r2, 16
+ asrs r2, 16
+ subs r0, r2
+ adds r1, r6, 0
+ bl __divsi3
+ mov r1, r8
+ strh r0, [r1, 0x1E]
+ lsls r4, 16
+ asrs r4, 16
+ lsls r5, 16
+ asrs r5, 16
+ subs r4, r5
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl __divsi3
+ mov r3, r8
+ strh r0, [r3, 0x20]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80765D4
+
+ thumb_func_start sub_8076640
+sub_8076640: @ 8076640
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x18]
+ movs r2, 0x18
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _08076652
+ movs r0, 0
+ b _080766AE
+_08076652:
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x18]
+ lsls r0, 16
+ cmp r0, 0
+ beq _0807666C
+ ldrh r0, [r4, 0x1E]
+ ldrh r3, [r4, 0x1A]
+ adds r0, r3
+ strh r0, [r4, 0x1A]
+ ldrh r0, [r4, 0x20]
+ ldrh r1, [r4, 0x1C]
+ adds r0, r1
+ b _08076672
+_0807666C:
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x1A]
+ ldrh r0, [r4, 0x24]
+_08076672:
+ strh r0, [r4, 0x1C]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x1A
+ ldrsh r1, [r4, r2]
+ movs r3, 0x1C
+ ldrsh r2, [r4, r3]
+ movs r3, 0
+ bl obj_id_set_rotscale
+ movs r0, 0x18
+ ldrsh r3, [r4, r0]
+ cmp r3, 0
+ beq _0807669C
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8076440
+ b _080766AC
+_0807669C:
+ ldr r2, _080766B4 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r3, [r0, 0x26]
+_080766AC:
+ ldrb r0, [r4, 0x18]
+_080766AE:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080766B4: .4byte gSprites
+ thumb_func_end sub_8076640
+
+ thumb_func_start sub_80766B8
+sub_80766B8: @ 80766B8
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080766E4 @ =gUnknown_2037EFE
+ ldrb r0, [r0]
+ movs r1, 0
+ cmp r0, 0x1E
+ bls _080766D6
+ movs r1, 0x1
+ cmp r0, 0x64
+ bls _080766D6
+ movs r1, 0x3
+ cmp r0, 0xC8
+ bhi _080766D6
+ movs r1, 0x2
+_080766D6:
+ ldr r0, _080766E8 @ =gBattleAnimArgs
+ strh r1, [r0, 0xE]
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080766E4: .4byte gUnknown_2037EFE
+_080766E8: .4byte gBattleAnimArgs
+ thumb_func_end sub_80766B8
+
+ thumb_func_start sub_80766EC
+sub_80766EC: @ 80766EC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r7, r4, 0
+ ldr r6, _080767E0 @ =gBattleAnimTarget
+ ldrb r0, [r6]
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807672C
+ ldr r2, _080767E4 @ =gSprites
+ ldr r1, _080767E8 @ =gBattlerSpriteIds
+ ldrb r0, [r6]
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r0, 0x3
+ adds r2, r4, 0
+ ands r2, r0
+ lsls r2, 2
+ ldrb r3, [r1, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r1, 0x5]
+_0807672C:
+ ldr r0, _080767EC @ =gBattleAnimAttacker
+ mov r8, r0
+ ldrb r0, [r0]
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08076764
+ ldr r2, _080767E4 @ =gSprites
+ ldr r1, _080767E8 @ =gBattlerSpriteIds
+ mov r3, r8
+ ldrb r0, [r3]
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r0, 0x3
+ adds r2, r4, 0
+ ands r2, r0
+ lsls r2, 2
+ ldrb r3, [r1, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r1, 0x5]
+_08076764:
+ ldrb r0, [r6]
+ movs r5, 0x2
+ eors r0, r5
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807679C
+ ldr r2, _080767E4 @ =gSprites
+ ldr r1, _080767E8 @ =gBattlerSpriteIds
+ ldrb r0, [r6]
+ eors r0, r5
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r0, 0x3
+ adds r2, r4, 0
+ ands r2, r0
+ lsls r2, 2
+ ldrb r3, [r1, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r1, 0x5]
+_0807679C:
+ mov r1, r8
+ ldrb r0, [r1]
+ eors r0, r5
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080767D4
+ ldr r2, _080767E4 @ =gSprites
+ ldr r1, _080767E8 @ =gBattlerSpriteIds
+ mov r3, r8
+ ldrb r0, [r3]
+ eors r0, r5
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r0, 0x3
+ ands r7, r0
+ lsls r3, r7, 2
+ ldrb r2, [r1, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r3
+ strb r0, [r1, 0x5]
+_080767D4:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080767E0: .4byte gBattleAnimTarget
+_080767E4: .4byte gSprites
+_080767E8: .4byte gBattlerSpriteIds
+_080767EC: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80766EC
+
+ thumb_func_start sub_80767F0
+sub_80767F0: @ 80767F0
+ push {r4-r6,lr}
+ movs r5, 0
+ ldr r0, _08076850 @ =gBattlersCount
+ ldrb r0, [r0]
+ cmp r5, r0
+ bge _0807684A
+ ldr r6, _08076854 @ =gSprites
+_080767FE:
+ lsls r0, r5, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08076840
+ adds r0, r4, 0
+ bl sub_807685C
+ ldr r3, _08076858 @ =gBattlerSpriteIds
+ adds r3, r5, r3
+ ldrb r2, [r3]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r6
+ adds r1, 0x43
+ strb r0, [r1]
+ ldrb r1, [r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ ldrb r2, [r0, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r2, r1
+ movs r1, 0x8
+ orrs r2, r1
+ strb r2, [r0, 0x5]
+_08076840:
+ adds r5, 0x1
+ ldr r0, _08076850 @ =gBattlersCount
+ ldrb r0, [r0]
+ cmp r5, r0
+ blt _080767FE
+_0807684A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08076850: .4byte gBattlersCount
+_08076854: .4byte gSprites
+_08076858: .4byte gBattlerSpriteIds
+ thumb_func_end sub_80767F0
+
+ thumb_func_start sub_807685C
+sub_807685C: @ 807685C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1E
+ cmp r0, 0
+ beq _0807687E
+ movs r1, 0x14
+ cmp r0, 0x2
+ beq _0807687E
+ movs r1, 0x32
+ cmp r0, 0x1
+ bne _0807687E
+ movs r1, 0x28
+_0807687E:
+ adds r0, r1, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_807685C
+
+ thumb_func_start sub_8076884
+sub_8076884: @ 8076884
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _0807689A
+ cmp r0, 0x3
+ bne _0807689E
+_0807689A:
+ movs r0, 0x2
+ b _080768A0
+_0807689E:
+ movs r0, 0x1
+_080768A0:
+ movs r1, 0x4
+ bl sub_80BC30C
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8076884
+
+ thumb_func_start sub_80768B0
+sub_80768B0: @ 80768B0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _080768C6
+ cmp r0, 0x3
+ bne _080768CA
+_080768C6:
+ movs r0, 0x2
+ b _080768CC
+_080768CA:
+ movs r0, 0x1
+_080768CC:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80768B0
+
+ thumb_func_start sub_80768D0
+sub_80768D0: @ 80768D0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ ldr r4, [sp, 0x30]
+ ldr r5, [sp, 0x34]
+ ldr r6, [sp, 0x38]
+ mov r8, r6
+ lsls r0, 16
+ lsrs r6, r0, 16
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ lsls r2, 24
+ lsrs r7, r2, 24
+ lsls r3, 16
+ lsrs r3, 16
+ mov r10, r3
+ lsls r4, 16
+ lsrs r4, 16
+ str r4, [sp, 0x4]
+ lsls r5, 24
+ lsrs r5, 24
+ str r5, [sp, 0x8]
+ lsls r0, r7, 3
+ ldr r1, _080769B0 @ =gUnknown_83AE084
+ adds r0, r1
+ bl LoadSpriteSheet
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0xC]
+ ldr r1, _080769B4 @ =gUnknown_83AE054
+ lsls r0, r7, 1
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r1
+ ldrh r0, [r0, 0x2]
+ bl AllocSpritePalette
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r4, _080769B8 @ =gMonSpritesGfxPtr
+ ldr r0, [r4]
+ cmp r0, 0
+ beq _0807694E
+ movs r1, 0xBE
+ lsls r1, 1
+ adds r0, r1
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0807694E
+ movs r0, 0x80
+ lsls r0, 6
+ bl AllocZeroed
+ ldr r1, [r4]
+ movs r2, 0xBE
+ lsls r2, 1
+ adds r1, r2
+ str r0, [r1]
+_0807694E:
+ mov r3, r9
+ cmp r3, 0
+ bne _080769EC
+ adds r0, r6, 0
+ ldr r1, [sp, 0x3C]
+ mov r2, r8
+ bl GetFrontSpritePalFromSpeciesAndPersonality
+ lsls r1, r5, 20
+ movs r2, 0x80
+ lsls r2, 17
+ adds r1, r2
+ lsrs r1, 16
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ ldr r3, [sp, 0x44]
+ cmp r3, 0x1
+ beq _0807699A
+ ldr r0, [sp, 0x40]
+ lsls r1, r0, 24
+ lsrs r1, 24
+ movs r0, 0x5
+ bl sub_804455C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0807699A
+ ldr r0, _080769BC @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0]
+ ldr r2, [sp, 0x40]
+ lsls r0, r2, 2
+ adds r0, r1
+ ldrh r0, [r0, 0x2]
+ cmp r0, 0
+ beq _080769C4
+_0807699A:
+ lsls r0, r6, 3
+ ldr r1, _080769C0 @ =gMonFrontPicTable
+ adds r0, r1
+ ldr r1, _080769B8 @ =gMonSpritesGfxPtr
+ ldr r1, [r1]
+ movs r3, 0xBE
+ lsls r3, 1
+ adds r1, r3
+ ldr r1, [r1]
+ movs r2, 0x1
+ b _08076A46
+ .align 2, 0
+_080769B0: .4byte gUnknown_83AE084
+_080769B4: .4byte gUnknown_83AE054
+_080769B8: .4byte gMonSpritesGfxPtr
+_080769BC: .4byte gUnknown_2024018
+_080769C0: .4byte gMonFrontPicTable
+_080769C4:
+ lsls r0, r6, 3
+ ldr r1, _080769E4 @ =gMonFrontPicTable
+ adds r0, r1
+ ldr r1, _080769E8 @ =gMonSpritesGfxPtr
+ ldr r1, [r1]
+ movs r2, 0xBE
+ lsls r2, 1
+ adds r1, r2
+ ldr r1, [r1]
+ movs r2, 0x1
+ str r2, [sp]
+ adds r2, r6, 0
+ mov r3, r8
+ bl LoadSpecialPokePic
+ b _08076A7C
+ .align 2, 0
+_080769E4: .4byte gMonFrontPicTable
+_080769E8: .4byte gMonSpritesGfxPtr
+_080769EC:
+ adds r0, r6, 0
+ ldr r1, [sp, 0x3C]
+ mov r2, r8
+ bl GetFrontSpritePalFromSpeciesAndPersonality
+ lsls r1, r5, 20
+ movs r3, 0x80
+ lsls r3, 17
+ adds r1, r3
+ lsrs r1, 16
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ ldr r0, [sp, 0x44]
+ cmp r0, 0x1
+ beq _08076A32
+ ldr r2, [sp, 0x40]
+ lsls r1, r2, 24
+ lsrs r1, 24
+ movs r0, 0x5
+ bl sub_804455C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _08076A32
+ ldr r0, _08076A54 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0]
+ ldr r3, [sp, 0x40]
+ lsls r0, r3, 2
+ adds r0, r1
+ ldrh r2, [r0, 0x2]
+ cmp r2, 0
+ beq _08076A60
+_08076A32:
+ lsls r0, r6, 3
+ ldr r1, _08076A58 @ =gMonBackPicTable
+ adds r0, r1
+ ldr r1, _08076A5C @ =gMonSpritesGfxPtr
+ ldr r1, [r1]
+ movs r2, 0xBE
+ lsls r2, 1
+ adds r1, r2
+ ldr r1, [r1]
+ movs r2, 0
+_08076A46:
+ str r2, [sp]
+ adds r2, r6, 0
+ mov r3, r8
+ bl LoadSpecialPokePic_DontHandleDeoxys
+ b _08076A7C
+ .align 2, 0
+_08076A54: .4byte gUnknown_2024018
+_08076A58: .4byte gMonBackPicTable
+_08076A5C: .4byte gMonSpritesGfxPtr
+_08076A60:
+ lsls r0, r6, 3
+ ldr r1, _08076AC8 @ =gMonBackPicTable
+ adds r0, r1
+ ldr r1, _08076ACC @ =gMonSpritesGfxPtr
+ ldr r1, [r1]
+ movs r3, 0xBE
+ lsls r3, 1
+ adds r1, r3
+ ldr r1, [r1]
+ str r2, [sp]
+ adds r2, r6, 0
+ mov r3, r8
+ bl LoadSpecialPokePic
+_08076A7C:
+ ldr r5, _08076ACC @ =gMonSpritesGfxPtr
+ ldr r0, [r5]
+ movs r4, 0xBE
+ lsls r4, 1
+ adds r0, r4
+ ldr r0, [r0]
+ ldr r2, [sp, 0xC]
+ lsls r1, r2, 5
+ ldr r3, _08076AD0 @ =0x06010000
+ adds r1, r3
+ movs r2, 0x80
+ lsls r2, 4
+ movs r3, 0x1
+ bl RequestDma3Copy
+ ldr r0, [r5]
+ adds r0, r4
+ ldr r0, [r0]
+ bl Free
+ ldr r0, [r5]
+ adds r0, r4
+ movs r1, 0
+ str r1, [r0]
+ mov r0, r9
+ cmp r0, 0
+ bne _08076ADC
+ lsls r0, r7, 1
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _08076AD4 @ =gUnknown_83AE054
+ adds r0, r1
+ mov r2, r10
+ lsls r1, r2, 16
+ asrs r1, 16
+ ldr r3, _08076AD8 @ =gUnknown_82349CC
+ b _08076AEE
+ .align 2, 0
+_08076AC8: .4byte gMonBackPicTable
+_08076ACC: .4byte gMonSpritesGfxPtr
+_08076AD0: .4byte 0x06010000
+_08076AD4: .4byte gUnknown_83AE054
+_08076AD8: .4byte gUnknown_82349CC
+_08076ADC:
+ lsls r0, r7, 1
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _08076B18 @ =gUnknown_83AE054
+ adds r0, r1
+ mov r2, r10
+ lsls r1, r2, 16
+ asrs r1, 16
+ ldr r3, _08076B1C @ =gUnknown_8235E6C
+_08076AEE:
+ lsls r2, r6, 2
+ adds r2, r3
+ ldrb r2, [r2, 0x1]
+ ldr r3, [sp, 0x4]
+ adds r2, r3
+ lsls r2, 16
+ asrs r2, 16
+ ldr r3, [sp, 0x8]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08076B18: .4byte gUnknown_83AE054
+_08076B1C: .4byte gUnknown_8235E6C
+ thumb_func_end sub_80768D0
+
+ thumb_func_start sub_8076B20
+sub_8076B20: @ 8076B20
+ push {lr}
+ bl DestroySpriteAndFreeResources
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8076B20
+
+ thumb_func_start sub_8076B2C
+sub_8076B2C: @ 8076B2C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08076C08
+ ldr r0, _08076B88 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0]
+ mov r1, r8
+ lsls r2, r1, 2
+ adds r1, r2, r0
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _08076B94
+ ldr r0, _08076B8C @ =gBattlerPartyIndexes
+ mov r1, r8
+ lsls r4, r1, 1
+ adds r4, r0
+ ldrh r0, [r4]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, _08076B90 @ =gPlayerParty
+ adds r0, r5
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r7, r0, 16
+ ldrh r0, [r4]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0
+ bl GetMonData
+ adds r2, r0, 0
+ b _08076B9C
+ .align 2, 0
+_08076B88: .4byte gUnknown_2024018
+_08076B8C: .4byte gBattlerPartyIndexes
+_08076B90: .4byte gPlayerParty
+_08076B94:
+ ldrh r7, [r1, 0x2]
+ ldr r0, _08076BD4 @ =gUnknown_2024008
+ adds r0, r2, r0
+ ldr r2, [r0]
+_08076B9C:
+ cmp r7, 0xC9
+ bne _08076BEC
+ movs r0, 0xC0
+ lsls r0, 18
+ ands r0, r2
+ lsrs r0, 18
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r2
+ lsrs r1, 12
+ orrs r0, r1
+ movs r1, 0xC0
+ lsls r1, 2
+ ands r1, r2
+ lsrs r1, 6
+ orrs r0, r1
+ movs r1, 0x3
+ ands r1, r2
+ orrs r0, r1
+ movs r1, 0x1C
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0
+ bne _08076BD8
+ movs r0, 0xC9
+ b _08076BE2
+ .align 2, 0
+_08076BD4: .4byte gUnknown_2024008
+_08076BD8:
+ movs r1, 0xCE
+ lsls r1, 1
+ adds r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+_08076BE2:
+ lsls r1, r0, 2
+ ldr r0, _08076BE8 @ =gUnknown_8235E6C
+ b _08076CDC
+ .align 2, 0
+_08076BE8: .4byte gUnknown_8235E6C
+_08076BEC:
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r7, r0
+ bls _08076BFC
+ ldr r4, _08076BF8 @ =gUnknown_8235E6C
+ b _08076CDE
+ .align 2, 0
+_08076BF8: .4byte gUnknown_8235E6C
+_08076BFC:
+ lsls r1, r7, 2
+ ldr r0, _08076C04 @ =gUnknown_8235E6C
+ b _08076CDC
+ .align 2, 0
+_08076C04: .4byte gUnknown_8235E6C
+_08076C08:
+ ldr r0, _08076C48 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0]
+ mov r1, r8
+ lsls r2, r1, 2
+ adds r1, r2, r0
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _08076C54
+ ldr r0, _08076C4C @ =gBattlerPartyIndexes
+ mov r1, r8
+ lsls r4, r1, 1
+ adds r4, r0
+ ldrh r0, [r4]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, _08076C50 @ =gEnemyParty
+ adds r0, r5
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r7, r0, 16
+ ldrh r0, [r4]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0
+ bl GetMonData
+ adds r2, r0, 0
+ b _08076C5C
+ .align 2, 0
+_08076C48: .4byte gUnknown_2024018
+_08076C4C: .4byte gBattlerPartyIndexes
+_08076C50: .4byte gEnemyParty
+_08076C54:
+ ldrh r7, [r1, 0x2]
+ ldr r0, _08076C94 @ =gUnknown_2024008
+ adds r0, r2, r0
+ ldr r2, [r0]
+_08076C5C:
+ cmp r7, 0xC9
+ bne _08076CA6
+ movs r0, 0xC0
+ lsls r0, 18
+ ands r0, r2
+ lsrs r0, 18
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r2
+ lsrs r1, 12
+ orrs r0, r1
+ movs r1, 0xC0
+ lsls r1, 2
+ ands r1, r2
+ lsrs r1, 6
+ orrs r0, r1
+ movs r1, 0x3
+ ands r1, r2
+ orrs r0, r1
+ movs r1, 0x1C
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0
+ bne _08076C98
+ movs r0, 0xC9
+ b _08076CA2
+ .align 2, 0
+_08076C94: .4byte gUnknown_2024008
+_08076C98:
+ movs r1, 0xCE
+ lsls r1, 1
+ adds r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+_08076CA2:
+ lsls r1, r0, 2
+ b _08076CDA
+_08076CA6:
+ ldr r0, _08076CBC @ =0x00000181
+ cmp r7, r0
+ bne _08076CC8
+ ldr r0, _08076CC0 @ =gBattleMonForms
+ add r0, r8
+ ldrb r0, [r0]
+ lsls r0, 2
+ ldr r1, _08076CC4 @ =gUnknown_83AE03C
+ adds r4, r0, r1
+ b _08076CDE
+ .align 2, 0
+_08076CBC: .4byte 0x00000181
+_08076CC0: .4byte gBattleMonForms
+_08076CC4: .4byte gUnknown_83AE03C
+_08076CC8:
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r7, r0
+ bls _08076CD8
+ ldr r4, _08076CD4 @ =gUnknown_82349CC
+ b _08076CDE
+ .align 2, 0
+_08076CD4: .4byte gUnknown_82349CC
+_08076CD8:
+ lsls r1, r7, 2
+_08076CDA:
+ ldr r0, _08076CF0 @ =gUnknown_82349CC
+_08076CDC:
+ adds r4, r1, r0
+_08076CDE:
+ mov r0, r9
+ cmp r0, 0x6
+ bhi _08076D8E
+ lsls r0, 2
+ ldr r1, _08076CF4 @ =_08076CF8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08076CF0: .4byte gUnknown_82349CC
+_08076CF4: .4byte _08076CF8
+ .align 2, 0
+_08076CF8:
+ .4byte _08076D14
+ .4byte _08076D1E
+ .4byte _08076D4A
+ .4byte _08076D62
+ .4byte _08076D26
+ .4byte _08076D38
+ .4byte _08076D7A
+_08076D14:
+ ldrb r1, [r4]
+ movs r0, 0xF
+ ands r0, r1
+ lsls r0, 3
+ b _08076D90
+_08076D1E:
+ ldrb r0, [r4]
+ lsrs r0, 4
+ lsls r0, 3
+ b _08076D90
+_08076D26:
+ mov r0, r8
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r4]
+ lsrs r1, 4
+ b _08076D5C
+_08076D38:
+ mov r0, r8
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r4]
+ lsrs r1, 4
+ b _08076D74
+_08076D4A:
+ mov r0, r8
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r2, [r4]
+ movs r1, 0xF
+ ands r1, r2
+_08076D5C:
+ lsls r1, 2
+ subs r0, r1
+ b _08076D90
+_08076D62:
+ mov r0, r8
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r2, [r4]
+ movs r1, 0xF
+ ands r1, r2
+_08076D74:
+ lsls r1, 2
+ adds r0, r1
+ b _08076D90
+_08076D7A:
+ mov r0, r8
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1F
+ ldrb r1, [r4, 0x1]
+ subs r0, r1
+ b _08076D90
+_08076D8E:
+ movs r0, 0
+_08076D90:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8076B2C
+
+ thumb_func_start sub_8076D9C
+sub_8076D9C: @ 8076D9C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ mov r9, r2
+ mov r10, r3
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ cmp r1, 0
+ bne _08076DBA
+ movs r5, 0
+ movs r6, 0x1
+ b _08076DBE
+_08076DBA:
+ movs r5, 0x2
+ movs r6, 0x3
+_08076DBE:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r7, r0, 24
+ bl sub_8075290
+ lsls r0, 24
+ cmp r0, 0
+ beq _08076E06
+ movs r0, 0x2
+ eors r4, r0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r3, r0, 24
+ mov r0, r8
+ lsls r1, r0, 16
+ lsls r2, r7, 16
+ b _08076E12
+_08076E06:
+ mov r0, r8
+ lsls r1, r0, 16
+ lsrs r5, r1, 16
+ lsls r0, r7, 16
+ lsrs r3, r0, 16
+ adds r2, r0, 0
+_08076E12:
+ asrs r0, r1, 16
+ adds r0, r5
+ asrs r0, 1
+ mov r1, r9
+ strh r0, [r1]
+ asrs r0, r2, 16
+ adds r0, r3
+ asrs r0, 1
+ mov r1, r10
+ strh r0, [r1]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8076D9C
+
+ thumb_func_start sub_8076E34
+sub_8076E34: @ 8076E34
+ push {r4-r6,lr}
+ mov r6, r10
+ mov r5, r9
+ mov r4, r8
+ push {r4-r6}
+ sub sp, 0x4
+ lsls r6, r1, 24
+ lsrs r6, 24
+ ldr r0, _08076ECC @ =SpriteCallbackDummy
+ mov r10, r0
+ bl CreateInvisibleSpriteWithCallback
+ mov r8, r0
+ mov r0, r8
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r0, _08076ED0 @ =gSprites
+ mov r9, r0
+ mov r0, r8
+ lsls r3, r0, 4
+ add r3, r8
+ lsls r3, 2
+ mov r0, r9
+ adds r5, r3, r0
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ add r4, r9
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x44
+ str r3, [sp]
+ bl memcpy
+ adds r2, r5, 0
+ adds r2, 0x3F
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ ldrb r2, [r5, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ adds r0, r1, 0
+ ands r0, r2
+ strb r0, [r5, 0x5]
+ ldrb r0, [r5, 0x1]
+ ands r1, r0
+ movs r0, 0x8
+ orrs r1, r0
+ strb r1, [r5, 0x1]
+ ldrh r1, [r4, 0x4]
+ lsls r1, 22
+ lsrs r1, 22
+ ldrh r2, [r5, 0x4]
+ ldr r0, _08076ED4 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0x4]
+ movs r0, 0x1C
+ add r9, r0
+ ldr r3, [sp]
+ add r3, r9
+ mov r0, r10
+ str r0, [r3]
+ mov r0, r8
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08076ECC: .4byte SpriteCallbackDummy
+_08076ED0: .4byte gSprites
+_08076ED4: .4byte 0xfffffc00
+ thumb_func_end sub_8076E34
+
+ thumb_func_start sub_8076ED8
+sub_8076ED8: @ 8076ED8
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldr r0, _08076F10 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08076F18
+ ldr r2, _08076F14 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r2, 0x6]
+ negs r0, r0
+ strh r0, [r2, 0x6]
+ adds r3, r4, 0
+ adds r3, 0x3F
+ ldrb r0, [r3]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r3]
+ adds r1, r2, 0
+ b _08076F22
+ .align 2, 0
+_08076F10: .4byte gBattleAnimAttacker
+_08076F14: .4byte gBattleAnimArgs
+_08076F18:
+ ldr r1, _08076F4C @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+_08076F22:
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x34]
+ ldrh r0, [r1, 0xA]
+ strh r0, [r4, 0x38]
+ ldr r1, _08076F50 @ =move_anim_8074EE0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _08076F54 @ =sub_8074E70
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08076F4C: .4byte gBattleAnimArgs
+_08076F50: .4byte move_anim_8074EE0
+_08076F54: .4byte sub_8074E70
+ thumb_func_end sub_8076ED8
+
+ thumb_func_start sub_8076F58
+sub_8076F58: @ 8076F58
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _08076F80 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08076F88
+ ldr r2, _08076F84 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ movs r1, 0x6
+ ldrsh r0, [r2, r1]
+ negs r0, r0
+ strh r0, [r2, 0x6]
+ adds r1, r2, 0
+ b _08076F92
+ .align 2, 0
+_08076F80: .4byte gBattleAnimAttacker
+_08076F84: .4byte gBattleAnimArgs
+_08076F88:
+ ldr r1, _08076FC4 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+_08076F92:
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x34]
+ ldrh r0, [r1, 0xA]
+ strh r0, [r4, 0x38]
+ ldrb r1, [r1, 0xC]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldr r1, _08076FC8 @ =move_anim_8074EE0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _08076FCC @ =sub_8074E70
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08076FC4: .4byte gBattleAnimArgs
+_08076FC8: .4byte move_anim_8074EE0
+_08076FCC: .4byte sub_8074E70
+ thumb_func_end sub_8076F58
+
+ thumb_func_start sub_8076FD0
+sub_8076FD0: @ 8076FD0
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldr r0, _08076FF4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08076FFC
+ ldr r0, _08076FF8 @ =gBattleAnimArgs
+ ldrh r1, [r4, 0x20]
+ ldrh r2, [r0]
+ subs r1, r2
+ strh r1, [r4, 0x20]
+ b _08077008
+ .align 2, 0
+_08076FF4: .4byte gBattleAnimAttacker
+_08076FF8: .4byte gBattleAnimArgs
+_08076FFC:
+ ldr r1, _08077024 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ adds r0, r1, 0
+_08077008:
+ ldrh r0, [r0, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r0, _08077028 @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+ ldr r1, _0807702C @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077024: .4byte gBattleAnimArgs
+_08077028: .4byte sub_8074F6C
+_0807702C: .4byte DestroyAnimSprite
+ thumb_func_end sub_8076FD0
+
+ thumb_func_start sub_8077030
+sub_8077030: @ 8077030
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080770C4 @ =gTasks
+ adds r5, r1, r0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r6, 0
+ strh r0, [r5, 0x8]
+ ldr r7, _080770C8 @ =gBattleAnimAttacker
+ ldrb r0, [r7]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r1, 0x8
+ cmp r0, 0
+ beq _08077064
+ movs r0, 0x8
+ negs r0, r0
+ adds r1, r0, 0
+_08077064:
+ strh r1, [r5, 0xA]
+ strh r6, [r5, 0xC]
+ strh r6, [r5, 0xE]
+ ldr r4, _080770CC @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r1, [r0, 0x24]
+ ldrh r2, [r5, 0x8]
+ subs r1, r2
+ strh r1, [r0, 0x24]
+ ldr r0, _080770D0 @ =0x00002771
+ bl AllocSpritePalette
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x10]
+ strh r6, [r5, 0x12]
+ movs r1, 0x10
+ ldrsh r0, [r5, r1]
+ adds r0, 0x10
+ lsls r0, 20
+ lsrs r6, r0, 16
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrb r0, [r0, 0x5]
+ lsrs r0, 4
+ adds r0, 0x10
+ lsls r4, r0, 4
+ ldrb r0, [r7]
+ bl sub_807685C
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x14]
+ cmp r0, 0x14
+ beq _080770C0
+ cmp r0, 0x28
+ bne _080770D4
+_080770C0:
+ movs r0, 0x2
+ b _080770D6
+ .align 2, 0
+_080770C4: .4byte gTasks
+_080770C8: .4byte gBattleAnimAttacker
+_080770CC: .4byte gSprites
+_080770D0: .4byte 0x00002771
+_080770D4:
+ movs r0, 0x3
+_080770D6:
+ strh r0, [r5, 0x14]
+ lsls r0, r4, 1
+ ldr r1, _08077104 @ =gPlttBufferUnfaded
+ adds r0, r1
+ lsls r1, r6, 1
+ ldr r2, _08077108 @ =gPlttBufferFaded
+ adds r1, r2
+ ldr r2, _0807710C @ =0x04000008
+ bl CpuSet
+ ldr r0, _08077110 @ =gBattleAnimArgs
+ ldrb r2, [r0, 0x2]
+ ldrh r3, [r0]
+ adds r0, r6, 0
+ movs r1, 0x10
+ bl BlendPalette
+ ldr r0, _08077114 @ =sub_8077118
+ str r0, [r5]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077104: .4byte gPlttBufferUnfaded
+_08077108: .4byte gPlttBufferFaded
+_0807710C: .4byte 0x04000008
+_08077110: .4byte gBattleAnimArgs
+_08077114: .4byte sub_8077118
+ thumb_func_end sub_8077030
+
+ thumb_func_start sub_8077118
+sub_8077118: @ 8077118
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0807713C @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _0807717C
+ cmp r0, 0x1
+ bgt _08077140
+ cmp r0, 0
+ beq _08077146
+ b _080771D8
+ .align 2, 0
+_0807713C: .4byte gTasks
+_08077140:
+ cmp r0, 0x2
+ beq _080771C4
+ b _080771D8
+_08077146:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80771E4
+ ldr r2, _08077178 @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0xA]
+ ldrh r2, [r0, 0x24]
+ adds r1, r2
+ strh r1, [r0, 0x24]
+ ldrh r1, [r4, 0xE]
+ adds r0, r1, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ bne _080771D8
+ strh r1, [r4, 0xE]
+ b _080771B6
+ .align 2, 0
+_08077178: .4byte gSprites
+_0807717C:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80771E4
+ ldr r3, _080771C0 @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r1, [r0, 0x24]
+ ldrh r2, [r4, 0xA]
+ subs r1, r2
+ strh r1, [r0, 0x24]
+ ldrh r0, [r4, 0xE]
+ subs r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r2, r0, 16
+ cmp r2, 0
+ bne _080771D8
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ strh r2, [r1, 0x24]
+_080771B6:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ b _080771D8
+ .align 2, 0
+_080771C0: .4byte gSprites
+_080771C4:
+ movs r2, 0x12
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080771D8
+ ldr r0, _080771E0 @ =0x00002771
+ bl FreeSpritePaletteByTag
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080771D8:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080771E0: .4byte 0x00002771
+ thumb_func_end sub_8077118
+
+ thumb_func_start sub_80771E4
+sub_80771E4: @ 80771E4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ movs r0, 0
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ lsls r0, 16
+ lsrs r7, r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ blt _08077254
+ ldr r5, _08077260 @ =gSprites
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ adds r3, r4, r5
+ movs r0, 0x3
+ ldrb r1, [r6, 0x14]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r3, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x5]
+ ldrb r1, [r6, 0x10]
+ lsls r1, 4
+ movs r2, 0xF
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x5]
+ movs r0, 0x8
+ strh r0, [r3, 0x2E]
+ mov r0, r8
+ strh r0, [r3, 0x30]
+ strh r7, [r3, 0x32]
+ movs r0, 0x8
+ ldrsh r1, [r6, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrh r0, [r0, 0x24]
+ strh r0, [r3, 0x24]
+ adds r5, 0x1C
+ adds r4, r5
+ ldr r0, _08077264 @ =sub_8077268
+ str r0, [r4]
+ ldrh r0, [r6, 0x12]
+ adds r0, 0x1
+ strh r0, [r6, 0x12]
+_08077254:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077260: .4byte gSprites
+_08077264: .4byte sub_8077268
+ thumb_func_end sub_80771E4
+
+ thumb_func_start sub_8077268
+sub_8077268: @ 8077268
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x2E]
+ subs r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bne _08077292
+ ldr r2, _08077298 @ =gTasks
+ movs r0, 0x30
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0x12]
+ subs r1, 0x1
+ strh r1, [r0, 0x12]
+ adds r0, r3, 0
+ bl obj_delete_but_dont_free_vram
+_08077292:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077298: .4byte gTasks
+ thumb_func_end sub_8077268
+
+ thumb_func_start sub_807729C
+sub_807729C: @ 807729C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080772D0 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080772D4
+ movs r0, 0x5
+ b _080772D6
+ .align 2, 0
+_080772D0: .4byte gBattleAnimAttacker
+_080772D4:
+ ldr r0, _080772E8 @ =0x0000fff6
+_080772D6:
+ strh r0, [r5, 0x2E]
+ ldr r0, _080772EC @ =0x0000ffd8
+ strh r0, [r5, 0x30]
+ ldr r0, _080772F0 @ =sub_80772F4
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080772E8: .4byte 0x0000fff6
+_080772EC: .4byte 0x0000ffd8
+_080772F0: .4byte sub_80772F4
+ thumb_func_end sub_807729C
+
+ thumb_func_start sub_80772F4
+sub_80772F4: @ 80772F4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ ldrh r1, [r4, 0x32]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ ldrh r5, [r4, 0x30]
+ ldrh r2, [r4, 0x34]
+ adds r0, r5, r2
+ strh r0, [r4, 0x34]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ movs r1, 0xA
+ bl __divsi3
+ strh r0, [r4, 0x24]
+ movs r2, 0x34
+ ldrsh r0, [r4, r2]
+ movs r1, 0xA
+ bl __divsi3
+ strh r0, [r4, 0x26]
+ lsls r0, r5, 16
+ asrs r0, 16
+ movs r1, 0x14
+ negs r1, r1
+ cmp r0, r1
+ bge _08077330
+ adds r0, r5, 0x1
+ strh r0, [r4, 0x30]
+_08077330:
+ movs r1, 0x22
+ ldrsh r0, [r4, r1]
+ movs r2, 0x26
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ movs r1, 0x20
+ negs r1, r1
+ cmp r0, r1
+ bge _08077348
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_08077348:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80772F4
+
+ thumb_func_start sub_8077350
+sub_8077350: @ 8077350
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _08077388 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r5, 0x8]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ ldrh r0, [r5, 0xA]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x36]
+ ldr r0, _0807738C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08077390
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1E
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r5, 0xA]
+ subs r0, 0x14
+ b _0807739E
+ .align 2, 0
+_08077388: .4byte gBattleAnimArgs
+_0807738C: .4byte gBattleAnimTarget
+_08077390:
+ ldrh r0, [r5, 0x8]
+ subs r0, 0x1E
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r5, 0xA]
+ subs r0, 0x50
+_0807739E:
+ strh r0, [r4, 0x22]
+ ldr r0, _080773B4 @ =sub_8075590
+ str r0, [r4, 0x1C]
+ ldr r1, _080773B8 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080773B4: .4byte sub_8075590
+_080773B8: .4byte DestroyAnimSprite
+ thumb_func_end sub_8077350
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_sound_tasks.s b/asm/battle_anim_sound_tasks.s
index 016e8b093..954878daa 100644
--- a/asm/battle_anim_sound_tasks.s
+++ b/asm/battle_anim_sound_tasks.s
@@ -15,7 +15,7 @@ sub_80DCE10: @ 80DCE10
adds r6, r0
lsls r6, 3
adds r6, r1
- ldr r1, _080DCE70 @ =gUnknown_2037F02
+ ldr r1, _080DCE70 @ =gBattleAnimArgs
ldrh r0, [r1]
strh r0, [r6, 0x8]
ldrh r0, [r1, 0x2]
@@ -51,7 +51,7 @@ sub_80DCE10: @ 80DCE10
bx r0
.align 2, 0
_080DCE6C: .4byte gTasks
-_080DCE70: .4byte gUnknown_2037F02
+_080DCE70: .4byte gBattleAnimArgs
_080DCE74: .4byte sub_80DCE78
thumb_func_end sub_80DCE10
@@ -168,7 +168,7 @@ mas_80DCF38: @ 80DCF38
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r0, _080DCFDC @ =gUnknown_2037F02
+ ldr r0, _080DCFDC @ =gBattleAnimArgs
ldrh r1, [r0]
str r1, [sp]
ldrb r5, [r0, 0x4]
@@ -236,7 +236,7 @@ mas_80DCF38: @ 80DCF38
pop {r0}
bx r0
.align 2, 0
-_080DCFDC: .4byte gUnknown_2037F02
+_080DCFDC: .4byte gBattleAnimArgs
_080DCFE0: .4byte gTasks
_080DCFE4: .4byte sub_80DCFE8
thumb_func_end mas_80DCF38
@@ -320,41 +320,41 @@ sub_80DD06C: @ 80DD06C
bl sub_8073A44
lsls r0, 24
lsrs r6, r0, 24
- ldr r0, _080DD090 @ =gUnknown_2037F02
+ ldr r0, _080DD090 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080DD098
- ldr r0, _080DD094 @ =gUnknown_2037F1A
+ ldr r0, _080DD094 @ =gBattleAnimAttacker
ldrb r4, [r0]
b _080DD0BE
.align 2, 0
-_080DD090: .4byte gUnknown_2037F02
-_080DD094: .4byte gUnknown_2037F1A
+_080DD090: .4byte gBattleAnimArgs
+_080DD094: .4byte gBattleAnimAttacker
_080DD098:
cmp r0, 0x1
bne _080DD0A8
- ldr r0, _080DD0A4 @ =gUnknown_2037F1B
+ ldr r0, _080DD0A4 @ =gBattleAnimTarget
ldrb r4, [r0]
b _080DD0BE
.align 2, 0
-_080DD0A4: .4byte gUnknown_2037F1B
+_080DD0A4: .4byte gBattleAnimTarget
_080DD0A8:
cmp r0, 0x2
bne _080DD0B4
- ldr r0, _080DD0B0 @ =gUnknown_2037F1A
+ ldr r0, _080DD0B0 @ =gBattleAnimAttacker
b _080DD0B6
.align 2, 0
-_080DD0B0: .4byte gUnknown_2037F1A
+_080DD0B0: .4byte gBattleAnimAttacker
_080DD0B4:
- ldr r0, _080DD0E0 @ =gUnknown_2037F1B
+ ldr r0, _080DD0E0 @ =gBattleAnimTarget
_080DD0B6:
ldrb r1, [r0]
movs r0, 0x2
adds r4, r0, 0
eors r4, r1
_080DD0BE:
- ldr r0, _080DD0E4 @ =gUnknown_2037F02
+ ldr r0, _080DD0E4 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0x1
@@ -371,8 +371,8 @@ _080DD0CC:
bl DestroyAnimVisualTask
b _080DD13A
.align 2, 0
-_080DD0E0: .4byte gUnknown_2037F1B
-_080DD0E4: .4byte gUnknown_2037F02
+_080DD0E0: .4byte gBattleAnimTarget
+_080DD0E4: .4byte gBattleAnimArgs
_080DD0E8:
adds r0, r4, 0
bl GetBattlerSide
@@ -432,41 +432,41 @@ sub_80DD148: @ 80DD148
bl sub_8073A44
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, _080DD16C @ =gUnknown_2037F02
+ ldr r0, _080DD16C @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080DD174
- ldr r0, _080DD170 @ =gUnknown_2037F1A
+ ldr r0, _080DD170 @ =gBattleAnimAttacker
ldrb r4, [r0]
b _080DD19A
.align 2, 0
-_080DD16C: .4byte gUnknown_2037F02
-_080DD170: .4byte gUnknown_2037F1A
+_080DD16C: .4byte gBattleAnimArgs
+_080DD170: .4byte gBattleAnimAttacker
_080DD174:
cmp r0, 0x1
bne _080DD184
- ldr r0, _080DD180 @ =gUnknown_2037F1B
+ ldr r0, _080DD180 @ =gBattleAnimTarget
ldrb r4, [r0]
b _080DD19A
.align 2, 0
-_080DD180: .4byte gUnknown_2037F1B
+_080DD180: .4byte gBattleAnimTarget
_080DD184:
cmp r0, 0x2
bne _080DD190
- ldr r0, _080DD18C @ =gUnknown_2037F1A
+ ldr r0, _080DD18C @ =gBattleAnimAttacker
b _080DD192
.align 2, 0
-_080DD18C: .4byte gUnknown_2037F1A
+_080DD18C: .4byte gBattleAnimAttacker
_080DD190:
- ldr r0, _080DD1BC @ =gUnknown_2037F1B
+ ldr r0, _080DD1BC @ =gBattleAnimTarget
_080DD192:
ldrb r1, [r0]
movs r0, 0x2
adds r4, r0, 0
eors r4, r1
_080DD19A:
- ldr r0, _080DD1C0 @ =gUnknown_2037F02
+ ldr r0, _080DD1C0 @ =gBattleAnimArgs
movs r2, 0
ldrsh r0, [r0, r2]
cmp r0, 0x1
@@ -483,8 +483,8 @@ _080DD1A8:
bl DestroyAnimVisualTask
b _080DD26A
.align 2, 0
-_080DD1BC: .4byte gUnknown_2037F1B
-_080DD1C0: .4byte gUnknown_2037F02
+_080DD1BC: .4byte gBattleAnimTarget
+_080DD1C0: .4byte gBattleAnimArgs
_080DD1C4:
adds r0, r4, 0
bl GetBattlerSide
@@ -521,7 +521,7 @@ _080DD1F6:
adds r0, r2, r6
lsls r0, 3
adds r0, r1
- ldr r4, _080DD240 @ =gUnknown_2037F02
+ ldr r4, _080DD240 @ =gBattleAnimArgs
ldrh r1, [r4, 0x2]
strh r1, [r0, 0x8]
strh r3, [r0, 0xA]
@@ -543,7 +543,7 @@ _080DD1F6:
_080DD234: .4byte gBattlerPartyIndexes
_080DD238: .4byte gPlayerParty
_080DD23C: .4byte gTasks
-_080DD240: .4byte gUnknown_2037F02
+_080DD240: .4byte gBattleAnimArgs
_080DD244:
adds r0, r3, 0
movs r2, 0x7
@@ -677,7 +677,7 @@ sub_80DD334: @ 80DD334
negs r0, r0
bl sub_8073A44
ldr r2, _080DD374 @ =gUnknown_2037F1C
- ldr r1, _080DD378 @ =gUnknown_2037F1A
+ ldr r1, _080DD378 @ =gBattleAnimAttacker
ldrb r1, [r1]
lsls r1, 1
adds r1, r2
@@ -701,7 +701,7 @@ sub_80DD334: @ 80DD334
b _080DD38A
.align 2, 0
_080DD374: .4byte gUnknown_2037F1C
-_080DD378: .4byte gUnknown_2037F1A
+_080DD378: .4byte gBattleAnimAttacker
_080DD37C: .4byte gTasks
_080DD380: .4byte sub_80DD390
_080DD384:
@@ -758,7 +758,7 @@ sub_80DD3DC: @ 80DD3DC
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _080DD40C @ =gUnknown_2037F02
+ ldr r0, _080DD40C @ =gBattleAnimArgs
ldrh r5, [r0]
ldrb r0, [r0, 0x2]
lsls r0, 24
@@ -775,7 +775,7 @@ sub_80DD3DC: @ 80DD3DC
pop {r0}
bx r0
.align 2, 0
-_080DD40C: .4byte gUnknown_2037F02
+_080DD40C: .4byte gBattleAnimArgs
thumb_func_end sub_80DD3DC
thumb_func_start sub_80DD410
@@ -784,7 +784,7 @@ sub_80DD410: @ 80DD410
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _080DD440 @ =gUnknown_2037F02
+ ldr r0, _080DD440 @ =gBattleAnimArgs
ldrh r5, [r0]
ldrb r0, [r0, 0x2]
lsls r0, 24
@@ -801,7 +801,7 @@ sub_80DD410: @ 80DD410
pop {r0}
bx r0
.align 2, 0
-_080DD440: .4byte gUnknown_2037F02
+_080DD440: .4byte gBattleAnimArgs
thumb_func_end sub_80DD410
thumb_func_start sub_80DD444
@@ -814,7 +814,7 @@ sub_80DD444: @ 80DD444
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r0, _080DD4C8 @ =gUnknown_2037F02
+ ldr r0, _080DD4C8 @ =gBattleAnimArgs
ldrb r5, [r0, 0x2]
ldrb r6, [r0, 0x4]
ldrh r1, [r0, 0x6]
@@ -868,7 +868,7 @@ sub_80DD444: @ 80DD444
pop {r0}
bx r0
.align 2, 0
-_080DD4C8: .4byte gUnknown_2037F02
+_080DD4C8: .4byte gBattleAnimArgs
_080DD4CC: .4byte gTasks
_080DD4D0: .4byte sub_80DD4D4
thumb_func_end sub_80DD444
diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s
new file mode 100644
index 000000000..02a1216c6
--- /dev/null
+++ b/asm/battle_anim_special.s
@@ -0,0 +1,6299 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80EEC0C
+sub_80EEC0C: @ 80EEC0C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x10]
+ ldr r0, _080EEDB4 @ =gBattleAnimAttacker
+ ldrb r4, [r0]
+ ldr r0, _080EEDB8 @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080EEDBC @ =gUnknown_2022986
+ strh r1, [r0]
+ ldr r1, _080EEDC0 @ =0x00003f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r1, _080EEDC4 @ =0x00003f3d
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 8
+ movs r0, 0
+ bl SetGpuRegBits
+ ldr r1, _080EEDC8 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ ldr r0, _080EEDCC @ =gUnknown_3004FF0
+ adds r4, r0
+ ldrb r0, [r4]
+ ldr r1, _080EEDD0 @ =gSprites
+ mov r9, r1
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ add r4, r9
+ ldrb r7, [r4, 0x6]
+ ldrh r6, [r4, 0x38]
+ lsls r6, 24
+ lsrs r6, 24
+ ldr r0, _080EEDD4 @ =SpriteCallbackDummy
+ bl CreateInvisibleSpriteWithCallback
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x14]
+ ldr r0, _080EEDD4 @ =SpriteCallbackDummy
+ bl CreateInvisibleSpriteWithCallback
+ mov r10, r0
+ mov r2, r10
+ lsls r2, 24
+ lsrs r2, 24
+ mov r10, r2
+ ldrb r1, [r4, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r0, r3, 0
+ ands r0, r1
+ movs r1, 0x4
+ mov r8, r1
+ mov r2, r8
+ orrs r0, r2
+ strb r0, [r4, 0x5]
+ lsls r5, r7, 4
+ adds r5, r7
+ lsls r5, 2
+ add r5, r9
+ ldrb r1, [r5, 0x5]
+ adds r0, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ add r1, r9
+ ldrb r2, [r1, 0x5]
+ adds r0, r3, 0
+ ands r0, r2
+ mov r2, r8
+ orrs r0, r2
+ strb r0, [r1, 0x5]
+ ldr r0, [sp, 0x14]
+ lsls r6, r0, 4
+ adds r6, r0
+ lsls r6, 2
+ mov r1, r9
+ adds r7, r6, r1
+ adds r0, r7, 0
+ adds r1, r4, 0
+ movs r2, 0x44
+ str r3, [sp, 0x18]
+ bl memcpy
+ mov r2, r10
+ lsls r4, r2, 4
+ add r4, r10
+ lsls r4, 2
+ adds r0, r4, 0
+ add r0, r9
+ mov r8, r0
+ adds r1, r5, 0
+ movs r2, 0x44
+ bl memcpy
+ ldrb r1, [r7, 0x1]
+ ldr r3, [sp, 0x18]
+ adds r0, r3, 0
+ ands r0, r1
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r7, 0x1]
+ mov r2, r8
+ ldrb r0, [r2, 0x1]
+ ands r3, r0
+ orrs r3, r1
+ strb r3, [r2, 0x1]
+ movs r0, 0x1C
+ add r9, r0
+ add r6, r9
+ ldr r1, _080EEDD4 @ =SpriteCallbackDummy
+ str r1, [r6]
+ add r4, r9
+ str r1, [r4]
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080EEDD8 @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap
+ bl sub_807543C
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080EEDDC @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080EEDE0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ ldr r1, _080EEDE4 @ =gBattle_BG1_X
+ ldrh r0, [r7, 0x20]
+ negs r0, r0
+ adds r0, 0x20
+ strh r0, [r1]
+ ldr r1, _080EEDE8 @ =gBattle_BG1_Y
+ ldrh r0, [r7, 0x22]
+ negs r0, r0
+ subs r0, 0x20
+ strh r0, [r1]
+ ldr r1, _080EEDEC @ =gTasks
+ ldr r2, [sp, 0x10]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0xA0
+ lsls r1, 2
+ strh r1, [r0, 0xA]
+ mov r1, sp
+ ldrh r1, [r1, 0x14]
+ strh r1, [r0, 0x8]
+ mov r2, r10
+ strh r2, [r0, 0xC]
+ ldr r1, _080EEDF0 @ =sub_80EEDF4
+ str r1, [r0]
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EEDB4: .4byte gBattleAnimAttacker
+_080EEDB8: .4byte gUnknown_2022984
+_080EEDBC: .4byte gUnknown_2022986
+_080EEDC0: .4byte 0x00003f3f
+_080EEDC4: .4byte 0x00003f3d
+_080EEDC8: .4byte 0x00003f42
+_080EEDCC: .4byte gUnknown_3004FF0
+_080EEDD0: .4byte gSprites
+_080EEDD4: .4byte SpriteCallbackDummy
+_080EEDD8: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap
+_080EEDDC: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet
+_080EEDE0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette
+_080EEDE4: .4byte gBattle_BG1_X
+_080EEDE8: .4byte gBattle_BG1_Y
+_080EEDEC: .4byte gTasks
+_080EEDF0: .4byte sub_80EEDF4
+ thumb_func_end sub_80EEC0C
+
+ thumb_func_start sub_80EEDF4
+sub_80EEDF4: @ 80EEDF4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, _080EEE3C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ mov r8, r0
+ ldr r1, _080EEE40 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrh r1, [r5, 0xA]
+ ldrh r0, [r5, 0x22]
+ adds r1, r0
+ movs r3, 0
+ strh r1, [r5, 0x22]
+ ldr r2, _080EEE44 @ =gBattle_BG1_Y
+ lsls r0, r1, 16
+ lsrs r0, 24
+ ldrh r4, [r2]
+ adds r0, r4
+ strh r0, [r2]
+ movs r0, 0xFF
+ ands r1, r0
+ strh r1, [r5, 0x22]
+ movs r1, 0x26
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080EEE84
+ cmp r0, 0x1
+ bgt _080EEE48
+ cmp r0, 0
+ beq _080EEE4E
+ b _080EEFA8
+ .align 2, 0
+_080EEE3C: .4byte gBattleAnimAttacker
+_080EEE40: .4byte gTasks
+_080EEE44: .4byte gBattle_BG1_Y
+_080EEE48:
+ cmp r0, 0x2
+ beq _080EEE9C
+ b _080EEFA8
+_080EEE4E:
+ ldrh r0, [r5, 0x1E]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bgt _080EEE5E
+ b _080EEFA8
+_080EEE5E:
+ strh r3, [r5, 0x1E]
+ ldrh r1, [r5, 0x20]
+ adds r1, 0x1
+ strh r1, [r5, 0x20]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0x20
+ ldrsh r0, [r5, r2]
+ cmp r0, 0x8
+ beq _080EEE82
+ b _080EEFA8
+_080EEE82:
+ b _080EEE94
+_080EEE84:
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x1
+ strh r0, [r5, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1E
+ beq _080EEE94
+ b _080EEFA8
+_080EEE94:
+ ldrh r0, [r5, 0x26]
+ adds r0, 0x1
+ strh r0, [r5, 0x26]
+ b _080EEFA8
+_080EEE9C:
+ ldrh r0, [r5, 0x1E]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080EEFA8
+ strh r3, [r5, 0x1E]
+ ldrh r1, [r5, 0x20]
+ subs r1, 0x1
+ strh r1, [r5, 0x20]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x20
+ ldrsh r4, [r5, r0]
+ cmp r4, 0
+ bne _080EEFA8
+ movs r0, 0
+ bl sub_8073128
+ ldr r0, _080EEFB4 @ =gUnknown_2022984
+ strh r4, [r0]
+ ldr r0, _080EEFB8 @ =gUnknown_2022986
+ strh r4, [r0]
+ ldr r4, _080EEFBC @ =0x00003f3f
+ movs r0, 0x48
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ adds r1, r4, 0
+ bl SetGpuReg
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080EEF00
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080EEF00:
+ movs r0, 0
+ bl GetGpuReg
+ adds r1, r0, 0
+ movs r2, 0x80
+ lsls r2, 8
+ adds r0, r2, 0
+ eors r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0
+ bl SetGpuReg
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r4, 0x8
+ ldrsh r1, [r5, r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r6, _080EEFC0 @ =gSprites
+ adds r0, r6
+ bl DestroySprite
+ movs r0, 0xC
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ bl DestroySprite
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0
+ bl SetAnimBgAttribute
+ ldr r0, _080EEFC4 @ =gUnknown_3004FF0
+ add r0, r8
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r6
+ ldrb r2, [r1, 0x6]
+ mov r8, r2
+ ldrh r4, [r1, 0x38]
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r3, [r1, 0x5]
+ movs r2, 0xD
+ negs r2, r2
+ adds r0, r2, 0
+ ands r0, r3
+ movs r5, 0x4
+ orrs r0, r5
+ strb r0, [r1, 0x5]
+ mov r0, r8
+ lsls r1, r0, 4
+ add r1, r8
+ lsls r1, 2
+ adds r1, r6
+ ldrb r3, [r1, 0x5]
+ adds r0, r2, 0
+ ands r0, r3
+ orrs r0, r5
+ strb r0, [r1, 0x5]
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r6
+ ldrb r1, [r0, 0x5]
+ ands r2, r1
+ orrs r2, r5
+ strb r2, [r0, 0x5]
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080EEFA8:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EEFB4: .4byte gUnknown_2022984
+_080EEFB8: .4byte gUnknown_2022986
+_080EEFBC: .4byte 0x00003f3f
+_080EEFC0: .4byte gSprites
+_080EEFC4: .4byte gUnknown_3004FF0
+ thumb_func_end sub_80EEDF4
+
+ thumb_func_start sub_80EEFC8
+sub_80EEFC8: @ 80EEFC8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ mov r9, r0
+ adds r7, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r0, _080EF0A0 @ =gUnknown_3004FF0
+ adds r2, r0
+ ldrb r0, [r2]
+ lsls r5, r0, 4
+ adds r5, r0
+ lsls r5, 2
+ ldr r0, _080EF0A4 @ =gSprites
+ adds r5, r0
+ ldrb r1, [r5, 0x6]
+ mov r10, r1
+ ldrh r4, [r5, 0x38]
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080EF0A8 @ =0x0000d709
+ bl AllocSpritePalette
+ mov r2, r9
+ strb r0, [r2]
+ ldr r0, _080EF0AC @ =0x0000d70a
+ bl AllocSpritePalette
+ strb r0, [r7]
+ ldrb r0, [r5, 0x5]
+ lsrs r0, 4
+ lsls r0, 4
+ movs r1, 0x80
+ lsls r1, 1
+ adds r3, r1, 0
+ orrs r0, r3
+ lsls r6, r4, 4
+ adds r6, r4
+ lsls r6, 2
+ ldr r2, _080EF0A4 @ =gSprites
+ adds r6, r2
+ ldrb r4, [r6, 0x5]
+ lsrs r4, 4
+ lsls r4, 4
+ orrs r4, r3
+ lsls r0, 1
+ ldr r1, _080EF0B0 @ =gPlttBufferUnfaded
+ mov r8, r1
+ add r0, r8
+ mov r2, r9
+ ldrb r1, [r2]
+ lsls r1, 4
+ adds r1, r3, r1
+ movs r2, 0x20
+ str r3, [sp]
+ bl LoadPalette
+ lsls r4, 1
+ add r4, r8
+ ldrb r0, [r7]
+ lsls r0, 4
+ ldr r3, [sp]
+ adds r3, r0
+ adds r0, r4, 0
+ adds r1, r3, 0
+ movs r2, 0x20
+ bl LoadPalette
+ mov r0, r9
+ ldrb r1, [r0]
+ lsls r1, 4
+ ldrb r2, [r5, 0x5]
+ movs r3, 0xF
+ adds r0, r3, 0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ mov r2, r10
+ lsls r1, r2, 4
+ add r1, r10
+ lsls r1, 2
+ ldr r0, _080EF0A4 @ =gSprites
+ adds r1, r0
+ mov r0, r9
+ ldrb r2, [r0]
+ lsls r2, 4
+ ldrb r4, [r1, 0x5]
+ adds r0, r3, 0
+ ands r0, r4
+ orrs r0, r2
+ strb r0, [r1, 0x5]
+ ldrb r0, [r7]
+ lsls r0, 4
+ ldrb r1, [r6, 0x5]
+ ands r3, r1
+ orrs r3, r0
+ strb r3, [r6, 0x5]
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF0A0: .4byte gUnknown_3004FF0
+_080EF0A4: .4byte gSprites
+_080EF0A8: .4byte 0x0000d709
+_080EF0AC: .4byte 0x0000d70a
+_080EF0B0: .4byte gPlttBufferUnfaded
+ thumb_func_end sub_80EEFC8
+
+ thumb_func_start sub_80EF0B4
+sub_80EF0B4: @ 80EF0B4
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ mov r1, sp
+ adds r1, 0x1
+ ldr r0, _080EF0DC @ =gBattleAnimAttacker
+ ldrb r2, [r0]
+ mov r0, sp
+ bl sub_80EEFC8
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF0DC: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80EF0B4
+
+ thumb_func_start sub_80EF0E0
+sub_80EF0E0: @ 80EF0E0
+ push {r4-r6,lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5,r6}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080EF168 @ =gUnknown_3004FF0
+ adds r0, r1
+ ldrb r0, [r0]
+ ldr r1, _080EF16C @ =gSprites
+ mov r8, r1
+ lsls r5, r0, 4
+ adds r5, r0
+ lsls r5, 2
+ add r5, r8
+ ldrb r0, [r5, 0x6]
+ mov r9, r0
+ ldrh r6, [r5, 0x38]
+ lsls r6, 24
+ lsrs r6, 24
+ ldr r0, _080EF170 @ =0x0000d709
+ bl FreeSpritePaletteByTag
+ ldr r0, _080EF174 @ =0x0000d70a
+ bl FreeSpritePaletteByTag
+ ldr r0, _080EF178 @ =0x0000d6ff
+ bl IndexOfSpritePaletteTag
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080EF17C @ =0x0000d704
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsls r4, 4
+ ldrb r2, [r5, 0x5]
+ movs r3, 0xF
+ adds r1, r3, 0
+ ands r1, r2
+ orrs r1, r4
+ strb r1, [r5, 0x5]
+ mov r1, r9
+ lsls r2, r1, 4
+ add r2, r9
+ lsls r2, 2
+ add r2, r8
+ ldrb r5, [r2, 0x5]
+ adds r1, r3, 0
+ ands r1, r5
+ orrs r1, r4
+ strb r1, [r2, 0x5]
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ add r1, r8
+ lsrs r0, 20
+ ldrb r2, [r1, 0x5]
+ ands r3, r2
+ orrs r3, r0
+ strb r3, [r1, 0x5]
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF168: .4byte gUnknown_3004FF0
+_080EF16C: .4byte gSprites
+_080EF170: .4byte 0x0000d709
+_080EF174: .4byte 0x0000d70a
+_080EF178: .4byte 0x0000d6ff
+_080EF17C: .4byte 0x0000d704
+ thumb_func_end sub_80EF0E0
+
+ thumb_func_start sub_80EF180
+sub_80EF180: @ 80EF180
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080EF19C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80EF0E0
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF19C: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80EF180
+
+ thumb_func_start sub_80EF1A0
+sub_80EF1A0: @ 80EF1A0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080EF1C0 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r2, _080EF1C4 @ =gBattleAnimArgs
+ ldrh r0, [r2]
+ strh r0, [r1, 0x1C]
+ ldrh r0, [r2, 0x2]
+ strh r0, [r1, 0x1E]
+ ldr r0, _080EF1C8 @ =sub_80EF1CC
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080EF1C0: .4byte gTasks
+_080EF1C4: .4byte gBattleAnimArgs
+_080EF1C8: .4byte sub_80EF1CC
+ thumb_func_end sub_80EF1A0
+
+ thumb_func_start sub_80EF1CC
+sub_80EF1CC: @ 80EF1CC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080EF218 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ movs r6, 0
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x1E
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ blt _080EF28C
+ strh r6, [r4, 0x8]
+ ldr r0, _080EF21C @ =0x0000d709
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r2, r0, 24
+ movs r3, 0x1C
+ ldrsh r0, [r4, r3]
+ movs r1, 0x2
+ cmp r0, 0
+ bne _080EF20A
+ movs r1, 0x6
+_080EF20A:
+ movs r3, 0xA
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080EF220
+ cmp r0, 0x1
+ beq _080EF25C
+ b _080EF28C
+ .align 2, 0
+_080EF218: .4byte gTasks
+_080EF21C: .4byte 0x0000d709
+_080EF220:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x2
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _080EF232
+ movs r0, 0x10
+ strh r0, [r4, 0xC]
+_080EF232:
+ lsls r0, r2, 4
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r2
+ orrs r0, r1
+ ldrb r2, [r4, 0xC]
+ ldr r3, _080EF258 @ =0x00007f74
+ movs r1, 0x1
+ bl BlendPalette
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x10
+ bne _080EF28C
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ b _080EF28C
+ .align 2, 0
+_080EF258: .4byte 0x00007f74
+_080EF25C:
+ ldrh r0, [r4, 0xC]
+ subs r0, 0x2
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080EF26A
+ strh r6, [r4, 0xC]
+_080EF26A:
+ lsls r0, r2, 4
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r2
+ orrs r0, r1
+ ldrb r2, [r4, 0xC]
+ ldr r3, _080EF294 @ =0x00007f74
+ movs r1, 0x1
+ bl BlendPalette
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ bne _080EF28C
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080EF28C:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF294: .4byte 0x00007f74
+ thumb_func_end sub_80EF1CC
+
+ thumb_func_start sub_80EF298
+sub_80EF298: @ 80EF298
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080EF2C4 @ =gBattlerSpriteIds
+ ldr r0, _080EF2C8 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r5, [r0]
+ ldr r1, _080EF2CC @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080EF2E6
+ cmp r0, 0x1
+ bgt _080EF2D0
+ cmp r0, 0
+ beq _080EF2D6
+ b _080EF338
+ .align 2, 0
+_080EF2C4: .4byte gBattlerSpriteIds
+_080EF2C8: .4byte gBattleAnimAttacker
+_080EF2CC: .4byte gTasks
+_080EF2D0:
+ cmp r0, 0x2
+ beq _080EF318
+ b _080EF338
+_080EF2D6:
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_80758E0
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r4, 0x1C]
+ b _080EF30A
+_080EF2E6:
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x30
+ strh r0, [r4, 0x1C]
+ movs r0, 0x1C
+ ldrsh r2, [r4, r0]
+ adds r0, r5, 0
+ adds r1, r2, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ adds r0, r5, 0
+ bl sub_8076440
+ movs r0, 0x1C
+ ldrsh r1, [r4, r0]
+ ldr r0, _080EF314 @ =0x000002cf
+ cmp r1, r0
+ ble _080EF338
+_080EF30A:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080EF338
+ .align 2, 0
+_080EF314: .4byte 0x000002cf
+_080EF318:
+ adds r0, r5, 0
+ bl sub_8075980
+ ldr r1, _080EF340 @ =gSprites
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ adds r0, r1
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080EF338:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF340: .4byte gSprites
+ thumb_func_end sub_80EF298
+
+ thumb_func_start sub_80EF344
+sub_80EF344: @ 80EF344
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080EF37C @ =gBattlerSpriteIds
+ ldr r4, _080EF380 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ adds r1, r0, r1
+ ldrb r1, [r1]
+ mov r9, r1
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080EF38C
+ ldr r1, _080EF384 @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080EF388 @ =gPlayerParty
+ b _080EF39C
+ .align 2, 0
+_080EF37C: .4byte gBattlerSpriteIds
+_080EF380: .4byte gBattleAnimAttacker
+_080EF384: .4byte gBattlerPartyIndexes
+_080EF388: .4byte gPlayerParty
+_080EF38C:
+ ldr r1, _080EF3CC @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080EF3D0 @ =gEnemyParty
+_080EF39C:
+ adds r0, r1
+ movs r1, 0x26
+ bl GetMonData
+ lsls r0, 16
+ lsrs r0, 16
+ bl ItemIdToBallId
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r2, _080EF3D4 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r6, r0, r2
+ movs r0, 0x8
+ ldrsh r7, [r6, r0]
+ cmp r7, 0
+ beq _080EF3D8
+ cmp r7, 0x1
+ beq _080EF458
+ b _080EF482
+ .align 2, 0
+_080EF3CC: .4byte gBattlerPartyIndexes
+_080EF3D0: .4byte gEnemyParty
+_080EF3D4: .4byte gTasks
+_080EF3D8:
+ ldr r5, _080EF450 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8074480
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8074480
+ adds r1, r0, 0
+ lsls r1, 24
+ ldr r2, _080EF454 @ =gSprites
+ mov r3, r9
+ lsls r0, r3, 4
+ add r0, r9
+ lsls r0, 2
+ adds r0, r2
+ ldrb r2, [r0, 0x5]
+ lsls r2, 28
+ lsrs r2, 30
+ adds r0, 0x43
+ ldrb r3, [r0]
+ movs r0, 0x80
+ lsls r0, 22
+ adds r1, r0
+ lsrs r1, 24
+ mov r0, r8
+ str r0, [sp]
+ adds r0, r4, 0
+ bl LaunchBallStarsTask
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x1C]
+ str r7, [sp]
+ str r7, [sp, 0x4]
+ str r7, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl sub_8075BE8
+ adds r2, r0, 0
+ ldrb r1, [r5]
+ movs r0, 0
+ mov r3, r8
+ bl LaunchBallFadeMonTask
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x1E]
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ strh r0, [r6, 0x8]
+ b _080EF482
+ .align 2, 0
+_080EF450: .4byte gBattleAnimAttacker
+_080EF454: .4byte gSprites
+_080EF458:
+ movs r1, 0x1C
+ ldrsh r0, [r6, r1]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldrb r0, [r1, 0x4]
+ cmp r0, 0
+ bne _080EF482
+ movs r3, 0x1E
+ ldrsh r0, [r6, r3]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldrb r0, [r1, 0x4]
+ cmp r0, 0
+ bne _080EF482
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080EF482:
+ add sp, 0xC
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80EF344
+
+ thumb_func_start sub_80EF490
+sub_80EF490: @ 80EF490
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080EF4B4 @ =gUnknown_2023D68
+ ldrh r0, [r0]
+ bl ItemIdToBallId
+ lsls r0, 24
+ lsrs r0, 24
+ bl LoadBallGfx
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF4B4: .4byte gUnknown_2023D68
+ thumb_func_end sub_80EF490
+
+ thumb_func_start sub_80EF4B8
+sub_80EF4B8: @ 80EF4B8
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080EF4DC @ =gUnknown_2023D68
+ ldrh r0, [r0]
+ bl ItemIdToBallId
+ lsls r0, 24
+ lsrs r0, 24
+ bl FreeBallGfx
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF4DC: .4byte gUnknown_2023D68
+ thumb_func_end sub_80EF4B8
+
+ thumb_func_start sub_80EF4E0
+sub_80EF4E0: @ 80EF4E0
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080EF4FC @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r0, [r0, 0x8]
+ cmp r0, 0x5
+ beq _080EF504
+ cmp r0, 0x6
+ beq _080EF514
+ ldr r1, _080EF500 @ =gBattleAnimArgs
+ movs r0, 0
+ b _080EF518
+ .align 2, 0
+_080EF4FC: .4byte gUnknown_2024018
+_080EF500: .4byte gBattleAnimArgs
+_080EF504:
+ ldr r1, _080EF50C @ =gBattleAnimArgs
+ ldr r0, _080EF510 @ =0x0000ffff
+ b _080EF518
+ .align 2, 0
+_080EF50C: .4byte gBattleAnimArgs
+_080EF510: .4byte 0x0000ffff
+_080EF514:
+ ldr r1, _080EF524 @ =gBattleAnimArgs
+ ldr r0, _080EF528 @ =0x0000fffe
+_080EF518:
+ strh r0, [r1, 0xE]
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF524: .4byte gBattleAnimArgs
+_080EF528: .4byte 0x0000fffe
+ thumb_func_end sub_80EF4E0
+
+ thumb_func_start ItemIdToBallId
+ItemIdToBallId: @ 80EF52C
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ subs r0, 0x1
+ cmp r0, 0xB
+ bhi _080EF5A4
+ lsls r0, 2
+ ldr r1, _080EF544 @ =_080EF548
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080EF544: .4byte _080EF548
+ .align 2, 0
+_080EF548:
+ .4byte _080EF578
+ .4byte _080EF57C
+ .4byte _080EF580
+ .4byte _080EF5A4
+ .4byte _080EF584
+ .4byte _080EF588
+ .4byte _080EF58C
+ .4byte _080EF590
+ .4byte _080EF594
+ .4byte _080EF598
+ .4byte _080EF59C
+ .4byte _080EF5A0
+_080EF578:
+ movs r0, 0x4
+ b _080EF5A6
+_080EF57C:
+ movs r0, 0x3
+ b _080EF5A6
+_080EF580:
+ movs r0, 0x1
+ b _080EF5A6
+_080EF584:
+ movs r0, 0x2
+ b _080EF5A6
+_080EF588:
+ movs r0, 0x5
+ b _080EF5A6
+_080EF58C:
+ movs r0, 0x6
+ b _080EF5A6
+_080EF590:
+ movs r0, 0x7
+ b _080EF5A6
+_080EF594:
+ movs r0, 0x8
+ b _080EF5A6
+_080EF598:
+ movs r0, 0x9
+ b _080EF5A6
+_080EF59C:
+ movs r0, 0xA
+ b _080EF5A6
+_080EF5A0:
+ movs r0, 0xB
+ b _080EF5A6
+_080EF5A4:
+ movs r0, 0
+_080EF5A6:
+ pop {r1}
+ bx r1
+ thumb_func_end ItemIdToBallId
+
+ thumb_func_start sub_80EF5AC
+sub_80EF5AC: @ 80EF5AC
+ push {r4-r6,lr}
+ mov r6, r10
+ mov r5, r9
+ mov r4, r8
+ push {r4-r6}
+ mov r10, r0
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldr r0, _080EF674 @ =gUnknown_2023D68
+ ldrh r0, [r0]
+ bl ItemIdToBallId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 3
+ ldr r1, _080EF678 @ =gUnknown_82606F4
+ adds r0, r1
+ movs r1, 0x20
+ movs r2, 0x50
+ movs r3, 0x1D
+ bl CreateSprite
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r1, _080EF67C @ =gSprites
+ mov r9, r1
+ lsls r4, r5, 4
+ adds r4, r5
+ lsls r4, 2
+ adds r6, r4, r1
+ movs r0, 0x22
+ strh r0, [r6, 0x2E]
+ ldr r2, _080EF680 @ =gBattleAnimTarget
+ mov r8, r2
+ ldrb r0, [r2]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x30]
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x10
+ strh r0, [r6, 0x32]
+ mov r0, r9
+ adds r0, 0x1C
+ adds r4, r0
+ ldr r0, _080EF684 @ =sub_80EF8C0
+ str r0, [r4]
+ ldr r0, _080EF688 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r3, [r0, 0x8]
+ ldr r1, _080EF68C @ =gBattlerSpriteIds
+ mov r2, r8
+ ldrb r0, [r2]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ add r0, r9
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ lsls r1, 29
+ lsrs r1, 31
+ lsls r1, 1
+ ldrb r2, [r3, 0x9]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x9]
+ ldr r1, _080EF690 @ =gTasks
+ mov r2, r10
+ lsls r0, r2, 2
+ add r0, r10
+ lsls r0, 3
+ adds r0, r1
+ strh r5, [r0, 0x8]
+ ldr r1, _080EF694 @ =sub_80EF698
+ str r1, [r0]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF674: .4byte gUnknown_2023D68
+_080EF678: .4byte gUnknown_82606F4
+_080EF67C: .4byte gSprites
+_080EF680: .4byte gBattleAnimTarget
+_080EF684: .4byte sub_80EF8C0
+_080EF688: .4byte gUnknown_2024018
+_080EF68C: .4byte gBattlerSpriteIds
+_080EF690: .4byte gTasks
+_080EF694: .4byte sub_80EF698
+ thumb_func_end sub_80EF5AC
+
+ thumb_func_start sub_80EF698
+sub_80EF698: @ 80EF698
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r1, _080EF6C8 @ =gTasks
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ adds r0, r1
+ ldrb r1, [r0, 0x8]
+ ldr r2, _080EF6CC @ =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x2E]
+ ldr r0, _080EF6D0 @ =0x0000ffff
+ cmp r1, r0
+ bne _080EF6C2
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+_080EF6C2:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF6C8: .4byte gTasks
+_080EF6CC: .4byte gSprites
+_080EF6D0: .4byte 0x0000ffff
+ thumb_func_end sub_80EF698
+
+ thumb_func_start sub_80EF6D4
+sub_80EF6D4: @ 80EF6D4
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, _080EF6F4 @ =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _080EF6F8
+ movs r5, 0x1C
+ movs r6, 0xB
+ b _080EF708
+ .align 2, 0
+_080EF6F4: .4byte gBattleTypeFlags
+_080EF6F8:
+ movs r5, 0x17
+ movs r6, 0xB
+ ldr r0, _080EF7C4 @ =gSaveBlock2Ptr
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x8]
+ cmp r0, 0x1
+ bne _080EF708
+ movs r6, 0xD
+_080EF708:
+ ldr r0, _080EF7C8 @ =gUnknown_2023D68
+ ldrh r0, [r0]
+ bl ItemIdToBallId
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_807685C
+ adds r3, r0, 0
+ adds r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080EF7CC @ =gUnknown_82606F4
+ adds r0, r1
+ movs r1, 0x20
+ orrs r5, r1
+ movs r1, 0x50
+ orrs r6, r1
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl CreateSprite
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r0, _080EF7D0 @ =gSprites
+ mov r9, r0
+ lsls r4, r5, 4
+ adds r4, r5
+ lsls r4, 2
+ adds r6, r4, r0
+ movs r0, 0x22
+ strh r0, [r6, 0x2E]
+ ldr r1, _080EF7D4 @ =gBattleAnimTarget
+ mov r8, r1
+ ldrb r0, [r1]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x30]
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x10
+ strh r0, [r6, 0x32]
+ movs r0, 0x1C
+ add r9, r0
+ add r4, r9
+ ldr r0, _080EF7D8 @ =SpriteCallbackDummy
+ str r0, [r4]
+ movs r0, 0
+ bl GetBattlerAtPosition
+ ldr r1, _080EF7DC @ =gBattlerSpriteIds
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ add r0, r9
+ ldr r1, _080EF7E0 @ =sub_8012354
+ str r1, [r0]
+ ldr r1, _080EF7E4 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r1
+ strh r5, [r0, 0x8]
+ ldr r1, _080EF7E8 @ =sub_80EF7EC
+ str r1, [r0]
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF7C4: .4byte gSaveBlock2Ptr
+_080EF7C8: .4byte gUnknown_2023D68
+_080EF7CC: .4byte gUnknown_82606F4
+_080EF7D0: .4byte gSprites
+_080EF7D4: .4byte gBattleAnimTarget
+_080EF7D8: .4byte SpriteCallbackDummy
+_080EF7DC: .4byte gBattlerSpriteIds
+_080EF7E0: .4byte sub_8012354
+_080EF7E4: .4byte gTasks
+_080EF7E8: .4byte sub_80EF7EC
+ thumb_func_end sub_80EF6D4
+
+ thumb_func_start sub_80EF7EC
+sub_80EF7EC: @ 80EF7EC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r6, _080EF84C @ =gSprites
+ movs r0, 0
+ bl GetBattlerAtPosition
+ ldr r1, _080EF850 @ =gBattlerSpriteIds
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ adds r0, 0x2B
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _080EF846
+ movs r0, 0x36
+ movs r1, 0
+ bl PlaySE12WithPanning
+ ldr r0, _080EF854 @ =gTasks
+ lsls r4, r5, 2
+ adds r4, r5
+ lsls r4, 3
+ adds r4, r0
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r6, 0
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, _080EF858 @ =sub_80EF8C0
+ str r1, [r0]
+ ldr r0, _080EF85C @ =sub_80EF864
+ movs r1, 0xA
+ bl CreateTask
+ ldr r0, _080EF860 @ =sub_80EF698
+ str r0, [r4]
+_080EF846:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF84C: .4byte gSprites
+_080EF850: .4byte gBattlerSpriteIds
+_080EF854: .4byte gTasks
+_080EF858: .4byte sub_80EF8C0
+_080EF85C: .4byte sub_80EF864
+_080EF860: .4byte sub_80EF698
+ thumb_func_end sub_80EF7EC
+
+ thumb_func_start sub_80EF864
+sub_80EF864: @ 80EF864
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r6, _080EF8B8 @ =gSprites
+ movs r0, 0
+ bl GetBattlerAtPosition
+ ldr r4, _080EF8BC @ =gBattlerSpriteIds
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ adds r0, 0x3F
+ ldrb r0, [r0]
+ lsls r0, 27
+ cmp r0, 0
+ bge _080EF8B0
+ movs r0, 0
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ movs r1, 0
+ bl StartSpriteAnim
+ adds r0, r5, 0
+ bl DestroyTask
+_080EF8B0:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF8B8: .4byte gSprites
+_080EF8BC: .4byte gBattlerSpriteIds
+ thumb_func_end sub_80EF864
+
+ thumb_func_start sub_80EF8C0
+sub_80EF8C0: @ 80EF8C0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x30]
+ ldrh r2, [r4, 0x32]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ strh r1, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ strh r2, [r4, 0x36]
+ ldr r0, _080EF8E8 @ =0x0000ffd8
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_8075068
+ ldr r0, _080EF8EC @ =sub_80EF8F0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF8E8: .4byte 0x0000ffd8
+_080EF8EC: .4byte sub_80EF8F0
+ thumb_func_end sub_80EF8C0
+
+ thumb_func_start sub_80EF8F0
+sub_80EF8F0: @ 80EF8F0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080EF99E
+ ldr r0, _080EF914 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r0, [r0, 0x8]
+ cmp r0, 0x5
+ bne _080EF91C
+ ldr r0, _080EF918 @ =sub_80F0478
+ str r0, [r4, 0x1C]
+ b _080EF99E
+ .align 2, 0
+_080EF914: .4byte gUnknown_2024018
+_080EF918: .4byte sub_80F0478
+_080EF91C:
+ cmp r0, 0x6
+ bne _080EF92C
+ ldr r0, _080EF928 @ =sub_80F052C
+ str r0, [r4, 0x1C]
+ b _080EF99E
+ .align 2, 0
+_080EF928: .4byte sub_80F052C
+_080EF92C:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ strh r1, [r4, 0x24]
+ strh r1, [r4, 0x26]
+ adds r1, r4, 0
+ adds r1, 0x2E
+ movs r2, 0
+ adds r0, r4, 0
+ adds r0, 0x3C
+_080EF954:
+ strh r2, [r0]
+ subs r0, 0x2
+ cmp r0, r1
+ bge _080EF954
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ ldr r0, _080EF9A8 @ =sub_80EF9B4
+ str r0, [r4, 0x1C]
+ ldr r0, _080EF9AC @ =gUnknown_2023D68
+ ldrh r0, [r0]
+ bl ItemIdToBallId
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0xB
+ bgt _080EF99E
+ cmp r5, 0
+ blt _080EF99E
+ ldrh r0, [r4, 0x20]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x22]
+ subs r1, 0x5
+ lsls r1, 24
+ lsrs r1, 24
+ str r5, [sp]
+ movs r2, 0x1
+ movs r3, 0x1C
+ bl LaunchBallStarsTask
+ ldr r0, _080EF9B0 @ =gBattleAnimTarget
+ ldrb r1, [r0]
+ movs r0, 0
+ movs r2, 0xE
+ adds r3, r5, 0
+ bl LaunchBallFadeMonTask
+_080EF99E:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF9A8: .4byte sub_80EF9B4
+_080EF9AC: .4byte gUnknown_2023D68
+_080EF9B0: .4byte gBattleAnimTarget
+ thumb_func_end sub_80EF8F0
+
+ thumb_func_start sub_80EF9B4
+sub_80EF9B4: @ 80EF9B4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ bne _080EF9F0
+ ldr r0, _080EF9F8 @ =TaskDummy
+ movs r1, 0x32
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x38]
+ ldr r0, _080EF9FC @ =sub_80EFA0C
+ str r0, [r4, 0x1C]
+ ldr r2, _080EFA00 @ =gSprites
+ ldr r1, _080EFA04 @ =gBattlerSpriteIds
+ ldr r0, _080EFA08 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0
+ strh r1, [r0, 0x30]
+_080EF9F0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EF9F8: .4byte TaskDummy
+_080EF9FC: .4byte sub_80EFA0C
+_080EFA00: .4byte gSprites
+_080EFA04: .4byte gBattlerSpriteIds
+_080EFA08: .4byte gBattleAnimTarget
+ thumb_func_end sub_80EF9B4
+
+ thumb_func_start sub_80EFA0C
+sub_80EFA0C: @ 80EFA0C
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ ldr r1, _080EFA50 @ =gBattlerSpriteIds
+ ldr r0, _080EFA54 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r4, [r0]
+ ldrh r0, [r7, 0x38]
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080EFA58 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xB
+ bne _080EFA3E
+ movs r0, 0x35
+ bl PlaySE
+_080EFA3E:
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080EFAB4
+ cmp r0, 0x1
+ bgt _080EFA5C
+ cmp r0, 0
+ beq _080EFA62
+ b _080EFB20
+ .align 2, 0
+_080EFA50: .4byte gBattlerSpriteIds
+_080EFA54: .4byte gBattleAnimTarget
+_080EFA58: .4byte gTasks
+_080EFA5C:
+ cmp r0, 0x2
+ beq _080EFAF8
+ b _080EFB20
+_080EFA62:
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_80758E0
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r5, 0x1C]
+ ldr r1, _080EFAA4 @ =gUnknown_3005424
+ movs r0, 0x1C
+ str r0, [r1]
+ ldr r2, _080EFAA8 @ =gUnknown_300542C
+ ldr r1, _080EFAAC @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ ldrh r0, [r0, 0x22]
+ adds r1, r0
+ ldrh r0, [r7, 0x26]
+ ldrh r7, [r7, 0x22]
+ adds r0, r7
+ subs r1, r0
+ strh r1, [r2]
+ ldr r4, _080EFAB0 @ =gUnknown_3005428
+ ldrh r0, [r2]
+ lsls r0, 8
+ movs r1, 0x1C
+ bl __udivsi3
+ strh r0, [r4]
+ strh r0, [r5, 0xC]
+ b _080EFB12
+ .align 2, 0
+_080EFAA4: .4byte gUnknown_3005424
+_080EFAA8: .4byte gUnknown_300542C
+_080EFAAC: .4byte gSprites
+_080EFAB0: .4byte gUnknown_3005428
+_080EFAB4:
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x20
+ strh r0, [r5, 0x1C]
+ movs r0, 0x1C
+ ldrsh r2, [r5, r0]
+ adds r0, r4, 0
+ adds r1, r2, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r5, 0xC]
+ ldrh r1, [r5, 0xE]
+ adds r0, r1
+ strh r0, [r5, 0xE]
+ ldr r0, _080EFAF0 @ =gSprites
+ lsls r1, r4, 4
+ adds r1, r4
+ lsls r1, 2
+ adds r1, r0
+ movs r2, 0xE
+ ldrsh r0, [r5, r2]
+ negs r0, r0
+ asrs r0, 8
+ strh r0, [r1, 0x26]
+ movs r0, 0x1C
+ ldrsh r1, [r5, r0]
+ ldr r0, _080EFAF4 @ =0x0000047f
+ cmp r1, r0
+ ble _080EFB48
+ b _080EFB12
+ .align 2, 0
+_080EFAF0: .4byte gSprites
+_080EFAF4: .4byte 0x0000047f
+_080EFAF8:
+ adds r0, r4, 0
+ bl sub_8075980
+ ldr r1, _080EFB1C @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+_080EFB12:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080EFB48
+ .align 2, 0
+_080EFB1C: .4byte gSprites
+_080EFB20:
+ ldr r0, _080EFB50 @ =gTasks
+ lsls r1, r6, 2
+ adds r1, r6
+ lsls r1, 3
+ adds r1, r0
+ movs r2, 0xA
+ ldrsh r0, [r1, r2]
+ cmp r0, 0xA
+ ble _080EFB48
+ adds r0, r6, 0
+ bl DestroyTask
+ adds r0, r7, 0
+ movs r1, 0x2
+ bl StartSpriteAnim
+ movs r0, 0
+ strh r0, [r7, 0x38]
+ ldr r0, _080EFB54 @ =sub_80EFB58
+ str r0, [r7, 0x1C]
+_080EFB48:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EFB50: .4byte gTasks
+_080EFB54: .4byte sub_80EFB58
+ thumb_func_end sub_80EFA0C
+
+ thumb_func_start sub_80EFB58
+sub_80EFB58: @ 80EFB58
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080EFB92
+ movs r1, 0
+ strh r1, [r4, 0x34]
+ movs r0, 0x28
+ strh r0, [r4, 0x36]
+ strh r1, [r4, 0x38]
+ movs r0, 0
+ movs r1, 0x28
+ bl Cos
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ movs r0, 0x36
+ ldrsh r1, [r4, r0]
+ movs r0, 0
+ bl Cos
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ ldr r0, _080EFB98 @ =sub_80EFB9C
+ str r0, [r4, 0x1C]
+_080EFB92:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EFB98: .4byte sub_80EFB9C
+ thumb_func_end sub_80EFB58
+
+ thumb_func_start sub_80EFB9C
+sub_80EFB9C: @ 80EFB9C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r5, 0
+ ldrh r0, [r4, 0x34]
+ movs r1, 0xFF
+ ands r1, r0
+ cmp r1, 0
+ beq _080EFBB2
+ cmp r1, 0x1
+ beq _080EFC26
+ b _080EFC52
+_080EFBB2:
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl Cos
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x38]
+ adds r1, 0x4
+ ldrh r2, [r4, 0x34]
+ lsls r0, r2, 16
+ asrs r0, 24
+ adds r1, r0
+ strh r1, [r4, 0x38]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x3F
+ ble _080EFC52
+ ldrh r0, [r4, 0x36]
+ subs r0, 0xA
+ strh r0, [r4, 0x36]
+ ldr r1, _080EFBFC @ =0x00000101
+ adds r0, r2, r1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 24
+ cmp r0, 0x4
+ bne _080EFBEE
+ movs r5, 0x1
+_080EFBEE:
+ cmp r0, 0x2
+ beq _080EFC0E
+ cmp r0, 0x2
+ bgt _080EFC00
+ cmp r0, 0x1
+ beq _080EFC06
+ b _080EFC1E
+ .align 2, 0
+_080EFBFC: .4byte 0x00000101
+_080EFC00:
+ cmp r0, 0x3
+ beq _080EFC16
+ b _080EFC1E
+_080EFC06:
+ movs r0, 0x31
+ bl PlaySE
+ b _080EFC52
+_080EFC0E:
+ movs r0, 0x32
+ bl PlaySE
+ b _080EFC52
+_080EFC16:
+ movs r0, 0x33
+ bl PlaySE
+ b _080EFC52
+_080EFC1E:
+ movs r0, 0x34
+ bl PlaySE
+ b _080EFC52
+_080EFC26:
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl Cos
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x38]
+ subs r1, 0x4
+ ldrh r2, [r4, 0x34]
+ lsls r0, r2, 16
+ asrs r0, 24
+ subs r1, r0
+ strh r1, [r4, 0x38]
+ lsls r1, 16
+ cmp r1, 0
+ bgt _080EFC52
+ strh r5, [r4, 0x38]
+ ldr r0, _080EFC80 @ =0xffffff00
+ ands r0, r2
+ strh r0, [r4, 0x34]
+_080EFC52:
+ cmp r5, 0
+ beq _080EFC96
+ movs r5, 0
+ strh r5, [r4, 0x34]
+ movs r0, 0x40
+ movs r1, 0x28
+ bl Cos
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ strh r5, [r4, 0x26]
+ ldr r0, _080EFC84 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r0, [r0, 0x8]
+ cmp r0, 0
+ bne _080EFC8C
+ strh r5, [r4, 0x38]
+ ldr r0, _080EFC88 @ =sub_80EFF80
+ str r0, [r4, 0x1C]
+ b _080EFC96
+ .align 2, 0
+_080EFC80: .4byte 0xffffff00
+_080EFC84: .4byte gUnknown_2024018
+_080EFC88: .4byte sub_80EFF80
+_080EFC8C:
+ ldr r0, _080EFC9C @ =sub_80EFCA0
+ str r0, [r4, 0x1C]
+ movs r0, 0x1
+ strh r0, [r4, 0x36]
+ strh r5, [r4, 0x38]
+_080EFC96:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EFC9C: .4byte sub_80EFCA0
+ thumb_func_end sub_80EFB9C
+
+ thumb_func_start sub_80EFCA0
+sub_80EFCA0: @ 80EFCA0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ movs r5, 0
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080EFCDC
+ strh r5, [r4, 0x34]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldr r0, _080EFCE4 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ strh r5, [r0, 0xC]
+ ldr r0, _080EFCE8 @ =sub_80EFCEC
+ str r0, [r4, 0x1C]
+ movs r0, 0x17
+ bl PlaySE
+_080EFCDC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EFCE4: .4byte gUnknown_2024018
+_080EFCE8: .4byte sub_80EFCEC
+ thumb_func_end sub_80EFCA0
+
+ thumb_func_start sub_80EFCEC
+sub_80EFCEC: @ 80EFCEC
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x34]
+ movs r1, 0xFF
+ ands r1, r0
+ cmp r1, 0x6
+ bls _080EFCFC
+ b _080EFF34
+_080EFCFC:
+ lsls r0, r1, 2
+ ldr r1, _080EFD08 @ =_080EFD0C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080EFD08: .4byte _080EFD0C
+ .align 2, 0
+_080EFD0C:
+ .4byte _080EFD28
+ .4byte _080EFD7A
+ .4byte _080EFDC0
+ .4byte _080EFE20
+ .4byte _080EFE70
+ .4byte _080EFED4
+ .4byte _080EFF34
+_080EFD28:
+ ldr r1, _080EFD4C @ =gUnknown_2024018
+ ldr r5, [r1]
+ ldr r2, [r5, 0x8]
+ ldrh r3, [r2, 0xC]
+ movs r6, 0xC
+ ldrsh r0, [r2, r6]
+ adds r6, r1, 0
+ cmp r0, 0xFF
+ ble _080EFD50
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ ldr r1, [r5, 0x8]
+ ldrb r0, [r1, 0xC]
+ strh r0, [r1, 0xC]
+ b _080EFD56
+ .align 2, 0
+_080EFD4C: .4byte gUnknown_2024018
+_080EFD50:
+ adds r0, r3, 0
+ adds r0, 0xB0
+ strh r0, [r2, 0xC]
+_080EFD56:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ movs r3, 0
+ strh r0, [r4, 0x38]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x7
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xE
+ bhi _080EFD78
+ b _080EFF7A
+_080EFD78:
+ b _080EFE10
+_080EFD7A:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080EFE2C
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x36]
+ negs r0, r0
+ strh r0, [r4, 0x36]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ movs r6, 0x36
+ ldrsh r0, [r4, r6]
+ cmp r0, 0
+ bge _080EFDB6
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl ChangeSpriteAffineAnim
+ b _080EFF7A
+_080EFDB6:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+ b _080EFF7A
+_080EFDC0:
+ ldr r1, _080EFDE4 @ =gUnknown_2024018
+ ldr r5, [r1]
+ ldr r2, [r5, 0x8]
+ ldrh r3, [r2, 0xC]
+ movs r6, 0xC
+ ldrsh r0, [r2, r6]
+ adds r6, r1, 0
+ cmp r0, 0xFF
+ ble _080EFDE8
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ ldr r1, [r5, 0x8]
+ ldrb r0, [r1, 0xC]
+ strh r0, [r1, 0xC]
+ b _080EFDEE
+ .align 2, 0
+_080EFDE4: .4byte gUnknown_2024018
+_080EFDE8:
+ adds r0, r3, 0
+ adds r0, 0xB0
+ strh r0, [r2, 0xC]
+_080EFDEE:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ movs r3, 0
+ strh r0, [r4, 0x38]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0xC
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x18
+ bhi _080EFE10
+ b _080EFF7A
+_080EFE10:
+ ldr r0, [r6]
+ ldr r0, [r0, 0x8]
+ strh r3, [r0, 0xC]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ strh r3, [r4, 0x38]
+ b _080EFF7A
+_080EFE20:
+ ldrh r0, [r4, 0x38]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x38]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080EFE3A
+_080EFE2C:
+ adds r0, r4, 0
+ adds r0, 0x2C
+ ldrb r1, [r0]
+ movs r2, 0x80
+ orrs r1, r2
+ strb r1, [r0]
+ b _080EFF7A
+_080EFE3A:
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x36]
+ negs r0, r0
+ strh r0, [r4, 0x36]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ movs r6, 0x36
+ ldrsh r0, [r4, r6]
+ cmp r0, 0
+ bge _080EFE68
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl ChangeSpriteAffineAnim
+ b _080EFE70
+_080EFE68:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+_080EFE70:
+ ldr r1, _080EFE94 @ =gUnknown_2024018
+ ldr r5, [r1]
+ ldr r2, [r5, 0x8]
+ ldrh r3, [r2, 0xC]
+ movs r6, 0xC
+ ldrsh r0, [r2, r6]
+ adds r6, r1, 0
+ cmp r0, 0xFF
+ ble _080EFE98
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ ldr r1, [r5, 0x8]
+ ldrb r0, [r1, 0xC]
+ strh r0, [r1, 0xC]
+ b _080EFE9E
+ .align 2, 0
+_080EFE94: .4byte gUnknown_2024018
+_080EFE98:
+ adds r0, r3, 0
+ adds r0, 0xB0
+ strh r0, [r2, 0xC]
+_080EFE9E:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ movs r3, 0
+ strh r0, [r4, 0x38]
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x4
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x8
+ bls _080EFF7A
+ ldr r0, [r6]
+ ldr r0, [r0, 0x8]
+ strh r3, [r0, 0xC]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ strh r3, [r4, 0x38]
+ ldrh r0, [r4, 0x36]
+ negs r0, r0
+ strh r0, [r4, 0x36]
+ b _080EFF7A
+_080EFED4:
+ movs r6, 0x80
+ lsls r6, 1
+ adds r0, r6, 0
+ ldrh r1, [r4, 0x34]
+ adds r0, r1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r1, r0, 24
+ ldr r0, _080EFF04 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r0, [r0, 0x8]
+ cmp r1, r0
+ bne _080EFF0C
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080EFF08 @ =sub_80EFF80
+ str r0, [r4, 0x1C]
+ b _080EFF7A
+ .align 2, 0
+_080EFF04: .4byte gUnknown_2024018
+_080EFF08: .4byte sub_80EFF80
+_080EFF0C:
+ cmp r0, 0x4
+ bne _080EFF20
+ cmp r1, 0x3
+ bne _080EFF20
+ ldr r0, _080EFF1C @ =sub_80EFFA4
+ str r0, [r4, 0x1C]
+ b _080EFF26
+ .align 2, 0
+_080EFF1C: .4byte sub_80EFFA4
+_080EFF20:
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+_080EFF26:
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ b _080EFF7A
+_080EFF34:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080EFF7A
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ ldrh r1, [r4, 0x34]
+ ldr r0, _080EFF68 @ =0xffffff00
+ ands r0, r1
+ strh r0, [r4, 0x34]
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl StartSpriteAffineAnim
+ movs r6, 0x36
+ ldrsh r0, [r4, r6]
+ cmp r0, 0
+ bge _080EFF6C
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl StartSpriteAffineAnim
+ b _080EFF74
+ .align 2, 0
+_080EFF68: .4byte 0xffffff00
+_080EFF6C:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+_080EFF74:
+ movs r0, 0x17
+ bl PlaySE
+_080EFF7A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80EFCEC
+
+ thumb_func_start sub_80EFF80
+sub_80EFF80: @ 80EFF80
+ push {lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0x38]
+ adds r0, 0x1
+ strh r0, [r1, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080EFF9A
+ movs r0, 0
+ strh r0, [r1, 0x38]
+ ldr r0, _080EFFA0 @ =sub_80F02B0
+ str r0, [r1, 0x1C]
+_080EFF9A:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080EFFA0: .4byte sub_80F02B0
+ thumb_func_end sub_80EFF80
+
+ thumb_func_start sub_80EFFA4
+sub_80EFFA4: @ 80EFFA4
+ adds r3, r0, 0
+ adds r3, 0x2C
+ ldrb r1, [r3]
+ movs r2, 0x40
+ orrs r1, r2
+ strb r1, [r3]
+ ldr r1, _080EFFC0 @ =sub_80EFFC4
+ str r1, [r0, 0x1C]
+ movs r1, 0
+ strh r1, [r0, 0x34]
+ strh r1, [r0, 0x36]
+ strh r1, [r0, 0x38]
+ bx lr
+ .align 2, 0
+_080EFFC0: .4byte sub_80EFFC4
+ thumb_func_end sub_80EFFA4
+
+ thumb_func_start sub_80EFFC4
+sub_80EFFC4: @ 80EFFC4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r6, r0, 0
+ ldr r7, _080F0004 @ =gBattleAnimTarget
+ ldrh r0, [r6, 0x36]
+ adds r0, 0x1
+ movs r1, 0
+ mov r8, r1
+ strh r0, [r6, 0x36]
+ lsls r0, 16
+ asrs r1, r0, 16
+ cmp r1, 0x28
+ bne _080F0008
+ movs r0, 0xF7
+ bl PlaySE
+ ldrb r1, [r6, 0x5]
+ lsrs r1, 4
+ movs r0, 0x80
+ lsls r0, 9
+ lsls r0, r1
+ movs r1, 0x6
+ movs r2, 0
+ bl BlendPalettes
+ adds r0, r6, 0
+ bl sub_80F01B8
+ b _080F0088
+ .align 2, 0
+_080F0004: .4byte gBattleAnimTarget
+_080F0008:
+ cmp r1, 0x3C
+ bne _080F0026
+ ldrb r1, [r6, 0x5]
+ lsrs r1, 4
+ movs r0, 0x80
+ lsls r0, 9
+ lsls r0, r1
+ mov r1, r8
+ str r1, [sp]
+ movs r1, 0x2
+ movs r2, 0x6
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ b _080F0088
+_080F0026:
+ cmp r1, 0x5F
+ bne _080F004C
+ ldr r0, _080F0044 @ =gUnknown_2024005
+ movs r1, 0
+ strb r1, [r0]
+ movs r0, 0x1
+ bl UpdateOamPriorityInAllHealthboxes
+ bl m4aMPlayAllStop
+ ldr r0, _080F0048 @ =0x0000013f
+ bl PlaySE
+ b _080F0088
+ .align 2, 0
+_080F0044: .4byte gUnknown_2024005
+_080F0048: .4byte 0x0000013f
+_080F004C:
+ ldr r0, _080F0094 @ =0x0000013b
+ cmp r1, r0
+ bne _080F0088
+ ldr r5, _080F0098 @ =gSprites
+ ldr r4, _080F009C @ =gBattlerSpriteIds
+ ldrb r0, [r7]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrb r0, [r0, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ ldrb r0, [r7]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ bl DestroySprite
+ mov r0, r8
+ strh r0, [r6, 0x2E]
+ ldr r0, _080F00A0 @ =sub_80F00A4
+ str r0, [r6, 0x1C]
+_080F0088:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0094: .4byte 0x0000013b
+_080F0098: .4byte gSprites
+_080F009C: .4byte gBattlerSpriteIds
+_080F00A0: .4byte sub_80F00A4
+ thumb_func_end sub_80EFFC4
+
+ thumb_func_start sub_80F00A4
+sub_80F00A4: @ 80F00A4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080F0110
+ cmp r0, 0x1
+ bgt _080F00BC
+ cmp r0, 0
+ beq _080F00C2
+ b _080F0156
+_080F00BC:
+ cmp r0, 0x2
+ beq _080F0142
+ b _080F0156
+_080F00C2:
+ strh r0, [r4, 0x30]
+ strh r0, [r4, 0x32]
+ ldrb r1, [r4, 0x1]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0x10
+ bl SetGpuReg
+ ldr r0, [r4, 0x14]
+ ldrh r0, [r0, 0x2]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ movs r1, 0x1
+ lsls r1, r0
+ ldr r0, _080F010C @ =0x00007fff
+ str r0, [sp]
+ adds r0, r1, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ b _080F014E
+ .align 2, 0
+_080F010C: .4byte 0x00007fff
+_080F0110:
+ ldrh r0, [r4, 0x30]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080F017C
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldrh r2, [r4, 0x32]
+ adds r2, 0x1
+ strh r2, [r4, 0x32]
+ lsls r1, r2, 8
+ movs r0, 0x10
+ subs r0, r2
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080F017C
+ b _080F014E
+_080F0142:
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080F014E:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080F017C
+_080F0156:
+ ldr r0, _080F0184 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _080F017C
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ strh r5, [r4, 0x2E]
+ ldr r0, _080F0188 @ =sub_80F018C
+ str r0, [r4, 0x1C]
+_080F017C:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0184: .4byte gPaletteFade
+_080F0188: .4byte sub_80F018C
+ thumb_func_end sub_80F00A4
+
+ thumb_func_start sub_80F018C
+sub_80F018C: @ 80F018C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080F01A4
+ ldr r0, _080F01A0 @ =0x0000ffff
+ strh r0, [r4, 0x2E]
+ b _080F01B0
+ .align 2, 0
+_080F01A0: .4byte 0x0000ffff
+_080F01A4:
+ adds r0, r4, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080F01B0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F018C
+
+ thumb_func_start sub_80F01B8
+sub_80F01B8: @ 80F01B8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r6, r0, 0
+ adds r1, r6, 0
+ adds r1, 0x43
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _080F01D8
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ b _080F01E0
+_080F01D8:
+ movs r0, 0
+ mov r8, r0
+ movs r0, 0x1
+ strb r0, [r1]
+_080F01E0:
+ movs r0, 0x4
+ bl sub_80F05B4
+ movs r7, 0
+ ldr r2, _080F0264 @ =gSprites
+ mov r9, r2
+ movs r0, 0x1C
+ add r0, r9
+ mov r10, r0
+_080F01F2:
+ movs r2, 0x20
+ ldrsh r1, [r6, r2]
+ movs r0, 0x22
+ ldrsh r2, [r6, r0]
+ ldr r0, _080F0268 @ =gUnknown_840C104
+ mov r3, r8
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _080F024E
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ mov r2, r9
+ adds r5, r4, r2
+ movs r0, 0x18
+ strh r0, [r5, 0x2E]
+ ldr r0, _080F026C @ =gUnknown_840BF3C
+ lsls r1, r7, 2
+ adds r1, r0
+ movs r0, 0
+ ldrsb r0, [r1, r0]
+ ldrh r2, [r6, 0x20]
+ adds r0, r2
+ strh r0, [r5, 0x32]
+ movs r0, 0x1
+ ldrsb r0, [r1, r0]
+ ldrh r2, [r6, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x36]
+ movs r0, 0x2
+ ldrsb r0, [r1, r0]
+ strh r0, [r5, 0x38]
+ adds r0, r5, 0
+ bl sub_8075068
+ add r4, r10
+ ldr r0, _080F0270 @ =sub_80F0278
+ str r0, [r4]
+ ldr r0, _080F0274 @ =gUnknown_840C068
+ ldrb r1, [r0, 0x4]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+_080F024E:
+ adds r7, 0x1
+ cmp r7, 0x2
+ bls _080F01F2
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0264: .4byte gSprites
+_080F0268: .4byte gUnknown_840C104
+_080F026C: .4byte gUnknown_840BF3C
+_080F0270: .4byte sub_80F0278
+_080F0274: .4byte gUnknown_840C068
+ thumb_func_end sub_80F01B8
+
+ thumb_func_start sub_80F0278
+sub_80F0278: @ 80F0278
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsrs r1, r2, 2
+ movs r0, 0x1
+ eors r1, r0
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ adds r0, r4, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080F02A8
+ adds r0, r4, 0
+ bl DestroySprite
+_080F02A8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F0278
+
+ thumb_func_start sub_80F02B0
+sub_80F02B0: @ 80F02B0
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ adds r0, r4, 0
+ movs r1, 0
+ bl StartSpriteAffineAnim
+ ldr r0, _080F0364 @ =sub_80F0378
+ str r0, [r4, 0x1C]
+ ldr r0, _080F0368 @ =gUnknown_2023D68
+ ldrh r0, [r0]
+ bl ItemIdToBallId
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0xB
+ bgt _080F0302
+ cmp r5, 0
+ blt _080F0302
+ ldrh r0, [r4, 0x20]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x22]
+ subs r1, 0x5
+ lsls r1, 24
+ lsrs r1, 24
+ str r5, [sp]
+ movs r2, 0x1
+ movs r3, 0x1C
+ bl LaunchBallStarsTask
+ ldr r0, _080F036C @ =gBattleAnimTarget
+ ldrb r1, [r0]
+ movs r0, 0x1
+ movs r2, 0xE
+ adds r3, r5, 0
+ bl LaunchBallFadeMonTask
+_080F0302:
+ ldr r6, _080F0370 @ =gSprites
+ ldr r5, _080F0374 @ =gBattlerSpriteIds
+ ldr r4, _080F036C @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ bl AnimateSprite
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ movs r1, 0x80
+ lsls r1, 5
+ strh r1, [r0, 0x30]
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0364: .4byte sub_80F0378
+_080F0368: .4byte gUnknown_2023D68
+_080F036C: .4byte gBattleAnimTarget
+_080F0370: .4byte gSprites
+_080F0374: .4byte gBattlerSpriteIds
+ thumb_func_end sub_80F02B0
+
+ thumb_func_start sub_80F0378
+sub_80F0378: @ 80F0378
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ movs r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080F0396
+ adds r2, r7, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080F0396:
+ ldr r4, _080F03C4 @ =gSprites
+ ldr r3, _080F03C8 @ =gBattlerSpriteIds
+ ldr r2, _080F03CC @ =gBattleAnimTarget
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r4
+ adds r0, r1, 0
+ adds r0, 0x3F
+ ldrb r0, [r0]
+ lsls r0, 26
+ cmp r0, 0
+ bge _080F03D0
+ adds r0, r1, 0
+ movs r1, 0
+ bl StartSpriteAffineAnim
+ movs r5, 0x1
+ b _080F03F0
+ .align 2, 0
+_080F03C4: .4byte gSprites
+_080F03C8: .4byte gBattlerSpriteIds
+_080F03CC: .4byte gBattleAnimTarget
+_080F03D0:
+ ldr r6, _080F045C @ =0xfffffee0
+ adds r0, r6, 0
+ ldrh r6, [r1, 0x30]
+ adds r0, r6
+ strh r0, [r1, 0x30]
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r1, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r1, 0x26]
+_080F03F0:
+ adds r0, r7, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080F0456
+ cmp r5, 0
+ beq _080F0456
+ ldr r4, _080F0460 @ =gSprites
+ ldr r3, _080F0464 @ =gBattlerSpriteIds
+ ldr r2, _080F0468 @ =gBattleAnimTarget
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r6, 0
+ movs r5, 0
+ strh r5, [r0, 0x26]
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r0, [r0]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r4
+ ldr r0, _080F046C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r1, [r0, 0x9]
+ lsls r1, 30
+ adds r2, 0x3E
+ lsrs r1, 31
+ lsls r1, 2
+ ldrb r3, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2]
+ strh r5, [r7, 0x2E]
+ ldr r0, _080F0470 @ =sub_80F018C
+ str r0, [r7, 0x1C]
+ ldr r0, _080F0474 @ =gUnknown_2024005
+ strb r6, [r0]
+ movs r0, 0x1
+ bl UpdateOamPriorityInAllHealthboxes
+_080F0456:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F045C: .4byte 0xfffffee0
+_080F0460: .4byte gSprites
+_080F0464: .4byte gBattlerSpriteIds
+_080F0468: .4byte gBattleAnimTarget
+_080F046C: .4byte gUnknown_2024018
+_080F0470: .4byte sub_80F018C
+_080F0474: .4byte gUnknown_2024005
+ thumb_func_end sub_80F0378
+
+ thumb_func_start sub_80F0478
+sub_80F0478: @ 80F0478
+ push {r4,lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x24]
+ ldrh r1, [r2, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r2, 0x20]
+ ldrh r0, [r2, 0x26]
+ ldrh r3, [r2, 0x22]
+ adds r0, r3
+ strh r0, [r2, 0x22]
+ strh r1, [r2, 0x26]
+ strh r1, [r2, 0x24]
+ ldr r4, _080F04B0 @ =sub_80F04B4
+ movs r3, 0
+ movs r1, 0x5
+ adds r0, r2, 0
+ adds r0, 0x38
+_080F049C:
+ strh r3, [r0]
+ subs r0, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bge _080F049C
+ str r4, [r2, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F04B0: .4byte sub_80F04B4
+ thumb_func_end sub_80F0478
+
+ thumb_func_start sub_80F04B4
+sub_80F04B4: @ 80F04B4
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x80
+ lsls r0, 4
+ adds r2, r0, 0
+ ldrh r1, [r4, 0x2E]
+ adds r2, r1
+ movs r0, 0xD0
+ lsls r0, 3
+ adds r3, r0, 0
+ ldrh r1, [r4, 0x30]
+ adds r3, r1
+ lsls r1, r3, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x24]
+ subs r0, r1
+ strh r0, [r4, 0x24]
+ lsls r0, r2, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ movs r0, 0xFF
+ ands r2, r0
+ strh r2, [r4, 0x2E]
+ ands r3, r0
+ strh r3, [r4, 0x30]
+ movs r2, 0x22
+ ldrsh r0, [r4, r2]
+ movs r2, 0x26
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ cmp r0, 0xA0
+ bgt _080F050A
+ movs r1, 0x20
+ ldrsh r0, [r4, r1]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ movs r1, 0x8
+ negs r1, r1
+ cmp r0, r1
+ bge _080F051E
+_080F050A:
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldr r0, _080F0524 @ =sub_80F018C
+ str r0, [r4, 0x1C]
+ ldr r1, _080F0528 @ =gUnknown_2024005
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0x1
+ bl UpdateOamPriorityInAllHealthboxes
+_080F051E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0524: .4byte sub_80F018C
+_080F0528: .4byte gUnknown_2024005
+ thumb_func_end sub_80F04B4
+
+ thumb_func_start sub_80F052C
+sub_80F052C: @ 80F052C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x24]
+ ldrh r0, [r4, 0x20]
+ adds r1, r0
+ movs r0, 0
+ strh r1, [r4, 0x20]
+ ldrh r2, [r4, 0x26]
+ ldrh r3, [r4, 0x22]
+ adds r2, r3
+ strh r2, [r4, 0x22]
+ strh r0, [r4, 0x26]
+ strh r0, [r4, 0x24]
+ movs r0, 0x22
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ subs r1, 0x8
+ strh r1, [r4, 0x32]
+ strh r2, [r4, 0x34]
+ movs r0, 0x90
+ strh r0, [r4, 0x36]
+ movs r0, 0x20
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_8075068
+ adds r0, r4, 0
+ bl sub_80750C8
+ ldr r0, _080F0570 @ =sub_80F0574
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0570: .4byte sub_80F0574
+ thumb_func_end sub_80F052C
+
+ thumb_func_start sub_80F0574
+sub_80F0574: @ 80F0574
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80750C8
+ lsls r0, 24
+ cmp r0, 0
+ bne _080F0590
+ movs r1, 0x22
+ ldrsh r0, [r4, r1]
+ movs r2, 0x26
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ cmp r0, 0x40
+ ble _080F05A4
+_080F0590:
+ movs r1, 0
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldr r0, _080F05AC @ =sub_80F018C
+ str r0, [r4, 0x1C]
+ ldr r0, _080F05B0 @ =gUnknown_2024005
+ strb r1, [r0]
+ movs r0, 0x1
+ bl UpdateOamPriorityInAllHealthboxes
+_080F05A4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F05AC: .4byte sub_80F018C
+_080F05B0: .4byte gUnknown_2024005
+ thumb_func_end sub_80F0574
+
+ thumb_func_start sub_80F05B4
+sub_80F05B4: @ 80F05B4
+ push {r4,r5,lr}
+ lsls r0, 24
+ ldr r1, _080F05E0 @ =gUnknown_840BF48
+ lsrs r5, r0, 21
+ adds r4, r5, r1
+ ldrh r0, [r4, 0x6]
+ bl GetSpriteTileStartByTag
+ lsls r0, 16
+ ldr r1, _080F05E4 @ =0xffff0000
+ cmp r0, r1
+ bne _080F05DA
+ adds r0, r4, 0
+ bl LoadCompressedSpriteSheetUsingHeap
+ ldr r0, _080F05E8 @ =gUnknown_840BFA8
+ adds r0, r5, r0
+ bl LoadCompressedSpritePaletteUsingHeap
+_080F05DA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F05E0: .4byte gUnknown_840BF48
+_080F05E4: .4byte 0xffff0000
+_080F05E8: .4byte gUnknown_840BFA8
+ thumb_func_end sub_80F05B4
+
+ thumb_func_start LaunchBallStarsTask
+LaunchBallStarsTask: @ 80F05EC
+ push {r4-r6,lr}
+ mov r6, r10
+ mov r5, r9
+ mov r4, r8
+ push {r4-r6}
+ adds r6, r0, 0
+ mov r8, r1
+ mov r9, r2
+ mov r10, r3
+ ldr r5, [sp, 0x1C]
+ lsls r6, 24
+ lsrs r6, 24
+ mov r0, r8
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ mov r1, r9
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ mov r0, r10
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ lsls r5, 24
+ lsrs r5, 24
+ adds r0, r5, 0
+ bl sub_80F05B4
+ ldr r1, _080F066C @ =gUnknown_840C074
+ lsls r0, r5, 2
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x5
+ bl CreateTask
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r1, _080F0670 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ strh r6, [r0, 0xA]
+ mov r1, r8
+ strh r1, [r0, 0xC]
+ mov r1, r9
+ strh r1, [r0, 0xE]
+ mov r1, r10
+ strh r1, [r0, 0x10]
+ strh r5, [r0, 0x26]
+ movs r0, 0xF
+ bl PlaySE
+ adds r0, r4, 0
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080F066C: .4byte gUnknown_840C074
+_080F0670: .4byte gTasks
+ thumb_func_end LaunchBallStarsTask
+
+ thumb_func_start sub_80F0674
+sub_80F0674: @ 80F0674
+ push {lr}
+ ldr r0, _080F0698 @ =gMain
+ ldr r1, _080F069C @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080F0692
+ ldr r0, _080F06A0 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0, 0x8]
+ ldrb r0, [r1, 0xA]
+ adds r0, 0x1
+ strb r0, [r1, 0xA]
+_080F0692:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0698: .4byte gMain
+_080F069C: .4byte 0x00000439
+_080F06A0: .4byte gUnknown_2024018
+ thumb_func_end sub_80F0674
+
+ thumb_func_start sub_80F06A4
+sub_80F06A4: @ 80F06A4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r1, _080F0780 @ =gTasks
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ adds r6, r0, r1
+ ldrh r0, [r6, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ movs r2, 0x8
+ ldrsh r0, [r6, r2]
+ adds r2, r1, 0
+ cmp r0, 0xF
+ bgt _080F079C
+ ldrb r1, [r6, 0xA]
+ ldrb r2, [r6, 0xC]
+ ldrb r4, [r6, 0xE]
+ mov r9, r4
+ ldrb r3, [r6, 0x10]
+ ldr r4, [sp]
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 3
+ ldr r4, _080F0784 @ =gUnknown_840C0A4
+ adds r0, r4
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ cmp r0, 0x40
+ beq _080F0740
+ bl sub_80F0674
+ mov r0, r10
+ lsls r4, r0, 4
+ add r4, r10
+ lsls r4, 2
+ ldr r5, _080F0788 @ =gSprites
+ adds r7, r4, r5
+ ldr r0, _080F078C @ =gUnknown_840C068
+ ldr r1, [sp]
+ adds r0, r1, r0
+ ldrb r1, [r0]
+ adds r0, r7, 0
+ bl StartSpriteAnim
+ adds r5, 0x1C
+ adds r4, r5
+ ldr r0, _080F0790 @ =sub_80F07BC
+ str r0, [r4]
+ movs r0, 0x3
+ mov r2, r9
+ ands r2, r0
+ lsls r2, 2
+ ldrb r1, [r7, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r7, 0x5]
+ ldrb r0, [r6, 0x8]
+ cmp r0, 0x7
+ bls _080F073C
+ subs r0, 0x8
+ lsls r0, 24
+ lsrs r0, 24
+_080F073C:
+ lsls r0, 5
+ strh r0, [r7, 0x2E]
+_080F0740:
+ ldr r0, _080F0780 @ =gTasks
+ mov r4, r8
+ lsls r1, r4, 2
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ movs r2, 0x8
+ ldrsh r1, [r1, r2]
+ adds r2, r0, 0
+ cmp r1, 0xF
+ bne _080F079C
+ ldr r0, _080F0794 @ =gMain
+ ldr r4, _080F0798 @ =0x00000439
+ adds r0, r4
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F0776
+ ldr r0, _080F0788 @ =gSprites
+ mov r2, r10
+ lsls r1, r2, 4
+ add r1, r10
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F0776:
+ mov r0, r8
+ bl DestroyTask
+ b _080F07AC
+ .align 2, 0
+_080F0780: .4byte gTasks
+_080F0784: .4byte gUnknown_840C0A4
+_080F0788: .4byte gSprites
+_080F078C: .4byte gUnknown_840C068
+_080F0790: .4byte sub_80F07BC
+_080F0794: .4byte gMain
+_080F0798: .4byte 0x00000439
+_080F079C:
+ mov r4, r8
+ lsls r0, r4, 2
+ add r0, r8
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0x8]
+ adds r1, 0x1
+ strh r1, [r0, 0x8]
+_080F07AC:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F06A4
+
+ thumb_func_start sub_80F07BC
+sub_80F07BC: @ 80F07BC
+ push {lr}
+ adds r1, r0, 0
+ ldrh r2, [r1, 0x30]
+ movs r3, 0x30
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _080F07D4
+ ldr r0, _080F07D0 @ =sub_80F07DC
+ str r0, [r1, 0x1C]
+ b _080F07D8
+ .align 2, 0
+_080F07D0: .4byte sub_80F07DC
+_080F07D4:
+ subs r0, r2, 0x1
+ strh r0, [r1, 0x30]
+_080F07D8:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F07BC
+
+ thumb_func_start sub_80F07DC
+sub_80F07DC: @ 80F07DC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x2
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x32
+ bne _080F0810
+ adds r0, r4, 0
+ bl sub_80F1198
+_080F0810:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F07DC
+
+ thumb_func_start sub_80F0818
+sub_80F0818: @ 80F0818
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r0, _080F08FC @ =gTasks
+ mov r2, r9
+ lsls r1, r2, 2
+ add r1, r9
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrb r3, [r1, 0xA]
+ str r3, [sp]
+ ldrb r0, [r1, 0xC]
+ str r0, [sp, 0x4]
+ ldrb r2, [r1, 0xE]
+ str r2, [sp, 0x8]
+ ldrb r1, [r1, 0x10]
+ str r1, [sp, 0xC]
+ movs r7, 0
+ ldr r3, _080F0900 @ =gSprites
+ mov r10, r3
+ mov r1, r8
+ lsls r0, r1, 1
+ add r0, r8
+ lsls r0, 3
+ str r0, [sp, 0x10]
+_080F085E:
+ ldr r0, _080F0904 @ =gUnknown_840C0A4
+ ldr r2, [sp, 0x10]
+ adds r0, r2, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F08BE
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r3, r10
+ adds r5, r4, r3
+ ldr r0, _080F0908 @ =gUnknown_840C068
+ add r0, r8
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F090C @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F0910 @ =sub_80F0D5C
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 5
+ strh r0, [r5, 0x2E]
+ movs r0, 0xA
+ strh r0, [r5, 0x36]
+ movs r0, 0x2
+ strh r0, [r5, 0x38]
+ movs r0, 0x1
+ strh r0, [r5, 0x3A]
+_080F08BE:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080F085E
+ ldr r0, _080F0914 @ =gMain
+ ldr r1, _080F0918 @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F08E6
+ ldr r0, _080F0900 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F08E6:
+ mov r0, r9
+ bl DestroyTask
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F08FC: .4byte gTasks
+_080F0900: .4byte gSprites
+_080F0904: .4byte gUnknown_840C0A4
+_080F0908: .4byte gUnknown_840C068
+_080F090C: .4byte gSprites + 0x1C
+_080F0910: .4byte sub_80F0D5C
+_080F0914: .4byte gMain
+_080F0918: .4byte 0x00000439
+ thumb_func_end sub_80F0818
+
+ thumb_func_start sub_80F091C
+sub_80F091C: @ 80F091C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r0, _080F0A00 @ =gTasks
+ mov r2, r9
+ lsls r1, r2, 2
+ add r1, r9
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrb r3, [r1, 0xA]
+ str r3, [sp]
+ ldrb r0, [r1, 0xC]
+ str r0, [sp, 0x4]
+ ldrb r2, [r1, 0xE]
+ str r2, [sp, 0x8]
+ ldrb r1, [r1, 0x10]
+ str r1, [sp, 0xC]
+ movs r7, 0
+ ldr r3, _080F0A04 @ =gSprites
+ mov r10, r3
+ mov r1, r8
+ lsls r0, r1, 1
+ add r0, r8
+ lsls r0, 3
+ str r0, [sp, 0x10]
+_080F0962:
+ ldr r0, _080F0A08 @ =gUnknown_840C0A4
+ ldr r2, [sp, 0x10]
+ adds r0, r2, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F09C2
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r3, r10
+ adds r5, r4, r3
+ ldr r0, _080F0A0C @ =gUnknown_840C068
+ add r0, r8
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F0A10 @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F0A14 @ =sub_80F0D5C
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 5
+ strh r0, [r5, 0x2E]
+ movs r0, 0xA
+ strh r0, [r5, 0x36]
+ movs r0, 0x1
+ strh r0, [r5, 0x38]
+ movs r0, 0x2
+ strh r0, [r5, 0x3A]
+_080F09C2:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080F0962
+ ldr r0, _080F0A18 @ =gMain
+ ldr r1, _080F0A1C @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F09EA
+ ldr r0, _080F0A04 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F09EA:
+ mov r0, r9
+ bl DestroyTask
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0A00: .4byte gTasks
+_080F0A04: .4byte gSprites
+_080F0A08: .4byte gUnknown_840C0A4
+_080F0A0C: .4byte gUnknown_840C068
+_080F0A10: .4byte gSprites + 0x1C
+_080F0A14: .4byte sub_80F0D5C
+_080F0A18: .4byte gMain
+_080F0A1C: .4byte 0x00000439
+ thumb_func_end sub_80F091C
+
+ thumb_func_start sub_80F0A20
+sub_80F0A20: @ 80F0A20
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r1, _080F0B00 @ =gTasks
+ lsls r0, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r0, 0xA]
+ str r2, [sp]
+ ldrb r3, [r0, 0xC]
+ str r3, [sp, 0x4]
+ ldrb r2, [r0, 0xE]
+ str r2, [sp, 0x8]
+ ldrb r0, [r0, 0x10]
+ str r0, [sp, 0xC]
+ movs r7, 0
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 3
+ str r0, [sp, 0x10]
+ ldr r3, _080F0B04 @ =gSprites
+ mov r8, r3
+ ldr r0, _080F0B08 @ =gUnknown_840C068
+ adds r1, r0
+ mov r10, r1
+_080F0A66:
+ ldr r0, _080F0B0C @ =gUnknown_840C0A4
+ ldr r1, [sp, 0x10]
+ adds r0, r1, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F0AC2
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r2, r8
+ adds r5, r4, r2
+ mov r3, r10
+ ldrb r1, [r3]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F0B10 @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F0B14 @ =sub_80F0D5C
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 5
+ strh r0, [r5, 0x2E]
+ movs r0, 0x4
+ strh r0, [r5, 0x36]
+ movs r0, 0x1
+ strh r0, [r5, 0x38]
+ strh r0, [r5, 0x3A]
+_080F0AC2:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080F0A66
+ ldr r0, _080F0B18 @ =gMain
+ ldr r1, _080F0B1C @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F0AEA
+ ldr r0, _080F0B04 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F0AEA:
+ mov r0, r9
+ bl DestroyTask
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0B00: .4byte gTasks
+_080F0B04: .4byte gSprites
+_080F0B08: .4byte gUnknown_840C068
+_080F0B0C: .4byte gUnknown_840C0A4
+_080F0B10: .4byte gSprites + 0x1C
+_080F0B14: .4byte sub_80F0D5C
+_080F0B18: .4byte gMain
+_080F0B1C: .4byte 0x00000439
+ thumb_func_end sub_80F0A20
+
+ thumb_func_start sub_80F0B20
+sub_80F0B20: @ 80F0B20
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r0, _080F0C08 @ =gTasks
+ mov r2, r9
+ lsls r1, r2, 2
+ add r1, r9
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrb r3, [r1, 0xA]
+ str r3, [sp]
+ ldrb r0, [r1, 0xC]
+ str r0, [sp, 0x4]
+ ldrb r2, [r1, 0xE]
+ str r2, [sp, 0x8]
+ ldrb r1, [r1, 0x10]
+ str r1, [sp, 0xC]
+ movs r7, 0
+ ldr r3, _080F0C0C @ =gSprites
+ mov r10, r3
+ mov r1, r8
+ lsls r0, r1, 1
+ add r0, r8
+ lsls r0, 3
+ str r0, [sp, 0x10]
+_080F0B66:
+ ldr r0, _080F0C10 @ =gUnknown_840C0A4
+ ldr r2, [sp, 0x10]
+ adds r0, r2, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F0BCA
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r3, r10
+ adds r5, r4, r3
+ ldr r0, _080F0C14 @ =gUnknown_840C068
+ add r0, r8
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F0C18 @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F0C1C @ =sub_80F0D5C
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 1
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r7
+ strh r0, [r5, 0x2E]
+ movs r0, 0x5
+ strh r0, [r5, 0x36]
+ movs r0, 0x1
+ strh r0, [r5, 0x38]
+ strh r0, [r5, 0x3A]
+_080F0BCA:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x9
+ bls _080F0B66
+ ldr r0, _080F0C20 @ =gMain
+ ldr r1, _080F0C24 @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F0BF2
+ ldr r0, _080F0C0C @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F0BF2:
+ mov r0, r9
+ bl DestroyTask
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0C08: .4byte gTasks
+_080F0C0C: .4byte gSprites
+_080F0C10: .4byte gUnknown_840C0A4
+_080F0C14: .4byte gUnknown_840C068
+_080F0C18: .4byte gSprites + 0x1C
+_080F0C1C: .4byte sub_80F0D5C
+_080F0C20: .4byte gMain
+_080F0C24: .4byte 0x00000439
+ thumb_func_end sub_80F0B20
+
+ thumb_func_start sub_80F0C28
+sub_80F0C28: @ 80F0C28
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x18
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r1, _080F0C54 @ =gTasks
+ lsls r2, r0, 2
+ adds r0, r2, r0
+ lsls r0, 3
+ adds r3, r0, r1
+ ldrh r1, [r3, 0x16]
+ movs r4, 0x16
+ ldrsh r0, [r3, r4]
+ cmp r0, 0
+ beq _080F0C58
+ subs r0, r1, 0x1
+ strh r0, [r3, 0x16]
+ b _080F0D2A
+ .align 2, 0
+_080F0C54: .4byte gTasks
+_080F0C58:
+ ldrh r0, [r3, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r3, 0xA]
+ str r1, [sp]
+ ldrb r4, [r3, 0xC]
+ str r4, [sp, 0x4]
+ ldrb r1, [r3, 0xE]
+ str r1, [sp, 0x8]
+ ldrb r3, [r3, 0x10]
+ str r3, [sp, 0xC]
+ movs r7, 0
+ str r2, [sp, 0x14]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 3
+ str r1, [sp, 0x10]
+ ldr r3, _080F0D3C @ =gSprites
+ mov r9, r3
+ ldr r1, _080F0D40 @ =gUnknown_840C068
+ adds r0, r1
+ mov r10, r0
+_080F0C84:
+ ldr r0, _080F0D44 @ =gUnknown_840C0A4
+ ldr r4, [sp, 0x10]
+ adds r0, r4, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F0CE0
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r0, r9
+ adds r5, r4, r0
+ mov r3, r10
+ ldrb r1, [r3]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F0D48 @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F0D4C @ =sub_80F0D5C
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 5
+ strh r0, [r5, 0x2E]
+ movs r0, 0x8
+ strh r0, [r5, 0x36]
+ movs r0, 0x2
+ strh r0, [r5, 0x38]
+ strh r0, [r5, 0x3A]
+_080F0CE0:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080F0C84
+ ldr r0, _080F0D50 @ =gTasks
+ ldr r1, [sp, 0x14]
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0x8
+ strh r0, [r1, 0x16]
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ lsls r0, 16
+ asrs r2, r0, 16
+ cmp r2, 0x2
+ bne _080F0D2A
+ ldr r0, _080F0D54 @ =gMain
+ ldr r4, _080F0D58 @ =0x00000439
+ adds r0, r4
+ ldrb r1, [r0]
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080F0D24
+ ldr r0, _080F0D3C @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F0D24:
+ mov r0, r8
+ bl DestroyTask
+_080F0D2A:
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0D3C: .4byte gSprites
+_080F0D40: .4byte gUnknown_840C068
+_080F0D44: .4byte gUnknown_840C0A4
+_080F0D48: .4byte gSprites + 0x1C
+_080F0D4C: .4byte sub_80F0D5C
+_080F0D50: .4byte gTasks
+_080F0D54: .4byte gMain
+_080F0D58: .4byte 0x00000439
+ thumb_func_end sub_80F0C28
+
+ thumb_func_start sub_80F0D5C
+sub_80F0D5C: @ 80F0D5C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r2, 0x32
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x2E]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x38]
+ ldrh r2, [r4, 0x30]
+ adds r0, r2
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x3A]
+ ldrh r1, [r4, 0x32]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x33
+ bne _080F0DAC
+ adds r0, r4, 0
+ bl sub_80F1198
+_080F0DAC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F0D5C
+
+ thumb_func_start sub_80F0DB4
+sub_80F0DB4: @ 80F0DB4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r1, _080F0E90 @ =gTasks
+ lsls r0, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r0, 0xA]
+ str r2, [sp]
+ ldrb r3, [r0, 0xC]
+ str r3, [sp, 0x4]
+ ldrb r2, [r0, 0xE]
+ str r2, [sp, 0x8]
+ ldrb r0, [r0, 0x10]
+ str r0, [sp, 0xC]
+ movs r7, 0
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 3
+ str r0, [sp, 0x10]
+ ldr r3, _080F0E94 @ =gSprites
+ mov r8, r3
+ ldr r0, _080F0E98 @ =gUnknown_840C068
+ adds r1, r0
+ mov r10, r1
+_080F0DFA:
+ ldr r0, _080F0E9C @ =gUnknown_840C0A4
+ ldr r1, [sp, 0x10]
+ adds r0, r1, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F0E52
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r2, r8
+ adds r5, r4, r2
+ mov r3, r10
+ ldrb r1, [r3]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F0EA0 @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F0EA4 @ =sub_80F0EB0
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 2
+ adds r0, r7
+ strh r0, [r5, 0x2E]
+_080F0E52:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0xB
+ bls _080F0DFA
+ ldr r0, _080F0EA8 @ =gMain
+ ldr r1, _080F0EAC @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F0E7A
+ ldr r0, _080F0E94 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F0E7A:
+ mov r0, r9
+ bl DestroyTask
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F0E90: .4byte gTasks
+_080F0E94: .4byte gSprites
+_080F0E98: .4byte gUnknown_840C068
+_080F0E9C: .4byte gUnknown_840C0A4
+_080F0EA0: .4byte gSprites + 0x1C
+_080F0EA4: .4byte sub_80F0EB0
+_080F0EA8: .4byte gMain
+_080F0EAC: .4byte 0x00000439
+ thumb_func_end sub_80F0DB4
+
+ thumb_func_start sub_80F0EB0
+sub_80F0EB0: @ 80F0EB0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ bl Sin
+ strh r0, [r5, 0x24]
+ movs r0, 0x2E
+ ldrsh r4, [r5, r0]
+ movs r2, 0x32
+ ldrsh r1, [r5, r2]
+ adds r0, r4, 0
+ bl Sin
+ adds r1, r0, 0
+ lsls r1, 16
+ asrs r1, 16
+ adds r0, r4, 0
+ bl Cos
+ strh r0, [r5, 0x26]
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x6
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x1
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x33
+ bne _080F0F08
+ adds r0, r5, 0
+ bl sub_80F1198
+_080F0F08:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F0EB0
+
+ thumb_func_start sub_80F0F10
+sub_80F0F10: @ 80F0F10
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x18
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ ldr r0, _080F0FC4 @ =gTasks
+ ldr r2, [sp]
+ lsls r1, r2, 2
+ adds r1, r2
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldrb r3, [r1, 0xA]
+ str r3, [sp, 0x4]
+ ldrb r0, [r1, 0xC]
+ str r0, [sp, 0x8]
+ ldrb r2, [r1, 0xE]
+ str r2, [sp, 0xC]
+ ldrb r1, [r1, 0x10]
+ str r1, [sp, 0x10]
+ movs r3, 0
+ mov r8, r3
+ mov r1, r9
+ lsls r0, r1, 1
+ add r0, r9
+ lsls r0, 3
+ str r0, [sp, 0x14]
+_080F0F54:
+ movs r7, 0
+ movs r2, 0x1
+ add r2, r8
+ mov r10, r2
+_080F0F5C:
+ ldr r0, _080F0FC8 @ =gUnknown_840C0A4
+ ldr r3, [sp, 0x14]
+ adds r0, r3, r0
+ ldr r1, [sp, 0x4]
+ ldr r2, [sp, 0x8]
+ ldr r3, [sp, 0x10]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F0FE4
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ ldr r0, _080F0FCC @ =gSprites
+ adds r5, r4, r0
+ ldr r0, _080F0FD0 @ =gUnknown_840C068
+ add r0, r9
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r1, _080F0FD4 @ =gSprites + 0x1C
+ adds r4, r1
+ ldr r0, _080F0FD8 @ =sub_80F0D5C
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r1, [sp, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r2, r3, 0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 5
+ strh r0, [r5, 0x2E]
+ movs r0, 0x8
+ strh r0, [r5, 0x36]
+ mov r0, r8
+ cmp r0, 0
+ bne _080F0FDC
+ movs r0, 0x2
+ strh r0, [r5, 0x38]
+ movs r0, 0x1
+ b _080F0FE2
+ .align 2, 0
+_080F0FC4: .4byte gTasks
+_080F0FC8: .4byte gUnknown_840C0A4
+_080F0FCC: .4byte gSprites
+_080F0FD0: .4byte gUnknown_840C068
+_080F0FD4: .4byte gSprites + 0x1C
+_080F0FD8: .4byte sub_80F0D5C
+_080F0FDC:
+ movs r0, 0x1
+ strh r0, [r5, 0x38]
+ movs r0, 0x2
+_080F0FE2:
+ strh r0, [r5, 0x3A]
+_080F0FE4:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080F0F5C
+ mov r1, r10
+ lsls r0, r1, 24
+ lsrs r0, 24
+ mov r8, r0
+ cmp r0, 0x1
+ bls _080F0F54
+ ldr r0, _080F1030 @ =gMain
+ ldr r2, _080F1034 @ =0x00000439
+ adds r0, r2
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F1018
+ ldr r0, _080F1038 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F1018:
+ ldr r0, [sp]
+ bl DestroyTask
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1030: .4byte gMain
+_080F1034: .4byte 0x00000439
+_080F1038: .4byte gSprites
+ thumb_func_end sub_80F0F10
+
+ thumb_func_start sub_80F103C
+sub_80F103C: @ 80F103C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r1, _080F1114 @ =gTasks
+ lsls r0, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r2, [r0, 0xA]
+ str r2, [sp]
+ ldrb r3, [r0, 0xC]
+ str r3, [sp, 0x4]
+ ldrb r2, [r0, 0xE]
+ str r2, [sp, 0x8]
+ ldrb r0, [r0, 0x10]
+ str r0, [sp, 0xC]
+ movs r7, 0
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 3
+ str r0, [sp, 0x10]
+ ldr r3, _080F1118 @ =gSprites
+ mov r8, r3
+ ldr r0, _080F111C @ =gUnknown_840C068
+ adds r1, r0
+ mov r10, r1
+_080F1082:
+ ldr r0, _080F1120 @ =gUnknown_840C0A4
+ ldr r1, [sp, 0x10]
+ adds r0, r1, r0
+ ldr r1, [sp]
+ ldr r2, [sp, 0x4]
+ ldr r3, [sp, 0xC]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x40
+ beq _080F10D4
+ bl sub_80F0674
+ lsls r4, r6, 4
+ adds r4, r6
+ lsls r4, 2
+ mov r2, r8
+ adds r5, r4, r2
+ mov r3, r10
+ ldrb r1, [r3]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldr r0, _080F1124 @ =gSprites + 0x1C
+ adds r4, r0
+ ldr r0, _080F1128 @ =sub_80F1134
+ str r0, [r4]
+ movs r0, 0x3
+ ldr r2, [sp, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r0, [r5, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ lsls r0, r7, 5
+ strh r0, [r5, 0x2E]
+_080F10D4:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x7
+ bls _080F1082
+ ldr r0, _080F112C @ =gMain
+ ldr r1, _080F1130 @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F10FC
+ ldr r0, _080F1118 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+_080F10FC:
+ mov r0, r9
+ bl DestroyTask
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1114: .4byte gTasks
+_080F1118: .4byte gSprites
+_080F111C: .4byte gUnknown_840C068
+_080F1120: .4byte gUnknown_840C0A4
+_080F1124: .4byte gSprites + 0x1C
+_080F1128: .4byte sub_80F1134
+_080F112C: .4byte gMain
+_080F1130: .4byte 0x00000439
+ thumb_func_end sub_80F103C
+
+ thumb_func_start sub_80F1134
+sub_80F1134: @ 80F1134
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ bl Sin
+ strh r0, [r5, 0x24]
+ movs r0, 0x2E
+ ldrsh r4, [r5, r0]
+ ldrh r1, [r5, 0x2E]
+ movs r0, 0x3F
+ ands r0, r1
+ movs r2, 0x32
+ ldrsh r1, [r5, r2]
+ bl Sin
+ adds r1, r0, 0
+ lsls r1, 16
+ asrs r1, 16
+ adds r0, r4, 0
+ bl Cos
+ strh r0, [r5, 0x26]
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0xA
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x1
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x33
+ bne _080F1190
+ adds r0, r5, 0
+ bl sub_80F1198
+_080F1190:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F1134
+
+ thumb_func_start sub_80F1198
+sub_80F1198: @ 80F1198
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ ldr r0, _080F11BC @ =gMain
+ ldr r1, _080F11C0 @ =0x00000439
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080F11C4
+ movs r1, 0x3C
+ ldrsh r0, [r7, r1]
+ cmp r0, 0x1
+ bne _080F11F6
+ adds r0, r7, 0
+ bl DestroySpriteAndFreeResources
+ b _080F1212
+ .align 2, 0
+_080F11BC: .4byte gMain
+_080F11C0: .4byte 0x00000439
+_080F11C4:
+ ldr r2, _080F1200 @ =gUnknown_2024018
+ ldr r0, [r2]
+ ldr r1, [r0, 0x8]
+ ldrb r0, [r1, 0xA]
+ subs r0, 0x1
+ strb r0, [r1, 0xA]
+ ldr r0, [r2]
+ ldr r0, [r0, 0x8]
+ ldrb r0, [r0, 0xA]
+ cmp r0, 0
+ bne _080F120C
+ movs r6, 0
+ ldr r5, _080F1204 @ =gUnknown_840BF48
+ ldr r4, _080F1208 @ =gUnknown_840BFA8
+_080F11E0:
+ ldrh r0, [r5, 0x6]
+ bl FreeSpriteTilesByTag
+ ldrh r0, [r4, 0x4]
+ bl FreeSpritePaletteByTag
+ adds r5, 0x8
+ adds r4, 0x8
+ adds r6, 0x1
+ cmp r6, 0xB
+ ble _080F11E0
+_080F11F6:
+ adds r0, r7, 0
+ bl DestroySprite
+ b _080F1212
+ .align 2, 0
+_080F1200: .4byte gUnknown_2024018
+_080F1204: .4byte gUnknown_840BF48
+_080F1208: .4byte gUnknown_840BFA8
+_080F120C:
+ adds r0, r7, 0
+ bl DestroySprite
+_080F1212:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F1198
+
+ thumb_func_start LaunchBallFadeMonTask
+LaunchBallFadeMonTask: @ 80F1218
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ adds r4, r0, 0
+ mov r9, r2
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r1, 24
+ lsrs r6, r1, 24
+ lsls r3, 24
+ lsrs r7, r3, 24
+ ldr r0, _080F127C @ =sub_80F12E0
+ movs r1, 0x5
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r1, _080F1280 @ =gTasks
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ adds r5, r0, r1
+ strh r7, [r5, 0x26]
+ strh r6, [r5, 0xE]
+ mov r0, r9
+ strh r0, [r5, 0x1C]
+ mov r1, r9
+ lsrs r0, r1, 16
+ strh r0, [r5, 0x1E]
+ cmp r4, 0
+ bne _080F1288
+ lsls r0, r6, 20
+ movs r2, 0x80
+ lsls r2, 17
+ adds r0, r2
+ lsrs r0, 16
+ ldr r2, _080F1284 @ =gUnknown_840C1C4
+ lsls r1, r7, 1
+ adds r1, r2
+ ldrh r3, [r1]
+ movs r1, 0x10
+ movs r2, 0
+ bl BlendPalette
+ movs r0, 0x1
+ strh r0, [r5, 0xA]
+ b _080F12AE
+ .align 2, 0
+_080F127C: .4byte sub_80F12E0
+_080F1280: .4byte gTasks
+_080F1284: .4byte gUnknown_840C1C4
+_080F1288:
+ lsls r0, r6, 20
+ movs r1, 0x80
+ lsls r1, 17
+ adds r0, r1
+ lsrs r0, 16
+ ldr r2, _080F12D0 @ =gUnknown_840C1C4
+ lsls r1, r7, 1
+ adds r1, r2
+ ldrh r3, [r1]
+ movs r1, 0x10
+ movs r2, 0x10
+ bl BlendPalette
+ movs r0, 0x10
+ strh r0, [r5, 0x8]
+ ldr r0, _080F12D4 @ =0x0000ffff
+ strh r0, [r5, 0xA]
+ ldr r0, _080F12D8 @ =sub_80F1370
+ str r0, [r5]
+_080F12AE:
+ ldr r0, _080F12DC @ =0x00007fff
+ str r0, [sp]
+ mov r0, r9
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ mov r0, r8
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080F12D0: .4byte gUnknown_840C1C4
+_080F12D4: .4byte 0x0000ffff
+_080F12D8: .4byte sub_80F1370
+_080F12DC: .4byte 0x00007fff
+ thumb_func_end LaunchBallFadeMonTask
+
+ thumb_func_start sub_80F12E0
+sub_80F12E0: @ 80F12E0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080F1330 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r2, 0xC
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x10
+ bgt _080F1338
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ lsls r0, 20
+ movs r2, 0x80
+ lsls r2, 17
+ adds r0, r2
+ lsrs r0, 16
+ ldrb r2, [r4, 0x8]
+ ldr r3, _080F1334 @ =gUnknown_840C1C4
+ lsls r1, 1
+ adds r1, r3
+ ldrh r3, [r1]
+ movs r1, 0x10
+ bl BlendPalette
+ ldrh r0, [r4, 0xA]
+ ldrh r1, [r4, 0x8]
+ adds r0, r1
+ strh r0, [r4, 0x8]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ b _080F1360
+ .align 2, 0
+_080F1330: .4byte gTasks
+_080F1334: .4byte gUnknown_840C1C4
+_080F1338:
+ ldr r0, _080F1368 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080F1360
+ ldrh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ lsls r1, 16
+ orrs r0, r1
+ ldr r1, _080F136C @ =0x00007fff
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ adds r0, r5, 0
+ bl DestroyTask
+_080F1360:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1368: .4byte gPaletteFade
+_080F136C: .4byte 0x00007fff
+ thumb_func_end sub_80F12E0
+
+ thumb_func_start sub_80F1370
+sub_80F1370: @ 80F1370
+ push {r4,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080F13B0 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080F13A8
+ ldr r0, _080F13B4 @ =gTasks
+ lsls r4, r2, 2
+ adds r4, r2
+ lsls r4, 3
+ adds r4, r0
+ ldrh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ lsls r1, 16
+ orrs r0, r1
+ ldr r1, _080F13B8 @ =0x00007fff
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ ldr r0, _080F13BC @ =sub_80F13C0
+ str r0, [r4]
+_080F13A8:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F13B0: .4byte gPaletteFade
+_080F13B4: .4byte gTasks
+_080F13B8: .4byte 0x00007fff
+_080F13BC: .4byte sub_80F13C0
+ thumb_func_end sub_80F1370
+
+ thumb_func_start sub_80F13C0
+sub_80F13C0: @ 80F13C0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _080F140C @ =gTasks
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x10
+ bgt _080F1414
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ lsls r0, 20
+ movs r3, 0x80
+ lsls r3, 17
+ adds r0, r3
+ lsrs r0, 16
+ ldrb r2, [r4, 0x8]
+ ldr r3, _080F1410 @ =gUnknown_840C1C4
+ lsls r1, 1
+ adds r1, r3
+ ldrh r3, [r1]
+ movs r1, 0x10
+ bl BlendPalette
+ ldrh r0, [r4, 0xA]
+ ldrh r1, [r4, 0x8]
+ adds r0, r1
+ strh r0, [r4, 0x8]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ b _080F141A
+ .align 2, 0
+_080F140C: .4byte gTasks
+_080F1410: .4byte gUnknown_840C1C4
+_080F1414:
+ adds r0, r2, 0
+ bl DestroyTask
+_080F141A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F13C0
+
+ thumb_func_start sub_80F1420
+sub_80F1420: @ 80F1420
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r0, 0
+ mov r8, r0
+ ldr r0, _080F1454 @ =gBattlerSpriteIds
+ ldr r3, _080F1458 @ =gBattleAnimAttacker
+ ldrb r2, [r3]
+ adds r0, r2, r0
+ ldrb r6, [r0]
+ ldr r1, _080F145C @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r5, r0, r1
+ movs r1, 0x1C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080F14F8
+ cmp r0, 0x1
+ bgt _080F1460
+ cmp r0, 0
+ beq _080F1466
+ b _080F15BA
+ .align 2, 0
+_080F1454: .4byte gBattlerSpriteIds
+_080F1458: .4byte gBattleAnimAttacker
+_080F145C: .4byte gTasks
+_080F1460:
+ cmp r0, 0x2
+ beq _080F150A
+ b _080F15BA
+_080F1466:
+ ldr r0, _080F14A0 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r5, 0x1E]
+ movs r2, 0xA0
+ lsls r2, 3
+ adds r0, r2, 0
+ ldrh r4, [r5, 0x8]
+ adds r0, r4
+ strh r0, [r5, 0x8]
+ ldrb r0, [r3]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080F14A8
+ ldr r2, _080F14A4 @ =gSprites
+ lsls r3, r6, 4
+ adds r1, r3, r6
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r5, 0x8]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r4, [r1, 0x24]
+ adds r0, r4
+ strh r0, [r1, 0x24]
+ adds r4, r3, 0
+ b _080F14C0
+ .align 2, 0
+_080F14A0: .4byte gBattleAnimArgs
+_080F14A4: .4byte gSprites
+_080F14A8:
+ ldr r3, _080F14F0 @ =gSprites
+ lsls r4, r6, 4
+ adds r2, r4, r6
+ lsls r2, 2
+ adds r2, r3
+ ldrh r1, [r5, 0x8]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ adds r2, r3, 0
+_080F14C0:
+ ldr r1, _080F14F4 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r3, r0, r1
+ ldrb r0, [r3, 0x8]
+ strh r0, [r3, 0x8]
+ adds r0, r4, r6
+ lsls r0, 2
+ adds r0, r2
+ movs r2, 0x20
+ ldrsh r1, [r0, r2]
+ movs r4, 0x24
+ ldrsh r0, [r0, r4]
+ adds r1, r0
+ adds r1, 0x20
+ movs r0, 0x98
+ lsls r0, 1
+ cmp r1, r0
+ bls _080F15BA
+ ldrh r0, [r3, 0x1C]
+ adds r0, 0x1
+ strh r0, [r3, 0x1C]
+ b _080F15BA
+ .align 2, 0
+_080F14F0: .4byte gSprites
+_080F14F4: .4byte gTasks
+_080F14F8:
+ ldrb r1, [r5, 0x1E]
+ adds r0, r2, 0
+ adds r2, r6, 0
+ bl LoadBattleMonGfxAndAnimate
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x1
+ strh r0, [r5, 0x1C]
+ b _080F15BA
+_080F150A:
+ movs r1, 0xA0
+ lsls r1, 3
+ adds r0, r1, 0
+ ldrh r2, [r5, 0x8]
+ adds r0, r2
+ strh r0, [r5, 0x8]
+ ldrb r0, [r3]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080F1540
+ ldr r0, _080F153C @ =gSprites
+ lsls r3, r6, 4
+ adds r2, r3, r6
+ lsls r2, 2
+ adds r2, r0
+ ldrh r1, [r5, 0x8]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ adds r4, r3, 0
+ b _080F1558
+ .align 2, 0
+_080F153C: .4byte gSprites
+_080F1540:
+ ldr r0, _080F158C @ =gSprites
+ lsls r2, r6, 4
+ adds r1, r2, r6
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r5, 0x8]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r3, [r1, 0x24]
+ adds r0, r3
+ strh r0, [r1, 0x24]
+ adds r4, r2, 0
+_080F1558:
+ ldr r1, _080F1590 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r1
+ ldrb r1, [r0, 0x8]
+ strh r1, [r0, 0x8]
+ ldr r0, _080F1594 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0
+ beq _080F1598
+ ldr r0, _080F158C @ =gSprites
+ adds r1, r4, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r4, 0x24
+ ldrsh r0, [r1, r4]
+ cmp r0, 0
+ bgt _080F15AE
+ movs r0, 0
+ strh r0, [r1, 0x24]
+ b _080F15B4
+ .align 2, 0
+_080F158C: .4byte gSprites
+_080F1590: .4byte gTasks
+_080F1594: .4byte gBattleAnimAttacker
+_080F1598:
+ ldr r0, _080F15C4 @ =gSprites
+ adds r1, r4, r6
+ lsls r1, 2
+ adds r1, r0
+ movs r3, 0x24
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ blt _080F15AE
+ strh r2, [r1, 0x24]
+ movs r4, 0x1
+ mov r8, r4
+_080F15AE:
+ mov r0, r8
+ cmp r0, 0
+ beq _080F15BA
+_080F15B4:
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080F15BA:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F15C4: .4byte gSprites
+ thumb_func_end sub_80F1420
+
+ thumb_func_start sub_80F15C8
+sub_80F15C8: @ 80F15C8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080F15EC @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080F1644
+ cmp r0, 0x1
+ bgt _080F15F0
+ cmp r0, 0
+ beq _080F15F6
+ b _080F16B4
+ .align 2, 0
+_080F15EC: .4byte gTasks
+_080F15F0:
+ cmp r0, 0x2
+ beq _080F167E
+ b _080F16B4
+_080F15F6:
+ ldr r0, _080F1610 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080F1618
+ ldr r1, _080F1614 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ b _080F1620
+ .align 2, 0
+_080F1610: .4byte gBattleAnimAttacker
+_080F1614: .4byte 0x00003f42
+_080F1618:
+ ldr r1, _080F163C @ =0x00003f44
+ movs r0, 0x50
+ bl SetGpuReg
+_080F1620:
+ movs r0, 0x52
+ movs r1, 0x10
+ bl SetGpuReg
+ ldr r0, _080F1640 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x26]
+ adds r0, 0x1
+ strh r0, [r1, 0x26]
+ b _080F16B4
+ .align 2, 0
+_080F163C: .4byte 0x00003f44
+_080F1640: .4byte gTasks
+_080F1644:
+ ldrh r0, [r4, 0xA]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080F16B4
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r2, [r4, 0x8]
+ adds r2, 0x1
+ strh r2, [r4, 0x8]
+ lsls r1, r2, 8
+ movs r0, 0x10
+ subs r0, r2
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080F16B4
+ ldrh r0, [r4, 0x26]
+ adds r0, 0x1
+ strh r0, [r4, 0x26]
+ b _080F16B4
+_080F167E:
+ ldr r1, _080F16BC @ =gBattlerSpriteIds
+ ldr r4, _080F16C0 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r1, [r0]
+ ldr r2, _080F16C4 @ =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x4]
+ lsls r1, 22
+ lsrs r1, 17
+ ldr r0, _080F16C8 @ =0x06010000
+ adds r1, r0
+ movs r2, 0x80
+ lsls r2, 4
+ movs r0, 0
+ movs r3, 0x1
+ bl RequestDma3Fill
+ ldrb r0, [r4]
+ bl ClearBehindSubstituteBit
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080F16B4:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F16BC: .4byte gBattlerSpriteIds
+_080F16C0: .4byte gBattleAnimAttacker
+_080F16C4: .4byte gSprites
+_080F16C8: .4byte 0x06010000
+ thumb_func_end sub_80F15C8
+
+ thumb_func_start sub_80F16CC
+sub_80F16CC: @ 80F16CC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _080F16F4 @ =gBattleAnimArgs
+ ldr r1, _080F16F8 @ =gUnknown_2024018
+ ldr r2, [r1]
+ ldr r1, _080F16FC @ =gBattleAnimAttacker
+ ldrb r1, [r1]
+ ldr r2, [r2]
+ lsls r1, 2
+ adds r1, r2
+ ldr r1, [r1]
+ lsls r1, 29
+ lsrs r1, 31
+ strh r1, [r3, 0xE]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F16F4: .4byte gBattleAnimArgs
+_080F16F8: .4byte gUnknown_2024018
+_080F16FC: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80F16CC
+
+ thumb_func_start sub_80F1700
+sub_80F1700: @ 80F1700
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080F1718 @ =gBattleAnimTarget
+ ldr r1, _080F171C @ =gUnknown_2023D6E
+ ldrb r1, [r1]
+ strb r1, [r2]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1718: .4byte gBattleAnimTarget
+_080F171C: .4byte gUnknown_2023D6E
+ thumb_func_end sub_80F1700
+
+ thumb_func_start sub_80F1720
+sub_80F1720: @ 80F1720
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r1, 0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r0, 0
+ mov r8, r0
+ ldr r0, _080F17DC @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r2, 0x80
+ orrs r1, r2
+ strb r1, [r0]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl GetMonData
+ adds r5, r0, 0
+ adds r0, r4, 0
+ movs r1, 0
+ bl GetMonData
+ adds r4, r0, 0
+ adds r0, r6, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080F17F8
+ lsrs r0, r5, 16
+ ldr r7, _080F17E0 @ =0x0000ffff
+ ands r5, r7
+ eors r0, r5
+ lsrs r1, r4, 16
+ eors r0, r1
+ ands r4, r7
+ eors r0, r4
+ cmp r0, 0x7
+ bhi _080F177E
+ movs r0, 0x1
+ mov r8, r0
+_080F177E:
+ mov r0, r8
+ cmp r0, 0
+ beq _080F17F8
+ ldr r0, _080F17E4 @ =0x000027f9
+ bl GetSpriteTileStartByTag
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, r7
+ bne _080F179E
+ ldr r0, _080F17E8 @ =gUnknown_83AD350
+ bl LoadCompressedSpriteSheetUsingHeap
+ ldr r0, _080F17EC @ =gUnknown_83ADC58
+ bl LoadCompressedSpritePaletteUsingHeap
+_080F179E:
+ ldr r5, _080F17F0 @ =sub_80F181C
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl CreateTask
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _080F17F4 @ =gTasks
+ lsls r2, r4, 2
+ adds r2, r4
+ lsls r2, 3
+ adds r2, r3
+ movs r4, 0
+ strh r6, [r2, 0x8]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r3
+ strh r6, [r1, 0x8]
+ strh r4, [r2, 0xA]
+ movs r0, 0x1
+ strh r0, [r1, 0xA]
+ b _080F180E
+ .align 2, 0
+_080F17DC: .4byte gUnknown_2024018
+_080F17E0: .4byte 0x0000ffff
+_080F17E4: .4byte 0x000027f9
+_080F17E8: .4byte gUnknown_83AD350
+_080F17EC: .4byte gUnknown_83ADC58
+_080F17F0: .4byte sub_80F181C
+_080F17F4: .4byte gTasks
+_080F17F8:
+ ldr r0, _080F1818 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x1]
+ movs r2, 0x1
+ orrs r1, r2
+ strb r1, [r0, 0x1]
+_080F180E:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1818: .4byte gUnknown_2024018
+ thumb_func_end sub_80F1720
+
+ thumb_func_start sub_80F181C
+sub_80F181C: @ 80F181C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080F1844 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r1, [r4, 0x22]
+ movs r2, 0x22
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x3B
+ bgt _080F1848
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x22]
+ b _080F19C0
+ .align 2, 0
+_080F1844: .4byte gTasks
+_080F1848:
+ ldr r0, _080F189C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrb r0, [r0, 0xA]
+ cmp r0, 0
+ beq _080F1856
+ b _080F19C0
+_080F1856:
+ ldrh r0, [r4, 0x1C]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x1C]
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r0
+ cmp r1, 0
+ beq _080F186A
+ b _080F19C0
+_080F186A:
+ ldrb r0, [r4, 0x8]
+ mov r8, r0
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r5, r0, 24
+ mov r0, r8
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r2, r0, 24
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080F18A4
+ ldr r0, _080F18A0 @ =gUnknown_83FF168
+ adds r1, r5, 0
+ movs r3, 0x5
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r5, r0, 24
+ b _080F1906
+ .align 2, 0
+_080F189C: .4byte gUnknown_2024018
+_080F18A0: .4byte gUnknown_83FF168
+_080F18A4:
+ cmp r0, 0
+ blt _080F18D8
+ cmp r0, 0x3
+ bgt _080F18D8
+ ldr r0, _080F18D0 @ =gUnknown_83FF180
+ adds r1, r5, 0
+ movs r3, 0x5
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _080F18D4 @ =gSprites
+ lsls r2, r5, 4
+ adds r2, r5
+ lsls r2, 2
+ adds r2, r0
+ ldrh r3, [r2, 0x4]
+ lsls r1, r3, 22
+ lsrs r1, 22
+ adds r1, 0x4
+ b _080F18F8
+ .align 2, 0
+_080F18D0: .4byte gUnknown_83FF180
+_080F18D4: .4byte gSprites
+_080F18D8:
+ ldr r0, _080F1930 @ =gUnknown_83FF180
+ adds r1, r5, 0
+ movs r3, 0x5
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _080F1934 @ =gSprites
+ lsls r2, r5, 4
+ adds r2, r5
+ lsls r2, 2
+ adds r2, r0
+ ldrh r3, [r2, 0x4]
+ lsls r1, r3, 22
+ lsrs r1, 22
+ adds r1, 0x5
+_080F18F8:
+ ldr r4, _080F1938 @ =0x000003ff
+ adds r0, r4, 0
+ ands r1, r0
+ ldr r0, _080F193C @ =0xfffffc00
+ ands r0, r3
+ orrs r0, r1
+ strh r0, [r2, 0x4]
+_080F1906:
+ ldr r2, _080F1940 @ =gTasks
+ lsls r1, r7, 2
+ adds r0, r1, r7
+ lsls r0, 3
+ adds r6, r0, r2
+ movs r2, 0xA
+ ldrsh r0, [r6, r2]
+ mov r9, r1
+ cmp r0, 0
+ bne _080F1948
+ ldr r1, _080F1934 @ =gSprites
+ lsls r2, r5, 4
+ adds r0, r2, r5
+ lsls r0, 2
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, _080F1944 @ =sub_80F1A2C
+ str r1, [r0]
+ adds r4, r2, 0
+ b _080F1990
+ .align 2, 0
+_080F1930: .4byte gUnknown_83FF180
+_080F1934: .4byte gSprites
+_080F1938: .4byte 0x000003ff
+_080F193C: .4byte 0xfffffc00
+_080F1940: .4byte gTasks
+_080F1944: .4byte sub_80F1A2C
+_080F1948:
+ ldr r3, _080F19CC @ =gSprites
+ lsls r4, r5, 4
+ adds r1, r4, r5
+ lsls r1, 2
+ adds r0, r3, 0
+ adds r0, 0x1C
+ adds r0, r1, r0
+ ldr r2, _080F19D0 @ =sub_80F1A80
+ str r2, [r0]
+ adds r1, r3
+ ldr r0, _080F19D4 @ =0x0000ffe0
+ strh r0, [r1, 0x24]
+ movs r0, 0x20
+ strh r0, [r1, 0x26]
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ movs r1, 0x1E
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080F1990
+ mov r0, r8
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r1, 0x3F
+ cmp r0, 0
+ bne _080F1986
+ movs r1, 0xC0
+_080F1986:
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x5F
+ bl PlaySE12WithPanning
+_080F1990:
+ ldr r1, _080F19CC @ =gSprites
+ adds r0, r4, r5
+ lsls r0, 2
+ adds r0, r1
+ strh r7, [r0, 0x2E]
+ ldr r1, _080F19D8 @ =gTasks
+ mov r2, r9
+ adds r0, r2, r7
+ lsls r0, 3
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x1E]
+ adds r0, 0x1
+ strh r0, [r1, 0x1E]
+ cmp r5, 0x40
+ beq _080F19B4
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+_080F19B4:
+ movs r4, 0x1E
+ ldrsh r0, [r1, r4]
+ cmp r0, 0x5
+ bne _080F19C0
+ ldr r0, _080F19DC @ =sub_80F19E0
+ str r0, [r1]
+_080F19C0:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F19CC: .4byte gSprites
+_080F19D0: .4byte sub_80F1A80
+_080F19D4: .4byte 0x0000ffe0
+_080F19D8: .4byte gTasks
+_080F19DC: .4byte sub_80F19E0
+ thumb_func_end sub_80F181C
+
+ thumb_func_start sub_80F19E0
+sub_80F19E0: @ 80F19E0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r0, 0
+ ldr r1, _080F1A24 @ =gTasks
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ adds r1, r0, r1
+ movs r2, 0x20
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080F1A20
+ movs r2, 0xA
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x1
+ bne _080F1A1A
+ ldrb r1, [r1, 0x8]
+ ldr r0, _080F1A28 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r2, [r0, 0x4]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0, 0x1]
+ movs r2, 0x1
+ orrs r1, r2
+ strb r1, [r0, 0x1]
+_080F1A1A:
+ adds r0, r3, 0
+ bl DestroyTask
+_080F1A20:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1A24: .4byte gTasks
+_080F1A28: .4byte gUnknown_2024018
+ thumb_func_end sub_80F19E0
+
+ thumb_func_start sub_80F1A2C
+sub_80F1A2C: @ 80F1A2C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x18
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x18
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0xC
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ ble _080F1A76
+ ldr r2, _080F1A7C @ =gTasks
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0x20]
+ subs r1, 0x1
+ strh r1, [r0, 0x20]
+ adds r0, r4, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080F1A76:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1A7C: .4byte gTasks
+ thumb_func_end sub_80F1A2C
+
+ thumb_func_start sub_80F1A80
+sub_80F1A80: @ 80F1A80
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x30]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x3
+ bgt _080F1A94
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ b _080F1AD6
+_080F1A94:
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldrh r1, [r4, 0x24]
+ adds r1, 0x5
+ strh r1, [r4, 0x24]
+ ldrh r0, [r4, 0x26]
+ subs r0, 0x5
+ strh r0, [r4, 0x26]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x20
+ ble _080F1AD6
+ ldr r2, _080F1ADC @ =gTasks
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0x20]
+ subs r1, 0x1
+ strh r1, [r0, 0x20]
+ adds r0, r4, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080F1AD6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1ADC: .4byte gTasks
+ thumb_func_end sub_80F1A80
+
+ thumb_func_start sub_80F1AE0
+sub_80F1AE0: @ 80F1AE0
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080F1B08 @ =gUnknown_83AD470
+ bl LoadCompressedSpriteSheetUsingHeap
+ ldr r0, _080F1B0C @ =gUnknown_83ADD78
+ bl LoadCompressedSpritePaletteUsingHeap
+ ldr r0, _080F1B10 @ =0x0000281d
+ bl IndexOfSpritePaletteTag
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1B08: .4byte gUnknown_83AD470
+_080F1B0C: .4byte gUnknown_83ADD78
+_080F1B10: .4byte 0x0000281d
+ thumb_func_end sub_80F1AE0
+
+ thumb_func_start sub_80F1B14
+sub_80F1B14: @ 80F1B14
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r5, _080F1B38 @ =0x0000281d
+ adds r0, r5, 0
+ bl FreeSpriteTilesByTag
+ adds r0, r5, 0
+ bl FreeSpritePaletteByTag
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1B38: .4byte 0x0000281d
+ thumb_func_end sub_80F1B14
+
+ thumb_func_start sub_80F1B3C
+sub_80F1B3C: @ 80F1B3C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_8075160
+ movs r0, 0x1E
+ strh r0, [r4, 0x2E]
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ ldr r5, _080F1BB0 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r5, 0x4]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r5, [r5, 0x6]
+ adds r0, r5
+ strh r0, [r4, 0x36]
+ ldr r0, _080F1BB4 @ =0x0000ffe0
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_8075068
+ ldr r2, _080F1BB8 @ =gSprites
+ ldr r1, _080F1BBC @ =gBattlerSpriteIds
+ ldr r0, _080F1BC0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, _080F1BC4 @ =sub_8012354
+ str r1, [r0]
+ ldr r0, _080F1BC8 @ =sub_80F1BCC
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1BB0: .4byte gBattleAnimArgs
+_080F1BB4: .4byte 0x0000ffe0
+_080F1BB8: .4byte gSprites
+_080F1BBC: .4byte gBattlerSpriteIds
+_080F1BC0: .4byte gBattleAnimAttacker
+_080F1BC4: .4byte sub_8012354
+_080F1BC8: .4byte sub_80F1BCC
+ thumb_func_end sub_80F1B3C
+
+ thumb_func_start sub_80F1BCC
+sub_80F1BCC: @ 80F1BCC
+ push {lr}
+ adds r3, r0, 0
+ ldr r2, _080F1BF4 @ =gSprites
+ ldr r1, _080F1BF8 @ =gBattlerSpriteIds
+ ldr r0, _080F1BFC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x2B
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _080F1BF0
+ ldr r0, _080F1C00 @ =sub_80F1C04
+ str r0, [r3, 0x1C]
+_080F1BF0:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1BF4: .4byte gSprites
+_080F1BF8: .4byte gBattlerSpriteIds
+_080F1BFC: .4byte gBattleAnimAttacker
+_080F1C00: .4byte sub_80F1C04
+ thumb_func_end sub_80F1BCC
+
+ thumb_func_start sub_80F1C04
+sub_80F1C04: @ 80F1C04
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080F1C26
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080F1C2C @ =sub_80F1C30
+ str r0, [r4, 0x1C]
+_080F1C26:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1C2C: .4byte sub_80F1C30
+ thumb_func_end sub_80F1C04
+
+ thumb_func_start sub_80F1C30
+sub_80F1C30: @ 80F1C30
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080F1C80 @ =gSprites
+ ldr r3, _080F1C84 @ =gBattlerSpriteIds
+ ldr r2, _080F1C88 @ =gBattleAnimAttacker
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ adds r0, 0x3F
+ ldrb r0, [r0]
+ lsls r0, 27
+ cmp r0, 0
+ bge _080F1C78
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080F1C78
+ ldrb r0, [r2]
+ adds r0, r3
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ movs r1, 0
+ bl StartSpriteAnim
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080F1C78:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1C80: .4byte gSprites
+_080F1C84: .4byte gBattlerSpriteIds
+_080F1C88: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80F1C30
+
+ thumb_func_start sub_80F1C8C
+sub_80F1C8C: @ 80F1C8C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080F1CA4 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ beq _080F1CA8
+ cmp r0, 0x1
+ beq _080F1CBC
+ b _080F1CD0
+ .align 2, 0
+_080F1CA4: .4byte gBattleAnimArgs
+_080F1CA8:
+ movs r0, 0
+ bl GetBattlerAtPosition
+ ldr r1, _080F1CB8 @ =gBattleAnimAttacker
+ strb r0, [r1]
+ movs r0, 0x1
+ b _080F1CC8
+ .align 2, 0
+_080F1CB8: .4byte gBattleAnimAttacker
+_080F1CBC:
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ ldr r1, _080F1CDC @ =gBattleAnimAttacker
+ strb r0, [r1]
+ movs r0, 0
+_080F1CC8:
+ bl GetBattlerAtPosition
+ ldr r1, _080F1CE0 @ =gBattleAnimTarget
+ strb r0, [r1]
+_080F1CD0:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1CDC: .4byte gBattleAnimAttacker
+_080F1CE0: .4byte gBattleAnimTarget
+ thumb_func_end sub_80F1C8C
+
+ thumb_func_start sub_80F1CE4
+sub_80F1CE4: @ 80F1CE4
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, _080F1CF8 @ =gUnknown_2023E82
+ ldrb r0, [r2, 0x5]
+ cmp r0, 0x2
+ bls _080F1D00
+ ldr r1, _080F1CFC @ =gBattleAnimArgs
+ movs r0, 0
+ b _080F1D04
+ .align 2, 0
+_080F1CF8: .4byte gUnknown_2023E82
+_080F1CFC: .4byte gBattleAnimArgs
+_080F1D00:
+ ldr r1, _080F1D10 @ =gBattleAnimArgs
+ ldrb r0, [r2, 0x5]
+_080F1D04:
+ strh r0, [r1, 0xE]
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1D10: .4byte gBattleAnimArgs
+ thumb_func_end sub_80F1CE4
+
+ thumb_func_start sub_80F1D14
+sub_80F1D14: @ 80F1D14
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080F1D2C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrh r1, [r0]
+ cmp r1, 0x53
+ bne _080F1D34
+ ldr r1, _080F1D30 @ =gBattleAnimArgs
+ movs r0, 0x1
+ b _080F1D6C
+ .align 2, 0
+_080F1D2C: .4byte gUnknown_2024018
+_080F1D30: .4byte gBattleAnimArgs
+_080F1D34:
+ cmp r1, 0xFA
+ bne _080F1D44
+ ldr r1, _080F1D40 @ =gBattleAnimArgs
+ movs r0, 0x2
+ b _080F1D6C
+ .align 2, 0
+_080F1D40: .4byte gBattleAnimArgs
+_080F1D44:
+ cmp r1, 0x80
+ bne _080F1D54
+ ldr r1, _080F1D50 @ =gBattleAnimArgs
+ movs r0, 0x3
+ b _080F1D6C
+ .align 2, 0
+_080F1D50: .4byte gBattleAnimArgs
+_080F1D54:
+ movs r0, 0xA4
+ lsls r0, 1
+ cmp r1, r0
+ bne _080F1D68
+ ldr r1, _080F1D64 @ =gBattleAnimArgs
+ movs r0, 0x4
+ b _080F1D6C
+ .align 2, 0
+_080F1D64: .4byte gBattleAnimArgs
+_080F1D68:
+ ldr r1, _080F1D78 @ =gBattleAnimArgs
+ movs r0, 0
+_080F1D6C:
+ strh r0, [r1]
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1D78: .4byte gBattleAnimArgs
+ thumb_func_end sub_80F1D14
+
+ thumb_func_start sub_80F1D7C
+sub_80F1D7C: @ 80F1D7C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _080F1DA0 @ =gBattleAnimAttacker
+ ldr r1, _080F1DA4 @ =gUnknown_2024018
+ ldr r2, [r1]
+ ldr r1, [r2, 0x8]
+ ldrh r1, [r1]
+ strb r1, [r3]
+ ldr r3, _080F1DA8 @ =gBattleAnimTarget
+ ldr r1, [r2, 0x8]
+ ldrh r1, [r1]
+ lsrs r1, 8
+ strb r1, [r3]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F1DA0: .4byte gBattleAnimAttacker
+_080F1DA4: .4byte gUnknown_2024018
+_080F1DA8: .4byte gBattleAnimTarget
+ thumb_func_end sub_80F1D7C
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_status_effects.s b/asm/battle_anim_status_effects.s
new file mode 100644
index 000000000..b1da74298
--- /dev/null
+++ b/asm/battle_anim_status_effects.s
@@ -0,0 +1,977 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8078178
+sub_8078178: @ 8078178
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r0, _0807821C @ =gBattlerSpriteIds
+ adds r0, r4, r0
+ ldrb r6, [r0]
+ ldr r0, _08078220 @ =sub_80782BC
+ movs r1, 0xA
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r0, _08078224 @ =gUnknown_83AD048
+ bl LoadCompressedSpriteSheetUsingHeap
+ ldr r0, _08078228 @ =gUnknown_83AD950
+ bl LoadCompressedSpritePaletteUsingHeap
+ ldr r1, _0807822C @ =gTasks
+ mov r2, r8
+ lsls r0, r2, 2
+ add r0, r8
+ lsls r0, 3
+ adds r1, r0, r1
+ strh r4, [r1, 0x8]
+ cmp r5, 0
+ beq _08078238
+ movs r0, 0x1F
+ strh r0, [r1, 0xA]
+ movs r5, 0
+ lsls r0, r6, 4
+ ldr r7, _08078230 @ =gSprites
+ adds r0, r6
+ lsls r0, 2
+ adds r6, r0, r7
+_080781CC:
+ movs r0, 0x20
+ ldrsh r1, [r6, r0]
+ ldrh r2, [r6, 0x22]
+ adds r2, 0x20
+ lsls r2, 16
+ asrs r2, 16
+ ldr r0, _08078234 @ =gUnknown_83BF574
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r3, r0, r7
+ lsls r0, r5, 1
+ adds r0, r5
+ lsls r1, r0, 4
+ adds r0, r1
+ strh r0, [r3, 0x2E]
+ movs r0, 0xFF
+ lsls r0, 8
+ strh r0, [r3, 0x30]
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ cmp r5, 0x4
+ bls _08078210
+ movs r0, 0x15
+ strh r0, [r3, 0x3A]
+_08078210:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x9
+ bls _080781CC
+ b _08078298
+ .align 2, 0
+_0807821C: .4byte gBattlerSpriteIds
+_08078220: .4byte sub_80782BC
+_08078224: .4byte gUnknown_83AD048
+_08078228: .4byte gUnknown_83AD950
+_0807822C: .4byte gTasks
+_08078230: .4byte gSprites
+_08078234: .4byte gUnknown_83BF574
+_08078238:
+ movs r0, 0xF8
+ lsls r0, 7
+ strh r0, [r1, 0xA]
+ movs r5, 0
+ lsls r0, r6, 4
+ ldr r7, _080782B4 @ =gSprites
+ adds r0, r6
+ lsls r0, 2
+ adds r6, r0, r7
+_0807824A:
+ movs r2, 0x20
+ ldrsh r1, [r6, r2]
+ ldrh r2, [r6, 0x22]
+ subs r2, 0x20
+ lsls r2, 16
+ asrs r2, 16
+ ldr r0, _080782B8 @ =gUnknown_83BF574
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r3, r0, r7
+ lsls r0, r5, 1
+ adds r0, r5
+ lsls r1, r0, 4
+ adds r0, r1
+ strh r0, [r3, 0x2E]
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r3, 0x30]
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ cmp r5, 0x4
+ bls _0807828E
+ movs r0, 0x15
+ strh r0, [r3, 0x3A]
+_0807828E:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x9
+ bls _0807824A
+_08078298:
+ ldr r0, _080782B4 @ =gSprites
+ lsls r1, r4, 4
+ adds r1, r4
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x1
+ strh r0, [r1, 0x3C]
+ mov r0, r8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080782B4: .4byte gSprites
+_080782B8: .4byte gUnknown_83BF574
+ thumb_func_end sub_8078178
+
+ thumb_func_start sub_80782BC
+sub_80782BC: @ 80782BC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _08078314 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r1, [r4, 0xC]
+ movs r2, 0xC
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x2
+ bne _08078342
+ movs r0, 0
+ strh r0, [r4, 0xC]
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ lsls r0, 20
+ movs r2, 0x80
+ lsls r2, 17
+ adds r0, r2
+ lsrs r0, 16
+ ldrb r2, [r4, 0x10]
+ ldrh r3, [r4, 0xA]
+ movs r1, 0x10
+ bl BlendPalette
+ ldrh r2, [r4, 0x12]
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _08078318
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _08078346
+ movs r0, 0x1
+ eors r0, r2
+ strh r0, [r4, 0x12]
+ b _08078346
+ .align 2, 0
+_08078314: .4byte gTasks
+_08078318:
+ ldrh r1, [r4, 0x10]
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ cmp r0, 0
+ bge _08078346
+ strh r1, [r4, 0x10]
+ movs r0, 0x1
+ eors r0, r2
+ strh r0, [r4, 0x12]
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _08078346
+ adds r0, r5, 0
+ bl DestroyTask
+ b _08078346
+_08078342:
+ adds r0, r1, 0x1
+ strh r0, [r4, 0xC]
+_08078346:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80782BC
+
+ thumb_func_start sub_807834C
+sub_807834C: @ 807834C
+ push {lr}
+ adds r2, r0, 0
+ ldrh r1, [r2, 0x3A]
+ movs r3, 0x3A
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bne _08078378
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r3]
+ ldr r1, _08078374 @ =sub_8078380
+ str r1, [r2, 0x1C]
+ adds r0, r2, 0
+ bl _call_via_r1
+ b _0807837C
+ .align 2, 0
+_08078374: .4byte sub_8078380
+_08078378:
+ subs r0, r1, 0x1
+ strh r0, [r2, 0x3A]
+_0807837C:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807834C
+
+ thumb_func_start sub_8078380
+sub_8078380: @ 8078380
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x20
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x8
+ bl Sin
+ strh r0, [r4, 0x26]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x7F
+ bgt _080783AC
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x1D
+ b _080783B2
+_080783AC:
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x1F
+_080783B2:
+ strb r0, [r1]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x8
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x38]
+ adds r0, r1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x34
+ bne _080783F4
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080783EE
+ adds r0, r4, 0
+ bl DestroySpriteAndFreeResources
+ b _080783F4
+_080783EE:
+ adds r0, r4, 0
+ bl DestroySprite
+_080783F4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8078380
+
+ thumb_func_start sub_80783FC
+sub_80783FC: @ 80783FC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r4, _080784AC @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 8
+ ldr r1, _080784B0 @ =0xffe00000
+ adds r0, r1
+ lsrs r5, r0, 16
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 8
+ ldr r1, _080784B4 @ =0xffdc0000
+ adds r0, r1
+ lsrs r4, r0, 16
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807843A
+ lsls r0, r5, 16
+ ldr r1, _080784B8 @ =0xfffa0000
+ adds r0, r1
+ lsrs r5, r0, 16
+_0807843A:
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r0, _080784BC @ =gUnknown_83BF55C
+ lsls r1, r5, 16
+ asrs r1, 16
+ lsls r2, r4, 16
+ asrs r2, 16
+ movs r3, 0x4
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080784C0 @ =0x0000271a
+ bl GetSpriteTileStartByTag
+ lsls r0, 16
+ ldr r1, _080784C4 @ =0xffff0000
+ cmp r0, r1
+ bne _08078484
+ ldr r1, _080784C8 @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+_08078484:
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ ldr r1, _080784C8 @ =gSprites
+ adds r0, r1
+ ldr r1, _080784CC @ =gUnknown_83BF554
+ bl SetSubspriteTables
+ ldr r1, _080784D0 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r0, r1
+ strh r4, [r0, 0x26]
+ ldr r1, _080784D4 @ =sub_80784D8
+ str r1, [r0]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080784AC: .4byte gBattleAnimTarget
+_080784B0: .4byte 0xffe00000
+_080784B4: .4byte 0xffdc0000
+_080784B8: .4byte 0xfffa0000
+_080784BC: .4byte gUnknown_83BF55C
+_080784C0: .4byte 0x0000271a
+_080784C4: .4byte 0xffff0000
+_080784C8: .4byte gSprites
+_080784CC: .4byte gUnknown_83BF554
+_080784D0: .4byte gTasks
+_080784D4: .4byte sub_80784D8
+ thumb_func_end sub_80783FC
+
+ thumb_func_start sub_80784D8
+sub_80784D8: @ 80784D8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08078504 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldrh r0, [r1, 0xA]
+ adds r0, 0x1
+ adds r2, r0, 0
+ strh r0, [r1, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ bne _0807850C
+ ldr r0, _08078508 @ =sub_8078528
+ str r0, [r1]
+ movs r0, 0
+ strh r0, [r1, 0xA]
+ b _08078522
+ .align 2, 0
+_08078504: .4byte gTasks
+_08078508: .4byte sub_8078528
+_0807850C:
+ lsls r0, r2, 24
+ lsrs r0, 24
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+_08078522:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80784D8
+
+ thumb_func_start sub_8078528
+sub_8078528: @ 8078528
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080785C0 @ =0x0000271a
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _080785C4 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrh r0, [r5, 0xA]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ ble _080785B8
+ ldrh r0, [r5, 0xC]
+ adds r0, 0x1
+ movs r6, 0
+ strh r0, [r5, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080785B8
+ ldr r3, _080785C8 @ =gPlttBufferFaded
+ lsls r2, 4
+ mov r12, r2
+ ldr r1, _080785CC @ =0x0000010d
+ add r1, r12
+ lsls r1, 1
+ adds r1, r3
+ ldrh r4, [r1]
+ movs r2, 0x87
+ lsls r2, 1
+ add r2, r12
+ lsls r2, 1
+ adds r2, r3
+ ldrh r0, [r2]
+ strh r0, [r1]
+ ldr r0, _080785D0 @ =0x0000010f
+ add r0, r12
+ lsls r0, 1
+ adds r0, r3
+ ldrh r1, [r0]
+ strh r1, [r2]
+ strh r4, [r0]
+ strh r6, [r5, 0xC]
+ ldrh r0, [r5, 0xE]
+ adds r0, 0x1
+ strh r0, [r5, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080785B8
+ strh r6, [r5, 0xE]
+ strh r6, [r5, 0xA]
+ ldrh r0, [r5, 0x10]
+ adds r0, 0x1
+ strh r0, [r5, 0x10]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _080785B8
+ movs r0, 0x9
+ strh r0, [r5, 0xA]
+ ldr r0, _080785D4 @ =sub_80785D8
+ str r0, [r5]
+_080785B8:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080785C0: .4byte 0x0000271a
+_080785C4: .4byte gTasks
+_080785C8: .4byte gPlttBufferFaded
+_080785CC: .4byte 0x0000010d
+_080785D0: .4byte 0x0000010f
+_080785D4: .4byte sub_80785D8
+ thumb_func_end sub_8078528
+
+ thumb_func_start sub_80785D8
+sub_80785D8: @ 80785D8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08078608 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r2, r1, r2
+ ldrh r0, [r2, 0xA]
+ subs r0, 0x1
+ adds r3, r0, 0
+ strh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _08078610
+ ldr r0, _0807860C @ =sub_807862C
+ str r0, [r2]
+ movs r0, 0
+ strh r0, [r2, 0xA]
+ b _08078626
+ .align 2, 0
+_08078608: .4byte gTasks
+_0807860C: .4byte sub_807862C
+_08078610:
+ lsls r0, r3, 24
+ lsrs r0, 24
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+_08078626:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80785D8
+
+ thumb_func_start sub_807862C
+sub_807862C: @ 807862C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r4, r0, 0
+ ldr r1, _0807866C @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r1
+ ldrh r0, [r1, 0xA]
+ adds r0, 0x1
+ strh r0, [r1, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x25
+ bne _08078674
+ ldrh r0, [r1, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08078670 @ =gSprites
+ adds r4, r0
+ adds r0, r4, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+ b _0807868E
+ .align 2, 0
+_0807866C: .4byte gTasks
+_08078670: .4byte gSprites
+_08078674:
+ cmp r0, 0x27
+ bne _0807868E
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_0807868E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807862C
+
+ thumb_func_start sub_8078694
+sub_8078694: @ 8078694
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r3, 0
+ ldr r0, _080786B8 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldr r0, [r0, 0x8]
+ ldrh r0, [r0]
+ subs r0, 0xF
+ cmp r0, 0x2B
+ bls _080786AC
+ b _08078830
+_080786AC:
+ lsls r0, 2
+ ldr r1, _080786BC @ =_080786C0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080786B8: .4byte gUnknown_2024018
+_080786BC: .4byte _080786C0
+ .align 2, 0
+_080786C0:
+ .4byte _08078770
+ .4byte _08078776
+ .4byte _0807877C
+ .4byte _08078782
+ .4byte _08078788
+ .4byte _0807878E
+ .4byte _08078794
+ .4byte _0807879A
+ .4byte _080787A0
+ .4byte _080787A6
+ .4byte _080787AC
+ .4byte _080787B2
+ .4byte _080787B8
+ .4byte _080787BE
+ .4byte _08078830
+ .4byte _08078830
+ .4byte _08078830
+ .4byte _08078830
+ .4byte _08078830
+ .4byte _08078830
+ .4byte _08078830
+ .4byte _08078830
+ .4byte _08078830
+ .4byte _08078830
+ .4byte _080787C4
+ .4byte _080787C8
+ .4byte _080787CC
+ .4byte _080787D0
+ .4byte _080787D4
+ .4byte _080787D8
+ .4byte _080787DC
+ .4byte _080787E0
+ .4byte _080787E8
+ .4byte _080787F0
+ .4byte _080787F8
+ .4byte _08078800
+ .4byte _08078808
+ .4byte _08078810
+ .4byte _08078830
+ .4byte _08078830
+ .4byte _08078818
+ .4byte _0807881C
+ .4byte _08078820
+ .4byte _08078828
+_08078770:
+ movs r5, 0
+ movs r2, 0
+ b _08078838
+_08078776:
+ movs r5, 0
+ movs r2, 0x1
+ b _08078838
+_0807877C:
+ movs r5, 0
+ movs r2, 0x3
+ b _08078838
+_08078782:
+ movs r5, 0
+ movs r2, 0x5
+ b _08078838
+_08078788:
+ movs r5, 0
+ movs r2, 0x6
+ b _08078838
+_0807878E:
+ movs r5, 0
+ movs r2, 0x2
+ b _08078838
+_08078794:
+ movs r5, 0
+ movs r2, 0x4
+ b _08078838
+_0807879A:
+ movs r5, 0x1
+ movs r2, 0
+ b _08078838
+_080787A0:
+ movs r5, 0x1
+ movs r2, 0x1
+ b _08078838
+_080787A6:
+ movs r5, 0x1
+ movs r2, 0x3
+ b _08078838
+_080787AC:
+ movs r5, 0x1
+ movs r2, 0x5
+ b _08078838
+_080787B2:
+ movs r5, 0x1
+ movs r2, 0x6
+ b _08078838
+_080787B8:
+ movs r5, 0x1
+ movs r2, 0x2
+ b _08078838
+_080787BE:
+ movs r5, 0x1
+ movs r2, 0x4
+ b _08078838
+_080787C4:
+ movs r5, 0
+ b _080787E2
+_080787C8:
+ movs r5, 0
+ b _080787EA
+_080787CC:
+ movs r5, 0
+ b _080787F2
+_080787D0:
+ movs r5, 0
+ b _080787FA
+_080787D4:
+ movs r5, 0
+ b _08078802
+_080787D8:
+ movs r5, 0
+ b _0807880A
+_080787DC:
+ movs r5, 0
+ b _08078812
+_080787E0:
+ movs r5, 0x1
+_080787E2:
+ movs r2, 0
+ movs r3, 0x1
+ b _08078838
+_080787E8:
+ movs r5, 0x1
+_080787EA:
+ movs r2, 0x1
+ movs r3, 0x1
+ b _08078838
+_080787F0:
+ movs r5, 0x1
+_080787F2:
+ movs r2, 0x3
+ movs r3, 0x1
+ b _08078838
+_080787F8:
+ movs r5, 0x1
+_080787FA:
+ movs r2, 0x5
+ movs r3, 0x1
+ b _08078838
+_08078800:
+ movs r5, 0x1
+_08078802:
+ movs r2, 0x6
+ movs r3, 0x1
+ b _08078838
+_08078808:
+ movs r5, 0x1
+_0807880A:
+ movs r2, 0x2
+ movs r3, 0x1
+ b _08078838
+_08078810:
+ movs r5, 0x1
+_08078812:
+ movs r2, 0x4
+ movs r3, 0x1
+ b _08078838
+_08078818:
+ movs r5, 0
+ b _08078822
+_0807881C:
+ movs r5, 0
+ b _0807882A
+_08078820:
+ movs r5, 0x1
+_08078822:
+ movs r2, 0xFF
+ movs r3, 0
+ b _08078838
+_08078828:
+ movs r5, 0x1
+_0807882A:
+ movs r2, 0xFF
+ movs r3, 0x1
+ b _08078838
+_08078830:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _0807885A
+_08078838:
+ ldr r0, _08078860 @ =gBattleAnimArgs
+ movs r1, 0
+ strh r5, [r0]
+ strh r2, [r0, 0x2]
+ strh r1, [r0, 0x4]
+ strh r1, [r0, 0x6]
+ strh r3, [r0, 0x8]
+ ldr r1, _08078864 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _08078868 @ =sub_80BB088
+ str r1, [r0]
+ adds r0, r4, 0
+ bl _call_via_r1
+_0807885A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078860: .4byte gBattleAnimArgs
+_08078864: .4byte gTasks
+_08078868: .4byte sub_80BB088
+ thumb_func_end sub_8078694
+
+ thumb_func_start LaunchStatusAnimation
+LaunchStatusAnimation: @ 807886C
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r0, _080788A8 @ =gBattleAnimAttacker
+ strb r4, [r0]
+ ldr r0, _080788AC @ =gBattleAnimTarget
+ strb r4, [r0]
+ ldr r0, _080788B0 @ =gUnknown_81C6E84
+ movs r2, 0
+ bl sub_80725D4
+ ldr r0, _080788B4 @ =task0A_80788BC
+ movs r1, 0xA
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080788B8 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ strh r4, [r1, 0x8]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080788A8: .4byte gBattleAnimAttacker
+_080788AC: .4byte gBattleAnimTarget
+_080788B0: .4byte gUnknown_81C6E84
+_080788B4: .4byte task0A_80788BC
+_080788B8: .4byte gTasks
+ thumb_func_end LaunchStatusAnimation
+
+ thumb_func_start task0A_80788BC
+task0A_80788BC: @ 80788BC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _08078904 @ =gUnknown_2037EDC
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldr r0, _08078908 @ =gUnknown_2037EE1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080788FE
+ ldr r0, _0807890C @ =gUnknown_2024018
+ ldr r2, [r0]
+ ldr r1, _08078910 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ ldr r2, [r2, 0x4]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r2, [r1]
+ movs r0, 0x11
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl DestroyTask
+_080788FE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078904: .4byte gUnknown_2037EDC
+_08078908: .4byte gUnknown_2037EE1
+_0807890C: .4byte gUnknown_2024018
+_08078910: .4byte gTasks
+ thumb_func_end task0A_80788BC
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_utility_funcs.s b/asm/battle_anim_utility_funcs.s
new file mode 100644
index 000000000..d33f51842
--- /dev/null
+++ b/asm/battle_anim_utility_funcs.s
@@ -0,0 +1,5133 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80BA7F8
+sub_80BA7F8: @ 80BA7F8
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r4, _080BA838 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ bl sub_80B9A14
+ adds r6, r0, 0
+ ldrh r3, [r4]
+ lsls r3, 16
+ asrs r0, r3, 23
+ movs r4, 0x1
+ ands r0, r4
+ asrs r1, r3, 24
+ ands r1, r4
+ asrs r2, r3, 25
+ ands r2, r4
+ asrs r3, 26
+ ands r3, r4
+ bl sub_8075CB8
+ orrs r6, r0
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl sub_80BAA4C
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA838: .4byte gBattleAnimArgs
+ thumb_func_end sub_80BA7F8
+
+ thumb_func_start sub_80BA83C
+sub_80BA83C: @ 80BA83C
+ push {r4-r7,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r7, r0, 24
+ mov r1, sp
+ movs r0, 0xFF
+ strb r0, [r1, 0x1]
+ movs r0, 0x1
+ bl sub_80B9A14
+ adds r5, r0, 0
+ ldr r0, _080BA868 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x7
+ bhi _080BA8E6
+ lsls r0, 2
+ ldr r1, _080BA86C @ =_080BA870
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080BA868: .4byte gBattleAnimArgs
+_080BA86C: .4byte _080BA870
+ .align 2, 0
+_080BA870:
+ .4byte _080BA892
+ .4byte _080BA89E
+ .4byte _080BA890
+ .4byte _080BA89C
+ .4byte _080BA8AC
+ .4byte _080BA8C4
+ .4byte _080BA8CC
+ .4byte _080BA8D8
+_080BA890:
+ movs r5, 0
+_080BA892:
+ mov r0, sp
+ ldr r1, _080BA898 @ =gBattleAnimAttacker
+ b _080BA8A2
+ .align 2, 0
+_080BA898: .4byte gBattleAnimAttacker
+_080BA89C:
+ movs r5, 0
+_080BA89E:
+ mov r0, sp
+ ldr r1, _080BA8A8 @ =gBattleAnimTarget
+_080BA8A2:
+ ldrb r1, [r1]
+ strb r1, [r0]
+ b _080BA8E6
+ .align 2, 0
+_080BA8A8: .4byte gBattleAnimTarget
+_080BA8AC:
+ mov r1, sp
+ ldr r0, _080BA8BC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r0, _080BA8C0 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ strb r0, [r1, 0x1]
+ b _080BA8E6
+ .align 2, 0
+_080BA8BC: .4byte gBattleAnimAttacker
+_080BA8C0: .4byte gBattleAnimTarget
+_080BA8C4:
+ mov r1, sp
+ movs r0, 0xFF
+ strb r0, [r1]
+ b _080BA8E6
+_080BA8CC:
+ movs r5, 0
+ mov r2, sp
+ ldr r0, _080BA8D4 @ =gBattleAnimAttacker
+ b _080BA8DE
+ .align 2, 0
+_080BA8D4: .4byte gBattleAnimAttacker
+_080BA8D8:
+ movs r5, 0
+ mov r2, sp
+ ldr r0, _080BA930 @ =gBattleAnimTarget
+_080BA8DE:
+ ldrb r0, [r0]
+ movs r1, 0x2
+ eors r0, r1
+ strb r0, [r2]
+_080BA8E6:
+ movs r4, 0
+ mov r6, sp
+_080BA8EA:
+ ldrb r0, [r6]
+ cmp r4, r0
+ beq _080BA914
+ ldrb r0, [r6, 0x1]
+ cmp r4, r0
+ beq _080BA914
+ adds r0, r4, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BA914
+ adds r0, r4, 0
+ bl sub_8075D80
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x80
+ lsls r1, 9
+ lsls r1, r0
+ orrs r5, r1
+_080BA914:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x3
+ bls _080BA8EA
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_80BAA4C
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA930: .4byte gBattleAnimTarget
+ thumb_func_end sub_80BA83C
+
+ thumb_func_start sub_80BA934
+sub_80BA934: @ 80BA934
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080BA958 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ bl sub_80B9A14
+ adds r2, r0, 0
+ ldr r0, _080BA95C @ =gUnknown_2022B50
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bhi _080BAA0A
+ lsls r0, 2
+ ldr r1, _080BA960 @ =_080BA964
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080BA958: .4byte gBattleAnimArgs
+_080BA95C: .4byte gUnknown_2022B50
+_080BA960: .4byte _080BA964
+ .align 2, 0
+_080BA964:
+ .4byte _080BA98C
+ .4byte _080BA99C
+ .4byte _080BA9A8
+ .4byte _080BA9B8
+ .4byte _080BA9C4
+ .4byte _080BA9D4
+ .4byte _080BA9E4
+ .4byte _080BA9F4
+ .4byte _080BAA04
+ .4byte _080BAA04
+_080BA98C:
+ ldr r1, _080BA994 @ =gBattleAnimArgs
+ ldr r0, _080BA998 @ =0x00000b0c
+ b _080BAA08
+ .align 2, 0
+_080BA994: .4byte gBattleAnimArgs
+_080BA998: .4byte 0x00000b0c
+_080BA99C:
+ ldr r1, _080BA9A4 @ =gBattleAnimArgs
+ movs r0, 0x9E
+ lsls r0, 4
+ b _080BAA08
+ .align 2, 0
+_080BA9A4: .4byte gBattleAnimArgs
+_080BA9A8:
+ ldr r1, _080BA9B0 @ =gBattleAnimArgs
+ ldr r0, _080BA9B4 @ =0x00002f1e
+ b _080BAA08
+ .align 2, 0
+_080BA9B0: .4byte gBattleAnimArgs
+_080BA9B4: .4byte 0x00002f1e
+_080BA9B8:
+ ldr r1, _080BA9C0 @ =gBattleAnimArgs
+ movs r0, 0x90
+ lsls r0, 7
+ b _080BAA08
+ .align 2, 0
+_080BA9C0: .4byte gBattleAnimArgs
+_080BA9C4:
+ ldr r1, _080BA9CC @ =gBattleAnimArgs
+ ldr r0, _080BA9D0 @ =0x00007ecb
+ b _080BAA08
+ .align 2, 0
+_080BA9CC: .4byte gBattleAnimArgs
+_080BA9D0: .4byte 0x00007ecb
+_080BA9D4:
+ ldr r1, _080BA9DC @ =gBattleAnimArgs
+ ldr r0, _080BA9E0 @ =0x00007ecb
+ b _080BAA08
+ .align 2, 0
+_080BA9DC: .4byte gBattleAnimArgs
+_080BA9E0: .4byte 0x00007ecb
+_080BA9E4:
+ ldr r1, _080BA9EC @ =gBattleAnimArgs
+ ldr r0, _080BA9F0 @ =0x00002a16
+ b _080BAA08
+ .align 2, 0
+_080BA9EC: .4byte gBattleAnimArgs
+_080BA9F0: .4byte 0x00002a16
+_080BA9F4:
+ ldr r1, _080BA9FC @ =gBattleAnimArgs
+ ldr r0, _080BAA00 @ =0x00000d2e
+ b _080BAA08
+ .align 2, 0
+_080BA9FC: .4byte gBattleAnimArgs
+_080BAA00: .4byte 0x00000d2e
+_080BAA04:
+ ldr r1, _080BAA18 @ =gBattleAnimArgs
+ ldr r0, _080BAA1C @ =0x00007fff
+_080BAA08:
+ strh r0, [r1, 0x8]
+_080BAA0A:
+ adds r0, r4, 0
+ adds r1, r2, 0
+ bl sub_80BAA4C
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BAA18: .4byte gBattleAnimArgs
+_080BAA1C: .4byte 0x00007fff
+ thumb_func_end sub_80BA934
+
+ thumb_func_start sub_80BAA20
+sub_80BAA20: @ 80BAA20
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080BAA48 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ movs r1, 0x1
+ lsls r1, r0
+ adds r0, r4, 0
+ bl sub_80BAA4C
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BAA48: .4byte gBattleAnimArgs
+ thumb_func_end sub_80BAA20
+
+ thumb_func_start sub_80BAA4C
+sub_80BAA4C: @ 80BAA4C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _080BAA84 @ =gTasks
+ lsls r2, r0, 2
+ adds r2, r0
+ lsls r2, 3
+ adds r2, r3
+ strh r1, [r2, 0x8]
+ lsrs r1, 16
+ strh r1, [r2, 0xA]
+ ldr r3, _080BAA88 @ =gBattleAnimArgs
+ ldrh r1, [r3, 0x2]
+ strh r1, [r2, 0xC]
+ ldrh r1, [r3, 0x4]
+ strh r1, [r2, 0xE]
+ ldrh r1, [r3, 0x6]
+ strh r1, [r2, 0x10]
+ ldrh r1, [r3, 0x8]
+ strh r1, [r2, 0x12]
+ ldrh r1, [r3, 0x4]
+ strh r1, [r2, 0x1C]
+ ldr r1, _080BAA8C @ =sub_80BAA90
+ str r1, [r2]
+ bl _call_via_r1
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BAA84: .4byte gTasks
+_080BAA88: .4byte gBattleAnimArgs
+_080BAA8C: .4byte sub_80BAA90
+ thumb_func_end sub_80BAA4C
+
+ thumb_func_start sub_80BAA90
+sub_80BAA90: @ 80BAA90
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r6, 0
+ ldr r2, _080BAB10 @ =gTasks
+ lsls r5, r7, 2
+ adds r0, r5, r7
+ lsls r0, 3
+ adds r3, r0, r2
+ ldrh r0, [r3, 0x1A]
+ mov r8, r0
+ movs r4, 0x1A
+ ldrsh r1, [r3, r4]
+ movs r4, 0xC
+ ldrsh r0, [r3, r4]
+ mov r9, r2
+ cmp r1, r0
+ bne _080BAB26
+ strh r6, [r3, 0x1A]
+ movs r0, 0x8
+ ldrsh r4, [r3, r0]
+ movs r1, 0xA
+ ldrsh r0, [r3, r1]
+ lsls r0, 16
+ orrs r4, r0
+ mov r8, r5
+ cmp r4, 0
+ beq _080BAAF2
+ adds r5, r3, 0
+_080BAAD0:
+ movs r0, 0x1
+ ands r0, r4
+ cmp r0, 0
+ beq _080BAAE4
+ ldrb r2, [r5, 0x1C]
+ ldrh r3, [r5, 0x12]
+ adds r0, r6, 0
+ movs r1, 0x10
+ bl BlendPalette
+_080BAAE4:
+ adds r0, r6, 0
+ adds r0, 0x10
+ lsls r0, 16
+ lsrs r6, r0, 16
+ lsrs r4, 1
+ cmp r4, 0
+ bne _080BAAD0
+_080BAAF2:
+ mov r4, r8
+ adds r0, r4, r7
+ lsls r0, 3
+ mov r1, r9
+ adds r2, r0, r1
+ ldrh r0, [r2, 0x1C]
+ movs r4, 0x1C
+ ldrsh r3, [r2, r4]
+ movs r4, 0x10
+ ldrsh r1, [r2, r4]
+ cmp r3, r1
+ bge _080BAB14
+ adds r0, 0x1
+ strh r0, [r2, 0x1C]
+ b _080BAB2C
+ .align 2, 0
+_080BAB10: .4byte gTasks
+_080BAB14:
+ cmp r3, r1
+ ble _080BAB1E
+ subs r0, 0x1
+ strh r0, [r2, 0x1C]
+ b _080BAB2C
+_080BAB1E:
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+ b _080BAB2C
+_080BAB26:
+ mov r0, r8
+ adds r0, 0x1
+ strh r0, [r3, 0x1A]
+_080BAB2C:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80BAA90
+
+ thumb_func_start sub_80BAB38
+sub_80BAB38: @ 80BAB38
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r4, _080BAB6C @ =gBattleAnimArgs
+ ldrb r0, [r4]
+ ldrb r1, [r4, 0x2]
+ ldrb r2, [r4, 0x4]
+ ldrb r3, [r4, 0x6]
+ ldrb r4, [r4, 0x8]
+ str r4, [sp]
+ bl BeginHardwarePaletteFade
+ ldr r1, _080BAB70 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _080BAB74 @ =sub_80BAB78
+ str r1, [r0]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BAB6C: .4byte gBattleAnimArgs
+_080BAB70: .4byte gTasks
+_080BAB74: .4byte sub_80BAB78
+ thumb_func_end sub_80BAB38
+
+ thumb_func_start sub_80BAB78
+sub_80BAB78: @ 80BAB78
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080BAB94 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080BAB90
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080BAB90:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BAB94: .4byte gPaletteFade
+ thumb_func_end sub_80BAB78
+
+ thumb_func_start sub_80BAB98
+sub_80BAB98: @ 80BAB98
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080BABC4 @ =gTasks
+ adds r1, r0
+ ldr r2, _080BABC8 @ =gBattleAnimArgs
+ ldrh r0, [r2]
+ movs r3, 0
+ strh r0, [r1, 0x8]
+ strh r3, [r1, 0xA]
+ ldrh r0, [r2, 0x2]
+ strh r0, [r1, 0xC]
+ ldrh r0, [r2, 0x4]
+ strh r0, [r1, 0xE]
+ ldrh r0, [r2, 0x6]
+ strh r0, [r1, 0x10]
+ strh r3, [r1, 0x12]
+ ldr r0, _080BABCC @ =sub_80BABD0
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080BABC4: .4byte gTasks
+_080BABC8: .4byte gBattleAnimArgs
+_080BABCC: .4byte sub_80BABD0
+ thumb_func_end sub_80BAB98
+
+ thumb_func_start sub_80BABD0
+sub_80BABD0: @ 80BABD0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r2, r5, 0
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080BABFC @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080BAC94
+ ldrh r1, [r4, 0xA]
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080BAC00
+ subs r0, r1, 0x1
+ strh r0, [r4, 0xA]
+ b _080BACA2
+ .align 2, 0
+_080BABFC: .4byte gTasks
+_080BAC00:
+ ldrb r0, [r4, 0x8]
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ strh r0, [r4, 0x14]
+ lsls r0, 16
+ cmp r0, 0
+ blt _080BAC7E
+ ldr r6, _080BAC8C @ =gSprites
+ movs r1, 0x14
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r3, r1, r6
+ movs r2, 0x8
+ ldrsh r0, [r4, r2]
+ movs r2, 0x2
+ cmp r0, 0
+ beq _080BAC28
+ movs r2, 0x1
+_080BAC28:
+ lsls r2, 2
+ ldrb r1, [r3, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r3, 0x5]
+ movs r0, 0x14
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ ldrh r1, [r4, 0xE]
+ strh r1, [r0, 0x2E]
+ movs r2, 0x14
+ ldrsh r1, [r4, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ strh r5, [r0, 0x30]
+ movs r0, 0x14
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ movs r1, 0x5
+ strh r1, [r0, 0x32]
+ movs r2, 0x14
+ ldrsh r1, [r4, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r6, 0
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, _080BAC90 @ =sub_80BACA8
+ str r1, [r0]
+ ldrh r0, [r4, 0x12]
+ adds r0, 0x1
+ strh r0, [r4, 0x12]
+_080BAC7E:
+ ldrh r0, [r4, 0x10]
+ subs r0, 0x1
+ strh r0, [r4, 0x10]
+ ldrh r0, [r4, 0xC]
+ strh r0, [r4, 0xA]
+ b _080BACA2
+ .align 2, 0
+_080BAC8C: .4byte gSprites
+_080BAC90: .4byte sub_80BACA8
+_080BAC94:
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080BACA2
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080BACA2:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80BABD0
+
+ thumb_func_start sub_80BACA8
+sub_80BACA8: @ 80BACA8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080BACBC
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x2E]
+ b _080BACE0
+_080BACBC:
+ ldr r3, _080BACE8 @ =gTasks
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x30
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl obj_delete_but_dont_free_vram
+_080BACE0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BACE8: .4byte gTasks
+ thumb_func_end sub_80BACA8
+
+ thumb_func_start sub_80BACEC
+sub_80BACEC: @ 80BACEC
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ movs r7, 0
+ ldr r0, _080BAE20 @ =gUnknown_2022984
+ strh r7, [r0]
+ ldr r0, _080BAE24 @ =gUnknown_2022986
+ strh r7, [r0]
+ ldr r1, _080BAE28 @ =0x00003f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r1, _080BAE2C @ =0x00003f3d
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 8
+ movs r0, 0
+ bl SetGpuRegBits
+ ldr r1, _080BAE30 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r1, _080BAE34 @ =0x00000c08
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0xA
+ bl GetGpuReg
+ add r4, sp, 0x10
+ strh r0, [r4]
+ ldrb r1, [r4]
+ movs r0, 0x4
+ negs r0, r0
+ mov r8, r0
+ ands r0, r1
+ strb r0, [r4]
+ mov r2, sp
+ adds r2, 0x11
+ ldrb r1, [r2]
+ movs r0, 0x3F
+ ands r0, r1
+ strb r0, [r2]
+ ldrh r1, [r4]
+ movs r0, 0xA
+ bl SetGpuReg
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BAD7A
+ ldrb r1, [r4]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r4]
+ ldrh r1, [r4]
+ movs r0, 0xA
+ bl SetGpuReg
+_080BAD7A:
+ bl sub_8075290
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BADFE
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BADFE
+ ldr r5, _080BAE38 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ beq _080BADAA
+ ldrb r0, [r5]
+ bl GetBattlerPosition
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BADFE
+_080BADAA:
+ ldrb r0, [r5]
+ movs r6, 0x2
+ eors r0, r6
+ bl sub_8072DF0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080BADFE
+ ldr r3, _080BAE3C @ =gSprites
+ ldr r1, _080BAE40 @ =gBattlerSpriteIds
+ ldrb r0, [r5]
+ 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, [r4]
+ mov r0, r8
+ ands r0, r1
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r4]
+ ldrh r1, [r4]
+ movs r0, 0xA
+ bl SetGpuReg
+ movs r7, 0x1
+_080BADFE:
+ ldr r4, _080BAE38 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BAE4C
+ ldr r1, _080BAE44 @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080BAE48 @ =gEnemyParty
+ b _080BAE5C
+ .align 2, 0
+_080BAE20: .4byte gUnknown_2022984
+_080BAE24: .4byte gUnknown_2022986
+_080BAE28: .4byte 0x00003f3f
+_080BAE2C: .4byte 0x00003f3d
+_080BAE30: .4byte 0x00003f42
+_080BAE34: .4byte 0x00000c08
+_080BAE38: .4byte gBattleAnimAttacker
+_080BAE3C: .4byte gSprites
+_080BAE40: .4byte gBattlerSpriteIds
+_080BAE44: .4byte gBattlerPartyIndexes
+_080BAE48: .4byte gEnemyParty
+_080BAE4C:
+ ldr r1, _080BAF0C @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080BAF10 @ =gPlayerParty
+_080BAE5C:
+ adds r0, r1
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r0, _080BAF14 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl sub_8076E34
+ lsls r0, 24
+ lsrs r4, r0, 24
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080BAF18 @ =gFile_graphics_battle_anims_masks_curse_tilemap
+ bl sub_807543C
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BAEAC
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80730C0
+_080BAEAC:
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080BAF1C @ =gFile_graphics_battle_anims_masks_curse_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080BAF20 @ =gUnknown_83E7CC8
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ adds r1, 0x1
+ movs r2, 0x2
+ bl LoadPalette
+ ldr r2, _080BAF24 @ =gBattle_BG1_X
+ ldr r0, _080BAF28 @ =gSprites
+ lsls r1, r5, 4
+ adds r1, r5
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r1, 0x20]
+ negs r0, r0
+ adds r0, 0x20
+ strh r0, [r2]
+ ldr r2, _080BAF2C @ =gBattle_BG1_Y
+ ldrh r0, [r1, 0x22]
+ negs r0, r0
+ adds r0, 0x20
+ strh r0, [r2]
+ ldr r1, _080BAF30 @ =gTasks
+ mov r2, r9
+ lsls r0, r2, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ strh r4, [r0, 0x8]
+ strh r7, [r0, 0x14]
+ ldr r1, _080BAF34 @ =sub_80BAF38
+ str r1, [r0]
+ add sp, 0x14
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BAF0C: .4byte gBattlerPartyIndexes
+_080BAF10: .4byte gPlayerParty
+_080BAF14: .4byte gBattleAnimAttacker
+_080BAF18: .4byte gFile_graphics_battle_anims_masks_curse_tilemap
+_080BAF1C: .4byte gFile_graphics_battle_anims_masks_curse_sheet
+_080BAF20: .4byte gUnknown_83E7CC8
+_080BAF24: .4byte gBattle_BG1_X
+_080BAF28: .4byte gSprites
+_080BAF2C: .4byte gBattle_BG1_Y
+_080BAF30: .4byte gTasks
+_080BAF34: .4byte sub_80BAF38
+ thumb_func_end sub_80BACEC
+
+ thumb_func_start sub_80BAF38
+sub_80BAF38: @ 80BAF38
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ ldr r1, _080BB068 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x4
+ movs r1, 0
+ mov r8, r1
+ strh r0, [r5, 0x1C]
+ ldr r7, _080BB06C @ =gBattle_BG1_Y
+ ldrh r2, [r7]
+ subs r1, r2, 0x4
+ strh r1, [r7]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x40
+ bne _080BB05A
+ mov r0, r8
+ strh r0, [r5, 0x1C]
+ adds r0, r2, 0
+ adds r0, 0x3C
+ strh r0, [r7]
+ ldrh r0, [r5, 0x1E]
+ adds r0, 0x1
+ strh r0, [r5, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080BB05A
+ movs r0, 0
+ bl sub_8073128
+ ldr r0, _080BB070 @ =gUnknown_2022984
+ mov r1, r8
+ strh r1, [r0]
+ ldr r0, _080BB074 @ =gUnknown_2022986
+ strh r1, [r0]
+ ldr r4, _080BB078 @ =0x00003f3f
+ movs r0, 0x48
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ adds r1, r4, 0
+ bl SetGpuReg
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BAFCA
+ movs r0, 0xA
+ bl GetGpuReg
+ add r1, sp, 0x10
+ strh r0, [r1]
+ ldrb r2, [r1]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ ldrh r1, [r1]
+ movs r0, 0xA
+ bl SetGpuReg
+_080BAFCA:
+ movs r0, 0
+ bl GetGpuReg
+ adds r1, r0, 0
+ movs r2, 0x80
+ lsls r2, 8
+ adds r0, r2, 0
+ eors r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0
+ bl SetGpuReg
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ ldr r4, _080BB07C @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ bl DestroySprite
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ bl sub_8075358
+ movs r1, 0x14
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _080BB050
+ ldr r2, _080BB080 @ =gBattlerSpriteIds
+ ldr r0, _080BB084 @ =gBattleAnimAttacker
+ 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, r4
+ 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]
+_080BB050:
+ mov r2, r8
+ strh r2, [r7]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080BB05A:
+ add sp, 0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BB068: .4byte gTasks
+_080BB06C: .4byte gBattle_BG1_Y
+_080BB070: .4byte gUnknown_2022984
+_080BB074: .4byte gUnknown_2022986
+_080BB078: .4byte 0x00003f3f
+_080BB07C: .4byte gSprites
+_080BB080: .4byte gBattlerSpriteIds
+_080BB084: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80BAF38
+
+ thumb_func_start sub_80BB088
+sub_80BB088: @ 80BB088
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r4, _080BB0C8 @ =gUnknown_20399B4
+ movs r0, 0x18
+ bl AllocZeroed
+ str r0, [r4]
+ movs r2, 0
+ ldr r3, _080BB0CC @ =gBattleAnimArgs
+_080BB09C:
+ ldr r1, [r4]
+ lsls r0, r2, 1
+ adds r1, 0x4
+ adds r1, r0
+ adds r0, r3
+ ldrh r0, [r0]
+ strh r0, [r1]
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x7
+ bls _080BB09C
+ ldr r0, _080BB0D0 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080BB0D4 @ =sub_80BB0D8
+ str r0, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BB0C8: .4byte gUnknown_20399B4
+_080BB0CC: .4byte gBattleAnimArgs
+_080BB0D0: .4byte gTasks
+_080BB0D4: .4byte sub_80BB0D8
+ thumb_func_end sub_80BB088
+
+ thumb_func_start sub_80BB0D8
+sub_80BB0D8: @ 80BB0D8
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, _080BB0F0 @ =gUnknown_20399B4
+ ldr r1, [r0]
+ movs r2, 0x8
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080BB0F8
+ ldr r0, _080BB0F4 @ =gBattleAnimAttacker
+ b _080BB0FA
+ .align 2, 0
+_080BB0F0: .4byte gUnknown_20399B4
+_080BB0F4: .4byte gBattleAnimAttacker
+_080BB0F8:
+ ldr r0, _080BB230 @ =gBattleAnimTarget
+_080BB0FA:
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r4, _080BB234 @ =gUnknown_20399B4
+ ldr r2, [r4]
+ ldrb r0, [r2]
+ movs r1, 0x2
+ eors r0, r1
+ strb r0, [r2, 0x1]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BB12A
+ ldr r1, [r4]
+ movs r2, 0xA
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ beq _080BB130
+ ldrb r0, [r1, 0x1]
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BB130
+_080BB12A:
+ ldr r1, [r4]
+ movs r0, 0
+ strh r0, [r1, 0xA]
+_080BB130:
+ ldr r0, _080BB238 @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080BB23C @ =gUnknown_2022986
+ strh r1, [r0]
+ ldr r1, _080BB240 @ =0x00003f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r1, _080BB244 @ =0x00003f3d
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 8
+ movs r0, 0
+ bl SetGpuRegBits
+ ldr r1, _080BB248 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BB18E
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080BB18E:
+ bl sub_8075290
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BB20A
+ ldr r4, _080BB234 @ =gUnknown_20399B4
+ ldr r1, [r4]
+ movs r2, 0xA
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080BB20A
+ ldrb r0, [r1]
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ beq _080BB1C0
+ ldr r0, [r4]
+ ldrb r0, [r0]
+ bl GetBattlerPosition
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BB20A
+_080BB1C0:
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x1]
+ bl sub_8072DF0
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x1
+ bne _080BB20A
+ ldr r3, _080BB24C @ =gSprites
+ ldr r1, _080BB250 @ =gBattlerSpriteIds
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x1]
+ 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]
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ ldr r0, [r4]
+ strb r5, [r0, 0x2]
+_080BB20A:
+ ldr r4, _080BB234 @ =gUnknown_20399B4
+ ldr r0, [r4]
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BB25C
+ ldr r1, _080BB254 @ =gBattlerPartyIndexes
+ ldr r0, [r4]
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080BB258 @ =gEnemyParty
+ b _080BB26E
+ .align 2, 0
+_080BB230: .4byte gBattleAnimTarget
+_080BB234: .4byte gUnknown_20399B4
+_080BB238: .4byte gUnknown_2022984
+_080BB23C: .4byte gUnknown_2022986
+_080BB240: .4byte 0x00003f3f
+_080BB244: .4byte 0x00003f3d
+_080BB248: .4byte 0x00003f42
+_080BB24C: .4byte gSprites
+_080BB250: .4byte gBattlerSpriteIds
+_080BB254: .4byte gBattlerPartyIndexes
+_080BB258: .4byte gEnemyParty
+_080BB25C:
+ ldr r1, _080BB290 @ =gBattlerPartyIndexes
+ ldr r0, [r4]
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080BB294 @ =gPlayerParty
+_080BB26E:
+ adds r0, r1
+ movs r1, 0xB
+ bl GetMonData
+ ldr r1, [r4]
+ strh r0, [r1, 0x14]
+ ldr r0, _080BB298 @ =gTasks
+ lsls r1, r6, 2
+ adds r1, r6
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080BB29C @ =sub_80BB2A0
+ str r0, [r1]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BB290: .4byte gBattlerPartyIndexes
+_080BB294: .4byte gPlayerParty
+_080BB298: .4byte gTasks
+_080BB29C: .4byte sub_80BB2A0
+ thumb_func_end sub_80BB0D8
+
+ thumb_func_start sub_80BB2A0
+sub_80BB2A0: @ 80BB2A0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r0, 0
+ mov r8, r0
+ ldr r6, _080BB300 @ =gBattlerSpriteIds
+ ldr r4, _080BB304 @ =gUnknown_20399B4
+ ldr r2, [r4]
+ ldrb r0, [r2]
+ adds r1, r0, r6
+ ldrb r1, [r1]
+ ldrh r2, [r2, 0x14]
+ bl sub_8076E34
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r2, [r4]
+ movs r1, 0xA
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ beq _080BB2E2
+ ldrb r0, [r2, 0x1]
+ adds r1, r0, r6
+ ldrb r1, [r1]
+ ldrh r2, [r2, 0x14]
+ bl sub_8076E34
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+_080BB2E2:
+ mov r0, sp
+ bl sub_80752A0
+ ldr r0, [r4]
+ movs r4, 0x4
+ ldrsh r0, [r0, r4]
+ cmp r0, 0
+ bne _080BB30C
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080BB308 @ =gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap
+ bl sub_807543C
+ b _080BB316
+ .align 2, 0
+_080BB300: .4byte gBattlerSpriteIds
+_080BB304: .4byte gUnknown_20399B4
+_080BB308: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap
+_080BB30C:
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080BB354 @ =gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap
+ bl sub_807543C
+_080BB316:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BB32E
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80730C0
+_080BB32E:
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080BB358 @ =gFile_graphics_battle_anims_masks_stat_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080BB35C @ =gUnknown_20399B4
+ ldr r0, [r0]
+ movs r1, 0x6
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x6
+ bhi _080BB3C4
+ lsls r0, 2
+ ldr r1, _080BB360 @ =_080BB364
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080BB354: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap
+_080BB358: .4byte gFile_graphics_battle_anims_masks_stat_sheet
+_080BB35C: .4byte gUnknown_20399B4
+_080BB360: .4byte _080BB364
+ .align 2, 0
+_080BB364:
+ .4byte _080BB380
+ .4byte _080BB388
+ .4byte _080BB390
+ .4byte _080BB398
+ .4byte _080BB3A0
+ .4byte _080BB3A8
+ .4byte _080BB3B0
+_080BB380:
+ ldr r0, _080BB384 @ =gFile_graphics_battle_anims_masks_stat2_palette
+ b _080BB3B2
+ .align 2, 0
+_080BB384: .4byte gFile_graphics_battle_anims_masks_stat2_palette
+_080BB388:
+ ldr r0, _080BB38C @ =gFile_graphics_battle_anims_masks_stat1_palette
+ b _080BB3B2
+ .align 2, 0
+_080BB38C: .4byte gFile_graphics_battle_anims_masks_stat1_palette
+_080BB390:
+ ldr r0, _080BB394 @ =gFile_graphics_battle_anims_masks_stat3_palette
+ b _080BB3B2
+ .align 2, 0
+_080BB394: .4byte gFile_graphics_battle_anims_masks_stat3_palette
+_080BB398:
+ ldr r0, _080BB39C @ =gFile_graphics_battle_anims_masks_stat4_palette
+ b _080BB3B2
+ .align 2, 0
+_080BB39C: .4byte gFile_graphics_battle_anims_masks_stat4_palette
+_080BB3A0:
+ ldr r0, _080BB3A4 @ =gFile_graphics_battle_anims_masks_stat6_palette
+ b _080BB3B2
+ .align 2, 0
+_080BB3A4: .4byte gFile_graphics_battle_anims_masks_stat6_palette
+_080BB3A8:
+ ldr r0, _080BB3AC @ =gFile_graphics_battle_anims_masks_stat7_palette
+ b _080BB3B2
+ .align 2, 0
+_080BB3AC: .4byte gFile_graphics_battle_anims_masks_stat7_palette
+_080BB3B0:
+ ldr r0, _080BB3C0 @ =gFile_graphics_battle_anims_masks_stat8_palette
+_080BB3B2:
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ b _080BB3D2
+ .align 2, 0
+_080BB3C0: .4byte gFile_graphics_battle_anims_masks_stat8_palette
+_080BB3C4:
+ ldr r0, _080BB3FC @ =gFile_graphics_battle_anims_masks_stat5_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+_080BB3D2:
+ ldr r3, _080BB400 @ =gBattle_BG1_X
+ movs r2, 0
+ strh r2, [r3]
+ ldr r0, _080BB404 @ =gBattle_BG1_Y
+ strh r2, [r0]
+ ldr r1, _080BB408 @ =gUnknown_20399B4
+ ldr r0, [r1]
+ movs r4, 0x4
+ ldrsh r0, [r0, r4]
+ adds r4, r1, 0
+ cmp r0, 0x1
+ bne _080BB414
+ movs r0, 0x40
+ strh r0, [r3]
+ ldr r2, _080BB40C @ =gTasks
+ lsls r3, r5, 2
+ adds r0, r3, r5
+ lsls r0, 3
+ adds r0, r2
+ ldr r1, _080BB410 @ =0x0000fffd
+ b _080BB420
+ .align 2, 0
+_080BB3FC: .4byte gFile_graphics_battle_anims_masks_stat5_palette
+_080BB400: .4byte gBattle_BG1_X
+_080BB404: .4byte gBattle_BG1_Y
+_080BB408: .4byte gUnknown_20399B4
+_080BB40C: .4byte gTasks
+_080BB410: .4byte 0x0000fffd
+_080BB414:
+ ldr r2, _080BB43C @ =gTasks
+ lsls r3, r5, 2
+ adds r0, r3, r5
+ lsls r0, 3
+ adds r0, r2
+ movs r1, 0x3
+_080BB420:
+ strh r1, [r0, 0xA]
+ ldr r0, [r4]
+ movs r1, 0xC
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080BB440
+ adds r0, r3, r5
+ lsls r0, 3
+ adds r0, r2
+ movs r1, 0xA
+ strh r1, [r0, 0x10]
+ movs r1, 0x14
+ b _080BB44C
+ .align 2, 0
+_080BB43C: .4byte gTasks
+_080BB440:
+ adds r0, r3, r5
+ lsls r0, 3
+ adds r0, r2
+ movs r1, 0xD
+ strh r1, [r0, 0x10]
+ movs r1, 0x1E
+_080BB44C:
+ strh r1, [r0, 0x12]
+ adds r1, r3, r5
+ lsls r1, 3
+ adds r1, r2
+ strh r7, [r1, 0x8]
+ ldr r3, [r4]
+ ldrh r0, [r3, 0xA]
+ strh r0, [r1, 0xC]
+ mov r4, r8
+ strh r4, [r1, 0xE]
+ ldrb r0, [r3, 0x2]
+ strh r0, [r1, 0x14]
+ ldr r2, _080BB490 @ =gBattlerSpriteIds
+ ldrb r0, [r3, 0x1]
+ adds r0, r2
+ ldrb r0, [r0]
+ strh r0, [r1, 0x16]
+ ldr r0, _080BB494 @ =sub_80BB4B8
+ str r0, [r1]
+ movs r1, 0x4
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ bne _080BB498
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073B08
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xE8
+ bl PlaySE12WithPanning
+ b _080BB4AC
+ .align 2, 0
+_080BB490: .4byte gBattlerSpriteIds
+_080BB494: .4byte sub_80BB4B8
+_080BB498:
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073B08
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xEE
+ bl PlaySE12WithPanning
+_080BB4AC:
+ add sp, 0x10
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80BB2A0
+
+ thumb_func_start sub_80BB4B8
+sub_80BB4B8: @ 80BB4B8
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r2, _080BB4E4 @ =gBattle_BG1_Y
+ ldr r1, _080BB4E8 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrh r0, [r5, 0xA]
+ ldrh r1, [r2]
+ adds r0, r1
+ strh r0, [r2]
+ movs r0, 0x26
+ ldrsh r2, [r5, r0]
+ cmp r2, 0x1
+ beq _080BB52E
+ cmp r2, 0x1
+ bgt _080BB4EC
+ cmp r2, 0
+ beq _080BB4F6
+ b _080BB644
+ .align 2, 0
+_080BB4E4: .4byte gBattle_BG1_Y
+_080BB4E8: .4byte gTasks
+_080BB4EC:
+ cmp r2, 0x2
+ beq _080BB544
+ cmp r2, 0x3
+ beq _080BB582
+ b _080BB644
+_080BB4F6:
+ ldrh r0, [r5, 0x1E]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0x1E]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080BB504
+ b _080BB644
+_080BB504:
+ strh r2, [r5, 0x1E]
+ ldrh r1, [r5, 0x20]
+ adds r1, 0x1
+ strh r1, [r5, 0x20]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0x20
+ ldrsh r1, [r5, r2]
+ movs r2, 0x10
+ ldrsh r0, [r5, r2]
+ cmp r1, r0
+ beq _080BB52C
+ b _080BB644
+_080BB52C:
+ b _080BB57A
+_080BB52E:
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x1
+ strh r0, [r5, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x12
+ ldrsh r1, [r5, r2]
+ cmp r0, r1
+ beq _080BB542
+ b _080BB644
+_080BB542:
+ b _080BB57A
+_080BB544:
+ ldrh r0, [r5, 0x1E]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0x1E]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080BB644
+ movs r0, 0
+ strh r0, [r5, 0x1E]
+ ldrh r1, [r5, 0x20]
+ subs r1, 0x1
+ strh r1, [r5, 0x20]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x20
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080BB644
+ movs r0, 0
+ bl sub_8073128
+_080BB57A:
+ ldrh r0, [r5, 0x26]
+ adds r0, 0x1
+ strh r0, [r5, 0x26]
+ b _080BB644
+_080BB582:
+ ldr r0, _080BB64C @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080BB650 @ =gUnknown_2022986
+ strh r1, [r0]
+ ldr r4, _080BB654 @ =0x00003f3f
+ movs r0, 0x48
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ adds r1, r4, 0
+ bl SetGpuReg
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BB5B2
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080BB5B2:
+ movs r0, 0
+ bl GetGpuReg
+ adds r1, r0, 0
+ movs r2, 0x80
+ lsls r2, 8
+ adds r0, r2, 0
+ eors r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0
+ bl SetGpuReg
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r4, _080BB658 @ =gSprites
+ adds r0, r4
+ bl DestroySprite
+ movs r1, 0xC
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _080BB606
+ movs r2, 0xE
+ ldrsh r1, [r5, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ bl DestroySprite
+_080BB606:
+ movs r1, 0x14
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _080BB632
+ movs r2, 0x16
+ ldrsh r0, [r5, r2]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r4
+ 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]
+_080BB632:
+ ldr r4, _080BB65C @ =gUnknown_20399B4
+ ldr r0, [r4]
+ bl Free
+ movs r0, 0
+ str r0, [r4]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080BB644:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BB64C: .4byte gUnknown_2022984
+_080BB650: .4byte gUnknown_2022986
+_080BB654: .4byte 0x00003f3f
+_080BB658: .4byte gSprites
+_080BB65C: .4byte gUnknown_20399B4
+ thumb_func_end sub_80BB4B8
+
+ thumb_func_start sub_80BB660
+sub_80BB660: @ 80BB660
+ push {r4-r6,lr}
+ sub sp, 0xC
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_8075CB8
+ adds r6, r0, 0
+ movs r1, 0
+ bl sub_80BB790
+ ldr r0, _080BB6C0 @ =gTasks
+ lsls r4, r5, 2
+ adds r4, r5
+ lsls r4, 3
+ adds r4, r0
+ lsrs r0, r6, 16
+ movs r5, 0
+ strh r0, [r4, 0x24]
+ str r5, [sp]
+ str r5, [sp, 0x4]
+ str r5, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl sub_8075BE8
+ adds r6, r0, 0
+ ldr r1, _080BB6C4 @ =0x0000ffff
+ ands r6, r1
+ adds r0, r6, 0
+ bl sub_80BB790
+ strh r6, [r4, 0x26]
+ strh r5, [r4, 0x8]
+ strh r5, [r4, 0xA]
+ ldr r0, _080BB6C8 @ =sub_80BB6CC
+ str r0, [r4]
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BB6C0: .4byte gTasks
+_080BB6C4: .4byte 0x0000ffff
+_080BB6C8: .4byte sub_80BB6CC
+ thumb_func_end sub_80BB660
+
+ thumb_func_start sub_80BB6CC
+sub_80BB6CC: @ 80BB6CC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080BB6F0 @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ cmp r1, 0x1
+ beq _080BB710
+ cmp r1, 0x1
+ bgt _080BB6F4
+ cmp r1, 0
+ beq _080BB6FA
+ b _080BB78A
+ .align 2, 0
+_080BB6F0: .4byte gTasks
+_080BB6F4:
+ cmp r1, 0x2
+ beq _080BB784
+ b _080BB78A
+_080BB6FA:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ ble _080BB78A
+ strh r1, [r4, 0xA]
+ movs r0, 0x10
+ strh r0, [r4, 0xC]
+ b _080BB778
+_080BB710:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080BB78A
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0xC]
+ subs r0, 0x1
+ strh r0, [r4, 0xC]
+ movs r5, 0
+ movs r6, 0x1
+_080BB72C:
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ asrs r0, r5
+ ands r0, r6
+ cmp r0, 0
+ beq _080BB746
+ lsls r0, r5, 20
+ lsrs r0, 16
+ ldrb r2, [r4, 0xC]
+ movs r1, 0x10
+ ldr r3, _080BB780 @ =0x0000ffff
+ bl BlendPalette
+_080BB746:
+ movs r1, 0x24
+ ldrsh r0, [r4, r1]
+ asrs r0, r5
+ ands r0, r6
+ cmp r0, 0
+ beq _080BB766
+ lsls r0, r5, 20
+ movs r1, 0x80
+ lsls r1, 17
+ adds r0, r1
+ lsrs r0, 16
+ ldrb r2, [r4, 0xC]
+ movs r1, 0x10
+ movs r3, 0
+ bl BlendPalette
+_080BB766:
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0xF
+ bls _080BB72C
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080BB78A
+_080BB778:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080BB78A
+ .align 2, 0
+_080BB780: .4byte 0x0000ffff
+_080BB784:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080BB78A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80BB6CC
+
+ thumb_func_start sub_80BB790
+sub_80BB790: @ 80BB790
+ push {r4-r6,lr}
+ adds r3, r0, 0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ movs r2, 0
+_080BB79A:
+ movs r0, 0x1
+ ands r0, r3
+ lsrs r4, r3, 1
+ adds r5, r2, 0x1
+ cmp r0, 0
+ beq _080BB7C6
+ lsls r0, r2, 20
+ lsrs r2, r0, 16
+ adds r0, r2, 0
+ adds r0, 0x10
+ cmp r2, r0
+ bge _080BB7C6
+ ldr r1, _080BB7D8 @ =gPlttBufferFaded
+ adds r3, r0, 0
+_080BB7B6:
+ lsls r0, r2, 1
+ adds r0, r1
+ strh r6, [r0]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, r3
+ blt _080BB7B6
+_080BB7C6:
+ adds r3, r4, 0
+ lsls r0, r5, 16
+ lsrs r2, r0, 16
+ cmp r2, 0x1F
+ bls _080BB79A
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BB7D8: .4byte gPlttBufferFaded
+ thumb_func_end sub_80BB790
+
+ thumb_func_start sub_80BB7DC
+sub_80BB7DC: @ 80BB7DC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r4, 0
+ movs r2, 0
+ ldr r0, _080BB824 @ =gBattleAnimAttacker
+ ldrb r3, [r0]
+ movs r5, 0x1
+_080BB7EC:
+ cmp r3, r2
+ beq _080BB7FA
+ adds r1, r2, 0
+ adds r1, 0x10
+ adds r0, r5, 0
+ lsls r0, r1
+ orrs r4, r0
+_080BB7FA:
+ adds r2, 0x1
+ cmp r2, 0x3
+ bls _080BB7EC
+ movs r2, 0x5
+ ldr r0, _080BB828 @ =gBattleAnimArgs
+ adds r1, r0, 0
+ adds r1, 0x8
+_080BB808:
+ ldrh r0, [r1]
+ strh r0, [r1, 0x2]
+ subs r1, 0x2
+ subs r2, 0x1
+ cmp r2, 0
+ bne _080BB808
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80BAA4C
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BB824: .4byte gBattleAnimAttacker
+_080BB828: .4byte gBattleAnimArgs
+ thumb_func_end sub_80BB7DC
+
+ thumb_func_start sub_80BB82C
+sub_80BB82C: @ 80BB82C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r0, 0
+ bl sub_8075458
+ ldr r0, _080BB894 @ =sub_80BB8A4
+ movs r1, 0x5
+ bl CreateTask
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r4, _080BB898 @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080BB868
+ ldr r0, _080BB89C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BB868
+ ldrh r0, [r4]
+ negs r0, r0
+ strh r0, [r4]
+ ldrh r0, [r4, 0x2]
+ negs r0, r0
+ strh r0, [r4, 0x2]
+_080BB868:
+ ldr r0, _080BB8A0 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r2, _080BB898 @ =gBattleAnimArgs
+ ldrh r0, [r2]
+ strh r0, [r1, 0xA]
+ ldrh r0, [r2, 0x2]
+ strh r0, [r1, 0xC]
+ ldrh r0, [r2, 0x6]
+ strh r0, [r1, 0xE]
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BB894: .4byte sub_80BB8A4
+_080BB898: .4byte gBattleAnimArgs
+_080BB89C: .4byte gBattleAnimAttacker
+_080BB8A0: .4byte gTasks
+ thumb_func_end sub_80BB82C
+
+ thumb_func_start sub_80BB8A4
+sub_80BB8A4: @ 80BB8A4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _080BB910 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldrh r3, [r1, 0xA]
+ ldrh r0, [r1, 0x1C]
+ adds r3, r0
+ movs r4, 0
+ mov r12, r4
+ strh r3, [r1, 0x1C]
+ ldrh r2, [r1, 0xC]
+ ldrh r7, [r1, 0x1E]
+ adds r2, r7
+ strh r2, [r1, 0x1E]
+ ldr r6, _080BB914 @ =gBattle_BG3_X
+ lsls r0, r3, 16
+ asrs r0, 24
+ ldrh r4, [r6]
+ adds r0, r4
+ strh r0, [r6]
+ ldr r4, _080BB918 @ =gBattle_BG3_Y
+ lsls r0, r2, 16
+ asrs r0, 24
+ ldrh r7, [r4]
+ adds r0, r7
+ strh r0, [r4]
+ movs r0, 0xFF
+ ands r3, r0
+ strh r3, [r1, 0x1C]
+ ands r2, r0
+ strh r2, [r1, 0x1E]
+ ldr r0, _080BB91C @ =gBattleAnimArgs
+ movs r3, 0xE
+ ldrsh r2, [r0, r3]
+ movs r7, 0xE
+ ldrsh r0, [r1, r7]
+ cmp r2, r0
+ bne _080BB90A
+ mov r0, r12
+ strh r0, [r6]
+ strh r0, [r4]
+ movs r0, 0x1
+ bl sub_8075458
+ adds r0, r5, 0
+ bl DestroyTask
+_080BB90A:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BB910: .4byte gTasks
+_080BB914: .4byte gBattle_BG3_X
+_080BB918: .4byte gBattle_BG3_Y
+_080BB91C: .4byte gBattleAnimArgs
+ thumb_func_end sub_80BB8A4
+
+ thumb_func_start sub_80BB920
+sub_80BB920: @ 80BB920
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080BB944 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ ldr r1, _080BB948 @ =gBattleAnimArgs
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r1, 0xE]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BB944: .4byte gBattleAnimAttacker
+_080BB948: .4byte gBattleAnimArgs
+ thumb_func_end sub_80BB920
+
+ thumb_func_start sub_80BB94C
+sub_80BB94C: @ 80BB94C
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080BB970 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ ldr r1, _080BB974 @ =gBattleAnimArgs
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r1, 0xE]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BB970: .4byte gBattleAnimTarget
+_080BB974: .4byte gBattleAnimArgs
+ thumb_func_end sub_80BB94C
+
+ thumb_func_start sub_80BB978
+sub_80BB978: @ 80BB978
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r5, _080BB9A4 @ =gBattleAnimArgs
+ movs r4, 0
+ ldr r0, _080BB9A8 @ =gBattleAnimAttacker
+ ldrb r2, [r0]
+ movs r0, 0x2
+ ldr r1, _080BB9AC @ =gBattleAnimTarget
+ eors r0, r2
+ ldrb r1, [r1]
+ cmp r0, r1
+ bne _080BB994
+ movs r4, 0x1
+_080BB994:
+ strh r4, [r5, 0xE]
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BB9A4: .4byte gBattleAnimArgs
+_080BB9A8: .4byte gBattleAnimAttacker
+_080BB9AC: .4byte gBattleAnimTarget
+ thumb_func_end sub_80BB978
+
+ thumb_func_start sub_80BB9B0
+sub_80BB9B0: @ 80BB9B0
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r6, _080BBA10 @ =gSprites
+_080BB9BA:
+ ldr r0, _080BBA14 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ cmp r4, r0
+ beq _080BB9F8
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BB9F8
+ ldr r0, _080BBA18 @ =gBattlerSpriteIds
+ adds r0, r4, r0
+ ldrb r0, [r0]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r6
+ ldr r1, _080BBA1C @ =gBattleAnimArgs
+ adds r2, 0x3E
+ movs r0, 0x1
+ ldrb r3, [r1]
+ ands r3, r0
+ lsls r3, 2
+ ldrb r0, [r2]
+ movs r7, 0x5
+ negs r7, r7
+ adds r1, r7, 0
+ ands r0, r1
+ orrs r0, r3
+ strb r0, [r2]
+_080BB9F8:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x3
+ bls _080BB9BA
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BBA10: .4byte gSprites
+_080BBA14: .4byte gBattleAnimAttacker
+_080BBA18: .4byte gBattlerSpriteIds
+_080BBA1C: .4byte gBattleAnimArgs
+ thumb_func_end sub_80BB9B0
+
+ thumb_func_start sub_80BBA20
+sub_80BBA20: @ 80BBA20
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x24
+ ldr r1, [sp, 0x44]
+ ldr r4, [sp, 0x48]
+ ldr r5, [sp, 0x4C]
+ ldr r6, [sp, 0x50]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ lsls r2, 16
+ lsrs r2, 16
+ str r2, [sp, 0x14]
+ lsls r3, 24
+ lsrs r7, r3, 24
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ lsls r4, 24
+ lsrs r4, 24
+ str r4, [sp, 0x18]
+ lsls r5, 24
+ lsrs r5, 24
+ str r5, [sp, 0x1C]
+ lsls r6, 24
+ lsrs r6, 24
+ mov r10, r6
+ movs r0, 0
+ str r0, [sp, 0x20]
+ movs r0, 0x2
+ adds r6, r7, 0
+ eors r6, r0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BBA82
+ mov r1, r8
+ cmp r1, 0
+ beq _080BBA86
+ adds r0, r6, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BBA86
+_080BBA82:
+ movs r2, 0
+ mov r8, r2
+_080BBA86:
+ ldr r0, _080BBB20 @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080BBB24 @ =gUnknown_2022986
+ strh r1, [r0]
+ ldr r1, _080BBB28 @ =0x00003f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r1, _080BBB2C @ =0x00003f3d
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 8
+ movs r0, 0
+ bl SetGpuRegBits
+ ldr r1, _080BBB30 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0xA
+ bl GetGpuReg
+ add r4, sp, 0x10
+ strh r0, [r4]
+ ldrb r1, [r4]
+ movs r0, 0x4
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4]
+ mov r2, sp
+ adds r2, 0x11
+ ldrb r1, [r2]
+ movs r0, 0x3F
+ ands r0, r1
+ strb r0, [r2]
+ ldrb r0, [r2]
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r2]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BBAFC
+ ldrb r0, [r4]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x4
+ orrs r1, r0
+ strb r1, [r4]
+_080BBAFC:
+ ldrh r1, [r4]
+ movs r0, 0xA
+ bl SetGpuReg
+ adds r0, r7, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BBB3C
+ ldr r1, _080BBB34 @ =gBattlerPartyIndexes
+ lsls r0, r7, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080BBB38 @ =gEnemyParty
+ b _080BBB4A
+ .align 2, 0
+_080BBB20: .4byte gUnknown_2022984
+_080BBB24: .4byte gUnknown_2022986
+_080BBB28: .4byte 0x00003f3f
+_080BBB2C: .4byte 0x00003f3d
+_080BBB30: .4byte 0x00003f42
+_080BBB34: .4byte gBattlerPartyIndexes
+_080BBB38: .4byte gEnemyParty
+_080BBB3C:
+ ldr r1, _080BBC10 @ =gBattlerPartyIndexes
+ lsls r0, r7, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080BBC14 @ =gPlayerParty
+_080BBB4A:
+ adds r0, r1
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldr r5, _080BBC18 @ =gBattlerSpriteIds
+ adds r0, r7, r5
+ ldrb r1, [r0]
+ adds r0, r7, 0
+ adds r2, r4, 0
+ bl sub_8076E34
+ lsls r0, 24
+ lsrs r7, r0, 24
+ mov r0, r8
+ cmp r0, 0
+ beq _080BBB80
+ adds r0, r6, r5
+ ldrb r1, [r0]
+ adds r0, r6, 0
+ adds r2, r4, 0
+ bl sub_8076E34
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x20]
+_080BBB80:
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, [sp, 0x58]
+ bl sub_807543C
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BBBA8
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80730C0
+_080BBBA8:
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ mov r1, sp
+ ldrh r2, [r1, 0xA]
+ ldr r1, [sp, 0x54]
+ bl sub_80753B4
+ mov r0, sp
+ ldrb r1, [r0, 0x8]
+ lsls r1, 4
+ ldr r0, [sp, 0x5C]
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ ldr r0, _080BBC1C @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080BBC20 @ =gBattle_BG1_Y
+ strh r1, [r0]
+ ldr r1, _080BBC24 @ =gTasks
+ mov r2, r9
+ lsls r0, r2, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ mov r1, sp
+ ldrh r1, [r1, 0x14]
+ strh r1, [r0, 0xA]
+ mov r2, sp
+ ldrh r2, [r2, 0x18]
+ strh r2, [r0, 0x10]
+ mov r1, r10
+ strh r1, [r0, 0x12]
+ mov r2, sp
+ ldrh r2, [r2, 0x1C]
+ strh r2, [r0, 0x14]
+ strh r7, [r0, 0x8]
+ mov r1, r8
+ strh r1, [r0, 0xC]
+ mov r2, sp
+ ldrh r2, [r2, 0x20]
+ strh r2, [r0, 0xE]
+ ldr r1, _080BBC28 @ =sub_80BBC2C
+ str r1, [r0]
+ 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
+_080BBC10: .4byte gBattlerPartyIndexes
+_080BBC14: .4byte gPlayerParty
+_080BBC18: .4byte gBattlerSpriteIds
+_080BBC1C: .4byte gBattle_BG1_X
+_080BBC20: .4byte gBattle_BG1_Y
+_080BBC24: .4byte gTasks
+_080BBC28: .4byte sub_80BBC2C
+ thumb_func_end sub_80BBA20
+
+ thumb_func_start sub_80BBC2C
+sub_80BBC2C: @ 80BBC2C
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080BBC68 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r3, r0, r1
+ movs r0, 0xA
+ ldrsh r2, [r3, r0]
+ adds r5, r1, 0
+ cmp r2, 0
+ bge _080BBC4A
+ negs r2, r2
+_080BBC4A:
+ ldrh r0, [r3, 0x22]
+ adds r4, r0, r2
+ strh r4, [r3, 0x22]
+ movs r1, 0xA
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ bge _080BBC70
+ ldr r2, _080BBC6C @ =gBattle_BG1_Y
+ lsls r1, r4, 16
+ asrs r1, 24
+ ldrh r0, [r2]
+ subs r0, r1
+ strh r0, [r2]
+ b _080BBC7C
+ .align 2, 0
+_080BBC68: .4byte gTasks
+_080BBC6C: .4byte gBattle_BG1_Y
+_080BBC70:
+ ldr r1, _080BBCA0 @ =gBattle_BG1_Y
+ lsls r0, r4, 16
+ asrs r0, 24
+ ldrh r2, [r1]
+ adds r0, r2
+ strh r0, [r1]
+_080BBC7C:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r5, r0, r5
+ ldrh r1, [r5, 0x22]
+ movs r0, 0xFF
+ ands r0, r1
+ movs r2, 0
+ strh r0, [r5, 0x22]
+ movs r3, 0x26
+ ldrsh r0, [r5, r3]
+ cmp r0, 0x1
+ beq _080BBCE6
+ cmp r0, 0x1
+ bgt _080BBCA4
+ cmp r0, 0
+ beq _080BBCAA
+ b _080BBDD8
+ .align 2, 0
+_080BBCA0: .4byte gBattle_BG1_Y
+_080BBCA4:
+ cmp r0, 0x2
+ beq _080BBD00
+ b _080BBDD8
+_080BBCAA:
+ ldrh r0, [r5, 0x1E]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x14
+ ldrsh r1, [r5, r3]
+ cmp r0, r1
+ bge _080BBCBE
+ b _080BBDD8
+_080BBCBE:
+ strh r2, [r5, 0x1E]
+ ldrh r1, [r5, 0x20]
+ adds r1, 0x1
+ strh r1, [r5, 0x20]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x20
+ ldrsh r1, [r5, r0]
+ movs r2, 0x10
+ ldrsh r0, [r5, r2]
+ cmp r1, r0
+ bne _080BBDD8
+ b _080BBCF8
+_080BBCE6:
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x1
+ strh r0, [r5, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x12
+ ldrsh r1, [r5, r3]
+ cmp r0, r1
+ bne _080BBDD8
+_080BBCF8:
+ ldrh r0, [r5, 0x26]
+ adds r0, 0x1
+ strh r0, [r5, 0x26]
+ b _080BBDD8
+_080BBD00:
+ ldrh r0, [r5, 0x1E]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x14
+ ldrsh r1, [r5, r3]
+ cmp r0, r1
+ blt _080BBDD8
+ strh r2, [r5, 0x1E]
+ ldrh r1, [r5, 0x20]
+ subs r1, 0x1
+ strh r1, [r5, 0x20]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x20
+ ldrsh r4, [r5, r0]
+ cmp r4, 0
+ bne _080BBDD8
+ movs r0, 0
+ bl sub_8073128
+ ldr r0, _080BBDE0 @ =gUnknown_2022984
+ strh r4, [r0]
+ ldr r0, _080BBDE4 @ =gUnknown_2022986
+ strh r4, [r0]
+ ldr r4, _080BBDE8 @ =0x00003f3f
+ movs r0, 0x48
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ adds r1, r4, 0
+ bl SetGpuReg
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BBD7E
+ movs r0, 0xA
+ bl GetGpuReg
+ mov r1, sp
+ strh r0, [r1]
+ mov r2, sp
+ ldrb r1, [r2]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ mov r0, sp
+ ldrh r1, [r0]
+ movs r0, 0xA
+ bl SetGpuReg
+_080BBD7E:
+ movs r0, 0
+ bl GetGpuReg
+ adds r1, r0, 0
+ movs r2, 0x80
+ lsls r2, 8
+ adds r0, r2, 0
+ eors r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0
+ bl SetGpuReg
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r3, 0x8
+ ldrsh r1, [r5, r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r4, _080BBDEC @ =gSprites
+ adds r0, r4
+ bl DestroySprite
+ movs r1, 0xC
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _080BBDD2
+ movs r2, 0xE
+ ldrsh r1, [r5, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ bl DestroySprite
+_080BBDD2:
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080BBDD8:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BBDE0: .4byte gUnknown_2022984
+_080BBDE4: .4byte gUnknown_2022986
+_080BBDE8: .4byte 0x00003f3f
+_080BBDEC: .4byte gSprites
+ thumb_func_end sub_80BBC2C
+
+ thumb_func_start sub_80BBDF0
+sub_80BBDF0: @ 80BBDF0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080BBE08 @ =gBattleAnimArgs
+ ldr r1, _080BBE0C @ =gUnknown_2022B50
+ ldrb r1, [r1]
+ strh r1, [r2]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BBE08: .4byte gBattleAnimArgs
+_080BBE0C: .4byte gUnknown_2022B50
+ thumb_func_end sub_80BBDF0
+
+ thumb_func_start sub_80BBE10
+sub_80BBE10: @ 80BBE10
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x80
+ lsls r0, 6
+ bl AllocZeroed
+ ldr r1, _080BBE38 @ =gMonSpritesGfxPtr
+ ldr r1, [r1]
+ movs r2, 0xBE
+ lsls r2, 1
+ adds r1, r2
+ str r0, [r1]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BBE38: .4byte gMonSpritesGfxPtr
+ thumb_func_end sub_80BBE10
+
+ thumb_func_start sub_80BBE3C
+sub_80BBE3C: @ 80BBE3C
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r6, _080BBE68 @ =gMonSpritesGfxPtr
+ ldr r0, [r6]
+ movs r5, 0xBE
+ lsls r5, 1
+ adds r0, r5
+ ldr r0, [r0]
+ bl Free
+ ldr r0, [r6]
+ adds r0, r5
+ movs r1, 0
+ str r1, [r0]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BBE68: .4byte gMonSpritesGfxPtr
+ thumb_func_end sub_80BBE3C
+
+ thumb_func_start sub_80BBE6C
+sub_80BBE6C: @ 80BBE6C
+ push {r4,r5,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r0, _080BBEAC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080BBEB0
+ str r4, [sp]
+ str r4, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl sub_8075BE8
+ adds r1, r0, 0
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080BBEC8
+ movs r2, 0x1
+_080BBE9E:
+ lsrs r1, 1
+ adds r4, 0x1
+ adds r0, r1, 0
+ ands r0, r2
+ cmp r0, 0
+ beq _080BBE9E
+ b _080BBEC8
+ .align 2, 0
+_080BBEAC: .4byte gBattleAnimArgs
+_080BBEB0:
+ cmp r0, 0x1
+ bne _080BBEBC
+ ldr r0, _080BBEB8 @ =gBattleAnimAttacker
+ b _080BBEC2
+ .align 2, 0
+_080BBEB8: .4byte gBattleAnimAttacker
+_080BBEBC:
+ cmp r0, 0x2
+ bne _080BBEC8
+ ldr r0, _080BBEF8 @ =gBattleAnimTarget
+_080BBEC2:
+ ldrb r0, [r0]
+ adds r4, r0, 0
+ adds r4, 0x10
+_080BBEC8:
+ ldr r0, _080BBEFC @ =gMonSpritesGfxPtr
+ ldr r1, [r0]
+ ldr r0, _080BBF00 @ =gBattleAnimArgs
+ movs r2, 0x2
+ ldrsh r0, [r0, r2]
+ movs r2, 0xBE
+ lsls r2, 1
+ adds r1, r2
+ ldr r1, [r1]
+ lsls r0, 5
+ adds r0, r1
+ lsls r1, r4, 5
+ ldr r2, _080BBF04 @ =gPlttBufferUnfaded
+ adds r1, r2
+ movs r2, 0x20
+ bl memcpy
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BBEF8: .4byte gBattleAnimTarget
+_080BBEFC: .4byte gMonSpritesGfxPtr
+_080BBF00: .4byte gBattleAnimArgs
+_080BBF04: .4byte gPlttBufferUnfaded
+ thumb_func_end sub_80BBE6C
+
+ thumb_func_start sub_80BBF08
+sub_80BBF08: @ 80BBF08
+ push {r4,r5,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r0, _080BBF48 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080BBF4C
+ str r4, [sp]
+ str r4, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl sub_8075BE8
+ adds r1, r0, 0
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080BBF64
+ movs r2, 0x1
+_080BBF3A:
+ lsrs r1, 1
+ adds r4, 0x1
+ adds r0, r1, 0
+ ands r0, r2
+ cmp r0, 0
+ beq _080BBF3A
+ b _080BBF64
+ .align 2, 0
+_080BBF48: .4byte gBattleAnimArgs
+_080BBF4C:
+ cmp r0, 0x1
+ bne _080BBF58
+ ldr r0, _080BBF54 @ =gBattleAnimAttacker
+ b _080BBF5E
+ .align 2, 0
+_080BBF54: .4byte gBattleAnimAttacker
+_080BBF58:
+ cmp r0, 0x2
+ bne _080BBF64
+ ldr r0, _080BBF94 @ =gBattleAnimTarget
+_080BBF5E:
+ ldrb r0, [r0]
+ adds r4, r0, 0
+ adds r4, 0x10
+_080BBF64:
+ lsls r0, r4, 5
+ ldr r1, _080BBF98 @ =gPlttBufferUnfaded
+ adds r0, r1
+ ldr r1, _080BBF9C @ =gMonSpritesGfxPtr
+ ldr r2, [r1]
+ ldr r1, _080BBFA0 @ =gBattleAnimArgs
+ movs r3, 0x2
+ ldrsh r1, [r1, r3]
+ movs r3, 0xBE
+ lsls r3, 1
+ adds r2, r3
+ ldr r2, [r2]
+ lsls r1, 5
+ adds r1, r2
+ movs r2, 0x20
+ bl memcpy
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BBF94: .4byte gBattleAnimTarget
+_080BBF98: .4byte gPlttBufferUnfaded
+_080BBF9C: .4byte gMonSpritesGfxPtr
+_080BBFA0: .4byte gBattleAnimArgs
+ thumb_func_end sub_80BBF08
+
+ thumb_func_start sub_80BBFA4
+sub_80BBFA4: @ 80BBFA4
+ push {r4,r5,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r0, _080BBFE4 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080BBFE8
+ str r4, [sp]
+ str r4, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl sub_8075BE8
+ adds r1, r0, 0
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080BC000
+ movs r2, 0x1
+_080BBFD6:
+ lsrs r1, 1
+ adds r4, 0x1
+ adds r0, r1, 0
+ ands r0, r2
+ cmp r0, 0
+ beq _080BBFD6
+ b _080BC000
+ .align 2, 0
+_080BBFE4: .4byte gBattleAnimArgs
+_080BBFE8:
+ cmp r0, 0x1
+ bne _080BBFF4
+ ldr r0, _080BBFF0 @ =gBattleAnimAttacker
+ b _080BBFFA
+ .align 2, 0
+_080BBFF0: .4byte gBattleAnimAttacker
+_080BBFF4:
+ cmp r0, 0x2
+ bne _080BC000
+ ldr r0, _080BC020 @ =gBattleAnimTarget
+_080BBFFA:
+ ldrb r0, [r0]
+ adds r4, r0, 0
+ adds r4, 0x10
+_080BC000:
+ lsls r1, r4, 5
+ ldr r0, _080BC024 @ =gPlttBufferUnfaded
+ adds r0, r1, r0
+ ldr r2, _080BC028 @ =gPlttBufferFaded
+ adds r1, r2
+ movs r2, 0x20
+ bl memcpy
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BC020: .4byte gBattleAnimTarget
+_080BC024: .4byte gPlttBufferUnfaded
+_080BC028: .4byte gPlttBufferFaded
+ thumb_func_end sub_80BBFA4
+
+ thumb_func_start sub_80BC02C
+sub_80BC02C: @ 80BC02C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_8073788
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _080BC04C
+ ldr r1, _080BC048 @ =gBattleAnimArgs
+ movs r0, 0x1
+ strh r0, [r1, 0xE]
+ b _080BC050
+ .align 2, 0
+_080BC048: .4byte gBattleAnimArgs
+_080BC04C:
+ ldr r0, _080BC05C @ =gBattleAnimArgs
+ strh r1, [r0, 0xE]
+_080BC050:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BC05C: .4byte gBattleAnimArgs
+ thumb_func_end sub_80BC02C
+
+ thumb_func_start sub_80BC060
+sub_80BC060: @ 80BC060
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080BC080 @ =gBattleAnimAttacker
+ ldr r1, _080BC084 @ =gBattlerTarget
+ ldrb r1, [r1]
+ strb r1, [r2]
+ ldr r2, _080BC088 @ =gBattleAnimTarget
+ ldr r1, _080BC08C @ =gUnknown_2023D6E
+ ldrb r1, [r1]
+ strb r1, [r2]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BC080: .4byte gBattleAnimAttacker
+_080BC084: .4byte gBattlerTarget
+_080BC088: .4byte gBattleAnimTarget
+_080BC08C: .4byte gUnknown_2023D6E
+ thumb_func_end sub_80BC060
+
+ thumb_func_start sub_80BC090
+sub_80BC090: @ 80BC090
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _080BC0B8 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ adds r4, r0, 0
+ ldr r0, _080BC0BC @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ bne _080BC0C4
+ ldr r1, _080BC0C0 @ =gBattleAnimArgs
+ movs r0, 0x1
+ b _080BC0C8
+ .align 2, 0
+_080BC0B8: .4byte gBattleAnimAttacker
+_080BC0BC: .4byte gBattleAnimTarget
+_080BC0C0: .4byte gBattleAnimArgs
+_080BC0C4:
+ ldr r1, _080BC0D8 @ =gBattleAnimArgs
+ movs r0, 0
+_080BC0C8:
+ strh r0, [r1, 0xE]
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BC0D8: .4byte gBattleAnimArgs
+ thumb_func_end sub_80BC090
+
+ thumb_func_start sub_80BC0DC
+sub_80BC0DC: @ 80BC0DC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080BC0F4 @ =gBattleAnimTarget
+ ldr r1, _080BC0F8 @ =gBattlerTarget
+ ldrb r1, [r1]
+ strb r1, [r2]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BC0F4: .4byte gBattleAnimTarget
+_080BC0F8: .4byte gBattlerTarget
+ thumb_func_end sub_80BC0DC
+
+ thumb_func_start sub_80BC0FC
+sub_80BC0FC: @ 80BC0FC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080BC11C @ =gBattleAnimAttacker
+ ldr r1, _080BC120 @ =sBattler_AI
+ ldrb r1, [r1]
+ strb r1, [r2]
+ ldr r2, _080BC124 @ =gBattleAnimTarget
+ ldr r1, _080BC128 @ =gUnknown_2023D6E
+ ldrb r1, [r1]
+ strb r1, [r2]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BC11C: .4byte gBattleAnimAttacker
+_080BC120: .4byte sBattler_AI
+_080BC124: .4byte gBattleAnimTarget
+_080BC128: .4byte gUnknown_2023D6E
+ thumb_func_end sub_80BC0FC
+
+ thumb_func_start sub_80BC12C
+sub_80BC12C: @ 80BC12C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BC144
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _080BC180
+_080BC144:
+ ldr r0, _080BC188 @ =gTasks
+ lsls r3, r4, 2
+ adds r3, r4
+ lsls r3, 3
+ adds r3, r0
+ ldr r0, _080BC18C @ =gUnknown_2024018
+ ldr r4, [r0]
+ ldr r2, _080BC190 @ =gBattleAnimAttacker
+ ldrb r0, [r2]
+ ldr r1, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ lsls r0, 31
+ lsrs r0, 31
+ strh r0, [r3, 0x8]
+ ldrb r1, [r2]
+ ldr r0, [r4]
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1]
+ movs r2, 0x1
+ orrs r0, r2
+ strb r0, [r1]
+ ldr r0, _080BC194 @ =sub_80BC19C
+ str r0, [r3]
+ ldr r1, _080BC198 @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+_080BC180:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BC188: .4byte gTasks
+_080BC18C: .4byte gUnknown_2024018
+_080BC190: .4byte gBattleAnimAttacker
+_080BC194: .4byte sub_80BC19C
+_080BC198: .4byte gUnknown_2037EE2
+ thumb_func_end sub_80BC12C
+
+ thumb_func_start sub_80BC19C
+sub_80BC19C: @ 80BC19C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080BC1E8 @ =gBattleAnimArgs
+ movs r2, 0xE
+ ldrsh r1, [r0, r2]
+ movs r0, 0x80
+ lsls r0, 5
+ cmp r1, r0
+ bne _080BC1E0
+ ldr r0, _080BC1EC @ =gUnknown_2024018
+ ldr r1, [r0]
+ ldr r0, _080BC1F0 @ =gBattleAnimAttacker
+ ldrb r3, [r0]
+ ldr r0, [r1]
+ lsls r3, 2
+ adds r3, r0
+ ldr r1, _080BC1F4 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldrb r0, [r0, 0x8]
+ movs r1, 0x1
+ ands r1, r0
+ ldrb r2, [r3]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ adds r0, r4, 0
+ bl DestroyTask
+_080BC1E0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BC1E8: .4byte gBattleAnimArgs
+_080BC1EC: .4byte gUnknown_2024018
+_080BC1F0: .4byte gBattleAnimAttacker
+_080BC1F4: .4byte gTasks
+ thumb_func_end sub_80BC19C
+
+ thumb_func_start SetAnimBgAttribute
+SetAnimBgAttribute: @ 80BC1F8
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ lsls r2, 24
+ lsrs r4, r2, 24
+ cmp r6, 0x3
+ bls _080BC20C
+ b _080BC2FE
+_080BC20C:
+ ldr r0, _080BC228 @ =gUnknown_83E7CCA
+ adds r0, r6, r0
+ ldrb r0, [r0]
+ bl GetGpuReg
+ ldr r1, _080BC22C @ =gUnknown_20399B8
+ strh r0, [r1]
+ cmp r5, 0x6
+ bhi _080BC2F0
+ lsls r0, r5, 2
+ ldr r1, _080BC230 @ =_080BC234
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080BC228: .4byte gUnknown_83E7CCA
+_080BC22C: .4byte gUnknown_20399B8
+_080BC230: .4byte _080BC234
+ .align 2, 0
+_080BC234:
+ .4byte _080BC250
+ .4byte _080BC264
+ .4byte _080BC27C
+ .4byte _080BC294
+ .4byte _080BC2AC
+ .4byte _080BC2C8
+ .4byte _080BC2DC
+_080BC250:
+ ldr r2, _080BC260 @ =gUnknown_20399B8
+ lsls r3, r4, 6
+ ldrb r1, [r2, 0x1]
+ movs r0, 0x3F
+ ands r0, r1
+ orrs r0, r3
+ strb r0, [r2, 0x1]
+ b _080BC2F0
+ .align 2, 0
+_080BC260: .4byte gUnknown_20399B8
+_080BC264:
+ ldr r3, _080BC278 @ =gUnknown_20399B8
+ movs r0, 0x1
+ adds r1, r4, 0
+ ands r1, r0
+ lsls r1, 5
+ ldrb r2, [r3, 0x1]
+ movs r0, 0x21
+ negs r0, r0
+ b _080BC2EA
+ .align 2, 0
+_080BC278: .4byte gUnknown_20399B8
+_080BC27C:
+ ldr r3, _080BC290 @ =gUnknown_20399B8
+ movs r0, 0x1
+ adds r1, r4, 0
+ ands r1, r0
+ lsls r1, 6
+ ldrb r2, [r3]
+ movs r0, 0x41
+ negs r0, r0
+ b _080BC2BA
+ .align 2, 0
+_080BC290: .4byte gUnknown_20399B8
+_080BC294:
+ ldr r3, _080BC2A8 @ =gUnknown_20399B8
+ movs r0, 0x3
+ adds r1, r4, 0
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r3]
+ movs r0, 0xD
+ negs r0, r0
+ b _080BC2BA
+ .align 2, 0
+_080BC2A8: .4byte gUnknown_20399B8
+_080BC2AC:
+ ldr r3, _080BC2C4 @ =gUnknown_20399B8
+ movs r0, 0x3
+ adds r1, r4, 0
+ ands r1, r0
+ ldrb r2, [r3]
+ movs r0, 0x4
+ negs r0, r0
+_080BC2BA:
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ b _080BC2F0
+ .align 2, 0
+_080BC2C4: .4byte gUnknown_20399B8
+_080BC2C8:
+ ldr r2, _080BC2D8 @ =gUnknown_20399B8
+ lsls r3, r4, 7
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ orrs r0, r3
+ strb r0, [r2]
+ b _080BC2F0
+ .align 2, 0
+_080BC2D8: .4byte gUnknown_20399B8
+_080BC2DC:
+ ldr r3, _080BC304 @ =gUnknown_20399B8
+ movs r0, 0x1F
+ adds r1, r4, 0
+ ands r1, r0
+ ldrb r2, [r3, 0x1]
+ movs r0, 0x20
+ negs r0, r0
+_080BC2EA:
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x1]
+_080BC2F0:
+ ldr r0, _080BC308 @ =gUnknown_83E7CCA
+ adds r0, r6, r0
+ ldrb r0, [r0]
+ ldr r1, _080BC304 @ =gUnknown_20399B8
+ ldrh r1, [r1]
+ bl SetGpuReg
+_080BC2FE:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BC304: .4byte gUnknown_20399B8
+_080BC308: .4byte gUnknown_83E7CCA
+ thumb_func_end SetAnimBgAttribute
+
+ thumb_func_start sub_80BC30C
+sub_80BC30C: @ 80BC30C
+ push {r4,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r1, 24
+ lsrs r4, r1, 24
+ cmp r2, 0x3
+ bhi _080BC394
+ ldr r0, _080BC338 @ =gUnknown_83E7CCE
+ adds r0, r2, r0
+ ldrb r0, [r0]
+ bl GetGpuReg
+ mov r1, sp
+ strh r0, [r1]
+ cmp r4, 0x6
+ bhi _080BC394
+ lsls r0, r4, 2
+ ldr r1, _080BC33C @ =_080BC340
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080BC338: .4byte gUnknown_83E7CCE
+_080BC33C: .4byte _080BC340
+ .align 2, 0
+_080BC340:
+ .4byte _080BC35C
+ .4byte _080BC364
+ .4byte _080BC36C
+ .4byte _080BC374
+ .4byte _080BC37C
+ .4byte _080BC384
+ .4byte _080BC38C
+_080BC35C:
+ ldr r0, [sp]
+ lsls r0, 16
+ lsrs r0, 30
+ b _080BC396
+_080BC364:
+ ldr r0, [sp]
+ lsls r0, 18
+ lsrs r0, 31
+ b _080BC396
+_080BC36C:
+ ldr r0, [sp]
+ lsls r0, 25
+ lsrs r0, 31
+ b _080BC396
+_080BC374:
+ ldr r0, [sp]
+ lsls r0, 28
+ lsrs r0, 30
+ b _080BC396
+_080BC37C:
+ ldr r0, [sp]
+ lsls r0, 30
+ lsrs r0, 30
+ b _080BC396
+_080BC384:
+ ldr r0, [sp]
+ lsls r0, 24
+ lsrs r0, 31
+ b _080BC396
+_080BC38C:
+ ldr r0, [sp]
+ lsls r0, 19
+ lsrs r0, 27
+ b _080BC396
+_080BC394:
+ movs r0, 0
+_080BC396:
+ add sp, 0x4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80BC30C
+
+ thumb_func_start sub_80BC3A0
+sub_80BC3A0: @ 80BC3A0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080BC3B8 @ =gBattleTypeFlags
+ ldr r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080BC3C0
+ ldr r0, _080BC3BC @ =sub_80BCC4C
+ b _080BC3E8
+ .align 2, 0
+_080BC3B8: .4byte gBattleTypeFlags
+_080BC3BC: .4byte sub_80BCC4C
+_080BC3C0:
+ movs r0, 0x80
+ lsls r0, 5
+ ands r1, r0
+ cmp r1, 0
+ beq _080BC3E0
+ ldr r0, _080BC3D8 @ =gGameVersion
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ beq _080BC3E0
+ movs r4, 0x3
+ ldr r0, _080BC3DC @ =task00_battle_intro_80BC6C8
+ b _080BC3E8
+ .align 2, 0
+_080BC3D8: .4byte gGameVersion
+_080BC3DC: .4byte task00_battle_intro_80BC6C8
+_080BC3E0:
+ ldr r1, _080BC414 @ =gUnknown_83E7CD4
+ lsls r0, r4, 2
+ adds r0, r1
+ ldr r0, [r0]
+_080BC3E8:
+ movs r1, 0
+ bl CreateTask
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080BC418 @ =gTasks
+ lsls r1, r2, 2
+ adds r1, r2
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0
+ strh r0, [r1, 0x8]
+ strh r4, [r1, 0xA]
+ strh r0, [r1, 0xC]
+ strh r0, [r1, 0xE]
+ strh r0, [r1, 0x10]
+ strh r0, [r1, 0x12]
+ strh r0, [r1, 0x14]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BC414: .4byte gUnknown_83E7CD4
+_080BC418: .4byte gTasks
+ thumb_func_end sub_80BC3A0
+
+ thumb_func_start sub_80BC41C
+sub_80BC41C: @ 80BC41C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl DestroyTask
+ ldr r0, _080BC468 @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080BC46C @ =gBattle_BG1_Y
+ strh r1, [r0]
+ ldr r0, _080BC470 @ =gBattle_BG2_X
+ strh r1, [r0]
+ ldr r0, _080BC474 @ =gBattle_BG2_Y
+ strh r1, [r0]
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x54
+ movs r1, 0
+ bl SetGpuReg
+ ldr r4, _080BC478 @ =0x00003f3f
+ movs r0, 0x48
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ adds r1, r4, 0
+ bl SetGpuReg
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BC468: .4byte gBattle_BG1_X
+_080BC46C: .4byte gBattle_BG1_Y
+_080BC470: .4byte gBattle_BG2_X
+_080BC474: .4byte gBattle_BG2_Y
+_080BC478: .4byte 0x00003f3f
+ thumb_func_end sub_80BC41C
+
+ thumb_func_start task_battle_intro_80BC47C
+task_battle_intro_80BC47C: @ 80BC47C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080BC4B4 @ =gBattle_BG1_X
+ ldrh r0, [r1]
+ adds r0, 0x6
+ strh r0, [r1]
+ ldr r1, _080BC4B8 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ mov r8, r1
+ cmp r0, 0x4
+ bls _080BC4A8
+ b _080BC6BA
+_080BC4A8:
+ lsls r0, 2
+ ldr r1, _080BC4BC @ =_080BC4C0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080BC4B4: .4byte gBattle_BG1_X
+_080BC4B8: .4byte gTasks
+_080BC4BC: .4byte _080BC4C0
+ .align 2, 0
+_080BC4C0:
+ .4byte _080BC4D4
+ .4byte _080BC504
+ .4byte _080BC52C
+ .4byte _080BC574
+ .4byte _080BC6B4
+_080BC4D4:
+ ldr r0, _080BC4EC @ =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080BC4F0
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ add r0, r8
+ movs r1, 0x10
+ b _080BC4FA
+ .align 2, 0
+_080BC4EC: .4byte gBattleTypeFlags
+_080BC4F0:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ add r0, r8
+ movs r1, 0x1
+_080BC4FA:
+ strh r1, [r0, 0xC]
+ ldrh r1, [r0, 0x8]
+ adds r1, 0x1
+ strh r1, [r0, 0x8]
+ b _080BC6BA
+_080BC504:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ mov r3, r8
+ adds r1, r0, r3
+ ldrh r0, [r1, 0xC]
+ subs r0, 0x1
+ strh r0, [r1, 0xC]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080BC51C
+ b _080BC6BA
+_080BC51C:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ movs r0, 0x48
+ movs r1, 0x3F
+ bl SetGpuReg
+ b _080BC6BA
+_080BC52C:
+ ldr r1, _080BC568 @ =gUnknown_2022986
+ ldrh r0, [r1]
+ subs r0, 0xFF
+ strh r0, [r1]
+ movs r1, 0xFF
+ lsls r1, 8
+ ands r0, r1
+ movs r1, 0xC0
+ lsls r1, 6
+ cmp r0, r1
+ beq _080BC544
+ b _080BC6BA
+_080BC544:
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ add r1, r8
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ movs r0, 0xF0
+ strh r0, [r1, 0xC]
+ movs r0, 0x20
+ strh r0, [r1, 0xE]
+ ldr r2, _080BC56C @ =gUnknown_2023F4C
+ ldrh r1, [r2]
+ ldr r0, _080BC570 @ =0x0000fffe
+ ands r0, r1
+ strh r0, [r2]
+ b _080BC6BA
+ .align 2, 0
+_080BC568: .4byte gUnknown_2022986
+_080BC56C: .4byte gUnknown_2023F4C
+_080BC570: .4byte 0x0000fffe
+_080BC574:
+ lsls r0, r4, 2
+ adds r1, r0, r4
+ lsls r1, 3
+ mov r5, r8
+ adds r2, r1, r5
+ ldrh r3, [r2, 0xE]
+ movs r5, 0xE
+ ldrsh r1, [r2, r5]
+ mov r12, r0
+ cmp r1, 0
+ beq _080BC590
+ subs r0, r3, 0x1
+ strh r0, [r2, 0xE]
+ b _080BC5BE
+_080BC590:
+ movs r1, 0xA
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x1
+ bne _080BC5B0
+ ldr r2, _080BC5A8 @ =gBattle_BG1_Y
+ ldrh r1, [r2]
+ ldr r0, _080BC5AC @ =0x0000ffb0
+ cmp r1, r0
+ beq _080BC5BE
+ subs r0, r1, 0x2
+ b _080BC5BC
+ .align 2, 0
+_080BC5A8: .4byte gBattle_BG1_Y
+_080BC5AC: .4byte 0x0000ffb0
+_080BC5B0:
+ ldr r2, _080BC690 @ =gBattle_BG1_Y
+ ldrh r1, [r2]
+ ldr r0, _080BC694 @ =0x0000ffc8
+ cmp r1, r0
+ beq _080BC5BE
+ subs r0, r1, 0x1
+_080BC5BC:
+ strh r0, [r2]
+_080BC5BE:
+ ldr r2, _080BC698 @ =gUnknown_2022986
+ ldrh r1, [r2]
+ movs r0, 0xFF
+ lsls r0, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080BC5D2
+ ldr r3, _080BC69C @ =0xfffffc04
+ adds r0, r1, r3
+ strh r0, [r2]
+_080BC5D2:
+ mov r5, r12
+ adds r0, r5, r4
+ lsls r0, 3
+ mov r2, r8
+ adds r1, r0, r2
+ ldrh r2, [r1, 0xC]
+ movs r3, 0xC
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ beq _080BC5EA
+ subs r0, r2, 0x2
+ strh r0, [r1, 0xC]
+_080BC5EA:
+ movs r3, 0
+ ldr r5, _080BC6A0 @ =gScanlineEffect
+ mov r9, r5
+ ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
+ mov r6, r9
+ adds r5, r1, 0
+_080BC5F6:
+ lsls r2, r3, 1
+ ldrb r1, [r6, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ adds r2, r7
+ ldrh r0, [r5, 0xC]
+ strh r0, [r2]
+ adds r3, 0x1
+ cmp r3, 0x4F
+ ble _080BC5F6
+ cmp r3, 0x9F
+ bgt _080BC63A
+ ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
+ ldr r6, _080BC6A0 @ =gScanlineEffect
+ ldr r1, _080BC6A8 @ =gTasks
+ mov r2, r12
+ adds r0, r2, r4
+ lsls r0, 3
+ adds r5, r0, r1
+_080BC620:
+ lsls r2, r3, 1
+ ldrb r1, [r6, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ adds r2, r7
+ ldrh r0, [r5, 0xC]
+ negs r0, r0
+ strh r0, [r2]
+ adds r3, 0x1
+ cmp r3, 0x9F
+ ble _080BC620
+_080BC63A:
+ mov r3, r12
+ adds r0, r3, r4
+ lsls r0, 3
+ mov r5, r8
+ adds r1, r0, r5
+ movs r0, 0xC
+ ldrsh r2, [r1, r0]
+ cmp r2, 0
+ bne _080BC6BA
+ movs r0, 0x3
+ mov r3, r9
+ strb r0, [r3, 0x15]
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ str r2, [sp]
+ ldr r1, _080BC6AC @ =0x0600e000
+ ldr r2, _080BC6B0 @ =0x05000200
+ mov r0, sp
+ bl CpuSet
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0
+ bl SetBgAttribute
+ movs r0, 0x2
+ movs r1, 0x1
+ movs r2, 0
+ bl SetBgAttribute
+ movs r1, 0x9C
+ lsls r1, 8
+ movs r0, 0xA
+ bl SetGpuReg
+ movs r1, 0xBC
+ lsls r1, 7
+ movs r0, 0xC
+ bl SetGpuReg
+ b _080BC6BA
+ .align 2, 0
+_080BC690: .4byte gBattle_BG1_Y
+_080BC694: .4byte 0x0000ffc8
+_080BC698: .4byte gUnknown_2022986
+_080BC69C: .4byte 0xfffffc04
+_080BC6A0: .4byte gScanlineEffect
+_080BC6A4: .4byte gScanlineEffectRegBuffers
+_080BC6A8: .4byte gTasks
+_080BC6AC: .4byte 0x0600e000
+_080BC6B0: .4byte 0x05000200
+_080BC6B4:
+ adds r0, r4, 0
+ bl sub_80BC41C
+_080BC6BA:
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end task_battle_intro_80BC47C
+
+ thumb_func_start task00_battle_intro_80BC6C8
+task00_battle_intro_80BC6C8: @ 80BC6C8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080BC6F4 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0xA
+ ldrsh r0, [r0, r2]
+ adds r2, r1, 0
+ cmp r0, 0x3
+ beq _080BC708
+ cmp r0, 0x3
+ bgt _080BC6F8
+ cmp r0, 0x2
+ beq _080BC6FC
+ b _080BC710
+ .align 2, 0
+_080BC6F4: .4byte gTasks
+_080BC6F8:
+ cmp r0, 0x4
+ bne _080BC710
+_080BC6FC:
+ ldr r1, _080BC704 @ =gBattle_BG1_X
+ ldrh r0, [r1]
+ adds r0, 0x8
+ b _080BC70E
+ .align 2, 0
+_080BC704: .4byte gBattle_BG1_X
+_080BC708:
+ ldr r1, _080BC74C @ =gBattle_BG1_X
+ ldrh r0, [r1]
+ adds r0, 0x6
+_080BC70E:
+ strh r0, [r1]
+_080BC710:
+ lsls r0, r5, 2
+ adds r1, r0, r5
+ lsls r1, 3
+ adds r4, r1, r2
+ movs r3, 0xA
+ ldrsh r1, [r4, r3]
+ adds r6, r0, 0
+ cmp r1, 0x4
+ bne _080BC774
+ ldr r7, _080BC750 @ =gBattle_BG1_Y
+ ldrh r0, [r4, 0x14]
+ bl Cos2
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080BC736
+ ldr r1, _080BC754 @ =0x000001ff
+ adds r0, r1
+_080BC736:
+ asrs r0, 9
+ subs r0, 0x8
+ strh r0, [r7]
+ ldrh r1, [r4, 0x14]
+ movs r2, 0x14
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xB3
+ bgt _080BC758
+ adds r0, r1, 0x4
+ b _080BC75A
+ .align 2, 0
+_080BC74C: .4byte gBattle_BG1_X
+_080BC750: .4byte gBattle_BG1_Y
+_080BC754: .4byte 0x000001ff
+_080BC758:
+ adds r0, r1, 0x6
+_080BC75A:
+ strh r0, [r4, 0x14]
+ ldr r2, _080BC790 @ =gTasks
+ adds r0, r6, r5
+ lsls r0, 3
+ adds r3, r0, r2
+ movs r0, 0x14
+ ldrsh r1, [r3, r0]
+ movs r0, 0xB4
+ lsls r0, 1
+ cmp r1, r0
+ bne _080BC774
+ movs r0, 0
+ strh r0, [r3, 0x14]
+_080BC774:
+ adds r0, r6, r5
+ lsls r0, 3
+ adds r0, r2
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x4
+ bls _080BC784
+ b _080BC9AA
+_080BC784:
+ lsls r0, 2
+ ldr r1, _080BC794 @ =_080BC798
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080BC790: .4byte gTasks
+_080BC794: .4byte _080BC798
+ .align 2, 0
+_080BC798:
+ .4byte _080BC7AC
+ .4byte _080BC7DC
+ .4byte _080BC808
+ .4byte _080BC858
+ .4byte _080BC9A4
+_080BC7AC:
+ ldr r1, _080BC7C8 @ =gTasks
+ adds r0, r6, r5
+ lsls r0, 3
+ adds r2, r0, r1
+ movs r3, 0x10
+ strh r3, [r2, 0x10]
+ ldr r0, _080BC7CC @ =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080BC7D0
+ strh r3, [r2, 0xC]
+ b _080BC7D4
+ .align 2, 0
+_080BC7C8: .4byte gTasks
+_080BC7CC: .4byte gBattleTypeFlags
+_080BC7D0:
+ movs r0, 0x1
+ strh r0, [r2, 0xC]
+_080BC7D4:
+ ldrh r0, [r2, 0x8]
+ adds r0, 0x1
+ strh r0, [r2, 0x8]
+ b _080BC9AA
+_080BC7DC:
+ ldr r0, _080BC804 @ =gTasks
+ adds r1, r6, r5
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0xC]
+ subs r0, 0x1
+ strh r0, [r1, 0xC]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080BC7F2
+ b _080BC9AA
+_080BC7F2:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ movs r0, 0x48
+ movs r1, 0x3F
+ bl SetGpuReg
+ b _080BC9AA
+ .align 2, 0
+_080BC804: .4byte gTasks
+_080BC808:
+ ldr r1, _080BC848 @ =gUnknown_2022986
+ ldrh r0, [r1]
+ subs r0, 0xFF
+ strh r0, [r1]
+ movs r1, 0xFF
+ lsls r1, 8
+ ands r0, r1
+ movs r1, 0xC0
+ lsls r1, 6
+ cmp r0, r1
+ beq _080BC820
+ b _080BC9AA
+_080BC820:
+ ldr r0, _080BC84C @ =gTasks
+ adds r1, r6, r5
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ movs r0, 0xF0
+ strh r0, [r1, 0xC]
+ movs r0, 0x20
+ strh r0, [r1, 0xE]
+ movs r0, 0x1
+ strh r0, [r1, 0x12]
+ ldr r2, _080BC850 @ =gUnknown_2023F4C
+ ldrh r1, [r2]
+ ldr r0, _080BC854 @ =0x0000fffe
+ ands r0, r1
+ strh r0, [r2]
+ b _080BC9AA
+ .align 2, 0
+_080BC848: .4byte gUnknown_2022986
+_080BC84C: .4byte gTasks
+_080BC850: .4byte gUnknown_2023F4C
+_080BC854: .4byte 0x0000fffe
+_080BC858:
+ ldr r0, _080BC890 @ =gTasks
+ adds r1, r6, r5
+ lsls r1, 3
+ adds r1, r0
+ ldrh r2, [r1, 0xE]
+ movs r3, 0xE
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ beq _080BC898
+ subs r0, r2, 0x1
+ strh r0, [r1, 0xE]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080BC8B8
+ ldr r1, _080BC894 @ =0x00001842
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0xF
+ bl SetGpuReg
+ movs r0, 0x54
+ movs r1, 0
+ bl SetGpuReg
+ b _080BC8B8
+ .align 2, 0
+_080BC890: .4byte gTasks
+_080BC894: .4byte 0x00001842
+_080BC898:
+ ldrh r2, [r1, 0x10]
+ movs r0, 0x1F
+ ands r0, r2
+ cmp r0, 0
+ beq _080BC8B8
+ ldrh r0, [r1, 0x12]
+ subs r0, 0x1
+ strh r0, [r1, 0x12]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080BC8B8
+ adds r0, r2, 0
+ adds r0, 0xFF
+ strh r0, [r1, 0x10]
+ movs r0, 0x4
+ strh r0, [r1, 0x12]
+_080BC8B8:
+ ldr r2, _080BC988 @ =gUnknown_2022986
+ ldrh r1, [r2]
+ movs r0, 0xFF
+ lsls r0, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080BC8CC
+ ldr r3, _080BC98C @ =0xfffffc04
+ adds r0, r1, r3
+ strh r0, [r2]
+_080BC8CC:
+ ldr r0, _080BC990 @ =gTasks
+ adds r1, r6, r5
+ lsls r1, 3
+ adds r1, r0
+ ldrh r2, [r1, 0xC]
+ movs r3, 0xC
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ beq _080BC8E2
+ subs r0, r2, 0x2
+ strh r0, [r1, 0xC]
+_080BC8E2:
+ movs r3, 0
+ ldr r0, _080BC994 @ =gScanlineEffect
+ mov r8, r0
+ ldr r2, _080BC998 @ =gScanlineEffectRegBuffers
+ mov r12, r2
+ mov r7, r8
+ adds r4, r1, 0
+_080BC8F0:
+ lsls r2, r3, 1
+ ldrb r1, [r7, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ add r2, r12
+ ldrh r0, [r4, 0xC]
+ strh r0, [r2]
+ adds r3, 0x1
+ cmp r3, 0x4F
+ ble _080BC8F0
+ cmp r3, 0x9F
+ bgt _080BC934
+ ldr r0, _080BC998 @ =gScanlineEffectRegBuffers
+ mov r12, r0
+ ldr r7, _080BC994 @ =gScanlineEffect
+ ldr r1, _080BC990 @ =gTasks
+ adds r0, r6, r5
+ lsls r0, 3
+ adds r4, r0, r1
+_080BC91A:
+ lsls r2, r3, 1
+ ldrb r1, [r7, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ add r2, r12
+ ldrh r0, [r4, 0xC]
+ negs r0, r0
+ strh r0, [r2]
+ adds r3, 0x1
+ cmp r3, 0x9F
+ ble _080BC91A
+_080BC934:
+ ldr r1, _080BC990 @ =gTasks
+ adds r0, r6, r5
+ lsls r0, 3
+ adds r1, r0, r1
+ movs r3, 0xC
+ ldrsh r2, [r1, r3]
+ cmp r2, 0
+ bne _080BC9AA
+ movs r0, 0x3
+ mov r3, r8
+ strb r0, [r3, 0x15]
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ str r2, [sp]
+ ldr r1, _080BC99C @ =0x0600e000
+ ldr r2, _080BC9A0 @ =0x05000200
+ mov r0, sp
+ bl CpuSet
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0
+ bl SetBgAttribute
+ movs r0, 0x2
+ movs r1, 0x1
+ movs r2, 0
+ bl SetBgAttribute
+ movs r1, 0x9C
+ lsls r1, 8
+ movs r0, 0xA
+ bl SetGpuReg
+ movs r1, 0xBC
+ lsls r1, 7
+ movs r0, 0xC
+ bl SetGpuReg
+ b _080BC9AA
+ .align 2, 0
+_080BC988: .4byte gUnknown_2022986
+_080BC98C: .4byte 0xfffffc04
+_080BC990: .4byte gTasks
+_080BC994: .4byte gScanlineEffect
+_080BC998: .4byte gScanlineEffectRegBuffers
+_080BC99C: .4byte 0x0600e000
+_080BC9A0: .4byte 0x05000200
+_080BC9A4:
+ adds r0, r5, 0
+ bl sub_80BC41C
+_080BC9AA:
+ ldr r0, _080BC9D0 @ =gTasks
+ adds r1, r6, r5
+ lsls r1, 3
+ adds r1, r0
+ movs r2, 0x8
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x4
+ beq _080BC9C2
+ ldrh r1, [r1, 0x10]
+ movs r0, 0x52
+ bl SetGpuReg
+_080BC9C2:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BC9D0: .4byte gTasks
+ thumb_func_end task00_battle_intro_80BC6C8
+
+ thumb_func_start task_battle_intro_anim
+task_battle_intro_anim: @ 80BC9D4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080BCA08 @ =gBattle_BG1_X
+ ldrh r0, [r1]
+ adds r0, 0x8
+ strh r0, [r1]
+ ldr r1, _080BCA0C @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ adds r4, r1, 0
+ cmp r0, 0x4
+ bls _080BC9FE
+ b _080BCC22
+_080BC9FE:
+ lsls r0, 2
+ ldr r1, _080BCA10 @ =_080BCA14
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080BCA08: .4byte gBattle_BG1_X
+_080BCA0C: .4byte gTasks
+_080BCA10: .4byte _080BCA14
+ .align 2, 0
+_080BCA14:
+ .4byte _080BCA28
+ .4byte _080BCA7C
+ .4byte _080BCAA8
+ .4byte _080BCAF8
+ .4byte _080BCC1C
+_080BCA28:
+ ldr r1, _080BCA60 @ =0x00001842
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r4, _080BCA64 @ =0x00000808
+ movs r0, 0x52
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x54
+ movs r1, 0
+ bl SetGpuReg
+ ldr r1, _080BCA68 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r2, r0, r1
+ strh r4, [r2, 0x10]
+ ldr r0, _080BCA6C @ =gBattleTypeFlags
+ ldr r0, [r0]
+ movs r1, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080BCA70
+ movs r0, 0x10
+ b _080BCA72
+ .align 2, 0
+_080BCA60: .4byte 0x00001842
+_080BCA64: .4byte 0x00000808
+_080BCA68: .4byte gTasks
+_080BCA6C: .4byte gBattleTypeFlags
+_080BCA70:
+ movs r0, 0x1
+_080BCA72:
+ strh r0, [r2, 0xC]
+ ldrh r0, [r2, 0x8]
+ adds r0, 0x1
+ strh r0, [r2, 0x8]
+ b _080BCC22
+_080BCA7C:
+ ldr r0, _080BCAA4 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0xC]
+ subs r0, 0x1
+ strh r0, [r1, 0xC]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080BCA94
+ b _080BCC22
+_080BCA94:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ movs r0, 0x48
+ movs r1, 0x3F
+ bl SetGpuReg
+ b _080BCC22
+ .align 2, 0
+_080BCAA4: .4byte gTasks
+_080BCAA8:
+ ldr r1, _080BCAE8 @ =gUnknown_2022986
+ ldrh r0, [r1]
+ subs r0, 0xFF
+ strh r0, [r1]
+ movs r1, 0xFF
+ lsls r1, 8
+ ands r0, r1
+ movs r1, 0xC0
+ lsls r1, 6
+ cmp r0, r1
+ beq _080BCAC0
+ b _080BCC22
+_080BCAC0:
+ ldr r0, _080BCAEC @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ movs r0, 0xF0
+ strh r0, [r1, 0xC]
+ movs r0, 0x20
+ strh r0, [r1, 0xE]
+ movs r0, 0x1
+ strh r0, [r1, 0x12]
+ ldr r2, _080BCAF0 @ =gUnknown_2023F4C
+ ldrh r1, [r2]
+ ldr r0, _080BCAF4 @ =0x0000fffe
+ ands r0, r1
+ strh r0, [r2]
+ b _080BCC22
+ .align 2, 0
+_080BCAE8: .4byte gUnknown_2022986
+_080BCAEC: .4byte gTasks
+_080BCAF0: .4byte gUnknown_2023F4C
+_080BCAF4: .4byte 0x0000fffe
+_080BCAF8:
+ lsls r0, r5, 2
+ adds r1, r0, r5
+ lsls r1, 3
+ adds r2, r1, r4
+ ldrh r3, [r2, 0xE]
+ movs r6, 0xE
+ ldrsh r1, [r2, r6]
+ mov r12, r0
+ cmp r1, 0
+ beq _080BCB12
+ subs r0, r3, 0x1
+ strh r0, [r2, 0xE]
+ b _080BCB32
+_080BCB12:
+ ldrh r1, [r2, 0x10]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ beq _080BCB32
+ ldrh r0, [r2, 0x12]
+ subs r0, 0x1
+ strh r0, [r2, 0x12]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080BCB32
+ adds r0, r1, 0
+ adds r0, 0xFF
+ strh r0, [r2, 0x10]
+ movs r0, 0x6
+ strh r0, [r2, 0x12]
+_080BCB32:
+ ldr r2, _080BCC00 @ =gUnknown_2022986
+ ldrh r1, [r2]
+ movs r0, 0xFF
+ lsls r0, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080BCB46
+ ldr r3, _080BCC04 @ =0xfffffc04
+ adds r0, r1, r3
+ strh r0, [r2]
+_080BCB46:
+ mov r6, r12
+ adds r0, r6, r5
+ lsls r0, 3
+ adds r1, r0, r4
+ ldrh r2, [r1, 0xC]
+ movs r3, 0xC
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ beq _080BCB5C
+ subs r0, r2, 0x2
+ strh r0, [r1, 0xC]
+_080BCB5C:
+ movs r3, 0
+ ldr r6, _080BCC08 @ =gScanlineEffect
+ mov r8, r6
+ ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
+ adds r4, r1, 0
+_080BCB66:
+ lsls r2, r3, 1
+ ldrb r1, [r6, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ adds r2, r7
+ ldrh r0, [r4, 0xC]
+ strh r0, [r2]
+ adds r3, 0x1
+ cmp r3, 0x4F
+ ble _080BCB66
+ cmp r3, 0x9F
+ bgt _080BCBAA
+ ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
+ ldr r6, _080BCC08 @ =gScanlineEffect
+ ldr r1, _080BCC10 @ =gTasks
+ mov r2, r12
+ adds r0, r2, r5
+ lsls r0, 3
+ adds r4, r0, r1
+_080BCB90:
+ lsls r2, r3, 1
+ ldrb r1, [r6, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ adds r2, r7
+ ldrh r0, [r4, 0xC]
+ negs r0, r0
+ strh r0, [r2]
+ adds r3, 0x1
+ cmp r3, 0x9F
+ ble _080BCB90
+_080BCBAA:
+ ldr r1, _080BCC10 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r1, r0, r1
+ movs r3, 0xC
+ ldrsh r2, [r1, r3]
+ cmp r2, 0
+ bne _080BCC22
+ movs r0, 0x3
+ mov r6, r8
+ strb r0, [r6, 0x15]
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ str r2, [sp]
+ ldr r1, _080BCC14 @ =0x0600e000
+ ldr r2, _080BCC18 @ =0x05000200
+ mov r0, sp
+ bl CpuSet
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0
+ bl SetBgAttribute
+ movs r0, 0x2
+ movs r1, 0x1
+ movs r2, 0
+ bl SetBgAttribute
+ movs r1, 0x9C
+ lsls r1, 8
+ movs r0, 0xA
+ bl SetGpuReg
+ movs r1, 0xBC
+ lsls r1, 7
+ movs r0, 0xC
+ bl SetGpuReg
+ b _080BCC22
+ .align 2, 0
+_080BCC00: .4byte gUnknown_2022986
+_080BCC04: .4byte 0xfffffc04
+_080BCC08: .4byte gScanlineEffect
+_080BCC0C: .4byte gScanlineEffectRegBuffers
+_080BCC10: .4byte gTasks
+_080BCC14: .4byte 0x0600e000
+_080BCC18: .4byte 0x05000200
+_080BCC1C:
+ adds r0, r5, 0
+ bl sub_80BC41C
+_080BCC22:
+ ldr r0, _080BCC48 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ movs r2, 0x8
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x4
+ beq _080BCC3C
+ ldrh r1, [r1, 0x10]
+ movs r0, 0x52
+ bl SetGpuReg
+_080BCC3C:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BCC48: .4byte gTasks
+ thumb_func_end task_battle_intro_anim
+
+ thumb_func_start sub_80BCC4C
+sub_80BCC4C: @ 80BCC4C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080BCC98 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r7, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r7, r1]
+ cmp r0, 0x1
+ ble _080BCCC2
+ movs r2, 0x10
+ ldrsh r0, [r7, r2]
+ cmp r0, 0
+ bne _080BCCC2
+ ldr r2, _080BCC9C @ =gBattle_BG1_X
+ ldrh r1, [r2]
+ movs r0, 0x80
+ lsls r0, 8
+ ands r0, r1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0
+ bne _080BCC8A
+ cmp r1, 0x4F
+ bhi _080BCCA4
+_080BCC8A:
+ adds r0, r1, 0x3
+ strh r0, [r2]
+ ldr r1, _080BCCA0 @ =gBattle_BG2_X
+ ldrh r0, [r1]
+ subs r0, 0x3
+ strh r0, [r1]
+ b _080BCCC2
+ .align 2, 0
+_080BCC98: .4byte gTasks
+_080BCC9C: .4byte gBattle_BG1_X
+_080BCCA0: .4byte gBattle_BG2_X
+_080BCCA4:
+ str r5, [sp]
+ ldr r1, _080BCCE4 @ =0x0600e000
+ ldr r4, _080BCCE8 @ =0x05000200
+ mov r0, sp
+ adds r2, r4, 0
+ bl CpuSet
+ str r5, [sp, 0x4]
+ add r0, sp, 0x4
+ ldr r1, _080BCCEC @ =0x0600f000
+ adds r2, r4, 0
+ bl CpuSet
+ movs r0, 0x1
+ strh r0, [r7, 0x10]
+_080BCCC2:
+ ldr r0, _080BCCF0 @ =gTasks
+ lsls r2, r6, 2
+ adds r1, r2, r6
+ lsls r1, 3
+ adds r1, r0
+ movs r3, 0x8
+ ldrsh r1, [r1, r3]
+ mov r9, r0
+ adds r5, r2, 0
+ cmp r1, 0x4
+ bls _080BCCDA
+ b _080BCEE6
+_080BCCDA:
+ lsls r0, r1, 2
+ ldr r1, _080BCCF4 @ =_080BCCF8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080BCCE4: .4byte 0x0600e000
+_080BCCE8: .4byte 0x05000200
+_080BCCEC: .4byte 0x0600f000
+_080BCCF0: .4byte gTasks
+_080BCCF4: .4byte _080BCCF8
+ .align 2, 0
+_080BCCF8:
+ .4byte _080BCD0C
+ .4byte _080BCD1E
+ .4byte _080BCDC4
+ .4byte _080BCE08
+ .4byte _080BCEE0
+_080BCD0C:
+ adds r0, r5, r6
+ lsls r0, 3
+ add r0, r9
+ movs r1, 0x20
+ strh r1, [r0, 0xC]
+ ldrh r1, [r0, 0x8]
+ adds r1, 0x1
+ strh r1, [r0, 0x8]
+ b _080BCEE6
+_080BCD1E:
+ adds r0, r5, r6
+ lsls r0, 3
+ mov r2, r9
+ adds r1, r0, r2
+ ldrh r0, [r1, 0xC]
+ subs r0, 0x1
+ strh r0, [r1, 0xC]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080BCD34
+ b _080BCEE6
+_080BCD34:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ ldr r4, _080BCDB4 @ =gSprites
+ ldr r5, _080BCDB8 @ =gBattleStruct
+ ldr r0, [r5]
+ adds r0, 0x7D
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrb r3, [r1, 0x1]
+ movs r2, 0xD
+ negs r2, r2
+ adds r0, r2, 0
+ ands r0, r3
+ movs r3, 0x8
+ mov r9, r3
+ mov r3, r9
+ orrs r0, r3
+ strb r0, [r1, 0x1]
+ ldr r3, [r5]
+ adds r0, r3, 0
+ adds r0, 0x7D
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ movs r1, 0x1C
+ adds r1, r4
+ mov r8, r1
+ add r0, r8
+ ldr r6, _080BCDBC @ =sub_801182C
+ str r6, [r0]
+ adds r3, 0x7E
+ ldrb r1, [r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrb r1, [r0, 0x1]
+ ands r2, r1
+ mov r3, r9
+ orrs r2, r3
+ strb r2, [r0, 0x1]
+ ldr r0, [r5]
+ adds r0, 0x7E
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ add r0, r8
+ str r6, [r0]
+ movs r0, 0x48
+ movs r1, 0x3F
+ bl SetGpuReg
+ ldr r1, _080BCDC0 @ =0x00003f06
+ movs r0, 0x4A
+ bl SetGpuReg
+ b _080BCEE6
+ .align 2, 0
+_080BCDB4: .4byte gSprites
+_080BCDB8: .4byte gBattleStruct
+_080BCDBC: .4byte sub_801182C
+_080BCDC0: .4byte 0x00003f06
+_080BCDC4:
+ ldr r1, _080BCDFC @ =gUnknown_2022986
+ ldrh r0, [r1]
+ subs r0, 0xFF
+ strh r0, [r1]
+ movs r1, 0xFF
+ lsls r1, 8
+ ands r0, r1
+ movs r1, 0xC0
+ lsls r1, 6
+ cmp r0, r1
+ beq _080BCDDC
+ b _080BCEE6
+_080BCDDC:
+ adds r1, r5, r6
+ lsls r1, 3
+ add r1, r9
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ movs r0, 0xF0
+ strh r0, [r1, 0xC]
+ movs r0, 0x20
+ strh r0, [r1, 0xE]
+ ldr r2, _080BCE00 @ =gUnknown_2023F4C
+ ldrh r1, [r2]
+ ldr r0, _080BCE04 @ =0x0000fffe
+ ands r0, r1
+ strh r0, [r2]
+ b _080BCEE6
+ .align 2, 0
+_080BCDFC: .4byte gUnknown_2022986
+_080BCE00: .4byte gUnknown_2023F4C
+_080BCE04: .4byte 0x0000fffe
+_080BCE08:
+ ldr r2, _080BCECC @ =gUnknown_2022986
+ ldrh r1, [r2]
+ movs r0, 0xFF
+ lsls r0, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080BCE1C
+ ldr r3, _080BCED0 @ =0xfffffc04
+ adds r0, r1, r3
+ strh r0, [r2]
+_080BCE1C:
+ adds r0, r5, r6
+ lsls r0, 3
+ mov r2, r9
+ adds r1, r0, r2
+ ldrh r2, [r1, 0xC]
+ movs r3, 0xC
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ beq _080BCE32
+ subs r0, r2, 0x2
+ strh r0, [r1, 0xC]
+_080BCE32:
+ movs r3, 0
+ ldr r0, _080BCED4 @ =gScanlineEffect
+ mov r12, r0
+ ldr r2, _080BCED8 @ =gScanlineEffectRegBuffers
+ mov r8, r2
+ mov r7, r12
+ adds r4, r1, 0
+_080BCE40:
+ lsls r2, r3, 1
+ ldrb r1, [r7, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ add r2, r8
+ ldrh r0, [r4, 0xC]
+ strh r0, [r2]
+ adds r3, 0x1
+ cmp r3, 0x4F
+ ble _080BCE40
+ cmp r3, 0x9F
+ bgt _080BCE84
+ ldr r0, _080BCED8 @ =gScanlineEffectRegBuffers
+ mov r8, r0
+ ldr r7, _080BCED4 @ =gScanlineEffect
+ ldr r1, _080BCEDC @ =gTasks
+ adds r0, r5, r6
+ lsls r0, 3
+ adds r4, r0, r1
+_080BCE6A:
+ lsls r2, r3, 1
+ ldrb r1, [r7, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ add r2, r8
+ ldrh r0, [r4, 0xC]
+ negs r0, r0
+ strh r0, [r2]
+ adds r3, 0x1
+ cmp r3, 0x9F
+ ble _080BCE6A
+_080BCE84:
+ adds r0, r5, r6
+ lsls r0, 3
+ mov r2, r9
+ adds r1, r0, r2
+ movs r3, 0xC
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _080BCEE6
+ movs r0, 0x3
+ mov r2, r12
+ strb r0, [r2, 0x15]
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0
+ bl SetBgAttribute
+ movs r0, 0x2
+ movs r1, 0x1
+ movs r2, 0
+ bl SetBgAttribute
+ movs r1, 0x9C
+ lsls r1, 8
+ movs r0, 0xA
+ bl SetGpuReg
+ movs r1, 0xBC
+ lsls r1, 7
+ movs r0, 0xC
+ bl SetGpuReg
+ b _080BCEE6
+ .align 2, 0
+_080BCECC: .4byte gUnknown_2022986
+_080BCED0: .4byte 0xfffffc04
+_080BCED4: .4byte gScanlineEffect
+_080BCED8: .4byte gScanlineEffectRegBuffers
+_080BCEDC: .4byte gTasks
+_080BCEE0:
+ adds r0, r6, 0
+ bl sub_80BC41C
+_080BCEE6:
+ add sp, 0x8
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80BCC4C
+
+ thumb_func_start sub_80BCEF4
+sub_80BCEF4: @ 80BCEF4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ str r0, [sp]
+ adds r6, r2, 0
+ adds r4, r3, 0
+ ldr r0, [sp, 0x24]
+ ldr r7, [sp, 0x28]
+ ldr r2, [sp, 0x2C]
+ mov r9, r2
+ ldr r5, [sp, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ lsls r6, 24
+ lsrs r6, 24
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ lsls r5, 16
+ lsrs r5, 16
+ adds r0, r4, 0
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080BCFC4 @ =gMonSpritesGfxPtr
+ ldr r2, [r1]
+ lsls r4, 2
+ adds r2, 0x4
+ adds r2, r4
+ ldr r1, _080BCFC8 @ =gBattleMonForms
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r1, 11
+ ldr r0, [r2]
+ adds r0, r1
+ movs r2, 0x80
+ lsls r2, 3
+ adds r1, r7, 0
+ bl CpuSet
+ ldr r1, [sp]
+ lsls r0, r1, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 5
+ adds r1, r7, 0
+ adds r3, r5, 0
+ bl LoadBgTiles
+ adds r0, r6, 0
+ adds r0, 0x8
+ cmp r6, r0
+ bge _080BCFA0
+ mov r12, r0
+ mov r2, r8
+ lsls r7, r2, 1
+_080BCF72:
+ mov r1, r8
+ adds r2, r1, 0
+ adds r2, 0x8
+ adds r4, r6, 0x1
+ cmp r1, r2
+ bge _080BCF9A
+ mov r0, r10
+ lsls r3, r0, 12
+ lsls r0, r6, 6
+ add r0, r9
+ adds r6, r7, r0
+ subs r1, r2, r1
+_080BCF8A:
+ adds r0, r5, 0
+ orrs r0, r3
+ strh r0, [r6]
+ adds r5, 0x1
+ adds r6, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bne _080BCF8A
+_080BCF9A:
+ adds r6, r4, 0
+ cmp r6, r12
+ blt _080BCF72
+_080BCFA0:
+ ldr r1, [sp]
+ lsls r0, r1, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 4
+ mov r1, r9
+ movs r3, 0
+ bl LoadBgTilemap
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BCFC4: .4byte gMonSpritesGfxPtr
+_080BCFC8: .4byte gBattleMonForms
+ thumb_func_end sub_80BCEF4
+
+ thumb_func_start sub_80BCFCC
+sub_80BCFCC: @ 80BCFCC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ ldr r4, [sp, 0x24]
+ ldr r5, [sp, 0x28]
+ mov r8, r5
+ ldr r5, [sp, 0x2C]
+ ldr r6, [sp, 0x30]
+ mov r9, r6
+ lsls r0, 24
+ lsrs r0, 24
+ mov r12, r0
+ lsls r1, 24
+ lsls r2, 24
+ lsls r3, 24
+ lsls r4, 24
+ lsrs r4, 24
+ mov r10, r4
+ mov r7, r8
+ lsls r7, 16
+ lsrs r6, r7, 16
+ lsls r5, 24
+ lsrs r5, 24
+ mov r0, r9
+ lsls r0, 24
+ mov r9, r0
+ ldr r4, _080BD090 @ =0x040000d4
+ ldr r0, _080BD094 @ =gMonSpritesGfxPtr
+ ldr r0, [r0]
+ lsrs r2, 22
+ adds r0, 0x4
+ adds r0, r2
+ lsrs r3, 13
+ ldr r0, [r0]
+ adds r0, r3
+ str r0, [r4]
+ movs r0, 0xC0
+ lsls r0, 19
+ adds r6, r0
+ str r6, [r4, 0x4]
+ ldr r0, _080BD098 @ =0x80000400
+ str r0, [r4, 0x8]
+ ldr r0, [r4, 0x8]
+ adds r2, r7, 0
+ lsrs r2, 21
+ mov r6, r9
+ lsrs r6, 15
+ subs r4, r2, r6
+ lsrs r0, r1, 24
+ adds r1, r0, 0
+ adds r1, 0x8
+ cmp r0, r1
+ bge _080BD080
+ mov r9, r1
+ mov r7, r12
+ lsls r7, 1
+ mov r8, r7
+ lsls r5, 11
+ str r5, [sp]
+_080BD048:
+ mov r2, r12
+ adds r3, r2, 0
+ adds r3, 0x8
+ adds r5, r0, 0x1
+ cmp r2, r3
+ bge _080BD07A
+ mov r1, r10
+ lsls r6, r1, 12
+ lsls r0, 6
+ movs r7, 0xC0
+ lsls r7, 19
+ adds r0, r7
+ ldr r1, [sp]
+ adds r0, r1, r0
+ mov r7, r8
+ adds r1, r7, r0
+ subs r2, r3, r2
+_080BD06A:
+ adds r0, r4, 0
+ orrs r0, r6
+ strh r0, [r1]
+ adds r4, 0x1
+ adds r1, 0x2
+ subs r2, 0x1
+ cmp r2, 0
+ bne _080BD06A
+_080BD07A:
+ adds r0, r5, 0
+ cmp r0, r9
+ blt _080BD048
+_080BD080:
+ 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
+_080BD090: .4byte 0x040000d4
+_080BD094: .4byte gMonSpritesGfxPtr
+_080BD098: .4byte 0x80000400
+ thumb_func_end sub_80BCFCC
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s
index 18b83bac6..873fa088c 100644
--- a/asm/battle_controller_link_opponent.s
+++ b/asm/battle_controller_link_opponent.s
@@ -70,7 +70,7 @@ _0803A6D0:
sub_803A6D4: @ 803A6D4
push {lr}
ldr r2, _0803A6FC @ =gSprites
- ldr r1, _0803A700 @ =gUnknown_2023D44
+ ldr r1, _0803A700 @ =gBattlerSpriteIds
ldr r0, _0803A704 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -90,7 +90,7 @@ _0803A6F8:
bx r0
.align 2, 0
_0803A6FC: .4byte gSprites
-_0803A700: .4byte gUnknown_2023D44
+_0803A700: .4byte gBattlerSpriteIds
_0803A704: .4byte gActiveBattler
_0803A708: .4byte SpriteCallbackDummy
thumb_func_end sub_803A6D4
@@ -99,7 +99,7 @@ _0803A708: .4byte SpriteCallbackDummy
sub_803A70C: @ 803A70C
push {r4-r6,lr}
ldr r4, _0803A784 @ =gSprites
- ldr r6, _0803A788 @ =gUnknown_2023D44
+ ldr r6, _0803A788 @ =gBattlerSpriteIds
ldr r5, _0803A78C @ =gActiveBattler
ldrb r0, [r5]
adds r0, r6
@@ -155,7 +155,7 @@ _0803A77C:
bx r0
.align 2, 0
_0803A784: .4byte gSprites
-_0803A788: .4byte gUnknown_2023D44
+_0803A788: .4byte gBattlerSpriteIds
_0803A78C: .4byte gActiveBattler
_0803A790: .4byte SpriteCallbackDummy
_0803A794: .4byte 0x000003ff
@@ -714,7 +714,7 @@ _0803AC10: .4byte sub_803A7E4
sub_803AC14: @ 803AC14
push {r4-r7,lr}
ldr r2, _0803AC70 @ =gSprites
- ldr r0, _0803AC74 @ =gUnknown_2023D44
+ ldr r0, _0803AC74 @ =gBattlerSpriteIds
ldr r7, _0803AC78 @ =gActiveBattler
ldrb r3, [r7]
adds r0, r3, r0
@@ -758,7 +758,7 @@ sub_803AC14: @ 803AC14
b _0803ACC0
.align 2, 0
_0803AC70: .4byte gSprites
-_0803AC74: .4byte gUnknown_2023D44
+_0803AC74: .4byte gBattlerSpriteIds
_0803AC78: .4byte gActiveBattler
_0803AC7C: .4byte gUnknown_2024018
_0803AC80: .4byte gBattlerPartyIndexes
@@ -842,7 +842,7 @@ _0803AD18:
sub_803AD20: @ 803AD20
push {lr}
ldr r2, _0803AD54 @ =gSprites
- ldr r0, _0803AD58 @ =gUnknown_2023D44
+ ldr r0, _0803AD58 @ =gBattlerSpriteIds
ldr r1, _0803AD5C @ =gActiveBattler
ldrb r3, [r1]
adds r0, r3, r0
@@ -866,7 +866,7 @@ _0803AD4E:
bx r0
.align 2, 0
_0803AD54: .4byte gSprites
-_0803AD58: .4byte gUnknown_2023D44
+_0803AD58: .4byte gBattlerSpriteIds
_0803AD5C: .4byte gActiveBattler
_0803AD60: .4byte gUnknown_3004FF0
thumb_func_end sub_803AD20
@@ -888,7 +888,7 @@ sub_803AD64: @ 803AD64
ands r0, r1
cmp r0, 0
bne _0803ADBE
- ldr r5, _0803ADCC @ =gUnknown_2023D44
+ ldr r5, _0803ADCC @ =gBattlerSpriteIds
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
@@ -920,7 +920,7 @@ _0803ADBE:
.align 2, 0
_0803ADC4: .4byte gUnknown_2024018
_0803ADC8: .4byte gActiveBattler
-_0803ADCC: .4byte gUnknown_2023D44
+_0803ADCC: .4byte gBattlerSpriteIds
_0803ADD0: .4byte gSprites
_0803ADD4: .4byte gUnknown_3004FF0
thumb_func_end sub_803AD64
@@ -942,7 +942,7 @@ _0803ADEA:
thumb_func_start DoHitAnimBlinkSpriteEffect_4
DoHitAnimBlinkSpriteEffect_4: @ 803ADF0
push {r4,lr}
- ldr r1, _0803AE2C @ =gUnknown_2023D44
+ ldr r1, _0803AE2C @ =gBattlerSpriteIds
ldr r0, _0803AE30 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -970,7 +970,7 @@ DoHitAnimBlinkSpriteEffect_4: @ 803ADF0
bl RecordedOpponentBufferExecCompleted
b _0803AE66
.align 2, 0
-_0803AE2C: .4byte gUnknown_2023D44
+_0803AE2C: .4byte gBattlerSpriteIds
_0803AE30: .4byte gActiveBattler
_0803AE34: .4byte gSprites
_0803AE38: .4byte gUnknown_2024005
@@ -1132,7 +1132,7 @@ sub_803AF28: @ 803AF28
bl FreeSpriteTilesByTag
adds r0, r4, 0
bl FreeSpritePaletteByTag
- ldr r1, _0803AFE0 @ =gUnknown_2023D44
+ ldr r1, _0803AFE0 @ =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r1
ldrb r1, [r0]
@@ -1179,7 +1179,7 @@ _0803AFCC:
_0803AFD4: .4byte gUnknown_2024018
_0803AFD8: .4byte gActiveBattler
_0803AFDC: .4byte 0x000027f9
-_0803AFE0: .4byte gUnknown_2023D44
+_0803AFE0: .4byte gBattlerSpriteIds
_0803AFE4: .4byte gSprites
_0803AFE8: .4byte gUnknown_3004FF0
_0803AFEC: .4byte gBattlerPartyIndexes
@@ -3599,7 +3599,7 @@ LinkOpponentHandleLoadPokeSprite: @ 803C3B4
adds r1, r5, 0
adds r2, r4, 0
bl CreateSprite
- ldr r4, _0803C4EC @ =gUnknown_2023D44
+ ldr r4, _0803C4EC @ =gBattlerSpriteIds
ldrb r1, [r6]
adds r1, r4
strb r0, [r1]
@@ -3678,7 +3678,7 @@ _0803C4DC: .4byte gBattlerPartyIndexes
_0803C4E0: .4byte gActiveBattler
_0803C4E4: .4byte gEnemyParty
_0803C4E8: .4byte gMultiuseSpriteTemplate
-_0803C4EC: .4byte gUnknown_2023D44
+_0803C4EC: .4byte gBattlerSpriteIds
_0803C4F0: .4byte gSprites
_0803C4F4: .4byte 0x0000ff10
_0803C4F8: .4byte gBattleMonForms
@@ -3803,7 +3803,7 @@ sub_803C550: @ 803C550
adds r1, r5, 0
adds r2, r4, 0
bl CreateSprite
- ldr r4, _0803C6C4 @ =gUnknown_2023D44
+ ldr r4, _0803C6C4 @ =gBattlerSpriteIds
adds r4, r6, r4
strb r0, [r4]
ldr r5, _0803C6C8 @ =gSprites
@@ -3893,7 +3893,7 @@ _0803C6B4: .4byte gEnemyParty
_0803C6B8: .4byte sub_8033E3C
_0803C6BC: .4byte gUnknown_3004FFC
_0803C6C0: .4byte gMultiuseSpriteTemplate
-_0803C6C4: .4byte gUnknown_2023D44
+_0803C6C4: .4byte gBattlerSpriteIds
_0803C6C8: .4byte gSprites
_0803C6CC: .4byte gBattleMonForms
_0803C6D0: .4byte SpriteCallbackDummy
@@ -3933,7 +3933,7 @@ _0803C710: .4byte gUnknown_2024018
_0803C714: .4byte gUnknown_3004FE0
_0803C718: .4byte sub_803C76C
_0803C71C:
- ldr r5, _0803C760 @ =gUnknown_2023D44
+ ldr r5, _0803C760 @ =gBattlerSpriteIds
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
@@ -3963,7 +3963,7 @@ _0803C758:
pop {r0}
bx r0
.align 2, 0
-_0803C760: .4byte gUnknown_2023D44
+_0803C760: .4byte gBattlerSpriteIds
_0803C764: .4byte gSprites
_0803C768: .4byte gUnknown_3004FF0
thumb_func_end LinkOpponentHandleReturnPokeToBall
@@ -4278,7 +4278,7 @@ _0803C992:
adds r1, r6, 0
adds r2, r4, 0
bl CreateSprite
- ldr r5, _0803CAD8 @ =gUnknown_2023D44
+ ldr r5, _0803CAD8 @ =gBattlerSpriteIds
mov r2, r8
ldrb r1, [r2]
adds r1, r5
@@ -4392,7 +4392,7 @@ _0803CAC8: .4byte gFacilityClassToPicIndex
_0803CACC: .4byte gActiveBattler
_0803CAD0: .4byte gMultiuseSpriteTemplate
_0803CAD4: .4byte gUnknown_823932C
-_0803CAD8: .4byte gUnknown_2023D44
+_0803CAD8: .4byte gBattlerSpriteIds
_0803CADC: .4byte gSprites
_0803CAE0: .4byte 0x0000ff10
_0803CAE4: .4byte gTrainerFrontPicPaletteTable
@@ -4415,7 +4415,7 @@ sub_803CB00: @ 803CB00
thumb_func_start sub_803CB0C
sub_803CB0C: @ 803CB0C
push {r4-r6,lr}
- ldr r6, _0803CB9C @ =gUnknown_2023D44
+ ldr r6, _0803CB9C @ =gBattlerSpriteIds
ldr r4, _0803CBA0 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r6
@@ -4484,7 +4484,7 @@ sub_803CB0C: @ 803CB0C
pop {r0}
bx r0
.align 2, 0
-_0803CB9C: .4byte gUnknown_2023D44
+_0803CB9C: .4byte gBattlerSpriteIds
_0803CBA0: .4byte gActiveBattler
_0803CBA4: .4byte gSprites
_0803CBA8: .4byte sub_8075590
@@ -4548,7 +4548,7 @@ _0803CC0C:
movs r1, 0x3F
bl PlaySE12WithPanning
ldr r2, _0803CC50 @ =gSprites
- ldr r1, _0803CC54 @ =gUnknown_2023D44
+ ldr r1, _0803CC54 @ =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r1
ldrb r1, [r0]
@@ -4571,7 +4571,7 @@ _0803CC48:
bx r0
.align 2, 0
_0803CC50: .4byte gSprites
-_0803CC54: .4byte gUnknown_2023D44
+_0803CC54: .4byte gBattlerSpriteIds
_0803CC58: .4byte sub_8011EA0
_0803CC5C: .4byte gUnknown_3004FE0
_0803CC60: .4byte sub_803AD20
@@ -4633,7 +4633,7 @@ _0803CCA6:
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
- ldr r5, _0803CD80 @ =gUnknown_2037F16
+ ldr r5, _0803CD80 @ =gAnimMoveTurn
mov r1, r12
adds r1, 0x3
adds r2, r1
@@ -4701,7 +4701,7 @@ _0803CCA6:
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r3, _0803CD94 @ =gUnknown_2037EE4
+ ldr r3, _0803CD94 @ =gAnimDisableStructPtr
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4725,12 +4725,12 @@ _0803CCA6:
.align 2, 0
_0803CD78: .4byte gActiveBattler
_0803CD7C: .4byte gUnknown_2022BC4
-_0803CD80: .4byte gUnknown_2037F16
+_0803CD80: .4byte gAnimMoveTurn
_0803CD84: .4byte gUnknown_2037EEC
_0803CD88: .4byte gUnknown_2037EE8
_0803CD8C: .4byte gUnknown_2037EFE
_0803CD90: .4byte gUnknown_2037F00
-_0803CD94: .4byte gUnknown_2037EE4
+_0803CD94: .4byte gAnimDisableStructPtr
_0803CD98: .4byte gUnknown_2024008
_0803CD9C:
ldr r0, _0803CDC0 @ =gUnknown_2024018
@@ -5437,7 +5437,7 @@ _0803D2F0: .4byte gUnknown_2022870
RecordedOpponentHandleHitAnimation: @ 803D2F4
push {r4,lr}
ldr r3, _0803D31C @ =gSprites
- ldr r2, _0803D320 @ =gUnknown_2023D44
+ ldr r2, _0803D320 @ =gBattlerSpriteIds
ldr r4, _0803D324 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r2
@@ -5455,7 +5455,7 @@ RecordedOpponentHandleHitAnimation: @ 803D2F4
b _0803D352
.align 2, 0
_0803D31C: .4byte gSprites
-_0803D320: .4byte gUnknown_2023D44
+_0803D320: .4byte gBattlerSpriteIds
_0803D324: .4byte gActiveBattler
_0803D328:
ldr r1, _0803D358 @ =gUnknown_2024005
@@ -5612,7 +5612,7 @@ _0803D450: .4byte gUnknown_2023F4C
thumb_func_start sub_803D454
sub_803D454: @ 803D454
push {r4-r6,lr}
- ldr r5, _0803D534 @ =gUnknown_2023D44
+ ldr r5, _0803D534 @ =gBattlerSpriteIds
ldr r6, _0803D538 @ =gActiveBattler
ldrb r0, [r6]
adds r0, r5
@@ -5722,7 +5722,7 @@ _0803D516:
pop {r0}
bx r0
.align 2, 0
-_0803D534: .4byte gUnknown_2023D44
+_0803D534: .4byte gBattlerSpriteIds
_0803D538: .4byte gActiveBattler
_0803D53C: .4byte gSprites
_0803D540: .4byte sub_8075590
@@ -6100,7 +6100,7 @@ RecordedOpponentHandleSpriteInvisibility: @ 803D834
cmp r0, 0
beq _0803D87A
ldr r3, _0803D888 @ =gSprites
- ldr r0, _0803D88C @ =gUnknown_2023D44
+ ldr r0, _0803D88C @ =gBattlerSpriteIds
ldrb r1, [r4]
adds r0, r1, r0
ldrb r0, [r0]
@@ -6133,7 +6133,7 @@ _0803D87A:
.align 2, 0
_0803D884: .4byte gActiveBattler
_0803D888: .4byte gSprites
-_0803D88C: .4byte gUnknown_2023D44
+_0803D88C: .4byte gBattlerSpriteIds
_0803D890: .4byte gUnknown_2022BC4
thumb_func_end RecordedOpponentHandleSpriteInvisibility
@@ -6218,15 +6218,15 @@ RecordedOpponentHandleCmd55: @ 803D914
ldrb r2, [r0]
cmp r2, 0x3
bne _0803D93C
- ldr r0, _0803D938 @ =gUnknown_2023E8A
+ ldr r0, _0803D938 @ =gBattleOutcome
strb r2, [r0]
b _0803D944
.align 2, 0
_0803D930: .4byte gUnknown_2022BC4
_0803D934: .4byte gActiveBattler
-_0803D938: .4byte gUnknown_2023E8A
+_0803D938: .4byte gBattleOutcome
_0803D93C:
- ldr r0, _0803D968 @ =gUnknown_2023E8A
+ ldr r0, _0803D968 @ =gBattleOutcome
movs r1, 0x3
eors r1, r2
strb r1, [r0]
@@ -6246,7 +6246,7 @@ _0803D944:
pop {r0}
bx r0
.align 2, 0
-_0803D968: .4byte gUnknown_2023E8A
+_0803D968: .4byte gBattleOutcome
_0803D96C: .4byte gUnknown_3004FE0
_0803D970: .4byte gActiveBattler
_0803D974: .4byte sub_802F6A8
diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s
index 0398914cb..8da94bdce 100644
--- a/asm/battle_controller_link_partner.s
+++ b/asm/battle_controller_link_partner.s
@@ -70,7 +70,7 @@ _080D426C:
sub_80D4270: @ 80D4270
push {lr}
ldr r2, _080D4298 @ =gSprites
- ldr r1, _080D429C @ =gUnknown_2023D44
+ ldr r1, _080D429C @ =gBattlerSpriteIds
ldr r0, _080D42A0 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -90,7 +90,7 @@ _080D4294:
bx r0
.align 2, 0
_080D4298: .4byte gSprites
-_080D429C: .4byte gUnknown_2023D44
+_080D429C: .4byte gBattlerSpriteIds
_080D42A0: .4byte gActiveBattler
_080D42A4: .4byte SpriteCallbackDummy
thumb_func_end sub_80D4270
@@ -99,7 +99,7 @@ _080D42A4: .4byte SpriteCallbackDummy
sub_80D42A8: @ 80D42A8
push {r4-r6,lr}
ldr r6, _080D4300 @ =gSprites
- ldr r5, _080D4304 @ =gUnknown_2023D44
+ ldr r5, _080D4304 @ =gBattlerSpriteIds
ldr r4, _080D4308 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r5
@@ -139,7 +139,7 @@ _080D42F8:
bx r0
.align 2, 0
_080D4300: .4byte gSprites
-_080D4304: .4byte gUnknown_2023D44
+_080D4304: .4byte gBattlerSpriteIds
_080D4308: .4byte gActiveBattler
_080D430C: .4byte SpriteCallbackDummy
thumb_func_end sub_80D42A8
@@ -456,7 +456,7 @@ _080D458C: .4byte sub_80D4358
sub_80D4590: @ 80D4590
push {lr}
ldr r2, _080D45C4 @ =gSprites
- ldr r1, _080D45C8 @ =gUnknown_2023D44
+ ldr r1, _080D45C8 @ =gBattlerSpriteIds
ldr r0, _080D45CC @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -481,7 +481,7 @@ _080D45BE:
bx r0
.align 2, 0
_080D45C4: .4byte gSprites
-_080D45C8: .4byte gUnknown_2023D44
+_080D45C8: .4byte gBattlerSpriteIds
_080D45CC: .4byte gActiveBattler
thumb_func_end sub_80D4590
@@ -543,7 +543,7 @@ _080D463C: .4byte gPlayerParty
sub_80D4640: @ 80D4640
push {r4-r6,lr}
ldr r6, _080D4698 @ =gSprites
- ldr r5, _080D469C @ =gUnknown_2023D44
+ ldr r5, _080D469C @ =gBattlerSpriteIds
ldr r4, _080D46A0 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r5
@@ -583,7 +583,7 @@ _080D4690:
bx r0
.align 2, 0
_080D4698: .4byte gSprites
-_080D469C: .4byte gUnknown_2023D44
+_080D469C: .4byte gBattlerSpriteIds
_080D46A0: .4byte gActiveBattler
_080D46A4: .4byte gUnknown_3004FF0
thumb_func_end sub_80D4640
@@ -605,7 +605,7 @@ sub_80D46A8: @ 80D46A8
ands r0, r1
cmp r0, 0
bne _080D46FC
- ldr r5, _080D470C @ =gUnknown_2023D44
+ ldr r5, _080D470C @ =gBattlerSpriteIds
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
@@ -635,7 +635,7 @@ _080D46FC:
.align 2, 0
_080D4704: .4byte gUnknown_2024018
_080D4708: .4byte gActiveBattler
-_080D470C: .4byte gUnknown_2023D44
+_080D470C: .4byte gBattlerSpriteIds
_080D4710: .4byte gSprites
_080D4714: .4byte gUnknown_3004FF0
thumb_func_end sub_80D46A8
@@ -657,7 +657,7 @@ _080D472A:
thumb_func_start sub_80D4730
sub_80D4730: @ 80D4730
push {r4,lr}
- ldr r1, _080D476C @ =gUnknown_2023D44
+ ldr r1, _080D476C @ =gBattlerSpriteIds
ldr r0, _080D4770 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -685,7 +685,7 @@ sub_80D4730: @ 80D4730
bl sub_80D49E8
b _080D47A6
.align 2, 0
-_080D476C: .4byte gUnknown_2023D44
+_080D476C: .4byte gBattlerSpriteIds
_080D4770: .4byte gActiveBattler
_080D4774: .4byte gSprites
_080D4778: .4byte gUnknown_2024005
@@ -852,7 +852,7 @@ sub_80D484C: @ 80D484C
ldr r5, _080D492C @ =gPlayerParty
adds r0, r5
bl HandleLowHpMusicChange
- ldr r1, _080D4930 @ =gUnknown_2023D44
+ ldr r1, _080D4930 @ =gBattlerSpriteIds
ldrb r0, [r7]
adds r0, r1
ldrb r1, [r0]
@@ -901,7 +901,7 @@ _080D4920: .4byte 0x000027f9
_080D4924: .4byte c3_0802FDF4
_080D4928: .4byte gBattlerPartyIndexes
_080D492C: .4byte gPlayerParty
-_080D4930: .4byte gUnknown_2023D44
+_080D4930: .4byte gBattlerSpriteIds
_080D4934: .4byte gSprites
_080D4938: .4byte gUnknown_3004FF0
_080D493C: .4byte gUnknown_3004FE0
@@ -3393,7 +3393,7 @@ LinkPartnerHandleLoadPokeSprite: @ 80D5DB4
adds r1, r5, 0
adds r2, r4, 0
bl CreateSprite
- ldr r4, _080D5EB8 @ =gUnknown_2023D44
+ ldr r4, _080D5EB8 @ =gBattlerSpriteIds
ldrb r1, [r6]
adds r1, r4
strb r0, [r1]
@@ -3455,7 +3455,7 @@ _080D5EA8: .4byte gBattlerPartyIndexes
_080D5EAC: .4byte gActiveBattler
_080D5EB0: .4byte gPlayerParty
_080D5EB4: .4byte gMultiuseSpriteTemplate
-_080D5EB8: .4byte gUnknown_2023D44
+_080D5EB8: .4byte gBattlerSpriteIds
_080D5EBC: .4byte gSprites
_080D5EC0: .4byte 0x0000ff10
_080D5EC4: .4byte gBattleMonForms
@@ -3585,7 +3585,7 @@ sub_80D5F40: @ 80D5F40
adds r1, r5, 0
adds r2, r4, 0
bl CreateSprite
- ldr r4, _080D609C @ =gUnknown_2023D44
+ ldr r4, _080D609C @ =gBattlerSpriteIds
adds r4, r6, r4
strb r0, [r4]
ldr r5, _080D60A0 @ =gSprites
@@ -3675,7 +3675,7 @@ _080D608C: .4byte gPlayerParty
_080D6090: .4byte sub_8033E3C
_080D6094: .4byte gUnknown_3004FFC
_080D6098: .4byte gMultiuseSpriteTemplate
-_080D609C: .4byte gUnknown_2023D44
+_080D609C: .4byte gBattlerSpriteIds
_080D60A0: .4byte gSprites
_080D60A4: .4byte gBattleMonForms
_080D60A8: .4byte SpriteCallbackDummy
@@ -3715,7 +3715,7 @@ _080D60E8: .4byte gUnknown_2024018
_080D60EC: .4byte gUnknown_3004FE0
_080D60F0: .4byte sub_80D613C
_080D60F4:
- ldr r5, _080D6130 @ =gUnknown_2023D44
+ ldr r5, _080D6130 @ =gBattlerSpriteIds
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
@@ -3743,7 +3743,7 @@ _080D612A:
pop {r0}
bx r0
.align 2, 0
-_080D6130: .4byte gUnknown_2023D44
+_080D6130: .4byte gBattlerSpriteIds
_080D6134: .4byte gSprites
_080D6138: .4byte gUnknown_3004FF0
thumb_func_end LinkPartnerHandleReturnPokeToBall
@@ -3926,7 +3926,7 @@ _080D6258:
mov r1, r8
adds r2, r4, 0
bl CreateSprite
- ldr r6, _080D6324 @ =gUnknown_2023D44
+ ldr r6, _080D6324 @ =gBattlerSpriteIds
ldrb r1, [r5]
adds r1, r6
strb r0, [r1]
@@ -3987,7 +3987,7 @@ _080D6258:
_080D6318: .4byte gActiveBattler
_080D631C: .4byte gMultiuseSpriteTemplate
_080D6320: .4byte gUnknown_8239F8C
-_080D6324: .4byte gUnknown_2023D44
+_080D6324: .4byte gBattlerSpriteIds
_080D6328: .4byte gSprites
_080D632C: .4byte 0x0000fffe
_080D6330: .4byte sub_8033EEC
@@ -4006,7 +4006,7 @@ sub_80D633C: @ 80D633C
thumb_func_start sub_80D6348
sub_80D6348: @ 80D6348
push {r4-r6,lr}
- ldr r6, _080D63D4 @ =gUnknown_2023D44
+ ldr r6, _080D63D4 @ =gBattlerSpriteIds
ldr r4, _080D63D8 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r6
@@ -4074,7 +4074,7 @@ sub_80D6348: @ 80D6348
pop {r0}
bx r0
.align 2, 0
-_080D63D4: .4byte gUnknown_2023D44
+_080D63D4: .4byte gBattlerSpriteIds
_080D63D8: .4byte gActiveBattler
_080D63DC: .4byte gSprites
_080D63E0: .4byte 0x0000ffd8
@@ -4150,7 +4150,7 @@ _080D6448:
movs r0, 0x10
bl PlaySE12WithPanning
ldr r2, _080D64CC @ =gSprites
- ldr r3, _080D64D0 @ =gUnknown_2023D44
+ ldr r3, _080D64D0 @ =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r3
ldrb r1, [r0]
@@ -4192,7 +4192,7 @@ _080D64BE:
_080D64C4: .4byte gBattlerPartyIndexes
_080D64C8: .4byte gPlayerParty
_080D64CC: .4byte gSprites
-_080D64D0: .4byte gUnknown_2023D44
+_080D64D0: .4byte gBattlerSpriteIds
_080D64D4: .4byte sub_8012110
_080D64D8: .4byte gUnknown_3004FE0
_080D64DC: .4byte sub_80D4640
@@ -4254,7 +4254,7 @@ _080D6522:
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
- ldr r5, _080D65FC @ =gUnknown_2037F16
+ ldr r5, _080D65FC @ =gAnimMoveTurn
mov r1, r12
adds r1, 0x3
adds r2, r1
@@ -4322,7 +4322,7 @@ _080D6522:
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r3, _080D6610 @ =gUnknown_2037EE4
+ ldr r3, _080D6610 @ =gAnimDisableStructPtr
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4346,12 +4346,12 @@ _080D6522:
.align 2, 0
_080D65F4: .4byte gActiveBattler
_080D65F8: .4byte gUnknown_2022BC4
-_080D65FC: .4byte gUnknown_2037F16
+_080D65FC: .4byte gAnimMoveTurn
_080D6600: .4byte gUnknown_2037EEC
_080D6604: .4byte gUnknown_2037EE8
_080D6608: .4byte gUnknown_2037EFE
_080D660C: .4byte gUnknown_2037F00
-_080D6610: .4byte gUnknown_2037EE4
+_080D6610: .4byte gAnimDisableStructPtr
_080D6614: .4byte gUnknown_2024008
_080D6618:
ldr r0, _080D663C @ =gUnknown_2024018
@@ -5058,7 +5058,7 @@ _080D6B6C: .4byte gUnknown_2022870
LinkPartnerHandleHitAnimation: @ 80D6B70
push {r4,lr}
ldr r3, _080D6B98 @ =gSprites
- ldr r2, _080D6B9C @ =gUnknown_2023D44
+ ldr r2, _080D6B9C @ =gBattlerSpriteIds
ldr r4, _080D6BA0 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r2
@@ -5076,7 +5076,7 @@ LinkPartnerHandleHitAnimation: @ 80D6B70
b _080D6BCE
.align 2, 0
_080D6B98: .4byte gSprites
-_080D6B9C: .4byte gUnknown_2023D44
+_080D6B9C: .4byte gBattlerSpriteIds
_080D6BA0: .4byte gActiveBattler
_080D6BA4:
ldr r1, _080D6BD4 @ =gUnknown_2024005
@@ -5234,7 +5234,7 @@ _080D6CD0: .4byte gUnknown_2023F4C
thumb_func_start sub_80D6CD4
sub_80D6CD4: @ 80D6CD4
push {r4-r7,lr}
- ldr r5, _080D6DDC @ =gUnknown_2023D44
+ ldr r5, _080D6DDC @ =gBattlerSpriteIds
ldr r6, _080D6DE0 @ =gActiveBattler
ldrb r0, [r6]
adds r0, r5
@@ -5358,7 +5358,7 @@ _080D6DC2:
adds r0, 0x2
b _080D6E0C
.align 2, 0
-_080D6DDC: .4byte gUnknown_2023D44
+_080D6DDC: .4byte gBattlerSpriteIds
_080D6DE0: .4byte gActiveBattler
_080D6DE4: .4byte gSprites
_080D6DE8: .4byte 0x0000ffd8
@@ -5386,7 +5386,7 @@ _080D6E0C:
movs r2, 0x20
bl LoadCompressedPalette
ldr r2, _080D6EA8 @ =gSprites
- ldr r1, _080D6EAC @ =gUnknown_2023D44
+ ldr r1, _080D6EAC @ =gBattlerSpriteIds
ldr r5, _080D6EB0 @ =gActiveBattler
ldrb r0, [r5]
adds r0, r1
@@ -5453,7 +5453,7 @@ _080D6E86:
.align 2, 0
_080D6EA4: .4byte gUnknown_8239FD4
_080D6EA8: .4byte gSprites
-_080D6EAC: .4byte gUnknown_2023D44
+_080D6EAC: .4byte gBattlerSpriteIds
_080D6EB0: .4byte gActiveBattler
_080D6EB4: .4byte sub_80D6ED0
_080D6EB8: .4byte gTasks
@@ -5781,7 +5781,7 @@ LinkPartnerHandleSpriteInvisibility: @ 80D7144
cmp r0, 0
beq _080D718A
ldr r3, _080D7198 @ =gSprites
- ldr r0, _080D719C @ =gUnknown_2023D44
+ ldr r0, _080D719C @ =gBattlerSpriteIds
ldrb r1, [r4]
adds r0, r1, r0
ldrb r0, [r0]
@@ -5814,7 +5814,7 @@ _080D718A:
.align 2, 0
_080D7194: .4byte gActiveBattler
_080D7198: .4byte gSprites
-_080D719C: .4byte gUnknown_2023D44
+_080D719C: .4byte gBattlerSpriteIds
_080D71A0: .4byte gUnknown_2022BC4
thumb_func_end LinkPartnerHandleSpriteInvisibility
@@ -5890,7 +5890,7 @@ sub_80D7218: @ 80D7218
thumb_func_start LinkPartnerHandlecmd55
LinkPartnerHandlecmd55: @ 80D7224
push {r4,lr}
- ldr r2, _080D725C @ =gUnknown_2023E8A
+ ldr r2, _080D725C @ =gBattleOutcome
ldr r1, _080D7260 @ =gUnknown_2022BC4
ldr r4, _080D7264 @ =gActiveBattler
ldrb r0, [r4]
@@ -5914,7 +5914,7 @@ LinkPartnerHandlecmd55: @ 80D7224
pop {r0}
bx r0
.align 2, 0
-_080D725C: .4byte gUnknown_2023E8A
+_080D725C: .4byte gBattleOutcome
_080D7260: .4byte gUnknown_2022BC4
_080D7264: .4byte gActiveBattler
_080D7268: .4byte gUnknown_3004FE0
diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s
index cd2495a35..9f878733e 100644
--- a/asm/battle_controller_oak.s
+++ b/asm/battle_controller_oak.s
@@ -422,7 +422,7 @@ _080E78D8:
sub_80E78E0: @ 80E78E0
push {lr}
ldr r2, _080E7908 @ =gSprites
- ldr r1, _080E790C @ =gUnknown_2023D44
+ ldr r1, _080E790C @ =gBattlerSpriteIds
ldr r0, _080E7910 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -442,7 +442,7 @@ _080E7904:
bx r0
.align 2, 0
_080E7908: .4byte gSprites
-_080E790C: .4byte gUnknown_2023D44
+_080E790C: .4byte gBattlerSpriteIds
_080E7910: .4byte gActiveBattler
_080E7914: .4byte SpriteCallbackDummy
thumb_func_end sub_80E78E0
@@ -1653,7 +1653,7 @@ _080E82F0: .4byte sub_80E8930
sub_80E82F4: @ 80E82F4
push {r4-r6,lr}
ldr r6, _080E834C @ =gSprites
- ldr r5, _080E8350 @ =gUnknown_2023D44
+ ldr r5, _080E8350 @ =gBattlerSpriteIds
ldr r4, _080E8354 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r5
@@ -1693,7 +1693,7 @@ _080E8344:
bx r0
.align 2, 0
_080E834C: .4byte gSprites
-_080E8350: .4byte gUnknown_2023D44
+_080E8350: .4byte gBattlerSpriteIds
_080E8354: .4byte gActiveBattler
_080E8358: .4byte gUnknown_3004FF0
thumb_func_end sub_80E82F4
@@ -2432,7 +2432,7 @@ _080E8942:
thumb_func_start DoHitAnimBlinkSpriteEffect_3
DoHitAnimBlinkSpriteEffect_3: @ 80E8948
push {r4,lr}
- ldr r1, _080E8984 @ =gUnknown_2023D44
+ ldr r1, _080E8984 @ =gBattlerSpriteIds
ldr r0, _080E8988 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -2460,7 +2460,7 @@ DoHitAnimBlinkSpriteEffect_3: @ 80E8948
bl WallyBufferExecCompleted
b _080E89BE
.align 2, 0
-_080E8984: .4byte gUnknown_2023D44
+_080E8984: .4byte gBattlerSpriteIds
_080E8988: .4byte gActiveBattler
_080E898C: .4byte gSprites
_080E8990: .4byte gUnknown_2024005
@@ -2510,7 +2510,7 @@ sub_80E89C4: @ 80E89C4
ands r0, r1
cmp r0, 0
bne _080E8A18
- ldr r5, _080E8A28 @ =gUnknown_2023D44
+ ldr r5, _080E8A28 @ =gBattlerSpriteIds
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
@@ -2540,7 +2540,7 @@ _080E8A18:
.align 2, 0
_080E8A20: .4byte gUnknown_2024018
_080E8A24: .4byte gActiveBattler
-_080E8A28: .4byte gUnknown_2023D44
+_080E8A28: .4byte gBattlerSpriteIds
_080E8A2C: .4byte gSprites
_080E8A30: .4byte gUnknown_3004FF0
thumb_func_end sub_80E89C4
@@ -2549,7 +2549,7 @@ _080E8A30: .4byte gUnknown_3004FF0
sub_80E8A34: @ 80E8A34
push {lr}
ldr r2, _080E8A5C @ =gSprites
- ldr r1, _080E8A60 @ =gUnknown_2023D44
+ ldr r1, _080E8A60 @ =gBattlerSpriteIds
ldr r0, _080E8A64 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -2569,7 +2569,7 @@ _080E8A58:
bx r0
.align 2, 0
_080E8A5C: .4byte gSprites
-_080E8A60: .4byte gUnknown_2023D44
+_080E8A60: .4byte gBattlerSpriteIds
_080E8A64: .4byte gActiveBattler
_080E8A68: .4byte SpriteCallbackDummy
thumb_func_end sub_80E8A34
@@ -4919,7 +4919,7 @@ _080E9E18: .4byte gActiveBattler
_080E9E1C: .4byte gUnknown_3004FE0
_080E9E20: .4byte sub_80E89C4
_080E9E24:
- ldr r5, _080E9E60 @ =gUnknown_2023D44
+ ldr r5, _080E9E60 @ =gBattlerSpriteIds
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
@@ -4947,7 +4947,7 @@ _080E9E5A:
pop {r0}
bx r0
.align 2, 0
-_080E9E60: .4byte gUnknown_2023D44
+_080E9E60: .4byte gBattlerSpriteIds
_080E9E64: .4byte gSprites
_080E9E68: .4byte gUnknown_3004FF0
thumb_func_end WallyHandleReturnMonToBall
@@ -4993,7 +4993,7 @@ sub_80E9E6C: @ 80E9E6C
movs r1, 0x50
movs r3, 0x1E
bl CreateSprite
- ldr r2, _080E9EDC @ =gUnknown_2023D44
+ ldr r2, _080E9EDC @ =gBattlerSpriteIds
ldrb r1, [r6]
b _080E9F1C
.align 2, 0
@@ -5002,7 +5002,7 @@ _080E9ECC: .4byte gSaveBlock2Ptr
_080E9ED0: .4byte gActiveBattler
_080E9ED4: .4byte gMultiuseSpriteTemplate
_080E9ED8: .4byte gUnknown_8239F8C
-_080E9EDC: .4byte gUnknown_2023D44
+_080E9EDC: .4byte gBattlerSpriteIds
_080E9EE0:
ldr r4, _080E9F8C @ =gActiveBattler
ldrb r1, [r4]
@@ -5028,13 +5028,13 @@ _080E9EE0:
movs r1, 0x50
movs r3, 0x1E
bl CreateSprite
- ldr r2, _080E9F98 @ =gUnknown_2023D44
+ ldr r2, _080E9F98 @ =gBattlerSpriteIds
ldrb r1, [r4]
_080E9F1C:
adds r1, r2
strb r0, [r1]
ldr r4, _080E9F9C @ =gSprites
- ldr r5, _080E9F98 @ =gUnknown_2023D44
+ ldr r5, _080E9F98 @ =gBattlerSpriteIds
ldr r6, _080E9F8C @ =gActiveBattler
ldrb r3, [r6]
adds r0, r3, r5
@@ -5090,7 +5090,7 @@ _080E9F1C:
_080E9F8C: .4byte gActiveBattler
_080E9F90: .4byte gMultiuseSpriteTemplate
_080E9F94: .4byte gUnknown_8239F8C
-_080E9F98: .4byte gUnknown_2023D44
+_080E9F98: .4byte gBattlerSpriteIds
_080E9F9C: .4byte gSprites
_080E9FA0: .4byte 0x0000fffe
_080E9FA4: .4byte sub_8033EEC
@@ -5139,7 +5139,7 @@ sub_80E9FB0: @ 80E9FB0
movs r1, 0x50
movs r3, 0x1E
bl CreateSprite
- ldr r2, _080EA020 @ =gUnknown_2023D44
+ ldr r2, _080EA020 @ =gBattlerSpriteIds
ldrb r1, [r6]
b _080EA060
.align 2, 0
@@ -5148,7 +5148,7 @@ _080EA010: .4byte gSaveBlock2Ptr
_080EA014: .4byte gActiveBattler
_080EA018: .4byte gMultiuseSpriteTemplate
_080EA01C: .4byte gUnknown_8239F8C
-_080EA020: .4byte gUnknown_2023D44
+_080EA020: .4byte gBattlerSpriteIds
_080EA024:
ldr r4, _080EA0D0 @ =gActiveBattler
ldrb r1, [r4]
@@ -5174,13 +5174,13 @@ _080EA024:
movs r1, 0x50
movs r3, 0x1E
bl CreateSprite
- ldr r2, _080EA0DC @ =gUnknown_2023D44
+ ldr r2, _080EA0DC @ =gBattlerSpriteIds
ldrb r1, [r4]
_080EA060:
adds r1, r2
strb r0, [r1]
ldr r4, _080EA0E0 @ =gSprites
- ldr r5, _080EA0DC @ =gUnknown_2023D44
+ ldr r5, _080EA0DC @ =gBattlerSpriteIds
ldr r6, _080EA0D0 @ =gActiveBattler
ldrb r3, [r6]
adds r0, r3, r5
@@ -5236,7 +5236,7 @@ _080EA060:
_080EA0D0: .4byte gActiveBattler
_080EA0D4: .4byte gMultiuseSpriteTemplate
_080EA0D8: .4byte gUnknown_8239F8C
-_080EA0DC: .4byte gUnknown_2023D44
+_080EA0DC: .4byte gBattlerSpriteIds
_080EA0E0: .4byte gSprites
_080EA0E4: .4byte 0x0000ffa0
_080EA0E8: .4byte sub_8033EEC
@@ -5318,7 +5318,7 @@ _080EA154:
movs r0, 0x10
bl PlaySE12WithPanning
ldr r2, _080EA1D8 @ =gSprites
- ldr r3, _080EA1DC @ =gUnknown_2023D44
+ ldr r3, _080EA1DC @ =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r3
ldrb r1, [r0]
@@ -5360,7 +5360,7 @@ _080EA1CA:
_080EA1D0: .4byte gBattlerPartyIndexes
_080EA1D4: .4byte gPlayerParty
_080EA1D8: .4byte gSprites
-_080EA1DC: .4byte gUnknown_2023D44
+_080EA1DC: .4byte gBattlerSpriteIds
_080EA1E0: .4byte sub_8012110
_080EA1E4: .4byte gUnknown_3004FE0
_080EA1E8: .4byte sub_80E82F4
@@ -5483,7 +5483,7 @@ sub_80EA2B8: @ 80EA2B8
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
- ldr r5, _080EA394 @ =gUnknown_2037F16
+ ldr r5, _080EA394 @ =gAnimMoveTurn
mov r1, r12
adds r1, 0x3
adds r2, r1
@@ -5551,7 +5551,7 @@ sub_80EA2B8: @ 80EA2B8
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r3, _080EA3A8 @ =gUnknown_2037EE4
+ ldr r3, _080EA3A8 @ =gAnimDisableStructPtr
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -5575,12 +5575,12 @@ sub_80EA2B8: @ 80EA2B8
.align 2, 0
_080EA38C: .4byte gUnknown_2022BC4
_080EA390: .4byte gActiveBattler
-_080EA394: .4byte gUnknown_2037F16
+_080EA394: .4byte gAnimMoveTurn
_080EA398: .4byte gUnknown_2037EEC
_080EA39C: .4byte gUnknown_2037EE8
_080EA3A0: .4byte gUnknown_2037EFE
_080EA3A4: .4byte gUnknown_2037F00
-_080EA3A8: .4byte gUnknown_2037EE4
+_080EA3A8: .4byte gAnimDisableStructPtr
_080EA3AC: .4byte gUnknown_2024008
_080EA3B0:
ldr r0, _080EA3D4 @ =gUnknown_2024018
@@ -6641,7 +6641,7 @@ sub_80EABFC: @ 80EABFC
sub_80EAC08: @ 80EAC08
push {r4,lr}
ldr r3, _080EAC30 @ =gSprites
- ldr r2, _080EAC34 @ =gUnknown_2023D44
+ ldr r2, _080EAC34 @ =gBattlerSpriteIds
ldr r4, _080EAC38 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r2
@@ -6659,7 +6659,7 @@ sub_80EAC08: @ 80EAC08
b _080EAC66
.align 2, 0
_080EAC30: .4byte gSprites
-_080EAC34: .4byte gUnknown_2023D44
+_080EAC34: .4byte gBattlerSpriteIds
_080EAC38: .4byte gActiveBattler
_080EAC3C:
ldr r1, _080EAC6C @ =gUnknown_2024005
@@ -6812,7 +6812,7 @@ sub_80EAD54: @ 80EAD54
bne _080EAD64
b _080EAEE4
_080EAD64:
- ldr r6, _080EAEA4 @ =gUnknown_2023D44
+ ldr r6, _080EAEA4 @ =gBattlerSpriteIds
ldr r7, _080EAEA8 @ =gActiveBattler
ldrb r0, [r7]
adds r0, r6
@@ -6966,7 +6966,7 @@ _080EAE84:
b _080EAF18
.align 2, 0
_080EAEA0: .4byte gBattleTypeFlags
-_080EAEA4: .4byte gUnknown_2023D44
+_080EAEA4: .4byte gBattlerSpriteIds
_080EAEA8: .4byte gActiveBattler
_080EAEAC: .4byte gSprites
_080EAEB0: .4byte 0x0000ffd8
@@ -7094,7 +7094,7 @@ sub_80EAF34: @ 80EAF34
adds r1, r5, 0
adds r2, r4, 0
bl CreateSprite
- ldr r4, _080EB098 @ =gUnknown_2023D44
+ ldr r4, _080EB098 @ =gBattlerSpriteIds
adds r4, r6, r4
strb r0, [r4]
ldr r5, _080EB09C @ =gSprites
@@ -7185,7 +7185,7 @@ _080EB088: .4byte gPlayerParty
_080EB08C: .4byte sub_8033E3C
_080EB090: .4byte gUnknown_3004FFC
_080EB094: .4byte gMultiuseSpriteTemplate
-_080EB098: .4byte gUnknown_2023D44
+_080EB098: .4byte gBattlerSpriteIds
_080EB09C: .4byte gSprites
_080EB0A0: .4byte gBattleMonForms
_080EB0A4: .4byte SpriteCallbackDummy
@@ -7435,7 +7435,7 @@ sub_80EB274: @ 80EB274
thumb_func_start sub_80EB280
sub_80EB280: @ 80EB280
push {r4,lr}
- ldr r2, _080EB2C4 @ =gUnknown_2023E8A
+ ldr r2, _080EB2C4 @ =gBattleOutcome
ldr r1, _080EB2C8 @ =gUnknown_2022BC4
ldr r4, _080EB2CC @ =gActiveBattler
ldrb r0, [r4]
@@ -7466,7 +7466,7 @@ _080EB2BC:
pop {r0}
bx r0
.align 2, 0
-_080EB2C4: .4byte gUnknown_2023E8A
+_080EB2C4: .4byte gBattleOutcome
_080EB2C8: .4byte gUnknown_2022BC4
_080EB2CC: .4byte gActiveBattler
_080EB2D0: .4byte gBattleTypeFlags
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index c7223984e..0c94035ee 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -70,7 +70,7 @@ _08035AE4:
sub_8035AE8: @ 8035AE8
push {lr}
ldr r2, _08035B10 @ =gSprites
- ldr r1, _08035B14 @ =gUnknown_2023D44
+ ldr r1, _08035B14 @ =gBattlerSpriteIds
ldr r0, _08035B18 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -90,7 +90,7 @@ _08035B0C:
bx r0
.align 2, 0
_08035B10: .4byte gSprites
-_08035B14: .4byte gUnknown_2023D44
+_08035B14: .4byte gBattlerSpriteIds
_08035B18: .4byte gActiveBattler
_08035B1C: .4byte SpriteCallbackDummy
thumb_func_end sub_8035AE8
@@ -99,7 +99,7 @@ _08035B1C: .4byte SpriteCallbackDummy
sub_8035B20: @ 8035B20
push {lr}
ldr r2, _08035B48 @ =gSprites
- ldr r1, _08035B4C @ =gUnknown_2023D44
+ ldr r1, _08035B4C @ =gBattlerSpriteIds
ldr r0, _08035B50 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -119,7 +119,7 @@ _08035B44:
bx r0
.align 2, 0
_08035B48: .4byte gSprites
-_08035B4C: .4byte gUnknown_2023D44
+_08035B4C: .4byte gBattlerSpriteIds
_08035B50: .4byte gActiveBattler
_08035B54: .4byte SpriteCallbackDummy
thumb_func_end sub_8035B20
@@ -128,7 +128,7 @@ _08035B54: .4byte SpriteCallbackDummy
sub_8035B58: @ 8035B58
push {r4-r6,lr}
ldr r4, _08035BD0 @ =gSprites
- ldr r6, _08035BD4 @ =gUnknown_2023D44
+ ldr r6, _08035BD4 @ =gBattlerSpriteIds
ldr r5, _08035BD8 @ =gActiveBattler
ldrb r0, [r5]
adds r0, r6
@@ -184,7 +184,7 @@ _08035BC8:
bx r0
.align 2, 0
_08035BD0: .4byte gSprites
-_08035BD4: .4byte gUnknown_2023D44
+_08035BD4: .4byte gBattlerSpriteIds
_08035BD8: .4byte gActiveBattler
_08035BDC: .4byte SpriteCallbackDummy
_08035BE0: .4byte 0x000003ff
@@ -685,7 +685,7 @@ _08035FE4: .4byte sub_8035C30
sub_8035FE8: @ 8035FE8
push {r4-r7,lr}
ldr r2, _08036044 @ =gSprites
- ldr r0, _08036048 @ =gUnknown_2023D44
+ ldr r0, _08036048 @ =gBattlerSpriteIds
ldr r7, _0803604C @ =gActiveBattler
ldrb r3, [r7]
adds r0, r3, r0
@@ -729,7 +729,7 @@ sub_8035FE8: @ 8035FE8
b _08036094
.align 2, 0
_08036044: .4byte gSprites
-_08036048: .4byte gUnknown_2023D44
+_08036048: .4byte gBattlerSpriteIds
_0803604C: .4byte gActiveBattler
_08036050: .4byte gUnknown_2024018
_08036054: .4byte gBattlerPartyIndexes
@@ -838,7 +838,7 @@ _08036124:
sub_803612C: @ 803612C
push {lr}
ldr r2, _08036160 @ =gSprites
- ldr r0, _08036164 @ =gUnknown_2023D44
+ ldr r0, _08036164 @ =gBattlerSpriteIds
ldr r1, _08036168 @ =gActiveBattler
ldrb r3, [r1]
adds r0, r3, r0
@@ -862,7 +862,7 @@ _0803615A:
bx r0
.align 2, 0
_08036160: .4byte gSprites
-_08036164: .4byte gUnknown_2023D44
+_08036164: .4byte gBattlerSpriteIds
_08036168: .4byte gActiveBattler
_0803616C: .4byte gUnknown_3004FF0
thumb_func_end sub_803612C
@@ -884,7 +884,7 @@ sub_8036170: @ 8036170
ands r0, r1
cmp r0, 0
bne _080361CA
- ldr r5, _080361D8 @ =gUnknown_2023D44
+ ldr r5, _080361D8 @ =gBattlerSpriteIds
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
@@ -916,7 +916,7 @@ _080361CA:
.align 2, 0
_080361D0: .4byte gUnknown_2024018
_080361D4: .4byte gActiveBattler
-_080361D8: .4byte gUnknown_2023D44
+_080361D8: .4byte gBattlerSpriteIds
_080361DC: .4byte gSprites
_080361E0: .4byte gUnknown_3004FF0
thumb_func_end sub_8036170
@@ -938,7 +938,7 @@ _080361F6:
thumb_func_start sub_80361FC
sub_80361FC: @ 80361FC
push {r4,lr}
- ldr r1, _08036238 @ =gUnknown_2023D44
+ ldr r1, _08036238 @ =gBattlerSpriteIds
ldr r0, _0803623C @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -966,7 +966,7 @@ sub_80361FC: @ 80361FC
bl OpponentBufferExecCompleted
b _08036272
.align 2, 0
-_08036238: .4byte gUnknown_2023D44
+_08036238: .4byte gBattlerSpriteIds
_0803623C: .4byte gActiveBattler
_08036240: .4byte gSprites
_08036244: .4byte gUnknown_2024005
@@ -1128,7 +1128,7 @@ sub_8036334: @ 8036334
bl FreeSpriteTilesByTag
adds r0, r4, 0
bl FreeSpritePaletteByTag
- ldr r1, _080363EC @ =gUnknown_2023D44
+ ldr r1, _080363EC @ =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r1
ldrb r1, [r0]
@@ -1175,7 +1175,7 @@ _080363D8:
_080363E0: .4byte gUnknown_2024018
_080363E4: .4byte gActiveBattler
_080363E8: .4byte 0x000027f9
-_080363EC: .4byte gUnknown_2023D44
+_080363EC: .4byte gBattlerSpriteIds
_080363F0: .4byte gSprites
_080363F4: .4byte gUnknown_3004FF0
_080363F8: .4byte gBattlerPartyIndexes
@@ -3666,7 +3666,7 @@ _080378AA:
adds r1, r4, 0
adds r2, r5, 0
bl CreateSprite
- ldr r4, _080379A4 @ =gUnknown_2023D44
+ ldr r4, _080379A4 @ =gBattlerSpriteIds
ldrb r1, [r7]
adds r1, r4
strb r0, [r1]
@@ -3759,7 +3759,7 @@ _08037986:
.align 2, 0
_0803799C: .4byte gActiveBattler
_080379A0: .4byte gMultiuseSpriteTemplate
-_080379A4: .4byte gUnknown_2023D44
+_080379A4: .4byte gBattlerSpriteIds
_080379A8: .4byte gSprites
_080379AC: .4byte 0x0000ff10
_080379B0: .4byte gBattleMonForms
@@ -3895,7 +3895,7 @@ sub_8037A28: @ 8037A28
adds r1, r5, 0
adds r2, r4, 0
bl CreateSprite
- ldr r4, _08037B9C @ =gUnknown_2023D44
+ ldr r4, _08037B9C @ =gBattlerSpriteIds
adds r4, r6, r4
strb r0, [r4]
ldr r5, _08037BA0 @ =gSprites
@@ -3985,7 +3985,7 @@ _08037B8C: .4byte gEnemyParty
_08037B90: .4byte sub_8033E3C
_08037B94: .4byte gUnknown_3004FFC
_08037B98: .4byte gMultiuseSpriteTemplate
-_08037B9C: .4byte gUnknown_2023D44
+_08037B9C: .4byte gBattlerSpriteIds
_08037BA0: .4byte gSprites
_08037BA4: .4byte gBattleMonForms
_08037BA8: .4byte SpriteCallbackDummy
@@ -4025,7 +4025,7 @@ _08037BE8: .4byte gUnknown_2024018
_08037BEC: .4byte gUnknown_3004FE0
_08037BF0: .4byte sub_8037C44
_08037BF4:
- ldr r5, _08037C38 @ =gUnknown_2023D44
+ ldr r5, _08037C38 @ =gBattlerSpriteIds
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
@@ -4055,7 +4055,7 @@ _08037C30:
pop {r0}
bx r0
.align 2, 0
-_08037C38: .4byte gUnknown_2023D44
+_08037C38: .4byte gBattlerSpriteIds
_08037C3C: .4byte gSprites
_08037C40: .4byte gUnknown_3004FF0
thumb_func_end sub_8037BAC
@@ -4227,7 +4227,7 @@ _08037D3A:
movs r1, 0xB0
adds r2, r4, 0
bl CreateSprite
- ldr r5, _08037E7C @ =gUnknown_2023D44
+ ldr r5, _08037E7C @ =gBattlerSpriteIds
mov r2, r8
ldrb r1, [r2]
adds r1, r5
@@ -4341,7 +4341,7 @@ _08037E6C: .4byte gTrainers
_08037E70: .4byte gActiveBattler
_08037E74: .4byte gMultiuseSpriteTemplate
_08037E78: .4byte gUnknown_823932C
-_08037E7C: .4byte gUnknown_2023D44
+_08037E7C: .4byte gBattlerSpriteIds
_08037E80: .4byte gSprites
_08037E84: .4byte 0x0000ff10
_08037E88: .4byte gTrainerFrontPicPaletteTable
@@ -4439,7 +4439,7 @@ _08037F0E:
movs r1, 0xB0
movs r3, 0x1E
bl CreateSprite
- ldr r5, _08038050 @ =gUnknown_2023D44
+ ldr r5, _08038050 @ =gBattlerSpriteIds
mov r2, r8
ldrb r1, [r2]
adds r1, r5
@@ -4561,7 +4561,7 @@ _08038040: .4byte gTrainers
_08038044: .4byte gActiveBattler
_08038048: .4byte gMultiuseSpriteTemplate
_0803804C: .4byte gUnknown_823932C
-_08038050: .4byte gUnknown_2023D44
+_08038050: .4byte gBattlerSpriteIds
_08038054: .4byte gSprites
_08038058: .4byte 0x0000fffe
_0803805C: .4byte gTrainerFrontPicPaletteTable
@@ -4576,7 +4576,7 @@ _08038074: .4byte sub_8035B20
thumb_func_start sub_8038078
sub_8038078: @ 8038078
push {r4-r6,lr}
- ldr r6, _08038108 @ =gUnknown_2023D44
+ ldr r6, _08038108 @ =gBattlerSpriteIds
ldr r4, _0803810C @ =gActiveBattler
ldrb r0, [r4]
adds r0, r6
@@ -4645,7 +4645,7 @@ sub_8038078: @ 8038078
pop {r0}
bx r0
.align 2, 0
-_08038108: .4byte gUnknown_2023D44
+_08038108: .4byte gBattlerSpriteIds
_0803810C: .4byte gActiveBattler
_08038110: .4byte gSprites
_08038114: .4byte sub_8075590
@@ -4709,7 +4709,7 @@ _08038178:
movs r1, 0x3F
bl PlaySE12WithPanning
ldr r2, _080381BC @ =gSprites
- ldr r1, _080381C0 @ =gUnknown_2023D44
+ ldr r1, _080381C0 @ =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r1
ldrb r1, [r0]
@@ -4732,7 +4732,7 @@ _080381B4:
bx r0
.align 2, 0
_080381BC: .4byte gSprites
-_080381C0: .4byte gUnknown_2023D44
+_080381C0: .4byte gBattlerSpriteIds
_080381C4: .4byte sub_8011EA0
_080381C8: .4byte gUnknown_3004FE0
_080381CC: .4byte sub_803612C
@@ -4794,7 +4794,7 @@ _08038212:
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
- ldr r5, _080382EC @ =gUnknown_2037F16
+ ldr r5, _080382EC @ =gAnimMoveTurn
mov r1, r12
adds r1, 0x3
adds r2, r1
@@ -4862,7 +4862,7 @@ _08038212:
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r3, _08038300 @ =gUnknown_2037EE4
+ ldr r3, _08038300 @ =gAnimDisableStructPtr
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4886,12 +4886,12 @@ _08038212:
.align 2, 0
_080382E4: .4byte gActiveBattler
_080382E8: .4byte gUnknown_2022BC4
-_080382EC: .4byte gUnknown_2037F16
+_080382EC: .4byte gAnimMoveTurn
_080382F0: .4byte gUnknown_2037EEC
_080382F4: .4byte gUnknown_2037EE8
_080382F8: .4byte gUnknown_2037EFE
_080382FC: .4byte gUnknown_2037F00
-_08038300: .4byte gUnknown_2037EE4
+_08038300: .4byte gAnimDisableStructPtr
_08038304: .4byte gUnknown_2024008
_08038308:
ldr r0, _0803832C @ =gUnknown_2024018
@@ -5926,7 +5926,7 @@ _08038B1C: .4byte gUnknown_2022870
OpponentHandleHitAnimation: @ 8038B20
push {r4,lr}
ldr r3, _08038B48 @ =gSprites
- ldr r2, _08038B4C @ =gUnknown_2023D44
+ ldr r2, _08038B4C @ =gBattlerSpriteIds
ldr r4, _08038B50 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r2
@@ -5944,7 +5944,7 @@ OpponentHandleHitAnimation: @ 8038B20
b _08038B7E
.align 2, 0
_08038B48: .4byte gSprites
-_08038B4C: .4byte gUnknown_2023D44
+_08038B4C: .4byte gBattlerSpriteIds
_08038B50: .4byte gActiveBattler
_08038B54:
ldr r1, _08038B84 @ =gUnknown_2024005
@@ -6101,7 +6101,7 @@ _08038C7C: .4byte gUnknown_2023F4C
thumb_func_start sub_8038C80
sub_8038C80: @ 8038C80
push {r4-r6,lr}
- ldr r5, _08038D60 @ =gUnknown_2023D44
+ ldr r5, _08038D60 @ =gBattlerSpriteIds
ldr r6, _08038D64 @ =gActiveBattler
ldrb r0, [r6]
adds r0, r5
@@ -6211,7 +6211,7 @@ _08038D42:
pop {r0}
bx r0
.align 2, 0
-_08038D60: .4byte gUnknown_2023D44
+_08038D60: .4byte gBattlerSpriteIds
_08038D64: .4byte gActiveBattler
_08038D68: .4byte gSprites
_08038D6C: .4byte sub_8075590
@@ -6589,7 +6589,7 @@ sub_8039060: @ 8039060
cmp r0, 0
beq _080390A6
ldr r3, _080390B4 @ =gSprites
- ldr r0, _080390B8 @ =gUnknown_2023D44
+ ldr r0, _080390B8 @ =gBattlerSpriteIds
ldrb r1, [r4]
adds r0, r1, r0
ldrb r0, [r0]
@@ -6622,7 +6622,7 @@ _080390A6:
.align 2, 0
_080390B0: .4byte gActiveBattler
_080390B4: .4byte gSprites
-_080390B8: .4byte gUnknown_2023D44
+_080390B8: .4byte gBattlerSpriteIds
_080390BC: .4byte gUnknown_2022BC4
thumb_func_end sub_8039060
diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s
index 370fa7ee8..e3db6d88e 100644
--- a/asm/battle_controller_player.s
+++ b/asm/battle_controller_player.s
@@ -131,7 +131,7 @@ _0802E400:
CompleteOnBankSpritePosX_0: @ 802E404
push {lr}
ldr r2, _0802E42C @ =gSprites
- ldr r1, _0802E430 @ =gUnknown_2023D44
+ ldr r1, _0802E430 @ =gBattlerSpriteIds
ldr r0, _0802E434 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -150,7 +150,7 @@ _0802E426:
bx r0
.align 2, 0
_0802E42C: .4byte gSprites
-_0802E430: .4byte gUnknown_2023D44
+_0802E430: .4byte gBattlerSpriteIds
_0802E434: .4byte gActiveBattler
thumb_func_end CompleteOnBankSpritePosX_0
@@ -480,7 +480,7 @@ _0802E6B6:
movs r0, 0x5
bl PlaySE
ldr r2, _0802E718 @ =gSprites
- ldr r1, _0802E71C @ =gUnknown_2023D44
+ ldr r1, _0802E71C @ =gBattlerSpriteIds
ldr r4, _0802E70C @ =gUnknown_3004FF4
ldrb r0, [r4]
adds r0, r1
@@ -514,7 +514,7 @@ _0802E70C: .4byte gUnknown_3004FF4
_0802E710: .4byte gBattlersCount
_0802E714: .4byte gMain
_0802E718: .4byte gSprites
-_0802E71C: .4byte gUnknown_2023D44
+_0802E71C: .4byte gBattlerSpriteIds
_0802E720: .4byte sub_8012098
_0802E724: .4byte gUnknown_2023FFC
_0802E728: .4byte gActiveBattler
@@ -526,7 +526,7 @@ _0802E72C:
movs r0, 0x5
bl PlaySE
ldr r2, _0802E784 @ =gSprites
- ldr r1, _0802E788 @ =gUnknown_2023D44
+ ldr r1, _0802E788 @ =gBattlerSpriteIds
ldr r5, _0802E78C @ =gUnknown_3004FF4
ldrb r0, [r5]
adds r0, r1
@@ -561,7 +561,7 @@ _0802E72C:
b _0802E9DC
.align 2, 0
_0802E784: .4byte gSprites
-_0802E788: .4byte gUnknown_2023D44
+_0802E788: .4byte gBattlerSpriteIds
_0802E78C: .4byte gUnknown_3004FF4
_0802E790: .4byte sub_8012098
_0802E794: .4byte gUnknown_3004FE0
@@ -577,7 +577,7 @@ _0802E7AA:
movs r0, 0x5
bl PlaySE
ldr r2, _0802E7DC @ =gSprites
- ldr r1, _0802E7E0 @ =gUnknown_2023D44
+ ldr r1, _0802E7E0 @ =gBattlerSpriteIds
ldr r3, _0802E7E4 @ =gUnknown_3004FF4
ldrb r0, [r3]
adds r0, r1
@@ -600,7 +600,7 @@ _0802E7CC:
b _0802E7F6
.align 2, 0
_0802E7DC: .4byte gSprites
-_0802E7E0: .4byte gUnknown_2023D44
+_0802E7E0: .4byte gBattlerSpriteIds
_0802E7E4: .4byte gUnknown_3004FF4
_0802E7E8: .4byte sub_8012098
_0802E7EC:
@@ -718,7 +718,7 @@ _0802E8CE:
movs r0, 0x5
bl PlaySE
ldr r2, _0802E900 @ =gSprites
- ldr r1, _0802E904 @ =gUnknown_2023D44
+ ldr r1, _0802E904 @ =gBattlerSpriteIds
ldr r3, _0802E908 @ =gUnknown_3004FF4
ldrb r0, [r3]
adds r0, r1
@@ -741,7 +741,7 @@ _0802E8F0:
b _0802E91A
.align 2, 0
_0802E900: .4byte gSprites
-_0802E904: .4byte gUnknown_2023D44
+_0802E904: .4byte gBattlerSpriteIds
_0802E908: .4byte gUnknown_3004FF4
_0802E90C: .4byte sub_8012098
_0802E910:
@@ -841,7 +841,7 @@ _0802E9C0:
beq _0802E8F0
_0802E9C4:
ldr r2, _0802EA04 @ =gSprites
- ldr r1, _0802EA08 @ =gUnknown_2023D44
+ ldr r1, _0802EA08 @ =gBattlerSpriteIds
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -867,7 +867,7 @@ _0802E9F8: .4byte gAbsentBattlerFlags
_0802E9FC: .4byte gBitTable
_0802EA00: .4byte gUnknown_3004FF4
_0802EA04: .4byte gSprites
-_0802EA08: .4byte gUnknown_2023D44
+_0802EA08: .4byte gBattlerSpriteIds
_0802EA0C: .4byte sub_8012044
thumb_func_end sub_802E674
@@ -1005,7 +1005,7 @@ _0802EB04:
cmp r0, 0
bne _0802EB3A
movs r0, 0
- bl CountAliveMons
+ bl CountAliveMonsInBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1095,7 +1095,7 @@ _0802EBDE:
_0802EBE4:
strb r0, [r1]
ldr r2, _0802EC04 @ =gSprites
- ldr r1, _0802EC08 @ =gUnknown_2023D44
+ ldr r1, _0802EC08 @ =gBattlerSpriteIds
ldr r0, _0802EC00 @ =gUnknown_3004FF4
ldrb r0, [r0]
adds r0, r1
@@ -1110,7 +1110,7 @@ _0802EBE4:
.align 2, 0
_0802EC00: .4byte gUnknown_3004FF4
_0802EC04: .4byte gSprites
-_0802EC08: .4byte gUnknown_2023D44
+_0802EC08: .4byte gBattlerSpriteIds
_0802EC0C: .4byte sub_8012044
_0802EC10:
movs r7, 0x2
@@ -2462,7 +2462,7 @@ _0802F72C: .4byte gUnknown_3004F80
sub_802F730: @ 802F730
push {lr}
ldr r2, _0802F758 @ =gSprites
- ldr r1, _0802F75C @ =gUnknown_2023D44
+ ldr r1, _0802F75C @ =gBattlerSpriteIds
ldr r0, _0802F760 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -2482,7 +2482,7 @@ _0802F754:
bx r0
.align 2, 0
_0802F758: .4byte gSprites
-_0802F75C: .4byte gUnknown_2023D44
+_0802F75C: .4byte gBattlerSpriteIds
_0802F760: .4byte gActiveBattler
_0802F764: .4byte SpriteCallbackDummy
thumb_func_end sub_802F730
@@ -2491,7 +2491,7 @@ _0802F764: .4byte SpriteCallbackDummy
sub_802F768: @ 802F768
push {lr}
ldr r2, _0802F790 @ =gSprites
- ldr r1, _0802F794 @ =gUnknown_2023D44
+ ldr r1, _0802F794 @ =gBattlerSpriteIds
ldr r0, _0802F798 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -2511,7 +2511,7 @@ _0802F78C:
bx r0
.align 2, 0
_0802F790: .4byte gSprites
-_0802F794: .4byte gUnknown_2023D44
+_0802F794: .4byte gBattlerSpriteIds
_0802F798: .4byte gActiveBattler
_0802F79C: .4byte SpriteCallbackDummy
thumb_func_end sub_802F768
@@ -2520,7 +2520,7 @@ _0802F79C: .4byte SpriteCallbackDummy
sub_802F7A0: @ 802F7A0
push {r4-r6,lr}
ldr r6, _0802F7FC @ =gSprites
- ldr r5, _0802F800 @ =gUnknown_2023D44
+ ldr r5, _0802F800 @ =gBattlerSpriteIds
ldr r4, _0802F804 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r5
@@ -2562,7 +2562,7 @@ _0802F7F4:
bx r0
.align 2, 0
_0802F7FC: .4byte gSprites
-_0802F800: .4byte gUnknown_2023D44
+_0802F800: .4byte gBattlerSpriteIds
_0802F804: .4byte gActiveBattler
_0802F808: .4byte SpriteCallbackDummy
_0802F80C: .4byte gSaveBlock2Ptr
@@ -4010,7 +4010,7 @@ sub_80303A8: @ 80303A8
negs r1, r0
orrs r1, r0
lsrs r6, r1, 31
- ldr r0, _08030400 @ =gUnknown_2023D44
+ ldr r0, _08030400 @ =gBattlerSpriteIds
adds r0, r7, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -4031,7 +4031,7 @@ _080303F0:
mov pc, r0
.align 2, 0
_080303FC: .4byte gTasks+0x8
-_08030400: .4byte gUnknown_2023D44
+_08030400: .4byte gBattlerSpriteIds
_08030404: .4byte gSprites
_08030408: .4byte _0803040C
.align 2, 0
@@ -4179,7 +4179,7 @@ _08030534: .4byte sub_802FE94
sub_8030538: @ 8030538
push {r4-r6,lr}
ldr r6, _08030590 @ =gSprites
- ldr r5, _08030594 @ =gUnknown_2023D44
+ ldr r5, _08030594 @ =gBattlerSpriteIds
ldr r4, _08030598 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r5
@@ -4219,7 +4219,7 @@ _08030588:
bx r0
.align 2, 0
_08030590: .4byte gSprites
-_08030594: .4byte gUnknown_2023D44
+_08030594: .4byte gBattlerSpriteIds
_08030598: .4byte gActiveBattler
_0803059C: .4byte gUnknown_3004FF0
thumb_func_end sub_8030538
@@ -4241,7 +4241,7 @@ sub_80305A0: @ 80305A0
ands r0, r1
cmp r0, 0
bne _080305F4
- ldr r5, _08030604 @ =gUnknown_2023D44
+ ldr r5, _08030604 @ =gBattlerSpriteIds
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
@@ -4271,7 +4271,7 @@ _080305F4:
.align 2, 0
_080305FC: .4byte gUnknown_2024018
_08030600: .4byte gActiveBattler
-_08030604: .4byte gUnknown_2023D44
+_08030604: .4byte gBattlerSpriteIds
_08030608: .4byte gSprites
_0803060C: .4byte gUnknown_3004FF0
thumb_func_end sub_80305A0
@@ -4485,7 +4485,7 @@ _080307B0: .4byte gActiveBattler
thumb_func_start DoHitAnimBlinkSpriteEffect
DoHitAnimBlinkSpriteEffect: @ 80307B4
push {r4,lr}
- ldr r1, _080307F0 @ =gUnknown_2023D44
+ ldr r1, _080307F0 @ =gBattlerSpriteIds
ldr r0, _080307F4 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -4513,7 +4513,7 @@ DoHitAnimBlinkSpriteEffect: @ 80307B4
bl PlayerBufferExecCompleted
b _0803082A
.align 2, 0
-_080307F0: .4byte gUnknown_2023D44
+_080307F0: .4byte gBattlerSpriteIds
_080307F4: .4byte gActiveBattler
_080307F8: .4byte gSprites
_080307FC: .4byte gUnknown_2024005
@@ -7299,7 +7299,7 @@ PlayerHandleLoadMonSprite: @ 8031F00
adds r0, r2
bl sub_8034498
ldr r2, _08031F58 @ =gSprites
- ldr r0, _08031F5C @ =gUnknown_2023D44
+ ldr r0, _08031F5C @ =gBattlerSpriteIds
ldrb r3, [r4]
adds r0, r3, r0
ldrb r0, [r0]
@@ -7327,7 +7327,7 @@ _08031F4C: .4byte gBattlerPartyIndexes
_08031F50: .4byte gActiveBattler
_08031F54: .4byte gPlayerParty
_08031F58: .4byte gSprites
-_08031F5C: .4byte gUnknown_2023D44
+_08031F5C: .4byte gBattlerSpriteIds
_08031F60: .4byte gUnknown_3004FE0
_08031F64: .4byte CompleteOnBankSpritePosX_0
thumb_func_end PlayerHandleLoadMonSprite
@@ -7465,7 +7465,7 @@ sub_8031FF4: @ 8031FF4
adds r1, r5, 0
adds r2, r4, 0
bl CreateSprite
- ldr r4, _08032150 @ =gUnknown_2023D44
+ ldr r4, _08032150 @ =gBattlerSpriteIds
adds r4, r6, r4
strb r0, [r4]
ldr r5, _08032154 @ =gSprites
@@ -7555,7 +7555,7 @@ _08032140: .4byte gPlayerParty
_08032144: .4byte sub_8033E3C
_08032148: .4byte gUnknown_3004FFC
_0803214C: .4byte gMultiuseSpriteTemplate
-_08032150: .4byte gUnknown_2023D44
+_08032150: .4byte gBattlerSpriteIds
_08032154: .4byte gSprites
_08032158: .4byte gBattleMonForms
_0803215C: .4byte SpriteCallbackDummy
@@ -7595,7 +7595,7 @@ _0803219C: .4byte gUnknown_2024018
_080321A0: .4byte gUnknown_3004FE0
_080321A4: .4byte sub_80321F0
_080321A8:
- ldr r5, _080321E4 @ =gUnknown_2023D44
+ ldr r5, _080321E4 @ =gBattlerSpriteIds
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
@@ -7623,7 +7623,7 @@ _080321DE:
pop {r0}
bx r0
.align 2, 0
-_080321E4: .4byte gUnknown_2023D44
+_080321E4: .4byte gBattlerSpriteIds
_080321E8: .4byte gSprites
_080321EC: .4byte gUnknown_3004FF0
thumb_func_end PlayerHandleReturnPokeToBall
@@ -7833,7 +7833,7 @@ _08032342:
mov r1, r8
adds r2, r4, 0
bl CreateSprite
- ldr r6, _08032410 @ =gUnknown_2023D44
+ ldr r6, _08032410 @ =gBattlerSpriteIds
ldrb r1, [r5]
adds r1, r6
strb r0, [r1]
@@ -7895,7 +7895,7 @@ _08032400: .4byte gSaveBlock2Ptr
_08032404: .4byte gActiveBattler
_08032408: .4byte gMultiuseSpriteTemplate
_0803240C: .4byte gUnknown_8239F8C
-_08032410: .4byte gUnknown_2023D44
+_08032410: .4byte gBattlerSpriteIds
_08032414: .4byte gSprites
_08032418: .4byte 0x0000fffe
_0803241C: .4byte sub_8033EEC
@@ -8003,7 +8003,7 @@ _080324BE:
movs r1, 0x50
movs r3, 0x1E
bl CreateSprite
- ldr r6, _08032578 @ =gUnknown_2023D44
+ ldr r6, _08032578 @ =gBattlerSpriteIds
ldrb r1, [r5]
adds r1, r6
strb r0, [r1]
@@ -8063,7 +8063,7 @@ _08032568: .4byte gSaveBlock2Ptr
_0803256C: .4byte gActiveBattler
_08032570: .4byte gMultiuseSpriteTemplate
_08032574: .4byte gUnknown_8239F8C
-_08032578: .4byte gUnknown_2023D44
+_08032578: .4byte gBattlerSpriteIds
_0803257C: .4byte gSprites
_08032580: .4byte 0x0000ffa0
_08032584: .4byte sub_8033EEC
@@ -8074,7 +8074,7 @@ _0803258C: .4byte sub_802F768
thumb_func_start PlayerHandleTrainerSlideBack
PlayerHandleTrainerSlideBack: @ 8032590
push {r4-r6,lr}
- ldr r5, _08032630 @ =gUnknown_2023D44
+ ldr r5, _08032630 @ =gBattlerSpriteIds
ldr r6, _08032634 @ =gActiveBattler
ldrb r0, [r6]
adds r0, r5
@@ -8151,7 +8151,7 @@ PlayerHandleTrainerSlideBack: @ 8032590
pop {r0}
bx r0
.align 2, 0
-_08032630: .4byte gUnknown_2023D44
+_08032630: .4byte gBattlerSpriteIds
_08032634: .4byte gActiveBattler
_08032638: .4byte gSprites
_0803263C: .4byte 0x0000ffd8
@@ -8227,7 +8227,7 @@ _080326A4:
movs r0, 0x10
bl PlaySE12WithPanning
ldr r2, _08032728 @ =gSprites
- ldr r3, _0803272C @ =gUnknown_2023D44
+ ldr r3, _0803272C @ =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r3
ldrb r1, [r0]
@@ -8269,7 +8269,7 @@ _0803271A:
_08032720: .4byte gBattlerPartyIndexes
_08032724: .4byte gPlayerParty
_08032728: .4byte gSprites
-_0803272C: .4byte gUnknown_2023D44
+_0803272C: .4byte gBattlerSpriteIds
_08032730: .4byte sub_8012110
_08032734: .4byte gUnknown_3004FE0
_08032738: .4byte sub_8030538
@@ -8428,7 +8428,7 @@ _08032852:
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
- ldr r5, _0803292C @ =gUnknown_2037F16
+ ldr r5, _0803292C @ =gAnimMoveTurn
mov r1, r12
adds r1, 0x3
adds r2, r1
@@ -8496,7 +8496,7 @@ _08032852:
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r3, _08032940 @ =gUnknown_2037EE4
+ ldr r3, _08032940 @ =gAnimDisableStructPtr
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -8520,12 +8520,12 @@ _08032852:
.align 2, 0
_08032924: .4byte gActiveBattler
_08032928: .4byte gUnknown_2022BC4
-_0803292C: .4byte gUnknown_2037F16
+_0803292C: .4byte gAnimMoveTurn
_08032930: .4byte gUnknown_2037EEC
_08032934: .4byte gUnknown_2037EE8
_08032938: .4byte gUnknown_2037EFE
_0803293C: .4byte gUnknown_2037F00
-_08032940: .4byte gUnknown_2037EE4
+_08032940: .4byte gAnimDisableStructPtr
_08032944: .4byte gUnknown_2024008
_08032948:
ldr r0, _0803296C @ =gUnknown_2024018
@@ -9754,7 +9754,7 @@ _08033310: .4byte gUnknown_2022870
PlayerHandleHitAnimation: @ 8033314
push {r4,lr}
ldr r3, _0803333C @ =gSprites
- ldr r2, _08033340 @ =gUnknown_2023D44
+ ldr r2, _08033340 @ =gBattlerSpriteIds
ldr r4, _08033344 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r2
@@ -9772,7 +9772,7 @@ PlayerHandleHitAnimation: @ 8033314
b _08033372
.align 2, 0
_0803333C: .4byte gSprites
-_08033340: .4byte gUnknown_2023D44
+_08033340: .4byte gBattlerSpriteIds
_08033344: .4byte gActiveBattler
_08033348:
ldr r1, _08033378 @ =gUnknown_2024005
@@ -9930,7 +9930,7 @@ _08033474: .4byte gUnknown_2023F4C
thumb_func_start PlayerHandleIntroTrainerBallThrow
PlayerHandleIntroTrainerBallThrow: @ 8033478
push {r4-r7,lr}
- ldr r6, _080335B8 @ =gUnknown_2023D44
+ ldr r6, _080335B8 @ =gBattlerSpriteIds
ldr r7, _080335BC @ =gActiveBattler
ldrb r0, [r7]
adds r0, r6
@@ -10085,7 +10085,7 @@ _0803359A:
pop {r0}
bx r0
.align 2, 0
-_080335B8: .4byte gUnknown_2023D44
+_080335B8: .4byte gBattlerSpriteIds
_080335BC: .4byte gActiveBattler
_080335C0: .4byte gSprites
_080335C4: .4byte 0x0000ffd8
@@ -10129,7 +10129,7 @@ sub_80335F8: @ 80335F8
adds r0, r1
adds r1, r4, 0
bl sub_8034498
- ldr r0, _08033658 @ =gUnknown_2023D44
+ ldr r0, _08033658 @ =gBattlerSpriteIds
adds r4, r0
ldrb r1, [r4]
lsls r0, r1, 4
@@ -10145,7 +10145,7 @@ sub_80335F8: @ 80335F8
.align 2, 0
_08033650: .4byte gBattlerPartyIndexes
_08033654: .4byte gPlayerParty
-_08033658: .4byte gUnknown_2023D44
+_08033658: .4byte gBattlerSpriteIds
_0803365C: .4byte gSprites
thumb_func_end sub_80335F8
@@ -10476,7 +10476,7 @@ PlayerHandleSpriteInvisibility: @ 80338EC
cmp r0, 0
beq _08033932
ldr r3, _08033940 @ =gSprites
- ldr r0, _08033944 @ =gUnknown_2023D44
+ ldr r0, _08033944 @ =gBattlerSpriteIds
ldrb r1, [r4]
adds r0, r1, r0
ldrb r0, [r0]
@@ -10509,7 +10509,7 @@ _08033932:
.align 2, 0
_0803393C: .4byte gActiveBattler
_08033940: .4byte gSprites
-_08033944: .4byte gUnknown_2023D44
+_08033944: .4byte gBattlerSpriteIds
_08033948: .4byte gUnknown_2022BC4
thumb_func_end PlayerHandleSpriteInvisibility
@@ -10671,7 +10671,7 @@ _08033A74: .4byte gUnknown_2023FFC
thumb_func_start PlayerHandlecmd55
PlayerHandlecmd55: @ 8033A78
push {r4,lr}
- ldr r2, _08033AB0 @ =gUnknown_2023E8A
+ ldr r2, _08033AB0 @ =gBattleOutcome
ldr r1, _08033AB4 @ =gUnknown_2022BC4
ldr r4, _08033AB8 @ =gActiveBattler
ldrb r0, [r4]
@@ -10695,7 +10695,7 @@ PlayerHandlecmd55: @ 8033A78
pop {r0}
bx r0
.align 2, 0
-_08033AB0: .4byte gUnknown_2023E8A
+_08033AB0: .4byte gBattleOutcome
_08033AB4: .4byte gUnknown_2022BC4
_08033AB8: .4byte gActiveBattler
_08033ABC: .4byte gUnknown_3004FE0
diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s
index 3eb6ecb33..23b4a23e8 100644
--- a/asm/battle_controller_pokedude.s
+++ b/asm/battle_controller_pokedude.s
@@ -98,7 +98,7 @@ sub_8156140: @ 8156140
sub_815614C: @ 815614C
push {lr}
ldr r2, _08156174 @ =gSprites
- ldr r1, _08156178 @ =gUnknown_2023D44
+ ldr r1, _08156178 @ =gBattlerSpriteIds
ldr r0, _0815617C @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -118,7 +118,7 @@ _08156170:
bx r0
.align 2, 0
_08156174: .4byte gSprites
-_08156178: .4byte gUnknown_2023D44
+_08156178: .4byte gBattlerSpriteIds
_0815617C: .4byte gActiveBattler
_08156180: .4byte SpriteCallbackDummy
thumb_func_end sub_815614C
@@ -127,7 +127,7 @@ _08156180: .4byte SpriteCallbackDummy
sub_8156184: @ 8156184
push {r4-r7,lr}
ldr r2, _081561E0 @ =gSprites
- ldr r0, _081561E4 @ =gUnknown_2023D44
+ ldr r0, _081561E4 @ =gBattlerSpriteIds
ldr r7, _081561E8 @ =gActiveBattler
ldrb r3, [r7]
adds r0, r3, r0
@@ -171,7 +171,7 @@ sub_8156184: @ 8156184
b _08156230
.align 2, 0
_081561E0: .4byte gSprites
-_081561E4: .4byte gUnknown_2023D44
+_081561E4: .4byte gBattlerSpriteIds
_081561E8: .4byte gActiveBattler
_081561EC: .4byte gUnknown_2024018
_081561F0: .4byte gBattlerPartyIndexes
@@ -1635,7 +1635,7 @@ sub_8156DCC: @ 8156DCC
cmp r0, 0
bne _08156E3C
ldr r6, _08156E30 @ =gSprites
- ldr r5, _08156E34 @ =gUnknown_2023D44
+ ldr r5, _08156E34 @ =gBattlerSpriteIds
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
@@ -1672,11 +1672,11 @@ sub_8156DCC: @ 8156DCC
.align 2, 0
_08156E2C: .4byte gActiveBattler
_08156E30: .4byte gSprites
-_08156E34: .4byte gUnknown_2023D44
+_08156E34: .4byte gBattlerSpriteIds
_08156E38: .4byte gUnknown_3004FF0
_08156E3C:
ldr r2, _08156E6C @ =gSprites
- ldr r0, _08156E70 @ =gUnknown_2023D44
+ ldr r0, _08156E70 @ =gBattlerSpriteIds
ldrb r3, [r4]
adds r0, r3, r0
ldrb r1, [r0]
@@ -1700,7 +1700,7 @@ _08156E66:
bx r0
.align 2, 0
_08156E6C: .4byte gSprites
-_08156E70: .4byte gUnknown_2023D44
+_08156E70: .4byte gBattlerSpriteIds
_08156E74: .4byte gUnknown_3004FF0
thumb_func_end sub_8156DCC
@@ -1775,7 +1775,7 @@ _08156EFA:
thumb_func_start sub_8156F00
sub_8156F00: @ 8156F00
push {r4,lr}
- ldr r1, _08156F3C @ =gUnknown_2023D44
+ ldr r1, _08156F3C @ =gBattlerSpriteIds
ldr r0, _08156F40 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -1803,7 +1803,7 @@ sub_8156F00: @ 8156F00
bl PlayerPartnerBufferExecCompleted
b _08156F76
.align 2, 0
-_08156F3C: .4byte gUnknown_2023D44
+_08156F3C: .4byte gBattlerSpriteIds
_08156F40: .4byte gActiveBattler
_08156F44: .4byte gSprites
_08156F48: .4byte gUnknown_2024005
@@ -1853,7 +1853,7 @@ sub_8156F7C: @ 8156F7C
ands r0, r1
cmp r0, 0
bne _08156FD0
- ldr r5, _08156FE0 @ =gUnknown_2023D44
+ ldr r5, _08156FE0 @ =gBattlerSpriteIds
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
@@ -1883,7 +1883,7 @@ _08156FD0:
.align 2, 0
_08156FD8: .4byte gUnknown_2024018
_08156FDC: .4byte gActiveBattler
-_08156FE0: .4byte gUnknown_2023D44
+_08156FE0: .4byte gBattlerSpriteIds
_08156FE4: .4byte gSprites
_08156FE8: .4byte gUnknown_3004FF0
thumb_func_end sub_8156F7C
@@ -1892,7 +1892,7 @@ _08156FE8: .4byte gUnknown_3004FF0
sub_8156FEC: @ 8156FEC
push {lr}
ldr r2, _08157014 @ =gSprites
- ldr r1, _08157018 @ =gUnknown_2023D44
+ ldr r1, _08157018 @ =gBattlerSpriteIds
ldr r0, _0815701C @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -1912,7 +1912,7 @@ _08157010:
bx r0
.align 2, 0
_08157014: .4byte gSprites
-_08157018: .4byte gUnknown_2023D44
+_08157018: .4byte gBattlerSpriteIds
_0815701C: .4byte gActiveBattler
_08157020: .4byte SpriteCallbackDummy
thumb_func_end sub_8156FEC
@@ -3950,7 +3950,7 @@ sub_81580E0: @ 81580E0
adds r1, r4, 0
adds r2, r5, 0
bl CreateSprite
- ldr r4, _08158224 @ =gUnknown_2023D44
+ ldr r4, _08158224 @ =gBattlerSpriteIds
ldrb r1, [r6]
adds r1, r4
strb r0, [r1]
@@ -4038,7 +4038,7 @@ _08158214: .4byte gActiveBattler
_08158218: .4byte gBattlerPartyIndexes
_0815821C: .4byte gEnemyParty
_08158220: .4byte gMultiuseSpriteTemplate
-_08158224: .4byte gUnknown_2023D44
+_08158224: .4byte gBattlerSpriteIds
_08158228: .4byte gSprites
_0815822C: .4byte 0x0000ff10
_08158230: .4byte gBattleMonForms
@@ -4135,7 +4135,7 @@ _081582F0: .4byte gActiveBattler
_081582F4: .4byte gUnknown_3004FE0
_081582F8: .4byte sub_8156F7C
_081582FC:
- ldr r5, _08158338 @ =gUnknown_2023D44
+ ldr r5, _08158338 @ =gBattlerSpriteIds
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
@@ -4163,7 +4163,7 @@ _08158332:
pop {r0}
bx r0
.align 2, 0
-_08158338: .4byte gUnknown_2023D44
+_08158338: .4byte gBattlerSpriteIds
_0815833C: .4byte gSprites
_08158340: .4byte gUnknown_3004FF0
thumb_func_end sub_81582C0
@@ -4202,7 +4202,7 @@ sub_8158344: @ 8158344
movs r1, 0x50
movs r3, 0x1E
bl CreateSprite
- ldr r5, _081583E4 @ =gUnknown_2023D44
+ ldr r5, _081583E4 @ =gBattlerSpriteIds
ldrb r1, [r7]
adds r1, r5
strb r0, [r1]
@@ -4243,7 +4243,7 @@ sub_8158344: @ 8158344
_081583D8: .4byte gActiveBattler
_081583DC: .4byte gMultiuseSpriteTemplate
_081583E0: .4byte gUnknown_8239F8C
-_081583E4: .4byte gUnknown_2023D44
+_081583E4: .4byte gBattlerSpriteIds
_081583E8: .4byte gSprites
_081583EC: .4byte 0x0000fffe
_081583F0:
@@ -4281,7 +4281,7 @@ _081583F0:
movs r1, 0xB0
adds r2, r4, 0
bl CreateSprite
- ldr r5, _08158518 @ =gUnknown_2023D44
+ ldr r5, _08158518 @ =gBattlerSpriteIds
ldrb r1, [r7]
adds r1, r5
strb r0, [r1]
@@ -4387,7 +4387,7 @@ _081584E2:
.align 2, 0
_08158510: .4byte gMultiuseSpriteTemplate
_08158514: .4byte gUnknown_823932C
-_08158518: .4byte gUnknown_2023D44
+_08158518: .4byte gBattlerSpriteIds
_0815851C: .4byte gSprites
_08158520: .4byte 0x0000ff10
_08158524: .4byte gTrainerFrontPicPaletteTable
@@ -4427,7 +4427,7 @@ sub_8158544: @ 8158544
movs r1, 0x50
movs r3, 0x1E
bl CreateSprite
- ldr r6, _081585F8 @ =gUnknown_2023D44
+ ldr r6, _081585F8 @ =gBattlerSpriteIds
ldrb r1, [r4]
adds r1, r6
strb r0, [r1]
@@ -4486,7 +4486,7 @@ sub_8158544: @ 8158544
_081585EC: .4byte gActiveBattler
_081585F0: .4byte gMultiuseSpriteTemplate
_081585F4: .4byte gUnknown_8239F8C
-_081585F8: .4byte gUnknown_2023D44
+_081585F8: .4byte gBattlerSpriteIds
_081585FC: .4byte gSprites
_08158600: .4byte 0x0000ffa0
_08158604: .4byte sub_8033EEC
@@ -4574,7 +4574,7 @@ _08158670:
movs r0, 0x10
bl PlaySE12WithPanning
ldr r2, _081586F0 @ =gSprites
- ldr r3, _081586F4 @ =gUnknown_2023D44
+ ldr r3, _081586F4 @ =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r3
ldrb r1, [r0]
@@ -4606,14 +4606,14 @@ _08158670:
_081586E8: .4byte gBattlerPartyIndexes
_081586EC: .4byte gPlayerParty
_081586F0: .4byte gSprites
-_081586F4: .4byte gUnknown_2023D44
+_081586F4: .4byte gBattlerSpriteIds
_081586F8: .4byte sub_8012110
_081586FC:
movs r0, 0x10
movs r1, 0x3F
bl PlaySE12WithPanning
ldr r2, _08158730 @ =gSprites
- ldr r1, _08158734 @ =gUnknown_2023D44
+ ldr r1, _08158734 @ =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r1
ldrb r1, [r0]
@@ -4638,7 +4638,7 @@ _0815872A:
bx r0
.align 2, 0
_08158730: .4byte gSprites
-_08158734: .4byte gUnknown_2023D44
+_08158734: .4byte gBattlerSpriteIds
_08158738: .4byte sub_8011EA0
_0815873C: .4byte gUnknown_3004FE0
_08158740: .4byte gActiveBattler
@@ -4762,7 +4762,7 @@ sub_8158814: @ 8158814
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
- ldr r5, _081588F0 @ =gUnknown_2037F16
+ ldr r5, _081588F0 @ =gAnimMoveTurn
mov r1, r12
adds r1, 0x3
adds r2, r1
@@ -4830,7 +4830,7 @@ sub_8158814: @ 8158814
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r3, _08158904 @ =gUnknown_2037EE4
+ ldr r3, _08158904 @ =gAnimDisableStructPtr
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4854,12 +4854,12 @@ sub_8158814: @ 8158814
.align 2, 0
_081588E8: .4byte gUnknown_2022BC4
_081588EC: .4byte gActiveBattler
-_081588F0: .4byte gUnknown_2037F16
+_081588F0: .4byte gAnimMoveTurn
_081588F4: .4byte gUnknown_2037EEC
_081588F8: .4byte gUnknown_2037EE8
_081588FC: .4byte gUnknown_2037EFE
_08158900: .4byte gUnknown_2037F00
-_08158904: .4byte gUnknown_2037EE4
+_08158904: .4byte gAnimDisableStructPtr
_08158908: .4byte gUnknown_2024008
_0815890C:
ldr r0, _08158930 @ =gUnknown_2024018
@@ -5936,7 +5936,7 @@ sub_8159184: @ 8159184
sub_8159190: @ 8159190
push {r4,lr}
ldr r3, _081591B8 @ =gSprites
- ldr r2, _081591BC @ =gUnknown_2023D44
+ ldr r2, _081591BC @ =gBattlerSpriteIds
ldr r4, _081591C0 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r2
@@ -5954,7 +5954,7 @@ sub_8159190: @ 8159190
b _081591EE
.align 2, 0
_081591B8: .4byte gSprites
-_081591BC: .4byte gUnknown_2023D44
+_081591BC: .4byte gBattlerSpriteIds
_081591C0: .4byte gActiveBattler
_081591C4:
ldr r1, _081591F4 @ =gUnknown_2024005
@@ -6119,7 +6119,7 @@ _08159300: .4byte gUnknown_2023F4C
thumb_func_start sub_8159304
sub_8159304: @ 8159304
push {r4-r7,lr}
- ldr r6, _0815943C @ =gUnknown_2023D44
+ ldr r6, _0815943C @ =gBattlerSpriteIds
ldr r7, _08159440 @ =gActiveBattler
ldrb r0, [r7]
adds r0, r6
@@ -6269,7 +6269,7 @@ _0815941C:
pop {r0}
bx r0
.align 2, 0
-_0815943C: .4byte gUnknown_2023D44
+_0815943C: .4byte gBattlerSpriteIds
_08159440: .4byte gActiveBattler
_08159444: .4byte gSprites
_08159448: .4byte 0x0000ffd8
@@ -6359,7 +6359,7 @@ sub_8159478: @ 8159478
adds r1, r5, 0
adds r2, r4, 0
bl CreateSprite
- ldr r4, _081595DC @ =gUnknown_2023D44
+ ldr r4, _081595DC @ =gBattlerSpriteIds
adds r4, r6, r4
strb r0, [r4]
ldr r5, _081595E0 @ =gSprites
@@ -6450,7 +6450,7 @@ _081595CC: .4byte gPlayerParty
_081595D0: .4byte sub_8033E3C
_081595D4: .4byte gUnknown_3004FFC
_081595D8: .4byte gMultiuseSpriteTemplate
-_081595DC: .4byte gUnknown_2023D44
+_081595DC: .4byte gBattlerSpriteIds
_081595E0: .4byte gSprites
_081595E4: .4byte gBattleMonForms
_081595E8: .4byte SpriteCallbackDummy
@@ -6700,7 +6700,7 @@ sub_81597B8: @ 81597B8
thumb_func_start sub_81597C4
sub_81597C4: @ 81597C4
push {r4,lr}
- ldr r2, _08159808 @ =gUnknown_2023E8A
+ ldr r2, _08159808 @ =gBattleOutcome
ldr r1, _0815980C @ =gUnknown_2022BC4
ldr r4, _08159810 @ =gActiveBattler
ldrb r0, [r4]
@@ -6731,7 +6731,7 @@ _08159800:
pop {r0}
bx r0
.align 2, 0
-_08159808: .4byte gUnknown_2023E8A
+_08159808: .4byte gBattleOutcome
_0815980C: .4byte gUnknown_2022BC4
_08159810: .4byte gActiveBattler
_08159814: .4byte gBattleTypeFlags
diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s
index e8edcb7fd..9e01ad2fd 100644
--- a/asm/battle_controller_safari.s
+++ b/asm/battle_controller_safari.s
@@ -259,7 +259,7 @@ _080DD724: .4byte gActiveBattler
sub_80DD728: @ 80DD728
push {lr}
ldr r2, _080DD750 @ =gSprites
- ldr r1, _080DD754 @ =gUnknown_2023D44
+ ldr r1, _080DD754 @ =gBattlerSpriteIds
ldr r0, _080DD758 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
@@ -279,7 +279,7 @@ _080DD74C:
bx r0
.align 2, 0
_080DD750: .4byte gSprites
-_080DD754: .4byte gUnknown_2023D44
+_080DD754: .4byte gBattlerSpriteIds
_080DD758: .4byte gActiveBattler
_080DD75C: .4byte SpriteCallbackDummy
thumb_func_end sub_80DD728
@@ -646,7 +646,7 @@ SafariHandleDrawTrainerPic: @ 80DD9C4
movs r1, 0x50
movs r3, 0x1E
bl CreateSprite
- ldr r6, _080DDA8C @ =gUnknown_2023D44
+ ldr r6, _080DDA8C @ =gBattlerSpriteIds
ldrb r1, [r5]
adds r1, r6
strb r0, [r1]
@@ -706,7 +706,7 @@ _080DDA7C: .4byte gSaveBlock2Ptr
_080DDA80: .4byte gActiveBattler
_080DDA84: .4byte gMultiuseSpriteTemplate
_080DDA88: .4byte gUnknown_8239F8C
-_080DDA8C: .4byte gUnknown_2023D44
+_080DDA8C: .4byte gBattlerSpriteIds
_080DDA90: .4byte gSprites
_080DDA94: .4byte 0x0000fffe
_080DDA98: .4byte sub_8033EEC
@@ -1487,7 +1487,7 @@ sub_80DE048: @ 80DE048
thumb_func_start SafariHandleCmd55
SafariHandleCmd55: @ 80DE054
push {r4,lr}
- ldr r2, _080DE098 @ =gUnknown_2023E8A
+ ldr r2, _080DE098 @ =gBattleOutcome
ldr r1, _080DE09C @ =gUnknown_2022BC4
ldr r4, _080DE0A0 @ =gActiveBattler
ldrb r0, [r4]
@@ -1518,7 +1518,7 @@ _080DE090:
pop {r0}
bx r0
.align 2, 0
-_080DE098: .4byte gUnknown_2023E8A
+_080DE098: .4byte gBattleOutcome
_080DE09C: .4byte gUnknown_2022BC4
_080DE0A0: .4byte gActiveBattler
_080DE0A4: .4byte gBattleTypeFlags
diff --git a/asm/battle_controllers.s b/asm/battle_controllers.s
index 5d0921323..5337929a1 100644
--- a/asm/battle_controllers.s
+++ b/asm/battle_controllers.s
@@ -2176,7 +2176,7 @@ EmitPrintString: @ 800E2D4
ldr r2, _0800E3B4 @ =gUnknown_2022874
movs r0, 0x10
strb r0, [r2]
- ldr r0, _0800E3B8 @ =gUnknown_2023E8A
+ ldr r0, _0800E3B8 @ =gBattleOutcome
ldrb r0, [r0]
strb r0, [r2, 0x1]
strb r1, [r2, 0x2]
@@ -2277,7 +2277,7 @@ _0800E378:
bx r0
.align 2, 0
_0800E3B4: .4byte gUnknown_2022874
-_0800E3B8: .4byte gUnknown_2023E8A
+_0800E3B8: .4byte gBattleOutcome
_0800E3BC: .4byte gCurrentMove
_0800E3C0: .4byte gUnknown_2023D4C
_0800E3C4: .4byte gUnknown_2023D68
diff --git a/asm/battle_gfx_sfx_util.s b/asm/battle_gfx_sfx_util.s
index d5ae72291..ba54bafbb 100644
--- a/asm/battle_gfx_sfx_util.s
+++ b/asm/battle_gfx_sfx_util.s
@@ -394,7 +394,7 @@ _08034094:
cmp r5, 0x2
bne _080340E0
ldr r1, _080340D8 @ =gSprites
- ldr r0, _080340DC @ =gUnknown_2023D44
+ ldr r0, _080340DC @ =gBattlerSpriteIds
adds r0, r6, r0
ldrb r2, [r0]
lsls r0, r2, 4
@@ -415,12 +415,12 @@ _08034094:
b _08034132
.align 2, 0
_080340D8: .4byte gSprites
-_080340DC: .4byte gUnknown_2023D44
+_080340DC: .4byte gBattlerSpriteIds
_080340E0:
- ldr r0, _08034144 @ =gUnknown_2037F1A
+ ldr r0, _08034144 @ =gBattleAnimAttacker
mov r2, r10
strb r2, [r0]
- ldr r0, _08034148 @ =gUnknown_2037F1B
+ ldr r0, _08034148 @ =gBattleAnimTarget
mov r1, sp
ldrb r1, [r1]
strb r1, [r0]
@@ -466,8 +466,8 @@ _08034132:
pop {r1}
bx r1
.align 2, 0
-_08034144: .4byte gUnknown_2037F1A
-_08034148: .4byte gUnknown_2037F1B
+_08034144: .4byte gBattleAnimAttacker
+_08034148: .4byte gBattleAnimTarget
_0803414C: .4byte gUnknown_2024018
_08034150: .4byte gUnknown_81C6EA8
_08034154: .4byte Task_ClearBitWhenBattleTableAnimDone
@@ -551,9 +551,9 @@ InitAndLaunchSpecialAnimation: @ 80341D8
lsrs r4, 24
lsls r3, 24
lsrs r3, 24
- ldr r0, _08034230 @ =gUnknown_2037F1A
+ ldr r0, _08034230 @ =gBattleAnimAttacker
strb r1, [r0]
- ldr r0, _08034234 @ =gUnknown_2037F1B
+ ldr r0, _08034234 @ =gBattleAnimTarget
strb r2, [r0]
ldr r0, _08034238 @ =gUnknown_81C6F18
adds r1, r3, 0
@@ -587,8 +587,8 @@ InitAndLaunchSpecialAnimation: @ 80341D8
pop {r0}
bx r0
.align 2, 0
-_08034230: .4byte gUnknown_2037F1A
-_08034234: .4byte gUnknown_2037F1B
+_08034230: .4byte gBattleAnimAttacker
+_08034234: .4byte gBattleAnimTarget
_08034238: .4byte gUnknown_81C6F18
_0803423C: .4byte Task_ClearBitWhenSpecialAnimDone
_08034240: .4byte gTasks
@@ -975,7 +975,7 @@ _08034548:
ldr r1, [r1]
adds r2, r5, 0
adds r3, r4, 0
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
_08034562:
mov r2, r8
lsls r1, r2, 4
@@ -1184,7 +1184,7 @@ sub_80346C4: @ 80346C4
ldr r0, _0803474C @ =gTrainerFrontPicPaletteTable
adds r5, r0
adds r0, r5, 0
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
add sp, 0x8
pop {r3}
mov r8, r3
@@ -1262,9 +1262,9 @@ sub_80347A8: @ 80347A8
cmp r0, 0
bne _080347E0
ldr r0, _080347D8 @ =gUnknown_8260208
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _080347DC @ =gUnknown_8260210
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
movs r5, 0x2
b _08034802
.align 2, 0
@@ -1274,16 +1274,16 @@ _080347DC: .4byte gUnknown_8260210
_080347E0:
ldr r4, _08034828 @ =gUnknown_8260218
adds r0, r4, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
adds r4, 0x8
adds r0, r4, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r4, _0803482C @ =gUnknown_8260228
adds r0, r4, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
adds r4, 0x8
adds r0, r4, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
movs r5, 0x4
_08034802:
movs r4, 0
@@ -1296,7 +1296,7 @@ _0803480C:
ldrb r0, [r0]
lsls r0, 3
adds r0, r6
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
@@ -1349,14 +1349,14 @@ _08034864:
cmp r0, 0
beq _08034890
ldr r0, _0803488C @ =gUnknown_8260238
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_08034888: .4byte gBattleTypeFlags
_0803488C: .4byte gUnknown_8260238
_08034890:
ldr r0, _08034898 @ =gUnknown_8260208
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_08034898: .4byte gUnknown_8260208
@@ -1364,7 +1364,7 @@ _0803489C:
cmp r4, 0x3
bne _080348AC
ldr r0, _080348A8 @ =gUnknown_8260210
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_080348A8: .4byte gUnknown_8260210
@@ -1388,7 +1388,7 @@ _080348CC:
cmp r4, 0x2
bne _080348DC
ldr r0, _080348D8 @ =gUnknown_8260218
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_080348D8: .4byte gUnknown_8260218
@@ -1396,7 +1396,7 @@ _080348DC:
cmp r4, 0x3
bne _080348EC
ldr r0, _080348E8 @ =gUnknown_8260220
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_080348E8: .4byte gUnknown_8260220
@@ -1404,7 +1404,7 @@ _080348EC:
cmp r4, 0x4
bne _080348FC
ldr r0, _080348F8 @ =gUnknown_8260228
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_080348F8: .4byte gUnknown_8260228
@@ -1412,7 +1412,7 @@ _080348FC:
cmp r4, 0x5
bne _0803490C
ldr r0, _08034908 @ =gUnknown_8260230
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_08034908: .4byte gUnknown_8260230
@@ -1449,7 +1449,7 @@ _08034944:
lsls r0, 3
ldr r1, _08034954 @ =gUnknown_8260240
adds r0, r1
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_08034950: .4byte gUnknown_2023BD6
@@ -1718,7 +1718,7 @@ CopyAllBattleSpritesInvisibilities: @ 8034B40
negs r0, r0
mov r8, r0
ldr r7, _08034BAC @ =gUnknown_2024018
- ldr r6, _08034BB0 @ =gUnknown_2023D44
+ ldr r6, _08034BB0 @ =gBattlerSpriteIds
_08034B64:
ldr r0, [r7]
ldr r0, [r0]
@@ -1756,7 +1756,7 @@ _08034B96:
_08034BA4: .4byte gBattlersCount
_08034BA8: .4byte gSprites
_08034BAC: .4byte gUnknown_2024018
-_08034BB0: .4byte gUnknown_2023D44
+_08034BB0: .4byte gBattlerSpriteIds
thumb_func_end CopyAllBattleSpritesInvisibilities
thumb_func_start CopyBattleSpriteInvisibility
@@ -1769,7 +1769,7 @@ CopyBattleSpriteInvisibility: @ 8034BB4
lsls r3, r0, 2
adds r3, r1
ldr r2, _08034BEC @ =gSprites
- ldr r1, _08034BF0 @ =gUnknown_2023D44
+ ldr r1, _08034BF0 @ =gBattlerSpriteIds
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 4
@@ -1790,7 +1790,7 @@ CopyBattleSpriteInvisibility: @ 8034BB4
.align 2, 0
_08034BE8: .4byte gUnknown_2024018
_08034BEC: .4byte gSprites
-_08034BF0: .4byte gUnknown_2023D44
+_08034BF0: .4byte gBattlerSpriteIds
thumb_func_end CopyBattleSpriteInvisibility
thumb_func_start sub_8034BF4
@@ -1869,7 +1869,7 @@ _08034C16:
adds r0, r5
ldr r2, [r0]
ldr r5, _08034D68 @ =gSprites
- ldr r4, _08034D6C @ =gUnknown_2023D44
+ ldr r4, _08034D6C @ =gBattlerSpriteIds
add r4, r9
ldrb r1, [r4]
lsls r0, r1, 4
@@ -1964,7 +1964,7 @@ _08034D5C: .4byte gEnemyParty
_08034D60: .4byte gMonFrontPicTable
_08034D64: .4byte gMonSpritesGfxPtr
_08034D68: .4byte gSprites
-_08034D6C: .4byte gUnknown_2023D44
+_08034D6C: .4byte gBattlerSpriteIds
_08034D70: .4byte 0x06010000
_08034D74: .4byte 0x040000d4
_08034D78: .4byte 0x84000200
@@ -1974,7 +1974,7 @@ _08034D84: .4byte gUnknown_3004FF0
_08034D88:
cmp r2, 0
beq _08034E4C
- ldr r0, _08034E28 @ =gUnknown_2023D44
+ ldr r0, _08034E28 @ =gBattlerSpriteIds
mov r3, r9
adds r5, r3, r0
ldrb r1, [r5]
@@ -2048,7 +2048,7 @@ _08034E0E:
strh r0, [r1, 0x22]
b _08035062
.align 2, 0
-_08034E28: .4byte gUnknown_2023D44
+_08034E28: .4byte gBattlerSpriteIds
_08034E2C: .4byte gSprites
_08034E30: .4byte gUnknown_2024018
_08034E34: .4byte gBattleStruct
@@ -2189,7 +2189,7 @@ _08034F5E:
adds r0, 0x4
adds r0, r5
ldr r2, [r0]
- ldr r0, _08035088 @ =gUnknown_2023D44
+ ldr r0, _08035088 @ =gBattlerSpriteIds
add r0, r9
str r0, [sp, 0x10]
ldrb r1, [r0]
@@ -2318,7 +2318,7 @@ _08035078: .4byte gEnemyParty
_0803507C: .4byte gMonFrontPicTable
_08035080: .4byte gMonSpritesGfxPtr
_08035084: .4byte gUnknown_2024008
-_08035088: .4byte gUnknown_2023D44
+_08035088: .4byte gBattlerSpriteIds
_0803508C: .4byte gSprites
_08035090: .4byte 0x06010000
_08035094: .4byte 0x040000d4
@@ -2820,7 +2820,7 @@ _0803547C:
cmp r0, 0
beq _08035514
ldr r4, _080354E4 @ =gSprites
- ldr r0, _080354E8 @ =gUnknown_2023D44
+ ldr r0, _080354E8 @ =gBattlerSpriteIds
adds r3, r5, r0
ldrb r1, [r3]
lsls r0, r1, 4
@@ -2864,7 +2864,7 @@ _0803547C:
.align 2, 0
_080354E0: .4byte gBattlersCount
_080354E4: .4byte gSprites
-_080354E8: .4byte gUnknown_2023D44
+_080354E8: .4byte gBattlerSpriteIds
_080354EC: .4byte gUnknown_2024018
_080354F0:
ldrb r0, [r3]
@@ -2911,7 +2911,7 @@ LoadAndCreateEnemyShadowSprites: @ 8035538
mov r7, r8
push {r7}
ldr r0, _08035614 @ =gUnknown_8250A0C
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
movs r0, 0x1
bl GetBattlerAtPosition
adds r5, r0, 0
@@ -3026,7 +3026,7 @@ SpriteCB_EnemyShadow: @ 8035624
ldrh r0, [r5, 0x2E]
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _08035668 @ =gUnknown_2023D44
+ ldr r0, _08035668 @ =gBattlerSpriteIds
adds r0, r4, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -3051,7 +3051,7 @@ _08035660:
str r0, [r5, 0x1C]
b _080356EA
.align 2, 0
-_08035668: .4byte gUnknown_2023D44
+_08035668: .4byte gBattlerSpriteIds
_0803566C: .4byte gSprites
_08035670: .4byte SpriteCB_SetInvisible
_08035674:
diff --git a/asm/battle_interface.s b/asm/battle_interface.s
index 8e109b6d6..959e4e19d 100644
--- a/asm/battle_interface.s
+++ b/asm/battle_interface.s
@@ -2381,7 +2381,7 @@ _08048DC4:
bge _08048DB0
mov r6, r10
adds r0, r4, r6
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _08048E4C @ =gUnknown_826049C
adds r0, r4, r0
bl LoadSpriteSheet
@@ -3610,7 +3610,7 @@ _08049734:
lsls r1, 24
lsrs r1, 24
adds r0, r7, 0
- bl sub_80448F8
+ bl CheckBattleTypeGhost
lsls r0, 24
cmp r0, 0
beq _08049754
@@ -3755,7 +3755,7 @@ sub_804981C: @ 804981C
ldr r6, _080498EC @ =gEnemyParty
adds r0, r6
adds r1, r4, 0
- bl sub_80448F8
+ bl CheckBattleTypeGhost
lsls r0, 24
cmp r0, 0
bne _0804991C
@@ -4307,7 +4307,7 @@ UpdateLeftNoOfBallsTextOnHealthbox: @ 8049D10
ldr r1, _08049D84 @ =gUnknown_83FE81C
mov r0, sp
bl StringCopy
- ldr r1, _08049D88 @ =gUnknown_2039994
+ ldr r1, _08049D88 @ =gNumSafariBalls
ldrb r1, [r1]
movs r2, 0
movs r3, 0x2
@@ -4351,7 +4351,7 @@ UpdateLeftNoOfBallsTextOnHealthbox: @ 8049D10
bx r0
.align 2, 0
_08049D84: .4byte gUnknown_83FE81C
-_08049D88: .4byte gUnknown_2039994
+_08049D88: .4byte gNumSafariBalls
_08049D8C: .4byte gSprites
_08049D90: .4byte 0x060102c0
_08049D94: .4byte 0x06010a00
@@ -5559,7 +5559,7 @@ AddTextPrinterAndCreateWindowOnHealthbox: @ 804A648
movs r1, 0
adds r2, r6, 0
mov r3, r8
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
mov r0, r10
str r4, [r0]
adds r0, r5, 0
diff --git a/asm/battle_message.s b/asm/battle_message.s
index 9505d542b..efd7e1385 100644
--- a/asm/battle_message.s
+++ b/asm/battle_message.s
@@ -2683,7 +2683,7 @@ _080D87F2:
ands r0, r1
cmp r0, 0
beq _080D881C
- bl sub_80CBE00
+ bl ContextNpcGetTextColor
lsls r0, 24
lsrs r0, 24
mov r2, sp
diff --git a/asm/battle_records.s b/asm/battle_records.s
deleted file mode 100644
index 2684fbd43..000000000
--- a/asm/battle_records.s
+++ /dev/null
@@ -1,1398 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80CD228
-sub_80CD228: @ 80CD228
- push {lr}
- movs r0, 0
- bl SetVBlankCallback
- ldr r0, _080CD23C @ =sub_80CD240
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080CD23C: .4byte sub_80CD240
- thumb_func_end sub_80CD228
-
- thumb_func_start sub_80CD240
-sub_80CD240: @ 80CD240
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080CD260 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x7
- bls _080CD254
- b _080CD376
-_080CD254:
- lsls r0, 2
- ldr r1, _080CD264 @ =_080CD268
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080CD260: .4byte gMain
-_080CD264: .4byte _080CD268
- .align 2, 0
-_080CD268:
- .4byte _080CD288
- .4byte _080CD294
- .4byte _080CD29A
- .4byte _080CD2CC
- .4byte _080CD2E2
- .4byte _080CD302
- .4byte _080CD314
- .4byte _080CD338
-_080CD288:
- movs r0, 0
- bl SetVBlankCallback
- bl sub_80CD4D0
- b _080CD324
-_080CD294:
- bl sub_80CD608
- b _080CD324
-_080CD29A:
- ldr r4, _080CD2C4 @ =gUnknown_2039A1C
- movs r0, 0x80
- lsls r0, 4
- bl AllocZeroed
- str r0, [r4]
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _080CD2C8 @ =gUnknown_83F6C7C
- movs r0, 0
- movs r2, 0x2
- bl InitBgsFromTemplates
- ldr r1, [r4]
- movs r0, 0x3
- bl SetBgTilemapBuffer
- bl sub_80CD638
- b _080CD324
- .align 2, 0
-_080CD2C4: .4byte gUnknown_2039A1C
-_080CD2C8: .4byte gUnknown_83F6C7C
-_080CD2CC:
- movs r0, 0x3
- bl sub_80CDCD0
- movs r0, 0
- bl stdpal_get
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- b _080CD324
-_080CD2E2:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080CD376
- movs r0, 0
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- b _080CD324
-_080CD302:
- ldr r0, _080CD310 @ =gUnknown_83F6C68
- bl InitWindows
- bl DeactivateAllTextPrinters
- b _080CD324
- .align 2, 0
-_080CD310: .4byte gUnknown_83F6C68
-_080CD314:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_080CD324:
- ldr r1, _080CD334 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080CD376
- .align 2, 0
-_080CD334: .4byte gMain
-_080CD338:
- bl sub_80CD628
- ldr r0, _080CD350 @ =sub_80CD38C
- bl SetVBlankCallback
- ldr r0, _080CD354 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _080CD358
- bl sub_815EC8C
- b _080CD35C
- .align 2, 0
-_080CD350: .4byte sub_80CD38C
-_080CD354: .4byte gSpecialVar_0x8004
-_080CD358:
- bl sub_80CDBE4
-_080CD35C:
- ldr r0, _080CD380 @ =sub_80CD3B8
- movs r1, 0x8
- bl CreateTask
- ldr r0, _080CD384 @ =sub_80CD3A0
- bl SetMainCallback2
- ldr r0, _080CD388 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080CD376:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CD380: .4byte sub_80CD3B8
-_080CD384: .4byte sub_80CD3A0
-_080CD388: .4byte gMain
- thumb_func_end sub_80CD240
-
- thumb_func_start sub_80CD38C
-sub_80CD38C: @ 80CD38C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80CD38C
-
- thumb_func_start sub_80CD3A0
-sub_80CD3A0: @ 80CD3A0
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80CD3A0
-
- thumb_func_start sub_80CD3B8
-sub_80CD3B8: @ 80CD3B8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080CD3DC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080CD3D8
- ldr r0, _080CD3E0 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, _080CD3E4 @ =sub_80CD3E8
- str r0, [r1]
-_080CD3D8:
- pop {r0}
- bx r0
- .align 2, 0
-_080CD3DC: .4byte gPaletteFade
-_080CD3E0: .4byte gTasks
-_080CD3E4: .4byte sub_80CD3E8
- thumb_func_end sub_80CD3B8
-
- thumb_func_start sub_80CD3E8
-sub_80CD3E8: @ 80CD3E8
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080CD41C @ =gTasks
- adds r4, r1, r0
- ldr r0, _080CD420 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080CD40C
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080CD416
-_080CD40C:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080CD424 @ =sub_80CD428
- str r0, [r4]
-_080CD416:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CD41C: .4byte gTasks
-_080CD420: .4byte gMain
-_080CD424: .4byte sub_80CD428
- thumb_func_end sub_80CD3E8
-
- thumb_func_start sub_80CD428
-sub_80CD428: @ 80CD428
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _080CD458 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080CD45C @ =sub_80CD460
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CD458: .4byte gTasks
-_080CD45C: .4byte sub_80CD460
- thumb_func_end sub_80CD428
-
- thumb_func_start sub_80CD460
-sub_80CD460: @ 80CD460
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080CD498 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080CD490
- ldr r0, _080CD49C @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- ldr r0, _080CD4A0 @ =gUnknown_2039A1C
- ldr r0, [r0]
- bl Free
- movs r0, 0
- bl sub_80CD4A4
- bl FreeAllWindowBuffers
- adds r0, r4, 0
- bl DestroyTask
-_080CD490:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CD498: .4byte gPaletteFade
-_080CD49C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
-_080CD4A0: .4byte gUnknown_2039A1C
- thumb_func_end sub_80CD460
-
- thumb_func_start sub_80CD4A4
-sub_80CD4A4: @ 80CD4A4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r4, 0
- bl ClearWindowTilemap
- adds r0, r4, 0
- movs r1, 0x2
- bl CopyWindowToVram
- adds r0, r4, 0
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80CD4A4
-
- thumb_func_start sub_80CD4D0
-sub_80CD4D0: @ 80CD4D0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0x4
- mov r8, r0
- mov r2, sp
- movs r6, 0
- ldr r1, _080CD600 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _080CD604 @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_080CD4F6:
- strh r6, [r2]
- mov r0, sp
- str r0, [r1]
- str r3, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r5
- subs r4, r5
- cmp r4, r5
- bhi _080CD4F6
- strh r6, [r2]
- mov r2, sp
- str r2, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r4, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0xE0
- lsls r0, 19
- movs r3, 0x80
- lsls r3, 3
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r2, _080CD600 @ =0x040000d4
- mov r1, r8
- str r1, [r2]
- str r0, [r2, 0x4]
- lsrs r0, r3, 2
- movs r1, 0x85
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r1, 0xA0
- lsls r1, 19
- mov r0, sp
- strh r4, [r0]
- str r0, [r2]
- str r1, [r2, 0x4]
- lsrs r3, 1
- movs r0, 0x81
- lsls r0, 24
- orrs r3, r0
- str r3, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x8
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xA
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xC
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xE
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080CD600: .4byte 0x040000d4
-_080CD604: .4byte 0x81000800
- thumb_func_end sub_80CD4D0
-
- thumb_func_start sub_80CD608
-sub_80CD608: @ 80CD608
- push {lr}
- bl ScanlineEffect_Stop
- bl ResetTasks
- bl ResetSpriteData
- bl ResetAllPicSprites
- bl ResetPaletteFade
- bl FreeAllSpritePalettes
- pop {r0}
- bx r0
- thumb_func_end sub_80CD608
-
- thumb_func_start sub_80CD628
-sub_80CD628: @ 80CD628
- push {lr}
- movs r1, 0x94
- lsls r1, 4
- movs r0, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_80CD628
-
- thumb_func_start sub_80CD638
-sub_80CD638: @ 80CD638
- push {lr}
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- pop {r0}
- bx r0
- thumb_func_end sub_80CD638
-
- thumb_func_start InitLinkBattleRecord
-InitLinkBattleRecord: @ 80CD690
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r2, _080CD6BC @ =0x01000008
- mov r0, sp
- adds r1, r4, 0
- bl CpuSet
- movs r0, 0xFF
- strb r0, [r4]
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CD6BC: .4byte 0x01000008
- thumb_func_end InitLinkBattleRecord
-
- thumb_func_start InitLinkBattleRecords_
-InitLinkBattleRecords_: @ 80CD6C0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r5, 0x4
-_080CD6C6:
- adds r0, r4, 0
- bl InitLinkBattleRecord
- adds r4, 0x10
- subs r5, 0x1
- cmp r5, 0
- bge _080CD6C6
- movs r0, 0x17
- movs r1, 0
- bl sub_8054F00
- movs r0, 0x18
- movs r1, 0
- bl sub_8054F00
- movs r0, 0x19
- movs r1, 0
- bl sub_8054F00
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end InitLinkBattleRecords_
-
- thumb_func_start GetLinkBattleRecordTotalBattles
-GetLinkBattleRecordTotalBattles: @ 80CD6F4
- adds r1, r0, 0
- ldrh r0, [r1, 0xA]
- ldrh r2, [r1, 0xC]
- adds r0, r2
- ldrh r1, [r1, 0xE]
- adds r0, r1
- bx lr
- thumb_func_end GetLinkBattleRecordTotalBattles
-
- thumb_func_start sub_80CD704
-sub_80CD704: @ 80CD704
- push {r4-r7,lr}
- adds r7, r1, 0
- lsls r2, 16
- lsrs r6, r2, 16
- movs r5, 0
- adds r4, r0, 0
-_080CD710:
- adds r0, r4, 0
- adds r1, r7, 0
- movs r2, 0x7
- bl StringCompareN
- cmp r0, 0
- bne _080CD728
- ldrh r0, [r4, 0x8]
- cmp r0, r6
- bne _080CD728
- adds r0, r5, 0
- b _080CD732
-_080CD728:
- adds r4, 0x10
- adds r5, 0x1
- cmp r5, 0x4
- ble _080CD710
- movs r0, 0x5
-_080CD732:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80CD704
-
- thumb_func_start SortLinkBattleRecords
-SortLinkBattleRecords: @ 80CD738
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r8, r0
- movs r0, 0x4
-_080CD746:
- subs r2, r0, 0x1
- mov r9, r2
- cmp r2, 0
- blt _080CD7A0
- lsls r0, 4
- mov r1, r8
- adds r6, r1, r0
- lsls r0, r2, 4
- adds r5, r0, r1
-_080CD758:
- adds r0, r6, 0
- str r2, [sp, 0x10]
- bl GetLinkBattleRecordTotalBattles
- adds r4, r0, 0
- adds r0, r5, 0
- bl GetLinkBattleRecordTotalBattles
- ldr r2, [sp, 0x10]
- cmp r4, r0
- ble _080CD792
- mov r1, sp
- adds r0, r6, 0
- ldm r0!, {r3,r4,r7}
- stm r1!, {r3,r4,r7}
- ldr r0, [r0]
- str r0, [r1]
- adds r1, r6, 0
- adds r0, r5, 0
- ldm r0!, {r3,r4,r7}
- stm r1!, {r3,r4,r7}
- ldr r0, [r0]
- str r0, [r1]
- adds r1, r5, 0
- mov r0, sp
- ldm r0!, {r3,r4,r7}
- stm r1!, {r3,r4,r7}
- ldr r0, [r0]
- str r0, [r1]
-_080CD792:
- subs r5, 0x10
- movs r0, 0x1
- negs r0, r0
- add r9, r0
- mov r1, r9
- cmp r1, 0
- bge _080CD758
-_080CD7A0:
- adds r0, r2, 0
- cmp r0, 0
- bgt _080CD746
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end SortLinkBattleRecords
-
- thumb_func_start UpdateLinkBattleRecord
-UpdateLinkBattleRecord: @ 80CD7B4
- push {lr}
- adds r2, r0, 0
- cmp r1, 0x2
- beq _080CD7E4
- cmp r1, 0x2
- bgt _080CD7C6
- cmp r1, 0x1
- beq _080CD7CC
- b _080CD80E
-_080CD7C6:
- cmp r1, 0x3
- beq _080CD7FC
- b _080CD80E
-_080CD7CC:
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _080CD7E0 @ =0x0000270f
- cmp r0, r1
- bls _080CD80E
- strh r1, [r2, 0xA]
- b _080CD80E
- .align 2, 0
-_080CD7E0: .4byte 0x0000270f
-_080CD7E4:
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _080CD7F8 @ =0x0000270f
- cmp r0, r1
- bls _080CD80E
- strh r1, [r2, 0xC]
- b _080CD80E
- .align 2, 0
-_080CD7F8: .4byte 0x0000270f
-_080CD7FC:
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _080CD814 @ =0x0000270f
- cmp r0, r1
- bls _080CD80E
- strh r1, [r2, 0xE]
-_080CD80E:
- pop {r0}
- bx r0
- .align 2, 0
-_080CD814: .4byte 0x0000270f
- thumb_func_end UpdateLinkBattleRecord
-
- thumb_func_start UpdateLinkBattleGameStats
-UpdateLinkBattleGameStats: @ 80CD818
- push {r4,lr}
- cmp r0, 0x2
- beq _080CD832
- cmp r0, 0x2
- bgt _080CD828
- cmp r0, 0x1
- beq _080CD82E
- b _080CD84A
-_080CD828:
- cmp r0, 0x3
- beq _080CD836
- b _080CD84A
-_080CD82E:
- movs r4, 0x17
- b _080CD838
-_080CD832:
- movs r4, 0x18
- b _080CD838
-_080CD836:
- movs r4, 0x19
-_080CD838:
- adds r0, r4, 0
- bl GetGameStat
- ldr r1, _080CD850 @ =0x0000270e
- cmp r0, r1
- bhi _080CD84A
- adds r0, r4, 0
- bl IncrementGameStat
-_080CD84A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CD850: .4byte 0x0000270e
- thumb_func_end UpdateLinkBattleGameStats
-
- thumb_func_start sub_80CD854
-sub_80CD854: @ 80CD854
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r6, r0, 0
- adds r4, r1, 0
- mov r8, r3
- ldr r0, [sp, 0x20]
- lsls r2, 16
- lsrs r7, r2, 16
- cmp r0, 0x1
- bne _080CD882
- mov r1, sp
- movs r0, 0xFC
- strb r0, [r1]
- movs r0, 0x15
- strb r0, [r1, 0x1]
- mov r0, sp
- adds r0, 0x2
- adds r1, r4, 0
- bl StringCopy
- b _080CD88A
-_080CD882:
- mov r0, sp
- adds r1, r4, 0
- bl StringCopy
-_080CD88A:
- mov r0, r8
- bl UpdateLinkBattleGameStats
- adds r0, r6, 0
- bl SortLinkBattleRecords
- adds r0, r6, 0
- mov r1, sp
- adds r2, r7, 0
- bl sub_80CD704
- adds r5, r0, 0
- cmp r5, 0x5
- bne _080CD8BE
- movs r5, 0x4
- adds r4, r6, 0
- adds r4, 0x40
- adds r0, r4, 0
- bl InitLinkBattleRecord
- adds r0, r4, 0
- mov r1, sp
- movs r2, 0x7
- bl StringCopyN
- strh r7, [r4, 0x8]
-_080CD8BE:
- lsls r0, r5, 4
- adds r0, r6, r0
- mov r1, r8
- bl UpdateLinkBattleRecord
- adds r0, r6, 0
- bl SortLinkBattleRecords
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80CD854
-
- thumb_func_start InitLinkBattleRecords
-InitLinkBattleRecords: @ 80CD8DC
- push {lr}
- ldr r0, _080CD8F0 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080CD8F4 @ =0x00000a98
- adds r0, r1
- bl InitLinkBattleRecords_
- pop {r0}
- bx r0
- .align 2, 0
-_080CD8F0: .4byte gSaveBlock2Ptr
-_080CD8F4: .4byte 0x00000a98
- thumb_func_end InitLinkBattleRecords
-
- thumb_func_start sub_80CD8F8
-sub_80CD8F8: @ 80CD8F8
- push {lr}
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 5
- ldr r0, _080CD91C @ =gUnknown_2039638
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _080CD920 @ =0x0000270f
- cmp r0, r2
- bls _080CD916
- strh r2, [r1]
-_080CD916:
- pop {r0}
- bx r0
- .align 2, 0
-_080CD91C: .4byte gUnknown_2039638
-_080CD920: .4byte 0x0000270f
- thumb_func_end sub_80CD8F8
-
- thumb_func_start sub_80CD924
-sub_80CD924: @ 80CD924
- push {lr}
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 5
- ldr r0, _080CD948 @ =gUnknown_203963A
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _080CD94C @ =0x0000270f
- cmp r0, r2
- bls _080CD942
- strh r2, [r1]
-_080CD942:
- pop {r0}
- bx r0
- .align 2, 0
-_080CD948: .4byte gUnknown_203963A
-_080CD94C: .4byte 0x0000270f
- thumb_func_end sub_80CD924
-
- thumb_func_start sub_80CD950
-sub_80CD950: @ 80CD950
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080CD964 @ =gUnknown_2023E8A
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080CD968
- cmp r0, 0x2
- beq _080CD976
- b _080CD984
- .align 2, 0
-_080CD964: .4byte gUnknown_2023E8A
-_080CD968:
- eors r0, r4
- bl sub_80CD8F8
- adds r0, r4, 0
- bl sub_80CD924
- b _080CD984
-_080CD976:
- movs r0, 0x1
- eors r0, r4
- bl sub_80CD924
- adds r0, r4, 0
- bl sub_80CD8F8
-_080CD984:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80CD950
-
- thumb_func_start sub_80CD98C
-sub_80CD98C: @ 80CD98C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r0, _080CD9DC @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _080CD9D4
- adds r0, r6, 0
- bl sub_80CD950
- ldr r0, _080CD9E0 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080CD9E4 @ =0x00000a98
- adds r0, r1
- lsls r2, r6, 1
- adds r2, r6
- lsls r2, 5
- ldr r3, _080CD9E8 @ =gUnknown_2039654
- adds r1, r2, r3
- subs r3, 0x30
- adds r2, r3
- ldrh r2, [r2, 0xE]
- ldr r3, _080CD9EC @ =gUnknown_2023E8A
- ldrb r3, [r3]
- ldr r5, _080CD9F0 @ =gLinkPlayers
- lsls r4, r6, 3
- subs r4, r6
- lsls r4, 2
- adds r4, r5
- ldrh r4, [r4, 0x1A]
- str r4, [sp]
- bl sub_80CD854
-_080CD9D4:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080CD9DC: .4byte gSaveBlock1Ptr
-_080CD9E0: .4byte gSaveBlock2Ptr
-_080CD9E4: .4byte 0x00000a98
-_080CD9E8: .4byte gUnknown_2039654
-_080CD9EC: .4byte gUnknown_2023E8A
-_080CD9F0: .4byte gLinkPlayers
- thumb_func_end sub_80CD98C
-
- thumb_func_start sub_80CD9F4
-sub_80CD9F4: @ 80CD9F4
- push {r4-r7,lr}
- sub sp, 0x14
- movs r0, 0x17
- bl GetGameStat
- adds r4, r0, 0
- movs r0, 0x18
- bl GetGameStat
- adds r5, r0, 0
- movs r0, 0x19
- bl GetGameStat
- adds r6, r0, 0
- ldr r0, _080CDAB0 @ =0x0000270f
- cmp r4, r0
- bls _080CDA18
- adds r4, r0, 0
-_080CDA18:
- cmp r5, r0
- bls _080CDA1E
- adds r5, r0, 0
-_080CDA1E:
- cmp r6, r0
- bls _080CDA24
- adds r6, r0, 0
-_080CDA24:
- ldr r0, _080CDAB4 @ =gStringVar1
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- ldr r0, _080CDAB8 @ =gStringVar2
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- ldr r0, _080CDABC @ =gStringVar3
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- movs r3, 0
- ldr r6, _080CDAC0 @ =gUnknown_83F6C84
- ldr r7, _080CDAC4 @ =gStringVar4
- ldr r0, _080CDAC8 @ =gUnknown_8418188
- mov r12, r0
- movs r5, 0
-_080CDA54:
- lsls r0, r3, 2
- adds r0, r6
- ldr r2, [r0]
- movs r1, 0
- adds r4, r3, 0x1
- movs r3, 0x3
-_080CDA60:
- cmp r1, 0
- bne _080CDA70
- ldrb r0, [r2]
- cmp r0, 0xFF
- bne _080CDA6C
- movs r1, 0x1
-_080CDA6C:
- cmp r1, 0
- beq _080CDA72
-_080CDA70:
- strb r5, [r2]
-_080CDA72:
- adds r2, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _080CDA60
- movs r0, 0xFF
- strb r0, [r2]
- adds r3, r4, 0
- cmp r3, 0x2
- bls _080CDA54
- adds r0, r7, 0
- mov r1, r12
- bl StringExpandPlaceholders
- movs r0, 0
- str r0, [sp]
- movs r1, 0x2
- str r1, [sp, 0x4]
- ldr r1, _080CDACC @ =gUnknown_83F6C78
- str r1, [sp, 0x8]
- str r0, [sp, 0xC]
- str r7, [sp, 0x10]
- movs r1, 0x2
- movs r2, 0xC
- movs r3, 0x18
- bl AddTextPrinterParametrized2
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080CDAB0: .4byte 0x0000270f
-_080CDAB4: .4byte gStringVar1
-_080CDAB8: .4byte gStringVar2
-_080CDABC: .4byte gStringVar3
-_080CDAC0: .4byte gUnknown_83F6C84
-_080CDAC4: .4byte gStringVar4
-_080CDAC8: .4byte gUnknown_8418188
-_080CDACC: .4byte gUnknown_83F6C78
- thumb_func_end sub_80CD9F4
-
- thumb_func_start sub_80CDAD0
-sub_80CDAD0: @ 80CDAD0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- movs r5, 0
- ldrh r0, [r6, 0xA]
- cmp r0, 0
- bne _080CDB50
- ldr r0, [r6, 0xC]
- cmp r0, 0
- bne _080CDB50
- str r5, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- ldr r0, _080CDB44 @ =gUnknown_83F6C78
- str r0, [sp, 0x8]
- str r5, [sp, 0xC]
- ldr r0, _080CDB48 @ =gUnknown_84181B6
- str r0, [sp, 0x10]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- mov r3, r8
- bl AddTextPrinterParametrized2
- movs r6, 0
-_080CDB0E:
- movs r4, 0x54
- cmp r5, 0
- beq _080CDB1C
- movs r4, 0xB4
- cmp r5, 0x1
- bne _080CDB1C
- movs r4, 0x84
-_080CDB1C:
- adds r2, r4, 0
- str r6, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- ldr r0, _080CDB44 @ =gUnknown_83F6C78
- str r0, [sp, 0x8]
- str r6, [sp, 0xC]
- ldr r0, _080CDB4C @ =gUnknown_84181BE
- str r0, [sp, 0x10]
- movs r0, 0
- movs r1, 0x2
- mov r3, r8
- bl AddTextPrinterParametrized2
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080CDB0E
- b _080CDBCE
- .align 2, 0
-_080CDB44: .4byte gUnknown_83F6C78
-_080CDB48: .4byte gUnknown_84181B6
-_080CDB4C: .4byte gUnknown_84181BE
-_080CDB50:
- movs r5, 0
- ldr r7, _080CDB70 @ =gStringVar1
- mov r9, r5
-_080CDB56:
- cmp r5, 0
- bne _080CDB74
- movs r4, 0
- adds r0, r7, 0
- movs r1, 0x8
- bl StringFillWithTerminator
- adds r0, r7, 0
- adds r1, r6, 0
- movs r2, 0x7
- bl StringCopyN
- b _080CDBA6
- .align 2, 0
-_080CDB70: .4byte gStringVar1
-_080CDB74:
- cmp r5, 0x1
- bne _080CDB7E
- movs r4, 0x54
- ldrh r1, [r6, 0xA]
- b _080CDB86
-_080CDB7E:
- cmp r5, 0x2
- bne _080CDB98
- movs r4, 0x84
- ldrh r1, [r6, 0xC]
-_080CDB86:
- ldr r0, _080CDB94 @ =gStringVar1
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- b _080CDBA6
- .align 2, 0
-_080CDB94: .4byte gStringVar1
-_080CDB98:
- movs r4, 0xB4
- ldrh r1, [r6, 0xE]
- ldr r0, _080CDBDC @ =gStringVar1
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
-_080CDBA6:
- adds r2, r4, 0
- mov r0, r9
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- ldr r0, _080CDBE0 @ =gUnknown_83F6C78
- str r0, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- str r7, [sp, 0x10]
- movs r0, 0
- movs r1, 0x2
- mov r3, r8
- bl AddTextPrinterParametrized2
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _080CDB56
-_080CDBCE:
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080CDBDC: .4byte gStringVar1
-_080CDBE0: .4byte gUnknown_83F6C78
- thumb_func_end sub_80CDAD0
-
- thumb_func_start sub_80CDBE4
-sub_80CDBE4: @ 80CDBE4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- movs r0, 0xD8
- str r0, [sp]
- movs r0, 0x90
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
- ldr r5, _080CDC9C @ =gStringVar4
- ldr r1, _080CDCA0 @ =gUnknown_8418174
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x2
- adds r1, r5, 0
- bl GetStringWidth
- movs r2, 0xD0
- subs r2, r0
- lsrs r2, 1
- lsls r2, 24
- lsrs r2, 24
- movs r4, 0
- str r4, [sp]
- movs r0, 0x2
- mov r9, r0
- str r0, [sp, 0x4]
- ldr r6, _080CDCA4 @ =gUnknown_83F6C78
- str r6, [sp, 0x8]
- str r4, [sp, 0xC]
- str r5, [sp, 0x10]
- movs r0, 0
- movs r1, 0x2
- movs r3, 0x4
- bl AddTextPrinterParametrized2
- ldr r5, _080CDCA8 @ =gSaveBlock2Ptr
- ldr r0, [r5]
- ldr r1, _080CDCAC @ =0x00000a98
- mov r8, r1
- add r0, r8
- bl sub_80CD9F4
- str r4, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- str r4, [sp, 0xC]
- ldr r0, _080CDCB0 @ =gUnknown_84181A4
- str r0, [sp, 0x10]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x54
- movs r3, 0x30
- bl AddTextPrinterParametrized2
- adds r7, r5, 0
- movs r5, 0xF4
- lsls r5, 22
- mov r6, r8
- movs r4, 0x4
-_080CDC70:
- ldr r0, [r7]
- adds r0, r6
- lsrs r1, r5, 24
- bl sub_80CDAD0
- movs r1, 0xE0
- lsls r1, 20
- adds r5, r1
- adds r6, 0x10
- subs r4, 0x1
- cmp r4, 0
- bge _080CDC70
- movs r0, 0
- bl sub_80CDCB4
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080CDC9C: .4byte gStringVar4
-_080CDCA0: .4byte gUnknown_8418174
-_080CDCA4: .4byte gUnknown_83F6C78
-_080CDCA8: .4byte gSaveBlock2Ptr
-_080CDCAC: .4byte 0x00000a98
-_080CDCB0: .4byte gUnknown_84181A4
- thumb_func_end sub_80CDBE4
-
- thumb_func_start sub_80CDCB4
-sub_80CDCB4: @ 80CDCB4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80CDCB4
-
- thumb_func_start sub_80CDCD0
-sub_80CDCD0: @ 80CDCD0
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080CDD0C @ =gUnknown_83F6388
- adds r0, r4, 0
- movs r2, 0xC0
- movs r3, 0
- bl LoadBgTiles
- ldr r1, _080CDD10 @ =gUnknown_83F6468
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBufferRect
- ldr r0, _080CDD14 @ =gUnknown_83F6448
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CDD0C: .4byte gUnknown_83F6388
-_080CDD10: .4byte gUnknown_83F6468
-_080CDD14: .4byte gUnknown_83F6448
- thumb_func_end sub_80CDCD0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s
index 9c69714cb..42d1f653d 100644
--- a/asm/battle_script_commands.s
+++ b/asm/battle_script_commands.s
@@ -12,7 +12,7 @@ atk00_attackcanceler: @ 801D760
mov r6, r8
push {r6,r7}
sub sp, 0x4
- ldr r0, _0801D77C @ =gUnknown_2023E8A
+ ldr r0, _0801D77C @ =gBattleOutcome
ldrb r0, [r0]
cmp r0, 0
beq _0801D784
@@ -21,7 +21,7 @@ atk00_attackcanceler: @ 801D760
strb r0, [r1]
b _0801DAFC
.align 2, 0
-_0801D77C: .4byte gUnknown_2023E8A
+_0801D77C: .4byte gBattleOutcome
_0801D780: .4byte gUnknown_2023BE3
_0801D784:
ldr r2, _0801D7B4 @ =gBattleMons
@@ -9519,7 +9519,7 @@ _0802243C:
ble _0802240C
cmp r6, 0
bne _08022450
- ldr r0, _0802253C @ =gUnknown_2023E8A
+ ldr r0, _0802253C @ =gBattleOutcome
ldrb r1, [r0]
movs r2, 0x2
orrs r1, r2
@@ -9553,7 +9553,7 @@ _08022484:
adds r5, 0x1
cmp r5, 0x5
ble _08022454
- ldr r2, _0802253C @ =gUnknown_2023E8A
+ ldr r2, _0802253C @ =gBattleOutcome
cmp r6, 0
bne _08022498
ldrb r0, [r2]
@@ -9647,7 +9647,7 @@ _0802251E:
.align 2, 0
_08022534: .4byte gUnknown_2023BC8
_08022538: .4byte gPlayerParty
-_0802253C: .4byte gUnknown_2023E8A
+_0802253C: .4byte gBattleOutcome
_08022540: .4byte gEnemyParty
_08022544: .4byte gBattleTypeFlags
_08022548: .4byte gBattlersCount
@@ -13273,7 +13273,7 @@ sub_80240D4: @ 80240D4
adds r1, r4
ldr r2, [r1]
movs r1, 0x2
- bl sub_8044898
+ bl HandleSetPokedexFlag
_0802412A:
ldr r2, _08024180 @ =gAbsentBattlerFlags
ldr r1, _08024184 @ =gBitTable
@@ -13398,7 +13398,7 @@ _08024228:
bl GetBankMultiplayerId
lsls r0, 24
lsrs r0, 24
- bl sub_8043620
+ bl GetLinkTrainerFlankId
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
@@ -15311,7 +15311,7 @@ atk57: @ 80251C4
bl GetBattlerAtPosition
ldr r4, _080251F0 @ =gActiveBattler
strb r0, [r4]
- ldr r0, _080251F4 @ =gUnknown_2023E8A
+ ldr r0, _080251F4 @ =gBattleOutcome
ldrb r1, [r0]
movs r0, 0
bl EmitCmd55
@@ -15326,7 +15326,7 @@ atk57: @ 80251C4
bx r0
.align 2, 0
_080251F0: .4byte gActiveBattler
-_080251F4: .4byte gUnknown_2023E8A
+_080251F4: .4byte gBattleOutcome
_080251F8: .4byte gUnknown_2023D74
thumb_func_end atk57
@@ -16141,7 +16141,7 @@ sub_80258AC: @ 80258AC
push {r7}
movs r6, 0
movs r5, 0
- ldr r0, _080258F0 @ =gUnknown_2023E8A
+ ldr r0, _080258F0 @ =gBattleOutcome
ldrb r0, [r0]
cmp r0, 0x1
beq _080258C0
@@ -16171,7 +16171,7 @@ _080258C0:
mov r8, r0
b _080259E8
.align 2, 0
-_080258F0: .4byte gUnknown_2023E8A
+_080258F0: .4byte gBattleOutcome
_080258F4: .4byte gTrainerBattleOpponent_A
_080258F8: .4byte gBattleResources
_080258FC: .4byte gBattleStruct
@@ -17903,7 +17903,7 @@ PutMonIconOnLvlUpBox: @ 8026688
orrs r0, r1
str r0, [sp, 0x4]
adds r0, r4, 0
- bl sub_80971CC
+ bl GetValidMonIconPalettePtr
str r0, [sp, 0x8]
add r4, sp, 0x8
ldr r0, [r4, 0x4]
@@ -19745,7 +19745,7 @@ _0802753C:
cmp r0, 0
beq _080275AC
movs r0, 0x1
- bl CountAliveMons
+ bl CountAliveMonsInBattle
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x2
@@ -21520,7 +21520,7 @@ _08028336:
bl GetBankMultiplayerId
lsls r0, 24
lsrs r0, 24
- bl sub_8043620
+ bl GetLinkTrainerFlankId
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
@@ -21665,7 +21665,7 @@ _08028458:
bl GetBankMultiplayerId
lsls r0, 24
lsrs r0, 24
- bl sub_8043620
+ bl GetLinkTrainerFlankId
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
@@ -22207,7 +22207,7 @@ _0802887C:
cmp r0, 0
beq _080288EC
movs r0, 0x1
- bl CountAliveMons
+ bl CountAliveMonsInBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
@@ -32384,7 +32384,7 @@ _0802D9B4:
lsrs r0, 16
movs r1, 0x3
adds r2, r4, 0
- bl sub_8044898
+ bl HandleSetPokedexFlag
ldr r1, _0802D9D4 @ =gUnknown_2023D74
ldr r0, [r1]
adds r0, 0x5
diff --git a/asm/battle_setup.s b/asm/battle_setup.s
index f4e1fdf0a..99e4c3468 100644
--- a/asm/battle_setup.s
+++ b/asm/battle_setup.s
@@ -25,7 +25,7 @@ sub_807F620: @ 807F620
.align 2, 0
_0807F640: .4byte gTasks+0x8
_0807F644:
- bl c3_80A0DD8_is_running
+ bl FldEffPoison_IsActive
cmp r0, 0
bne _0807F686
bl sub_812B478
@@ -46,7 +46,7 @@ _0807F65E:
ldr r0, _0807F68C @ =sub_800FD9C
bl SetMainCallback2
bl sub_806D7E8
- bl overworld_poison_timer_set
+ bl ClearPoisonStepCounter
adds r0, r5, 0
bl DestroyTask
_0807F686:
@@ -221,7 +221,7 @@ sub_807F7D8: @ 807F7D8
bl player_bitmagic
bl sub_805C780
ldr r1, _0807F804 @ =gMain
- ldr r0, _0807F808 @ =sub_80A0F4C
+ ldr r0, _0807F808 @ =CB2_EndSafariBattle
str r0, [r1, 0x8]
ldr r1, _0807F80C @ =gBattleTypeFlags
movs r0, 0x80
@@ -235,7 +235,7 @@ sub_807F7D8: @ 807F7D8
bx r0
.align 2, 0
_0807F804: .4byte gMain
-_0807F808: .4byte sub_80A0F4C
+_0807F808: .4byte CB2_EndSafariBattle
_0807F80C: .4byte gBattleTypeFlags
thumb_func_end sub_807F7D8
@@ -300,7 +300,7 @@ sub_807F888: @ 807F888
bl CreateMaleMon
bl ScriptContext2_Enable
ldr r1, _0807F8B8 @ =gMain
- ldr r0, _0807F8BC @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _0807F8BC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
str r0, [r1, 0x8]
ldr r1, _0807F8C0 @ =gBattleTypeFlags
movs r0, 0x80
@@ -314,7 +314,7 @@ sub_807F888: @ 807F888
.align 2, 0
_0807F8B4: .4byte gEnemyParty
_0807F8B8: .4byte gMain
-_0807F8BC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_0807F8BC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_0807F8C0: .4byte gBattleTypeFlags
thumb_func_end sub_807F888
@@ -623,7 +623,7 @@ sub_807FB40: @ 807FB40
movs r0, 0
movs r1, 0x80
bl ResetOamRange
- ldr r0, _0807FB78 @ =gUnknown_2023E8A
+ ldr r0, _0807FB78 @ =gBattleOutcome
ldrb r0, [r0]
bl IsPlayerDefeated
cmp r0, 0x1
@@ -633,7 +633,7 @@ sub_807FB40: @ 807FB40
b _0807FB8C
.align 2, 0
_0807FB74: .4byte 0x01000100
-_0807FB78: .4byte gUnknown_2023E8A
+_0807FB78: .4byte gBattleOutcome
_0807FB7C: .4byte c2_whiteout
_0807FB80:
ldr r0, _0807FB94 @ =CB2_ReturnToField
@@ -666,7 +666,7 @@ sub_807FBA0: @ 807FBA0
movs r0, 0
movs r1, 0x80
bl ResetOamRange
- ldr r0, _0807FBD8 @ =gUnknown_2023E8A
+ ldr r0, _0807FBD8 @ =gBattleOutcome
ldrb r0, [r0]
bl IsPlayerDefeated
cmp r0, 0x1
@@ -676,17 +676,17 @@ sub_807FBA0: @ 807FBA0
b _0807FBE6
.align 2, 0
_0807FBD4: .4byte 0x01000100
-_0807FBD8: .4byte gUnknown_2023E8A
+_0807FBD8: .4byte gBattleOutcome
_0807FBDC: .4byte c2_whiteout
_0807FBE0:
- ldr r0, _0807FBEC @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _0807FBEC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
_0807FBE6:
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
-_0807FBEC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_0807FBEC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_807FBA0
thumb_func_start sub_807FBF0
@@ -704,7 +704,7 @@ sub_807FBF0: @ 807FBF0
movs r0, 0
movs r1, 0x80
bl ResetOamRange
- ldr r4, _0807FC28 @ =gUnknown_2023E8A
+ ldr r4, _0807FC28 @ =gBattleOutcome
ldrb r0, [r4]
bl IsPlayerDefeated
adds r1, r0, 0
@@ -715,7 +715,7 @@ sub_807FBF0: @ 807FBF0
b _0807FC4C
.align 2, 0
_0807FC24: .4byte 0x01000100
-_0807FC28: .4byte gUnknown_2023E8A
+_0807FC28: .4byte gBattleOutcome
_0807FC2C: .4byte c2_whiteout
_0807FC30:
ldrb r0, [r4]
@@ -731,7 +731,7 @@ _0807FC40:
movs r0, 0x1
strh r0, [r1]
_0807FC46:
- ldr r0, _0807FC58 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _0807FC58 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
_0807FC4C:
add sp, 0x4
@@ -740,7 +740,7 @@ _0807FC4C:
bx r0
.align 2, 0
_0807FC54: .4byte gSpecialVar_Result
-_0807FC58: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_0807FC58: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_807FBF0
thumb_func_start sub_807FC5C
@@ -1853,7 +1853,7 @@ sub_80804AC: @ 80804AC
ldrh r0, [r0]
cmp r0, 0x9
bne _08080508
- ldr r0, _080804DC @ =gUnknown_2023E8A
+ ldr r0, _080804DC @ =gBattleOutcome
ldrb r0, [r0]
bl IsPlayerDefeated
adds r1, r0, 0
@@ -1870,7 +1870,7 @@ sub_80804AC: @ 80804AC
b _080804EE
.align 2, 0
_080804D8: .4byte gUnknown_20386AC
-_080804DC: .4byte gUnknown_2023E8A
+_080804DC: .4byte gBattleOutcome
_080804E0: .4byte gSpecialVar_Result
_080804E4: .4byte gUnknown_20386CC
_080804E8:
@@ -1878,14 +1878,14 @@ _080804E8:
movs r1, 0
strh r1, [r0]
_080804EE:
- ldr r0, _08080504 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _08080504 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
bl sub_80803FC
bl sub_81139BC
b _0808054E
.align 2, 0
_08080500: .4byte gSpecialVar_Result
-_08080504: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_08080504: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_08080508:
ldr r0, _0808051C @ =gTrainerBattleOpponent_A
ldrh r1, [r0]
@@ -1893,14 +1893,14 @@ _08080508:
lsls r0, 3
cmp r1, r0
bne _08080524
- ldr r0, _08080520 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _08080520 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
b _0808054E
.align 2, 0
_0808051C: .4byte gTrainerBattleOpponent_A
-_08080520: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_08080520: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_08080524:
- ldr r0, _08080538 @ =gUnknown_2023E8A
+ ldr r0, _08080538 @ =gBattleOutcome
ldrb r0, [r0]
bl IsPlayerDefeated
cmp r0, 0x1
@@ -1910,10 +1910,10 @@ _08080530:
bl SetMainCallback2
b _0808054E
.align 2, 0
-_08080538: .4byte gUnknown_2023E8A
+_08080538: .4byte gBattleOutcome
_0808053C: .4byte c2_whiteout
_08080540:
- ldr r0, _08080554 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _08080554 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
bl sub_80803FC
bl sub_81139BC
@@ -1921,7 +1921,7 @@ _0808054E:
pop {r0}
bx r0
.align 2, 0
-_08080554: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_08080554: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_80804AC
thumb_func_start sub_8080558
@@ -1933,14 +1933,14 @@ sub_8080558: @ 8080558
lsls r0, 3
cmp r1, r0
bne _08080578
- ldr r0, _08080574 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _08080574 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
b _080805A6
.align 2, 0
_08080570: .4byte gTrainerBattleOpponent_A
-_08080574: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_08080574: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_08080578:
- ldr r0, _0808058C @ =gUnknown_2023E8A
+ ldr r0, _0808058C @ =gBattleOutcome
ldrb r0, [r0]
bl IsPlayerDefeated
cmp r0, 0x1
@@ -1949,10 +1949,10 @@ _08080578:
bl SetMainCallback2
b _080805A6
.align 2, 0
-_0808058C: .4byte gUnknown_2023E8A
+_0808058C: .4byte gBattleOutcome
_08080590: .4byte c2_whiteout
_08080594:
- ldr r0, _080805AC @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _080805AC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
bl sub_80803FC
bl sub_810CDE8
@@ -1961,7 +1961,7 @@ _080805A6:
pop {r0}
bx r0
.align 2, 0
-_080805AC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_080805AC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_8080558
thumb_func_start sub_80805B0
@@ -2051,7 +2051,7 @@ sub_8080628: @ 8080628
beq _080806BE
ldr r0, _08080668 @ =gTrainerBattleOpponent_A
ldrh r0, [r0]
- bl sub_804367C
+ bl GetTrainerEncounterMusicId
lsls r0, 24
lsrs r0, 24
cmp r0, 0xD
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index 0f268a320..13a75573a 100644
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -1222,7 +1222,7 @@ _080E6286:
adds r2, r3
ldr r1, [r4]
adds r1, r2
- bl sub_803E0A4
+ bl CreateBattleTowerMon
adds r6, 0x1
cmp r6, 0x2
ble _080E6286
@@ -1251,7 +1251,7 @@ _080E62B2:
muls r2, r6
adds r2, 0x1C
adds r1, r2
- bl sub_803E0A4
+ bl CreateBattleTowerMon
adds r6, 0x1
cmp r6, 0x2
ble _080E62B2
@@ -2010,14 +2010,14 @@ _080E68A8: .4byte gPlayerParty
_080E68AC:
bl sub_80E7550
_080E68B0:
- ldr r0, _080E68C0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _080E68C0 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080E68C0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_080E68C0: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_80E6854
thumb_func_start sub_80E68C4
@@ -2136,7 +2136,7 @@ _080E69A0:
adds r2, r1
ldr r1, [r4]
adds r1, r2
- bl sub_803E0A4
+ bl CreateBattleTowerMon
adds r5, 0x1
cmp r5, 0x2
ble _080E69A0
@@ -2407,7 +2407,7 @@ _080E6C00:
adds r0, r2
ldrh r1, [r0]
movs r0, 0x20
- bl sub_8054F00
+ bl SetGameStat
b _080E6C80
.align 2, 0
_080E6C10: .4byte 0x0000057a
@@ -2599,7 +2599,7 @@ _080E6D9C:
adds r0, r1
ldrh r1, [r0]
movs r0, 0x20
- bl sub_8054F00
+ bl SetGameStat
b _080E6E08
.align 2, 0
_080E6DAC: .4byte 0x0000057a
@@ -2717,7 +2717,7 @@ _080E6E76:
adds r5, r0, 0
movs r0, 0x20
adds r1, r5, 0
- bl sub_8054F00
+ bl SetGameStat
ldr r1, _080E6EA4 @ =0x0000270f
cmp r5, r1
bhi _080E6EB8
@@ -2731,7 +2731,7 @@ _080E6EA8:
ldrh r5, [r1]
movs r0, 0x20
adds r1, r5, 0
- bl sub_8054F00
+ bl SetGameStat
ldr r1, _080E6EC4 @ =0x0000270f
cmp r5, r1
bls _080E6ECC
@@ -2894,7 +2894,7 @@ _080E6FF2:
bl sub_80E712C
ldr r4, _080E703C @ =gSaveBlock2Ptr
ldr r0, [r4]
- ldr r1, _080E704C @ =gUnknown_2023E8A
+ ldr r1, _080E704C @ =gBattleOutcome
ldrb r1, [r1]
ldr r2, _080E7050 @ =0x0000055d
adds r0, r2
@@ -2930,7 +2930,7 @@ _080E703C: .4byte gSaveBlock2Ptr
_080E7040: .4byte 0x0000055c
_080E7044: .4byte gSpecialVar_0x8004
_080E7048: .4byte 0x00000564
-_080E704C: .4byte gUnknown_2023E8A
+_080E704C: .4byte gBattleOutcome
_080E7050: .4byte 0x0000055d
_080E7054: .4byte 0x0000055e
thumb_func_end sub_80E6FB8
@@ -3612,7 +3612,7 @@ _080E754C: .4byte gSaveBlock2Ptr
thumb_func_start sub_80E7550
sub_80E7550: @ 80E7550
push {lr}
- ldr r0, _080E7564 @ =gUnknown_2023E8A
+ ldr r0, _080E7564 @ =gBattleOutcome
ldrb r0, [r0]
cmp r0, 0x3
bne _080E756C
@@ -3621,7 +3621,7 @@ sub_80E7550: @ 80E7550
strb r0, [r1]
b _080E7590
.align 2, 0
-_080E7564: .4byte gUnknown_2023E8A
+_080E7564: .4byte gBattleOutcome
_080E7568: .4byte gStringVar4
_080E756C:
cmp r0, 0x1
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
index cf761a220..48a5836ed 100644
--- a/asm/battle_transition.s
+++ b/asm/battle_transition.s
@@ -137,7 +137,7 @@ _080D09AC: .4byte gTasks
Transition_Phase1: @ 80D09B0
push {r4,lr}
adds r4, r0, 0
- bl sub_807B05C
+ bl SetWeatherScreenFadeOut
ldr r0, _080D09DC @ =gPlttBufferFaded
ldr r1, _080D09E0 @ =gPlttBufferUnfaded
ldr r2, _080D09E4 @ =0x04000100
diff --git a/asm/battle_util.s b/asm/battle_util.s
index 04202e9da..50f5210aa 100644
--- a/asm/battle_util.s
+++ b/asm/battle_util.s
@@ -5775,7 +5775,7 @@ _08019C40:
mov r8, r0
_08019C66:
adds r0, r7, 0
- bl sub_8043620
+ bl GetLinkTrainerFlankId
lsls r0, 24
lsrs r6, r0, 24
lsls r0, r6, 1
diff --git a/asm/berry_crush.s b/asm/berry_crush.s
index eb5e8d08d..42de36a1f 100644
--- a/asm/berry_crush.s
+++ b/asm/berry_crush.s
@@ -265,7 +265,7 @@ sub_814B8F0: @ 814B8F0
ldr r1, _0814B910 @ =sub_814B860
movs r0, 0x5
movs r2, 0
- bl sub_813CD50
+ bl InitBerryPouch
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/berry_crush_2.s b/asm/berry_crush_2.s
index 16f7bff79..f775bd8dc 100644
--- a/asm/berry_crush_2.s
+++ b/asm/berry_crush_2.s
@@ -229,7 +229,7 @@ _0814BCA2:
movs r0, 0
movs r1, 0x2
adds r2, r4, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
b _0814BD12
.align 2, 0
_0814BCE8: .4byte gStringVar4
@@ -250,7 +250,7 @@ _0814BCF0:
str r0, [sp, 0xC]
movs r0, 0
movs r1, 0x2
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
_0814BD12:
movs r0, 0
movs r1, 0x3
@@ -2758,7 +2758,7 @@ _0814D03C:
movs r3, 0x6
bl ConvertIntToDecimalStringN
ldr r4, _0814D080 @ =gStringVar2
- bl sub_815EFA0
+ bl GetBerryPowder
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0
@@ -2868,7 +2868,7 @@ _0814D106:
movs r0, 0
movs r1, 0x2
movs r3, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
@@ -2946,7 +2946,7 @@ _0814D1A6:
strb r0, [r5, 0xC]
b _0814D238
_0814D1CA:
- bl sub_80F7858
+ bl DisplayYesNoMenuDefaultYes
b _0814D230
_0814D1D0:
bl Menu_ProcessInputNoWrapClearOnChoose
@@ -2963,7 +2963,7 @@ _0814D1D0:
bl memset
cmp r4, 0
bne _0814D202
- bl sub_8099FAC
+ bl CheckHasAtLeastOneBerry
lsls r0, 24
cmp r0, 0
beq _0814D1FE
@@ -3232,7 +3232,7 @@ _0814D3C0:
str r1, [sp, 0xC]
movs r0, 0
movs r1, 0x2
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
b _0814D40C
.align 2, 0
_0814D3EC: .4byte gUnknown_846E328
@@ -3249,7 +3249,7 @@ _0814D3F0:
str r0, [sp, 0xC]
movs r0, 0
movs r1, 0x2
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
_0814D40C:
movs r0, 0
movs r1, 0x3
diff --git a/asm/berry_crush_3.s b/asm/berry_crush_3.s
index f837c4929..b10f29f8d 100644
--- a/asm/berry_crush_3.s
+++ b/asm/berry_crush_3.s
@@ -50,7 +50,7 @@ _0814D61C:
movs r1, 0
bl SetGpuReg
bl ScanlineEffect_Stop
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
b _0814D878
_0814D63A:
add r0, sp, 0x8
@@ -175,12 +175,12 @@ _0814D73A:
movs r0, 0x1
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
b _0814D878
.align 2, 0
_0814D764: .4byte gUnknown_8EAFFC0
_0814D768:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
cmp r0, 0
beq _0814D774
@@ -1212,7 +1212,7 @@ sub_814DF44: @ 814DF44
movs r1, 0x2
adds r2, r4, 0
movs r3, 0
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0xC
pop {r3}
mov r8, r3
@@ -1265,7 +1265,7 @@ _0814DFE0:
adds r4, r2, r4
str r4, [sp, 0x2C]
_0814DFF0:
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r0, [sp, 0x10]
cmp r0, 0x1
beq _0814E0E4
@@ -1355,7 +1355,7 @@ _0814E048:
movs r1, 0x2
adds r2, r7, 0
adds r3, r4, 0
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r1, [sp, 0x2C]
ldrb r0, [r1]
adds r2, r7, 0
@@ -1370,7 +1370,7 @@ _0814E048:
str r1, [sp, 0x8]
movs r1, 0x2
adds r3, r4, 0
- bl box_print
+ bl AddTextPrinterParameterized3
mov r9, r6
_0814E0C8:
ldr r6, [sp, 0x20]
@@ -1509,7 +1509,7 @@ _0814E178:
ldr r1, _0814E1F8 @ =gStringVar4
str r1, [sp, 0x8]
movs r1, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
b _0814E27E
.align 2, 0
_0814E1E4: .4byte gStringVar1
@@ -1573,7 +1573,7 @@ _0814E21A:
ldr r1, _0814E2A0 @ =gStringVar4
str r1, [sp, 0x8]
movs r1, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
mov r9, r4
mov r6, r8
adds r6, 0xA2
@@ -1610,10 +1610,10 @@ _0814E2B8:
ldr r0, [sp, 0xC]
adds r1, r0, r1
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, _0814E324 @ =gStringVar4
adds r1, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
ldr r1, [sp, 0x2C]
ldrb r0, [r1]
mov r2, r9
@@ -1632,7 +1632,7 @@ _0814E2B8:
str r1, [sp, 0x8]
movs r1, 0x2
movs r2, 0x4
- bl box_print
+ bl AddTextPrinterParameterized3
mov r2, r10
lsls r0, r2, 24
lsrs r0, 24
@@ -1702,7 +1702,7 @@ sub_814E32C: @ 814E32C
movs r1, 0x2
movs r2, 0x2
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r4, _0814E568 @ =gUnknown_841D088
movs r0, 0x2
adds r1, r4, 0
@@ -1722,7 +1722,7 @@ sub_814E32C: @ 814E32C
movs r1, 0x2
adds r2, r6, 0
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
adds r0, r6, 0
subs r0, 0x20
lsls r0, 24
@@ -1759,7 +1759,7 @@ sub_814E32C: @ 814E32C
movs r1, 0x2
adds r2, r6, 0
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r4, _0814E57C @ =gUnknown_841D078
movs r0, 0x2
adds r1, r4, 0
@@ -1779,7 +1779,7 @@ sub_814E32C: @ 814E32C
movs r1, 0x2
adds r2, r6, 0
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
adds r0, r6, 0
subs r0, 0x9
lsls r0, 24
@@ -1806,7 +1806,7 @@ sub_814E32C: @ 814E32C
movs r1, 0x2
adds r2, r6, 0
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
adds r0, r7, 0
adds r0, 0xE
lsls r0, 24
@@ -1821,7 +1821,7 @@ sub_814E32C: @ 814E32C
movs r1, 0x2
movs r2, 0x2
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r4, _0814E588 @ =gUnknown_841D098
movs r0, 0x2
adds r1, r4, 0
@@ -1842,7 +1842,7 @@ sub_814E32C: @ 814E32C
movs r1, 0x3
adds r2, r6, 0
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
mov r4, r8
ldrb r2, [r4, 0x16]
ldrh r0, [r4, 0x16]
@@ -1919,7 +1919,7 @@ _0814E4EA:
movs r1, 0x2
adds r2, r6, 0
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
b _0814E5B6
.align 2, 0
_0814E560: .4byte gUnknown_846E3DC
@@ -1949,7 +1949,7 @@ _0814E59C:
movs r1, 0x2
adds r2, r6, 0
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
_0814E5B6:
adds r0, r7, 0
adds r0, 0xE
@@ -1970,7 +1970,7 @@ _0814E5B6:
movs r1, 0x2
movs r2, 0x2
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r0, _0814E638 @ =gStringVar1
ldr r4, [sp, 0x10]
ldrh r1, [r4, 0x8]
@@ -1998,7 +1998,7 @@ _0814E5B6:
movs r1, 0x2
adds r2, r6, 0
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0x1C
pop {r3-r5}
mov r8, r3
@@ -2097,12 +2097,12 @@ _0814E6E0:
ldr r4, _0814E700 @ =0x0000021d
adds r1, r4, 0
movs r2, 0xD0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
ldrb r0, [r5]
movs r1, 0
adds r2, r4, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
b _0814E7F8
.align 2, 0
_0814E700: .4byte 0x0000021d
@@ -2246,7 +2246,7 @@ sub_814E80C: @ 814E80C
adds r5, r4, r0
ldrb r0, [r5]
movs r1, 0x1
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r5]
bl RemoveWindow
adds r0, r4, 0
@@ -2309,12 +2309,12 @@ _0814E876:
ldr r4, _0814E8AC @ =0x0000021d
adds r1, r4, 0
movs r2, 0xD0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
ldrb r0, [r7, 0x2]
movs r1, 0
adds r2, r4, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
b _0814EA66
.align 2, 0
_0814E8A8: .4byte gUnknown_846E3F0
@@ -2341,7 +2341,7 @@ _0814E8B0:
str r5, [sp, 0x8]
movs r1, 0x2
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r5, _0814EA04 @ =gUnknown_841D124
movs r0, 0x2
adds r1, r5, 0
@@ -2358,7 +2358,7 @@ _0814E8B0:
str r5, [sp, 0x8]
movs r1, 0x2
movs r3, 0x12
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x2A
str r0, [sp, 0xC]
ldr r1, _0814EA08 @ =gStringVar4
@@ -2383,7 +2383,7 @@ _0814E90E:
movs r1, 0x2
movs r2, 0x4
ldr r3, [sp, 0xC]
- bl box_print
+ bl AddTextPrinterParameterized3
movs r3, 0
mov r0, r9
lsls r4, r0, 1
@@ -2456,7 +2456,7 @@ _0814E96E:
str r1, [sp, 0x8]
movs r1, 0x3
ldr r3, [sp, 0xC]
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r1, [sp, 0x10]
lsls r0, r1, 24
lsrs r0, 24
@@ -2499,7 +2499,7 @@ _0814EA3C: .4byte gMain
_0814EA40:
ldrb r0, [r7, 0x2]
movs r1, 0x1
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r7, 0x2]
bl ClearWindowTilemap
ldrb r0, [r7, 0x2]
@@ -2723,7 +2723,7 @@ _0814EBC6:
str r4, [sp, 0x10]
movs r1, 0x2
movs r3, 0x1
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
b _0814EC4C
.align 2, 0
_0814EC10: .4byte 0x000001bb
@@ -2752,7 +2752,7 @@ _0814EC18:
str r4, [sp, 0x10]
movs r1, 0x2
movs r3, 0x1
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
_0814EC4C:
ldr r1, _0814EC7C @ =0x000001bb
adds r0, r6, r1
@@ -2845,7 +2845,7 @@ sub_814ECE0: @ 814ECE0
_0814ECF6:
lsls r0, r5, 3
adds r0, r4
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
diff --git a/asm/berry_fix_program.s b/asm/berry_fix_program.s
deleted file mode 100644
index e24fa6c3c..000000000
--- a/asm/berry_fix_program.s
+++ /dev/null
@@ -1,344 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_815F6E0
-sub_815F6E0: @ 815F6E0
- push {r4-r6,lr}
- movs r6, 0x80
- lsls r6, 19
- movs r2, 0
- strh r2, [r6]
- ldr r1, _0815F73C @ =0x04000010
- strh r2, [r1]
- adds r1, 0x2
- strh r2, [r1]
- adds r1, 0x3E
- strh r2, [r1]
- ldr r5, _0815F740 @ =gUnknown_847A890
- lsls r4, r0, 1
- adds r4, r0
- lsls r4, 2
- adds r0, r4, r5
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- adds r0, r5, 0x4
- adds r0, r4, r0
- ldr r0, [r0]
- ldr r1, _0815F744 @ =0x0600f800
- bl LZ77UnCompVram
- adds r5, 0x8
- adds r4, r5
- ldr r0, [r4]
- movs r1, 0xA0
- lsls r1, 19
- movs r4, 0x80
- lsls r4, 1
- adds r2, r4, 0
- bl CpuSet
- ldr r1, _0815F748 @ =0x04000008
- movs r2, 0xF8
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- strh r4, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F73C: .4byte 0x04000010
-_0815F740: .4byte gUnknown_847A890
-_0815F744: .4byte 0x0600f800
-_0815F748: .4byte 0x04000008
- thumb_func_end sub_815F6E0
-
- thumb_func_start sub_815F74C
-sub_815F74C: @ 815F74C
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0815F7C4 @ =0x0000ffff
- bl DisableInterrupts
- movs r0, 0x1
- bl EnableInterrupts
- bl m4aSoundVSyncOff
- movs r0, 0
- bl SetVBlankCallback
- movs r4, 0
- str r4, [sp]
- ldr r0, _0815F7C8 @ =0x040000d4
- mov r1, sp
- str r1, [r0]
- movs r1, 0xC0
- lsls r1, 19
- str r1, [r0, 0x4]
- ldr r1, _0815F7CC @ =0x85006000
- str r1, [r0, 0x8]
- ldr r1, [r0, 0x8]
- str r4, [sp]
- mov r1, sp
- str r1, [r0]
- movs r1, 0xA0
- lsls r1, 19
- str r1, [r0, 0x4]
- ldr r1, _0815F7D0 @ =0x85000100
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- bl ResetSpriteData
- bl ResetTasks
- bl ScanlineEffect_Stop
- ldr r0, _0815F7D4 @ =gUnknown_3005ECC
- strb r4, [r0]
- ldr r0, _0815F7D8 @ =sub_815F7F0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0815F7DC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- ldr r0, _0815F7E0 @ =sub_815F7E4
- bl SetMainCallback2
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F7C4: .4byte 0x0000ffff
-_0815F7C8: .4byte 0x040000d4
-_0815F7CC: .4byte 0x85006000
-_0815F7D0: .4byte 0x85000100
-_0815F7D4: .4byte gUnknown_3005ECC
-_0815F7D8: .4byte sub_815F7F0
-_0815F7DC: .4byte gTasks
-_0815F7E0: .4byte sub_815F7E4
- thumb_func_end sub_815F74C
-
- thumb_func_start sub_815F7E4
-sub_815F7E4: @ 815F7E4
- push {lr}
- bl RunTasks
- pop {r0}
- bx r0
- thumb_func_end sub_815F7E4
-
- thumb_func_start sub_815F7F0
-sub_815F7F0: @ 815F7F0
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _0815F818 @ =gTasks+0x8
- adds r5, r0, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0xA
- bls _0815F80C
- b _0815F9A6
-_0815F80C:
- lsls r0, 2
- ldr r1, _0815F81C @ =_0815F820
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0815F818: .4byte gTasks+0x8
-_0815F81C: .4byte _0815F820
- .align 2, 0
-_0815F820:
- .4byte _0815F84C
- .4byte _0815F856
- .4byte _0815F874
- .4byte _0815F9A6
- .4byte _0815F890
- .4byte _0815F8C8
- .4byte _0815F934
- .4byte _0815F96A
- .4byte _0815F96E
- .4byte _0815F98C
- .4byte _0815F996
-_0815F84C:
- movs r0, 0x5
- bl sub_815F6E0
- movs r0, 0x1
- b _0815F9A4
-_0815F856:
- ldr r0, _0815F870 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0815F864
- b _0815F9A6
-_0815F864:
- movs r0, 0
- bl sub_815F6E0
- movs r0, 0x2
- b _0815F9A4
- .align 2, 0
-_0815F870: .4byte gMain
-_0815F874:
- ldr r0, _0815F88C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0815F882
- b _0815F9A6
-_0815F882:
- movs r0, 0x1
- bl sub_815F6E0
- movs r0, 0x4
- b _0815F9A4
- .align 2, 0
-_0815F88C: .4byte gMain
-_0815F890:
- ldr r0, _0815F8B4 @ =gUnknown_3005EF0
- ldr r1, _0815F8B8 @ =gMultiBootProgram_BerryGlitchFix_Start
- str r1, [r0]
- ldr r2, _0815F8BC @ =gUnknown_3005EF8
- ldr r0, _0815F8C0 @ =gMultiBootProgram_BerryGlitchFix_End
- subs r0, r1
- str r0, [r2]
- ldr r0, _0815F8C4 @ =gUnknown_3005F00
- str r1, [r0, 0x28]
- adds r1, r0, 0
- adds r1, 0x4B
- movs r4, 0
- strb r4, [r1]
- bl MultiBootInit
- strh r4, [r5, 0x2]
- movs r0, 0x5
- b _0815F9A4
- .align 2, 0
-_0815F8B4: .4byte gUnknown_3005EF0
-_0815F8B8: .4byte gMultiBootProgram_BerryGlitchFix_Start
-_0815F8BC: .4byte gUnknown_3005EF8
-_0815F8C0: .4byte gMultiBootProgram_BerryGlitchFix_End
-_0815F8C4: .4byte gUnknown_3005F00
-_0815F8C8:
- ldr r0, _0815F910 @ =gUnknown_3005F00
- ldrb r6, [r0, 0x18]
- adds r4, r0, 0
- cmp r6, 0
- bne _0815F920
- ldr r0, [r4, 0x1C]
- ldr r1, _0815F914 @ =0x00020200
- ands r0, r1
- cmp r0, r1
- bne _0815F920
- ldrh r0, [r5, 0x2]
- adds r0, 0x1
- strh r0, [r5, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB4
- ble _0815F924
- movs r0, 0x2
- bl sub_815F6E0
- ldr r0, _0815F918 @ =gUnknown_3005EF0
- ldr r1, [r0]
- adds r1, 0xC0
- ldr r0, _0815F91C @ =gUnknown_3005EF8
- ldr r2, [r0]
- subs r2, 0xC0
- movs r0, 0x1
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x4
- bl MultiBootStartMaster
- strh r6, [r5, 0x2]
- movs r0, 0x6
- b _0815F9A4
- .align 2, 0
-_0815F910: .4byte gUnknown_3005F00
-_0815F914: .4byte 0x00020200
-_0815F918: .4byte gUnknown_3005EF0
-_0815F91C: .4byte gUnknown_3005EF8
-_0815F920:
- movs r0, 0
- strh r0, [r5, 0x2]
-_0815F924:
- adds r0, r4, 0
- bl MultiBootMain
- ldr r1, _0815F930 @ =gUnknown_3005EF4
- str r0, [r1]
- b _0815F9A6
- .align 2, 0
-_0815F930: .4byte gUnknown_3005EF4
-_0815F934:
- ldr r4, _0815F954 @ =gUnknown_3005F00
- adds r0, r4, 0
- bl MultiBootMain
- ldr r1, _0815F958 @ =gUnknown_3005EF4
- str r0, [r1]
- adds r0, r4, 0
- bl MultiBootCheckComplete
- cmp r0, 0
- beq _0815F95C
- movs r0, 0x3
- bl sub_815F6E0
- movs r0, 0x7
- b _0815F9A4
- .align 2, 0
-_0815F954: .4byte gUnknown_3005F00
-_0815F958: .4byte gUnknown_3005EF4
-_0815F95C:
- ldrb r1, [r4, 0x1E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0815F9A6
- movs r0, 0x9
- b _0815F9A4
-_0815F96A:
- movs r0, 0x8
- b _0815F9A4
-_0815F96E:
- ldr r0, _0815F988 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0815F9A6
- adds r0, r2, 0
- bl DestroyTask
- bl DoSoftReset
- b _0815F9A6
- .align 2, 0
-_0815F988: .4byte gMain
-_0815F98C:
- movs r0, 0x4
- bl sub_815F6E0
- movs r0, 0xA
- b _0815F9A4
-_0815F996:
- ldr r0, _0815F9B0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0815F9A6
- movs r0, 0
-_0815F9A4:
- strh r0, [r5]
-_0815F9A6:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F9B0: .4byte gMain
- thumb_func_end sub_815F7F0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
index 762938e3c..60d6873e6 100644
--- a/asm/berry_pouch.s
+++ b/asm/berry_pouch.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start sub_813CD50
-sub_813CD50: @ 813CD50
+ thumb_func_start InitBerryPouch
+InitBerryPouch: @ 813CD50
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -92,7 +92,7 @@ _0813CDF0: .4byte gTextFlags
_0813CDF4: .4byte gSpecialVar_ItemId
_0813CDF8: .4byte sub_813CE30
_0813CDFC: .4byte 0x0000080c
- thumb_func_end sub_813CD50
+ thumb_func_end InitBerryPouch
thumb_func_start sub_813CE00
sub_813CE00: @ 813CE00
@@ -100,7 +100,7 @@ sub_813CE00: @ 813CE00
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
+ bl DoScheduledBgTilemapCopiesToVram
bl UpdatePaletteFade
pop {r0}
bx r0
@@ -130,7 +130,7 @@ _0813CE32:
lsrs r0, 24
cmp r0, 0x1
beq _0813CE56
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -183,8 +183,8 @@ _0813CE84:
.4byte _0813CFB0
.4byte _0813CFBE
_0813CED0:
- bl sub_80BF768
- bl clear_scheduled_bg_copies_to_vram
+ bl SetVBlankHBlankCallbacksToNull
+ bl ClearScheduledBgCopiesToVram
b _0813CFD2
_0813CEDA:
bl ScanlineEffect_Stop
@@ -199,10 +199,10 @@ _0813CEEC:
bl ResetSpriteData
b _0813CFD2
_0813CEF2:
- bl sub_80984D8
+ bl ResetItemMenuIconState
b _0813CFD2
_0813CEF8:
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
cmp r0, 0
bne _0813CFD2
@@ -386,7 +386,7 @@ _0813D078: .4byte gUnknown_203F370
thumb_func_start sub_813D07C
sub_813D07C: @ 813D07C
push {r4,lr}
- bl sub_80BF7C8
+ bl ResetAllBgsCoordinatesAndBgCntRegs
ldr r4, _0813D0DC @ =gUnknown_203F36C
ldr r0, [r4]
adds r0, 0xC
@@ -405,7 +405,7 @@ sub_813D07C: @ 813D07C
movs r0, 0x1
bl SetBgTilemapBuffer
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x50
movs r1, 0
bl SetGpuReg
@@ -454,18 +454,18 @@ _0813D10C:
beq _0813D178
b _0813D190
_0813D116:
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
ldr r1, _0813D12C @ =gUnknown_8E859D0
str r4, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
b _0813D17E
.align 2, 0
_0813D12C: .4byte gUnknown_8E859D0
_0813D130:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -498,7 +498,7 @@ _0813D170: .4byte gSaveBlock2Ptr
_0813D174: .4byte gUnknown_8E85BF4
_0813D178:
ldr r0, _0813D18C @ =gUnknown_84644A8
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
_0813D17E:
ldr r1, [r5]
adds r1, r6
@@ -510,7 +510,7 @@ _0813D17E:
_0813D18C: .4byte gUnknown_84644A8
_0813D190:
ldr r0, _0813D1A8 @ =gUnknown_84644B0
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
ldr r0, _0813D1AC @ =gUnknown_203F36C
ldr r0, [r0]
ldr r1, _0813D1B0 @ =0x0000080c
@@ -798,7 +798,7 @@ _0813D3D6:
ldrb r1, [r0, 0x9]
movs r0, 0x1
eors r0, r1
- bl sub_8098940
+ bl DestroyItemMenuIcon
ldr r1, [r4]
ldrb r0, [r1, 0x7]
cmp r0, r5
@@ -1028,9 +1028,9 @@ sub_813D594: @ 813D594
movs r1, 0
movs r2, 0x10
movs r3, 0x1E
- bl sub_80F6B08
+ bl SetBgRectPal
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x8
pop {r0}
bx r0
@@ -1072,7 +1072,7 @@ _0813D5EA:
movs r1, 0xA0
movs r2, 0x8
movs r3, 0x78
- bl AddScrollIndicatorArrowPairParametrized
+ bl AddScrollIndicatorArrowPairParameterized
ldr r1, [r4]
strb r0, [r1, 0x6]
add sp, 0x10
@@ -1102,7 +1102,7 @@ sub_813D614: @ 813D614
movs r1, 0xD4
movs r2, 0x78
movs r3, 0x98
- bl AddScrollIndicatorArrowPairParametrized
+ bl AddScrollIndicatorArrowPairParameterized
ldr r1, [r4]
strb r0, [r1, 0x6]
add sp, 0x10
@@ -1132,7 +1132,7 @@ sub_813D64C: @ 813D64C
movs r1, 0x98
movs r2, 0x48
movs r3, 0x68
- bl AddScrollIndicatorArrowPairParametrized
+ bl AddScrollIndicatorArrowPairParameterized
ldr r1, [r4]
strb r0, [r1, 0x6]
add sp, 0x10
@@ -1358,8 +1358,8 @@ _0813D800: .4byte gUnknown_203F37C
_0813D804: .4byte gUnknown_203F380
thumb_func_end sub_813D7CC
- thumb_func_start sub_813D808
-sub_813D808: @ 813D808
+ thumb_func_start BerryPouch_StartFadeToExitCallback
+BerryPouch_StartFadeToExitCallback: @ 813D808
push {r4,lr}
sub sp, 0x4
adds r4, r0, 0
@@ -1387,7 +1387,7 @@ sub_813D808: @ 813D808
.align 2, 0
_0813D83C: .4byte gTasks
_0813D840: .4byte sub_813D844
- thumb_func_end sub_813D808
+ thumb_func_end BerryPouch_StartFadeToExitCallback
thumb_func_start sub_813D844
sub_813D844: @ 813D844
@@ -1409,7 +1409,7 @@ sub_813D844: @ 813D844
ldr r4, _0813D884 @ =gUnknown_203F37A
subs r2, r4, 0x2
adds r1, r4, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldr r0, _0813D888 @ =gUnknown_203F36C
ldr r0, [r0]
ldr r0, [r0]
@@ -1443,7 +1443,7 @@ sub_813D8AC: @ 813D8AC
push {r4,lr}
ldr r4, _0813D904 @ =gBagPockets + 0x20
adds r0, r4, 0
- bl sub_809A720
+ bl SortAndCompactBagPocket
ldr r3, _0813D908 @ =gUnknown_203F36C
ldr r1, [r3]
movs r0, 0
@@ -1510,15 +1510,15 @@ _0813D92C:
bx r0
thumb_func_end sub_813D8AC
- thumb_func_start sub_813D934
-sub_813D934: @ 813D934
+ thumb_func_start BerryPouch_SetExitCallback
+BerryPouch_SetExitCallback: @ 813D934
ldr r1, _0813D93C @ =gUnknown_203F36C
ldr r1, [r1]
str r0, [r1]
bx lr
.align 2, 0
_0813D93C: .4byte gUnknown_203F36C
- thumb_func_end sub_813D934
+ thumb_func_end BerryPouch_SetExitCallback
thumb_func_start sub_813D940
sub_813D940: @ 813D940
@@ -1688,13 +1688,13 @@ _0813DA90:
b _0813DB9E
_0813DA9E:
ldrb r0, [r7]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r5, r0, 0
ldrb r0, [r7]
ldr r4, _0813DAE0 @ =gUnknown_203F37A
subs r2, r4, 0x2
adds r1, r4, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldr r0, _0813DAE4 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x4
@@ -1767,7 +1767,7 @@ _0813DB46:
strh r0, [r1]
_0813DB48:
adds r0, r6, 0
- bl sub_813D808
+ bl BerryPouch_StartFadeToExitCallback
b _0813DB9E
.align 2, 0
_0813DB50: .4byte gUnknown_203F36C
@@ -1869,7 +1869,7 @@ _0813DC18: .4byte gUnknown_203F384
_0813DC1C: .4byte gUnknown_84643B0
_0813DC20: .4byte gUnknown_203F388
_0813DC24:
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1974,7 +1974,7 @@ _0813DC86:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x6
bl sub_813EA08
adds r4, r0, 0
@@ -1985,7 +1985,7 @@ _0813DC86:
ldr r1, _0813DD68 @ =gStringVar1
bl sub_813D39C
ldr r5, _0813DD6C @ =gStringVar4
- ldr r1, _0813DD70 @ =gUnknown_84162FF
+ ldr r1, _0813DD70 @ =gOtherText_StrVar1
adds r0, r5, 0
bl StringExpandPlaceholders
movs r0, 0x2
@@ -2014,7 +2014,7 @@ _0813DD60: .4byte gUnknown_203F388
_0813DD64: .4byte gUnknown_846437C
_0813DD68: .4byte gStringVar1
_0813DD6C: .4byte gStringVar4
-_0813DD70: .4byte gUnknown_84162FF
+_0813DD70: .4byte gOtherText_StrVar1
thumb_func_end sub_813DBE4
thumb_func_start sub_813DD74
@@ -2051,7 +2051,7 @@ sub_813DDA0: @ 813DDA0
lsrs r0, 24
cmp r0, 0x1
beq _0813DDFE
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
@@ -2111,9 +2111,9 @@ sub_813DE0C: @ 813DE0C
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r0, _0813DE60 @ =gUnknown_203F370
ldrb r0, [r0, 0x4]
cmp r0, 0x4
@@ -2124,7 +2124,7 @@ sub_813DE0C: @ 813DE0C
cmp r0, 0
bne _0813DE68
adds r0, r5, 0
- bl sub_80A2238
+ bl FieldUseFunc_OakStopsYou
b _0813DEB0
.align 2, 0
_0813DE5C: .4byte gUnknown_203F388
@@ -2309,9 +2309,9 @@ sub_813DFC8: @ 813DFC8
movs r0, 0
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrb r0, [r4]
movs r1, 0x1
bl sub_813D4B0
@@ -2338,7 +2338,7 @@ sub_813E010: @ 813E010
adds r0, r4, 0
adds r0, 0x10
ldrh r1, [r4, 0x4]
- bl sub_80BF848
+ bl AdjustQuantityAccordingToDPadInput
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2370,9 +2370,9 @@ _0813E048:
movs r0, 0
bl sub_813EA98
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl sub_813D684
adds r0, r5, 0
bl sub_813DF54
@@ -2395,9 +2395,9 @@ _0813E090:
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrb r0, [r4]
movs r1, 0x1
bl sub_813D4B0
@@ -2504,7 +2504,7 @@ _0813E18A:
ldr r4, _0813E1F8 @ =gUnknown_203F37A
subs r2, r4, 0x2
adds r1, r4, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_813D8AC
bl sub_813D6F4
bl sub_813D204
@@ -2519,7 +2519,7 @@ _0813E18A:
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrb r0, [r5]
movs r1, 0x1
bl sub_813D4B0
@@ -2555,9 +2555,9 @@ sub_813E200: @ 813E200
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl CalculatePlayerPartyCount
lsls r0, 24
cmp r0, 0
@@ -2577,7 +2577,7 @@ _0813E248:
adds r0, r4
lsls r0, 3
adds r0, r1
- ldr r1, _0813E270 @ =sub_813D808
+ ldr r1, _0813E270 @ =BerryPouch_StartFadeToExitCallback
str r1, [r0]
_0813E25E:
pop {r4}
@@ -2587,7 +2587,7 @@ _0813E25E:
_0813E264: .4byte gUnknown_203F36C
_0813E268: .4byte sub_8126EDC
_0813E26C: .4byte gTasks
-_0813E270: .4byte sub_813D808
+_0813E270: .4byte BerryPouch_StartFadeToExitCallback
thumb_func_end sub_813E200
thumb_func_start sub_813E274
@@ -2598,7 +2598,7 @@ sub_813E274: @ 813E274
ldr r2, _0813E288 @ =gText_ThereIsNoPokemon
ldr r3, _0813E28C @ =sub_813E290
movs r1, 0x2
- bl sub_813EB20
+ bl DisplayItemMessageInBerryPouch
pop {r0}
bx r0
.align 2, 0
@@ -2646,7 +2646,7 @@ sub_813E2B8: @ 813E2B8
ldr r4, _0813E318 @ =gUnknown_203F37A
subs r2, r4, 0x2
adds r1, r4, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_813D8AC
bl sub_813D6F4
bl sub_813D204
@@ -2659,7 +2659,7 @@ sub_813E2B8: @ 813E2B8
lsrs r0, 24
strh r0, [r5]
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrb r0, [r5]
movs r1, 0x1
bl sub_813D4B0
@@ -2693,9 +2693,9 @@ sub_813E320: @ 813E320
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _0813E378 @ =gTasks
lsls r0, r4, 2
adds r0, r4
@@ -2745,7 +2745,7 @@ sub_813E37C: @ 813E37C
adds r0, r5, 0
movs r1, 0x2
adds r2, r4, 0
- bl sub_813EB20
+ bl DisplayItemMessageInBerryPouch
b _0813E3EA
.align 2, 0
_0813E3C4: .4byte gTasks+0x8
@@ -2761,7 +2761,7 @@ _0813E3D8:
adds r0, r7, 0
subs r0, 0x8
adds r0, r6, r0
- ldr r1, _0813E3F8 @ =sub_813D808
+ ldr r1, _0813E3F8 @ =BerryPouch_StartFadeToExitCallback
str r1, [r0]
_0813E3EA:
pop {r4-r7}
@@ -2770,7 +2770,7 @@ _0813E3EA:
.align 2, 0
_0813E3F0: .4byte gUnknown_203F36C
_0813E3F4: .4byte c2_8123744
-_0813E3F8: .4byte sub_813D808
+_0813E3F8: .4byte BerryPouch_StartFadeToExitCallback
thumb_func_end sub_813E37C
thumb_func_start sub_813E3FC
@@ -2786,14 +2786,14 @@ sub_813E3FC: @ 813E3FC
adds r1, r0
lsls r1, 3
adds r1, r2
- ldr r0, _0813E424 @ =sub_813D808
+ ldr r0, _0813E424 @ =BerryPouch_StartFadeToExitCallback
str r0, [r1]
bx lr
.align 2, 0
_0813E418: .4byte gUnknown_203F36C
_0813E41C: .4byte sub_808CE60
_0813E420: .4byte gTasks
-_0813E424: .4byte sub_813D808
+_0813E424: .4byte BerryPouch_StartFadeToExitCallback
thumb_func_end sub_813E3FC
thumb_func_start sub_813E428
@@ -2827,7 +2827,7 @@ sub_813E428: @ 813E428
ldr r3, _0813E484 @ =sub_813E2B8
adds r0, r5, 0
adds r2, r4, 0
- bl sub_813EB20
+ bl DisplayItemMessageInBerryPouch
b _0813E4CE
.align 2, 0
_0813E470: .4byte gTasks+0x8
@@ -2867,7 +2867,7 @@ _0813E4A8:
ldr r3, _0813E4E0 @ =sub_813E5B8
adds r0, r7, 0
adds r2, r4, 0
- bl sub_813EB20
+ bl DisplayItemMessageInBerryPouch
_0813E4CE:
pop {r4-r7}
pop {r0}
@@ -2917,7 +2917,7 @@ sub_813E4E4: @ 813E4E4
ldr r3, _0813E550 @ =sub_813E554
adds r0, r5, 0
adds r2, r4, 0
- bl sub_813EB20
+ bl DisplayItemMessageInBerryPouch
pop {r4-r6}
pop {r0}
bx r0
@@ -2964,7 +2964,7 @@ sub_813E568: @ 813E568
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrb r0, [r4]
movs r1, 0x1
bl sub_813D4B0
@@ -3091,7 +3091,7 @@ sub_813E690: @ 813E690
adds r0, r5, 0
adds r0, 0x10
ldrh r1, [r5, 0x4]
- bl sub_80BF848
+ bl AdjustQuantityAccordingToDPadInput
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3130,7 +3130,7 @@ _0813E6E4:
movs r0, 0
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl sub_813D684
adds r0, r4, 0
bl sub_813E4E4
@@ -3157,7 +3157,7 @@ _0813E718:
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl sub_813D684
ldrb r0, [r5]
movs r1, 0x1
@@ -3184,7 +3184,7 @@ sub_813E768: @ 813E768
movs r0, 0
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r0, _0813E7D8 @ =gSpecialVar_ItemId
ldrh r0, [r0]
ldr r1, _0813E7DC @ =gStringVar1
@@ -3213,7 +3213,7 @@ sub_813E768: @ 813E768
adds r0, r5, 0
movs r1, 0x2
adds r2, r4, 0
- bl sub_813EB20
+ bl DisplayItemMessageInBerryPouch
pop {r4-r6}
pop {r0}
bx r0
@@ -3277,7 +3277,7 @@ sub_813E7F0: @ 813E7F0
ldr r4, _0813E8C8 @ =gUnknown_203F37A
subs r2, r4, 0x2
adds r1, r4, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_813D8AC
bl sub_813D6F4
bl sub_813D204
@@ -3367,15 +3367,15 @@ sub_813E910: @ 813E910
movs r0, 0
movs r1, 0x1
movs r2, 0xE0
- bl sub_815001C
+ bl TextWindow_SetUserSelectedFrame
movs r0, 0
movs r1, 0x13
movs r2, 0xD0
- bl sub_814FEAC
+ bl TextWindow_LoadResourcesStdFrame0
movs r0, 0
movs r1, 0xA
movs r2, 0xC0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
ldr r0, _0813E998 @ =gTMCaseMainWindowPalette
movs r1, 0xF0
movs r2, 0x20
@@ -3397,9 +3397,9 @@ _0813E946:
movs r0, 0x2
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r4, 0
ldr r3, _0813E99C @ =gUnknown_203F38C
movs r2, 0xFF
@@ -3465,7 +3465,7 @@ sub_813E9A0: @ 813E9A0
str r4, [sp, 0xC]
str r2, [sp, 0x10]
mov r2, r9
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
add sp, 0x14
pop {r3,r4}
mov r8, r3
@@ -3509,7 +3509,7 @@ _0813EA38:
movs r1, 0
movs r2, 0xA
movs r3, 0xC
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
b _0813EA60
.align 2, 0
_0813EA4C: .4byte gUnknown_203F38C
@@ -3519,10 +3519,10 @@ _0813EA54:
movs r1, 0
movs r2, 0x1
movs r3, 0xE
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
_0813EA60:
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r0, _0813EA74 @ =gUnknown_203F38C
adds r0, r4, r0
ldrb r0, [r0]
@@ -3545,7 +3545,7 @@ sub_813EA78: @ 813EA78
movs r1, 0
movs r2, 0x1
movs r3, 0xE
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
pop {r0}
bx r0
.align 2, 0
@@ -3562,13 +3562,13 @@ sub_813EA98: @ 813EA98
adds r4, r0
ldrb r0, [r4]
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl ClearWindowTilemap
ldrb r0, [r4]
bl RemoveWindow
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0xFF
strb r0, [r4]
pop {r4}
@@ -3589,7 +3589,7 @@ sub_813EACC: @ 813EACC
cmp r0, 0xFF
beq _0813EB04
movs r1, 0
- bl sub_810F260
+ bl ClearDialogWindowAndFrameToTransparent
ldrb r0, [r4]
bl ClearWindowTilemap
ldrb r0, [r4]
@@ -3597,9 +3597,9 @@ sub_813EACC: @ 813EACC
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0xFF
strb r0, [r4]
_0813EB04:
@@ -3622,8 +3622,8 @@ sub_813EB10: @ 813EB10
_0813EB1C: .4byte gUnknown_203F38C
thumb_func_end sub_813EB10
- thumb_func_start sub_813EB20
-sub_813EB20: @ 813EB20
+ thumb_func_start DisplayItemMessageInBerryPouch
+DisplayItemMessageInBerryPouch: @ 813EB20
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -3656,7 +3656,7 @@ _0813EB44:
movs r3, 0xD
bl DisplayMessageAndContinueTask
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x10
pop {r3}
mov r8, r3
@@ -3666,7 +3666,7 @@ _0813EB44:
.align 2, 0
_0813EB74: .4byte gUnknown_203F38C
_0813EB78: .4byte gUnknown_8464400
- thumb_func_end sub_813EB20
+ thumb_func_end DisplayItemMessageInBerryPouch
thumb_func_start sub_813EB7C
sub_813EB7C: @ 813EB7C
diff --git a/asm/bike.s b/asm/bike.s
index c85537d3d..94583aa47 100644
--- a/asm/bike.s
+++ b/asm/bike.s
@@ -713,8 +713,8 @@ _080BD5C2:
bx r1
thumb_func_end player_should_look_direction_be_enforced_upon_movement
- thumb_func_start sub_80BD5C8
-sub_80BD5C8: @ 80BD5C8
+ thumb_func_start StartTransitionToFlipBikeState
+StartTransitionToFlipBikeState: @ 80BD5C8
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
@@ -730,7 +730,7 @@ sub_80BD5C8: @ 80BD5C8
movs r0, 0x1
bl SetPlayerAvatarTransitionFlags
bl sav1_reset_battle_music_maybe
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
b _080BD618
.align 2, 0
_080BD5F0: .4byte gUnknown_2036E2C
@@ -738,8 +738,8 @@ _080BD5F4: .4byte gPlayerAvatar
_080BD5F8:
adds r0, r2, 0
bl SetPlayerAvatarTransitionFlags
- movs r4, 0x8D
- lsls r4, 1
+ movs r4, 0x8D @ BGM_FRLG_BICYCLE
+ lsls r4, 1 @ BGM_FRLG_BICYCLE
adds r0, r4, 0
bl sub_8056124
cmp r0, 0
@@ -752,7 +752,7 @@ _080BD618:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_80BD5C8
+ thumb_func_end StartTransitionToFlipBikeState
thumb_func_start sub_80BD620
sub_80BD620: @ 80BD620
diff --git a/asm/braille_text.s b/asm/braille_text.s
deleted file mode 100644
index 2428f2984..000000000
--- a/asm/braille_text.s
+++ /dev/null
@@ -1,8 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/bug.s b/asm/bug.s
new file mode 100644
index 000000000..6970411d1
--- /dev/null
+++ b/asm/bug.s
@@ -0,0 +1,829 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80B3FAC
+sub_80B3FAC: @ 80B3FAC
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B3FD8
+ adds r0, r6, 0
+ movs r1, 0x2
+ bl StartSpriteAffineAnim
+ ldr r0, _080B3FD4 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0x4]
+ negs r1, r1
+ strh r1, [r0, 0x4]
+ ldrh r1, [r0]
+ negs r1, r1
+ strh r1, [r0]
+ b _080B4008
+ .align 2, 0
+_080B3FD4: .4byte gBattleAnimArgs
+_080B3FD8:
+ ldr r0, _080B406C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B4008
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldr r1, _080B4070 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+ ldrh r0, [r1, 0x6]
+ negs r0, r0
+ strh r0, [r1, 0x6]
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r1]
+_080B4008:
+ ldr r5, _080B406C @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074844
+ lsls r0, 24
+ ldr r4, _080B4070 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4]
+ adds r0, r1
+ strh r0, [r6, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074844
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r6, 0x22]
+ ldrh r0, [r4, 0x8]
+ strh r0, [r6, 0x2E]
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x4]
+ adds r0, r1
+ strh r0, [r6, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r4, [r4, 0x6]
+ adds r0, r4
+ strh r0, [r6, 0x36]
+ ldr r0, _080B4074 @ =sub_8075590
+ str r0, [r6, 0x1C]
+ ldr r1, _080B4078 @ =DestroyAnimSprite
+ adds r0, r6, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B406C: .4byte gBattleAnimTarget
+_080B4070: .4byte gBattleAnimArgs
+_080B4074: .4byte sub_8075590
+_080B4078: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B3FAC
+
+ thumb_func_start sub_80B407C
+sub_80B407C: @ 80B407C
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B40A0
+ ldr r1, _080B409C @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r1]
+ adds r0, r6, 0
+ movs r1, 0x2
+ bl StartSpriteAffineAnim
+ b _080B40BC
+ .align 2, 0
+_080B409C: .4byte gBattleAnimArgs
+_080B40A0:
+ ldr r0, _080B4118 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B40BC
+ ldr r0, _080B411C @ =gBattleAnimArgs
+ ldrh r1, [r0, 0x2]
+ negs r1, r1
+ strh r1, [r0, 0x2]
+ ldrh r1, [r0]
+ negs r1, r1
+ strh r1, [r0]
+_080B40BC:
+ ldr r5, _080B4118 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074844
+ lsls r0, 24
+ ldr r4, _080B411C @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4]
+ adds r0, r1
+ strh r0, [r6, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074844
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r6, 0x22]
+ ldrh r0, [r4, 0x4]
+ strh r0, [r6, 0x2E]
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x36]
+ ldr r0, _080B4120 @ =sub_8075590
+ str r0, [r6, 0x1C]
+ ldr r1, _080B4124 @ =DestroyAnimSprite
+ adds r0, r6, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B4118: .4byte gBattleAnimTarget
+_080B411C: .4byte gBattleAnimArgs
+_080B4120: .4byte sub_8075590
+_080B4124: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B407C
+
+ thumb_func_start sub_80B4128
+sub_80B4128: @ 80B4128
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B4144
+ ldr r0, _080B4184 @ =gBattleAnimArgs
+ movs r2, 0x4
+ ldrsh r1, [r0, r2]
+ lsrs r2, r1, 31
+ adds r1, r2
+ asrs r1, 1
+ strh r1, [r0, 0x4]
+_080B4144:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r1, _080B4184 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ movs r2, 0x8
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080B418C
+ ldr r4, _080B4188 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ b _080B419E
+ .align 2, 0
+_080B4184: .4byte gBattleAnimArgs
+_080B4188: .4byte gBattleAnimTarget
+_080B418C:
+ ldr r0, _080B41B4 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r2, r5, 0
+ adds r2, 0x32
+ adds r3, r5, 0
+ adds r3, 0x36
+ movs r1, 0x1
+ bl sub_8076D9C
+_080B419E:
+ adds r0, r5, 0
+ bl sub_8075678
+ ldr r0, _080B41B8 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x6]
+ strh r0, [r5, 0x38]
+ ldr r0, _080B41BC @ =sub_80B41C0
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B41B4: .4byte gBattleAnimTarget
+_080B41B8: .4byte gBattleAnimArgs
+_080B41BC: .4byte sub_80B41C0
+ thumb_func_end sub_80B4128
+
+ thumb_func_start sub_80B41C0
+sub_80B41C0: @ 80B41C0
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B41D6
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ b _080B41F2
+_080B41D6:
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x3A]
+ adds r0, 0xD
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3A]
+_080B41F2:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B41C0
+
+ thumb_func_start sub_80B41F8
+sub_80B41F8: @ 80B41F8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080B4228 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r2, r4, 0
+ adds r2, 0x20
+ adds r3, r4, 0
+ adds r3, 0x22
+ movs r1, 0
+ bl sub_8076D9C
+ ldr r0, _080B422C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B4234
+ ldr r0, _080B4230 @ =gBattleAnimArgs
+ ldrh r1, [r4, 0x20]
+ ldrh r2, [r0]
+ subs r1, r2
+ strh r1, [r4, 0x20]
+ b _080B4240
+ .align 2, 0
+_080B4228: .4byte gBattleAnimTarget
+_080B422C: .4byte gBattleAnimAttacker
+_080B4230: .4byte gBattleAnimArgs
+_080B4234:
+ ldr r1, _080B4268 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ adds r0, r1, 0
+_080B4240:
+ ldrh r0, [r0, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r0, _080B426C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B425C
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x8
+ strh r0, [r4, 0x22]
+_080B425C:
+ ldr r0, _080B4270 @ =sub_80B4274
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B4268: .4byte gBattleAnimArgs
+_080B426C: .4byte gBattleAnimTarget
+_080B4270: .4byte sub_80B4274
+ thumb_func_end sub_80B41F8
+
+ thumb_func_start sub_80B4274
+sub_80B4274: @ 80B4274
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080B42A8
+ movs r0, 0
+ strh r0, [r3, 0x2E]
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+_080B42A8:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x33
+ bne _080B42BC
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080B42BC:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B4274
+
+ thumb_func_start sub_80B42C0
+sub_80B42C0: @ 80B42C0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0x10
+ bl SetGpuReg
+ movs r0, 0x10
+ strh r0, [r4, 0x2E]
+ ldr r0, _080B42E4 @ =sub_80B42E8
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B42E4: .4byte sub_80B42E8
+ thumb_func_end sub_80B42C0
+
+ thumb_func_start sub_80B42E8
+sub_80B42E8: @ 80B42E8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x32]
+ movs r2, 0x32
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x13
+ bgt _080B42FC
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x32]
+ b _080B433A
+_080B42FC:
+ ldrh r1, [r4, 0x30]
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B433A
+ ldrh r1, [r4, 0x2E]
+ subs r1, 0x1
+ strh r1, [r4, 0x2E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B433A
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080B4340 @ =sub_80B4344
+ str r0, [r4, 0x1C]
+_080B433A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B4340: .4byte sub_80B4344
+ thumb_func_end sub_80B42E8
+
+ thumb_func_start sub_80B4344
+sub_80B4344: @ 80B4344
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B4344
+
+ thumb_func_start sub_80B4364
+sub_80B4364: @ 80B4364
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r7, r0, 0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B4384
+ ldr r1, _080B4380 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+ b _080B43A6
+ .align 2, 0
+_080B4380: .4byte gBattleAnimArgs
+_080B4384:
+ ldr r0, _080B4480 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B43A6
+ ldr r1, _080B4484 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+ ldrh r0, [r1, 0x6]
+ negs r0, r0
+ strh r0, [r1, 0x6]
+_080B43A6:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B43F6
+ ldr r0, _080B4480 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ adds r4, r0, 0
+ ldr r5, _080B4488 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ bl GetBattlerSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ bne _080B43F6
+ ldrb r0, [r5]
+ bl GetBattlerPosition
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B43E4
+ ldrb r0, [r5]
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080B43F6
+_080B43E4:
+ ldr r0, _080B4484 @ =gBattleAnimArgs
+ movs r2, 0x4
+ ldrsh r1, [r0, r2]
+ negs r1, r1
+ strh r1, [r0, 0x4]
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ negs r1, r1
+ strh r1, [r0]
+_080B43F6:
+ adds r0, r7, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r5, _080B4488 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r4, r0, 0
+ lsls r4, 24
+ ldr r6, _080B4484 @ =gBattleAnimArgs
+ lsrs r4, 24
+ ldrh r0, [r6, 0x4]
+ adds r4, r0
+ lsls r4, 16
+ lsrs r4, 16
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r6, 0x6]
+ adds r1, r2
+ lsls r1, 16
+ ldrh r2, [r7, 0x20]
+ lsls r0, r4, 16
+ asrs r0, 16
+ subs r0, r2
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r2, [r7, 0x22]
+ lsrs r5, r1, 16
+ asrs r1, 16
+ subs r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl sub_8075B30
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 16
+ movs r3, 0x80
+ lsls r3, 1
+ str r0, [sp]
+ adds r0, r7, 0
+ movs r1, 0
+ adds r2, r3, 0
+ bl sub_8075A1C
+ ldrh r0, [r6, 0x8]
+ strh r0, [r7, 0x2E]
+ strh r4, [r7, 0x32]
+ strh r5, [r7, 0x36]
+ ldr r0, _080B448C @ =sub_8075590
+ str r0, [r7, 0x1C]
+ ldr r1, _080B4490 @ =DestroyAnimSprite
+ adds r0, r7, 0
+ bl StoreSpriteCallbackInData6
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B4480: .4byte gBattleAnimAttacker
+_080B4484: .4byte gBattleAnimArgs
+_080B4488: .4byte gBattleAnimTarget
+_080B448C: .4byte sub_8075590
+_080B4490: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B4364
+
+ thumb_func_start sub_80B4494
+sub_80B4494: @ 80B4494
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080B4500 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B44B4
+ ldr r1, _080B4504 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080B44B4:
+ ldr r4, _080B4504 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x8]
+ strh r0, [r6, 0x2E]
+ ldr r5, _080B4508 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x4]
+ adds r0, r1
+ strh r0, [r6, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x6]
+ adds r0, r1
+ strh r0, [r6, 0x36]
+ ldrh r0, [r4, 0xA]
+ strh r0, [r6, 0x38]
+ adds r0, r6, 0
+ bl sub_8075068
+ ldr r0, _080B450C @ =sub_80B4510
+ str r0, [r6, 0x1C]
+ adds r2, r6, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B4500: .4byte gBattleAnimAttacker
+_080B4504: .4byte gBattleAnimArgs
+_080B4508: .4byte gBattleAnimTarget
+_080B450C: .4byte sub_80B4510
+ thumb_func_end sub_80B4494
+
+ thumb_func_start sub_80B4510
+sub_80B4510: @ 80B4510
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x14
+ adds r4, r0, 0
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r0
+ strb r1, [r2]
+ adds r0, r4, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B453C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ b _080B45CC
+_080B453C:
+ movs r0, 0x2E
+ adds r0, r4
+ mov r8, r0
+ ldrh r7, [r4, 0x20]
+ ldrh r5, [r4, 0x24]
+ ldrh r1, [r4, 0x22]
+ mov r12, r1
+ ldrh r6, [r4, 0x26]
+ mov r2, r8
+ add r1, sp, 0x4
+ movs r3, 0x7
+_080B4552:
+ ldrh r0, [r2]
+ strh r0, [r1]
+ adds r2, 0x2
+ adds r1, 0x2
+ subs r3, 0x1
+ cmp r3, 0
+ bge _080B4552
+ adds r0, r7, r5
+ lsls r0, 16
+ lsrs r5, r0, 16
+ mov r2, r12
+ adds r0, r2, r6
+ lsls r0, 16
+ lsrs r6, r0, 16
+ adds r0, r4, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B45CC
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ lsls r1, r5, 16
+ asrs r1, 16
+ subs r0, r1
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r1, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r1, r2
+ lsls r2, r6, 16
+ asrs r2, 16
+ subs r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl sub_8075B30
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 16
+ movs r3, 0x80
+ lsls r3, 1
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r1, 0
+ adds r2, r3, 0
+ bl sub_8075A1C
+ add r2, sp, 0x4
+ mov r1, r8
+ movs r3, 0x7
+_080B45BE:
+ ldrh r0, [r2]
+ strh r0, [r1]
+ adds r2, 0x2
+ adds r1, 0x2
+ subs r3, 0x1
+ cmp r3, 0
+ bge _080B45BE
+_080B45CC:
+ add sp, 0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B4510
+
+ thumb_func_start sub_80B45D8
+sub_80B45D8: @ 80B45D8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080B45EC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B45F4
+ ldr r4, _080B45F0 @ =gBattleAnimAttacker
+ b _080B45F6
+ .align 2, 0
+_080B45EC: .4byte gBattleAnimArgs
+_080B45F0: .4byte gBattleAnimAttacker
+_080B45F4:
+ ldr r4, _080B4628 @ =gBattleAnimTarget
+_080B45F6:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x12
+ strh r0, [r5, 0x22]
+ ldr r1, _080B462C @ =move_anim_8074EE0
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080B4630 @ =sub_8074F50
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B4628: .4byte gBattleAnimTarget
+_080B462C: .4byte move_anim_8074EE0
+_080B4630: .4byte sub_8074F50
+ thumb_func_end sub_80B45D8
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/buy_menu_helpers.s b/asm/buy_menu_helpers.s
deleted file mode 100644
index 04caf30a4..000000000
--- a/asm/buy_menu_helpers.s
+++ /dev/null
@@ -1,220 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_813F66C
-sub_813F66C: @ 813F66C
- push {r4,lr}
- adds r4, r0, 0
- cmp r4, 0x1
- beq _0813F680
- ldr r0, _0813F67C @ =gUnknown_8464804
- bl InitWindows
- b _0813F686
- .align 2, 0
-_0813F67C: .4byte gUnknown_8464804
-_0813F680:
- ldr r0, _0813F6CC @ =gUnknown_846483C
- bl InitWindows
-_0813F686:
- bl DeactivateAllTextPrinters
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xD0
- bl sub_815001C
- movs r0, 0
- movs r1, 0x13
- movs r2, 0xE0
- bl sub_814FEAC
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xF0
- bl sub_814FF2C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x4
- bl PutWindowTilemap
- movs r0, 0x5
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0813F6C4
- movs r0, 0x6
- bl PutWindowTilemap
-_0813F6C4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813F6CC: .4byte gUnknown_846483C
- thumb_func_end sub_813F66C
-
- thumb_func_start sub_813F6D0
-sub_813F6D0: @ 813F6D0
- push {lr}
- ldr r0, _0813F6F0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0xA4
- lsls r1, 2
- adds r0, r1
- bl GetMoney
- adds r3, r0, 0
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xF
- bl PrintMoneyAmountInMoneyBoxWithBorder
- pop {r0}
- bx r0
- .align 2, 0
-_0813F6F0: .4byte gSaveBlock1Ptr
- thumb_func_end sub_813F6D0
-
- thumb_func_start sub_813F6F4
-sub_813F6F4: @ 813F6F4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r3
- ldr r3, [sp, 0x30]
- ldr r4, [sp, 0x34]
- ldr r6, [sp, 0x38]
- ldr r5, [sp, 0x3C]
- mov r8, r5
- ldr r5, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r7, r9
- lsls r7, 24
- lsrs r7, 24
- mov r9, r7
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r6, [sp, 0x4]
- lsls r4, r5, 1
- adds r4, r5
- ldr r5, _0813F758 @ =gUnknown_8464884
- adds r4, r5
- str r4, [sp, 0x8]
- mov r4, r8
- lsls r4, 24
- asrs r4, 24
- str r4, [sp, 0xC]
- str r2, [sp, 0x10]
- mov r2, r9
- bl AddTextPrinterParametrized2
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813F758: .4byte gUnknown_8464884
- thumb_func_end sub_813F6F4
-
- thumb_func_start sub_813F75C
-sub_813F75C: @ 813F75C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x10
- adds r5, r0, 0
- adds r6, r1, 0
- mov r8, r2
- lsls r5, 24
- lsrs r5, 24
- bl sub_809B56C
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl GetTextSpeedSetting
- lsls r0, 24
- lsrs r0, 24
- str r4, [sp]
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- mov r0, r8
- str r0, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0x2
- movs r2, 0x13
- movs r3, 0xE
- bl DisplayMessageAndContinueTask
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_813F75C
-
- thumb_func_start sub_813F7A8
-sub_813F7A8: @ 813F7A8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x1
- movs r3, 0xD
- bl SetWindowBorderStyle
- pop {r0}
- bx r0
- thumb_func_end sub_813F7A8
-
- thumb_func_start sub_813F7C0
-sub_813F7C0: @ 813F7C0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0xA
- movs r3, 0xF
- bl SetWindowBorderStyle
- pop {r0}
- bx r0
- thumb_func_end sub_813F7C0
-
- thumb_func_start sub_813F7D8
-sub_813F7D8: @ 813F7D8
- push {lr}
- sub sp, 0x10
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813F800 @ =gUnknown_846487C
- movs r2, 0x2
- str r2, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r2, 0xD
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- movs r2, 0x2
- movs r3, 0
- bl CreateYesNoMenuWithCallbacks
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_0813F800: .4byte gUnknown_846487C
- thumb_func_end sub_813F7D8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/cable_car_util.s b/asm/cable_car_util.s
deleted file mode 100644
index 4a8f99176..000000000
--- a/asm/cable_car_util.s
+++ /dev/null
@@ -1,162 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80D9614
-sub_80D9614: @ 80D9614
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r0
- ldr r0, [sp, 0x24]
- ldr r4, [sp, 0x28]
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- lsls r3, 24
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- movs r0, 0
- lsrs r4, r3, 24
- cmp r0, r8
- bcs _080D968E
-_080D9646:
- ldr r2, [sp]
- movs r3, 0
- adds r6, r4, 0x1
- adds r0, 0x1
- mov r12, r0
- cmp r3, r7
- bcs _080D9678
- lsls r5, r4, 6
-_080D9656:
- lsls r0, r2, 1
- adds r0, r5
- add r0, r10
- mov r1, r9
- strh r1, [r0]
- adds r1, r2, 0x1
- adds r0, r1, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r1, r0
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r7
- bcc _080D9656
-_080D9678:
- adds r0, r6, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r6, r0
- lsls r0, 24
- lsrs r4, r0, 24
- mov r1, r12
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, r8
- bcc _080D9646
-_080D968E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80D9614
-
- thumb_func_start sub_80D96A0
-sub_80D96A0: @ 80D96A0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r0
- ldr r0, [sp, 0x24]
- ldr r4, [sp, 0x28]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- lsls r3, 24
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- lsls r4, 24
- lsrs r4, 24
- mov r9, r4
- movs r0, 0
- adds r5, r1, 0
- lsrs r4, r3, 24
- cmp r0, r9
- bcs _080D971A
-_080D96D0:
- ldr r2, [sp]
- movs r3, 0
- adds r7, r4, 0x1
- adds r0, 0x1
- mov r8, r0
- cmp r3, r12
- bcs _080D9704
- lsls r6, r4, 6
-_080D96E0:
- lsls r0, r2, 1
- adds r0, r6
- add r0, r10
- ldrh r1, [r5]
- strh r1, [r0]
- adds r5, 0x2
- adds r1, r2, 0x1
- adds r0, r1, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r1, r0
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r12
- bcc _080D96E0
-_080D9704:
- adds r0, r7, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r7, r0
- lsls r0, 24
- lsrs r4, r0, 24
- mov r1, r8
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, r9
- bcc _080D96D0
-_080D971A:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80D96A0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 91ddde46d..28cbfc49c 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -55,7 +55,7 @@ sub_808078C: @ 808078C
lsrs r4, 24
adds r0, r4, 0
movs r1, 0
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
ldr r5, _080807E0 @ =gStringVar4
ldr r1, _080807E4 @ =gUnknown_841DF82
adds r0, r5, 0
@@ -943,7 +943,7 @@ _08080E9A:
lsls r1, r5, 8
ldr r0, _08080ED4 @ =gBlockRecvBuffer
adds r1, r0
- ldr r0, _08080ED8 @ =gUnknown_2039624
+ ldr r0, _08080ED8 @ =gTrainerCards
lsls r4, r5, 1
adds r4, r5
lsls r4, 5
@@ -958,12 +958,12 @@ _08080E9A:
.align 2, 0
_08080ED0: .4byte gLinkPlayers
_08080ED4: .4byte gBlockRecvBuffer
-_08080ED8: .4byte gUnknown_2039624
+_08080ED8: .4byte gTrainerCards
_08080EDC:
lsls r1, r5, 8
ldr r0, _08080F3C @ =gBlockRecvBuffer
adds r1, r0
- ldr r2, _08080F40 @ =gUnknown_2039624
+ ldr r2, _08080F40 @ =gTrainerCards
lsls r0, r5, 1
adds r0, r5
lsls r0, 5
@@ -1004,7 +1004,7 @@ _08080EF8:
b _08080F66
.align 2, 0
_08080F3C: .4byte gBlockRecvBuffer
-_08080F40: .4byte gUnknown_2039624
+_08080F40: .4byte gTrainerCards
_08080F44: .4byte gSpecialVar_Result
_08080F48: .4byte gLinkType
_08080F4C: .4byte 0x00004411
@@ -1935,12 +1935,12 @@ sub_8081668: @ 8081668
ldrb r0, [r0]
movs r5, 0x1
eors r0, r5
- bl sub_80CD98C
+ bl TryRecordLinkBattleOutcome
ldr r0, _080816C0 @ =gWirelessCommType
ldrb r0, [r0]
cmp r0, 0
beq _0808170A
- ldr r0, _080816C4 @ =gUnknown_2023E8A
+ ldr r0, _080816C4 @ =gBattleOutcome
ldrb r0, [r0]
cmp r0, 0x1
beq _080816C8
@@ -1953,7 +1953,7 @@ _080816B4: .4byte 0x0000ffdf
_080816B8: .4byte gSpecialVar_0x8004
_080816BC: .4byte gUnknown_300502C
_080816C0: .4byte gWirelessCommType
-_080816C4: .4byte gUnknown_2023E8A
+_080816C4: .4byte gBattleOutcome
_080816C8:
ldr r4, _080816E8 @ =gLinkPlayers
bl GetMultiplayerId
@@ -2387,13 +2387,13 @@ sp02A_crash_sound: @ 8081A1C
push {lr}
ldr r0, _08081A2C @ =gSpecialVar_0x8006
ldrb r0, [r0]
- ldr r1, _08081A30 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r1, _08081A30 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl sub_808B700
pop {r0}
bx r0
.align 2, 0
_08081A2C: .4byte gSpecialVar_0x8006
-_08081A30: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_08081A30: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sp02A_crash_sound
thumb_func_start sub_8081A34
diff --git a/asm/cereader_tool.s b/asm/cereader_tool.s
deleted file mode 100644
index 749cb5303..000000000
--- a/asm/cereader_tool.s
+++ /dev/null
@@ -1,196 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_815D654
-sub_815D654: @ 815D654
- push {lr}
- ldr r0, _0815D674 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _0815D678 @ =0x00003d41
- adds r0, r1
- ldrb r1, [r0]
- adds r2, r1, 0x1
- adds r0, r2, 0
- asrs r0, 8
- lsls r0, 8
- subs r0, r2, r0
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0815D674: .4byte gSaveBlock1Ptr
-_0815D678: .4byte 0x00003d41
- thumb_func_end sub_815D654
-
- thumb_func_start sub_815D67C
-sub_815D67C: @ 815D67C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrb r0, [r5, 0x1]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x7
- bhi _0815D6AA
- ldrb r0, [r5, 0x2]
- cmp r0, 0x2
- bhi _0815D6AA
- movs r4, 0xF7
- lsls r4, 2
- adds r0, r5, 0
- adds r1, r4, 0
- bl CalcByteArraySum
- adds r4, r5, r4
- ldr r1, [r4]
- cmp r0, r1
- bne _0815D6AA
- movs r0, 0x1
- b _0815D6AC
-_0815D6AA:
- movs r0, 0
-_0815D6AC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_815D67C
-
- thumb_func_start sub_815D6B4
-sub_815D6B4: @ 815D6B4
- push {r4-r7,lr}
- adds r7, r0, 0
- ldrb r6, [r7]
- subs r0, r6, 0x1
- cmp r0, 0x7
- bhi _0815D6F8
- movs r5, 0
- cmp r5, r6
- bcs _0815D6E0
- adds r4, r7, 0
- adds r4, 0x8
-_0815D6CA:
- adds r0, r4, 0
- bl sub_815D67C
- cmp r0, 0
- beq _0815D6F8
- movs r0, 0xF8
- lsls r0, 2
- adds r4, r0
- adds r5, 0x1
- cmp r5, r6
- bcc _0815D6CA
-_0815D6E0:
- adds r0, r7, 0
- adds r0, 0x8
- lsls r1, r6, 5
- subs r1, r6
- lsls r1, 5
- bl CalcByteArraySum
- ldr r1, [r7, 0x4]
- cmp r0, r1
- bne _0815D6F8
- movs r0, 0x1
- b _0815D6FA
-_0815D6F8:
- movs r0, 0
-_0815D6FA:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_815D6B4
-
- thumb_func_start sub_815D700
-sub_815D700: @ 815D700
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldrh r0, [r5, 0x2]
- cmp r0, 0
- beq _0815D718
- ldr r0, _0815D77C @ =gUnknown_8479CD8 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/cereader_tool.c"
- ldr r2, _0815D780 @ =gUnknown_8479D10 "ttdata->dummy == 0"
- movs r1, 0xC6
- movs r3, 0x1
- bl AGBAssert
-_0815D718:
- ldrb r0, [r5, 0x1]
- cmp r0, 0
- beq _0815D72A
- ldr r0, _0815D77C @ =gUnknown_8479CD8 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/cereader_tool.c"
- ldr r2, _0815D784 @ =gUnknown_8479D24 "ttdata->id == 0"
- movs r1, 0xC7
- movs r3, 0x1
- bl AGBAssert
-_0815D72A:
- movs r6, 0x80
- lsls r6, 5
- adds r0, r4, 0
- movs r1, 0
- adds r2, r6, 0
- bl memset
- ldr r2, _0815D788 @ =0x00000f88
- adds r0, r4, 0
- adds r1, r5, 0
- bl memcpy
- bl sub_815D654
- strb r0, [r4, 0x1]
- movs r0, 0x1E
- adds r1, r4, 0
- bl sub_80DA5E0
- cmp r0, 0x1
- bne _0815D78C
- adds r0, r4, 0
- movs r1, 0
- adds r2, r6, 0
- bl memset
- ldr r0, _0815D788 @ =0x00000f88
- adds r1, r5, r0
- movs r2, 0xF8
- lsls r2, 4
- adds r0, r4, 0
- bl memcpy
- movs r0, 0x1F
- adds r1, r4, 0
- bl sub_80DA5E0
- cmp r0, 0x1
- bne _0815D78C
- movs r0, 0x1
- b _0815D78E
- .align 2, 0
-_0815D77C: .4byte gUnknown_8479CD8
-_0815D780: .4byte gUnknown_8479D10
-_0815D784: .4byte gUnknown_8479D24
-_0815D788: .4byte 0x00000f88
-_0815D78C:
- movs r0, 0
-_0815D78E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_815D700
-
- thumb_func_start sub_815D794
-sub_815D794: @ 815D794
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x80
- lsls r0, 5
- bl AllocZeroed
- adds r5, r0, 0
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_815D700
- adds r4, r0, 0
- adds r0, r5, 0
- bl Free
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_815D794
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/clear_save_data_screen.s b/asm/clear_save_data_screen.s
index c92e072cb..f6cd11410 100644
--- a/asm/clear_save_data_screen.s
+++ b/asm/clear_save_data_screen.s
@@ -109,18 +109,18 @@ _080F564A:
movs r0, 0
movs r1, 0x1
movs r2, 0xF0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
movs r0, 0x1
movs r1, 0x1
movs r2, 0xF0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
b _080F56E2
_080F5660:
movs r0, 0x1
movs r1, 0x1
movs r2, 0x1
movs r3, 0xF
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
movs r0, 0x1
str r0, [sp]
str r0, [sp, 0x4]
@@ -134,7 +134,7 @@ _080F5660:
movs r1, 0x2
movs r2, 0
movs r3, 0x3
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
movs r0, 0x1
movs r1, 0x2
bl CopyWindowToVram
@@ -241,7 +241,7 @@ _080F5744:
movs r1, 0x2
movs r2, 0
movs r3, 0x3
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
movs r0, 0x1
movs r1, 0x3
bl CopyWindowToVram
@@ -304,7 +304,7 @@ _080F57D4:
lsrs r4, r0, 24
cmp r4, 0
bne _080F57FE
- bl sub_81100E8
+ bl DestroyYesNoMenu
adds r0, r6, 0
bl DestroyTask
bl FreeAllWindowBuffers
diff --git a/asm/credits.s b/asm/credits.s
index d6b72605b..e52275e77 100644
--- a/asm/credits.s
+++ b/asm/credits.s
@@ -422,7 +422,7 @@ _080F3D0A:
movs r1, 0x1
movs r2, 0x8
movs r3, 0x29
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
ldr r1, [r7]
movs r0, 0x5
b _080F413C
@@ -649,7 +649,7 @@ _080F3EB4:
movs r1, 0x1
movs r2, 0x2
movs r3, 0x6
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
ldr r1, [r7]
movs r0, 0x8
b _080F3FB8
@@ -696,7 +696,7 @@ _080F3F24:
movs r1, 0x2
movs r2, 0x8
movs r3, 0x6
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
ldr r1, [r7]
movs r0, 0x9
b _080F3FB8
@@ -1987,7 +1987,7 @@ _080F49D8:
ands r1, r3
orrs r1, r2
str r1, [r0, 0x4]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4A1C @ =gUnknown_8410E10
b _080F4A36
.align 2, 0
@@ -2005,7 +2005,7 @@ _080F4A20:
strh r1, [r0, 0x4]
ldrh r1, [r6, 0x2]
strh r1, [r0, 0x6]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4A48 @ =gUnknown_8411BF8
_080F4A36:
movs r1, 0xF8
@@ -2025,7 +2025,7 @@ _080F4A4C:
strh r1, [r0, 0x4]
ldrh r1, [r6, 0x2]
strh r1, [r0, 0x6]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4ADC @ =gUnknown_84129A0
movs r1, 0xF8
lsls r1, 1
@@ -2107,7 +2107,7 @@ _080F4AFE:
strh r1, [r0, 0x4]
ldrh r1, [r6, 0x8]
strh r1, [r0, 0x6]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4B1C @ =gUnknown_8413318
b _080F4B8A
.align 2, 0
@@ -2122,7 +2122,7 @@ _080F4B20:
strh r1, [r0, 0x4]
ldrh r1, [r6, 0x8]
strh r1, [r0, 0x6]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4B4C @ =gUnknown_8413318
movs r1, 0xF0
lsls r1, 1
@@ -2144,7 +2144,7 @@ _080F4B54:
strh r1, [r0, 0x4]
ldrh r1, [r6, 0x8]
strh r1, [r0, 0x6]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4B70 @ =gUnknown_8413854
b _080F4B8A
.align 2, 0
@@ -2159,7 +2159,7 @@ _080F4B74:
strh r1, [r0, 0x4]
ldrh r1, [r6, 0x8]
strh r1, [r0, 0x6]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4BF0 @ =gUnknown_8413D98
_080F4B8A:
movs r1, 0xF0
diff --git a/asm/dark.s b/asm/dark.s
new file mode 100644
index 000000000..a232c19ad
--- /dev/null
+++ b/asm/dark.s
@@ -0,0 +1,2323 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80B78E0
+sub_80B78E0: @ 80B78E0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080B791C @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _080B7920 @ =gBattleAnimArgs
+ ldrh r1, [r1]
+ strh r1, [r0, 0x8]
+ ldr r1, _080B7924 @ =gBattleAnimAttacker
+ ldrb r4, [r1]
+ movs r1, 0x10
+ strh r1, [r0, 0xA]
+ movs r0, 0x52
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080B792C
+ ldr r1, _080B7928 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ b _080B7934
+ .align 2, 0
+_080B791C: .4byte gTasks
+_080B7920: .4byte gBattleAnimArgs
+_080B7924: .4byte gBattleAnimAttacker
+_080B7928: .4byte 0x00003f42
+_080B792C:
+ ldr r1, _080B7948 @ =0x00003f44
+ movs r0, 0x50
+ bl SetGpuReg
+_080B7934:
+ ldr r0, _080B794C @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080B7950 @ =sub_80B7954
+ str r0, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7948: .4byte 0x00003f44
+_080B794C: .4byte gTasks
+_080B7950: .4byte sub_80B7954
+ thumb_func_end sub_80B78E0
+
+ thumb_func_start sub_80B7954
+sub_80B7954: @ 80B7954
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080B79C0 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r6, r0, r1
+ ldrh r0, [r6, 0xA]
+ lsrs r4, r0, 8
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r2, 0xC
+ ldrsh r0, [r6, r2]
+ ldrb r2, [r6, 0x8]
+ cmp r0, r2
+ bne _080B79D0
+ adds r4, 0x1
+ lsls r4, 24
+ lsrs r4, 24
+ subs r0, r1, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r4, 8
+ orrs r1, r0
+ movs r5, 0
+ strh r1, [r6, 0xA]
+ ldrh r1, [r6, 0xA]
+ movs r0, 0x52
+ bl SetGpuReg
+ strh r5, [r6, 0xC]
+ cmp r4, 0x10
+ bne _080B79D6
+ ldr r2, _080B79C4 @ =gSprites
+ ldr r1, _080B79C8 @ =gBattlerSpriteIds
+ ldr r0, _080B79CC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+ b _080B79D6
+ .align 2, 0
+_080B79C0: .4byte gTasks
+_080B79C4: .4byte gSprites
+_080B79C8: .4byte gBattlerSpriteIds
+_080B79CC: .4byte gBattleAnimAttacker
+_080B79D0:
+ ldrh r0, [r6, 0xC]
+ adds r0, 0x1
+ strh r0, [r6, 0xC]
+_080B79D6:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B7954
+
+ thumb_func_start sub_80B79DC
+sub_80B79DC: @ 80B79DC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080B7A08 @ =gTasks
+ lsls r2, r0, 2
+ adds r2, r0
+ lsls r2, 3
+ adds r2, r1
+ ldr r0, _080B7A0C @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r2, 0x8]
+ movs r1, 0x80
+ lsls r1, 5
+ strh r1, [r2, 0xA]
+ ldr r0, _080B7A10 @ =sub_80B7A14
+ str r0, [r2]
+ movs r0, 0x52
+ bl SetGpuReg
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7A08: .4byte gTasks
+_080B7A0C: .4byte gBattleAnimArgs
+_080B7A10: .4byte sub_80B7A14
+ thumb_func_end sub_80B79DC
+
+ thumb_func_start sub_80B7A14
+sub_80B7A14: @ 80B7A14
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080B7A70 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r6, r0, r1
+ ldrh r0, [r6, 0xA]
+ lsrs r4, r0, 8
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r2, 0xC
+ ldrsh r0, [r6, r2]
+ ldrb r2, [r6, 0x8]
+ cmp r0, r2
+ bne _080B7A74
+ subs r4, 0x1
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r4, 8
+ orrs r1, r0
+ movs r5, 0
+ strh r1, [r6, 0xA]
+ ldrh r1, [r6, 0xA]
+ movs r0, 0x52
+ bl SetGpuReg
+ strh r5, [r6, 0xC]
+ cmp r4, 0
+ bne _080B7A7A
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+ b _080B7A7A
+ .align 2, 0
+_080B7A70: .4byte gTasks
+_080B7A74:
+ ldrh r0, [r6, 0xC]
+ adds r0, 0x1
+ strh r0, [r6, 0xC]
+_080B7A7A:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B7A14
+
+ thumb_func_start sub_80B7A80
+sub_80B7A80: @ 80B7A80
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r0, _080B7AAC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080B7AB4
+ ldr r1, _080B7AB0 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ b _080B7ABC
+ .align 2, 0
+_080B7AAC: .4byte gBattleAnimAttacker
+_080B7AB0: .4byte 0x00003f42
+_080B7AB4:
+ ldr r1, _080B7AC8 @ =0x00003f44
+ movs r0, 0x50
+ bl SetGpuReg
+_080B7ABC:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7AC8: .4byte 0x00003f44
+ thumb_func_end sub_80B7A80
+
+ thumb_func_start sub_80B7ACC
+sub_80B7ACC: @ 80B7ACC
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r6, _080B7B38 @ =gBattleAnimTarget
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x30]
+ ldr r5, _080B7B3C @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x34]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ movs r0, 0x7E
+ strh r0, [r4, 0x2E]
+ adds r0, r4, 0
+ bl sub_80754B8
+ ldrh r0, [r4, 0x30]
+ negs r0, r0
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x32]
+ negs r0, r0
+ strh r0, [r4, 0x36]
+ ldr r0, _080B7B40 @ =0x0000ffd8
+ strh r0, [r4, 0x3A]
+ ldr r1, _080B7B44 @ =sub_80B7B48
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7B38: .4byte gBattleAnimTarget
+_080B7B3C: .4byte gBattleAnimAttacker
+_080B7B40: .4byte 0x0000ffd8
+_080B7B44: .4byte sub_80B7B48
+ thumb_func_end sub_80B7ACC
+
+ thumb_func_start sub_80B7B48
+sub_80B7B48: @ 80B7B48
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldrh r5, [r4, 0x30]
+ ldrh r0, [r4, 0x34]
+ adds r2, r5, r0
+ strh r2, [r4, 0x34]
+ ldrh r3, [r4, 0x32]
+ ldrh r6, [r4, 0x36]
+ adds r1, r3, r6
+ strh r1, [r4, 0x36]
+ lsls r0, r2, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ lsls r0, r1, 16
+ asrs r0, 24
+ strh r0, [r4, 0x26]
+ movs r6, 0x3C
+ ldrsh r0, [r4, r6]
+ cmp r0, 0
+ bne _080B7B8A
+ adds r0, r2, r5
+ strh r0, [r4, 0x34]
+ adds r1, r3
+ strh r1, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ lsls r1, 16
+ asrs r1, 24
+ strh r1, [r4, 0x26]
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+_080B7B8A:
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r2, 0x3A
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r6, [r4, 0x26]
+ adds r0, r6
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x3
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ cmp r0, 0x7F
+ ble _080B7BBA
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x3A]
+ adds r0, 0x14
+ strh r0, [r4, 0x3A]
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x1
+ strh r0, [r4, 0x3C]
+_080B7BBA:
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080B7BCC
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B7BCC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B7B48
+
+ thumb_func_start sub_80B7BD4
+sub_80B7BD4: @ 80B7BD4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080B7C08 @ =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, _080B7C0C @ =sub_80B7C10
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7C08: .4byte gBattleAnimArgs
+_080B7C0C: .4byte sub_80B7C10
+ thumb_func_end sub_80B7BD4
+
+ thumb_func_start sub_80B7C10
+sub_80B7C10: @ 80B7C10
+ 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 _080B7C46
+ ldr r0, _080B7C4C @ =sub_80B7C50
+ str r0, [r2, 0x1C]
+_080B7C46:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7C4C: .4byte sub_80B7C50
+ thumb_func_end sub_80B7C10
+
+ thumb_func_start sub_80B7C50
+sub_80B7C50: @ 80B7C50
+ 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 _080B7C82
+ adds r0, r3, 0
+ bl move_anim_8074EE0
+_080B7C82:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B7C50
+
+ thumb_func_start sub_80B7C88
+sub_80B7C88: @ 80B7C88
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ ldr r0, _080B7C9C @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ adds r3, r0, 0
+ cmp r1, 0
+ bne _080B7CA4
+ ldr r0, _080B7CA0 @ =gBattleAnimAttacker
+ b _080B7CA6
+ .align 2, 0
+_080B7C9C: .4byte gBattleAnimArgs
+_080B7CA0: .4byte gBattleAnimAttacker
+_080B7CA4:
+ ldr r0, _080B7CD4 @ =gBattleAnimTarget
+_080B7CA6:
+ ldrb r5, [r0]
+ movs r6, 0x14
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x4
+ ldr r7, _080B7CD8 @ =0x000003ff
+ adds r0, r7, 0
+ ands r1, r0
+ ldr r0, _080B7CDC @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ movs r1, 0x2
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x1
+ beq _080B7D04
+ cmp r0, 0x1
+ bgt _080B7CE0
+ cmp r0, 0
+ beq _080B7CEA
+ b _080B7D58
+ .align 2, 0
+_080B7CD4: .4byte gBattleAnimTarget
+_080B7CD8: .4byte 0x000003ff
+_080B7CDC: .4byte 0xfffffc00
+_080B7CE0:
+ cmp r0, 0x2
+ beq _080B7D1E
+ cmp r0, 0x3
+ beq _080B7D36
+ b _080B7D58
+_080B7CEA:
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl sub_8076B2C
+ subs r0, 0x8
+ strh r0, [r4, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_8076B2C
+ adds r0, 0x8
+ strh r0, [r4, 0x22]
+ b _080B7D58
+_080B7D04:
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl sub_8076B2C
+ subs r0, 0xE
+ strh r0, [r4, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_8076B2C
+ adds r0, 0x10
+ strh r0, [r4, 0x22]
+ b _080B7D58
+_080B7D1E:
+ adds r0, r5, 0
+ movs r1, 0x4
+ bl sub_8076B2C
+ adds r0, 0x8
+ strh r0, [r4, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_8076B2C
+ adds r0, 0x8
+ b _080B7D4C
+_080B7D36:
+ adds r0, r5, 0
+ movs r1, 0x4
+ bl sub_8076B2C
+ adds r0, 0xE
+ strh r0, [r4, 0x20]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_8076B2C
+ adds r0, 0x10
+_080B7D4C:
+ strh r0, [r4, 0x22]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ movs r6, 0xEC
+_080B7D58:
+ 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, _080B7D80 @ =0x0000fff4
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_8075068
+ ldr r0, _080B7D84 @ =sub_80B7D88
+ str r0, [r4, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7D80: .4byte 0x0000fff4
+_080B7D84: .4byte sub_80B7D88
+ thumb_func_end sub_80B7C88
+
+ thumb_func_start sub_80B7D88
+sub_80B7D88: @ 80B7D88
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B7D9C
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080B7D9C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B7D88
+
+ thumb_func_start sub_80B7DA4
+sub_80B7DA4: @ 80B7DA4
+ push {r4-r7,lr}
+ sub sp, 0x1C
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080B7E08 @ =gTasks
+ adds r5, r1, r0
+ ldr r4, _080B7E0C @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1F
+ movs r6, 0
+ strh r0, [r5, 0x16]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8076B2C
+ 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 sub_8074480
+ 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 GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B7E14
+ ldr r0, _080B7E10 @ =0x0000fff4
+ b _080B7E16
+ .align 2, 0
+_080B7E08: .4byte gTasks
+_080B7E0C: .4byte gBattleAnimAttacker
+_080B7E10: .4byte 0x0000fff4
+_080B7E14:
+ ldr r0, _080B7E60 @ =0x0000ffc0
+_080B7E16:
+ strh r0, [r5, 0x18]
+ ldr r0, _080B7E64 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0xE]
+ cmp r0, 0x1
+ bne _080B7E78
+ add r4, sp, 0xC
+ adds r0, r4, 0
+ bl sub_80752A0
+ ldr r0, _080B7E68 @ =gBattle_BG1_Y
+ ldrh r0, [r0]
+ strh r0, [r5, 0x1C]
+ ldr r1, _080B7E6C @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ ldrb r1, [r4, 0x8]
+ lsls r1, 4
+ movs r0, 0
+ movs r2, 0x20
+ bl FillPalette
+ ldr r0, _080B7E70 @ =0x04000016
+ str r0, [sp]
+ movs r7, 0x2
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B7EA8
+ ldr r1, _080B7E74 @ =gBattle_BG2_X
+ b _080B7EA2
+ .align 2, 0
+_080B7E60: .4byte 0x0000ffc0
+_080B7E64: .4byte gBattleAnimAttacker
+_080B7E68: .4byte gBattle_BG1_Y
+_080B7E6C: .4byte 0x00003f42
+_080B7E70: .4byte 0x04000016
+_080B7E74: .4byte gBattle_BG2_X
+_080B7E78:
+ ldr r0, _080B7F30 @ =gBattle_BG2_Y
+ ldrh r0, [r0]
+ strh r0, [r5, 0x1C]
+ ldr r1, _080B7F34 @ =0x00003f44
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r0, 0
+ movs r1, 0x90
+ movs r2, 0x20
+ bl FillPalette
+ ldr r0, _080B7F38 @ =0x0400001a
+ str r0, [sp]
+ movs r7, 0x4
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B7EA8
+ ldr r1, _080B7F3C @ =gBattle_BG1_X
+_080B7EA2:
+ ldrh r0, [r1]
+ adds r0, 0xF0
+ strh r0, [r1]
+_080B7EA8:
+ ldr r0, _080B7F40 @ =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_80B856C
+ movs r3, 0
+ ldr r4, _080B7F44 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r4, r0
+_080B7ED4:
+ 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 _080B7ED4
+ ldr r0, [sp]
+ ldr r1, [sp, 0x4]
+ ldr r2, [sp, 0x8]
+ bl ScanlineEffect_SetParams
+ movs r0, 0x3F
+ eors r7, r0
+ movs r1, 0xFC
+ lsls r1, 6
+ adds r0, r1, 0
+ orrs r7, r0
+ movs r0, 0x4A
+ adds r1, r7, 0
+ bl SetGpuReg
+ ldr r1, _080B7F48 @ =0x00003f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r2, _080B7F4C @ =gUnknown_2022984
+ ldrh r0, [r5, 0x24]
+ lsls r0, 8
+ ldrh r1, [r5, 0x26]
+ orrs r0, r1
+ strh r0, [r2]
+ ldr r1, _080B7F50 @ =gUnknown_2022986
+ movs r0, 0xA0
+ strh r0, [r1]
+ ldr r0, _080B7F54 @ =sub_80B7F58
+ str r0, [r5]
+ add sp, 0x1C
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7F30: .4byte gBattle_BG2_Y
+_080B7F34: .4byte 0x00003f44
+_080B7F38: .4byte 0x0400001a
+_080B7F3C: .4byte gBattle_BG1_X
+_080B7F40: .4byte 0xa2600001
+_080B7F44: .4byte gScanlineEffectRegBuffers
+_080B7F48: .4byte 0x00003f3f
+_080B7F4C: .4byte gUnknown_2022984
+_080B7F50: .4byte gUnknown_2022986
+_080B7F54: .4byte sub_80B7F58
+ thumb_func_end sub_80B7DA4
+
+ thumb_func_start sub_80B7F58
+sub_80B7F58: @ 80B7F58
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080B7F7C @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _080B7F72
+ b _080B806A
+_080B7F72:
+ lsls r0, 2
+ ldr r1, _080B7F80 @ =_080B7F84
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B7F7C: .4byte gTasks
+_080B7F80: .4byte _080B7F84
+ .align 2, 0
+_080B7F84:
+ .4byte _080B7F98
+ .4byte _080B7FFA
+ .4byte _080B8014
+ .4byte _080B8050
+ .4byte _080B8064
+_080B7F98:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B806A
+ 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 _080B7FC8
+ ldrh r1, [r4, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xC
+ beq _080B7FD6
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x1E]
+ b _080B7FD6
+_080B7FC8:
+ ldrh r1, [r4, 0x20]
+ movs r2, 0x20
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x8
+ beq _080B7FD6
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x20]
+_080B7FD6:
+ ldrh r1, [r4, 0x20]
+ lsls r1, 8
+ ldrh r0, [r4, 0x1E]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xC
+ bne _080B806A
+ movs r2, 0x20
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x8
+ bne _080B806A
+ b _080B8056
+_080B7FFA:
+ ldrh r0, [r4, 0x10]
+ subs r0, 0x8
+ strh r0, [r4, 0x10]
+ adds r0, r4, 0
+ bl sub_80B843C
+ movs r0, 0x10
+ ldrsh r1, [r4, r0]
+ movs r2, 0x18
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bge _080B806A
+ b _080B8056
+_080B8014:
+ ldrh r0, [r4, 0x10]
+ subs r0, 0x8
+ strh r0, [r4, 0x10]
+ adds r0, r4, 0
+ bl sub_80B843C
+ 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 _080B8036
+ strh r2, [r4, 0x24]
+_080B8036:
+ ldr r3, _080B804C @ =gUnknown_2022984
+ 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 _080B806A
+ b _080B8056
+ .align 2, 0
+_080B804C: .4byte gUnknown_2022984
+_080B8050:
+ ldr r1, _080B8060 @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+_080B8056:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B806A
+ .align 2, 0
+_080B8060: .4byte gScanlineEffect
+_080B8064:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080B806A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B7F58
+
+ thumb_func_start sub_80B8070
+sub_80B8070: @ 80B8070
+ push {r4-r7,lr}
+ sub sp, 0x1C
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _080B8098 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x4
+ bls _080B808C
+ b _080B829E
+_080B808C:
+ lsls r0, 2
+ ldr r1, _080B809C @ =_080B80A0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B8098: .4byte gTasks
+_080B809C: .4byte _080B80A0
+ .align 2, 0
+_080B80A0:
+ .4byte _080B80B4
+ .4byte _080B8138
+ .4byte _080B817C
+ .4byte _080B81E8
+ .4byte _080B8250
+_080B80B4:
+ bl sub_8073788
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080B80F0
+ ldr r0, _080B80E4 @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080B80E8 @ =gUnknown_2022986
+ strh r1, [r0]
+ ldr r4, _080B80EC @ =0x00003f3f
+ movs r0, 0x48
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ adds r1, r4, 0
+ bl SetGpuReg
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+ b _080B829E
+ .align 2, 0
+_080B80E4: .4byte gUnknown_2022984
+_080B80E8: .4byte gUnknown_2022986
+_080B80EC: .4byte 0x00003f3f
+_080B80F0:
+ ldr r0, _080B8110 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0xE]
+ cmp r0, 0x1
+ bne _080B811C
+ ldr r1, _080B8114 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r1, _080B8118 @ =gBattle_BG2_X
+ b _080B8126
+ .align 2, 0
+_080B8110: .4byte gBattleAnimTarget
+_080B8114: .4byte 0x00003f42
+_080B8118: .4byte gBattle_BG2_X
+_080B811C:
+ ldr r1, _080B8130 @ =0x00003f44
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r1, _080B8134 @ =gBattle_BG1_X
+_080B8126:
+ ldrh r0, [r1]
+ adds r0, 0xF0
+ strh r0, [r1]
+ b _080B823C
+ .align 2, 0
+_080B8130: .4byte 0x00003f44
+_080B8134: .4byte gBattle_BG1_X
+_080B8138:
+ movs r1, 0xE
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _080B8160
+ mov r0, sp
+ bl sub_80752A0
+ ldr r0, _080B815C @ =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 _080B8170
+ .align 2, 0
+_080B815C: .4byte gBattle_BG1_Y
+_080B8160:
+ ldr r0, _080B8178 @ =gBattle_BG2_Y
+ ldrh r0, [r0]
+ strh r0, [r5, 0x1C]
+ movs r0, 0
+ movs r1, 0x90
+ movs r2, 0x20
+ bl FillPalette
+_080B8170:
+ movs r0, 0x3
+ bl sub_80B856C
+ b _080B823C
+ .align 2, 0
+_080B8178: .4byte gBattle_BG2_Y
+_080B817C:
+ ldr r4, _080B81C8 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1F
+ movs r6, 0
+ strh r0, [r5, 0x16]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8076B2C
+ 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 sub_8074480
+ 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 GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B81D0
+ ldr r0, _080B81CC @ =0x0000fff4
+ b _080B81D2
+ .align 2, 0
+_080B81C8: .4byte gBattleAnimTarget
+_080B81CC: .4byte 0x0000fff4
+_080B81D0:
+ ldr r0, _080B81E4 @ =0x0000ffc0
+_080B81D2:
+ 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 _080B823C
+ .align 2, 0
+_080B81E4: .4byte 0x0000ffc0
+_080B81E8:
+ movs r1, 0xE
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _080B81F8
+ ldr r0, _080B81F4 @ =0x04000016
+ b _080B81FA
+ .align 2, 0
+_080B81F4: .4byte 0x04000016
+_080B81F8:
+ ldr r0, _080B8244 @ =0x0400001a
+_080B81FA:
+ str r0, [sp, 0x10]
+ movs r3, 0
+ add r4, sp, 0x10
+ ldr r6, _080B8248 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r7, r6, r0
+_080B8208:
+ 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 _080B8208
+ ldr r1, _080B824C @ =0xa2600001
+ str r1, [r4, 0x4]
+ movs r2, 0
+ movs r0, 0x1
+ strb r0, [r4, 0x8]
+ strb r2, [r4, 0x9]
+ ldr r0, [sp, 0x10]
+ ldr r2, [r4, 0x8]
+ bl ScanlineEffect_SetParams
+_080B823C:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080B829E
+ .align 2, 0
+_080B8244: .4byte 0x0400001a
+_080B8248: .4byte gScanlineEffectRegBuffers
+_080B824C: .4byte 0xa2600001
+_080B8250:
+ movs r1, 0xE
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _080B8268
+ ldr r1, _080B8264 @ =0x00003f3d
+ movs r0, 0x4A
+ bl SetGpuReg
+ b _080B8270
+ .align 2, 0
+_080B8264: .4byte 0x00003f3d
+_080B8268:
+ ldr r1, _080B82A8 @ =0x00003f3b
+ movs r0, 0x4A
+ bl SetGpuReg
+_080B8270:
+ ldr r1, _080B82AC @ =0x00003f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r2, _080B82B0 @ =gUnknown_2022984
+ ldrh r0, [r5, 0x24]
+ lsls r0, 8
+ ldrh r1, [r5, 0x26]
+ orrs r0, r1
+ strh r0, [r2]
+ ldr r1, _080B82B4 @ =gUnknown_2022986
+ movs r0, 0xA0
+ strh r0, [r1]
+ movs r0, 0
+ strh r0, [r5, 0x8]
+ strh r0, [r5, 0xA]
+ strh r0, [r5, 0xC]
+ ldr r1, _080B82B8 @ =0x0000080c
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r0, _080B82BC @ =sub_80B82C0
+ str r0, [r5]
+_080B829E:
+ add sp, 0x1C
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B82A8: .4byte 0x00003f3b
+_080B82AC: .4byte 0x00003f3f
+_080B82B0: .4byte gUnknown_2022984
+_080B82B4: .4byte gUnknown_2022986
+_080B82B8: .4byte 0x0000080c
+_080B82BC: .4byte sub_80B82C0
+ thumb_func_end sub_80B8070
+
+ thumb_func_start sub_80B82C0
+sub_80B82C0: @ 80B82C0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080B82E4 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _080B82DA
+ b _080B842A
+_080B82DA:
+ lsls r0, 2
+ ldr r1, _080B82E8 @ =_080B82EC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B82E4: .4byte gTasks
+_080B82E8: .4byte _080B82EC
+ .align 2, 0
+_080B82EC:
+ .4byte _080B8300
+ .4byte _080B832C
+ .4byte _080B8394
+ .4byte _080B83F6
+ .4byte _080B8408
+_080B8300:
+ 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 _080B8316
+ strh r2, [r4, 0x12]
+_080B8316:
+ adds r0, r4, 0
+ bl sub_80B843C
+ movs r0, 0x12
+ ldrsh r1, [r4, r0]
+ movs r2, 0x16
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ beq _080B832A
+ b _080B842A
+_080B832A:
+ b _080B83FC
+_080B832C:
+ movs r3, 0x26
+ ldrsh r0, [r4, r3]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ subs r0, r1
+ cmp r0, 0x3F
+ bgt _080B8348
+ ldrh r0, [r4, 0x24]
+ subs r0, 0x4
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x26]
+ adds r0, 0x4
+ strh r0, [r4, 0x26]
+ b _080B834C
+_080B8348:
+ movs r0, 0x1
+ strh r0, [r4, 0xA]
+_080B834C:
+ ldr r2, _080B8390 @ =gUnknown_2022984
+ 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 _080B836E
+ strh r2, [r4, 0x10]
+_080B836E:
+ adds r0, r4, 0
+ bl sub_80B843C
+ movs r0, 0x10
+ ldrsh r1, [r4, r0]
+ movs r2, 0x14
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _080B842A
+ movs r3, 0xA
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080B842A
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _080B83FC
+ .align 2, 0
+_080B8390: .4byte gUnknown_2022984
+_080B8394:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B842A
+ 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 _080B83C4
+ ldrh r1, [r4, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080B83D2
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x1E]
+ b _080B83D2
+_080B83C4:
+ ldrh r1, [r4, 0x20]
+ movs r3, 0x20
+ ldrsh r0, [r4, r3]
+ cmp r0, 0xF
+ bgt _080B83D2
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x20]
+_080B83D2:
+ ldrh r1, [r4, 0x20]
+ lsls r1, 8
+ ldrh r0, [r4, 0x1E]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B842A
+ movs r2, 0x20
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x10
+ bne _080B842A
+ b _080B83FC
+_080B83F6:
+ ldr r1, _080B8404 @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+_080B83FC:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B842A
+ .align 2, 0
+_080B8404: .4byte gScanlineEffect
+_080B8408:
+ ldr r0, _080B8430 @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080B8434 @ =gUnknown_2022986
+ strh r1, [r0]
+ ldr r4, _080B8438 @ =0x00003f3f
+ movs r0, 0x48
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ adds r1, r4, 0
+ bl SetGpuReg
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080B842A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B8430: .4byte gUnknown_2022984
+_080B8434: .4byte gUnknown_2022986
+_080B8438: .4byte 0x00003f3f
+ thumb_func_end sub_80B82C0
+
+ thumb_func_start sub_80B843C
+sub_80B843C: @ 80B843C
+ 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 _080B8530
+ 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 _080B849C
+ ldr r0, _080B8528 @ =gScanlineEffectRegBuffers
+ mov r12, r0
+ ldr r7, _080B852C @ =gScanlineEffect
+_080B8470:
+ 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 _080B8470
+_080B849C:
+ ldrh r4, [r6, 0x10]
+ lsls r3, r4, 16
+ asrs r1, r3, 16
+ movs r2, 0x12
+ ldrsh r0, [r6, r2]
+ cmp r1, r0
+ bgt _080B84E6
+ ldr r0, _080B8528 @ =gScanlineEffectRegBuffers
+ mov r12, r0
+ ldr r7, _080B852C @ =gScanlineEffect
+_080B84B0:
+ asrs r4, r3, 16
+ cmp r4, 0
+ blt _080B84D2
+ 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]
+_080B84D2:
+ 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 _080B84B0
+_080B84E6:
+ 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 _080B855E
+ ldr r7, _080B8528 @ =gScanlineEffectRegBuffers
+ ldr r4, _080B852C @ =gScanlineEffect
+_080B84FE:
+ asrs r3, r2, 16
+ cmp r3, 0
+ blt _080B8516
+ 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
+_080B8516:
+ adds r0, r3, 0x1
+ lsls r2, r0, 16
+ asrs r1, r2, 16
+ movs r3, 0x16
+ ldrsh r0, [r6, r3]
+ cmp r1, r0
+ blt _080B84FE
+ b _080B855E
+ .align 2, 0
+_080B8528: .4byte gScanlineEffectRegBuffers
+_080B852C: .4byte gScanlineEffect
+_080B8530:
+ movs r1, 0x1C
+ ldrsh r0, [r6, r1]
+ adds r5, r0, 0
+ adds r5, 0x9F
+ movs r4, 0
+ ldr r3, _080B8568 @ =gScanlineEffectRegBuffers
+ movs r2, 0xF0
+ lsls r2, 3
+ adds r6, r3, r2
+_080B8542:
+ 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 _080B8542
+_080B855E:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B8568: .4byte gScanlineEffectRegBuffers
+ thumb_func_end sub_80B843C
+
+ thumb_func_start sub_80B856C
+sub_80B856C: @ 80B856C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ movs r4, 0
+ ldr r7, _080B85B4 @ =gSprites
+ movs r1, 0x3
+ ands r0, r1
+ lsls r5, r0, 2
+ movs r0, 0xD
+ negs r0, r0
+ adds r6, r0, 0
+_080B8582:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ beq _080B85A2
+ 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]
+_080B85A2:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x3
+ bls _080B8582
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B85B4: .4byte gSprites
+ thumb_func_end sub_80B856C
+
+ thumb_func_start sub_80B85B8
+sub_80B85B8: @ 80B85B8
+ 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, _080B8658 @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ bl sub_80768B0
+ 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_8072E48
+ ldr r0, _080B865C @ =gSprites
+ mov r9, r0
+ ldr r0, _080B8660 @ =gBattlerSpriteIds
+ 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 sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B8642
+ ldrb r0, [r6]
+ eors r0, r5
+ movs r1, 0x1
+ eors r4, r1
+ adds r1, r4, 0
+ bl sub_8072E48
+ 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]
+_080B8642:
+ 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
+_080B8658: .4byte gBattleAnimAttacker
+_080B865C: .4byte gSprites
+_080B8660: .4byte gBattlerSpriteIds
+ thumb_func_end sub_80B85B8
+
+ thumb_func_start sub_80B8664
+sub_80B8664: @ 80B8664
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r4, _080B86AC @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl sub_80768B0
+ 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_8073128
+ ldrb r1, [r4]
+ movs r0, 0x2
+ eors r0, r1
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B86A0
+ movs r0, 0x1
+ eors r5, r0
+ adds r0, r5, 0
+ bl sub_8073128
+_080B86A0:
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B86AC: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80B8664
+
+ thumb_func_start sub_80B86B0
+sub_80B86B0: @ 80B86B0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _080B86E0 @ =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, _080B86E4 @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+ ldr r1, _080B86E8 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B86E0: .4byte gBattleAnimArgs
+_080B86E4: .4byte sub_8074F6C
+_080B86E8: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B86B0
+
+ thumb_func_start sub_80B86EC
+sub_80B86EC: @ 80B86EC
+ push {r4-r7,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r6, 0
+ ldr r0, _080B87EC @ =gUnknown_2022984
+ strh r6, [r0]
+ ldr r0, _080B87F0 @ =gUnknown_2022986
+ strh r6, [r0]
+ ldr r1, _080B87F4 @ =0x00003f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r1, _080B87F8 @ =0x00003f3d
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 8
+ movs r0, 0
+ bl SetGpuRegBits
+ ldr r1, _080B87FC @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r1, _080B8800 @ =0x00000c08
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B8750
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080B8750:
+ bl sub_8075290
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B87CA
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B87CA
+ ldr r4, _080B8804 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ beq _080B8780
+ ldrb r0, [r4]
+ bl GetBattlerPosition
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B87CA
+_080B8780:
+ ldrb r0, [r4]
+ movs r5, 0x2
+ eors r0, r5
+ bl sub_8072DF0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080B87CA
+ ldr r3, _080B8808 @ =gSprites
+ ldr r1, _080B880C @ =gBattlerSpriteIds
+ ldrb r0, [r4]
+ eors r0, r5
+ 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]
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r6, 0x1
+_080B87CA:
+ ldr r4, _080B8804 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B8818
+ ldr r1, _080B8810 @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080B8814 @ =gEnemyParty
+ b _080B8828
+ .align 2, 0
+_080B87EC: .4byte gUnknown_2022984
+_080B87F0: .4byte gUnknown_2022986
+_080B87F4: .4byte 0x00003f3f
+_080B87F8: .4byte 0x00003f3d
+_080B87FC: .4byte 0x00003f42
+_080B8800: .4byte 0x00000c08
+_080B8804: .4byte gBattleAnimAttacker
+_080B8808: .4byte gSprites
+_080B880C: .4byte gBattlerSpriteIds
+_080B8810: .4byte gBattlerPartyIndexes
+_080B8814: .4byte gEnemyParty
+_080B8818:
+ ldr r1, _080B88B8 @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _080B88BC @ =gPlayerParty
+_080B8828:
+ adds r0, r1
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r5, r0, 16
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080B88C0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_8076E34
+ lsls r0, 24
+ lsrs r5, r0, 24
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080B88C4 @ =gFile_graphics_battle_anims_masks_metal_shine_tilemap
+ bl sub_807543C
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080B88C8 @ =gFile_graphics_battle_anims_masks_metal_shine_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080B88CC @ =gFile_graphics_battle_anims_masks_metal_shine_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ ldr r2, _080B88D0 @ =gBattle_BG1_X
+ ldr r0, _080B88D4 @ =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, _080B88D8 @ =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, _080B88DC @ =gBattleAnimArgs
+ movs r3, 0x2
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bne _080B88E0
+ adds r0, r1, 0
+ movs r1, 0
+ bl sub_8075B48
+ b _080B88EC
+ .align 2, 0
+_080B88B8: .4byte gBattlerPartyIndexes
+_080B88BC: .4byte gPlayerParty
+_080B88C0: .4byte gBattleAnimAttacker
+_080B88C4: .4byte gFile_graphics_battle_anims_masks_metal_shine_tilemap
+_080B88C8: .4byte gFile_graphics_battle_anims_masks_metal_shine_sheet
+_080B88CC: .4byte gFile_graphics_battle_anims_masks_metal_shine_palette
+_080B88D0: .4byte gBattle_BG1_X
+_080B88D4: .4byte gSprites
+_080B88D8: .4byte gBattle_BG1_Y
+_080B88DC: .4byte gBattleAnimArgs
+_080B88E0:
+ lsls r0, r1, 4
+ ldrh r3, [r2, 0x4]
+ movs r1, 0x10
+ movs r2, 0xB
+ bl BlendPalette
+_080B88EC:
+ ldr r1, _080B8914 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r1
+ strh r5, [r0, 0x8]
+ ldr r2, _080B8918 @ =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 r6, [r0, 0x14]
+ ldr r1, _080B891C @ =sub_80B8920
+ str r1, [r0]
+ add sp, 0x10
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B8914: .4byte gTasks
+_080B8918: .4byte gBattleAnimArgs
+_080B891C: .4byte sub_80B8920
+ thumb_func_end sub_80B86EC
+
+ thumb_func_start sub_80B8920
+sub_80B8920: @ 80B8920
+ push {r4-r6,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ ldr r1, _080B89E8 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x4
+ movs r5, 0
+ strh r0, [r4, 0x1C]
+ ldr r2, _080B89EC @ =gBattle_BG1_X
+ ldrh r3, [r2]
+ subs r1, r3, 0x4
+ strh r1, [r2]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x80
+ beq _080B894E
+ b _080B8A5E
+_080B894E:
+ 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 _080B89FC
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r5, _080B89F0 @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ 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 _080B8990
+ adds r0, r1, 0
+ movs r1, 0x1
+ bl sub_8075B48
+_080B8990:
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ bl DestroySprite
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ bl sub_8075358
+ movs r1, 0x14
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ bne _080B8A5E
+ ldr r2, _080B89F4 @ =gBattlerSpriteIds
+ ldr r0, _080B89F8 @ =gBattleAnimAttacker
+ 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, r5
+ 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]
+ b _080B8A5E
+ .align 2, 0
+_080B89E8: .4byte gTasks
+_080B89EC: .4byte gBattle_BG1_X
+_080B89F0: .4byte gSprites
+_080B89F4: .4byte gBattlerSpriteIds
+_080B89F8: .4byte gBattleAnimAttacker
+_080B89FC:
+ cmp r0, 0x3
+ bne _080B8A5E
+ ldr r0, _080B8A68 @ =gUnknown_2022984
+ strh r5, [r0]
+ ldr r0, _080B8A6C @ =gUnknown_2022986
+ strh r5, [r0]
+ ldr r4, _080B8A70 @ =0x00003f3f
+ movs r0, 0x48
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ adds r1, r4, 0
+ bl SetGpuReg
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B8A2E
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080B8A2E:
+ movs r0, 0
+ bl GetGpuReg
+ adds r1, r0, 0
+ movs r2, 0x80
+ lsls r2, 8
+ adds r0, r2, 0
+ eors r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0
+ bl SetGpuReg
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080B8A5E:
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B8A68: .4byte gUnknown_2022984
+_080B8A6C: .4byte gUnknown_2022986
+_080B8A70: .4byte 0x00003f3f
+ thumb_func_end sub_80B8920
+
+ thumb_func_start sub_80B8A74
+sub_80B8A74: @ 80B8A74
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r0, _080B8A94 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ adds r2, r0, 0
+ cmp r1, 0x7
+ bhi _080B8AD8
+ lsls r0, r1, 2
+ ldr r1, _080B8A98 @ =_080B8A9C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B8A94: .4byte gBattleAnimArgs
+_080B8A98: .4byte _080B8A9C
+ .align 2, 0
+_080B8A9C:
+ .4byte _080B8ABC
+ .4byte _080B8ABC
+ .4byte _080B8ABC
+ .4byte _080B8ABC
+ .4byte _080B8AC8
+ .4byte _080B8ACC
+ .4byte _080B8AD0
+ .4byte _080B8AD4
+_080B8ABC:
+ ldrb r0, [r2]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r2, r0, 24
+ b _080B8ADA
+_080B8AC8:
+ movs r4, 0
+ b _080B8AE0
+_080B8ACC:
+ movs r4, 0x2
+ b _080B8AE0
+_080B8AD0:
+ movs r4, 0x1
+ b _080B8AE0
+_080B8AD4:
+ movs r4, 0x3
+ b _080B8AE0
+_080B8AD8:
+ movs r2, 0xFF
+_080B8ADA:
+ movs r0, 0
+ cmp r0, 0
+ beq _080B8B06
+_080B8AE0:
+ adds r0, r4, 0
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B8B04
+ ldr r0, _080B8B00 @ =gBattlerSpriteIds
+ adds r0, r4, r0
+ ldrb r2, [r0]
+ b _080B8B06
+ .align 2, 0
+_080B8B00: .4byte gBattlerSpriteIds
+_080B8B04:
+ movs r2, 0xFF
+_080B8B06:
+ cmp r2, 0xFF
+ beq _080B8B22
+ ldr r1, _080B8B30 @ =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, _080B8B34 @ =gBattleAnimArgs
+ ldrb r1, [r1, 0x2]
+ bl sub_8075B48
+_080B8B22:
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B8B30: .4byte gSprites
+_080B8B34: .4byte gBattleAnimArgs
+ thumb_func_end sub_80B8A74
+
+ thumb_func_start sub_80B8B38
+sub_80B8B38: @ 80B8B38
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, _080B8B64 @ =gAnimMoveTurn
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bhi _080B8B4C
+ ldr r1, _080B8B68 @ =gBattleAnimArgs
+ movs r0, 0
+ strh r0, [r1, 0xE]
+_080B8B4C:
+ ldrb r0, [r2]
+ cmp r0, 0x2
+ bne _080B8B58
+ ldr r1, _080B8B68 @ =gBattleAnimArgs
+ movs r0, 0x1
+ strh r0, [r1, 0xE]
+_080B8B58:
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B8B64: .4byte gAnimMoveTurn
+_080B8B68: .4byte gBattleAnimArgs
+ thumb_func_end sub_80B8B38
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/decompress.s b/asm/decompress.s
deleted file mode 100644
index cc38e0df5..000000000
--- a/asm/decompress.s
+++ /dev/null
@@ -1,887 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start LZDecompressWram
-LZDecompressWram: @ 800EBB4
- push {lr}
- bl LZ77UnCompWram
- pop {r0}
- bx r0
- thumb_func_end LZDecompressWram
-
- thumb_func_start LZDecompressVram
-LZDecompressVram: @ 800EBC0
- push {lr}
- bl LZ77UnCompVram
- pop {r0}
- bx r0
- thumb_func_end LZDecompressVram
-
- thumb_func_start LoadCompressedObjectPic
-LoadCompressedObjectPic: @ 800EBCC
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r0, [r4]
- ldr r5, _0800EBFC @ =gDecompressionBuffer
- adds r1, r5, 0
- bl LZ77UnCompWram
- str r5, [sp]
- ldrh r1, [r4, 0x6]
- lsls r1, 16
- ldrh r0, [r4, 0x4]
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0800EBFC: .4byte gDecompressionBuffer
- thumb_func_end LoadCompressedObjectPic
-
- thumb_func_start LoadCompressedObjectPicOverrideBuffer
-LoadCompressedObjectPicOverrideBuffer: @ 800EC00
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, [r4]
- bl LZ77UnCompWram
- str r5, [sp]
- ldrh r1, [r4, 0x6]
- lsls r1, 16
- ldrh r0, [r4, 0x4]
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end LoadCompressedObjectPicOverrideBuffer
-
- thumb_func_start LoadCompressedObjectPalette
-LoadCompressedObjectPalette: @ 800EC28
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r0, [r5]
- ldr r4, _0800EC54 @ =gDecompressionBuffer
- adds r1, r4, 0
- bl LZ77UnCompWram
- str r4, [sp]
- ldrh r2, [r5, 0x4]
- ldr r1, _0800EC58 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- orrs r0, r2
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpritePalette
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800EC54: .4byte gDecompressionBuffer
-_0800EC58: .4byte 0xffff0000
- thumb_func_end LoadCompressedObjectPalette
-
- thumb_func_start LoadCompressedObjectPaletteOverrideBuffer
-LoadCompressedObjectPaletteOverrideBuffer: @ 800EC5C
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r0, [r5]
- bl LZ77UnCompWram
- str r4, [sp]
- ldrh r2, [r5, 0x4]
- ldr r1, _0800EC88 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- orrs r0, r2
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpritePalette
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800EC88: .4byte 0xffff0000
- thumb_func_end LoadCompressedObjectPaletteOverrideBuffer
-
- thumb_func_start DecompressPicFromTable
-DecompressPicFromTable: @ 800EC8C
- push {r4,r5,lr}
- adds r3, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r5, r0
- ble _0800ECAC
- ldr r0, _0800ECA8 @ =gMonFrontPicTable
- ldr r0, [r0]
- bl LZ77UnCompWram
- b _0800ECB4
- .align 2, 0
-_0800ECA8: .4byte gMonFrontPicTable
-_0800ECAC:
- ldr r0, [r3]
- adds r1, r4, 0
- bl LZ77UnCompWram
-_0800ECB4:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_800EDAC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end DecompressPicFromTable
-
- thumb_func_start sub_800ECC4
-sub_800ECC4: @ 800ECC4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r0, r2, 3
- ldr r1, _0800ECEC @ =gMonFrontPicTable
- adds r0, r1
- movs r1, 0
- cmp r4, r0
- bne _0800ECDA
- movs r1, 0x1
-_0800ECDA:
- str r1, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl LoadSpecialPokePic
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800ECEC: .4byte gMonFrontPicTable
- thumb_func_end sub_800ECC4
-
- thumb_func_start LoadSpecialPokePic
-LoadSpecialPokePic: @ 800ECF0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r7, r2, 0
- adds r5, r3, 0
- ldr r0, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r7, 0xC9
- bne _0800ED6C
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r5
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r5
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r5
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r5
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _0800ED3E
- movs r1, 0xC9
- b _0800ED48
-_0800ED3E:
- movs r2, 0xCE
- lsls r2, 1
- adds r0, r1, r2
- lsls r0, 16
- lsrs r1, r0, 16
-_0800ED48:
- mov r0, r8
- cmp r0, 0
- bne _0800ED5C
- ldr r0, _0800ED58 @ =gMonBackPicTable
- lsls r1, 3
- adds r1, r0
- ldr r0, [r1]
- b _0800ED78
- .align 2, 0
-_0800ED58: .4byte gMonBackPicTable
-_0800ED5C:
- ldr r0, _0800ED68 @ =gMonFrontPicTable
- lsls r1, 3
- adds r1, r0
- ldr r0, [r1]
- b _0800ED78
- .align 2, 0
-_0800ED68: .4byte gMonFrontPicTable
-_0800ED6C:
- movs r0, 0xCE
- lsls r0, 1
- cmp r7, r0
- ble _0800ED84
- ldr r0, _0800ED80 @ =gMonFrontPicTable
- ldr r0, [r0]
-_0800ED78:
- adds r1, r4, 0
- bl LZ77UnCompWram
- b _0800ED8C
- .align 2, 0
-_0800ED80: .4byte gMonFrontPicTable
-_0800ED84:
- ldr r0, [r6]
- adds r1, r4, 0
- bl LZ77UnCompWram
-_0800ED8C:
- adds r0, r4, 0
- adds r1, r7, 0
- bl sub_800EDAC
- lsls r0, r7, 16
- lsrs r0, 16
- adds r1, r5, 0
- adds r2, r4, 0
- mov r3, r8
- bl DrawSpindaSpots
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end LoadSpecialPokePic
-
- thumb_func_start sub_800EDAC
-sub_800EDAC: @ 800EDAC
- push {lr}
- adds r3, r0, 0
- movs r0, 0xCD
- lsls r0, 1
- cmp r1, r0
- bne _0800EDC6
- movs r1, 0x80
- lsls r1, 4
- adds r0, r3, r1
- ldr r2, _0800EDCC @ =0x04000200
- adds r1, r3, 0
- bl CpuSet
-_0800EDC6:
- pop {r0}
- bx r0
- .align 2, 0
-_0800EDCC: .4byte 0x04000200
- thumb_func_end sub_800EDAC
-
- thumb_func_start sub_800EDD0
-sub_800EDD0: @ 800EDD0
- push {lr}
- ldr r0, [r0]
- bl LZ77UnCompWram
- pop {r0}
- bx r0
- thumb_func_end sub_800EDD0
-
- thumb_func_start sub_800EDDC
-sub_800EDDC: @ 800EDDC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- mov r9, r0
- str r1, [sp]
- str r2, [sp, 0x4]
- adds r5, r3, 0
- movs r0, 0x1
- mov r1, r9
- ands r0, r1
- cmp r0, 0
- bne _0800EDFC
- b _0800EF94
-_0800EDFC:
- asrs r0, r1, 1
- adds r0, 0x4
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- movs r0, 0
- ldr r2, [sp]
- cmp r0, r2
- blt _0800EE10
- b _0800F024
-_0800EE10:
- movs r4, 0x8
- subs r1, r4, r1
- str r1, [sp, 0x10]
-_0800EE16:
- movs r7, 0
- adds r0, 0x1
- str r0, [sp, 0x14]
- ldr r0, [sp, 0x10]
- cmp r7, r0
- bge _0800EE92
- ldr r1, [sp, 0x8]
- lsls r1, 8
- str r1, [sp, 0x18]
- movs r2, 0
- mov r10, r2
- mov r0, r9
- movs r4, 0x8
- subs r0, r4, r0
- str r0, [sp, 0xC]
-_0800EE34:
- movs r3, 0
- asrs r0, r7, 1
- adds r1, r7, 0
- movs r2, 0x1
- ands r1, r2
- str r1, [sp, 0x20]
- lsls r0, 8
- mov r8, r0
- mov r12, r5
-_0800EE46:
- lsls r1, r3, 5
- ldr r4, [sp, 0x18]
- adds r0, r5, r4
- adds r0, r1
- mov r1, r8
- adds r2, r0, r1
- mov r1, r12
- add r1, r8
- movs r6, 0xF
-_0800EE58:
- ldr r4, [sp, 0x20]
- cmp r4, 0
- bne _0800EE68
- strb r4, [r1]
- add r4, sp, 0x20
- ldrb r4, [r4]
- strb r4, [r2, 0x10]
- b _0800EE76
-_0800EE68:
- mov r0, r10
- strb r0, [r1, 0x10]
- movs r4, 0x80
- lsls r4, 1
- adds r4, r2, r4
- str r4, [sp, 0x1C]
- strb r0, [r4]
-_0800EE76:
- adds r2, 0x1
- adds r1, 0x1
- subs r6, 0x1
- cmp r6, 0
- bge _0800EE58
- movs r0, 0x20
- add r12, r0
- adds r3, 0x1
- cmp r3, 0x7
- ble _0800EE46
- adds r7, 0x1
- ldr r1, [sp, 0xC]
- cmp r7, r1
- blt _0800EE34
-_0800EE92:
- movs r7, 0
- movs r2, 0
-_0800EE96:
- movs r6, 0
- adds r4, r7, 0x1
- mov r8, r4
- lsls r4, r7, 5
-_0800EE9E:
- adds r0, r6, 0x1
- mov r10, r0
- lsls r1, r6, 8
- adds r0, r1, 0
- adds r0, 0xC0
- adds r0, r5, r0
- adds r0, r4
- adds r1, r5, r1
- adds r1, r4
- movs r3, 0x1F
-_0800EEB2:
- strb r2, [r1]
- strb r2, [r0]
- adds r0, 0x1
- adds r1, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _0800EEB2
- mov r6, r10
- cmp r6, 0x7
- ble _0800EE9E
- mov r7, r8
- cmp r7, 0x1
- ble _0800EE96
- mov r1, r9
- cmp r1, 0x5
- bne _0800EED8
- movs r2, 0x90
- lsls r2, 1
- adds r5, r2
-_0800EED8:
- movs r7, 0
- cmp r7, r9
- bge _0800EF6E
-_0800EEDE:
- movs r3, 0
- adds r7, 0x1
- mov r8, r7
- cmp r3, r9
- bge _0800EF4E
-_0800EEE8:
- adds r3, 0x1
- mov r10, r3
- ldr r4, [sp, 0x4]
- adds r4, 0x20
- adds r7, r5, 0
- adds r7, 0x20
- movs r0, 0x12
- adds r0, r5
- mov r12, r0
- ldr r2, [sp, 0x4]
- adds r3, r5, 0
- movs r6, 0x3
-_0800EF00:
- ldrb r0, [r2]
- mov r1, r12
- strb r0, [r1]
- ldrb r0, [r2, 0x1]
- strb r0, [r1, 0x1]
- ldrb r0, [r2, 0x2]
- strb r0, [r1, 0x1E]
- ldrb r0, [r2, 0x3]
- strb r0, [r1, 0x1F]
- movs r0, 0x81
- lsls r0, 1
- adds r1, r3, r0
- ldrb r0, [r2, 0x10]
- strb r0, [r1]
- ldr r0, _0800EF58 @ =0x00000103
- adds r1, r3, r0
- ldrb r0, [r2, 0x11]
- strb r0, [r1]
- movs r0, 0x90
- lsls r0, 1
- adds r1, r3, r0
- ldrb r0, [r2, 0x12]
- strb r0, [r1]
- ldr r0, _0800EF5C @ =0x00000121
- adds r1, r3, r0
- ldrb r0, [r2, 0x13]
- strb r0, [r1]
- movs r1, 0x4
- add r12, r1
- adds r2, 0x4
- adds r3, 0x4
- subs r6, 0x1
- cmp r6, 0
- bge _0800EF00
- str r4, [sp, 0x4]
- adds r5, r7, 0
- mov r3, r10
- cmp r3, r9
- blt _0800EEE8
-_0800EF4E:
- mov r2, r9
- cmp r2, 0x7
- bne _0800EF60
- adds r5, 0x20
- b _0800EF68
- .align 2, 0
-_0800EF58: .4byte 0x00000103
-_0800EF5C: .4byte 0x00000121
-_0800EF60:
- mov r4, r9
- cmp r4, 0x5
- bne _0800EF68
- adds r5, 0x60
-_0800EF68:
- mov r7, r8
- cmp r7, r9
- blt _0800EEDE
-_0800EF6E:
- mov r0, r9
- cmp r0, 0x7
- bne _0800EF7C
- movs r1, 0x80
- lsls r1, 1
- adds r5, r1
- b _0800EF88
-_0800EF7C:
- mov r2, r9
- cmp r2, 0x5
- bne _0800EF88
- movs r4, 0xF0
- lsls r4, 1
- adds r5, r4
-_0800EF88:
- ldr r0, [sp, 0x14]
- ldr r1, [sp]
- cmp r0, r1
- bge _0800EF92
- b _0800EE16
-_0800EF92:
- b _0800F024
-_0800EF94:
- movs r6, 0
- ldr r2, [sp]
- cmp r6, r2
- bge _0800F024
-_0800EF9C:
- adds r6, 0x1
- mov r10, r6
- mov r4, r9
- cmp r4, 0x6
- bne _0800EFB4
- movs r0, 0
- movs r3, 0xFF
-_0800EFAA:
- strb r0, [r5]
- adds r5, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _0800EFAA
-_0800EFB4:
- movs r7, 0
- cmp r7, r9
- bge _0800F008
-_0800EFBA:
- adds r7, 0x1
- mov r8, r7
- mov r1, r9
- lsls r0, r1, 5
- cmp r1, 0x6
- bne _0800EFD4
- movs r1, 0
- movs r3, 0x1F
-_0800EFCA:
- strb r1, [r5]
- adds r5, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _0800EFCA
-_0800EFD4:
- adds r1, r0, 0
- cmp r1, 0
- ble _0800EFEE
- adds r3, r1, 0
-_0800EFDC:
- ldr r2, [sp, 0x4]
- ldrb r0, [r2]
- strb r0, [r5]
- adds r2, 0x1
- str r2, [sp, 0x4]
- adds r5, 0x1
- subs r3, 0x1
- cmp r3, 0
- bne _0800EFDC
-_0800EFEE:
- mov r4, r9
- cmp r4, 0x6
- bne _0800F002
- movs r0, 0
- movs r3, 0x1F
-_0800EFF8:
- strb r0, [r5]
- adds r5, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _0800EFF8
-_0800F002:
- mov r7, r8
- cmp r7, r9
- blt _0800EFBA
-_0800F008:
- mov r0, r9
- cmp r0, 0x6
- bne _0800F01C
- movs r0, 0
- movs r3, 0xFF
-_0800F012:
- strb r0, [r5]
- adds r5, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _0800F012
-_0800F01C:
- mov r6, r10
- ldr r1, [sp]
- cmp r6, r1
- blt _0800EF9C
-_0800F024:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_800EDDC
-
- thumb_func_start sub_800F034
-sub_800F034: @ 800F034
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r0, [r4]
- ldr r0, [r0]
- lsrs r0, 8
- bl AllocZeroed
- adds r5, r0, 0
- cmp r5, 0
- beq _0800F06E
- ldr r0, [r4]
- adds r1, r5, 0
- bl LZ77UnCompWram
- str r5, [sp]
- ldrh r1, [r4, 0x6]
- lsls r1, 16
- ldrh r0, [r4, 0x4]
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- adds r0, r5, 0
- bl Free
- movs r0, 0
- b _0800F070
-_0800F06E:
- movs r0, 0x1
-_0800F070:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_800F034
-
- thumb_func_start sub_800F078
-sub_800F078: @ 800F078
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r0, [r4]
- ldr r0, [r0]
- lsrs r0, 8
- bl AllocZeroed
- adds r5, r0, 0
- cmp r5, 0
- beq _0800F0B8
- ldr r0, [r4]
- adds r1, r5, 0
- bl LZ77UnCompWram
- str r5, [sp]
- ldrh r2, [r4, 0x4]
- ldr r1, _0800F0B4 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- orrs r0, r2
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpritePalette
- adds r0, r5, 0
- bl Free
- movs r0, 0
- b _0800F0BA
- .align 2, 0
-_0800F0B4: .4byte 0xffff0000
-_0800F0B8:
- movs r0, 0x1
-_0800F0BA:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_800F078
-
- thumb_func_start GetDecompressedDataSize
-GetDecompressedDataSize: @ 800F0C4
- sub sp, 0x4
- mov r3, sp
- ldrb r2, [r0, 0x1]
- mov r1, sp
- strb r2, [r1]
- ldrb r1, [r0, 0x2]
- strb r1, [r3, 0x1]
- ldrb r0, [r0, 0x3]
- strb r0, [r3, 0x2]
- movs r0, 0
- strb r0, [r3, 0x3]
- ldr r0, [sp]
- add sp, 0x4
- bx lr
- thumb_func_end GetDecompressedDataSize
-
- thumb_func_start DecompressPicFromTable_DontHandleDeoxys
-DecompressPicFromTable_DontHandleDeoxys: @ 800F0E0
- push {lr}
- adds r3, r0, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r2, r0
- ble _0800F0FC
- ldr r0, _0800F0F8 @ =gMonFrontPicTable
- ldr r0, [r0]
- bl LZ77UnCompWram
- b _0800F102
- .align 2, 0
-_0800F0F8: .4byte gMonFrontPicTable
-_0800F0FC:
- ldr r0, [r3]
- bl LZ77UnCompWram
-_0800F102:
- pop {r0}
- bx r0
- thumb_func_end DecompressPicFromTable_DontHandleDeoxys
-
- thumb_func_start HandleLoadSpecialPokePic_DontHandleDeoxys
-HandleLoadSpecialPokePic_DontHandleDeoxys: @ 800F108
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r0, r2, 3
- ldr r1, _0800F130 @ =gMonFrontPicTable
- adds r0, r1
- movs r1, 0
- cmp r4, r0
- bne _0800F11E
- movs r1, 0x1
-_0800F11E:
- str r1, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl LoadSpecialPokePic_DontHandleDeoxys
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800F130: .4byte gMonFrontPicTable
- thumb_func_end HandleLoadSpecialPokePic_DontHandleDeoxys
-
- thumb_func_start LoadSpecialPokePic_DontHandleDeoxys
-LoadSpecialPokePic_DontHandleDeoxys: @ 800F134
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r7, r2, 0
- adds r4, r3, 0
- ldr r0, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r7, 0xC9
- bne _0800F1B0
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r4
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r4
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r4
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r4
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _0800F182
- movs r1, 0xC9
- b _0800F18C
-_0800F182:
- movs r2, 0xCE
- lsls r2, 1
- adds r0, r1, r2
- lsls r0, 16
- lsrs r1, r0, 16
-_0800F18C:
- mov r0, r8
- cmp r0, 0
- bne _0800F1A0
- ldr r0, _0800F19C @ =gMonBackPicTable
- lsls r1, 3
- adds r1, r0
- ldr r0, [r1]
- b _0800F1BC
- .align 2, 0
-_0800F19C: .4byte gMonBackPicTable
-_0800F1A0:
- ldr r0, _0800F1AC @ =gMonFrontPicTable
- lsls r1, 3
- adds r1, r0
- ldr r0, [r1]
- b _0800F1BC
- .align 2, 0
-_0800F1AC: .4byte gMonFrontPicTable
-_0800F1B0:
- movs r0, 0xCE
- lsls r0, 1
- cmp r7, r0
- ble _0800F1C8
- ldr r0, _0800F1C4 @ =gMonFrontPicTable
- ldr r0, [r0]
-_0800F1BC:
- adds r1, r5, 0
- bl LZ77UnCompWram
- b _0800F1D0
- .align 2, 0
-_0800F1C4: .4byte gMonFrontPicTable
-_0800F1C8:
- ldr r0, [r6]
- adds r1, r5, 0
- bl LZ77UnCompWram
-_0800F1D0:
- lsls r0, r7, 16
- lsrs r0, 16
- adds r1, r4, 0
- adds r2, r5, 0
- mov r3, r8
- bl DrawSpindaSpots
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end LoadSpecialPokePic_DontHandleDeoxys
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/diploma.s b/asm/diploma.s
deleted file mode 100644
index 31f0d368d..000000000
--- a/asm/diploma.s
+++ /dev/null
@@ -1,607 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F4BFC
-sub_80F4BFC: @ 80F4BFC
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80F4BFC
-
- thumb_func_start sub_80F4C10
-sub_80F4C10: @ 80F4C10
- push {r4,lr}
- ldr r4, _080F4C40 @ =gUnknown_203AB48
- ldr r0, _080F4C44 @ =0x00001004
- bl AllocZeroed
- str r0, [r4]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- strb r1, [r0, 0x1]
- ldr r0, [r4]
- strb r1, [r0, 0x2]
- bl sub_80F4E24
- ldr r0, _080F4C48 @ =sub_80F4C68
- movs r1, 0
- bl CreateTask
- ldr r0, _080F4C4C @ =sub_80F4C50
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4C40: .4byte gUnknown_203AB48
-_080F4C44: .4byte 0x00001004
-_080F4C48: .4byte sub_80F4C68
-_080F4C4C: .4byte sub_80F4C50
- thumb_func_end sub_80F4C10
-
- thumb_func_start sub_80F4C50
-sub_80F4C50: @ 80F4C50
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80F4C50
-
- thumb_func_start sub_80F4C68
-sub_80F4C68: @ 80F4C68
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080F4C84 @ =gUnknown_203AB48
- ldr r0, [r0]
- ldrb r0, [r0, 0x2]
- cmp r0, 0x8
- bhi _080F4D30
- lsls r0, 2
- ldr r1, _080F4C88 @ =_080F4C8C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F4C84: .4byte gUnknown_203AB48
-_080F4C88: .4byte _080F4C8C
- .align 2, 0
-_080F4C8C:
- .4byte _080F4CB0
- .4byte _080F4CB8
- .4byte _080F4CBE
- .4byte _080F4CCA
- .4byte _080F4CDC
- .4byte _080F4CFC
- .4byte _080F4D02
- .4byte _080F4D10
- .4byte _080F4D22
-_080F4CB0:
- movs r0, 0
- bl SetVBlankCallback
- b _080F4D50
-_080F4CB8:
- bl sub_80F4E40
- b _080F4D50
-_080F4CBE:
- bl sub_80F4F9C
- lsls r0, 24
- cmp r0, 0
- beq _080F4D5A
- b _080F4D50
-_080F4CCA:
- ldr r1, _080F4CD8 @ =gUnknown_84154E8
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- b _080F4D50
- .align 2, 0
-_080F4CD8: .4byte gUnknown_84154E8
-_080F4CDC:
- bl sub_8088F84
- lsls r0, 16
- cmp r0, 0
- beq _080F4CF2
- movs r1, 0x80
- lsls r1, 1
- movs r0, 0x14
- bl SetGpuReg
- b _080F4D50
-_080F4CF2:
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- b _080F4D50
-_080F4CFC:
- bl sub_80F5018
- b _080F4D50
-_080F4D02:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- b _080F4D50
-_080F4D10:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _080F4D50
-_080F4D22:
- ldr r0, _080F4D2C @ =sub_80F4BFC
- bl SetVBlankCallback
- b _080F4D50
- .align 2, 0
-_080F4D2C: .4byte sub_80F4BFC
-_080F4D30:
- ldr r0, _080F4D64 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F4D50
- movs r0, 0x5
- bl PlayFanfareByFanfareNum
- ldr r0, _080F4D68 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080F4D6C @ =sub_80F4D74
- str r0, [r1]
-_080F4D50:
- ldr r0, _080F4D70 @ =gUnknown_203AB48
- ldr r1, [r0]
- ldrb r0, [r1, 0x2]
- adds r0, 0x1
- strb r0, [r1, 0x2]
-_080F4D5A:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4D64: .4byte gPaletteFade
-_080F4D68: .4byte gTasks
-_080F4D6C: .4byte sub_80F4D74
-_080F4D70: .4byte gUnknown_203AB48
- thumb_func_end sub_80F4C68
-
- thumb_func_start sub_80F4D74
-sub_80F4D74: @ 80F4D74
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r4, _080F4D90 @ =gUnknown_203AB48
- ldr r0, [r4]
- ldrb r1, [r0]
- cmp r1, 0x1
- beq _080F4DA8
- cmp r1, 0x1
- bgt _080F4D94
- cmp r1, 0
- beq _080F4D9A
- b _080F4DD6
- .align 2, 0
-_080F4D90: .4byte gUnknown_203AB48
-_080F4D94:
- cmp r1, 0x2
- beq _080F4DD0
- b _080F4DD6
-_080F4D9A:
- movs r0, 0
- bl WaitFanfare
- lsls r0, 24
- cmp r0, 0
- beq _080F4DD6
- b _080F4DC2
-_080F4DA8:
- ldr r0, _080F4DCC @ =gMain
- ldrh r0, [r0, 0x2E]
- ands r1, r0
- cmp r1, 0
- beq _080F4DD6
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_080F4DC2:
- ldr r1, [r4]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080F4DD6
- .align 2, 0
-_080F4DCC: .4byte gMain
-_080F4DD0:
- adds r0, r2, 0
- bl sub_80F4DE0
-_080F4DD6:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F4D74
-
- thumb_func_start sub_80F4DE0
-sub_80F4DE0: @ 80F4DE0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080F4E18 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080F4E10
- adds r0, r2, 0
- bl DestroyTask
- bl FreeAllWindowBuffers
- ldr r4, _080F4E1C @ =gUnknown_203AB48
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r0, _080F4E20 @ =sub_80568FC
- bl SetMainCallback2
-_080F4E10:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4E18: .4byte gPaletteFade
-_080F4E1C: .4byte gUnknown_203AB48
-_080F4E20: .4byte sub_80568FC
- thumb_func_end sub_80F4DE0
-
- thumb_func_start sub_80F4E24
-sub_80F4E24: @ 80F4E24
- push {lr}
- bl ResetSpriteData
- bl ResetPaletteFade
- bl FreeAllSpritePalettes
- bl ResetTasks
- bl ScanlineEffect_Stop
- pop {r0}
- bx r0
- thumb_func_end sub_80F4E24
-
- thumb_func_start sub_80F4E40
-sub_80F4E40: @ 80F4E40
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0xC
- mov r8, r0
- add r2, sp, 0x8
- movs r6, 0
- ldr r1, _080F4F88 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _080F4F8C @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_080F4E66:
- strh r6, [r2]
- add r0, sp, 0x8
- str r0, [r1]
- str r3, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r5
- subs r4, r5
- cmp r4, r5
- bhi _080F4E66
- strh r6, [r2]
- add r2, sp, 0x8
- str r2, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r4, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0xE0
- lsls r0, 19
- movs r3, 0x80
- lsls r3, 3
- movs r4, 0
- str r4, [sp, 0xC]
- ldr r2, _080F4F88 @ =0x040000d4
- mov r1, r8
- str r1, [r2]
- str r0, [r2, 0x4]
- lsrs r0, r3, 2
- movs r1, 0x85
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r1, 0xA0
- lsls r1, 19
- add r0, sp, 0x8
- strh r4, [r0]
- str r0, [r2]
- str r1, [r2, 0x4]
- lsrs r3, 1
- movs r0, 0x81
- lsls r0, 24
- orrs r3, r0
- str r3, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _080F4F90 @ =gUnknown_8415A08
- movs r0, 0
- movs r2, 0x2
- bl InitBgsFromTemplates
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldr r0, _080F4F94 @ =gUnknown_8415A10
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r0, _080F4F98 @ =gUnknown_203AB48
- ldr r1, [r0]
- adds r1, 0x4
- movs r0, 0x1
- bl SetBgTilemapBuffer
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r5, 0x1E
- str r5, [sp]
- movs r4, 0x14
- str r4, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4F88: .4byte 0x040000d4
-_080F4F8C: .4byte 0x81000800
-_080F4F90: .4byte gUnknown_8415A08
-_080F4F94: .4byte gUnknown_8415A10
-_080F4F98: .4byte gUnknown_203AB48
- thumb_func_end sub_80F4E40
-
- thumb_func_start sub_80F4F9C
-sub_80F4F9C: @ 80F4F9C
- push {lr}
- sub sp, 0x4
- ldr r0, _080F4FB4 @ =gUnknown_203AB48
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x1
- beq _080F4FC8
- cmp r0, 0x1
- bgt _080F4FB8
- cmp r0, 0
- beq _080F4FC2
- b _080F4FF8
- .align 2, 0
-_080F4FB4: .4byte gUnknown_203AB48
-_080F4FB8:
- cmp r0, 0x2
- beq _080F4FE0
- cmp r0, 0x3
- beq _080F4FEE
- b _080F4FF8
-_080F4FC2:
- bl reset_temp_tile_data_buffers
- b _080F5000
-_080F4FC8:
- ldr r1, _080F4FDC @ =gUnknown_84147C0
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- b _080F5000
- .align 2, 0
-_080F4FDC: .4byte gUnknown_84147C0
-_080F4FE0:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F5000
- b _080F500A
-_080F4FEE:
- ldr r0, _080F4FFC @ =gUnknown_8415954
- movs r1, 0
- movs r2, 0x40
- bl LoadPalette
-_080F4FF8:
- movs r0, 0x1
- b _080F500C
- .align 2, 0
-_080F4FFC: .4byte gUnknown_8415954
-_080F5000:
- ldr r0, _080F5014 @ =gUnknown_203AB48
- ldr r1, [r0]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
-_080F500A:
- movs r0, 0
-_080F500C:
- add sp, 0x4
- pop {r1}
- bx r1
- .align 2, 0
-_080F5014: .4byte gUnknown_203AB48
- thumb_func_end sub_80F4F9C
-
- thumb_func_start sub_80F5018
-sub_80F5018: @ 80F5018
- push {r4-r6,lr}
- sub sp, 0xAC
- bl UnkTextUtil_Reset
- ldr r0, _080F5040 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- movs r0, 0
- bl UnkTextUtil_SetPtrI
- bl sub_8088F84
- lsls r0, 16
- cmp r0, 0
- beq _080F5048
- ldr r1, _080F5044 @ =gUnknown_841B68F
- movs r0, 0x1
- bl UnkTextUtil_SetPtrI
- b _080F5050
- .align 2, 0
-_080F5040: .4byte gSaveBlock2Ptr
-_080F5044: .4byte gUnknown_841B68F
-_080F5048:
- ldr r1, _080F50E0 @ =gUnknown_841B698
- movs r0, 0x1
- bl UnkTextUtil_SetPtrI
-_080F5050:
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r1, _080F50E4 @ =gUnknown_841B60E
- add r0, sp, 0xC
- bl UnkTextUtil_StringExpandPlaceholders
- movs r5, 0x1
- negs r5, r5
- movs r0, 0x2
- add r1, sp, 0xC
- adds r2, r5, 0
- bl GetStringWidth
- lsrs r2, r0, 1
- movs r4, 0x78
- subs r2, r4, r2
- lsls r2, 24
- lsrs r2, 24
- ldr r6, _080F50E8 @ =gUnknown_8415A04
- str r6, [sp]
- str r5, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- movs r3, 0x4
- bl box_print
- ldr r1, _080F50EC @ =gUnknown_841B619
- add r0, sp, 0xC
- bl UnkTextUtil_StringExpandPlaceholders
- movs r0, 0x2
- add r1, sp, 0xC
- adds r2, r5, 0
- bl GetStringWidth
- lsrs r0, 1
- subs r4, r0
- lsls r4, 24
- lsrs r4, 24
- str r6, [sp]
- str r5, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0x1E
- bl box_print
- str r6, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- ldr r0, _080F50F0 @ =gUnknown_841B684
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x78
- movs r3, 0x69
- bl box_print
- movs r0, 0
- bl PutWindowTilemap
- add sp, 0xAC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F50E0: .4byte gUnknown_841B698
-_080F50E4: .4byte gUnknown_841B60E
-_080F50E8: .4byte gUnknown_8415A04
-_080F50EC: .4byte gUnknown_841B619
-_080F50F0: .4byte gUnknown_841B684
- thumb_func_end sub_80F5018
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s
index 19b2b2c43..13a4d95b5 100644
--- a/asm/dodrio_berry_picking.s
+++ b/asm/dodrio_berry_picking.s
@@ -6474,7 +6474,7 @@ sub_81538D0: @ 81538D0
adds r0, r7, 0
adds r1, r4, 0
movs r2, 0xD0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
adds r0, r7, 0
adds r1, r4, 0
movs r2, 0xD
@@ -8351,7 +8351,7 @@ sub_8154720: @ 8154720
movs r0, 0
movs r1, 0xA
movs r2, 0xB0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
pop {r0}
bx r0
thumb_func_end sub_8154720
@@ -9014,7 +9014,7 @@ _08154C4E:
str r4, [sp, 0x8]
movs r1, 0
movs r3, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
mov r2, r10
ldr r0, [r2]
add r0, r9
@@ -9319,7 +9319,7 @@ _08154EC8:
movs r1, 0
movs r2, 0x1C
adds r3, r6, 0
- bl box_print
+ bl AddTextPrinterParameterized3
add r0, sp, 0xC
mov r1, r9
movs r2, 0x1
@@ -9563,7 +9563,7 @@ _081550EA:
str r6, [sp, 0x8]
movs r1, 0
movs r2, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
movs r7, 0
mov r0, r9
adds r0, 0x1
@@ -9624,7 +9624,7 @@ _0815512E:
add r1, sp, 0xC
str r1, [sp, 0x8]
movs r1, 0
- bl box_print
+ bl AddTextPrinterParameterized3
b _081551FA
.align 2, 0
_081551A8: .4byte gUnknown_203F440
@@ -9983,7 +9983,7 @@ _08155480:
movs r1, 0
adds r2, r5, 0
bl AddTextPrinterParameterized
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
bl sub_8153390
lsls r0, 16
lsrs r0, 16
@@ -9992,10 +9992,10 @@ _08155480:
bl CopyItemName
movs r0, 0
adds r1, r5, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r1, _0815556C @ =gUnknown_841CD7A
add r0, sp, 0xC
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
ldr r0, [r4]
add r0, r10
ldrb r0, [r0]
@@ -10016,7 +10016,7 @@ _08155480:
beq _0815559E
cmp r4, 0x3
beq _0815559E
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
bl sub_8153390
lsls r0, 16
lsrs r0, 16
@@ -10024,12 +10024,12 @@ _08155480:
bl CopyItemName
movs r0, 0
adds r1, r5, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
cmp r4, 0x2
bne _08155574
ldr r1, _08155570 @ =gUnknown_841CD9F
add r0, sp, 0xC
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
b _08155580
.align 2, 0
_08155558: .4byte 0x00000101
@@ -10044,7 +10044,7 @@ _08155574:
bne _08155580
ldr r1, _081555C4 @ =gUnknown_841CDBA
add r0, sp, 0xC
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
_08155580:
ldr r0, _081555C8 @ =gUnknown_203F440
ldr r0, [r0]
@@ -10669,7 +10669,7 @@ _08155AA6:
movs r0, 0
movs r1, 0x2
movs r3, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
b _08155B08
.align 2, 0
_08155ACC: .4byte gUnknown_8419F54
@@ -11348,7 +11348,7 @@ _08156020:
.align 2, 0
_0815602C: .4byte gUnknown_84758A8
_08156030:
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
b _08156082
_08156036:
ldr r1, _08156040 @ =gUnknown_8475B3C
@@ -11366,12 +11366,12 @@ _08156044:
_0815604C:
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
b _08156082
.align 2, 0
_08156058: .4byte gUnknown_84763CC
_0815605C:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
diff --git a/asm/dragon.s b/asm/dragon.s
new file mode 100644
index 000000000..66e76017a
--- /dev/null
+++ b/asm/dragon.s
@@ -0,0 +1,835 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80B725C
+sub_80B725C: @ 80B725C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080B72A4 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B72AC
+ ldr r2, _080B72A8 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r5, 0x20]
+ ldrh r0, [r2, 0x6]
+ negs r0, r0
+ strh r0, [r2, 0x6]
+ ldrh r0, [r2, 0x8]
+ negs r0, r0
+ strh r0, [r2, 0x8]
+ adds r1, r2, 0
+ b _080B72B6
+ .align 2, 0
+_080B72A4: .4byte gBattleAnimAttacker
+_080B72A8: .4byte gBattleAnimArgs
+_080B72AC:
+ ldr r1, _080B72EC @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r5, 0x20]
+ adds r0, r2
+ strh r0, [r5, 0x20]
+_080B72B6:
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r5, 0x34]
+ ldrh r0, [r1, 0xA]
+ strh r0, [r5, 0x38]
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r1, _080B72F0 @ =move_anim_8074EE0
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080B72F4 @ =sub_8074E70
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B72EC: .4byte gBattleAnimArgs
+_080B72F0: .4byte move_anim_8074EE0
+_080B72F4: .4byte sub_8074E70
+ thumb_func_end sub_80B725C
+
+ thumb_func_start sub_80B72F8
+sub_80B72F8: @ 80B72F8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl sub_8074FCC
+ ldr r4, _080B7350 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ ldr r0, _080B7354 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B735C
+ ldr r2, _080B7358 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0x20]
+ ldrh r1, [r2, 0x2]
+ subs r0, r1
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x22]
+ adds r1, r0
+ strh r1, [r5, 0x22]
+ ldrh r0, [r5, 0x32]
+ ldrh r1, [r2, 0x4]
+ subs r0, r1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r2, 0x6]
+ ldrh r1, [r5, 0x36]
+ adds r0, r1
+ strh r0, [r5, 0x36]
+ b _080B7386
+ .align 2, 0
+_080B7350: .4byte gBattleAnimTarget
+_080B7354: .4byte gBattleAnimAttacker
+_080B7358: .4byte gBattleAnimArgs
+_080B735C:
+ ldr r1, _080B73A0 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r5, 0x20]
+ adds r0, r2
+ strh r0, [r5, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ ldrh r0, [r1, 0x4]
+ ldrh r2, [r5, 0x32]
+ adds r0, r2
+ strh r0, [r5, 0x32]
+ ldrh r0, [r1, 0x6]
+ ldrh r1, [r5, 0x36]
+ adds r0, r1
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+_080B7386:
+ ldr r0, _080B73A0 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x8]
+ strh r0, [r5, 0x2E]
+ ldr r0, _080B73A4 @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080B73A8 @ =move_anim_8074EE0
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B73A0: .4byte gBattleAnimArgs
+_080B73A4: .4byte sub_8075590
+_080B73A8: .4byte move_anim_8074EE0
+ thumb_func_end sub_80B72F8
+
+ thumb_func_start sub_80B73AC
+sub_80B73AC: @ 80B73AC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080B73C0 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B73C8
+ ldr r4, _080B73C4 @ =gBattleAnimAttacker
+ b _080B73CA
+ .align 2, 0
+_080B73C0: .4byte gBattleAnimArgs
+_080B73C4: .4byte gBattleAnimAttacker
+_080B73C8:
+ ldr r4, _080B740C @ =gBattleAnimTarget
+_080B73CA:
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r4, _080B7410 @ =gBattleAnimArgs
+ movs r0, 0x2
+ ldrsh r1, [r4, r0]
+ adds r0, r5, 0
+ bl sub_8074FF8
+ ldrh r0, [r4, 0x4]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ ldr r0, _080B7414 @ =sub_8074F6C
+ str r0, [r5, 0x1C]
+ ldr r1, _080B7418 @ =move_anim_8074EE0
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B740C: .4byte gBattleAnimTarget
+_080B7410: .4byte gBattleAnimArgs
+_080B7414: .4byte sub_8074F6C
+_080B7418: .4byte move_anim_8074EE0
+ thumb_func_end sub_80B73AC
+
+ thumb_func_start sub_80B741C
+sub_80B741C: @ 80B741C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080B7444 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B7436
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+_080B7436:
+ adds r0, r4, 0
+ bl sub_80B72F8
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7444: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80B741C
+
+ thumb_func_start sub_80B7448
+sub_80B7448: @ 80B7448
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ ldr r4, _080B749C @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ strh r0, [r6, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x22]
+ strh r5, [r6, 0x36]
+ movs r0, 0x1
+ strh r0, [r6, 0x38]
+ ldr r0, _080B74A0 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r6, 0x3A]
+ ldr r4, _080B74A4 @ =sBattler_AI
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8076B2C
+ lsls r7, r0, 16
+ lsrs r5, r7, 16
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8076B2C
+ lsls r1, r0, 16
+ lsrs r0, r1, 16
+ cmp r5, r0
+ bls _080B74A8
+ lsrs r0, r7, 17
+ b _080B74AA
+ .align 2, 0
+_080B749C: .4byte gBattleAnimAttacker
+_080B74A0: .4byte gBattleAnimArgs
+_080B74A4: .4byte sBattler_AI
+_080B74A8:
+ lsrs r0, r1, 17
+_080B74AA:
+ strh r0, [r6, 0x3C]
+ movs r1, 0x3A
+ ldrsh r0, [r6, r1]
+ movs r2, 0x3C
+ ldrsh r1, [r6, r2]
+ bl Cos
+ strh r0, [r6, 0x24]
+ movs r1, 0x3A
+ ldrsh r0, [r6, r1]
+ movs r2, 0x3C
+ ldrsh r1, [r6, r2]
+ bl Sin
+ strh r0, [r6, 0x26]
+ ldr r0, _080B74D4 @ =sub_80B74D8
+ str r0, [r6, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B74D4: .4byte sub_80B74D8
+ thumb_func_end sub_80B7448
+
+ thumb_func_start sub_80B74D8
+sub_80B74D8: @ 80B74D8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x2E
+ ldrsh r5, [r4, r0]
+ cmp r5, 0
+ beq _080B74EA
+ cmp r5, 0x1
+ beq _080B7556
+ b _080B75DA
+_080B74EA:
+ ldrh r0, [r4, 0x3A]
+ ldrh r1, [r4, 0x38]
+ subs r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3A]
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ movs r2, 0x3C
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ movs r2, 0x3C
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x1
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ ble _080B753C
+ strh r5, [r4, 0x36]
+ ldrh r1, [r4, 0x38]
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xF
+ bgt _080B753C
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ ble _080B753C
+ movs r0, 0x10
+ strh r0, [r4, 0x38]
+_080B753C:
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3C
+ ble _080B75DA
+ movs r0, 0
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080B75DA
+_080B7556:
+ ldrh r0, [r4, 0x3A]
+ ldrh r1, [r4, 0x38]
+ subs r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3A]
+ ldrh r1, [r4, 0x3C]
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x95
+ bgt _080B757E
+ adds r0, r1, 0
+ adds r0, 0x8
+ strh r0, [r4, 0x3C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x95
+ ble _080B757E
+ movs r0, 0x96
+ strh r0, [r4, 0x3C]
+_080B757E:
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ movs r2, 0x3C
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ movs r2, 0x3C
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x1
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ ble _080B75C6
+ movs r0, 0
+ strh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x38]
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xF
+ bgt _080B75C6
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ ble _080B75C6
+ movs r0, 0x10
+ strh r0, [r4, 0x38]
+_080B75C6:
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ ble _080B75DA
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B75DA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B74D8
+
+ thumb_func_start sub_80B75E0
+sub_80B75E0: @ 80B75E0
+ 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, _080B760C @ =gTasks
+ adds r4, r1, r0
+ ldr r0, _080B7610 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080B761C
+ ldr r0, _080B7614 @ =0x04000014
+ str r0, [sp]
+ ldr r0, _080B7618 @ =gBattle_BG1_X
+ b _080B7622
+ .align 2, 0
+_080B760C: .4byte gTasks
+_080B7610: .4byte gBattleAnimAttacker
+_080B7614: .4byte 0x04000014
+_080B7618: .4byte gBattle_BG1_X
+_080B761C:
+ ldr r0, _080B7698 @ =0x04000018
+ str r0, [sp]
+ ldr r0, _080B769C @ =gBattle_BG2_X
+_080B7622:
+ ldrh r0, [r0]
+ strh r0, [r4, 0xC]
+ ldr r0, _080B76A0 @ =0xa2600001
+ str r0, [sp, 0x4]
+ mov r1, sp
+ movs r5, 0
+ movs r0, 0x1
+ strb r0, [r1, 0x8]
+ mov r0, sp
+ strb r5, [r0, 0x9]
+ ldr r0, _080B76A4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ subs r1, 0x20
+ strh r1, [r4, 0xE]
+ adds r0, 0x20
+ strh r0, [r4, 0x10]
+ cmp r1, 0
+ bge _080B7652
+ strh r5, [r4, 0xE]
+_080B7652:
+ ldrh r3, [r4, 0xE]
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r3, r0
+ bgt _080B7680
+ ldr r5, _080B76A8 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r5, r0
+_080B7664:
+ lsls r1, r3, 1
+ adds r2, r1, r5
+ ldrh r0, [r4, 0xC]
+ strh r0, [r2]
+ adds r1, r6
+ ldrh r0, [r4, 0xC]
+ strh r0, [r1]
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r3, r0
+ ble _080B7664
+_080B7680:
+ ldr r0, [sp]
+ ldr r1, [sp, 0x4]
+ ldr r2, [sp, 0x8]
+ bl ScanlineEffect_SetParams
+ ldr r0, _080B76AC @ =sub_80B76B0
+ str r0, [r4]
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7698: .4byte 0x04000018
+_080B769C: .4byte gBattle_BG2_X
+_080B76A0: .4byte 0xa2600001
+_080B76A4: .4byte gBattleAnimAttacker
+_080B76A8: .4byte gScanlineEffectRegBuffers
+_080B76AC: .4byte sub_80B76B0
+ thumb_func_end sub_80B75E0
+
+ thumb_func_start sub_80B76B0
+sub_80B76B0: @ 80B76B0
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ ldr r1, _080B76D4 @ =gTasks
+ adds r2, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x4
+ bhi _080B7766
+ lsls r0, 2
+ ldr r1, _080B76D8 @ =_080B76DC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B76D4: .4byte gTasks
+_080B76D8: .4byte _080B76DC
+ .align 2, 0
+_080B76DC:
+ .4byte _080B76F0
+ .4byte _080B7712
+ .4byte _080B7722
+ .4byte _080B774E
+ .4byte _080B7760
+_080B76F0:
+ ldrh r0, [r2, 0x16]
+ adds r0, 0x1
+ strh r0, [r2, 0x16]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B7746
+ movs r0, 0
+ strh r0, [r2, 0x16]
+ ldrh r0, [r2, 0x14]
+ adds r0, 0x1
+ strh r0, [r2, 0x14]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080B7746
+ b _080B7740
+_080B7712:
+ ldrh r0, [r2, 0xA]
+ adds r0, 0x1
+ strh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3C
+ ble _080B7746
+ b _080B7740
+_080B7722:
+ ldrh r0, [r2, 0x16]
+ adds r0, 0x1
+ strh r0, [r2, 0x16]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B7746
+ movs r0, 0
+ strh r0, [r2, 0x16]
+ ldrh r0, [r2, 0x14]
+ subs r0, 0x1
+ strh r0, [r2, 0x14]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080B7746
+_080B7740:
+ ldrh r0, [r2, 0x8]
+ adds r0, 0x1
+ strh r0, [r2, 0x8]
+_080B7746:
+ adds r0, r2, 0
+ bl sub_80B776C
+ b _080B7766
+_080B774E:
+ ldr r1, _080B775C @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+ ldrh r0, [r2, 0x8]
+ adds r0, 0x1
+ strh r0, [r2, 0x8]
+ b _080B7766
+ .align 2, 0
+_080B775C: .4byte gScanlineEffect
+_080B7760:
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+_080B7766:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B76B0
+
+ thumb_func_start sub_80B776C
+sub_80B776C: @ 80B776C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r5, r0, 0
+ ldrh r3, [r5, 0x12]
+ ldrh r4, [r5, 0xE]
+ movs r1, 0x10
+ ldrsh r0, [r5, r1]
+ cmp r4, r0
+ bgt _080B77C2
+ ldr r7, _080B77D8 @ =gScanlineEffectRegBuffers
+ mov r12, r7
+ ldr r0, _080B77DC @ =gSineTable
+ mov r8, r0
+ ldr r6, _080B77E0 @ =gScanlineEffect
+_080B778A:
+ lsls r2, r4, 1
+ ldrb r1, [r6, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ add r2, r12
+ lsls r0, r3, 1
+ add r0, r8
+ movs r7, 0
+ ldrsh r1, [r0, r7]
+ movs r7, 0x14
+ ldrsh r0, [r5, r7]
+ muls r0, r1
+ asrs r0, 7
+ ldrh r1, [r5, 0xC]
+ adds r0, r1
+ strh r0, [r2]
+ adds r3, 0x8
+ movs r0, 0xFF
+ ands r3, r0
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r7, 0x10
+ ldrsh r0, [r5, r7]
+ cmp r4, r0
+ ble _080B778A
+_080B77C2:
+ ldrh r0, [r5, 0x12]
+ adds r0, 0x9
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x12]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B77D8: .4byte gScanlineEffectRegBuffers
+_080B77DC: .4byte gSineTable
+_080B77E0: .4byte gScanlineEffect
+ thumb_func_end sub_80B776C
+
+ thumb_func_start sub_80B77E4
+sub_80B77E4: @ 80B77E4
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ adds r4, r0, 0
+ ldr r5, _080B7884 @ =gBattleAnimArgs
+ movs r0, 0x4
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ movs r1, 0x5
+ bl __divsi3
+ adds r6, r0, 0
+ ldr r1, _080B7888 @ =gBattleAnimAttacker
+ mov r8, r1
+ ldrb r0, [r1]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ mov r2, r8
+ ldrb r0, [r2]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r3, [r5, 0x8]
+ adds r0, r3
+ strh r0, [r4, 0x22]
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ movs r2, 0x4
+ ldrsh r1, [r5, r2]
+ bl Cos
+ strh r0, [r4, 0x30]
+ movs r3, 0x2
+ ldrsh r0, [r5, r3]
+ lsls r6, 16
+ asrs r6, 16
+ adds r1, r6, 0
+ bl Sin
+ strh r0, [r4, 0x32]
+ ldrh r1, [r4, 0x30]
+ ldrh r2, [r5]
+ adds r3, r2, 0
+ muls r3, r1
+ adds r1, r3, 0
+ ldrh r3, [r4, 0x20]
+ adds r1, r3
+ strh r1, [r4, 0x20]
+ adds r1, r2, 0
+ muls r1, r0
+ adds r0, r1, 0
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x34]
+ ldr r0, _080B788C @ =sub_80B7894
+ str r0, [r4, 0x1C]
+ adds r4, 0x2E
+ ldr r2, _080B7890 @ =gUnknown_20399A4
+ movs r1, 0x6
+_080B786C:
+ ldrh r0, [r4]
+ strh r0, [r2]
+ adds r4, 0x2
+ adds r2, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bge _080B786C
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7884: .4byte gBattleAnimArgs
+_080B7888: .4byte gBattleAnimAttacker
+_080B788C: .4byte sub_80B7894
+_080B7890: .4byte gUnknown_20399A4
+ thumb_func_end sub_80B77E4
+
+ thumb_func_start sub_80B7894
+sub_80B7894: @ 80B7894
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x36]
+ adds r0, r1
+ strh r0, [r4, 0x36]
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x38]
+ adds r0, r2
+ strh r0, [r4, 0x38]
+ movs r1, 0x36
+ ldrsh r0, [r4, r1]
+ movs r1, 0xA
+ bl __divsi3
+ strh r0, [r4, 0x24]
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ movs r1, 0xA
+ bl __divsi3
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ ble _080B78D8
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B78D8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B7894
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s
deleted file mode 100644
index 2428f2984..000000000
--- a/asm/egg_hatch.s
+++ /dev/null
@@ -1,8 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/electric.s b/asm/electric.s
new file mode 100644
index 000000000..187e30b6d
--- /dev/null
+++ b/asm/electric.s
@@ -0,0 +1,2675 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80ADBEC
+sub_80ADBEC: @ 80ADBEC
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080ADC0C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080ADC14
+ ldr r0, _080ADC10 @ =gBattleAnimArgs
+ ldrh r1, [r4, 0x20]
+ ldrh r2, [r0]
+ subs r1, r2
+ strh r1, [r4, 0x20]
+ b _080ADC20
+ .align 2, 0
+_080ADC0C: .4byte gBattleAnimAttacker
+_080ADC10: .4byte gBattleAnimArgs
+_080ADC14:
+ ldr r1, _080ADC34 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ adds r0, r1, 0
+_080ADC20:
+ ldrh r0, [r0, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r0, _080ADC38 @ =sub_80ADC3C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ADC34: .4byte gBattleAnimArgs
+_080ADC38: .4byte sub_80ADC3C
+ thumb_func_end sub_80ADBEC
+
+ thumb_func_start sub_80ADC3C
+sub_80ADC3C: @ 80ADC3C
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080ADC52
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080ADC52:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ADC3C
+
+ thumb_func_start sub_80ADC58
+sub_80ADC58: @ 80ADC58
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080ADC78 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080ADC80
+ ldr r0, _080ADC7C @ =gBattleAnimArgs
+ ldrh r1, [r4, 0x20]
+ ldrh r0, [r0]
+ subs r1, r0
+ strh r1, [r4, 0x20]
+ b _080ADC8A
+ .align 2, 0
+_080ADC78: .4byte gBattleAnimAttacker
+_080ADC7C: .4byte gBattleAnimArgs
+_080ADC80:
+ ldr r0, _080ADC94 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+_080ADC8A:
+ ldr r0, _080ADC98 @ =sub_80ADC9C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ADC94: .4byte gBattleAnimArgs
+_080ADC98: .4byte sub_80ADC9C
+ thumb_func_end sub_80ADC58
+
+ thumb_func_start sub_80ADC9C
+sub_80ADC9C: @ 80ADC9C
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080ADCB2
+ adds r0, r2, 0
+ bl move_anim_8074EE0
+_080ADCB2:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ADC9C
+
+ thumb_func_start sub_80ADCB8
+sub_80ADCB8: @ 80ADCB8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080ADCFC @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r0, _080ADD00 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080ADD08
+ ldr r2, _080ADD04 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x22]
+ ldrh r1, [r2, 0x2]
+ subs r0, r1
+ strh r0, [r5, 0x22]
+ b _080ADD1C
+ .align 2, 0
+_080ADCFC: .4byte gBattleAnimTarget
+_080ADD00: .4byte gBattleAnimAttacker
+_080ADD04: .4byte gBattleAnimArgs
+_080ADD08:
+ ldr r0, _080ADD40 @ =gBattleAnimArgs
+ ldrh r1, [r0]
+ ldrh r2, [r5, 0x20]
+ adds r1, r2
+ strh r1, [r5, 0x20]
+ ldrh r1, [r0, 0x2]
+ ldrh r2, [r5, 0x22]
+ adds r1, r2
+ strh r1, [r5, 0x22]
+ adds r2, r0, 0
+_080ADD1C:
+ movs r0, 0
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r2, 0x4]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r2, 0x6]
+ strh r0, [r5, 0x32]
+ ldrh r0, [r2, 0x8]
+ strh r0, [r5, 0x34]
+ ldr r1, _080ADD44 @ =move_anim_8074EE0
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080ADD48 @ =sub_8074A80
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ADD40: .4byte gBattleAnimArgs
+_080ADD44: .4byte move_anim_8074EE0
+_080ADD48: .4byte sub_8074A80
+ thumb_func_end sub_80ADCB8
+
+ thumb_func_start sub_80ADD4C
+sub_80ADD4C: @ 80ADD4C
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ ldr r0, _080ADD64 @ =gBattleAnimArgs
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x1
+ beq _080ADDC4
+ cmp r0, 0x1
+ bgt _080ADD68
+ cmp r0, 0
+ beq _080ADD72
+ b _080ADDC4
+ .align 2, 0
+_080ADD64: .4byte gBattleAnimArgs
+_080ADD68:
+ cmp r0, 0x2
+ beq _080ADD7C
+ cmp r0, 0x3
+ beq _080ADDA0
+ b _080ADDC4
+_080ADD72:
+ ldr r0, _080ADD78 @ =gBattleAnimAttacker
+ b _080ADDC6
+ .align 2, 0
+_080ADD78: .4byte gBattleAnimAttacker
+_080ADD7C:
+ ldr r4, _080ADD94 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r6, 0x2
+ eors r0, r6
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080ADD98
+ ldrb r4, [r4]
+ b _080ADDC8
+ .align 2, 0
+_080ADD94: .4byte gBattleAnimAttacker
+_080ADD98:
+ ldrb r0, [r4]
+ adds r4, r6, 0
+ eors r4, r0
+ b _080ADDC8
+_080ADDA0:
+ ldr r0, _080ADDBC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r4, 0x2
+ eors r0, r4
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080ADDC4
+ ldr r0, _080ADDC0 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ eors r4, r0
+ b _080ADDC8
+ .align 2, 0
+_080ADDBC: .4byte gBattleAnimAttacker
+_080ADDC0: .4byte gBattleAnimTarget
+_080ADDC4:
+ ldr r0, _080ADDE8 @ =gBattleAnimTarget
+_080ADDC6:
+ ldrb r4, [r0]
+_080ADDC8:
+ ldr r0, _080ADDEC @ =gBattleAnimArgs
+ movs r2, 0xA
+ ldrsh r0, [r0, r2]
+ cmp r0, 0
+ bne _080ADDF0
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ adds r0, r4, 0
+ movs r1, 0x1
+ b _080ADE02
+ .align 2, 0
+_080ADDE8: .4byte gBattleAnimTarget
+_080ADDEC: .4byte gBattleAnimArgs
+_080ADDF0:
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ adds r0, r4, 0
+ movs r1, 0x3
+_080ADE02:
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r7, _080ADEA0 @ =gSineTable
+ ldr r6, _080ADEA4 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ lsls r0, 1
+ adds r0, r7
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r2, 0x2
+ ldrsh r0, [r6, r2]
+ muls r0, r1
+ asrs r0, 8
+ strh r0, [r5, 0x24]
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ adds r0, 0x40
+ lsls r0, 1
+ adds r0, r7
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r2, 0x2
+ ldrsh r0, [r6, r2]
+ muls r0, r1
+ asrs r0, 8
+ strh r0, [r5, 0x26]
+ ldrh r1, [r6, 0xC]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080ADE66
+ adds r0, r4, 0
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+ movs r1, 0x3
+ ands r0, r1
+ lsls r0, 2
+ ldrb r2, [r5, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r5, 0x5]
+_080ADE66:
+ ldrb r2, [r5, 0x3]
+ lsls r2, 26
+ lsrs r2, 27
+ movs r0, 0x4
+ ldrsh r1, [r6, r0]
+ lsls r0, r1, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ ldr r3, _080ADEA8 @ =gOamMatrices
+ lsls r2, 3
+ adds r2, r3
+ adds r1, 0x40
+ lsls r1, 1
+ adds r1, r7
+ ldrh r1, [r1]
+ strh r1, [r2, 0x6]
+ strh r1, [r2]
+ strh r0, [r2, 0x2]
+ lsls r0, 16
+ asrs r0, 16
+ negs r0, r0
+ strh r0, [r2, 0x4]
+ ldrh r0, [r6, 0x6]
+ strh r0, [r5, 0x2E]
+ ldr r0, _080ADEAC @ =sub_80B1D3C
+ str r0, [r5, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ADEA0: .4byte gSineTable
+_080ADEA4: .4byte gBattleAnimArgs
+_080ADEA8: .4byte gOamMatrices
+_080ADEAC: .4byte sub_80B1D3C
+ thumb_func_end sub_80ADD4C
+
+ thumb_func_start sub_80ADEB0
+sub_80ADEB0: @ 80ADEB0
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r5, _080ADF24 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldr r6, _080ADF28 @ =gBattleAnimTarget
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x38]
+ ldrh r0, [r5, 0xA]
+ strh r0, [r4, 0x3A]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r4, 0x3C]
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ movs r3, 0xC
+ ldrsh r0, [r5, r3]
+ lsls r0, 2
+ adds r1, r0
+ ldr r3, _080ADF2C @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080ADF30 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ ldr r1, _080ADF34 @ =sub_80ADF38
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ADF24: .4byte gBattleAnimArgs
+_080ADF28: .4byte gBattleAnimTarget
+_080ADF2C: .4byte 0x000003ff
+_080ADF30: .4byte 0xfffffc00
+_080ADF34: .4byte sub_80ADF38
+ thumb_func_end sub_80ADEB0
+
+ thumb_func_start sub_80ADF38
+sub_80ADF38: @ 80ADF38
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080ADFA2
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Cos
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x3A]
+ ldrh r2, [r4, 0x3C]
+ adds r0, r2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3C]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r1, 0x3
+ bl __modsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _080ADFA8
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ b _080ADFA8
+_080ADFA2:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080ADFA8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ADF38
+
+ thumb_func_start sub_80ADFB0
+sub_80ADFB0: @ 80ADFB0
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x38]
+ subs r0, 0x1
+ strh r0, [r3, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080ADFE8
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldrh r0, [r3, 0x36]
+ strh r0, [r3, 0x38]
+_080ADFE8:
+ ldrh r0, [r3, 0x34]
+ subs r1, r0, 0x1
+ strh r1, [r3, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080ADFFA
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080ADFFA:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ADFB0
+
+ thumb_func_start sub_80AE000
+sub_80AE000: @ 80AE000
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AE01C
+ ldr r0, _080AE060 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AE024
+_080AE01C:
+ ldr r1, _080AE064 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+_080AE024:
+ ldr r5, _080AE060 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080AE064 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r6, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x4]
+ adds r0, r1
+ strh r0, [r6, 0x22]
+ ldrh r0, [r4]
+ strh r0, [r6, 0x34]
+ ldrh r0, [r4, 0x6]
+ strh r0, [r6, 0x36]
+ strh r0, [r6, 0x38]
+ ldr r0, _080AE068 @ =sub_80ADFB0
+ str r0, [r6, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AE060: .4byte gBattleAnimTarget
+_080AE064: .4byte gBattleAnimArgs
+_080AE068: .4byte sub_80ADFB0
+ thumb_func_end sub_80AE000
+
+ thumb_func_start sub_80AE06C
+sub_80AE06C: @ 80AE06C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r1, _080AE088 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x6]
+ strh r0, [r5, 0x2E]
+ movs r2, 0xE
+ ldrsh r0, [r1, r2]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080AE090
+ ldr r0, _080AE08C @ =gBattleAnimTarget
+ b _080AE092
+ .align 2, 0
+_080AE088: .4byte gBattleAnimArgs
+_080AE08C: .4byte gBattleAnimTarget
+_080AE090:
+ ldr r0, _080AE118 @ =gBattleAnimAttacker
+_080AE092:
+ ldrb r6, [r0]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AE0AA
+ adds r0, r6, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AE0B2
+_080AE0AA:
+ ldr r1, _080AE11C @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r1]
+_080AE0B2:
+ adds r0, r6, 0
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080AE11C @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r3, [r4]
+ adds r0, r3
+ strh r0, [r5, 0x20]
+ adds r0, r6, 0
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ ldrh r1, [r4, 0xE]
+ ldr r0, _080AE120 @ =0x00007fff
+ ands r0, r1
+ strh r0, [r5, 0x36]
+ ldrh r0, [r4, 0x4]
+ strh r0, [r5, 0x38]
+ ldrh r0, [r4, 0xA]
+ strh r0, [r5, 0x3A]
+ ldrh r0, [r4, 0x8]
+ strh r0, [r5, 0x3C]
+ ldrh r2, [r5, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ lsls r0, 2
+ adds r1, r0
+ ldr r3, _080AE124 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080AE128 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0x4]
+ ldr r1, _080AE12C @ =sub_80AE130
+ str r1, [r5, 0x1C]
+ adds r0, r5, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AE118: .4byte gBattleAnimAttacker
+_080AE11C: .4byte gBattleAnimArgs
+_080AE120: .4byte 0x00007fff
+_080AE124: .4byte 0x000003ff
+_080AE128: .4byte 0xfffffc00
+_080AE12C: .4byte sub_80AE130
+ thumb_func_end sub_80AE06C
+
+ thumb_func_start sub_80AE130
+sub_80AE130: @ 80AE130
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x3A]
+ ldrh r1, [r4, 0x3C]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3C]
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl __modsi3
+ cmp r0, 0
+ bne _080AE186
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_080AE186:
+ ldrh r0, [r4, 0x2E]
+ subs r1, r0, 0x1
+ strh r1, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080AE198
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AE198:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AE130
+
+ thumb_func_start sub_80AE1A0
+sub_80AE1A0: @ 80AE1A0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_8075114
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ ldr r3, _080AE1DC @ =gBattleAnimArgs
+ movs r5, 0x6
+ ldrsh r0, [r3, r5]
+ lsls r0, 2
+ adds r1, r0
+ ldr r5, _080AE1E0 @ =0x000003ff
+ adds r0, r5, 0
+ ands r1, r0
+ ldr r0, _080AE1E4 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ movs r1, 0x6
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x1
+ bne _080AE1E8
+ ldrb r0, [r4, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x10
+ b _080AE1F6
+ .align 2, 0
+_080AE1DC: .4byte gBattleAnimArgs
+_080AE1E0: .4byte 0x000003ff
+_080AE1E4: .4byte 0xfffffc00
+_080AE1E8:
+ cmp r0, 0x2
+ bne _080AE1FA
+ ldrb r0, [r4, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x20
+_080AE1F6:
+ orrs r1, r0
+ strb r1, [r4, 0x3]
+_080AE1FA:
+ ldr r0, _080AE214 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x2E]
+ ldr r0, _080AE218 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ ldr r1, _080AE21C @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AE214: .4byte gBattleAnimArgs
+_080AE218: .4byte sub_8074C44
+_080AE21C: .4byte DestroyAnimSprite
+ thumb_func_end sub_80AE1A0
+
+ thumb_func_start sub_80AE220
+sub_80AE220: @ 80AE220
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r6, _080AE268 @ =gBattleAnimTarget
+ ldrb r0, [r6]
+ movs r1, 0
+ bl sub_8074480
+ ldr r1, _080AE26C @ =gTasks
+ lsls r4, r5, 2
+ adds r4, r5
+ lsls r4, 3
+ adds r4, r1
+ lsls r0, 24
+ ldr r5, _080AE270 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r5]
+ adds r0, r1
+ strh r0, [r4, 0x8]
+ ldrb r0, [r6]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r5, 0x2]
+ adds r0, r1
+ strh r0, [r4, 0xA]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0xC]
+ ldr r0, _080AE274 @ =sub_80AE278
+ str r0, [r4]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AE268: .4byte gBattleAnimTarget
+_080AE26C: .4byte gTasks
+_080AE270: .4byte gBattleAnimArgs
+_080AE274: .4byte sub_80AE278
+ thumb_func_end sub_80AE220
+
+ thumb_func_start sub_80AE278
+sub_80AE278: @ 80AE278
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ movs r5, 0
+ movs r7, 0
+ ldr r1, _080AE2B8 @ =gTasks
+ lsls r0, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ ldrb r2, [r0, 0xC]
+ str r2, [sp]
+ ldrh r4, [r0, 0x8]
+ ldrh r6, [r0, 0xA]
+ movs r3, 0xC
+ ldrsh r0, [r0, r3]
+ mov r10, r1
+ cmp r0, 0
+ bne _080AE2BC
+ movs r0, 0
+ mov r8, r0
+ movs r2, 0x1
+ movs r1, 0x10
+ mov r12, r1
+ b _080AE2C6
+ .align 2, 0
+_080AE2B8: .4byte gTasks
+_080AE2BC:
+ movs r2, 0x10
+ mov r12, r2
+ movs r3, 0x8
+ mov r8, r3
+ movs r2, 0x4
+_080AE2C6:
+ mov r0, r9
+ lsls r1, r0, 2
+ adds r0, r1, r0
+ lsls r0, 3
+ add r0, r10
+ movs r3, 0x1C
+ ldrsh r0, [r0, r3]
+ mov r10, r1
+ cmp r0, 0xA
+ bhi _080AE3BC
+ lsls r0, 2
+ ldr r1, _080AE2E4 @ =_080AE2E8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080AE2E4: .4byte _080AE2E8
+ .align 2, 0
+_080AE2E8:
+ .4byte _080AE314
+ .4byte _080AE3BC
+ .4byte _080AE328
+ .4byte _080AE3BC
+ .4byte _080AE348
+ .4byte _080AE3BC
+ .4byte _080AE35E
+ .4byte _080AE3BC
+ .4byte _080AE380
+ .4byte _080AE3BC
+ .4byte _080AE3B4
+_080AE314:
+ ldr r0, _080AE324 @ =gUnknown_83E60A0
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r6, 16
+ asrs r2, 16
+ mov r4, r12
+ lsls r3, r4, 16
+ b _080AE396
+ .align 2, 0
+_080AE324: .4byte gUnknown_83E60A0
+_080AE328:
+ mov r0, r12
+ lsls r3, r0, 17
+ mov r1, r8
+ adds r0, r1, r2
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ ldr r0, _080AE344 @ =gUnknown_83E60A0
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r6, 16
+ asrs r2, 16
+ b _080AE396
+ .align 2, 0
+_080AE344: .4byte gUnknown_83E60A0
+_080AE348:
+ mov r3, r12
+ lsls r0, r3, 16
+ asrs r0, 16
+ lsls r3, r0, 1
+ adds r3, r0
+ lsls r0, r2, 1
+ add r0, r8
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ b _080AE38A
+_080AE35E:
+ mov r0, r12
+ lsls r3, r0, 18
+ lsls r0, r2, 1
+ adds r0, r2
+ add r0, r8
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ ldr r0, _080AE37C @ =gUnknown_83E60A0
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r6, 16
+ asrs r2, 16
+ b _080AE396
+ .align 2, 0
+_080AE37C: .4byte gUnknown_83E60A0
+_080AE380:
+ mov r1, r12
+ lsls r0, r1, 16
+ asrs r0, 16
+ lsls r3, r0, 2
+ adds r3, r0
+_080AE38A:
+ ldr r0, _080AE3B0 @ =gUnknown_83E60A0
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r6, 16
+ asrs r2, 16
+ lsls r3, 16
+_080AE396:
+ asrs r3, 16
+ adds r2, r3
+ lsls r2, 16
+ asrs r2, 16
+ movs r3, 0x2
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ b _080AE3BC
+ .align 2, 0
+_080AE3B0: .4byte gUnknown_83E60A0
+_080AE3B4:
+ mov r0, r9
+ bl DestroyAnimVisualTask
+ b _080AE400
+_080AE3BC:
+ cmp r7, 0
+ beq _080AE3F0
+ ldr r4, _080AE410 @ =gSprites
+ lsls r3, r5, 4
+ adds r3, r5
+ lsls r3, 2
+ adds r0, r3, r4
+ ldrh r5, [r0, 0x4]
+ lsls r2, r5, 22
+ lsrs r2, 22
+ add r2, r8
+ ldr r6, _080AE414 @ =0x000003ff
+ adds r1, r6, 0
+ ands r2, r1
+ ldr r1, _080AE418 @ =0xfffffc00
+ ands r1, r5
+ orrs r1, r2
+ strh r1, [r0, 0x4]
+ mov r1, sp
+ ldrh r1, [r1]
+ strh r1, [r0, 0x2E]
+ adds r4, 0x1C
+ adds r3, r4
+ ldr r1, [r3]
+ bl _call_via_r1
+_080AE3F0:
+ ldr r0, _080AE41C @ =gTasks
+ mov r1, r10
+ add r1, r9
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x1C]
+ adds r0, 0x1
+ strh r0, [r1, 0x1C]
+_080AE400:
+ 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
+_080AE410: .4byte gSprites
+_080AE414: .4byte 0x000003ff
+_080AE418: .4byte 0xfffffc00
+_080AE41C: .4byte gTasks
+ thumb_func_end sub_80AE278
+
+ thumb_func_start sub_80AE420
+sub_80AE420: @ 80AE420
+ push {lr}
+ adds r3, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ bne _080AE442
+ ldrb r1, [r3, 0x1]
+ movs r2, 0x3F
+ adds r0, r2, 0
+ ands r0, r1
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r3, 0x1]
+ ldrb r0, [r3, 0x3]
+ ands r2, r0
+ strb r2, [r3, 0x3]
+ b _080AE456
+_080AE442:
+ ldrb r2, [r3, 0x1]
+ movs r1, 0x3F
+ adds r0, r1, 0
+ ands r0, r2
+ strb r0, [r3, 0x1]
+ ldrb r0, [r3, 0x3]
+ ands r1, r0
+ movs r0, 0x40
+ orrs r1, r0
+ strb r1, [r3, 0x3]
+_080AE456:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ bne _080AE46A
+ adds r0, r3, 0
+ bl DestroySprite
+_080AE46A:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AE420
+
+ thumb_func_start sub_80AE470
+sub_80AE470: @ 80AE470
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ ldr r0, _080AE4D8 @ =gBattleAnimArgs
+ ldrh r1, [r0]
+ ldrh r2, [r4, 0x20]
+ adds r1, r2
+ strh r1, [r4, 0x20]
+ ldrh r0, [r0, 0x2]
+ ldrh r3, [r4, 0x22]
+ adds r0, r3
+ strh r0, [r4, 0x22]
+ ldr r0, _080AE4DC @ =gUnknown_83E60B8
+ adds r1, 0x20
+ lsls r1, 16
+ asrs r1, 16
+ movs r7, 0x22
+ ldrsh r2, [r4, r7]
+ adds r3, r4, 0
+ adds r3, 0x43
+ ldrb r3, [r3]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _080AE4E0 @ =gSprites
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r6, r2, r3
+ ldrh r5, [r6, 0x4]
+ lsls r1, r5, 22
+ lsrs r1, 22
+ adds r1, 0x8
+ ldr r7, _080AE4E4 @ =0x000003ff
+ adds r0, r7, 0
+ ands r1, r0
+ ldr r0, _080AE4E8 @ =0xfffffc00
+ ands r0, r5
+ orrs r0, r1
+ strh r0, [r6, 0x4]
+ ldr r1, _080AE4EC @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ adds r3, 0x1C
+ adds r2, r3
+ ldr r0, _080AE4F0 @ =sub_80AE4F4
+ str r0, [r2]
+ str r0, [r4, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AE4D8: .4byte gBattleAnimArgs
+_080AE4DC: .4byte gUnknown_83E60B8
+_080AE4E0: .4byte gSprites
+_080AE4E4: .4byte 0x000003ff
+_080AE4E8: .4byte 0xfffffc00
+_080AE4EC: .4byte gUnknown_2037EE2
+_080AE4F0: .4byte sub_80AE4F4
+ thumb_func_end sub_80AE470
+
+ thumb_func_start sub_80AE4F4
+sub_80AE4F4: @ 80AE4F4
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080AE528
+ movs r0, 0
+ strh r0, [r3, 0x2E]
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+_080AE528:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x33
+ bne _080AE53C
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080AE53C:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AE4F4
+
+ thumb_func_start sub_80AE540
+sub_80AE540: @ 80AE540
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080AE560 @ =gTasks
+ adds r5, r1, r0
+ ldr r0, _080AE564 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080AE56C
+ ldr r4, _080AE568 @ =gBattleAnimAttacker
+ b _080AE56E
+ .align 2, 0
+_080AE560: .4byte gTasks
+_080AE564: .4byte gBattleAnimArgs
+_080AE568: .4byte gBattleAnimAttacker
+_080AE56C:
+ ldr r4, _080AE5B0 @ =gBattleAnimTarget
+_080AE56E:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x24]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x26]
+ ldr r2, _080AE5B4 @ =gBattleAnimArgs
+ ldrh r0, [r2, 0x2]
+ movs r1, 0
+ strh r0, [r5, 0x14]
+ strh r1, [r5, 0x16]
+ strh r1, [r5, 0x18]
+ strh r1, [r5, 0x1A]
+ strh r1, [r5, 0x1C]
+ ldrh r0, [r2, 0x6]
+ strh r0, [r5, 0x1E]
+ strh r1, [r5, 0x20]
+ ldrh r0, [r2, 0x4]
+ strh r0, [r5, 0x22]
+ ldr r0, _080AE5B8 @ =sub_80AE5BC
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AE5B0: .4byte gBattleAnimTarget
+_080AE5B4: .4byte gBattleAnimArgs
+_080AE5B8: .4byte sub_80AE5BC
+ thumb_func_end sub_80AE540
+
+ thumb_func_start sub_80AE5BC
+sub_80AE5BC: @ 80AE5BC
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r2, r6, 0
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _080AE6A4 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x14
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _080AE6BC
+ ldrh r0, [r5, 0x20]
+ adds r0, 0x1
+ movs r7, 0
+ strh r0, [r5, 0x20]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x22
+ ldrsh r1, [r5, r2]
+ cmp r0, r1
+ ble _080AE6CA
+ strh r7, [r5, 0x20]
+ ldr r0, _080AE6A8 @ =gUnknown_83E6120
+ movs r3, 0x24
+ ldrsh r1, [r5, r3]
+ movs r3, 0x26
+ ldrsh r2, [r5, r3]
+ movs r3, 0x2
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _080AE6CA
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _080AE6AC @ =gSprites
+ adds r4, r0
+ ldr r1, _080AE6B0 @ =gUnknown_83E60D0
+ movs r2, 0x1A
+ ldrsh r0, [r5, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r3, 0
+ ldrsb r3, [r0, r3]
+ ldrh r0, [r4, 0x20]
+ adds r3, r0
+ strh r3, [r4, 0x20]
+ movs r2, 0x1A
+ ldrsh r0, [r5, r2]
+ lsls r0, 1
+ adds r1, 0x1
+ adds r0, r1
+ movs r2, 0
+ ldrsb r2, [r0, r2]
+ ldrh r0, [r4, 0x22]
+ adds r2, r0
+ strh r2, [r4, 0x22]
+ movs r1, 0x18
+ ldrsh r0, [r5, r1]
+ lsls r1, r0, 2
+ adds r1, r0
+ movs r0, 0x28
+ subs r0, r1
+ strh r0, [r4, 0x2E]
+ strh r3, [r4, 0x30]
+ ldrh r0, [r5, 0x24]
+ strh r0, [r4, 0x32]
+ strh r2, [r4, 0x34]
+ ldrh r0, [r5, 0x26]
+ strh r0, [r4, 0x36]
+ strh r6, [r4, 0x38]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldr r1, _080AE6B4 @ =sub_80AE704
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080AE6B8 @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+ ldrh r0, [r5, 0x1A]
+ adds r0, 0x1
+ strh r0, [r5, 0x1A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ ble _080AE674
+ strh r7, [r5, 0x1A]
+_080AE674:
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x1
+ strh r0, [r5, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x1E
+ ldrsh r1, [r5, r2]
+ cmp r0, r1
+ blt _080AE696
+ strh r7, [r5, 0x1C]
+ ldrh r1, [r5, 0x18]
+ movs r3, 0x18
+ ldrsh r0, [r5, r3]
+ cmp r0, 0x5
+ bgt _080AE696
+ adds r0, r1, 0x1
+ strh r0, [r5, 0x18]
+_080AE696:
+ ldrh r0, [r5, 0x16]
+ adds r0, 0x1
+ strh r0, [r5, 0x16]
+ ldrh r0, [r5, 0x14]
+ subs r0, 0x1
+ strh r0, [r5, 0x14]
+ b _080AE6CA
+ .align 2, 0
+_080AE6A4: .4byte gTasks
+_080AE6A8: .4byte gUnknown_83E6120
+_080AE6AC: .4byte gSprites
+_080AE6B0: .4byte gUnknown_83E60D0
+_080AE6B4: .4byte sub_80AE704
+_080AE6B8: .4byte sub_8074F6C
+_080AE6BC:
+ movs r1, 0x16
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080AE6CA
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080AE6CA:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AE5BC
+
+ thumb_func_start sub_80AE6D0
+sub_80AE6D0: @ 80AE6D0
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AE6F8
+ ldr r2, _080AE700 @ =gTasks
+ movs r0, 0x38
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0x16]
+ subs r1, 0x1
+ strh r1, [r0, 0x16]
+ adds r0, r4, 0
+ bl DestroySprite
+_080AE6F8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AE700: .4byte gTasks
+ thumb_func_end sub_80AE6D0
+
+ thumb_func_start sub_80AE704
+sub_80AE704: @ 80AE704
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ ldr r0, _080AE718 @ =sub_80AE6D0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AE718: .4byte sub_80AE6D0
+ thumb_func_end sub_80AE704
+
+ thumb_func_start sub_80AE71C
+sub_80AE71C: @ 80AE71C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080AE730 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080AE738
+ ldr r4, _080AE734 @ =gBattleAnimAttacker
+ b _080AE73A
+ .align 2, 0
+_080AE730: .4byte gBattleAnimArgs
+_080AE734: .4byte gBattleAnimAttacker
+_080AE738:
+ ldr r4, _080AE768 @ =gBattleAnimTarget
+_080AE73A:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r1, _080AE76C @ =move_anim_8074EE0
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080AE770 @ =sub_8074F50
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AE768: .4byte gBattleAnimTarget
+_080AE76C: .4byte move_anim_8074EE0
+_080AE770: .4byte sub_8074F50
+ thumb_func_end sub_80AE71C
+
+ thumb_func_start sub_80AE774
+sub_80AE774: @ 80AE774
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080AE788 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080AE790
+ ldr r4, _080AE78C @ =gBattleAnimAttacker
+ b _080AE792
+ .align 2, 0
+_080AE788: .4byte gBattleAnimArgs
+_080AE78C: .4byte gBattleAnimAttacker
+_080AE790:
+ ldr r4, _080AE7CC @ =gBattleAnimTarget
+_080AE792:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r1, _080AE7D0 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0x24]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x26]
+ ldr r1, _080AE7D4 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080AE7D8 @ =sub_8074F6C
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AE7CC: .4byte gBattleAnimTarget
+_080AE7D0: .4byte gBattleAnimArgs
+_080AE7D4: .4byte DestroyAnimSprite
+_080AE7D8: .4byte sub_8074F6C
+ thumb_func_end sub_80AE774
+
+ thumb_func_start sub_80AE7DC
+sub_80AE7DC: @ 80AE7DC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldr r4, _080AE834 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x3A]
+ movs r0, 0x10
+ strh r0, [r5, 0x3C]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080AE82A
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ negs r0, r0
+ strh r0, [r5, 0x3C]
+_080AE82A:
+ ldr r0, _080AE838 @ =sub_80AE83C
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AE834: .4byte gBattleAnimAttacker
+_080AE838: .4byte sub_80AE83C
+ thumb_func_end sub_80AE7DC
+
+ thumb_func_start sub_80AE83C
+sub_80AE83C: @ 80AE83C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080AE84E
+ cmp r0, 0x1
+ beq _080AE864
+ b _080AE894
+_080AE84E:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x28
+ ble _080AE894
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080AE894
+_080AE864:
+ ldrh r2, [r4, 0x3C]
+ ldrh r1, [r4, 0x20]
+ adds r0, r2, r1
+ strh r0, [r4, 0x20]
+ ldr r3, _080AE89C @ =gSprites
+ movs r0, 0x3A
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r1, [r0, 0x24]
+ adds r2, r1
+ strh r2, [r0, 0x24]
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x50
+ lsls r0, 16
+ movs r1, 0xC8
+ lsls r1, 17
+ cmp r0, r1
+ bls _080AE894
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080AE894:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AE89C: .4byte gSprites
+ thumb_func_end sub_80AE83C
+
+ thumb_func_start sub_80AE8A0
+sub_80AE8A0: @ 80AE8A0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ ldr r1, _080AE8C4 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080AE934
+ cmp r0, 0x1
+ bgt _080AE8C8
+ cmp r0, 0
+ beq _080AE8D4
+ b _080AEA04
+ .align 2, 0
+_080AE8C4: .4byte gTasks
+_080AE8C8:
+ cmp r0, 0x2
+ beq _080AE990
+ cmp r0, 0x3
+ bne _080AE8D2
+ b _080AE9E4
+_080AE8D2:
+ b _080AEA04
+_080AE8D4:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r6, 0
+ strh r0, [r5, 0x26]
+ ldr r4, _080AE908 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x24]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AE910
+ ldr r0, _080AE90C @ =0x0000ffe0
+ strh r0, [r5, 0x24]
+ movs r0, 0x2
+ b _080AE916
+ .align 2, 0
+_080AE908: .4byte gBattleAnimAttacker
+_080AE90C: .4byte 0x0000ffe0
+_080AE910:
+ movs r0, 0x20
+ strh r0, [r5, 0x24]
+ ldr r0, _080AE92C @ =0x0000fffe
+_080AE916:
+ strh r0, [r5, 0x22]
+ ldr r2, _080AE930 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r5, 0x24]
+ strh r1, [r0, 0x24]
+ b _080AE9D6
+ .align 2, 0
+_080AE92C: .4byte 0x0000fffe
+_080AE930: .4byte gSprites
+_080AE934:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AEA04
+ movs r0, 0
+ strh r0, [r5, 0xA]
+ ldr r4, _080AE98C @ =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r5, r1]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r4
+ adds r2, 0x3E
+ ldrb r3, [r2]
+ lsls r0, r3, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2]
+ ldrh r1, [r5, 0x24]
+ movs r2, 0x24
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _080AE9D6
+ ldrh r2, [r5, 0x22]
+ adds r2, r1, r2
+ strh r2, [r5, 0x24]
+ movs r0, 0x26
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ strh r2, [r0, 0x24]
+ b _080AEA04
+ .align 2, 0
+_080AE98C: .4byte gSprites
+_080AE990:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AEA04
+ movs r0, 0
+ strh r0, [r5, 0xA]
+ ldr r1, _080AE9E0 @ =gSprites
+ movs r2, 0x26
+ ldrsh r0, [r5, r2]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r1
+ adds r2, 0x3E
+ ldrb r3, [r2]
+ lsls r0, r3, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2]
+ ldrh r0, [r5, 0xC]
+ adds r0, 0x1
+ strh r0, [r5, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ bne _080AEA04
+_080AE9D6:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080AEA04
+ .align 2, 0
+_080AE9E0: .4byte gSprites
+_080AE9E4:
+ ldr r2, _080AEA0C @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+_080AEA04:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AEA0C: .4byte gSprites
+ thumb_func_end sub_80AE8A0
+
+ thumb_func_start sub_80AEA10
+sub_80AEA10: @ 80AEA10
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080AEA34 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _080AEA2A
+ b _080AEB50
+_080AEA2A:
+ cmp r0, 0x1
+ bgt _080AEA38
+ cmp r0, 0
+ beq _080AEA40
+ b _080AEB92
+ .align 2, 0
+_080AEA34: .4byte gTasks
+_080AEA38:
+ cmp r0, 0x2
+ bne _080AEA3E
+ b _080AEB84
+_080AEA3E:
+ b _080AEB92
+_080AEA40:
+ ldr r4, _080AEA80 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r2, 0x1
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ bne _080AEA56
+ movs r1, 0x1
+_080AEA56:
+ movs r6, 0
+ strh r1, [r5, 0xA]
+ ldr r0, _080AEA84 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ adds r3, r0, 0
+ cmp r2, 0
+ beq _080AEA8C
+ cmp r2, 0x4
+ beq _080AEAB4
+ ldrh r1, [r3]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080AEAEC
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r5, 0xE]
+ ldr r0, _080AEA88 @ =0x0000fff0
+ b _080AEAF4
+ .align 2, 0
+_080AEA80: .4byte gBattleAnimAttacker
+_080AEA84: .4byte gBattleAnimArgs
+_080AEA88: .4byte 0x0000fff0
+_080AEA8C:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0xE]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x12]
+ movs r2, 0xA
+ ldrsh r0, [r5, r2]
+ lsls r0, 7
+ adds r0, 0x78
+ strh r0, [r5, 0x10]
+ b _080AEB2A
+_080AEAB4:
+ movs r0, 0xA
+ ldrsh r1, [r5, r0]
+ lsls r1, 7
+ movs r0, 0x78
+ subs r0, r1
+ strh r0, [r5, 0xE]
+ ldr r4, _080AEAE8 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x12]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0xA
+ ldrsh r1, [r5, r2]
+ lsls r1, 5
+ subs r0, r1
+ strh r0, [r5, 0x10]
+ b _080AEB2A
+ .align 2, 0
+_080AEAE8: .4byte gBattleAnimTarget
+_080AEAEC:
+ ldr r0, _080AEB10 @ =0x0000fff0
+ strh r0, [r5, 0xE]
+ movs r0, 0x80
+ lsls r0, 1
+_080AEAF4:
+ strh r0, [r5, 0x10]
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _080AEB14
+ movs r2, 0
+ ldrsh r0, [r3, r2]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 1
+ movs r0, 0x50
+ subs r0, r1
+ strh r0, [r5, 0x12]
+ b _080AEB2A
+ .align 2, 0
+_080AEB10: .4byte 0x0000fff0
+_080AEB14:
+ movs r0, 0
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 1
+ adds r0, 0x28
+ strh r0, [r5, 0x12]
+ ldrh r1, [r5, 0xE]
+ ldrh r0, [r5, 0x10]
+ strh r0, [r5, 0xE]
+ strh r1, [r5, 0x10]
+_080AEB2A:
+ movs r2, 0xE
+ ldrsh r1, [r5, r2]
+ movs r2, 0x10
+ ldrsh r0, [r5, r2]
+ cmp r1, r0
+ bge _080AEB40
+ movs r1, 0
+ movs r0, 0x1
+ strh r0, [r5, 0xA]
+ strh r1, [r5, 0x14]
+ b _080AEB7C
+_080AEB40:
+ ldr r0, _080AEB4C @ =0x0000ffff
+ strh r0, [r5, 0xA]
+ movs r0, 0x3
+ strh r0, [r5, 0x14]
+ b _080AEB7C
+ .align 2, 0
+_080AEB4C: .4byte 0x0000ffff
+_080AEB50:
+ ldrh r0, [r5, 0xC]
+ adds r0, 0x1
+ strh r0, [r5, 0xC]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080AEB92
+ movs r0, 0
+ strh r0, [r5, 0xC]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80AEB98
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AEB7C
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80AEB98
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AEB92
+_080AEB7C:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080AEB92
+_080AEB84:
+ movs r1, 0x16
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080AEB92
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080AEB92:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AEA10
+
+ thumb_func_start sub_80AEB98
+sub_80AEB98: @ 80AEB98
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r0, _080AEC24 @ =gUnknown_83E6278
+ movs r2, 0xE
+ ldrsh r1, [r4, r2]
+ movs r3, 0x12
+ ldrsh r2, [r4, r3]
+ movs r3, 0x23
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x40
+ beq _080AEBCE
+ ldr r1, _080AEC28 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r1
+ strh r5, [r0, 0x3A]
+ movs r1, 0x7
+ strh r1, [r0, 0x3C]
+ ldrh r0, [r4, 0x16]
+ adds r0, 0x1
+ strh r0, [r4, 0x16]
+_080AEBCE:
+ ldrh r1, [r4, 0xA]
+ ldrh r5, [r4, 0x14]
+ adds r0, r1, r5
+ strh r0, [r4, 0x14]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080AEBE0
+ movs r0, 0x3
+ strh r0, [r4, 0x14]
+_080AEBE0:
+ movs r2, 0x14
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x3
+ ble _080AEBEC
+ movs r0, 0
+ strh r0, [r4, 0x14]
+_080AEBEC:
+ movs r3, 0xA
+ ldrsh r0, [r4, r3]
+ lsls r0, 4
+ ldrh r5, [r4, 0xE]
+ adds r2, r0, r5
+ strh r2, [r4, 0xE]
+ lsls r0, r1, 16
+ asrs r3, r0, 16
+ cmp r3, 0x1
+ bne _080AEC0C
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r5, 0x10
+ ldrsh r1, [r4, r5]
+ cmp r0, r1
+ bge _080AEC20
+_080AEC0C:
+ movs r0, 0x1
+ negs r0, r0
+ cmp r3, r0
+ bne _080AEC2C
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r2, 0x10
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ bgt _080AEC2C
+_080AEC20:
+ movs r0, 0x1
+ b _080AEC2E
+ .align 2, 0
+_080AEC24: .4byte gUnknown_83E6278
+_080AEC28: .4byte gSprites
+_080AEC2C:
+ movs r0, 0
+_080AEC2E:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AEB98
+
+ thumb_func_start sub_80AEC34
+sub_80AEC34: @ 80AEC34
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _080AEC74
+ ldr r3, _080AEC7C @ =gTasks
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080AEC74:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AEC7C: .4byte gTasks
+ thumb_func_end sub_80AEC34
+
+ thumb_func_start sub_80AEC80
+sub_80AEC80: @ 80AEC80
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _080AEC92
+ cmp r0, 0x1
+ beq _080AECC4
+ b _080AECD8
+_080AEC92:
+ ldr r4, _080AECC0 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl StartSpriteAffineAnim
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _080AECD8
+ .align 2, 0
+_080AECC0: .4byte gBattleAnimAttacker
+_080AECC4:
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080AECD8
+ adds r0, r5, 0
+ bl move_anim_8074EE0
+_080AECD8:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AEC80
+
+ thumb_func_start sub_80AECE0
+sub_80AECE0: @ 80AECE0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080AED04 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x4
+ bls _080AECFA
+ b _080AEE6C
+_080AECFA:
+ lsls r0, 2
+ ldr r1, _080AED08 @ =_080AED0C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080AED04: .4byte gTasks
+_080AED08: .4byte _080AED0C
+ .align 2, 0
+_080AED0C:
+ .4byte _080AED20
+ .4byte _080AEDB0
+ .4byte _080AEDEC
+ .4byte _080AEE48
+ .4byte _080AEE58
+_080AED20:
+ ldr r4, _080AEDA4 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x14]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x16]
+ movs r0, 0x4
+ strh r0, [r5, 0x18]
+ ldr r0, _080AEDA8 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x1C]
+ movs r2, 0x1C
+ ldrsh r0, [r5, r2]
+ movs r2, 0x14
+ ldrsh r1, [r5, r2]
+ subs r0, r1
+ movs r1, 0x5
+ bl __divsi3
+ strh r0, [r5, 0x1A]
+ movs r0, 0x7
+ strh r0, [r5, 0x10]
+ ldr r0, _080AEDAC @ =0x0000ffff
+ strh r0, [r5, 0x12]
+ movs r0, 0xC
+ strh r0, [r5, 0x1E]
+ subs r0, 0x4C
+ bl sub_8073A44
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r5, 0x20]
+ movs r0, 0x3F
+ bl sub_8073A44
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r5, 0x22]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x24]
+ movs r1, 0x22
+ ldrsh r0, [r5, r1]
+ movs r2, 0x20
+ ldrsh r1, [r5, r2]
+ subs r0, r1
+ movs r1, 0x3
+ bl __divsi3
+ strh r0, [r5, 0x26]
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ b _080AEE6A
+ .align 2, 0
+_080AEDA4: .4byte gBattleAnimAttacker
+_080AEDA8: .4byte gBattleAnimTarget
+_080AEDAC: .4byte 0x0000ffff
+_080AEDB0:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080AEDE0
+ movs r0, 0
+ strh r0, [r5, 0xA]
+ adds r0, r5, 0
+ adds r1, r2, 0
+ bl sub_80AEE74
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AEDE0
+ movs r1, 0xC
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x5
+ bne _080AEDDA
+ movs r0, 0x3
+ b _080AEDDE
+_080AEDDA:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+_080AEDDE:
+ strh r0, [r5, 0x8]
+_080AEDE0:
+ ldrh r1, [r5, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _080AEE6C
+ b _080AEE62
+_080AEDEC:
+ ldrh r1, [r5, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _080AEDFA
+ subs r0, r1, 0x1
+ strh r0, [r5, 0x1E]
+_080AEDFA:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ movs r3, 0
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ ble _080AEE6C
+ strh r3, [r5, 0xA]
+ ldrh r1, [r5, 0xC]
+ movs r2, 0x1
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080AEE26
+ movs r0, 0x4
+ strh r0, [r5, 0x16]
+ movs r0, 0x44
+ strh r0, [r5, 0x18]
+ strh r3, [r5, 0x10]
+ strh r2, [r5, 0x12]
+ b _080AEE36
+_080AEE26:
+ movs r0, 0x44
+ strh r0, [r5, 0x16]
+ movs r0, 0x4
+ strh r0, [r5, 0x18]
+ movs r0, 0x7
+ strh r0, [r5, 0x10]
+ ldr r0, _080AEE44 @ =0x0000ffff
+ strh r0, [r5, 0x12]
+_080AEE36:
+ movs r1, 0x1E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _080AEE68
+ movs r0, 0x4
+ b _080AEE6A
+ .align 2, 0
+_080AEE44: .4byte 0x0000ffff
+_080AEE48:
+ movs r1, 0xE
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080AEE6C
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ b _080AEE6C
+_080AEE58:
+ ldrh r1, [r5, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _080AEE68
+_080AEE62:
+ subs r0, r1, 0x1
+ strh r0, [r5, 0x1E]
+ b _080AEE6C
+_080AEE68:
+ movs r0, 0x1
+_080AEE6A:
+ strh r0, [r5, 0x8]
+_080AEE6C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AECE0
+
+ thumb_func_start sub_80AEE74
+sub_80AEE74: @ 80AEE74
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r0, _080AEF3C @ =gUnknown_83E62A8
+ movs r2, 0x14
+ ldrsh r1, [r4, r2]
+ movs r3, 0x16
+ ldrsh r2, [r4, r3]
+ movs r3, 0x23
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x40
+ beq _080AEEE0
+ ldr r1, _080AEF40 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r3, r0, r1
+ ldrh r2, [r3, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ ldrh r6, [r4, 0x10]
+ adds r1, r6
+ ldr r6, _080AEF44 @ =0x000003ff
+ adds r0, r6, 0
+ ands r1, r0
+ ldr r0, _080AEF48 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r3, 0x4]
+ ldrh r0, [r4, 0x12]
+ ldrh r1, [r4, 0x10]
+ adds r0, r1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080AEEC8
+ movs r0, 0x7
+ strh r0, [r4, 0x10]
+_080AEEC8:
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x7
+ ble _080AEED4
+ movs r0, 0
+ strh r0, [r4, 0x10]
+_080AEED4:
+ strh r5, [r3, 0x3A]
+ movs r0, 0x3
+ strh r0, [r3, 0x3C]
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+_080AEEE0:
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ bne _080AEF02
+ movs r5, 0x12
+ ldrsh r0, [r4, r5]
+ cmp r0, 0
+ ble _080AEF02
+ ldrh r1, [r4, 0x26]
+ ldrh r6, [r4, 0x24]
+ adds r1, r6
+ strh r1, [r4, 0x24]
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x6F
+ bl PlaySE12WithPanning
+_080AEF02:
+ movs r0, 0x12
+ ldrsh r3, [r4, r0]
+ ldrh r2, [r4, 0x16]
+ cmp r3, 0
+ bge _080AEF18
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r5, 0x18
+ ldrsh r1, [r4, r5]
+ cmp r0, r1
+ ble _080AEF28
+_080AEF18:
+ cmp r3, 0
+ ble _080AEF4C
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r6, 0x18
+ ldrsh r1, [r4, r6]
+ cmp r0, r1
+ blt _080AEF4C
+_080AEF28:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x1A]
+ ldrh r1, [r4, 0x14]
+ adds r0, r1
+ strh r0, [r4, 0x14]
+ movs r0, 0x1
+ b _080AEF58
+ .align 2, 0
+_080AEF3C: .4byte gUnknown_83E62A8
+_080AEF40: .4byte gSprites
+_080AEF44: .4byte 0x000003ff
+_080AEF48: .4byte 0xfffffc00
+_080AEF4C:
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ lsls r0, 3
+ adds r0, r2, r0
+ strh r0, [r4, 0x16]
+ movs r0, 0
+_080AEF58:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AEE74
+
+ thumb_func_start sub_80AEF60
+sub_80AEF60: @ 80AEF60
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _080AEF96
+ ldr r3, _080AEF9C @ =gTasks
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl DestroySprite
+_080AEF96:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AEF9C: .4byte gTasks
+ thumb_func_end sub_80AEF60
+
+ thumb_func_start sub_80AEFA0
+sub_80AEFA0: @ 80AEFA0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080AEFC4 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080AF01C
+ cmp r0, 0x1
+ bgt _080AEFC8
+ cmp r0, 0
+ beq _080AEFCE
+ b _080AF052
+ .align 2, 0
+_080AEFC4: .4byte gTasks
+_080AEFC8:
+ cmp r0, 0x2
+ beq _080AF044
+ b _080AF052
+_080AEFCE:
+ ldr r0, _080AF018 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x20
+ strh r0, [r5, 0x26]
+ strh r0, [r5, 0x24]
+ cmp r0, 0x10
+ ble _080AEFF8
+ adds r2, r0, 0
+_080AEFE8:
+ adds r1, r2, 0
+ subs r1, 0x20
+ adds r2, r1, 0
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ bgt _080AEFE8
+ strh r1, [r5, 0x24]
+_080AEFF8:
+ ldr r4, _080AF018 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ bl sub_807685C
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x2
+ strh r0, [r5, 0x20]
+ b _080AF03C
+ .align 2, 0
+_080AF018: .4byte gBattleAnimTarget
+_080AF01C:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AF052
+ movs r0, 0
+ strh r0, [r5, 0xA]
+ adds r0, r5, 0
+ adds r1, r2, 0
+ bl sub_80AF058
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AF052
+_080AF03C:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080AF052
+_080AF044:
+ movs r1, 0x1C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080AF052
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080AF052:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AEFA0
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/ereader_helpers.s b/asm/ereader_helpers.s
deleted file mode 100644
index 067ab8659..000000000
--- a/asm/ereader_helpers.s
+++ /dev/null
@@ -1,920 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_815C27C
-sub_815C27C: @ 815C27C
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- adds r5, r1, 0
- bl sub_815C8C8
- movs r7, 0x2
- ldr r4, _0815C2BC @ =gUnknown_3003F84
-_0815C28C:
- bl sub_815C898
- ldr r0, _0815C2C0 @ =gUnknown_3002062
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0815C29E
- strb r7, [r4]
-_0815C29E:
- movs r0, 0x1
- adds r1, r6, 0
- adds r2, r5, 0
- movs r3, 0
- bl sub_815C498
- adds r1, r0, 0
- ldr r0, _0815C2C4 @ =gUnknown_3002064
- strh r1, [r0]
- movs r0, 0x13
- ands r0, r1
- cmp r0, 0x10
- bne _0815C2C8
- movs r4, 0
- b _0815C2EA
- .align 2, 0
-_0815C2BC: .4byte gUnknown_3003F84
-_0815C2C0: .4byte gUnknown_3002062
-_0815C2C4: .4byte gUnknown_3002064
-_0815C2C8:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0815C2D4
- movs r4, 0x1
- b _0815C2EA
-_0815C2D4:
- movs r0, 0x4
- ands r0, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0815C2E8
- strb r0, [r4]
- bl VBlankIntrWait
- b _0815C28C
-_0815C2E8:
- movs r4, 0x2
-_0815C2EA:
- movs r0, 0
- str r0, [sp]
- ldr r1, _0815C308 @ =gUnknown_3002048
- ldr r2, _0815C30C @ =0x05000006
- mov r0, sp
- bl CpuSet
- bl sub_815C91C
- adds r0, r4, 0
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0815C308: .4byte gUnknown_3002048
-_0815C30C: .4byte 0x05000006
- thumb_func_end sub_815C27C
-
- thumb_func_start sub_815C310
-sub_815C310: @ 815C310
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- bl sub_815C8C8
- movs r6, 0x2
- ldr r4, _0815C350 @ =gUnknown_3003F84
-_0815C31E:
- bl sub_815C898
- ldr r0, _0815C354 @ =gUnknown_3002062
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0815C330
- strb r6, [r4]
-_0815C330:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- adds r3, r5, 0
- bl sub_815C498
- adds r1, r0, 0
- ldr r0, _0815C358 @ =gUnknown_3002064
- strh r1, [r0]
- movs r0, 0x13
- ands r0, r1
- cmp r0, 0x10
- bne _0815C35C
- movs r4, 0
- b _0815C37E
- .align 2, 0
-_0815C350: .4byte gUnknown_3003F84
-_0815C354: .4byte gUnknown_3002062
-_0815C358: .4byte gUnknown_3002064
-_0815C35C:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0815C368
- movs r4, 0x1
- b _0815C37E
-_0815C368:
- movs r0, 0x4
- ands r0, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0815C37C
- strb r0, [r4]
- bl VBlankIntrWait
- b _0815C31E
-_0815C37C:
- movs r4, 0x2
-_0815C37E:
- movs r0, 0
- str r0, [sp]
- ldr r1, _0815C39C @ =gUnknown_3002048
- ldr r2, _0815C3A0 @ =0x05000006
- mov r0, sp
- bl CpuSet
- bl sub_815C91C
- adds r0, r4, 0
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0815C39C: .4byte gUnknown_3002048
-_0815C3A0: .4byte 0x05000006
- thumb_func_end sub_815C310
-
- thumb_func_start sub_815C3A4
-sub_815C3A4: @ 815C3A4
- push {r4,lr}
- ldr r4, _0815C3D0 @ =0x04000208
- movs r3, 0
- strh r3, [r4]
- ldr r2, _0815C3D4 @ =0x04000200
- ldrh r1, [r2]
- ldr r0, _0815C3D8 @ =0x0000ff3f
- ands r0, r1
- strh r0, [r2]
- movs r0, 0x1
- strh r0, [r4]
- ldr r0, _0815C3DC @ =0x04000128
- strh r3, [r0]
- subs r0, 0x1A
- strh r3, [r0]
- ldr r1, _0815C3E0 @ =0x04000202
- movs r0, 0xC0
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815C3D0: .4byte 0x04000208
-_0815C3D4: .4byte 0x04000200
-_0815C3D8: .4byte 0x0000ff3f
-_0815C3DC: .4byte 0x04000128
-_0815C3E0: .4byte 0x04000202
- thumb_func_end sub_815C3A4
-
- thumb_func_start sub_815C3E4
-sub_815C3E4: @ 815C3E4
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r5, _0815C43C @ =0x04000208
- movs r4, 0
- strh r4, [r5]
- ldr r3, _0815C440 @ =0x04000200
- ldrh r1, [r3]
- ldr r0, _0815C444 @ =0x0000ff3f
- ands r0, r1
- strh r0, [r3]
- movs r6, 0x1
- strh r6, [r5]
- ldr r0, _0815C448 @ =0x04000134
- strh r4, [r0]
- ldr r2, _0815C44C @ =0x04000128
- movs r1, 0x80
- lsls r1, 6
- adds r0, r1, 0
- strh r0, [r2]
- ldrh r0, [r2]
- ldr r7, _0815C450 @ =0x00004003
- adds r1, r7, 0
- orrs r0, r1
- strh r0, [r2]
- strh r4, [r5]
- ldrh r0, [r3]
- movs r1, 0x80
- orrs r0, r1
- strh r0, [r3]
- strh r6, [r5]
- ldr r1, _0815C454 @ =gUnknown_3002048
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _0815C432
- str r0, [sp]
- ldr r2, _0815C458 @ =0x05000006
- mov r0, sp
- bl CpuSet
-_0815C432:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0815C43C: .4byte 0x04000208
-_0815C440: .4byte 0x04000200
-_0815C444: .4byte 0x0000ff3f
-_0815C448: .4byte 0x04000134
-_0815C44C: .4byte 0x04000128
-_0815C450: .4byte 0x00004003
-_0815C454: .4byte gUnknown_3002048
-_0815C458: .4byte 0x05000006
- thumb_func_end sub_815C3E4
-
- thumb_func_start sub_815C45C
-sub_815C45C: @ 815C45C
- ldr r0, _0815C484 @ =0x04000134
- movs r3, 0
- strh r3, [r0]
- ldr r2, _0815C488 @ =0x04000128
- movs r1, 0xA0
- lsls r1, 7
- adds r0, r1, 0
- strh r0, [r2]
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _0815C48C @ =gUnknown_3003F84
- strb r3, [r0]
- ldr r0, _0815C490 @ =gUnknown_3002066
- strh r3, [r0]
- ldr r1, _0815C494 @ =gUnknown_3002068
- movs r0, 0
- str r0, [r1]
- bx lr
- .align 2, 0
-_0815C484: .4byte 0x04000134
-_0815C488: .4byte 0x04000128
-_0815C48C: .4byte gUnknown_3003F84
-_0815C490: .4byte gUnknown_3002066
-_0815C494: .4byte gUnknown_3002068
- thumb_func_end sub_815C45C
-
- thumb_func_start sub_815C498
-sub_815C498: @ 815C498
- push {r4-r6,lr}
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0815C4B8 @ =gUnknown_3002048
- ldrb r0, [r0, 0x1]
- cmp r0, 0x6
- bls _0815C4AE
- b _0815C5F4
-_0815C4AE:
- lsls r0, 2
- ldr r1, _0815C4BC @ =_0815C4C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0815C4B8: .4byte gUnknown_3002048
-_0815C4BC: .4byte _0815C4C0
- .align 2, 0
-_0815C4C0:
- .4byte _0815C4DC
- .4byte _0815C4F0
- .4byte _0815C510
- .4byte _0815C524
- .4byte _0815C59C
- .4byte _0815C5AC
- .4byte _0815C5E4
-_0815C4DC:
- bl sub_815C3E4
- ldr r1, _0815C4EC @ =gUnknown_3002048
- movs r0, 0x1
- strb r0, [r1, 0x2]
- strb r0, [r1, 0x1]
- b _0815C5F4
- .align 2, 0
-_0815C4EC: .4byte gUnknown_3002048
-_0815C4F0:
- adds r0, r2, 0
- bl sub_815C610
- lsls r0, 16
- cmp r0, 0
- beq _0815C500
- bl sub_815C864
-_0815C500:
- ldr r0, _0815C50C @ =gUnknown_3003F84
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0815C50A
- b _0815C5F4
-_0815C50A:
- b _0815C52C
- .align 2, 0
-_0815C50C: .4byte gUnknown_3003F84
-_0815C510:
- bl sub_815C45C
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl sub_815C644
- ldr r1, _0815C538 @ =gUnknown_3002048
- movs r0, 0x3
- strb r0, [r1, 0x1]
-_0815C524:
- ldr r0, _0815C53C @ =gUnknown_3003F84
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0815C540
-_0815C52C:
- ldr r1, _0815C538 @ =gUnknown_3002048
- strb r0, [r1, 0x4]
- movs r0, 0x6
- strb r0, [r1, 0x1]
- b _0815C5F4
- .align 2, 0
-_0815C538: .4byte gUnknown_3002048
-_0815C53C: .4byte gUnknown_3003F84
-_0815C540:
- ldr r2, _0815C580 @ =gUnknown_3002066
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- ldr r1, _0815C584 @ =gUnknown_3002068
- ldr r0, [r1]
- adds r3, r0, 0x1
- str r3, [r1]
- ldr r1, _0815C588 @ =gUnknown_3002048
- ldrb r0, [r1]
- cmp r0, 0
- bne _0815C564
- cmp r3, 0x3C
- bls _0815C564
- movs r0, 0x1
- strb r0, [r1, 0x4]
- movs r0, 0x6
- strb r0, [r1, 0x1]
-_0815C564:
- ldr r4, _0815C588 @ =gUnknown_3002048
- ldrb r0, [r4, 0x2]
- cmp r0, 0x2
- beq _0815C5F4
- ldrb r0, [r4]
- cmp r0, 0
- beq _0815C58C
- ldrh r0, [r2]
- cmp r0, 0x2
- bls _0815C58C
- bl sub_815C864
- movs r0, 0x2
- b _0815C5F2
- .align 2, 0
-_0815C580: .4byte gUnknown_3002066
-_0815C584: .4byte gUnknown_3002068
-_0815C588: .4byte gUnknown_3002048
-_0815C58C:
- bl sub_815C864
- ldr r1, _0815C598 @ =gUnknown_3002048
- movs r0, 0x2
- strb r0, [r1, 0x2]
- b _0815C5F4
- .align 2, 0
-_0815C598: .4byte gUnknown_3002048
-_0815C59C:
- bl sub_815C3E4
- ldr r1, _0815C5A8 @ =gUnknown_3002048
- movs r0, 0x5
- strb r0, [r1, 0x1]
- b _0815C5F4
- .align 2, 0
-_0815C5A8: .4byte gUnknown_3002048
-_0815C5AC:
- ldr r0, _0815C5DC @ =gUnknown_3002048
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0815C5C0
- ldr r0, _0815C5E0 @ =gUnknown_3002066
- ldrh r0, [r0]
- cmp r0, 0x2
- bls _0815C5C0
- bl sub_815C864
-_0815C5C0:
- ldr r1, _0815C5E0 @ =gUnknown_3002066
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x3C
- bls _0815C5F4
- ldr r0, _0815C5DC @ =gUnknown_3002048
- movs r1, 0x1
- strb r1, [r0, 0x4]
- movs r1, 0x6
- strb r1, [r0, 0x1]
- b _0815C5F4
- .align 2, 0
-_0815C5DC: .4byte gUnknown_3002048
-_0815C5E0: .4byte gUnknown_3002066
-_0815C5E4:
- ldr r4, _0815C60C @ =gUnknown_3002048
- ldrb r0, [r4, 0x2]
- cmp r0, 0
- beq _0815C5F4
- bl sub_815C3A4
- movs r0, 0
-_0815C5F2:
- strb r0, [r4, 0x2]
-_0815C5F4:
- ldr r2, _0815C60C @ =gUnknown_3002048
- ldrb r0, [r2, 0x2]
- ldrb r1, [r2, 0x4]
- lsls r1, 2
- orrs r0, r1
- ldrb r1, [r2, 0x3]
- lsls r1, 4
- orrs r0, r1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0815C60C: .4byte gUnknown_3002048
- thumb_func_end sub_815C498
-
- thumb_func_start sub_815C610
-sub_815C610: @ 815C610
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0815C62C @ =0x04000128
- ldr r0, [r0]
- movs r1, 0xC
- ands r0, r1
- cmp r0, 0x8
- bne _0815C634
- cmp r2, 0
- beq _0815C634
- ldr r1, _0815C630 @ =gUnknown_3002048
- movs r0, 0x1
- b _0815C638
- .align 2, 0
-_0815C62C: .4byte 0x04000128
-_0815C630: .4byte gUnknown_3002048
-_0815C634:
- ldr r1, _0815C640 @ =gUnknown_3002048
- movs r0, 0
-_0815C638:
- strb r0, [r1]
- pop {r1}
- bx r1
- .align 2, 0
-_0815C640: .4byte gUnknown_3002048
- thumb_func_end sub_815C610
-
- thumb_func_start sub_815C644
-sub_815C644: @ 815C644
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r3, _0815C670 @ =gUnknown_3002048
- ldrb r0, [r3]
- cmp r0, 0
- beq _0815C67C
- ldr r2, _0815C674 @ =0x04000128
- ldrh r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r2]
- str r5, [r3, 0x8]
- ldr r0, _0815C678 @ =0x04000120
- str r4, [r0]
- lsrs r0, r4, 2
- adds r0, 0x1
- str r0, [r3, 0x10]
- bl sub_815C690
- b _0815C684
- .align 2, 0
-_0815C670: .4byte gUnknown_3002048
-_0815C674: .4byte 0x04000128
-_0815C678: .4byte 0x04000120
-_0815C67C:
- ldr r1, _0815C68C @ =0x04000128
- ldrh r0, [r1]
- strh r0, [r1]
- str r2, [r3, 0x8]
-_0815C684:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0815C68C: .4byte 0x04000128
- thumb_func_end sub_815C644
-
- thumb_func_start sub_815C690
-sub_815C690: @ 815C690
- ldr r1, _0815C6B4 @ =0x0400010c
- ldr r2, _0815C6B8 @ =0x0000fda7
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0815C6BC @ =0x0400010e
- movs r2, 0x40
- strh r2, [r0]
- ldr r3, _0815C6C0 @ =0x04000208
- movs r0, 0
- strh r0, [r3]
- adds r1, 0xF4
- ldrh r0, [r1]
- orrs r0, r2
- strh r0, [r1]
- movs r0, 0x1
- strh r0, [r3]
- bx lr
- .align 2, 0
-_0815C6B4: .4byte 0x0400010c
-_0815C6B8: .4byte 0x0000fda7
-_0815C6BC: .4byte 0x0400010e
-_0815C6C0: .4byte 0x04000208
- thumb_func_end sub_815C690
-
- thumb_func_start sub_815C6C4
-sub_815C6C4: @ 815C6C4
- push {lr}
- bl sub_815C874
- bl sub_815C864
- pop {r0}
- bx r0
- thumb_func_end sub_815C6C4
-
- thumb_func_start sub_815C6D4
-sub_815C6D4: @ 815C6D4
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r2, _0815C6EC @ =gUnknown_3002048
- ldrb r0, [r2, 0x1]
- adds r3, r2, 0
- cmp r0, 0x3
- beq _0815C75C
- cmp r0, 0x3
- bgt _0815C6F0
- cmp r0, 0x1
- beq _0815C6F8
- b _0815C852
- .align 2, 0
-_0815C6EC: .4byte gUnknown_3002048
-_0815C6F0:
- cmp r0, 0x5
- bne _0815C6F6
- b _0815C824
-_0815C6F6:
- b _0815C852
-_0815C6F8:
- ldr r1, _0815C728 @ =0x0400012a
- ldr r2, _0815C72C @ =0x0000ccd0
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0815C730 @ =0x04000120
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- movs r1, 0
- movs r2, 0
- movs r4, 0
- ldr r6, _0815C72C @ =0x0000ccd0
- ldr r5, _0815C734 @ =0x0000ffff
-_0815C714:
- lsls r0, r1, 1
- add r0, sp
- ldrh r0, [r0]
- cmp r0, r6
- bne _0815C738
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- b _0815C742
- .align 2, 0
-_0815C728: .4byte 0x0400012a
-_0815C72C: .4byte 0x0000ccd0
-_0815C730: .4byte 0x04000120
-_0815C734: .4byte 0x0000ffff
-_0815C738:
- cmp r0, r5
- beq _0815C742
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_0815C742:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x3
- bls _0815C714
- cmp r2, 0x2
- beq _0815C752
- b _0815C852
-_0815C752:
- cmp r4, 0
- beq _0815C758
- b _0815C852
-_0815C758:
- strb r2, [r3, 0x1]
- b _0815C852
-_0815C75C:
- ldr r0, _0815C798 @ =0x04000120
- ldr r4, [r0]
- ldr r0, [r2, 0xC]
- cmp r0, 0
- bne _0815C772
- ldrb r0, [r2]
- cmp r0, 0
- bne _0815C772
- lsrs r0, r4, 2
- adds r0, 0x1
- str r0, [r2, 0x10]
-_0815C772:
- ldrb r0, [r3]
- cmp r0, 0x1
- bne _0815C7A8
- ldr r1, [r3, 0xC]
- ldr r0, [r3, 0x10]
- cmp r1, r0
- bge _0815C79C
- ldr r2, _0815C798 @ =0x04000120
- ldr r0, [r3, 0x8]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- str r0, [r2]
- ldr r0, [r3, 0x14]
- ldr r1, [r1]
- adds r0, r1
- str r0, [r3, 0x14]
- b _0815C7E2
- .align 2, 0
-_0815C798: .4byte 0x04000120
-_0815C79C:
- ldr r1, _0815C7A4 @ =0x04000120
- ldr r0, [r3, 0x14]
- b _0815C7E0
- .align 2, 0
-_0815C7A4: .4byte 0x04000120
-_0815C7A8:
- ldr r1, [r3, 0xC]
- cmp r1, 0
- ble _0815C7C8
- ldr r0, [r3, 0x10]
- adds r0, 0x1
- cmp r1, r0
- bge _0815C7C8
- ldr r0, [r3, 0x8]
- lsls r1, 2
- adds r1, r0
- subs r1, 0x4
- str r4, [r1]
- ldr r0, [r3, 0x14]
- adds r0, r4
- str r0, [r3, 0x14]
- b _0815C7DC
-_0815C7C8:
- ldr r0, [r3, 0xC]
- cmp r0, 0
- beq _0815C7DC
- ldr r0, [r3, 0x14]
- cmp r0, r4
- bne _0815C7D8
- movs r0, 0x1
- b _0815C7DA
-_0815C7D8:
- movs r0, 0x2
-_0815C7DA:
- strb r0, [r3, 0x3]
-_0815C7DC:
- ldr r1, _0815C804 @ =gUnknown_3002068
- movs r0, 0
-_0815C7E0:
- str r0, [r1]
-_0815C7E2:
- ldr r1, [r3, 0xC]
- adds r1, 0x1
- str r1, [r3, 0xC]
- ldr r0, [r3, 0x10]
- adds r0, 0x2
- cmp r1, r0
- bge _0815C812
- ldrb r0, [r3]
- cmp r0, 0
- beq _0815C80C
- ldr r0, _0815C808 @ =0x0400010e
- ldrh r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strh r1, [r0]
- b _0815C852
- .align 2, 0
-_0815C804: .4byte gUnknown_3002068
-_0815C808: .4byte 0x0400010e
-_0815C80C:
- bl sub_815C864
- b _0815C852
-_0815C812:
- movs r0, 0
- movs r1, 0x4
- strb r1, [r3, 0x1]
- ldr r1, _0815C820 @ =gUnknown_3002066
- strh r0, [r1]
- b _0815C852
- .align 2, 0
-_0815C820: .4byte gUnknown_3002066
-_0815C824:
- ldrb r3, [r2]
- cmp r3, 0
- bne _0815C830
- ldr r1, _0815C85C @ =0x0400012a
- ldrb r0, [r2, 0x3]
- strh r0, [r1]
-_0815C830:
- ldr r0, _0815C860 @ =0x04000120
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- mov r0, sp
- ldrh r1, [r0, 0x2]
- subs r0, r1, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _0815C852
- cmp r3, 0x1
- bne _0815C84E
- strb r1, [r2, 0x3]
-_0815C84E:
- movs r0, 0x6
- strb r0, [r2, 0x1]
-_0815C852:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815C85C: .4byte 0x0400012a
-_0815C860: .4byte 0x04000120
- thumb_func_end sub_815C6D4
-
- thumb_func_start sub_815C864
-sub_815C864: @ 815C864
- ldr r0, _0815C870 @ =0x04000128
- ldrh r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0815C870: .4byte 0x04000128
- thumb_func_end sub_815C864
-
- thumb_func_start sub_815C874
-sub_815C874: @ 815C874
- ldr r2, _0815C888 @ =0x0400010e
- ldrh r1, [r2]
- ldr r0, _0815C88C @ =0x0000ff7f
- ands r0, r1
- strh r0, [r2]
- ldr r1, _0815C890 @ =0x0400010c
- ldr r2, _0815C894 @ =0x0000fda7
- adds r0, r2, 0
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0815C888: .4byte 0x0400010e
-_0815C88C: .4byte 0x0000ff7f
-_0815C890: .4byte 0x0400010c
-_0815C894: .4byte 0x0000fda7
- thumb_func_end sub_815C874
-
- thumb_func_start sub_815C898
-sub_815C898: @ 815C898
- push {r4,lr}
- ldr r0, _0815C8B8 @ =0x04000130
- ldrh r0, [r0]
- ldr r2, _0815C8BC @ =0x000003ff
- adds r1, r2, 0
- eors r1, r0
- ldr r4, _0815C8C0 @ =gUnknown_3002062
- ldr r3, _0815C8C4 @ =gUnknown_3002060
- ldrh r2, [r3]
- adds r0, r1, 0
- bics r0, r2
- strh r0, [r4]
- strh r1, [r3]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815C8B8: .4byte 0x04000130
-_0815C8BC: .4byte 0x000003ff
-_0815C8C0: .4byte gUnknown_3002062
-_0815C8C4: .4byte gUnknown_3002060
- thumb_func_end sub_815C898
-
- thumb_func_start sub_815C8C8
-sub_815C8C8: @ 815C8C8
- ldr r1, _0815C8F4 @ =gUnknown_300206C
- ldr r0, _0815C8F8 @ =0x04000208
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _0815C8FC @ =gUnknown_300206E
- ldr r0, _0815C900 @ =0x04000200
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _0815C904 @ =gUnknown_3002070
- ldr r0, _0815C908 @ =0x0400010e
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _0815C90C @ =gUnknown_3002072
- ldr r0, _0815C910 @ =0x04000128
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _0815C914 @ =gUnknown_3002074
- ldr r0, _0815C918 @ =0x04000134
- ldrh r0, [r0]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0815C8F4: .4byte gUnknown_300206C
-_0815C8F8: .4byte 0x04000208
-_0815C8FC: .4byte gUnknown_300206E
-_0815C900: .4byte 0x04000200
-_0815C904: .4byte gUnknown_3002070
-_0815C908: .4byte 0x0400010e
-_0815C90C: .4byte gUnknown_3002072
-_0815C910: .4byte 0x04000128
-_0815C914: .4byte gUnknown_3002074
-_0815C918: .4byte 0x04000134
- thumb_func_end sub_815C8C8
-
- thumb_func_start sub_815C91C
-sub_815C91C: @ 815C91C
- ldr r1, _0815C948 @ =0x04000208
- ldr r0, _0815C94C @ =gUnknown_300206C
- ldrh r0, [r0]
- strh r0, [r1]
- subs r1, 0x8
- ldr r0, _0815C950 @ =gUnknown_300206E
- ldrh r0, [r0]
- strh r0, [r1]
- subs r1, 0xF2
- ldr r0, _0815C954 @ =gUnknown_3002070
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x1A
- ldr r0, _0815C958 @ =gUnknown_3002072
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0xC
- ldr r0, _0815C95C @ =gUnknown_3002074
- ldrh r0, [r0]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0815C948: .4byte 0x04000208
-_0815C94C: .4byte gUnknown_300206C
-_0815C950: .4byte gUnknown_300206E
-_0815C954: .4byte gUnknown_3002070
-_0815C958: .4byte gUnknown_3002072
-_0815C95C: .4byte gUnknown_3002074
- thumb_func_end sub_815C91C
-
- thumb_func_start sub_815C960
-sub_815C960: @ 815C960
- push {lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r1, _0815C978 @ =gUnknown_3002048
- ldr r2, _0815C97C @ =0x05000006
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0815C978: .4byte gUnknown_3002048
-_0815C97C: .4byte 0x05000006
- thumb_func_end sub_815C960
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/evolution_graphics.s b/asm/evolution_graphics.s
index 1dafc92ea..64edbdf7a 100644
--- a/asm/evolution_graphics.s
+++ b/asm/evolution_graphics.s
@@ -573,7 +573,7 @@ _080F5D80: .4byte SpriteCB_PostEvoSparkleSet2
LoadEvoSparkleSpriteAndPal: @ 80F5D84
push {lr}
ldr r0, _080F5D98 @ =gUnknown_841EEC4
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _080F5D9C @ =gUnknown_841EED4
bl LoadSpritePalettes
pop {r0}
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s
index 08aa16703..e151e6d7d 100644
--- a/asm/evolution_scene.s
+++ b/asm/evolution_scene.s
@@ -1870,7 +1870,7 @@ _080CEDC6:
cmp r4, 0
bne _080CEE40
bl StopMapMusic
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
ldrh r1, [r5, 0xE]
movs r0, 0x80
orrs r0, r1
@@ -1944,7 +1944,7 @@ _080CEE74:
cmp r0, 0
bne _080CEE90
bl StopMapMusic
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
_080CEE90:
movs r2, 0x1A
ldrsh r0, [r4, r2]
diff --git a/asm/field_camera.s b/asm/field_camera.s
index 5541c6472..f6cbbd0ef 100644
--- a/asm/field_camera.s
+++ b/asm/field_camera.s
@@ -710,11 +710,11 @@ _0805AAA2:
strh r0, [r3]
_0805AABE:
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
pop {r4}
pop {r0}
bx r0
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index 67e7e7d5a..2eee6da2f 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -320,7 +320,7 @@ sub_806CAC8: @ 806CAC8
sub sp, 0x8
adds r5, r0, 0
bl sub_8069A54
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r6, r0, 24
mov r4, sp
@@ -629,7 +629,7 @@ _0806CD54:
ldrb r0, [r4, 0x2]
cmp r0, 0
beq _0806CDC0
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
ldrb r1, [r4, 0x2]
@@ -1033,7 +1033,7 @@ _0806D078:
lsls r0, 2
ldr r1, _0806D098 @ =gMapObjects
adds r0, r1
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ bl FieldObjectCheckHeldMovementStatus
lsls r0, 24
cmp r0, 0
bne _0806D0A0
@@ -1817,7 +1817,7 @@ _0806D6E0: .4byte gUnknown_203ADFA
_0806D6E4: .4byte gPlayerAvatar
_0806D6E8: .4byte gUnknown_81A8CED
_0806D6EC:
- bl overworld_poison_step
+ bl DoPoisonFieldEffect_step
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1840,7 +1840,7 @@ _0806D704:
.align 2, 0
_0806D71C: .4byte gUnknown_81BF546
_0806D720:
- bl sub_80A0F0C
+ bl SafariZoneTakeStep
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1901,8 +1901,8 @@ _0806D780: .4byte 0x00004021
_0806D784: .4byte gPlayerParty
thumb_func_end AdjustFriendship_step
- thumb_func_start overworld_poison_timer_set
-overworld_poison_timer_set: @ 806D788
+ thumb_func_start ClearPoisonStepCounter
+ClearPoisonStepCounter: @ 806D788
push {lr}
ldr r0, _0806D798 @ =0x00004022
movs r1, 0
@@ -1911,10 +1911,10 @@ overworld_poison_timer_set: @ 806D788
bx r0
.align 2, 0
_0806D798: .4byte 0x00004022
- thumb_func_end overworld_poison_timer_set
+ thumb_func_end ClearPoisonStepCounter
- thumb_func_start overworld_poison_step
-overworld_poison_step: @ 806D79C
+ thumb_func_start DoPoisonFieldEffect_step
+DoPoisonFieldEffect_step: @ 806D79C
push {r4,lr}
ldr r0, _0806D7D8 @ =gMapHeader
ldrb r0, [r0, 0x17]
@@ -1933,7 +1933,7 @@ overworld_poison_step: @ 806D79C
lsls r0, 16
cmp r0, 0
bne _0806D7E0
- bl overworld_poison
+ bl DoPoisonFieldEffect
cmp r0, 0x1
beq _0806D7E0
cmp r0, 0x1
@@ -1951,7 +1951,7 @@ _0806D7E2:
pop {r4}
pop {r1}
bx r1
- thumb_func_end overworld_poison_step
+ thumb_func_end DoPoisonFieldEffect_step
thumb_func_start sub_806D7E8
sub_806D7E8: @ 806D7E8
diff --git a/asm/field_effect.s b/asm/field_effect.s
index 0fa36ce46..7bd1abe80 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -608,12 +608,12 @@ CreateTrainerSprite: @ 8083858
add r8, r4
mov r0, r8
adds r1, r7, 0
- bl LoadCompressedObjectPaletteOverrideBuffer
+ bl LoadCompressedSpritePaletteOverrideBuffer
ldr r0, _080838E4 @ =gTrainerFrontPicTable
adds r4, r0
adds r0, r4, 0
adds r1, r7, 0
- bl LoadCompressedObjectPicOverrideBuffer
+ bl LoadCompressedSpriteSheetOverrideBuffer
mov r1, sp
ldrh r0, [r4, 0x6]
movs r2, 0
@@ -2039,8 +2039,8 @@ _08084350:
cmp r0, 0
bne _08084376
bl sub_8054CA0
- bl warp_in
- ldr r0, _08084384 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _08084384 @ =CB2_LoadMap
bl SetMainCallback2
ldr r1, _08084388 @ =gFieldCallback
ldr r0, _0808438C @ =mapldr_08084390
@@ -2054,7 +2054,7 @@ _08084376:
.align 2, 0
_0808437C: .4byte gTasks
_08084380: .4byte gFieldEffectArguments
-_08084384: .4byte sub_805671C
+_08084384: .4byte CB2_LoadMap
_08084388: .4byte gFieldCallback
_0808438C: .4byte mapldr_08084390
thumb_func_end task00_8084310
@@ -2062,7 +2062,7 @@ _0808438C: .4byte mapldr_08084390
thumb_func_start mapldr_08084390
mapldr_08084390: @ 8084390
push {r4,lr}
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl sub_807DC00
ldr r0, _080843E8 @ =c3_080843F8
movs r1, 0
@@ -2154,7 +2154,7 @@ _08084450: .4byte gPaletteFade
thumb_func_start sub_8084454
sub_8084454: @ 8084454
push {lr}
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl pal_fill_for_maplights
bl sub_8111CF0
bl ScriptContext2_Enable
@@ -2235,7 +2235,7 @@ sub_80844BC: @ 80844BC
strb r1, [r0, 0x1]
movs r0, 0x1
strb r0, [r6, 0x6]
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
bl sub_8063EB8
@@ -2243,7 +2243,7 @@ sub_80844BC: @ 80844BC
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
adds r3, r4, 0
adds r3, 0x42
ldrb r0, [r3]
@@ -2653,17 +2653,17 @@ sub_8084820: @ 8084820
ldr r1, _0808488C @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _0808484A
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0808487E
_0808484A:
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
bl sub_8063EB8
@@ -2671,7 +2671,7 @@ _0808484A:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x8]
adds r0, 0x1
movs r1, 0
@@ -2860,11 +2860,11 @@ sub_80849A0: @ 80849A0
cmp r0, 0x1
bne _080849DC
bl sub_809C460
- bl warp_in
+ bl WarpIntoMap
ldr r1, _080849E4 @ =gFieldCallback
ldr r0, _080849E8 @ =sub_80849F4
str r0, [r1]
- ldr r0, _080849EC @ =sub_805671C
+ ldr r0, _080849EC @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _080849F0 @ =sub_80847C0
bl FindTaskIdByFunc
@@ -2878,14 +2878,14 @@ _080849DC:
_080849E0: .4byte gPaletteFade
_080849E4: .4byte gFieldCallback
_080849E8: .4byte sub_80849F4
-_080849EC: .4byte sub_805671C
+_080849EC: .4byte CB2_LoadMap
_080849F0: .4byte sub_80847C0
thumb_func_end sub_80849A0
thumb_func_start sub_80849F4
sub_80849F4: @ 80849F4
push {lr}
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl pal_fill_for_maplights
bl sub_8111CF0
bl ScriptContext2_Enable
@@ -2952,7 +2952,7 @@ sub_8084A5C: @ 8084A5C
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
mov r4, sp
adds r4, 0x2
mov r0, sp
@@ -3192,7 +3192,7 @@ sub_8084C3C: @ 8084C3C
ldr r1, _08084C98 @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _08084C8A
@@ -3205,7 +3205,7 @@ sub_8084C3C: @ 8084C3C
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldr r0, _08084C9C @ =sub_8084A24
bl FindTaskIdByFunc
lsls r0, 24
@@ -3317,12 +3317,12 @@ waterfall_1_do_anim_probably: @ 8084D44
adds r5, r1, 0
bl ScriptContext2_Enable
adds r0, r5, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
bne _08084D74
adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
ldr r1, _08084D7C @ =gFieldEffectArguments
movs r2, 0xA
ldrsh r0, [r4, r2]
@@ -3374,7 +3374,7 @@ sub_8084DA4: @ 8084DA4
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
@@ -3390,7 +3390,7 @@ sub_8084DCC: @ 8084DCC
adds r5, r0, 0
adds r4, r1, 0
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
bne _08084DE2
@@ -3883,11 +3883,11 @@ sub_8085168: @ 8085168
lsrs r0, 24
cmp r0, 0x1
bne _080851A0
- bl warp_in
+ bl WarpIntoMap
ldr r1, _080851AC @ =gFieldCallback
ldr r0, _080851B0 @ =mapldr_080851BC
str r0, [r1]
- ldr r0, _080851B4 @ =sub_805671C
+ ldr r0, _080851B4 @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _080851B8 @ =sub_8084F44
bl FindTaskIdByFunc
@@ -3902,14 +3902,14 @@ _080851A0:
_080851A8: .4byte gPaletteFade
_080851AC: .4byte gFieldCallback
_080851B0: .4byte mapldr_080851BC
-_080851B4: .4byte sub_805671C
+_080851B4: .4byte CB2_LoadMap
_080851B8: .4byte sub_8084F44
thumb_func_end sub_8085168
thumb_func_start mapldr_080851BC
mapldr_080851BC: @ 80851BC
push {lr}
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl pal_fill_for_maplights
bl sub_8111CF0
bl ScriptContext2_Enable
@@ -4070,7 +4070,7 @@ sub_80852C0: @ 80852C0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
_08085308:
movs r0, 0
pop {r4}
@@ -4084,7 +4084,7 @@ _08085310: .4byte gSprites
sub_8085314: @ 8085314
push {lr}
adds r0, r1, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0808533E
@@ -4266,7 +4266,7 @@ sub_8085470: @ 8085470
adds r4, r1, 0
adds r6, r2, 0
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _080854E4
@@ -4311,7 +4311,7 @@ _080854C4:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
movs r0, 0x21
bl PlaySE
_080854E4:
@@ -4388,11 +4388,11 @@ sub_808554C: @ 808554C
lsrs r0, 24
cmp r0, 0x1
bne _08085584
- bl warp_in
+ bl WarpIntoMap
ldr r1, _08085590 @ =gFieldCallback
ldr r0, _08085594 @ =sub_8084454
str r0, [r1]
- ldr r0, _08085598 @ =sub_805671C
+ ldr r0, _08085598 @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _0808559C @ =sub_80853E4
bl FindTaskIdByFunc
@@ -4407,7 +4407,7 @@ _08085584:
_0808558C: .4byte gPaletteFade
_08085590: .4byte gFieldCallback
_08085594: .4byte sub_8084454
-_08085598: .4byte sub_805671C
+_08085598: .4byte CB2_LoadMap
_0808559C: .4byte sub_80853E4
thumb_func_end sub_808554C
@@ -4527,7 +4527,7 @@ sub_808566C: @ 808566C
strh r0, [r4, 0x8]
movs r0, 0x40
strh r0, [r4, 0x22]
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x24]
@@ -4612,11 +4612,11 @@ _08085702:
adds r0, r6, 0
bl FieldObjectSetDirection
bl sub_80555E0
- bl warp_in
+ bl WarpIntoMap
ldr r1, _0808575C @ =gFieldCallback
ldr r0, _08085760 @ =sub_80859D4
str r0, [r1]
- ldr r0, _08085764 @ =sub_805671C
+ ldr r0, _08085764 @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _08085768 @ =sub_808563C
bl FindTaskIdByFunc
@@ -4631,7 +4631,7 @@ _08085750:
_08085758: .4byte gPaletteFade
_0808575C: .4byte gFieldCallback
_08085760: .4byte sub_80859D4
-_08085764: .4byte sub_805671C
+_08085764: .4byte CB2_LoadMap
_08085768: .4byte sub_808563C
thumb_func_end sub_8085690
@@ -4641,12 +4641,12 @@ sub_808576C: @ 808576C
adds r4, r0, 0
adds r6, r1, 0
adds r5, r2, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _0808578A
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _080857E4
@@ -4673,7 +4673,7 @@ _0808579E:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r1, [r5]
movs r2, 0
ldrsh r0, [r5, r2]
@@ -4965,7 +4965,7 @@ _080859C4:
thumb_func_start sub_80859D4
sub_80859D4: @ 80859D4
push {lr}
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl pal_fill_for_maplights
bl sub_8111CF0
bl ScriptContext2_Enable
@@ -5031,7 +5031,7 @@ sub_8085A54: @ 8085A54
beq _08085A78
movs r0, 0x28
bl PlaySE
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -5125,7 +5125,7 @@ _08085B10:
cmp r1, r0
bne _08085B58
adds r0, r6, 0
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ bl FieldObjectCheckHeldMovementStatus
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -5200,7 +5200,7 @@ sub_8085BA8: @ 8085BA8
bl ScriptContext2_Enable
bl player_bitmagic
bl CameraObjectReset2
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -5406,8 +5406,8 @@ sub_8085D34: @ 8085D34
cmp r0, 0x1
bne _08085D70
bl copy_saved_warp3_bank_and_enter_x_to_warp1
- bl warp_in
- ldr r0, _08085D78 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _08085D78 @ =CB2_LoadMap
bl SetMainCallback2
ldr r1, _08085D7C @ =gFieldCallback
ldr r0, _08085D80 @ =mapldr_08085D88
@@ -5422,7 +5422,7 @@ _08085D70:
bx r0
.align 2, 0
_08085D74: .4byte gPaletteFade
-_08085D78: .4byte sub_805671C
+_08085D78: .4byte CB2_LoadMap
_08085D7C: .4byte gFieldCallback
_08085D80: .4byte mapldr_08085D88
_08085D84: .4byte sub_8085B78
@@ -5431,7 +5431,7 @@ _08085D84: .4byte sub_8085B78
thumb_func_start mapldr_08085D88
mapldr_08085D88: @ 8085D88
push {lr}
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl pal_fill_for_maplights
bl sub_8111CF0
bl ScriptContext2_Enable
@@ -5540,7 +5540,7 @@ sub_8085E0C: @ 8085E0C
ldrb r0, [r2]
lsrs r0, 6
strh r0, [r6, 0x24]
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x26]
@@ -6185,7 +6185,7 @@ sub_8086358: @ 8086358
movs r1, 0
movs r2, 0
bl ChangeBgY
- bl sub_80F77B8
+ bl Menu_LoadStdPal
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
@@ -6568,7 +6568,7 @@ sub_8086650: @ 8086650
movs r1, 0
movs r2, 0
bl ChangeBgY
- bl sub_80F77B8
+ bl Menu_LoadStdPal
movs r0, 0x26
ldrsh r1, [r4, r0]
lsls r0, r1, 4
@@ -7050,12 +7050,12 @@ sub_8086A20: @ 8086A20
ldr r1, _08086A68 @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _08086A4A
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _08086A5C
@@ -7063,7 +7063,7 @@ _08086A4A:
bl sub_805CB70
adds r0, r4, 0
movs r1, 0x45
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
@@ -7087,7 +7087,7 @@ sub_8086A6C: @ 8086A6C
lsls r0, 2
ldr r1, _08086AAC @ =gMapObjects
adds r0, r1
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ bl FieldObjectCheckHeldMovementStatus
lsls r0, 24
cmp r0, 0
beq _08086AA2
@@ -7135,9 +7135,9 @@ sub_8086AB4: @ 8086AB4
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_805F060
+ bl EventObjectSetGraphicsId
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
ldrb r0, [r4, 0x18]
lsrs r0, 4
bl sub_80641C0
@@ -7145,7 +7145,7 @@ sub_8086AB4: @ 8086AB4
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldr r1, _08086B2C @ =gFieldEffectArguments
movs r2, 0xA
ldrsh r0, [r6, r2]
@@ -7182,7 +7182,7 @@ sub_8086B30: @ 8086B30
ldr r1, _08086BA0 @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _08086B96
@@ -7199,7 +7199,7 @@ sub_8086B30: @ 8086B30
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrb r0, [r4, 0x1A]
movs r1, 0x1
bl sub_80DC44C
@@ -7302,12 +7302,12 @@ sub_8086C24: @ 8086C24
ldr r1, _08086C6C @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _08086C4E
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _08086C60
@@ -7315,7 +7315,7 @@ _08086C4E:
bl sub_805CBE8
adds r0, r4, 0
movs r1, 0x45
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
@@ -7340,7 +7340,7 @@ sub_8086C70: @ 8086C70
ldr r1, _08086CA0 @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _08086CEE
@@ -7366,7 +7366,7 @@ _08086CAE:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_805F060
+ bl EventObjectSetGraphicsId
b _08086CD2
_08086CC0:
movs r0, 0
@@ -7375,7 +7375,7 @@ _08086CC0:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_805F060
+ bl EventObjectSetGraphicsId
_08086CD2:
ldrb r0, [r4, 0x18]
lsls r0, 28
@@ -7405,7 +7405,7 @@ sub_8086CF4: @ 8086CF4
lsls r0, 2
ldr r1, _08086D30 @ =gMapObjects
adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _08086D26
@@ -7599,12 +7599,12 @@ sub_8086E70: @ 8086E70
ldr r1, _08086EC4 @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _08086E9A
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _08086EB8
@@ -7617,7 +7617,7 @@ _08086E9A:
bl sub_805CB70
adds r0, r4, 0
movs r1, 0x45
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
@@ -7641,7 +7641,7 @@ sub_8086EC8: @ 8086EC8
lsls r0, 2
ldr r1, _08086F04 @ =gMapObjects
adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _08086EF8
@@ -7732,7 +7732,7 @@ sub_8086F64: @ 8086F64
ldr r1, _08086FA4 @ =gMapObjects
adds r0, r1
movs r1, 0x2
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
_08086F98:
pop {r4}
pop {r0}
@@ -7765,7 +7765,7 @@ sub_8086FA8: @ 8086FA8
bne _08086FEC
_08086FCE:
adds r0, r2, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _08086FEC
@@ -7809,7 +7809,7 @@ sub_8086FFC: @ 8086FFC
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_805F060
+ bl EventObjectSetGraphicsId
ldrb r1, [r4, 0x4]
lsls r0, r1, 4
adds r0, r1
@@ -7824,7 +7824,7 @@ sub_8086FFC: @ 8086FFC
strb r0, [r4, 0x1]
adds r0, r4, 0
movs r1, 0x54
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
@@ -8433,12 +8433,12 @@ sub_80874C8: @ 80874C8
ldr r1, _080875B8 @ =gMapObjects
adds r5, r0, r1
adds r0, r5, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _080874F2
adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _080875AE
@@ -8468,7 +8468,7 @@ _0808751A:
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
- bl sub_805F060
+ bl EventObjectSetGraphicsId
bl CameraObjectReset2
adds r0, r5, 0
movs r1, 0x3
@@ -8688,7 +8688,7 @@ sub_8087698: @ 8087698
bl sub_805CB70
adds r0, r5, 0
movs r1, 0x45
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r6, 0x8]
adds r0, 0x1
strh r0, [r6, 0x8]
@@ -8713,7 +8713,7 @@ sub_8087710: @ 8087710
lsls r0, 2
ldr r1, _08087744 @ =gMapObjects
adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _08087738
@@ -8795,7 +8795,7 @@ _080877B4:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_805F060
+ bl EventObjectSetGraphicsId
adds r0, r4, 0
movs r1, 0x1
bl FieldObjectTurn
diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s
index ceaaaf7a6..b2eb846e7 100644
--- a/asm/field_fadetransition.s
+++ b/asm/field_fadetransition.s
@@ -245,7 +245,7 @@ _0807DCDC:
sub_807DCE4: @ 807DCE4
push {lr}
bl ScriptContext2_Enable
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl sub_807DC00
ldr r0, _0807DD00 @ =task0A_nop_for_a_while
movs r1, 0xA
@@ -277,7 +277,7 @@ _0807DD1C:
FieldCallback_ReturnToEventScript2: @ 807DD24
push {lr}
bl ScriptContext2_Enable
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl sub_807DC00
ldr r0, _0807DD40 @ =task0A_asap_script_env_2_enable_and_set_ctx_running
movs r1, 0xA
@@ -366,7 +366,7 @@ _0807DDCA:
sub_807DDD0: @ 807DDD0
push {lr}
bl ScriptContext2_Enable
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl palette_bg_faded_fill_black
ldr r0, _0807DDEC @ =task_mpl_807DD60
movs r1, 0xA
@@ -434,7 +434,7 @@ _0807DE50:
sub_807DE58: @ 807DE58
push {lr}
bl ScriptContext2_Enable
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl palette_bg_faded_fill_black
ldr r0, _0807DE74 @ =sub_807DDF0
movs r1, 0xA
@@ -563,7 +563,7 @@ _0807DF5E:
thumb_func_start sub_807DF64
sub_807DF64: @ 807DF64
push {lr}
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl sub_8111CF0
movs r0, 0
bl sub_807DE78
@@ -575,7 +575,7 @@ sub_807DF64: @ 807DF64
thumb_func_start sub_807DF7C
sub_807DF7C: @ 807DF7C
push {lr}
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl sub_8111CF0
movs r0, 0x1
bl sub_807DE78
@@ -587,7 +587,7 @@ sub_807DF7C: @ 807DF7C
thumb_func_start sub_807DF94
sub_807DF94: @ 807DF94
push {lr}
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl pal_fill_for_maplights
bl sub_8111CF0
movs r0, 0x28
@@ -730,7 +730,7 @@ _0807E0AE:
ldr r1, _0807E0E8 @ =gMapObjects
adds r0, r1
movs r1, 0x10
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
movs r0, 0x8
strh r0, [r4, 0x8]
b _0807E206
@@ -783,7 +783,7 @@ _0807E10E:
lsls r0, 2
ldr r1, _0807E15C @ =gMapObjects
adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
b _0807E1F2
.align 2, 0
_0807E158: .4byte sub_807F204
@@ -807,7 +807,7 @@ _0807E160:
ldr r1, _0807E194 @ =gMapObjects
adds r0, r1
movs r1, 0x10
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
movs r0, 0x2
strh r0, [r4, 0x8]
b _0807E206
@@ -838,7 +838,7 @@ _0807E198:
lsls r0, 2
ldr r1, _0807E1D8 @ =gMapObjects
adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
movs r0, 0x3
strh r0, [r4, 0x8]
b _0807E206
@@ -929,7 +929,7 @@ _0807E25E:
lsls r4, 2
ldr r0, _0807E2A4 @ =gMapObjects
adds r4, r0
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
bl sub_8063F84
@@ -937,7 +937,7 @@ _0807E25E:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
movs r0, 0x2
strh r0, [r5, 0x8]
b _0807E2C6
@@ -1112,7 +1112,7 @@ _0807E3E4:
sub_807E3EC: @ 807E3EC
push {lr}
bl ScriptContext2_Enable
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl sub_807DC00
ldr r0, _0807E408 @ =task_mpl_807E3C8
movs r1, 0xA
@@ -1411,7 +1411,7 @@ _0807E632:
strh r0, [r4, 0x8]
b _0807E64A
_0807E63A:
- bl warp_in
+ bl WarpIntoMap
ldr r0, _0807E650 @ =sub_8056788
bl SetMainCallback2
adds r0, r5, 0
@@ -1494,8 +1494,8 @@ _0807E6DC:
ldrb r0, [r0]
cmp r0, 0
bne _0807E6F4
- bl warp_in
- ldr r0, _0807E700 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _0807E700 @ =CB2_LoadMap
bl SetMainCallback2
adds r0, r5, 0
bl DestroyTask
@@ -1505,7 +1505,7 @@ _0807E6F4:
bx r0
.align 2, 0
_0807E6FC: .4byte gReceivedRemoteLinkPlayers
-_0807E700: .4byte sub_805671C
+_0807E700: .4byte CB2_LoadMap
thumb_func_end sub_807E678
thumb_func_start sub_807E704
@@ -1563,8 +1563,8 @@ _0807E762:
strh r0, [r4, 0x8]
b _0807E77A
_0807E76A:
- bl warp_in
- ldr r0, _0807E780 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _0807E780 @ =CB2_LoadMap
bl SetMainCallback2
adds r0, r5, 0
bl DestroyTask
@@ -1573,7 +1573,7 @@ _0807E77A:
pop {r0}
bx r0
.align 2, 0
-_0807E780: .4byte sub_805671C
+_0807E780: .4byte CB2_LoadMap
thumb_func_end sub_807E718
thumb_func_start sub_807E784
@@ -1630,8 +1630,8 @@ _0807E7EA:
strh r0, [r4, 0x8]
b _0807E802
_0807E7F2:
- bl warp_in
- ldr r0, _0807E808 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _0807E808 @ =CB2_LoadMap
bl SetMainCallback2
adds r0, r5, 0
bl DestroyTask
@@ -1640,7 +1640,7 @@ _0807E802:
pop {r0}
bx r0
.align 2, 0
-_0807E808: .4byte sub_805671C
+_0807E808: .4byte CB2_LoadMap
thumb_func_end sub_807E784
thumb_func_start sub_807E80C
@@ -1744,7 +1744,7 @@ _0807E8AE:
lsls r0, 2
adds r0, r4
movs r1, 0x11
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
movs r0, 0x2
strh r0, [r5, 0x8]
b _0807E976
@@ -1776,7 +1776,7 @@ _0807E8F4:
lsls r0, 2
ldr r1, _0807E93C @ =gMapObjects
adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
movs r0, 0
bl sub_807DCB0
movs r0, 0x3
@@ -1871,12 +1871,12 @@ _0807E9DA:
b _0807EA92
_0807E9E8:
adds r0, r6, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _0807EA00
adds r0, r6, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0807EAB0
@@ -1957,8 +1957,8 @@ _0807EA9A:
ldr r0, _0807EAB8 @ =gFieldCallback
ldr r1, _0807EABC @ =sub_807DF64
str r1, [r0]
- bl warp_in
- ldr r0, _0807EAC0 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _0807EAC0 @ =CB2_LoadMap
bl SetMainCallback2
adds r0, r4, 0
bl DestroyTask
@@ -1970,7 +1970,7 @@ _0807EAB0:
.align 2, 0
_0807EAB8: .4byte gFieldCallback
_0807EABC: .4byte sub_807DF64
-_0807EAC0: .4byte sub_805671C
+_0807EAC0: .4byte CB2_LoadMap
thumb_func_end sub_807E980
thumb_func_start sub_807EAC4
@@ -2033,7 +2033,7 @@ _0807EB08:
lsrs r0, 7
cmp r0, 0
beq _0807EB4C
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
bl GetStepInPlaceDelay16AnimId
@@ -2071,7 +2071,7 @@ sub_807EB64: @ 807EB64
lsls r4, 2
ldr r0, _0807EBB8 @ =gMapObjects
adds r4, r0
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
bl GetStepInPlaceDelay16AnimId
@@ -2188,7 +2188,7 @@ sub_807EC34: @ 807EC34
.align 2, 0
_0807EC6C: .4byte gTasks+0x8
_0807EC70:
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
bl pal_fill_for_maplights
bl ScriptContext2_Enable
adds r0, r5, 0x2
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index 145521094..92ef6a6e4 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -1373,8 +1373,8 @@ SpawnSpecialFieldObject: @ 805E7F4
_0805E82C: .4byte gSaveBlock1Ptr
thumb_func_end SpawnSpecialFieldObject
- thumb_func_start SpawnSpecialFieldObjectParametrized
-SpawnSpecialFieldObjectParametrized: @ 805E830
+ thumb_func_start SpawnSpecialFieldObjectParameterized
+SpawnSpecialFieldObjectParameterized: @ 805E830
push {r4-r6,lr}
mov r6, r8
push {r6}
@@ -1425,7 +1425,7 @@ SpawnSpecialFieldObjectParametrized: @ 805E830
bx r1
.align 2, 0
_0805E894: .4byte 0xfff90000
- thumb_func_end SpawnSpecialFieldObjectParametrized
+ thumb_func_end SpawnSpecialFieldObjectParameterized
thumb_func_start show_sprite
show_sprite: @ 805E898
@@ -1550,8 +1550,8 @@ MakeObjectTemplateFromFieldObjectTemplate: @ 805E960
bx r0
thumb_func_end MakeObjectTemplateFromFieldObjectTemplate
- thumb_func_start AddPseudoFieldObject
-AddPseudoFieldObject: @ 805E978
+ thumb_func_start AddPseudoEventObject
+AddPseudoEventObject: @ 805E978
push {r4-r6,lr}
sub sp, 0x1C
ldr r4, [sp, 0x2C]
@@ -1612,7 +1612,7 @@ _0805E9E4:
.align 2, 0
_0805E9F0: .4byte 0x0000ffff
_0805E9F4: .4byte gSprites
- thumb_func_end AddPseudoFieldObject
+ thumb_func_end AddPseudoEventObject
thumb_func_start sprite_new
sprite_new: @ 805E9F8
@@ -2440,8 +2440,8 @@ _0805F058: .4byte gPlayerAvatar
_0805F05C: .4byte gMapObjects
thumb_func_end SetPlayerAvatarFieldObjectIdAndObjectId
- thumb_func_start sub_805F060
-sub_805F060: @ 805F060
+ thumb_func_start EventObjectSetGraphicsId
+EventObjectSetGraphicsId: @ 805F060
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -2625,7 +2625,7 @@ _0805F1BA:
_0805F1CC: .4byte gSprites
_0805F1D0: .4byte 0x000003ff
_0805F1D4: .4byte 0xfffffc00
- thumb_func_end sub_805F060
+ thumb_func_end EventObjectSetGraphicsId
thumb_func_start FieldObjectSetGraphicsIdByLocalIdAndMap
FieldObjectSetGraphicsIdByLocalIdAndMap: @ 805F1D8
@@ -2652,7 +2652,7 @@ FieldObjectSetGraphicsIdByLocalIdAndMap: @ 805F1D8
ldr r1, _0805F214 @ =gMapObjects
adds r0, r1
adds r1, r4, 0
- bl sub_805F060
+ bl EventObjectSetGraphicsId
_0805F20C:
add sp, 0x4
pop {r4}
@@ -10353,7 +10353,7 @@ mss_npc_reset_oampriv3_1_unk2_unk3: @ 80628C0
ldrb r0, [r4]
cmp r0, 0
bne _080628D8
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
strb r0, [r4]
_080628D8:
movs r0, 0x1
@@ -13097,8 +13097,8 @@ FieldObjectMoveDestCoords: @ 8063C50
bx r0
thumb_func_end FieldObjectMoveDestCoords
- thumb_func_start FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
-FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive: @ 8063C70
+ thumb_func_start FieldObjectIsMovementOverridden
+FieldObjectIsMovementOverridden: @ 8063C70
push {lr}
ldrb r1, [r0]
movs r0, 0x42
@@ -13112,7 +13112,7 @@ _08063C80:
_08063C82:
pop {r1}
bx r1
- thumb_func_end FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ thumb_func_end FieldObjectIsMovementOverridden
thumb_func_start FieldObjectIsSpecialAnimActive
FieldObjectIsSpecialAnimActive: @ 8063C88
@@ -13134,8 +13134,8 @@ _08063CA0:
bx r1
thumb_func_end FieldObjectIsSpecialAnimActive
- thumb_func_start sub_8063CA4
-sub_8063CA4: @ 8063CA4
+ thumb_func_start FieldObjectSetHeldMovement
+FieldObjectSetHeldMovement: @ 8063CA4
push {r4,r5,lr}
adds r4, r0, 0
lsls r1, 24
@@ -13146,7 +13146,7 @@ sub_8063CA4: @ 8063CA4
cmp r0, 0x1
beq _08063CC8
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _08063CCE
@@ -13180,7 +13180,7 @@ _08063CF4:
bx r1
.align 2, 0
_08063CFC: .4byte gSprites
- thumb_func_end sub_8063CA4
+ thumb_func_end FieldObjectSetHeldMovement
thumb_func_start FieldObjectForceSetSpecialAnim
FieldObjectForceSetSpecialAnim: @ 8063D00
@@ -13191,7 +13191,7 @@ FieldObjectForceSetSpecialAnim: @ 8063D00
bl FieldObjectClearAnimIfSpecialAnimActive
adds r0, r5, 0
adds r1, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
pop {r4,r5}
pop {r0}
bx r0
@@ -13242,8 +13242,8 @@ FieldObjectClearAnim: @ 8063D34
_08063D64: .4byte gSprites
thumb_func_end FieldObjectClearAnim
- thumb_func_start FieldObjectCheckIfSpecialAnimFinishedOrInactive
-FieldObjectCheckIfSpecialAnimFinishedOrInactive: @ 8063D68
+ thumb_func_start FieldObjectCheckHeldMovementStatus
+FieldObjectCheckHeldMovementStatus: @ 8063D68
push {lr}
ldrb r1, [r0]
lsls r0, r1, 25
@@ -13256,13 +13256,13 @@ _08063D76:
_08063D78:
pop {r1}
bx r1
- thumb_func_end FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ thumb_func_end FieldObjectCheckHeldMovementStatus
- thumb_func_start FieldObjectClearAnimIfSpecialAnimFinished
-FieldObjectClearAnimIfSpecialAnimFinished: @ 8063D7C
+ thumb_func_start FieldObjectClearHeldMovementIfFinished
+FieldObjectClearHeldMovementIfFinished: @ 8063D7C
push {r4,r5,lr}
adds r5, r0, 0
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ bl FieldObjectCheckHeldMovementStatus
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
@@ -13276,7 +13276,7 @@ _08063D96:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end FieldObjectClearAnimIfSpecialAnimFinished
+ thumb_func_end FieldObjectClearHeldMovementIfFinished
thumb_func_start FieldObjectGetSpecialAnim
FieldObjectGetSpecialAnim: @ 8063DA0
@@ -14023,7 +14023,7 @@ FieldObjectFaceOppositeDirection: @ 80642C8
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
lsls r0, 24
lsrs r0, 24
pop {r4}
diff --git a/asm/field_message_box.s b/asm/field_message_box.s
index 46f4c3f8e..a326e0f59 100644
--- a/asm/field_message_box.s
+++ b/asm/field_message_box.s
@@ -65,13 +65,13 @@ _0806939E:
movs r1, 0x80
lsls r1, 2
movs r0, 0
- bl sub_814FF98
+ bl TextWindow_LoadTilesStdFrame1
b _080693E2
.align 2, 0
_080693BC: .4byte gUnknown_203ADFA
_080693C0: .4byte gTextFlags
_080693C4:
- bl sub_8069A38
+ bl IsMsgSignPost
lsls r0, 24
cmp r0, 0
bne _080693D4
@@ -90,7 +90,7 @@ _080693E2:
strh r0, [r5, 0x8]
b _08069402
_080693EA:
- bl sub_80F6CBC
+ bl RunTextPrinters_CheckPrinter0Active
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
@@ -226,7 +226,7 @@ textbox_fdecode_auto_and_task_add: @ 80694C8
ldr r0, _080694E0 @ =gStringVar4
bl StringExpandPlaceholders
movs r0, 0x1
- bl sub_80F6D5C
+ bl AddTextPrinterDiffStyle
bl task_add_textbox
pop {r0}
bx r0
@@ -238,7 +238,7 @@ _080694E0: .4byte gStringVar4
textbox_auto_and_task_add: @ 80694E4
push {lr}
movs r0, 0x1
- bl sub_80F6D5C
+ bl AddTextPrinterDiffStyle
bl task_add_textbox
pop {r0}
bx r0
diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s
index b7824ee84..c753fb948 100644
--- a/asm/field_player_avatar.s
+++ b/asm/field_player_avatar.s
@@ -94,12 +94,12 @@ sub_805B45C: @ 805B45C
adds r4, r0, 0
lsls r1, 24
lsrs r5, r1, 24
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _0805B4A6
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
bne _0805B4A6
@@ -845,7 +845,7 @@ _0805B9AC: .4byte gPlayerAvatar
thumb_func_start PlayerNotOnBikeNotMoving
PlayerNotOnBikeNotMoving: @ 805B9B0
push {lr}
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
bl PlayerFaceDirection
@@ -1631,7 +1631,7 @@ PlayerIsAnimActive: @ 805BF7C
lsls r0, 2
ldr r1, _0805BF9C @ =gMapObjects
adds r0, r1
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
lsrs r0, 24
pop {r1}
@@ -1651,7 +1651,7 @@ PlayerCheckIfAnimFinishedOrInactive: @ 805BFA0
lsls r0, 2
ldr r1, _0805BFC0 @ =gMapObjects
adds r0, r1
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ bl FieldObjectCheckHeldMovementStatus
lsls r0, 24
lsrs r0, 24
pop {r1}
@@ -1737,7 +1737,7 @@ sub_805C024: @ 805C024
ldr r1, _0805C068 @ =gMapObjects
adds r0, r1
adds r1, r5, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
lsls r0, 24
cmp r0, 0
bne _0805C05E
@@ -1765,7 +1765,7 @@ sub_805C06C: @ 805C06C
ldr r1, _0805C0A0 @ =gMapObjects
adds r0, r1
adds r1, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
lsls r0, 24
cmp r0, 0
bne _0805C094
@@ -1789,7 +1789,7 @@ sub_805C0A4: @ 805C0A4
lsls r1, 24
lsrs r5, r1, 24
adds r1, r5, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
lsls r0, 24
cmp r0, 0
bne _0805C0CA
@@ -2404,7 +2404,7 @@ GetXYCoordsOneStepInFrontOfPlayer: @ 805C4F4
adds r0, r3
ldrh r0, [r0, 0x12]
strh r0, [r5]
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
adds r1, r4, 0
@@ -2582,8 +2582,8 @@ _0805C6BC:
bx r1
thumb_func_end plaer_get_pos_including_state_based_drift
- thumb_func_start player_get_direction_lower_nybble
-player_get_direction_lower_nybble: @ 805C6C4
+ thumb_func_start GetPlayerFacingDirection
+GetPlayerFacingDirection: @ 805C6C4
ldr r2, _0805C6DC @ =gMapObjects
ldr r0, _0805C6E0 @ =gPlayerAvatar
ldrb r1, [r0, 0x5]
@@ -2598,7 +2598,7 @@ player_get_direction_lower_nybble: @ 805C6C4
.align 2, 0
_0805C6DC: .4byte gMapObjects
_0805C6E0: .4byte gPlayerAvatar
- thumb_func_end player_get_direction_lower_nybble
+ thumb_func_end GetPlayerFacingDirection
thumb_func_start player_get_direction_upper_nybble
player_get_direction_upper_nybble: @ 805C6E4
@@ -3257,7 +3257,7 @@ sub_805CB70: @ 805CB70
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_805F060
+ bl EventObjectSetGraphicsId
ldrb r1, [r5, 0x4]
lsls r0, r1, 4
adds r0, r1
@@ -3318,7 +3318,7 @@ sub_805CBE8: @ 805CBE8
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_805F060
+ bl EventObjectSetGraphicsId
ldrb r1, [r5, 0x4]
lsls r0, r1, 4
adds r0, r1
@@ -3532,19 +3532,19 @@ sub_805CD84: @ 805CD84
adds r5, r1, 0
adds r4, r2, 0
adds r0, r5, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
bne _0805CE0E
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
bne _0805CE0E
adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
ldrb r0, [r6, 0xC]
bl GetStepInPlaceDelay16AnimId
adds r1, r0, 0
@@ -3602,19 +3602,19 @@ sub_805CE20: @ 805CE20
adds r5, r1, 0
adds r4, r2, 0
adds r0, r5, 0
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ bl FieldObjectCheckHeldMovementStatus
lsls r0, 24
cmp r0, 0
beq _0805CE70
adds r0, r4, 0
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ bl FieldObjectCheckHeldMovementStatus
lsls r0, 24
cmp r0, 0
beq _0805CE70
adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
adds r0, r4, 0
bl sub_806DE28
ldrh r0, [r4, 0x10]
@@ -3704,7 +3704,7 @@ PlayerAvatar_DoSecretBaseMatJump: @ 805CEEC
movs r0, 0x1
strb r0, [r5, 0x6]
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0805CF48
@@ -3836,7 +3836,7 @@ sub_805CFEC: @ 805CFEC
movs r2, 0x4
bl memcpy
adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0805D054
@@ -3896,7 +3896,7 @@ sub_805D064: @ 805D064
movs r2, 0x5
bl memcpy
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0805D094
@@ -3924,7 +3924,7 @@ sub_805D0A4: @ 805D0A4
adds r4, r0, 0
adds r5, r1, 0
adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0805D0E8
@@ -4073,12 +4073,12 @@ taskFF_0805D1D4: @ 805D1D4
ldr r1, _0805D234 @ =gMapObjects
adds r5, r0, r1
adds r0, r5, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _0805D200
adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0805D228
@@ -4124,7 +4124,7 @@ sub_805D240: @ 805D240
ldr r1, _0805D2B8 @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0805D2AE
@@ -4134,7 +4134,7 @@ sub_805D240: @ 805D240
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_805F060
+ bl EventObjectSetGraphicsId
ldrb r0, [r4, 0x18]
lsls r0, 28
lsrs r0, 28
@@ -4503,7 +4503,7 @@ _0805D548:
adds r4, r0
lsls r4, 2
adds r4, r5
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
bl sub_8063510
@@ -4676,7 +4676,7 @@ sub_805D66C: @ 805D66C
movs r0, 0
movs r1, 0x2
movs r3, 0x1
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
@@ -4734,7 +4734,7 @@ _0805D6EA:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_805F060
+ bl EventObjectSetGraphicsId
ldrb r1, [r4, 0x18]
lsrs r1, 4
adds r0, r4, 0
@@ -4827,7 +4827,7 @@ sub_805D7C0: @ 805D7C0
adds r4, r0
lsls r4, 2
adds r4, r5
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
bl sub_8063500
@@ -4851,7 +4851,7 @@ sub_805D7C0: @ 805D7C0
movs r0, 0
movs r1, 0x2
movs r3, 0x1
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
movs r0, 0xD
strh r0, [r6, 0x8]
movs r0, 0x1
@@ -4883,7 +4883,7 @@ sub_805D838: @ 805D838
adds r4, r0
lsls r4, 2
adds r4, r5
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
bl sub_8063500
@@ -4904,7 +4904,7 @@ sub_805D838: @ 805D838
movs r0, 0
movs r1, 0x2
movs r3, 0x1
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
ldrh r0, [r6, 0x8]
adds r0, 0x1
strh r0, [r6, 0x8]
@@ -4978,7 +4978,7 @@ sub_805D8D8: @ 805D8D8
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_805F060
+ bl EventObjectSetGraphicsId
ldrb r1, [r4, 0x18]
lsrs r1, 4
adds r0, r4, 0
@@ -5131,7 +5131,7 @@ _0805DA2E:
bhi _0805DA60
movs r0, 0x8
strh r0, [r4, 0x24]
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
@@ -5280,7 +5280,7 @@ _0805DB58:
b _0805DBFA
_0805DB5E:
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0805DBFA
@@ -5608,7 +5608,7 @@ sub_805DDC8: @ 805DDC8
ble _0805DE20
_0805DDE4:
adds r0, r5, 0
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ bl FieldObjectCheckHeldMovementStatus
lsls r0, 24
cmp r0, 0
beq _0805DE20
diff --git a/asm/field_poison.s b/asm/field_poison.s
deleted file mode 100644
index f76e7db4f..000000000
--- a/asm/field_poison.s
+++ /dev/null
@@ -1,316 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start CheckMonIsValid
-CheckMonIsValid: @ 80A0460
- push {lr}
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080A0478
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bne _080A047C
-_080A0478:
- movs r0, 0
- b _080A047E
-_080A047C:
- movs r0, 0x1
-_080A047E:
- pop {r1}
- bx r1
- thumb_func_end CheckMonIsValid
-
- thumb_func_start AllMonsFainted
-AllMonsFainted: @ 80A0484
- push {r4,r5,lr}
- ldr r4, _080A04A4 @ =gPlayerParty
- movs r5, 0
-_080A048A:
- adds r0, r4, 0
- bl CheckMonIsValid
- cmp r0, 0
- beq _080A04A8
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080A04A8
- movs r0, 0
- b _080A04B2
- .align 2, 0
-_080A04A4: .4byte gPlayerParty
-_080A04A8:
- adds r5, 0x1
- adds r4, 0x64
- cmp r5, 0x5
- ble _080A048A
- movs r0, 0x1
-_080A04B2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end AllMonsFainted
-
- thumb_func_start MonFaintFromPoisonOnField
-MonFaintFromPoisonOnField: @ 80A04B8
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- adds r4, r0, 0
- muls r4, r1
- ldr r0, _080A04FC @ =gPlayerParty
- adds r4, r0
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x8
- bl AdjustFriendship
- adds r0, r4, 0
- movs r1, 0x37
- mov r2, sp
- bl SetMonData
- ldr r5, _080A0500 @ =gStringVar1
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r5, 0
- bl GetMonData
- adds r0, r5, 0
- bl StringGetEnd10
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A04FC: .4byte gPlayerParty
-_080A0500: .4byte gStringVar1
- thumb_func_end MonFaintFromPoisonOnField
-
- thumb_func_start CheckMonFaintedFromPoison
-CheckMonFaintedFromPoison: @ 80A0504
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r1, r0
- ldr r0, _080A0540 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- bl CheckMonIsValid
- cmp r0, 0
- beq _080A0544
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080A0544
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- bl pokemon_ailments_get_primary
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A0544
- movs r0, 0x1
- b _080A0546
- .align 2, 0
-_080A0540: .4byte gPlayerParty
-_080A0544:
- movs r0, 0
-_080A0546:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end CheckMonFaintedFromPoison
-
- thumb_func_start Task_WhiteOut
-Task_WhiteOut: @ 80A054C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080A0570 @ =gTasks+0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080A05A6
- cmp r0, 0x1
- bgt _080A0574
- cmp r0, 0
- beq _080A057A
- b _080A05F6
- .align 2, 0
-_080A0570: .4byte gTasks+0x8
-_080A0574:
- cmp r0, 0x2
- beq _080A05B8
- b _080A05F6
-_080A057A:
- ldrh r1, [r4, 0x2]
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0x5
- bgt _080A05A0
-_080A0584:
- lsls r0, r1, 24
- lsrs r0, 24
- bl CheckMonFaintedFromPoison
- cmp r0, 0
- bne _080A05D0
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- adds r1, r0, 0
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080A0584
-_080A05A0:
- movs r0, 0x2
- strh r0, [r4]
- b _080A05F6
-_080A05A6:
- bl IsFieldMessageBoxHidden
- lsls r0, 24
- cmp r0, 0
- beq _080A05F6
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r4]
- b _080A05F6
-_080A05B8:
- bl AllMonsFainted
- adds r1, r0, 0
- cmp r1, 0
- beq _080A05E8
- ldr r1, _080A05CC @ =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
- b _080A05EC
- .align 2, 0
-_080A05CC: .4byte gSpecialVar_Result
-_080A05D0:
- ldrb r0, [r4, 0x2]
- bl MonFaintFromPoisonOnField
- ldr r0, _080A05E4 @ =gUnknown_81A5476
- bl ShowFieldMessage
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080A05F6
- .align 2, 0
-_080A05E4: .4byte gUnknown_81A5476
-_080A05E8:
- ldr r0, _080A05FC @ =gSpecialVar_Result
- strh r1, [r0]
-_080A05EC:
- bl EnableBothScriptContexts
- adds r0, r5, 0
- bl DestroyTask
-_080A05F6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A05FC: .4byte gSpecialVar_Result
- thumb_func_end Task_WhiteOut
-
- thumb_func_start ExecuteWhiteOut
-ExecuteWhiteOut: @ 80A0600
- push {lr}
- ldr r0, _080A0614 @ =Task_WhiteOut
- movs r1, 0x50
- bl CreateTask
- bl ScriptContext1_Stop
- pop {r0}
- bx r0
- .align 2, 0
-_080A0614: .4byte Task_WhiteOut
- thumb_func_end ExecuteWhiteOut
-
- thumb_func_start overworld_poison
-overworld_poison: @ 80A0618
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r4, _080A0684 @ =gPlayerParty
- movs r7, 0
- movs r6, 0
- movs r5, 0x5
-_080A0624:
- adds r0, r4, 0
- movs r1, 0x5
- bl GetMonData
- cmp r0, 0
- beq _080A0668
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- bl pokemon_ailments_get_primary
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A0668
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- str r0, [sp]
- cmp r0, 0
- beq _080A065A
- subs r0, 0x1
- str r0, [sp]
- cmp r0, 0
- bne _080A065C
-_080A065A:
- adds r6, 0x1
-_080A065C:
- adds r0, r4, 0
- movs r1, 0x39
- mov r2, sp
- bl SetMonData
- adds r7, 0x1
-_080A0668:
- adds r4, 0x64
- subs r5, 0x1
- cmp r5, 0
- bge _080A0624
- cmp r6, 0
- bne _080A0678
- cmp r7, 0
- beq _080A067C
-_080A0678:
- bl overworld_poison_effect
-_080A067C:
- cmp r6, 0
- beq _080A0688
- movs r0, 0x2
- b _080A0692
- .align 2, 0
-_080A0684: .4byte gPlayerParty
-_080A0688:
- cmp r7, 0
- bne _080A0690
- movs r0, 0
- b _080A0692
-_080A0690:
- movs r0, 0x1
-_080A0692:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end overworld_poison
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_screen_effect.s b/asm/field_screen_effect.s
index 24ca7a19a..079abee2c 100644
--- a/asm/field_screen_effect.s
+++ b/asm/field_screen_effect.s
@@ -785,7 +785,7 @@ _0807F3E0:
movs r1, 0x2
mov r2, r10
mov r3, r9
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
ldr r2, _0807F42C @ =gTextFlags
ldrb r1, [r2]
movs r0, 0x2
diff --git a/asm/field_special_scene.s b/asm/field_special_scene.s
deleted file mode 100644
index ab436029f..000000000
--- a/asm/field_special_scene.s
+++ /dev/null
@@ -1,39 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80A0E78
-sub_80A0E78: @ 80A0E78
- movs r0, 0
- bx lr
- thumb_func_end sub_80A0E78
-
- thumb_func_start nullsub_57
-nullsub_57: @ 80A0E7C
- bx lr
- thumb_func_end nullsub_57
-
- thumb_func_start nullsub_58
-nullsub_58: @ 80A0E80
- bx lr
- thumb_func_end nullsub_58
-
- thumb_func_start nullsub_59
-nullsub_59: @ 80A0E84
- bx lr
- thumb_func_end nullsub_59
-
- thumb_func_start nullsub_60
-nullsub_60: @ 80A0E88
- bx lr
- thumb_func_end nullsub_60
-
- thumb_func_start nullsub_61
-nullsub_61: @ 80A0E8C
- bx lr
- thumb_func_end nullsub_61
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_specials.s b/asm/field_specials.s
index d98798352..4c37e0638 100644
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -9,13 +9,13 @@
sub_80CA618: @ 80CA618
push {lr}
bl sub_8112364
- ldr r0, _080CA62C @ =sub_80F4C10
+ ldr r0, _080CA62C @ =CB2_ShowDiploma
bl SetMainCallback2
bl ScriptContext2_Enable
pop {r0}
bx r0
.align 2, 0
-_080CA62C: .4byte sub_80F4C10
+_080CA62C: .4byte CB2_ShowDiploma
thumb_func_end sub_80CA618
thumb_func_start sub_80CA630
@@ -178,11 +178,11 @@ _080CA748: .4byte gUnknown_8417FCC
thumb_func_start sub_80CA74C
sub_80CA74C: @ 80CA74C
- ldr r0, _080CA754 @ =gUnknown_2023E8A
+ ldr r0, _080CA754 @ =gBattleOutcome
ldrb r0, [r0]
bx lr
.align 2, 0
-_080CA754: .4byte gUnknown_2023E8A
+_080CA754: .4byte gBattleOutcome
thumb_func_end sub_80CA74C
thumb_func_start sub_80CA758
@@ -268,13 +268,13 @@ _080CA7E6:
sub_80CA7EC: @ 80CA7EC
push {lr}
bl sub_8112364
- ldr r1, _080CA800 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r1, _080CA800 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
movs r0, 0x1
bl sub_80BFF50
pop {r0}
bx r0
.align 2, 0
-_080CA800: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_080CA800: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_80CA7EC
thumb_func_start sub_80CA804
@@ -413,7 +413,7 @@ sub_80CA8F8: @ 80CA8F8
movs r4, 0
movs r7, 0
movs r5, 0
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
@@ -510,7 +510,7 @@ sub_80CA9A8: @ 80CA9A8
movs r4, 0
movs r6, 0
movs r5, 0
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
@@ -601,7 +601,7 @@ SpawnScriptFieldObject: @ 80CAA34
movs r0, 0x12
movs r1, 0x8
movs r2, 0x7F
- bl SpawnSpecialFieldObjectParametrized
+ bl SpawnSpecialFieldObjectParameterized
lsls r0, 24
lsrs r0, 24
ldr r2, _080CAA84 @ =gMapObjects
@@ -2071,12 +2071,12 @@ sub_80CB580: @ 80CB580
ldr r5, _080CB62C @ =0x0000021d
adds r1, r5, 0
movs r2, 0xD0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
ldrb r0, [r4]
movs r1, 0
adds r2, r5, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldrb r0, [r4]
ldr r2, _080CB630 @ =gUnknown_8418075
movs r1, 0x2
@@ -2141,7 +2141,7 @@ sub_80CB63C: @ 80CB63C
ldr r4, _080CB654 @ =gUnknown_2039A0C
ldrb r0, [r4]
movs r1, 0x1
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl RemoveWindow
pop {r4}
@@ -2631,7 +2631,7 @@ _080CB9D2:
lsrs r0, 24
strh r0, [r5, 0x22]
movs r1, 0
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
ldr r4, _080CBA70 @ =gUnknown_3005360
ldrh r0, [r5, 0xA]
strh r0, [r4, 0xC]
@@ -2753,7 +2753,7 @@ sub_80CBADC: @ 80CBADC
ldr r4, _080CBB20 @ =gUnknown_3005378
adds r1, r4, 0
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldr r1, _080CBB24 @ =gUnknown_2039A18
ldrh r0, [r4]
strh r0, [r1]
@@ -2781,7 +2781,7 @@ sub_80CBB28: @ 80CBB28
ldrh r0, [r6, 0x24]
lsls r0, 24
lsrs r0, 24
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r4, r0, 0
movs r0, 0x2
negs r0, r0
@@ -2854,7 +2854,7 @@ sub_80CBBAC: @ 80CBBAC
lsrs r0, 24
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldr r0, _080CBC28 @ =gUnknown_2039A14
ldr r0, [r0]
bl Free
@@ -2862,7 +2862,7 @@ sub_80CBBAC: @ 80CBBAC
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrh r0, [r4, 0x22]
lsls r0, 24
lsrs r0, 24
@@ -3150,8 +3150,8 @@ _080CBDF8: .4byte gSelectedEventObject
_080CBDFC: .4byte gUnknown_20370DA
thumb_func_end sub_80CBDE8
- thumb_func_start sub_80CBE00
-sub_80CBE00: @ 80CBE00
+ thumb_func_start ContextNpcGetTextColor
+ContextNpcGetTextColor: @ 80CBE00
push {lr}
ldr r0, _080CBE18 @ =gUnknown_20370DA
ldrh r0, [r0]
@@ -3183,7 +3183,7 @@ _080CBE20:
lsls r0, 24
lsrs r0, 24
_080CBE40:
- bl sub_813CD24
+ bl GetColorFromTextColorTable
_080CBE44:
lsls r0, 24
lsrs r0, 24
@@ -3192,7 +3192,7 @@ _080CBE48:
bx r1
.align 2, 0
_080CBE4C: .4byte gMapObjects
- thumb_func_end sub_80CBE00
+ thumb_func_end ContextNpcGetTextColor
thumb_func_start sub_80CBE50
sub_80CBE50: @ 80CBE50
@@ -3469,7 +3469,7 @@ ChangeBoxPokemonNickname_CB: @ 80CC064
ldrb r1, [r1]
ldr r2, _080CC084 @ =gStringVar2
bl SetBoxMonNickFromAnyBox
- bl c2_exit_to_overworld_1_continue_scripts_restart_music
+ bl CB2_ReturnToFieldContinueScriptPlayMapMusic
pop {r0}
bx r0
.align 2, 0
@@ -3577,7 +3577,7 @@ ChangePokemonNickname_CB: @ 80CC144
ldr r2, _080CC16C @ =gStringVar2
movs r1, 0x2
bl SetMonData
- bl c2_exit_to_overworld_1_continue_scripts_restart_music
+ bl CB2_ReturnToFieldContinueScriptPlayMapMusic
pop {r0}
bx r0
.align 2, 0
@@ -5152,7 +5152,7 @@ sub_80CCD84: @ 80CCD84
ldr r0, _080CCDC4 @ =0x00190018
cmp r1, r0
bne _080CCDC8
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
diff --git a/asm/field_weather.s b/asm/field_weather.s
index e8d3ba7ee..ac24101a7 100644
--- a/asm/field_weather.s
+++ b/asm/field_weather.s
@@ -2672,8 +2672,8 @@ _0807B054: .4byte gUnknown_2037F34
_0807B058: .4byte 0x000006d3
thumb_func_end sub_807B048
- thumb_func_start sub_807B05C
-sub_807B05C: @ 807B05C
+ thumb_func_start SetWeatherScreenFadeOut
+SetWeatherScreenFadeOut: @ 807B05C
ldr r0, _0807B068 @ =gUnknown_2037F34
ldr r1, _0807B06C @ =0x000006c6
adds r0, r1
@@ -2683,7 +2683,7 @@ sub_807B05C: @ 807B05C
.align 2, 0
_0807B068: .4byte gUnknown_2037F34
_0807B06C: .4byte 0x000006c6
- thumb_func_end sub_807B05C
+ thumb_func_end SetWeatherScreenFadeOut
thumb_func_start sub_807B070
sub_807B070: @ 807B070
diff --git a/asm/fighting.s b/asm/fighting.s
new file mode 100644
index 000000000..518927a3c
--- /dev/null
+++ b/asm/fighting.s
@@ -0,0 +1,1746 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start unc_080B08A0
+unc_080B08A0: @ 80B08A0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080B08D0 @ =gBattleAnimArgs
+ movs r0, 0
+ ldrsh r1, [r5, r0]
+ adds r0, r4, 0
+ bl sub_8074FF8
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ movs r0, 0xF
+ strh r0, [r4, 0x2E]
+ ldr r0, _080B08D4 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ ldr r1, _080B08D8 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B08D0: .4byte gBattleAnimArgs
+_080B08D4: .4byte sub_8074C44
+_080B08D8: .4byte DestroyAnimSprite
+ thumb_func_end unc_080B08A0
+
+ thumb_func_start sub_80B08DC
+sub_80B08DC: @ 80B08DC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080B0920 @ =gBattleAnimArgs
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ bne _080B0904
+ ldr r0, _080B0924 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B0904
+ ldrh r0, [r4, 0x2]
+ negs r0, r0
+ strh r0, [r4, 0x2]
+ ldrh r0, [r4, 0x6]
+ negs r0, r0
+ strh r0, [r4, 0x6]
+_080B0904:
+ ldr r4, _080B0920 @ =gBattleAnimArgs
+ ldrb r1, [r4, 0xC]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ movs r0, 0
+ strh r0, [r4, 0xC]
+ adds r0, r5, 0
+ bl sub_8075F0C
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0920: .4byte gBattleAnimArgs
+_080B0924: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80B08DC
+
+ thumb_func_start sub_80B0928
+sub_80B0928: @ 80B0928
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B0944
+ ldr r0, _080B0950 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0x2]
+ negs r1, r1
+ strh r1, [r0, 0x2]
+ ldrh r1, [r0, 0x6]
+ negs r1, r1
+ strh r1, [r0, 0x6]
+_080B0944:
+ adds r0, r4, 0
+ bl sub_80B08DC
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0950: .4byte gBattleAnimArgs
+ thumb_func_end sub_80B0928
+
+ thumb_func_start sub_80B0954
+sub_80B0954: @ 80B0954
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080B0974 @ =gBattleAnimArgs
+ ldrb r1, [r4, 0x8]
+ bl StartSpriteAnim
+ movs r1, 0x6
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B0978
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075160
+ b _080B0980
+ .align 2, 0
+_080B0974: .4byte gBattleAnimArgs
+_080B0978:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075114
+_080B0980:
+ ldr r0, _080B0998 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r5, 0x2E]
+ ldr r0, _080B099C @ =sub_8074C44
+ str r0, [r5, 0x1C]
+ ldr r1, _080B09A0 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0998: .4byte gBattleAnimArgs
+_080B099C: .4byte sub_8074C44
+_080B09A0: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B0954
+
+ thumb_func_start sub_80B09A4
+sub_80B09A4: @ 80B09A4
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r5, r0, 0
+ ldr r0, _080B09C0 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ mov r9, r0
+ cmp r1, 0
+ bne _080B09C8
+ ldr r0, _080B09C4 @ =gBattleAnimAttacker
+ b _080B09CA
+ .align 2, 0
+_080B09C0: .4byte gBattleAnimArgs
+_080B09C4: .4byte gBattleAnimAttacker
+_080B09C8:
+ ldr r0, _080B0B10 @ =gBattleAnimTarget
+_080B09CA:
+ ldrb r0, [r0]
+ mov r8, r0
+ mov r4, r9
+ movs r3, 0x4
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ bge _080B09E8
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x5
+ bl __umodsi3
+ strh r0, [r4, 0x4]
+_080B09E8:
+ ldrb r1, [r4, 0x4]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ mov r0, r8
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ mov r0, r8
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ mov r0, r8
+ movs r1, 0x1
+ bl sub_8076B2C
+ 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_8076B2C
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080B0A32
+ adds r0, 0x3
+_080B0A32:
+ 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 _080B0A74
+ lsls r0, r6, 16
+ negs r0, r0
+ lsrs r6, r0, 16
+_080B0A74:
+ bl Random
+ adds r1, r7, 0
+ ands r1, r0
+ cmp r1, 0
+ beq _080B0A86
+ lsls r0, r4, 16
+ negs r0, r0
+ lsrs r4, r0, 16
+_080B0A86:
+ ldr r0, _080B0B14 @ =gUnknown_2023BD6
+ add r0, r8
+ ldrb r1, [r0]
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080B0A9C
+ lsls r0, r4, 16
+ ldr r1, _080B0B18 @ =0xfff00000
+ adds r0, r1
+ lsrs r4, r0, 16
+_080B0A9C:
+ 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, _080B0B1C @ =gUnknown_83E7C08
+ 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 _080B0B00
+ movs r0, 0x3C
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r4, _080B0B20 @ =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, _080B0B24 @ =SpriteCallbackDummy
+ str r1, [r0]
+_080B0B00:
+ ldr r0, _080B0B28 @ =sub_80B0B2C
+ str r0, [r5, 0x1C]
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0B10: .4byte gBattleAnimTarget
+_080B0B14: .4byte gUnknown_2023BD6
+_080B0B18: .4byte 0xfff00000
+_080B0B1C: .4byte gUnknown_83E7C08
+_080B0B20: .4byte gSprites
+_080B0B24: .4byte SpriteCallbackDummy
+_080B0B28: .4byte sub_80B0B2C
+ thumb_func_end sub_80B09A4
+
+ thumb_func_start sub_80B0B2C
+sub_80B0B2C: @ 80B0B2C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r1, [r5, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ bne _080B0B74
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x40
+ beq _080B0B68
+ ldr r4, _080B0B70 @ =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
+_080B0B68:
+ adds r0, r5, 0
+ bl DestroyAnimSprite
+ b _080B0B78
+ .align 2, 0
+_080B0B70: .4byte gSprites
+_080B0B74:
+ subs r0, r1, 0x1
+ strh r0, [r5, 0x2E]
+_080B0B78:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B0B2C
+
+ thumb_func_start sub_80B0B80
+sub_80B0B80: @ 80B0B80
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075114
+ movs r0, 0x1E
+ strh r0, [r4, 0x2E]
+ ldr r0, _080B0BA0 @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B0BA4
+ ldrh r0, [r4, 0x20]
+ subs r0, 0x14
+ strh r0, [r4, 0x32]
+ b _080B0BB6
+ .align 2, 0
+_080B0BA0: .4byte gBattleAnimArgs
+_080B0BA4:
+ 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]
+_080B0BB6:
+ ldrh r0, [r4, 0x22]
+ subs r0, 0x14
+ strh r0, [r4, 0x36]
+ ldr r0, _080B0BD0 @ =sub_8075590
+ str r0, [r4, 0x1C]
+ ldr r1, _080B0BD4 @ =sub_80B0BD8
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0BD0: .4byte sub_8075590
+_080B0BD4: .4byte sub_80B0BD8
+ thumb_func_end sub_80B0B80
+
+ thumb_func_start sub_80B0BD8
+sub_80B0BD8: @ 80B0BD8
+ 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 _080B0C18
+ 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, _080B0C20 @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080B0C24 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+_080B0C18:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0C20: .4byte sub_8075590
+_080B0C24: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B0BD8
+
+ thumb_func_start sub_80B0C28
+sub_80B0C28: @ 80B0C28
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ ldr r0, _080B0CA4 @ =gBattleAnimAttacker
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ldr r2, _080B0CA8 @ =gBattleAnimTarget
+ eors r0, r1
+ ldrb r1, [r2]
+ cmp r0, r1
+ bne _080B0C54
+ ldrb r0, [r2]
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _080B0C54
+ ldr r1, _080B0CAC @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ negs r0, r0
+ strh r0, [r1]
+_080B0C54:
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl sub_8075114
+ ldr r0, _080B0CA4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B0C72
+ ldr r1, _080B0CAC @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080B0C72:
+ ldr r4, _080B0CAC @ =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, _080B0CB0 @ =sub_80B0CB4
+ str r0, [r6, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0CA4: .4byte gBattleAnimAttacker
+_080B0CA8: .4byte gBattleAnimTarget
+_080B0CAC: .4byte gBattleAnimArgs
+_080B0CB0: .4byte sub_80B0CB4
+ thumb_func_end sub_80B0C28
+
+ thumb_func_start sub_80B0CB4
+sub_80B0CB4: @ 80B0CB4
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B0CE0
+ 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 _080B0CE6
+_080B0CE0:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B0CE6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B0CB4
+
+ thumb_func_start sub_80B0CEC
+sub_80B0CEC: @ 80B0CEC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075114
+ ldr r5, _080B0D18 @ =gBattleAnimArgs
+ ldrb r1, [r5, 0x4]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x2E]
+ ldr r0, _080B0D1C @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ ldr r1, _080B0D20 @ =sub_80B0D24
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0D18: .4byte gBattleAnimArgs
+_080B0D1C: .4byte sub_8074C44
+_080B0D20: .4byte sub_80B0D24
+ thumb_func_end sub_80B0CEC
+
+ thumb_func_start sub_80B0D24
+sub_80B0D24: @ 80B0D24
+ 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, _080B0D50 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ ldr r1, _080B0D54 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0D50: .4byte sub_8074C44
+_080B0D54: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B0D24
+
+ thumb_func_start sub_80B0D58
+sub_80B0D58: @ 80B0D58
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075114
+ ldr r0, _080B0D74 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x2E]
+ ldr r0, _080B0D78 @ =sub_80B0D7C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0D74: .4byte gBattleAnimArgs
+_080B0D78: .4byte sub_80B0D7C
+ thumb_func_end sub_80B0D58
+
+ thumb_func_start sub_80B0D7C
+sub_80B0D7C: @ 80B0D7C
+ 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 _080B0DC0
+ movs r0, 0x6
+ strh r0, [r5, 0x2E]
+ ldr r4, _080B0DC8 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ ldr r0, _080B0DCC @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080B0DD0 @ =sub_80B0DD4
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+_080B0DC0:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0DC8: .4byte gBattleAnimTarget
+_080B0DCC: .4byte sub_8075590
+_080B0DD0: .4byte sub_80B0DD4
+ thumb_func_end sub_80B0D7C
+
+ thumb_func_start sub_80B0DD4
+sub_80B0DD4: @ 80B0DD4
+ push {lr}
+ movs r1, 0xF
+ strh r1, [r0, 0x2E]
+ ldr r1, _080B0DE8 @ =sub_8074C44
+ str r1, [r0, 0x1C]
+ ldr r1, _080B0DEC @ =DestroyAnimSprite
+ bl StoreSpriteCallbackInData6
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0DE8: .4byte sub_8074C44
+_080B0DEC: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B0DD4
+
+ thumb_func_start sub_80B0DF0
+sub_80B0DF0: @ 80B0DF0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B0E1C
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075114
+ ldr r1, _080B0E18 @ =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 _080B0E78
+ .align 2, 0
+_080B0E18: .4byte gBattleAnimArgs
+_080B0E1C:
+ 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 _080B0E6A
+ 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]
+_080B0E6A:
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x78
+ ble _080B0E78
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B0E78:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B0DF0
+
+ thumb_func_start sub_80B0E80
+sub_80B0E80: @ 80B0E80
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080B0E94 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B0E9C
+ ldr r4, _080B0E98 @ =gBattleAnimAttacker
+ b _080B0E9E
+ .align 2, 0
+_080B0E94: .4byte gBattleAnimArgs
+_080B0E98: .4byte gBattleAnimAttacker
+_080B0E9C:
+ ldr r4, _080B0EE4 @ =gBattleAnimTarget
+_080B0E9E:
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r1, _080B0EE8 @ =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, _080B0EEC @ =sub_80B0EF0
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0EE4: .4byte gBattleAnimTarget
+_080B0EE8: .4byte gBattleAnimArgs
+_080B0EEC: .4byte sub_80B0EF0
+ thumb_func_end sub_80B0E80
+
+ thumb_func_start sub_80B0EF0
+sub_80B0EF0: @ 80B0EF0
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2E
+ ldrsh r2, [r1, r0]
+ cmp r2, 0
+ beq _080B0F02
+ cmp r2, 0x1
+ beq _080B0F26
+ b _080B0F60
+_080B0F02:
+ ldrh r0, [r1, 0x30]
+ subs r0, 0x1
+ strh r0, [r1, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080B0F60
+ movs r2, 0x32
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080B0F1E
+ adds r0, r1, 0
+ bl DestroyAnimSprite
+ b _080B0F60
+_080B0F1E:
+ ldrh r0, [r1, 0x2E]
+ adds r0, 0x1
+ strh r0, [r1, 0x2E]
+ b _080B0F60
+_080B0F26:
+ ldrh r0, [r1, 0x30]
+ adds r0, 0x1
+ strh r0, [r1, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B0F4E
+ 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 _080B0F4A
+ movs r0, 0x2
+ b _080B0F4C
+_080B0F4A:
+ ldr r0, _080B0F64 @ =0x0000fffe
+_080B0F4C:
+ strh r0, [r1, 0x24]
+_080B0F4E:
+ ldrh r0, [r1, 0x32]
+ subs r0, 0x1
+ strh r0, [r1, 0x32]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080B0F60
+ adds r0, r1, 0
+ bl DestroyAnimSprite
+_080B0F60:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0F64: .4byte 0x0000fffe
+ thumb_func_end sub_80B0EF0
+
+ thumb_func_start sub_80B0F68
+sub_80B0F68: @ 80B0F68
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080B0F8C @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080B0F94
+ ldr r4, _080B0F90 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r2, [r6, 0x4]
+ adds r0, r2
+ b _080B0FA6
+ .align 2, 0
+_080B0F8C: .4byte gBattleAnimArgs
+_080B0F90: .4byte gBattleAnimAttacker
+_080B0F94:
+ ldr r4, _080B0FF0 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x4]
+ adds r0, r1
+_080B0FA6:
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ 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, _080B0FF4 @ =gBattleAnimArgs
+ movs r4, 0x2
+ ldrsh r0, [r3, r4]
+ lsls r0, 4
+ adds r1, r0
+ ldr r4, _080B0FF8 @ =0x000003ff
+ adds r0, r4, 0
+ ands r1, r0
+ ldr r0, _080B0FFC @ =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 _080B1014
+ cmp r0, 0x1
+ bgt _080B1000
+ cmp r0, 0
+ beq _080B100A
+ b _080B103A
+ .align 2, 0
+_080B0FF0: .4byte gBattleAnimTarget
+_080B0FF4: .4byte gBattleAnimArgs
+_080B0FF8: .4byte 0x000003ff
+_080B0FFC: .4byte 0xfffffc00
+_080B1000:
+ cmp r0, 0x2
+ beq _080B1024
+ cmp r0, 0x3
+ beq _080B1034
+ b _080B103A
+_080B100A:
+ ldr r0, _080B1010 @ =0x0000fffd
+ b _080B1034
+ .align 2, 0
+_080B1010: .4byte 0x0000fffd
+_080B1014:
+ movs r0, 0x3
+ strh r0, [r5, 0x3A]
+ ldr r0, _080B1020 @ =0x0000fffd
+ strh r0, [r5, 0x3C]
+ b _080B1042
+ .align 2, 0
+_080B1020: .4byte 0x0000fffd
+_080B1024:
+ ldr r0, _080B1030 @ =0x0000fffd
+ strh r0, [r5, 0x3A]
+ movs r0, 0x3
+ strh r0, [r5, 0x3C]
+ b _080B1042
+ .align 2, 0
+_080B1030: .4byte 0x0000fffd
+_080B1034:
+ strh r0, [r5, 0x3A]
+ strh r0, [r5, 0x3C]
+ b _080B1042
+_080B103A:
+ adds r0, r5, 0
+ bl DestroyAnimSprite
+ b _080B1046
+_080B1042:
+ ldr r0, _080B104C @ =sub_80B1050
+ str r0, [r5, 0x1C]
+_080B1046:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B104C: .4byte sub_80B1050
+ thumb_func_end sub_80B0F68
+
+ thumb_func_start sub_80B1050
+sub_80B1050: @ 80B1050
+ 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 _080B1078
+ adds r0, r1, 0
+ bl DestroyAnimSprite
+_080B1078:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B1050
+
+ thumb_func_start sub_80B107C
+sub_80B107C: @ 80B107C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080B10C8 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B10D8
+ ldr r4, _080B10CC @ =sBattler_AI
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r0, _080B10D0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_8076884
+ 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, _080B10D4 @ =gBattleAnimTarget
+ b _080B10F4
+ .align 2, 0
+_080B10C8: .4byte gBattleAnimArgs
+_080B10CC: .4byte sBattler_AI
+_080B10D0: .4byte gBattleAnimAttacker
+_080B10D4: .4byte gBattleAnimTarget
+_080B10D8:
+ ldr r0, _080B1110 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ 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, _080B1114 @ =gBattleAnimAttacker
+_080B10F4:
+ 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, _080B1118 @ =sub_80B111C
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1110: .4byte gBattleAnimTarget
+_080B1114: .4byte gBattleAnimAttacker
+_080B1118: .4byte sub_80B111C
+ thumb_func_end sub_80B107C
+
+ thumb_func_start sub_80B111C
+sub_80B111C: @ 80B111C
+ 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 _080B1178
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ 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 sub_8074480
+ 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 sub_8074480
+ 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, _080B1180 @ =move_anim_8074EE0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080B1184 @ =sub_807563C
+ str r0, [r4, 0x1C]
+_080B1178:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1180: .4byte move_anim_8074EE0
+_080B1184: .4byte sub_807563C
+ thumb_func_end sub_80B111C
+
+ thumb_func_start sub_80B1188
+sub_80B1188: @ 80B1188
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080B11D4 @ =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_80765C0
+ 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, _080B11D8 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080B11DC @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0x4]
+ ldr r0, _080B11E0 @ =sub_80B11E4
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B11D4: .4byte gBattleAnimArgs
+_080B11D8: .4byte 0x000003ff
+_080B11DC: .4byte 0xfffffc00
+_080B11E0: .4byte sub_80B11E4
+ thumb_func_end sub_80B1188
+
+ thumb_func_start sub_80B11E4
+sub_80B11E4: @ 80B11E4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r7, r1]
+ cmp r0, 0
+ beq _080B1236
+ movs r2, 0x36
+ ldrsh r0, [r7, r2]
+ movs r2, 0x38
+ ldrsh r1, [r7, r2]
+ bl sub_80765C8
+ 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_80765C0
+ asrs r4, 8
+ strh r4, [r7, 0x22]
+ lsls r4, 16
+ asrs r4, 16
+ movs r0, 0x8
+ negs r0, r0
+ cmp r4, r0
+ bge _080B122E
+ adds r0, r7, 0
+ bl DestroyAnimSprite
+ b _080B128C
+_080B122E:
+ ldrh r0, [r7, 0x2E]
+ subs r0, 0x1
+ strh r0, [r7, 0x2E]
+ b _080B128C
+_080B1236:
+ ldr r4, _080B1298 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r6, r0, 0
+ lsls r6, 24
+ lsrs r6, 24
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r2, _080B129C @ =gBattleAnimTarget
+ mov r8, r2
+ ldrb r0, [r2]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0x3
+ bl sub_8074480
+ 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, _080B12A0 @ =sub_80B12A4
+ str r0, [r7, 0x1C]
+_080B128C:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1298: .4byte gBattleAnimAttacker
+_080B129C: .4byte gBattleAnimTarget
+_080B12A0: .4byte sub_80B12A4
+ thumb_func_end sub_80B11E4
+
+ thumb_func_start sub_80B12A4
+sub_80B12A4: @ 80B12A4
+ 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 _080B12DE
+ adds r1, r3, 0
+ movs r0, 0x8
+ negs r0, r0
+ cmp r1, r0
+ blt _080B12DE
+ cmp r1, 0x78
+ ble _080B12E4
+_080B12DE:
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080B12E4:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B12A4
+
+ thumb_func_start sub_80B12E8
+sub_80B12E8: @ 80B12E8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080B131C @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B132C
+ ldr r4, _080B1320 @ =sBattler_AI
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r0, _080B1324 @ =gBattleAnimTarget
+ ldrb r4, [r0]
+ ldr r0, _080B1328 @ =gBattleAnimAttacker
+ b _080B1332
+ .align 2, 0
+_080B131C: .4byte gBattleAnimArgs
+_080B1320: .4byte sBattler_AI
+_080B1324: .4byte gBattleAnimTarget
+_080B1328: .4byte gBattleAnimAttacker
+_080B132C:
+ ldr r0, _080B1364 @ =gBattleAnimAttacker
+ ldrb r4, [r0]
+ ldr r0, _080B1368 @ =gBattleAnimTarget
+_080B1332:
+ ldrb r0, [r0]
+ bl sub_8076884
+ 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 sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B136C
+ ldrb r2, [r5, 0x3]
+ lsls r1, r2, 26
+ lsrs r1, 27
+ movs r0, 0x8
+ orrs r1, r0
+ lsls r1, 1
+ subs r0, 0x47
+ b _080B1386
+ .align 2, 0
+_080B1364: .4byte gBattleAnimAttacker
+_080B1368: .4byte gBattleAnimTarget
+_080B136C:
+ adds r0, r4, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B138C
+ ldrb r2, [r5, 0x3]
+ lsls r1, r2, 26
+ lsrs r1, 27
+ movs r0, 0x18
+ orrs r1, r0
+ lsls r1, 1
+ subs r0, 0x57
+_080B1386:
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x3]
+_080B138C:
+ movs r0, 0x10
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl sub_8074480
+ 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 sub_8074480
+ 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, _080B13CC @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080B13D0 @ =sub_807563C
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B13CC: .4byte DestroyAnimSprite
+_080B13D0: .4byte sub_807563C
+ thumb_func_end sub_80B12E8
+
+ thumb_func_start sub_80B13D4
+sub_80B13D4: @ 80B13D4
+ 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 _080B13EA
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B13EA:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B13D4
+
+ thumb_func_start sub_80B13F8
+sub_80B13F8: @ 80B13F8
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r4, _080B1474 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r1, _080B1478 @ =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, _080B147C @ =gAnimMoveTurn
+ ldrb r6, [r0]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B1442
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_080B1442:
+ movs r0, 0x1
+ ands r6, r0
+ cmp r6, 0
+ beq _080B1456
+ ldrh r0, [r5, 0x32]
+ negs r0, r0
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x1
+ strh r0, [r5, 0x30]
+_080B1456:
+ 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, _080B1480 @ =sub_80B13D4
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1474: .4byte gBattleAnimTarget
+_080B1478: .4byte gBattleAnimArgs
+_080B147C: .4byte gAnimMoveTurn
+_080B1480: .4byte sub_80B13D4
+ thumb_func_end sub_80B13F8
+
+ thumb_func_start sub_80B1484
+sub_80B1484: @ 80B1484
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080B149C @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B14A0
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075160
+ b _080B14A8
+ .align 2, 0
+_080B149C: .4byte gBattleAnimArgs
+_080B14A0:
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075114
+_080B14A8:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B14BC
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl StartSpriteAnim
+ b _080B14D2
+_080B14BC:
+ ldr r0, _080B14E4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B14D2
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+_080B14D2:
+ ldr r0, _080B14E8 @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+ ldr r1, _080B14EC @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B14E4: .4byte gBattleAnimAttacker
+_080B14E8: .4byte sub_8074F6C
+_080B14EC: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B1484
+
+ thumb_func_start sub_80B14F0
+sub_80B14F0: @ 80B14F0
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080B152A
+ 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 _080B152A
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B152A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B14F0
+
+ thumb_func_start sub_80B1530
+sub_80B1530: @ 80B1530
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _080B1560 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080B1568
+ cmp r0, 0x1
+ bgt _080B1582
+ cmp r0, 0
+ bne _080B1582
+ movs r0, 0
+ bl sub_8075458
+ ldr r0, _080B1564 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r4, 0x18]
+ b _080B157A
+ .align 2, 0
+_080B1560: .4byte gTasks
+_080B1564: .4byte gBattleAnimArgs
+_080B1568:
+ 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 _080B158E
+_080B157A:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B158E
+_080B1582:
+ movs r2, 0xA0
+ lsls r2, 3
+ adds r0, r2, 0
+ ldrh r1, [r4, 0x1A]
+ adds r0, r1
+ strh r0, [r4, 0x1A]
+_080B158E:
+ movs r2, 0xB0
+ lsls r2, 4
+ adds r0, r2, 0
+ ldrh r1, [r4, 0x1C]
+ adds r0, r1
+ strh r0, [r4, 0x1C]
+ ldr r0, _080B15BC @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B15C4
+ ldr r1, _080B15C0 @ =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 _080B15D4
+ .align 2, 0
+_080B15BC: .4byte gBattleAnimTarget
+_080B15C0: .4byte gBattle_BG3_X
+_080B15C4:
+ ldr r2, _080B1614 @ =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
+_080B15D4:
+ ldr r3, _080B1618 @ =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, _080B161C @ =gBattleAnimArgs
+ movs r2, 0xE
+ ldrsh r1, [r0, r2]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080B160C
+ strh r5, [r7]
+ strh r5, [r3]
+ movs r0, 0x1
+ bl sub_8075458
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080B160C:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1614: .4byte gBattle_BG3_X
+_080B1618: .4byte gBattle_BG3_Y
+_080B161C: .4byte gBattleAnimArgs
+ thumb_func_end sub_80B1530
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fire.s b/asm/fire.s
new file mode 100644
index 000000000..f4b89300a
--- /dev/null
+++ b/asm/fire.s
@@ -0,0 +1,2500 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80AC90C
+sub_80AC90C: @ 80AC90C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080AC940 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r4, 0x2E]
+ movs r0, 0x3C
+ strh r0, [r4, 0x30]
+ movs r0, 0x9
+ strh r0, [r4, 0x32]
+ movs r0, 0x1E
+ strh r0, [r4, 0x34]
+ movs r0, 0xFE
+ lsls r0, 8
+ strh r0, [r4, 0x36]
+ ldr r1, _080AC944 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r1, _080AC948 @ =sub_8074AE0
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC940: .4byte gBattleAnimArgs
+_080AC944: .4byte DestroyAnimSprite
+_080AC948: .4byte sub_8074AE0
+ thumb_func_end sub_80AC90C
+
+ thumb_func_start sub_80AC94C
+sub_80AC94C: @ 80AC94C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080AC984 @ =gBattleAnimArgs
+ movs r0, 0
+ ldrsh r1, [r5, r0]
+ adds r0, r4, 0
+ bl sub_8074FF8
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x32]
+ ldr r0, _080AC988 @ =sub_8074D00
+ str r0, [r4, 0x1C]
+ ldr r1, _080AC98C @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC984: .4byte gBattleAnimArgs
+_080AC988: .4byte sub_8074D00
+_080AC98C: .4byte DestroyAnimSprite
+ thumb_func_end sub_80AC94C
+
+ thumb_func_start sub_80AC990
+sub_80AC990: @ 80AC990
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldr r0, _080AC9C4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AC9CC
+ ldr r2, _080AC9C8 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r2, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r2, 0x8]
+ negs r0, r0
+ strh r0, [r4, 0x32]
+ adds r1, r2, 0
+ b _080AC9E2
+ .align 2, 0
+_080AC9C4: .4byte gBattleAnimAttacker
+_080AC9C8: .4byte gBattleAnimArgs
+_080AC9CC:
+ ldr r1, _080AC9F8 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x32]
+_080AC9E2:
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x36]
+ ldrh r0, [r1, 0xA]
+ strh r0, [r4, 0x34]
+ ldr r0, _080AC9FC @ =sub_80ACA6C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC9F8: .4byte gBattleAnimArgs
+_080AC9FC: .4byte sub_80ACA6C
+ thumb_func_end sub_80AC990
+
+ thumb_func_start sub_80ACA00
+sub_80ACA00: @ 80ACA00
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080ACA2C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080ACA34
+ ldr r2, _080ACA30 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r2, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r2, 0x8]
+ strh r0, [r4, 0x32]
+ adds r1, r2, 0
+ b _080ACA4C
+ .align 2, 0
+_080ACA2C: .4byte gBattleAnimAttacker
+_080ACA30: .4byte gBattleAnimArgs
+_080ACA34:
+ ldr r1, _080ACA64 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x8]
+ negs r0, r0
+ strh r0, [r4, 0x32]
+_080ACA4C:
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x36]
+ ldrh r0, [r1, 0xA]
+ strh r0, [r4, 0x34]
+ ldr r0, _080ACA68 @ =sub_80ACA6C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACA64: .4byte gBattleAnimArgs
+_080ACA68: .4byte sub_80ACA6C
+ thumb_func_end sub_80ACA00
+
+ thumb_func_start sub_80ACA6C
+sub_80ACA6C: @ 80ACA6C
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x36
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ bge _080ACA92
+ ldrh r0, [r2, 0x32]
+ ldrh r1, [r2, 0x24]
+ adds r0, r1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x34]
+ ldrh r3, [r2, 0x26]
+ adds r0, r3
+ strh r0, [r2, 0x26]
+_080ACA92:
+ movs r0, 0x2E
+ ldrsh r1, [r2, r0]
+ movs r3, 0x30
+ ldrsh r0, [r2, r3]
+ cmp r1, r0
+ bne _080ACAA4
+ adds r0, r2, 0
+ bl move_anim_8074EE0
+_080ACAA4:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACA6C
+
+ thumb_func_start sub_80ACAA8
+sub_80ACAA8: @ 80ACAA8
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldr r0, _080ACACC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080ACAD4
+ ldr r0, _080ACAD0 @ =gBattleAnimArgs
+ ldrh r1, [r4, 0x20]
+ ldrh r2, [r0]
+ subs r1, r2
+ strh r1, [r4, 0x20]
+ b _080ACAE6
+ .align 2, 0
+_080ACACC: .4byte gBattleAnimAttacker
+_080ACAD0: .4byte gBattleAnimArgs
+_080ACAD4:
+ ldr r0, _080ACB14 @ =gBattleAnimArgs
+ ldrh r1, [r0]
+ ldrh r2, [r4, 0x20]
+ adds r1, r2
+ strh r1, [r4, 0x20]
+ adds r2, r4, 0
+ adds r2, 0x43
+ movs r1, 0x8
+ strb r1, [r2]
+_080ACAE6:
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r4, 0x22]
+ ldrh r0, [r2, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r2, 0x6]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r2, 0x8]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r2, 0xA]
+ strh r0, [r4, 0x34]
+ ldrh r0, [r2, 0xC]
+ strh r0, [r4, 0x36]
+ strh r1, [r4, 0x38]
+ ldr r0, _080ACB18 @ =sub_80ACB1C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACB14: .4byte gBattleAnimArgs
+_080ACB18: .4byte sub_80ACB1C
+ thumb_func_end sub_80ACAA8
+
+ thumb_func_start sub_80ACB1C
+sub_80ACB1C: @ 80ACB1C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080ACBA4
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ ldr r0, _080ACB88 @ =0x00002710
+ cmp r1, r0
+ ble _080ACB3A
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x1
+ strb r0, [r1]
+_080ACB3A:
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x38]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r2, [r4, 0x30]
+ adds r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x38]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r2, [r4, 0x30]
+ adds r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x2E]
+ adds r1, r0, r2
+ strh r1, [r4, 0x2E]
+ ldrh r0, [r4, 0x36]
+ ldrh r2, [r4, 0x38]
+ adds r0, r2
+ strh r0, [r4, 0x38]
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ ble _080ACB90
+ ldr r2, _080ACB8C @ =0xffffff00
+ b _080ACB98
+ .align 2, 0
+_080ACB88: .4byte 0x00002710
+_080ACB8C: .4byte 0xffffff00
+_080ACB90:
+ cmp r0, 0
+ bge _080ACB9C
+ movs r2, 0x80
+ lsls r2, 1
+_080ACB98:
+ adds r0, r1, r2
+ strh r0, [r4, 0x2E]
+_080ACB9C:
+ ldrh r0, [r4, 0x34]
+ subs r0, 0x1
+ strh r0, [r4, 0x34]
+ b _080ACBAA
+_080ACBA4:
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080ACBAA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACB1C
+
+ thumb_func_start sub_80ACBB0
+sub_80ACBB0: @ 80ACBB0
+ push {lr}
+ movs r1, 0
+ strh r1, [r0, 0x20]
+ strh r1, [r0, 0x22]
+ movs r1, 0x3C
+ strh r1, [r0, 0x2E]
+ movs r1, 0x8C
+ strh r1, [r0, 0x32]
+ movs r1, 0x50
+ strh r1, [r0, 0x36]
+ ldr r1, _080ACBD4 @ =sub_8075590
+ str r1, [r0, 0x1C]
+ ldr r1, _080ACBD8 @ =DestroyAnimSprite
+ bl StoreSpriteCallbackInData6
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACBD4: .4byte sub_8075590
+_080ACBD8: .4byte DestroyAnimSprite
+ thumb_func_end sub_80ACBB0
+
+ thumb_func_start sub_80ACBDC
+sub_80ACBDC: @ 80ACBDC
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ ldr r5, _080ACC34 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ bl GetBattlerSide
+ adds r4, r0, 0
+ ldr r0, _080ACC38 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ bne _080ACC22
+ movs r0, 0x2
+ bl GetBattlerAtPosition
+ ldrb r1, [r5]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r1, r0
+ beq _080ACC1A
+ movs r0, 0x3
+ bl GetBattlerAtPosition
+ ldrb r1, [r5]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r1, r0
+ bne _080ACC22
+_080ACC1A:
+ ldr r1, _080ACC3C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080ACC22:
+ ldr r1, _080ACC40 @ =sub_8075F0C
+ str r1, [r6, 0x1C]
+ adds r0, r6, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACC34: .4byte gBattleAnimAttacker
+_080ACC38: .4byte gBattleAnimTarget
+_080ACC3C: .4byte gBattleAnimArgs
+_080ACC40: .4byte sub_8075F0C
+ thumb_func_end sub_80ACBDC
+
+ thumb_func_start sub_80ACC44
+sub_80ACC44: @ 80ACC44
+ ldr r2, _080ACC58 @ =gBattleAnimArgs
+ ldrh r1, [r2]
+ negs r1, r1
+ strh r1, [r2]
+ ldrh r1, [r2, 0x4]
+ negs r1, r1
+ strh r1, [r2, 0x4]
+ ldr r1, _080ACC5C @ =sub_8075F0C
+ str r1, [r0, 0x1C]
+ bx lr
+ .align 2, 0
+_080ACC58: .4byte gBattleAnimArgs
+_080ACC5C: .4byte sub_8075F0C
+ thumb_func_end sub_80ACC44
+
+ thumb_func_start sub_80ACC60
+sub_80ACC60: @ 80ACC60
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080ACC80 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ movs r1, 0
+ strh r0, [r4, 0x3C]
+ strh r1, [r4, 0x2E]
+ ldr r0, _080ACC84 @ =sub_80ACC88
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACC80: .4byte gBattleAnimArgs
+_080ACC84: .4byte sub_80ACC88
+ thumb_func_end sub_80ACC60
+
+ thumb_func_start sub_80ACC88
+sub_80ACC88: @ 80ACC88
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl sub_80ACD7C
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x12
+ bne _080ACCD2
+ movs r0, 0x19
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ ldr r4, _080ACCD8 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ 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 r0, _080ACCDC @ =sub_80ACCE0
+ str r0, [r5, 0x1C]
+_080ACCD2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACCD8: .4byte gBattleAnimTarget
+_080ACCDC: .4byte sub_80ACCE0
+ thumb_func_end sub_80ACC88
+
+ thumb_func_start sub_80ACCE0
+sub_80ACCE0: @ 80ACCE0
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080ACD28
+ movs r4, 0
+ strh r4, [r6, 0x2E]
+ ldr r5, _080ACD20 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x22]
+ strh r4, [r6, 0x26]
+ strh r4, [r6, 0x24]
+ ldr r1, _080ACD24 @ =sub_80ACD58
+ str r1, [r6, 0x1C]
+ adds r0, r6, 0
+ bl _call_via_r1
+ b _080ACD52
+ .align 2, 0
+_080ACD20: .4byte gBattleAnimTarget
+_080ACD24: .4byte sub_80ACD58
+_080ACD28:
+ movs r1, 0x3C
+ ldrsh r0, [r6, r1]
+ movs r1, 0x1C
+ bl Sin
+ ldrh r1, [r6, 0x24]
+ adds r0, r1
+ strh r0, [r6, 0x24]
+ movs r1, 0x3C
+ ldrsh r0, [r6, r1]
+ movs r1, 0x1C
+ bl Cos
+ ldrh r1, [r6, 0x26]
+ adds r0, r1
+ strh r0, [r6, 0x26]
+ ldrh r0, [r6, 0x3C]
+ adds r0, 0x14
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r6, 0x3C]
+_080ACD52:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACCE0
+
+ thumb_func_start sub_80ACD58
+sub_80ACD58: @ 80ACD58
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80ACD7C
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080ACD74
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080ACD74:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACD58
+
+ thumb_func_start sub_80ACD7C
+sub_80ACD7C: @ 80ACD7C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r1, 0x1C
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r1, 0x1C
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x14
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACD7C
+
+ thumb_func_start sub_80ACDA8
+sub_80ACDA8: @ 80ACDA8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _080ACDDC @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x32]
+ ldr r1, _080ACDE0 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080ACDE4 @ =sub_8074CD0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACDDC: .4byte gBattleAnimArgs
+_080ACDE0: .4byte DestroyAnimSprite
+_080ACDE4: .4byte sub_8074CD0
+ thumb_func_end sub_80ACDA8
+
+ thumb_func_start sub_80ACDE8
+sub_80ACDE8: @ 80ACDE8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r1, _080ACE1C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x2E]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080ACE20 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ ldr r1, _080ACE24 @ =sub_80ACE28
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACE1C: .4byte gBattleAnimArgs
+_080ACE20: .4byte sub_8074C44
+_080ACE24: .4byte sub_80ACE28
+ thumb_func_end sub_80ACDE8
+
+ thumb_func_start sub_80ACE28
+sub_80ACE28: @ 80ACE28
+ push {lr}
+ adds r3, r0, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r3]
+ ldrh r1, [r0, 0x30]
+ movs r2, 0
+ strh r1, [r0, 0x2E]
+ strh r2, [r0, 0x30]
+ ldr r1, _080ACE4C @ =sub_80ACE50
+ str r1, [r0, 0x1C]
+ bl _call_via_r1
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACE4C: .4byte sub_80ACE50
+ thumb_func_end sub_80ACE28
+
+ thumb_func_start sub_80ACE50
+sub_80ACE50: @ 80ACE50
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x32]
+ lsls r1, 16
+ asrs r1, 24
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x32]
+ lsls r1, 16
+ asrs r1, 24
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0xA
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0xD0
+ strh r0, [r4, 0x32]
+ 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 _080ACE9C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080ACE9C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACE50
+
+ thumb_func_start sub_80ACEA4
+sub_80ACEA4: @ 80ACEA4
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080ACF04 @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ strh r0, [r4, 0x26]
+ strh r5, [r4, 0x8]
+ strh r5, [r4, 0xA]
+ strh r5, [r4, 0xC]
+ strh r5, [r4, 0xE]
+ ldr r2, _080ACF08 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x22]
+ strh r0, [r4, 0x10]
+ ldr r0, _080ACF0C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x12]
+ strh r5, [r4, 0x14]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl sub_80758E0
+ ldr r0, _080ACF10 @ =sub_80ACF14
+ str r0, [r4]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACF04: .4byte gTasks
+_080ACF08: .4byte gSprites
+_080ACF0C: .4byte gBattleAnimAttacker
+_080ACF10: .4byte sub_80ACF14
+ thumb_func_end sub_80ACEA4
+
+ thumb_func_start sub_80ACF14
+sub_80ACF14: @ 80ACF14
+ push {r4,r5,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080ACF3C @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x6
+ bls _080ACF30
+ b _080AD1EE
+_080ACF30:
+ lsls r0, 2
+ ldr r1, _080ACF40 @ =_080ACF44
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080ACF3C: .4byte gTasks
+_080ACF40: .4byte _080ACF44
+ .align 2, 0
+_080ACF44:
+ .4byte _080ACF60
+ .4byte _080ACF86
+ .4byte _080AD038
+ .4byte _080AD098
+ .4byte _080AD0B6
+ .4byte _080AD18C
+ .4byte _080AD1E0
+_080ACF60:
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r3, 0x80
+ lsls r3, 1
+ movs r0, 0xE0
+ str r0, [sp]
+ movs r0, 0x80
+ lsls r0, 2
+ str r0, [sp, 0x4]
+ movs r0, 0x20
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ adds r2, r3, 0
+ bl sub_80765D4
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+_080ACF86:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080ACFCE
+ 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 _080ACFBC
+ ldr r2, _080ACFB8 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0x3
+ b _080ACFCC
+ .align 2, 0
+_080ACFB8: .4byte gSprites
+_080ACFBC:
+ ldr r2, _080AD030 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, _080AD034 @ =0x0000fffd
+_080ACFCC:
+ strh r1, [r0, 0x24]
+_080ACFCE:
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080ACFFC
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ ble _080ACFFC
+ movs r0, 0
+ strh r0, [r4, 0xE]
+ ldr r2, _080AD030 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x22]
+ adds r1, 0x1
+ strh r1, [r0, 0x22]
+_080ACFFC:
+ adds r0, r4, 0
+ bl sub_8076640
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ beq _080AD00C
+ b _080AD1EE
+_080AD00C:
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8076440
+ ldr r2, _080AD030 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r5, [r0, 0x24]
+ strh r5, [r4, 0xA]
+ strh r5, [r4, 0xC]
+ strh r5, [r4, 0xE]
+ b _080AD1D4
+ .align 2, 0
+_080AD030: .4byte gSprites
+_080AD034: .4byte 0x0000fffd
+_080AD038:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bgt _080AD048
+ b _080AD1EE
+_080AD048:
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080AD072
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r3, 0x80
+ lsls r3, 2
+ movs r0, 0xC0
+ lsls r0, 1
+ str r0, [sp]
+ movs r0, 0xF0
+ str r0, [sp, 0x4]
+ movs r0, 0x6
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r2, 0xE0
+ bl sub_80765D4
+ b _080AD092
+_080AD072:
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r3, 0x80
+ lsls r3, 2
+ movs r0, 0xC0
+ lsls r0, 1
+ str r0, [sp]
+ movs r0, 0xC0
+ str r0, [sp, 0x4]
+ movs r0, 0x6
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r2, 0xE0
+ bl sub_80765D4
+_080AD092:
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _080AD1D4
+_080AD098:
+ adds r0, r4, 0
+ bl sub_8076640
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AD0A6
+ b _080AD1EE
+_080AD0A6:
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r5, 0
+ movs r2, 0x6
+ bl sub_80AD1F8
+ b _080AD1D4
+_080AD0B6:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AD104
+ 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 _080AD0F0
+ ldr r2, _080AD0EC @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x26]
+ adds r1, 0x3
+ b _080AD102
+ .align 2, 0
+_080AD0EC: .4byte gSprites
+_080AD0F0:
+ ldr r2, _080AD13C @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x26]
+ subs r1, 0x3
+_080AD102:
+ strh r1, [r0, 0x26]
+_080AD104:
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x18
+ ble _080AD1EE
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080AD140
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r2, 0xC0
+ lsls r2, 1
+ movs r0, 0x80
+ lsls r0, 1
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ movs r0, 0x8
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r3, 0xF0
+ bl sub_80765D4
+ b _080AD15E
+ .align 2, 0
+_080AD13C: .4byte gSprites
+_080AD140:
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r2, 0xC0
+ lsls r2, 1
+ movs r0, 0x80
+ lsls r0, 1
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ movs r0, 0x8
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r3, 0xC0
+ bl sub_80765D4
+_080AD15E:
+ ldrh r1, [r4, 0xC]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080AD17C
+ ldr r2, _080AD188 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x26]
+ subs r1, 0x3
+ strh r1, [r0, 0x26]
+_080AD17C:
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ strh r0, [r4, 0xE]
+ b _080AD1D4
+ .align 2, 0
+_080AD188: .4byte gSprites
+_080AD18C:
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080AD1A8
+ ldr r2, _080AD1DC @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x22]
+ subs r1, 0x1
+ strh r1, [r0, 0x22]
+_080AD1A8:
+ adds r0, r4, 0
+ bl sub_8076640
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _080AD1EE
+ ldr r2, _080AD1DC @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x10]
+ strh r1, [r0, 0x22]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8075980
+ strh r5, [r4, 0xC]
+_080AD1D4:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080AD1EE
+ .align 2, 0
+_080AD1DC: .4byte gSprites
+_080AD1E0:
+ movs r1, 0x14
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AD1EE
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080AD1EE:
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACF14
+
+ thumb_func_start sub_80AD1F8
+sub_80AD1F8: @ 80AD1F8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ mov r8, r2
+ adds r0, r4, 0
+ bl sub_80AD374
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ ldr r1, _080AD248 @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrh r4, [r0, 0x20]
+ ldr r0, _080AD24C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AD250
+ adds r0, r4, 0
+ subs r0, 0xC
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0x1
+ b _080AD25A
+ .align 2, 0
+_080AD248: .4byte gSprites
+_080AD24C: .4byte gBattleAnimAttacker
+_080AD250:
+ adds r0, r4, 0
+ adds r0, 0x10
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0xFF
+_080AD25A:
+ movs r6, 0
+ movs r5, 0
+ lsls r4, 16
+ str r4, [sp, 0x8]
+ mov r1, r9
+ lsls r1, 16
+ str r1, [sp, 0x4]
+ ldr r2, _080AD314 @ =gUnknown_83E5E44
+ mov r9, r2
+ lsls r0, 24
+ asrs r0, 24
+ str r0, [sp]
+ mov r3, r8
+ lsls r3, 1
+ mov r10, r3
+_080AD278:
+ ldr r0, _080AD318 @ =gUnknown_83E5E2C
+ ldr r2, [sp, 0x8]
+ asrs r1, r2, 16
+ ldr r3, [sp, 0x4]
+ asrs r2, r3, 16
+ movs r3, 0x2
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x40
+ beq _080AD2FA
+ ldr r1, _080AD31C @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r4, r0, r1
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ lsls r0, r5, 2
+ adds r0, 0x40
+ adds r1, r0
+ ldr r3, _080AD320 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r3, _080AD324 @ =0xfffffc00
+ adds r0, r3, 0
+ ands r2, r0
+ orrs r2, r1
+ strh r2, [r4, 0x4]
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0x4
+ bls _080AD2C2
+ movs r5, 0
+_080AD2C2:
+ lsls r2, r6, 2
+ mov r1, r9
+ adds r0, r2, r1
+ ldrh r0, [r0]
+ ldr r3, [sp]
+ adds r1, r0, 0
+ muls r1, r3
+ lsls r1, 16
+ asrs r1, 16
+ ldr r0, _080AD328 @ =gUnknown_83E5E46
+ adds r2, r0
+ movs r3, 0
+ ldrsh r2, [r2, r3]
+ adds r0, r4, 0
+ bl sub_80AD3C8
+ strh r7, [r4, 0x3A]
+ mov r0, r8
+ strh r0, [r4, 0x3C]
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ add r0, r10
+ ldr r1, _080AD32C @ =gTasks+0x8
+ adds r0, r1
+ ldrh r1, [r0]
+ adds r1, 0x1
+ strh r1, [r0]
+_080AD2FA:
+ adds r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ cmp r6, 0x6
+ bls _080AD278
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AD314: .4byte gUnknown_83E5E44
+_080AD318: .4byte gUnknown_83E5E2C
+_080AD31C: .4byte gSprites
+_080AD320: .4byte 0x000003ff
+_080AD324: .4byte 0xfffffc00
+_080AD328: .4byte gUnknown_83E5E46
+_080AD32C: .4byte gTasks+0x8
+ thumb_func_end sub_80AD1F8
+
+ thumb_func_start sub_80AD330
+sub_80AD330: @ 80AD330
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80AD3E4
+ adds r0, r4, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080AD36A
+ ldr r3, _080AD370 @ =gTasks
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl DestroySprite
+_080AD36A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AD370: .4byte gTasks
+ thumb_func_end sub_80AD330
+
+ thumb_func_start sub_80AD374
+sub_80AD374: @ 80AD374
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080AD3AC @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrh r2, [r1, 0x26]
+ ldrh r0, [r1, 0x22]
+ adds r2, r0
+ adds r1, 0x29
+ movs r0, 0
+ ldrsb r0, [r1, r0]
+ adds r0, r2
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldr r0, _080AD3B0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AD3B4
+ lsls r0, r4, 16
+ movs r1, 0x94
+ lsls r1, 15
+ b _080AD3BA
+ .align 2, 0
+_080AD3AC: .4byte gSprites
+_080AD3B0: .4byte gBattleAnimAttacker
+_080AD3B4:
+ lsls r0, r4, 16
+ movs r1, 0xB0
+ lsls r1, 14
+_080AD3BA:
+ adds r0, r1
+ lsrs r4, r0, 16
+ adds r0, r4, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AD374
+
+ thumb_func_start sub_80AD3C8
+sub_80AD3C8: @ 80AD3C8
+ movs r3, 0
+ strh r3, [r0, 0x2E]
+ strh r3, [r0, 0x30]
+ ldrh r3, [r0, 0x20]
+ lsls r3, 3
+ strh r3, [r0, 0x32]
+ ldrh r3, [r0, 0x22]
+ lsls r3, 3
+ strh r3, [r0, 0x34]
+ lsls r1, 3
+ strh r1, [r0, 0x36]
+ lsls r2, 3
+ strh r2, [r0, 0x38]
+ bx lr
+ thumb_func_end sub_80AD3C8
+
+ thumb_func_start sub_80AD3E4
+sub_80AD3E4: @ 80AD3E4
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _080AD40E
+ movs r0, 0
+ strh r0, [r2, 0x2E]
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ ldrh r0, [r2, 0x30]
+ adds r1, r0, 0
+ muls r1, r0
+ adds r0, r1, 0
+ ldrh r3, [r2, 0x34]
+ adds r0, r3
+ strh r0, [r2, 0x34]
+_080AD40E:
+ ldrh r0, [r2, 0x36]
+ ldrh r1, [r2, 0x32]
+ adds r0, r1
+ strh r0, [r2, 0x32]
+ lsls r0, 16
+ asrs r0, 19
+ strh r0, [r2, 0x20]
+ ldrh r1, [r2, 0x38]
+ ldrh r3, [r2, 0x34]
+ adds r1, r3
+ strh r1, [r2, 0x34]
+ lsls r1, 16
+ asrs r3, r1, 19
+ strh r3, [r2, 0x22]
+ adds r0, 0x8
+ lsls r0, 16
+ movs r1, 0x80
+ lsls r1, 17
+ cmp r0, r1
+ bhi _080AD444
+ adds r1, r3, 0
+ movs r0, 0x8
+ negs r0, r0
+ cmp r1, r0
+ blt _080AD444
+ cmp r1, 0x78
+ ble _080AD450
+_080AD444:
+ adds r0, r2, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+_080AD450:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AD3E4
+
+ thumb_func_start sub_80AD454
+sub_80AD454: @ 80AD454
+ push {r4,r5,lr}
+ ldr r3, _080AD498 @ =gBattleAnimArgs
+ ldrh r1, [r3]
+ movs r2, 0
+ strh r1, [r0, 0x20]
+ ldrh r1, [r3, 0x2]
+ strh r1, [r0, 0x22]
+ strh r2, [r0, 0x2E]
+ strh r2, [r0, 0x30]
+ strh r2, [r0, 0x32]
+ ldrh r1, [r3, 0x4]
+ strh r1, [r0, 0x3A]
+ ldrh r1, [r3, 0x6]
+ strh r1, [r0, 0x3C]
+ ldrh r4, [r0, 0x4]
+ lsls r2, r4, 22
+ lsrs r2, 22
+ movs r5, 0x8
+ ldrsh r1, [r3, r5]
+ lsls r1, 4
+ adds r2, r1
+ ldr r3, _080AD49C @ =0x000003ff
+ adds r1, r3, 0
+ ands r2, r1
+ ldr r1, _080AD4A0 @ =0xfffffc00
+ ands r1, r4
+ orrs r1, r2
+ strh r1, [r0, 0x4]
+ ldr r1, _080AD4A4 @ =sub_80AD4A8
+ str r1, [r0, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AD498: .4byte gBattleAnimArgs
+_080AD49C: .4byte 0x000003ff
+_080AD4A0: .4byte 0xfffffc00
+_080AD4A4: .4byte sub_80AD4A8
+ thumb_func_end sub_80AD454
+
+ thumb_func_start sub_80AD4A8
+sub_80AD4A8: @ 80AD4A8
+ push {r4,lr}
+ adds r2, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x1
+ beq _080AD4DA
+ cmp r0, 0x1
+ bgt _080AD4BE
+ cmp r0, 0
+ beq _080AD4C4
+ b _080AD538
+_080AD4BE:
+ cmp r0, 0x2
+ beq _080AD4F8
+ b _080AD538
+_080AD4C4:
+ ldrh r1, [r2, 0x3A]
+ movs r3, 0x3A
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ beq _080AD4D4
+ subs r0, r1, 0x1
+ strh r0, [r2, 0x3A]
+ b _080AD538
+_080AD4D4:
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+_080AD4DA:
+ ldrh r0, [r2, 0x22]
+ adds r0, 0x8
+ strh r0, [r2, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r3, [r2, 0x3C]
+ movs r4, 0x3C
+ ldrsh r1, [r2, r4]
+ cmp r0, r1
+ blt _080AD538
+ strh r3, [r2, 0x22]
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ b _080AD538
+_080AD4F8:
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AD524
+ movs r0, 0
+ strh r0, [r2, 0x30]
+ ldrh r0, [r2, 0x32]
+ adds r0, 0x1
+ strh r0, [r2, 0x32]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080AD520
+ ldr r0, _080AD51C @ =0x0000fffd
+ b _080AD522
+ .align 2, 0
+_080AD51C: .4byte 0x0000fffd
+_080AD520:
+ movs r0, 0x3
+_080AD522:
+ strh r0, [r2, 0x26]
+_080AD524:
+ ldrh r0, [r2, 0x34]
+ adds r0, 0x1
+ strh r0, [r2, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _080AD538
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080AD538:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AD4A8
+
+ thumb_func_start sub_80AD540
+sub_80AD540: @ 80AD540
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080AD5B4
+ cmp r0, 0x1
+ bgt _080AD556
+ cmp r0, 0
+ beq _080AD55C
+ b _080AD682
+_080AD556:
+ cmp r0, 0x2
+ beq _080AD612
+ b _080AD682
+_080AD55C:
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075160
+ ldr r4, _080AD584 @ =gBattleAnimArgs
+ ldrb r1, [r4, 0x4]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldrh r0, [r4, 0x4]
+ strh r0, [r5, 0x3C]
+ ldr r0, _080AD588 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AD58C
+ movs r0, 0x4
+ b _080AD58E
+ .align 2, 0
+_080AD584: .4byte gBattleAnimArgs
+_080AD588: .4byte gBattleAnimAttacker
+_080AD58C:
+ ldr r0, _080AD5AC @ =0x0000fffc
+_080AD58E:
+ strh r0, [r5, 0x36]
+ ldr r0, _080AD5B0 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ 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]
+ b _080AD60A
+ .align 2, 0
+_080AD5AC: .4byte 0x0000fffc
+_080AD5B0: .4byte gBattleAnimTarget
+_080AD5B4:
+ ldrh r0, [r5, 0x30]
+ adds r0, 0xC0
+ strh r0, [r5, 0x30]
+ ldr r0, _080AD5D4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AD5D8
+ ldrh r0, [r5, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ negs r0, r0
+ b _080AD5DE
+ .align 2, 0
+_080AD5D4: .4byte gBattleAnimAttacker
+_080AD5D8:
+ ldrh r0, [r5, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+_080AD5DE:
+ strh r0, [r5, 0x26]
+ movs r2, 0x32
+ ldrsh r0, [r5, r2]
+ movs r2, 0x36
+ ldrsh r1, [r5, r2]
+ bl Sin
+ strh r0, [r5, 0x24]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x4
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080AD682
+ movs r0, 0
+ strh r0, [r5, 0x34]
+_080AD60A:
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _080AD682
+_080AD612:
+ movs r1, 0x32
+ ldrsh r0, [r5, r1]
+ movs r2, 0x36
+ ldrsh r1, [r5, r2]
+ bl Sin
+ adds r2, r0, 0
+ movs r3, 0
+ strh r2, [r5, 0x24]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x4
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080AD682
+ ldrh r0, [r5, 0x20]
+ adds r1, r2, r0
+ strh r1, [r5, 0x20]
+ ldrh r0, [r5, 0x26]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ strh r3, [r5, 0x26]
+ strh r3, [r5, 0x24]
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r5, 0x2E]
+ strh r1, [r5, 0x30]
+ ldr r4, _080AD688 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl sub_8075678
+ ldr r0, _080AD68C @ =sub_80AD690
+ str r0, [r5, 0x1C]
+_080AD682:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AD688: .4byte gBattleAnimTarget
+_080AD68C: .4byte sub_80AD690
+ thumb_func_end sub_80AD540
+
+ thumb_func_start sub_80AD690
+sub_80AD690: @ 80AD690
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AD6E8
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0x10
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ ldrh r2, [r4, 0x38]
+ adds r0, r2, 0x4
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x38]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0
+ beq _080AD6C6
+ cmp r2, 0xC4
+ ble _080AD6EE
+_080AD6C6:
+ lsls r0, 16
+ cmp r0, 0
+ ble _080AD6EE
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AD6EE
+ ldr r0, _080AD6E4 @ =gUnknown_2037F24
+ movs r1, 0
+ ldrsb r1, [r0, r1]
+ movs r0, 0x89
+ bl PlaySE12WithPanning
+ b _080AD6EE
+ .align 2, 0
+_080AD6E4: .4byte gUnknown_2037F24
+_080AD6E8:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AD6EE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AD690
+
+ thumb_func_start sub_80AD6F4
+sub_80AD6F4: @ 80AD6F4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080AD70C
+ ldr r0, _080AD778 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r4, 0x30]
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x2E]
+_080AD70C:
+ movs r0, 0xC0
+ lsls r0, 1
+ adds r1, r0, 0
+ ldrh r2, [r4, 0x34]
+ adds r1, r2
+ strh r1, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r0, 0xA0
+ strh r0, [r4, 0x36]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ lsls r1, 16
+ asrs r1, 24
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x36]
+ lsls r1, 16
+ asrs r1, 24
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x7
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AD7A8
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x83
+ bls _080AD780
+ ldr r0, _080AD77C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ movs r1, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ b _080AD7C4
+ .align 2, 0
+_080AD778: .4byte gBattleAnimArgs
+_080AD77C: .4byte gBattleAnimTarget
+_080AD780:
+ ldr r0, _080AD7A4 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+ movs r1, 0x3
+ ands r0, r1
+ lsls r0, 2
+ ldrb r2, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0x5]
+ b _080AD7C4
+ .align 2, 0
+_080AD7A4: .4byte gBattleAnimTarget
+_080AD7A8:
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x83
+ bls _080AD7BC
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x1D
+ b _080AD7C2
+_080AD7BC:
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x1F
+_080AD7C2:
+ strb r0, [r1]
+_080AD7C4:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ ble _080AD7EC
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_080AD7EC:
+ movs r2, 0x32
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x1E
+ bne _080AD7FA
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AD7FA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AD6F4
+
+ thumb_func_start sub_80AD800
+sub_80AD800: @ 80AD800
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080AD860 @ =gTasks
+ adds r4, r1, r0
+ ldr r0, _080AD864 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r2, 0x1
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ bne _080AD826
+ movs r1, 0x1
+_080AD826:
+ strh r1, [r4, 0x20]
+ ldr r0, _080AD868 @ =gBattleAnimTarget
+ ldrb r1, [r0]
+ movs r0, 0x2
+ eors r0, r1
+ bl sub_8072DF0
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+ strh r0, [r4, 0x22]
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x24]
+ movs r0, 0x3
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ ldr r0, _080AD86C @ =sub_80AD870
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AD860: .4byte gTasks
+_080AD864: .4byte gBattleAnimAttacker
+_080AD868: .4byte gBattleAnimTarget
+_080AD86C: .4byte sub_80AD870
+ thumb_func_end sub_80AD800
+
+ thumb_func_start sub_80AD870
+sub_80AD870: @ 80AD870
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080AD894 @ =gTasks
+ adds r2, r0, r1
+ movs r0, 0x8
+ ldrsh r3, [r2, r0]
+ cmp r3, 0x1
+ beq _080AD938
+ cmp r3, 0x1
+ bgt _080AD898
+ cmp r3, 0
+ beq _080AD8A6
+ b _080ADA98
+ .align 2, 0
+_080AD894: .4byte gTasks
+_080AD898:
+ cmp r3, 0x2
+ bne _080AD89E
+ b _080AD9C0
+_080AD89E:
+ cmp r3, 0x3
+ bne _080AD8A4
+ b _080ADA54
+_080AD8A4:
+ b _080ADA98
+_080AD8A6:
+ movs r1, 0x20
+ ldrsh r0, [r2, r1]
+ lsls r0, 1
+ ldrh r5, [r2, 0x1C]
+ adds r0, r5
+ strh r0, [r2, 0x1C]
+ ldrh r0, [r2, 0xA]
+ adds r0, 0x1
+ strh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AD8D8
+ strh r3, [r2, 0xA]
+ ldrh r0, [r2, 0xC]
+ adds r0, 0x1
+ strh r0, [r2, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080AD8D4
+ movs r0, 0x2
+ b _080AD8D6
+_080AD8D4:
+ ldr r0, _080AD930 @ =0x0000fffe
+_080AD8D6:
+ strh r0, [r2, 0x1E]
+_080AD8D8:
+ movs r1, 0
+ strh r1, [r2, 0xE]
+ movs r7, 0x22
+ ldrsh r0, [r2, r7]
+ cmp r1, r0
+ bge _080AD91A
+ ldr r4, _080AD934 @ =gSprites
+ adds r3, r2, 0
+ adds r3, 0x8
+_080AD8EA:
+ movs r1, 0xE
+ ldrsh r0, [r2, r1]
+ adds r0, 0xE
+ lsls r0, 1
+ adds r0, r3, r0
+ movs r5, 0
+ ldrsh r0, [r0, r5]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r2, 0x1E]
+ ldrh r7, [r2, 0x1C]
+ adds r0, r7
+ strh r0, [r1, 0x24]
+ ldrh r0, [r2, 0xE]
+ adds r0, 0x1
+ strh r0, [r2, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ movs r5, 0x22
+ ldrsh r1, [r2, r5]
+ cmp r0, r1
+ blt _080AD8EA
+_080AD91A:
+ ldrh r0, [r2, 0x1A]
+ adds r0, 0x1
+ strh r0, [r2, 0x1A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ beq _080AD92A
+ b _080ADA98
+_080AD92A:
+ movs r0, 0
+ strh r0, [r2, 0x1A]
+ b _080ADA44
+ .align 2, 0
+_080AD930: .4byte 0x0000fffe
+_080AD934: .4byte gSprites
+_080AD938:
+ ldrh r0, [r2, 0xA]
+ adds r0, 0x1
+ strh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ ble _080AD960
+ movs r0, 0
+ strh r0, [r2, 0xA]
+ ldrh r0, [r2, 0xC]
+ adds r0, 0x1
+ strh r0, [r2, 0xC]
+ ands r0, r3
+ lsls r0, 16
+ cmp r0, 0
+ beq _080AD95C
+ movs r0, 0x2
+ b _080AD95E
+_080AD95C:
+ ldr r0, _080AD9B8 @ =0x0000fffe
+_080AD95E:
+ strh r0, [r2, 0x1E]
+_080AD960:
+ movs r1, 0
+ strh r1, [r2, 0xE]
+ movs r7, 0x22
+ ldrsh r0, [r2, r7]
+ cmp r1, r0
+ bge _080AD9A2
+ ldr r4, _080AD9BC @ =gSprites
+ adds r3, r2, 0
+ adds r3, 0x8
+_080AD972:
+ movs r1, 0xE
+ ldrsh r0, [r2, r1]
+ adds r0, 0xE
+ lsls r0, 1
+ adds r0, r3, r0
+ movs r5, 0
+ ldrsh r0, [r0, r5]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r2, 0x1E]
+ ldrh r7, [r2, 0x1C]
+ adds r0, r7
+ strh r0, [r1, 0x24]
+ ldrh r0, [r2, 0xE]
+ adds r0, 0x1
+ strh r0, [r2, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ movs r5, 0x22
+ ldrsh r1, [r2, r5]
+ cmp r0, r1
+ blt _080AD972
+_080AD9A2:
+ ldrh r0, [r2, 0x1A]
+ adds r0, 0x1
+ strh r0, [r2, 0x1A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x60
+ bne _080ADA98
+ movs r0, 0
+ strh r0, [r2, 0x1A]
+ b _080ADA44
+ .align 2, 0
+_080AD9B8: .4byte 0x0000fffe
+_080AD9BC: .4byte gSprites
+_080AD9C0:
+ movs r7, 0x20
+ ldrsh r1, [r2, r7]
+ lsls r1, 1
+ ldrh r0, [r2, 0x1C]
+ subs r0, r1
+ strh r0, [r2, 0x1C]
+ ldrh r0, [r2, 0xA]
+ adds r0, 0x1
+ strh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AD9F4
+ movs r0, 0
+ strh r0, [r2, 0xA]
+ ldrh r0, [r2, 0xC]
+ adds r0, 0x1
+ strh r0, [r2, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080AD9F0
+ strh r3, [r2, 0x1E]
+ b _080AD9F4
+_080AD9F0:
+ ldr r0, _080ADA4C @ =0x0000fffe
+ strh r0, [r2, 0x1E]
+_080AD9F4:
+ movs r1, 0
+ strh r1, [r2, 0xE]
+ movs r3, 0x22
+ ldrsh r0, [r2, r3]
+ cmp r1, r0
+ bge _080ADA36
+ ldr r4, _080ADA50 @ =gSprites
+ adds r3, r2, 0
+ adds r3, 0x8
+_080ADA06:
+ movs r5, 0xE
+ ldrsh r0, [r2, r5]
+ adds r0, 0xE
+ lsls r0, 1
+ adds r0, r3, r0
+ movs r7, 0
+ ldrsh r0, [r0, r7]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r2, 0x1E]
+ ldrh r5, [r2, 0x1C]
+ adds r0, r5
+ strh r0, [r1, 0x24]
+ ldrh r0, [r2, 0xE]
+ adds r0, 0x1
+ strh r0, [r2, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ movs r7, 0x22
+ ldrsh r1, [r2, r7]
+ cmp r0, r1
+ blt _080ADA06
+_080ADA36:
+ ldrh r0, [r2, 0x1A]
+ adds r0, 0x1
+ strh r0, [r2, 0x1A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ bne _080ADA98
+_080ADA44:
+ ldrh r0, [r2, 0x8]
+ adds r0, 0x1
+ strh r0, [r2, 0x8]
+ b _080ADA98
+ .align 2, 0
+_080ADA4C: .4byte 0x0000fffe
+_080ADA50: .4byte gSprites
+_080ADA54:
+ movs r1, 0
+ strh r1, [r2, 0xE]
+ movs r3, 0x22
+ ldrsh r0, [r2, r3]
+ cmp r1, r0
+ bge _080ADA92
+ ldr r6, _080ADAA0 @ =gSprites
+ adds r3, r2, 0
+ adds r3, 0x8
+ movs r5, 0
+_080ADA68:
+ movs r7, 0xE
+ ldrsh r0, [r2, r7]
+ adds r0, 0xE
+ lsls r0, 1
+ adds r0, r3, r0
+ movs r7, 0
+ ldrsh r1, [r0, r7]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ strh r5, [r0, 0x24]
+ ldrh r0, [r2, 0xE]
+ adds r0, 0x1
+ strh r0, [r2, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ movs r7, 0x22
+ ldrsh r1, [r2, r7]
+ cmp r0, r1
+ blt _080ADA68
+_080ADA92:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080ADA98:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ADAA0: .4byte gSprites
+ thumb_func_end sub_80AD870
+
+ thumb_func_start sub_80ADAA4
+sub_80ADAA4: @ 80ADAA4
+ push {r4,lr}
+ sub sp, 0x10
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ lsls r0, 4
+ ldr r1, _080ADAD4 @ =gBattleAnimArgs
+ ldrb r2, [r1]
+ ldrh r3, [r1, 0x2]
+ movs r1, 0x10
+ bl BlendPalette
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ add sp, 0x10
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ADAD4: .4byte gBattleAnimArgs
+ thumb_func_end sub_80ADAA4
+
+ thumb_func_start sub_80ADAD8
+sub_80ADAD8: @ 80ADAD8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080ADB30 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r2, r0, r1
+ movs r3, 0x8
+ ldrsh r0, [r2, r3]
+ mov r9, r1
+ ldr r4, _080ADB34 @ =gBattleAnimArgs
+ mov r8, r4
+ cmp r0, 0
+ bne _080ADB0E
+ ldrh r0, [r4]
+ strh r0, [r2, 0xA]
+ ldrh r0, [r4, 0x2]
+ strh r0, [r2, 0xC]
+ ldrh r0, [r4, 0x4]
+ strh r0, [r2, 0xE]
+ ldrh r0, [r4, 0x6]
+ strh r0, [r2, 0x10]
+_080ADB0E:
+ ldrh r0, [r2, 0x8]
+ adds r0, 0x1
+ strh r0, [r2, 0x8]
+ ldr r1, _080ADB38 @ =gBattlerSpriteIds
+ ldr r0, _080ADB3C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r6, [r0]
+ movs r5, 0x10
+ ldrsh r0, [r2, r5]
+ cmp r0, 0
+ bne _080ADB44
+ ldr r4, _080ADB40 @ =gUnknown_83E5EFC
+ movs r1, 0x8
+ ldrsh r0, [r2, r1]
+ b _080ADB4A
+ .align 2, 0
+_080ADB30: .4byte gTasks
+_080ADB34: .4byte gBattleAnimArgs
+_080ADB38: .4byte gBattlerSpriteIds
+_080ADB3C: .4byte gBattleAnimTarget
+_080ADB40: .4byte gUnknown_83E5EFC
+_080ADB44:
+ ldr r4, _080ADB90 @ =gUnknown_83E5F0C
+ movs r3, 0x8
+ ldrsh r0, [r2, r3]
+_080ADB4A:
+ movs r1, 0xA
+ bl __modsi3
+ lsls r0, 16
+ asrs r0, 16
+ adds r0, r4
+ ldrb r5, [r0]
+ lsls r0, r7, 2
+ adds r1, r0, r7
+ lsls r1, 3
+ add r1, r9
+ movs r4, 0xE
+ ldrsh r1, [r1, r4]
+ mov r12, r0
+ cmp r1, 0x1
+ bne _080ADB98
+ ldr r2, _080ADB94 @ =gSprites
+ lsls r3, r6, 4
+ adds r0, r3, r6
+ lsls r0, 2
+ adds r0, r2
+ mov r10, r0
+ mov r0, r8
+ movs r4, 0x2
+ ldrsh r1, [r0, r4]
+ lsls r0, r5, 24
+ asrs r0, 24
+ muls r0, r1
+ cmp r0, 0
+ bge _080ADB88
+ negs r0, r0
+_080ADB88:
+ mov r5, r10
+ strh r0, [r5, 0x26]
+ b _080ADBB2
+ .align 2, 0
+_080ADB90: .4byte gUnknown_83E5F0C
+_080ADB94: .4byte gSprites
+_080ADB98:
+ ldr r3, _080ADBE8 @ =gSprites
+ lsls r4, r6, 4
+ adds r2, r4, r6
+ lsls r2, 2
+ adds r2, r3
+ lsls r0, r5, 24
+ asrs r0, 24
+ mov r5, r8
+ ldrh r1, [r5, 0x2]
+ muls r0, r1
+ strh r0, [r2, 0x24]
+ adds r2, r3, 0
+ adds r3, r4, 0
+_080ADBB2:
+ mov r1, r12
+ adds r0, r1, r7
+ lsls r0, 3
+ add r0, r9
+ movs r4, 0x8
+ ldrsh r1, [r0, r4]
+ movs r5, 0xA
+ ldrsh r0, [r0, r5]
+ cmp r1, r0
+ bne _080ADBD8
+ adds r0, r3, r6
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0
+ strh r1, [r0, 0x24]
+ strh r1, [r0, 0x26]
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080ADBD8:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ADBE8: .4byte gSprites
+ thumb_func_end sub_80ADAD8
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s
index c98cda3b7..3452841c4 100644
--- a/asm/fldeff_cut.s
+++ b/asm/fldeff_cut.s
@@ -39,7 +39,7 @@ sub_8097898: @ 8097898
cmp r0, 0x1
beq _080978E0
movs r0, 0x5F
- bl npc_before_player_of_type
+ bl CheckObjectGraphicsInFrontOfPlayer
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -74,7 +74,7 @@ _080978F8: .4byte FieldCallback_PrepareFadeInFromMenu
_080978FC: .4byte gPostMenuFieldCallback
_08097900: .4byte sub_8097984
_08097904:
- ldr r4, _0809797C @ =gUnknown_2039A04
+ ldr r4, _0809797C @ =gPlayerFacingPosition
adds r1, r4, 0x2
adds r0, r4, 0
bl PlayerGetDestCoords
@@ -136,7 +136,7 @@ _08097970:
pop {r1}
bx r1
.align 2, 0
-_0809797C: .4byte gUnknown_2039A04
+_0809797C: .4byte gPlayerFacingPosition
_08097980: .4byte 0x0000ffff
thumb_func_end sub_8097898
@@ -253,7 +253,7 @@ sub_8097A48: @ 8097A48
movs r7, 0
movs r0, 0x79
bl PlaySE
- ldr r4, _08097B38 @ =gUnknown_2039A04
+ ldr r4, _08097B38 @ =gPlayerFacingPosition
adds r1, r4, 0x2
adds r0, r4, 0
bl PlayerGetDestCoords
@@ -362,7 +362,7 @@ _08097AE2:
pop {r1}
bx r1
.align 2, 0
-_08097B38: .4byte gUnknown_2039A04
+_08097B38: .4byte gPlayerFacingPosition
_08097B3C: .4byte 0x0000ffff
_08097B40: .4byte gUnknown_2039870
_08097B44: .4byte gSprites
diff --git a/asm/fldeff_poison.s b/asm/fldeff_poison.s
deleted file mode 100644
index dd3bb622e..000000000
--- a/asm/fldeff_poison.s
+++ /dev/null
@@ -1,98 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start task50_overworld_poison_effect
-task50_overworld_poison_effect: @ 80A0DD8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080A0DFC @ =gTasks+0x8
- adds r1, r0, r1
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0x1
- beq _080A0E16
- cmp r0, 0x1
- bgt _080A0E00
- cmp r0, 0
- beq _080A0E06
- b _080A0E32
- .align 2, 0
-_080A0DFC: .4byte gTasks+0x8
-_080A0E00:
- cmp r0, 0x2
- beq _080A0E2A
- b _080A0E32
-_080A0E06:
- ldrh r0, [r1, 0x2]
- adds r0, 0x1
- strh r0, [r1, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080A0E32
- b _080A0E22
-_080A0E16:
- ldrh r0, [r1, 0x2]
- subs r0, 0x1
- strh r0, [r1, 0x2]
- lsls r0, 16
- cmp r0, 0
- bne _080A0E32
-_080A0E22:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _080A0E32
-_080A0E2A:
- adds r0, r2, 0
- bl DestroyTask
- b _080A0E42
-_080A0E32:
- ldrb r1, [r1, 0x2]
- lsls r0, r1, 4
- orrs r0, r1
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl Unused_AdjustBgMosaic
-_080A0E42:
- pop {r0}
- bx r0
- thumb_func_end task50_overworld_poison_effect
-
- thumb_func_start overworld_poison_effect
-overworld_poison_effect: @ 80A0E48
- push {lr}
- movs r0, 0x48
- bl PlaySE
- ldr r0, _080A0E5C @ =task50_overworld_poison_effect
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080A0E5C: .4byte task50_overworld_poison_effect
- thumb_func_end overworld_poison_effect
-
- thumb_func_start c3_80A0DD8_is_running
-c3_80A0DD8_is_running: @ 80A0E60
- push {lr}
- ldr r0, _080A0E70 @ =task50_overworld_poison_effect
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080A0E70: .4byte task50_overworld_poison_effect
- thumb_func_end c3_80A0DD8_is_running
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fldeff_softboiled.s b/asm/fldeff_softboiled.s
deleted file mode 100644
index 857686ab3..000000000
--- a/asm/fldeff_softboiled.s
+++ /dev/null
@@ -1,366 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start hm_prepare_dive_probably
-hm_prepare_dive_probably: @ 80E5684
- push {r4-r6,lr}
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0x64
- muls r0, r6
- ldr r4, _080E56D0 @ =gPlayerParty
- adds r0, r4
- movs r1, 0x3A
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- muls r0, r6
- adds r0, r4
- movs r1, 0x39
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0x5
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r4, r0
- bhi _080E56D4
- movs r0, 0
- b _080E56D6
- .align 2, 0
-_080E56D0: .4byte gPlayerParty
-_080E56D4:
- movs r0, 0x1
-_080E56D6:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end hm_prepare_dive_probably
-
- thumb_func_start sub_80E56DC
-sub_80E56DC: @ 80E56DC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080E5718 @ =gUnknown_203B0A0
- movs r1, 0xA
- strb r1, [r0, 0xB]
- ldrb r1, [r0, 0x9]
- strb r1, [r0, 0xA]
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl sub_811F818
- movs r0, 0x5
- bl sub_8121D0C
- ldr r1, _080E571C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080E5720 @ =sub_811FB28
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5718: .4byte gUnknown_203B0A0
-_080E571C: .4byte gTasks
-_080E5720: .4byte sub_811FB28
- thumb_func_end sub_80E56DC
-
- thumb_func_start sub_80E5724
-sub_80E5724: @ 80E5724
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- str r4, [sp, 0x4]
- ldr r1, _080E575C @ =gUnknown_203B0A0
- ldrb r7, [r1, 0x9]
- mov r8, r7
- ldrb r0, [r1, 0xA]
- adds r5, r0, 0
- cmp r5, 0x6
- bls _080E5768
- movs r0, 0
- strb r0, [r1, 0xB]
- bl sub_8121D0C
- ldr r1, _080E5760 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080E5764 @ =sub_811FB28
- str r1, [r0]
- b _080E57D4
- .align 2, 0
-_080E575C: .4byte gUnknown_203B0A0
-_080E5760: .4byte gTasks
-_080E5764: .4byte sub_811FB28
-_080E5768:
- movs r0, 0x64
- mov r10, r0
- mov r0, r10
- muls r0, r5
- ldr r1, _080E57A0 @ =gPlayerParty
- mov r9, r1
- adds r6, r0, r1
- adds r0, r6, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _080E5796
- cmp r7, r5
- beq _080E5796
- adds r0, r6, 0
- movs r1, 0x3A
- bl GetMonData
- cmp r0, r4
- bne _080E57A4
-_080E5796:
- ldr r0, [sp, 0x4]
- bl sub_80E5934
- b _080E57D4
- .align 2, 0
-_080E57A0: .4byte gPlayerParty
-_080E57A4:
- movs r0, 0x1
- bl PlaySE
- mov r1, r10
- mov r0, r8
- muls r0, r1
- add r0, r9
- movs r1, 0x3A
- bl GetMonData
- movs r1, 0x5
- bl __udivsi3
- adds r3, r0, 0
- lsls r3, 16
- asrs r3, 16
- movs r2, 0x1
- negs r2, r2
- ldr r0, _080E57E4 @ =sub_80E57E8
- str r0, [sp]
- ldr r0, [sp, 0x4]
- mov r1, r8
- bl sub_8120760
-_080E57D4:
- 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
-_080E57E4: .4byte sub_80E57E8
- thumb_func_end sub_80E5724
-
- thumb_func_start sub_80E57E8
-sub_80E57E8: @ 80E57E8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl PlaySE
- ldr r5, _080E5830 @ =gUnknown_203B0A0
- movs r1, 0x9
- ldrsb r1, [r5, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E5834 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3A
- bl GetMonData
- movs r1, 0x5
- bl __udivsi3
- adds r3, r0, 0
- lsls r3, 16
- asrs r3, 16
- ldrb r1, [r5, 0xA]
- ldr r0, _080E5838 @ =sub_80E583C
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_8120760
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5830: .4byte gUnknown_203B0A0
-_080E5834: .4byte gPlayerParty
-_080E5838: .4byte sub_80E583C
- thumb_func_end sub_80E57E8
-
- thumb_func_start sub_80E583C
-sub_80E583C: @ 80E583C
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _080E5884 @ =gUnknown_203B0A0
- movs r1, 0xA
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E5888 @ =gPlayerParty
- adds r0, r1
- ldr r1, _080E588C @ =gStringVar1
- bl GetMonNickname
- ldr r4, _080E5890 @ =gStringVar4
- ldr r1, _080E5894 @ =gUnknown_8416F27
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl sub_81202F8
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, _080E5898 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080E589C @ =sub_80E58A0
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5884: .4byte gUnknown_203B0A0
-_080E5888: .4byte gPlayerParty
-_080E588C: .4byte gStringVar1
-_080E5890: .4byte gStringVar4
-_080E5894: .4byte gUnknown_8416F27
-_080E5898: .4byte gTasks
-_080E589C: .4byte sub_80E58A0
- thumb_func_end sub_80E583C
-
- thumb_func_start sub_80E58A0
-sub_80E58A0: @ 80E58A0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_8120370
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080E58EE
- ldr r4, _080E58F4 @ =gUnknown_203B0A0
- movs r0, 0
- strb r0, [r4, 0xB]
- ldrb r0, [r4, 0x9]
- movs r1, 0
- bl sub_811F818
- ldrb r0, [r4, 0xA]
- strb r0, [r4, 0x9]
- ldrb r0, [r4, 0xA]
- movs r1, 0x1
- bl sub_811F818
- movs r0, 0x6
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0x6
- bl ClearWindowTilemap
- movs r0, 0
- bl sub_8121D0C
- ldr r1, _080E58F8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080E58FC @ =sub_811FB28
- str r1, [r0]
-_080E58EE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E58F4: .4byte gUnknown_203B0A0
-_080E58F8: .4byte gTasks
-_080E58FC: .4byte sub_811FB28
- thumb_func_end sub_80E58A0
-
- thumb_func_start sub_80E5900
-sub_80E5900: @ 80E5900
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8120370
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080E5926
- movs r0, 0x5
- bl sub_8121D0C
- ldr r0, _080E592C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080E5930 @ =sub_811FB28
- str r0, [r1]
-_080E5926:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E592C: .4byte gTasks
-_080E5930: .4byte sub_811FB28
- thumb_func_end sub_80E5900
-
- thumb_func_start sub_80E5934
-sub_80E5934: @ 80E5934
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080E5964 @ =gUnknown_84169F8
- movs r1, 0
- bl sub_81202F8
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, _080E5968 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080E596C @ =sub_80E5900
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E5964: .4byte gUnknown_84169F8
-_080E5968: .4byte gTasks
-_080E596C: .4byte sub_80E5900
- thumb_func_end sub_80E5934
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s
deleted file mode 100644
index ace765f55..000000000
--- a/asm/fldeff_strength.s
+++ /dev/null
@@ -1,111 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80D07EC
-sub_80D07EC: @ 80D07EC
- push {r4,lr}
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- bne _080D0808
- movs r0, 0x61
- bl npc_before_player_of_type
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080D080C
-_080D0808:
- movs r0, 0
- b _080D0826
-_080D080C:
- ldr r4, _080D082C @ =gSpecialVar_Result
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- ldr r1, _080D0830 @ =gFieldCallback2
- ldr r0, _080D0834 @ =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, _080D0838 @ =gPostMenuFieldCallback
- ldr r0, _080D083C @ =sub_80D0840
- str r0, [r1]
- movs r0, 0x1
-_080D0826:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080D082C: .4byte gSpecialVar_Result
-_080D0830: .4byte gFieldCallback2
-_080D0834: .4byte FieldCallback_PrepareFadeInFromMenu
-_080D0838: .4byte gPostMenuFieldCallback
-_080D083C: .4byte sub_80D0840
- thumb_func_end sub_80D07EC
-
- thumb_func_start sub_80D0840
-sub_80D0840: @ 80D0840
- push {lr}
- bl GetCursorSelectionMonId
- ldr r1, _080D0858 @ =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- ldr r0, _080D085C @ =gUnknown_81BE16E
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .align 2, 0
-_080D0858: .4byte gFieldEffectArguments
-_080D085C: .4byte gUnknown_81BE16E
- thumb_func_end sub_80D0840
-
- thumb_func_start sub_80D0860
-sub_80D0860: @ 80D0860
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080D0894 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _080D0898 @ =sub_80D08A8
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- ldr r0, _080D089C @ =gFieldEffectArguments
- ldr r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080D08A0 @ =gPlayerParty
- adds r0, r1
- ldr r1, _080D08A4 @ =gStringVar1
- bl GetMonNickname
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080D0894: .4byte gTasks
-_080D0898: .4byte sub_80D08A8
-_080D089C: .4byte gFieldEffectArguments
-_080D08A0: .4byte gPlayerParty
-_080D08A4: .4byte gStringVar1
- thumb_func_end sub_80D0860
-
- thumb_func_start sub_80D08A8
-sub_80D08A8: @ 80D08A8
- push {lr}
- movs r0, 0x28
- bl FieldEffectActiveListRemove
- bl EnableBothScriptContexts
- pop {r0}
- bx r0
- thumb_func_end sub_80D08A8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fldeff_sweetscent.s b/asm/fldeff_sweetscent.s
deleted file mode 100644
index aead537d4..000000000
--- a/asm/fldeff_sweetscent.s
+++ /dev/null
@@ -1,262 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80DE0B4
-sub_80DE0B4: @ 80DE0B4
- push {lr}
- ldr r1, _080DE0C4 @ =gUnknown_203B0A0
- movs r0, 0
- strb r0, [r1, 0x9]
- bl hm2_sweet_scent
- pop {r0}
- bx r0
- .align 2, 0
-_080DE0C4: .4byte gUnknown_203B0A0
- thumb_func_end sub_80DE0B4
-
- thumb_func_start sub_80DE0C8
-sub_80DE0C8: @ 80DE0C8
- ldr r1, _080DE0D8 @ =gFieldCallback2
- ldr r0, _080DE0DC @ =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, _080DE0E0 @ =gPostMenuFieldCallback
- ldr r0, _080DE0E4 @ =hm2_sweet_scent
- str r0, [r1]
- movs r0, 0x1
- bx lr
- .align 2, 0
-_080DE0D8: .4byte gFieldCallback2
-_080DE0DC: .4byte FieldCallback_PrepareFadeInFromMenu
-_080DE0E0: .4byte gPostMenuFieldCallback
-_080DE0E4: .4byte hm2_sweet_scent
- thumb_func_end sub_80DE0C8
-
- thumb_func_start hm2_sweet_scent
-hm2_sweet_scent: @ 80DE0E8
- push {lr}
- movs r0, 0x33
- bl FieldEffectStart
- bl GetCursorSelectionMonId
- ldr r1, _080DE100 @ =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080DE100: .4byte gFieldEffectArguments
- thumb_func_end hm2_sweet_scent
-
- thumb_func_start FldEff_SweetScent
-FldEff_SweetScent: @ 80DE104
- push {lr}
- bl sub_807B05C
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080DE12C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _080DE130 @ =sub_80DE134
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080DE12C: .4byte gTasks
-_080DE130: .4byte sub_80DE134
- thumb_func_end FldEff_SweetScent
-
- thumb_func_start sub_80DE134
-sub_80DE134: @ 80DE134
- push {r4,r5,lr}
- sub sp, 0x4
- movs r0, 0xE5
- bl PlaySE
- ldr r4, _080DE1B8 @ =gUnknown_203AAB0
- movs r0, 0x80
- lsls r0, 3
- bl Alloc
- adds r1, r0, 0
- str r1, [r4]
- ldr r4, _080DE1BC @ =gPlttBufferUnfaded
- movs r5, 0x80
- lsls r5, 1
- adds r0, r4, 0
- adds r2, r5, 0
- bl CpuFastSet
- ldr r0, _080DE1C0 @ =gPlttBufferFaded
- adds r1, r4, 0
- adds r2, r5, 0
- bl CpuFastSet
- bl GetPlayerAvatarObjectId
- ldr r2, _080DE1C4 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- mvns r0, r0
- movs r1, 0x1F
- str r1, [sp]
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x8
- bl BeginNormalPaletteFade
- ldr r0, _080DE1C8 @ =sub_80DE1D0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080DE1CC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- movs r0, 0x33
- bl FieldEffectActiveListRemove
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE1B8: .4byte gUnknown_203AAB0
-_080DE1BC: .4byte gPlttBufferUnfaded
-_080DE1C0: .4byte gPlttBufferFaded
-_080DE1C4: .4byte gSprites
-_080DE1C8: .4byte sub_80DE1D0
-_080DE1CC: .4byte gTasks
- thumb_func_end sub_80DE134
-
- thumb_func_start sub_80DE1D0
-sub_80DE1D0: @ 80DE1D0
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r5, r0, 3
- ldr r6, _080DE21C @ =gTasks+0x8
- adds r2, r5, r6
- ldr r0, _080DE220 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080DE26C
- ldrh r3, [r2]
- movs r7, 0
- ldrsh r0, [r2, r7]
- cmp r0, 0x40
- bne _080DE268
- strh r1, [r2]
- bl sub_8082EC0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080DE228
- ldr r0, _080DE224 @ =gUnknown_203AAB0
- ldr r0, [r0]
- bl Free
- adds r0, r4, 0
- bl DestroyTask
- b _080DE26C
- .align 2, 0
-_080DE21C: .4byte gTasks+0x8
-_080DE220: .4byte gPaletteFade
-_080DE224: .4byte gUnknown_203AAB0
-_080DE228:
- adds r0, r6, 0
- subs r0, 0x8
- adds r0, r5, r0
- ldr r1, _080DE260 @ =sub_80DE274
- str r1, [r0]
- bl GetPlayerAvatarObjectId
- ldr r2, _080DE264 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- mvns r0, r0
- movs r1, 0x1F
- str r1, [sp]
- movs r1, 0x4
- movs r2, 0x8
- movs r3, 0
- bl BeginNormalPaletteFade
- b _080DE26C
- .align 2, 0
-_080DE260: .4byte sub_80DE274
-_080DE264: .4byte gSprites
-_080DE268:
- adds r0, r3, 0x1
- strh r0, [r2]
-_080DE26C:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80DE1D0
-
- thumb_func_start sub_80DE274
-sub_80DE274: @ 80DE274
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080DE2B0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080DE2AA
- ldr r4, _080DE2B4 @ =gUnknown_203AAB0
- ldr r0, [r4]
- ldr r1, _080DE2B8 @ =gPlttBufferUnfaded
- movs r2, 0x80
- lsls r2, 1
- bl CpuFastSet
- bl sub_807B070
- ldr r0, [r4]
- bl Free
- ldr r0, _080DE2BC @ =gUnknown_81BE564
- bl ScriptContext1_SetupScript
- adds r0, r5, 0
- bl DestroyTask
-_080DE2AA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE2B0: .4byte gPaletteFade
-_080DE2B4: .4byte gUnknown_203AAB0
-_080DE2B8: .4byte gPlttBufferUnfaded
-_080DE2BC: .4byte gUnknown_81BE564
- thumb_func_end sub_80DE274
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/flying.s b/asm/flying.s
new file mode 100644
index 000000000..ada0296c8
--- /dev/null
+++ b/asm/flying.s
@@ -0,0 +1,2945 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80B18A0
+sub_80B18A0: @ 80B18A0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0xB
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x4
+ bl Sin
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x30
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080B18DC
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B18DC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B18A0
+
+ thumb_func_start sub_80B18E4
+sub_80B18E4: @ 80B18E4
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_8075114
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x14
+ strh r0, [r4, 0x22]
+ movs r0, 0xBF
+ strh r0, [r4, 0x30]
+ ldr r1, _080B1908 @ =sub_80B190C
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1908: .4byte sub_80B190C
+ thumb_func_end sub_80B18E4
+
+ thumb_func_start sub_80B190C
+sub_80B190C: @ 80B190C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x20
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x8
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x5
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x47
+ bne _080B1946
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B1946:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B190C
+
+ thumb_func_start sub_80B194C
+sub_80B194C: @ 80B194C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080B197C @ =gTasks
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ adds r4, r1
+ ldr r1, _080B1980 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x8]
+ ldrh r0, [r1]
+ strh r0, [r4, 0xA]
+ ldr r0, _080B1984 @ =0x00002719
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0xC]
+ ldr r0, _080B1988 @ =sub_80B198C
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B197C: .4byte gTasks
+_080B1980: .4byte gBattleAnimArgs
+_080B1984: .4byte 0x00002719
+_080B1988: .4byte sub_80B198C
+ thumb_func_end sub_80B194C
+
+ thumb_func_start sub_80B198C
+sub_80B198C: @ 80B198C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r2, _080B1A0C @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r3, r0, r2
+ ldrh r0, [r3, 0x1C]
+ adds r1, r0, 0x1
+ strh r1, [r3, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ movs r4, 0xA
+ ldrsh r1, [r3, r4]
+ adds r7, r2, 0
+ cmp r0, r1
+ bne _080B19EA
+ movs r0, 0
+ strh r0, [r3, 0x1C]
+ ldrb r0, [r3, 0xC]
+ ldr r2, _080B1A10 @ =gPlttBufferFaded
+ lsls r0, 4
+ movs r3, 0x84
+ lsls r3, 1
+ adds r1, r0, r3
+ lsls r1, 1
+ adds r1, r2
+ ldrh r6, [r1]
+ movs r4, 0x7
+ mov r12, r0
+ ldr r0, _080B1A14 @ =0x00000107
+ add r0, r12
+ lsls r0, 1
+ adds r3, r0, r2
+_080B19D2:
+ ldrh r0, [r3]
+ strh r0, [r1]
+ subs r3, 0x2
+ subs r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bgt _080B19D2
+ ldr r0, _080B1A18 @ =0x00000101
+ add r0, r12
+ lsls r0, 1
+ adds r0, r2
+ strh r6, [r0]
+_080B19EA:
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r7
+ ldrh r1, [r0, 0x8]
+ subs r1, 0x1
+ strh r1, [r0, 0x8]
+ lsls r1, 16
+ cmp r1, 0
+ bne _080B1A04
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080B1A04:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1A0C: .4byte gTasks
+_080B1A10: .4byte gPlttBufferFaded
+_080B1A14: .4byte 0x00000107
+_080B1A18: .4byte 0x00000101
+ thumb_func_end sub_80B198C
+
+ thumb_func_start sub_80B1A1C
+sub_80B1A1C: @ 80B1A1C
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080B1A88 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B1A3C
+ ldr r1, _080B1A8C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080B1A3C:
+ ldr r4, _080B1A8C @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x8]
+ strh r0, [r6, 0x2E]
+ ldrh r0, [r6, 0x20]
+ strh r0, [r6, 0x30]
+ ldr r5, _080B1A90 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x4]
+ adds r0, r1
+ strh r0, [r6, 0x32]
+ ldrh r0, [r6, 0x22]
+ strh r0, [r6, 0x34]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r4, [r4, 0x6]
+ adds r0, r4
+ strh r0, [r6, 0x36]
+ adds r0, r6, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldr r0, _080B1A94 @ =sub_8074F50
+ str r0, [r6, 0x1C]
+ ldr r1, _080B1A98 @ =sub_80B1A9C
+ adds r0, r6, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1A88: .4byte gBattleAnimAttacker
+_080B1A8C: .4byte gBattleAnimArgs
+_080B1A90: .4byte gBattleAnimTarget
+_080B1A94: .4byte sub_8074F50
+_080B1A98: .4byte sub_80B1A9C
+ thumb_func_end sub_80B1A1C
+
+ thumb_func_start sub_80B1A9C
+sub_80B1A9C: @ 80B1A9C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B1AB0
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B1AB0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B1A9C
+
+ thumb_func_start sub_80B1AB8
+sub_80B1AB8: @ 80B1AB8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080B1B54 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B1AE4
+ ldr r1, _080B1B58 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r1]
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+ ldrh r0, [r1, 0x6]
+ negs r0, r0
+ strh r0, [r1, 0x6]
+_080B1AE4:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B1AFC
+ ldr r0, _080B1B58 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0x2]
+ negs r1, r1
+ strh r1, [r0, 0x2]
+ ldrh r1, [r0, 0x6]
+ negs r1, r1
+ strh r1, [r0, 0x6]
+_080B1AFC:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ ldr r2, _080B1B58 @ =gBattleAnimArgs
+ ldrh r1, [r2]
+ ldrh r3, [r5, 0x20]
+ adds r1, r3
+ strh r1, [r5, 0x20]
+ lsrs r0, 24
+ ldrh r1, [r2, 0x2]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ ldrh r0, [r2, 0x8]
+ strh r0, [r5, 0x2E]
+ movs r3, 0xC
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bne _080B1B60
+ ldr r4, _080B1B5C @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ b _080B1B72
+ .align 2, 0
+_080B1B54: .4byte gBattleAnimAttacker
+_080B1B58: .4byte gBattleAnimArgs
+_080B1B5C: .4byte gBattleAnimTarget
+_080B1B60:
+ ldr r0, _080B1BA0 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r2, r5, 0
+ adds r2, 0x32
+ adds r3, r5, 0
+ adds r3, 0x36
+ movs r1, 0x1
+ bl sub_8076D9C
+_080B1B72:
+ ldr r4, _080B1BA4 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x4]
+ ldrh r1, [r5, 0x32]
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r4, 0x6]
+ ldrh r3, [r5, 0x36]
+ adds r0, r3
+ strh r0, [r5, 0x36]
+ ldr r0, _080B1BA8 @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080B1BAC @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldrb r1, [r4, 0xA]
+ adds r0, r5, 0
+ bl SeekSpriteAnim
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1BA0: .4byte gBattleAnimTarget
+_080B1BA4: .4byte gBattleAnimArgs
+_080B1BA8: .4byte sub_8075590
+_080B1BAC: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B1AB8
+
+ thumb_func_start sub_80B1BB0
+sub_80B1BB0: @ 80B1BB0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r1, _080B1BEC @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x30]
+ ldr r0, _080B1BF0 @ =sub_80B1BF8
+ str r0, [r4, 0x1C]
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ ldr r2, _080B1BF4 @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1BEC: .4byte gBattleAnimArgs
+_080B1BF0: .4byte sub_80B1BF8
+_080B1BF4: .4byte gSprites
+ thumb_func_end sub_80B1BB0
+
+ thumb_func_start sub_80B1BF8
+sub_80B1BF8: @ 80B1BF8
+ push {lr}
+ adds r2, r0, 0
+ ldrh r1, [r2, 0x2E]
+ movs r3, 0x2E
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ ble _080B1C0C
+ subs r0, r1, 0x1
+ strh r0, [r2, 0x2E]
+ b _080B1C1E
+_080B1C0C:
+ ldrh r0, [r2, 0x30]
+ ldrh r1, [r2, 0x32]
+ adds r0, r1
+ strh r0, [r2, 0x32]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r2, 0x26]
+ subs r1, r0
+ strh r1, [r2, 0x26]
+_080B1C1E:
+ movs r3, 0x22
+ ldrsh r0, [r2, r3]
+ movs r3, 0x26
+ ldrsh r1, [r2, r3]
+ adds r0, r1
+ movs r1, 0x20
+ negs r1, r1
+ cmp r0, r1
+ bge _080B1C36
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080B1C36:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B1BF8
+
+ thumb_func_start sub_80B1C3C
+sub_80B1C3C: @ 80B1C3C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080B1C64 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B1C6C
+ movs r0, 0x88
+ lsls r0, 1
+ strh r0, [r5, 0x20]
+ ldr r0, _080B1C68 @ =0x0000ffe0
+ strh r0, [r5, 0x22]
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ b _080B1C72
+ .align 2, 0
+_080B1C64: .4byte gBattleAnimAttacker
+_080B1C68: .4byte 0x0000ffe0
+_080B1C6C:
+ ldr r0, _080B1CB0 @ =0x0000ffe0
+ strh r0, [r5, 0x20]
+ strh r0, [r5, 0x22]
+_080B1C72:
+ ldr r0, _080B1CB4 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ ldr r4, _080B1CB8 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ 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 r0, _080B1CBC @ =sub_80B1CC0
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1CB0: .4byte 0x0000ffe0
+_080B1CB4: .4byte gBattleAnimArgs
+_080B1CB8: .4byte gBattleAnimTarget
+_080B1CBC: .4byte sub_80B1CC0
+ thumb_func_end sub_80B1C3C
+
+ thumb_func_start sub_80B1CC0
+sub_80B1CC0: @ 80B1CC0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x1
+ strh r0, [r4, 0x2E]
+ adds r0, r4, 0
+ bl sub_80755E0
+ ldrh r1, [r4, 0x34]
+ lsrs r0, r1, 8
+ cmp r0, 0xC8
+ bls _080B1CE8
+ ldrh r0, [r4, 0x24]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ movs r0, 0
+ strh r0, [r4, 0x24]
+ movs r0, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x34]
+_080B1CE8:
+ movs r1, 0x20
+ ldrsh r0, [r4, r1]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ adds r0, 0x20
+ movs r1, 0x98
+ lsls r1, 1
+ cmp r0, r1
+ bhi _080B1D0A
+ movs r1, 0x22
+ ldrsh r0, [r4, r1]
+ movs r2, 0x26
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ cmp r0, 0xA0
+ ble _080B1D30
+_080B1D0A:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ ldr r2, _080B1D38 @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B1D30:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1D38: .4byte gSprites
+ thumb_func_end sub_80B1CC0
+
+ thumb_func_start sub_80B1D3C
+sub_80B1D3C: @ 80B1D3C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ subs r1, r0, 0x1
+ strh r1, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080B1D7C
+ ldrb r0, [r4, 0x1]
+ lsls r0, 30
+ lsrs r0, 30
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B1D6E
+ 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]
+_080B1D6E:
+ adds r0, r4, 0
+ bl DestroySprite
+ ldr r1, _080B1D84 @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+_080B1D7C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1D84: .4byte gUnknown_2037EE2
+ thumb_func_end sub_80B1D3C
+
+ thumb_func_start sub_80B1D88
+sub_80B1D88: @ 80B1D88
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r0, 0
+ adds r5, r7, 0
+ adds r5, 0x2E
+ ldr r0, _080B1DA8 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ movs r0, 0x80
+ lsls r0, 1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B1DB0
+ ldr r0, _080B1DAC @ =gBattleAnimAttacker
+ b _080B1DB2
+ .align 2, 0
+_080B1DA8: .4byte gBattleAnimArgs
+_080B1DAC: .4byte gBattleAnimAttacker
+_080B1DB0:
+ ldr r0, _080B1E5C @ =gBattleAnimTarget
+_080B1DB2:
+ ldrb r6, [r0]
+ adds r0, r6, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B1DC8
+ ldr r1, _080B1E60 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r1]
+_080B1DC8:
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080B1E60 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4]
+ adds r0, r1
+ strh r0, [r7, 0x20]
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ ldrh r1, [r4, 0x2]
+ lsrs r0, 24
+ adds r1, r0, r1
+ strh r1, [r7, 0x22]
+ lsls r1, 8
+ strh r1, [r5, 0x8]
+ ldrh r1, [r4, 0xC]
+ adds r0, r1
+ lsls r0, 1
+ ldrh r2, [r5, 0xE]
+ movs r1, 0x1
+ ands r1, r2
+ orrs r1, r0
+ strh r1, [r5, 0xE]
+ ldrb r0, [r5]
+ movs r2, 0x4
+ mov r8, r2
+ mov r1, r8
+ orrs r0, r1
+ strb r0, [r5]
+ ldrh r0, [r4, 0x4]
+ ldrb r1, [r4, 0x4]
+ strh r1, [r5, 0x2]
+ lsls r0, 16
+ lsrs r0, 24
+ strh r0, [r5, 0xA]
+ ldrh r0, [r4, 0x6]
+ strh r0, [r5, 0x4]
+ ldrh r0, [r4, 0x8]
+ strh r0, [r5, 0x6]
+ ldrh r0, [r4, 0xA]
+ strh r0, [r5, 0xC]
+ subs r1, 0x40
+ lsls r1, 16
+ lsrs r1, 16
+ cmp r1, 0x7F
+ bhi _080B1EBE
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B1E64
+ adds r0, r6, 0
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+ movs r1, 0x3
+ ands r0, r1
+ lsls r0, 2
+ ldrb r2, [r7, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r7, 0x5]
+ b _080B1E7C
+ .align 2, 0
+_080B1E5C: .4byte gBattleAnimTarget
+_080B1E60: .4byte gBattleAnimArgs
+_080B1E64:
+ adds r0, r6, 0
+ bl sub_8076884
+ movs r1, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r7, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r7, 0x5]
+_080B1E7C:
+ ldrb r1, [r5, 0xE]
+ movs r4, 0x2
+ negs r4, r4
+ adds r0, r4, 0
+ ands r0, r1
+ strb r0, [r5, 0xE]
+ movs r2, 0x4
+ ldrsh r0, [r5, r2]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ bne _080B1F1E
+ adds r3, r7, 0
+ adds r3, 0x3F
+ ldrb r2, [r3]
+ lsls r0, r2, 31
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ adds r0, r4, 0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ lsls r0, 31
+ lsrs r0, 31
+ adds r1, r7, 0
+ adds r1, 0x2A
+ strb r0, [r1]
+ ldrb r0, [r3]
+ movs r1, 0x4
+ orrs r0, r1
+ b _080B1F16
+_080B1EBE:
+ adds r0, r6, 0
+ bl sub_8076884
+ movs r1, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r7, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r7, 0x5]
+ ldrb r0, [r5, 0xE]
+ movs r4, 0x1
+ orrs r0, r4
+ strb r0, [r5, 0xE]
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080B1F1E
+ adds r3, r7, 0
+ adds r3, 0x3F
+ ldrb r2, [r3]
+ lsls r1, r2, 31
+ lsrs r1, 31
+ movs r0, 0x1
+ eors r1, r0
+ ands r1, r4
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ lsls r0, 31
+ lsrs r0, 31
+ adds r1, r7, 0
+ adds r1, 0x2A
+ strb r0, [r1]
+ ldrb r0, [r3]
+ mov r2, r8
+ orrs r0, r2
+_080B1F16:
+ movs r1, 0x11
+ negs r1, r1
+ ands r0, r1
+ strb r0, [r3]
+_080B1F1E:
+ ldrh r1, [r5, 0x2]
+ lsrs r1, 6
+ lsls r1, 4
+ ldrb r2, [r5]
+ movs r0, 0xF
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5]
+ ldr r3, _080B1F88 @ =gSineTable
+ ldrh r0, [r5, 0x2]
+ lsls r0, 1
+ adds r0, r3
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ ldrb r0, [r5, 0xC]
+ muls r0, r1
+ asrs r0, 8
+ strh r0, [r7, 0x24]
+ ldrb r2, [r7, 0x3]
+ lsls r2, 26
+ lsrs r2, 27
+ movs r1, 0x24
+ ldrsh r0, [r7, r1]
+ negs r0, r0
+ asrs r0, 1
+ ldrb r5, [r5, 0xA]
+ adds r0, r5
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 1
+ adds r1, r3
+ ldrh r4, [r1]
+ ldr r1, _080B1F8C @ =gOamMatrices
+ lsls r2, 3
+ adds r2, r1
+ adds r0, 0x40
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ strh r0, [r2, 0x6]
+ strh r0, [r2]
+ strh r4, [r2, 0x2]
+ lsls r0, r4, 16
+ asrs r0, 16
+ negs r0, r0
+ strh r0, [r2, 0x4]
+ ldr r0, _080B1F90 @ =sub_80B1F94
+ str r0, [r7, 0x1C]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1F88: .4byte gSineTable
+_080B1F8C: .4byte gOamMatrices
+_080B1F90: .4byte sub_80B1F94
+ thumb_func_end sub_80B1D88
+
+ thumb_func_start sub_80B1F94
+sub_80B1F94: @ 80B1F94
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r5, r0, 0
+ movs r6, 0
+ adds r4, r5, 0
+ adds r4, 0x2E
+ ldrb r2, [r4]
+ movs r7, 0x1
+ movs r0, 0x1
+ mov r9, r0
+ ands r0, r2
+ cmp r0, 0
+ beq _080B1FCE
+ ldrb r0, [r4, 0x1]
+ adds r1, r0, 0
+ adds r1, 0xFF
+ strb r1, [r4, 0x1]
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B1FC2
+ b _080B24AA
+_080B1FC2:
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r4]
+ strb r6, [r4, 0x1]
+ b _080B24AA
+_080B1FCE:
+ ldrh r0, [r4, 0x2]
+ lsrs r1, r0, 6
+ mov r12, r0
+ cmp r1, 0x1
+ bne _080B1FDA
+ b _080B20FE
+_080B1FDA:
+ cmp r1, 0x1
+ bgt _080B1FE4
+ cmp r1, 0
+ beq _080B1FF2
+ b _080B23F0
+_080B1FE4:
+ cmp r1, 0x2
+ bne _080B1FEA
+ b _080B21F2
+_080B1FEA:
+ cmp r1, 0x3
+ bne _080B1FF0
+ b _080B22E6
+_080B1FF0:
+ b _080B23F0
+_080B1FF2:
+ lsls r1, r2, 24
+ lsrs r0, r1, 28
+ cmp r0, 0x1
+ bne _080B2006
+ movs r0, 0x8
+ orrs r0, r2
+ orrs r0, r7
+ strb r0, [r4]
+ strb r6, [r4, 0x1]
+ b _080B20F4
+_080B2006:
+ lsrs r0, r1, 28
+ cmp r0, 0x3
+ bne _080B2028
+ lsls r0, r2, 30
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r0, r1
+ ands r0, r7
+ lsls r0, 1
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ orrs r1, r7
+ strb r1, [r4]
+ strb r6, [r4, 0x1]
+ b _080B20F4
+_080B2028:
+ movs r0, 0x8
+ ands r0, r2
+ cmp r0, 0
+ beq _080B20F4
+ adds r3, r5, 0
+ adds r3, 0x3F
+ ldrb r2, [r3]
+ lsls r1, r2, 31
+ lsrs r1, 31
+ movs r6, 0x1
+ eors r1, r6
+ ands r1, r7
+ movs r0, 0x2
+ negs r0, r0
+ mov r8, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ lsls r0, 31
+ lsrs r0, 31
+ adds r1, r5, 0
+ adds r1, 0x2A
+ strb r0, [r1]
+ ldrb r0, [r3]
+ movs r1, 0x4
+ orrs r0, r1
+ movs r1, 0x11
+ negs r1, r1
+ ands r0, r1
+ strb r0, [r3]
+ ldrb r1, [r4]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080B20E6
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B20B6
+ ldrb r1, [r4, 0xE]
+ mov r0, r9
+ ands r0, r1
+ cmp r0, 0
+ bne _080B209C
+ ldrb r2, [r5, 0x5]
+ lsls r1, r2, 28
+ lsrs r1, 30
+ subs r1, 0x1
+ movs r0, 0x3
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ b _080B20D4
+_080B209C:
+ ldrb r2, [r5, 0x5]
+ lsls r1, r2, 28
+ lsrs r1, 30
+ adds r1, 0x1
+ movs r0, 0x3
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ b _080B20D4
+_080B20B6:
+ ldrb r1, [r4, 0xE]
+ mov r0, r9
+ ands r0, r1
+ cmp r0, 0
+ bne _080B20CA
+ adds r1, r5, 0
+ adds r1, 0x43
+ ldrb r0, [r1]
+ subs r0, 0xC
+ b _080B20D2
+_080B20CA:
+ adds r1, r5, 0
+ adds r1, 0x43
+ ldrb r0, [r1]
+ adds r0, 0xC
+_080B20D2:
+ strb r0, [r1]
+_080B20D4:
+ ldrb r2, [r4, 0xE]
+ lsls r0, r2, 31
+ lsrs r0, 31
+ eors r0, r6
+ ands r0, r7
+ mov r1, r8
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0xE]
+_080B20E6:
+ ldrb r1, [r4]
+ movs r0, 0x9
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4]
+ ldrh r1, [r4, 0x2]
+ mov r12, r1
+_080B20F4:
+ ldrb r1, [r4]
+ movs r0, 0xF
+ ands r0, r1
+ strb r0, [r4]
+ b _080B23F0
+_080B20FE:
+ lsls r1, r2, 24
+ lsrs r0, r1, 28
+ cmp r0, 0
+ bne _080B210C
+ movs r0, 0x8
+ orrs r0, r2
+ b _080B2114
+_080B210C:
+ lsrs r0, r1, 28
+ cmp r0, 0x2
+ bne _080B211C
+ adds r0, r2, 0
+_080B2114:
+ orrs r0, r7
+ strb r0, [r4]
+ strb r6, [r4, 0x1]
+ b _080B21E8
+_080B211C:
+ movs r0, 0x8
+ ands r0, r2
+ cmp r0, 0
+ beq _080B21E8
+ adds r3, r5, 0
+ adds r3, 0x3F
+ ldrb r2, [r3]
+ lsls r1, r2, 31
+ lsrs r1, 31
+ movs r6, 0x1
+ eors r1, r6
+ ands r1, r7
+ movs r0, 0x2
+ negs r0, r0
+ mov r8, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ lsls r0, 31
+ lsrs r0, 31
+ adds r1, r5, 0
+ adds r1, 0x2A
+ strb r0, [r1]
+ ldrb r0, [r3]
+ movs r1, 0x4
+ orrs r0, r1
+ movs r1, 0x11
+ negs r1, r1
+ ands r0, r1
+ strb r0, [r3]
+ ldrb r1, [r4]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080B21DA
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B21AA
+ ldrb r1, [r4, 0xE]
+ mov r0, r9
+ ands r0, r1
+ cmp r0, 0
+ bne _080B2190
+ ldrb r2, [r5, 0x5]
+ lsls r1, r2, 28
+ lsrs r1, 30
+ subs r1, 0x1
+ movs r0, 0x3
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ b _080B21C8
+_080B2190:
+ ldrb r2, [r5, 0x5]
+ lsls r1, r2, 28
+ lsrs r1, 30
+ adds r1, 0x1
+ movs r0, 0x3
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ b _080B21C8
+_080B21AA:
+ ldrb r1, [r4, 0xE]
+ mov r0, r9
+ ands r0, r1
+ cmp r0, 0
+ bne _080B21BE
+ adds r1, r5, 0
+ adds r1, 0x43
+ ldrb r0, [r1]
+ subs r0, 0xC
+ b _080B21C6
+_080B21BE:
+ adds r1, r5, 0
+ adds r1, 0x43
+ ldrb r0, [r1]
+ adds r0, 0xC
+_080B21C6:
+ strb r0, [r1]
+_080B21C8:
+ ldrb r2, [r4, 0xE]
+ lsls r0, r2, 31
+ lsrs r0, 31
+ eors r0, r6
+ ands r0, r7
+ mov r1, r8
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0xE]
+_080B21DA:
+ ldrb r1, [r4]
+ movs r0, 0x9
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4]
+ ldrh r1, [r4, 0x2]
+ mov r12, r1
+_080B21E8:
+ ldrb r0, [r4]
+ movs r1, 0xF
+ ands r1, r0
+ movs r0, 0x10
+ b _080B23EC
+_080B21F2:
+ lsls r1, r2, 24
+ lsrs r0, r1, 28
+ cmp r0, 0x3
+ bne _080B2200
+ movs r0, 0x8
+ orrs r0, r2
+ b _080B2208
+_080B2200:
+ lsrs r0, r1, 28
+ cmp r0, 0x1
+ bne _080B2210
+ adds r0, r2, 0
+_080B2208:
+ orrs r0, r7
+ strb r0, [r4]
+ strb r6, [r4, 0x1]
+ b _080B22DC
+_080B2210:
+ movs r0, 0x8
+ ands r0, r2
+ cmp r0, 0
+ beq _080B22DC
+ adds r3, r5, 0
+ adds r3, 0x3F
+ ldrb r2, [r3]
+ lsls r1, r2, 31
+ lsrs r1, 31
+ movs r6, 0x1
+ eors r1, r6
+ ands r1, r7
+ movs r0, 0x2
+ negs r0, r0
+ mov r8, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ lsls r0, 31
+ lsrs r0, 31
+ adds r1, r5, 0
+ adds r1, 0x2A
+ strb r0, [r1]
+ ldrb r0, [r3]
+ movs r1, 0x4
+ orrs r0, r1
+ movs r1, 0x11
+ negs r1, r1
+ ands r0, r1
+ strb r0, [r3]
+ ldrb r1, [r4]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080B22CE
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B229E
+ ldrb r1, [r4, 0xE]
+ mov r0, r9
+ ands r0, r1
+ cmp r0, 0
+ bne _080B2284
+ ldrb r2, [r5, 0x5]
+ lsls r1, r2, 28
+ lsrs r1, 30
+ subs r1, 0x1
+ movs r0, 0x3
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ b _080B22BC
+_080B2284:
+ ldrb r2, [r5, 0x5]
+ lsls r1, r2, 28
+ lsrs r1, 30
+ adds r1, 0x1
+ movs r0, 0x3
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ b _080B22BC
+_080B229E:
+ ldrb r1, [r4, 0xE]
+ mov r0, r9
+ ands r0, r1
+ cmp r0, 0
+ bne _080B22B2
+ adds r1, r5, 0
+ adds r1, 0x43
+ ldrb r0, [r1]
+ subs r0, 0xC
+ b _080B22BA
+_080B22B2:
+ adds r1, r5, 0
+ adds r1, 0x43
+ ldrb r0, [r1]
+ adds r0, 0xC
+_080B22BA:
+ strb r0, [r1]
+_080B22BC:
+ ldrb r2, [r4, 0xE]
+ lsls r0, r2, 31
+ lsrs r0, 31
+ eors r0, r6
+ ands r0, r7
+ mov r1, r8
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0xE]
+_080B22CE:
+ ldrb r1, [r4]
+ movs r0, 0x9
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4]
+ ldrh r1, [r4, 0x2]
+ mov r12, r1
+_080B22DC:
+ ldrb r0, [r4]
+ movs r1, 0xF
+ ands r1, r0
+ movs r0, 0x20
+ b _080B23EC
+_080B22E6:
+ lsls r1, r2, 24
+ lsrs r0, r1, 28
+ cmp r0, 0x2
+ bne _080B22F6
+ movs r0, 0x8
+ orrs r0, r2
+ strb r0, [r4]
+ b _080B23E4
+_080B22F6:
+ lsrs r0, r1, 28
+ cmp r0, 0
+ bne _080B2318
+ lsls r0, r2, 30
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r0, r1
+ ands r0, r7
+ lsls r0, 1
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ orrs r1, r7
+ strb r1, [r4]
+ strb r6, [r4, 0x1]
+ b _080B23E4
+_080B2318:
+ movs r0, 0x8
+ ands r0, r2
+ cmp r0, 0
+ beq _080B23E4
+ adds r3, r5, 0
+ adds r3, 0x3F
+ ldrb r2, [r3]
+ lsls r1, r2, 31
+ lsrs r1, 31
+ movs r6, 0x1
+ eors r1, r6
+ ands r1, r7
+ movs r0, 0x2
+ negs r0, r0
+ mov r8, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ lsls r0, 31
+ lsrs r0, 31
+ adds r1, r5, 0
+ adds r1, 0x2A
+ strb r0, [r1]
+ ldrb r0, [r3]
+ movs r1, 0x4
+ orrs r0, r1
+ movs r1, 0x11
+ negs r1, r1
+ ands r0, r1
+ strb r0, [r3]
+ ldrb r1, [r4]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080B23D6
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B23A6
+ ldrb r1, [r4, 0xE]
+ mov r0, r9
+ ands r0, r1
+ cmp r0, 0
+ bne _080B238C
+ ldrb r2, [r5, 0x5]
+ lsls r1, r2, 28
+ lsrs r1, 30
+ subs r1, 0x1
+ movs r0, 0x3
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ b _080B23C4
+_080B238C:
+ ldrb r2, [r5, 0x5]
+ lsls r1, r2, 28
+ lsrs r1, 30
+ adds r1, 0x1
+ movs r0, 0x3
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ b _080B23C4
+_080B23A6:
+ ldrb r1, [r4, 0xE]
+ mov r0, r9
+ ands r0, r1
+ cmp r0, 0
+ bne _080B23BA
+ adds r1, r5, 0
+ adds r1, 0x43
+ ldrb r0, [r1]
+ subs r0, 0xC
+ b _080B23C2
+_080B23BA:
+ adds r1, r5, 0
+ adds r1, 0x43
+ ldrb r0, [r1]
+ adds r0, 0xC
+_080B23C2:
+ strb r0, [r1]
+_080B23C4:
+ ldrb r2, [r4, 0xE]
+ lsls r0, r2, 31
+ lsrs r0, 31
+ eors r0, r6
+ ands r0, r7
+ mov r1, r8
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0xE]
+_080B23D6:
+ ldrb r1, [r4]
+ movs r0, 0x9
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4]
+ ldrh r1, [r4, 0x2]
+ mov r12, r1
+_080B23E4:
+ ldrb r0, [r4]
+ movs r1, 0xF
+ ands r1, r0
+ movs r0, 0x30
+_080B23EC:
+ orrs r1, r0
+ strb r1, [r4]
+_080B23F0:
+ ldrb r1, [r4]
+ lsls r1, 30
+ lsrs r1, 31
+ adds r0, r4, 0
+ adds r0, 0xC
+ adds r0, r1
+ ldrb r1, [r0]
+ ldr r3, _080B2478 @ =gSineTable
+ mov r2, r12
+ lsls r0, r2, 1
+ adds r0, r3
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ muls r0, r1
+ asrs r0, 8
+ strh r0, [r5, 0x24]
+ ldrb r2, [r5, 0x3]
+ lsls r2, 26
+ lsrs r2, 27
+ movs r1, 0x24
+ ldrsh r0, [r5, r1]
+ negs r0, r0
+ asrs r0, 1
+ ldrb r1, [r4, 0xA]
+ adds r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 1
+ adds r1, r3
+ ldrh r6, [r1]
+ ldr r1, _080B247C @ =gOamMatrices
+ lsls r2, 3
+ adds r2, r1
+ adds r0, 0x40
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ strh r0, [r2, 0x6]
+ strh r0, [r2]
+ strh r6, [r2, 0x2]
+ lsls r0, r6, 16
+ asrs r0, 16
+ negs r0, r0
+ strh r0, [r2, 0x4]
+ ldrh r0, [r4, 0x6]
+ ldrh r2, [r4, 0x8]
+ adds r0, r2
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080B2480
+ ldrh r0, [r4, 0x4]
+ subs r1, 0x1
+ ands r1, r0
+ ldrh r0, [r4, 0x2]
+ subs r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2]
+ b _080B2490
+ .align 2, 0
+_080B2478: .4byte gSineTable
+_080B247C: .4byte gOamMatrices
+_080B2480:
+ ldrh r0, [r4, 0x4]
+ ldr r1, _080B24B8 @ =0x00007fff
+ ands r1, r0
+ ldrh r2, [r4, 0x2]
+ adds r1, r2
+ movs r0, 0xFF
+ ands r1, r0
+ strh r1, [r4, 0x2]
+_080B2490:
+ movs r0, 0x22
+ ldrsh r1, [r5, r0]
+ movs r2, 0x26
+ ldrsh r0, [r5, r2]
+ adds r1, r0
+ ldrh r0, [r4, 0xE]
+ lsrs r0, 1
+ cmp r1, r0
+ blt _080B24AA
+ movs r0, 0
+ strh r0, [r5, 0x2E]
+ ldr r0, _080B24BC @ =sub_80B1D3C
+ str r0, [r5, 0x1C]
+_080B24AA:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B24B8: .4byte 0x00007fff
+_080B24BC: .4byte sub_80B1D3C
+ thumb_func_end sub_80B1F94
+
+ thumb_func_start sub_80B24C0
+sub_80B24C0: @ 80B24C0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r0, _080B2508 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ movs r1, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ ldr r5, _080B250C @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ ldr r0, _080B2510 @ =sub_8075DF4
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B2508: .4byte gBattleAnimTarget
+_080B250C: .4byte gBattleAnimAttacker
+_080B2510: .4byte sub_8075DF4
+ thumb_func_end sub_80B24C0
+
+ thumb_func_start sub_80B2514
+sub_80B2514: @ 80B2514
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ ldr r5, _080B2554 @ =gBattleAnimArgs
+ ldrh r0, [r5]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r5, 0x2]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x34]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B25C4
+ ldr r0, _080B2558 @ =gUnknown_2023BD6
+ ldr r1, _080B255C @ =gBattleAnimTarget
+ ldrb r2, [r1]
+ adds r0, r2, r0
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B2560
+ adds r0, r2, 0
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r5, [r5, 0x6]
+ adds r0, r5
+ b _080B256E
+ .align 2, 0
+_080B2554: .4byte gBattleAnimArgs
+_080B2558: .4byte gUnknown_2023BD6
+_080B255C: .4byte gBattleAnimTarget
+_080B2560:
+ adds r0, r2, 0
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x28
+_080B256E:
+ strh r0, [r4, 0x3C]
+ ldr r0, _080B259C @ =gBattleAnimArgs
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ beq _080B25A4
+ ldr r0, _080B25A0 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+ movs r1, 0x3
+ ands r0, r1
+ lsls r0, 2
+ ldrb r2, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0x5]
+ b _080B25D8
+ .align 2, 0
+_080B259C: .4byte gBattleAnimArgs
+_080B25A0: .4byte gBattleAnimTarget
+_080B25A4:
+ ldr r0, _080B25C0 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ movs r1, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ b _080B25D8
+ .align 2, 0
+_080B25C0: .4byte gBattleAnimTarget
+_080B25C4:
+ ldr r0, _080B267C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r5, [r5, 0x6]
+ adds r0, r5
+ strh r0, [r4, 0x3C]
+_080B25D8:
+ ldr r5, _080B2680 @ =gSineTable
+ ldrh r3, [r4, 0x30]
+ movs r1, 0xFF
+ ands r1, r3
+ lsls r0, r1, 1
+ adds r0, r5
+ ldrh r0, [r0]
+ movs r2, 0
+ strh r0, [r4, 0x36]
+ adds r1, 0x40
+ lsls r1, 1
+ adds r1, r5
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r4, 0x38]
+ strh r2, [r4, 0x3A]
+ strh r2, [r4, 0x26]
+ strh r2, [r4, 0x24]
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r6, r0, 27
+ lsls r3, 16
+ lsrs r3, 24
+ strh r3, [r4, 0x30]
+ bl Random
+ lsls r0, 16
+ asrs r7, r0, 16
+ movs r0, 0x80
+ lsls r0, 8
+ ands r0, r7
+ cmp r0, 0
+ beq _080B2622
+ ldrh r1, [r4, 0x30]
+ movs r0, 0xFF
+ subs r0, r1
+ strh r0, [r4, 0x30]
+_080B2622:
+ movs r0, 0x30
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 1
+ adds r0, r5
+ ldrh r0, [r0]
+ ldr r3, _080B2684 @ =gOamMatrices
+ lsls r2, r6, 3
+ adds r2, r3
+ adds r1, 0x40
+ lsls r1, 1
+ adds r1, r5
+ ldrh r1, [r1]
+ strh r1, [r2, 0x6]
+ strh r1, [r2]
+ strh r0, [r2, 0x2]
+ lsls r0, 16
+ asrs r0, 16
+ negs r0, r0
+ strh r0, [r2, 0x4]
+ adds r3, r4, 0
+ adds r3, 0x3F
+ ldrb r0, [r3]
+ movs r1, 0x4
+ orrs r0, r1
+ movs r1, 0x11
+ negs r1, r1
+ ands r0, r1
+ strb r0, [r3]
+ movs r0, 0x1
+ ands r0, r7
+ cmp r0, 0
+ beq _080B2672
+ adds r2, r4, 0
+ adds r2, 0x2A
+ movs r1, 0x1
+ movs r0, 0x1
+ strb r0, [r2]
+ ldrb r0, [r3]
+ orrs r0, r1
+ strb r0, [r3]
+_080B2672:
+ ldr r0, _080B2688 @ =sub_80B268C
+ str r0, [r4, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B267C: .4byte gBattleAnimTarget
+_080B2680: .4byte gSineTable
+_080B2684: .4byte gOamMatrices
+_080B2688: .4byte sub_80B268C
+ thumb_func_end sub_80B2514
+
+ thumb_func_start sub_80B268C
+sub_80B268C: @ 80B268C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x10
+ adds r4, r0, 0
+ adds r5, r4, 0
+ adds r5, 0x2E
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ movs r1, 0
+ mov r8, r1
+ movs r7, 0
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ ble _080B2770
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ muls r0, r1
+ asrs r6, r0, 8
+ strh r6, [r4, 0x24]
+ movs r0, 0x38
+ ldrsh r1, [r4, r0]
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ muls r0, r1
+ asrs r3, r0, 8
+ strh r3, [r4, 0x26]
+ ldrh r2, [r4, 0x34]
+ movs r1, 0xFF
+ adds r0, r1, 0
+ ands r0, r2
+ ldrh r2, [r4, 0x3A]
+ adds r0, r2
+ strh r0, [r4, 0x3A]
+ ldrh r2, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ ands r1, r2
+ cmp r0, r1
+ blt _080B2770
+ ldrh r0, [r4, 0x20]
+ adds r0, r6
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x22]
+ adds r0, r3
+ strh r0, [r4, 0x22]
+ strh r7, [r4, 0x24]
+ strh r7, [r4, 0x26]
+ mov r0, sp
+ adds r1, r5, 0
+ movs r2, 0x10
+ bl memcpy
+ adds r0, r5, 0
+ movs r1, 0
+ movs r2, 0x10
+ bl memset
+ ldrh r0, [r4, 0x22]
+ lsls r0, 8
+ strh r0, [r5, 0x8]
+ mov r0, sp
+ ldrh r0, [r0, 0x6]
+ lsrs r1, r0, 8
+ strh r1, [r5, 0x6]
+ strh r7, [r5, 0x2]
+ mov r0, sp
+ ldrh r0, [r0, 0x2]
+ strh r0, [r5, 0xA]
+ adds r0, r4, 0
+ adds r0, 0x2A
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080B2740
+ movs r0, 0x8
+ ands r1, r0
+ cmp r1, 0
+ beq _080B2738
+ ldr r0, _080B2734 @ =0x00008001
+ b _080B274E
+ .align 2, 0
+_080B2734: .4byte 0x00008001
+_080B2738:
+ ldr r0, _080B273C @ =0x00008002
+ b _080B274E
+ .align 2, 0
+_080B273C: .4byte 0x00008002
+_080B2740:
+ movs r0, 0x8
+ ands r1, r0
+ cmp r1, 0
+ beq _080B274C
+ movs r0, 0x1
+ b _080B274E
+_080B274C:
+ movs r0, 0x2
+_080B274E:
+ strh r0, [r5, 0x4]
+ mov r0, sp
+ ldrh r0, [r0, 0x4]
+ lsrs r0, 8
+ strb r0, [r5, 0xC]
+ subs r0, 0x2
+ strb r0, [r5, 0xD]
+ mov r0, sp
+ ldrh r1, [r0, 0xE]
+ lsls r1, 1
+ ldrh r2, [r5, 0xE]
+ movs r0, 0x1
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0xE]
+ ldr r0, _080B277C @ =sub_80B1F94
+ str r0, [r4, 0x1C]
+_080B2770:
+ add sp, 0x10
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B277C: .4byte sub_80B1F94
+ thumb_func_end sub_80B268C
+
+ thumb_func_start sub_80B2780
+sub_80B2780: @ 80B2780
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080B2798 @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B279C
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075160
+ b _080B27A4
+ .align 2, 0
+_080B2798: .4byte gBattleAnimArgs
+_080B279C:
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075114
+_080B27A4:
+ ldr r4, _080B280C @ =gBattleAnimArgs
+ movs r2, 0x4
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080B27BC
+ ldr r0, _080B2810 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B27D2
+_080B27BC:
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ bne _080B27D8
+ ldr r0, _080B2814 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B27D8
+_080B27D2:
+ ldrh r0, [r5, 0x20]
+ adds r0, 0x8
+ strh r0, [r5, 0x20]
+_080B27D8:
+ ldr r4, _080B280C @ =gBattleAnimArgs
+ ldrb r1, [r4, 0x8]
+ adds r0, r5, 0
+ bl SeekSpriteAnim
+ ldrh r0, [r5, 0x20]
+ subs r0, 0x20
+ strh r0, [r5, 0x20]
+ ldr r0, _080B2818 @ =0x00000ccc
+ strh r0, [r5, 0x30]
+ ldrh r1, [r4, 0x8]
+ movs r0, 0xC
+ adds r2, r0, 0
+ muls r2, r1
+ adds r0, r2, 0
+ ldrh r2, [r5, 0x24]
+ adds r0, r2
+ strh r0, [r5, 0x24]
+ strh r1, [r5, 0x2E]
+ ldrh r0, [r4, 0x6]
+ strh r0, [r5, 0x3C]
+ ldr r0, _080B281C @ =sub_80B2820
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B280C: .4byte gBattleAnimArgs
+_080B2810: .4byte gBattleAnimAttacker
+_080B2814: .4byte gBattleAnimTarget
+_080B2818: .4byte 0x00000ccc
+_080B281C: .4byte sub_80B2820
+ thumb_func_end sub_80B2780
+
+ thumb_func_start sub_80B2820
+sub_80B2820: @ 80B2820
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _080B284A
+ strh r1, [r4, 0x2E]
+ strh r1, [r4, 0x24]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_080B284A:
+ ldrh r0, [r4, 0x3C]
+ subs r0, 0x1
+ strh r0, [r4, 0x3C]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080B2862
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B2862:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B2820
+
+ thumb_func_start sub_80B2868
+sub_80B2868: @ 80B2868
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ ldr r1, _080B2900 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r7, r0, r1
+ ldrh r0, [r7, 0x8]
+ movs r1, 0x1F
+ ands r0, r1
+ cmp r0, 0
+ bne _080B28E2
+ ldr r1, _080B2904 @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ movs r1, 0x8
+ ldrsh r0, [r7, r1]
+ movs r5, 0xD
+ negs r5, r5
+ adds r1, r5, 0
+ bl Sin
+ ldr r4, _080B2908 @ =gBattleAnimArgs
+ strh r0, [r4]
+ movs r1, 0x8
+ ldrsh r0, [r7, r1]
+ adds r1, r5, 0
+ bl Cos
+ strh r0, [r4, 0x2]
+ movs r0, 0x1
+ strh r0, [r4, 0x4]
+ movs r0, 0x3
+ strh r0, [r4, 0x6]
+ ldr r0, _080B290C @ =gUnknown_83E7C98
+ mov r8, r0
+ ldr r5, _080B2910 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ mov r0, r8
+ adds r1, r4, 0
+ movs r3, 0x3
+ bl CreateSpriteAndAnimate
+_080B28E2:
+ ldrh r0, [r7, 0x8]
+ adds r0, 0x8
+ strh r0, [r7, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ ble _080B28F6
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080B28F6:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B2900: .4byte gTasks
+_080B2904: .4byte gUnknown_2037EE2
+_080B2908: .4byte gBattleAnimArgs
+_080B290C: .4byte gUnknown_83E7C98
+_080B2910: .4byte gBattleAnimTarget
+ thumb_func_end sub_80B2868
+
+ thumb_func_start sub_80B2914
+sub_80B2914: @ 80B2914
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080B2926
+ cmp r0, 0x1
+ beq _080B2958
+ b _080B296C
+_080B2926:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075160
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ ldr r2, _080B2954 @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080B296C
+ .align 2, 0
+_080B2954: .4byte gSprites
+_080B2958:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080B296C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B296C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B2914
+
+ thumb_func_start sub_80B2974
+sub_80B2974: @ 80B2974
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080B29AC
+ cmp r0, 0x1
+ bgt _080B298A
+ cmp r0, 0
+ beq _080B2990
+ b _080B29FE
+_080B298A:
+ cmp r0, 0x2
+ beq _080B29C0
+ b _080B29FE
+_080B2990:
+ ldr r0, _080B29A8 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ negs r0, r0
+ subs r0, 0x20
+ strh r0, [r4, 0x26]
+ b _080B29B8
+ .align 2, 0
+_080B29A8: .4byte gBattleAnimTarget
+_080B29AC:
+ ldrh r0, [r4, 0x26]
+ adds r0, 0xA
+ strh r0, [r4, 0x26]
+ lsls r0, 16
+ cmp r0, 0
+ blt _080B29FE
+_080B29B8:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080B29FE
+_080B29C0:
+ ldrh r0, [r4, 0x26]
+ subs r0, 0xA
+ strh r0, [r4, 0x26]
+ movs r2, 0x22
+ ldrsh r0, [r4, r2]
+ movs r2, 0x26
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ movs r1, 0x20
+ negs r1, r1
+ cmp r0, r1
+ bge _080B29FE
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ ldr r2, _080B2A04 @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B29FE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B2A04: .4byte gSprites
+ thumb_func_end sub_80B2974
+
+ thumb_func_start sub_80B2A08
+sub_80B2A08: @ 80B2A08
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r1, _080B2A44 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x30]
+ ldr r0, _080B2A48 @ =sub_80B2A50
+ str r0, [r4, 0x1C]
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ ldr r2, _080B2A4C @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B2A44: .4byte gBattleAnimArgs
+_080B2A48: .4byte sub_80B2A50
+_080B2A4C: .4byte gSprites
+ thumb_func_end sub_80B2A08
+
+ thumb_func_start sub_80B2A50
+sub_80B2A50: @ 80B2A50
+ push {lr}
+ adds r2, r0, 0
+ ldrh r1, [r2, 0x2E]
+ movs r3, 0x2E
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ ble _080B2A64
+ subs r0, r1, 0x1
+ strh r0, [r2, 0x2E]
+ b _080B2AA8
+_080B2A64:
+ movs r1, 0x22
+ ldrsh r0, [r2, r1]
+ movs r3, 0x26
+ ldrsh r1, [r2, r3]
+ adds r0, r1
+ movs r1, 0x20
+ negs r1, r1
+ cmp r0, r1
+ ble _080B2A8A
+ ldrh r0, [r2, 0x30]
+ ldrh r1, [r2, 0x32]
+ adds r0, r1
+ strh r0, [r2, 0x32]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r2, 0x26]
+ subs r1, r0
+ strh r1, [r2, 0x26]
+ b _080B2AA8
+_080B2A8A:
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r3]
+ ldrh r0, [r2, 0x34]
+ adds r1, r0, 0x1
+ strh r1, [r2, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ ble _080B2AA8
+ ldr r0, _080B2AAC @ =sub_80B2AB0
+ str r0, [r2, 0x1C]
+_080B2AA8:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B2AAC: .4byte sub_80B2AB0
+ thumb_func_end sub_80B2A50
+
+ thumb_func_start sub_80B2AB0
+sub_80B2AB0: @ 80B2AB0
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x32]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r2, 0x26]
+ adds r0, r1
+ strh r0, [r2, 0x26]
+ movs r3, 0x22
+ ldrsh r0, [r2, r3]
+ movs r3, 0x26
+ ldrsh r1, [r2, r3]
+ adds r0, r1
+ movs r1, 0x20
+ negs r1, r1
+ cmp r0, r1
+ ble _080B2AE0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r1, [r3]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r3]
+_080B2AE0:
+ movs r1, 0x26
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ ble _080B2AEE
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080B2AEE:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B2AB0
+
+ thumb_func_start sub_80B2AF4
+sub_80B2AF4: @ 80B2AF4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _080B2B08
+ cmp r0, 0x1
+ beq _080B2B60
+ b _080B2BCC
+_080B2B08:
+ ldr r0, _080B2B18 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ cmp r0, 0
+ bne _080B2B20
+ ldr r4, _080B2B1C @ =gBattleAnimAttacker
+ b _080B2B22
+ .align 2, 0
+_080B2B18: .4byte gBattleAnimArgs
+_080B2B1C: .4byte gBattleAnimAttacker
+_080B2B20:
+ ldr r4, _080B2B5C @ =gBattleAnimTarget
+_080B2B22:
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ movs r0, 0
+ movs r3, 0x80
+ lsls r3, 2
+ strh r3, [r5, 0x30]
+ movs r2, 0x80
+ lsls r2, 1
+ str r0, [sp]
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075A1C
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _080B2BCC
+ .align 2, 0
+_080B2B5C: .4byte gBattleAnimTarget
+_080B2B60:
+ movs r1, 0x32
+ ldrsh r0, [r5, r1]
+ cmp r0, 0xB
+ bgt _080B2B6E
+ ldrh r0, [r5, 0x30]
+ subs r0, 0x28
+ b _080B2B72
+_080B2B6E:
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x28
+_080B2B72:
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r5, 0x32]
+ movs r2, 0x80
+ lsls r2, 1
+ movs r0, 0x30
+ ldrsh r3, [r5, r0]
+ str r1, [sp]
+ adds r0, r5, 0
+ bl sub_8075A1C
+ ldrb r1, [r5, 0x3]
+ lsls r1, 26
+ lsrs r1, 27
+ movs r0, 0xF4
+ lsls r0, 6
+ ldr r2, _080B2BD4 @ =gOamMatrices
+ lsls r1, 3
+ adds r1, r2
+ movs r2, 0x6
+ ldrsh r1, [r1, r2]
+ bl __divsi3
+ adds r1, r0, 0x1
+ cmp r1, 0x80
+ ble _080B2BAC
+ movs r1, 0x80
+_080B2BAC:
+ movs r0, 0x40
+ subs r0, r1
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r1, r0, 1
+ strh r1, [r5, 0x26]
+ movs r1, 0x32
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x18
+ bne _080B2BCC
+ adds r0, r5, 0
+ bl sub_8075AD8
+ adds r0, r5, 0
+ bl DestroyAnimSprite
+_080B2BCC:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B2BD4: .4byte gOamMatrices
+ thumb_func_end sub_80B2AF4
+
+ thumb_func_start sub_80B2BD8
+sub_80B2BD8: @ 80B2BD8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl Random
+ ldr r4, _080B2BFC @ =0x000001ff
+ ands r4, r0
+ bl Random
+ movs r1, 0x7F
+ ands r1, r0
+ movs r0, 0x1
+ ands r0, r4
+ cmp r0, 0
+ beq _080B2C00
+ movs r2, 0xB8
+ lsls r2, 2
+ adds r0, r4, r2
+ b _080B2C08
+ .align 2, 0
+_080B2BFC: .4byte 0x000001ff
+_080B2C00:
+ movs r2, 0xB8
+ lsls r2, 2
+ adds r0, r2, 0
+ subs r0, r4
+_080B2C08:
+ strh r0, [r5, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B2C1C
+ movs r2, 0xE0
+ lsls r2, 2
+ adds r0, r2, 0
+ adds r0, r1, r0
+ b _080B2C24
+_080B2C1C:
+ movs r2, 0xE0
+ lsls r2, 2
+ adds r0, r2, 0
+ subs r0, r1
+_080B2C24:
+ strh r0, [r5, 0x30]
+ ldr r2, _080B2C4C @ =gBattleAnimArgs
+ ldrh r0, [r2]
+ strh r0, [r5, 0x32]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080B2C40
+ ldrb r0, [r5, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x10
+ orrs r1, r0
+ strb r1, [r5, 0x3]
+_080B2C40:
+ movs r1, 0x2
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bne _080B2C54
+ ldr r4, _080B2C50 @ =gBattleAnimAttacker
+ b _080B2C56
+ .align 2, 0
+_080B2C4C: .4byte gBattleAnimArgs
+_080B2C50: .4byte gBattleAnimAttacker
+_080B2C54:
+ ldr r4, _080B2C80 @ =gBattleAnimTarget
+_080B2C56:
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x20
+ strh r0, [r5, 0x22]
+ ldr r0, _080B2C84 @ =sub_80B2C88
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B2C80: .4byte gBattleAnimTarget
+_080B2C84: .4byte sub_80B2C88
+ thumb_func_end sub_80B2BD8
+
+ thumb_func_start sub_80B2C88
+sub_80B2C88: @ 80B2C88
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B2CA0
+ ldrh r3, [r4, 0x2E]
+ lsls r0, r3, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ b _080B2CAA
+_080B2CA0:
+ ldrh r3, [r4, 0x2E]
+ lsls r1, r3, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x24]
+ subs r0, r1
+_080B2CAA:
+ strh r0, [r4, 0x24]
+ ldrh r2, [r4, 0x30]
+ lsls r1, r2, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x26]
+ subs r0, r1
+ strh r0, [r4, 0x26]
+ strh r3, [r4, 0x2E]
+ adds r0, r2, 0
+ subs r0, 0x20
+ strh r0, [r4, 0x30]
+ lsls r0, r3, 16
+ cmp r0, 0
+ bge _080B2CCA
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+_080B2CCA:
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080B2CDE
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B2CDE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B2C88
+
+ thumb_func_start sub_80B2CE4
+sub_80B2CE4: @ 80B2CE4
+ movs r1, 0
+ strh r1, [r0, 0x3A]
+ movs r1, 0x40
+ strh r1, [r0, 0x3C]
+ ldr r1, _080B2CF4 @ =sub_80B2CF8
+ str r1, [r0, 0x1C]
+ bx lr
+ .align 2, 0
+_080B2CF4: .4byte sub_80B2CF8
+ thumb_func_end sub_80B2CE4
+
+ thumb_func_start sub_80B2CF8
+sub_80B2CF8: @ 80B2CF8
+ push {lr}
+ adds r3, r0, 0
+ movs r0, 0x2E
+ ldrsh r1, [r3, r0]
+ cmp r1, 0
+ beq _080B2D0A
+ cmp r1, 0x1
+ beq _080B2D58
+ b _080B2D5E
+_080B2D0A:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _080B2D5E
+ strh r1, [r3, 0x30]
+ movs r1, 0x3E
+ adds r1, r3
+ mov r12, r1
+ ldrb r2, [r1]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldrh r0, [r3, 0x32]
+ adds r0, 0x1
+ strh r0, [r3, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ ble _080B2D5E
+ ldrb r1, [r1]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080B2D5E
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ b _080B2D5E
+_080B2D58:
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080B2D5E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B2CF8
+
+ thumb_func_start sub_80B2D64
+sub_80B2D64: @ 80B2D64
+ push {r4-r6,lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5,r6}
+ sub sp, 0x4
+ mov r8, r0
+ ldrh r4, [r0, 0x20]
+ ldrh r5, [r0, 0x22]
+ ldr r6, _080B2E18 @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ mov r1, r8
+ strh r0, [r1, 0x20]
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8074480
+ adds r6, r0, 0
+ lsls r6, 24
+ lsrs r6, 24
+ mov r2, r8
+ strh r6, [r2, 0x22]
+ ldrh r0, [r2, 0x20]
+ mov r9, r0
+ mov r1, r9
+ lsls r0, r1, 4
+ strh r0, [r2, 0x36]
+ lsls r0, r6, 4
+ strh r0, [r2, 0x38]
+ lsls r4, 16
+ asrs r4, 16
+ movs r1, 0x20
+ ldrsh r0, [r2, r1]
+ subs r0, r4, r0
+ lsls r0, 4
+ movs r1, 0xC
+ bl __divsi3
+ mov r2, r8
+ strh r0, [r2, 0x3A]
+ lsls r5, 16
+ asrs r5, 16
+ movs r1, 0x22
+ ldrsh r0, [r2, r1]
+ subs r0, r5, r0
+ lsls r0, 4
+ movs r1, 0xC
+ bl __divsi3
+ mov r2, r8
+ strh r0, [r2, 0x3C]
+ mov r0, r9
+ subs r4, r0
+ lsls r4, 16
+ asrs r4, 16
+ subs r5, r6
+ lsls r5, 16
+ asrs r5, 16
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8075B30
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 16
+ movs r3, 0x80
+ lsls r3, 1
+ str r0, [sp]
+ mov r0, r8
+ movs r1, 0x1
+ adds r2, r3, 0
+ bl sub_8075A1C
+ ldr r0, _080B2E1C @ =sub_80B2E20
+ mov r2, r8
+ str r0, [r2, 0x1C]
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B2E18: .4byte gBattleAnimAttacker
+_080B2E1C: .4byte sub_80B2E20
+ thumb_func_end sub_80B2D64
+
+ thumb_func_start sub_80B2E20
+sub_80B2E20: @ 80B2E20
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x3A]
+ ldrh r1, [r2, 0x36]
+ adds r0, r1
+ strh r0, [r2, 0x36]
+ ldrh r1, [r2, 0x3C]
+ ldrh r3, [r2, 0x38]
+ adds r1, r3
+ strh r1, [r2, 0x38]
+ lsls r0, 16
+ asrs r0, 20
+ strh r0, [r2, 0x20]
+ lsls r1, 16
+ asrs r3, r1, 20
+ strh r3, [r2, 0x22]
+ adds r0, 0x2D
+ lsls r0, 16
+ movs r1, 0xA5
+ lsls r1, 17
+ cmp r0, r1
+ bhi _080B2E5A
+ adds r1, r3, 0
+ cmp r1, 0x9D
+ bgt _080B2E5A
+ movs r0, 0x2D
+ negs r0, r0
+ cmp r1, r0
+ bge _080B2E60
+_080B2E5A:
+ adds r0, r2, 0
+ bl move_anim_8074EE0
+_080B2E60:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B2E20
+
+ thumb_func_start sub_80B2E64
+sub_80B2E64: @ 80B2E64
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080B2E94 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B2E9C
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080B2E98 @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ b _080B2EBA
+ .align 2, 0
+_080B2E94: .4byte gBattleAnimArgs
+_080B2E98: .4byte gSprites
+_080B2E9C:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080B2EC8 @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+_080B2EBA:
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B2EC8: .4byte gSprites
+ thumb_func_end sub_80B2E64
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/ghost.s b/asm/ghost.s
new file mode 100644
index 000000000..2d550e6f7
--- /dev/null
+++ b/asm/ghost.s
@@ -0,0 +1,4054 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80B5268
+sub_80B5268: @ 80B5268
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080B52C4 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldr r5, _080B52C8 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl sub_8075678
+ ldr r0, _080B52CC @ =sub_80B52D0
+ str r0, [r4, 0x1C]
+ movs r0, 0x10
+ strh r0, [r4, 0x3A]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldrh r1, [r4, 0x3A]
+ movs r0, 0x52
+ bl SetGpuReg
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B52C4: .4byte gBattleAnimArgs
+_080B52C8: .4byte gBattleAnimTarget
+_080B52CC: .4byte sub_80B52D0
+ thumb_func_end sub_80B5268
+
+ thumb_func_start sub_80B52D0
+sub_80B52D0: @ 80B52D0
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80B53C0
+ adds r0, r4, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B52F0
+ ldr r0, _080B52EC @ =sub_80B5344
+ str r0, [r4, 0x1C]
+ b _080B533A
+ .align 2, 0
+_080B52EC: .4byte sub_80B5344
+_080B52F0:
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0xA
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0xF
+ bl Cos
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x38]
+ adds r0, r2, 0x5
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x38]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0
+ beq _080B5328
+ cmp r2, 0xC4
+ ble _080B533A
+_080B5328:
+ lsls r0, 16
+ cmp r0, 0
+ ble _080B533A
+ ldr r0, _080B5340 @ =gUnknown_2037F24
+ movs r1, 0
+ ldrsb r1, [r0, r1]
+ movs r0, 0xBD
+ bl PlaySE12WithPanning
+_080B533A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B5340: .4byte gUnknown_2037F24
+ thumb_func_end sub_80B52D0
+
+ thumb_func_start sub_80B5344
+sub_80B5344: @ 80B5344
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x1
+ strh r0, [r4, 0x2E]
+ adds r0, r4, 0
+ bl sub_80755E0
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0xA
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0xF
+ bl Cos
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x38]
+ adds r0, r2, 0x5
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x38]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0
+ beq _080B538A
+ cmp r2, 0xC4
+ ble _080B5396
+_080B538A:
+ lsls r0, 16
+ cmp r0, 0
+ ble _080B5396
+ movs r0, 0xBD
+ bl PlaySE
+_080B5396:
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B53B4
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080B53B0 @ =sub_8074F88
+ str r0, [r4, 0x1C]
+ b _080B53BA
+ .align 2, 0
+_080B53B0: .4byte sub_8074F88
+_080B53B4:
+ adds r0, r4, 0
+ bl sub_80B53C0
+_080B53BA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B5344
+
+ thumb_func_start sub_80B53C0
+sub_80B53C0: @ 80B53C0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r2, [r4, 0x3A]
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xFF
+ ble _080B53E4
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x3A]
+ lsls r0, 16
+ ldr r1, _080B53E0 @ =0x010d0000
+ cmp r0, r1
+ bne _080B544A
+ movs r0, 0
+ b _080B5448
+ .align 2, 0
+_080B53E0: .4byte 0x010d0000
+_080B53E4:
+ ldrh r1, [r4, 0x3C]
+ adds r3, r1, 0x1
+ strh r3, [r4, 0x3C]
+ movs r0, 0xFF
+ ands r0, r1
+ cmp r0, 0
+ bne _080B544A
+ ldr r1, _080B5408 @ =0xffffff00
+ ands r1, r3
+ strh r1, [r4, 0x3C]
+ movs r0, 0x80
+ lsls r0, 1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B540C
+ adds r0, r2, 0x1
+ b _080B540E
+ .align 2, 0
+_080B5408: .4byte 0xffffff00
+_080B540C:
+ subs r0, r2, 0x1
+_080B540E:
+ strh r0, [r4, 0x3A]
+ ldrh r0, [r4, 0x3A]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080B5430
+ cmp r0, 0x10
+ bne _080B543C
+_080B5430:
+ ldrh r0, [r4, 0x3C]
+ movs r2, 0x80
+ lsls r2, 1
+ adds r1, r2, 0
+ eors r0, r1
+ strh r0, [r4, 0x3C]
+_080B543C:
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B544A
+ movs r0, 0x80
+ lsls r0, 1
+_080B5448:
+ strh r0, [r4, 0x3A]
+_080B544A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B53C0
+
+ thumb_func_start sub_80B5450
+sub_80B5450: @ 80B5450
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075114
+ ldr r1, _080B546C @ =sub_80B5470
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B546C: .4byte sub_80B5470
+ thumb_func_end sub_80B5450
+
+ thumb_func_start sub_80B5470
+sub_80B5470: @ 80B5470
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x20
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x8
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x41
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x82
+ bhi _080B54A4
+ ldrb r0, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x8
+ b _080B54AE
+_080B54A4:
+ ldrb r0, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x4
+_080B54AE:
+ orrs r1, r0
+ strb r1, [r4, 0x5]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x13
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x50
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x1
+ strh r0, [r4, 0x3C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3D
+ bne _080B54E0
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B54E0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B5470
+
+ thumb_func_start sub_80B54E8
+sub_80B54E8: @ 80B54E8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_80758E0
+ adds r0, r4, 0
+ movs r1, 0x80
+ movs r2, 0x80
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldr r1, _080B5560 @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ ldr r1, _080B5564 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0
+ movs r1, 0x80
+ strh r1, [r0, 0x8]
+ ldr r1, _080B5568 @ =gBattleAnimArgs
+ ldrh r1, [r1]
+ strh r1, [r0, 0xA]
+ strh r2, [r0, 0xC]
+ movs r1, 0x10
+ strh r1, [r0, 0xE]
+ ldr r1, _080B556C @ =sub_80B5570
+ str r1, [r0]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B5560: .4byte gSprites
+_080B5564: .4byte gTasks
+_080B5568: .4byte gBattleAnimArgs
+_080B556C: .4byte sub_80B5570
+ thumb_func_end sub_80B54E8
+
+ thumb_func_start sub_80B5570
+sub_80B5570: @ 80B5570
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080B55C0 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r4, r1, r2
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080B55B8
+ movs r0, 0
+ strh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0xC]
+ adds r1, 0x1
+ strh r1, [r4, 0xC]
+ ldrh r0, [r4, 0xE]
+ subs r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x9
+ bne _080B55B8
+ ldr r0, _080B55C4 @ =sub_80B55C8
+ str r0, [r4]
+_080B55B8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B55C0: .4byte gTasks
+_080B55C4: .4byte sub_80B55C8
+ thumb_func_end sub_80B5570
+
+ thumb_func_start sub_80B55C8
+sub_80B55C8: @ 80B55C8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080B55EC @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r1, [r4, 0xA]
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080B55F0
+ subs r0, r1, 0x1
+ strh r0, [r4, 0xA]
+ b _080B5634
+ .align 2, 0
+_080B55EC: .4byte gTasks
+_080B55F0:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x8
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ bgt _080B5618
+ movs r0, 0x8
+ ldrsh r2, [r4, r0]
+ adds r0, r1, 0
+ adds r1, r2, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ b _080B5634
+_080B5618:
+ adds r0, r1, 0
+ bl sub_8075980
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+_080B5634:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B55C8
+
+ thumb_func_start sub_80B563C
+sub_80B563C: @ 80B563C
+ push {r4-r6,lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5,r6}
+ sub sp, 0x4
+ adds r4, r0, 0
+ ldrh r5, [r4, 0x20]
+ ldrh r6, [r4, 0x22]
+ ldr r0, _080B56D8 @ =gBattleAnimAttacker
+ mov r8, r0
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ mov r9, r1
+ strh r0, [r4, 0x20]
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ mov r1, r9
+ strh r1, [r4, 0x2E]
+ ldr r2, _080B56DC @ =gBattleAnimArgs
+ ldrh r1, [r2]
+ strh r1, [r4, 0x30]
+ ldrh r1, [r2, 0x2]
+ strh r1, [r4, 0x32]
+ ldrh r1, [r2, 0x4]
+ strh r1, [r4, 0x34]
+ ldrh r1, [r4, 0x20]
+ lsls r1, 4
+ strh r1, [r4, 0x36]
+ lsls r0, 4
+ strh r0, [r4, 0x38]
+ lsls r5, 16
+ asrs r5, 16
+ movs r1, 0x20
+ ldrsh r0, [r4, r1]
+ subs r5, r0
+ lsls r5, 4
+ movs r0, 0
+ ldrsh r1, [r2, r0]
+ lsls r1, 1
+ adds r0, r5, 0
+ str r2, [sp]
+ bl __divsi3
+ strh r0, [r4, 0x3A]
+ lsls r6, 16
+ asrs r6, 16
+ movs r1, 0x22
+ ldrsh r0, [r4, r1]
+ subs r6, r0
+ lsls r6, 4
+ ldr r2, [sp]
+ movs r0, 0
+ ldrsh r1, [r2, r0]
+ lsls r1, 1
+ adds r0, r6, 0
+ bl __divsi3
+ strh r0, [r4, 0x3C]
+ ldr r0, _080B56E0 @ =sub_80B56E4
+ str r0, [r4, 0x1C]
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B56D8: .4byte gBattleAnimAttacker
+_080B56DC: .4byte gBattleAnimArgs
+_080B56E0: .4byte sub_80B56E4
+ thumb_func_end sub_80B563C
+
+ thumb_func_start sub_80B56E4
+sub_80B56E4: @ 80B56E4
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080B572E
+ cmp r0, 0x1
+ bgt _080B56FA
+ cmp r0, 0
+ beq _080B5704
+ b _080B57F2
+_080B56FA:
+ cmp r0, 0x2
+ beq _080B5798
+ cmp r0, 0x3
+ beq _080B57EC
+ b _080B57F2
+_080B5704:
+ ldrh r0, [r5, 0x3A]
+ ldrh r2, [r5, 0x36]
+ adds r0, r2
+ strh r0, [r5, 0x36]
+ ldrh r1, [r5, 0x3C]
+ ldrh r2, [r5, 0x38]
+ adds r1, r2
+ strh r1, [r5, 0x38]
+ lsls r0, 16
+ asrs r0, 20
+ strh r0, [r5, 0x20]
+ lsls r1, 16
+ asrs r1, 20
+ strh r1, [r5, 0x22]
+ ldrh r0, [r5, 0x30]
+ subs r0, 0x1
+ strh r0, [r5, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080B57F2
+ b _080B57DE
+_080B572E:
+ ldrh r0, [r5, 0x32]
+ subs r0, 0x1
+ strh r0, [r5, 0x32]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080B57F2
+ ldr r4, _080B5794 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x30]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x20]
+ lsls r0, 4
+ strh r0, [r5, 0x36]
+ ldrh r0, [r5, 0x22]
+ lsls r0, 4
+ strh r0, [r5, 0x38]
+ movs r1, 0x30
+ ldrsh r0, [r5, r1]
+ movs r2, 0x20
+ ldrsh r1, [r5, r2]
+ subs r0, r1
+ lsls r0, 4
+ movs r2, 0x34
+ ldrsh r1, [r5, r2]
+ bl __divsi3
+ strh r0, [r5, 0x3A]
+ movs r1, 0x32
+ ldrsh r0, [r5, r1]
+ movs r2, 0x22
+ ldrsh r1, [r5, r2]
+ subs r0, r1
+ lsls r0, 4
+ movs r2, 0x34
+ ldrsh r1, [r5, r2]
+ bl __divsi3
+ strh r0, [r5, 0x3C]
+ b _080B57DE
+ .align 2, 0
+_080B5794: .4byte gBattleAnimTarget
+_080B5798:
+ ldrh r0, [r5, 0x3A]
+ ldrh r1, [r5, 0x36]
+ adds r0, r1
+ strh r0, [r5, 0x36]
+ ldrh r1, [r5, 0x3C]
+ ldrh r2, [r5, 0x38]
+ adds r1, r2
+ strh r1, [r5, 0x38]
+ lsls r0, 16
+ asrs r0, 20
+ strh r0, [r5, 0x20]
+ lsls r1, 16
+ asrs r1, 20
+ strh r1, [r5, 0x22]
+ ldrh r0, [r5, 0x34]
+ subs r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080B57F2
+ ldr r4, _080B57E8 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+_080B57DE:
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _080B57F2
+ .align 2, 0
+_080B57E8: .4byte gBattleAnimTarget
+_080B57EC:
+ adds r0, r5, 0
+ bl move_anim_8074EE0
+_080B57F2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B56E4
+
+ thumb_func_start sub_80B57F8
+sub_80B57F8: @ 80B57F8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075114
+ ldr r0, _080B580C @ =sub_80B5810
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B580C: .4byte sub_80B5810
+ thumb_func_end sub_80B57F8
+
+ thumb_func_start sub_80B5810
+sub_80B5810: @ 80B5810
+ push {r4-r6,lr}
+ adds r3, r0, 0
+ movs r5, 0
+ movs r6, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080B58A6
+ adds r1, r3, 0
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ movs r0, 0x4
+ ands r0, r2
+ adds r4, r1, 0
+ cmp r0, 0
+ bne _080B583A
+ movs r0, 0x4
+ orrs r0, r2
+ strb r0, [r4]
+_080B583A:
+ movs r1, 0x2E
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ beq _080B584A
+ cmp r0, 0x1
+ beq _080B5854
+ movs r6, 0x1
+ b _080B585E
+_080B584A:
+ movs r1, 0x30
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x2
+ bne _080B585E
+ b _080B5862
+_080B5854:
+ movs r1, 0x30
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x4
+ bne _080B585E
+ movs r5, 0x1
+_080B585E:
+ cmp r5, 0
+ beq _080B5894
+_080B5862:
+ ldrb r2, [r4]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4]
+ ldrh r0, [r3, 0x32]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r3, 0x32]
+ strh r1, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ bne _080B58A6
+ strh r1, [r3, 0x32]
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ b _080B58A6
+_080B5894:
+ cmp r6, 0
+ beq _080B58A0
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+ b _080B58A6
+_080B58A0:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+_080B58A6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B5810
+
+ thumb_func_start sub_80B58AC
+sub_80B58AC: @ 80B58AC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080B58D8 @ =gTasks
+ adds r5, r0, r1
+ movs r0, 0x1
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ movs r6, 0
+ movs r1, 0
+ strh r0, [r5, 0x8]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080B58DC
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _080B59B8
+ .align 2, 0
+_080B58D8: .4byte gTasks
+_080B58DC:
+ strh r1, [r5, 0xA]
+ movs r0, 0xF
+ strh r0, [r5, 0xC]
+ movs r0, 0x2
+ strh r0, [r5, 0xE]
+ strh r1, [r5, 0x10]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldrh r1, [r5, 0xE]
+ lsls r1, 8
+ ldrh r0, [r5, 0xC]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r4, _080B5944 @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r1, 0x50
+ strh r1, [r0, 0x2E]
+ ldr r0, _080B5948 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B5950
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldr r1, _080B594C @ =0x0000ff70
+ strh r1, [r0, 0x30]
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r1, 0x70
+ b _080B596E
+ .align 2, 0
+_080B5944: .4byte gSprites
+_080B5948: .4byte gBattleAnimTarget
+_080B594C: .4byte 0x0000ff70
+_080B5950:
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r1, 0x90
+ strh r1, [r0, 0x30]
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldr r1, _080B59C0 @ =0x0000ff90
+_080B596E:
+ strh r1, [r0, 0x32]
+ ldr r4, _080B59C4 @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r2, 0
+ strh r2, [r0, 0x34]
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ strh r2, [r0, 0x36]
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldr r1, _080B59C8 @ =SpriteCallbackDummy
+ bl StoreSpriteCallbackInData6
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r4, 0x1C
+ adds r0, r4
+ ldr r1, _080B59CC @ =sub_8074D00
+ str r1, [r0]
+ ldr r0, _080B59D0 @ =sub_80B59D4
+ str r0, [r5]
+_080B59B8:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B59C0: .4byte 0x0000ff90
+_080B59C4: .4byte gSprites
+_080B59C8: .4byte SpriteCallbackDummy
+_080B59CC: .4byte sub_8074D00
+_080B59D0: .4byte sub_80B59D4
+ thumb_func_end sub_80B58AC
+
+ thumb_func_start sub_80B59D4
+sub_80B59D4: @ 80B59D4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080B59F8 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080B5A78
+ cmp r0, 0x1
+ bgt _080B59FC
+ cmp r0, 0
+ beq _080B5A02
+ b _080B5AA4
+ .align 2, 0
+_080B59F8: .4byte gTasks
+_080B59FC:
+ cmp r0, 0x2
+ beq _080B5A9E
+ b _080B5AA4
+_080B5A02:
+ ldrh r1, [r4, 0xA]
+ adds r1, 0x1
+ strh r1, [r4, 0xA]
+ movs r0, 0x3
+ ands r0, r1
+ strh r0, [r4, 0x12]
+ cmp r0, 0x1
+ bne _080B5A20
+ ldrh r1, [r4, 0xC]
+ movs r2, 0xC
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080B5A20
+ subs r0, r1, 0x1
+ strh r0, [r4, 0xC]
+_080B5A20:
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x3
+ bne _080B5A36
+ ldrh r1, [r4, 0xE]
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xF
+ bgt _080B5A36
+ adds r0, r1, 0x1
+ strh r0, [r4, 0xE]
+_080B5A36:
+ ldrh r1, [r4, 0xE]
+ lsls r1, 8
+ ldrh r0, [r4, 0xC]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r1, [r4, 0xC]
+ movs r0, 0x80
+ lsls r0, 13
+ cmp r1, r0
+ bne _080B5AA4
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x50
+ ble _080B5AA4
+ movs r2, 0x8
+ ldrsh r1, [r4, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080B5A74 @ =gSprites
+ adds r0, r1
+ bl obj_delete_but_dont_free_vram
+ movs r0, 0x1
+ strh r0, [r4, 0x10]
+ b _080B5AA4
+ .align 2, 0
+_080B5A74: .4byte gSprites
+_080B5A78:
+ ldrh r0, [r4, 0x14]
+ adds r0, 0x1
+ strh r0, [r4, 0x14]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B5AA4
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x1
+ strh r0, [r4, 0x10]
+ b _080B5AA4
+_080B5A9E:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080B5AA4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B59D4
+
+ thumb_func_start sub_80B5AAC
+sub_80B5AAC: @ 80B5AAC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r2, _080B5ACC @ =gTasks
+ adds r1, r2
+ movs r2, 0
+ strh r2, [r1, 0x26]
+ ldr r2, _080B5AD0 @ =sub_80B5AD4
+ str r2, [r1]
+ bl _call_via_r2
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B5ACC: .4byte gTasks
+_080B5AD0: .4byte sub_80B5AD4
+ thumb_func_end sub_80B5AAC
+
+ thumb_func_start sub_80B5AD4
+sub_80B5AD4: @ 80B5AD4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080B5B0C @ =gTasks
+ adds r5, r0, r1
+ ldr r0, _080B5B10 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r1, 0x26
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x4
+ bls _080B5B00
+ b _080B5D22
+_080B5B00:
+ lsls r0, 2
+ ldr r1, _080B5B14 @ =_080B5B18
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B5B0C: .4byte gTasks
+_080B5B10: .4byte gBattleAnimTarget
+_080B5B14: .4byte _080B5B18
+ .align 2, 0
+_080B5B18:
+ .4byte _080B5B2C
+ .4byte _080B5C2C
+ .4byte _080B5C70
+ .4byte _080B5CD8
+ .4byte _080B5D04
+_080B5B2C:
+ ldr r7, _080B5B64 @ =0x00002771
+ adds r0, r7, 0
+ bl AllocSpritePalette
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0
+ mov r8, r2
+ strh r0, [r5, 0x24]
+ cmp r0, 0xFF
+ beq _080B5B5A
+ cmp r0, 0xF
+ beq _080B5B5A
+ movs r0, 0x1
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ strh r0, [r5, 0x8]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080B5B68
+ adds r0, r7, 0
+ bl FreeSpritePaletteByTag
+_080B5B5A:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _080B5D28
+ .align 2, 0
+_080B5B64: .4byte 0x00002771
+_080B5B68:
+ ldr r4, _080B5C14 @ =gSprites
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrh r2, [r5, 0x24]
+ lsls r2, 4
+ ldrb r3, [r1, 0x5]
+ movs r0, 0xF
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r1, 0x5]
+ movs r2, 0x8
+ ldrsh r0, [r5, r2]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrb r2, [r1, 0x1]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x1]
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrb r1, [r0, 0x5]
+ movs r2, 0xC
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r4
+ ldr r0, _080B5C18 @ =gUnknown_2024018
+ ldr r1, [r0]
+ ldr r0, _080B5C1C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ ldr r1, [r1]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ lsls r1, 31
+ adds r2, 0x3E
+ lsrs r1, 31
+ lsls r1, 2
+ ldrb r3, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2]
+ mov r2, r8
+ strh r2, [r5, 0xA]
+ strh r2, [r5, 0xC]
+ movs r0, 0x10
+ strh r0, [r5, 0xE]
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ movs r0, 0x22
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrb r0, [r0, 0x5]
+ lsrs r0, 4
+ adds r0, 0x10
+ lsls r0, 4
+ strh r0, [r5, 0x10]
+ cmp r6, 0x1
+ bne _080B5C20
+ movs r1, 0x80
+ lsls r1, 2
+ b _080B5C24
+ .align 2, 0
+_080B5C14: .4byte gSprites
+_080B5C18: .4byte gUnknown_2024018
+_080B5C1C: .4byte gBattleAnimTarget
+_080B5C20:
+ movs r1, 0x80
+ lsls r1, 3
+_080B5C24:
+ movs r0, 0
+ bl ClearGpuRegBits
+ b _080B5D22
+_080B5C2C:
+ movs r1, 0x24
+ ldrsh r0, [r5, r1]
+ adds r0, 0x10
+ lsls r0, 4
+ strh r0, [r5, 0x24]
+ movs r2, 0x10
+ ldrsh r0, [r5, r2]
+ lsls r0, 1
+ ldr r1, _080B5C60 @ =gPlttBufferUnfaded
+ adds r0, r1
+ movs r2, 0x24
+ ldrsh r1, [r5, r2]
+ lsls r1, 1
+ ldr r2, _080B5C64 @ =gPlttBufferFaded
+ adds r1, r2
+ ldr r2, _080B5C68 @ =0x04000008
+ bl CpuSet
+ ldrh r0, [r5, 0x10]
+ ldr r3, _080B5C6C @ =0x00003c0d
+ movs r1, 0x10
+ movs r2, 0xA
+ bl BlendPalette
+ b _080B5D22
+ .align 2, 0
+_080B5C60: .4byte gPlttBufferUnfaded
+_080B5C64: .4byte gPlttBufferFaded
+_080B5C68: .4byte 0x04000008
+_080B5C6C: .4byte 0x00003c0d
+_080B5C70:
+ ldr r2, _080B5CAC @ =gSprites
+ movs r0, 0x22
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x26]
+ ldrh r0, [r0, 0x22]
+ adds r1, r0
+ subs r1, 0x20
+ lsls r1, 16
+ lsrs r2, r1, 16
+ cmp r1, 0
+ bge _080B5C90
+ movs r2, 0
+_080B5C90:
+ cmp r6, 0x1
+ bne _080B5CB0
+ lsls r0, r2, 24
+ lsrs r0, 24
+ adds r1, r2, 0
+ adds r1, 0x40
+ lsls r1, 24
+ lsrs r1, 24
+ movs r2, 0
+ str r2, [sp]
+ movs r2, 0x4
+ str r2, [sp, 0x4]
+ str r6, [sp, 0x8]
+ b _080B5CC8
+ .align 2, 0
+_080B5CAC: .4byte gSprites
+_080B5CB0:
+ lsls r0, r2, 24
+ lsrs r0, 24
+ adds r1, r2, 0
+ adds r1, 0x40
+ lsls r1, 24
+ lsrs r1, 24
+ movs r2, 0
+ str r2, [sp]
+ movs r2, 0x8
+ str r2, [sp, 0x4]
+ movs r2, 0x1
+ str r2, [sp, 0x8]
+_080B5CC8:
+ movs r2, 0x2
+ movs r3, 0x6
+ bl ScanlineEffect_InitWave
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x1C]
+ b _080B5D22
+_080B5CD8:
+ cmp r6, 0x1
+ bne _080B5CEC
+ ldr r1, _080B5CE8 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ b _080B5CF4
+ .align 2, 0
+_080B5CE8: .4byte 0x00003f42
+_080B5CEC:
+ ldr r1, _080B5D00 @ =0x00003f44
+ movs r0, 0x50
+ bl SetGpuReg
+_080B5CF4:
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ b _080B5D22
+ .align 2, 0
+_080B5D00: .4byte 0x00003f44
+_080B5D04:
+ cmp r6, 0x1
+ bne _080B5D14
+ movs r1, 0x80
+ lsls r1, 2
+ movs r0, 0
+ bl SetGpuRegBits
+ b _080B5D1E
+_080B5D14:
+ movs r1, 0x80
+ lsls r1, 3
+ movs r0, 0
+ bl SetGpuRegBits
+_080B5D1E:
+ ldr r0, _080B5D34 @ =sub_80B5D38
+ str r0, [r5]
+_080B5D22:
+ ldrh r0, [r5, 0x26]
+ adds r0, 0x1
+ strh r0, [r5, 0x26]
+_080B5D28:
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B5D34: .4byte sub_80B5D38
+ thumb_func_end sub_80B5AD4
+
+ thumb_func_start sub_80B5D38
+sub_80B5D38: @ 80B5D38
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080B5DC0 @ =gTasks
+ adds r4, r0, r1
+ ldrh r1, [r4, 0xA]
+ adds r1, 0x1
+ strh r1, [r4, 0xA]
+ movs r0, 0x1
+ ands r0, r1
+ strh r0, [r4, 0x12]
+ cmp r0, 0
+ bne _080B5D70
+ ldr r1, _080B5DC4 @ =gSineTable
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r1, 0x12
+ bl __divsi3
+ strh r0, [r4, 0xC]
+_080B5D70:
+ movs r2, 0x12
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x1
+ bne _080B5D92
+ ldr r1, _080B5DC4 @ =gSineTable
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r1, 0x12
+ bl __divsi3
+ movs r1, 0x10
+ subs r1, r0
+ strh r1, [r4, 0xE]
+_080B5D92:
+ ldrh r1, [r4, 0xE]
+ lsls r1, 8
+ ldrh r0, [r4, 0xC]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x80
+ bne _080B5DBA
+ movs r0, 0
+ strh r0, [r4, 0x26]
+ ldr r1, _080B5DC8 @ =sub_80B5DCC
+ str r1, [r4]
+ adds r0, r5, 0
+ bl _call_via_r1
+_080B5DBA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B5DC0: .4byte gTasks
+_080B5DC4: .4byte gSineTable
+_080B5DC8: .4byte sub_80B5DCC
+ thumb_func_end sub_80B5D38
+
+ thumb_func_start sub_80B5DCC
+sub_80B5DCC: @ 80B5DCC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080B5DFC @ =gTasks
+ adds r4, r0, r1
+ ldr r0, _080B5E00 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080B5E38
+ cmp r0, 0x1
+ bgt _080B5E04
+ cmp r0, 0
+ beq _080B5E0A
+ b _080B5EB4
+ .align 2, 0
+_080B5DFC: .4byte gTasks
+_080B5E00: .4byte gBattleAnimTarget
+_080B5E04:
+ cmp r0, 0x2
+ beq _080B5E4C
+ b _080B5EB4
+_080B5E0A:
+ ldr r1, _080B5E28 @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x24]
+ cmp r6, 0x1
+ bne _080B5E2C
+ movs r1, 0x80
+ lsls r1, 2
+ b _080B5E30
+ .align 2, 0
+_080B5E28: .4byte gScanlineEffect
+_080B5E2C:
+ movs r1, 0x80
+ lsls r1, 3
+_080B5E30:
+ movs r0, 0
+ bl ClearGpuRegBits
+ b _080B5EB4
+_080B5E38:
+ ldrh r0, [r4, 0x10]
+ ldr r3, _080B5E48 @ =0x00003c0d
+ movs r1, 0x10
+ movs r2, 0
+ bl BlendPalette
+ b _080B5EB4
+ .align 2, 0
+_080B5E48: .4byte 0x00003c0d
+_080B5E4C:
+ ldr r3, _080B5E9C @ =gSprites
+ movs r0, 0x24
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ bl obj_delete_but_dont_free_vram
+ ldr r0, _080B5EA0 @ =0x00002771
+ bl FreeSpritePaletteByTag
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ cmp r6, 0x1
+ bne _080B5EA4
+ movs r1, 0x80
+ lsls r1, 2
+ movs r0, 0
+ bl SetGpuRegBits
+ b _080B5EAE
+ .align 2, 0
+_080B5E9C: .4byte gSprites
+_080B5EA0: .4byte 0x00002771
+_080B5EA4:
+ movs r1, 0x80
+ lsls r1, 3
+ movs r0, 0
+ bl SetGpuRegBits
+_080B5EAE:
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080B5EB4:
+ ldrh r0, [r4, 0x26]
+ adds r0, 0x1
+ strh r0, [r4, 0x26]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B5DCC
+
+ thumb_func_start sub_80B5EC0
+sub_80B5EC0: @ 80B5EC0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r7, r0, 0
+ ldr r0, _080B5EFC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B5F08
+ ldr r4, _080B5F00 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 8
+ movs r2, 0xE0
+ lsls r2, 13
+ adds r0, r2
+ lsrs r5, r0, 16
+ ldr r4, _080B5F04 @ =gBattleAnimTarget
+ b _080B5F2C
+ .align 2, 0
+_080B5EFC: .4byte gBattleAnimArgs
+_080B5F00: .4byte gBattleAnimAttacker
+_080B5F04: .4byte gBattleAnimTarget
+_080B5F08:
+ ldr r4, _080B5FD0 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 8
+ movs r2, 0xE0
+ lsls r2, 13
+ adds r0, r2
+ lsrs r5, r0, 16
+ ldr r4, _080B5FD4 @ =gBattleAnimAttacker
+_080B5F2C:
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 8
+ movs r1, 0xE0
+ lsls r1, 13
+ adds r0, r1
+ lsrs r0, 16
+ mov r9, r0
+ mov r8, r5
+ mov r2, r9
+ subs r4, r2, r5
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r0, r6, 4
+ strh r0, [r7, 0x2E]
+ lsls r0, r5, 4
+ strh r0, [r7, 0x30]
+ mov r1, r10
+ subs r0, r1, r6
+ lsls r0, 4
+ ldr r5, _080B5FD8 @ =gBattleAnimArgs
+ movs r2, 0x2
+ ldrsh r1, [r5, r2]
+ bl __divsi3
+ strh r0, [r7, 0x32]
+ lsls r4, 16
+ asrs r4, 12
+ movs r0, 0x2
+ ldrsh r1, [r5, r0]
+ adds r0, r4, 0
+ bl __divsi3
+ strh r0, [r7, 0x34]
+ ldrh r0, [r5, 0x2]
+ strh r0, [r7, 0x36]
+ mov r1, r10
+ strh r1, [r7, 0x38]
+ mov r2, r9
+ strh r2, [r7, 0x3A]
+ movs r1, 0x36
+ ldrsh r0, [r7, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ strh r0, [r7, 0x3C]
+ ldrb r1, [r7, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r7, 0x5]
+ strh r6, [r7, 0x20]
+ mov r2, r8
+ strh r2, [r7, 0x22]
+ ldr r0, _080B5FDC @ =sub_80B5FE0
+ str r0, [r7, 0x1C]
+ adds r2, r7, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B5FD0: .4byte gBattleAnimTarget
+_080B5FD4: .4byte gBattleAnimAttacker
+_080B5FD8: .4byte gBattleAnimArgs
+_080B5FDC: .4byte sub_80B5FE0
+ thumb_func_end sub_80B5EC0
+
+ thumb_func_start sub_80B5FE0
+sub_80B5FE0: @ 80B5FE0
+ push {r4,lr}
+ adds r2, r0, 0
+ ldrh r3, [r2, 0x36]
+ movs r1, 0x36
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ beq _080B6018
+ ldrh r0, [r2, 0x32]
+ ldrh r4, [r2, 0x2E]
+ adds r0, r4
+ strh r0, [r2, 0x2E]
+ ldrh r1, [r2, 0x34]
+ ldrh r4, [r2, 0x30]
+ adds r1, r4
+ strh r1, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 20
+ strh r0, [r2, 0x20]
+ lsls r1, 16
+ asrs r1, 20
+ strh r1, [r2, 0x22]
+ subs r0, r3, 0x1
+ strh r0, [r2, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bne _080B6018
+ strh r0, [r2, 0x2E]
+_080B6018:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B5FE0
+
+ thumb_func_start sub_80B6020
+sub_80B6020: @ 80B6020
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080B6170 @ =gTasks
+ adds r1, r0
+ str r1, [sp]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0
+ ldr r1, [sp]
+ strh r0, [r1, 0x12]
+ strh r0, [r1, 0x14]
+ strh r0, [r1, 0x16]
+ strh r0, [r1, 0x18]
+ movs r0, 0x10
+ strh r0, [r1, 0x1A]
+ ldr r2, _080B6174 @ =gBattleAnimArgs
+ ldrh r0, [r2]
+ strh r0, [r1, 0x1C]
+ ldr r4, _080B6178 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x4]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8076B2C
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x8]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B6090
+ b _080B618C
+_080B6090:
+ movs r4, 0
+_080B6092:
+ lsls r1, r4, 16
+ asrs r3, r1, 16
+ ldr r0, _080B6178 @ =gBattleAnimAttacker
+ ldrb r2, [r0]
+ str r1, [sp, 0x10]
+ cmp r3, r2
+ beq _080B615E
+ movs r0, 0x2
+ eors r2, r0
+ cmp r3, r2
+ beq _080B615E
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B615E
+ ldr r6, [sp, 0x4]
+ ldr r3, [sp, 0x8]
+ lsls r0, r3, 16
+ asrs r7, r0, 16
+ ldr r0, _080B617C @ =gUnknown_83E7668
+ adds r1, r6, 0
+ adds r2, r7, 0
+ movs r3, 0x37
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ cmp r0, 0x40
+ beq _080B615E
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl sub_8076B2C
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ mov r0, r8
+ lsls r5, r0, 4
+ add r5, r8
+ lsls r5, 2
+ ldr r1, _080B6180 @ =gSprites
+ adds r4, r5, r1
+ lsls r0, r6, 4
+ strh r0, [r4, 0x2E]
+ lsls r0, r7, 4
+ strh r0, [r4, 0x30]
+ mov r2, r10
+ subs r0, r2, r6
+ lsls r0, 4
+ ldr r3, _080B6174 @ =gBattleAnimArgs
+ movs r2, 0x2
+ ldrsh r1, [r3, r2]
+ bl __divsi3
+ strh r0, [r4, 0x32]
+ mov r3, r9
+ lsls r0, r3, 16
+ asrs r0, 16
+ subs r0, r7
+ lsls r0, 4
+ ldr r2, _080B6174 @ =gBattleAnimArgs
+ movs r3, 0x2
+ ldrsh r1, [r2, r3]
+ bl __divsi3
+ strh r0, [r4, 0x34]
+ ldr r1, _080B6174 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x36]
+ mov r2, r10
+ strh r2, [r4, 0x38]
+ mov r3, r9
+ strh r3, [r4, 0x3A]
+ ldr r0, _080B6184 @ =gSprites + 0x1C
+ adds r5, r0
+ ldr r0, _080B6188 @ =sub_80B5FE0
+ str r0, [r5]
+ ldr r2, [sp]
+ movs r3, 0x20
+ ldrsh r1, [r2, r3]
+ adds r1, 0xD
+ lsls r1, 1
+ adds r0, r2, 0
+ adds r0, 0x8
+ adds r0, r1
+ mov r1, r8
+ strh r1, [r0]
+ ldrh r0, [r2, 0x20]
+ adds r0, 0x1
+ strh r0, [r2, 0x20]
+_080B615E:
+ ldr r2, [sp, 0x10]
+ movs r3, 0x80
+ lsls r3, 9
+ adds r0, r2, r3
+ lsrs r4, r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ ble _080B6092
+ b _080B6210
+ .align 2, 0
+_080B6170: .4byte gTasks
+_080B6174: .4byte gBattleAnimArgs
+_080B6178: .4byte gBattleAnimAttacker
+_080B617C: .4byte gUnknown_83E7668
+_080B6180: .4byte gSprites
+_080B6184: .4byte gSprites + 0x1C
+_080B6188: .4byte sub_80B5FE0
+_080B618C:
+ ldr r0, _080B6228 @ =gUnknown_83E7668
+ ldr r7, [sp, 0x4]
+ ldr r2, [sp, 0x8]
+ lsls r1, r2, 16
+ asrs r1, 16
+ str r1, [sp, 0xC]
+ adds r1, r7, 0
+ ldr r2, [sp, 0xC]
+ movs r3, 0x37
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ cmp r0, 0x40
+ beq _080B6210
+ movs r3, 0x30
+ mov r10, r3
+ movs r0, 0x28
+ mov r9, r0
+ ldr r6, _080B622C @ =gSprites
+ mov r1, r8
+ lsls r5, r1, 4
+ add r5, r8
+ lsls r5, 2
+ adds r4, r5, r6
+ lsls r0, r7, 4
+ strh r0, [r4, 0x2E]
+ ldr r2, [sp, 0xC]
+ lsls r0, r2, 4
+ strh r0, [r4, 0x30]
+ subs r0, r3, r7
+ lsls r0, 4
+ ldr r3, _080B6230 @ =gBattleAnimArgs
+ movs r2, 0x2
+ ldrsh r1, [r3, r2]
+ bl __divsi3
+ strh r0, [r4, 0x32]
+ mov r3, r9
+ ldr r1, [sp, 0xC]
+ subs r0, r3, r1
+ lsls r0, 4
+ ldr r2, _080B6230 @ =gBattleAnimArgs
+ movs r3, 0x2
+ ldrsh r1, [r2, r3]
+ bl __divsi3
+ strh r0, [r4, 0x34]
+ ldr r1, _080B6230 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x36]
+ mov r2, r10
+ strh r2, [r4, 0x38]
+ mov r3, r9
+ strh r3, [r4, 0x3A]
+ adds r6, 0x1C
+ adds r5, r6
+ ldr r0, _080B6234 @ =sub_80B5FE0
+ str r0, [r5]
+ mov r1, r8
+ ldr r0, [sp]
+ strh r1, [r0, 0x22]
+ movs r0, 0x1
+ ldr r2, [sp]
+ strh r0, [r2, 0x20]
+_080B6210:
+ ldr r0, _080B6238 @ =sub_80B623C
+ ldr r3, [sp]
+ str r0, [r3]
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B6228: .4byte gUnknown_83E7668
+_080B622C: .4byte gSprites
+_080B6230: .4byte gBattleAnimArgs
+_080B6234: .4byte sub_80B5FE0
+_080B6238: .4byte sub_80B623C
+ thumb_func_end sub_80B6020
+
+ thumb_func_start sub_80B623C
+sub_80B623C: @ 80B623C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080B6260 @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ cmp r1, 0x1
+ beq _080B62F2
+ cmp r1, 0x1
+ bgt _080B6264
+ cmp r1, 0
+ beq _080B6272
+ b _080B63AE
+ .align 2, 0
+_080B6260: .4byte gTasks
+_080B6264:
+ cmp r1, 0x2
+ bne _080B626A
+ b _080B6384
+_080B626A:
+ cmp r1, 0x3
+ bne _080B6270
+ b _080B6398
+_080B6270:
+ b _080B63AE
+_080B6272:
+ movs r2, 0x14
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080B62D8
+ ldrh r0, [r4, 0x12]
+ adds r0, 0x1
+ strh r0, [r4, 0x12]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B62D8
+ strh r1, [r4, 0x12]
+ ldrh r0, [r4, 0x16]
+ adds r0, 0x1
+ strh r0, [r4, 0x16]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B62A8
+ ldrh r1, [r4, 0x18]
+ movs r2, 0x18
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xF
+ bgt _080B62B6
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x18]
+ b _080B62B6
+_080B62A8:
+ ldrh r1, [r4, 0x1A]
+ movs r2, 0x1A
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080B62B6
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x1A]
+_080B62B6:
+ ldrh r1, [r4, 0x1A]
+ lsls r1, 8
+ ldrh r0, [r4, 0x18]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x16
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x17
+ ble _080B62D8
+ movs r0, 0
+ strh r0, [r4, 0x16]
+ movs r0, 0x1
+ strh r0, [r4, 0x14]
+_080B62D8:
+ ldrh r1, [r4, 0x1C]
+ movs r2, 0x1C
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080B62E8
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x1C]
+ b _080B63AE
+_080B62E8:
+ movs r1, 0x14
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080B63AE
+ b _080B6390
+_080B62F2:
+ ldrh r0, [r4, 0x12]
+ adds r0, 0x1
+ strh r0, [r4, 0x12]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B63AE
+ movs r0, 0
+ strh r0, [r4, 0x12]
+ ldrh r0, [r4, 0x16]
+ adds r0, 0x1
+ strh r0, [r4, 0x16]
+ ands r0, r1
+ lsls r0, 16
+ cmp r0, 0
+ beq _080B6322
+ ldrh r1, [r4, 0x18]
+ movs r2, 0x18
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080B6330
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x18]
+ b _080B6330
+_080B6322:
+ ldrh r1, [r4, 0x1A]
+ movs r2, 0x1A
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xF
+ bgt _080B6330
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x1A]
+_080B6330:
+ ldrh r1, [r4, 0x1A]
+ lsls r1, 8
+ ldrh r0, [r4, 0x18]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r1, [r4, 0x18]
+ movs r0, 0x80
+ lsls r0, 13
+ cmp r1, r0
+ bne _080B63AE
+ movs r5, 0
+ b _080B6374
+_080B6350:
+ adds r1, r5, 0
+ adds r1, 0xD
+ lsls r1, 1
+ adds r0, r4, 0
+ adds r0, 0x8
+ adds r0, r1
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080B6380 @ =gSprites
+ adds r0, r1
+ bl DestroySprite
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+_080B6374:
+ movs r1, 0x20
+ ldrsh r0, [r4, r1]
+ cmp r5, r0
+ blt _080B6350
+ b _080B6390
+ .align 2, 0
+_080B6380: .4byte gSprites
+_080B6384:
+ ldrh r0, [r4, 0x12]
+ adds r0, 0x1
+ strh r0, [r4, 0x12]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080B63AE
+_080B6390:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B63AE
+_080B6398:
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080B63AE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B623C
+
+ thumb_func_start sub_80B63B4
+sub_80B63B4: @ 80B63B4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, _080B6400 @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080B6404 @ =gUnknown_2022986
+ strh r1, [r0]
+ ldr r1, _080B6408 @ =0x00003f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r1, _080B640C @ =0x00003f1f
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r0, 0x50
+ movs r1, 0xC8
+ bl SetGpuReg
+ movs r0, 0x54
+ movs r1, 0x10
+ bl SetGpuReg
+ ldr r0, _080B6410 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B63FC
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B6414
+_080B63FC:
+ movs r6, 0x28
+ b _080B6416
+ .align 2, 0
+_080B6400: .4byte gUnknown_2022984
+_080B6404: .4byte gUnknown_2022986
+_080B6408: .4byte 0x00003f3f
+_080B640C: .4byte 0x00003f1f
+_080B6410: .4byte gBattleAnimAttacker
+_080B6414:
+ movs r6, 0xC8
+_080B6416:
+ ldr r1, _080B6454 @ =gUnknown_2022984
+ lsls r3, r6, 16
+ asrs r2, r3, 16
+ lsls r0, r2, 8
+ orrs r0, r2
+ strh r0, [r1]
+ ldr r1, _080B6458 @ =gUnknown_2022986
+ movs r5, 0x28
+ ldr r0, _080B645C @ =0x00002828
+ strh r0, [r1]
+ lsrs r3, 16
+ movs r1, 0xF0
+ subs r1, r2
+ movs r4, 0x48
+ ldr r2, _080B6460 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r2
+ strh r3, [r0, 0xA]
+ strh r1, [r0, 0xC]
+ strh r5, [r0, 0xE]
+ strh r4, [r0, 0x10]
+ strh r6, [r0, 0x12]
+ strh r5, [r0, 0x14]
+ ldr r1, _080B6464 @ =sub_80B6468
+ str r1, [r0]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B6454: .4byte gUnknown_2022984
+_080B6458: .4byte gUnknown_2022986
+_080B645C: .4byte 0x00002828
+_080B6460: .4byte gTasks
+_080B6464: .4byte sub_80B6468
+ thumb_func_end sub_80B63B4
+
+ thumb_func_start sub_80B6468
+sub_80B6468: @ 80B6468
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x20
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080B6588 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r4, r1, r2
+ ldrh r1, [r4, 0x8]
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x8]
+ ldrh r5, [r4, 0xA]
+ ldrh r7, [r4, 0xC]
+ ldrh r0, [r4, 0xE]
+ mov r10, r0
+ ldrh r2, [r4, 0x10]
+ str r2, [sp, 0xC]
+ ldrh r0, [r4, 0x12]
+ ldrh r2, [r4, 0x14]
+ mov r8, r2
+ lsls r1, 16
+ asrs r6, r1, 16
+ cmp r6, 0xF
+ ble _080B64A4
+ b _080B6594
+_080B64A4:
+ lsls r0, 16
+ asrs r0, 16
+ bl __floatsidf
+ str r0, [sp, 0x10]
+ str r1, [sp, 0x14]
+ lsls r0, r5, 16
+ asrs r0, 16
+ bl __floatsidf
+ ldr r2, _080B658C @ =0x3fb00000
+ ldr r3, _080B658C+4 @ =0x00000000
+ bl __muldf3
+ adds r5, r1, 0
+ adds r4, r0, 0
+ adds r0, r6, 0
+ bl __floatsidf
+ str r0, [sp, 0x18]
+ str r1, [sp, 0x1C]
+ adds r1, r5, 0
+ adds r0, r4, 0
+ ldr r2, [sp, 0x18]
+ ldr r3, [sp, 0x1C]
+ bl __muldf3
+ adds r3, r1, 0
+ adds r2, r0, 0
+ ldr r0, [sp, 0x10]
+ ldr r1, [sp, 0x14]
+ bl __subdf3
+ bl __fixunsdfsi
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ lsls r0, r7, 16
+ asrs r0, 16
+ bl __floatsidf
+ ldr r2, _080B658C @ =0x3fb00000
+ ldr r3, _080B658C+4 @ =0x00000000
+ bl __muldf3
+ ldr r2, [sp, 0x18]
+ ldr r3, [sp, 0x1C]
+ bl __muldf3
+ adds r3, r1, 0
+ adds r2, r0, 0
+ ldr r0, [sp, 0x10]
+ ldr r1, [sp, 0x14]
+ bl __adddf3
+ bl __fixunsdfsi
+ lsls r0, 16
+ lsrs r7, r0, 16
+ mov r1, r8
+ lsls r0, r1, 16
+ asrs r0, 16
+ bl __floatsidf
+ adds r5, r1, 0
+ adds r4, r0, 0
+ mov r2, r10
+ lsls r0, r2, 16
+ asrs r0, 16
+ bl __floatsidf
+ ldr r2, _080B658C @ =0x3fb00000
+ ldr r3, _080B658C+4 @ =0x00000000
+ bl __muldf3
+ ldr r2, [sp, 0x18]
+ ldr r3, [sp, 0x1C]
+ bl __muldf3
+ adds r3, r1, 0
+ adds r2, r0, 0
+ adds r1, r5, 0
+ adds r0, r4, 0
+ bl __subdf3
+ bl __fixunsdfsi
+ lsls r0, 16
+ lsrs r6, r0, 16
+ ldr r1, [sp, 0xC]
+ lsls r0, r1, 16
+ asrs r0, 16
+ bl __floatsidf
+ ldr r2, _080B658C @ =0x3fb00000
+ ldr r3, _080B658C+4 @ =0x00000000
+ bl __muldf3
+ ldr r2, [sp, 0x18]
+ ldr r3, [sp, 0x1C]
+ bl __muldf3
+ adds r3, r1, 0
+ adds r2, r0, 0
+ adds r1, r5, 0
+ adds r0, r4, 0
+ bl __adddf3
+ bl __fixunsdfsi
+ lsls r0, 16
+ lsrs r5, r0, 16
+ b _080B65C2
+ .align 2, 0
+_080B6588: .4byte gTasks
+_080B658C: .double 0.0625
+_080B6594:
+ movs r2, 0
+ mov r9, r2
+ movs r7, 0xF0
+ movs r6, 0
+ movs r5, 0x70
+ str r6, [sp]
+ str r6, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0
+ movs r3, 0
+ bl sub_8075BE8
+ lsls r0, 16
+ lsrs r0, 16
+ str r6, [sp]
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ ldr r0, _080B65E4 @ =sub_80B65F0
+ str r0, [r4]
+_080B65C2:
+ ldr r1, _080B65E8 @ =gUnknown_2022984
+ mov r2, r9
+ lsls r0, r2, 8
+ orrs r7, r0
+ strh r7, [r1]
+ ldr r1, _080B65EC @ =gUnknown_2022986
+ lsls r0, r6, 8
+ orrs r5, r0
+ strh r5, [r1]
+ add sp, 0x20
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B65E4: .4byte sub_80B65F0
+_080B65E8: .4byte gUnknown_2022984
+_080B65EC: .4byte gUnknown_2022986
+ thumb_func_end sub_80B6468
+
+ thumb_func_start sub_80B65F0
+sub_80B65F0: @ 80B65F0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _080B663C @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _080B6636
+ ldr r0, _080B6640 @ =gUnknown_2022984
+ strh r1, [r0]
+ ldr r0, _080B6644 @ =gUnknown_2022986
+ strh r1, [r0]
+ ldr r4, _080B6648 @ =0x00003f3f
+ movs r0, 0x48
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x4A
+ adds r1, r4, 0
+ bl SetGpuReg
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x54
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080B6636:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B663C: .4byte gPaletteFade
+_080B6640: .4byte gUnknown_2022984
+_080B6644: .4byte gUnknown_2022986
+_080B6648: .4byte 0x00003f3f
+ thumb_func_end sub_80B65F0
+
+ thumb_func_start sub_80B664C
+sub_80B664C: @ 80B664C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080B6678 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B6680
+ movs r2, 0x18
+ ldr r3, _080B667C @ =0x0000fffe
+ ldrb r0, [r4, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x10
+ orrs r1, r0
+ strb r1, [r4, 0x3]
+ b _080B6684
+ .align 2, 0
+_080B6678: .4byte gBattleAnimAttacker
+_080B667C: .4byte 0x0000fffe
+_080B6680:
+ ldr r2, _080B66A0 @ =0x0000ffe8
+ movs r3, 0x2
+_080B6684:
+ lsls r0, r2, 16
+ asrs r0, 16
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ strh r3, [r4, 0x30]
+ movs r0, 0x3C
+ strh r0, [r4, 0x2E]
+ ldr r0, _080B66A4 @ =sub_80B66A8
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B66A0: .4byte 0x0000ffe8
+_080B66A4: .4byte sub_80B66A8
+ thumb_func_end sub_80B664C
+
+ thumb_func_start sub_80B66A8
+sub_80B66A8: @ 80B66A8
+ push {r4,lr}
+ adds r3, r0, 0
+ ldrh r1, [r3, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ ble _080B66BA
+ subs r0, r1, 0x1
+ b _080B671E
+_080B66BA:
+ ldrh r0, [r3, 0x30]
+ ldrh r4, [r3, 0x24]
+ adds r1, r0, r4
+ strh r1, [r3, 0x24]
+ adds r0, r1, 0x7
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xE
+ bls _080B6720
+ ldrh r0, [r3, 0x20]
+ adds r0, r1
+ strh r0, [r3, 0x20]
+ movs r0, 0
+ strh r0, [r3, 0x24]
+ ldrh r2, [r3, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x8
+ ldr r4, _080B670C @ =0x000003ff
+ adds r0, r4, 0
+ ands r1, r0
+ ldr r0, _080B6710 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r3, 0x4]
+ ldrh r0, [r3, 0x32]
+ adds r0, 0x1
+ strh r0, [r3, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080B671C
+ movs r0, 0x1E
+ strh r0, [r3, 0x2E]
+ ldr r0, _080B6714 @ =sub_8074C44
+ str r0, [r3, 0x1C]
+ ldr r1, _080B6718 @ =sub_80B6728
+ adds r0, r3, 0
+ bl StoreSpriteCallbackInData6
+ b _080B6720
+ .align 2, 0
+_080B670C: .4byte 0x000003ff
+_080B6710: .4byte 0xfffffc00
+_080B6714: .4byte sub_8074C44
+_080B6718: .4byte sub_80B6728
+_080B671C:
+ movs r0, 0x28
+_080B671E:
+ strh r0, [r3, 0x2E]
+_080B6720:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B66A8
+
+ thumb_func_start sub_80B6728
+sub_80B6728: @ 80B6728
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x2E
+ ldrsh r5, [r4, r0]
+ cmp r5, 0
+ bne _080B6752
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0x10
+ bl SetGpuReg
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ strh r5, [r4, 0x30]
+ strh r5, [r4, 0x32]
+ b _080B6796
+_080B6752:
+ ldrh r1, [r4, 0x30]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x1
+ bgt _080B6762
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ b _080B6796
+_080B6762:
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080B6796
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080B679C @ =sub_80B67A0
+ str r0, [r4, 0x1C]
+_080B6796:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B679C: .4byte sub_80B67A0
+ thumb_func_end sub_80B6728
+
+ thumb_func_start sub_80B67A0
+sub_80B67A0: @ 80B67A0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ ldr r0, _080B67CC @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080B67D0 @ =gUnknown_2022986
+ strh r1, [r0]
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B67CC: .4byte gUnknown_2022984
+_080B67D0: .4byte gUnknown_2022986
+ thumb_func_end sub_80B67A0
+
+ thumb_func_start sub_80B67D4
+sub_80B67D4: @ 80B67D4
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ movs r1, 0xC
+ bl Sin
+ strh r0, [r5, 0x24]
+ ldr r0, _080B683C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B67F8
+ ldrh r0, [r5, 0x24]
+ negs r0, r0
+ strh r0, [r5, 0x24]
+_080B67F8:
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x6
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x2E]
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1, 0
+ ldrh r1, [r5, 0x30]
+ adds r0, r1
+ strh r0, [r5, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ negs r0, r0
+ strh r0, [r5, 0x26]
+ ldrh r0, [r5, 0x3C]
+ adds r0, 0x1
+ strh r0, [r5, 0x3C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080B6844
+ ldr r0, _080B6840 @ =0x0000050b
+ strh r0, [r5, 0x3A]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldrh r1, [r5, 0x3A]
+ movs r0, 0x52
+ bl SetGpuReg
+ b _080B689C
+ .align 2, 0
+_080B683C: .4byte gBattleAnimAttacker
+_080B6840: .4byte 0x0000050b
+_080B6844:
+ cmp r0, 0x1E
+ ble _080B689C
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x1
+ strh r0, [r5, 0x32]
+ ldrh r1, [r5, 0x3A]
+ lsls r0, r1, 16
+ asrs r0, 24
+ lsls r0, 16
+ movs r6, 0xFF
+ ands r6, r1
+ movs r1, 0x80
+ lsls r1, 9
+ adds r0, r1
+ lsrs r7, r0, 16
+ cmp r7, 0x10
+ bls _080B6868
+ movs r7, 0x10
+_080B6868:
+ subs r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ cmp r0, 0
+ bge _080B6874
+ movs r6, 0
+_080B6874:
+ lsls r4, r7, 8
+ orrs r4, r6
+ lsls r1, r4, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ strh r4, [r5, 0x3A]
+ cmp r7, 0x10
+ bne _080B689C
+ cmp r6, 0
+ bne _080B689C
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080B68A4 @ =sub_80B68A8
+ str r0, [r5, 0x1C]
+_080B689C:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B68A4: .4byte sub_80B68A8
+ thumb_func_end sub_80B67D4
+
+ thumb_func_start sub_80B68A8
+sub_80B68A8: @ 80B68A8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B68A8
+
+ thumb_func_start sub_80B68C8
+sub_80B68C8: @ 80B68C8
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080B6960 @ =gTasks
+ adds r4, r0
+ movs r6, 0
+ strh r6, [r4, 0x8]
+ movs r0, 0x10
+ mov r8, r0
+ mov r0, r8
+ strh r0, [r4, 0xA]
+ ldr r5, _080B6964 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x1A]
+ ldrb r0, [r5]
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x1C]
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8076B2C
+ lsls r0, 16
+ asrs r1, r0, 16
+ lsrs r0, 31
+ adds r1, r0
+ asrs r1, 1
+ adds r1, 0x8
+ strh r1, [r4, 0x1E]
+ strh r6, [r4, 0x16]
+ ldrb r0, [r5]
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x12]
+ ldrb r0, [r5]
+ bl sub_807685C
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x2
+ strh r0, [r4, 0x14]
+ strh r6, [r4, 0xE]
+ mov r0, r8
+ strh r0, [r4, 0x10]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ strh r6, [r4, 0x18]
+ ldr r0, _080B6968 @ =sub_80B696C
+ str r0, [r4]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B6960: .4byte gTasks
+_080B6964: .4byte gBattleAnimAttacker
+_080B6968: .4byte sub_80B696C
+ thumb_func_end sub_80B68C8
+
+ thumb_func_start sub_80B696C
+sub_80B696C: @ 80B696C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _080B6990 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ bls _080B6986
+ b _080B6AF2
+_080B6986:
+ lsls r0, 2
+ ldr r1, _080B6994 @ =_080B6998
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B6990: .4byte gTasks
+_080B6994: .4byte _080B6998
+ .align 2, 0
+_080B6998:
+ .4byte _080B69B0
+ .4byte _080B6A20
+ .4byte _080B6A62
+ .4byte _080B6A76
+ .4byte _080B6ACC
+ .4byte _080B6ADC
+_080B69B0:
+ movs r6, 0
+_080B69B2:
+ movs r2, 0x1A
+ ldrsh r1, [r4, r2]
+ movs r0, 0x1C
+ ldrsh r2, [r4, r0]
+ ldrb r3, [r4, 0x14]
+ ldr r0, _080B6A14 @ =gUnknown_83E76E0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x40
+ beq _080B6A06
+ ldr r1, _080B6A18 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r5, r0, r1
+ strh r7, [r5, 0x2E]
+ ldr r0, _080B6A1C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ movs r1, 0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B69E8
+ movs r1, 0x1
+_080B69E8:
+ strh r1, [r5, 0x30]
+ movs r0, 0x2A
+ muls r0, r6
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r4, 0x1E]
+ strh r0, [r5, 0x34]
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 1
+ strh r0, [r5, 0x38]
+ ldrh r0, [r4, 0x16]
+ adds r0, 0x1
+ strh r0, [r4, 0x16]
+_080B6A06:
+ adds r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ cmp r6, 0x5
+ bls _080B69B2
+ b _080B6AD4
+ .align 2, 0
+_080B6A14: .4byte gUnknown_83E76E0
+_080B6A18: .4byte gSprites
+_080B6A1C: .4byte gBattleAnimAttacker
+_080B6A20:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B6A3E
+ ldrh r1, [r4, 0xE]
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xD
+ bgt _080B6A4C
+ adds r0, r1, 0x1
+ strh r0, [r4, 0xE]
+ b _080B6A4C
+_080B6A3E:
+ ldrh r1, [r4, 0x10]
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x4
+ ble _080B6A4C
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x10]
+_080B6A4C:
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ ldrh r2, [r4, 0xE]
+ ldrh r1, [r4, 0x10]
+ cmp r0, 0xE
+ bne _080B6ABC
+ cmp r1, 0x4
+ bne _080B6ABC
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _080B6AB6
+_080B6A62:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1E
+ ble _080B6AF2
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _080B6AD4
+_080B6A76:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B6A94
+ ldrh r1, [r4, 0xE]
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080B6AA2
+ subs r0, r1, 0x1
+ strh r0, [r4, 0xE]
+ b _080B6AA2
+_080B6A94:
+ ldrh r1, [r4, 0x10]
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xF
+ bgt _080B6AA2
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x10]
+_080B6AA2:
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ ldrh r2, [r4, 0xE]
+ ldrh r1, [r4, 0x10]
+ cmp r0, 0
+ bne _080B6ABC
+ cmp r1, 0x10
+ bne _080B6ABC
+ movs r0, 0x1
+ strh r0, [r4, 0x18]
+_080B6AB6:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+_080B6ABC:
+ lsls r1, 8
+ orrs r1, r2
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ b _080B6AF2
+_080B6ACC:
+ movs r2, 0x16
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080B6AF2
+_080B6AD4:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B6AF2
+_080B6ADC:
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080B6AF2:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B696C
+
+ thumb_func_start sub_80B6AF8
+sub_80B6AF8: @ 80B6AF8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B6B0A
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x2
+ b _080B6B0E
+_080B6B0A:
+ ldrh r0, [r4, 0x32]
+ subs r0, 0x2
+_080B6B0E:
+ strh r0, [r4, 0x32]
+ ldrh r1, [r4, 0x32]
+ movs r0, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x32]
+ movs r2, 0x32
+ ldrsh r0, [r4, r2]
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x32]
+ subs r0, 0x41
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x7E
+ bhi _080B6B50
+ ldr r2, _080B6B4C @ =gTasks
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0x12]
+ adds r1, 0x1
+ movs r0, 0x3
+ ands r1, r0
+ b _080B6B64
+ .align 2, 0
+_080B6B4C: .4byte gTasks
+_080B6B50:
+ ldr r2, _080B6BB8 @ =gTasks
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ movs r2, 0x3
+ ldrb r1, [r0, 0x12]
+ ands r1, r2
+_080B6B64:
+ lsls r1, 2
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ lsls r0, 3
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3A]
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ movs r1, 0x7
+ bl Sin
+ strh r0, [r4, 0x26]
+ ldr r2, _080B6BB8 @ =gTasks
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r1, r0, r2
+ movs r2, 0x18
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ beq _080B6BB2
+ ldrh r0, [r1, 0x16]
+ subs r0, 0x1
+ strh r0, [r1, 0x16]
+ adds r0, r4, 0
+ bl DestroySprite
+_080B6BB2:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B6BB8: .4byte gTasks
+ thumb_func_end sub_80B6AF8
+
+ thumb_func_start sub_80B6BBC
+sub_80B6BBC: @ 80B6BBC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r2, _080B6BDC @ =gTasks
+ adds r1, r2
+ movs r2, 0
+ strh r2, [r1, 0x26]
+ ldr r2, _080B6BE0 @ =sub_80B6BE4
+ str r2, [r1]
+ bl _call_via_r2
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B6BDC: .4byte gTasks
+_080B6BE0: .4byte sub_80B6BE4
+ thumb_func_end sub_80B6BBC
+
+ thumb_func_start sub_80B6BE4
+sub_80B6BE4: @ 80B6BE4
+ push {r4-r6,lr}
+ sub sp, 0x1C
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080B6C18 @ =gTasks
+ adds r6, r1, r0
+ ldr r0, _080B6C1C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r1, 0x26
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x7
+ bls _080B6C0C
+ b _080B6F1E
+_080B6C0C:
+ lsls r0, 2
+ ldr r1, _080B6C20 @ =_080B6C24
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B6C18: .4byte gTasks
+_080B6C1C: .4byte gBattleAnimAttacker
+_080B6C20: .4byte _080B6C24
+ .align 2, 0
+_080B6C24:
+ .4byte _080B6C44
+ .4byte _080B6CCC
+ .4byte _080B6D28
+ .4byte _080B6D8C
+ .4byte _080B6E04
+ .4byte _080B6E6C
+ .4byte _080B6E82
+ .4byte _080B6EEC
+_080B6C44:
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x2
+ bl SetAnimBgAttribute
+ movs r0, 0x2
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0
+ strh r0, [r6, 0xA]
+ strh r0, [r6, 0xC]
+ movs r0, 0x10
+ strh r0, [r6, 0xE]
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x10]
+ ldr r3, _080B6CC8 @ =gSprites
+ movs r2, 0x10
+ ldrsh r1, [r6, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrb r0, [r0, 0x5]
+ lsls r0, 28
+ lsrs r0, 30
+ strh r0, [r6, 0x12]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrb r0, [r0, 0x5]
+ lsrs r0, 4
+ adds r0, 0x10
+ lsls r0, 4
+ strh r0, [r6, 0x14]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrb r2, [r0, 0x1]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0, 0x1]
+ movs r0, 0x10
+ ldrsh r1, [r6, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrb r1, [r0, 0x5]
+ movs r2, 0xC
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ movs r0, 0x80
+ strh r0, [r6, 0x16]
+ b _080B6F1E
+ .align 2, 0
+_080B6CC8: .4byte gSprites
+_080B6CCC:
+ ldrh r0, [r6, 0xA]
+ adds r0, 0x1
+ strh r0, [r6, 0xA]
+ movs r5, 0x1
+ ands r5, r0
+ cmp r5, 0
+ beq _080B6CDC
+ b _080B6F24
+_080B6CDC:
+ ldrh r0, [r6, 0x14]
+ ldrb r2, [r6, 0xC]
+ ldr r4, _080B6D08 @ =0x000066e0
+ movs r1, 0x10
+ adds r3, r4, 0
+ bl BlendPalette
+ ldrh r0, [r6, 0x16]
+ ldrb r2, [r6, 0xC]
+ movs r1, 0x10
+ adds r3, r4, 0
+ bl BlendPalette
+ ldrh r1, [r6, 0xC]
+ movs r2, 0xC
+ ldrsh r0, [r6, r2]
+ cmp r0, 0xB
+ bgt _080B6D0C
+ adds r0, r1, 0x1
+ strh r0, [r6, 0xC]
+ b _080B6F24
+ .align 2, 0
+_080B6D08: .4byte 0x000066e0
+_080B6D0C:
+ strh r5, [r6, 0xA]
+ strh r5, [r6, 0xC]
+ ldr r1, _080B6D24 @ =0x00003f44
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ b _080B6F1E
+ .align 2, 0
+_080B6D24: .4byte 0x00003f44
+_080B6D28:
+ movs r0, 0x2
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ ldr r0, _080B6D7C @ =gBattle_BG2_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r4, _080B6D80 @ =gBattle_BG2_Y
+ strh r1, [r4]
+ movs r0, 0x18
+ movs r1, 0
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x1A
+ bl SetGpuReg
+ add r0, sp, 0xC
+ movs r1, 0x2
+ bl sub_80752C8
+ add r0, sp, 0xC
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080B6D84 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet
+ add r2, sp, 0xC
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080B6D88 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette
+ add r1, sp, 0xC
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ b _080B6F1E
+ .align 2, 0
+_080B6D7C: .4byte gBattle_BG2_X
+_080B6D80: .4byte gBattle_BG2_Y
+_080B6D84: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet
+_080B6D88: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette
+_080B6D8C:
+ add r0, sp, 0xC
+ movs r1, 0x2
+ bl sub_80752C8
+ movs r0, 0x80
+ lsls r0, 6
+ bl AllocZeroed
+ adds r1, r0, 0
+ ldr r5, _080B6DFC @ =gMonSpritesGfxPtr
+ ldr r0, [r5]
+ movs r4, 0xBE
+ lsls r4, 1
+ adds r0, r4
+ str r1, [r0]
+ ldr r0, _080B6E00 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
+ bl LZDecompressWram
+ add r0, sp, 0xC
+ ldrb r0, [r0, 0x8]
+ ldr r1, [r5]
+ adds r1, r4
+ ldr r1, [r1]
+ movs r2, 0x80
+ lsls r2, 1
+ movs r3, 0
+ bl sub_80730C0
+ add r0, sp, 0xC
+ ldrb r0, [r0, 0x9]
+ ldr r1, [r5]
+ adds r1, r4
+ ldr r1, [r1]
+ movs r2, 0x20
+ str r2, [sp]
+ str r2, [sp, 0x4]
+ movs r2, 0x11
+ str r2, [sp, 0x8]
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ movs r0, 0x2
+ bl CopyBgTilemapBufferToVram
+ ldr r0, [r5]
+ adds r0, r4
+ ldr r0, [r0]
+ bl Free
+ ldr r0, [r5]
+ adds r0, r4
+ movs r1, 0
+ str r1, [r0]
+ b _080B6F1E
+ .align 2, 0
+_080B6DFC: .4byte gMonSpritesGfxPtr
+_080B6E00: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
+_080B6E04:
+ ldrh r0, [r6, 0xA]
+ adds r0, 0x1
+ strh r0, [r6, 0xA]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B6E14
+ b _080B6F24
+_080B6E14:
+ ldrh r1, [r6, 0xC]
+ adds r1, 0x1
+ strh r1, [r6, 0xC]
+ ldrh r0, [r6, 0xE]
+ subs r0, 0x1
+ strh r0, [r6, 0xE]
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xE
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080B6F24
+ strh r0, [r6, 0xA]
+ strh r0, [r6, 0xC]
+ movs r0, 0x10
+ strh r0, [r6, 0xE]
+ ldr r1, _080B6E68 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0x2
+ movs r1, 0x4
+ movs r2, 0x2
+ bl SetAnimBgAttribute
+ b _080B6F1E
+ .align 2, 0
+_080B6E68: .4byte 0x00003f42
+_080B6E6C:
+ cmp r4, 0x1
+ bne _080B6E76
+ movs r1, 0x80
+ lsls r1, 2
+ b _080B6E7A
+_080B6E76:
+ movs r1, 0x80
+ lsls r1, 3
+_080B6E7A:
+ movs r0, 0
+ bl ClearGpuRegBits
+ b _080B6F1E
+_080B6E82:
+ ldr r2, _080B6EC0 @ =gSprites
+ movs r0, 0x10
+ ldrsh r1, [r6, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x26]
+ ldrh r0, [r0, 0x22]
+ adds r1, r0
+ subs r1, 0x20
+ lsls r1, 16
+ lsrs r2, r1, 16
+ cmp r1, 0
+ bge _080B6EA2
+ movs r2, 0
+_080B6EA2:
+ cmp r4, 0x1
+ bne _080B6EC4
+ lsls r0, r2, 24
+ lsrs r0, 24
+ adds r1, r2, 0
+ adds r1, 0x40
+ lsls r1, 24
+ lsrs r1, 24
+ movs r2, 0
+ str r2, [sp]
+ movs r2, 0x4
+ str r2, [sp, 0x4]
+ str r4, [sp, 0x8]
+ b _080B6EDE
+ .align 2, 0
+_080B6EC0: .4byte gSprites
+_080B6EC4:
+ lsls r0, r2, 24
+ lsrs r0, 24
+ adds r1, r2, 0
+ adds r1, 0x40
+ lsls r1, 24
+ lsrs r1, 24
+ movs r2, 0
+ str r2, [sp]
+ movs r2, 0x8
+ str r2, [sp, 0x4]
+ movs r2, 0x1
+ str r2, [sp, 0x8]
+ movs r2, 0x4
+_080B6EDE:
+ movs r3, 0x8
+ bl ScanlineEffect_InitWave
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x1C]
+ b _080B6F1E
+_080B6EEC:
+ ldrh r0, [r6, 0x16]
+ ldr r3, _080B6F08 @ =0x000077ff
+ movs r1, 0x10
+ movs r2, 0xC
+ bl BlendPalette
+ cmp r4, 0x1
+ bne _080B6F0C
+ movs r1, 0x80
+ lsls r1, 2
+ movs r0, 0
+ bl SetGpuRegBits
+ b _080B6F16
+ .align 2, 0
+_080B6F08: .4byte 0x000077ff
+_080B6F0C:
+ movs r1, 0x80
+ lsls r1, 3
+ movs r0, 0
+ bl SetGpuRegBits
+_080B6F16:
+ ldr r0, _080B6F2C @ =sub_80B6F30
+ str r0, [r6]
+ movs r0, 0
+ strh r0, [r6, 0x26]
+_080B6F1E:
+ ldrh r0, [r6, 0x26]
+ adds r0, 0x1
+ strh r0, [r6, 0x26]
+_080B6F24:
+ add sp, 0x1C
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B6F2C: .4byte sub_80B6F30
+ thumb_func_end sub_80B6BE4
+
+ thumb_func_start sub_80B6F30
+sub_80B6F30: @ 80B6F30
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080B6FB8 @ =gTasks
+ adds r4, r0, r1
+ ldrh r1, [r4, 0xA]
+ adds r1, 0x1
+ strh r1, [r4, 0xA]
+ movs r0, 0x1
+ ands r0, r1
+ strh r0, [r4, 0x18]
+ cmp r0, 0
+ bne _080B6F68
+ ldr r1, _080B6FBC @ =gSineTable
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r1, 0x12
+ bl __divsi3
+ strh r0, [r4, 0xC]
+_080B6F68:
+ movs r2, 0x18
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x1
+ bne _080B6F8A
+ ldr r1, _080B6FBC @ =gSineTable
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r1, 0x12
+ bl __divsi3
+ movs r1, 0x10
+ subs r1, r0
+ strh r1, [r4, 0xE]
+_080B6F8A:
+ ldrh r1, [r4, 0xE]
+ lsls r1, 8
+ ldrh r0, [r4, 0xC]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x80
+ bne _080B6FB2
+ movs r0, 0
+ strh r0, [r4, 0x26]
+ ldr r1, _080B6FC0 @ =sub_80B6FC4
+ str r1, [r4]
+ adds r0, r5, 0
+ bl _call_via_r1
+_080B6FB2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B6FB8: .4byte gTasks
+_080B6FBC: .4byte gSineTable
+_080B6FC0: .4byte sub_80B6FC4
+ thumb_func_end sub_80B6F30
+
+ thumb_func_start sub_80B6FC4
+sub_80B6FC4: @ 80B6FC4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _080B6FE8 @ =gTasks
+ adds r6, r0, r1
+ movs r1, 0x26
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x5
+ bls _080B6FDE
+ b _080B7148
+_080B6FDE:
+ lsls r0, 2
+ ldr r1, _080B6FEC @ =_080B6FF0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B6FE8: .4byte gTasks
+_080B6FEC: .4byte _080B6FF0
+ .align 2, 0
+_080B6FF0:
+ .4byte _080B7008
+ .4byte _080B7024
+ .4byte _080B7044
+ .4byte _080B707C
+ .4byte _080B709C
+ .4byte _080B70E8
+_080B7008:
+ ldr r1, _080B701C @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+ ldrh r0, [r6, 0x16]
+ ldr r3, _080B7020 @ =0x000066e0
+ movs r1, 0x10
+ movs r2, 0xC
+ bl BlendPalette
+ b _080B7148
+ .align 2, 0
+_080B701C: .4byte gScanlineEffect
+_080B7020: .4byte 0x000066e0
+_080B7024:
+ ldr r1, _080B7040 @ =0x00003f44
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0x10
+ bl SetGpuReg
+ movs r1, 0
+ movs r0, 0x10
+ strh r0, [r6, 0xC]
+ strh r1, [r6, 0xE]
+ b _080B7148
+ .align 2, 0
+_080B7040: .4byte 0x00003f44
+_080B7044:
+ ldrh r1, [r6, 0xC]
+ subs r1, 0x1
+ strh r1, [r6, 0xC]
+ ldrh r0, [r6, 0xE]
+ adds r0, 0x1
+ strh r0, [r6, 0xE]
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0xE
+ ldrsh r0, [r6, r2]
+ cmp r0, 0xF
+ ble _080B714E
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x2
+ bl SetAnimBgAttribute
+ movs r0, 0x2
+ movs r1, 0x4
+ movs r2, 0x2
+ bl SetAnimBgAttribute
+ b _080B7148
+_080B707C:
+ movs r0, 0x2
+ bl sub_8075358
+ movs r0, 0
+ movs r1, 0x90
+ movs r2, 0x20
+ bl FillPalette
+ movs r0, 0x2
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+ movs r0, 0xC
+ strh r0, [r6, 0xA]
+ b _080B7148
+_080B709C:
+ ldrh r0, [r6, 0x14]
+ ldrb r2, [r6, 0xA]
+ ldr r4, _080B70C8 @ =0x000066e0
+ movs r1, 0x10
+ adds r3, r4, 0
+ bl BlendPalette
+ ldrh r0, [r6, 0x16]
+ ldrb r2, [r6, 0xA]
+ movs r1, 0x10
+ adds r3, r4, 0
+ bl BlendPalette
+ ldrh r0, [r6, 0xA]
+ movs r2, 0xA
+ ldrsh r1, [r6, r2]
+ cmp r1, 0
+ beq _080B70CC
+ subs r0, 0x1
+ strh r0, [r6, 0xA]
+ b _080B714E
+ .align 2, 0
+_080B70C8: .4byte 0x000066e0
+_080B70CC:
+ strh r1, [r6, 0xA]
+ ldr r1, _080B70E4 @ =0x00003f44
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ b _080B7148
+ .align 2, 0
+_080B70E4: .4byte 0x00003f44
+_080B70E8:
+ ldr r5, _080B7154 @ =gSprites
+ movs r1, 0x10
+ ldrsh r0, [r6, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ movs r0, 0x3
+ ldrb r2, [r6, 0x12]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r4, [r1, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ adds r0, r3, 0
+ ands r0, r4
+ orrs r0, r2
+ strb r0, [r1, 0x5]
+ movs r2, 0x10
+ ldrsh r1, [r6, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrb r1, [r0, 0x1]
+ ands r3, r1
+ strb r3, [r0, 0x1]
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0x2
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080B7148:
+ ldrh r0, [r6, 0x26]
+ adds r0, 0x1
+ strh r0, [r6, 0x26]
+_080B714E:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7154: .4byte gSprites
+ thumb_func_end sub_80B6FC4
+
+ thumb_func_start sub_80B7158
+sub_80B7158: @ 80B7158
+ adds r3, r0, 0
+ adds r3, 0x3E
+ ldrb r1, [r3]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r3]
+ ldr r2, _080B719C @ =gBattlerSpriteIds
+ ldr r1, _080B71A0 @ =gBattleAnimAttacker
+ ldrb r1, [r1]
+ adds r1, r2
+ ldrb r1, [r1]
+ strh r1, [r0, 0x38]
+ movs r1, 0x80
+ strh r1, [r0, 0x2E]
+ movs r1, 0xA
+ strh r1, [r0, 0x30]
+ ldr r2, _080B71A4 @ =gBattleAnimArgs
+ ldrh r1, [r2]
+ strh r1, [r0, 0x32]
+ ldrh r1, [r2, 0x2]
+ strh r1, [r0, 0x34]
+ ldr r1, _080B71A8 @ =sub_80B71B0
+ str r1, [r0, 0x1C]
+ ldr r2, _080B71AC @ =gSprites
+ movs r3, 0x38
+ ldrsh r1, [r0, r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x22]
+ adds r1, 0x8
+ strh r1, [r0, 0x22]
+ bx lr
+ .align 2, 0
+_080B719C: .4byte gBattlerSpriteIds
+_080B71A0: .4byte gBattleAnimAttacker
+_080B71A4: .4byte gBattleAnimArgs
+_080B71A8: .4byte sub_80B71B0
+_080B71AC: .4byte gSprites
+ thumb_func_end sub_80B7158
+
+ thumb_func_start sub_80B71B0
+sub_80B71B0: @ 80B71B0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x34]
+ movs r1, 0x34
+ ldrsh r3, [r5, r1]
+ cmp r3, 0
+ beq _080B7218
+ subs r0, 0x1
+ strh r0, [r5, 0x34]
+ movs r2, 0x2E
+ ldrsh r0, [r5, r2]
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ bl Sin
+ ldr r4, _080B7210 @ =gSprites
+ movs r1, 0x38
+ ldrsh r2, [r5, r1]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ strh r0, [r1, 0x24]
+ movs r2, 0x2E
+ ldrsh r0, [r5, r2]
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ bl Cos
+ movs r1, 0x38
+ ldrsh r2, [r5, r1]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ strh r0, [r1, 0x26]
+ ldrh r0, [r5, 0x32]
+ ldrh r2, [r5, 0x2E]
+ adds r1, r0, r2
+ strh r1, [r5, 0x2E]
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ ble _080B724C
+ ldr r2, _080B7214 @ =0xffffff00
+ adds r0, r1, r2
+ strh r0, [r5, 0x2E]
+ b _080B724C
+ .align 2, 0
+_080B7210: .4byte gSprites
+_080B7214: .4byte 0xffffff00
+_080B7218:
+ ldr r2, _080B7254 @ =gSprites
+ movs r0, 0x38
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r3, [r0, 0x24]
+ movs r0, 0x38
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r3, [r0, 0x26]
+ movs r0, 0x38
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x22]
+ subs r1, 0x8
+ strh r1, [r0, 0x22]
+ ldr r0, _080B7258 @ =move_anim_8074EE0
+ str r0, [r5, 0x1C]
+_080B724C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B7254: .4byte gSprites
+_080B7258: .4byte move_anim_8074EE0
+ thumb_func_end sub_80B71B0
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/ground.s b/asm/ground.s
new file mode 100644
index 000000000..4009c7056
--- /dev/null
+++ b/asm/ground.s
@@ -0,0 +1,1787 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80B8B6C
+sub_80B8B6C: @ 80B8B6C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080B8BC4 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ movs r0, 0x14
+ strh r0, [r4, 0x2E]
+ ldr r5, _080B8BC8 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ ldr r0, _080B8BCC @ =0x0000ffd8
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_8075068
+ ldr r0, _080B8BD0 @ =sub_80B8BD4
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B8BC4: .4byte gBattleAnimAttacker
+_080B8BC8: .4byte gBattleAnimTarget
+_080B8BCC: .4byte 0x0000ffd8
+_080B8BD0: .4byte sub_80B8BD4
+ thumb_func_end sub_80B8B6C
+
+ thumb_func_start sub_80B8BD4
+sub_80B8BD4: @ 80B8BD4
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B8C28
+ ldrh r0, [r5, 0x24]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x26]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ strh r1, [r5, 0x26]
+ strh r1, [r5, 0x24]
+ movs r0, 0x14
+ strh r0, [r5, 0x2E]
+ ldr r4, _080B8C30 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ movs r0, 0x28
+ strh r0, [r5, 0x38]
+ adds r0, r5, 0
+ bl sub_8075068
+ ldr r0, _080B8C34 @ =sub_80B8C38
+ str r0, [r5, 0x1C]
+_080B8C28:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B8C30: .4byte gBattleAnimAttacker
+_080B8C34: .4byte sub_80B8C38
+ thumb_func_end sub_80B8BD4
+
+ thumb_func_start sub_80B8C38
+sub_80B8C38: @ 80B8C38
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B8C4C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B8C4C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B8C38
+
+ thumb_func_start sub_80B8C54
+sub_80B8C54: @ 80B8C54
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ movs r1, 0x1
+ bl sub_8075114
+ ldr r0, _080B8CB4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B8C74
+ ldr r1, _080B8CB8 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080B8C74:
+ ldr r4, _080B8CB8 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x8]
+ strh r0, [r6, 0x2E]
+ ldr r5, _080B8CBC @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x4]
+ adds r0, r1
+ strh r0, [r6, 0x32]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r4, [r4, 0x6]
+ adds r0, r4
+ strh r0, [r6, 0x36]
+ ldr r0, _080B8CC0 @ =sub_8075590
+ str r0, [r6, 0x1C]
+ ldr r1, _080B8CC4 @ =DestroyAnimSprite
+ adds r0, r6, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B8CB4: .4byte gBattleAnimAttacker
+_080B8CB8: .4byte gBattleAnimArgs
+_080B8CBC: .4byte gBattleAnimTarget
+_080B8CC0: .4byte sub_8075590
+_080B8CC4: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B8C54
+
+ thumb_func_start sub_80B8CC8
+sub_80B8CC8: @ 80B8CC8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r4, _080B8D48 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074844
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074844
+ lsls r0, 24
+ lsrs r7, r0, 24
+ bl Random
+ movs r4, 0x1F
+ adds r5, r4, 0
+ ands r5, r0
+ bl Random
+ ands r4, r0
+ adds r1, r5, 0
+ cmp r1, 0x10
+ ble _080B8D10
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 16
+ lsrs r5, r0, 16
+_080B8D10:
+ lsls r0, r4, 16
+ asrs r1, r0, 16
+ cmp r1, 0x10
+ ble _080B8D20
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 16
+ lsrs r4, r0, 16
+_080B8D20:
+ ldr r0, _080B8D4C @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r6, 0x2E]
+ mov r1, r8
+ adds r0, r1, r5
+ strh r0, [r6, 0x32]
+ adds r0, r7, r4
+ strh r0, [r6, 0x36]
+ ldr r0, _080B8D50 @ =sub_8075590
+ str r0, [r6, 0x1C]
+ ldr r1, _080B8D54 @ =move_anim_8074EE0
+ adds r0, r6, 0
+ bl StoreSpriteCallbackInData6
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B8D48: .4byte gBattleAnimTarget
+_080B8D4C: .4byte gBattleAnimArgs
+_080B8D50: .4byte sub_8075590
+_080B8D54: .4byte move_anim_8074EE0
+ thumb_func_end sub_80B8CC8
+
+ thumb_func_start sub_80B8D58
+sub_80B8D58: @ 80B8D58
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldrh r2, [r5, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x1
+ ldr r3, _080B8DB8 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080B8DBC @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0x4]
+ ldr r6, _080B8DC0 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080B8DCC
+ ldr r4, _080B8DC4 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r2, [r6, 0x2]
+ adds r0, r2
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r3, [r6, 0x4]
+ adds r0, r3
+ strh r0, [r5, 0x22]
+ movs r1, 0x2
+ ldrsh r0, [r6, r1]
+ movs r2, 0x1
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ ble _080B8DB2
+ movs r1, 0x1
+_080B8DB2:
+ strh r1, [r5, 0x2E]
+ ldr r0, _080B8DC8 @ =sub_80B8DE8
+ b _080B8DDA
+ .align 2, 0
+_080B8DB8: .4byte 0x000003ff
+_080B8DBC: .4byte 0xfffffc00
+_080B8DC0: .4byte gBattleAnimArgs
+_080B8DC4: .4byte gBattleAnimAttacker
+_080B8DC8: .4byte sub_80B8DE8
+_080B8DCC:
+ ldrh r0, [r6, 0x2]
+ strh r0, [r5, 0x20]
+ ldrh r0, [r6, 0x4]
+ strh r0, [r5, 0x22]
+ negs r0, r0
+ strh r0, [r5, 0x26]
+ ldr r0, _080B8DE4 @ =sub_80B8E24
+_080B8DDA:
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B8DE4: .4byte sub_80B8E24
+ thumb_func_end sub_80B8D58
+
+ thumb_func_start sub_80B8DE8
+sub_80B8DE8: @ 80B8DE8
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B8E06
+ movs r0, 0
+ strh r0, [r2, 0x30]
+ ldrh r0, [r2, 0x2E]
+ ldrh r1, [r2, 0x20]
+ adds r0, r1
+ strh r0, [r2, 0x20]
+_080B8E06:
+ ldrh r0, [r2, 0x22]
+ subs r0, 0x4
+ strh r0, [r2, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x4
+ negs r1, r1
+ cmp r0, r1
+ bge _080B8E1E
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080B8E1E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B8DE8
+
+ thumb_func_start sub_80B8E24
+sub_80B8E24: @ 80B8E24
+ push {lr}
+ adds r3, r0, 0
+ movs r0, 0x2E
+ ldrsh r1, [r3, r0]
+ cmp r1, 0
+ beq _080B8E36
+ cmp r1, 0x1
+ beq _080B8E4C
+ b _080B8E8E
+_080B8E36:
+ ldrh r0, [r3, 0x26]
+ adds r0, 0x4
+ strh r0, [r3, 0x26]
+ lsls r0, 16
+ cmp r0, 0
+ blt _080B8E8E
+ strh r1, [r3, 0x26]
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ b _080B8E8E
+_080B8E4C:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080B8E8E
+ movs r0, 0
+ strh r0, [r3, 0x30]
+ movs r1, 0x3E
+ adds r1, r3
+ mov r12, r1
+ ldrb r2, [r1]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldrh r0, [r3, 0x32]
+ adds r0, 0x1
+ strh r0, [r3, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ bne _080B8E8E
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080B8E8E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B8E24
+
+ thumb_func_start sub_80B8E94
+sub_80B8E94: @ 80B8E94
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080B8EB4 @ =gTasks
+ adds r1, r0, r1
+ ldr r0, _080B8EB8 @ =gBattleAnimArgs
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ cmp r0, 0
+ bne _080B8EC0
+ ldr r0, _080B8EBC @ =sub_80B8ED4
+ b _080B8EC2
+ .align 2, 0
+_080B8EB4: .4byte gTasks
+_080B8EB8: .4byte gBattleAnimArgs
+_080B8EBC: .4byte sub_80B8ED4
+_080B8EC0:
+ ldr r0, _080B8ED0 @ =sub_80B908C
+_080B8EC2:
+ str r0, [r1]
+ ldr r1, [r1]
+ adds r0, r2, 0
+ bl _call_via_r1
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B8ED0: .4byte sub_80B908C
+ thumb_func_end sub_80B8E94
+
+ thumb_func_start sub_80B8ED4
+sub_80B8ED4: @ 80B8ED4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080B8EF8 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _080B8EEE
+ b _080B9082
+_080B8EEE:
+ lsls r0, 2
+ ldr r1, _080B8EFC @ =_080B8F00
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B8EF8: .4byte gTasks
+_080B8EFC: .4byte _080B8F00
+ .align 2, 0
+_080B8F00:
+ .4byte _080B8F14
+ .4byte _080B8F9C
+ .4byte _080B8FAC
+ .4byte _080B9050
+ .4byte _080B9064
+_080B8F14:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x1C]
+ ldr r0, _080B8F3C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x1E]
+ cmp r0, 0x1
+ bne _080B8F48
+ ldr r0, _080B8F40 @ =gBattle_BG1_X
+ ldrh r0, [r0]
+ strh r0, [r4, 0x20]
+ ldr r0, _080B8F44 @ =gBattle_BG1_Y
+ b _080B8F50
+ .align 2, 0
+_080B8F3C: .4byte gBattleAnimAttacker
+_080B8F40: .4byte gBattle_BG1_X
+_080B8F44: .4byte gBattle_BG1_Y
+_080B8F48:
+ ldr r0, _080B8F8C @ =gBattle_BG2_X
+ ldrh r0, [r0]
+ strh r0, [r4, 0x20]
+ ldr r0, _080B8F90 @ =gBattle_BG2_Y
+_080B8F50:
+ ldrh r0, [r0]
+ strh r0, [r4, 0x22]
+ ldr r0, _080B8F94 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ subs r1, 0x20
+ strh r1, [r4, 0x24]
+ adds r0, 0x20
+ strh r0, [r4, 0x26]
+ cmp r1, 0
+ bge _080B8F72
+ movs r0, 0
+ strh r0, [r4, 0x24]
+_080B8F72:
+ ldr r2, _080B8F98 @ =gSprites
+ movs r3, 0x1C
+ ldrsh r1, [r4, r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ b _080B9056
+ .align 2, 0
+_080B8F8C: .4byte gBattle_BG2_X
+_080B8F90: .4byte gBattle_BG2_Y
+_080B8F94: .4byte gBattleAnimAttacker
+_080B8F98: .4byte gSprites
+_080B8F9C:
+ ldrb r0, [r4, 0x1E]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ movs r3, 0x26
+ ldrsh r2, [r4, r3]
+ bl sub_80B92B8
+ b _080B9056
+_080B8FAC:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x6
+ movs r1, 0x7F
+ ands r0, r1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _080B8FCE
+ movs r0, 0
+ strh r0, [r4, 0x10]
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+_080B8FCE:
+ ldr r1, _080B8FF0 @ =gSineTable
+ movs r2, 0xC
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 20
+ ldrh r3, [r4, 0xE]
+ adds r2, r0, r3
+ strh r2, [r4, 0x12]
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ bne _080B8FF8
+ ldr r1, _080B8FF4 @ =gBattle_BG1_Y
+ b _080B8FFA
+ .align 2, 0
+_080B8FF0: .4byte gSineTable
+_080B8FF4: .4byte gBattle_BG1_Y
+_080B8FF8:
+ ldr r1, _080B901C @ =gBattle_BG2_Y
+_080B8FFA:
+ ldrh r0, [r4, 0x22]
+ subs r0, r2
+ strh r0, [r1]
+ movs r2, 0x12
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x3F
+ ble _080B9082
+ ldrh r0, [r4, 0x24]
+ movs r1, 0x78
+ subs r2, r1, r0
+ strh r2, [r4, 0x12]
+ movs r3, 0x1E
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x1
+ bne _080B9024
+ ldr r1, _080B9020 @ =gBattle_BG1_Y
+ b _080B9026
+ .align 2, 0
+_080B901C: .4byte gBattle_BG2_Y
+_080B9020: .4byte gBattle_BG1_Y
+_080B9024:
+ ldr r1, _080B9048 @ =gBattle_BG2_Y
+_080B9026:
+ ldrh r0, [r4, 0x22]
+ subs r0, r2
+ strh r0, [r1]
+ ldr r2, _080B904C @ =gSprites
+ movs r1, 0x1C
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrh r2, [r1, 0x20]
+ movs r3, 0x88
+ lsls r3, 1
+ adds r0, r3, 0
+ subs r0, r2
+ strh r0, [r1, 0x24]
+ b _080B9056
+ .align 2, 0
+_080B9048: .4byte gBattle_BG2_Y
+_080B904C: .4byte gSprites
+_080B9050:
+ ldr r1, _080B9060 @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+_080B9056:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B9082
+ .align 2, 0
+_080B9060: .4byte gScanlineEffect
+_080B9064:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ ldr r2, _080B9088 @ =gSprites
+ movs r0, 0x1C
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+_080B9082:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9088: .4byte gSprites
+ thumb_func_end sub_80B8ED4
+
+ thumb_func_start sub_80B908C
+sub_80B908C: @ 80B908C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080B90CC @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r3, r1, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r3]
+ movs r4, 0
+ strh r4, [r1, 0x24]
+ strh r4, [r1, 0x26]
+ ldr r0, _080B90D0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080B90D8
+ ldr r0, _080B90D4 @ =gBattle_BG1_Y
+ b _080B90DA
+ .align 2, 0
+_080B90CC: .4byte gSprites
+_080B90D0: .4byte gBattleAnimAttacker
+_080B90D4: .4byte gBattle_BG1_Y
+_080B90D8:
+ ldr r0, _080B90E8 @ =gBattle_BG2_Y
+_080B90DA:
+ strh r4, [r0]
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B90E8: .4byte gBattle_BG2_Y
+ thumb_func_end sub_80B908C
+
+ thumb_func_start sub_80B90EC
+sub_80B90EC: @ 80B90EC
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080B910C @ =gTasks
+ adds r1, r0, r1
+ ldr r0, _080B9110 @ =gBattleAnimArgs
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ cmp r0, 0
+ bne _080B9118
+ ldr r0, _080B9114 @ =sub_80B912C
+ b _080B911A
+ .align 2, 0
+_080B910C: .4byte gTasks
+_080B9110: .4byte gBattleAnimArgs
+_080B9114: .4byte sub_80B912C
+_080B9118:
+ ldr r0, _080B9128 @ =sub_80B91B0
+_080B911A:
+ str r0, [r1]
+ ldr r1, [r1]
+ adds r0, r2, 0
+ bl _call_via_r1
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9128: .4byte sub_80B91B0
+ thumb_func_end sub_80B90EC
+
+ thumb_func_start sub_80B912C
+sub_80B912C: @ 80B912C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080B914C @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r5, [r4, r0]
+ cmp r5, 0
+ beq _080B9150
+ cmp r5, 0x1
+ beq _080B91A4
+ b _080B91AA
+ .align 2, 0
+_080B914C: .4byte gTasks
+_080B9150:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x1C]
+ ldr r3, _080B91A0 @ =gSprites
+ movs r0, 0x1C
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ movs r0, 0x1C
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ strh r5, [r0, 0x24]
+ movs r1, 0x1C
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ ldrh r2, [r1, 0x22]
+ movs r0, 0xA0
+ subs r0, r2
+ strh r0, [r1, 0x26]
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B91AA
+ .align 2, 0
+_080B91A0: .4byte gSprites
+_080B91A4:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080B91AA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B912C
+
+ thumb_func_start sub_80B91B0
+sub_80B91B0: @ 80B91B0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080B91D4 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bhi _080B92B2
+ lsls r0, 2
+ ldr r1, _080B91D8 @ =_080B91DC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B91D4: .4byte gTasks
+_080B91D8: .4byte _080B91DC
+ .align 2, 0
+_080B91DC:
+ .4byte _080B91F0
+ .4byte _080B9244
+ .4byte _080B9252
+ .4byte _080B926C
+ .4byte _080B92AC
+_080B91F0:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x1C]
+ ldr r0, _080B9214 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x1E]
+ cmp r0, 0x1
+ bne _080B921C
+ ldr r0, _080B9218 @ =gBattle_BG1_X
+ b _080B921E
+ .align 2, 0
+_080B9214: .4byte gBattleAnimAttacker
+_080B9218: .4byte gBattle_BG1_X
+_080B921C:
+ ldr r0, _080B923C @ =gBattle_BG2_X
+_080B921E:
+ ldrh r0, [r0]
+ strh r0, [r4, 0x20]
+ ldr r0, _080B9240 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ subs r1, 0x20
+ strh r1, [r4, 0x24]
+ adds r0, 0x20
+ strh r0, [r4, 0x26]
+ b _080B929A
+ .align 2, 0
+_080B923C: .4byte gBattle_BG2_X
+_080B9240: .4byte gBattleAnimAttacker
+_080B9244:
+ ldrb r0, [r4, 0x1E]
+ movs r1, 0x26
+ ldrsh r2, [r4, r1]
+ movs r1, 0
+ bl sub_80B92B8
+ b _080B929A
+_080B9252:
+ ldr r2, _080B9268 @ =gSprites
+ movs r0, 0x1C
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0x60
+ strh r1, [r0, 0x26]
+ b _080B929A
+ .align 2, 0
+_080B9268: .4byte gSprites
+_080B926C:
+ ldr r2, _080B92A4 @ =gSprites
+ movs r0, 0x1C
+ 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]
+ movs r0, 0x1C
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0x26
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B92B2
+ ldr r1, _080B92A8 @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+_080B929A:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B92B2
+ .align 2, 0
+_080B92A4: .4byte gSprites
+_080B92A8: .4byte gScanlineEffect
+_080B92AC:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080B92B2:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B91B0
+
+ thumb_func_start sub_80B92B8
+sub_80B92B8: @ 80B92B8
+ push {r4-r6,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 16
+ lsrs r4, r2, 16
+ cmp r0, 0x1
+ bne _080B92DC
+ ldr r0, _080B92D4 @ =gBattle_BG1_X
+ ldrh r3, [r0]
+ ldr r0, _080B92D8 @ =0x04000014
+ b _080B92E2
+ .align 2, 0
+_080B92D4: .4byte gBattle_BG1_X
+_080B92D8: .4byte 0x04000014
+_080B92DC:
+ ldr r0, _080B9368 @ =gBattle_BG2_X
+ ldrh r3, [r0]
+ ldr r0, _080B936C @ =0x04000018
+_080B92E2:
+ str r0, [sp]
+ lsls r0, r1, 16
+ cmp r0, 0
+ bge _080B92EC
+ movs r1, 0
+_080B92EC:
+ lsls r2, r1, 16
+ lsls r0, r4, 16
+ asrs r4, r0, 16
+ cmp r2, r0
+ bge _080B9318
+ ldr r5, _080B9370 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r5, r0
+_080B92FE:
+ asrs r2, 16
+ lsls r1, r2, 1
+ adds r0, r1, r5
+ strh r3, [r0]
+ adds r1, r6
+ strh r3, [r1]
+ adds r2, 0x1
+ lsls r2, 16
+ lsrs r1, r2, 16
+ lsls r2, r1, 16
+ asrs r0, r2, 16
+ cmp r0, r4
+ blt _080B92FE
+_080B9318:
+ lsls r1, 16
+ asrs r0, r1, 16
+ cmp r0, 0x9F
+ bgt _080B9346
+ ldr r4, _080B9370 @ =gScanlineEffectRegBuffers
+ lsls r0, r3, 16
+ asrs r0, 16
+ adds r3, r0, 0
+ adds r3, 0xF0
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r5, r4, r0
+_080B9330:
+ asrs r2, r1, 16
+ lsls r1, r2, 1
+ adds r0, r1, r4
+ strh r3, [r0]
+ adds r1, r5
+ strh r3, [r1]
+ adds r2, 0x1
+ lsls r1, r2, 16
+ asrs r0, r1, 16
+ cmp r0, 0x9F
+ ble _080B9330
+_080B9346:
+ ldr r0, _080B9374 @ =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
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9368: .4byte gBattle_BG2_X
+_080B936C: .4byte 0x04000018
+_080B9370: .4byte gScanlineEffectRegBuffers
+_080B9374: .4byte 0xa2600001
+ thumb_func_end sub_80B92B8
+
+ thumb_func_start sub_80B9378
+sub_80B9378: @ 80B9378
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ ldr r0, _080B938C @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ adds r7, r0, 0
+ cmp r1, 0
+ bne _080B9394
+ ldr r0, _080B9390 @ =gBattleAnimAttacker
+ b _080B9396
+ .align 2, 0
+_080B938C: .4byte gBattleAnimArgs
+_080B9390: .4byte gBattleAnimAttacker
+_080B9394:
+ ldr r0, _080B93F8 @ =gBattleAnimTarget
+_080B9396:
+ ldrb r4, [r0]
+ movs r6, 0x18
+ adds r1, r7, 0
+ movs r2, 0x2
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x1
+ bne _080B93B2
+ negs r0, r6
+ lsls r0, 16
+ lsrs r6, r0, 16
+ movs r2, 0x4
+ ldrsh r0, [r1, r2]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080B93B2:
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r6
+ strh r0, [r5, 0x20]
+ adds r0, r4, 0
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1E
+ strh r0, [r5, 0x22]
+ ldrh r1, [r7, 0xA]
+ strh r1, [r5, 0x2E]
+ ldrh r1, [r7, 0x4]
+ ldrh r2, [r5, 0x20]
+ adds r1, r2
+ strh r1, [r5, 0x32]
+ ldrh r1, [r7, 0x6]
+ adds r0, r1
+ strh r0, [r5, 0x36]
+ ldrh r0, [r7, 0x8]
+ strh r0, [r5, 0x38]
+ adds r0, r5, 0
+ bl sub_8075068
+ ldr r0, _080B93FC @ =sub_80B9400
+ str r0, [r5, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B93F8: .4byte gBattleAnimTarget
+_080B93FC: .4byte sub_80B9400
+ thumb_func_end sub_80B9378
+
+ thumb_func_start sub_80B9400
+sub_80B9400: @ 80B9400
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B9414
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B9414:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B9400
+
+ thumb_func_start sub_80B941C
+sub_80B941C: @ 80B941C
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ ldr r0, _080B9430 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B9438
+ ldr r0, _080B9434 @ =gBattleAnimAttacker
+ b _080B943A
+ .align 2, 0
+_080B9430: .4byte gBattleAnimArgs
+_080B9434: .4byte gBattleAnimAttacker
+_080B9438:
+ ldr r0, _080B9498 @ =gBattleAnimTarget
+_080B943A:
+ ldrb r5, [r0]
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080B949C @ =0x0000fff0
+ adds r0, r2
+ ldr r4, _080B94A0 @ =gBattleAnimArgs
+ movs r3, 0x2
+ ldrsh r1, [r4, r3]
+ lsls r1, 5
+ adds r0, r1
+ strh r0, [r6, 0x20]
+ adds r0, r5, 0
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x20
+ strh r0, [r6, 0x22]
+ ldrh r2, [r6, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ movs r3, 0x2
+ ldrsh r0, [r4, r3]
+ lsls r0, 3
+ adds r1, r0
+ ldr r3, _080B94A4 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080B94A8 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r6, 0x4]
+ ldr r1, _080B94AC @ =DestroyAnimSprite
+ adds r0, r6, 0
+ bl StoreSpriteCallbackInData6
+ ldrh r0, [r4, 0x4]
+ strh r0, [r6, 0x2E]
+ ldr r0, _080B94B0 @ =sub_8074C44
+ str r0, [r6, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9498: .4byte gBattleAnimTarget
+_080B949C: .4byte 0x0000fff0
+_080B94A0: .4byte gBattleAnimArgs
+_080B94A4: .4byte 0x000003ff
+_080B94A8: .4byte 0xfffffc00
+_080B94AC: .4byte DestroyAnimSprite
+_080B94B0: .4byte sub_8074C44
+ thumb_func_end sub_80B941C
+
+ thumb_func_start sub_80B94B4
+sub_80B94B4: @ 80B94B4
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080B94D8 @ =gTasks
+ adds r4, r0, r1
+ ldr r0, _080B94DC @ =gBattleAnimArgs
+ ldrh r2, [r0, 0x2]
+ movs r3, 0x2
+ ldrsh r1, [r0, r3]
+ adds r6, r0, 0
+ cmp r1, 0
+ beq _080B94E0
+ adds r0, r2, 0x3
+ b _080B94EC
+ .align 2, 0
+_080B94D8: .4byte gTasks
+_080B94DC: .4byte gBattleAnimArgs
+_080B94E0:
+ ldr r0, _080B950C @ =gUnknown_2037EEC
+ ldrh r0, [r0]
+ movs r1, 0xA
+ bl __udivsi3
+ adds r0, 0x3
+_080B94EC:
+ strh r0, [r4, 0x26]
+ strh r0, [r4, 0x24]
+ adds r1, r6, 0
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0xE]
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x4
+ beq _080B9518
+ cmp r0, 0x5
+ bne _080B9558
+ ldr r0, _080B9510 @ =gBattle_BG3_X
+ ldrh r0, [r0]
+ strh r0, [r4, 0x22]
+ ldr r0, _080B9514 @ =sub_80B9584
+ b _080B9576
+ .align 2, 0
+_080B950C: .4byte gUnknown_2037EEC
+_080B9510: .4byte gBattle_BG3_X
+_080B9514: .4byte sub_80B9584
+_080B9518:
+ movs r0, 0
+ strh r0, [r4, 0x22]
+ movs r5, 0
+_080B951E:
+ lsls r0, r5, 24
+ lsrs r0, 24
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B9548
+ movs r3, 0x22
+ ldrsh r0, [r4, r3]
+ adds r0, 0x9
+ lsls r0, 1
+ adds r1, r4, 0
+ adds r1, 0x8
+ adds r1, r0
+ ldr r0, _080B9554 @ =gBattlerSpriteIds
+ adds r0, r5, r0
+ ldrb r0, [r0]
+ strh r0, [r1]
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x1
+ strh r0, [r4, 0x22]
+_080B9548:
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0x3
+ bls _080B951E
+ b _080B9574
+ .align 2, 0
+_080B9554: .4byte gBattlerSpriteIds
+_080B9558:
+ ldrb r0, [r6]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x1A]
+ cmp r0, 0xFF
+ bne _080B9570
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ b _080B9578
+_080B9570:
+ movs r0, 0x1
+ strh r0, [r4, 0x22]
+_080B9574:
+ ldr r0, _080B9580 @ =sub_80B967C
+_080B9576:
+ str r0, [r4]
+_080B9578:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9580: .4byte sub_80B967C
+ thumb_func_end sub_80B94B4
+
+ thumb_func_start sub_80B9584
+sub_80B9584: @ 80B9584
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080B95A8 @ =gTasks
+ adds r3, r0, r1
+ movs r0, 0x8
+ ldrsh r1, [r3, r0]
+ cmp r1, 0x1
+ beq _080B9608
+ cmp r1, 0x1
+ bgt _080B95AC
+ cmp r1, 0
+ beq _080B95B2
+ b _080B9674
+ .align 2, 0
+_080B95A8: .4byte gTasks
+_080B95AC:
+ cmp r1, 0x2
+ beq _080B9668
+ b _080B9674
+_080B95B2:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B9674
+ strh r1, [r3, 0xA]
+ ldrh r1, [r3, 0xC]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080B95DC
+ ldr r1, _080B95D8 @ =gBattle_BG3_X
+ ldrh r0, [r3, 0x26]
+ ldrh r2, [r3, 0x22]
+ adds r0, r2
+ strh r0, [r1]
+ b _080B95E6
+ .align 2, 0
+_080B95D8: .4byte gBattle_BG3_X
+_080B95DC:
+ ldr r0, _080B9604 @ =gBattle_BG3_X
+ ldrh r1, [r3, 0x22]
+ ldrh r2, [r3, 0x26]
+ subs r1, r2
+ strh r1, [r0]
+_080B95E6:
+ ldrh r0, [r3, 0xC]
+ adds r0, 0x1
+ strh r0, [r3, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0xE
+ ldrsh r1, [r3, r2]
+ cmp r0, r1
+ bne _080B9674
+ movs r0, 0
+ strh r0, [r3, 0xC]
+ ldrh r0, [r3, 0x24]
+ subs r0, 0x1
+ strh r0, [r3, 0x24]
+ b _080B965C
+ .align 2, 0
+_080B9604: .4byte gBattle_BG3_X
+_080B9608:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B9674
+ movs r0, 0
+ strh r0, [r3, 0xA]
+ ldrh r0, [r3, 0xC]
+ ands r1, r0
+ cmp r1, 0
+ bne _080B9634
+ ldr r1, _080B9630 @ =gBattle_BG3_X
+ ldrh r0, [r3, 0x24]
+ ldrh r2, [r3, 0x22]
+ adds r0, r2
+ strh r0, [r1]
+ b _080B963E
+ .align 2, 0
+_080B9630: .4byte gBattle_BG3_X
+_080B9634:
+ ldr r0, _080B9664 @ =gBattle_BG3_X
+ ldrh r1, [r3, 0x22]
+ ldrh r2, [r3, 0x24]
+ subs r1, r2
+ strh r1, [r0]
+_080B963E:
+ ldrh r0, [r3, 0xC]
+ adds r0, 0x1
+ strh r0, [r3, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080B9674
+ movs r0, 0
+ strh r0, [r3, 0xC]
+ ldrh r0, [r3, 0x24]
+ subs r0, 0x1
+ strh r0, [r3, 0x24]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080B9674
+_080B965C:
+ ldrh r0, [r3, 0x8]
+ adds r0, 0x1
+ strh r0, [r3, 0x8]
+ b _080B9674
+ .align 2, 0
+_080B9664: .4byte gBattle_BG3_X
+_080B9668:
+ ldr r1, _080B9678 @ =gBattle_BG3_X
+ ldrh r0, [r3, 0x22]
+ strh r0, [r1]
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080B9674:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9678: .4byte gBattle_BG3_X
+ thumb_func_end sub_80B9584
+
+ thumb_func_start sub_80B967C
+sub_80B967C: @ 80B967C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ ldr r1, _080B96A0 @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r5, [r4, r0]
+ cmp r5, 0x1
+ beq _080B96DC
+ cmp r5, 0x1
+ bgt _080B96A4
+ cmp r5, 0
+ beq _080B96AA
+ b _080B9756
+ .align 2, 0
+_080B96A0: .4byte gTasks
+_080B96A4:
+ cmp r5, 0x2
+ beq _080B9718
+ b _080B9756
+_080B96AA:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B9756
+ strh r5, [r4, 0xA]
+ adds r0, r4, 0
+ bl sub_80B9760
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0xE
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ bne _080B9756
+ strh r5, [r4, 0xC]
+ ldrh r0, [r4, 0x24]
+ subs r0, 0x1
+ strh r0, [r4, 0x24]
+ b _080B9710
+_080B96DC:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ movs r5, 0
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B9756
+ strh r5, [r4, 0xA]
+ adds r0, r4, 0
+ bl sub_80B9760
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080B9756
+ strh r5, [r4, 0xC]
+ ldrh r0, [r4, 0x24]
+ subs r0, 0x1
+ strh r0, [r4, 0x24]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080B9756
+_080B9710:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B9756
+_080B9718:
+ movs r2, 0
+ movs r7, 0x22
+ ldrsh r0, [r4, r7]
+ cmp r2, r0
+ bge _080B9750
+ ldr r0, _080B975C @ =gSprites
+ mov r12, r0
+ adds r5, r4, 0
+ adds r5, 0x8
+ movs r6, 0
+_080B972C:
+ adds r0, r2, 0
+ adds r0, 0x9
+ lsls r0, 1
+ adds r0, r5, r0
+ movs r7, 0
+ ldrsh r1, [r0, r7]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ add r0, r12
+ strh r6, [r0, 0x24]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ movs r1, 0x22
+ ldrsh r0, [r4, r1]
+ cmp r2, r0
+ blt _080B972C
+_080B9750:
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+_080B9756:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B975C: .4byte gSprites
+ thumb_func_end sub_80B967C
+
+ thumb_func_start sub_80B9760
+sub_80B9760: @ 80B9760
+ push {r4-r7,lr}
+ adds r3, r0, 0
+ ldrh r1, [r3, 0xC]
+ movs r4, 0x1
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080B9788
+ movs r0, 0x24
+ ldrsh r1, [r3, r0]
+ lsrs r0, r1, 31
+ adds r1, r0
+ asrs r1, 1
+ ldrh r2, [r3, 0x24]
+ adds r0, r4, 0
+ ands r0, r2
+ adds r1, r0
+ lsls r1, 16
+ lsrs r4, r1, 16
+ b _080B9798
+_080B9788:
+ movs r1, 0x24
+ ldrsh r0, [r3, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ negs r0, r0
+ lsls r0, 16
+ lsrs r4, r0, 16
+_080B9798:
+ movs r2, 0
+ movs r7, 0x22
+ ldrsh r0, [r3, r7]
+ cmp r2, r0
+ bge _080B97CC
+ ldr r6, _080B97D4 @ =gSprites
+ adds r5, r3, 0
+ adds r5, 0x8
+_080B97A8:
+ adds r0, r2, 0
+ adds r0, 0x9
+ lsls r0, 1
+ adds r0, r5, r0
+ movs r7, 0
+ ldrsh r1, [r0, r7]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ strh r4, [r0, 0x24]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ movs r1, 0x22
+ ldrsh r0, [r3, r1]
+ cmp r2, r0
+ blt _080B97A8
+_080B97CC:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B97D4: .4byte gSprites
+ thumb_func_end sub_80B9760
+
+ thumb_func_start sub_80B97D8
+sub_80B97D8: @ 80B97D8
+ push {lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldr r3, _080B97F8 @ =gBattleAnimArgs
+ movs r2, 0
+ ldr r0, _080B97FC @ =gUnknown_2037EEC
+ ldrh r0, [r0]
+ cmp r0, 0x63
+ bls _080B97EC
+ movs r2, 0x1
+_080B97EC:
+ strh r2, [r3, 0x1E]
+ adds r0, r1, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B97F8: .4byte gBattleAnimArgs
+_080B97FC: .4byte gUnknown_2037EEC
+ thumb_func_end sub_80B97D8
+
+ thumb_func_start sub_80B9800
+sub_80B9800: @ 80B9800
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r2, _080B9818 @ =gBattleAnimArgs
+ ldrh r1, [r2]
+ movs r0, 0x1
+ ands r0, r1
+ adds r6, r2, 0
+ cmp r0, 0
+ beq _080B9820
+ ldr r0, _080B981C @ =gBattleAnimTarget
+ b _080B9822
+ .align 2, 0
+_080B9818: .4byte gBattleAnimArgs
+_080B981C: .4byte gBattleAnimTarget
+_080B9820:
+ ldr r0, _080B9890 @ =gBattleAnimAttacker
+_080B9822:
+ ldrb r0, [r0]
+ adds r5, r0, 0
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x1
+ ble _080B9832
+ movs r0, 0x2
+ eors r5, r0
+_080B9832:
+ ldr r0, _080B9894 @ =sub_80B98A8
+ ldrb r1, [r6, 0x2]
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080B9898 @ =gTasks
+ adds r4, r0
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x20
+ subs r1, r0
+ ldr r2, _080B989C @ =0x000001ff
+ adds r0, r2, 0
+ ands r1, r0
+ strh r1, [r4, 0xA]
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x40
+ subs r1, r0
+ movs r0, 0xFF
+ ands r1, r0
+ strh r1, [r4, 0xC]
+ ldr r2, _080B98A0 @ =gBattle_BG3_X
+ ldrh r0, [r4, 0xA]
+ strh r0, [r2]
+ ldr r0, _080B98A4 @ =gBattle_BG3_Y
+ strh r1, [r0]
+ ldrh r0, [r6, 0x4]
+ strh r0, [r4, 0xE]
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9890: .4byte gBattleAnimAttacker
+_080B9894: .4byte sub_80B98A8
+_080B9898: .4byte gTasks
+_080B989C: .4byte 0x000001ff
+_080B98A0: .4byte gBattle_BG3_X
+_080B98A4: .4byte gBattle_BG3_Y
+ thumb_func_end sub_80B9800
+
+ thumb_func_start sub_80B98A8
+sub_80B98A8: @ 80B98A8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ ldr r1, _080B98D8 @ =gTasks
+ adds r2, r0, r1
+ ldr r0, _080B98DC @ =gBattleAnimArgs
+ movs r4, 0xE
+ ldrsh r1, [r0, r4]
+ movs r4, 0xE
+ ldrsh r0, [r2, r4]
+ cmp r1, r0
+ bne _080B98E8
+ ldr r0, _080B98E0 @ =gBattle_BG3_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080B98E4 @ =gBattle_BG3_Y
+ strh r1, [r0]
+ adds r0, r3, 0
+ bl DestroyTask
+ b _080B98F4
+ .align 2, 0
+_080B98D8: .4byte gTasks
+_080B98DC: .4byte gBattleAnimArgs
+_080B98E0: .4byte gBattle_BG3_X
+_080B98E4: .4byte gBattle_BG3_Y
+_080B98E8:
+ ldr r1, _080B98FC @ =gBattle_BG3_X
+ ldrh r0, [r2, 0xA]
+ strh r0, [r1]
+ ldr r1, _080B9900 @ =gBattle_BG3_Y
+ ldrh r0, [r2, 0xC]
+ strh r0, [r1]
+_080B98F4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B98FC: .4byte gBattle_BG3_X
+_080B9900: .4byte gBattle_BG3_Y
+ thumb_func_end sub_80B98A8
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
index 8a240ed43..19ff62664 100644
--- a/asm/hall_of_fame.s
+++ b/asm/hall_of_fame.s
@@ -521,7 +521,7 @@ _080F21B2:
movs r0, 0
movs r1, 0x2
movs r3, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
@@ -1194,7 +1194,7 @@ sub_80F26D4: @ 80F26D4
ldr r1, _080F2758 @ =0x0000021d
movs r0, 0x1
movs r2, 0xD0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
movs r0, 0x78
strh r0, [r4, 0xE]
ldr r0, _080F275C @ =Task_Hof_WaitAndPrintPlayerInfo
@@ -1277,7 +1277,7 @@ _080F27AC:
movs r0, 0
movs r1, 0x2
movs r3, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
@@ -1607,7 +1607,7 @@ sub_80F2AA4: @ 80F2AA4
movs r1, 0x1E
movs r2, 0
movs r3, 0xC
- bl CreateWindow_SnapRight_StdPal
+ bl CreateTopBarWindowLoadPalette
movs r0, 0x3
bl Save_LoadGameData
lsls r0, 24
@@ -1894,7 +1894,7 @@ _080F2CB4:
adds r0, r5, 0
movs r2, 0
movs r3, 0
- bl Menu_PrintHelpSystemUIHeader
+ bl TopBarWindowPrintTwoStrings
b _080F2D34
.align 2, 0
_080F2D08: .4byte 0xffff0000
@@ -1911,7 +1911,7 @@ _080F2D24:
adds r0, r5, 0
movs r2, 0
movs r3, 0
- bl Menu_PrintHelpSystemUIHeader
+ bl TopBarWindowPrintTwoStrings
_080F2D34:
ldr r0, _080F2D58 @ =gTasks
ldr r1, [sp, 0x14]
@@ -2298,7 +2298,7 @@ sub_80F3030: @ 80F3030
bl HideBg
movs r0, 0x3
bl HideBg
- bl sub_810F740
+ bl DestroyTopBarWindow
bl FreeAllWindowBuffers
movs r0, 0x1
bl UnsetBgTilemapBuffer
@@ -2322,7 +2322,7 @@ _080F3082:
bl Free
str r4, [r5]
_080F3090:
- bl sub_80CA5A0
+ bl ReturnFromHallOfFamePC
_080F3094:
pop {r4,r5}
pop {r0}
@@ -2342,7 +2342,7 @@ sub_80F30A4: @ 80F30A4
ldr r0, _080F30FC @ =gText_ABUTTONExit
movs r1, 0x8
movs r2, 0x1
- bl PrintTextOnRightSnappedWindow
+ bl TopBarWindowPrintString
movs r0, 0
movs r1, 0
bl DrawDialogueFrame
@@ -2358,7 +2358,7 @@ sub_80F30A4: @ 80F30A4
movs r0, 0
movs r1, 0x2
movs r3, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
@@ -2436,7 +2436,7 @@ HallOfFame_PrintWelcomeText: @ 80F313C
movs r1, 0x2
adds r2, r4, 0
movs r3, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
@@ -2535,7 +2535,7 @@ _080F322E:
movs r1, 0x2
movs r2, 0x10
movs r3, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
_080F3252:
movs r2, 0
ldrb r0, [r7, 0xA]
@@ -2606,7 +2606,7 @@ _080F32C4:
movs r0, 0
movs r1, 0x2
movs r3, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
ldrh r2, [r7, 0x8]
ldr r4, _080F3320 @ =0x000001ff
adds r0, r4, 0
@@ -2676,7 +2676,7 @@ _080F3348:
movs r1, 0x2
movs r2, 0x80
movs r3, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r1, _080F33D4 @ =gUnknown_84160F4
add r0, sp, 0xC
bl StringCopy
@@ -2694,7 +2694,7 @@ _080F3348:
movs r1, 0x2
movs r2, 0x20
movs r3, 0x11
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r1, _080F33D8 @ =gUnknown_8416104
add r0, sp, 0xC
bl StringCopy
@@ -2711,7 +2711,7 @@ _080F3348:
movs r1, 0x2
movs r2, 0x60
movs r3, 0x11
- bl box_print
+ bl AddTextPrinterParameterized3
_080F33BA:
movs r0, 0
movs r1, 0x3
@@ -2750,7 +2750,7 @@ sub_80F33DC: @ 80F33DC
movs r0, 0x1
movs r1, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
movs r7, 0
str r7, [sp]
str r7, [sp, 0x4]
@@ -2764,7 +2764,7 @@ sub_80F33DC: @ 80F33DC
movs r1, 0x2
movs r2, 0x4
movs r3, 0x3
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
ldr r0, _080F35FC @ =gSaveBlock2Ptr
mov r10, r0
ldr r1, [r0]
@@ -2785,7 +2785,7 @@ sub_80F33DC: @ 80F33DC
movs r0, 0x1
movs r1, 0x2
movs r3, 0x3
- bl box_print
+ bl AddTextPrinterParameterized3
mov r1, r10
ldr r0, [r1]
ldrb r4, [r0, 0xA]
@@ -2801,7 +2801,7 @@ sub_80F33DC: @ 80F33DC
movs r1, 0x2
movs r2, 0x4
movs r3, 0x12
- bl box_print
+ bl AddTextPrinterParameterized3
add r1, sp, 0x14
mov r8, r1
ldr r1, _080F3604 @ =0x000186a0
@@ -2869,7 +2869,7 @@ sub_80F33DC: @ 80F33DC
movs r1, 0x2
adds r2, r6, 0
movs r3, 0x12
- bl box_print
+ bl AddTextPrinterParameterized3
mov r1, r9
str r1, [sp]
str r7, [sp, 0x4]
@@ -2879,7 +2879,7 @@ sub_80F33DC: @ 80F33DC
movs r1, 0x2
movs r2, 0x4
movs r3, 0x20
- bl box_print
+ bl AddTextPrinterParameterized3
add r5, sp, 0x14
mov r0, r10
ldr r4, [r0]
@@ -2957,7 +2957,7 @@ _080F3582:
movs r0, 0x1
movs r1, 0x2
movs r3, 0x20
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x1
movs r1, 0x3
bl CopyWindowToVram
@@ -3073,16 +3073,16 @@ sub_80F36BC: @ 80F36BC
bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
bl ResetAllPicSprites
bl FreeAllSpritePalettes
ldr r1, _080F36EC @ =gReservedSpritePaletteCount
movs r0, 0x8
strb r0, [r1]
ldr r0, _080F36F0 @ =gUnknown_840C248
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F36F4 @ =gUnknown_840C258
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
pop {r0}
bx r0
.align 2, 0
@@ -3174,12 +3174,12 @@ _080F37A4:
movs r0, 0x1
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
b _080F3854
.align 2, 0
_080F37B8: .4byte gUnknown_840C3BC
_080F37BC:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
cmp r0, 0
beq _080F3854
diff --git a/asm/help_system.s b/asm/help_system.s
deleted file mode 100644
index 7026c65d5..000000000
--- a/asm/help_system.s
+++ /dev/null
@@ -1,2254 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_813B870
-sub_813B870: @ 813B870
- push {r4,r5,lr}
- ldr r0, _0813B888 @ =gUnknown_203F178
- ldrb r0, [r0, 0x15]
- cmp r0, 0x8
- bls _0813B87C
- b _0813BB24
-_0813B87C:
- lsls r0, 2
- ldr r1, _0813B88C @ =_0813B890
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813B888: .4byte gUnknown_203F178
-_0813B88C: .4byte _0813B890
- .align 2, 0
-_0813B890:
- .4byte _0813B8B4
- .4byte _0813B968
- .4byte _0813B994
- .4byte _0813B9D8
- .4byte _0813BA40
- .4byte _0813BA78
- .4byte _0813BAA0
- .4byte _0813BAE0
- .4byte _0813BB14
-_0813B8B4:
- ldr r1, _0813B904 @ =gUnknown_203F177
- movs r0, 0
- strb r0, [r1]
- ldr r0, _0813B908 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- bne _0813B900
- ldr r2, _0813B90C @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0813B8DA
- ldr r0, _0813B910 @ =gUnknown_203F175
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0813B900
-_0813B8DA:
- ldrh r1, [r2, 0x2E]
- movs r0, 0xC0
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- bne _0813B8E8
- b _0813BB24
-_0813B8E8:
- bl sub_812B45C
- lsls r0, 24
- cmp r0, 0
- beq _0813B8FA
- ldr r0, _0813B914 @ =gUnknown_3005ECC
- ldrb r0, [r0]
- cmp r0, 0
- bne _0813B918
-_0813B8FA:
- movs r0, 0xFC
- bl PlaySE
-_0813B900:
- movs r0, 0
- b _0813BB28
- .align 2, 0
-_0813B904: .4byte gUnknown_203F177
-_0813B908: .4byte gSaveBlock2Ptr
-_0813B90C: .4byte gMain
-_0813B910: .4byte gUnknown_203F175
-_0813B914: .4byte gUnknown_3005ECC
-_0813B918:
- ldr r0, _0813B94C @ =gMPlayInfo_SE1
- bl m4aMPlayStop
- ldr r0, _0813B950 @ =gMPlayInfo_SE2
- bl m4aMPlayStop
- movs r0, 0xFA
- bl PlaySE
- ldr r0, _0813B954 @ =gUnknown_203F174
- ldrb r0, [r0]
- cmp r0, 0
- bne _0813B93C
- ldr r0, _0813B958 @ =gMPlayInfo_BGM
- ldr r1, _0813B95C @ =0x0000ffff
- movs r2, 0x80
- bl m4aMPlayVolumeControl
-_0813B93C:
- bl sub_813BB38
- ldr r1, _0813B960 @ =gUnknown_203F177
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _0813B964 @ =gUnknown_203F178
- movs r0, 0x1
- b _0813BB22
- .align 2, 0
-_0813B94C: .4byte gMPlayInfo_SE1
-_0813B950: .4byte gMPlayInfo_SE2
-_0813B954: .4byte gUnknown_203F174
-_0813B958: .4byte gMPlayInfo_BGM
-_0813B95C: .4byte 0x0000ffff
-_0813B960: .4byte gUnknown_203F177
-_0813B964: .4byte gUnknown_203F178
-_0813B968:
- bl sub_813BBAC
- bl sub_813BB74
- bl sub_813BBC8
- movs r1, 0xA0
- lsls r1, 19
- ldr r0, _0813B98C @ =gUnknown_8464128
- ldrh r0, [r0, 0x1E]
- strh r0, [r1]
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- ldr r1, _0813B990 @ =gUnknown_203F178
- movs r0, 0x2
- b _0813BB22
- .align 2, 0
-_0813B98C: .4byte gUnknown_8464128
-_0813B990: .4byte gUnknown_203F178
-_0813B994:
- ldr r1, _0813B9C4 @ =0x0600c000
- movs r2, 0x80
- lsls r2, 7
- movs r0, 0
- movs r3, 0
- bl RequestDma3Fill
- ldr r0, _0813B9C8 @ =gUnknown_8464128
- movs r1, 0xA0
- lsls r1, 19
- movs r2, 0x20
- movs r3, 0
- bl RequestDma3Copy
- ldr r0, _0813B9CC @ =gUnknown_8464008
- ldr r1, _0813B9D0 @ =gUnknown_201FEE0
- movs r2, 0x90
- lsls r2, 1
- movs r3, 0
- bl RequestDma3Copy
- ldr r1, _0813B9D4 @ =gUnknown_203F178
- movs r0, 0x3
- b _0813BB22
- .align 2, 0
-_0813B9C4: .4byte 0x0600c000
-_0813B9C8: .4byte gUnknown_8464128
-_0813B9CC: .4byte gUnknown_8464008
-_0813B9D0: .4byte gUnknown_201FEE0
-_0813B9D4: .4byte gUnknown_203F178
-_0813B9D8:
- bl sub_813BCF4
- bl sub_813C5D4
- bl sub_813C5FC
- ldr r0, _0813BA08 @ =gUnknown_841CB49
- bl sub_813C454
- movs r0, 0x1
- bl sub_813BD14
- bl sub_812B40C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813BA14
- ldr r0, _0813BA0C @ =gUnknown_203F190
- ldr r1, _0813BA10 @ =gUnknown_203F1AC
- bl sub_812BC54
- b _0813BA1C
- .align 2, 0
-_0813BA08: .4byte gUnknown_841CB49
-_0813BA0C: .4byte gUnknown_203F190
-_0813BA10: .4byte gUnknown_203F1AC
-_0813BA14:
- ldr r0, _0813BA34 @ =gUnknown_203F190
- ldr r1, _0813BA38 @ =gUnknown_203F1AC
- bl sub_812BCA8
-_0813BA1C:
- movs r0, 0x1
- bl sub_813BE78
- movs r0, 0x1
- bl sub_813BF50
- bl sub_813BC5C
- ldr r1, _0813BA3C @ =gUnknown_203F178
- movs r0, 0x4
- b _0813BB22
- .align 2, 0
-_0813BA34: .4byte gUnknown_203F190
-_0813BA38: .4byte gUnknown_203F1AC
-_0813BA3C: .4byte gUnknown_203F178
-_0813BA40:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- ldr r1, _0813BA70 @ =0x00001f0c
- movs r0, 0x8
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 1
- movs r0, 0
- bl SetGpuReg
- ldr r1, _0813BA74 @ =gUnknown_203F178
- movs r0, 0x5
- b _0813BB22
- .align 2, 0
-_0813BA70: .4byte 0x00001f0c
-_0813BA74: .4byte gUnknown_203F178
-_0813BA78:
- ldr r0, _0813BA94 @ =gUnknown_203F190
- ldr r1, _0813BA98 @ =gUnknown_203F1AC
- bl sub_812BB9C
- lsls r0, 24
- cmp r0, 0
- bne _0813BB24
- movs r0, 0xFB
- bl PlaySE
- ldr r1, _0813BA9C @ =gUnknown_203F178
- movs r0, 0x6
- b _0813BB22
- .align 2, 0
-_0813BA94: .4byte gUnknown_203F190
-_0813BA98: .4byte gUnknown_203F1AC
-_0813BA9C: .4byte gUnknown_203F178
-_0813BAA0:
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- bl sub_813BC2C
- movs r1, 0
- ldr r5, _0813BAD0 @ =0x000001ff
- movs r4, 0xA0
- lsls r4, 19
- ldr r0, _0813BAD4 @ =gUnknown_8464128
- ldrh r2, [r0, 0x1E]
- ldr r3, _0813BAD8 @ =0x05000200
-_0813BABA:
- adds r0, r1, r4
- strh r2, [r0]
- adds r0, r1, r3
- strh r2, [r0]
- adds r1, 0x2
- cmp r1, r5
- ble _0813BABA
- ldr r1, _0813BADC @ =gUnknown_203F178
- movs r0, 0x7
- b _0813BB22
- .align 2, 0
-_0813BAD0: .4byte 0x000001ff
-_0813BAD4: .4byte gUnknown_8464128
-_0813BAD8: .4byte 0x05000200
-_0813BADC: .4byte gUnknown_203F178
-_0813BAE0:
- ldr r0, _0813BB04 @ =gUnknown_203F174
- ldrb r0, [r0]
- cmp r0, 0
- bne _0813BAF4
- ldr r0, _0813BB08 @ =gMPlayInfo_BGM
- ldr r1, _0813BB0C @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_0813BAF4:
- bl sub_813BC48
- bl sub_813BBF4
- ldr r1, _0813BB10 @ =gUnknown_203F178
- movs r0, 0x8
- b _0813BB22
- .align 2, 0
-_0813BB04: .4byte gUnknown_203F174
-_0813BB08: .4byte gMPlayInfo_BGM
-_0813BB0C: .4byte 0x0000ffff
-_0813BB10: .4byte gUnknown_203F178
-_0813BB14:
- bl sub_813BBDC
- ldr r1, _0813BB30 @ =gUnknown_203F177
- movs r0, 0
- strb r0, [r1]
- ldr r1, _0813BB34 @ =gUnknown_203F178
- movs r0, 0
-_0813BB22:
- strb r0, [r1, 0x15]
-_0813BB24:
- ldr r0, _0813BB34 @ =gUnknown_203F178
- ldrb r0, [r0, 0x15]
-_0813BB28:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0813BB30: .4byte gUnknown_203F177
-_0813BB34: .4byte gUnknown_203F178
- thumb_func_end sub_813B870
-
- thumb_func_start sub_813BB38
-sub_813BB38: @ 813BB38
- ldr r2, _0813BB60 @ =gUnknown_203F178
- ldr r1, _0813BB64 @ =gMain
- ldr r0, [r1, 0xC]
- str r0, [r2]
- ldr r0, [r1, 0x10]
- str r0, [r2, 0x4]
- movs r0, 0
- str r0, [r1, 0xC]
- str r0, [r1, 0x10]
- ldr r1, _0813BB68 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0813BB6C @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0813BB70 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bx lr
- .align 2, 0
-_0813BB60: .4byte gUnknown_203F178
-_0813BB64: .4byte gMain
-_0813BB68: .4byte 0x040000b0
-_0813BB6C: .4byte 0x0000c5ff
-_0813BB70: .4byte 0x00007fff
- thumb_func_end sub_813BB38
-
- thumb_func_start sub_813BB74
-sub_813BB74: @ 813BB74
- push {r4,lr}
- movs r0, 0
- bl GetGpuReg
- ldr r4, _0813BBA8 @ =gUnknown_203F178
- strh r0, [r4, 0x8]
- movs r0, 0x8
- bl GetGpuReg
- strh r0, [r4, 0xA]
- movs r0, 0x10
- bl GetGpuReg
- strh r0, [r4, 0xC]
- movs r0, 0x12
- bl GetGpuReg
- strh r0, [r4, 0xE]
- movs r0, 0x50
- bl GetGpuReg
- strh r0, [r4, 0x10]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813BBA8: .4byte gUnknown_203F178
- thumb_func_end sub_813BB74
-
- thumb_func_start sub_813BBAC
-sub_813BBAC: @ 813BBAC
- push {lr}
- ldr r0, _0813BBC0 @ =0x0600c000
- ldr r1, _0813BBC4 @ =gUnknown_203B174
- movs r2, 0x80
- lsls r2, 7
- movs r3, 0
- bl RequestDma3Copy
- pop {r0}
- bx r0
- .align 2, 0
-_0813BBC0: .4byte 0x0600c000
-_0813BBC4: .4byte gUnknown_203B174
- thumb_func_end sub_813BBAC
-
- thumb_func_start sub_813BBC8
-sub_813BBC8: @ 813BBC8
- push {lr}
- ldr r0, _0813BBD8 @ =gUnknown_203F18A
- adds r1, r0, 0x1
- adds r2, r0, 0x2
- bl SaveTextColors
- pop {r0}
- bx r0
- .align 2, 0
-_0813BBD8: .4byte gUnknown_203F18A
- thumb_func_end sub_813BBC8
-
- thumb_func_start sub_813BBDC
-sub_813BBDC: @ 813BBDC
- ldr r2, _0813BBEC @ =gMain
- ldr r1, _0813BBF0 @ =gUnknown_203F178
- ldr r0, [r1]
- str r0, [r2, 0xC]
- ldr r0, [r1, 0x4]
- str r0, [r2, 0x10]
- bx lr
- .align 2, 0
-_0813BBEC: .4byte gMain
-_0813BBF0: .4byte gUnknown_203F178
- thumb_func_end sub_813BBDC
-
- thumb_func_start sub_813BBF4
-sub_813BBF4: @ 813BBF4
- push {r4,lr}
- ldr r4, _0813BC28 @ =gUnknown_203F178
- ldrh r1, [r4, 0x10]
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r4, 0xC]
- movs r0, 0x10
- bl SetGpuReg
- ldrh r1, [r4, 0xE]
- movs r0, 0x12
- bl SetGpuReg
- ldrh r1, [r4, 0xA]
- movs r0, 0x8
- bl SetGpuReg
- ldrh r1, [r4, 0x8]
- movs r0, 0
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813BC28: .4byte gUnknown_203F178
- thumb_func_end sub_813BBF4
-
- thumb_func_start sub_813BC2C
-sub_813BC2C: @ 813BC2C
- push {lr}
- ldr r0, _0813BC40 @ =gUnknown_203B174
- ldr r1, _0813BC44 @ =0x0600c000
- movs r2, 0x80
- lsls r2, 7
- movs r3, 0
- bl RequestDma3Copy
- pop {r0}
- bx r0
- .align 2, 0
-_0813BC40: .4byte gUnknown_203B174
-_0813BC44: .4byte 0x0600c000
- thumb_func_end sub_813BC2C
-
- thumb_func_start sub_813BC48
-sub_813BC48: @ 813BC48
- push {lr}
- ldr r0, _0813BC58 @ =gUnknown_203F18A
- adds r1, r0, 0x1
- adds r2, r0, 0x2
- bl RestoreTextColors
- pop {r0}
- bx r0
- .align 2, 0
-_0813BC58: .4byte gUnknown_203F18A
- thumb_func_end sub_813BC48
-
- thumb_func_start sub_813BC5C
-sub_813BC5C: @ 813BC5C
- push {lr}
- ldr r0, _0813BC70 @ =gDecompressionBuffer
- ldr r1, _0813BC74 @ =0x0600c000
- movs r2, 0x80
- lsls r2, 7
- movs r3, 0
- bl RequestDma3Copy
- pop {r0}
- bx r0
- .align 2, 0
-_0813BC70: .4byte gDecompressionBuffer
-_0813BC74: .4byte 0x0600c000
- thumb_func_end sub_813BC5C
-
- thumb_func_start sub_813BC78
-sub_813BC78: @ 813BC78
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, [sp, 0x20]
- ldr r5, [sp, 0x24]
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 16
- lsrs r7, r5, 16
- lsrs r0, r2, 24
- adds r2, r0, r4
- cmp r0, r2
- bge _0813BCDE
- mov r12, r2
- ldr r1, _0813BCF0 @ =gUnknown_201F800
- mov r10, r1
-_0813BCAE:
- mov r4, r9
- mov r2, r8
- adds r1, r4, r2
- adds r3, r0, 0x1
- cmp r4, r1
- bge _0813BCD6
- lsls r2, r0, 6
- mov r5, r10
-_0813BCBE:
- lsls r0, r4, 1
- adds r0, r2, r0
- adds r0, r5
- strh r6, [r0]
- adds r0, r6, r7
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r1
- blt _0813BCBE
-_0813BCD6:
- lsls r0, r3, 16
- lsrs r0, 16
- cmp r0, r12
- blt _0813BCAE
-_0813BCDE:
- bl sub_813BC5C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813BCF0: .4byte gUnknown_201F800
- thumb_func_end sub_813BC78
-
- thumb_func_start sub_813BCF4
-sub_813BCF4: @ 813BCF4
- push {lr}
- sub sp, 0x8
- ldr r0, _0813BD10 @ =0x000001ff
- movs r1, 0x14
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0x1E
- bl sub_813BC78
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0813BD10: .4byte 0x000001ff
- thumb_func_end sub_813BCF4
-
- thumb_func_start sub_813BD14
-sub_813BD14: @ 813BD14
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0813BD26
- cmp r2, 0x1
- beq _0813BD40
- b _0813BD54
-_0813BD26:
- ldr r0, _0813BD3C @ =0x000001ff
- movs r1, 0x2
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x7
- bl sub_813BC78
- b _0813BD54
- .align 2, 0
-_0813BD3C: .4byte 0x000001ff
-_0813BD40:
- movs r0, 0xF4
- lsls r0, 1
- movs r1, 0x2
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x7
- bl sub_813BC78
-_0813BD54:
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813BD14
-
- thumb_func_start sub_813BD5C
-sub_813BD5C: @ 813BD5C
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0813BD6E
- cmp r2, 0x1
- beq _0813BD88
- b _0813BD9C
-_0813BD6E:
- ldr r0, _0813BD84 @ =0x000001ff
- movs r1, 0x2
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0xD
- movs r2, 0
- movs r3, 0x10
- bl sub_813BC78
- b _0813BD9C
- .align 2, 0
-_0813BD84: .4byte 0x000001ff
-_0813BD88:
- movs r0, 0xD0
- lsls r0, 1
- movs r1, 0x2
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0xD
- movs r2, 0
- movs r3, 0x10
- bl sub_813BC78
-_0813BD9C:
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813BD5C
-
- thumb_func_start sub_813BDA4
-sub_813BDA4: @ 813BDA4
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0813BDB6
- cmp r2, 0x1
- beq _0813BDD0
- b _0813BDE2
-_0813BDB6:
- ldr r0, _0813BDCC @ =0x000001ff
- movs r1, 0x10
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x2
- movs r2, 0x3
- movs r3, 0x1A
- bl sub_813BC78
- b _0813BDE2
- .align 2, 0
-_0813BDCC: .4byte 0x000001ff
-_0813BDD0:
- movs r0, 0x10
- str r0, [sp]
- str r2, [sp, 0x4]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x3
- movs r3, 0x1A
- bl sub_813BC78
-_0813BDE2:
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813BDA4
-
- thumb_func_start sub_813BDE8
-sub_813BDE8: @ 813BDE8
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0813BDFA
- cmp r2, 0x1
- beq _0813BE14
- b _0813BE2A
-_0813BDFA:
- ldr r0, _0813BE10 @ =0x000001ff
- movs r1, 0x10
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x3
- movs r3, 0x1C
- bl sub_813BC78
- b _0813BE2A
- .align 2, 0
-_0813BE10: .4byte 0x000001ff
-_0813BE14:
- movs r0, 0xFD
- lsls r0, 1
- movs r1, 0x11
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x3
- movs r3, 0x1C
- bl sub_813BC78
-_0813BE2A:
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813BDE8
-
- thumb_func_start sub_813BE30
-sub_813BE30: @ 813BE30
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0813BE42
- cmp r2, 0x1
- beq _0813BE5C
- b _0813BE70
-_0813BE42:
- ldr r0, _0813BE58 @ =0x000001ff
- movs r1, 0x5
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x2
- movs r2, 0xE
- movs r3, 0x1A
- bl sub_813BC78
- b _0813BE70
- .align 2, 0
-_0813BE58: .4byte 0x000001ff
-_0813BE5C:
- movs r0, 0x8F
- lsls r0, 1
- movs r1, 0x5
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x2
- movs r2, 0xE
- movs r3, 0x1A
- bl sub_813BC78
-_0813BE70:
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813BE30
-
- thumb_func_start sub_813BE78
-sub_813BE78: @ 813BE78
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _0813BE8A
- cmp r6, 0x1
- beq _0813BEB4
- b _0813BED8
-_0813BE8A:
- ldr r5, _0813BEB0 @ =0x000001ff
- movs r4, 0x1
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x1C
- bl sub_813BC78
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x13
- movs r3, 0x1C
- bl sub_813BC78
- b _0813BED8
- .align 2, 0
-_0813BEB0: .4byte 0x000001ff
-_0813BEB4:
- ldr r0, _0813BEE0 @ =0x000001f7
- str r6, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x1C
- bl sub_813BC78
- movs r0, 0xFC
- lsls r0, 1
- str r6, [sp]
- str r4, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x13
- movs r3, 0x1C
- bl sub_813BC78
-_0813BED8:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813BEE0: .4byte 0x000001f7
- thumb_func_end sub_813BE78
-
- thumb_func_start sub_813BEE4
-sub_813BEE4: @ 813BEE4
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _0813BEF6
- cmp r6, 0x1
- beq _0813BF20
- b _0813BF44
-_0813BEF6:
- ldr r5, _0813BF1C @ =0x000001ff
- movs r4, 0x1
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x1C
- bl sub_813BC78
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x13
- movs r3, 0x1C
- bl sub_813BC78
- b _0813BF44
- .align 2, 0
-_0813BF1C: .4byte 0x000001ff
-_0813BF20:
- ldr r0, _0813BF4C @ =0x000001fb
- str r6, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x1C
- bl sub_813BC78
- movs r0, 0xFE
- lsls r0, 1
- str r6, [sp]
- str r4, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x13
- movs r3, 0x1C
- bl sub_813BC78
-_0813BF44:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813BF4C: .4byte 0x000001fb
- thumb_func_end sub_813BEE4
-
- thumb_func_start sub_813BF50
-sub_813BF50: @ 813BF50
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _0813BF62
- cmp r6, 0x1
- beq _0813BF8C
- b _0813BFB2
-_0813BF62:
- ldr r5, _0813BF88 @ =0x000001ff
- movs r4, 0x14
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_813BC78
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x1D
- movs r2, 0
- movs r3, 0x1
- bl sub_813BC78
- b _0813BFB2
- .align 2, 0
-_0813BF88: .4byte 0x000001ff
-_0813BF8C:
- ldr r6, _0813BFBC @ =0x000001f9
- movs r5, 0x14
- str r5, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_813BC78
- str r5, [sp]
- str r4, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x1D
- movs r2, 0
- movs r3, 0x1
- bl sub_813BC78
-_0813BFB2:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813BFBC: .4byte 0x000001f9
- thumb_func_end sub_813BF50
-
- thumb_func_start sub_813BFC0
-sub_813BFC0: @ 813BFC0
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0813BFD2
- cmp r2, 0x1
- beq _0813BFE8
- b _0813BFFC
-_0813BFD2:
- ldr r0, _0813BFE4 @ =0x000001ff
- movs r1, 0x1
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r2, 0x5
- movs r3, 0x1C
- bl sub_813BC78
- b _0813BFFC
- .align 2, 0
-_0813BFE4: .4byte 0x000001ff
-_0813BFE8:
- movs r0, 0xFE
- lsls r0, 1
- str r2, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x5
- movs r3, 0x1C
- bl sub_813BC78
-_0813BFFC:
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_813BFC0
-
- thumb_func_start sub_813C004
-sub_813C004: @ 813C004
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- cmp r6, 0
- beq _0813C01A
- cmp r6, 0x1
- beq _0813C040
- b _0813C06A
-_0813C01A:
- ldr r5, _0813C03C @ =0x000001ff
- movs r4, 0x1
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x1C
- movs r2, 0x3
- movs r3, 0x1
- bl sub_813BC78
- str r4, [sp]
- str r6, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x1C
- movs r2, 0x12
- b _0813C050
- .align 2, 0
-_0813C03C: .4byte 0x000001ff
-_0813C040:
- cmp r2, 0
- bne _0813C058
- movs r0, 0xFF
- lsls r0, 1
- str r6, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x1C
- movs r2, 0x3
-_0813C050:
- movs r3, 0x1
- bl sub_813BC78
- b _0813C06A
-_0813C058:
- ldr r0, _0813C074 @ =0x000001fd
- str r6, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x1C
- movs r2, 0x12
- movs r3, 0x1
- bl sub_813BC78
-_0813C06A:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813C074: .4byte 0x000001fd
- thumb_func_end sub_813C004
-
- thumb_func_start sub_813C078
-sub_813C078: @ 813C078
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x38
- str r1, [sp, 0x28]
- mov r9, r2
- ldr r1, [sp, 0x58]
- ldr r2, [sp, 0x5C]
- ldr r4, [sp, 0x60]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x24]
- lsls r3, 24
- lsrs r7, r3, 24
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x2C]
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp, 0x30]
- str r7, [sp, 0x34]
-_0813C0AC:
- mov r0, r9
- ldrb r1, [r0]
- movs r2, 0x1
- add r9, r2
- adds r0, r1, 0
- subs r0, 0xF8
- cmp r0, 0x7
- bls _0813C0BE
- b _0813C358
-_0813C0BE:
- lsls r0, 2
- ldr r1, _0813C0C8 @ =_0813C0CC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813C0C8: .4byte _0813C0CC
- .align 2, 0
-_0813C0CC:
- .4byte _0813C2D4
- .4byte _0813C348
- .4byte _0813C1E4
- .4byte _0813C1E4
- .4byte _0813C200
- .4byte _0813C0EC
- .4byte _0813C1E4
- .4byte _0813C39C
-_0813C0EC:
- mov r0, r9
- ldrb r1, [r0]
- movs r2, 0x1
- add r9, r2
- cmp r1, 0x1
- bne _0813C154
- movs r4, 0
- ldr r0, _0813C14C @ =gSaveBlock2Ptr
- ldr r1, [r0]
- ldrb r1, [r1]
- cmp r1, 0xFF
- beq _0813C0AC
- ldr r5, _0813C150 @ =gGlyphInfo + 0x80
-_0813C106:
- ldr r0, [r0]
- adds r0, r4
- ldrb r1, [r0]
- ldr r0, [sp, 0x28]
- str r0, [sp]
- str r7, [sp, 0x4]
- mov r2, r10
- str r2, [sp, 0x8]
- ldr r0, [sp, 0x2C]
- str r0, [sp, 0xC]
- ldr r2, [sp, 0x30]
- str r2, [sp, 0x10]
- ldr r0, [sp, 0x24]
- add r2, sp, 0x14
- add r3, sp, 0x1C
- bl sub_813C3AC
- ldr r0, [sp, 0x24]
- ldrb r0, [r5]
- adds r0, r7, r0
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bhi _0813C0AC
- ldr r0, _0813C14C @ =gSaveBlock2Ptr
- ldr r1, [r0]
- adds r1, r4
- ldrb r1, [r1]
- cmp r1, 0xFF
- bne _0813C106
- b _0813C0AC
- .align 2, 0
-_0813C14C: .4byte gSaveBlock2Ptr
-_0813C150: .4byte gGlyphInfo + 0x80
-_0813C154:
- cmp r1, 0x2
- bne _0813C0AC
- movs r4, 0
- ldr r5, _0813C160 @ =gGlyphInfo + 0x80
- b _0813C1BC
- .align 2, 0
-_0813C160: .4byte gGlyphInfo + 0x80
-_0813C164:
- ldrb r1, [r1]
- ldr r2, [sp, 0x28]
- str r2, [sp]
- str r7, [sp, 0x4]
- mov r0, r10
- str r0, [sp, 0x8]
- ldr r2, [sp, 0x2C]
- str r2, [sp, 0xC]
- ldr r0, [sp, 0x30]
- str r0, [sp, 0x10]
- ldr r0, [sp, 0x24]
- add r2, sp, 0x14
- add r3, sp, 0x1C
- bl sub_813C3AC
- b _0813C1AC
-_0813C184:
- ldr r0, _0813C1D8 @ =gUnknown_841CB41
- adds r1, r4, r0
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0813C0AC
- adds r1, r0, 0
- ldr r2, [sp, 0x28]
- str r2, [sp]
- str r7, [sp, 0x4]
- mov r0, r10
- str r0, [sp, 0x8]
- ldr r2, [sp, 0x2C]
- str r2, [sp, 0xC]
- ldr r0, [sp, 0x30]
- str r0, [sp, 0x10]
- ldr r0, [sp, 0x24]
- add r2, sp, 0x14
- add r3, sp, 0x1C
- bl sub_813C3AC
-_0813C1AC:
- ldr r1, [sp, 0x24]
- ldrb r0, [r5]
- adds r0, r7, r0
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0813C1BC:
- ldr r0, _0813C1DC @ =0x00000834
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813C184
- ldr r0, _0813C1E0 @ =gUnknown_841CB3C
- adds r1, r4, r0
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _0813C164
- b _0813C0AC
- .align 2, 0
-_0813C1D8: .4byte gUnknown_841CB41
-_0813C1DC: .4byte 0x00000834
-_0813C1E0: .4byte gUnknown_841CB3C
-_0813C1E4:
- ldr r7, [sp, 0x34]
- ldr r1, _0813C1FC @ =gGlyphInfo
- adds r1, 0x81
- mov r0, r10
- adds r0, 0x1
- ldrb r1, [r1]
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- b _0813C0AC
- .align 2, 0
-_0813C1FC: .4byte gGlyphInfo
-_0813C200:
- mov r2, r9
- ldrb r1, [r2]
- movs r0, 0x1
- add r9, r0
- subs r0, r1, 0x1
- cmp r0, 0x15
- bls _0813C210
- b _0813C0AC
-_0813C210:
- lsls r0, 2
- ldr r1, _0813C21C @ =_0813C220
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813C21C: .4byte _0813C220
- .align 2, 0
-_0813C220:
- .4byte _0813C2C8
- .4byte _0813C2C8
- .4byte _0813C2C8
- .4byte _0813C278
- .4byte _0813C2C8
- .4byte _0813C2C8
- .4byte _0813C0AC
- .4byte _0813C2C8
- .4byte _0813C0AC
- .4byte _0813C0AC
- .4byte _0813C27C
- .4byte _0813C2C8
- .4byte _0813C2C8
- .4byte _0813C2C8
- .4byte _0813C0AC
- .4byte _0813C27C
- .4byte _0813C2CE
- .4byte _0813C2CE
- .4byte _0813C282
- .4byte _0813C2CE
- .4byte _0813C0AC
- .4byte _0813C0AC
-_0813C278:
- movs r1, 0x1
- add r9, r1
-_0813C27C:
- movs r2, 0x1
- add r9, r2
- b _0813C2C8
-_0813C282:
- mov r2, r9
- ldrb r0, [r2]
- ldr r1, [sp, 0x34]
- adds r0, r1
- subs r6, r0, r7
- cmp r6, 0
- ble _0813C2C8
- ldr r2, [sp, 0x28]
- str r2, [sp, 0x1C]
- ldr r1, [sp, 0x2C]
- lsls r0, r1, 3
- add r4, sp, 0x1C
- movs r5, 0
- strh r0, [r4, 0x4]
- ldr r2, [sp, 0x30]
- lsls r0, r2, 3
- strh r0, [r4, 0x6]
- ldr r0, [sp, 0x24]
- movs r1, 0x1
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- lsls r3, r6, 16
- lsrs r3, 16
- str r0, [sp]
- str r5, [sp, 0x4]
- adds r0, r4, 0
- adds r1, r7, 0
- mov r2, r10
- bl FillBitmapRect4Bit
- adds r0, r7, r6
- lsls r0, 24
- lsrs r7, r0, 24
-_0813C2C8:
- movs r0, 0x1
- add r9, r0
- b _0813C0AC
-_0813C2CE:
- movs r1, 0x1
- add r9, r1
- b _0813C0AC
-_0813C2D4:
- mov r2, r9
- ldrb r1, [r2]
- movs r0, 0x1
- add r9, r0
- adds r6, r1, 0
- adds r0, r6, 0
- bl GetKeypadIconTileOffset
- lsls r0, 24
- lsrs r0, 19
- ldr r1, _0813C344 @ =gKeypadIconTiles
- adds r0, r1
- str r0, [sp, 0x14]
- add r1, sp, 0x14
- movs r2, 0
- mov r8, r2
- movs r0, 0x80
- strh r0, [r1, 0x4]
- strh r0, [r1, 0x6]
- ldr r0, [sp, 0x28]
- str r0, [sp, 0x1C]
- ldr r1, [sp, 0x2C]
- lsls r0, r1, 3
- add r5, sp, 0x1C
- strh r0, [r5, 0x4]
- ldr r2, [sp, 0x30]
- lsls r0, r2, 3
- strh r0, [r5, 0x6]
- adds r0, r6, 0
- bl GetKeypadIconWidth
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- bl GetKeypadIconHeight
- lsls r0, 24
- lsrs r0, 24
- str r7, [sp]
- mov r1, r10
- str r1, [sp, 0x4]
- str r4, [sp, 0x8]
- str r0, [sp, 0xC]
- mov r2, r8
- str r2, [sp, 0x10]
- add r0, sp, 0x14
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0
- bl BlitBitmapRect4Bit
- adds r0, r6, 0
- bl GetKeypadIconWidth
- b _0813C38E
- .align 2, 0
-_0813C344: .4byte gKeypadIconTiles
-_0813C348:
- mov r0, r9
- ldrb r1, [r0]
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- orrs r1, r0
- movs r0, 0x1
- add r9, r0
-_0813C358:
- cmp r1, 0
- bne _0813C36A
- ldr r1, [sp, 0x24]
- cmp r1, 0
- bne _0813C366
- adds r0, r7, 0x5
- b _0813C390
-_0813C366:
- adds r0, r7, 0x4
- b _0813C390
-_0813C36A:
- add r3, sp, 0x1C
- ldr r2, [sp, 0x28]
- str r2, [sp]
- str r7, [sp, 0x4]
- mov r0, r10
- str r0, [sp, 0x8]
- ldr r2, [sp, 0x2C]
- str r2, [sp, 0xC]
- ldr r0, [sp, 0x30]
- str r0, [sp, 0x10]
- ldr r0, [sp, 0x24]
- add r2, sp, 0x14
- bl sub_813C3AC
- ldr r1, [sp, 0x24]
- ldr r0, _0813C398 @ =gGlyphInfo
- adds r0, 0x80
- ldrb r0, [r0]
-_0813C38E:
- adds r0, r7, r0
-_0813C390:
- lsls r0, 24
- lsrs r7, r0, 24
- b _0813C0AC
- .align 2, 0
-_0813C398: .4byte gGlyphInfo
-_0813C39C:
- add sp, 0x38
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_813C078
-
- thumb_func_start sub_813C3AC
-sub_813C3AC: @ 813C3AC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- adds r7, r2, 0
- mov r8, r3
- ldr r2, [sp, 0x38]
- ldr r3, [sp, 0x3C]
- ldr r4, [sp, 0x40]
- ldr r5, [sp, 0x44]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r0, r1, 16
- adds r1, r0, 0
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- cmp r6, 0
- bne _0813C3EE
- movs r1, 0
- bl DecompressGlyphFont0
- b _0813C402
-_0813C3EE:
- cmp r6, 0x5
- bne _0813C3FA
- movs r1, 0
- bl DecompressGlyphFont5
- b _0813C402
-_0813C3FA:
- adds r0, r1, 0
- movs r1, 0
- bl DecompressGlyphFont2
-_0813C402:
- ldr r1, _0813C450 @ =gGlyphInfo
- str r1, [r7]
- movs r2, 0
- movs r0, 0x10
- strh r0, [r7, 0x4]
- strh r0, [r7, 0x6]
- ldr r0, [sp, 0x34]
- mov r3, r8
- str r0, [r3]
- lsls r0, r4, 3
- strh r0, [r3, 0x4]
- lsls r0, r5, 3
- strh r0, [r3, 0x6]
- mov r0, r10
- str r0, [sp]
- mov r3, r9
- str r3, [sp, 0x4]
- adds r0, r1, 0
- adds r0, 0x80
- ldrb r0, [r0]
- str r0, [sp, 0x8]
- adds r1, 0x81
- ldrb r0, [r1]
- str r0, [sp, 0xC]
- str r2, [sp, 0x10]
- adds r0, r7, 0
- mov r1, r8
- movs r3, 0
- bl BlitBitmapRect4Bit
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813C450: .4byte gGlyphInfo
- thumb_func_end sub_813C3AC
-
- thumb_func_start sub_813C454
-sub_813C454: @ 813C454
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r0, 0x1
- movs r1, 0xF
- movs r2, 0x2
- bl GenerateFontHalfRowLookupTable
- ldr r1, _0813C484 @ =gUnknown_201FD00
- movs r2, 0x2
- str r2, [sp]
- movs r0, 0x7
- str r0, [sp, 0x4]
- str r2, [sp, 0x8]
- movs r0, 0x5
- adds r2, r4, 0
- movs r3, 0x6
- bl sub_813C078
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813C484: .4byte gUnknown_201FD00
- thumb_func_end sub_813C454
-
- thumb_func_start sub_813C488
-sub_813C488: @ 813C488
- push {r4,r5,lr}
- sub sp, 0xC
- adds r5, r0, 0
- movs r0, 0
- adds r1, r5, 0
- movs r2, 0
- bl GetStringWidth
- movs r4, 0x7C
- subs r4, r0
- movs r0, 0x1
- movs r1, 0xF
- movs r2, 0x2
- bl GenerateFontHalfRowLookupTable
- ldr r1, _0813C4C8 @ =gUnknown_201F400
- lsls r4, 24
- lsrs r4, 24
- movs r2, 0x2
- str r2, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- str r2, [sp, 0x8]
- movs r0, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_813C078
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813C4C8: .4byte gUnknown_201F400
- thumb_func_end sub_813C488
-
- thumb_func_start sub_813C4CC
-sub_813C4CC: @ 813C4CC
- push {r4-r6,lr}
- sub sp, 0xC
- adds r6, r0, 0
- adds r5, r1, 0
- adds r4, r2, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- movs r1, 0xF
- movs r2, 0x2
- bl GenerateFontHalfRowLookupTable
- ldr r1, _0813C508 @ =gDecompressionBuffer
- str r4, [sp]
- movs r0, 0x1A
- str r0, [sp, 0x4]
- movs r0, 0x10
- str r0, [sp, 0x8]
- movs r0, 0x2
- adds r2, r6, 0
- adds r3, r5, 0
- bl sub_813C078
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813C508: .4byte gDecompressionBuffer
- thumb_func_end sub_813C4CC
-
- thumb_func_start sub_813C50C
-sub_813C50C: @ 813C50C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x10
- mov r8, r0
- mov r9, r1
- add r1, sp, 0xC
- ldr r2, _0813C578 @ =0x0000eeee
- adds r0, r2, 0
- strh r0, [r1]
- ldr r4, _0813C57C @ =gDecompressionBuffer
- ldr r2, _0813C580 @ =0x01001a00
- adds r0, r1, 0
- adds r1, r4, 0
- bl CpuSet
- movs r0, 0x1
- movs r1, 0xE
- movs r2, 0x2
- bl GenerateFontHalfRowLookupTable
- movs r6, 0
- str r6, [sp]
- movs r5, 0x1A
- str r5, [sp, 0x4]
- movs r0, 0x10
- str r0, [sp, 0x8]
- movs r0, 0x2
- adds r1, r4, 0
- mov r2, r8
- movs r3, 0
- bl sub_813C078
- movs r0, 0x9C
- lsls r0, 4
- adds r4, r0
- str r6, [sp]
- str r5, [sp, 0x4]
- movs r0, 0xD
- str r0, [sp, 0x8]
- movs r0, 0x2
- adds r1, r4, 0
- mov r2, r9
- movs r3, 0
- bl sub_813C078
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813C578: .4byte 0x0000eeee
-_0813C57C: .4byte gDecompressionBuffer
-_0813C580: .4byte 0x01001a00
- thumb_func_end sub_813C50C
-
- thumb_func_start sub_813C584
-sub_813C584: @ 813C584
- push {r4,r5,lr}
- sub sp, 0x10
- adds r5, r0, 0
- add r1, sp, 0xC
- ldr r2, _0813C5C8 @ =0x00001111
- adds r0, r2, 0
- strh r0, [r1]
- ldr r4, _0813C5CC @ =gUnknown_201E3C0
- ldr r2, _0813C5D0 @ =0x01000820
- adds r0, r1, 0
- adds r1, r4, 0
- bl CpuSet
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0x3
- bl GenerateFontHalfRowLookupTable
- movs r0, 0x6
- str r0, [sp]
- movs r0, 0x1A
- str r0, [sp, 0x4]
- movs r0, 0x5
- str r0, [sp, 0x8]
- movs r0, 0x2
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x2
- bl sub_813C078
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813C5C8: .4byte 0x00001111
-_0813C5CC: .4byte gUnknown_201E3C0
-_0813C5D0: .4byte 0x01000820
- thumb_func_end sub_813C584
-
- thumb_func_start sub_813C5D4
-sub_813C5D4: @ 813C5D4
- push {lr}
- sub sp, 0x4
- mov r1, sp
- ldr r2, _0813C5F0 @ =0x0000ffff
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _0813C5F4 @ =gUnknown_201FD00
- ldr r2, _0813C5F8 @ =0x010000e0
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0813C5F0: .4byte 0x0000ffff
-_0813C5F4: .4byte gUnknown_201FD00
-_0813C5F8: .4byte 0x010000e0
- thumb_func_end sub_813C5D4
-
- thumb_func_start sub_813C5FC
-sub_813C5FC: @ 813C5FC
- push {lr}
- sub sp, 0x4
- mov r1, sp
- ldr r2, _0813C618 @ =0x0000ffff
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _0813C61C @ =gUnknown_201F400
- ldr r2, _0813C620 @ =0x01000200
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0813C618: .4byte 0x0000ffff
-_0813C61C: .4byte gUnknown_201F400
-_0813C620: .4byte 0x01000200
- thumb_func_end sub_813C5FC
-
- thumb_func_start sub_813C624
-sub_813C624: @ 813C624
- push {lr}
- sub sp, 0x4
- mov r1, sp
- ldr r2, _0813C640 @ =0x0000ffff
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _0813C644 @ =gDecompressionBuffer
- ldr r2, _0813C648 @ =0x01001a00
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0813C640: .4byte 0x0000ffff
-_0813C644: .4byte gDecompressionBuffer
-_0813C648: .4byte 0x01001a00
- thumb_func_end sub_813C624
-
- thumb_func_start sub_813C64C
-sub_813C64C: @ 813C64C
- push {r4-r7,lr}
- ldr r4, _0813C680 @ =gUnknown_203F190
- adds r3, r4, 0
- ldm r0!, {r5-r7}
- stm r3!, {r5-r7}
- movs r0, 0
- strb r1, [r4, 0xC]
- strb r2, [r4, 0xD]
- strb r0, [r4, 0xE]
- ldrh r0, [r4, 0x4]
- ldrh r1, [r4, 0x6]
- cmp r0, r1
- bcs _0813C668
- strh r0, [r4, 0x6]
-_0813C668:
- movs r0, 0
- bl sub_813BDA4
- bl sub_813C624
- bl sub_813C7CC
- bl sub_813C828
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813C680: .4byte gUnknown_203F190
- thumb_func_end sub_813C64C
-
- thumb_func_start sub_813C684
-sub_813C684: @ 813C684
- ldr r1, _0813C68C @ =gUnknown_203F176
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0813C68C: .4byte gUnknown_203F176
- thumb_func_end sub_813C684
-
- thumb_func_start sub_813C690
-sub_813C690: @ 813C690
- push {lr}
- ldr r1, _0813C6A0 @ =gUnknown_203F176
- ldrb r0, [r1]
- cmp r0, 0
- beq _0813C6A4
- subs r0, 0x1
- strb r0, [r1]
- b _0813C752
- .align 2, 0
-_0813C6A0: .4byte gUnknown_203F176
-_0813C6A4:
- ldr r2, _0813C6C8 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0813C6D0
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0813C6CC @ =gUnknown_203F190
- ldrb r0, [r1, 0xC]
- ldrb r2, [r1, 0xD]
- adds r0, r2
- ldr r1, [r1]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0, 0x4]
- b _0813C756
- .align 2, 0
-_0813C6C8: .4byte gMain
-_0813C6CC: .4byte gUnknown_203F190
-_0813C6D0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0813C6E4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x2
- negs r0, r0
- b _0813C756
-_0813C6E4:
- movs r0, 0xC0
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _0813C6F4
- movs r0, 0x6
- negs r0, r0
- b _0813C756
-_0813C6F4:
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0813C702
- movs r0, 0x1
- b _0813C718
-_0813C702:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0813C70E
- movs r0, 0x1
- b _0813C73A
-_0813C70E:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0813C730
- movs r0, 0x7
-_0813C718:
- movs r1, 0
- bl sub_813C944
- lsls r0, 24
- cmp r0, 0
- bne _0813C72A
- movs r0, 0x5
- bl PlaySE
-_0813C72A:
- movs r0, 0x4
- negs r0, r0
- b _0813C756
-_0813C730:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0813C752
- movs r0, 0x7
-_0813C73A:
- movs r1, 0x1
- bl sub_813C944
- lsls r0, 24
- cmp r0, 0
- bne _0813C74C
- movs r0, 0x5
- bl PlaySE
-_0813C74C:
- movs r0, 0x5
- negs r0, r0
- b _0813C756
-_0813C752:
- movs r0, 0x1
- negs r0, r0
-_0813C756:
- pop {r1}
- bx r1
- thumb_func_end sub_813C690
-
- thumb_func_start sub_813C75C
-sub_813C75C: @ 813C75C
- push {r4-r6,lr}
- ldr r5, _0813C784 @ =gUnknown_203F190
- ldrh r1, [r5, 0x4]
- subs r0, r1, 0x7
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r1, 0x7
- bls _0813C7C4
- ldrb r4, [r5, 0xC]
- ldrb r0, [r5, 0xD]
- adds r4, r0
- movs r0, 0
- movs r1, 0
- bl sub_813C004
- cmp r4, 0
- bne _0813C788
- movs r0, 0x1
- b _0813C7A2
- .align 2, 0
-_0813C784: .4byte gUnknown_203F190
-_0813C788:
- ldrb r0, [r5, 0xC]
- cmp r0, 0
- bne _0813C798
- ldrb r0, [r5, 0xD]
- cmp r0, 0
- beq _0813C798
- movs r0, 0x1
- b _0813C7A2
-_0813C798:
- ldr r0, _0813C7AC @ =gUnknown_203F190
- ldrb r0, [r0, 0xC]
- cmp r0, r6
- bne _0813C7B0
- movs r0, 0
-_0813C7A2:
- movs r1, 0x1
- bl sub_813C004
- b _0813C7C4
- .align 2, 0
-_0813C7AC: .4byte gUnknown_203F190
-_0813C7B0:
- cmp r0, 0
- beq _0813C7C4
- movs r0, 0
- movs r1, 0x1
- bl sub_813C004
- movs r0, 0x1
- movs r1, 0x1
- bl sub_813C004
-_0813C7C4:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_813C75C
-
- thumb_func_start sub_813C7CC
-sub_813C7CC: @ 813C7CC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r3, _0813C824 @ =gUnknown_203F190
- ldrb r5, [r3, 0xC]
- movs r6, 0
- ldrh r0, [r3, 0x6]
- cmp r6, r0
- bge _0813C81A
- adds r4, r3, 0
- movs r7, 0
-_0813C7F2:
- ldrb r1, [r4, 0x8]
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r4, 0x9]
- adds r2, r7
- lsls r2, 24
- lsrs r2, 24
- ldr r3, [r4]
- lsls r0, r5, 3
- adds r0, r3
- ldr r0, [r0]
- bl sub_813C4CC
- adds r5, 0x1
- add r7, r8
- adds r6, 0x1
- ldrh r0, [r4, 0x6]
- cmp r6, r0
- blt _0813C7F2
-_0813C81A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813C824: .4byte gUnknown_203F190
- thumb_func_end sub_813C7CC
-
- thumb_func_start sub_813C828
-sub_813C828: @ 813C828
- push {r4,lr}
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _0813C858 @ =gUnknown_203F190
- ldrb r1, [r3, 0x8]
- ldrb r2, [r3, 0xD]
- adds r4, r2, 0
- muls r4, r0
- adds r2, r4, 0
- ldrb r3, [r3, 0x9]
- adds r2, r3
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0813C85C @ =gFameCheckerText_ListMenuCursor
- bl sub_813C4CC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813C858: .4byte gUnknown_203F190
-_0813C85C: .4byte gFameCheckerText_ListMenuCursor
- thumb_func_end sub_813C828
-
- thumb_func_start sub_813C860
-sub_813C860: @ 813C860
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _0813C894 @ =gUnknown_203F190
- ldrb r1, [r3, 0x8]
- adds r2, r4, 0
- muls r2, r0
- ldrb r3, [r3, 0x9]
- adds r2, r3
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0813C898 @ =gUnknown_841CB4E
- bl sub_813C4CC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813C894: .4byte gUnknown_203F190
-_0813C898: .4byte gUnknown_841CB4E
- thumb_func_end sub_813C860
-
- thumb_func_start sub_813C89C
-sub_813C89C: @ 813C89C
- push {r4,r5,lr}
- lsls r0, 24
- cmp r0, 0
- bne _0813C8EC
- ldr r0, _0813C8B4 @ =gUnknown_203F190
- ldrh r1, [r0, 0x6]
- adds r5, r0, 0
- cmp r1, 0x1
- bne _0813C8B8
- movs r4, 0
- b _0813C8CA
- .align 2, 0
-_0813C8B4: .4byte gUnknown_203F190
-_0813C8B8:
- ldrh r0, [r5, 0x6]
- lsrs r2, r0, 1
- movs r1, 0x1
- ands r1, r0
- adds r2, r1
- subs r0, r2
- subs r0, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_0813C8CA:
- ldrb r1, [r5, 0xC]
- cmp r1, 0
- bne _0813C8DA
- ldrb r0, [r5, 0xD]
- cmp r0, 0
- beq _0813C926
- subs r0, 0x1
- b _0813C93A
-_0813C8DA:
- ldrb r0, [r5, 0xD]
- cmp r0, r4
- bls _0813C8E4
- subs r0, 0x1
- b _0813C93A
-_0813C8E4:
- subs r0, r1, 0x1
- strb r0, [r5, 0xC]
- movs r0, 0x2
- b _0813C93E
-_0813C8EC:
- ldr r0, _0813C8FC @ =gUnknown_203F190
- ldrh r1, [r0, 0x6]
- adds r5, r0, 0
- cmp r1, 0x1
- bne _0813C900
- movs r4, 0
- b _0813C90A
- .align 2, 0
-_0813C8FC: .4byte gUnknown_203F190
-_0813C900:
- ldrh r0, [r5, 0x6]
- lsrs r2, r0, 1
- movs r1, 0x1
- ands r0, r1
- adds r4, r2, r0
-_0813C90A:
- adds r1, r5, 0
- ldrb r2, [r1, 0xC]
- ldrh r0, [r1, 0x4]
- ldrh r3, [r1, 0x6]
- subs r0, r3
- cmp r2, r0
- bne _0813C92A
- ldrb r2, [r1, 0xD]
- subs r0, r3, 0x1
- cmp r2, r0
- bge _0813C926
- adds r0, r2, 0x1
- strb r0, [r1, 0xD]
- b _0813C93C
-_0813C926:
- movs r0, 0
- b _0813C93E
-_0813C92A:
- ldrb r0, [r1, 0xD]
- cmp r0, r4
- bcc _0813C938
- adds r0, r2, 0x1
- strb r0, [r1, 0xC]
- movs r0, 0x2
- b _0813C93E
-_0813C938:
- adds r0, 0x1
-_0813C93A:
- strb r0, [r5, 0xD]
-_0813C93C:
- movs r0, 0x1
-_0813C93E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_813C89C
-
- thumb_func_start sub_813C944
-sub_813C944: @ 813C944
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r0, _0813C97C @ =gUnknown_203F190
- ldrb r7, [r0, 0xD]
- movs r5, 0
- cmp r5, r2
- bge _0813C96C
- adds r4, r2, 0
-_0813C95A:
- adds r0, r6, 0
- bl sub_813C89C
- orrs r5, r0
- lsls r0, r5, 24
- lsrs r5, r0, 24
- subs r4, 0x1
- cmp r4, 0
- bne _0813C95A
-_0813C96C:
- cmp r5, 0x1
- beq _0813C980
- cmp r5, 0x1
- ble _0813C978
- cmp r5, 0x3
- ble _0813C990
-_0813C978:
- movs r0, 0x1
- b _0813C9D6
- .align 2, 0
-_0813C97C: .4byte gUnknown_203F190
-_0813C980:
- adds r0, r7, 0
- bl sub_813C860
- bl sub_813C828
- bl sub_813BC5C
- b _0813C9D4
-_0813C990:
- bl sub_812BF88
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813C9B8
- movs r0, 0x2
- bl sub_813C684
- bl sub_813C624
- bl sub_813C7CC
- bl sub_813C828
- bl sub_812BDEC
- bl sub_813C75C
- b _0813C9D0
-_0813C9B8:
- movs r0, 0
- bl sub_813BDA4
- bl sub_813C624
- bl sub_813C7CC
- bl sub_813C828
- movs r0, 0x1
- bl sub_813BDA4
-_0813C9D0:
- bl sub_813BC5C
-_0813C9D4:
- movs r0, 0
-_0813C9D6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_813C944
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s
deleted file mode 100644
index b88a86b47..000000000
--- a/asm/help_system_812B1E0.s
+++ /dev/null
@@ -1,1761 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_812B1E0
-sub_812B1E0: @ 812B1E0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0812B1EC @ =gUnknown_203B0EC
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0812B1EC: .4byte gUnknown_203B0EC
- thumb_func_end sub_812B1E0
-
- thumb_func_start HelpSystem_SetSomeVariable2
-HelpSystem_SetSomeVariable2: @ 812B1F0
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _0812B21C @ =gUnknown_203B0EC
- ldrh r2, [r0]
- cmp r2, 0x1A
- bgt _0812B216
- cmp r2, 0x17
- blt _0812B216
- cmp r1, 0x9
- beq _0812B218
- cmp r1, 0x5
- beq _0812B218
- cmp r1, 0x6
- beq _0812B218
- cmp r1, 0x7
- beq _0812B218
- cmp r1, 0x8
- beq _0812B218
-_0812B216:
- strh r1, [r0]
-_0812B218:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B21C: .4byte gUnknown_203B0EC
- thumb_func_end HelpSystem_SetSomeVariable2
-
- thumb_func_start sub_812B220
-sub_812B220: @ 812B220
- ldr r0, _0812B22C @ =gUnknown_203B0EC
- ldr r1, _0812B230 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0812B22C: .4byte gUnknown_203B0EC
-_0812B230: .4byte gSpecialVar_0x8004
- thumb_func_end sub_812B220
-
- thumb_func_start sub_812B234
-sub_812B234: @ 812B234
- ldr r0, _0812B240 @ =gUnknown_3005EA0
- ldr r1, _0812B244 @ =gUnknown_203B0EC
- ldrh r1, [r1]
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0812B240: .4byte gUnknown_3005EA0
-_0812B244: .4byte gUnknown_203B0EC
- thumb_func_end sub_812B234
-
- thumb_func_start sub_812B248
-sub_812B248: @ 812B248
- ldr r0, _0812B254 @ =gUnknown_203B0EC
- ldr r1, _0812B258 @ =gUnknown_3005EA0
- ldrh r1, [r1]
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0812B254: .4byte gUnknown_203B0EC
-_0812B258: .4byte gUnknown_3005EA0
- thumb_func_end sub_812B248
-
- thumb_func_start sub_812B25C
-sub_812B25C: @ 812B25C
- push {lr}
- ldr r0, _0812B268 @ =gUnknown_845C594
- bl sub_812B27C
- pop {r1}
- bx r1
- .align 2, 0
-_0812B268: .4byte gUnknown_845C594
- thumb_func_end sub_812B25C
-
- thumb_func_start sub_812B26C
-sub_812B26C: @ 812B26C
- push {lr}
- ldr r0, _0812B278 @ =gUnknown_845C5BC
- bl sub_812B27C
- pop {r1}
- bx r1
- .align 2, 0
-_0812B278: .4byte gUnknown_845C5BC
- thumb_func_end sub_812B26C
-
- thumb_func_start sub_812B27C
-sub_812B27C: @ 812B27C
- push {r4,lr}
- adds r2, r0, 0
- ldr r0, _0812B2AC @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x4
- ldrsb r1, [r0, r1]
- lsls r1, 8
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- lsrs r3, r0, 16
- ldrh r0, [r2]
- ldr r1, _0812B2B0 @ =0x0000ffff
- cmp r0, r1
- beq _0812B2BC
- adds r4, r1, 0
- adds r1, r2, 0
-_0812B2A2:
- ldrh r0, [r1]
- cmp r0, r3
- bne _0812B2B4
- movs r0, 0x1
- b _0812B2BE
- .align 2, 0
-_0812B2AC: .4byte gSaveBlock1Ptr
-_0812B2B0: .4byte 0x0000ffff
-_0812B2B4:
- adds r1, 0x2
- ldrh r0, [r1]
- cmp r0, r4
- bne _0812B2A2
-_0812B2BC:
- movs r0, 0
-_0812B2BE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812B27C
-
- thumb_func_start sub_812B2C4
-sub_812B2C4: @ 812B2C4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r5, 0
- ldr r0, _0812B2E8 @ =gUnknown_845C5CE
- mov r9, r0
- movs r0, 0x2
- add r0, r9
- mov r8, r0
-_0812B2D8:
- movs r6, 0
- mov r4, r9
- lsls r1, r5, 1
- adds r0, r1, r5
- add r0, r8
- adds r7, r1, 0
- b _0812B33A
- .align 2, 0
-_0812B2E8: .4byte gUnknown_845C5CE
-_0812B2EC:
- adds r3, r1, r5
- adds r0, r3, r4
- ldrb r1, [r0]
- ldr r0, _0812B324 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- cmp r1, r0
- bne _0812B32C
- adds r0, r4, 0x1
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r0, r6
- movs r1, 0x5
- ldrsb r1, [r2, r1]
- cmp r0, r1
- bne _0812B32C
- cmp r5, 0xF
- bne _0812B320
- ldr r0, _0812B328 @ =0x00000849
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812B32C
-_0812B320:
- movs r0, 0x1
- b _0812B34C
- .align 2, 0
-_0812B324: .4byte gSaveBlock1Ptr
-_0812B328: .4byte 0x00000849
-_0812B32C:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, _0812B358 @ =gUnknown_845C5CE
- adds r1, r7, 0
- adds r0, r1, r5
- add r0, r8
-_0812B33A:
- ldrb r0, [r0]
- cmp r6, r0
- bcc _0812B2EC
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _0812B2D8
- movs r0, 0
-_0812B34C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0812B358: .4byte gUnknown_845C5CE
- thumb_func_end sub_812B2C4
-
- thumb_func_start sub_812B35C
-sub_812B35C: @ 812B35C
- push {lr}
- bl sub_812B4B8
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _0812B376
- movs r0, 0x16
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B376:
- bl sub_812B2C4
- lsls r0, 24
- cmp r0, 0
- beq _0812B388
- movs r0, 0x15
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B388:
- ldr r0, _0812B3B0 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- bl is_light_level_8_or_9
- lsls r0, 24
- cmp r0, 0
- beq _0812B400
- ldr r0, _0812B3B4 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- cmp r1, 0x4
- beq _0812B3A8
- movs r0, 0x82
- lsls r0, 1
- cmp r1, r0
- bne _0812B3B8
-_0812B3A8:
- movs r0, 0xE
- bl HelpSystem_SetSomeVariable2
- b _0812B406
- .align 2, 0
-_0812B3B0: .4byte gMapHeader
-_0812B3B4: .4byte gSaveBlock1Ptr
-_0812B3B8:
- movs r0, 0xC1
- lsls r0, 2
- cmp r1, r0
- bne _0812B3C8
- movs r0, 0xF
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B3C8:
- bl IsCurMapPokeCenter
- cmp r0, 0x1
- bne _0812B3D8
- movs r0, 0x10
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B3D8:
- bl sub_812B25C
- cmp r0, 0x1
- bne _0812B3E8
- movs r0, 0x11
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B3E8:
- bl sub_812B26C
- cmp r0, 0x1
- bne _0812B3F8
- movs r0, 0x12
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B3F8:
- movs r0, 0x13
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B400:
- movs r0, 0x14
- bl HelpSystem_SetSomeVariable2
-_0812B406:
- pop {r0}
- bx r0
- thumb_func_end sub_812B35C
-
- thumb_func_start sub_812B40C
-sub_812B40C: @ 812B40C
- push {lr}
- ldr r0, _0812B434 @ =gUnknown_203B0EE
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0812B42E
- ldr r0, _0812B438 @ =gSaveFileStatus
- ldrh r0, [r0]
- cmp r0, 0
- beq _0812B440
- cmp r0, 0x2
- beq _0812B440
- ldr r0, _0812B43C @ =0x0000083c
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0812B440
-_0812B42E:
- movs r0, 0
- b _0812B44E
- .align 2, 0
-_0812B434: .4byte gUnknown_203B0EE
-_0812B438: .4byte gSaveFileStatus
-_0812B43C: .4byte 0x0000083c
-_0812B440:
- ldr r0, _0812B454 @ =0x0000083c
- bl FlagSet
- ldr r1, _0812B458 @ =gUnknown_203B0EE
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x1
-_0812B44E:
- pop {r1}
- bx r1
- .align 2, 0
-_0812B454: .4byte 0x0000083c
-_0812B458: .4byte gUnknown_203B0EE
- thumb_func_end sub_812B40C
-
- thumb_func_start sub_812B45C
-sub_812B45C: @ 812B45C
- push {lr}
- ldr r0, _0812B46C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0812B470
- movs r0, 0x1
- b _0812B472
- .align 2, 0
-_0812B46C: .4byte gReceivedRemoteLinkPlayers
-_0812B470:
- movs r0, 0
-_0812B472:
- pop {r1}
- bx r1
- thumb_func_end sub_812B45C
-
- thumb_func_start sub_812B478
-sub_812B478: @ 812B478
- ldr r1, _0812B480 @ =gUnknown_3005ECC
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0812B480: .4byte gUnknown_3005ECC
- thumb_func_end sub_812B478
-
- thumb_func_start sub_812B484
-sub_812B484: @ 812B484
- push {lr}
- ldr r0, _0812B4A4 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0812B49E
- ldr r1, _0812B4A8 @ =gUnknown_3005ECC
- movs r0, 0x1
- strb r0, [r1]
- bl sub_812B4B8
-_0812B49E:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B4A4: .4byte gUnknown_203ADFA
-_0812B4A8: .4byte gUnknown_3005ECC
- thumb_func_end sub_812B484
-
- thumb_func_start sub_812B4AC
-sub_812B4AC: @ 812B4AC
- ldr r1, _0812B4B4 @ =gUnknown_203F175
- movs r0, 0x1
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0812B4B4: .4byte gUnknown_203F175
- thumb_func_end sub_812B4AC
-
- thumb_func_start sub_812B4B8
-sub_812B4B8: @ 812B4B8
- ldr r1, _0812B4C0 @ =gUnknown_203F175
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0812B4C0: .4byte gUnknown_203F175
- thumb_func_end sub_812B4B8
-
- thumb_func_start sub_812B4C4
-sub_812B4C4: @ 812B4C4
- str r1, [r0]
- movs r2, 0x1
- movs r1, 0x1
- strh r1, [r0, 0x4]
- strh r1, [r0, 0x6]
- strb r2, [r0, 0x8]
- movs r1, 0x4
- strb r1, [r0, 0x9]
- bx lr
- thumb_func_end sub_812B4C4
-
- thumb_func_start sub_812B4D8
-sub_812B4D8: @ 812B4D8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_812B4C4
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812B520
- ldr r0, _0812B518 @ =gUnknown_841DFAC
- bl sub_812BF74
- ldr r0, _0812B51C @ =gUnknown_3005E9C
- ldrb r2, [r0, 0x2]
- adds r0, r4, 0
- movs r1, 0
- bl sub_813C64C
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812BF9C
- movs r0, 0x1
- bl sub_813BDA4
- movs r0, 0x1
- bl sub_813BD5C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B518: .4byte gUnknown_841DFAC
-_0812B51C: .4byte gUnknown_3005E9C
- thumb_func_end sub_812B4D8
-
- thumb_func_start sub_812B520
-sub_812B520: @ 812B520
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- adds r5, r1, 0
- movs r4, 0
- movs r3, 0
- ldr r0, _0812B598 @ =gUnknown_845C4B0
- mov r9, r0
- ldr r1, _0812B59C @ =gUnknown_203B0EC
- mov r8, r1
- ldr r0, _0812B5A0 @ =gUnknown_845C4B6
- mov r12, r0
- ldr r7, _0812B5A4 @ =gUnknown_845B080
-_0812B53E:
- mov r1, r9
- adds r0, r3, r1
- ldrb r2, [r0]
- mov r0, r8
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- adds r0, r2, r0
- add r0, r12
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0812B56C
- lsls r1, r4, 3
- adds r1, r5
- lsls r0, r2, 2
- adds r0, r7
- ldr r0, [r0]
- str r0, [r1]
- str r2, [r1, 0x4]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0812B56C:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x5
- bls _0812B53E
- lsls r0, r4, 3
- adds r0, r5
- subs r0, 0x8
- movs r1, 0x2
- negs r1, r1
- str r1, [r0, 0x4]
- movs r0, 0
- strh r4, [r6, 0x4]
- strh r4, [r6, 0x6]
- strb r0, [r6, 0x8]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B598: .4byte gUnknown_845C4B0
-_0812B59C: .4byte gUnknown_203B0EC
-_0812B5A0: .4byte gUnknown_845C4B6
-_0812B5A4: .4byte gUnknown_845B080
- thumb_func_end sub_812B520
-
- thumb_func_start sub_812B5A8
-sub_812B5A8: @ 812B5A8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0
- bl sub_813BDE8
- movs r0, 0
- bl sub_813BFC0
- movs r0, 0x1
- bl sub_813BE78
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812B4C4
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812B614
- ldr r0, _0812B608 @ =gUnknown_841DFC9
- bl sub_812BF74
- ldrb r1, [r4, 0xC]
- ldrb r2, [r4, 0xD]
- adds r0, r4, 0
- bl sub_813C64C
- ldr r1, _0812B60C @ =gUnknown_845B080
- ldr r0, _0812B610 @ =gUnknown_3005E9C
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0
- bl sub_813C4CC
- movs r0, 0x1
- bl sub_813BDA4
- movs r0, 0x1
- bl sub_813BD5C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B608: .4byte gUnknown_841DFC9
-_0812B60C: .4byte gUnknown_845B080
-_0812B610: .4byte gUnknown_3005E9C
- thumb_func_end sub_812B5A8
-
- thumb_func_start sub_812B614
-sub_812B614: @ 812B614
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- mov r8, r0
- adds r5, r1, 0
- movs r6, 0
- ldr r3, _0812B664 @ =gUnknown_845B9E0
- ldr r0, _0812B668 @ =gUnknown_203B0EC
- ldrh r1, [r0]
- lsls r0, r1, 2
- ldr r2, _0812B66C @ =gUnknown_3005E9C
- adds r0, r1
- ldrb r2, [r2, 0x1]
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- ldr r3, [r0]
- movs r7, 0
- ldrb r0, [r3]
- cmp r0, 0xFF
- beq _0812B6D0
-_0812B640:
- adds r4, r3, r7
- ldrb r0, [r4]
- str r3, [sp]
- bl sub_812B780
- lsls r0, 24
- lsrs r0, 24
- ldr r3, [sp]
- cmp r0, 0x1
- bne _0812B6C2
- ldr r0, _0812B66C @ =gUnknown_3005E9C
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0812B674
- lsls r1, r6, 3
- adds r1, r5
- ldr r2, _0812B670 @ =gUnknown_845B0B0
- b _0812B6AA
- .align 2, 0
-_0812B664: .4byte gUnknown_845B9E0
-_0812B668: .4byte gUnknown_203B0EC
-_0812B66C: .4byte gUnknown_3005E9C
-_0812B670: .4byte gUnknown_845B0B0
-_0812B674:
- cmp r0, 0x1
- bne _0812B684
- lsls r1, r6, 3
- adds r1, r5
- ldr r2, _0812B680 @ =gUnknown_845B218
- b _0812B6AA
- .align 2, 0
-_0812B680: .4byte gUnknown_845B218
-_0812B684:
- cmp r0, 0x2
- bne _0812B694
- lsls r1, r6, 3
- adds r1, r5
- ldr r2, _0812B690 @ =gUnknown_845B3A0
- b _0812B6AA
- .align 2, 0
-_0812B690: .4byte gUnknown_845B3A0
-_0812B694:
- cmp r0, 0x3
- bne _0812B6A4
- lsls r1, r6, 3
- adds r1, r5
- ldr r2, _0812B6A0 @ =gUnknown_845B500
- b _0812B6AA
- .align 2, 0
-_0812B6A0: .4byte gUnknown_845B500
-_0812B6A4:
- lsls r1, r6, 3
- adds r1, r5
- ldr r2, _0812B744 @ =gUnknown_845B540
-_0812B6AA:
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
- lsls r0, r6, 3
- adds r0, r5
- ldrb r1, [r4]
- str r1, [r0, 0x4]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0812B6C2:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r3, r7
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0812B640
-_0812B6D0:
- bl sub_812B754
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812B710
- movs r7, 0
- ldr r3, _0812B748 @ =gUnknown_845B9BE
- ldrb r0, [r3]
- cmp r0, 0xFF
- beq _0812B710
- ldr r4, _0812B74C @ =gUnknown_845B3A0
-_0812B6E8:
- lsls r1, r6, 3
- adds r1, r5
- adds r2, r3, r7
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- ldrb r0, [r2]
- str r0, [r1, 0x4]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r3, r7
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0812B6E8
-_0812B710:
- lsls r0, r6, 3
- adds r0, r5
- ldr r1, _0812B750 @ =gUnknown_81B2E6F
- str r1, [r0]
- movs r1, 0x2
- negs r1, r1
- str r1, [r0, 0x4]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0
- mov r0, r8
- strh r6, [r0, 0x4]
- movs r0, 0x7
- mov r2, r8
- strh r0, [r2, 0x6]
- strb r1, [r2, 0x8]
- movs r0, 0x15
- strb r0, [r2, 0x9]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B744: .4byte gUnknown_845B540
-_0812B748: .4byte gUnknown_845B9BE
-_0812B74C: .4byte gUnknown_845B3A0
-_0812B750: .4byte gUnknown_81B2E6F
- thumb_func_end sub_812B614
-
- thumb_func_start sub_812B754
-sub_812B754: @ 812B754
- push {lr}
- movs r0, 0x96
- lsls r0, 3
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812B778
- ldr r0, _0812B774 @ =gUnknown_3005E9C
- ldrb r0, [r0, 0x1]
- cmp r0, 0x2
- bne _0812B778
- movs r0, 0x1
- b _0812B77A
- .align 2, 0
-_0812B774: .4byte gUnknown_3005E9C
-_0812B778:
- movs r0, 0
-_0812B77A:
- pop {r1}
- bx r1
- thumb_func_end sub_812B754
-
- thumb_func_start sub_812B780
-sub_812B780: @ 812B780
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- adds r5, r1, 0
- movs r4, 0
- ldr r0, _0812B7A8 @ =gUnknown_3005E9C
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0812B794
- b _0812B8AC
-_0812B794:
- subs r0, r1, 0x1
- cmp r0, 0x2B
- bls _0812B79C
- b _0812BB04
-_0812B79C:
- lsls r0, 2
- ldr r1, _0812B7AC @ =_0812B7B0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812B7A8: .4byte gUnknown_3005E9C
-_0812B7AC: .4byte _0812B7B0
- .align 2, 0
-_0812B7B0:
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B860
- .4byte _0812BB08
- .4byte _0812B868
- .4byte _0812B870
- .4byte _0812BB08
- .4byte _0812B880
- .4byte _0812B868
- .4byte _0812B878
- .4byte _0812B890
- .4byte _0812B880
- .4byte _0812B880
- .4byte _0812B880
- .4byte _0812B868
- .4byte _0812B880
- .4byte _0812B880
- .4byte _0812B868
- .4byte _0812B880
- .4byte _0812B888
- .4byte _0812B868
- .4byte _0812B888
- .4byte _0812B878
- .4byte _0812B890
- .4byte _0812B880
- .4byte _0812B890
- .4byte _0812B896
- .4byte _0812B880
- .4byte _0812B890
- .4byte _0812B880
- .4byte _0812B890
- .4byte _0812B890
- .4byte _0812BB08
- .4byte _0812B868
- .4byte _0812B868
- .4byte _0812B880
- .4byte _0812BB08
- .4byte _0812B89C
- .4byte _0812B896
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B8A4
-_0812B860:
- ldr r0, _0812B864 @ =0x000002cf
- b _0812BAF2
- .align 2, 0
-_0812B864: .4byte 0x000002cf
-_0812B868:
- ldr r0, _0812B86C @ =0x00000891
- b _0812BAF2
- .align 2, 0
-_0812B86C: .4byte 0x00000891
-_0812B870:
- ldr r0, _0812B874 @ =0x00000895
- b _0812BAF2
- .align 2, 0
-_0812B874: .4byte 0x00000895
-_0812B878:
- ldr r0, _0812B87C @ =0x000008a4
- b _0812BAF2
- .align 2, 0
-_0812B87C: .4byte 0x000008a4
-_0812B880:
- ldr r0, _0812B884 @ =0x00000828
- b _0812BAF2
- .align 2, 0
-_0812B884: .4byte 0x00000828
-_0812B888:
- ldr r0, _0812B88C @ =0x00000829
- b _0812BAF2
- .align 2, 0
-_0812B88C: .4byte 0x00000829
-_0812B890:
- movs r0, 0x82
- lsls r0, 4
- b _0812BAF2
-_0812B896:
- bl sub_812BB10
- b _0812BAF6
-_0812B89C:
- ldr r0, _0812B8A0 @ =0x0000029b
- b _0812BAF2
- .align 2, 0
-_0812B8A0: .4byte 0x0000029b
-_0812B8A4:
- ldr r0, _0812B8A8 @ =0x00000892
- b _0812BAF2
- .align 2, 0
-_0812B8A8: .4byte 0x00000892
-_0812B8AC:
- cmp r0, 0x1
- beq _0812B8B2
- b _0812B9D8
-_0812B8B2:
- subs r0, r1, 0x1
- cmp r0, 0x2F
- bls _0812B8BA
- b _0812BB04
-_0812B8BA:
- lsls r0, 2
- ldr r1, _0812B8C4 @ =_0812B8C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812B8C4: .4byte _0812B8C8
- .align 2, 0
-_0812B8C8:
- .4byte _0812B988
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812B9A8
- .4byte _0812B9A0
- .4byte _0812BB08
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B9A0
- .4byte _0812B990
- .4byte _0812B9BA
- .4byte _0812B9C0
- .4byte _0812B9C0
- .4byte _0812B9C6
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B988
- .4byte _0812BB08
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812B9A8
- .4byte _0812B9A0
- .4byte _0812BB08
- .4byte _0812B988
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B9D0
-_0812B988:
- ldr r0, _0812B98C @ =0x00000829
- b _0812BAF2
- .align 2, 0
-_0812B98C: .4byte 0x00000829
-_0812B990:
- ldr r0, _0812B99C @ =0x00000169
- movs r1, 0x1
- bl CheckBagHasItem
- b _0812BAF6
- .align 2, 0
-_0812B99C: .4byte 0x00000169
-_0812B9A0:
- ldr r0, _0812B9A4 @ =0x00000828
- b _0812BAF2
- .align 2, 0
-_0812B9A4: .4byte 0x00000828
-_0812B9A8:
- movs r0, 0x1
- bl sub_8088EDC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _0812B9B8
- b _0812BB08
-_0812B9B8:
- b _0812BB04
-_0812B9BA:
- movs r0, 0x82
- lsls r0, 4
- b _0812BAF2
-_0812B9C0:
- bl sub_812BB10
- b _0812BAF6
-_0812B9C6:
- ldr r0, _0812B9CC @ =0x00000271
- b _0812BAF2
- .align 2, 0
-_0812B9CC: .4byte 0x00000271
-_0812B9D0:
- ldr r0, _0812B9D4 @ =0x0000082c
- b _0812BAF2
- .align 2, 0
-_0812B9D4: .4byte 0x0000082c
-_0812B9D8:
- cmp r0, 0x2
- beq _0812B9DE
- b _0812BADC
-_0812B9DE:
- bl sub_812B754
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812BA0E
- ldr r0, _0812BA20 @ =gUnknown_845B9BE
- ldrb r1, [r0]
- adds r2, r0, 0
- cmp r1, 0xFF
- beq _0812BA0E
- adds r1, r2, 0
-_0812B9F6:
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, r5
- bne _0812BA00
- b _0812BB04
-_0812BA00:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0812B9F6
-_0812BA0E:
- subs r0, r5, 0x1
- cmp r0, 0x26
- bls _0812BA16
- b _0812BB08
-_0812BA16:
- lsls r0, 2
- ldr r1, _0812BA24 @ =_0812BA28
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812BA20: .4byte gUnknown_845B9BE
-_0812BA24: .4byte _0812BA28
- .align 2, 0
-_0812BA28:
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAD2
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BB08
- .4byte _0812BAD2
- .4byte _0812BAC4
- .4byte _0812BB08
- .4byte _0812BAD2
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BACC
- .4byte _0812BACC
- .4byte _0812BB08
- .4byte _0812BAD2
-_0812BAC4:
- ldr r0, _0812BAC8 @ =0x00000828
- b _0812BAF2
- .align 2, 0
-_0812BAC8: .4byte 0x00000828
-_0812BACC:
- bl sub_812BB10
- b _0812BAF6
-_0812BAD2:
- ldr r0, _0812BAD8 @ =0x000008a4
- b _0812BAF2
- .align 2, 0
-_0812BAD8: .4byte 0x000008a4
-_0812BADC:
- cmp r0, 0x3
- bne _0812BB00
- cmp r5, 0x5
- beq _0812BAEA
- cmp r5, 0x6
- beq _0812BAF0
- b _0812BB08
-_0812BAEA:
- movs r0, 0x82
- lsls r0, 4
- b _0812BAF2
-_0812BAF0:
- ldr r0, _0812BAFC @ =0x00000821
-_0812BAF2:
- bl FlagGet
-_0812BAF6:
- lsls r0, 24
- lsrs r0, 24
- b _0812BB0A
- .align 2, 0
-_0812BAFC: .4byte 0x00000821
-_0812BB00:
- cmp r0, 0x4
- beq _0812BB08
-_0812BB04:
- movs r0, 0
- b _0812BB0A
-_0812BB08:
- movs r0, 0x1
-_0812BB0A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_812B780
-
- thumb_func_start sub_812BB10
-sub_812BB10: @ 812BB10
- push {lr}
- ldr r0, _0812BB7C @ =0x00000237
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- movs r0, 0x8E
- lsls r0, 2
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB80 @ =0x00000239
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB84 @ =0x0000023a
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB88 @ =0x0000023b
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB8C @ =0x000002ef
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB90 @ =0x000001f1
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- movs r0, 0
- b _0812BB96
- .align 2, 0
-_0812BB7C: .4byte 0x00000237
-_0812BB80: .4byte 0x00000239
-_0812BB84: .4byte 0x0000023a
-_0812BB88: .4byte 0x0000023b
-_0812BB8C: .4byte 0x000002ef
-_0812BB90: .4byte 0x000001f1
-_0812BB94:
- movs r0, 0x1
-_0812BB96:
- pop {r1}
- bx r1
- thumb_func_end sub_812BB10
-
- thumb_func_start sub_812BB9C
-sub_812BB9C: @ 812BB9C
- push {lr}
- adds r2, r0, 0
- adds r3, r1, 0
- ldrb r0, [r2, 0xE]
- cmp r0, 0xA
- bhi _0812BC4C
- lsls r0, 2
- ldr r1, _0812BBB4 @ =_0812BBB8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812BBB4: .4byte _0812BBB8
- .align 2, 0
-_0812BBB8:
- .4byte _0812BC02
- .4byte _0812BC0C
- .4byte _0812BC16
- .4byte _0812BC20
- .4byte _0812BC2A
- .4byte _0812BC34
- .4byte _0812BC3E
- .4byte _0812BC4C
- .4byte _0812BBE4
- .4byte _0812BBEE
- .4byte _0812BBF8
-_0812BBE4:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BC54
- b _0812BC46
-_0812BBEE:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BC80
- b _0812BC46
-_0812BBF8:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BCA8
- b _0812BC46
-_0812BC02:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BCD0
- b _0812BC46
-_0812BC0C:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BD2C
- b _0812BC46
-_0812BC16:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BD64
- b _0812BC46
-_0812BC20:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BD98
- b _0812BC46
-_0812BC2A:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BE10
- b _0812BC46
-_0812BC34:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BEEC
- b _0812BC46
-_0812BC3E:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BF18
-_0812BC46:
- lsls r0, 24
- lsrs r0, 24
- b _0812BC4E
-_0812BC4C:
- movs r0, 0
-_0812BC4E:
- pop {r1}
- bx r1
- thumb_func_end sub_812BB9C
-
- thumb_func_start sub_812BC54
-sub_812BC54: @ 812BC54
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0812BC7C @ =gUnknown_841DFA5
- bl sub_812BF74
- bl sub_812BF5C
- movs r0, 0x1
- bl sub_813BDA4
- movs r0, 0x1
- bl sub_813BD5C
- movs r0, 0x9
- strb r0, [r4, 0xE]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BC7C: .4byte gUnknown_841DFA5
- thumb_func_end sub_812BC54
-
- thumb_func_start sub_812BC80
-sub_812BC80: @ 812BC80
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0812BCA4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812BC9A
- movs r0, 0x5
- bl PlaySE
- movs r0, 0xA
- strb r0, [r4, 0xE]
-_0812BC9A:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BCA4: .4byte gMain
- thumb_func_end sub_812BC80
-
- thumb_func_start sub_812BCA8
-sub_812BCA8: @ 812BCA8
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r6, r1, 0
- ldr r0, _0812BCCC @ =gUnknown_3005E9C
- movs r5, 0
- strb r5, [r0, 0x2]
- adds r0, r4, 0
- bl sub_812BF94
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_812B4D8
- strb r5, [r4, 0xE]
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BCCC: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BCA8
-
- thumb_func_start sub_812BCD0
-sub_812BCD0: @ 812BCD0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_813C690
- adds r1, r0, 0
- adds r0, r1, 0x6
- cmp r0, 0x5
- bhi _0812BD16
- lsls r0, 2
- ldr r1, _0812BCEC @ =_0812BCF0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812BCEC: .4byte _0812BCF0
- .align 2, 0
-_0812BCF0:
- .4byte _0812BD08
- .4byte _0812BD0C
- .4byte _0812BD0C
- .4byte _0812BD1E
- .4byte _0812BD08
- .4byte _0812BD1E
-_0812BD08:
- movs r0, 0
- b _0812BD20
-_0812BD0C:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812BF9C
- b _0812BD1E
-_0812BD16:
- ldr r0, _0812BD28 @ =gUnknown_3005E9C
- strb r1, [r0, 0x1]
- movs r0, 0x1
- strb r0, [r4, 0xE]
-_0812BD1E:
- movs r0, 0x1
-_0812BD20:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BD28: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BCD0
-
- thumb_func_start sub_812BD2C
-sub_812BD2C: @ 812BD2C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0812BD60 @ =gUnknown_3005E9C
- movs r0, 0x1
- strb r0, [r1]
- ldrb r0, [r4, 0xD]
- strb r0, [r1, 0x2]
- adds r0, r4, 0
- bl sub_812BF94
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812B5A8
- bl sub_813C75C
- movs r0, 0x2
- bl sub_813C684
- movs r0, 0x3
- strb r0, [r4, 0xE]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BD60: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BD2C
-
- thumb_func_start sub_812BD64
-sub_812BD64: @ 812BD64
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- movs r0, 0
- movs r1, 0
- bl sub_813C004
- movs r0, 0x1
- movs r1, 0
- bl sub_813C004
- ldr r0, _0812BD94 @ =gUnknown_3005E9C
- movs r4, 0
- strb r4, [r0]
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_812B4D8
- strb r4, [r5, 0xE]
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BD94: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BD64
-
- thumb_func_start sub_812BD98
-sub_812BD98: @ 812BD98
- push {r4,lr}
- adds r4, r0, 0
- bl sub_813C690
- adds r1, r0, 0
- adds r0, r1, 0x6
- cmp r0, 0x5
- bhi _0812BDD8
- lsls r0, 2
- ldr r1, _0812BDB4 @ =_0812BDB8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812BDB4: .4byte _0812BDB8
- .align 2, 0
-_0812BDB8:
- .4byte _0812BDD0
- .4byte _0812BDE0
- .4byte _0812BDE0
- .4byte _0812BDE0
- .4byte _0812BDD4
- .4byte _0812BDE0
-_0812BDD0:
- movs r0, 0
- b _0812BDE2
-_0812BDD4:
- movs r0, 0x2
- b _0812BDDE
-_0812BDD8:
- ldr r0, _0812BDE8 @ =gUnknown_3005E9C
- strb r1, [r0, 0x3]
- movs r0, 0x4
-_0812BDDE:
- strb r0, [r4, 0xE]
-_0812BDE0:
- movs r0, 0x1
-_0812BDE2:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BDE8: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BD98
-
- thumb_func_start sub_812BDEC
-sub_812BDEC: @ 812BDEC
- push {lr}
- ldr r1, _0812BE08 @ =gUnknown_845B080
- ldr r0, _0812BE0C @ =gUnknown_3005E9C
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0
- bl sub_813C4CC
- pop {r0}
- bx r0
- .align 2, 0
-_0812BE08: .4byte gUnknown_845B080
-_0812BE0C: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BDEC
-
- thumb_func_start sub_812BE10
-sub_812BE10: @ 812BE10
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _0812BE4C @ =gUnknown_3005E9C
- movs r0, 0x2
- strb r0, [r4]
- movs r0, 0
- bl sub_813BDA4
- bl sub_813C624
- ldr r0, _0812BE50 @ =gUnknown_841DFBE
- bl sub_812BF74
- movs r0, 0x1
- bl sub_813BDE8
- movs r0, 0x1
- bl sub_813BEE4
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _0812BE5C
- ldr r0, _0812BE54 @ =gUnknown_845B0B0
- ldrb r1, [r4, 0x3]
- lsls r1, 2
- adds r0, r1, r0
- ldr r0, [r0]
- ldr r2, _0812BE58 @ =gUnknown_845B164
- b _0812BEA4
- .align 2, 0
-_0812BE4C: .4byte gUnknown_3005E9C
-_0812BE50: .4byte gUnknown_841DFBE
-_0812BE54: .4byte gUnknown_845B0B0
-_0812BE58: .4byte gUnknown_845B164
-_0812BE5C:
- cmp r0, 0x1
- bne _0812BE78
- ldr r0, _0812BE70 @ =gUnknown_845B218
- ldrb r1, [r4, 0x3]
- lsls r1, 2
- adds r0, r1, r0
- ldr r0, [r0]
- ldr r2, _0812BE74 @ =gUnknown_845B2DC
- b _0812BEA4
- .align 2, 0
-_0812BE70: .4byte gUnknown_845B218
-_0812BE74: .4byte gUnknown_845B2DC
-_0812BE78:
- cmp r0, 0x2
- bne _0812BE94
- ldr r0, _0812BE8C @ =gUnknown_845B3A0
- ldrb r1, [r4, 0x3]
- lsls r1, 2
- adds r0, r1, r0
- ldr r0, [r0]
- ldr r2, _0812BE90 @ =gUnknown_845B450
- b _0812BEA4
- .align 2, 0
-_0812BE8C: .4byte gUnknown_845B3A0
-_0812BE90: .4byte gUnknown_845B450
-_0812BE94:
- cmp r0, 0x3
- bne _0812BEB8
- ldr r0, _0812BEB0 @ =gUnknown_845B500
- ldrb r1, [r4, 0x3]
- lsls r1, 2
- adds r0, r1, r0
- ldr r0, [r0]
- ldr r2, _0812BEB4 @ =gUnknown_845B520
-_0812BEA4:
- adds r1, r2
- ldr r1, [r1]
- bl sub_813C50C
- b _0812BECC
- .align 2, 0
-_0812BEB0: .4byte gUnknown_845B500
-_0812BEB4: .4byte gUnknown_845B520
-_0812BEB8:
- ldr r0, _0812BEE4 @ =gUnknown_845B540
- ldrb r1, [r4, 0x3]
- lsls r1, 2
- adds r0, r1, r0
- ldr r0, [r0]
- ldr r2, _0812BEE8 @ =gUnknown_845B5D0
- adds r1, r2
- ldr r1, [r1]
- bl sub_813C50C
-_0812BECC:
- movs r0, 0x1
- bl sub_813BDA4
- movs r0, 0x1
- bl sub_813BD5C
- movs r0, 0x6
- strb r0, [r5, 0xE]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BEE4: .4byte gUnknown_845B540
-_0812BEE8: .4byte gUnknown_845B5D0
- thumb_func_end sub_812BE10
-
- thumb_func_start sub_812BEEC
-sub_812BEEC: @ 812BEEC
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, _0812BF14 @ =gUnknown_3005E9C
- movs r0, 0x1
- strb r0, [r2]
- adds r0, r4, 0
- bl sub_812B5A8
- bl sub_813C75C
- movs r0, 0x2
- bl sub_813C684
- movs r0, 0x3
- strb r0, [r4, 0xE]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BF14: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BEEC
-
- thumb_func_start sub_812BF18
-sub_812BF18: @ 812BF18
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0812BF40 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0812BF30
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812BF44
-_0812BF30:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x5
- strb r0, [r4, 0xE]
- movs r0, 0x1
- b _0812BF54
- .align 2, 0
-_0812BF40: .4byte gMain
-_0812BF44:
- movs r0, 0xC0
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- bne _0812BF52
- movs r0, 0x1
- b _0812BF54
-_0812BF52:
- movs r0, 0
-_0812BF54:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812BF18
-
- thumb_func_start sub_812BF5C
-sub_812BF5C: @ 812BF5C
- push {lr}
- bl sub_813C624
- ldr r0, _0812BF70 @ =gUnknown_81B2FC9
- movs r1, 0
- movs r2, 0
- bl sub_813C4CC
- pop {r0}
- bx r0
- .align 2, 0
-_0812BF70: .4byte gUnknown_81B2FC9
- thumb_func_end sub_812BF5C
-
- thumb_func_start sub_812BF74
-sub_812BF74: @ 812BF74
- push {r4,lr}
- adds r4, r0, 0
- bl sub_813C5FC
- adds r0, r4, 0
- bl sub_813C488
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_812BF74
-
- thumb_func_start sub_812BF88
-sub_812BF88: @ 812BF88
- ldr r0, _0812BF90 @ =gUnknown_3005E9C
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0812BF90: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BF88
-
- thumb_func_start sub_812BF94
-sub_812BF94: @ 812BF94
- movs r1, 0
- strb r1, [r0, 0xC]
- strb r1, [r0, 0xD]
- bx lr
- thumb_func_end sub_812BF94
-
- thumb_func_start sub_812BF9C
-sub_812BF9C: @ 812BF9C
- push {lr}
- ldrb r2, [r0, 0xC]
- ldrb r0, [r0, 0xD]
- adds r2, r0
- lsls r2, 3
- adds r2, r1
- ldr r1, [r2, 0x4]
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- bne _0812BFC0
- ldr r0, _0812BFBC @ =gUnknown_845B098
- ldr r0, [r0, 0x14]
- bl sub_813C584
- b _0812BFCC
- .align 2, 0
-_0812BFBC: .4byte gUnknown_845B098
-_0812BFC0:
- ldr r0, _0812BFD8 @ =gUnknown_845B098
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- bl sub_813C584
-_0812BFCC:
- movs r0, 0x1
- bl sub_813BE30
- pop {r0}
- bx r0
- .align 2, 0
-_0812BFD8: .4byte gUnknown_845B098
- thumb_func_end sub_812BF9C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/hof_pc.s b/asm/hof_pc.s
deleted file mode 100644
index 80f7fc3f9..000000000
--- a/asm/hof_pc.s
+++ /dev/null
@@ -1,118 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80CA53C
-sub_80CA53C: @ 80CA53C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080CA56C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080CA564
- bl FreeAllWindowBuffers
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, _080CA570 @ =sub_80F2978
- bl SetMainCallback2
-_080CA564:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080CA56C: .4byte gPaletteFade
-_080CA570: .4byte sub_80F2978
- thumb_func_end sub_80CA53C
-
- thumb_func_start sub_80CA574
-sub_80CA574: @ 80CA574
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- bl ScriptContext2_Enable
- ldr r0, _080CA59C @ =sub_80CA53C
- movs r1, 0
- bl CreateTask
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080CA59C: .4byte sub_80CA53C
- thumb_func_end sub_80CA574
-
- thumb_func_start sub_80CA5A0
-sub_80CA5A0: @ 80CA5A0
- push {lr}
- ldr r0, _080CA5B4 @ =CB2_ReturnToField
- bl SetMainCallback2
- ldr r1, _080CA5B8 @ =gFieldCallback
- ldr r0, _080CA5BC @ =sub_80CA5C0
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080CA5B4: .4byte CB2_ReturnToField
-_080CA5B8: .4byte gFieldCallback
-_080CA5BC: .4byte sub_80CA5C0
- thumb_func_end sub_80CA5A0
-
- thumb_func_start sub_80CA5C0
-sub_80CA5C0: @ 80CA5C0
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- bl sub_8055DC4
- bl sp109_CreatePCMenu
- bl sub_809D254
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _080CA5F4 @ =sub_80CA5F8
- movs r1, 0xA
- bl CreateTask
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080CA5F4: .4byte sub_80CA5F8
- thumb_func_end sub_80CA5C0
-
- thumb_func_start sub_80CA5F8
-sub_80CA5F8: @ 80CA5F8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080CA614 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080CA610
- adds r0, r2, 0
- bl DestroyTask
-_080CA610:
- pop {r0}
- bx r0
- .align 2, 0
-_080CA614: .4byte gPaletteFade
- thumb_func_end sub_80CA5F8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/ice.s b/asm/ice.s
new file mode 100644
index 000000000..c04715b95
--- /dev/null
+++ b/asm/ice.s
@@ -0,0 +1,3099 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80AF058
+sub_80AF058: @ 80AF058
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r0, _080AF0B4 @ =gUnknown_83E5F38
+ movs r2, 0x22
+ ldrsh r1, [r4, r2]
+ movs r3, 0x24
+ ldrsh r2, [r4, r3]
+ ldrh r3, [r4, 0x20]
+ lsls r3, 24
+ lsrs r3, 24
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _080AF09C
+ ldr r3, _080AF0B8 @ =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r3, 0
+ adds r1, 0x1C
+ adds r1, r0, r1
+ ldr r2, _080AF0BC @ =sub_80AF0C8
+ str r2, [r1]
+ adds r0, r3
+ strh r5, [r0, 0x3A]
+ movs r1, 0xA
+ strh r1, [r0, 0x3C]
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ strh r0, [r4, 0x1C]
+_080AF09C:
+ ldrh r2, [r4, 0x24]
+ movs r0, 0x24
+ ldrsh r1, [r4, r0]
+ movs r3, 0x26
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bge _080AF0C0
+ adds r0, r2, 0
+ adds r0, 0x20
+ strh r0, [r4, 0x24]
+ movs r0, 0
+ b _080AF0C2
+ .align 2, 0
+_080AF0B4: .4byte gUnknown_83E5F38
+_080AF0B8: .4byte gSprites
+_080AF0BC: .4byte sub_80AF0C8
+_080AF0C0:
+ movs r0, 0x1
+_080AF0C2:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AF058
+
+ thumb_func_start sub_80AF0C8
+sub_80AF0C8: @ 80AF0C8
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080AF0FC
+ ldr r3, _080AF104 @ =gTasks
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl DestroySprite
+_080AF0FC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AF104: .4byte gTasks
+ thumb_func_end sub_80AF0C8
+
+ thumb_func_start sub_80AF108
+sub_80AF108: @ 80AF108
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldrh r2, [r5, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x7
+ ldr r3, _080AF210 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080AF214 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0x4]
+ ldr r4, _080AF218 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r4, _080AF21C @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldrb r0, [r4]
+ movs r1, 0x3
+ str r3, [sp]
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080AF220 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x8]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r1]
+ ldr r3, [sp]
+ adds r0, r3
+ strh r0, [r5, 0x30]
+ ldrh r0, [r1, 0x4]
+ mov r4, r9
+ adds r0, r4, r0
+ strh r0, [r5, 0x32]
+ ldrh r0, [r1, 0x2]
+ adds r0, r6
+ strh r0, [r5, 0x34]
+ ldrh r0, [r1, 0x6]
+ mov r7, r8
+ adds r0, r7, r0
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl sub_8074C80
+ adds r4, 0x20
+ movs r0, 0x98
+ lsls r0, 1
+ mov r12, r0
+ ldr r3, [sp]
+ cmp r4, r12
+ bhi _080AF1E2
+ adds r0, r7, 0
+ adds r0, 0x20
+ ldrh r1, [r5, 0x30]
+ ldrh r2, [r5, 0x32]
+ cmp r0, 0xE0
+ bhi _080AF1E2
+ adds r4, r1, 0
+ mov r10, r12
+_080AF1AE:
+ mov r7, r9
+ lsls r1, r7, 16
+ asrs r1, 16
+ adds r1, r4
+ lsls r1, 16
+ mov r7, r8
+ lsls r0, r7, 16
+ asrs r0, 16
+ adds r0, r2
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ lsrs r0, r1, 16
+ mov r9, r0
+ movs r7, 0x80
+ lsls r7, 14
+ adds r1, r7
+ lsrs r1, 16
+ cmp r1, r10
+ bhi _080AF1E2
+ mov r1, r8
+ lsls r0, r1, 16
+ adds r0, r7
+ lsrs r0, 16
+ cmp r0, 0xE0
+ bls _080AF1AE
+_080AF1E2:
+ ldrh r0, [r5, 0x30]
+ negs r7, r0
+ strh r7, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ negs r4, r0
+ strh r4, [r5, 0x32]
+ lsls r0, r3, 16
+ movs r1, 0x80
+ lsls r1, 14
+ adds r0, r1
+ lsrs r0, 16
+ movs r2, 0x98
+ lsls r2, 1
+ mov r12, r2
+ ldr r1, _080AF220 @ =gBattleAnimArgs
+ mov r10, r1
+ cmp r0, r12
+ bhi _080AF24E
+ lsls r1, r6, 16
+ movs r2, 0x80
+ lsls r2, 14
+ adds r0, r1, r2
+ b _080AF246
+ .align 2, 0
+_080AF210: .4byte 0x000003ff
+_080AF214: .4byte 0xfffffc00
+_080AF218: .4byte gBattleAnimTarget
+_080AF21C: .4byte gBattleAnimAttacker
+_080AF220: .4byte gBattleAnimArgs
+_080AF224:
+ lsls r1, r3, 16
+ asrs r1, 16
+ adds r1, r7
+ lsls r1, 16
+ asrs r0, r2, 16
+ adds r0, r4
+ lsls r0, 16
+ lsrs r6, r0, 16
+ lsrs r3, r1, 16
+ movs r0, 0x80
+ lsls r0, 14
+ adds r1, r0
+ lsrs r1, 16
+ cmp r1, r12
+ bhi _080AF24E
+ lsls r1, r6, 16
+ adds r0, r1, r0
+_080AF246:
+ lsrs r0, 16
+ adds r2, r1, 0
+ cmp r0, 0xE0
+ bls _080AF224
+_080AF24E:
+ strh r3, [r5, 0x20]
+ strh r6, [r5, 0x22]
+ mov r1, r10
+ ldrh r0, [r1, 0x8]
+ strh r0, [r5, 0x2E]
+ strh r3, [r5, 0x30]
+ mov r2, r9
+ strh r2, [r5, 0x32]
+ strh r6, [r5, 0x34]
+ mov r3, r8
+ strh r3, [r5, 0x36]
+ adds r0, r5, 0
+ bl sub_8074C80
+ mov r7, r10
+ ldrh r0, [r7, 0xA]
+ strh r0, [r5, 0x34]
+ ldrh r0, [r7, 0xC]
+ strh r0, [r5, 0x36]
+ ldr r0, _080AF288 @ =sub_80AF28C
+ str r0, [r5, 0x1C]
+ 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
+_080AF288: .4byte sub_80AF28C
+ thumb_func_end sub_80AF108
+
+ thumb_func_start sub_80AF28C
+sub_80AF28C: @ 80AF28C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080AF2E4
+ ldrh r1, [r4, 0x30]
+ ldrh r2, [r4, 0x38]
+ adds r1, r2
+ strh r1, [r4, 0x38]
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x3A]
+ adds r0, r2
+ strh r0, [r4, 0x3A]
+ strh r1, [r4, 0x24]
+ strh r0, [r4, 0x26]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x36]
+ ldrh r2, [r4, 0x3C]
+ adds r0, r2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3C]
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080AF2EA
+_080AF2E4:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AF2EA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AF28C
+
+ thumb_func_start sub_80AF2F0
+sub_80AF2F0: @ 80AF2F0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080AF324 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r4, 0x2E]
+ movs r0, 0x3C
+ strh r0, [r4, 0x30]
+ movs r0, 0x9
+ strh r0, [r4, 0x32]
+ movs r0, 0x1E
+ strh r0, [r4, 0x34]
+ movs r0, 0xFE
+ lsls r0, 8
+ strh r0, [r4, 0x36]
+ ldr r1, _080AF328 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r1, _080AF32C @ =sub_8074AE0
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AF324: .4byte gBattleAnimArgs
+_080AF328: .4byte DestroyAnimSprite
+_080AF32C: .4byte sub_8074AE0
+ thumb_func_end sub_80AF2F0
+
+ thumb_func_start sub_80AF330
+sub_80AF330: @ 80AF330
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080AF364 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldr r0, _080AF368 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AF370
+ ldr r0, _080AF36C @ =gBattleAnimArgs
+ ldrh r1, [r4, 0x32]
+ ldrh r0, [r0, 0x4]
+ subs r1, r0
+ strh r1, [r4, 0x32]
+ b _080AF37A
+ .align 2, 0
+_080AF364: .4byte gBattleAnimTarget
+_080AF368: .4byte gBattleAnimAttacker
+_080AF36C: .4byte gBattleAnimArgs
+_080AF370:
+ ldr r0, _080AF3A8 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ ldrh r1, [r4, 0x32]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+_080AF37A:
+ ldr r0, _080AF3AC @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ ldr r1, _080AF3A8 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r2, [r1, 0x6]
+ adds r0, r2
+ strh r0, [r4, 0x36]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x2E]
+ ldr r1, _080AF3B0 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080AF3B4 @ =sub_8075590
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AF3A8: .4byte gBattleAnimArgs
+_080AF3AC: .4byte gBattleAnimTarget
+_080AF3B0: .4byte DestroyAnimSprite
+_080AF3B4: .4byte sub_8075590
+ thumb_func_end sub_80AF330
+
+ thumb_func_start sub_80AF3B8
+sub_80AF3B8: @ 80AF3B8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080AF3D0 @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080AF3D4
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075114
+ b _080AF40A
+ .align 2, 0
+_080AF3D0: .4byte gBattleAnimArgs
+_080AF3D4:
+ ldr r0, _080AF41C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r2, r4, 0
+ adds r2, 0x20
+ adds r3, r4, 0
+ adds r3, 0x22
+ movs r1, 0x1
+ bl sub_8076D9C
+ ldr r0, _080AF420 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AF3FA
+ ldrh r0, [r5]
+ negs r0, r0
+ strh r0, [r5]
+_080AF3FA:
+ 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]
+_080AF40A:
+ ldr r1, _080AF424 @ =sub_80AF42C
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080AF428 @ =sub_8074F50
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AF41C: .4byte gBattleAnimTarget
+_080AF420: .4byte gBattleAnimAttacker
+_080AF424: .4byte sub_80AF42C
+_080AF428: .4byte sub_8074F50
+ thumb_func_end sub_80AF3B8
+
+ thumb_func_start sub_80AF42C
+sub_80AF42C: @ 80AF42C
+ push {lr}
+ adds r3, r0, 0
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ bne _080AF462
+ adds r0, r3, 0
+ bl move_anim_8074EE0
+_080AF462:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AF42C
+
+ thumb_func_start sub_80AF468
+sub_80AF468: @ 80AF468
+ push {r4-r7,lr}
+ sub sp, 0x10
+ adds r5, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r6, _080AF4B0 @ =gBattleAnimArgs
+ ldrh r0, [r6, 0x8]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ movs r1, 0xA
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080AF4B8
+ ldr r4, _080AF4B4 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x6]
+ adds r0, r6
+ strh r0, [r5, 0x36]
+ b _080AF4CA
+ .align 2, 0
+_080AF4B0: .4byte gBattleAnimArgs
+_080AF4B4: .4byte gBattleAnimTarget
+_080AF4B8:
+ ldr r0, _080AF4E4 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r2, r5, 0
+ adds r2, 0x32
+ adds r3, r5, 0
+ adds r3, 0x36
+ movs r1, 0x1
+ bl sub_8076D9C
+_080AF4CA:
+ ldr r0, _080AF4E8 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AF4F0
+ ldr r0, _080AF4EC @ =gBattleAnimArgs
+ ldrh r1, [r5, 0x32]
+ ldrh r0, [r0, 0x4]
+ subs r1, r0
+ strh r1, [r5, 0x32]
+ b _080AF4FA
+ .align 2, 0
+_080AF4E4: .4byte gBattleAnimTarget
+_080AF4E8: .4byte gBattleAnimAttacker
+_080AF4EC: .4byte gBattleAnimArgs
+_080AF4F0:
+ ldr r0, _080AF598 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ ldrh r2, [r5, 0x32]
+ adds r0, r2
+ strh r0, [r5, 0x32]
+_080AF4FA:
+ adds r7, r5, 0
+ adds r7, 0x2E
+ adds r2, r7, 0
+ mov r1, sp
+ movs r4, 0x7
+_080AF504:
+ ldrh r0, [r2]
+ strh r0, [r1]
+ adds r2, 0x2
+ adds r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _080AF504
+ adds r0, r5, 0
+ bl sub_8075804
+ ldrh r0, [r5, 0x30]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ eors r0, r1
+ strh r0, [r5, 0x32]
+_080AF526:
+ movs r0, 0x1
+ strh r0, [r5, 0x2E]
+ adds r0, r5, 0
+ bl sub_807578C
+ movs r0, 0x20
+ ldrsh r1, [r5, r0]
+ movs r2, 0x24
+ ldrsh r0, [r5, r2]
+ adds r1, r0
+ adds r1, 0x10
+ movs r0, 0x88
+ lsls r0, 1
+ cmp r1, r0
+ bhi _080AF55A
+ movs r0, 0x22
+ ldrsh r1, [r5, r0]
+ movs r2, 0x26
+ ldrsh r0, [r5, r2]
+ adds r1, r0
+ cmp r1, 0xA0
+ bgt _080AF55A
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _080AF526
+_080AF55A:
+ ldrh r0, [r5, 0x24]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x26]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ strh r1, [r5, 0x26]
+ strh r1, [r5, 0x24]
+ ldr r6, _080AF59C @ =sub_8075830
+ ldr r1, _080AF5A0 @ =sub_80AF5A4
+ mov r3, sp
+ adds r2, r7, 0
+ movs r4, 0x7
+_080AF57A:
+ ldrh r0, [r3]
+ strh r0, [r2]
+ adds r3, 0x2
+ adds r2, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _080AF57A
+ str r6, [r5, 0x1C]
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ add sp, 0x10
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AF598: .4byte gBattleAnimArgs
+_080AF59C: .4byte sub_8075830
+_080AF5A0: .4byte sub_80AF5A4
+ thumb_func_end sub_80AF468
+
+ thumb_func_start sub_80AF5A4
+sub_80AF5A4: @ 80AF5A4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ movs r5, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ strh r5, [r4, 0x26]
+ strh r5, [r4, 0x24]
+ movs r0, 0x80
+ strh r0, [r4, 0x2E]
+ ldr r0, _080AF600 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ ldr r1, _080AF604 @ =0x0000ffec
+ cmp r0, 0
+ beq _080AF5D4
+ movs r1, 0x14
+_080AF5D4:
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ lsls r1, 16
+ asrs r1, 16
+ bl Sin
+ strh r0, [r4, 0x34]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0xF
+ bl Cos
+ strh r0, [r4, 0x36]
+ strh r5, [r4, 0x38]
+ ldr r1, _080AF608 @ =sub_80AF60C
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AF600: .4byte gBattleAnimAttacker
+_080AF604: .4byte 0x0000ffec
+_080AF608: .4byte sub_80AF60C
+ thumb_func_end sub_80AF5A4
+
+ thumb_func_start sub_80AF60C
+sub_80AF60C: @ 80AF60C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080AF660 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ ldr r1, _080AF664 @ =0x0000ffec
+ cmp r0, 0
+ beq _080AF622
+ movs r1, 0x14
+_080AF622:
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x1F
+ bgt _080AF668
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ lsls r1, 16
+ asrs r1, 16
+ bl Sin
+ ldrh r1, [r4, 0x34]
+ subs r0, r1
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0xF
+ bl Cos
+ ldrh r1, [r4, 0x36]
+ subs r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x10
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ b _080AF686
+ .align 2, 0
+_080AF660: .4byte gBattleAnimAttacker
+_080AF664: .4byte 0x0000ffec
+_080AF668:
+ ldrh r0, [r4, 0x24]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ movs r1, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ strh r1, [r4, 0x26]
+ strh r1, [r4, 0x24]
+ strh r1, [r4, 0x36]
+ strh r1, [r4, 0x34]
+ ldr r0, _080AF68C @ =sub_80AF690
+ str r0, [r4, 0x1C]
+_080AF686:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AF68C: .4byte sub_80AF690
+ thumb_func_end sub_80AF60C
+
+ thumb_func_start sub_80AF690
+sub_80AF690: @ 80AF690
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x1
+ strh r0, [r4, 0x2E]
+ adds r0, r4, 0
+ bl sub_807578C
+ movs r1, 0x20
+ ldrsh r0, [r4, r1]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ adds r0, 0x10
+ movs r1, 0x88
+ lsls r1, 1
+ cmp r0, r1
+ bhi _080AF6CC
+ movs r1, 0x22
+ ldrsh r0, [r4, r1]
+ movs r2, 0x26
+ ldrsh r1, [r4, r2]
+ adds r1, r0, r1
+ movs r0, 0x80
+ lsls r0, 1
+ cmp r1, r0
+ bgt _080AF6CC
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _080AF6D2
+_080AF6CC:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AF6D2:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AF690
+
+ thumb_func_start sub_80AF6D8
+sub_80AF6D8: @ 80AF6D8
+ push {r4-r7,lr}
+ sub sp, 0x10
+ adds r5, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r1, _080AF71C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x8]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ movs r2, 0xE
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080AF724
+ ldr r4, _080AF720 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ b _080AF736
+ .align 2, 0
+_080AF71C: .4byte gBattleAnimArgs
+_080AF720: .4byte gBattleAnimTarget
+_080AF724:
+ ldr r0, _080AF754 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r2, r5, 0
+ adds r2, 0x32
+ adds r3, r5, 0
+ adds r3, 0x36
+ movs r1, 0x1
+ bl sub_8076D9C
+_080AF736:
+ ldr r0, _080AF758 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AF760
+ ldr r0, _080AF75C @ =gBattleAnimArgs
+ ldrh r1, [r5, 0x32]
+ ldrh r2, [r0, 0x4]
+ subs r1, r2
+ strh r1, [r5, 0x32]
+ adds r1, r0, 0
+ b _080AF76A
+ .align 2, 0
+_080AF754: .4byte gBattleAnimTarget
+_080AF758: .4byte gBattleAnimAttacker
+_080AF75C: .4byte gBattleAnimArgs
+_080AF760:
+ ldr r1, _080AF814 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ ldrh r2, [r5, 0x32]
+ adds r0, r2
+ strh r0, [r5, 0x32]
+_080AF76A:
+ ldrh r0, [r1, 0x6]
+ ldrh r1, [r5, 0x36]
+ adds r0, r1
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl sub_8075804
+ adds r7, r5, 0
+ adds r7, 0x2E
+ adds r2, r7, 0
+ mov r1, sp
+ movs r4, 0x7
+_080AF782:
+ ldrh r0, [r2]
+ strh r0, [r1]
+ adds r2, 0x2
+ adds r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _080AF782
+ ldrh r0, [r5, 0x30]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ eors r0, r1
+ strh r0, [r5, 0x32]
+_080AF79E:
+ movs r0, 0x1
+ strh r0, [r5, 0x2E]
+ adds r0, r5, 0
+ bl sub_807578C
+ movs r2, 0x20
+ ldrsh r1, [r5, r2]
+ movs r2, 0x24
+ ldrsh r0, [r5, r2]
+ adds r1, r0
+ adds r1, 0x10
+ movs r0, 0x88
+ lsls r0, 1
+ cmp r1, r0
+ bhi _080AF7D2
+ movs r0, 0x22
+ ldrsh r1, [r5, r0]
+ movs r2, 0x26
+ ldrsh r0, [r5, r2]
+ adds r1, r0
+ cmp r1, 0xA0
+ bgt _080AF7D2
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _080AF79E
+_080AF7D2:
+ ldrh r0, [r5, 0x24]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x26]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ strh r1, [r5, 0x26]
+ strh r1, [r5, 0x24]
+ ldr r1, _080AF814 @ =gBattleAnimArgs
+ ldr r6, _080AF818 @ =sub_80AF81C
+ mov r3, sp
+ adds r2, r7, 0
+ movs r4, 0x7
+_080AF7F2:
+ ldrh r0, [r3]
+ strh r0, [r2]
+ adds r3, 0x2
+ adds r2, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _080AF7F2
+ ldrh r0, [r1, 0xA]
+ strh r0, [r5, 0x38]
+ ldrh r0, [r1, 0xC]
+ strh r0, [r5, 0x3A]
+ str r6, [r5, 0x1C]
+ add sp, 0x10
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AF814: .4byte gBattleAnimArgs
+_080AF818: .4byte sub_80AF81C
+ thumb_func_end sub_80AF6D8
+
+ thumb_func_start sub_80AF81C
+sub_80AF81C: @ 80AF81C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_807578C
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AF830
+ movs r0, 0x1
+ strh r0, [r4, 0x2E]
+_080AF830:
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ 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
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3C]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ bne _080AF886
+ movs r2, 0x20
+ ldrsh r0, [r4, r2]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ adds r0, 0x10
+ movs r1, 0x88
+ lsls r1, 1
+ cmp r0, r1
+ bhi _080AF880
+ movs r0, 0x22
+ ldrsh r1, [r4, r0]
+ movs r2, 0x26
+ ldrsh r0, [r4, r2]
+ adds r1, r0
+ cmp r1, 0xA0
+ bgt _080AF880
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _080AF886
+_080AF880:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AF886:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AF81C
+
+ thumb_func_start sub_80AF88C
+sub_80AF88C: @ 80AF88C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AF8F8
+ ldr r5, _080AF8AC @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080AF8B0
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075114
+ b _080AF8E6
+ .align 2, 0
+_080AF8AC: .4byte gBattleAnimArgs
+_080AF8B0:
+ ldr r0, _080AF8F0 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r2, r4, 0
+ adds r2, 0x20
+ adds r3, r4, 0
+ adds r3, 0x22
+ movs r1, 0
+ bl sub_8076D9C
+ ldr r0, _080AF8F4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AF8D6
+ ldrh r0, [r5]
+ negs r0, r0
+ strh r0, [r5]
+_080AF8D6:
+ 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]
+_080AF8E6:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080AF90C
+ .align 2, 0
+_080AF8F0: .4byte gBattleAnimTarget
+_080AF8F4: .4byte gBattleAnimAttacker
+_080AF8F8:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080AF90C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AF90C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AF88C
+
+ thumb_func_start sub_80AF914
+sub_80AF914: @ 80AF914
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080AF934 @ =gBattleAnimArgs
+ movs r1, 0x8
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080AF984
+ movs r1, 0xA
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080AF938
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075160
+ b _080AF976
+ .align 2, 0
+_080AF934: .4byte gBattleAnimArgs
+_080AF938:
+ ldr r4, _080AF960 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ adds r2, r5, 0
+ adds r2, 0x20
+ adds r3, r5, 0
+ adds r3, 0x22
+ movs r1, 0
+ bl sub_8076D9C
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AF964
+ ldrh r0, [r5, 0x20]
+ ldrh r1, [r6]
+ subs r0, r1
+ b _080AF96A
+ .align 2, 0
+_080AF960: .4byte gBattleAnimAttacker
+_080AF964:
+ ldrh r0, [r6]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+_080AF96A:
+ strh r0, [r5, 0x20]
+ ldr r0, _080AF97C @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x2]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+_080AF976:
+ ldr r0, _080AF980 @ =gBattleAnimAttacker
+ b _080AF9D4
+ .align 2, 0
+_080AF97C: .4byte gBattleAnimArgs
+_080AF980: .4byte gBattleAnimAttacker
+_080AF984:
+ movs r1, 0xA
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080AF996
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075114
+ b _080AF9D2
+_080AF996:
+ ldr r4, _080AF9BC @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ adds r2, r5, 0
+ adds r2, 0x20
+ adds r3, r5, 0
+ adds r3, 0x22
+ movs r1, 0
+ bl sub_8076D9C
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AF9C0
+ ldrh r0, [r5, 0x20]
+ ldrh r1, [r6]
+ subs r0, r1
+ b _080AF9C6
+ .align 2, 0
+_080AF9BC: .4byte gBattleAnimTarget
+_080AF9C0:
+ ldrh r0, [r6]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+_080AF9C6:
+ strh r0, [r5, 0x20]
+ ldr r0, _080AF9F0 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x2]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+_080AF9D2:
+ ldr r0, _080AF9F4 @ =gBattleAnimTarget
+_080AF9D4:
+ ldrb r0, [r0]
+ strh r0, [r5, 0x3C]
+ ldr r0, _080AF9F0 @ =gBattleAnimArgs
+ movs r1, 0xA
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ beq _080AF9EC
+ bl sub_8075290
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AF9F8
+_080AF9EC:
+ movs r0, 0x20
+ b _080AF9FA
+ .align 2, 0
+_080AF9F0: .4byte gBattleAnimArgs
+_080AF9F4: .4byte gBattleAnimTarget
+_080AF9F8:
+ movs r0, 0x40
+_080AF9FA:
+ strh r0, [r5, 0x3A]
+ ldr r0, _080AFA40 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AFA10
+ ldrh r0, [r5, 0x22]
+ adds r0, 0x8
+ strh r0, [r5, 0x22]
+_080AFA10:
+ ldr r1, _080AFA44 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x6]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ ldrh r1, [r1, 0x4]
+ adds r0, r1
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ movs r0, 0x40
+ strh r0, [r5, 0x38]
+ ldr r1, _080AFA48 @ =sub_80AFA4C
+ str r1, [r5, 0x1C]
+ adds r0, r5, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AFA40: .4byte gBattleAnimTarget
+_080AFA44: .4byte gBattleAnimArgs
+_080AFA48: .4byte sub_80AFA4C
+ thumb_func_end sub_80AF914
+
+ thumb_func_start sub_80AFA4C
+sub_80AFA4C: @ 80AFA4C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AFAD6
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r2, 0x3A
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ movs r1, 0x6
+ negs r1, r1
+ bl Cos
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x38]
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x7F
+ bhi _080AFAA8
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8076884
+ movs r1, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ b _080AFACA
+_080AFAA8:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+ movs r1, 0x3
+ ands r0, r1
+ lsls r0, 2
+ ldrb r2, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0x5]
+_080AFACA:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x3
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ b _080AFADC
+_080AFAD6:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AFADC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AFA4C
+
+ thumb_func_start sub_80AFAE4
+sub_80AFAE4: @ 80AFAE4
+ push {r4,r5,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080AFBA0 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AFB26
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080AFB26:
+ ldr r0, _080AFBA4 @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r4, _080AFBA8 @ =gBattle_BG1_Y
+ strh r1, [r4]
+ movs r0, 0x14
+ movs r1, 0
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x16
+ bl SetGpuReg
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080AFBAC @ =gUnknown_83C3540
+ movs r2, 0x80
+ lsls r2, 4
+ mov r3, sp
+ ldrh r3, [r3, 0xA]
+ bl LoadBgTiles
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080AFBB0 @ =gFile_graphics_battle_anims_backgrounds_fog_tilemap
+ bl sub_807543C
+ ldr r0, _080AFBB4 @ =gUnknown_83C2CE0
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadPalette
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AFB88
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80730C0
+_080AFB88:
+ ldr r0, _080AFBB8 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080AFBBC @ =sub_80AFBC0
+ str r0, [r1]
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AFBA0: .4byte 0x00003f42
+_080AFBA4: .4byte gBattle_BG1_X
+_080AFBA8: .4byte gBattle_BG1_Y
+_080AFBAC: .4byte gUnknown_83C3540
+_080AFBB0: .4byte gFile_graphics_battle_anims_backgrounds_fog_tilemap
+_080AFBB4: .4byte gUnknown_83C2CE0
+_080AFBB8: .4byte gTasks
+_080AFBBC: .4byte sub_80AFBC0
+ thumb_func_end sub_80AFAE4
+
+ thumb_func_start sub_80AFBC0
+sub_80AFBC0: @ 80AFBC0
+ push {r4,r5,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080AFBF4 @ =gBattle_BG1_X
+ ldr r2, _080AFBF8 @ =0x0000ffff
+ adds r0, r2, 0
+ ldrh r2, [r1]
+ adds r0, r2
+ strh r0, [r1]
+ ldr r1, _080AFBFC @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x20
+ ldrsh r0, [r0, r2]
+ adds r2, r1, 0
+ cmp r0, 0x4
+ bls _080AFBEA
+ b _080AFD36
+_080AFBEA:
+ lsls r0, 2
+ ldr r1, _080AFC00 @ =_080AFC04
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080AFBF4: .4byte gBattle_BG1_X
+_080AFBF8: .4byte 0x0000ffff
+_080AFBFC: .4byte gTasks
+_080AFC00: .4byte _080AFC04
+ .align 2, 0
+_080AFC04:
+ .4byte _080AFC18
+ .4byte _080AFC70
+ .4byte _080AFC92
+ .4byte _080AFCD6
+ .4byte _080AFCF8
+_080AFC18:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r2
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ movs r5, 0
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ beq _080AFC32
+ b _080AFD36
+_080AFC32:
+ strh r5, [r4, 0x1C]
+ ldrh r0, [r4, 0x1A]
+ adds r0, 0x1
+ strh r0, [r4, 0x1A]
+ ldr r1, _080AFC6C @ =gUnknown_83E64D4
+ movs r2, 0x1A
+ ldrsh r0, [r4, r2]
+ adds r0, r1
+ ldrb r1, [r0]
+ strh r1, [r4, 0x1E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x9
+ bne _080AFD36
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ strh r5, [r4, 0x1E]
+ b _080AFD36
+ .align 2, 0
+_080AFC6C: .4byte gUnknown_83E64D4
+_080AFC70:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r2
+ ldrh r0, [r1, 0x1E]
+ adds r0, 0x1
+ strh r0, [r1, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x51
+ bne _080AFD36
+ movs r0, 0x9
+ strh r0, [r1, 0x1E]
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+ b _080AFD36
+_080AFC92:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r2
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080AFD36
+ movs r0, 0
+ strh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ subs r1, 0x1
+ strh r1, [r4, 0x1E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0x1E
+ ldrsh r1, [r4, r2]
+ cmp r1, 0
+ bne _080AFD36
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ strh r1, [r4, 0x1E]
+ b _080AFD36
+_080AFCD6:
+ mov r0, sp
+ bl sub_80752A0
+ movs r0, 0x1
+ bl sub_8075358
+ movs r0, 0x2
+ bl sub_8075358
+ ldr r0, _080AFD40 @ =gTasks
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+_080AFCF8:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AFD0C
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080AFD0C:
+ ldr r0, _080AFD44 @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080AFD48 @ =gBattle_BG1_Y
+ strh r1, [r0]
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080AFD36:
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AFD40: .4byte gTasks
+_080AFD44: .4byte gBattle_BG1_X
+_080AFD48: .4byte gBattle_BG1_Y
+ thumb_func_end sub_80AFBC0
+
+ thumb_func_start sub_80AFD4C
+sub_80AFD4C: @ 80AFD4C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080AFD78 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ ldr r0, _080AFD7C @ =sub_8075DF4
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AFD78: .4byte gBattleAnimAttacker
+_080AFD7C: .4byte sub_8075DF4
+ thumb_func_end sub_80AFD4C
+
+ thumb_func_start sub_80AFD80
+sub_80AFD80: @ 80AFD80
+ push {r4,r5,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080AFE40 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AFDC2
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080AFDC2:
+ ldr r0, _080AFE44 @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r4, _080AFE48 @ =gBattle_BG1_Y
+ strh r1, [r4]
+ movs r0, 0x14
+ movs r1, 0
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x16
+ bl SetGpuReg
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080AFE4C @ =gUnknown_83C3540
+ movs r2, 0x80
+ lsls r2, 4
+ mov r3, sp
+ ldrh r3, [r3, 0xA]
+ bl LoadBgTiles
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080AFE50 @ =gFile_graphics_battle_anims_backgrounds_fog_tilemap
+ bl sub_807543C
+ ldr r0, _080AFE54 @ =gUnknown_83C2CE0
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadPalette
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AFE24
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80730C0
+_080AFE24:
+ ldr r1, _080AFE58 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _080AFE5C @ =0x0000ffff
+ strh r1, [r0, 0x26]
+ ldr r1, _080AFE60 @ =sub_80AFE64
+ str r1, [r0]
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AFE40: .4byte 0x00003f42
+_080AFE44: .4byte gBattle_BG1_X
+_080AFE48: .4byte gBattle_BG1_Y
+_080AFE4C: .4byte gUnknown_83C3540
+_080AFE50: .4byte gFile_graphics_battle_anims_backgrounds_fog_tilemap
+_080AFE54: .4byte gUnknown_83C2CE0
+_080AFE58: .4byte gTasks
+_080AFE5C: .4byte 0x0000ffff
+_080AFE60: .4byte sub_80AFE64
+ thumb_func_end sub_80AFD80
+
+ thumb_func_start sub_80AFE64
+sub_80AFE64: @ 80AFE64
+ push {r4,r5,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r2, _080AFE94 @ =gBattle_BG1_X
+ ldr r3, _080AFE98 @ =gTasks
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r3
+ ldrh r0, [r1, 0x26]
+ ldrh r5, [r2]
+ adds r0, r5
+ strh r0, [r2]
+ movs r2, 0x20
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x4
+ bls _080AFE8A
+ b _080AFFBE
+_080AFE8A:
+ lsls r0, 2
+ ldr r1, _080AFE9C @ =_080AFEA0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080AFE94: .4byte gBattle_BG1_X
+_080AFE98: .4byte gTasks
+_080AFE9C: .4byte _080AFEA0
+ .align 2, 0
+_080AFEA0:
+ .4byte _080AFEB4
+ .4byte _080AFEF8
+ .4byte _080AFF1A
+ .4byte _080AFF5E
+ .4byte _080AFF80
+_080AFEB4:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r3
+ ldrh r0, [r4, 0x1A]
+ adds r0, 0x1
+ strh r0, [r4, 0x1A]
+ ldr r1, _080AFEF4 @ =gUnknown_83E6500
+ movs r5, 0x1A
+ ldrsh r0, [r4, r5]
+ adds r0, r1
+ ldrb r1, [r0]
+ strh r1, [r4, 0x1E]
+ movs r0, 0x11
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ bne _080AFFBE
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ movs r0, 0
+ strh r0, [r4, 0x1E]
+ b _080AFFBE
+ .align 2, 0
+_080AFEF4: .4byte gUnknown_83E6500
+_080AFEF8:
+ lsls r0, r4, 2
+ adds r0, r4
+ 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, 0x51
+ bne _080AFFBE
+ movs r0, 0x5
+ strh r0, [r1, 0x1E]
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+ b _080AFFBE
+_080AFF1A:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r3
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080AFFBE
+ movs r0, 0
+ strh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ subs r1, 0x1
+ strh r1, [r4, 0x1E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0x1E
+ ldrsh r1, [r4, r2]
+ cmp r1, 0
+ bne _080AFFBE
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ strh r1, [r4, 0x1E]
+ b _080AFFBE
+_080AFF5E:
+ mov r0, sp
+ bl sub_80752A0
+ movs r0, 0x1
+ bl sub_8075358
+ movs r0, 0x2
+ bl sub_8075358
+ ldr r0, _080AFFC8 @ =gTasks
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+_080AFF80:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AFF94
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080AFF94:
+ ldr r0, _080AFFCC @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080AFFD0 @ =gBattle_BG1_Y
+ strh r1, [r0]
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080AFFBE:
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AFFC8: .4byte gTasks
+_080AFFCC: .4byte gBattle_BG1_X
+_080AFFD0: .4byte gBattle_BG1_Y
+ thumb_func_end sub_80AFE64
+
+ thumb_func_start sub_80AFFD4
+sub_80AFFD4: @ 80AFFD4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r5, r0, 0
+ ldr r6, _080B00BC @ =gBattleAnimArgs
+ ldrh r0, [r6]
+ strh r0, [r5, 0x2E]
+ ldr r0, _080B00C0 @ =gBattleAnimAttacker
+ mov r8, r0
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r4, r0, 0
+ ldr r7, _080B00C4 @ =gBattleAnimTarget
+ ldrb r0, [r7]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ bcs _080B0008
+ movs r0, 0x80
+ lsls r0, 8
+ strh r0, [r5, 0x3C]
+_080B0008:
+ ldr r3, _080B00C8 @ =gUnknown_2023BD6
+ ldrb r0, [r7]
+ adds r0, r3
+ ldrb r1, [r0]
+ movs r2, 0x1
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080B0068
+ ldrh r0, [r6, 0x2]
+ negs r0, r0
+ strh r0, [r6, 0x2]
+ ldrh r0, [r6, 0x6]
+ negs r0, r0
+ strh r0, [r6, 0x6]
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080B0064
+ mov r1, r8
+ ldrb r0, [r1]
+ adds r0, r3
+ ldrb r1, [r0]
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080B0064
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ ldr r2, _080B00CC @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x43
+ ldrb r0, [r1]
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0x43
+ strb r0, [r1]
+_080B0064:
+ movs r0, 0x1
+ strh r0, [r5, 0x3A]
+_080B0068:
+ ldr r4, _080B00C0 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r6, _080B00BC @ =gBattleAnimArgs
+ movs r1, 0xE
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ beq _080B00D0
+ ldrh r0, [r6, 0x2]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ strh r0, [r5, 0x30]
+ ldr r4, _080B00C4 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x6]
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r6, 0x4]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ b _080B00F8
+ .align 2, 0
+_080B00BC: .4byte gBattleAnimArgs
+_080B00C0: .4byte gBattleAnimAttacker
+_080B00C4: .4byte gBattleAnimTarget
+_080B00C8: .4byte gUnknown_2023BD6
+_080B00CC: .4byte gSprites
+_080B00D0:
+ ldrh r0, [r6, 0x2]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ strh r0, [r5, 0x30]
+ ldr r4, _080B0140 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x6]
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r6, 0x4]
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x1
+_080B00F8:
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x8]
+ adds r0, r6
+ strh r0, [r5, 0x36]
+ ldrb r0, [r4]
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r0, 16
+ ldrh r1, [r5, 0x3C]
+ orrs r0, r1
+ strh r0, [r5, 0x3C]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B012C
+ movs r0, 0x1
+ strh r0, [r5, 0x3A]
+ adds r1, r5, 0
+ adds r1, 0x43
+ movs r0, 0x80
+ strb r0, [r1]
+_080B012C:
+ adds r0, r5, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldr r0, _080B0144 @ =sub_80B0148
+ str r0, [r5, 0x1C]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0140: .4byte gBattleAnimTarget
+_080B0144: .4byte sub_80B0148
+ thumb_func_end sub_80AFFD4
+
+ thumb_func_start sub_80B0148
+sub_80B0148: @ 80B0148
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x3C]
+ movs r5, 0xFF
+ movs r1, 0xFF
+ ands r1, r0
+ cmp r1, 0x1
+ beq _080B0230
+ cmp r1, 0x1
+ bgt _080B0162
+ cmp r1, 0
+ beq _080B016A
+ b _080B0380
+_080B0162:
+ cmp r1, 0x2
+ bne _080B0168
+ b _080B0344
+_080B0168:
+ b _080B0380
+_080B016A:
+ adds r0, r4, 0
+ bl sub_80755E0
+ ldr r1, _080B0194 @ =gSineTable
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ asrs r0, 4
+ ldrh r2, [r4, 0x24]
+ adds r0, r2
+ strh r0, [r4, 0x24]
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080B0198
+ ldrh r0, [r4, 0x38]
+ subs r0, 0x8
+ b _080B019C
+ .align 2, 0
+_080B0194: .4byte gSineTable
+_080B0198:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x8
+_080B019C:
+ ands r0, r5
+ strh r0, [r4, 0x38]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080B01AA
+ b _080B0380
+_080B01AA:
+ movs r5, 0x50
+ strh r5, [r4, 0x2E]
+ ldr r6, _080B01F8 @ =gBattleAnimTarget
+ ldrb r0, [r6]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ adds r0, 0x1D
+ strh r0, [r4, 0x36]
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x1
+ strh r0, [r4, 0x3C]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B0200
+ ldr r1, _080B01FC @ =gUnknown_2023BD6
+ ldrb r0, [r6]
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B0200
+ movs r0, 0xCC
+ strh r0, [r4, 0x38]
+ b _080B0202
+ .align 2, 0
+_080B01F8: .4byte gBattleAnimTarget
+_080B01FC: .4byte gUnknown_2023BD6
+_080B0200:
+ strh r5, [r4, 0x38]
+_080B0202:
+ movs r0, 0
+ strh r0, [r4, 0x26]
+ ldr r1, _080B022C @ =gSineTable
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ asrs r0, 3
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ b _080B0380
+ .align 2, 0
+_080B022C: .4byte gSineTable
+_080B0230:
+ adds r0, r4, 0
+ bl sub_80755E0
+ ldr r1, _080B028C @ =gSineTable
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ asrs r0, 3
+ ldrh r2, [r4, 0x24]
+ adds r0, r2
+ strh r0, [r4, 0x24]
+ movs r2, 0x38
+ ldrsh r0, [r4, r2]
+ adds r0, 0x40
+ lsls r0, 1
+ adds r0, r1
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ lsls r0, r1, 1
+ adds r0, r1
+ negs r0, r0
+ asrs r0, 8
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B02AE
+ ldrh r1, [r4, 0x38]
+ adds r0, r1, 0
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ adds r3, r1, 0
+ cmp r0, 0x7F
+ bhi _080B0290
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 16
+ asrs r1, 24
+ b _080B0298
+ .align 2, 0
+_080B028C: .4byte gSineTable
+_080B0290:
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 16
+ asrs r1, 24
+ adds r1, 0x1
+_080B0298:
+ movs r0, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ adds r0, r3, 0x4
+ b _080B02CE
+_080B02AE:
+ ldrh r0, [r4, 0x38]
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x7F
+ bhi _080B02C2
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x80
+ b _080B02C8
+_080B02C2:
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x8C
+_080B02C8:
+ strb r0, [r1]
+ ldrh r0, [r4, 0x38]
+ subs r0, 0x4
+_080B02CE:
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bgt _080B0380
+ movs r5, 0
+ movs r0, 0xC0
+ lsls r0, 2
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ adds r0, 0x4
+ strh r0, [r4, 0x36]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B0328
+ ldr r1, _080B0320 @ =gUnknown_2023BD6
+ ldr r0, _080B0324 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B0328
+ movs r0, 0x80
+ lsls r0, 1
+ b _080B032A
+ .align 2, 0
+_080B0320: .4byte gUnknown_2023BD6
+_080B0324: .4byte gBattleAnimTarget
+_080B0328:
+ ldr r0, _080B0340 @ =0x0000fff0
+_080B032A:
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r4, 0x3C]
+ strh r1, [r4, 0x26]
+ strh r1, [r4, 0x24]
+ adds r0, r4, 0
+ bl sub_8075678
+ b _080B0380
+ .align 2, 0
+_080B0340: .4byte 0x0000fff0
+_080B0344:
+ adds r0, r4, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B0380
+ ldrb r0, [r4, 0x1]
+ lsls r0, 30
+ lsrs r0, 30
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B0372
+ 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]
+_080B0372:
+ adds r0, r4, 0
+ bl DestroySprite
+ ldr r1, _080B0388 @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+_080B0380:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0388: .4byte gUnknown_2037EE2
+ thumb_func_end sub_80B0148
+
+ thumb_func_start sub_80B038C
+sub_80B038C: @ 80B038C
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080B03A0 @ =gTasks
+ adds r1, r0
+ ldr r0, _080B03A4 @ =sub_80B03A8
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080B03A0: .4byte gTasks
+_080B03A4: .4byte sub_80B03A8
+ thumb_func_end sub_80B038C
+
+ thumb_func_start sub_80B03A8
+sub_80B03A8: @ 80B03A8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080B03CC @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r5, [r4, r0]
+ cmp r5, 0x1
+ beq _080B03EC
+ cmp r5, 0x1
+ bgt _080B03D0
+ cmp r5, 0
+ beq _080B03D6
+ b _080B0450
+ .align 2, 0
+_080B03CC: .4byte gTasks
+_080B03D0:
+ cmp r5, 0x2
+ beq _080B0442
+ b _080B0450
+_080B03D6:
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _080B0450
+ strh r5, [r4, 0x10]
+ strh r5, [r4, 0x12]
+ strh r5, [r4, 0xC]
+ b _080B0428
+_080B03EC:
+ ldrh r1, [r4, 0x12]
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ bne _080B043C
+ ldrb r0, [r4, 0xE]
+ ldrb r1, [r4, 0xC]
+ movs r3, 0x1
+ bl sub_80B0458
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B040C
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+_080B040C:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080B0438
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ bne _080B0430
+_080B0428:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B0450
+_080B0430:
+ ldrh r0, [r4, 0x8]
+ subs r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B0450
+_080B0438:
+ strh r5, [r4, 0x12]
+ b _080B0450
+_080B043C:
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x12]
+ b _080B0450
+_080B0442:
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B0450
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080B0450:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B03A8
+
+ thumb_func_start sub_80B0458
+sub_80B0458: @ 80B0458
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ lsls r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp]
+ lsls r3, 24
+ lsrs r3, 24
+ mov r10, r3
+ movs r1, 0
+ str r1, [sp, 0x4]
+ ldr r1, _080B04D0 @ =gUnknown_83E652C
+ lsrs r0, 22
+ adds r4, r0, r1
+ ldrb r0, [r4, 0x3]
+ lsls r0, 24
+ asrs r0, 28
+ mov r8, r0
+ cmp r0, 0x2
+ beq _080B0544
+ ldrh r0, [r4, 0x2]
+ lsls r0, 20
+ lsrs r0, 24
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r5, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B0544
+ movs r0, 0x1
+ str r0, [sp, 0x4]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r7, r0, 24
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r6, r0, 24
+ mov r1, r8
+ cmp r1, 0
+ beq _080B04D4
+ cmp r1, 0x1
+ beq _080B050A
+ b _080B0556
+ .align 2, 0
+_080B04D0: .4byte gUnknown_83E652C
+_080B04D4:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8076B2C
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x6
+ bl __divsi3
+ lsls r1, r7, 16
+ asrs r1, 16
+ subs r1, r0
+ lsls r1, 16
+ lsrs r7, r1, 16
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8076B2C
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x6
+ bl __divsi3
+ lsls r1, r6, 16
+ asrs r1, 16
+ subs r1, r0
+ b _080B053E
+_080B050A:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8076B2C
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x6
+ bl __divsi3
+ lsls r1, r7, 16
+ asrs r1, 16
+ adds r1, r0
+ lsls r1, 16
+ lsrs r7, r1, 16
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8076B2C
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x6
+ bl __divsi3
+ lsls r1, r6, 16
+ asrs r1, 16
+ adds r1, r0
+_080B053E:
+ lsls r1, 16
+ lsrs r6, r1, 16
+ b _080B0556
+_080B0544:
+ ldrh r0, [r4]
+ lsls r0, 22
+ asrs r0, 6
+ lsrs r7, r0, 16
+ ldr r0, [r4]
+ lsls r0, 12
+ asrs r0, 22
+ lsls r0, 16
+ lsrs r6, r0, 16
+_080B0556:
+ lsls r0, r6, 16
+ asrs r0, 16
+ adds r0, 0x8
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ lsls r1, r7, 16
+ asrs r1, 16
+ subs r1, r0
+ ldr r0, _080B05B0 @ =gUnknown_83E65A4
+ lsls r1, 16
+ asrs r1, 16
+ movs r2, 0x8
+ negs r2, r2
+ movs r3, 0x12
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x40
+ beq _080B05B8
+ lsls r4, r5, 4
+ adds r4, r5
+ lsls r4, 2
+ ldr r0, _080B05B4 @ =gSprites
+ adds r4, r0
+ adds r0, r4, 0
+ mov r1, r9
+ bl StartSpriteAffineAnim
+ mov r0, sp
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x2E]
+ strh r7, [r4, 0x34]
+ strh r6, [r4, 0x36]
+ mov r1, r9
+ strh r1, [r4, 0x38]
+ mov r0, sp
+ ldrh r0, [r0]
+ strh r0, [r4, 0x3A]
+ mov r1, r10
+ strh r1, [r4, 0x3C]
+ movs r0, 0x1
+ b _080B05BA
+ .align 2, 0
+_080B05B0: .4byte gUnknown_83E65A4
+_080B05B4: .4byte gSprites
+_080B05B8:
+ movs r0, 0
+_080B05BA:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80B0458
+
+ thumb_func_start sub_80B05CC
+sub_80B05CC: @ 80B05CC
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x4
+ strh r0, [r4, 0x20]
+ ldrh r1, [r4, 0x22]
+ adds r2, r1, 0
+ adds r2, 0x8
+ strh r2, [r4, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x34
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ bge _080B05F6
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ blt _080B06A6
+_080B05F6:
+ movs r3, 0x2E
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x1
+ bne _080B0678
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B0678
+ ldr r0, _080B066C @ =gUnknown_83E63E0
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ movs r3, 0x36
+ ldrsh r2, [r4, r3]
+ adds r3, r4, 0
+ adds r3, 0x43
+ ldrb r3, [r3]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x2E]
+ cmp r0, 0x40
+ beq _080B065A
+ ldr r2, _080B0670 @ =gSprites
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r2, 0
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, _080B0674 @ =sub_80B06B0
+ str r1, [r0]
+ movs r3, 0x2E
+ ldrsh r1, [r4, r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x3A]
+ strh r1, [r0, 0x3A]
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x3C]
+ strh r1, [r0, 0x3C]
+_080B065A:
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+ b _080B06A6
+ .align 2, 0
+_080B066C: .4byte gUnknown_83E63E0
+_080B0670: .4byte gSprites
+_080B0674: .4byte sub_80B06B0
+_080B0678:
+ ldr r3, _080B06AC @ =gTasks
+ movs r2, 0x3C
+ ldrsh r1, [r4, r2]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080B06A6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B06AC: .4byte gTasks
+ thumb_func_end sub_80B05CC
+
+ thumb_func_start sub_80B06B0
+sub_80B06B0: @ 80B06B0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ bne _080B06F0
+ ldr r3, _080B06F8 @ =gTasks
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080B06F0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B06F8: .4byte gTasks
+ thumb_func_end sub_80B06B0
+
+ thumb_func_start unc_080B06FC
+unc_080B06FC: @ 80B06FC
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r0, _080B077C @ =gAnimDisableStructPtr
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x11]
+ lsrs r0, r1, 4
+ lsls r1, 28
+ lsrs r1, 28
+ subs r0, r1
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x4
+ bls _080B071A
+ movs r1, 0x4
+_080B071A:
+ adds r0, r5, 0
+ bl StartSpriteAffineAnim
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r6, _080B0780 @ =gBattleAnimArgs
+ ldrh r0, [r6, 0x8]
+ strh r0, [r5, 0x2E]
+ ldr r0, _080B0784 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B0742
+ ldrh r0, [r6, 0x4]
+ negs r0, r0
+ strh r0, [r6, 0x4]
+_080B0742:
+ ldr r4, _080B0788 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x4]
+ adds r0, r1
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x6]
+ adds r0, r1
+ strh r0, [r5, 0x36]
+ ldrh r0, [r6, 0xA]
+ strh r0, [r5, 0x38]
+ adds r0, r5, 0
+ bl sub_8075068
+ ldr r0, _080B078C @ =sub_80B0790
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B077C: .4byte gAnimDisableStructPtr
+_080B0780: .4byte gBattleAnimArgs
+_080B0784: .4byte gBattleAnimAttacker
+_080B0788: .4byte gBattleAnimTarget
+_080B078C: .4byte sub_80B0790
+ thumb_func_end unc_080B06FC
+
+ thumb_func_start sub_80B0790
+sub_80B0790: @ 80B0790
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B07B2
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ ldr r0, _080B07B8 @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+ ldr r1, _080B07BC @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+_080B07B2:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B07B8: .4byte sub_8074F6C
+_080B07BC: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B0790
+
+ thumb_func_start sub_80B07C0
+sub_80B07C0: @ 80B07C0
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x8
+ ldr r3, _080B0814 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080B0818 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075114
+ bl Random
+ movs r5, 0xFF
+ ands r5, r0
+ movs r0, 0x80
+ lsls r0, 1
+ adds r6, r0, 0
+ orrs r5, r6
+ bl Random
+ ldr r1, _080B081C @ =0x000001ff
+ ands r1, r0
+ adds r0, r1, 0
+ cmp r0, 0xFF
+ ble _080B0806
+ subs r0, r6, r0
+ lsls r0, 16
+ lsrs r1, r0, 16
+_080B0806:
+ strh r5, [r4, 0x30]
+ strh r1, [r4, 0x32]
+ ldr r0, _080B0820 @ =sub_80B0824
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0814: .4byte 0x000003ff
+_080B0818: .4byte 0xfffffc00
+_080B081C: .4byte 0x000001ff
+_080B0820: .4byte sub_80B0824
+ thumb_func_end sub_80B07C0
+
+ thumb_func_start sub_80B0824
+sub_80B0824: @ 80B0824
+ push {r4,lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x30]
+ ldrh r1, [r2, 0x34]
+ adds r3, r0, r1
+ strh r3, [r2, 0x34]
+ ldrh r1, [r2, 0x32]
+ ldrh r4, [r2, 0x36]
+ adds r1, r4
+ strh r1, [r2, 0x36]
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _080B0848
+ lsls r0, r3, 16
+ asrs r0, 24
+ negs r0, r0
+ b _080B084C
+_080B0848:
+ lsls r0, r3, 16
+ asrs r0, 24
+_080B084C:
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x36]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r2, 0x26]
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x15
+ bne _080B086A
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080B086A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B0824
+
+ thumb_func_start sub_80B0870
+sub_80B0870: @ 80B0870
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080B0898 @ =gBattleAnimArgs
+ ldrb r3, [r1]
+ lsls r3, 1
+ adds r3, r1
+ ldr r1, _080B089C @ =gAnimDisableStructPtr
+ ldr r1, [r1]
+ ldrb r1, [r1, 0x11]
+ lsrs r2, r1, 4
+ lsls r1, 28
+ lsrs r1, 28
+ subs r2, r1
+ subs r2, 0x1
+ strh r2, [r3]
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B0898: .4byte gBattleAnimArgs
+_080B089C: .4byte gAnimDisableStructPtr
+ thumb_func_end sub_80B0870
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/intro.s b/asm/intro.s
deleted file mode 100644
index 909fee72e..000000000
--- a/asm/intro.s
+++ /dev/null
@@ -1,4841 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80EC5A4
-sub_80EC5A4: @ 80EC5A4
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80EC5A4
-
- thumb_func_start sub_80EC5B8
-sub_80EC5B8: @ 80EC5B8
- push {lr}
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080EC5CA
- ldr r0, _080EC5D0 @ =sub_80EC870
- bl SetMainCallback2
-_080EC5CA:
- pop {r0}
- bx r0
- .align 2, 0
-_080EC5D0: .4byte sub_80EC870
- thumb_func_end sub_80EC5B8
-
- thumb_func_start load_copyright_graphics
-load_copyright_graphics: @ 80EC5D4
- push {r4-r6,lr}
- adds r3, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r3, 16
- lsrs r3, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- ldr r0, _080EC610 @ =gUnknown_8402280
- movs r6, 0xC0
- lsls r6, 19
- adds r3, r6
- adds r1, r3, 0
- bl LZ77UnCompVram
- ldr r0, _080EC614 @ =gUnknown_84024E4
- adds r4, r6
- adds r1, r4, 0
- bl LZ77UnCompVram
- ldr r0, _080EC618 @ =gUnknown_8402260
- adds r1, r5, 0
- movs r2, 0x20
- bl LoadPalette
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC610: .4byte gUnknown_8402280
-_080EC614: .4byte gUnknown_84024E4
-_080EC618: .4byte gUnknown_8402260
- thumb_func_end load_copyright_graphics
-
- thumb_func_start SerialCb_CopyrightScreen
-SerialCb_CopyrightScreen: @ 80EC61C
- push {lr}
- ldr r0, _080EC628 @ =gUnknown_203AAD4
- bl GameCubeMultiBoot_HandleSerialInterrupt
- pop {r0}
- bx r0
- .align 2, 0
-_080EC628: .4byte gUnknown_203AAD4
- thumb_func_end SerialCb_CopyrightScreen
-
- thumb_func_start sub_80EC62C
-sub_80EC62C: @ 80EC62C
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r0, _080EC64C @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r5, r0, r1
- ldrb r4, [r5]
- cmp r4, 0x8C
- bne _080EC640
- b _080EC778
-_080EC640:
- cmp r4, 0x8C
- bgt _080EC650
- cmp r4, 0
- beq _080EC65E
- b _080EC732
- .align 2, 0
-_080EC64C: .4byte gMain
-_080EC650:
- cmp r4, 0x8D
- bne _080EC656
- b _080EC7A4
-_080EC656:
- cmp r4, 0x8E
- bne _080EC65C
- b _080EC808
-_080EC65C:
- b _080EC732
-_080EC65E:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- movs r1, 0xA0
- lsls r1, 19
- ldr r2, _080EC74C @ =0x00007fff
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- add r0, sp, 0x4
- strh r4, [r0]
- ldr r1, _080EC750 @ =0x040000d4
- str r0, [r1]
- movs r0, 0xC0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _080EC754 @ =0x8100c000
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- str r4, [sp, 0x8]
- add r0, sp, 0x8
- str r0, [r1]
- movs r0, 0xE0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _080EC758 @ =0x85000100
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add r0, sp, 0x4
- strh r4, [r0]
- str r0, [r1]
- ldr r0, _080EC75C @ =0x05000002
- str r0, [r1, 0x4]
- ldr r0, _080EC760 @ =0x810001ff
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetPaletteFade
- movs r1, 0xE0
- lsls r1, 6
- movs r0, 0
- movs r2, 0
- bl load_copyright_graphics
- bl ScanlineEffect_Stop
- bl ResetTasks
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r0, 0x1
- negs r0, r0
- ldr r1, _080EC764 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r1, 0xE0
- lsls r1, 3
- movs r0, 0x8
- bl SetGpuReg
- movs r0, 0x1
- bl EnableInterrupts
- ldr r0, _080EC768 @ =sub_80EC5A4
- bl SetVBlankCallback
- movs r1, 0xA0
- lsls r1, 1
- movs r0, 0
- bl SetGpuReg
- ldr r0, _080EC76C @ =SerialCb_CopyrightScreen
- bl SetSerialCallback
- ldr r0, _080EC770 @ =gUnknown_203AAD4
- bl GameCubeMultiBoot_Init
-_080EC732:
- bl UpdatePaletteFade
- ldr r0, _080EC774 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- ldr r0, _080EC770 @ =gUnknown_203AAD4
- bl GameCubeMultiBoot_Main
- b _080EC812
- .align 2, 0
-_080EC74C: .4byte 0x00007fff
-_080EC750: .4byte 0x040000d4
-_080EC754: .4byte 0x8100c000
-_080EC758: .4byte 0x85000100
-_080EC75C: .4byte 0x05000002
-_080EC760: .4byte 0x810001ff
-_080EC764: .4byte 0x0000ffff
-_080EC768: .4byte sub_80EC5A4
-_080EC76C: .4byte SerialCb_CopyrightScreen
-_080EC770: .4byte gUnknown_203AAD4
-_080EC774: .4byte gMain
-_080EC778:
- ldr r4, _080EC7A0 @ =gUnknown_203AAD4
- adds r0, r4, 0
- bl GameCubeMultiBoot_Main
- ldrb r0, [r4, 0x2]
- cmp r0, 0x1
- beq _080EC812
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _080EC812
- .align 2, 0
-_080EC7A0: .4byte gUnknown_203AAD4
-_080EC7A4:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080EC812
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldr r5, _080EC7E4 @ =gUnknown_203AAD4
- ldrb r0, [r5, 0x2]
- cmp r0, 0
- beq _080EC7F4
- ldrb r0, [r5, 0x2]
- cmp r0, 0x2
- bne _080EC7FE
- ldr r6, _080EC7E8 @ =0x020000ac
- ldr r4, [r6]
- ldr r0, _080EC7EC @ =0x65366347
- cmp r4, r0
- bne _080EC7DC
- ldr r0, _080EC7F0 @ =gMultiBootProgram_PokemonColosseum_Start
- movs r1, 0x80
- lsls r1, 18
- movs r2, 0xA0
- lsls r2, 9
- bl CpuSet
- str r4, [r6]
-_080EC7DC:
- adds r0, r5, 0
- bl GameCubeMultiBoot_ExecuteProgram
- b _080EC7FE
- .align 2, 0
-_080EC7E4: .4byte gUnknown_203AAD4
-_080EC7E8: .4byte 0x020000ac
-_080EC7EC: .4byte 0x65366347
-_080EC7F0: .4byte gMultiBootProgram_PokemonColosseum_Start
-_080EC7F4:
- bl GameCubeMultiBoot_Quit
- ldr r0, _080EC804 @ =SerialCB
- bl SetSerialCallback
-_080EC7FE:
- movs r0, 0
- b _080EC814
- .align 2, 0
-_080EC804: .4byte SerialCB
-_080EC808:
- bl sub_800B388
- ldr r0, _080EC81C @ =sub_80EC5B8
- bl SetMainCallback2
-_080EC812:
- movs r0, 0x1
-_080EC814:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080EC81C: .4byte sub_80EC5B8
- thumb_func_end sub_80EC62C
-
- thumb_func_start c2_copyright_1
-c2_copyright_1: @ 80EC820
- push {lr}
- bl sub_80EC62C
- lsls r0, 24
- cmp r0, 0
- bne _080EC858
- bl sub_8054A28
- bl Save_ResetSaveCounters
- movs r0, 0
- bl Save_LoadGameData
- ldr r0, _080EC85C @ =gSaveFileStatus
- ldrh r0, [r0]
- cmp r0, 0
- beq _080EC846
- cmp r0, 0x2
- bne _080EC84A
-_080EC846:
- bl Sav2_ClearSetDefault
-_080EC84A:
- ldr r0, _080EC860 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x15]
- lsls r0, 31
- lsrs r0, 31
- bl SetPokemonCryStereo
-_080EC858:
- pop {r0}
- bx r0
- .align 2, 0
-_080EC85C: .4byte gSaveFileStatus
-_080EC860: .4byte gSaveBlock2Ptr
- thumb_func_end c2_copyright_1
-
- thumb_func_start sub_80EC864
-sub_80EC864: @ 80EC864
- push {lr}
- bl sub_80EC62C
- pop {r0}
- bx r0
- thumb_func_end sub_80EC864
-
- thumb_func_start sub_80EC870
-sub_80EC870: @ 80EC870
- push {r4,lr}
- sub sp, 0xC
- ldr r0, _080EC88C @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r4, [r0]
- cmp r4, 0x1
- beq _080EC944
- cmp r4, 0x1
- bgt _080EC890
- cmp r4, 0
- beq _080EC8A0
- b _080EC894
- .align 2, 0
-_080EC88C: .4byte gMain
-_080EC890:
- cmp r4, 0x2
- beq _080EC988
-_080EC894:
- ldr r0, _080EC928 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080EC8A0:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- ldr r0, _080EC92C @ =gHeap
- movs r1, 0xE0
- lsls r1, 9
- bl InitHeap
- bl ResetTasks
- bl ResetSpriteData
- bl ResetPaletteFade
- bl reset_temp_tile_data_buffers
- bl sub_80ECA00
- add r1, sp, 0x4
- movs r0, 0
- strh r0, [r1]
- ldr r1, _080EC930 @ =0x040000d4
- add r0, sp, 0x4
- str r0, [r1]
- movs r0, 0xC0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _080EC934 @ =0x8100c000
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0
- str r2, [sp, 0x8]
- add r0, sp, 0x8
- str r0, [r1]
- movs r0, 0xE0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _080EC938 @ =0x85000100
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add r0, sp, 0x4
- strh r2, [r0]
- str r0, [r1]
- movs r0, 0xA0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _080EC93C @ =0x81000200
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0x80
- lsls r2, 3
- movs r0, 0
- movs r1, 0
- bl FillPalette
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _080EC940 @ =gUnknown_840BB80
- movs r0, 0
- movs r2, 0x2
- bl InitBgsFromTemplates
- b _080EC9B8
- .align 2, 0
-_080EC928: .4byte gMain
-_080EC92C: .4byte gHeap
-_080EC930: .4byte 0x040000d4
-_080EC934: .4byte 0x8100c000
-_080EC938: .4byte 0x85000100
-_080EC93C: .4byte 0x81000200
-_080EC940: .4byte gUnknown_840BB80
-_080EC944:
- ldr r0, _080EC978 @ =gUnknown_8402630
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _080EC97C @ =gUnknown_8402650
- movs r0, 0
- str r0, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, _080EC980 @ =gUnknown_8402668
- str r4, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r0, _080EC984 @ =gUnknown_840270C
- movs r1, 0xD0
- movs r2, 0x20
- bl LoadPalette
- b _080EC9B8
- .align 2, 0
-_080EC978: .4byte gUnknown_8402630
-_080EC97C: .4byte gUnknown_8402650
-_080EC980: .4byte gUnknown_8402668
-_080EC984: .4byte gUnknown_840270C
-_080EC988:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _080EC9C6
- bl sub_80ECA70
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r0, _080EC9B0 @ =sub_80EC9D4
- bl SetMainCallback2
- ldr r0, _080EC9B4 @ =sub_80EC9EC
- bl SetVBlankCallback
- b _080EC9C6
- .align 2, 0
-_080EC9B0: .4byte sub_80EC9D4
-_080EC9B4: .4byte sub_80EC9EC
-_080EC9B8:
- ldr r1, _080EC9D0 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080EC9C6:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC9D0: .4byte gMain
- thumb_func_end sub_80EC870
-
- thumb_func_start sub_80EC9D4
-sub_80EC9D4: @ 80EC9D4
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80EC9D4
-
- thumb_func_start sub_80EC9EC
-sub_80EC9EC: @ 80EC9EC
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80EC9EC
-
- thumb_func_start sub_80ECA00
-sub_80ECA00: @ 80ECA00
- push {lr}
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuRegBits
- pop {r0}
- bx r0
- thumb_func_end sub_80ECA00
-
- thumb_func_start sub_80ECA70
-sub_80ECA70: @ 80ECA70
- push {r4,lr}
- ldr r0, _080ECA9C @ =0x000028bc
- bl Alloc
- adds r4, r0, 0
- ldr r1, _080ECAA0 @ =sub_80ECAF0
- bl sub_80ECAA8
- ldr r0, _080ECAA4 @ =sub_80ECAB0
- movs r1, 0x3
- bl CreateTask
- strb r0, [r4, 0x5]
- ldrb r0, [r4, 0x5]
- movs r1, 0
- adds r2, r4, 0
- bl SetWordTaskArg
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ECA9C: .4byte 0x000028bc
-_080ECAA0: .4byte sub_80ECAF0
-_080ECAA4: .4byte sub_80ECAB0
- thumb_func_end sub_80ECA70
-
- thumb_func_start sub_80ECAA8
-sub_80ECAA8: @ 80ECAA8
- str r1, [r0]
- movs r1, 0
- strb r1, [r0, 0x4]
- bx lr
- thumb_func_end sub_80ECAA8
-
- thumb_func_start sub_80ECAB0
-sub_80ECAB0: @ 80ECAB0
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl GetWordTaskArg
- adds r4, r0, 0
- ldr r0, _080ECAE8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0xD
- ands r0, r1
- cmp r0, 0
- beq _080ECAD8
- ldr r0, [r4]
- ldr r1, _080ECAEC @ =sub_80EDBE8
- cmp r0, r1
- beq _080ECAD8
- adds r0, r4, 0
- bl sub_80ECAA8
-_080ECAD8:
- ldr r1, [r4]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ECAE8: .4byte gMain
-_080ECAEC: .4byte sub_80EDBE8
- thumb_func_end sub_80ECAB0
-
- thumb_func_start sub_80ECAF0
-sub_80ECAF0: @ 80ECAF0
- push {r4,r5,lr}
- sub sp, 0xC
- adds r5, r0, 0
- ldrb r0, [r5, 0x4]
- cmp r0, 0
- beq _080ECB02
- cmp r0, 0x1
- beq _080ECB78
- b _080ECB8A
-_080ECB02:
- ldr r0, _080ECB68 @ =gUnknown_840BBA8
- bl InitWindows
- ldr r0, _080ECB6C @ =gUnknown_840272C
- ldr r1, _080ECB70 @ =0x0000043c
- adds r4, r5, r1
- adds r1, r4, 0
- bl LZ77UnCompWram
- ldr r0, _080ECB74 @ =gUnknown_84028F8
- adds r1, r5, 0
- adds r1, 0x3C
- bl LZ77UnCompWram
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0x90
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x28
- bl BlitBitmapToWindow
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldrb r0, [r5, 0x4]
- adds r0, 0x1
- strb r0, [r5, 0x4]
- b _080ECB8A
- .align 2, 0
-_080ECB68: .4byte gUnknown_840BBA8
-_080ECB6C: .4byte gUnknown_840272C
-_080ECB70: .4byte 0x0000043c
-_080ECB74: .4byte gUnknown_84028F8
-_080ECB78:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _080ECB8A
- ldr r1, _080ECB94 @ =sub_80ECB98
- adds r0, r5, 0
- bl sub_80ECAA8
-_080ECB8A:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080ECB94: .4byte sub_80ECB98
- thumb_func_end sub_80ECAF0
-
- thumb_func_start sub_80ECB98
-sub_80ECB98: @ 80ECB98
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrb r5, [r4, 0x4]
- cmp r5, 0x1
- beq _080ECBE2
- cmp r5, 0x1
- bgt _080ECBAC
- cmp r5, 0
- beq _080ECBB2
- b _080ECC32
-_080ECBAC:
- cmp r5, 0x2
- beq _080ECBFC
- b _080ECC32
-_080ECBB2:
- movs r1, 0x80
- lsls r1, 7
- movs r0, 0
- bl SetGpuRegBits
- movs r1, 0xFC
- lsls r1, 6
- movs r0, 0x48
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x42
- movs r1, 0xF0
- bl SetGpuReg
- movs r0, 0x46
- movs r1, 0
- bl SetGpuReg
- strh r5, [r4, 0x12]
- b _080ECBF4
-_080ECBE2:
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- movs r2, 0
- bl BlendPalettes
-_080ECBF4:
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _080ECC32
-_080ECBFC:
- ldrh r0, [r4, 0x12]
- adds r0, 0x8
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2F
- bls _080ECC0E
- movs r0, 0x30
- strh r0, [r4, 0x12]
-_080ECC0E:
- ldrh r0, [r4, 0x12]
- movs r1, 0x50
- subs r1, r0
- lsls r1, 8
- adds r0, 0x50
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x46
- bl SetGpuReg
- ldrh r0, [r4, 0x12]
- cmp r0, 0x30
- bne _080ECC32
- ldr r1, _080ECC38 @ =sub_80ECC3C
- adds r0, r4, 0
- bl sub_80ECAA8
-_080ECC32:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080ECC38: .4byte sub_80ECC3C
- thumb_func_end sub_80ECB98
-
- thumb_func_start sub_80ECC3C
-sub_80ECC3C: @ 80ECC3C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrb r5, [r4, 0x4]
- cmp r5, 0x1
- beq _080ECC68
- cmp r5, 0x1
- bgt _080ECC50
- cmp r5, 0
- beq _080ECC56
- b _080ECC9C
-_080ECC50:
- cmp r5, 0x2
- beq _080ECC86
- b _080ECC9C
-_080ECC56:
- ldr r0, _080ECC64 @ =0x00000141
- bl PlaySE
- bl sub_80EDC40
- strh r5, [r4, 0x12]
- b _080ECC7E
- .align 2, 0
-_080ECC64: .4byte 0x00000141
-_080ECC68:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1E
- bne _080ECC9C
- bl sub_80EDDF0
- movs r0, 0
- strh r0, [r4, 0x12]
-_080ECC7E:
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _080ECC9C
-_080ECC86:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x5A
- bne _080ECC9C
- ldr r1, _080ECCA4 @ =sub_80ECCA8
- adds r0, r4, 0
- bl sub_80ECAA8
-_080ECC9C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080ECCA4: .4byte sub_80ECCA8
- thumb_func_end sub_80ECC3C
-
- thumb_func_start sub_80ECCA8
-sub_80ECCA8: @ 80ECCA8
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldrb r0, [r4, 0x4]
- cmp r0, 0x5
- bhi _080ECD54
- lsls r0, 2
- ldr r1, _080ECCC0 @ =_080ECCC4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080ECCC0: .4byte _080ECCC4
- .align 2, 0
-_080ECCC4:
- .4byte _080ECCDC
- .4byte _080ECCE6
- .4byte _080ECCF6
- .4byte _080ECD18
- .4byte _080ECD20
- .4byte _080ECD3E
-_080ECCDC:
- bl sub_80EDED8
- movs r0, 0
- strh r0, [r4, 0x12]
- b _080ECD36
-_080ECCE6:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x27
- bls _080ECD54
- b _080ECD36
-_080ECCF6:
- ldr r1, _080ECD14 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x30
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- movs r1, 0x10
- movs r2, 0x10
- movs r3, 0
- bl StartBlendTask
- b _080ECD36
- .align 2, 0
-_080ECD14: .4byte 0x00003f44
-_080ECD18:
- movs r0, 0x2
- bl ShowBg
- b _080ECD36
-_080ECD20:
- bl IsBlendTaskActive
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080ECD54
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- strh r5, [r4, 0x12]
-_080ECD36:
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _080ECD54
-_080ECD3E:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x32
- bls _080ECD54
- ldr r1, _080ECD5C @ =sub_80ECD60
- adds r0, r4, 0
- bl sub_80ECAA8
-_080ECD54:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080ECD5C: .4byte sub_80ECD60
- thumb_func_end sub_80ECCA8
-
- thumb_func_start sub_80ECD60
-sub_80ECD60: @ 80ECD60
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- ldrb r0, [r6, 0x4]
- cmp r0, 0x7
- bls _080ECD6E
- b _080ECE96
-_080ECD6E:
- lsls r0, 2
- ldr r1, _080ECD78 @ =_080ECD7C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080ECD78: .4byte _080ECD7C
- .align 2, 0
-_080ECD7C:
- .4byte _080ECD9C
- .4byte _080ECDC4
- .4byte _080ECDCC
- .4byte _080ECE10
- .4byte _080ECE26
- .4byte _080ECE52
- .4byte _080ECE64
- .4byte _080ECE78
-_080ECD9C:
- ldr r1, _080ECDC0 @ =0x00003f50
- movs r0, 0x50
- bl SetGpuReg
- movs r5, 0x10
- str r5, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- movs r0, 0
- movs r1, 0x10
- movs r2, 0x10
- movs r3, 0
- bl StartBlendTask
- strh r4, [r6, 0x8]
- strh r5, [r6, 0xA]
- strh r4, [r6, 0x12]
- b _080ECE70
- .align 2, 0
-_080ECDC0: .4byte 0x00003f50
-_080ECDC4:
- bl sub_80EDF68
- str r0, [r6, 0x14]
- b _080ECE70
-_080ECDCC:
- bl IsBlendTaskActive
- lsls r0, 24
- cmp r0, 0
- bne _080ECE96
- adds r1, r6, 0
- adds r1, 0x3C
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x40
- str r0, [sp, 0x4]
- movs r0, 0
- movs r2, 0x38
- movs r3, 0x6
- bl BlitBitmapToWindow
- ldr r0, _080ECE0C @ =0x0000043c
- adds r1, r6, r0
- movs r0, 0x90
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0
- movs r2, 0
- movs r3, 0x28
- bl BlitBitmapToWindow
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- b _080ECE70
- .align 2, 0
-_080ECE0C: .4byte 0x0000043c
-_080ECE10:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080ECE96
- ldr r0, [r6, 0x14]
- bl DestroySprite
- strh r4, [r6, 0x12]
- b _080ECE70
-_080ECE26:
- ldrh r0, [r6, 0x12]
- adds r0, 0x1
- strh r0, [r6, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x5A
- bls _080ECE96
- movs r0, 0x50
- movs r1, 0x4
- bl SetGpuRegBits
- movs r0, 0x14
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- movs r0, 0x10
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl StartBlendTask
- b _080ECE70
-_080ECE52:
- bl IsBlendTaskActive
- lsls r0, 24
- cmp r0, 0
- bne _080ECE96
- movs r0, 0x2
- bl HideBg
- b _080ECE70
-_080ECE64:
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r0, 0
- strh r0, [r6, 0x12]
-_080ECE70:
- ldrb r0, [r6, 0x4]
- adds r0, 0x1
- strb r0, [r6, 0x4]
- b _080ECE96
-_080ECE78:
- ldrh r0, [r6, 0x12]
- adds r0, 0x1
- strh r0, [r6, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x14
- bls _080ECE96
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- ldr r1, _080ECEA0 @ =sub_80ECEA4
- adds r0, r6, 0
- bl sub_80ECAA8
-_080ECE96:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080ECEA0: .4byte sub_80ECEA4
- thumb_func_end sub_80ECD60
-
- thumb_func_start sub_80ECEA4
-sub_80ECEA4: @ 80ECEA4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldrb r0, [r5, 0x4]
- cmp r0, 0x5
- bls _080ECEB2
- b _080ED094
-_080ECEB2:
- lsls r0, 2
- ldr r1, _080ECEBC @ =_080ECEC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080ECEBC: .4byte _080ECEC0
- .align 2, 0
-_080ECEC0:
- .4byte _080ECED8
- .4byte _080ECF64
- .4byte _080ECFA4
- .4byte _080ECFD8
- .4byte _080ED000
- .4byte _080ED064
-_080ECED8:
- movs r0, 0
- bl SetVBlankCallback
- ldr r0, _080ECF48 @ =gUnknown_8402D34
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _080ECF4C @ =gUnknown_84048CC
- movs r1, 0x20
- movs r2, 0x20
- bl LoadPalette
- ldr r2, _080ECF50 @ =0x00007fff
- movs r0, 0x6
- movs r1, 0x10
- bl BlendPalettes
- ldr r1, _080ECF54 @ =gUnknown_840BB88
- movs r0, 0
- movs r2, 0x2
- bl InitBgsFromTemplates
- ldr r1, _080ECF58 @ =gUnknown_84048EC
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, _080ECF5C @ =gUnknown_8404F7C
- movs r0, 0x1
- str r0, [sp]
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- movs r0, 0x1
- bl ShowBg
- movs r0, 0
- bl HideBg
- movs r0, 0x2
- bl HideBg
- movs r0, 0x3
- bl HideBg
- bl sub_80EEBE4
- ldr r0, _080ECF60 @ =sub_80EC9EC
- bl SetVBlankCallback
- b _080ECFF0
- .align 2, 0
-_080ECF48: .4byte gUnknown_8402D34
-_080ECF4C: .4byte gUnknown_84048CC
-_080ECF50: .4byte 0x00007fff
-_080ECF54: .4byte gUnknown_840BB88
-_080ECF58: .4byte gUnknown_84048EC
-_080ECF5C: .4byte gUnknown_8404F7C
-_080ECF60: .4byte sub_80EC9EC
-_080ECF64:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080ECF72
- b _080ED094
-_080ECF72:
- ldr r1, _080ECF9C @ =gUnknown_8402D54
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, _080ECFA0 @ =gUnknown_8403FE8
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- bl sub_80F6C14
- movs r0, 0x1
- bl ShowBg
- b _080ECFF0
- .align 2, 0
-_080ECF9C: .4byte gUnknown_8402D54
-_080ECFA0: .4byte gUnknown_8403FE8
-_080ECFA4:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _080ED094
- movs r0, 0
- bl ShowBg
- ldr r0, _080ECFD0 @ =sub_80ED0AC
- movs r1, 0
- bl CreateTask
- movs r1, 0x2
- negs r1, r1
- ldr r0, _080ECFD4 @ =0x00007fff
- str r0, [sp]
- movs r0, 0x6
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _080ECFF0
- .align 2, 0
-_080ECFD0: .4byte sub_80ED0AC
-_080ECFD4: .4byte 0x00007fff
-_080ECFD8:
- ldr r0, _080ECFF8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080ED094
- ldr r0, _080ECFFC @ =0x00000115
- bl m4aSongNumStart
- strh r4, [r5, 0x12]
-_080ECFF0:
- ldrb r0, [r5, 0x4]
- adds r0, 0x1
- strb r0, [r5, 0x4]
- b _080ED094
- .align 2, 0
-_080ECFF8: .4byte gPaletteFade
-_080ECFFC: .4byte 0x00000115
-_080ED000:
- ldrh r0, [r5, 0x12]
- adds r0, 0x1
- strh r0, [r5, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x14
- bne _080ED01A
- ldr r0, _080ED054 @ =sub_80ED140
- movs r1, 0
- bl CreateTask
- bl sub_80ED118
-_080ED01A:
- ldrh r0, [r5, 0x12]
- cmp r0, 0x1D
- bls _080ED094
- movs r0, 0x2
- negs r0, r0
- ldr r2, _080ED058 @ =0x00007fff
- movs r1, 0x10
- bl BlendPalettes
- ldr r0, _080ED05C @ =sub_80ED0AC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r0, _080ED054 @ =sub_80ED140
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r1, _080ED060 @ =sub_80ED188
- adds r0, r5, 0
- bl sub_80ECAA8
- b _080ED094
- .align 2, 0
-_080ED054: .4byte sub_80ED140
-_080ED058: .4byte 0x00007fff
-_080ED05C: .4byte sub_80ED0AC
-_080ED060: .4byte sub_80ED188
-_080ED064:
- ldr r0, _080ED09C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080ED094
- ldr r0, _080ED0A0 @ =sub_80ED0AC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r0, _080ED0A4 @ =sub_80ED140
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r1, _080ED0A8 @ =sub_80ED188
- adds r0, r5, 0
- bl sub_80ECAA8
-_080ED094:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080ED09C: .4byte gPaletteFade
-_080ED0A0: .4byte sub_80ED0AC
-_080ED0A4: .4byte sub_80ED140
-_080ED0A8: .4byte sub_80ED188
- thumb_func_end sub_80ECEA4
-
- thumb_func_start sub_80ED0AC
-sub_80ED0AC: @ 80ED0AC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080ED114 @ =gTasks+0x8
- adds r4, r1, r0
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080ED0EC
- movs r1, 0
- strh r1, [r4]
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080ED0DE
- strh r1, [r4, 0x2]
-_080ED0DE:
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r1, 15
- movs r0, 0
- movs r2, 0
- bl ChangeBgY
-_080ED0EC:
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080ED10C
- movs r1, 0x90
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r4, 0x6]
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r0, 0
- movs r2, 0x2
- bl ChangeBgY
-_080ED10C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ED114: .4byte gTasks+0x8
- thumb_func_end sub_80ED0AC
-
- thumb_func_start sub_80ED118
-sub_80ED118: @ 80ED118
- push {lr}
- ldr r0, _080ED138 @ =sub_80ED0AC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080ED13C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x1
- strh r0, [r1, 0xC]
- pop {r0}
- bx r0
- .align 2, 0
-_080ED138: .4byte sub_80ED0AC
-_080ED13C: .4byte gTasks
- thumb_func_end sub_80ED118
-
- thumb_func_start sub_80ED140
-sub_80ED140: @ 80ED140
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080ED184 @ =gTasks+0x8
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080ED17E
- movs r0, 0
- strh r0, [r1]
- ldrh r2, [r1, 0x2]
- movs r3, 0x2
- ldrsh r0, [r1, r3]
- cmp r0, 0x1
- bgt _080ED170
- adds r0, r2, 0x1
- strh r0, [r1, 0x2]
-_080ED170:
- movs r0, 0x2
- ldrsh r1, [r1, r0]
- lsls r1, 15
- movs r0, 0x1
- movs r2, 0
- bl ChangeBgY
-_080ED17E:
- pop {r0}
- bx r0
- .align 2, 0
-_080ED184: .4byte gTasks+0x8
- thumb_func_end sub_80ED140
-
- thumb_func_start sub_80ED188
-sub_80ED188: @ 80ED188
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r7, r0, 0
- ldrb r0, [r7, 0x4]
- cmp r0, 0x6
- bls _080ED19A
- b _080ED3F6
-_080ED19A:
- lsls r0, 2
- ldr r1, _080ED1A4 @ =_080ED1A8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080ED1A4: .4byte _080ED1A8
- .align 2, 0
-_080ED1A8:
- .4byte _080ED1C4
- .4byte _080ED214
- .4byte _080ED32C
- .4byte _080ED350
- .4byte _080ED360
- .4byte _080ED3BC
- .4byte _080ED3D2
-_080ED1C4:
- movs r0, 0x2
- negs r0, r0
- ldr r2, _080ED204 @ =0x00007fff
- movs r1, 0x10
- bl BlendPalettes
- ldr r1, _080ED208 @ =gUnknown_840BB90
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r1, _080ED20C @ =gUnknown_8405414
- movs r0, 0
- str r0, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, _080ED210 @ =gUnknown_8405890
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- movs r0, 0x3
- bl ShowBg
- b _080ED3CA
- .align 2, 0
-_080ED204: .4byte 0x00007fff
-_080ED208: .4byte gUnknown_840BB90
-_080ED20C: .4byte gUnknown_8405414
-_080ED210: .4byte gUnknown_8405890
-_080ED214:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _080ED222
- b _080ED3F6
-_080ED222:
- movs r0, 0
- bl SetVBlankCallback
- ldr r0, _080ED2FC @ =gUnknown_84053B4
- movs r1, 0x10
- movs r2, 0x60
- bl LoadPalette
- ldr r0, _080ED300 @ =gUnknown_8405DA4
- movs r1, 0x50
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _080ED304 @ =gUnknown_8406634
- movs r1, 0x60
- movs r2, 0x20
- bl LoadPalette
- movs r5, 0x2
- negs r5, r5
- ldr r0, _080ED308 @ =0x00007fff
- mov r8, r0
- adds r0, r5, 0
- movs r1, 0x10
- mov r2, r8
- bl BlendPalettes
- ldr r1, _080ED30C @ =gUnknown_8405B28
- str r6, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, _080ED310 @ =gUnknown_8405CDC
- movs r4, 0x1
- str r4, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, _080ED314 @ =gUnknown_8406654
- str r6, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, _080ED318 @ =gUnknown_84071D0
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, _080ED31C @ =gUnknown_8405DC4
- str r6, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, _080ED320 @ =gUnknown_840644C
- str r4, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- bl sub_80F6C14
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl HideBg
- movs r0, 0x2
- bl HideBg
- movs r1, 0xE7
- lsls r1, 9
- movs r0, 0x2
- movs r2, 0
- bl ChangeBgY
- movs r1, 0xA0
- lsls r1, 6
- movs r0, 0x1
- movs r2, 0
- bl ChangeBgY
- ldr r0, _080ED324 @ =sub_80ED40C
- movs r1, 0
- bl CreateTask
- adds r0, r7, 0
- bl sub_80ED444
- adds r0, r5, 0
- movs r1, 0x10
- mov r2, r8
- bl BlendPalettes
- ldr r0, _080ED328 @ =sub_80EC9EC
- bl SetVBlankCallback
- b _080ED3CA
- .align 2, 0
-_080ED2FC: .4byte gUnknown_84053B4
-_080ED300: .4byte gUnknown_8405DA4
-_080ED304: .4byte gUnknown_8406634
-_080ED308: .4byte 0x00007fff
-_080ED30C: .4byte gUnknown_8405B28
-_080ED310: .4byte gUnknown_8405CDC
-_080ED314: .4byte gUnknown_8406654
-_080ED318: .4byte gUnknown_84071D0
-_080ED31C: .4byte gUnknown_8405DC4
-_080ED320: .4byte gUnknown_840644C
-_080ED324: .4byte sub_80ED40C
-_080ED328: .4byte sub_80EC9EC
-_080ED32C:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _080ED3F6
- movs r1, 0x2
- negs r1, r1
- ldr r0, _080ED34C @ =0x00007fff
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _080ED3CA
- .align 2, 0
-_080ED34C: .4byte 0x00007fff
-_080ED350:
- ldr r0, _080ED35C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- b _080ED3C0
- .align 2, 0
-_080ED35C: .4byte gPaletteFade
-_080ED360:
- ldrh r0, [r7, 0x12]
- adds r0, 0x1
- strh r0, [r7, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x3B
- bls _080ED3F6
- movs r0, 0
- strh r0, [r7, 0x12]
- ldr r0, _080ED3B4 @ =sub_80ED40C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- adds r0, r7, 0
- bl sub_80ED4A0
- ldr r0, _080ED3B8 @ =sub_80ED428
- movs r1, 0
- bl CreateTask
- movs r1, 0x80
- lsls r1, 9
- movs r0, 0x3
- movs r2, 0
- bl ChangeBgY
- movs r0, 0
- bl HideBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- b _080ED3CA
- .align 2, 0
-_080ED3B4: .4byte sub_80ED40C
-_080ED3B8: .4byte sub_80ED428
-_080ED3BC:
- bl IsDma3ManagerBusyWithBgCopy
-_080ED3C0:
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080ED3F6
- strh r0, [r7, 0x12]
-_080ED3CA:
- ldrb r0, [r7, 0x4]
- adds r0, 0x1
- strb r0, [r7, 0x4]
- b _080ED3F6
-_080ED3D2:
- ldrh r0, [r7, 0x12]
- adds r0, 0x1
- strh r0, [r7, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x3B
- bls _080ED3F6
- ldr r0, _080ED404 @ =sub_80ED428
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r1, _080ED408 @ =sub_80ED4C0
- adds r0, r7, 0
- bl sub_80ECAA8
-_080ED3F6:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080ED404: .4byte sub_80ED428
-_080ED408: .4byte sub_80ED4C0
- thumb_func_end sub_80ED188
-
- thumb_func_start sub_80ED40C
-sub_80ED40C: @ 80ED40C
- push {lr}
- movs r0, 0x3
- movs r1, 0xE0
- movs r2, 0x2
- bl ChangeBgX
- movs r1, 0x88
- lsls r1, 1
- movs r0, 0
- movs r2, 0x1
- bl ChangeBgX
- pop {r0}
- bx r0
- thumb_func_end sub_80ED40C
-
- thumb_func_start sub_80ED428
-sub_80ED428: @ 80ED428
- push {lr}
- movs r0, 0x2
- movs r1, 0x20
- movs r2, 0x1
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0x24
- movs r2, 0x2
- bl ChangeBgY
- pop {r0}
- bx r0
- thumb_func_end sub_80ED428
-
- thumb_func_start sub_80ED444
-sub_80ED444: @ 80ED444
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0
- str r0, [r4, 0x1C]
- str r0, [r4, 0x20]
- ldr r0, _080ED494 @ =gUnknown_840BDA8
- movs r1, 0xA8
- movs r2, 0x50
- movs r3, 0xB
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080ED46E
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080ED498 @ =gSprites
- adds r0, r1
- str r0, [r4, 0x20]
-_080ED46E:
- ldr r0, _080ED49C @ =gUnknown_840BDC0
- movs r1, 0x48
- movs r2, 0x50
- movs r3, 0xC
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080ED48E
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080ED498 @ =gSprites
- adds r0, r1
- str r0, [r4, 0x1C]
-_080ED48E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080ED494: .4byte gUnknown_840BDA8
-_080ED498: .4byte gSprites
-_080ED49C: .4byte gUnknown_840BDC0
- thumb_func_end sub_80ED444
-
- thumb_func_start sub_80ED4A0
-sub_80ED4A0: @ 80ED4A0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x1C]
- cmp r0, 0
- beq _080ED4AE
- bl DestroySprite
-_080ED4AE:
- ldr r0, [r4, 0x20]
- cmp r0, 0
- beq _080ED4B8
- bl DestroySprite
-_080ED4B8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ED4A0
-
- thumb_func_start sub_80ED4C0
-sub_80ED4C0: @ 80ED4C0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldrb r4, [r5, 0x4]
- cmp r4, 0x1
- beq _080ED59C
- cmp r4, 0x1
- bgt _080ED4D6
- cmp r4, 0
- beq _080ED4E4
- b _080ED68A
-_080ED4D6:
- cmp r4, 0x2
- bne _080ED4DC
- b _080ED5FC
-_080ED4DC:
- cmp r4, 0x3
- bne _080ED4E2
- b _080ED658
-_080ED4E2:
- b _080ED68A
-_080ED4E4:
- ldr r0, _080ED584 @ =gUnknown_8407430
- movs r1, 0x10
- movs r2, 0x40
- bl LoadPalette
- ldr r0, _080ED588 @ =gUnknown_8405DA4
- movs r1, 0x50
- movs r2, 0x20
- bl LoadPalette
- movs r0, 0x2
- negs r0, r0
- ldr r2, _080ED58C @ =0x00007fff
- movs r1, 0x10
- bl BlendPalettes
- ldr r1, _080ED590 @ =gUnknown_840BBA0
- movs r0, 0
- movs r2, 0x2
- bl InitBgsFromTemplates
- ldr r1, _080ED594 @ =gUnknown_8407470
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, _080ED598 @ =gUnknown_8407A50
- movs r0, 0x1
- str r0, [sp]
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- movs r0, 0x1
- bl ShowBg
- movs r0, 0
- bl HideBg
- movs r0, 0x2
- bl HideBg
- movs r0, 0x3
- bl HideBg
- bl sub_80F6C14
- ldrb r0, [r5, 0x4]
- adds r0, 0x1
- strb r0, [r5, 0x4]
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl SetGpuRegBits
- movs r0, 0x48
- movs r1, 0x12
- bl SetGpuRegBits
- movs r0, 0x48
- movs r1, 0x1
- bl ClearGpuRegBits
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuRegBits
- movs r1, 0x82
- lsls r1, 6
- movs r0, 0x44
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0x78
- bl SetGpuReg
- b _080ED68A
- .align 2, 0
-_080ED584: .4byte gUnknown_8407430
-_080ED588: .4byte gUnknown_8405DA4
-_080ED58C: .4byte 0x00007fff
-_080ED590: .4byte gUnknown_840BBA0
-_080ED594: .4byte gUnknown_8407470
-_080ED598: .4byte gUnknown_8407A50
-_080ED59C:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080ED68A
- ldr r1, _080ED5EC @ =gUnknown_8407B9C
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, _080ED5F0 @ =gUnknown_8408D98
- str r4, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, _080ED5F4 @ =gUnknown_203AB00
- movs r0, 0x4
- strh r0, [r1]
- ldr r1, _080ED5F8 @ =gUnknown_203AB02
- movs r0, 0x34
- strh r0, [r1]
- movs r1, 0xC0
- lsls r1, 5
- movs r0, 0
- movs r2, 0
- bl ChangeBgX
- movs r1, 0xF8
- lsls r1, 9
- movs r0, 0
- movs r2, 0
- bl ChangeBgY
- b _080ED642
- .align 2, 0
-_080ED5EC: .4byte gUnknown_8407B9C
-_080ED5F0: .4byte gUnknown_8408D98
-_080ED5F4: .4byte gUnknown_203AB00
-_080ED5F8: .4byte gUnknown_203AB02
-_080ED5FC:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080ED68A
- movs r0, 0x2
- negs r0, r0
- ldr r2, _080ED64C @ =0x00007fff
- movs r1, 0
- bl BlendPalettes
- movs r0, 0
- bl ShowBg
- ldr r0, _080ED650 @ =sub_80ED714
- movs r1, 0
- bl CreateTask
- adds r0, r5, 0
- bl sub_80EE4F8
- ldr r0, [r5, 0x18]
- movs r1, 0
- movs r2, 0xB4
- movs r3, 0x34
- bl sub_80EE528
- ldr r0, _080ED654 @ =sub_80EE200
- movs r1, 0
- bl CreateTask
- bl sub_80ED6D8
- strh r4, [r5, 0x12]
-_080ED642:
- ldrb r0, [r5, 0x4]
- adds r0, 0x1
- strb r0, [r5, 0x4]
- b _080ED68A
- .align 2, 0
-_080ED64C: .4byte 0x00007fff
-_080ED650: .4byte sub_80ED714
-_080ED654: .4byte sub_80EE200
-_080ED658:
- ldrh r0, [r5, 0x12]
- adds r0, 0x1
- strh r0, [r5, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x10
- bne _080ED66C
- adds r0, r5, 0
- bl sub_80ED7D4
-_080ED66C:
- adds r0, r5, 0
- bl sub_80EE5C8
- cmp r0, 0
- bne _080ED68A
- ldr r0, _080ED694 @ =sub_80EE200
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _080ED68A
- ldr r1, _080ED698 @ =sub_80ED898
- adds r0, r5, 0
- bl sub_80ECAA8
-_080ED68A:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080ED694: .4byte sub_80EE200
-_080ED698: .4byte sub_80ED898
- thumb_func_end sub_80ED4C0
-
- thumb_func_start sub_80ED69C
-sub_80ED69C: @ 80ED69C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080ED6C4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080ED6C8
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0x1
- movs r2, 0x2
- bl ChangeBgX
- b _080ED6D2
- .align 2, 0
-_080ED6C4: .4byte gTasks
-_080ED6C8:
- movs r0, 0x1
- movs r1, 0x20
- movs r2, 0x2
- bl ChangeBgX
-_080ED6D2:
- pop {r0}
- bx r0
- thumb_func_end sub_80ED69C
-
- thumb_func_start sub_80ED6D8
-sub_80ED6D8: @ 80ED6D8
- push {lr}
- ldr r0, _080ED6E8 @ =sub_80ED69C
- movs r1, 0
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080ED6E8: .4byte sub_80ED69C
- thumb_func_end sub_80ED6D8
-
- thumb_func_start sub_80ED6EC
-sub_80ED6EC: @ 80ED6EC
- push {lr}
- ldr r0, _080ED70C @ =sub_80ED69C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080ED710 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x1
- strh r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_080ED70C: .4byte sub_80ED69C
-_080ED710: .4byte gTasks
- thumb_func_end sub_80ED6EC
-
- thumb_func_start sub_80ED714
-sub_80ED714: @ 80ED714
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080ED75C @ =gTasks+0x8
- adds r2, r1, r0
- movs r0, 0
- ldrsh r1, [r2, r0]
- cmp r1, 0
- bne _080ED758
- ldrh r0, [r2, 0x2]
- adds r0, 0x1
- strh r0, [r2, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1D
- ble _080ED758
- strh r1, [r2, 0x2]
- ldrh r0, [r2, 0x4]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r2, 0x4]
- movs r0, 0x4
- ldrsh r1, [r2, r0]
- lsls r1, 15
- movs r0, 0xF8
- lsls r0, 9
- adds r1, r0
- movs r0, 0
- movs r2, 0
- bl ChangeBgY
-_080ED758:
- pop {r0}
- bx r0
- .align 2, 0
-_080ED75C: .4byte gTasks+0x8
- thumb_func_end sub_80ED714
-
- thumb_func_start sub_80ED760
-sub_80ED760: @ 80ED760
- push {lr}
- ldr r0, _080ED780 @ =sub_80ED714
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080ED784 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x1
- strh r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_080ED780: .4byte sub_80ED714
-_080ED784: .4byte gTasks
- thumb_func_end sub_80ED760
-
- thumb_func_start sub_80ED788
-sub_80ED788: @ 80ED788
- push {lr}
- ldr r0, _080ED7A8 @ =sub_80ED714
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080ED7AC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_080ED7A8: .4byte sub_80ED714
-_080ED7AC: .4byte gTasks
- thumb_func_end sub_80ED788
-
- thumb_func_start sub_80ED7B0
-sub_80ED7B0: @ 80ED7B0
- push {lr}
- ldr r0, _080ED7CC @ =sub_80ED714
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080ED7D0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0xC]
- pop {r1}
- bx r1
- .align 2, 0
-_080ED7CC: .4byte sub_80ED714
-_080ED7D0: .4byte gTasks
- thumb_func_end sub_80ED7B0
-
- thumb_func_start sub_80ED7D4
-sub_80ED7D4: @ 80ED7D4
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080ED800 @ =gUnknown_840BDFC
- movs r1, 0x94
- lsls r1, 1
- movs r2, 0x70
- movs r3, 0x7
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080ED80C
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080ED804 @ =gSprites
- adds r0, r1
- str r0, [r4, 0x24]
- ldr r1, _080ED808 @ =sub_80ED818
- str r1, [r0, 0x1C]
- b _080ED810
- .align 2, 0
-_080ED800: .4byte gUnknown_840BDFC
-_080ED804: .4byte gSprites
-_080ED808: .4byte sub_80ED818
-_080ED80C:
- movs r0, 0
- str r0, [r4, 0x24]
-_080ED810:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ED7D4
-
- thumb_func_start sub_80ED818
-sub_80ED818: @ 80ED818
- push {r4,lr}
- adds r2, r0, 0
- adds r4, r2, 0
- adds r4, 0x2E
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- beq _080ED848
- cmp r0, 0x1
- bgt _080ED832
- cmp r0, 0
- beq _080ED838
- b _080ED892
-_080ED832:
- cmp r0, 0x2
- beq _080ED866
- b _080ED892
-_080ED838:
- ldrh r0, [r2, 0x20]
- lsls r0, 5
- strh r0, [r4, 0x2]
- movs r0, 0xA0
- strh r0, [r4, 0x4]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
-_080ED848:
- ldrh r0, [r4, 0x2]
- ldrh r1, [r4, 0x4]
- subs r0, r1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 21
- strh r0, [r2, 0x20]
- cmp r0, 0x34
- bgt _080ED892
- bl sub_80ED6EC
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080ED892
-_080ED866:
- ldrh r0, [r4, 0x2]
- subs r0, 0x20
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 21
- strh r0, [r2, 0x20]
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bgt _080ED892
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- adds r0, r2, 0
- bl DestroySprite
-_080ED892:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ED818
-
- thumb_func_start sub_80ED898
-sub_80ED898: @ 80ED898
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldrb r0, [r4, 0x4]
- cmp r0, 0xF
- bls _080ED8A6
- b _080EDA98
-_080ED8A6:
- lsls r0, 2
- ldr r1, _080ED8B0 @ =_080ED8B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080ED8B0: .4byte _080ED8B4
- .align 2, 0
-_080ED8B4:
- .4byte _080ED8F4
- .4byte _080ED8F8
- .4byte _080ED910
- .4byte _080ED918
- .4byte _080ED936
- .4byte _080ED946
- .4byte _080ED95E
- .4byte _080ED97C
- .4byte _080ED998
- .4byte _080ED9A0
- .4byte _080ED9BA
- .4byte _080ED9D2
- .4byte _080ED9DC
- .4byte _080EDA1C
- .4byte _080EDA5C
- .4byte _080EDA7C
-_080ED8F4:
- movs r0, 0
- b _080EDA6C
-_080ED8F8:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1E
- bhi _080ED908
- b _080EDAC4
-_080ED908:
- adds r0, r4, 0
- bl sub_80EE5E4
- b _080EDA6E
-_080ED910:
- adds r0, r4, 0
- bl sub_80EE850
- b _080EDA64
-_080ED918:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1E
- bhi _080ED928
- b _080EDAC4
-_080ED928:
- bl sub_80ED760
- adds r0, r4, 0
- bl sub_80EDF94
- movs r0, 0
- b _080EDA6C
-_080ED936:
- ldrb r0, [r4, 0x6]
- cmp r0, 0
- bne _080ED93E
- b _080EDAC4
-_080ED93E:
- adds r0, r4, 0
- bl sub_80EE6A4
- b _080EDA6E
-_080ED946:
- adds r0, r4, 0
- bl sub_80EE850
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _080ED956
- b _080EDAC4
-_080ED956:
- bl sub_80ED788
- strh r5, [r4, 0x12]
- b _080EDA6E
-_080ED95E:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x10
- bhi _080ED96E
- b _080EDAC4
-_080ED96E:
- ldr r0, [r4, 0x18]
- movs r1, 0x8
- movs r2, 0xC
- movs r3, 0x5
- bl sub_80EE970
- b _080EDA6E
-_080ED97C:
- adds r0, r4, 0
- bl sub_80EE850
- lsls r0, 24
- cmp r0, 0
- beq _080ED98A
- b _080EDAC4
-_080ED98A:
- ldr r0, [r4, 0x18]
- movs r1, 0x8
- movs r2, 0xC
- movs r3, 0x5
- bl sub_80EE970
- b _080EDA6E
-_080ED998:
- adds r0, r4, 0
- bl sub_80EE850
- b _080EDA64
-_080ED9A0:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x14
- bhi _080ED9B0
- b _080EDAC4
-_080ED9B0:
- adds r0, r4, 0
- bl sub_80EEA94
- movs r0, 0
- b _080EDA6C
-_080ED9BA:
- bl sub_80ED7B0
- lsls r0, 24
- cmp r0, 0
- beq _080ED9C6
- b _080EDAC4
-_080ED9C6:
- bl sub_80ED760
- adds r0, r4, 0
- bl sub_80EDAF0
- b _080EDA6E
-_080ED9D2:
- movs r0, 0
- bl HideBg
- movs r0, 0
- b _080EDA6C
-_080ED9DC:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x30
- bne _080ED9FA
- ldr r0, _080EDA18 @ =0x00007fff
- str r0, [sp]
- movs r0, 0x6
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_080ED9FA:
- ldrh r0, [r4, 0x12]
- cmp r0, 0x78
- bls _080EDAC4
- adds r0, r4, 0
- bl sub_80EDB70
- adds r0, r4, 0
- bl sub_80EDBAC
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- movs r0, 0
- b _080EDAC2
- .align 2, 0
-_080EDA18: .4byte 0x00007fff
-_080EDA1C:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- bls _080EDAC4
- add r1, sp, 0x4
- ldr r2, _080EDA50 @ =0x00007fff
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _080EDA54 @ =gPlttBufferUnfaded + 0x20
- ldr r2, _080EDA58 @ =0x01000020
- add r0, sp, 0x4
- bl CpuSet
- movs r1, 0x2
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _080EDA6E
- .align 2, 0
-_080EDA50: .4byte 0x00007fff
-_080EDA54: .4byte gPlttBufferUnfaded + 0x20
-_080EDA58: .4byte 0x01000020
-_080EDA5C:
- ldr r0, _080EDA78 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
-_080EDA64:
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080EDAC4
-_080EDA6C:
- strh r0, [r4, 0x12]
-_080EDA6E:
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _080EDAC4
- .align 2, 0
-_080EDA78: .4byte gPaletteFade
-_080EDA7C:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x3C
- bls _080EDAC4
- ldr r1, _080EDA94 @ =sub_80EDBE8
- adds r0, r4, 0
- bl sub_80ECAA8
- b _080EDAC4
- .align 2, 0
-_080EDA94: .4byte sub_80EDBE8
-_080EDA98:
- ldr r0, _080EDACC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080EDAC4
- ldr r0, _080EDAD0 @ =0xffff0064
- ldr r2, _080EDAD4 @ =0x00007fff
- movs r1, 0
- bl BlendPalettes
- ldr r1, [r4, 0x18]
- movs r0, 0
- strh r0, [r1, 0x24]
- ldr r1, [r4, 0x18]
- movs r0, 0xB4
- strh r0, [r1, 0x20]
- movs r0, 0x1
- strb r0, [r4, 0x4]
- movs r0, 0x1E
-_080EDAC2:
- strh r0, [r4, 0x12]
-_080EDAC4:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDACC: .4byte gMain
-_080EDAD0: .4byte 0xffff0064
-_080EDAD4: .4byte 0x00007fff
- thumb_func_end sub_80ED898
-
- thumb_func_start sub_80EDAD8
-sub_80EDAD8: @ 80EDAD8
- push {lr}
- ldrb r3, [r0, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r0, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- bl CalcCenterToCornerVec
- pop {r0}
- bx r0
- thumb_func_end sub_80EDAD8
-
- thumb_func_start sub_80EDAF0
-sub_80EDAF0: @ 80EDAF0
- push {r4-r7,lr}
- adds r7, r0, 0
- movs r5, 0
-_080EDAF6:
- movs r6, 0x1
- ands r6, r5
- lsls r1, r6, 1
- adds r1, r6
- lsls r1, 20
- lsrs r2, r5, 31
- adds r2, r5, r2
- asrs r2, 1
- lsls r2, 22
- movs r0, 0xC4
- lsls r0, 14
- adds r1, r0
- asrs r1, 16
- movs r0, 0x90
- lsls r0, 15
- adds r2, r0
- asrs r2, 16
- ldr r0, _080EDB68 @ =gUnknown_840BE4C
- movs r3, 0x8
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080EDB5C
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080EDB6C @ =gSprites
- adds r4, r0, r1
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- lsls r1, r5, 2
- adds r0, r7, 0
- adds r0, 0x28
- adds r2, r0, r1
- str r4, [r2]
- cmp r6, 0
- beq _080EDB56
- ldrb r0, [r4, 0x1]
- movs r1, 0x3F
- ands r1, r0
- movs r0, 0x80
- orrs r1, r0
- strb r1, [r4, 0x1]
-_080EDB56:
- ldr r0, [r2]
- bl sub_80EDAD8
-_080EDB5C:
- adds r5, 0x1
- cmp r5, 0x3
- ble _080EDAF6
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDB68: .4byte gUnknown_840BE4C
-_080EDB6C: .4byte gSprites
- thumb_func_end sub_80EDAF0
-
- thumb_func_start sub_80EDB70
-sub_80EDB70: @ 80EDB70
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, [r4, 0x18]
- ldrh r0, [r1, 0x24]
- ldrh r2, [r1, 0x20]
- adds r0, r2
- strh r0, [r1, 0x20]
- ldr r1, [r4, 0x18]
- ldrh r0, [r1, 0x26]
- ldrh r2, [r1, 0x22]
- adds r0, r2
- strh r0, [r1, 0x22]
- ldr r0, [r4, 0x18]
- movs r1, 0
- movs r2, 0x2A
- bl sub_8007FFC
- ldr r0, [r4, 0x18]
- ldr r1, _080EDBA4 @ =SpriteCallbackDummy
- str r1, [r0, 0x1C]
- movs r1, 0x1
- bl StartSpriteAffineAnim
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDBA4: .4byte SpriteCallbackDummy
- thumb_func_end sub_80EDB70
-
- thumb_func_start nullsub_83
-nullsub_83: @ 80EDBA8
- bx lr
- thumb_func_end nullsub_83
-
- thumb_func_start sub_80EDBAC
-sub_80EDBAC: @ 80EDBAC
- push {r4-r7,lr}
- adds r7, r0, 0
- movs r6, 0
- ldr r5, _080EDBE0 @ =gUnknown_840BBB8
-_080EDBB4:
- lsls r0, r6, 2
- adds r4, r7, 0
- adds r4, 0x28
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, [r4]
- ldr r1, _080EDBE4 @ =nullsub_83
- str r1, [r0, 0x1C]
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- bl sub_8007FFC
- adds r5, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _080EDBB4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDBE0: .4byte gUnknown_840BBB8
-_080EDBE4: .4byte nullsub_83
- thumb_func_end sub_80EDBAC
-
- thumb_func_start sub_80EDBE8
-sub_80EDBE8: @ 80EDBE8
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _080EDBF8
- cmp r0, 0x1
- beq _080EDC0C
- b _080EDC34
-_080EDBF8:
- movs r2, 0x80
- lsls r2, 3
- movs r0, 0
- movs r1, 0
- bl FillPalette
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _080EDC34
-_080EDC0C:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _080EDC34
- ldrb r0, [r4, 0x5]
- bl DestroyTask
- adds r0, r4, 0
- bl Free
- movs r0, 0x2
- bl DisableInterrupts
- movs r0, 0
- bl SetHBlankCallback
- ldr r0, _080EDC3C @ =CB2_InitTitleScreen
- bl SetMainCallback2
-_080EDC34:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDC3C: .4byte CB2_InitTitleScreen
- thumb_func_end sub_80EDBE8
-
- thumb_func_start sub_80EDC40
-sub_80EDC40: @ 80EDC40
- push {r4-r6,lr}
- movs r5, 0
- ldr r4, _080EDCE4 @ =gUnknown_840BBC0
-_080EDC46:
- adds r0, r4, 0
- bl LoadCompressedObjectPic
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, 0x4
- bls _080EDC46
- ldr r0, _080EDCE8 @ =gUnknown_840BBE8
- bl LoadSpritePalettes
- ldr r6, _080EDCEC @ =gUnknown_203AB0E
- movs r0, 0x60
- strh r0, [r6]
- ldr r5, _080EDCF0 @ =gUnknown_203AB10
- movs r0, 0x10
- strh r0, [r5]
- ldr r1, _080EDCF4 @ =gUnknown_203AB12
- movs r0, 0x7
- strh r0, [r1]
- ldr r0, _080EDCF8 @ =gUnknown_203AB14
- movs r2, 0x5
- strh r2, [r0]
- ldr r1, _080EDCFC @ =gUnknown_203AB16
- movs r0, 0x8
- strh r0, [r1]
- ldr r1, _080EDD00 @ =gUnknown_203AB18
- movs r0, 0x5A
- strh r0, [r1]
- ldr r1, _080EDD04 @ =gUnknown_203AB1A
- movs r0, 0x78
- strh r0, [r1]
- ldr r0, _080EDD08 @ =gUnknown_203AB1E
- movs r1, 0x1
- strh r1, [r0]
- ldr r0, _080EDD0C @ =gUnknown_203AB20
- strh r1, [r0]
- ldr r0, _080EDD10 @ =gUnknown_203AB22
- strh r2, [r0]
- ldr r0, _080EDD14 @ =gUnknown_203AB24
- strh r2, [r0]
- ldr r4, _080EDD18 @ =gUnknown_203AB28
- ldr r0, [r4]
- cmp r0, 0
- bne _080EDCA2
- ldr r0, _080EDD1C @ =0x151b9245
- str r0, [r4]
-_080EDCA2:
- ldr r0, _080EDD20 @ =gUnknown_840BC6C
- movs r1, 0xF8
- movs r2, 0x37
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080EDCDE
- ldr r0, _080EDD24 @ =gSprites
- lsls r3, r1, 4
- adds r3, r1
- lsls r3, 2
- adds r2, r3, r0
- movs r1, 0xF8
- lsls r1, 4
- strh r1, [r2, 0x2E]
- movs r1, 0xDC
- lsls r1, 2
- strh r1, [r2, 0x30]
- ldrh r1, [r6]
- strh r1, [r2, 0x32]
- ldrh r1, [r5]
- strh r1, [r2, 0x34]
- adds r0, r3
- adds r0, 0x3A
- ldr r1, [r4]
- bl StoreWordInTwoHalfwords
-_080EDCDE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDCE4: .4byte gUnknown_840BBC0
-_080EDCE8: .4byte gUnknown_840BBE8
-_080EDCEC: .4byte gUnknown_203AB0E
-_080EDCF0: .4byte gUnknown_203AB10
-_080EDCF4: .4byte gUnknown_203AB12
-_080EDCF8: .4byte gUnknown_203AB14
-_080EDCFC: .4byte gUnknown_203AB16
-_080EDD00: .4byte gUnknown_203AB18
-_080EDD04: .4byte gUnknown_203AB1A
-_080EDD08: .4byte gUnknown_203AB1E
-_080EDD0C: .4byte gUnknown_203AB20
-_080EDD10: .4byte gUnknown_203AB22
-_080EDD14: .4byte gUnknown_203AB24
-_080EDD18: .4byte gUnknown_203AB28
-_080EDD1C: .4byte 0x151b9245
-_080EDD20: .4byte gUnknown_840BC6C
-_080EDD24: .4byte gSprites
- thumb_func_end sub_80EDC40
-
- thumb_func_start sub_80EDD28
-sub_80EDD28: @ 80EDD28
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r3, r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r0, _080EDDCC @ =gUnknown_203AB12
- ldrh r0, [r0]
- ands r2, r0
- adds r2, 0x2
- lsls r2, 16
- lsrs r4, r2, 16
- ldr r1, _080EDDD0 @ =gUnknown_203AB2C
- ldrh r0, [r1]
- adds r2, r0, 0
- adds r0, r2, 0x1
- strh r0, [r1]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080EDD5C
- movs r6, 0x3
- negs r6, r6
- adds r0, r6, 0
- strh r0, [r1]
-_080EDD5C:
- lsls r1, r5, 16
- asrs r1, 16
- lsls r0, r4, 16
- asrs r7, r0, 16
- adds r1, r7
- lsls r0, r3, 16
- asrs r0, 16
- lsls r2, 16
- asrs r6, r2, 16
- adds r0, r6
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- asrs r4, r1, 16
- ldr r0, _080EDDD4 @ =0xffff0000
- adds r1, r0
- lsrs r1, 16
- cmp r1, 0xEE
- bhi _080EDDC6
- ldr r0, _080EDDD8 @ =gUnknown_840BC84
- lsls r1, r3, 16
- asrs r5, r1, 16
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080EDDC6
- ldr r0, _080EDDDC @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldr r0, _080EDDE0 @ =gUnknown_203AB22
- ldrh r0, [r0]
- lsls r4, r0
- strh r4, [r1, 0x2E]
- ldr r2, _080EDDE4 @ =gUnknown_203AB24
- adds r0, r5, 0
- ldrh r2, [r2]
- lsls r0, r2
- strh r0, [r1, 0x30]
- ldr r0, _080EDDE8 @ =gUnknown_203AB1E
- ldrh r0, [r0]
- muls r0, r7
- strh r0, [r1, 0x32]
- ldr r0, _080EDDEC @ =gUnknown_203AB20
- ldrh r0, [r0]
- muls r0, r6
- strh r0, [r1, 0x34]
-_080EDDC6:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDDCC: .4byte gUnknown_203AB12
-_080EDDD0: .4byte gUnknown_203AB2C
-_080EDDD4: .4byte 0xffff0000
-_080EDDD8: .4byte gUnknown_840BC84
-_080EDDDC: .4byte gSprites
-_080EDDE0: .4byte gUnknown_203AB22
-_080EDDE4: .4byte gUnknown_203AB24
-_080EDDE8: .4byte gUnknown_203AB1E
-_080EDDEC: .4byte gUnknown_203AB20
- thumb_func_end sub_80EDD28
-
- thumb_func_start sub_80EDDF0
-sub_80EDDF0: @ 80EDDF0
- push {lr}
- ldr r0, _080EDE00 @ =sub_80EDE04
- movs r1, 0x1
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080EDE00: .4byte sub_80EDE04
- thumb_func_end sub_80EDDF0
-
- thumb_func_start sub_80EDE04
-sub_80EDE04: @ 80EDE04
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- ldr r1, _080EDEB0 @ =gTasks+0x8
- adds r0, r1
- mov r8, r0
- ldrh r1, [r0, 0x4]
- adds r1, 0x1
- strh r1, [r0, 0x4]
- ldrh r0, [r0, 0x6]
- adds r0, 0x1
- mov r2, r8
- strh r0, [r2, 0x6]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x6
- ble _080EDECA
- movs r0, 0
- strh r0, [r2, 0x4]
- ldrb r6, [r2]
- ldr r0, _080EDEB4 @ =gUnknown_840BC84
- ldr r1, _080EDEB8 @ =gUnknown_840BC08
- lsls r6, 2
- adds r6, r1
- movs r3, 0
- ldrsh r1, [r6, r3]
- movs r3, 0x2
- ldrsh r2, [r6, r3]
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r5, _080EDEBC @ =gSprites
- adds r7, r4, r5
- adds r0, r7, 0
- movs r1, 0x1
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _080EDEC0 @ =sub_80EE40C
- str r0, [r4]
- ldrh r0, [r6, 0x2]
- lsls r0, 4
- strh r0, [r7, 0x30]
- movs r0, 0x78
- strh r0, [r7, 0x32]
- mov r1, r8
- ldrh r0, [r1, 0x2]
- strh r0, [r7, 0x34]
- lsls r0, 16
- cmp r0, 0
- bge _080EDE88
- movs r0, 0x1
- strh r0, [r7, 0x34]
-_080EDE88:
- mov r2, r8
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- bls _080EDECA
- ldrh r0, [r2, 0x2]
- adds r0, 0x1
- strh r0, [r2, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080EDEC4
- mov r0, r9
- bl DestroyTask
- b _080EDECA
- .align 2, 0
-_080EDEB0: .4byte gTasks+0x8
-_080EDEB4: .4byte gUnknown_840BC84
-_080EDEB8: .4byte gUnknown_840BC08
-_080EDEBC: .4byte gSprites
-_080EDEC0: .4byte sub_80EE40C
-_080EDEC4:
- movs r0, 0
- mov r3, r8
- strh r0, [r3]
-_080EDECA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80EDE04
-
- thumb_func_start sub_80EDED8
-sub_80EDED8: @ 80EDED8
- push {lr}
- ldr r0, _080EDEE8 @ =sub_80EDEEC
- movs r1, 0x2
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080EDEE8: .4byte sub_80EDEEC
- thumb_func_end sub_80EDED8
-
- thumb_func_start sub_80EDEEC
-sub_80EDEEC: @ 80EDEEC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080EDF5C @ =gTasks+0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080EDF44
- ldrh r1, [r4, 0x2]
- ldrb r2, [r4, 0x2]
- adds r0, r1, 0x4
- strh r0, [r4, 0x2]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- bls _080EDF1A
- subs r0, r1, 0x5
- strh r0, [r4, 0x2]
-_080EDF1A:
- ldr r0, _080EDF60 @ =gUnknown_840BCBC
- ldr r1, _080EDF64 @ =gUnknown_840BC08
- lsls r2, 2
- adds r2, r1
- movs r3, 0
- ldrsh r1, [r2, r3]
- movs r3, 0x2
- ldrsh r2, [r2, r3]
- movs r3, 0x3
- bl CreateSprite
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080EDF44
- adds r0, r5, 0
- bl DestroyTask
-_080EDF44:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- ble _080EDF56
- movs r0, 0
- strh r0, [r4]
-_080EDF56:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDF5C: .4byte gTasks+0x8
-_080EDF60: .4byte gUnknown_840BCBC
-_080EDF64: .4byte gUnknown_840BC08
- thumb_func_end sub_80EDEEC
-
- thumb_func_start sub_80EDF68
-sub_80EDF68: @ 80EDF68
- push {lr}
- ldr r0, _080EDF8C @ =gUnknown_840BCDC
- movs r1, 0x78
- movs r2, 0x46
- movs r3, 0x4
- bl CreateSprite
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080EDF90 @ =gSprites
- adds r0, r1
- pop {r1}
- bx r1
- .align 2, 0
-_080EDF8C: .4byte gUnknown_840BCDC
-_080EDF90: .4byte gSprites
- thumb_func_end sub_80EDF68
-
- thumb_func_start sub_80EDF94
-sub_80EDF94: @ 80EDF94
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0
- strb r0, [r4, 0x6]
- ldr r0, _080EDFD0 @ =sub_80EE024
- movs r1, 0x4
- bl CreateTask
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r5, 0
- movs r1, 0x5
- adds r2, r4, 0
- bl SetWordTaskArg
- ldr r0, _080EDFD4 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- movs r0, 0x40
- strh r0, [r4, 0xE]
- movs r0, 0
- bl GetBgX
- strh r0, [r4, 0x10]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EDFD0: .4byte sub_80EE024
-_080EDFD4: .4byte gTasks
- thumb_func_end sub_80EDF94
-
- thumb_func_start sub_80EDFD8
-sub_80EDFD8: @ 80EDFD8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- mov r8, r3
- lsls r4, 15
- movs r0, 0xF8
- lsls r0, 9
- adds r4, r0
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0
- mov r1, r8
- movs r2, 0
- bl ChangeBgX
- lsls r5, 8
- movs r0, 0
- adds r1, r5, 0
- movs r2, 0x2
- bl ChangeBgX
- lsls r6, 8
- movs r0, 0
- adds r1, r6, 0
- movs r2, 0x2
- bl ChangeBgY
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80EDFD8
-
- thumb_func_start sub_80EE024
-sub_80EE024: @ 80EE024
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080EE048 @ =gTasks+0x8
- adds r5, r0, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0x5
- bhi _080EE11C
- lsls r0, 2
- ldr r1, _080EE04C @ =_080EE050
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080EE048: .4byte gTasks+0x8
-_080EE04C: .4byte _080EE050
- .align 2, 0
-_080EE050:
- .4byte _080EE068
- .4byte _080EE07A
- .4byte _080EE094
- .4byte _080EE0BC
- .4byte _080EE0EE
- .4byte _080EE114
-_080EE068:
- movs r0, 0x2
- strh r0, [r5, 0xE]
- movs r0, 0
- strh r0, [r5, 0x2]
- movs r0, 0x6
- strh r0, [r5, 0x10]
- movs r0, 0x20
- strh r0, [r5, 0x12]
- b _080EE10C
-_080EE07A:
- ldrh r0, [r5, 0x6]
- subs r0, 0x2
- strh r0, [r5, 0x6]
- ldrh r0, [r5, 0x2]
- adds r0, 0x1
- strh r0, [r5, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _080EE11C
- movs r0, 0
- strh r0, [r5, 0x2]
- b _080EE10C
-_080EE094:
- ldrh r0, [r5, 0x2]
- adds r0, 0x1
- strh r0, [r5, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xE
- bne _080EE0AE
- adds r0, r2, 0
- movs r1, 0x5
- bl GetWordTaskArg
- movs r1, 0x1
- strb r1, [r0, 0x6]
-_080EE0AE:
- movs r2, 0x2
- ldrsh r0, [r5, r2]
- cmp r0, 0xF
- ble _080EE11C
- movs r0, 0
- strh r0, [r5, 0x2]
- b _080EE10C
-_080EE0BC:
- ldrh r0, [r5, 0x6]
- adds r0, 0x8
- strh r0, [r5, 0x6]
- ldrh r0, [r5, 0x2]
- adds r0, 0x1
- strh r0, [r5, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080EE0E0
- bl sub_80EE160
- movs r0, 0x20
- strh r0, [r5, 0x10]
- movs r0, 0x30
- strh r0, [r5, 0x12]
- movs r0, 0x3
- strh r0, [r5, 0xE]
-_080EE0E0:
- movs r3, 0x2
- ldrsh r0, [r5, r3]
- cmp r0, 0x7
- ble _080EE11C
- movs r0, 0
- strh r0, [r5, 0x2]
- b _080EE10C
-_080EE0EE:
- ldrh r0, [r5, 0x6]
- subs r0, 0x8
- strh r0, [r5, 0x6]
- ldrh r0, [r5, 0x2]
- adds r0, 0x1
- strh r0, [r5, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080EE11C
- movs r1, 0
- strh r1, [r5, 0xE]
- movs r0, 0x40
- strh r0, [r5, 0x6]
- strh r1, [r5, 0x2]
-_080EE10C:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- b _080EE11C
-_080EE114:
- adds r0, r2, 0
- bl DestroyTask
- b _080EE156
-_080EE11C:
- movs r4, 0x6
- ldrsh r3, [r5, r4]
- ldr r4, _080EE15C @ =gSineTable
- adds r0, r3, 0
- adds r0, 0x40
- lsls r0, 1
- adds r0, r4
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r2, 0x12
- ldrsh r0, [r5, r2]
- muls r1, r0
- asrs r1, 8
- negs r1, r1
- movs r0, 0x10
- ldrsh r2, [r5, r0]
- lsls r3, 1
- adds r3, r4
- movs r4, 0
- ldrsh r0, [r3, r4]
- muls r0, r2
- asrs r0, 8
- subs r2, r0
- movs r3, 0xE
- ldrsh r0, [r5, r3]
- movs r4, 0x8
- ldrsh r3, [r5, r4]
- bl sub_80EDFD8
-_080EE156:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE15C: .4byte gSineTable
- thumb_func_end sub_80EE024
-
- thumb_func_start sub_80EE160
-sub_80EE160: @ 80EE160
- push {r4,lr}
- ldr r4, _080EE1BC @ =gUnknown_840BE8C
- adds r0, r4, 0
- movs r1, 0x84
- movs r2, 0x4E
- movs r3, 0x6
- bl CreateSprite
- adds r0, r4, 0
- movs r1, 0x84
- movs r2, 0x76
- movs r3, 0x6
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080EE1B4
- ldr r0, _080EE1C0 @ =gSprites
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- adds r4, r0
- ldrb r2, [r4, 0x1]
- movs r1, 0x3F
- adds r0, r1, 0
- ands r0, r2
- movs r2, 0x40
- orrs r0, r2
- strb r0, [r4, 0x1]
- ldrb r0, [r4, 0x3]
- ands r1, r0
- movs r0, 0x80
- orrs r1, r0
- strb r1, [r4, 0x3]
- adds r0, r4, 0
- bl sub_80EDAD8
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080EE1B4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE1BC: .4byte gUnknown_840BE8C
-_080EE1C0: .4byte gSprites
- thumb_func_end sub_80EE160
-
- thumb_func_start sub_80EE1C4
-sub_80EE1C4: @ 80EE1C4
- push {lr}
- adds r3, r0, 0
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- adds r0, r3, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080EE1FA
- adds r0, r3, 0
- bl DestroySprite
-_080EE1FA:
- pop {r0}
- bx r0
- thumb_func_end sub_80EE1C4
-
- thumb_func_start sub_80EE200
-sub_80EE200: @ 80EE200
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080EE220 @ =gTasks+0x8
- adds r1, r0, r1
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _080EE224
- cmp r0, 0x1
- beq _080EE232
- b _080EE28A
- .align 2, 0
-_080EE220: .4byte gTasks+0x8
-_080EE224:
- movs r3, 0x80
- lsls r3, 3
- adds r0, r3, 0
- strh r0, [r1, 0x2]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080EE232:
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x27
- ble _080EE250
- ldrh r2, [r1, 0x2]
- movs r3, 0x2
- ldrsh r0, [r1, r3]
- cmp r0, 0x10
- ble _080EE250
- adds r0, r2, 0
- subs r0, 0x10
- strh r0, [r1, 0x2]
-_080EE250:
- movs r0, 0x2
- ldrsh r1, [r1, r0]
- movs r0, 0
- movs r2, 0x1
- bl ChangeBgX
- ldr r5, _080EE290 @ =gUnknown_203AB30
- str r0, [r5]
- ldr r1, _080EE294 @ =0x00007fff
- cmp r0, r1
- bls _080EE270
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl ClearGpuRegBits
-_080EE270:
- ldr r1, [r5]
- ldr r0, _080EE298 @ =0x0000eeff
- cmp r1, r0
- bls _080EE28A
- movs r1, 0xEF
- lsls r1, 8
- movs r0, 0
- movs r2, 0
- bl ChangeBgX
- adds r0, r4, 0
- bl DestroyTask
-_080EE28A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE290: .4byte gUnknown_203AB30
-_080EE294: .4byte 0x00007fff
-_080EE298: .4byte 0x0000eeff
- thumb_func_end sub_80EE200
-
- thumb_func_start sub_80EE29C
-sub_80EE29C: @ 80EE29C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r2, [r5, 0x2E]
- ldrh r0, [r5, 0x32]
- subs r2, r0
- strh r2, [r5, 0x2E]
- ldrh r1, [r5, 0x34]
- ldrh r0, [r5, 0x30]
- adds r1, r0
- strh r1, [r5, 0x30]
- ldrh r0, [r5, 0x36]
- adds r0, 0x30
- strh r0, [r5, 0x36]
- lsls r2, 16
- asrs r2, 20
- strh r2, [r5, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r5, 0x22]
- ldr r1, _080EE340 @ =gSineTable
- lsls r0, 16
- asrs r0, 20
- adds r0, 0x40
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 21
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x38]
- adds r0, 0x1
- strh r0, [r5, 0x38]
- movs r1, 0x38
- ldrsh r0, [r5, r1]
- ldr r1, _080EE344 @ =gUnknown_203AB16
- ldrh r1, [r1]
- bl __modsi3
- cmp r0, 0
- beq _080EE324
- adds r4, r5, 0
- adds r4, 0x3A
- adds r0, r4, 0
- mov r1, sp
- bl LoadWordFromTwoHalfwords
- ldr r1, [sp]
- ldr r0, _080EE348 @ =0x41c64e6d
- muls r1, r0
- ldr r3, _080EE34C @ =0x00006073
- adds r1, r3
- str r1, [sp]
- adds r0, r4, 0
- bl StoreWordInTwoHalfwords
- ldr r2, [sp]
- lsrs r2, 16
- str r2, [sp]
- movs r1, 0x20
- ldrsh r0, [r5, r1]
- ldrh r1, [r5, 0x26]
- ldrh r3, [r5, 0x22]
- adds r1, r3
- lsls r1, 16
- asrs r1, 16
- bl sub_80EDD28
-_080EE324:
- movs r0, 0x20
- ldrsh r1, [r5, r0]
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- bge _080EE336
- adds r0, r5, 0
- bl DestroySprite
-_080EE336:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE340: .4byte gSineTable
-_080EE344: .4byte gUnknown_203AB16
-_080EE348: .4byte 0x41c64e6d
-_080EE34C: .4byte 0x00006073
- thumb_func_end sub_80EE29C
-
- thumb_func_start sub_80EE350
-sub_80EE350: @ 80EE350
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- ldrh r1, [r4, 0x2E]
- adds r0, r1
- strh r0, [r4, 0x2E]
- ldrh r2, [r4, 0x34]
- ldrh r1, [r4, 0x30]
- adds r0, r2, r1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x36]
- adds r1, 0x1
- strh r1, [r4, 0x36]
- ldrh r0, [r4, 0x38]
- adds r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- ldrh r0, [r4, 0x2E]
- ldr r1, _080EE3F8 @ =gUnknown_203AB22
- ldrh r1, [r1]
- asrs r0, r1
- strh r0, [r4, 0x20]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- ldr r1, _080EE3FC @ =gUnknown_203AB24
- ldrh r1, [r1]
- asrs r0, r1
- strh r0, [r4, 0x22]
- ldr r1, _080EE400 @ =gUnknown_203AB1C
- ldrh r0, [r1]
- cmp r0, 0
- beq _080EE3A4
- lsls r0, r2, 16
- cmp r0, 0
- bge _080EE3A4
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- ldrh r1, [r1]
- asrs r0, r1
- strh r0, [r4, 0x26]
-_080EE3A4:
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- ldr r0, _080EE404 @ =gUnknown_203AB18
- ldrh r0, [r0]
- cmp r1, r0
- ble _080EE3DC
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- ldr r0, _080EE408 @ =gUnknown_203AB1A
- ldrh r0, [r0]
- cmp r1, r0
- ble _080EE3DC
- adds r0, r4, 0
- bl DestroySprite
-_080EE3DC:
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- cmp r0, 0xA0
- bls _080EE3F0
- adds r0, r4, 0
- bl DestroySprite
-_080EE3F0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE3F8: .4byte gUnknown_203AB22
-_080EE3FC: .4byte gUnknown_203AB24
-_080EE400: .4byte gUnknown_203AB1C
-_080EE404: .4byte gUnknown_203AB18
-_080EE408: .4byte gUnknown_203AB1A
- thumb_func_end sub_80EE350
-
- thumb_func_start sub_80EE40C
-sub_80EE40C: @ 80EE40C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x32]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080EE490
- subs r0, r1, 0x1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x22]
- cmp r0, 0x56
- ble _080EE438
- movs r0, 0x4A
- strh r0, [r4, 0x22]
- movs r0, 0x94
- lsls r0, 3
- strh r0, [r4, 0x30]
-_080EE438:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080EE4D4
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080EE46C
- ldrh r0, [r4, 0x20]
- adds r1, r0, 0
- adds r1, 0x1A
- strh r1, [r4, 0x20]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xBC
- ble _080EE486
- movs r2, 0xBC
- lsls r2, 1
- adds r0, r2, 0
- subs r0, r1
- strh r0, [r4, 0x20]
- movs r0, 0x1
- b _080EE484
-_080EE46C:
- ldrh r0, [r4, 0x20]
- adds r1, r0, 0
- subs r1, 0x1A
- strh r1, [r4, 0x20]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x33
- bgt _080EE486
- movs r0, 0x68
- subs r0, r1
- strh r0, [r4, 0x20]
- movs r0, 0
-_080EE484:
- strh r0, [r4, 0x2E]
-_080EE486:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- b _080EE4D4
-_080EE490:
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080EE49E
- adds r0, r4, 0
- bl DestroySprite
-_080EE49E:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080EE4B4
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
-_080EE4B4:
- ldrh r0, [r4, 0x30]
- adds r0, 0x4
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x32
- ble _080EE4D4
- adds r0, r4, 0
- bl DestroySprite
-_080EE4D4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80EE40C
-
- thumb_func_start sub_80EE4DC
-sub_80EE4DC: @ 80EE4DC
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080EE4F2
- adds r0, r2, 0
- bl DestroySprite
-_080EE4F2:
- pop {r0}
- bx r0
- thumb_func_end sub_80EE4DC
-
- thumb_func_start sub_80EE4F8
-sub_80EE4F8: @ 80EE4F8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080EE520 @ =gUnknown_840BD88
- movs r1, 0
- movs r2, 0
- movs r3, 0x9
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _080EE524 @ =gSprites
- adds r1, r0
- str r1, [r4, 0x18]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE520: .4byte gUnknown_840BD88
-_080EE524: .4byte gSprites
- thumb_func_end sub_80EE4F8
-
- thumb_func_start sub_80EE528
-sub_80EE528: @ 80EE528
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- adds r4, r0, 0
- adds r0, r2, 0
- adds r5, r3, 0
- lsls r1, 16
- lsls r0, 16
- lsls r5, 16
- lsrs r5, 16
- lsrs r2, r1, 16
- mov r9, r2
- asrs r1, 16
- lsls r2, r1, 4
- movs r3, 0
- mov r8, r3
- strh r2, [r4, 0x2E]
- lsrs r6, r0, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 4
- adds r1, r5, 0
- bl __divsi3
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x32]
- strh r6, [r4, 0x34]
- mov r0, r8
- strh r0, [r4, 0x36]
- mov r2, r9
- strh r2, [r4, 0x20]
- movs r0, 0x64
- strh r0, [r4, 0x22]
- ldr r0, _080EE57C @ =sub_80EE580
- str r0, [r4, 0x1C]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE57C: .4byte sub_80EE580
- thumb_func_end sub_80EE528
-
- thumb_func_start sub_80EE580
-sub_80EE580: @ 80EE580
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x36]
- adds r0, 0x1
- strh r0, [r2, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x27
- ble _080EE5A0
- ldrh r1, [r2, 0x30]
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- cmp r0, 0x1
- ble _080EE5A0
- subs r0, r1, 0x1
- strh r0, [r2, 0x30]
-_080EE5A0:
- ldrh r0, [r2, 0x30]
- ldrh r4, [r2, 0x2E]
- adds r0, r4
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x20]
- ldrh r3, [r2, 0x34]
- movs r4, 0x34
- ldrsh r1, [r2, r4]
- cmp r0, r1
- blt _080EE5BE
- strh r3, [r2, 0x20]
- ldr r0, _080EE5C4 @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_080EE5BE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE5C4: .4byte SpriteCallbackDummy
- thumb_func_end sub_80EE580
-
- thumb_func_start sub_80EE5C8
-sub_80EE5C8: @ 80EE5C8
- push {lr}
- movs r2, 0
- ldr r0, [r0, 0x18]
- ldr r1, [r0, 0x1C]
- ldr r0, _080EE5E0 @ =sub_80EE580
- cmp r1, r0
- bne _080EE5D8
- movs r2, 0x1
-_080EE5D8:
- adds r0, r2, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080EE5E0: .4byte sub_80EE580
- thumb_func_end sub_80EE5C8
-
- thumb_func_start sub_80EE5E4
-sub_80EE5E4: @ 80EE5E4
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x18]
- movs r1, 0x2
- bl StartSpriteAnim
- ldr r0, [r4, 0x18]
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldr r0, [r4, 0x18]
- strh r1, [r0, 0x30]
- ldr r1, [r4, 0x18]
- movs r0, 0x3
- strh r0, [r1, 0x26]
- ldr r1, [r4, 0x18]
- ldr r0, _080EE60C @ =sub_80EE610
- str r0, [r1, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE60C: .4byte sub_80EE610
- thumb_func_end sub_80EE5E4
-
- thumb_func_start sub_80EE610
-sub_80EE610: @ 80EE610
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _080EE646
- cmp r5, 0x1
- bgt _080EE626
- cmp r5, 0
- beq _080EE62C
- b _080EE69A
-_080EE626:
- cmp r5, 0x2
- beq _080EE65C
- b _080EE69A
-_080EE62C:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080EE69A
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- strh r5, [r4, 0x26]
- b _080EE654
-_080EE646:
- movs r0, 0x21
- movs r1, 0x3F
- movs r2, 0x1
- bl PlayCry3
- movs r0, 0
- strh r0, [r4, 0x30]
-_080EE654:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080EE69A
-_080EE65C:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080EE67C
- movs r0, 0
- strh r0, [r4, 0x32]
- movs r1, 0
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080EE67A
- movs r1, 0x1
-_080EE67A:
- strh r1, [r4, 0x26]
-_080EE67C:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x30
- ble _080EE69A
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
- movs r0, 0
- strh r0, [r4, 0x26]
- ldr r0, _080EE6A0 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_080EE69A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE6A0: .4byte SpriteCallbackDummy
- thumb_func_end sub_80EE610
-
- thumb_func_start sub_80EE6A4
-sub_80EE6A4: @ 80EE6A4
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080EE6F0 @ =gUnknown_203AB0A
- movs r0, 0x10
- strh r0, [r1]
- ldr r1, _080EE6F4 @ =gUnknown_203AB04
- movs r0, 0x3
- strh r0, [r1]
- ldr r1, _080EE6F8 @ =gUnknown_203AB08
- movs r0, 0x5
- strh r0, [r1]
- ldr r1, _080EE6FC @ =gUnknown_203AB06
- movs r0, 0
- strh r0, [r1]
- ldr r0, [r4, 0x18]
- movs r1, 0x2
- bl StartSpriteAnim
- ldr r0, [r4, 0x18]
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldr r0, [r4, 0x18]
- strh r1, [r0, 0x30]
- ldr r0, [r4, 0x18]
- strh r1, [r0, 0x32]
- ldr r0, [r4, 0x18]
- strh r1, [r0, 0x34]
- ldr r0, [r4, 0x18]
- strh r1, [r0, 0x36]
- ldr r1, [r4, 0x18]
- movs r0, 0x28
- strh r0, [r1, 0x3C]
- ldr r1, [r4, 0x18]
- ldr r0, _080EE700 @ =sub_80EE704
- str r0, [r1, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE6F0: .4byte gUnknown_203AB0A
-_080EE6F4: .4byte gUnknown_203AB04
-_080EE6F8: .4byte gUnknown_203AB08
-_080EE6FC: .4byte gUnknown_203AB06
-_080EE700: .4byte sub_80EE704
- thumb_func_end sub_80EE6A4
-
- thumb_func_start sub_80EE704
-sub_80EE704: @ 80EE704
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080EE740
- cmp r0, 0x1
- bgt _080EE71A
- cmp r0, 0
- beq _080EE726
- b _080EE846
-_080EE71A:
- cmp r0, 0x2
- beq _080EE7C4
- cmp r0, 0x3
- bne _080EE724
- b _080EE824
-_080EE724:
- b _080EE846
-_080EE726:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bgt _080EE736
- b _080EE846
-_080EE736:
- adds r0, r4, 0
- movs r1, 0x3
- bl StartSpriteAnim
- b _080EE818
-_080EE740:
- ldrh r2, [r4, 0x3C]
- ldrh r3, [r4, 0x32]
- adds r1, r2, r3
- movs r5, 0
- strh r1, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- adds r0, 0x8
- strh r0, [r4, 0x34]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r4, 0x24]
- ldr r1, _080EE7B0 @ =gSineTable
- movs r3, 0x34
- ldrsh r0, [r4, r3]
- lsls r0, 1
- adds r0, r1
- movs r3, 0
- ldrsh r1, [r0, r3]
- ldr r0, _080EE7B4 @ =gUnknown_203AB04
- ldrh r0, [r0]
- muls r0, r1
- ldr r1, _080EE7B8 @ =gUnknown_203AB08
- ldrh r1, [r1]
- asrs r0, r1
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- ldr r0, _080EE7BC @ =gUnknown_203AB06
- ldrh r0, [r0]
- cmp r1, r0
- ble _080EE78C
- strh r5, [r4, 0x38]
- subs r0, r2, 0x1
- strh r0, [r4, 0x3C]
-_080EE78C:
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _080EE846
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
- strh r5, [r4, 0x30]
- ldr r0, _080EE7C0 @ =0x00004757
- strh r0, [r4, 0x3A]
- movs r0, 0x1C
- strh r0, [r4, 0x3C]
- b _080EE818
- .align 2, 0
-_080EE7B0: .4byte gSineTable
-_080EE7B4: .4byte gUnknown_203AB04
-_080EE7B8: .4byte gUnknown_203AB08
-_080EE7BC: .4byte gUnknown_203AB06
-_080EE7C0: .4byte 0x00004757
-_080EE7C4:
- ldrh r0, [r4, 0x3C]
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r1, r0, 20
- strh r1, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _080EE804
- ldrh r0, [r4, 0x20]
- adds r0, r1
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- movs r3, 0x3A
- ldrsh r2, [r4, r3]
- bl sub_80EE864
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- ldr r0, _080EE820 @ =0x41c64e6d
- muls r0, r1
- strh r0, [r4, 0x3A]
-_080EE804:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0xC
- ble _080EE846
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
- movs r0, 0
- strh r0, [r4, 0x30]
-_080EE818:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080EE846
- .align 2, 0
-_080EE820: .4byte 0x41c64e6d
-_080EE824:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080EE846
- ldr r0, _080EE84C @ =gUnknown_203AB0A
- ldrh r1, [r0]
- ldrh r2, [r4, 0x24]
- negs r2, r2
- lsls r2, 16
- asrs r2, 16
- adds r0, r4, 0
- movs r3, 0x4
- bl sub_80EE970
-_080EE846:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE84C: .4byte gUnknown_203AB0A
- thumb_func_end sub_80EE704
-
- thumb_func_start sub_80EE850
-sub_80EE850: @ 80EE850
- ldr r0, [r0, 0x18]
- ldr r1, [r0, 0x1C]
- ldr r0, _080EE860 @ =SpriteCallbackDummy
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- bx lr
- .align 2, 0
-_080EE860: .4byte SpriteCallbackDummy
- thumb_func_end sub_80EE850
-
- thumb_func_start sub_80EE864
-sub_80EE864: @ 80EE864
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r2, 16
- lsrs r5, r2, 16
- movs r6, 0
- lsls r0, 16
- ldr r2, _080EE8D4 @ =0xffea0000
- adds r2, r0
- mov r8, r2
- lsls r1, 16
- movs r0, 0xC0
- lsls r0, 13
- adds r7, r1, r0
-_080EE880:
- ldr r0, _080EE8D8 @ =gUnknown_840BEC4
- mov r2, r8
- asrs r1, r2, 16
- asrs r2, r7, 16
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080EE8C4
- ldr r0, _080EE8DC @ =gSprites
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- adds r4, r0
- lsls r5, 16
- asrs r5, 16
- adds r0, r5, 0
- movs r1, 0xD
- bl __modsi3
- adds r0, 0x8
- strh r0, [r4, 0x34]
- adds r0, r5, 0
- movs r1, 0x3
- bl __modsi3
- strh r0, [r4, 0x36]
- strh r6, [r4, 0x3C]
- ldr r0, _080EE8E0 @ =0x41c64e6d
- muls r0, r5
- lsls r0, 16
- lsrs r5, r0, 16
-_080EE8C4:
- adds r6, 0x1
- cmp r6, 0x1
- ble _080EE880
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE8D4: .4byte 0xffea0000
-_080EE8D8: .4byte gUnknown_840BEC4
-_080EE8DC: .4byte gSprites
-_080EE8E0: .4byte 0x41c64e6d
- thumb_func_end sub_80EE864
-
- thumb_func_start sub_80EE8E4
-sub_80EE8E4: @ 80EE8E4
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r5, 0
- adds r4, 0x2E
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080EE8FA
- cmp r0, 0x1
- beq _080EE90C
- b _080EE93E
-_080EE8FA:
- ldrh r0, [r5, 0x20]
- lsls r0, 4
- strh r0, [r4, 0x2]
- ldrh r0, [r5, 0x22]
- lsls r0, 4
- strh r0, [r4, 0x4]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
-_080EE90C:
- ldrh r1, [r4, 0x2]
- ldrh r0, [r4, 0x6]
- subs r1, r0
- strh r1, [r4, 0x2]
- ldrh r0, [r4, 0x8]
- ldrh r2, [r4, 0x4]
- adds r0, r2
- strh r0, [r4, 0x4]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r5, 0x20]
- ldrh r0, [r4, 0x4]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r5, 0x22]
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080EE93E
- adds r0, r5, 0
- bl DestroySprite
-_080EE93E:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080EE96A
- movs r0, 0
- strh r0, [r4, 0xE]
- adds r3, r5, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080EE96A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80EE8E4
-
- thumb_func_start sub_80EE970
-sub_80EE970: @ 80EE970
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r2, 0
- adds r6, r3, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 24
- lsrs r6, 24
- movs r1, 0
- mov r8, r1
- mov r1, r8
- strh r1, [r4, 0x2E]
- strh r5, [r4, 0x30]
- ldrh r1, [r4, 0x24]
- lsls r1, 4
- strh r1, [r4, 0x32]
- lsls r0, 16
- asrs r0, 12
- adds r1, r5, 0
- bl __divsi3
- strh r0, [r4, 0x34]
- mov r0, r8
- strh r0, [r4, 0x36]
- movs r0, 0x80
- lsls r0, 4
- adds r1, r5, 0
- bl __divsi3
- strh r0, [r4, 0x38]
- mov r1, r8
- strh r1, [r4, 0x3A]
- strh r6, [r4, 0x3C]
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
- ldr r0, _080EE9D0 @ =sub_80EE9D4
- str r0, [r4, 0x1C]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EE9D0: .4byte sub_80EE9D4
- thumb_func_end sub_80EE970
-
- thumb_func_start sub_80EE9D4
-sub_80EE9D4: @ 80EE9D4
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _080EEA08
- cmp r5, 0x1
- bgt _080EE9EA
- cmp r5, 0
- beq _080EE9F0
- b _080EEA88
-_080EE9EA:
- cmp r5, 0x2
- beq _080EEA6E
- b _080EEA88
-_080EE9F0:
- ldrh r0, [r4, 0x3A]
- adds r0, 0x1
- strh r0, [r4, 0x3A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080EEA88
- adds r0, r4, 0
- movs r1, 0x3
- bl StartSpriteAnim
- b _080EEA64
-_080EEA08:
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r5, r0, 16
- cmp r5, 0
- beq _080EEA4C
- ldrh r1, [r4, 0x34]
- ldrh r2, [r4, 0x32]
- adds r1, r2
- strh r1, [r4, 0x32]
- ldrh r0, [r4, 0x38]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r4, 0x24]
- ldr r1, _080EEA48 @ =gSineTable
- lsls r0, 16
- asrs r0, 20
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- asrs r0, r1
- negs r0, r0
- strh r0, [r4, 0x26]
- b _080EEA88
- .align 2, 0
-_080EEA48: .4byte gSineTable
-_080EEA4C:
- ldrh r0, [r4, 0x32]
- lsrs r0, 4
- strh r0, [r4, 0x24]
- strh r5, [r4, 0x26]
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- beq _080EEA84
-_080EEA64:
- strh r5, [r4, 0x3A]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080EEA88
-_080EEA6E:
- ldrh r0, [r4, 0x3A]
- adds r0, 0x1
- strh r0, [r4, 0x3A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080EEA88
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
-_080EEA84:
- ldr r0, _080EEA90 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_080EEA88:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EEA90: .4byte SpriteCallbackDummy
- thumb_func_end sub_80EE9D4
-
- thumb_func_start sub_80EEA94
-sub_80EEA94: @ 80EEA94
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x18]
- movs r2, 0
- strh r2, [r0, 0x2E]
- ldr r0, [r4, 0x18]
- strh r2, [r0, 0x30]
- ldr r0, [r4, 0x18]
- strh r2, [r0, 0x32]
- ldr r0, [r4, 0x18]
- strh r2, [r0, 0x34]
- ldr r0, [r4, 0x18]
- strh r2, [r0, 0x36]
- ldr r0, [r4, 0x18]
- strh r2, [r0, 0x38]
- ldr r1, [r4, 0x18]
- ldrh r0, [r1, 0x24]
- ldrh r3, [r1, 0x20]
- adds r0, r3
- strh r0, [r1, 0x20]
- ldr r0, [r4, 0x18]
- strh r2, [r0, 0x24]
- ldr r1, _080EEAF4 @ =gUnknown_203AB0C
- movs r0, 0x24
- strh r0, [r1]
- ldr r1, _080EEAF8 @ =gUnknown_203AB06
- movs r0, 0x28
- strh r0, [r1]
- ldr r1, _080EEAFC @ =gUnknown_203AB04
- movs r0, 0x3
- strh r0, [r1]
- ldr r1, _080EEB00 @ =gUnknown_203AB08
- movs r0, 0x4
- strh r0, [r1]
- ldr r1, [r4, 0x18]
- movs r0, 0x24
- strh r0, [r1, 0x3C]
- ldr r0, [r4, 0x18]
- movs r1, 0x2
- bl StartSpriteAnim
- ldr r1, [r4, 0x18]
- ldr r0, _080EEB04 @ =sub_80EEB08
- str r0, [r1, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EEAF4: .4byte gUnknown_203AB0C
-_080EEAF8: .4byte gUnknown_203AB06
-_080EEAFC: .4byte gUnknown_203AB04
-_080EEB00: .4byte gUnknown_203AB08
-_080EEB04: .4byte sub_80EEB08
- thumb_func_end sub_80EEA94
-
- thumb_func_start sub_80EEB08
-sub_80EEB08: @ 80EEB08
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080EEB58
- cmp r0, 0x1
- bgt _080EEB1E
- cmp r0, 0
- beq _080EEB24
- b _080EEBCE
-_080EEB1E:
- cmp r0, 0x2
- beq _080EEB84
- b _080EEBCE
-_080EEB24:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080EEB4A
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- ands r0, r1
- cmp r0, 0
- beq _080EEB44
- ldrh r0, [r4, 0x24]
- adds r0, 0x1
- b _080EEB48
-_080EEB44:
- ldrh r0, [r4, 0x24]
- subs r0, 0x1
-_080EEB48:
- strh r0, [r4, 0x24]
-_080EEB4A:
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- cmp r0, 0x11
- ble _080EEBCE
- movs r0, 0
- strh r0, [r4, 0x30]
- b _080EEB78
-_080EEB58:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- ldr r1, _080EEB80 @ =gUnknown_203AB06
- ldrh r1, [r1]
- cmp r0, r1
- blt _080EEBCE
- adds r0, r4, 0
- movs r1, 0x4
- bl StartSpriteAnim
- strh r5, [r4, 0x30]
- strh r5, [r4, 0x32]
-_080EEB78:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080EEBCE
- .align 2, 0
-_080EEB80: .4byte gUnknown_203AB06
-_080EEB84:
- ldrh r2, [r4, 0x3C]
- ldrh r1, [r4, 0x30]
- adds r0, r2, r1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 20
- negs r1, r0
- strh r1, [r4, 0x24]
- ldr r1, _080EEBD4 @ =gSineTable
- lsls r0, 1
- adds r0, r1
- movs r3, 0
- ldrsh r1, [r0, r3]
- ldr r0, _080EEBD8 @ =gUnknown_203AB04
- ldrh r0, [r0]
- muls r0, r1
- ldr r1, _080EEBDC @ =gUnknown_203AB08
- ldrh r1, [r1]
- asrs r0, r1
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _080EEBC0
- subs r0, r2, 0x1
- strh r0, [r4, 0x3C]
-_080EEBC0:
- ldrh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 20
- cmp r0, 0x3F
- ble _080EEBCE
- ldr r0, _080EEBE0 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_080EEBCE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EEBD4: .4byte gSineTable
-_080EEBD8: .4byte gUnknown_203AB04
-_080EEBDC: .4byte gUnknown_203AB08
-_080EEBE0: .4byte SpriteCallbackDummy
- thumb_func_end sub_80EEB08
-
- thumb_func_start sub_80EEBE4
-sub_80EEBE4: @ 80EEBE4
- push {r4,r5,lr}
- movs r5, 0
- ldr r4, _080EEC04 @ =gUnknown_840BEDC
-_080EEBEA:
- adds r0, r4, 0
- bl LoadCompressedObjectPic
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, 0x6
- bls _080EEBEA
- ldr r0, _080EEC08 @ =gUnknown_840BF14
- bl LoadSpritePalettes
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EEC04: .4byte gUnknown_840BEDC
-_080EEC08: .4byte gUnknown_840BF14
- thumb_func_end sub_80EEBE4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/item.s b/asm/item.s
deleted file mode 100644
index ce20d4f8c..000000000
--- a/asm/item.s
+++ /dev/null
@@ -1,1853 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start GetBagItemQuantity
-GetBagItemQuantity: @ 8099DA0
- adds r1, r0, 0
- ldr r0, _08099DB8 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r2, 0xF2
- lsls r2, 4
- adds r0, r2
- ldr r0, [r0]
- ldrh r1, [r1]
- eors r0, r1
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .align 2, 0
-_08099DB8: .4byte gSaveBlock2Ptr
- thumb_func_end GetBagItemQuantity
-
- thumb_func_start sub_8099DBC
-sub_8099DBC: @ 8099DBC
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _08099DD4 @ =gSaveBlock2Ptr
- ldr r2, [r2]
- movs r3, 0xF2
- lsls r3, 4
- adds r2, r3
- ldr r2, [r2]
- eors r1, r2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_08099DD4: .4byte gSaveBlock2Ptr
- thumb_func_end sub_8099DBC
-
- thumb_func_start GetBagItemId
-GetBagItemId: @ 8099DD8
- ldrh r0, [r0]
- bx lr
- thumb_func_end GetBagItemId
-
- thumb_func_start sub_8099DDC
-sub_8099DDC: @ 8099DDC
- strh r1, [r0]
- bx lr
- thumb_func_end sub_8099DDC
-
- thumb_func_start ApplyNewEncryptionKeyToBagItems
-ApplyNewEncryptionKeyToBagItems: @ 8099DE0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- mov r8, r0
- movs r1, 0
- ldr r0, _08099E34 @ =gBagPockets
- mov r9, r0
-_08099DF2:
- movs r6, 0
- lsls r5, r1, 3
- mov r2, r9
- adds r0, r5, r2
- adds r7, r1, 0x1
- ldrb r0, [r0, 0x4]
- cmp r6, r0
- bcs _08099E20
- ldr r2, _08099E34 @ =gBagPockets
-_08099E04:
- adds r4, r5, r2
- lsls r1, r6, 2
- ldr r0, [r4]
- adds r0, r1
- adds r0, 0x2
- mov r1, r8
- str r2, [sp]
- bl ApplyNewEncryptionKeyToHword
- adds r6, 0x1
- ldr r2, [sp]
- ldrb r4, [r4, 0x4]
- cmp r6, r4
- bcc _08099E04
-_08099E20:
- adds r1, r7, 0
- cmp r1, 0x4
- bls _08099DF2
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08099E34: .4byte gBagPockets
- thumb_func_end ApplyNewEncryptionKeyToBagItems
-
- thumb_func_start ApplyNewEncryptionKeyToBagItems_
-ApplyNewEncryptionKeyToBagItems_: @ 8099E38
- push {lr}
- bl ApplyNewEncryptionKeyToBagItems
- pop {r0}
- bx r0
- thumb_func_end ApplyNewEncryptionKeyToBagItems_
-
- thumb_func_start sub_8099E44
-sub_8099E44: @ 8099E44
- ldr r1, _08099E84 @ =gBagPockets
- ldr r0, _08099E88 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- movs r3, 0xC4
- lsls r3, 2
- adds r0, r2, r3
- str r0, [r1]
- movs r0, 0x2A
- strb r0, [r1, 0x4]
- adds r3, 0xA8
- adds r0, r2, r3
- str r0, [r1, 0x8]
- movs r0, 0x1E
- strb r0, [r1, 0xC]
- adds r3, 0x78
- adds r0, r2, r3
- str r0, [r1, 0x10]
- movs r0, 0xD
- strb r0, [r1, 0x14]
- adds r3, 0x34
- adds r0, r2, r3
- str r0, [r1, 0x18]
- movs r0, 0x3A
- strb r0, [r1, 0x1C]
- ldr r0, _08099E8C @ =0x0000054c
- adds r2, r0
- str r2, [r1, 0x20]
- adds r1, 0x24
- movs r0, 0x2B
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08099E84: .4byte gBagPockets
-_08099E88: .4byte gSaveBlock1Ptr
-_08099E8C: .4byte 0x0000054c
- thumb_func_end sub_8099E44
-
- thumb_func_start CopyItemName
-CopyItemName: @ 8099E90
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _08099EB8
- movs r0, 0x2B
- bl sub_809C8A0
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, _08099EB4 @ =gUnknown_84162BD
- adds r0, r4, 0
- bl StringAppend
- b _08099EC4
- .align 2, 0
-_08099EB4: .4byte gUnknown_84162BD
-_08099EB8:
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
-_08099EC4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end CopyItemName
-
- thumb_func_start sub_8099ECC
-sub_8099ECC: @ 8099ECC
- push {lr}
- lsls r0, 24
- movs r2, 0
- ldr r1, _08099EF0 @ =gBagPockets
- lsrs r0, 21
- adds r0, r1
- ldrb r1, [r0, 0x4]
- cmp r2, r1
- bcs _08099EFE
- ldr r3, [r0]
-_08099EE0:
- lsls r0, r2, 2
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, 0
- bne _08099EF4
- lsls r0, r2, 24
- asrs r0, 24
- b _08099F02
- .align 2, 0
-_08099EF0: .4byte gBagPockets
-_08099EF4:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r1
- bcc _08099EE0
-_08099EFE:
- movs r0, 0x1
- negs r0, r0
-_08099F02:
- pop {r1}
- bx r1
- thumb_func_end sub_8099ECC
-
- thumb_func_start sub_8099F08
-sub_8099F08: @ 8099F08
- push {lr}
- lsls r0, 24
- movs r2, 0
- ldr r1, _08099F2C @ =gBagPockets
- lsrs r0, 21
- subs r0, 0x8
- adds r0, r1
- ldrb r1, [r0, 0x4]
- cmp r2, r1
- bcs _08099F3A
- ldr r3, [r0]
-_08099F1E:
- lsls r0, r2, 2
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, 0
- beq _08099F30
- movs r0, 0x1
- b _08099F3C
- .align 2, 0
-_08099F2C: .4byte gBagPockets
-_08099F30:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r1
- bcc _08099F1E
-_08099F3A:
- movs r0, 0
-_08099F3C:
- pop {r1}
- bx r1
- thumb_func_end sub_8099F08
-
- thumb_func_start CheckBagHasItem
-CheckBagHasItem: @ 8099F40
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r5, r1, 16
- adds r0, r4, 0
- bl ItemId_GetPocket
- lsls r0, 24
- cmp r0, 0
- bne _08099F5C
- b _08099FA4
-_08099F58:
- movs r0, 0x1
- b _08099FA6
-_08099F5C:
- adds r0, r4, 0
- bl ItemId_GetPocket
- subs r0, 0x1
- lsls r0, 24
- movs r2, 0
- ldr r1, _08099F94 @ =gBagPockets
- lsrs r0, 21
- adds r0, r1
- ldrb r1, [r0, 0x4]
- cmp r2, r1
- bcs _08099FA4
- adds r3, r0, 0
-_08099F76:
- ldr r0, [r3]
- lsls r1, r2, 2
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, r4
- bne _08099F98
- adds r0, r1, 0x2
- bl GetBagItemQuantity
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r5
- bcs _08099F58
- b _08099FA4
- .align 2, 0
-_08099F94: .4byte gBagPockets
-_08099F98:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r3, 0x4]
- cmp r2, r0
- bcc _08099F76
-_08099FA4:
- movs r0, 0
-_08099FA6:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end CheckBagHasItem
-
- thumb_func_start sub_8099FAC
-sub_8099FAC: @ 8099FAC
- push {r4,lr}
- ldr r0, _08099FC0 @ =0x0000016d
- movs r1, 0x1
- bl CheckBagHasItem
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _08099FD4
- b _08099FF0
- .align 2, 0
-_08099FC0: .4byte 0x0000016d
-_08099FC4:
- ldr r1, _08099FD0 @ =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
- movs r0, 0x1
- b _08099FF6
- .align 2, 0
-_08099FD0: .4byte gSpecialVar_Result
-_08099FD4:
- movs r4, 0x85
-_08099FD6:
- adds r0, r4, 0
- movs r1, 0x1
- bl CheckBagHasItem
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _08099FC4
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xAF
- bls _08099FD6
-_08099FF0:
- ldr r0, _08099FFC @ =gSpecialVar_Result
- strh r1, [r0]
- movs r0, 0
-_08099FF6:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08099FFC: .4byte gSpecialVar_Result
- thumb_func_end sub_8099FAC
-
- thumb_func_start CheckBagHasSpace
-CheckBagHasSpace: @ 809A000
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- adds r0, r4, 0
- bl ItemId_GetPocket
- lsls r0, 24
- cmp r0, 0
- beq _0809A050
- adds r0, r4, 0
- bl ItemId_GetPocket
- subs r0, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- movs r2, 0
- ldr r1, _0809A054 @ =gBagPockets
- lsls r0, r5, 3
- adds r0, r1
- ldrb r1, [r0, 0x4]
- cmp r2, r1
- bcs _0809A068
- adds r3, r0, 0
-_0809A032:
- ldr r0, [r3]
- lsls r1, r2, 2
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, r4
- bne _0809A05C
- adds r0, r1, 0x2
- bl GetBagItemQuantity
- lsls r0, 16
- lsrs r0, 16
- adds r0, r6
- ldr r1, _0809A058 @ =0x000003e7
- cmp r0, r1
- ble _0809A07A
-_0809A050:
- movs r0, 0
- b _0809A07C
- .align 2, 0
-_0809A054: .4byte gBagPockets
-_0809A058: .4byte 0x000003e7
-_0809A05C:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r3, 0x4]
- cmp r2, r0
- bcc _0809A032
-_0809A068:
- adds r0, r5, 0
- bl sub_8099ECC
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _0809A050
-_0809A07A:
- movs r0, 0x1
-_0809A07C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end CheckBagHasSpace
-
- thumb_func_start AddBagItem
-AddBagItem: @ 809A084
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- adds r0, r6, 0
- bl ItemId_GetPocket
- lsls r0, 24
- cmp r0, 0
- bne _0809A0A2
- b _0809A1CA
-_0809A0A2:
- adds r0, r6, 0
- bl ItemId_GetPocket
- subs r0, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- movs r2, 0
- ldr r1, _0809A0E0 @ =gBagPockets
- lsls r0, r7, 3
- adds r0, r1
- ldrb r1, [r0, 0x4]
- cmp r2, r1
- bcs _0809A0F4
- adds r5, r0, 0
-_0809A0BE:
- ldr r0, [r5]
- lsls r4, r2, 2
- adds r1, r4, r0
- ldrh r0, [r1]
- cmp r0, r6
- bne _0809A0E8
- adds r0, r1, 0x2
- bl GetBagItemQuantity
- lsls r0, 16
- lsrs r0, 16
- mov r2, r8
- adds r1, r0, r2
- ldr r0, _0809A0E4 @ =0x000003e7
- cmp r1, r0
- ble _0809A1B8
- b _0809A1CA
- .align 2, 0
-_0809A0E0: .4byte gBagPockets
-_0809A0E4: .4byte 0x000003e7
-_0809A0E8:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r5, 0x4]
- cmp r2, r0
- bcc _0809A0BE
-_0809A0F4:
- cmp r7, 0x3
- bne _0809A132
- movs r4, 0xB6
- lsls r4, 1
- adds r0, r4, 0
- movs r1, 0x1
- bl CheckBagHasItem
- lsls r0, 24
- cmp r0, 0
- bne _0809A132
- movs r0, 0x1
- bl sub_8099ECC
- lsls r0, 24
- asrs r1, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0809A1CA
- ldr r2, _0809A1AC @ =gBagPockets
- ldr r0, [r2, 0x8]
- lsls r1, 2
- adds r0, r1, r0
- strh r4, [r0]
- ldr r0, [r2, 0x8]
- adds r0, r1
- adds r0, 0x2
- movs r1, 0x1
- bl sub_8099DBC
-_0809A132:
- cmp r7, 0x4
- bne _0809A174
- ldr r4, _0809A1B0 @ =0x0000016d
- adds r0, r4, 0
- movs r1, 0x1
- bl CheckBagHasItem
- lsls r0, 24
- cmp r0, 0
- bne _0809A174
- movs r0, 0x1
- bl sub_8099ECC
- lsls r0, 24
- asrs r1, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0809A1CA
- ldr r2, _0809A1AC @ =gBagPockets
- ldr r0, [r2, 0x8]
- lsls r1, 2
- adds r0, r1, r0
- strh r4, [r0]
- ldr r0, [r2, 0x8]
- adds r0, r1
- adds r0, 0x2
- movs r1, 0x1
- bl sub_8099DBC
- ldr r0, _0809A1B4 @ =0x00000847
- bl FlagSet
-_0809A174:
- ldr r0, _0809A1B0 @ =0x0000016d
- cmp r6, r0
- bne _0809A180
- ldr r0, _0809A1B4 @ =0x00000847
- bl FlagSet
-_0809A180:
- adds r0, r7, 0
- bl sub_8099ECC
- lsls r0, 24
- asrs r2, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r2, r0
- beq _0809A1CA
- ldr r0, _0809A1AC @ =gBagPockets
- lsls r1, r7, 3
- adds r1, r0
- ldr r0, [r1]
- lsls r2, 2
- adds r0, r2, r0
- strh r6, [r0]
- ldr r0, [r1]
- adds r0, r2
- adds r0, 0x2
- mov r1, r8
- b _0809A1C2
- .align 2, 0
-_0809A1AC: .4byte gBagPockets
-_0809A1B0: .4byte 0x0000016d
-_0809A1B4: .4byte 0x00000847
-_0809A1B8:
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [r5]
- adds r0, r4
- adds r0, 0x2
-_0809A1C2:
- bl sub_8099DBC
- movs r0, 0x1
- b _0809A1CC
-_0809A1CA:
- movs r0, 0
-_0809A1CC:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end AddBagItem
-
- thumb_func_start RemoveBagItem
-RemoveBagItem: @ 809A1D8
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r7, r1, 16
- adds r0, r4, 0
- bl ItemId_GetPocket
- lsls r0, 24
- cmp r0, 0
- beq _0809A258
- cmp r4, 0
- beq _0809A258
- adds r0, r4, 0
- bl ItemId_GetPocket
- subs r0, 0x1
- lsls r0, 24
- movs r2, 0
- ldr r1, _0809A248 @ =gBagPockets
- lsrs r0, 21
- adds r0, r1
- ldrb r1, [r0, 0x4]
- cmp r2, r1
- bcs _0809A258
- adds r6, r0, 0
-_0809A20C:
- ldr r0, [r6]
- lsls r5, r2, 2
- adds r1, r5, r0
- ldrh r0, [r1]
- cmp r0, r4
- bne _0809A24C
- adds r0, r1, 0x2
- bl GetBagItemQuantity
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r7
- bcc _0809A258
- subs r0, r7
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, [r6]
- adds r0, r5
- adds r0, 0x2
- adds r1, r4, 0
- bl sub_8099DBC
- cmp r4, 0
- bne _0809A242
- ldr r0, [r6]
- adds r0, r5, r0
- strh r4, [r0]
-_0809A242:
- movs r0, 0x1
- b _0809A25A
- .align 2, 0
-_0809A248: .4byte gBagPockets
-_0809A24C:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r6, 0x4]
- cmp r2, r0
- bcc _0809A20C
-_0809A258:
- movs r0, 0
-_0809A25A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end RemoveBagItem
-
- thumb_func_start GetPocketByItemId
-GetPocketByItemId: @ 809A260
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl ItemId_GetPocket
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GetPocketByItemId
-
- thumb_func_start ClearItemSlots
-ClearItemSlots: @ 809A274
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r1, 24
- movs r4, 0
- lsrs r1, 24
- cmp r4, r1
- bcs _0809A29E
- adds r5, r1, 0
- movs r7, 0
-_0809A286:
- lsls r0, r4, 2
- adds r0, r6
- strh r7, [r0]
- adds r0, 0x2
- movs r1, 0
- bl sub_8099DBC
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r5
- bcc _0809A286
-_0809A29E:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ClearItemSlots
-
- thumb_func_start sub_809A2A4
-sub_809A2A4: @ 809A2A4
- push {r4,r5,lr}
- movs r4, 0
- movs r5, 0xA6
- lsls r5, 2
-_0809A2AC:
- ldr r0, _0809A2D8 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- lsls r3, r4, 2
- adds r1, r0, r3
- adds r1, r5
- movs r2, 0
- strh r2, [r1]
- adds r3, r5
- adds r0, r3
- adds r0, 0x2
- movs r1, 0
- bl sub_8099DDC
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bls _0809A2AC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A2D8: .4byte gSaveBlock1Ptr
- thumb_func_end sub_809A2A4
-
- thumb_func_start sub_809A2DC
-sub_809A2DC: @ 809A2DC
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _0809A300 @ =gBagPockets
-_0809A2E2:
- lsls r1, r4, 3
- adds r1, r5
- ldr r0, [r1]
- ldrb r1, [r1, 0x4]
- bl ClearItemSlots
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x4
- bls _0809A2E2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A300: .4byte gBagPockets
- thumb_func_end sub_809A2DC
-
- thumb_func_start sub_809A304
-sub_809A304: @ 809A304
- push {lr}
- movs r1, 0
- ldr r0, _0809A324 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- movs r3, 0xA6
- lsls r3, 2
-_0809A310:
- lsls r0, r1, 24
- asrs r1, r0, 24
- lsls r0, r1, 2
- adds r0, r2, r0
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, 0
- bne _0809A328
- adds r0, r1, 0
- b _0809A338
- .align 2, 0
-_0809A324: .4byte gSaveBlock1Ptr
-_0809A328:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- asrs r0, 24
- cmp r0, 0x1D
- ble _0809A310
- movs r0, 0x1
- negs r0, r0
-_0809A338:
- pop {r1}
- bx r1
- thumb_func_end sub_809A304
-
- thumb_func_start sub_809A33C
-sub_809A33C: @ 809A33C
- push {r4,lr}
- movs r2, 0
- movs r1, 0
- ldr r0, _0809A370 @ =gSaveBlock1Ptr
- ldr r3, [r0]
- movs r4, 0xA6
- lsls r4, 2
-_0809A34A:
- lsls r0, r1, 2
- adds r0, r3, r0
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0
- beq _0809A35C
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_0809A35C:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1D
- bls _0809A34A
- adds r0, r2, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809A370: .4byte gSaveBlock1Ptr
- thumb_func_end sub_809A33C
-
- thumb_func_start CheckPCHasItem
-CheckPCHasItem: @ 809A374
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r5, r1, 16
- movs r4, 0
-_0809A380:
- ldr r0, _0809A3AC @ =gSaveBlock1Ptr
- ldr r2, [r0]
- lsls r1, r4, 2
- adds r0, r2, r1
- movs r3, 0xA6
- lsls r3, 2
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, r6
- bne _0809A3B4
- adds r0, r1, r2
- ldr r1, _0809A3B0 @ =0x0000029a
- adds r0, r1
- bl GetBagItemId
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r5
- bcc _0809A3B4
- movs r0, 0x1
- b _0809A3C0
- .align 2, 0
-_0809A3AC: .4byte gSaveBlock1Ptr
-_0809A3B0: .4byte 0x0000029a
-_0809A3B4:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1D
- bls _0809A380
- movs r0, 0
-_0809A3C0:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end CheckPCHasItem
-
- thumb_func_start AddPCItem
-AddPCItem: @ 809A3C8
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r5, r1, 16
- movs r3, 0
- ldr r6, _0809A404 @ =gSaveBlock1Ptr
-_0809A3D6:
- ldr r2, [r6]
- lsls r1, r3, 2
- adds r0, r2, r1
- movs r7, 0xA6
- lsls r7, 2
- adds r0, r7
- ldrh r0, [r0]
- cmp r0, r4
- bne _0809A40C
- adds r0, r7, 0
- adds r4, r1, r0
- adds r0, r2, r4
- adds r0, 0x2
- bl GetBagItemId
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, r5
- ldr r0, _0809A408 @ =0x000003e7
- cmp r1, r0
- ble _0809A444
- b _0809A456
- .align 2, 0
-_0809A404: .4byte gSaveBlock1Ptr
-_0809A408: .4byte 0x000003e7
-_0809A40C:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1D
- bls _0809A3D6
- bl sub_809A304
- lsls r0, 24
- asrs r2, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r2, r0
- beq _0809A456
- ldr r0, _0809A440 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- lsls r2, 2
- adds r1, r0, r2
- movs r3, 0xA6
- lsls r3, 2
- adds r1, r3
- strh r4, [r1]
- adds r2, r3
- adds r0, r2
- adds r0, 0x2
- adds r1, r5, 0
- b _0809A44E
- .align 2, 0
-_0809A440: .4byte gSaveBlock1Ptr
-_0809A444:
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [r6]
- adds r0, r4
- adds r0, 0x2
-_0809A44E:
- bl sub_8099DDC
- movs r0, 0x1
- b _0809A458
-_0809A456:
- movs r0, 0
-_0809A458:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end AddPCItem
-
- thumb_func_start sub_809A460
-sub_809A460: @ 809A460
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r2, r0, 16
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- cmp r2, 0
- beq _0809A4D8
- movs r4, 0
- ldr r0, _0809A4E4 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r3, 0xA6
- lsls r3, 2
- adds r1, r3
- ldrh r1, [r1]
- adds r7, r0, 0
- cmp r1, r2
- beq _0809A49E
- adds r5, r7, 0
-_0809A48A:
- adds r4, 0x1
- cmp r4, 0x1D
- bhi _0809A49E
- ldr r0, [r5]
- lsls r1, r4, 2
- adds r0, r1
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, r2
- bne _0809A48A
-_0809A49E:
- cmp r4, 0x1E
- beq _0809A4D8
- lsls r6, r4, 2
- movs r0, 0xA6
- lsls r0, 2
- adds r4, r6, r0
- ldr r0, [r7]
- adds r0, r4
- adds r0, 0x2
- bl GetBagItemId
- mov r1, r8
- subs r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, [r7]
- adds r0, r4
- adds r0, 0x2
- adds r1, r5, 0
- bl sub_8099DDC
- cmp r5, 0
- bne _0809A4D8
- ldr r0, [r7]
- adds r0, r6
- movs r1, 0xA6
- lsls r1, 2
- adds r0, r1
- strh r5, [r0]
-_0809A4D8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A4E4: .4byte gSaveBlock1Ptr
- thumb_func_end sub_809A460
-
- thumb_func_start sub_809A4E8
-sub_809A4E8: @ 809A4E8
- push {r4-r7,lr}
- movs r2, 0
-_0809A4EC:
- adds r1, r2, 0x1
- lsls r0, r1, 16
- lsrs r4, r0, 16
- adds r6, r1, 0
- cmp r4, 0x1D
- bhi _0809A52E
- ldr r0, _0809A53C @ =gSaveBlock1Ptr
- mov r12, r0
- lsls r5, r2, 2
- movs r7, 0xA6
- lsls r7, 2
-_0809A502:
- mov r0, r12
- ldr r1, [r0]
- adds r0, r1, r5
- adds r0, r7
- ldrh r0, [r0]
- cmp r0, 0
- bne _0809A524
- movs r0, 0xA6
- lsls r0, 2
- adds r1, r0
- adds r2, r1, r5
- ldr r3, [r2]
- lsls r0, r4, 2
- adds r1, r0
- ldr r0, [r1]
- str r0, [r2]
- str r3, [r1]
-_0809A524:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bls _0809A502
-_0809A52E:
- lsls r0, r6, 16
- lsrs r2, r0, 16
- cmp r2, 0x1C
- bls _0809A4EC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A53C: .4byte gSaveBlock1Ptr
- thumb_func_end sub_809A4E8
-
- thumb_func_start sub_809A540
-sub_809A540: @ 809A540
- push {lr}
- ldr r0, _0809A55C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, _0809A560 @ =0x00000296
- adds r1, r0, r2
- ldrh r2, [r1]
- ldr r3, _0809A564 @ =0x00000103
- cmp r2, r3
- beq _0809A568
- movs r0, 0x88
- lsls r0, 1
- cmp r2, r0
- beq _0809A570
- b _0809A572
- .align 2, 0
-_0809A55C: .4byte gSaveBlock1Ptr
-_0809A560: .4byte 0x00000296
-_0809A564: .4byte 0x00000103
-_0809A568:
- movs r0, 0x88
- lsls r0, 1
- strh r0, [r1]
- b _0809A572
-_0809A570:
- strh r3, [r1]
-_0809A572:
- pop {r0}
- bx r0
- thumb_func_end sub_809A540
-
- thumb_func_start sub_809A578
-sub_809A578: @ 809A578
- ldr r3, [r0]
- ldr r2, [r1]
- str r2, [r0]
- str r3, [r1]
- bx lr
- thumb_func_end sub_809A578
-
- thumb_func_start sub_809A584
-sub_809A584: @ 809A584
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- subs r0, r1, 0x1
- cmp r2, r0
- bge _0809A5D8
- adds r6, r1, 0
- mov r9, r0
-_0809A59E:
- adds r1, r2, 0x1
- lsls r0, r1, 16
- lsrs r4, r0, 16
- adds r7, r1, 0
- cmp r4, r6
- bcs _0809A5D0
- lsls r0, r2, 2
- mov r1, r8
- adds r5, r1, r0
-_0809A5B0:
- adds r0, r5, 0x2
- bl GetBagItemQuantity
- lsls r0, 16
- cmp r0, 0
- bne _0809A5C6
- lsls r1, r4, 2
- add r1, r8
- adds r0, r5, 0
- bl sub_809A578
-_0809A5C6:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r6
- bcc _0809A5B0
-_0809A5D0:
- lsls r0, r7, 16
- lsrs r2, r0, 16
- cmp r2, r9
- blt _0809A59E
-_0809A5D8:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_809A584
-
- thumb_func_start sub_809A5E4
-sub_809A5E4: @ 809A5E4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r5, r0, 0
- movs r4, 0
- bl sub_809A720
- movs r3, 0
- ldrb r0, [r5, 0x4]
- cmp r3, r0
- bcs _0809A676
- movs r6, 0xA9
- lsls r6, 1
-_0809A604:
- ldr r0, [r5]
- lsls r1, r3, 2
- adds r2, r1, r0
- ldrh r0, [r2]
- adds r7, r1, 0
- cmp r0, 0
- bne _0809A622
- adds r0, r2, 0x2
- str r3, [sp]
- bl GetBagItemQuantity
- lsls r0, 16
- ldr r3, [sp]
- cmp r0, 0
- beq _0809A70A
-_0809A622:
- ldr r0, [r5]
- adds r1, r7, r0
- ldrh r0, [r1]
- cmp r0, r6
- bls _0809A66A
- adds r0, r1, 0x2
- str r3, [sp]
- bl GetBagItemQuantity
- lsls r0, 16
- ldr r3, [sp]
- cmp r0, 0
- beq _0809A66A
- adds r0, r3, 0x1
- b _0809A642
-_0809A640:
- adds r0, r4, 0x1
-_0809A642:
- lsls r0, 16
- lsrs r4, r0, 16
- ldrb r1, [r5, 0x4]
- cmp r4, r1
- bcs _0809A676
- ldr r0, [r5]
- lsls r1, r4, 2
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- bne _0809A640
- adds r0, r1, 0x2
- str r3, [sp]
- bl GetBagItemQuantity
- lsls r0, 16
- ldr r3, [sp]
- cmp r0, 0
- bne _0809A640
- b _0809A676
-_0809A66A:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldrb r2, [r5, 0x4]
- cmp r3, r2
- bcc _0809A604
-_0809A676:
- movs r6, 0
- lsls r7, r3, 2
- subs r4, r3
- mov r10, r4
- lsls r3, 1
- mov r9, r3
- ldrb r0, [r5, 0x4]
- cmp r6, r0
- bcs _0809A6A6
-_0809A688:
- lsls r4, r6, 2
- ldr r0, [r5]
- adds r0, r4
- adds r0, 0x2
- bl GetBagItemQuantity
- ldr r1, [r5]
- adds r4, r1
- strh r0, [r4, 0x2]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldrb r1, [r5, 0x4]
- cmp r6, r1
- bcc _0809A688
-_0809A6A6:
- ldrb r0, [r5, 0x4]
- lsls r0, 2
- bl AllocZeroed
- mov r8, r0
- ldr r0, [r5]
- adds r0, r7
- mov r1, r10
- lsls r2, r1, 1
- ldr r4, _0809A71C @ =0x001fffff
- ands r2, r4
- mov r1, r8
- bl CpuSet
- ldr r0, [r5]
- mov r2, r10
- lsls r1, r2, 2
- add r1, r8
- mov r2, r9
- ands r2, r4
- mov r9, r2
- bl CpuSet
- ldr r1, [r5]
- ldrb r2, [r5, 0x4]
- lsls r2, 1
- ands r2, r4
- mov r0, r8
- bl CpuSet
- movs r6, 0
- ldrb r0, [r5, 0x4]
- cmp r6, r0
- bcs _0809A704
-_0809A6EA:
- lsls r0, r6, 2
- ldr r1, [r5]
- adds r1, r0
- adds r0, r1, 0x2
- ldrh r1, [r1, 0x2]
- bl sub_8099DBC
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldrb r1, [r5, 0x4]
- cmp r6, r1
- bcc _0809A6EA
-_0809A704:
- mov r0, r8
- bl Free
-_0809A70A:
- 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
-_0809A71C: .4byte 0x001fffff
- thumb_func_end sub_809A5E4
-
- thumb_func_start sub_809A720
-sub_809A720: @ 809A720
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- movs r3, 0
- b _0809A786
-_0809A72C:
- adds r1, r3, 0x1
- lsls r0, r1, 16
- lsrs r5, r0, 16
- mov r8, r1
- cmp r5, r2
- bcs _0809A780
- lsls r7, r3, 2
-_0809A73A:
- ldr r0, [r6]
- adds r0, r7
- adds r0, 0x2
- bl GetBagItemQuantity
- lsls r0, 16
- lsls r4, r5, 2
- cmp r0, 0
- beq _0809A76A
- ldr r0, [r6]
- adds r0, r4
- adds r0, 0x2
- bl GetBagItemQuantity
- lsls r0, 16
- cmp r0, 0
- beq _0809A774
- ldr r0, [r6]
- adds r1, r7, r0
- adds r0, r4, r0
- ldrh r1, [r1]
- ldrh r0, [r0]
- cmp r1, r0
- bls _0809A774
-_0809A76A:
- ldr r1, [r6]
- adds r0, r1, r7
- adds r1, r4
- bl sub_809A578
-_0809A774:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldrb r0, [r6, 0x4]
- cmp r5, r0
- bcc _0809A73A
-_0809A780:
- mov r1, r8
- lsls r0, r1, 16
- lsrs r3, r0, 16
-_0809A786:
- ldrb r2, [r6, 0x4]
- cmp r3, r2
- bcc _0809A72C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_809A720
-
- thumb_func_start BagGetItemIdByPocketPosition
-BagGetItemIdByPocketPosition: @ 809A798
- lsls r0, 24
- lsls r1, 16
- ldr r2, _0809A7B0 @ =gBagPockets
- lsrs r0, 21
- subs r0, 0x8
- adds r0, r2
- ldr r0, [r0]
- lsrs r1, 14
- adds r1, r0
- ldrh r0, [r1]
- bx lr
- .align 2, 0
-_0809A7B0: .4byte gBagPockets
- thumb_func_end BagGetItemIdByPocketPosition
-
- thumb_func_start BagGetQuantityByPocketPosition
-BagGetQuantityByPocketPosition: @ 809A7B4
- push {lr}
- lsls r0, 24
- lsls r1, 16
- ldr r2, _0809A7D8 @ =gBagPockets
- lsrs r0, 21
- subs r0, 0x8
- adds r0, r2
- lsrs r1, 14
- ldr r0, [r0]
- adds r0, r1
- adds r0, 0x2
- bl GetBagItemQuantity
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_0809A7D8: .4byte gBagPockets
- thumb_func_end BagGetQuantityByPocketPosition
-
- thumb_func_start sub_809A7DC
-sub_809A7DC: @ 809A7DC
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl ItemId_GetPocket
- lsls r0, 24
- lsrs r0, 21
- ldr r1, _0809A7F4 @ =gUnknown_2039884
- adds r3, r0, r1
- movs r2, 0
- b _0809A816
- .align 2, 0
-_0809A7F4: .4byte gUnknown_2039884
-_0809A7F8:
- ldr r0, [r3]
- lsls r1, r2, 2
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, r4
- bne _0809A810
- adds r0, r1, 0x2
- bl GetBagItemQuantity
- lsls r0, 16
- lsrs r0, 16
- b _0809A81E
-_0809A810:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
-_0809A816:
- ldrb r0, [r3, 0x4]
- cmp r2, r0
- bcc _0809A7F8
- movs r0, 0
-_0809A81E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809A7DC
-
- thumb_func_start sub_809A824
-sub_809A824: @ 809A824
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r1, _0809A894 @ =0xfea30000
- adds r0, r1
- lsrs r0, 16
- cmp r0, 0xD
- bls _0809A85A
- movs r0, 0xB7
- lsls r0, 1
- cmp r5, r0
- beq _0809A85A
- adds r0, 0x2
- cmp r5, r0
- beq _0809A85A
- adds r0, 0x1
- cmp r5, r0
- beq _0809A85A
- adds r0, 0x3
- cmp r5, r0
- beq _0809A85A
- adds r0, 0x1
- cmp r5, r0
- beq _0809A85A
- adds r0, 0x1
- cmp r5, r0
- bne _0809A88C
-_0809A85A:
- ldr r0, _0809A898 @ =0x00000169
- cmp r5, r0
- bne _0809A86E
- ldr r0, _0809A89C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0x81
- lsls r0, 2
- cmp r1, r0
- bne _0809A88C
-_0809A86E:
- movs r0, 0x4
- bl Alloc
- adds r4, r0, 0
- strh r5, [r4]
- ldr r0, _0809A8A0 @ =gMapHeader
- ldrb r0, [r0, 0x14]
- strb r0, [r4, 0x2]
- movs r0, 0x28
- adds r1, r4, 0
- bl sub_8113550
- adds r0, r4, 0
- bl Free
-_0809A88C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A894: .4byte 0xfea30000
-_0809A898: .4byte 0x00000169
-_0809A89C: .4byte gSaveBlock1Ptr
-_0809A8A0: .4byte gMapHeader
- thumb_func_end sub_809A824
-
- thumb_func_start SanitizeItemId
-SanitizeItemId: @ 809A8A4
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- movs r0, 0xBB
- lsls r0, 1
- cmp r1, r0
- bhi _0809A8B6
- adds r0, r1, 0
- b _0809A8B8
-_0809A8B6:
- movs r0, 0
-_0809A8B8:
- pop {r1}
- bx r1
- thumb_func_end SanitizeItemId
-
- thumb_func_start ItemId_GetItem
-ItemId_GetItem: @ 809A8BC
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- ldr r1, _0809A8D8 @ =gItems
- adds r0, r1
- pop {r1}
- bx r1
- .align 2, 0
-_0809A8D8: .4byte gItems
- thumb_func_end ItemId_GetItem
-
- thumb_func_start itemid_get_number
-itemid_get_number: @ 809A8DC
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809A8FC @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r0, r4
- ldrh r0, [r0, 0xE]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809A8FC: .4byte gItems
- thumb_func_end itemid_get_number
-
- thumb_func_start itemid_get_market_price
-itemid_get_market_price: @ 809A900
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809A920 @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r0, r4
- ldrh r0, [r0, 0x10]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809A920: .4byte gItems
- thumb_func_end itemid_get_market_price
-
- thumb_func_start ItemId_GetHoldEffect
-ItemId_GetHoldEffect: @ 809A924
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809A944 @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r0, r4
- ldrb r0, [r0, 0x12]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809A944: .4byte gItems
- thumb_func_end ItemId_GetHoldEffect
-
- thumb_func_start ItemId_GetHoldEffectParam
-ItemId_GetHoldEffectParam: @ 809A948
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809A968 @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r0, r4
- ldrb r0, [r0, 0x13]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809A968: .4byte gItems
- thumb_func_end ItemId_GetHoldEffectParam
-
- thumb_func_start ItemId_GetDescription
-ItemId_GetDescription: @ 809A96C
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809A98C @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r4, 0x14
- adds r0, r4
- ldr r0, [r0]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809A98C: .4byte gItems
- thumb_func_end ItemId_GetDescription
-
- thumb_func_start itemid_is_unique
-itemid_is_unique: @ 809A990
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809A9B0 @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r0, r4
- ldrb r0, [r0, 0x18]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809A9B0: .4byte gItems
- thumb_func_end itemid_is_unique
-
- thumb_func_start itemid_get_x19
-itemid_get_x19: @ 809A9B4
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809A9D4 @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r0, r4
- ldrb r0, [r0, 0x19]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809A9D4: .4byte gItems
- thumb_func_end itemid_get_x19
-
- thumb_func_start ItemId_GetPocket
-ItemId_GetPocket: @ 809A9D8
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809A9F8 @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r0, r4
- ldrb r0, [r0, 0x1A]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809A9F8: .4byte gItems
- thumb_func_end ItemId_GetPocket
-
- thumb_func_start ItemId_GetType
-ItemId_GetType: @ 809A9FC
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809AA1C @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r0, r4
- ldrb r0, [r0, 0x1B]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809AA1C: .4byte gItems
- thumb_func_end ItemId_GetType
-
- thumb_func_start ItemId_GetFieldFunc
-ItemId_GetFieldFunc: @ 809AA20
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809AA40 @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r4, 0x1C
- adds r0, r4
- ldr r0, [r0]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809AA40: .4byte gItems
- thumb_func_end ItemId_GetFieldFunc
-
- thumb_func_start ItemId_GetBattleUsage
-ItemId_GetBattleUsage: @ 809AA44
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809AA64 @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r0, r4
- adds r0, 0x20
- ldrb r0, [r0]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809AA64: .4byte gItems
- thumb_func_end ItemId_GetBattleUsage
-
- thumb_func_start ItemId_GetBattleFunc
-ItemId_GetBattleFunc: @ 809AA68
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809AA88 @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r4, 0x24
- adds r0, r4
- ldr r0, [r0]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809AA88: .4byte gItems
- thumb_func_end ItemId_GetBattleFunc
-
- thumb_func_start ItemId_GetSecondaryId
-ItemId_GetSecondaryId: @ 809AA8C
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0809AAAC @ =gItems
- bl SanitizeItemId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2C
- muls r0, r1
- adds r0, r4
- adds r0, 0x28
- ldrb r0, [r0]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809AAAC: .4byte gItems
- thumb_func_end ItemId_GetSecondaryId
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 46891fe94..e85f63872 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -138,8 +138,8 @@ _08107EB0: .4byte gUnknown_203AD10
_08107EB4: .4byte gUnknown_203ACFC
thumb_func_end sub_8107DB4
- thumb_func_start UseFameCheckerFromMenu
-UseFameCheckerFromMenu: @ 8107EB8
+ thumb_func_start ReturnToBagFromKeyItem
+ReturnToBagFromKeyItem: @ 8107EB8
push {lr}
ldr r2, _08107EC8 @ =sub_80568A8
movs r0, 0
@@ -149,7 +149,7 @@ UseFameCheckerFromMenu: @ 8107EB8
bx r0
.align 2, 0
_08107EC8: .4byte sub_80568A8
- thumb_func_end UseFameCheckerFromMenu
+ thumb_func_end ReturnToBagFromKeyItem
thumb_func_start sub_8107ECC
sub_8107ECC: @ 8107ECC
@@ -170,7 +170,7 @@ sub_8107EE0: @ 8107EE0
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
+ bl DoScheduledBgTilemapCopiesToVram
bl UpdatePaletteFade
pop {r0}
bx r0
@@ -200,7 +200,7 @@ _08107F12:
lsrs r0, 24
cmp r0, 0x1
beq _08107F36
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -253,8 +253,8 @@ _08107F60:
.4byte _081080D8
.4byte _081080DE
_08107FB0:
- bl sub_80BF768
- bl clear_scheduled_bg_copies_to_vram
+ bl SetVBlankHBlankCallbacksToNull
+ bl ClearScheduledBgCopiesToVram
b _08108104
_08107FBA:
bl ScanlineEffect_Stop
@@ -275,10 +275,10 @@ _08107FD8:
bl ResetSpriteData
b _08108104
_08107FDE:
- bl sub_80984D8
+ bl ResetItemMenuIconState
b _08108104
_08107FE4:
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
cmp r0, 0
beq _08107FF0
@@ -520,7 +520,7 @@ _081081CC: .4byte gUnknown_203AD1C
thumb_func_start sub_81081D0
sub_81081D0: @ 81081D0
push {r4,r5,lr}
- bl sub_80BF7C8
+ bl ResetAllBgsCoordinatesAndBgCntRegs
ldr r5, _08108230 @ =gUnknown_203AD14
movs r4, 0x80
lsls r4, 4
@@ -542,7 +542,7 @@ sub_81081D0: @ 81081D0
movs r0, 0x1
bl SetBgTilemapBuffer
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r1, 0xC1
lsls r1, 6
movs r0, 0
@@ -595,19 +595,19 @@ _08108264:
.4byte _08108340
.4byte _0810834C
_0810827C:
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
ldr r1, _08108294 @ =gUnknown_8E830CC
movs r0, 0
str r0, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
b _08108352
.align 2, 0
_08108294: .4byte gUnknown_8E830CC
_08108298:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -676,20 +676,20 @@ _0810832C: .4byte gSaveBlock2Ptr
_08108330: .4byte gUnknown_83D41E4
_08108334:
ldr r0, _0810833C @ =gUnknown_83D41EC
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
b _08108352
.align 2, 0
_0810833C: .4byte gUnknown_83D41EC
_08108340:
ldr r0, _08108348 @ =gUnknown_83D41F4
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
b _08108352
.align 2, 0
_08108348: .4byte gUnknown_83D41F4
_0810834C:
- ldr r0, _08108360 @ =gUnknown_83D4240
+ ldr r0, _08108360 @ =gBagSwapSpriteSheet
_0810834E:
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
_08108352:
ldr r0, _08108364 @ =gUnknown_203AD10
ldr r1, [r0]
@@ -698,18 +698,18 @@ _08108352:
strb r0, [r1, 0x10]
b _0810837C
.align 2, 0
-_08108360: .4byte gUnknown_83D4240
+_08108360: .4byte gBagSwapSpriteSheet
_08108364: .4byte gUnknown_203AD10
_08108368:
- ldr r0, _08108378 @ =gUnknown_83D4248
- bl LoadCompressedObjectPalette
+ ldr r0, _08108378 @ =gBagSwapSpritePalette
+ bl LoadCompressedSpritePalette
ldr r1, [r4]
movs r0, 0
strb r0, [r1, 0x10]
movs r0, 0x1
b _0810837E
.align 2, 0
-_08108378: .4byte gUnknown_83D4248
+_08108378: .4byte gBagSwapSpritePalette
_0810837C:
movs r0, 0
_0810837E:
@@ -981,7 +981,7 @@ _08108584:
bl StringCopy
_0810858C:
adds r0, r5, 0
- bl ItemId_GetItem
+ bl ItemId_GetName
adds r1, r0, 0
adds r0, r4, 0
bl StringAppend
@@ -1014,7 +1014,7 @@ _081085BA:
lsrs r1, 30
movs r0, 0x1
eors r0, r1
- bl sub_8098940
+ bl DestroyItemMenuIcon
ldr r2, [r4]
ldr r0, _08108608 @ =gUnknown_203ACFC
ldrh r1, [r0, 0x6]
@@ -1036,7 +1036,7 @@ _081085BA:
ldrb r1, [r1, 0x5]
lsls r1, 26
lsrs r1, 30
- bl sub_80988E8
+ bl CreateItemMenuIcon
b _08108618
.align 2, 0
_08108604: .4byte gUnknown_203AD10
@@ -1046,7 +1046,7 @@ _0810860C:
ldrb r1, [r2, 0x5]
lsls r1, 26
lsrs r1, 30
- bl sub_80988E8
+ bl CreateItemMenuIcon
_08108618:
ldr r4, _08108650 @ =gUnknown_203AD10
ldr r3, [r4]
@@ -1383,7 +1383,7 @@ sub_8108888: @ 8108888
movs r1, 0xA0
movs r2, 0x8
movs r3, 0x68
- bl AddScrollIndicatorArrowPairParametrized
+ bl AddScrollIndicatorArrowPairParameterized
ldr r1, [r4]
strb r0, [r1, 0x8]
add sp, 0x10
@@ -1439,7 +1439,7 @@ sub_8108908: @ 8108908
movs r1, 0x98
movs r2, 0x48
movs r3, 0x68
- bl AddScrollIndicatorArrowPairParametrized
+ bl AddScrollIndicatorArrowPairParameterized
ldr r1, [r4]
strb r0, [r1, 0x8]
add sp, 0x10
@@ -1469,7 +1469,7 @@ sub_8108940: @ 8108940
movs r1, 0xD4
movs r2, 0x78
movs r3, 0x98
- bl AddScrollIndicatorArrowPairParametrized
+ bl AddScrollIndicatorArrowPairParameterized
ldr r1, [r4]
strb r0, [r1, 0x8]
add sp, 0x10
@@ -1739,8 +1739,8 @@ _08108B48: .4byte gUnknown_203AD18
_08108B4C: .4byte gUnknown_203AD1C
thumb_func_end sub_8108B04
- thumb_func_start sub_8108B50
-sub_8108B50: @ 8108B50
+ thumb_func_start ItemMenu_StartFadeToExitCallback
+ItemMenu_StartFadeToExitCallback: @ 8108B50
push {r4,lr}
sub sp, 0x4
adds r4, r0, 0
@@ -1768,7 +1768,7 @@ sub_8108B50: @ 8108B50
.align 2, 0
_08108B84: .4byte gTasks
_08108B88: .4byte sub_8108B8C
- thumb_func_end sub_8108B50
+ thumb_func_end ItemMenu_StartFadeToExitCallback
thumb_func_start sub_8108B8C
sub_8108B8C: @ 8108B8C
@@ -1802,7 +1802,7 @@ sub_8108B8C: @ 8108B8C
adds r3, r4, 0
adds r3, 0x8
adds r2, r3
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldr r0, _08108BF0 @ =gUnknown_203AD10
ldr r0, [r0]
ldr r0, [r0]
@@ -1999,8 +1999,8 @@ _08108D5A:
bx r0
thumb_func_end sub_8108CFC
- thumb_func_start sub_8108D60
-sub_8108D60: @ 8108D60
+ thumb_func_start ItemMenu_MoveItemSlotToNewPositionInArray
+ItemMenu_MoveItemSlotToNewPositionInArray: @ 8108D60
push {r4-r6,lr}
adds r4, r0, 0
adds r3, r2, 0
@@ -2057,7 +2057,7 @@ _08108DC0:
pop {r4-r6}
pop {r0}
bx r0
- thumb_func_end sub_8108D60
+ thumb_func_end ItemMenu_MoveItemSlotToNewPositionInArray
thumb_func_start sub_8108DC8
sub_8108DC8: @ 8108DC8
@@ -2069,7 +2069,7 @@ sub_8108DC8: @ 8108DC8
adds r4, r1, r0
ldr r0, [r4]
ldrb r1, [r4, 0x4]
- bl sub_809A584
+ bl BagPocketCompaction
ldr r3, _08108E40 @ =gUnknown_203AD10
ldr r0, [r3]
adds r0, 0xA
@@ -2150,8 +2150,8 @@ _08108E58:
bx r0
thumb_func_end sub_8108E54
- thumb_func_start sub_8108E70
-sub_8108E70: @ 8108E70
+ thumb_func_start DisplayItemMessageInBag
+DisplayItemMessageInBag: @ 8108E70
push {r4-r6,lr}
mov r6, r9
mov r5, r8
@@ -2192,7 +2192,7 @@ sub_8108E70: @ 8108E70
movs r3, 0xD
bl DisplayMessageAndContinueTask
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x10
pop {r3,r4}
mov r8, r3
@@ -2202,17 +2202,17 @@ sub_8108E70: @ 8108E70
bx r0
.align 2, 0
_08108EDC: .4byte gTasks+0x8
- thumb_func_end sub_8108E70
+ thumb_func_end DisplayItemMessageInBag
- thumb_func_start sub_8108EE0
-sub_8108EE0: @ 8108EE0
+ thumb_func_start ItemMenu_SetExitCallback
+ItemMenu_SetExitCallback: @ 8108EE0
ldr r1, _08108EE8 @ =gUnknown_203AD10
ldr r1, [r1]
str r0, [r1]
bx lr
.align 2, 0
_08108EE8: .4byte gUnknown_203AD10
- thumb_func_end sub_8108EE0
+ thumb_func_end ItemMenu_SetExitCallback
thumb_func_start sub_8108EEC
sub_8108EEC: @ 8108EEC
@@ -2313,7 +2313,7 @@ _08108FA0:
adds r4, 0x2
mov r1, sp
adds r2, r4, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
mov r0, sp
ldrh r1, [r0]
ldrh r0, [r4]
@@ -2341,7 +2341,7 @@ _08108FA0:
_08108FE0: .4byte gUnknown_203AD10
_08108FE4:
ldrb r0, [r7]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r4, r0, 0
ldrb r0, [r7]
ldr r5, _08109014 @ =gUnknown_203ACFC
@@ -2353,7 +2353,7 @@ _08108FE4:
adds r3, r5, 0
adds r3, 0x8
adds r2, r3
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
movs r0, 0x2
negs r0, r0
cmp r4, r0
@@ -2376,12 +2376,12 @@ _08109018:
adds r0, r6
lsls r0, 3
adds r0, r1
- ldr r1, _08109040 @ =sub_8108B50
+ ldr r1, _08109040 @ =ItemMenu_StartFadeToExitCallback
b _081090C4
.align 2, 0
_08109038: .4byte gSpecialVar_ItemId
_0810903C: .4byte gTasks
-_08109040: .4byte sub_8108B50
+_08109040: .4byte ItemMenu_StartFadeToExitCallback
_08109044:
movs r0, 0x5
bl PlaySE
@@ -2402,13 +2402,13 @@ _08109044:
adds r0, r6
lsls r0, 3
adds r0, r1
- ldr r1, _08109080 @ =sub_8108B50
+ ldr r1, _08109080 @ =ItemMenu_StartFadeToExitCallback
b _081090C4
.align 2, 0
_08109074: .4byte gUnknown_203AD10
_08109078: .4byte gSpecialVar_ItemId
_0810907C: .4byte gTasks
-_08109080: .4byte sub_8108B50
+_08109080: .4byte ItemMenu_StartFadeToExitCallback
_08109084:
bl sub_8108978
ldrb r0, [r7]
@@ -2514,9 +2514,9 @@ sub_8109140: @ 8109140
movs r1, 0
movs r2, 0xE
movs r3, 0x1E
- bl sub_80F6B08
+ bl SetBgRectPal
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x8
pop {r0}
bx r0
@@ -2617,9 +2617,9 @@ sub_81091D0: @ 81091D0
adds r1, r2, r1
adds r3, 0x8
adds r2, r3
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r0, _08109290 @ =gUnknown_203AD10
ldr r0, [r0]
ldrb r1, [r0, 0x5]
@@ -2627,7 +2627,7 @@ sub_81091D0: @ 81091D0
lsrs r1, 30
movs r0, 0x1
eors r0, r1
- bl sub_8098940
+ bl DestroyItemMenuIcon
bl sub_8108978
_08109242:
movs r0, 0x12
@@ -2640,7 +2640,7 @@ _08109242:
movs r3, 0x1
bl FillBgTilemapBufferRect_Palette0
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r0, _0810928C @ =gUnknown_203ACFC
ldrb r0, [r0, 0x6]
adds r0, r6
@@ -2677,7 +2677,7 @@ sub_8109298: @ 8109298
lsls r0, 3
ldr r1, _081092DC @ =gTasks+0x8
adds r5, r0, r1
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
cmp r0, 0
bne _08109314
@@ -2792,7 +2792,7 @@ _08109358:
movs r0, 0x2
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl sub_8108888
bl sub_81088D8
adds r0, r6, 0
@@ -2830,12 +2830,12 @@ sub_81093B8: @ 81093B8
mov r2, sp
adds r2, 0x16
add r1, sp, 0x14
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
mov r2, r8
ldrb r0, [r2]
movs r1, 0x10
movs r2, 0x1
- bl sub_8107BD0
+ bl ListMenuSetUnkIndicatorsStructField
mov r0, r8
strh r4, [r0, 0x2]
ldr r0, _08109498 @ =gUnknown_203AD10
@@ -2853,12 +2853,12 @@ sub_81093B8: @ 81093B8
bl BagGetItemIdByPocketPosition
lsls r0, 16
lsrs r0, 16
- bl ItemId_GetItem
+ bl ItemId_GetName
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
ldr r4, _081094A4 @ =gStringVar4
- ldr r1, _081094A8 @ =gUnknown_841633F
+ ldr r1, _081094A8 @ =gOtherText_WhereShouldTheStrVar1BePlaced
adds r0, r4, 0
bl StringExpandPlaceholders
movs r0, 0x1
@@ -2910,7 +2910,7 @@ _08109498: .4byte gUnknown_203AD10
_0810949C: .4byte gStringVar1
_081094A0: .4byte gUnknown_203ACFC
_081094A4: .4byte gStringVar4
-_081094A8: .4byte gUnknown_841633F
+_081094A8: .4byte gOtherText_WhereShouldTheStrVar1BePlaced
_081094AC: .4byte sub_81094B0
thumb_func_end sub_81093B8
@@ -2931,7 +2931,7 @@ sub_81094B0: @ 81094B0
cmp r0, 0x1
beq _0810959E
ldrb r0, [r4]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r5, r0, 0
ldrb r0, [r4]
ldr r3, _0810953C @ =gUnknown_203ACFC
@@ -2942,7 +2942,7 @@ sub_81094B0: @ 81094B0
adds r1, r2, r1
adds r3, 0x8
adds r2, r3
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldrb r0, [r4]
bl ListMenuGetYCoordForPrintingArrowCursor
adds r1, r0, 0
@@ -2967,7 +2967,7 @@ sub_81094B0: @ 81094B0
adds r4, 0x2
mov r1, sp
adds r2, r4, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
mov r0, sp
ldrh r1, [r0]
ldrh r0, [r4]
@@ -3001,7 +3001,7 @@ _08109558:
adds r4, 0x2
mov r1, sp
adds r2, r4, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
mov r0, sp
ldrh r1, [r0]
ldrh r0, [r4]
@@ -3071,7 +3071,7 @@ _081095E8:
ldr r0, [r0]
adds r1, r2, 0
adds r2, r5, 0
- bl sub_8108D60
+ bl ItemMenu_MoveItemSlotToNewPositionInArray
ldrb r0, [r6]
ldrh r2, [r4, 0x6]
lsls r2, 1
@@ -3082,7 +3082,7 @@ _081095E8:
adds r7, r4, 0
adds r7, 0x8
adds r2, r7
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r3, 0x2
ldrsh r0, [r6, r3]
cmp r0, r5
@@ -3160,7 +3160,7 @@ sub_810967C: @ 810967C
adds r7, r5, 0
adds r7, 0x8
adds r2, r7
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r3, 0x2
ldrsh r0, [r6, r3]
cmp r0, r4
@@ -3374,7 +3374,7 @@ sub_8109854: @ 8109854
movs r2, 0xB
bl CopyToBgTilemapBufferRect
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x8
pop {r0}
bx r0
@@ -3464,7 +3464,7 @@ _08109930: .4byte gUnknown_203AD24
_08109934: .4byte gUnknown_8452F30
_08109938: .4byte gUnknown_203AD28
_0810993C:
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3551,7 +3551,7 @@ _081099EC:
strb r0, [r4]
ldr r0, _08109A10 @ =gSpecialVar_ItemId
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3715,7 +3715,7 @@ _08109AD4:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x6
movs r1, 0
bl sub_810B9DC
@@ -3727,7 +3727,7 @@ _08109AD4:
ldr r1, _08109BAC @ =gStringVar1
bl CopyItemName
ldr r6, _08109BB0 @ =gStringVar4
- ldr r1, _08109BB4 @ =gUnknown_84162FF
+ ldr r1, _08109BB4 @ =gOtherText_StrVar1
adds r0, r6, 0
bl StringExpandPlaceholders
movs r0, 0x2
@@ -3754,7 +3754,7 @@ _08109BA4: .4byte gUnknown_8452EB8
_08109BA8: .4byte gSpecialVar_ItemId
_08109BAC: .4byte gStringVar1
_08109BB0: .4byte gStringVar4
-_08109BB4: .4byte gUnknown_84162FF
+_08109BB4: .4byte gOtherText_StrVar1
thumb_func_end sub_8109890
thumb_func_start sub_8109BB8
@@ -3791,7 +3791,7 @@ sub_8109BE4: @ 8109BE4
lsrs r0, 24
cmp r0, 0x1
beq _08109C42
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
@@ -3852,7 +3852,7 @@ sub_8109C50: @ 8109C50
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl CalculatePlayerPartyCount
lsls r0, 24
cmp r0, 0
@@ -4008,7 +4008,7 @@ sub_8109DB0: @ 8109DB0
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrb r0, [r4]
movs r1, 0x1
bl bag_menu_print_cursor_
@@ -4035,7 +4035,7 @@ sub_8109DEC: @ 8109DEC
adds r0, r4, 0
adds r0, 0x10
ldrh r1, [r4, 0x4]
- bl sub_80BF848
+ bl AdjustQuantityAccordingToDPadInput
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4066,7 +4066,7 @@ _08109E20:
movs r0, 0
bl sub_810BA3C
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl sub_8108978
adds r0, r5, 0
bl sub_8109D38
@@ -4089,7 +4089,7 @@ _08109E64:
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrb r0, [r4]
movs r1, 0x1
bl bag_menu_print_cursor_
@@ -4213,7 +4213,7 @@ _08109F6E:
adds r6, r4, 0
adds r6, 0x8
adds r2, r6
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4, 0x6]
bl sub_8108DC8
ldrb r0, [r4, 0x6]
@@ -4234,7 +4234,7 @@ _08109F6E:
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrb r0, [r7]
movs r1, 0x1
bl bag_menu_print_cursor_
@@ -4304,7 +4304,7 @@ _0810A052:
adds r6, r4, 0
adds r6, 0x8
adds r2, r6
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4, 0x6]
bl sub_810842C
ldr r0, _0810A0A4 @ =gMultiuseListMenuTemplate
@@ -4376,7 +4376,7 @@ sub_810A0A8: @ 810A0A8
ldr r3, _0810A11C @ =sub_810A1D0
adds r0, r4, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
b _0810A166
.align 2, 0
_0810A110: .4byte gTasks+0x8
@@ -4404,13 +4404,13 @@ _0810A13E:
mov r0, r8
subs r0, 0x8
adds r0, r6, r0
- ldr r1, _0810A15C @ =sub_8108B50
+ ldr r1, _0810A15C @ =ItemMenu_StartFadeToExitCallback
str r1, [r0]
b _0810A166
.align 2, 0
_0810A154: .4byte gUnknown_203AD10
_0810A158: .4byte sub_8126EDC
-_0810A15C: .4byte sub_8108B50
+_0810A15C: .4byte ItemMenu_StartFadeToExitCallback
_0810A160:
adds r0, r7, 0
bl sub_810A18C
@@ -4430,7 +4430,7 @@ sub_810A170: @ 810A170
ldr r2, _0810A184 @ =gText_ThereIsNoPokemon
ldr r3, _0810A188 @ =sub_810A1D0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
pop {r0}
bx r0
.align 2, 0
@@ -4456,7 +4456,7 @@ sub_810A18C: @ 810A18C
adds r0, r4, 0
movs r1, 0x2
adds r2, r5, 0
- bl sub_8108E70
+ bl DisplayItemMessageInBag
pop {r4,r5}
pop {r0}
bx r0
@@ -4519,7 +4519,7 @@ sub_810A1F8: @ 810A1F8
adds r3, r4
mov r9, r3
add r2, r9
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4, 0x6]
bl sub_8108DC8
ldrb r0, [r4, 0x6]
@@ -4538,7 +4538,7 @@ sub_810A1F8: @ 810A1F8
lsrs r0, 24
strh r0, [r5]
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrb r0, [r5]
movs r1, 0x1
bl bag_menu_print_cursor_
@@ -4573,7 +4573,7 @@ sub_810A288: @ 810A288
adds r6, 0x2
mov r1, sp
adds r2, r6, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
mov r0, sp
ldrh r0, [r0]
ldrh r1, [r6]
@@ -4582,7 +4582,7 @@ sub_810A288: @ 810A288
movs r0, 0
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrb r0, [r4]
movs r1, 0x1
bl bag_menu_print_cursor_
@@ -4611,7 +4611,7 @@ sub_810A2DC: @ 810A2DC
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _0810A320 @ =gTasks
lsls r0, r4, 2
adds r0, r4
@@ -4697,7 +4697,7 @@ sub_810A370: @ 810A370
ldr r3, _0810A3C8 @ =sub_810A1D0
adds r0, r5, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
b _0810A426
.align 2, 0
_0810A3BC: .4byte gTasks+0x8
@@ -4719,9 +4719,9 @@ _0810A3DC:
bne _0810A3F8
ldr r0, _0810A3F4 @ =sub_810A448
_0810A3E4:
- bl sub_8108EE0
+ bl ItemMenu_SetExitCallback
adds r0, r5, 0
- bl sub_8108B50
+ bl ItemMenu_StartFadeToExitCallback
b _0810A426
.align 2, 0
_0810A3F0: .4byte 0x0000016d
@@ -4740,11 +4740,11 @@ _0810A3F8:
mov r0, r9
subs r0, 0x8
adds r0, r7, r0
- ldr r1, _0810A41C @ =sub_8108B50
+ ldr r1, _0810A41C @ =ItemMenu_StartFadeToExitCallback
str r1, [r0]
b _0810A426
.align 2, 0
-_0810A41C: .4byte sub_8108B50
+_0810A41C: .4byte ItemMenu_StartFadeToExitCallback
_0810A420:
adds r0, r5, 0
bl sub_810A18C
@@ -4776,7 +4776,7 @@ sub_810A448: @ 810A448
ldr r1, _0810A458 @ =sub_810A45C
movs r0, 0x1
movs r2, 0
- bl sub_813CD50
+ bl InitBerryPouch
pop {r0}
bx r0
.align 2, 0
@@ -4817,7 +4817,7 @@ sub_810A468: @ 810A468
lsrs r4, r0, 16
adds r6, r4, 0
adds r0, r4, 0
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4826,7 +4826,7 @@ sub_810A468: @ 810A468
ldr r3, _0810A4C0 @ =sub_810A1D0
adds r0, r5, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
b _0810A51E
.align 2, 0
_0810A4B4: .4byte gTasks+0x8
@@ -4848,9 +4848,9 @@ _0810A4D4:
bne _0810A4F0
ldr r0, _0810A4EC @ =sub_810A540
_0810A4DC:
- bl sub_8108EE0
+ bl ItemMenu_SetExitCallback
adds r0, r5, 0
- bl sub_8108B50
+ bl ItemMenu_StartFadeToExitCallback
b _0810A51E
.align 2, 0
_0810A4E8: .4byte 0x0000016d
@@ -4869,11 +4869,11 @@ _0810A4F0:
mov r0, r9
subs r0, 0x8
adds r0, r7, r0
- ldr r1, _0810A514 @ =sub_8108B50
+ ldr r1, _0810A514 @ =ItemMenu_StartFadeToExitCallback
str r1, [r0]
b _0810A51E
.align 2, 0
-_0810A514: .4byte sub_8108B50
+_0810A514: .4byte ItemMenu_StartFadeToExitCallback
_0810A518:
adds r0, r5, 0
bl sub_810A18C
@@ -4905,7 +4905,7 @@ sub_810A540: @ 810A540
ldr r1, _0810A550 @ =sub_810A554
movs r0, 0x3
movs r2, 0
- bl sub_813CD50
+ bl InitBerryPouch
pop {r0}
bx r0
.align 2, 0
@@ -4954,9 +4954,9 @@ _0810A598:
bne _0810A5B4
ldr r0, _0810A5B0 @ =sub_810A668
_0810A5A0:
- bl sub_8108EE0
+ bl ItemMenu_SetExitCallback
adds r0, r5, 0
- bl sub_8108B50
+ bl ItemMenu_StartFadeToExitCallback
b _0810A63E
.align 2, 0
_0810A5AC: .4byte 0x0000016d
@@ -4981,7 +4981,7 @@ _0810A5B4:
ldr r3, _0810A5F4 @ =sub_810A1F8
adds r0, r5, 0
adds r2, r4, 0
- bl sub_8108E70
+ bl DisplayItemMessageInBag
b _0810A63E
.align 2, 0
_0810A5E8: .4byte gStringVar1
@@ -5019,7 +5019,7 @@ _0810A618:
ldr r3, _0810A650 @ =sub_810A770
adds r0, r7, 0
adds r2, r4, 0
- bl sub_8108E70
+ bl DisplayItemMessageInBag
_0810A63E:
pop {r4-r7}
pop {r0}
@@ -5050,7 +5050,7 @@ sub_810A668: @ 810A668
ldr r1, _0810A678 @ =sub_810A67C
movs r0, 0x2
movs r2, 0
- bl sub_813CD50
+ bl InitBerryPouch
pop {r0}
bx r0
.align 2, 0
@@ -5112,7 +5112,7 @@ sub_810A690: @ 810A690
ldr r3, _0810A708 @ =sub_810A70C
adds r0, r5, 0
adds r2, r4, 0
- bl sub_8108E70
+ bl DisplayItemMessageInBag
pop {r4-r6}
pop {r0}
bx r0
@@ -5160,7 +5160,7 @@ sub_810A720: @ 810A720
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrb r0, [r4]
movs r1, 0x1
bl bag_menu_print_cursor_
@@ -5296,7 +5296,7 @@ sub_810A85C: @ 810A85C
adds r0, r5, 0
adds r0, 0x10
ldrh r1, [r5, 0x4]
- bl sub_80BF848
+ bl AdjustQuantityAccordingToDPadInput
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -5339,7 +5339,7 @@ _0810A8BC:
movs r0, 0
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl sub_8108978
adds r0, r4, 0
bl sub_810A690
@@ -5366,7 +5366,7 @@ _0810A8F0:
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl sub_8108978
ldrb r0, [r5]
movs r1, 0x1
@@ -5393,7 +5393,7 @@ sub_810A940: @ 810A940
movs r0, 0
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r0, _0810A9B8 @ =gSpecialVar_ItemId
ldrh r0, [r0]
ldr r1, _0810A9BC @ =gStringVar1
@@ -5426,7 +5426,7 @@ sub_810A940: @ 810A940
adds r0, r5, 0
movs r1, 0x2
adds r2, r4, 0
- bl sub_8108E70
+ bl DisplayItemMessageInBag
pop {r4-r6}
pop {r0}
bx r0
@@ -5497,7 +5497,7 @@ sub_810A9D4: @ 810A9D4
adds r3, r4
mov r9, r3
add r2, r9
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4, 0x6]
bl sub_8108DC8
ldrb r0, [r4, 0x6]
@@ -5659,7 +5659,7 @@ sub_810AB88: @ 810AB88
adds r0, r4, 0
adds r0, 0x10
ldrh r1, [r4, 0x4]
- bl sub_80BF848
+ bl AdjustQuantityAccordingToDPadInput
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -5690,7 +5690,7 @@ _0810ABBC:
movs r0, 0
bl sub_810BA3C
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl sub_8108978
adds r0, r5, 0
bl sub_810AC40
@@ -5711,7 +5711,7 @@ _0810AC00:
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrb r0, [r4]
movs r1, 0x1
bl bag_menu_print_cursor_
@@ -5753,7 +5753,7 @@ sub_810AC40: @ 810AC40
ldr r3, _0810ACD4 @ =0x0000ffff
movs r0, 0x1C
movs r1, 0
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
ldrh r0, [r5]
ldr r1, _0810ACD8 @ =gStringVar1
bl CopyItemName
@@ -5803,7 +5803,7 @@ _0810ACEC:
ldr r3, _0810AD0C @ =sub_810A1D0
adds r0, r4, 0
movs r1, 0x2
- bl sub_8108E70
+ bl DisplayItemMessageInBag
_0810ACF8:
add sp, 0x14
pop {r3,r4}
@@ -6212,7 +6212,7 @@ _0810B01C:
ldrb r0, [r5]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_810AECC
bl sub_8108CB4
adds r0, r7, 0
@@ -6383,7 +6383,7 @@ sub_810B180: @ 810B180
_0810B198: .4byte gMain
_0810B19C:
bl sub_810AECC
- bl sub_815AC20
+ bl SetTeachyTvControllerModeToResume
ldr r0, _0810B1C4 @ =gUnknown_203AD10
ldr r1, [r0]
ldr r0, _0810B1C8 @ =CB2_ReturnToTeachyTV
@@ -6507,7 +6507,7 @@ _0810B290:
movs r0, 0x5
bl PlaySE
movs r0, 0x1
- bl MoveMenuCursorNoWrapAround
+ bl Menu_MoveCursorNoWrapAround
b _0810B36C
_0810B29E:
movs r0, 0x5
@@ -6537,7 +6537,7 @@ _0810B29E:
adds r6, r4, 0
adds r6, 0x8
adds r2, r6
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4, 0x6]
bl sub_810842C
ldr r0, _0810B328 @ =gMultiuseListMenuTemplate
@@ -6573,7 +6573,7 @@ _0810B32C:
movs r0, 0x80
strh r0, [r1, 0x30]
ldrb r0, [r7]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
b _0810B36C
.align 2, 0
_0810B340: .4byte gMain
@@ -6583,7 +6583,7 @@ _0810B344:
ldrb r0, [r7]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_810AECC
bl sub_8108CB4
adds r0, r6, 0
@@ -6701,7 +6701,7 @@ _0810B428:
_0810B430:
strh r0, [r1, 0x30]
ldrb r0, [r4]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
b _0810B4B0
.align 2, 0
_0810B43C: .4byte gMain
@@ -6738,7 +6738,7 @@ _0810B468:
ldrb r0, [r4]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_810AECC
bl sub_8108CB4
adds r0, r7, 0
@@ -6817,7 +6817,7 @@ _0810B528:
strh r6, [r0, 0x2E]
strh r7, [r0, 0x30]
ldrb r0, [r5]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
b _0810B5C0
.align 2, 0
_0810B538: .4byte gMain
@@ -6854,13 +6854,13 @@ _0810B564:
ldrb r0, [r5]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_810AECC
ldr r1, _0810B5B0 @ =gUnknown_3005E98
ldr r0, _0810B5B4 @ =ItemUseCB_Medicine
str r0, [r1]
ldr r0, _0810B5B8 @ =sub_81279A4
- bl sub_8108EE0
+ bl ItemMenu_SetExitCallback
mov r0, r9
subs r0, 0x8
add r0, r8
@@ -6950,7 +6950,7 @@ _0810B64E:
strh r5, [r0, 0x2E]
strh r7, [r0, 0x30]
ldrb r0, [r6]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
b _0810B6E0
.align 2, 0
_0810B65C: .4byte gMain
@@ -6989,7 +6989,7 @@ _0810B68C:
ldrb r0, [r6]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_810AECC
ldr r0, _0810B6D4 @ =gUnknown_203AD10
ldr r1, [r0]
diff --git a/asm/item_menu_icons.s b/asm/item_menu_icons.s
deleted file mode 100644
index 118591dc2..000000000
--- a/asm/item_menu_icons.s
+++ /dev/null
@@ -1,680 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80984D8
-sub_80984D8: @ 80984D8
- push {r4,lr}
- movs r2, 0
- ldr r4, _080984F8 @ =gUnknown_2039878
- movs r3, 0xFF
-_080984E0:
- adds r0, r2, r4
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0xB
- bls _080984E0
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080984F8: .4byte gUnknown_2039878
- thumb_func_end sub_80984D8
-
- thumb_func_start sub_80984FC
-sub_80984FC: @ 80984FC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08098520 @ =gUnknown_83D41FC
- movs r1, 0x28
- movs r2, 0x44
- movs r3, 0
- bl CreateSprite
- ldr r1, _08098524 @ =gUnknown_2039878
- strb r0, [r1]
- adds r0, r4, 0
- bl sub_8098528
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08098520: .4byte gUnknown_83D41FC
-_08098524: .4byte gUnknown_2039878
- thumb_func_end sub_80984FC
-
- thumb_func_start sub_8098528
-sub_8098528: @ 8098528
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08098550 @ =gUnknown_2039878
- ldrb r2, [r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- ldr r2, _08098554 @ =gSprites
- adds r0, r2
- ldr r2, _08098558 @ =0x0000fffb
- strh r2, [r0, 0x26]
- ldr r2, _0809855C @ =sub_8098560
- str r2, [r0, 0x1C]
- bl StartSpriteAnim
- pop {r0}
- bx r0
- .align 2, 0
-_08098550: .4byte gUnknown_2039878
-_08098554: .4byte gSprites
-_08098558: .4byte 0x0000fffb
-_0809855C: .4byte sub_8098560
- thumb_func_end sub_8098528
-
- thumb_func_start sub_8098560
-sub_8098560: @ 8098560
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x26]
- movs r3, 0x26
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08098574
- adds r0, r2, 0x1
- strh r0, [r1, 0x26]
- b _08098578
-_08098574:
- ldr r0, _0809857C @ =SpriteCallbackDummy
- str r0, [r1, 0x1C]
-_08098578:
- pop {r0}
- bx r0
- .align 2, 0
-_0809857C: .4byte SpriteCallbackDummy
- thumb_func_end sub_8098560
-
- thumb_func_start sub_8098580
-sub_8098580: @ 8098580
- push {r4,lr}
- ldr r0, _080985B0 @ =gUnknown_2039878
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080985B4 @ =gSprites
- adds r4, r0, r1
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080985AA
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, _080985B8 @ =sub_80985BC
- str r0, [r4, 0x1C]
-_080985AA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080985B0: .4byte gUnknown_2039878
-_080985B4: .4byte gSprites
-_080985B8: .4byte sub_80985BC
- thumb_func_end sub_8098580
-
- thumb_func_start sub_80985BC
-sub_80985BC: @ 80985BC
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080985D8
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- ldr r0, _080985E0 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_080985D8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080985E0: .4byte SpriteCallbackDummy
- thumb_func_end sub_80985BC
-
- thumb_func_start sub_80985E4
-sub_80985E4: @ 80985E4
- push {r4-r7,lr}
- ldr r7, _08098620 @ =gUnknown_2039879
- movs r5, 0
- ldr r6, _08098624 @ =gSprites
-_080985EC:
- lsls r1, r5, 20
- movs r0, 0xC0
- lsls r0, 15
- adds r1, r0
- asrs r1, 16
- ldr r0, _08098628 @ =gUnknown_83D4250
- movs r2, 0x7
- movs r3, 0
- bl CreateSprite
- adds r1, r7, r5
- strb r0, [r1]
- adds r4, r1, 0
- cmp r5, 0
- beq _0809863C
- cmp r5, 0x8
- bne _0809862C
- ldrb r1, [r7, 0x8]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x2
- bl StartSpriteAnim
- b _0809863C
- .align 2, 0
-_08098620: .4byte gUnknown_2039879
-_08098624: .4byte gSprites
-_08098628: .4byte gUnknown_83D4250
-_0809862C:
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- bl StartSpriteAnim
-_0809863C:
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x8
- bls _080985EC
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80985E4
-
- thumb_func_start sub_8098660
-sub_8098660: @ 8098660
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r7, _080986A0 @ =gUnknown_2039879
- movs r3, 0
- ldr r6, _080986A4 @ =gSprites
- movs r1, 0x1
- ands r0, r1
- lsls r4, r0, 2
- movs r5, 0x5
- negs r5, r5
-_08098676:
- adds r0, r7, r3
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r5, 0
- ands r0, r2
- orrs r0, r4
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x8
- bls _08098676
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080986A0: .4byte gUnknown_2039879
-_080986A4: .4byte gSprites
- thumb_func_end sub_8098660
-
- thumb_func_start sub_80986A8
-sub_80986A8: @ 80986A8
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r7, _080986E4 @ =gUnknown_2039879
- movs r3, 0
- ldr r4, _080986E8 @ =gSprites
- adds r5, r1, 0x7
-_080986BA:
- adds r2, r7, r3
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r6, [r0, 0x24]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r5, [r0, 0x22]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x8
- bls _080986BA
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080986E4: .4byte gUnknown_2039879
-_080986E8: .4byte gSprites
- thumb_func_end sub_80986A8
-
- thumb_func_start sub_80986EC
-sub_80986EC: @ 80986EC
- push {r4,r5,lr}
- ldr r5, _08098714 @ =gUnknown_2039884
- movs r0, 0x90
- lsls r0, 1
- bl Alloc
- str r0, [r5]
- cmp r0, 0
- beq _08098722
- ldr r4, _08098718 @ =gUnknown_2039888
- movs r0, 0x80
- lsls r0, 2
- bl AllocZeroed
- str r0, [r4]
- cmp r0, 0
- beq _0809871C
- movs r0, 0x1
- b _08098724
- .align 2, 0
-_08098714: .4byte gUnknown_2039884
-_08098718: .4byte gUnknown_2039888
-_0809871C:
- ldr r0, [r5]
- bl Free
-_08098722:
- movs r0, 0
-_08098724:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80986EC
-
- thumb_func_start CopyItemIconPicTo4x4Buffer
-CopyItemIconPicTo4x4Buffer: @ 809872C
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- movs r4, 0
-_08098734:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 5
- adds r0, r6, r0
- lsls r1, r4, 7
- adds r1, r5, r1
- movs r2, 0x30
- bl CpuSet
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _08098734
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end CopyItemIconPicTo4x4Buffer
-
- thumb_func_start AddItemIconObject
-AddItemIconObject: @ 8098758
- push {r4-r7,lr}
- sub sp, 0x28
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r5, r1, 16
- lsls r2, 16
- lsrs r7, r2, 16
- bl sub_80986EC
- lsls r0, 24
- cmp r0, 0
- beq _08098810
- adds r0, r7, 0
- movs r1, 0
- bl sub_8098974
- ldr r2, _080987FC @ =gUnknown_2039884
- ldr r1, [r2]
- bl LZDecompressWram
- ldr r1, _080987FC @ =gUnknown_2039884
- ldr r0, [r1]
- ldr r2, _08098800 @ =gUnknown_2039888
- ldr r1, [r2]
- bl CopyItemIconPicTo4x4Buffer
- ldr r1, _08098800 @ =gUnknown_2039888
- ldr r0, [r1]
- str r0, [sp, 0x18]
- ldr r4, _08098804 @ =0xffff0000
- add r0, sp, 0x18
- ldr r1, [r0, 0x4]
- ands r1, r4
- movs r2, 0x80
- lsls r2, 2
- orrs r1, r2
- lsls r3, r6, 16
- ldr r2, _08098808 @ =0x0000ffff
- ands r1, r2
- orrs r1, r3
- str r1, [r0, 0x4]
- bl LoadSpriteSheet
- adds r0, r7, 0
- movs r1, 0x1
- bl sub_8098974
- str r0, [sp, 0x20]
- add r0, sp, 0x20
- ldr r1, [r0, 0x4]
- ands r1, r4
- orrs r1, r5
- str r1, [r0, 0x4]
- bl LoadCompressedObjectPalette
- ldr r0, _0809880C @ =gUnknown_83D427C
- mov r1, sp
- movs r2, 0xC
- bl CpuSet
- mov r0, sp
- strh r6, [r0]
- strh r5, [r0, 0x2]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r2, _080987FC @ =gUnknown_2039884
- ldr r0, [r2]
- bl Free
- ldr r1, _08098800 @ =gUnknown_2039888
- ldr r0, [r1]
- bl Free
- adds r0, r4, 0
- b _08098812
- .align 2, 0
-_080987FC: .4byte gUnknown_2039884
-_08098800: .4byte gUnknown_2039888
-_08098804: .4byte 0xffff0000
-_08098808: .4byte 0x0000ffff
-_0809880C: .4byte gUnknown_83D427C
-_08098810:
- movs r0, 0x40
-_08098812:
- add sp, 0x28
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end AddItemIconObject
-
- thumb_func_start AddItemIconObjectWithCustomObjectTemplate
-AddItemIconObjectWithCustomObjectTemplate: @ 809881C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x28
- mov r8, r0
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 16
- lsrs r5, r2, 16
- lsls r3, 16
- lsrs r7, r3, 16
- bl sub_80986EC
- lsls r0, 24
- cmp r0, 0
- beq _080988D8
- adds r0, r7, 0
- movs r1, 0
- bl sub_8098974
- ldr r2, _080988C8 @ =gUnknown_2039884
- ldr r1, [r2]
- bl LZDecompressWram
- ldr r1, _080988C8 @ =gUnknown_2039884
- ldr r0, [r1]
- ldr r2, _080988CC @ =gUnknown_2039888
- ldr r1, [r2]
- bl CopyItemIconPicTo4x4Buffer
- ldr r1, _080988CC @ =gUnknown_2039888
- ldr r0, [r1]
- str r0, [sp, 0x18]
- ldr r4, _080988D0 @ =0xffff0000
- add r0, sp, 0x18
- ldr r1, [r0, 0x4]
- ands r1, r4
- movs r2, 0x80
- lsls r2, 2
- orrs r1, r2
- lsls r3, r6, 16
- ldr r2, _080988D4 @ =0x0000ffff
- ands r1, r2
- orrs r1, r3
- str r1, [r0, 0x4]
- bl LoadSpriteSheet
- adds r0, r7, 0
- movs r1, 0x1
- bl sub_8098974
- str r0, [sp, 0x20]
- add r0, sp, 0x20
- ldr r1, [r0, 0x4]
- ands r1, r4
- orrs r1, r5
- str r1, [r0, 0x4]
- bl LoadCompressedObjectPalette
- mov r0, r8
- mov r1, sp
- movs r2, 0xC
- bl CpuSet
- mov r0, sp
- strh r6, [r0]
- strh r5, [r0, 0x2]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r2, _080988C8 @ =gUnknown_2039884
- ldr r0, [r2]
- bl Free
- ldr r1, _080988CC @ =gUnknown_2039888
- ldr r0, [r1]
- bl Free
- adds r0, r4, 0
- b _080988DA
- .align 2, 0
-_080988C8: .4byte gUnknown_2039884
-_080988CC: .4byte gUnknown_2039888
-_080988D0: .4byte 0xffff0000
-_080988D4: .4byte 0x0000ffff
-_080988D8:
- movs r0, 0x40
-_080988DA:
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end AddItemIconObjectWithCustomObjectTemplate
-
- thumb_func_start sub_80988E8
-sub_80988E8: @ 80988E8
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08098938 @ =gUnknown_2039882
- adds r5, r1, r0
- ldrb r0, [r5]
- cmp r0, 0xFF
- bne _08098932
- adds r4, r1, 0
- adds r4, 0x66
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- adds r0, r4, 0
- adds r1, r4, 0
- adds r2, r6, 0
- bl AddItemIconObject
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _08098932
- strb r2, [r5]
- ldr r1, _0809893C @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0x18
- strh r1, [r0, 0x24]
- movs r1, 0x8C
- strh r1, [r0, 0x26]
-_08098932:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08098938: .4byte gUnknown_2039882
-_0809893C: .4byte gSprites
- thumb_func_end sub_80988E8
-
- thumb_func_start sub_8098940
-sub_8098940: @ 8098940
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0809896C @ =gUnknown_2039882
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _08098964
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08098970 @ =gSprites
- adds r0, r1
- bl DestroySpriteAndFreeResources
- movs r0, 0xFF
- strb r0, [r4]
-_08098964:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809896C: .4byte gUnknown_2039882
-_08098970: .4byte gSprites
- thumb_func_end sub_8098940
-
- thumb_func_start sub_8098974
-sub_8098974: @ 8098974
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08098998 @ =0x00000177
- cmp r3, r0
- bls _08098986
- movs r3, 0
-_08098986:
- ldr r2, _0809899C @ =gUnknown_83D4294
- lsls r0, r1, 2
- lsls r1, r3, 3
- adds r0, r1
- adds r0, r2
- ldr r0, [r0]
- pop {r1}
- bx r1
- .align 2, 0
-_08098998: .4byte 0x00000177
-_0809899C: .4byte gUnknown_83D4294
- thumb_func_end sub_8098974
-
- thumb_func_start sub_80989A0
-sub_80989A0: @ 80989A0
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _080989F0 @ =gUnknown_2039882
- adds r5, r1, r0
- ldrb r0, [r5]
- cmp r0, 0xFF
- bne _080989EA
- adds r4, r1, 0
- adds r4, 0x66
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- adds r0, r4, 0
- adds r1, r4, 0
- adds r2, r6, 0
- bl AddItemIconObject
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080989EA
- strb r2, [r5]
- ldr r1, _080989F4 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0x18
- strh r1, [r0, 0x24]
- movs r1, 0x93
- strh r1, [r0, 0x26]
-_080989EA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080989F0: .4byte gUnknown_2039882
-_080989F4: .4byte gSprites
- thumb_func_end sub_80989A0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/item_pc.s b/asm/item_pc.s
deleted file mode 100644
index e7a9f8ee5..000000000
--- a/asm/item_pc.s
+++ /dev/null
@@ -1,2909 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_810D3F4
-sub_810D3F4: @ 810D3F4
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- cmp r5, 0x1
- bhi _0810D410
- ldr r6, _0810D418 @ =gUnknown_203ADBC
- movs r0, 0x14
- bl Alloc
- str r0, [r6]
- cmp r0, 0
- bne _0810D41C
-_0810D410:
- adds r0, r4, 0
- bl SetMainCallback2
- b _0810D462
- .align 2, 0
-_0810D418: .4byte gUnknown_203ADBC
-_0810D41C:
- cmp r5, 0x1
- beq _0810D42A
- ldr r0, _0810D468 @ =gUnknown_203ADCC
- str r4, [r0]
- movs r1, 0
- strh r1, [r0, 0x6]
- strh r1, [r0, 0x4]
-_0810D42A:
- ldr r1, [r6]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r0, [r6]
- movs r2, 0
- strb r2, [r0, 0x5]
- ldr r1, [r6]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x8]
- ldr r0, [r6]
- str r2, [r0]
- ldr r5, _0810D46C @ =sub_810D4A0
- adds r4, r6, 0
- movs r3, 0
-_0810D448:
- ldr r0, [r4]
- lsls r1, r2, 1
- adds r0, 0xC
- adds r0, r1
- strh r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _0810D448
- adds r0, r5, 0
- bl SetMainCallback2
-_0810D462:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810D468: .4byte gUnknown_203ADCC
-_0810D46C: .4byte sub_810D4A0
- thumb_func_end sub_810D3F4
-
- thumb_func_start sub_810D470
-sub_810D470: @ 810D470
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_810D470
-
- thumb_func_start sub_810D48C
-sub_810D48C: @ 810D48C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_810D48C
-
- thumb_func_start sub_810D4A0
-sub_810D4A0: @ 810D4A0
- push {lr}
-_0810D4A2:
- bl sub_810D4C0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810D4BA
- bl sub_80BF708
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810D4A2
-_0810D4BA:
- pop {r0}
- bx r0
- thumb_func_end sub_810D4A0
-
- thumb_func_start sub_810D4C0
-sub_810D4C0: @ 810D4C0
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0810D4E0 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x14
- bls _0810D4D4
- b _0810D688
-_0810D4D4:
- lsls r0, 2
- ldr r1, _0810D4E4 @ =_0810D4E8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810D4E0: .4byte gMain
-_0810D4E4: .4byte _0810D4E8
- .align 2, 0
-_0810D4E8:
- .4byte _0810D53C
- .4byte _0810D546
- .4byte _0810D54C
- .4byte _0810D552
- .4byte _0810D558
- .4byte _0810D55E
- .4byte _0810D564
- .4byte _0810D56A
- .4byte _0810D584
- .4byte _0810D594
- .4byte _0810D59A
- .4byte _0810D5A8
- .4byte _0810D5BA
- .4byte _0810D5C0
- .4byte _0810D5C6
- .4byte _0810D5CC
- .4byte _0810D608
- .4byte _0810D60E
- .4byte _0810D616
- .4byte _0810D630
- .4byte _0810D668
-_0810D53C:
- bl sub_80BF768
- bl clear_scheduled_bg_copies_to_vram
- b _0810D674
-_0810D546:
- bl ScanlineEffect_Stop
- b _0810D674
-_0810D54C:
- bl FreeAllSpritePalettes
- b _0810D674
-_0810D552:
- bl ResetPaletteFade
- b _0810D674
-_0810D558:
- bl ResetSpriteData
- b _0810D674
-_0810D55E:
- bl sub_80984D8
- b _0810D674
-_0810D564:
- bl ResetTasks
- b _0810D674
-_0810D56A:
- bl sub_810D71C
- lsls r0, 24
- cmp r0, 0
- beq _0810D5B2
- ldr r0, _0810D580 @ =gUnknown_203ADBC
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1, 0xC]
- b _0810D674
- .align 2, 0
-_0810D580: .4byte gUnknown_203ADBC
-_0810D584:
- bl sub_810D78C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810D592
- b _0810D6A0
-_0810D592:
- b _0810D674
-_0810D594:
- bl sub_810E8F0
- b _0810D674
-_0810D59A:
- bl sub_810DDA4
- bl sub_810DBF0
- bl sub_810DE08
- b _0810D674
-_0810D5A8:
- bl sub_810D83C
- lsls r0, 24
- cmp r0, 0
- bne _0810D674
-_0810D5B2:
- bl sub_810D6AC
- movs r0, 0x1
- b _0810D6A2
-_0810D5BA:
- bl sub_810D878
- b _0810D674
-_0810D5C0:
- bl sub_810DB34
- b _0810D674
-_0810D5C6:
- bl sub_80985E4
- b _0810D674
-_0810D5CC:
- ldr r0, _0810D5F8 @ =sub_810DEA0
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810D5FC @ =gMultiuseListMenuTemplate
- ldr r2, _0810D600 @ =gUnknown_203ADCC
- ldrh r1, [r2, 0x4]
- ldrh r2, [r2, 0x6]
- bl ListMenuInit
- ldr r2, _0810D604 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x8]
- b _0810D674
- .align 2, 0
-_0810D5F8: .4byte sub_810DEA0
-_0810D5FC: .4byte gMultiuseListMenuTemplate
-_0810D600: .4byte gUnknown_203ADCC
-_0810D604: .4byte gTasks
-_0810D608:
- bl sub_810DB5C
- b _0810D674
-_0810D60E:
- movs r0, 0x1D
- bl HelpSystem_SetSomeVariable2
- b _0810D674
-_0810D616:
- ldr r0, _0810D62C @ =gUnknown_203ADCC
- ldrb r0, [r0, 0x8]
- cmp r0, 0x1
- bne _0810D674
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- b _0810D674
- .align 2, 0
-_0810D62C: .4byte gUnknown_203ADCC
-_0810D630:
- ldr r0, _0810D64C @ =gUnknown_203ADCC
- ldrb r0, [r0, 0x8]
- cmp r0, 0x1
- bne _0810D650
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _0810D674
- .align 2, 0
-_0810D64C: .4byte gUnknown_203ADCC
-_0810D650:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80A0A48
- movs r0, 0x1
- bl sub_810DE94
- movs r0, 0x2
- bl PlaySE
- b _0810D674
-_0810D668:
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810D6A0
-_0810D674:
- ldr r1, _0810D684 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0810D6A0
- .align 2, 0
-_0810D684: .4byte gMain
-_0810D688:
- ldr r0, _0810D698 @ =sub_810D48C
- bl SetVBlankCallback
- ldr r0, _0810D69C @ =sub_810D470
- bl SetMainCallback2
- movs r0, 0x1
- b _0810D6A2
- .align 2, 0
-_0810D698: .4byte sub_810D48C
-_0810D69C: .4byte sub_810D470
-_0810D6A0:
- movs r0, 0
-_0810D6A2:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_810D4C0
-
- thumb_func_start sub_810D6AC
-sub_810D6AC: @ 810D6AC
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0810D6DC @ =sub_810D6E8
- movs r1, 0
- bl CreateTask
- ldr r0, _0810D6E0 @ =sub_810D48C
- bl SetVBlankCallback
- ldr r0, _0810D6E4 @ =sub_810D470
- bl SetMainCallback2
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0810D6DC: .4byte sub_810D6E8
-_0810D6E0: .4byte sub_810D48C
-_0810D6E4: .4byte sub_810D470
- thumb_func_end sub_810D6AC
-
- thumb_func_start sub_810D6E8
-sub_810D6E8: @ 810D6E8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0810D714 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0810D70C
- ldr r0, _0810D718 @ =gUnknown_203ADCC
- ldr r0, [r0]
- bl SetMainCallback2
- bl sub_810DC40
- adds r0, r4, 0
- bl DestroyTask
-_0810D70C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810D714: .4byte gPaletteFade
-_0810D718: .4byte gUnknown_203ADCC
- thumb_func_end sub_810D6E8
-
- thumb_func_start sub_810D71C
-sub_810D71C: @ 810D71C
- push {r4,r5,lr}
- bl sub_80BF7C8
- ldr r5, _0810D77C @ =gUnknown_203ADC0
- movs r4, 0x80
- lsls r4, 4
- adds r0, r4, 0
- bl Alloc
- str r0, [r5]
- cmp r0, 0
- beq _0810D784
- movs r1, 0
- adds r2, r4, 0
- bl memset
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _0810D780 @ =gUnknown_8453F6C
- movs r0, 0
- movs r2, 0x2
- bl InitBgsFromTemplates
- ldr r1, [r5]
- movs r0, 0x1
- bl SetBgTilemapBuffer
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x1
- b _0810D786
- .align 2, 0
-_0810D77C: .4byte gUnknown_203ADC0
-_0810D780: .4byte gUnknown_8453F6C
-_0810D784:
- movs r0, 0
-_0810D786:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_810D71C
-
- thumb_func_start sub_810D78C
-sub_810D78C: @ 810D78C
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _0810D7A8 @ =gUnknown_203ADBC
- ldr r0, [r5]
- movs r1, 0xC
- ldrsh r4, [r0, r1]
- cmp r4, 0x1
- beq _0810D7D0
- cmp r4, 0x1
- bgt _0810D7AC
- cmp r4, 0
- beq _0810D7B6
- b _0810D814
- .align 2, 0
-_0810D7A8: .4byte gUnknown_203ADBC
-_0810D7AC:
- cmp r4, 0x2
- beq _0810D7F0
- cmp r4, 0x3
- beq _0810D800
- b _0810D814
-_0810D7B6:
- bl reset_temp_tile_data_buffers
- ldr r1, _0810D7CC @ =gUnknown_8E85090
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- b _0810D806
- .align 2, 0
-_0810D7CC: .4byte gUnknown_8E85090
-_0810D7D0:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810D830
- ldr r0, _0810D7E8 @ =gUnknown_8E85458
- ldr r1, _0810D7EC @ =gUnknown_203ADC0
- ldr r1, [r1]
- bl LZDecompressWram
- b _0810D806
- .align 2, 0
-_0810D7E8: .4byte gUnknown_8E85458
-_0810D7EC: .4byte gUnknown_203ADC0
-_0810D7F0:
- ldr r0, _0810D7FC @ =gUnknown_8E85408
- movs r1, 0
- movs r2, 0x60
- bl LoadCompressedPalette
- b _0810D806
- .align 2, 0
-_0810D7FC: .4byte gUnknown_8E85408
-_0810D800:
- ldr r0, _0810D810 @ =gUnknown_83D4240
- bl LoadCompressedObjectPic
-_0810D806:
- ldr r1, [r5]
- ldrh r0, [r1, 0xC]
- adds r0, 0x1
- strh r0, [r1, 0xC]
- b _0810D830
- .align 2, 0
-_0810D810: .4byte gUnknown_83D4240
-_0810D814:
- ldr r0, _0810D828 @ =gUnknown_83D4248
- bl LoadCompressedObjectPalette
- ldr r0, _0810D82C @ =gUnknown_203ADBC
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1, 0xC]
- movs r0, 0x1
- b _0810D832
- .align 2, 0
-_0810D828: .4byte gUnknown_83D4248
-_0810D82C: .4byte gUnknown_203ADBC
-_0810D830:
- movs r0, 0
-_0810D832:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_810D78C
-
- thumb_func_start sub_810D83C
-sub_810D83C: @ 810D83C
- push {r4,lr}
- ldr r4, _0810D860 @ =gUnknown_203ADC4
- movs r0, 0xF8
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- beq _0810D868
- ldr r4, _0810D864 @ =gUnknown_203ADC8
- movs r0, 0xD9
- lsls r0, 1
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- beq _0810D868
- movs r0, 0x1
- b _0810D872
- .align 2, 0
-_0810D860: .4byte gUnknown_203ADC4
-_0810D864: .4byte gUnknown_203ADC8
-_0810D868:
- bl sub_810DC40
- bl sub_810D6AC
- movs r0, 0
-_0810D872:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_810D83C
-
- thumb_func_start sub_810D878
-sub_810D878: @ 810D878
- push {r4,r5,lr}
- movs r4, 0
- b _0810D8A4
-_0810D87E:
- ldr r0, _0810D938 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- lsls r1, r4, 2
- adds r0, r1
- movs r1, 0xA6
- lsls r1, 2
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetItem
- ldr r1, _0810D93C @ =gUnknown_203ADC4
- ldr r2, [r1]
- lsls r1, r4, 3
- adds r1, r2
- str r0, [r1]
- str r4, [r1, 0x4]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_0810D8A4:
- ldr r0, _0810D940 @ =gUnknown_203ADBC
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- cmp r4, r0
- bcc _0810D87E
- ldr r0, _0810D93C @ =gUnknown_203ADC4
- ldr r3, [r0]
- lsls r0, r4, 3
- adds r0, r3
- ldr r1, _0810D944 @ =gFameCheckerText_Cancel
- str r1, [r0]
- movs r1, 0x2
- negs r1, r1
- str r1, [r0, 0x4]
- ldr r2, _0810D948 @ =gMultiuseListMenuTemplate
- str r3, [r2]
- ldr r0, _0810D940 @ =gUnknown_203ADBC
- ldr r3, [r0]
- ldrb r0, [r3, 0x7]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r2, 0xC]
- strb r1, [r2, 0x10]
- strb r1, [r2, 0x11]
- movs r0, 0x9
- strb r0, [r2, 0x12]
- movs r1, 0x1
- movs r0, 0x1
- strb r0, [r2, 0x13]
- ldrb r0, [r2, 0x16]
- movs r4, 0x8
- negs r4, r4
- ands r4, r0
- orrs r4, r1
- movs r0, 0x39
- negs r0, r0
- ands r4, r0
- movs r0, 0x10
- orrs r4, r0
- strb r4, [r2, 0x16]
- ldrb r1, [r2, 0x14]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r5, 0x2
- orrs r0, r5
- strb r0, [r2, 0x14]
- ldrb r1, [r3, 0x6]
- strh r1, [r2, 0xE]
- ldrb r1, [r2, 0x17]
- movs r3, 0x40
- negs r3, r3
- ands r3, r1
- orrs r3, r5
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2, 0x14]
- movs r0, 0x30
- strb r0, [r2, 0x15]
- ldr r0, _0810D94C @ =sub_810D954
- str r0, [r2, 0x4]
- ldr r0, _0810D950 @ =sub_810DA20
- str r0, [r2, 0x8]
- movs r0, 0x3F
- ands r4, r0
- strb r4, [r2, 0x16]
- ands r3, r0
- strb r3, [r2, 0x17]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810D938: .4byte gSaveBlock1Ptr
-_0810D93C: .4byte gUnknown_203ADC4
-_0810D940: .4byte gUnknown_203ADBC
-_0810D944: .4byte gFameCheckerText_Cancel
-_0810D948: .4byte gMultiuseListMenuTemplate
-_0810D94C: .4byte sub_810D954
-_0810D950: .4byte sub_810DA20
- thumb_func_end sub_810D878
-
- thumb_func_start sub_810D954
-sub_810D954: @ 810D954
- push {r4,r5,lr}
- sub sp, 0x14
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- beq _0810D968
- movs r0, 0x5
- bl PlaySE
-_0810D968:
- ldr r5, _0810D9BC @ =gUnknown_203ADBC
- ldr r1, [r5]
- ldrb r0, [r1, 0x4]
- cmp r0, 0xFF
- bne _0810DA0A
- ldrb r1, [r1, 0x5]
- movs r0, 0x1
- eors r0, r1
- bl sub_8098940
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _0810D9CE
- lsls r0, r4, 16
- lsrs r0, 16
- bl sub_810DD68
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, [r5]
- ldrb r1, [r0, 0x5]
- adds r0, r4, 0
- bl sub_80988E8
- adds r0, r4, 0
- bl ItemId_GetPocket
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0810D9C4
- adds r0, r4, 0
- bl ItemIdToBattleMoveId
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xD
- muls r1, r0
- ldr r0, _0810D9C0 @ =gMoveNames
- adds r5, r1, r0
- b _0810D9DA
- .align 2, 0
-_0810D9BC: .4byte gUnknown_203ADBC
-_0810D9C0: .4byte gMoveNames
-_0810D9C4:
- adds r0, r4, 0
- bl ItemId_GetDescription
- adds r5, r0, 0
- b _0810D9DA
-_0810D9CE:
- ldr r0, _0810DA14 @ =0x00000177
- ldr r1, [r5]
- ldrb r1, [r1, 0x5]
- bl sub_80988E8
- ldr r5, _0810DA18 @ =gUnknown_84178BE
-_0810D9DA:
- ldr r0, _0810DA1C @ =gUnknown_203ADBC
- ldr r2, [r0]
- ldrb r0, [r2, 0x5]
- movs r1, 0x1
- eors r0, r1
- movs r4, 0
- strb r0, [r2, 0x5]
- movs r0, 0x1
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r1, 0x3
- str r1, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- str r1, [sp, 0x10]
- movs r0, 0x1
- movs r1, 0x2
- adds r2, r5, 0
- movs r3, 0
- bl sub_810EA34
-_0810DA0A:
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DA14: .4byte 0x00000177
-_0810DA18: .4byte gUnknown_84178BE
-_0810DA1C: .4byte gUnknown_203ADBC
- thumb_func_end sub_810D954
-
- thumb_func_start sub_810DA20
-sub_810DA20: @ 810DA20
- push {r4-r6,lr}
- sub sp, 0x14
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r2, 24
- lsrs r5, r2, 24
- ldr r0, _0810DA4C @ =gUnknown_203ADBC
- ldr r0, [r0]
- ldrb r1, [r0, 0x4]
- cmp r1, 0xFF
- beq _0810DA58
- lsls r0, r4, 24
- lsrs r0, 24
- cmp r1, r0
- bne _0810DA50
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_810DAD4
- b _0810DA58
- .align 2, 0
-_0810DA4C: .4byte gUnknown_203ADBC
-_0810DA50:
- adds r0, r5, 0
- movs r1, 0xFF
- bl sub_810DAD4
-_0810DA58:
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _0810DA9E
- lsls r0, r4, 16
- lsrs r0, 16
- bl sub_810DD80
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _0810DAA8 @ =gStringVar1
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r4, _0810DAAC @ =gStringVar4
- ldr r1, _0810DAB0 @ =gText_TimesStrVar1
- adds r0, r4, 0
- bl StringExpandPlaceholders
- str r5, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0xFF
- str r0, [sp, 0xC]
- movs r0, 0x1
- str r0, [sp, 0x10]
- adds r0, r6, 0
- movs r1, 0
- adds r2, r4, 0
- movs r3, 0x6E
- bl sub_810EA34
-_0810DA9E:
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DAA8: .4byte gStringVar1
-_0810DAAC: .4byte gStringVar4
-_0810DAB0: .4byte gText_TimesStrVar1
- thumb_func_end sub_810DA20
-
- thumb_func_start sub_810DAB4
-sub_810DAB4: @ 810DAB4
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- bl ListMenuGetYCoordForPrintingArrowCursor
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl sub_810DAD4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810DAB4
-
- thumb_func_start sub_810DAD4
-sub_810DAD4: @ 810DAD4
- push {r4,r5,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0xFF
- bne _0810DB10
- movs r0, 0x2
- movs r1, 0
- bl GetFontAttribute
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- str r4, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- adds r3, r5, 0
- bl FillWindowPixelRect
- b _0810DB26
-_0810DB10:
- ldr r2, _0810DB30 @ =gFameCheckerText_ListMenuCursor
- str r5, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- movs r1, 0x2
- movs r3, 0
- bl sub_810EA34
-_0810DB26:
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DB30: .4byte gFameCheckerText_ListMenuCursor
- thumb_func_end sub_810DAD4
-
- thumb_func_start sub_810DB34
-sub_810DB34: @ 810DB34
- push {lr}
- sub sp, 0x14
- ldr r2, _0810DB58 @ =gUnknown_84178A7
- movs r1, 0x1
- str r1, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- str r0, [sp, 0xC]
- str r0, [sp, 0x10]
- movs r0, 0x2
- movs r1, 0
- movs r3, 0
- bl sub_810EA34
- add sp, 0x14
- pop {r0}
- bx r0
- .align 2, 0
-_0810DB58: .4byte gUnknown_84178A7
- thumb_func_end sub_810DB34
-
- thumb_func_start sub_810DB5C
-sub_810DB5C: @ 810DB5C
- push {r4,lr}
- sub sp, 0x10
- ldr r4, _0810DB90 @ =gUnknown_203ADBC
- ldr r1, [r4]
- ldrb r0, [r1, 0x7]
- ldrb r1, [r1, 0x6]
- subs r0, r1
- adds r0, 0x1
- str r0, [sp]
- movs r0, 0x6E
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- ldr r0, _0810DB94 @ =gUnknown_203ADD0
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0x80
- movs r2, 0x8
- movs r3, 0x68
- bl AddScrollIndicatorArrowPairParametrized
- ldr r1, [r4]
- strb r0, [r1, 0x8]
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DB90: .4byte gUnknown_203ADBC
-_0810DB94: .4byte gUnknown_203ADD0
- thumb_func_end sub_810DB5C
-
- thumb_func_start sub_810DB98
-sub_810DB98: @ 810DB98
- push {r4,lr}
- sub sp, 0x10
- ldr r4, _0810DBCC @ =gUnknown_203ADBC
- ldr r1, [r4]
- movs r0, 0x1
- strh r0, [r1, 0xA]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x6E
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r1, 0xA
- str r1, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0xD4
- movs r2, 0x78
- movs r3, 0x98
- bl AddScrollIndicatorArrowPairParametrized
- ldr r1, [r4]
- strb r0, [r1, 0x8]
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DBCC: .4byte gUnknown_203ADBC
- thumb_func_end sub_810DB98
-
- thumb_func_start sub_810DBD0
-sub_810DBD0: @ 810DBD0
- push {r4,lr}
- ldr r4, _0810DBEC @ =gUnknown_203ADBC
- ldr r1, [r4]
- ldrb r0, [r1, 0x8]
- cmp r0, 0xFF
- beq _0810DBE6
- bl RemoveScrollIndicatorArrowPair
- ldr r1, [r4]
- movs r0, 0xFF
- strb r0, [r1, 0x8]
-_0810DBE6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DBEC: .4byte gUnknown_203ADBC
- thumb_func_end sub_810DBD0
-
- thumb_func_start sub_810DBF0
-sub_810DBF0: @ 810DBF0
- push {r4,r5,lr}
- ldr r0, _0810DC30 @ =gUnknown_203ADCC
- ldrh r1, [r0, 0x4]
- adds r4, r0, 0
- ldr r5, _0810DC34 @ =gUnknown_203ADBC
- cmp r1, 0
- beq _0810DC14
- ldrh r0, [r4, 0x4]
- ldr r1, [r5]
- ldrb r3, [r1, 0x6]
- adds r0, r3
- ldrb r2, [r1, 0x7]
- adds r1, r2, 0x1
- cmp r0, r1
- ble _0810DC14
- subs r0, r3, 0x1
- subs r0, r2, r0
- strh r0, [r4, 0x4]
-_0810DC14:
- adds r3, r4, 0
- ldrh r0, [r3, 0x4]
- ldrh r1, [r3, 0x6]
- adds r0, r1
- ldr r1, [r5]
- ldrb r1, [r1, 0x7]
- adds r2, r1, 0x1
- cmp r0, r2
- blt _0810DC3A
- cmp r2, 0x1
- bgt _0810DC38
- movs r0, 0
- strh r0, [r3, 0x6]
- b _0810DC3A
- .align 2, 0
-_0810DC30: .4byte gUnknown_203ADCC
-_0810DC34: .4byte gUnknown_203ADBC
-_0810DC38:
- strh r1, [r4, 0x6]
-_0810DC3A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810DBF0
-
- thumb_func_start sub_810DC40
-sub_810DC40: @ 810DC40
- push {lr}
- ldr r0, _0810DC7C @ =gUnknown_203ADBC
- ldr r0, [r0]
- cmp r0, 0
- beq _0810DC4E
- bl Free
-_0810DC4E:
- ldr r0, _0810DC80 @ =gUnknown_203ADC0
- ldr r0, [r0]
- cmp r0, 0
- beq _0810DC5A
- bl Free
-_0810DC5A:
- ldr r0, _0810DC84 @ =gUnknown_203ADC4
- ldr r0, [r0]
- cmp r0, 0
- beq _0810DC66
- bl Free
-_0810DC66:
- ldr r0, _0810DC88 @ =gUnknown_203ADC8
- ldr r0, [r0]
- cmp r0, 0
- beq _0810DC72
- bl Free
-_0810DC72:
- bl FreeAllWindowBuffers
- pop {r0}
- bx r0
- .align 2, 0
-_0810DC7C: .4byte gUnknown_203ADBC
-_0810DC80: .4byte gUnknown_203ADC0
-_0810DC84: .4byte gUnknown_203ADC4
-_0810DC88: .4byte gUnknown_203ADC8
- thumb_func_end sub_810DC40
-
- thumb_func_start sub_810DC8C
-sub_810DC8C: @ 810DC8C
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0810DCB0 @ =gUnknown_203ADCC
- ldrb r0, [r0, 0x8]
- cmp r0, 0x1
- bne _0810DCB4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0810DCC4
- .align 2, 0
-_0810DCB0: .4byte gUnknown_203ADCC
-_0810DCB4:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80A0A70
- movs r0, 0x3
- bl PlaySE
-_0810DCC4:
- ldr r0, _0810DCDC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0810DCE0 @ =sub_810DCE4
- str r0, [r1]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DCDC: .4byte gTasks
-_0810DCE0: .4byte sub_810DCE4
- thumb_func_end sub_810DC8C
-
- thumb_func_start sub_810DCE4
-sub_810DCE4: @ 810DCE4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0810DD28 @ =gTasks+0x8
- adds r4, r0, r1
- ldr r0, _0810DD2C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0810DD4E
- bl sub_80A0AAC
- lsls r0, 24
- cmp r0, 0
- bne _0810DD4E
- ldrb r0, [r4]
- ldr r4, _0810DD30 @ =gUnknown_203ADD0
- adds r2, r4, 0x2
- adds r1, r4, 0
- bl DestroyListMenu
- ldr r0, _0810DD34 @ =gUnknown_203ADBC
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0
- beq _0810DD38
- bl SetMainCallback2
- b _0810DD40
- .align 2, 0
-_0810DD28: .4byte gTasks+0x8
-_0810DD2C: .4byte gPaletteFade
-_0810DD30: .4byte gUnknown_203ADD0
-_0810DD34: .4byte gUnknown_203ADBC
-_0810DD38:
- subs r0, r4, 0x4
- ldr r0, [r0]
- bl SetMainCallback2
-_0810DD40:
- bl sub_810DBD0
- bl sub_810DC40
- adds r0, r5, 0
- bl DestroyTask
-_0810DD4E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810DCE4
-
- thumb_func_start sub_810DD54
-sub_810DD54: @ 810DD54
- ldr r1, _0810DD64 @ =gUnknown_203ADCC
- ldrb r0, [r1, 0x6]
- ldrb r1, [r1, 0x4]
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- bx lr
- .align 2, 0
-_0810DD64: .4byte gUnknown_203ADCC
- thumb_func_end sub_810DD54
-
- thumb_func_start sub_810DD68
-sub_810DD68: @ 810DD68
- lsls r0, 16
- ldr r1, _0810DD7C @ =gSaveBlock1Ptr
- ldr r1, [r1]
- lsrs r0, 14
- adds r1, r0
- movs r0, 0xA6
- lsls r0, 2
- adds r1, r0
- ldrh r0, [r1]
- bx lr
- .align 2, 0
-_0810DD7C: .4byte gSaveBlock1Ptr
- thumb_func_end sub_810DD68
-
- thumb_func_start sub_810DD80
-sub_810DD80: @ 810DD80
- push {lr}
- lsls r0, 16
- ldr r1, _0810DD9C @ =gSaveBlock1Ptr
- lsrs r0, 14
- ldr r1, [r1]
- adds r0, r1
- ldr r1, _0810DDA0 @ =0x0000029a
- adds r0, r1
- bl GetBagItemId
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_0810DD9C: .4byte gSaveBlock1Ptr
-_0810DDA0: .4byte 0x0000029a
- thumb_func_end sub_810DD80
-
- thumb_func_start sub_810DDA4
-sub_810DDA4: @ 810DDA4
- push {r4,r5,lr}
- bl sub_809A4E8
- ldr r4, _0810DE00 @ =gUnknown_203ADBC
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1, 0x7]
- movs r2, 0
- ldr r3, _0810DE04 @ =gSaveBlock1Ptr
- ldr r0, [r3]
- movs r1, 0xA6
- lsls r1, 2
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _0810DDEA
- adds r5, r4, 0
- adds r4, r3, 0
- adds r3, r1, 0
-_0810DDCA:
- ldr r0, [r5]
- ldrb r1, [r0, 0x7]
- adds r1, 0x1
- strb r1, [r0, 0x7]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1D
- bhi _0810DDEA
- ldr r0, [r4]
- lsls r1, r2, 2
- adds r0, r1
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, 0
- bne _0810DDCA
-_0810DDEA:
- ldr r0, _0810DE00 @ =gUnknown_203ADBC
- ldr r1, [r0]
- ldrb r0, [r1, 0x7]
- adds r0, 0x1
- cmp r0, 0x6
- ble _0810DDF8
- movs r0, 0x6
-_0810DDF8:
- strb r0, [r1, 0x6]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DE00: .4byte gUnknown_203ADBC
-_0810DE04: .4byte gSaveBlock1Ptr
- thumb_func_end sub_810DDA4
-
- thumb_func_start sub_810DE08
-sub_810DE08: @ 810DE08
- push {r4-r6,lr}
- ldr r0, _0810DE64 @ =gUnknown_203ADCC
- ldrh r1, [r0, 0x6]
- adds r6, r0, 0
- cmp r1, 0x3
- bls _0810DE5C
- movs r4, 0
- ldrh r0, [r6, 0x6]
- subs r0, 0x3
- cmp r4, r0
- bgt _0810DE5C
- ldrh r1, [r6, 0x4]
- ldr r5, _0810DE68 @ =gUnknown_203ADBC
- ldr r2, [r5]
- ldrb r0, [r2, 0x6]
- adds r1, r0
- ldrb r0, [r2, 0x7]
- adds r0, 0x1
- cmp r1, r0
- beq _0810DE5C
- adds r3, r6, 0
-_0810DE32:
- ldrh r0, [r3, 0x6]
- subs r0, 0x1
- strh r0, [r3, 0x6]
- ldrh r0, [r3, 0x4]
- adds r0, 0x1
- strh r0, [r3, 0x4]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrh r0, [r3, 0x6]
- subs r0, 0x3
- cmp r4, r0
- bgt _0810DE5C
- ldrh r1, [r6, 0x4]
- ldr r2, [r5]
- ldrb r0, [r2, 0x6]
- adds r1, r0
- ldrb r0, [r2, 0x7]
- adds r0, 0x1
- cmp r1, r0
- bne _0810DE32
-_0810DE5C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DE64: .4byte gUnknown_203ADCC
-_0810DE68: .4byte gUnknown_203ADBC
- thumb_func_end sub_810DE08
-
- thumb_func_start sub_810DE6C
-sub_810DE6C: @ 810DE6C
- push {lr}
- sub sp, 0x8
- movs r1, 0x6
- str r1, [sp]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x1E
- bl sub_80F6B08
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_810DE6C
-
- thumb_func_start sub_810DE94
-sub_810DE94: @ 810DE94
- ldr r1, _0810DE9C @ =gUnknown_203ADCC
- strb r0, [r1, 0x8]
- bx lr
- .align 2, 0
-_0810DE9C: .4byte gUnknown_203ADCC
- thumb_func_end sub_810DE94
-
- thumb_func_start sub_810DEA0
-sub_810DEA0: @ 810DEA0
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0810DF10 @ =gTasks+0x8
- adds r6, r0, r1
- ldr r0, _0810DF14 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0810DF9E
- bl sub_80A0A98
- lsls r0, 24
- cmp r0, 0
- bne _0810DF9E
- ldr r0, _0810DF18 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0810DF20
- ldrb r0, [r6]
- mov r4, sp
- adds r4, 0x2
- mov r1, sp
- adds r2, r4, 0
- bl get_coro_args_x18_x1A
- mov r0, sp
- ldrh r1, [r0]
- ldrh r0, [r4]
- adds r1, r0
- ldr r0, _0810DF1C @ =gUnknown_203ADBC
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- cmp r1, r0
- beq _0810DF20
- movs r0, 0x5
- bl PlaySE
- mov r0, sp
- ldrh r1, [r4]
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- asrs r1, 16
- adds r0, r5, 0
- bl sub_810DFE0
- b _0810DF9E
- .align 2, 0
-_0810DF10: .4byte gTasks+0x8
-_0810DF14: .4byte gPaletteFade
-_0810DF18: .4byte gMain
-_0810DF1C: .4byte gUnknown_203ADBC
-_0810DF20:
- ldrb r0, [r6]
- bl ListMenuHandleInput
- adds r4, r0, 0
- ldrb r0, [r6]
- ldr r1, _0810DF44 @ =gUnknown_203ADD0
- adds r2, r1, 0x2
- bl get_coro_args_x18_x1A
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _0810DF48
- adds r0, 0x1
- cmp r4, r0
- bne _0810DF6C
- b _0810DF9E
- .align 2, 0
-_0810DF44: .4byte gUnknown_203ADD0
-_0810DF48:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_810DE94
- ldr r0, _0810DF64 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _0810DF68 @ =sub_810DC8C
- str r0, [r1]
- b _0810DF9E
- .align 2, 0
-_0810DF64: .4byte gTasks
-_0810DF68: .4byte sub_810DC8C
-_0810DF6C:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl sub_810DE6C
- bl sub_810DBD0
- strh r4, [r6, 0x2]
- lsls r0, r4, 16
- lsrs r0, 16
- bl sub_810DD80
- strh r0, [r6, 0x4]
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_810DAB4
- ldr r1, _0810DFA8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0810DFAC @ =sub_810E274
- str r1, [r0]
-_0810DF9E:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DFA8: .4byte gTasks
-_0810DFAC: .4byte sub_810E274
- thumb_func_end sub_810DEA0
-
- thumb_func_start sub_810DFB0
-sub_810DFB0: @ 810DFB0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- bl sub_810DE6C
- bl sub_810DB5C
- ldr r1, _0810DFD8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0810DFDC @ =sub_810DEA0
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DFD8: .4byte gTasks
-_0810DFDC: .4byte sub_810DEA0
- thumb_func_end sub_810DFB0
-
- thumb_func_start sub_810DFE0
-sub_810DFE0: @ 810DFE0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x14
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 16
- lsrs r4, 16
- lsls r5, r0, 2
- adds r5, r0
- lsls r5, 3
- ldr r0, _0810E09C @ =gTasks+0x8
- mov r8, r0
- adds r6, r5, r0
- ldrb r0, [r6]
- movs r1, 0x10
- movs r2, 0x1
- bl sub_8107BD0
- strh r4, [r6, 0x2]
- ldr r0, _0810E0A0 @ =gUnknown_203ADBC
- ldr r0, [r0]
- movs r1, 0
- mov r9, r1
- strb r4, [r0, 0x4]
- ldr r4, _0810E0A4 @ =gStringVar1
- ldrh r0, [r6, 0x2]
- bl sub_810DD68
- lsls r0, 16
- lsrs r0, 16
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r4, _0810E0A8 @ =gStringVar4
- ldr r1, _0810E0AC @ =gUnknown_841633F
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0x1
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r1, 0x3
- str r1, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- str r0, [sp, 0x10]
- movs r0, 0x1
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0
- bl sub_810EA34
- movs r4, 0x20
- negs r4, r4
- ldrb r0, [r6]
- bl ListMenuGetYCoordForPrintingArrowCursor
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_80986A8
- movs r0, 0
- bl sub_8098660
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_810DAB4
- movs r1, 0x8
- negs r1, r1
- add r8, r1
- add r5, r8
- ldr r0, _0810E0B0 @ =sub_810E0B4
- str r0, [r5]
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E09C: .4byte gTasks+0x8
-_0810E0A0: .4byte gUnknown_203ADBC
-_0810E0A4: .4byte gStringVar1
-_0810E0A8: .4byte gStringVar4
-_0810E0AC: .4byte gUnknown_841633F
-_0810E0B0: .4byte sub_810E0B4
- thumb_func_end sub_810DFE0
-
- thumb_func_start sub_810E0B4
-sub_810E0B4: @ 810E0B4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- mov r8, r6
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- ldr r0, _0810E11C @ =gTasks+0x8
- adds r4, r0
- ldrb r0, [r4]
- bl ListMenuHandleInput
- ldrb r0, [r4]
- ldr r7, _0810E120 @ =gUnknown_203ADD0
- adds r2, r7, 0x2
- adds r1, r7, 0
- bl get_coro_args_x18_x1A
- movs r5, 0x20
- negs r5, r5
- ldrb r0, [r4]
- bl ListMenuGetYCoordForPrintingArrowCursor
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r5, 0
- bl sub_80986A8
- ldr r0, _0810E124 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x5
- ands r0, r1
- cmp r0, 0
- beq _0810E12C
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0810E128 @ =gUnknown_203ADBC
- ldr r1, [r0]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- subs r0, r7, 0x4
- ldrh r1, [r0, 0x4]
- ldrh r0, [r0, 0x6]
- adds r1, r0
- adds r0, r6, 0
- bl sub_810E160
- b _0810E150
- .align 2, 0
-_0810E11C: .4byte gTasks+0x8
-_0810E120: .4byte gUnknown_203ADD0
-_0810E124: .4byte gMain
-_0810E128: .4byte gUnknown_203ADBC
-_0810E12C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810E150
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0810E15C @ =gUnknown_203ADBC
- ldr r1, [r0]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- subs r0, r7, 0x4
- ldrh r1, [r0, 0x4]
- ldrh r0, [r0, 0x6]
- adds r1, r0
- mov r0, r8
- bl sub_810E200
-_0810E150:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E15C: .4byte gUnknown_203ADBC
- thumb_func_end sub_810E0B4
-
- thumb_func_start sub_810E160
-sub_810E160: @ 810E160
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r7, r0, 3
- ldr r0, _0810E190 @ =gTasks+0x8
- mov r8, r0
- adds r6, r7, r0
- movs r0, 0x2
- ldrsh r1, [r6, r0]
- cmp r1, r4
- beq _0810E186
- subs r0, r4, 0x1
- cmp r1, r0
- bne _0810E194
-_0810E186:
- adds r0, r2, 0
- adds r1, r4, 0
- bl sub_810E200
- b _0810E1E6
- .align 2, 0
-_0810E190: .4byte gTasks+0x8
-_0810E194:
- ldr r0, _0810E1F0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r2, 0xA6
- lsls r2, 2
- adds r0, r2
- adds r2, r4, 0
- bl sub_8108D60
- ldrb r0, [r6]
- ldr r5, _0810E1F4 @ =gUnknown_203ADD0
- adds r2, r5, 0x2
- adds r1, r5, 0
- bl DestroyListMenu
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- cmp r0, r4
- bcs _0810E1C0
- subs r1, r5, 0x4
- ldrh r0, [r1, 0x6]
- subs r0, 0x1
- strh r0, [r1, 0x6]
-_0810E1C0:
- bl sub_810D878
- ldr r0, _0810E1F8 @ =gMultiuseListMenuTemplate
- subs r2, r5, 0x4
- ldrh r1, [r2, 0x4]
- ldrh r2, [r2, 0x6]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6]
- movs r0, 0x1
- bl sub_8098660
- mov r0, r8
- subs r0, 0x8
- adds r0, r7, r0
- ldr r1, _0810E1FC @ =sub_810DEA0
- str r1, [r0]
-_0810E1E6:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E1F0: .4byte gSaveBlock1Ptr
-_0810E1F4: .4byte gUnknown_203ADD0
-_0810E1F8: .4byte gMultiuseListMenuTemplate
-_0810E1FC: .4byte sub_810DEA0
- thumb_func_end sub_810E160
-
- thumb_func_start sub_810E200
-sub_810E200: @ 810E200
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r7, r1, 3
- ldr r0, _0810E264 @ =gTasks+0x8
- mov r8, r0
- adds r6, r7, r0
- ldrb r0, [r6]
- ldr r5, _0810E268 @ =gUnknown_203ADD0
- adds r2, r5, 0x2
- adds r1, r5, 0
- bl DestroyListMenu
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- cmp r0, r4
- bcs _0810E234
- subs r1, r5, 0x4
- ldrh r0, [r1, 0x6]
- subs r0, 0x1
- strh r0, [r1, 0x6]
-_0810E234:
- bl sub_810D878
- ldr r0, _0810E26C @ =gMultiuseListMenuTemplate
- subs r2, r5, 0x4
- ldrh r1, [r2, 0x4]
- ldrh r2, [r2, 0x6]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6]
- movs r0, 0x1
- bl sub_8098660
- mov r0, r8
- subs r0, 0x8
- adds r0, r7, r0
- ldr r1, _0810E270 @ =sub_810DEA0
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E264: .4byte gTasks+0x8
-_0810E268: .4byte gUnknown_203ADD0
-_0810E26C: .4byte gMultiuseListMenuTemplate
-_0810E270: .4byte sub_810DEA0
- thumb_func_end sub_810E200
-
- thumb_func_start sub_810E274
-sub_810E274: @ 810E274
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _0810E340 @ =gTasks+0x8
- mov r9, r0
- adds r6, r4, r0
- movs r0, 0x4
- bl sub_810EA9C
- movs r0, 0
- bl sub_810EAB4
- mov r8, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r5, 0x3
- str r5, [sp, 0x4]
- ldr r0, _0810E344 @ =gUnknown_8453F74
- str r0, [sp, 0x8]
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0x8
- movs r3, 0x2
- bl PrintTextArray
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r5, 0
- str r5, [sp, 0x8]
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
- ldrh r0, [r6, 0x2]
- bl sub_810DD68
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0810E348 @ =gStringVar1
- bl CopyItemName
- ldr r6, _0810E34C @ =gStringVar4
- ldr r1, _0810E350 @ =gUnknown_84162FF
- adds r0, r6, 0
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- str r5, [sp, 0xC]
- str r0, [sp, 0x10]
- mov r0, r8
- movs r1, 0x2
- adds r2, r6, 0
- movs r3, 0
- bl sub_810EA34
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x8
- negs r0, r0
- add r9, r0
- add r4, r9
- ldr r0, _0810E354 @ =sub_810E358
- str r0, [r4]
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E340: .4byte gTasks+0x8
-_0810E344: .4byte gUnknown_8453F74
-_0810E348: .4byte gStringVar1
-_0810E34C: .4byte gStringVar4
-_0810E350: .4byte gUnknown_84162FF
-_0810E354: .4byte sub_810E358
- thumb_func_end sub_810E274
-
- thumb_func_start sub_810E358
-sub_810E358: @ 810E358
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- bl ProcessMenuInputNoWrapAround
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _0810E39A
- adds r0, 0x1
- cmp r4, r0
- bne _0810E384
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_810E8A0
- b _0810E39A
-_0810E384:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0810E3A0 @ =gUnknown_8453F74
- lsls r1, r4, 3
- adds r0, 0x4
- adds r1, r0
- ldr r1, [r1]
- adds r0, r6, 0
- bl _call_via_r1
-_0810E39A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E3A0: .4byte gUnknown_8453F74
- thumb_func_end sub_810E358
-
- thumb_func_start sub_810E3A4
-sub_810E3A4: @ 810E3A4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- ldr r7, _0810E3F0 @ =gTasks+0x8
- adds r4, r6, r7
- movs r0, 0x4
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0
- bl sub_810EAF0
- movs r0, 0x4
- bl ClearWindowTilemap
- movs r0, 0x1
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0x2]
- bl sub_810DD80
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _0810E3F4
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r5, 0
- bl sub_810E418
- b _0810E40E
- .align 2, 0
-_0810E3F0: .4byte gTasks+0x8
-_0810E3F4:
- movs r0, 0
- bl PutWindowTilemap
- ldrh r0, [r4, 0x2]
- bl sub_810E5E0
- bl sub_810DB98
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0810E414 @ =sub_810E6D8
- str r1, [r0]
-_0810E40E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E414: .4byte sub_810E6D8
- thumb_func_end sub_810E3A4
-
- thumb_func_start sub_810E418
-sub_810E418: @ 810E418
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 3
- ldr r7, _0810E49C @ =gTasks+0x8
- adds r5, r6, r7
- ldrh r0, [r5, 0x2]
- bl sub_810DD68
- lsls r0, 16
- lsrs r4, r0, 16
- ldrh r1, [r5, 0x10]
- adds r0, r4, 0
- bl AddBagItem
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810E4B8
- ldr r3, _0810E4A0 @ =0x0000ffff
- movs r0, 0x1D
- movs r1, 0
- adds r2, r4, 0
- bl sub_80A2294
- ldr r1, _0810E4A4 @ =gStringVar1
- adds r0, r4, 0
- bl CopyItemName
- ldr r0, _0810E4A8 @ =gStringVar2
- movs r2, 0x10
- ldrsh r1, [r5, r2]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r4, _0810E4AC @ =gStringVar4
- ldr r1, _0810E4B0 @ =gUnknown_84177C5
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0x2
- bl sub_810EAB4
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0
- bl AddTextPrinterParameterized
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0810E4B4 @ =sub_810E4F4
- b _0810E4E0
- .align 2, 0
-_0810E49C: .4byte gTasks+0x8
-_0810E4A0: .4byte 0x0000ffff
-_0810E4A4: .4byte gStringVar1
-_0810E4A8: .4byte gStringVar2
-_0810E4AC: .4byte gStringVar4
-_0810E4B0: .4byte gUnknown_84177C5
-_0810E4B4: .4byte sub_810E4F4
-_0810E4B8:
- movs r0, 0x2
- bl sub_810EAB4
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r2, _0810E4EC @ =gUnknown_841778A
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0810E4F0 @ =sub_810E548
-_0810E4E0:
- str r1, [r0]
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E4EC: .4byte gUnknown_841778A
-_0810E4F0: .4byte sub_810E548
- thumb_func_end sub_810E418
-
- thumb_func_start sub_810E4F4
-sub_810E4F4: @ 810E4F4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0810E540 @ =gTasks+0x8
- adds r5, r0, r1
- ldr r0, _0810E544 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0810E51A
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810E53A
-_0810E51A:
- movs r0, 0x5
- bl PlaySE
- ldrh r0, [r5, 0x2]
- bl sub_810DD68
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r5, 0x10]
- bl sub_809A460
- bl sub_809A4E8
- adds r0, r4, 0
- bl sub_810E578
-_0810E53A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E540: .4byte gTasks+0x8
-_0810E544: .4byte gMain
- thumb_func_end sub_810E4F4
-
- thumb_func_start sub_810E548
-sub_810E548: @ 810E548
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0810E574 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0810E562
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810E56E
-_0810E562:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_810E578
-_0810E56E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E574: .4byte gMain
- thumb_func_end sub_810E548
-
- thumb_func_start sub_810E578
-sub_810E578: @ 810E578
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r5, r6, 2
- adds r5, r6
- lsls r5, 3
- ldr r0, _0810E5D4 @ =gTasks+0x8
- adds r5, r0
- movs r0, 0x2
- bl sub_810EAF0
- movs r0, 0x1
- bl PutWindowTilemap
- ldrb r0, [r5]
- ldr r4, _0810E5D8 @ =gUnknown_203ADD0
- adds r2, r4, 0x2
- adds r1, r4, 0
- bl DestroyListMenu
- bl sub_810DDA4
- bl sub_810DBF0
- bl sub_810D878
- ldr r0, _0810E5DC @ =gMultiuseListMenuTemplate
- subs r4, 0x4
- ldrh r1, [r4, 0x4]
- ldrh r2, [r4, 0x6]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r6, 0
- bl sub_810DFB0
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E5D4: .4byte gTasks+0x8
-_0810E5D8: .4byte gUnknown_203ADD0
-_0810E5DC: .4byte gMultiuseListMenuTemplate
- thumb_func_end sub_810E578
-
- thumb_func_start sub_810E5E0
-sub_810E5E0: @ 810E5E0
- push {r4-r6,lr}
- sub sp, 0x14
- lsls r0, 16
- lsrs r0, 16
- bl sub_810DD68
- lsls r0, 16
- lsrs r0, 16
- ldr r6, _0810E660 @ =gStringVar1
- adds r1, r6, 0
- bl CopyItemName
- ldr r5, _0810E664 @ =gStringVar4
- ldr r1, _0810E668 @ =gUnknown_84177AC
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0x1
- bl sub_810EAB4
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- str r1, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r2, r5, 0
- movs r3, 0
- bl AddTextPrinterParameterized
- adds r0, r6, 0
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r1, _0810E66C @ =gText_TimesStrVar1
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0x3
- bl sub_810EA9C
- movs r0, 0xA
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- str r0, [sp, 0x10]
- movs r0, 0x3
- movs r1, 0
- adds r2, r5, 0
- movs r3, 0x8
- bl sub_810EA34
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E660: .4byte gStringVar1
-_0810E664: .4byte gStringVar4
-_0810E668: .4byte gUnknown_84177AC
-_0810E66C: .4byte gText_TimesStrVar1
- thumb_func_end sub_810E5E0
-
- thumb_func_start sub_810E670
-sub_810E670: @ 810E670
- push {r4,lr}
- sub sp, 0x14
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0x1C
- str r0, [sp]
- movs r0, 0xC
- str r0, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0x11
- movs r2, 0xA
- movs r3, 0xA
- bl FillWindowPixelRect
- ldr r0, _0810E6CC @ =gStringVar1
- lsls r4, 16
- asrs r4, 16
- adds r1, r4, 0
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r4, _0810E6D0 @ =gStringVar4
- ldr r1, _0810E6D4 @ =gText_TimesStrVar1
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0xA
- str r0, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- movs r0, 0x3
- movs r1, 0
- adds r2, r4, 0
- movs r3, 0x8
- bl sub_810EA34
- add sp, 0x14
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E6CC: .4byte gStringVar1
-_0810E6D0: .4byte gStringVar4
-_0810E6D4: .4byte gText_TimesStrVar1
- thumb_func_end sub_810E670
-
- thumb_func_start sub_810E6D8
-sub_810E6D8: @ 810E6D8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0810E708 @ =gTasks+0x8
- adds r4, r0, r1
- adds r0, r4, 0
- adds r0, 0x10
- ldrh r1, [r4, 0x4]
- bl sub_80BF848
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0810E70C
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- bl sub_810E670
- b _0810E796
- .align 2, 0
-_0810E708: .4byte gTasks+0x8
-_0810E70C:
- ldr r0, _0810E74C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810E750
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl sub_810EAF0
- movs r0, 0x3
- bl ClearWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_810DAB4
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- bl sub_810DBD0
- adds r0, r5, 0
- bl sub_810E418
- b _0810E796
- .align 2, 0
-_0810E74C: .4byte gMain
-_0810E750:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810E796
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x3
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0x1
- bl sub_810EAF0
- movs r0, 0x3
- bl ClearWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_810DAB4
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- bl sub_810DBD0
- adds r0, r6, 0
- bl sub_810DFB0
-_0810E796:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_810E6D8
-
- thumb_func_start sub_810E79C
-sub_810E79C: @ 810E79C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl CalculatePlayerPartyCount
- lsls r0, 24
- cmp r0, 0
- bne _0810E7DC
- movs r0, 0x4
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0
- bl sub_810EAF0
- movs r0, 0x4
- bl ClearWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- ldr r1, _0810E7D4 @ =gText_ThereIsNoPokemon
- ldr r2, _0810E7D8 @ =sub_810E848
- adds r0, r4, 0
- bl sub_810EB30
- b _0810E7EA
- .align 2, 0
-_0810E7D4: .4byte gText_ThereIsNoPokemon
-_0810E7D8: .4byte sub_810E848
-_0810E7DC:
- ldr r0, _0810E7F0 @ =gUnknown_203ADBC
- ldr r1, [r0]
- ldr r0, _0810E7F4 @ =sub_810E7F8
- str r0, [r1]
- adds r0, r4, 0
- bl sub_810DC8C
-_0810E7EA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E7F0: .4byte gUnknown_203ADBC
-_0810E7F4: .4byte sub_810E7F8
- thumb_func_end sub_810E79C
-
- thumb_func_start sub_810E7F8
-sub_810E7F8: @ 810E7F8
- push {lr}
- sub sp, 0xC
- movs r0, 0x6
- str r0, [sp]
- ldr r0, _0810E82C @ =sub_811FB28
- str r0, [sp, 0x4]
- ldr r0, _0810E830 @ =sub_810E838
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0x6
- movs r3, 0
- bl sub_811EA44
- bl sub_810DD54
- lsls r0, 24
- lsrs r0, 24
- bl sub_810DD68
- ldr r1, _0810E834 @ =gUnknown_203B0A0
- strh r0, [r1, 0xC]
- add sp, 0xC
- pop {r0}
- bx r0
- .align 2, 0
-_0810E82C: .4byte sub_811FB28
-_0810E830: .4byte sub_810E838
-_0810E834: .4byte gUnknown_203B0A0
- thumb_func_end sub_810E7F8
-
- thumb_func_start sub_810E838
-sub_810E838: @ 810E838
- push {lr}
- movs r0, 0x1
- movs r1, 0
- bl sub_810D3F4
- pop {r0}
- bx r0
- thumb_func_end sub_810E838
-
- thumb_func_start sub_810E848
-sub_810E848: @ 810E848
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0810E898 @ =gTasks+0x8
- adds r5, r0, r1
- ldr r0, _0810E89C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810E892
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x5
- movs r1, 0
- bl sub_810F260
- movs r0, 0x5
- bl ClearWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_810DAB4
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r4, 0
- bl sub_810DFB0
-_0810E892:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E898: .4byte gTasks+0x8
-_0810E89C: .4byte gMain
- thumb_func_end sub_810E848
-
- thumb_func_start sub_810E8A0
-sub_810E8A0: @ 810E8A0
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _0810E8EC @ =gTasks+0x8
- adds r4, r0
- movs r0, 0x4
- movs r1, 0
- bl sub_810F4D8
- movs r0, 0
- bl sub_810EAF0
- movs r0, 0x4
- bl ClearWindowTilemap
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_810DAB4
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r5, 0
- bl sub_810DFB0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E8EC: .4byte gTasks+0x8
- thumb_func_end sub_810E8A0
-
- thumb_func_start sub_810E8F0
-sub_810E8F0: @ 810E8F0
- push {r4,lr}
- ldr r0, _0810E974 @ =gUnknown_8453F98
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r1, 0xF0
- lsls r1, 2
- movs r0, 0
- movs r2, 0xE0
- bl sub_815001C
- ldr r1, _0810E978 @ =0x000003a3
- movs r0, 0
- movs r2, 0xC0
- bl sub_814FF2C
- movs r1, 0xEB
- lsls r1, 2
- movs r0, 0
- movs r2, 0xB0
- bl sub_814FEAC
- movs r0, 0x2
- bl stdpal_get
- movs r1, 0xD0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _0810E97C @ =gTMCaseMainWindowPalette
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- movs r4, 0
-_0810E938:
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _0810E938
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r4, 0
- ldr r3, _0810E980 @ =gUnknown_203ADD8
- movs r2, 0xFF
-_0810E95C:
- adds r0, r4, r3
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _0810E95C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E974: .4byte gUnknown_8453F98
-_0810E978: .4byte 0x000003a3
-_0810E97C: .4byte gTMCaseMainWindowPalette
-_0810E980: .4byte gUnknown_203ADD8
- thumb_func_end sub_810E8F0
-
- thumb_func_start sub_810E984
-sub_810E984: @ 810E984
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x10
- ldr r6, [sp, 0x28]
- ldr r4, [sp, 0x2C]
- mov r8, r4
- ldr r4, [sp, 0x30]
- mov r9, r4
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r6, 24
- lsrs r6, 24
- mov r4, r8
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- mov r4, r9
- lsls r4, 24
- lsrs r4, 24
- mov r9, r4
- str r1, [sp]
- mov r1, sp
- strb r0, [r1, 0x4]
- movs r0, 0x3
- strb r0, [r1, 0x5]
- mov r0, sp
- strb r2, [r0, 0x6]
- strb r3, [r0, 0x7]
- strb r2, [r0, 0x8]
- strb r3, [r0, 0x9]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r5, 0xF
- adds r0, r5, 0
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2, 0xC]
- ldrb r1, [r2, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r1
- strb r0, [r2, 0xD]
- mov r1, sp
- movs r0, 0x30
- strb r0, [r1, 0xD]
- movs r0, 0x3
- movs r1, 0x4
- bl GetFontAttribute
- mov r1, sp
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- movs r0, 0x3
- movs r1, 0x2
- bl GetFontAttribute
- mov r1, sp
- adds r6, r0
- strb r6, [r1, 0xA]
- movs r0, 0x3
- movs r1, 0x3
- bl GetFontAttribute
- mov r1, sp
- add r8, r0
- mov r0, r8
- strb r0, [r1, 0xB]
- mov r0, sp
- mov r1, r9
- movs r2, 0
- bl AddTextPrinter
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_810E984
-
- thumb_func_start sub_810EA34
-sub_810EA34: @ 810EA34
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r3
- ldr r3, [sp, 0x30]
- ldr r4, [sp, 0x34]
- ldr r6, [sp, 0x38]
- ldr r5, [sp, 0x3C]
- mov r8, r5
- ldr r5, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r7, r9
- lsls r7, 24
- lsrs r7, 24
- mov r9, r7
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r6, [sp, 0x4]
- lsls r4, r5, 1
- adds r4, r5
- ldr r5, _0810EA98 @ =gUnknown_8453F8C
- adds r4, r5
- str r4, [sp, 0x8]
- mov r4, r8
- lsls r4, 24
- asrs r4, 24
- str r4, [sp, 0xC]
- str r2, [sp, 0x10]
- mov r2, r9
- bl AddTextPrinterParametrized2
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EA98: .4byte gUnknown_8453F8C
- thumb_func_end sub_810EA34
-
- thumb_func_start sub_810EA9C
-sub_810EA9C: @ 810EA9C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0xF0
- lsls r2, 2
- movs r1, 0
- movs r3, 0xE
- bl SetWindowBorderStyle
- pop {r0}
- bx r0
- thumb_func_end sub_810EA9C
-
- thumb_func_start sub_810EAB4
-sub_810EAB4: @ 810EAB4
- push {r4,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _0810EAE4 @ =gUnknown_203ADD8
- adds r4, r1, r0
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _0810EADC
- lsls r0, r1, 3
- ldr r1, _0810EAE8 @ =gUnknown_8453FD0
- adds r0, r1
- bl AddWindow
- strb r0, [r4]
- ldrb r0, [r4]
- ldr r2, _0810EAEC @ =0x000003a3
- movs r1, 0x1
- movs r3, 0xC
- bl SetWindowBorderStyle
-_0810EADC:
- ldrb r0, [r4]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0810EAE4: .4byte gUnknown_203ADD8
-_0810EAE8: .4byte gUnknown_8453FD0
-_0810EAEC: .4byte 0x000003a3
- thumb_func_end sub_810EAB4
-
- thumb_func_start sub_810EAF0
-sub_810EAF0: @ 810EAF0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810EB1C @ =gUnknown_203ADD8
- adds r4, r0
- ldrb r0, [r4]
- movs r1, 0
- bl sub_810F4D8
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0xFF
- strb r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EB1C: .4byte gUnknown_203ADD8
- thumb_func_end sub_810EAF0
-
- thumb_func_start sub_810EB20
-sub_810EB20: @ 810EB20
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0810EB2C @ =gUnknown_203ADD8
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0810EB2C: .4byte gUnknown_203ADD8
- thumb_func_end sub_810EB20
-
- thumb_func_start sub_810EB30
-sub_810EB30: @ 810EB30
- push {r4-r6,lr}
- sub sp, 0x10
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsrs r4, 24
- bl GetTextSpeedSetting
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0xEB
- lsls r2, 2
- movs r1, 0x2
- str r1, [sp]
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- str r6, [sp, 0xC]
- adds r0, r4, 0
- movs r1, 0x5
- movs r3, 0xB
- bl DisplayMessageAndContinueTask
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_810EB30
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/item_use.s b/asm/item_use.s
deleted file mode 100644
index 67da30cf6..000000000
--- a/asm/item_use.s
+++ /dev/null
@@ -1,2410 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80A0FBC
-sub_80A0FBC: @ 80A0FBC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080A0FD8 @ =gSpecialVar_ItemId
- ldrh r0, [r1]
- cmp r0, 0xAF
- bne _080A0FE0
- ldr r0, _080A0FDC @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrb r0, [r1, 0x10]
- b _080A0FE6
- .align 2, 0
-_080A0FD8: .4byte gSpecialVar_ItemId
-_080A0FDC: .4byte gTasks
-_080A0FE0:
- ldrh r0, [r1]
- bl ItemId_GetType
-_080A0FE6:
- subs r0, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1010 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl GetPocketByItemId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bne _080A1018
- ldr r0, _080A1014 @ =gUnknown_83E2954
- lsls r1, r4, 2
- adds r1, r0
- ldr r0, [r1]
- bl sub_813D934
- adds r0, r5, 0
- bl sub_813D808
- b _080A1032
- .align 2, 0
-_080A1010: .4byte gSpecialVar_ItemId
-_080A1014: .4byte gUnknown_83E2954
-_080A1018:
- ldr r0, _080A1038 @ =gUnknown_83E2954
- lsls r1, r4, 2
- adds r1, r0
- ldr r0, [r1]
- bl sub_8108EE0
- cmp r4, 0x1
- bne _080A102C
- bl sub_8108CB4
-_080A102C:
- adds r0, r5, 0
- bl sub_8108B50
-_080A1032:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1038: .4byte gUnknown_83E2954
- thumb_func_end sub_80A0FBC
-
- thumb_func_start sub_80A103C
-sub_80A103C: @ 80A103C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080A1064 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0xE
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- beq _080A1070
- ldr r1, _080A1068 @ =gFieldCallback
- ldr r0, _080A106C @ =sub_80A1084
- str r0, [r1]
- adds r0, r2, 0
- bl sub_80A0FBC
- b _080A107A
- .align 2, 0
-_080A1064: .4byte gTasks
-_080A1068: .4byte gFieldCallback
-_080A106C: .4byte sub_80A1084
-_080A1070:
- ldr r0, _080A1080 @ =gUnknown_2039998
- ldr r1, [r0]
- adds r0, r2, 0
- bl _call_via_r1
-_080A107A:
- pop {r0}
- bx r0
- .align 2, 0
-_080A1080: .4byte gUnknown_2039998
- thumb_func_end sub_80A103C
-
- thumb_func_start sub_80A1084
-sub_80A1084: @ 80A1084
- push {lr}
- bl sub_807DC00
- ldr r0, _080A1098 @ =sub_80A109C
- movs r1, 0x8
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080A1098: .4byte sub_80A109C
- thumb_func_end sub_80A1084
-
- thumb_func_start sub_80A109C
-sub_80A109C: @ 80A109C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_807AA70
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A10B8
- ldr r0, _080A10C0 @ =gUnknown_2039998
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
-_080A10B8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A10C0: .4byte gUnknown_2039998
- thumb_func_end sub_80A109C
-
- thumb_func_start sub_80A10C4
-sub_80A10C4: @ 80A10C4
- push {r4-r7,lr}
- adds r4, r1, 0
- adds r1, r3, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r5, _080A10F0 @ =gStringVar4
- adds r0, r5, 0
- bl StringExpandPlaceholders
- cmp r4, 0
- bne _080A10F8
- ldr r3, _080A10F4 @ =sub_810A1F8
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl sub_8108E70
- b _080A1104
- .align 2, 0
-_080A10F0: .4byte gStringVar4
-_080A10F4: .4byte sub_810A1F8
-_080A10F8:
- ldr r3, _080A110C @ =sub_80A112C
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl DisplayItemMessageOnField
-_080A1104:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A110C: .4byte sub_80A112C
- thumb_func_end sub_80A10C4
-
- thumb_func_start sub_80A1110
-sub_80A1110: @ 80A1110
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _080A1128 @ =gUnknown_8416425
- movs r2, 0x4
- bl sub_80A10C4
- pop {r0}
- bx r0
- .align 2, 0
-_080A1128: .4byte gUnknown_8416425
- thumb_func_end sub_80A1110
-
- thumb_func_start sub_80A112C
-sub_80A112C: @ 80A112C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0x1
- bl ClearDialogWindowAndFrame
- adds r0, r4, 0
- bl DestroyTask
- bl sub_80696C0
- bl ScriptContext2_Disable
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A112C
-
- thumb_func_start sub_80A1150
-sub_80A1150: @ 80A1150
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl ItemId_GetPocket
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _080A1168
- movs r0, 0x1
- b _080A117E
-_080A1168:
- adds r0, r4, 0
- bl ItemId_GetFieldFunc
- ldr r1, _080A1178 @ =sub_80A1750
- cmp r0, r1
- beq _080A117C
- movs r0, 0
- b _080A117E
- .align 2, 0
-_080A1178: .4byte sub_80A1750
-_080A117C:
- movs r0, 0x2
-_080A117E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80A1150
-
- thumb_func_start sub_80A1184
-sub_80A1184: @ 80A1184
- ldr r1, _080A118C @ =gFieldCallback2
- ldr r0, _080A1190 @ =sub_80A1194
- str r0, [r1]
- bx lr
- .align 2, 0
-_080A118C: .4byte gFieldCallback2
-_080A1190: .4byte sub_80A1194
- thumb_func_end sub_80A1184
-
- thumb_func_start sub_80A1194
-sub_80A1194: @ 80A1194
- push {lr}
- bl player_bitmagic
- bl ScriptContext2_Enable
- bl sub_807DC00
- ldr r0, _080A11B8 @ =sub_80A11C0
- movs r1, 0xA
- bl CreateTask
- ldr r1, _080A11BC @ =gUnknown_2031DE0
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_080A11B8: .4byte sub_80A11C0
-_080A11BC: .4byte gUnknown_2031DE0
- thumb_func_end sub_80A1194
-
- thumb_func_start sub_80A11C0
-sub_80A11C0: @ 80A11C0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_807AA70
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A11E0
- bl UnfreezeMapObjects
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
-_080A11E0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A11C0
-
- thumb_func_start sub_80A11E8
-sub_80A11E8: @ 80A11E8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080A1204 @ =sub_80A1208
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1204: .4byte sub_80A1208
- thumb_func_end sub_80A11E8
-
- thumb_func_start sub_80A1208
-sub_80A1208: @ 80A1208
- push {lr}
- sub sp, 0x24
- mov r1, sp
- ldr r0, _080A1224 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- strh r0, [r1, 0x20]
- ldr r1, _080A1228 @ =UseFameCheckerFromMenu
- mov r0, sp
- movs r2, 0
- bl sub_80BEBEC
- add sp, 0x24
- pop {r0}
- bx r0
- .align 2, 0
-_080A1224: .4byte gSpecialVar_ItemId
-_080A1228: .4byte UseFameCheckerFromMenu
- thumb_func_end sub_80A1208
-
- thumb_func_start sub_80A122C
-sub_80A122C: @ 80A122C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x83
- lsls r0, 4
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080A129A
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_17
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080A129A
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_18
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080A129A
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_15
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080A129A
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_16
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A12BC
-_080A129A:
- ldr r1, _080A12B4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0xE]
- ldr r3, _080A12B8 @ =gUnknown_8416451
- adds r0, r5, 0
- movs r2, 0x2
- bl sub_80A10C4
- b _080A12F6
- .align 2, 0
-_080A12B4: .4byte gTasks
-_080A12B8: .4byte gUnknown_8416451
-_080A12BC:
- bl sub_8055C9C
- cmp r0, 0x1
- bne _080A12E4
- bl sub_80BD540
- lsls r0, 24
- cmp r0, 0
- bne _080A12E4
- ldr r1, _080A12DC @ =gUnknown_2039998
- ldr r0, _080A12E0 @ =sub_80A1304
- str r0, [r1]
- adds r0, r5, 0
- bl sub_80A103C
- b _080A12F6
- .align 2, 0
-_080A12DC: .4byte gUnknown_2039998
-_080A12E0: .4byte sub_80A1304
-_080A12E4:
- ldr r0, _080A1300 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrb r1, [r1, 0xE]
- adds r0, r5, 0
- bl sub_80A1110
-_080A12F6:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1300: .4byte gTasks
- thumb_func_end sub_80A122C
-
- thumb_func_start sub_80A1304
-sub_80A1304: @ 80A1304
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x6
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- bne _080A131C
- movs r0, 0xB
- bl PlaySE
-_080A131C:
- movs r0, 0x6
- bl sub_80BD5C8
- bl sub_80696C0
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A1304
-
- thumb_func_start sub_80A1338
-sub_80A1338: @ 80A1338
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80A137C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A1360
- ldr r1, _080A1358 @ =gUnknown_2039998
- ldr r0, _080A135C @ =ItemUseOnFieldCB_Rod
- str r0, [r1]
- adds r0, r4, 0
- bl sub_80A103C
- b _080A1372
- .align 2, 0
-_080A1358: .4byte gUnknown_2039998
-_080A135C: .4byte ItemUseOnFieldCB_Rod
-_080A1360:
- ldr r0, _080A1378 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrb r1, [r1, 0xE]
- adds r0, r4, 0
- bl sub_80A1110
-_080A1372:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1378: .4byte gTasks
- thumb_func_end sub_80A1338
-
- thumb_func_start sub_80A137C
-sub_80A137C: @ 80A137C
- push {r4-r6,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r0, r6, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- bl MetatileBehavior_IsWaterfall
- lsls r0, 24
- cmp r0, 0
- bne _080A1404
- movs r0, 0x10
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- bne _080A1404
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- bne _080A13D4
- bl IsPlayerFacingSurfableFishableWater
- lsls r0, 24
- cmp r0, 0
- beq _080A1404
-_080A13D0:
- movs r0, 0x1
- b _080A1406
-_080A13D4:
- adds r0, r5, 0
- bl MetatileBehavior_IsSurfable
- lsls r0, 24
- cmp r0, 0
- beq _080A13F4
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridIsImpassableAt
- lsls r0, 24
- cmp r0, 0
- beq _080A13D0
-_080A13F4:
- lsls r0, r6, 24
- lsrs r0, 24
- bl MetatileBehavior_ReturnFalse_6
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080A13D0
-_080A1404:
- movs r0, 0
-_080A1406:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80A137C
-
- thumb_func_start ItemUseOnFieldCB_Rod
-ItemUseOnFieldCB_Rod: @ 80A1410
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080A1434 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl ItemId_GetSecondaryId
- lsls r0, 24
- lsrs r0, 24
- bl sub_805D2C0
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1434: .4byte gSpecialVar_ItemId
- thumb_func_end ItemUseOnFieldCB_Rod
-
- thumb_func_start ItemUseOutOfBattle_Itemfinder
-ItemUseOutOfBattle_Itemfinder: @ 80A1438
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x27
- bl IncrementGameStat
- ldr r1, _080A1458 @ =gUnknown_2039998
- ldr r0, _080A145C @ =sub_813EC8C
- str r0, [r1]
- adds r0, r4, 0
- bl sub_80A103C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1458: .4byte gUnknown_2039998
-_080A145C: .4byte sub_813EC8C
- thumb_func_end ItemUseOutOfBattle_Itemfinder
-
- thumb_func_start sub_80A1460
-sub_80A1460: @ 80A1460
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080A14B4 @ =gStringVar1
- bl GetCoins
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- ldr r4, _080A14B8 @ =gStringVar4
- ldr r1, _080A14BC @ =gUnknown_8416537
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _080A14C0 @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r3, _080A14C4 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl sub_80A2294
- ldr r1, _080A14C8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0xE
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A14D0
- ldr r3, _080A14CC @ =sub_810A1F8
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl sub_8108E70
- b _080A14DC
- .align 2, 0
-_080A14B4: .4byte gStringVar1
-_080A14B8: .4byte gStringVar4
-_080A14BC: .4byte gUnknown_8416537
-_080A14C0: .4byte gSpecialVar_ItemId
-_080A14C4: .4byte 0x0000ffff
-_080A14C8: .4byte gTasks
-_080A14CC: .4byte sub_810A1F8
-_080A14D0:
- ldr r3, _080A14E4 @ =sub_80A112C
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl DisplayItemMessageOnField
-_080A14DC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A14E4: .4byte sub_80A112C
- thumb_func_end sub_80A1460
-
- thumb_func_start sub_80A14E8
-sub_80A14E8: @ 80A14E8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080A1538 @ =gStringVar1
- bl sub_815EFA0
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- ldr r4, _080A153C @ =gStringVar4
- ldr r1, _080A1540 @ =gUnknown_8416644
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _080A1544 @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r3, _080A1548 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl sub_80A2294
- ldr r1, _080A154C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0xE
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A1554
- ldr r3, _080A1550 @ =sub_810A1F8
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl sub_8108E70
- b _080A1560
- .align 2, 0
-_080A1538: .4byte gStringVar1
-_080A153C: .4byte gStringVar4
-_080A1540: .4byte gUnknown_8416644
-_080A1544: .4byte gSpecialVar_ItemId
-_080A1548: .4byte 0x0000ffff
-_080A154C: .4byte gTasks
-_080A1550: .4byte sub_810A1F8
-_080A1554:
- ldr r3, _080A1568 @ =sub_80A112C
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl DisplayItemMessageOnField
-_080A1560:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1568: .4byte sub_80A112C
- thumb_func_end sub_80A14E8
-
- thumb_func_start sub_80A156C
-sub_80A156C: @ 80A156C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0
- movs r4, 0
- b _080A1598
-_080A1578:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _080A15D0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x11
- adds r2, r4, 0
- movs r3, 0
- bl ExecuteTableBasedItemEffect
- lsls r0, 24
- cmp r0, 0
- bne _080A1592
- movs r6, 0x1
-_080A1592:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080A1598:
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _080A1578
- cmp r6, 0
- beq _080A1600
- ldr r0, _080A15D4 @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r3, _080A15D8 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl sub_80A2294
- ldr r1, _080A15DC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0xE
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080A15E8
- ldr r2, _080A15E0 @ =gUnknown_8416690
- ldr r3, _080A15E4 @ =sub_80A1648
- b _080A1616
- .align 2, 0
-_080A15D0: .4byte gPlayerParty
-_080A15D4: .4byte gSpecialVar_ItemId
-_080A15D8: .4byte 0x0000ffff
-_080A15DC: .4byte gTasks
-_080A15E0: .4byte gUnknown_8416690
-_080A15E4: .4byte sub_80A1648
-_080A15E8:
- ldr r2, _080A15F8 @ =gUnknown_8416690
- ldr r3, _080A15FC @ =sub_80A1648
- adds r0, r5, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
- b _080A1638
- .align 2, 0
-_080A15F8: .4byte gUnknown_8416690
-_080A15FC: .4byte sub_80A1648
-_080A1600:
- ldr r0, _080A1620 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080A162C
- ldr r2, _080A1624 @ =gUnknown_841665C
- ldr r3, _080A1628 @ =sub_810A1F8
-_080A1616:
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8108E70
- b _080A1638
- .align 2, 0
-_080A1620: .4byte gTasks
-_080A1624: .4byte gUnknown_841665C
-_080A1628: .4byte sub_810A1F8
-_080A162C:
- ldr r2, _080A1640 @ =gUnknown_841665C
- ldr r3, _080A1644 @ =sub_80A112C
- adds r0, r5, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
-_080A1638:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1640: .4byte gUnknown_841665C
-_080A1644: .4byte sub_80A112C
- thumb_func_end sub_80A156C
-
- thumb_func_start sub_80A1648
-sub_80A1648: @ 80A1648
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xB
- bl PlayFanfareByFanfareNum
- ldr r1, _080A166C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080A1670 @ =sub_80A1674
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A166C: .4byte gTasks
-_080A1670: .4byte sub_80A1674
- thumb_func_end sub_80A1648
-
- thumb_func_start sub_80A1674
-sub_80A1674: @ 80A1674
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- movs r0, 0
- bl WaitFanfare
- lsls r0, 24
- cmp r0, 0
- beq _080A16C0
- ldr r0, _080A16A8 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080A16B4
- ldr r2, _080A16AC @ =gUnknown_84166A7
- ldr r3, _080A16B0 @ =sub_810A1F8
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8108E70
- b _080A16C0
- .align 2, 0
-_080A16A8: .4byte gTasks
-_080A16AC: .4byte gUnknown_84166A7
-_080A16B0: .4byte sub_810A1F8
-_080A16B4:
- ldr r2, _080A16C8 @ =gUnknown_84166A7
- ldr r3, _080A16CC @ =sub_80A112C
- adds r0, r5, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
-_080A16C0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A16C8: .4byte gUnknown_84166A7
-_080A16CC: .4byte sub_80A112C
- thumb_func_end sub_80A1674
-
- thumb_func_start sub_80A16D0
-sub_80A16D0: @ 80A16D0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A0FBC
- pop {r0}
- bx r0
- thumb_func_end sub_80A16D0
-
- thumb_func_start sub_80A16E0
-sub_80A16E0: @ 80A16E0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A16F4 @ =gUnknown_3005E98
- ldr r1, _080A16F8 @ =sub_81252D0
- str r1, [r2]
- bl sub_80A16D0
- pop {r0}
- bx r0
- .align 2, 0
-_080A16F4: .4byte gUnknown_3005E98
-_080A16F8: .4byte sub_81252D0
- thumb_func_end sub_80A16E0
-
- thumb_func_start sub_80A16FC
-sub_80A16FC: @ 80A16FC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A1710 @ =gUnknown_3005E98
- ldr r1, _080A1714 @ =sub_81256F8
- str r1, [r2]
- bl sub_80A16D0
- pop {r0}
- bx r0
- .align 2, 0
-_080A1710: .4byte gUnknown_3005E98
-_080A1714: .4byte sub_81256F8
- thumb_func_end sub_80A16FC
-
- thumb_func_start sub_80A1718
-sub_80A1718: @ 80A1718
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A172C @ =gUnknown_3005E98
- ldr r1, _080A1730 @ =dp05_pp_up
- str r1, [r2]
- bl sub_80A16D0
- pop {r0}
- bx r0
- .align 2, 0
-_080A172C: .4byte gUnknown_3005E98
-_080A1730: .4byte dp05_pp_up
- thumb_func_end sub_80A1718
-
- thumb_func_start sub_80A1734
-sub_80A1734: @ 80A1734
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A1748 @ =gUnknown_3005E98
- ldr r1, _080A174C @ =dp05_rare_candy
- str r1, [r2]
- bl sub_80A16D0
- pop {r0}
- bx r0
- .align 2, 0
-_080A1748: .4byte gUnknown_3005E98
-_080A174C: .4byte dp05_rare_candy
- thumb_func_end sub_80A1734
-
- thumb_func_start sub_80A1750
-sub_80A1750: @ 80A1750
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A1764 @ =gUnknown_3005E98
- ldr r1, _080A1768 @ =sub_8126B60
- str r1, [r2]
- bl sub_80A16D0
- pop {r0}
- bx r0
- .align 2, 0
-_080A1764: .4byte gUnknown_3005E98
-_080A1768: .4byte sub_8126B60
- thumb_func_end sub_80A1750
-
- thumb_func_start sub_80A176C
-sub_80A176C: @ 80A176C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A1780 @ =gUnknown_3005E98
- ldr r1, _080A1784 @ =sub_8126894
- str r1, [r2]
- bl sub_80A0FBC
- pop {r0}
- bx r0
- .align 2, 0
-_080A1780: .4byte gUnknown_3005E98
-_080A1784: .4byte sub_8126894
- thumb_func_end sub_80A176C
-
- thumb_func_start sub_80A1788
-sub_80A1788: @ 80A1788
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080A17B0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A17B8
- ldr r0, _080A17B4 @ =sub_80A17D4
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- b _080A17C8
- .align 2, 0
-_080A17B0: .4byte gTasks
-_080A17B4: .4byte sub_80A17D4
-_080A17B8:
- bl sub_80CCB68
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r0, _080A17D0 @ =sub_80A17E8
- str r0, [r5]
-_080A17C8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A17D0: .4byte sub_80A17E8
- thumb_func_end sub_80A1788
-
- thumb_func_start sub_80A17D4
-sub_80A17D4: @ 80A17D4
- push {lr}
- ldr r1, _080A17E4 @ =UseFameCheckerFromMenu
- movs r0, 0
- movs r2, 0
- bl InitTMCase
- pop {r0}
- bx r0
- .align 2, 0
-_080A17E4: .4byte UseFameCheckerFromMenu
- thumb_func_end sub_80A17D4
-
- thumb_func_start sub_80A17E8
-sub_80A17E8: @ 80A17E8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1818 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A1812
- bl CleanupOverworldWindowsAndTilemaps
- bl sub_80A1184
- ldr r1, _080A181C @ =CB2_ReturnToField
- movs r0, 0
- movs r2, 0x1
- bl InitTMCase
- adds r0, r4, 0
- bl DestroyTask
-_080A1812:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1818: .4byte gPaletteFade
-_080A181C: .4byte CB2_ReturnToField
- thumb_func_end sub_80A17E8
-
- thumb_func_start sub_80A1820
-sub_80A1820: @ 80A1820
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080A1848 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A1850
- ldr r0, _080A184C @ =sub_80A186C
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- b _080A1860
- .align 2, 0
-_080A1848: .4byte gTasks
-_080A184C: .4byte sub_80A186C
-_080A1850:
- bl sub_80CCB68
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r0, _080A1868 @ =sub_80A1880
- str r0, [r5]
-_080A1860:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1868: .4byte sub_80A1880
- thumb_func_end sub_80A1820
-
- thumb_func_start sub_80A186C
-sub_80A186C: @ 80A186C
- push {lr}
- ldr r1, _080A187C @ =UseFameCheckerFromMenu
- movs r0, 0
- movs r2, 0
- bl sub_813CD50
- pop {r0}
- bx r0
- .align 2, 0
-_080A187C: .4byte UseFameCheckerFromMenu
- thumb_func_end sub_80A186C
-
- thumb_func_start sub_80A1880
-sub_80A1880: @ 80A1880
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A18B0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A18AA
- bl CleanupOverworldWindowsAndTilemaps
- bl sub_80A1184
- ldr r1, _080A18B4 @ =CB2_ReturnToField
- movs r0, 0
- movs r2, 0x1
- bl sub_813CD50
- adds r0, r4, 0
- bl DestroyTask
-_080A18AA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A18B0: .4byte gPaletteFade
-_080A18B4: .4byte CB2_ReturnToField
- thumb_func_end sub_80A1880
-
- thumb_func_start sub_80A18B8
-sub_80A18B8: @ 80A18B8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080A18D4 @ =sub_80A18D8
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A18D4: .4byte sub_80A18D8
- thumb_func_end sub_80A18B8
-
- thumb_func_start sub_80A18D8
-sub_80A18D8: @ 80A18D8
- push {lr}
- ldr r1, _080A18E8 @ =sub_8107ECC
- movs r0, 0x4
- movs r2, 0
- bl sub_813CD50
- pop {r0}
- bx r0
- .align 2, 0
-_080A18E8: .4byte sub_8107ECC
- thumb_func_end sub_80A18D8
-
- thumb_func_start sub_80A18EC
-sub_80A18EC: @ 80A18EC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1920 @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r3, _080A1924 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl sub_80A2294
- ldr r1, _080A1928 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A1930
- ldr r0, _080A192C @ =sub_80A194C
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- b _080A1940
- .align 2, 0
-_080A1920: .4byte gSpecialVar_ItemId
-_080A1924: .4byte 0x0000ffff
-_080A1928: .4byte gTasks
-_080A192C: .4byte sub_80A194C
-_080A1930:
- bl sub_80CCB68
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r0, _080A1948 @ =sub_80A1960
- str r0, [r5]
-_080A1940:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1948: .4byte sub_80A1960
- thumb_func_end sub_80A18EC
-
- thumb_func_start sub_80A194C
-sub_80A194C: @ 80A194C
- push {lr}
- ldr r1, _080A195C @ =UseFameCheckerFromMenu
- movs r0, 0
- bl sub_815ABC4
- pop {r0}
- bx r0
- .align 2, 0
-_080A195C: .4byte UseFameCheckerFromMenu
- thumb_func_end sub_80A194C
-
- thumb_func_start sub_80A1960
-sub_80A1960: @ 80A1960
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1990 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A1988
- bl CleanupOverworldWindowsAndTilemaps
- bl sub_80A1184
- ldr r1, _080A1994 @ =CB2_ReturnToField
- movs r0, 0
- bl sub_815ABC4
- adds r0, r4, 0
- bl DestroyTask
-_080A1988:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1990: .4byte gPaletteFade
-_080A1994: .4byte CB2_ReturnToField
- thumb_func_end sub_80A1960
-
- thumb_func_start sub_80A1998
-sub_80A1998: @ 80A1998
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A19C0 @ =0x00004020
- bl VarGet
- lsls r0, 16
- cmp r0, 0
- bne _080A19CC
- movs r0, 0x29
- bl PlaySE
- ldr r0, _080A19C4 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080A19C8 @ =sub_80A19E8
- str r0, [r1]
- b _080A19D8
- .align 2, 0
-_080A19C0: .4byte 0x00004020
-_080A19C4: .4byte gTasks
-_080A19C8: .4byte sub_80A19E8
-_080A19CC:
- ldr r2, _080A19E0 @ =gUnknown_841659E
- ldr r3, _080A19E4 @ =sub_810A1F8
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8108E70
-_080A19D8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A19E0: .4byte gUnknown_841659E
-_080A19E4: .4byte sub_810A1F8
- thumb_func_end sub_80A1998
-
- thumb_func_start sub_80A19E8
-sub_80A19E8: @ 80A19E8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _080A1A2A
- ldr r4, _080A1A30 @ =gSpecialVar_ItemId
- ldrh r2, [r4]
- ldr r3, _080A1A34 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl sub_80A2294
- ldr r5, _080A1A38 @ =0x00004020
- ldrh r0, [r4]
- bl ItemId_GetHoldEffectParam
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl VarSet
- bl sub_80A1A44
- ldr r2, _080A1A3C @ =gStringVar4
- ldr r3, _080A1A40 @ =sub_810A1F8
- adds r0, r6, 0
- movs r1, 0x2
- bl sub_8108E70
-_080A1A2A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1A30: .4byte gSpecialVar_ItemId
-_080A1A34: .4byte 0x0000ffff
-_080A1A38: .4byte 0x00004020
-_080A1A3C: .4byte gStringVar4
-_080A1A40: .4byte sub_810A1F8
- thumb_func_end sub_80A19E8
-
- thumb_func_start sub_80A1A44
-sub_80A1A44: @ 80A1A44
- push {r4,lr}
- ldr r4, _080A1A84 @ =gSpecialVar_ItemId
- ldrh r0, [r4]
- movs r1, 0x1
- bl RemoveBagItem
- ldrh r0, [r4]
- bl ItemId_GetPocket
- lsls r0, 24
- lsrs r0, 24
- bl sub_8108DC8
- ldrh r0, [r4]
- bl ItemId_GetPocket
- lsls r0, 24
- lsrs r0, 24
- bl sub_81089F4
- ldrh r0, [r4]
- ldr r1, _080A1A88 @ =gStringVar2
- bl CopyItemName
- ldr r0, _080A1A8C @ =gStringVar4
- ldr r1, _080A1A90 @ =gUnknown_841658C
- bl StringExpandPlaceholders
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1A84: .4byte gSpecialVar_ItemId
-_080A1A88: .4byte gStringVar2
-_080A1A8C: .4byte gStringVar4
-_080A1A90: .4byte gUnknown_841658C
- thumb_func_end sub_80A1A44
-
- thumb_func_start sub_80A1A94
-sub_80A1A94: @ 80A1A94
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- ldr r5, _080A1AD4 @ =gSpecialVar_ItemId
- ldrh r2, [r5]
- ldr r3, _080A1AD8 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl sub_80A2294
- ldrh r0, [r5]
- cmp r0, 0x2B
- bne _080A1AF4
- ldr r0, _080A1ADC @ =0x00000803
- bl FlagSet
- ldr r0, _080A1AE0 @ =0x00000804
- bl FlagClear
- ldrh r0, [r5]
- ldr r1, _080A1AE4 @ =gStringVar2
- bl CopyItemName
- ldr r0, _080A1AE8 @ =gStringVar4
- ldr r1, _080A1AEC @ =gUnknown_84165D2
- bl StringExpandPlaceholders
- ldr r1, _080A1AF0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- b _080A1B1A
- .align 2, 0
-_080A1AD4: .4byte gSpecialVar_ItemId
-_080A1AD8: .4byte 0x0000ffff
-_080A1ADC: .4byte 0x00000803
-_080A1AE0: .4byte 0x00000804
-_080A1AE4: .4byte gStringVar2
-_080A1AE8: .4byte gStringVar4
-_080A1AEC: .4byte gUnknown_84165D2
-_080A1AF0: .4byte gTasks
-_080A1AF4:
- cmp r0, 0x2A
- bne _080A1B26
- ldr r0, _080A1B2C @ =0x00000804
- bl FlagSet
- ldr r0, _080A1B30 @ =0x00000803
- bl FlagClear
- ldrh r0, [r5]
- ldr r1, _080A1B34 @ =gStringVar2
- bl CopyItemName
- ldr r0, _080A1B38 @ =gStringVar4
- ldr r1, _080A1B3C @ =gUnknown_8416600
- bl StringExpandPlaceholders
- ldr r1, _080A1B40 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
-_080A1B1A:
- lsls r0, 3
- adds r0, r1
- ldr r1, _080A1B44 @ =sub_80A1B48
- str r1, [r0]
- movs r1, 0
- strh r1, [r0, 0x18]
-_080A1B26:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1B2C: .4byte 0x00000804
-_080A1B30: .4byte 0x00000803
-_080A1B34: .4byte gStringVar2
-_080A1B38: .4byte gStringVar4
-_080A1B3C: .4byte gUnknown_8416600
-_080A1B40: .4byte gTasks
-_080A1B44: .4byte sub_80A1B48
- thumb_func_end sub_80A1A94
-
- thumb_func_start sub_80A1B48
-sub_80A1B48: @ 80A1B48
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1B80 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- strh r0, [r1, 0x18]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080A1B78
- movs r0, 0x6E
- bl PlaySE
- ldr r2, _080A1B84 @ =gStringVar4
- ldr r3, _080A1B88 @ =sub_810A1F8
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8108E70
-_080A1B78:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1B80: .4byte gTasks
-_080A1B84: .4byte gStringVar4
-_080A1B88: .4byte sub_810A1F8
- thumb_func_end sub_80A1B48
-
- thumb_func_start sub_80A1B8C
-sub_80A1B8C: @ 80A1B8C
- push {lr}
- ldr r0, _080A1BA0 @ =gMapHeader
- ldrb r1, [r0, 0x19]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080A1BA4
- movs r0, 0
- b _080A1BA6
- .align 2, 0
-_080A1BA0: .4byte gMapHeader
-_080A1BA4:
- movs r0, 0x1
-_080A1BA6:
- pop {r1}
- bx r1
- thumb_func_end sub_80A1B8C
-
- thumb_func_start ItemUseOutOfBattle_EscapeRope
-ItemUseOutOfBattle_EscapeRope: @ 80A1BAC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80A1B8C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A1BEC
- ldr r0, _080A1BDC @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r0, _080A1BE0 @ =gMapHeader
- ldrb r3, [r0, 0x14]
- movs r0, 0x4
- movs r1, 0
- bl sub_80A2294
- ldr r1, _080A1BE4 @ =gUnknown_2039998
- ldr r0, _080A1BE8 @ =sub_80A1C08
- str r0, [r1]
- adds r0, r4, 0
- bl sub_80A103C
- b _080A1BFE
- .align 2, 0
-_080A1BDC: .4byte gSpecialVar_ItemId
-_080A1BE0: .4byte gMapHeader
-_080A1BE4: .4byte gUnknown_2039998
-_080A1BE8: .4byte sub_80A1C08
-_080A1BEC:
- ldr r0, _080A1C04 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrb r1, [r1, 0xE]
- adds r0, r4, 0
- bl sub_80A1110
-_080A1BFE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1C04: .4byte gTasks
- thumb_func_end ItemUseOutOfBattle_EscapeRope
-
- thumb_func_start sub_80A1C08
-sub_80A1C08: @ 80A1C08
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8054D70
- bl sub_80A1A44
- ldr r1, _080A1C38 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x8]
- ldr r2, _080A1C3C @ =gStringVar4
- ldr r3, _080A1C40 @ =sub_80A1C44
- adds r0, r4, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1C38: .4byte gTasks
-_080A1C3C: .4byte gStringVar4
-_080A1C40: .4byte sub_80A1C44
- thumb_func_end sub_80A1C08
-
- thumb_func_start sub_80A1C44
-sub_80A1C44: @ 80A1C44
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl ResetInitialPlayerAvatarState
- bl sub_8085620
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A1C44
-
- thumb_func_start sub_80A1C60
-sub_80A1C60: @ 80A1C60
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080A1C88 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A1C90
- ldr r0, _080A1C8C @ =sub_80A1CAC
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- b _080A1CA0
- .align 2, 0
-_080A1C88: .4byte gTasks
-_080A1C8C: .4byte sub_80A1CAC
-_080A1C90:
- bl sub_80CCB68
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r0, _080A1CA8 @ =sub_80A1CC0
- str r0, [r5]
-_080A1CA0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1CA8: .4byte sub_80A1CC0
- thumb_func_end sub_80A1C60
-
- thumb_func_start sub_80A1CAC
-sub_80A1CAC: @ 80A1CAC
- push {lr}
- ldr r1, _080A1CBC @ =UseFameCheckerFromMenu
- movs r0, 0
- bl sub_80BFF50
- pop {r0}
- bx r0
- .align 2, 0
-_080A1CBC: .4byte UseFameCheckerFromMenu
- thumb_func_end sub_80A1CAC
-
- thumb_func_start sub_80A1CC0
-sub_80A1CC0: @ 80A1CC0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1CF0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A1CE8
- bl CleanupOverworldWindowsAndTilemaps
- bl sub_80A1184
- ldr r1, _080A1CF4 @ =CB2_ReturnToField
- movs r0, 0
- bl sub_80BFF50
- adds r0, r4, 0
- bl DestroyTask
-_080A1CE8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1CF0: .4byte gPaletteFade
-_080A1CF4: .4byte CB2_ReturnToField
- thumb_func_end sub_80A1CC0
-
- thumb_func_start sub_80A1CF8
-sub_80A1CF8: @ 80A1CF8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1D2C @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r3, _080A1D30 @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl sub_80A2294
- ldr r1, _080A1D34 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A1D3C
- ldr r0, _080A1D38 @ =sub_80A1D58
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
- b _080A1D4C
- .align 2, 0
-_080A1D2C: .4byte gSpecialVar_ItemId
-_080A1D30: .4byte 0x0000ffff
-_080A1D34: .4byte gTasks
-_080A1D38: .4byte sub_80A1D58
-_080A1D3C:
- bl sub_80CCB68
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r0, _080A1D54 @ =sub_80A1D68
- str r0, [r5]
-_080A1D4C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1D54: .4byte sub_80A1D68
- thumb_func_end sub_80A1CF8
-
- thumb_func_start sub_80A1D58
-sub_80A1D58: @ 80A1D58
- push {lr}
- ldr r0, _080A1D64 @ =UseFameCheckerFromMenu
- bl UseFameChecker
- pop {r0}
- bx r0
- .align 2, 0
-_080A1D64: .4byte UseFameCheckerFromMenu
- thumb_func_end sub_80A1D58
-
- thumb_func_start sub_80A1D68
-sub_80A1D68: @ 80A1D68
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1D94 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A1D8E
- bl CleanupOverworldWindowsAndTilemaps
- bl sub_80A1184
- ldr r0, _080A1D98 @ =CB2_ReturnToField
- bl UseFameChecker
- adds r0, r4, 0
- bl DestroyTask
-_080A1D8E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1D94: .4byte gPaletteFade
-_080A1D98: .4byte CB2_ReturnToField
- thumb_func_end sub_80A1D68
-
- thumb_func_start sub_80A1D9C
-sub_80A1D9C: @ 80A1D9C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080A1DE8 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x3
- beq _080A1DB2
- cmp r0, 0x1
- beq _080A1DB2
- cmp r0, 0x2
- bne _080A1DD2
-_080A1DB2:
- ldr r0, _080A1DEC @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, 0x1
- bne _080A1DF4
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _080A1DD2
- cmp r0, 0x61
- beq _080A1DD2
- cmp r0, 0x6D
- beq _080A1DD2
- cmp r0, 0x79
- bne _080A1DF4
-_080A1DD2:
- ldr r0, _080A1DF0 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrb r1, [r1, 0xE]
- adds r0, r2, 0
- bl sub_80A1110
- b _080A1E00
- .align 2, 0
-_080A1DE8: .4byte gMapHeader
-_080A1DEC: .4byte gSaveBlock1Ptr
-_080A1DF0: .4byte gTasks
-_080A1DF4:
- ldr r1, _080A1E04 @ =gUnknown_2039998
- ldr r0, _080A1E08 @ =Task_VsSeeker_0
- str r0, [r1]
- adds r0, r2, 0
- bl sub_80A103C
-_080A1E00:
- pop {r0}
- bx r0
- .align 2, 0
-_080A1E04: .4byte gUnknown_2039998
-_080A1E08: .4byte Task_VsSeeker_0
- thumb_func_end sub_80A1D9C
-
- thumb_func_start sub_80A1E0C
-sub_80A1E0C: @ 80A1E0C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A112C
- pop {r0}
- bx r0
- thumb_func_end sub_80A1E0C
-
- thumb_func_start sub_80A1E1C
-sub_80A1E1C: @ 80A1E1C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsPlayerPartyAndPokemonStorageFull
- lsls r0, 24
- cmp r0, 0
- bne _080A1E48
- ldr r0, _080A1E44 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- movs r1, 0x1
- bl RemoveBagItem
- bl sub_8108CB4
- adds r0, r4, 0
- bl sub_8108B50
- b _080A1E54
- .align 2, 0
-_080A1E44: .4byte gSpecialVar_ItemId
-_080A1E48:
- ldr r2, _080A1E5C @ =gUnknown_8416631
- ldr r3, _080A1E60 @ =sub_810A1F8
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8108E70
-_080A1E54:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1E5C: .4byte gUnknown_8416631
-_080A1E60: .4byte sub_810A1F8
- thumb_func_end sub_80A1E1C
-
- thumb_func_start sub_80A1E64
-sub_80A1E64: @ 80A1E64
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8108CB4
- adds r0, r4, 0
- bl sub_8108B50
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A1E64
-
- thumb_func_start sub_80A1E7C
-sub_80A1E7C: @ 80A1E7C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080A1EBC @ =gBattlerPartyIndexes
- ldr r0, _080A1EC0 @ =gBattlerInMenuId
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r1, _080A1EC4 @ =gPlayerParty
- adds r0, r1
- ldr r1, _080A1EC8 @ =gSpecialVar_ItemId
- ldrh r1, [r1]
- lsls r2, 24
- lsrs r2, 24
- movs r3, 0
- bl ExecuteTableBasedItemEffect
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _080A1ED4
- ldr r2, _080A1ECC @ =gUnknown_84169DC
- ldr r3, _080A1ED0 @ =sub_810A1F8
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8108E70
- b _080A1EE4
- .align 2, 0
-_080A1EBC: .4byte gBattlerPartyIndexes
-_080A1EC0: .4byte gBattlerInMenuId
-_080A1EC4: .4byte gPlayerParty
-_080A1EC8: .4byte gSpecialVar_ItemId
-_080A1ECC: .4byte gUnknown_84169DC
-_080A1ED0: .4byte sub_810A1F8
-_080A1ED4:
- ldr r0, _080A1EEC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- strh r2, [r1, 0x18]
- ldr r0, _080A1EF0 @ =sub_80A1EF4
- str r0, [r1]
-_080A1EE4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1EEC: .4byte gTasks
-_080A1EF0: .4byte sub_80A1EF4
- thumb_func_end sub_80A1E7C
-
- thumb_func_start sub_80A1EF4
-sub_80A1EF4: @ 80A1EF4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- ldr r0, _080A1F3C @ =gTasks+0x8
- adds r1, r0
- ldrh r0, [r1, 0x10]
- adds r0, 0x1
- strh r0, [r1, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080A1F36
- ldr r0, _080A1F40 @ =gSpecialVar_ItemId
- ldrh r4, [r0]
- movs r0, 0x1
- bl PlaySE
- adds r0, r4, 0
- movs r1, 0x1
- bl RemoveBagItem
- adds r0, r4, 0
- bl sub_8042DA4
- adds r2, r0, 0
- ldr r3, _080A1F44 @ =sub_80A1F48
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8108E70
-_080A1F36:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1F3C: .4byte gTasks+0x8
-_080A1F40: .4byte gSpecialVar_ItemId
-_080A1F44: .4byte sub_80A1F48
- thumb_func_end sub_80A1EF4
-
- thumb_func_start sub_80A1F48
-sub_80A1F48: @ 80A1F48
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1F74 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080A1F62
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080A1F6C
-_080A1F62:
- bl sub_8108CB4
- adds r0, r4, 0
- bl sub_8108B50
-_080A1F6C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1F74: .4byte gMain
- thumb_func_end sub_80A1F48
-
- thumb_func_start sub_80A1F78
-sub_80A1F78: @ 80A1F78
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A1F9C @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl GetPocketByItemId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bne _080A1FA4
- ldr r0, _080A1FA0 @ =sub_81279E0
- bl sub_813D934
- adds r0, r4, 0
- bl sub_813D808
- b _080A1FB0
- .align 2, 0
-_080A1F9C: .4byte gSpecialVar_ItemId
-_080A1FA0: .4byte sub_81279E0
-_080A1FA4:
- ldr r0, _080A1FB8 @ =sub_81279E0
- bl sub_8108EE0
- adds r0, r4, 0
- bl sub_8108B50
-_080A1FB0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1FB8: .4byte sub_81279E0
- thumb_func_end sub_80A1F78
-
- thumb_func_start sub_80A1FBC
-sub_80A1FBC: @ 80A1FBC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A1FD0 @ =gUnknown_3005E98
- ldr r1, _080A1FD4 @ =ItemUseCB_Medicine
- str r1, [r2]
- bl sub_80A1F78
- pop {r0}
- bx r0
- .align 2, 0
-_080A1FD0: .4byte gUnknown_3005E98
-_080A1FD4: .4byte ItemUseCB_Medicine
- thumb_func_end sub_80A1FBC
-
- thumb_func_start sub_80A1FD8
-sub_80A1FD8: @ 80A1FD8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A1FEC @ =gUnknown_3005E98
- ldr r1, _080A1FF0 @ =sub_8126894
- str r1, [r2]
- bl sub_80A1F78
- pop {r0}
- bx r0
- .align 2, 0
-_080A1FEC: .4byte gUnknown_3005E98
-_080A1FF0: .4byte sub_8126894
- thumb_func_end sub_80A1FD8
-
- thumb_func_start sub_80A1FF4
-sub_80A1FF4: @ 80A1FF4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A2008 @ =gUnknown_3005E98
- ldr r1, _080A200C @ =sub_81256F8
- str r1, [r2]
- bl sub_80A1F78
- pop {r0}
- bx r0
- .align 2, 0
-_080A2008: .4byte gUnknown_3005E98
-_080A200C: .4byte sub_81256F8
- thumb_func_end sub_80A1FF4
-
- thumb_func_start sub_80A2010
-sub_80A2010: @ 80A2010
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A2044 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- bne _080A2058
- bl sub_80A1A44
- ldr r0, _080A2048 @ =gSpecialVar_ItemId
- ldrh r2, [r0]
- ldr r3, _080A204C @ =0x0000ffff
- movs r0, 0x4
- movs r1, 0
- bl sub_80A2294
- ldr r2, _080A2050 @ =gStringVar4
- ldr r3, _080A2054 @ =sub_8108B50
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8108E70
- b _080A2060
- .align 2, 0
-_080A2044: .4byte gBattleTypeFlags
-_080A2048: .4byte gSpecialVar_ItemId
-_080A204C: .4byte 0x0000ffff
-_080A2050: .4byte gStringVar4
-_080A2054: .4byte sub_8108B50
-_080A2058:
- adds r0, r4, 0
- movs r1, 0
- bl sub_80A1110
-_080A2060:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A2010
-
- thumb_func_start ItemUseOutOfBattle_EnigmaBerry
-ItemUseOutOfBattle_EnigmaBerry: @ 80A2068
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A208C @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl GetItemEffectType
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x14
- bls _080A2082
- b _080A2174
-_080A2082:
- lsls r0, 2
- ldr r1, _080A2090 @ =_080A2094
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080A208C: .4byte gSpecialVar_ItemId
-_080A2090: .4byte _080A2094
- .align 2, 0
-_080A2094:
- .4byte _080A2120
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A2174
- .4byte _080A2174
- .4byte _080A2104
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A20E8
- .4byte _080A2174
- .4byte _080A213C
- .4byte _080A213C
- .4byte _080A2158
-_080A20E8:
- ldr r0, _080A2100 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x10]
- adds r0, r4, 0
- bl sub_80A16E0
- b _080A2188
- .align 2, 0
-_080A2100: .4byte gTasks
-_080A2104:
- ldr r0, _080A211C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x10]
- adds r0, r4, 0
- bl sub_80A176C
- b _080A2188
- .align 2, 0
-_080A211C: .4byte gTasks
-_080A2120:
- ldr r0, _080A2138 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x10]
- adds r0, r4, 0
- bl sub_80A1734
- b _080A2188
- .align 2, 0
-_080A2138: .4byte gTasks
-_080A213C:
- ldr r0, _080A2154 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x10]
- adds r0, r4, 0
- bl sub_80A1718
- b _080A2188
- .align 2, 0
-_080A2154: .4byte gTasks
-_080A2158:
- ldr r0, _080A2170 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x10]
- adds r0, r4, 0
- bl sub_80A16FC
- b _080A2188
- .align 2, 0
-_080A2170: .4byte gTasks
-_080A2174:
- ldr r0, _080A2190 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x4
- strh r0, [r1, 0x10]
- adds r0, r4, 0
- bl sub_80A2238
-_080A2188:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2190: .4byte gTasks
- thumb_func_end ItemUseOutOfBattle_EnigmaBerry
-
- thumb_func_start ItemUseInBattle_EnigmaBerry
-ItemUseInBattle_EnigmaBerry: @ 80A2194
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080A21B4 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl GetItemEffectType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x15
- bhi _080A222C
- lsls r0, 2
- ldr r1, _080A21B8 @ =_080A21BC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080A21B4: .4byte gSpecialVar_ItemId
-_080A21B8: .4byte _080A21BC
- .align 2, 0
-_080A21BC:
- .4byte _080A2214
- .4byte _080A222C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A221C
- .4byte _080A222C
- .4byte _080A221C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A222C
- .4byte _080A2224
-_080A2214:
- adds r0, r4, 0
- bl sub_80A1E7C
- b _080A2232
-_080A221C:
- adds r0, r4, 0
- bl sub_80A1FBC
- b _080A2232
-_080A2224:
- adds r0, r4, 0
- bl sub_80A1FF4
- b _080A2232
-_080A222C:
- adds r0, r4, 0
- bl sub_80A2238
-_080A2232:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ItemUseInBattle_EnigmaBerry
-
- thumb_func_start sub_80A2238
-sub_80A2238: @ 80A2238
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080A2268 @ =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl GetPocketByItemId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bne _080A2278
- ldr r4, _080A226C @ =gStringVar4
- ldr r1, _080A2270 @ =gUnknown_8416425
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r3, _080A2274 @ =sub_813E2B8
- adds r0, r5, 0
- movs r1, 0x4
- adds r2, r4, 0
- bl sub_813EB20
- b _080A228A
- .align 2, 0
-_080A2268: .4byte gSpecialVar_ItemId
-_080A226C: .4byte gStringVar4
-_080A2270: .4byte gUnknown_8416425
-_080A2274: .4byte sub_813E2B8
-_080A2278:
- ldr r0, _080A2290 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrb r1, [r1, 0xE]
- adds r0, r5, 0
- bl sub_80A1110
-_080A228A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2290: .4byte gTasks
- thumb_func_end sub_80A2238
-
- thumb_func_start sub_80A2294
-sub_80A2294: @ 80A2294
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r1, 0
- adds r4, r2, 0
- adds r5, r3, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- movs r0, 0x8
- bl Alloc
- adds r6, r0, 0
- strh r4, [r6]
- strh r5, [r6, 0x6]
- cmp r7, 0
- beq _080A22C8
- adds r0, r7, 0
- movs r1, 0x41
- bl GetMonData
- b _080A22CA
-_080A22C8:
- ldr r0, _080A22E4 @ =0x0000ffff
-_080A22CA:
- strh r0, [r6, 0x4]
- mov r0, r8
- adds r1, r6, 0
- bl sub_8113550
- adds r0, r6, 0
- bl Free
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A22E4: .4byte 0x0000ffff
- thumb_func_end sub_80A2294
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/itemfinder.s b/asm/itemfinder.s
index e510252ab..8a2dec9de 100644
--- a/asm/itemfinder.s
+++ b/asm/itemfinder.s
@@ -1091,7 +1091,7 @@ _0813F470:
.4byte _0813F50C
.4byte _0813F52C
_0813F484:
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
diff --git a/asm/learn_move.s b/asm/learn_move.s
index 92f6abfea..6684874bb 100644
--- a/asm/learn_move.s
+++ b/asm/learn_move.s
@@ -76,7 +76,7 @@ sub_80E469C: @ 80E469C
movs r0, 0
movs r2, 0x2
bl InitBgsFromTemplates
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
ldr r0, _080E4778 @ =gUnknown_83FFA44
bl InitWindows
lsls r0, 16
@@ -119,7 +119,7 @@ _080E46C6:
movs r0, 0
movs r1, 0x1
movs r2, 0xE0
- bl sub_815001C
+ bl TextWindow_SetUserSelectedFrame
movs r0, 0xD0
movs r1, 0x1
bl sub_8107D38
@@ -736,7 +736,7 @@ _080E4C7E:
adds r1, r2, r3
ldr r6, _080E4CD4 @ =0x00000a6a
adds r2, r6
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
bl FreeAllWindowBuffers
ldr r0, _080E4CD8 @ =gPlayerParty
ldr r5, [r7]
@@ -1409,7 +1409,7 @@ sub_80E5204: @ 80E5204
ldr r1, _080E525C @ =0x00000263
adds r0, r1
ldrb r0, [r0]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
ldr r0, _080E5260 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x1
@@ -1568,7 +1568,7 @@ sub_80E5340: @ 80E5340
movs r0, 0x2
movs r2, 0x1
movs r3, 0x4
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
ldrb r0, [r4, 0x1]
cmp r0, 0x1
bhi _080E5388
@@ -1680,27 +1680,27 @@ sub_80E5444: @ 80E5444
movs r1, 0x13
movs r2, 0x1
movs r3, 0x4
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
movs r0, 0x1
movs r1, 0x14
movs r2, 0
movs r3, 0x4
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
movs r0, 0x1
movs r1, 0x15
movs r2, 0
movs r3, 0x13
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
movs r0, 0
movs r1, 0x16
movs r2, 0x1
movs r3, 0x13
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
movs r0, 0
movs r1, 0x17
movs r2, 0x1
movs r3, 0x22
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
movs r0, 0
bl PutWindowTilemap
movs r0, 0x1
@@ -1936,7 +1936,7 @@ _080E563E:
movs r1, 0x3
adds r2, r7, 0
adds r3, r6, 0
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
add sp, 0x14
pop {r3-r5}
mov r8, r3
diff --git a/asm/link.s b/asm/link.s
index 6b89ed2db..7275ebbd2 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -3288,7 +3288,7 @@ _0800AD30:
cmp r0, 0
beq _0800ADD8
bl DeactivateAllTextPrinters
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
movs r0, 0x52
movs r1, 0
bl SetGpuReg
@@ -3387,7 +3387,7 @@ sub_800AE1C: @ 800AE1C
movs r1, 0x3
movs r2, 0x2
movs r3, 0x5
- bl box_print
+ bl AddTextPrinterParameterized3
str r4, [sp]
str r5, [sp, 0x4]
ldr r0, _0800AECC @ =gUnknown_841DF05
@@ -3396,7 +3396,7 @@ sub_800AE1C: @ 800AE1C
movs r1, 0x3
movs r2, 0x2
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0
bl PutWindowTilemap
movs r0, 0x2
@@ -3444,7 +3444,7 @@ sub_800AED0: @ 800AED0
movs r1, 0x3
movs r2, 0x2
movs r3, 0
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0x2
@@ -3522,7 +3522,7 @@ _0800AF7A:
movs r1, 0x3
movs r2, 0x2
movs r3, 0x14
- bl box_print
+ bl AddTextPrinterParameterized3
b _0800AFC4
.align 2, 0
_0800AF9C: .4byte gWirelessCommType
@@ -3541,7 +3541,7 @@ _0800AFA8:
movs r1, 0x3
movs r2, 0x2
movs r3, 0x14
- bl box_print
+ bl AddTextPrinterParameterized3
_0800AFC4:
ldr r0, _0800B004 @ =gMain
movs r2, 0x87
@@ -4686,7 +4686,7 @@ _0800B85C:
_0800B860:
adds r0, r2, 0
strh r0, [r1]
- ldr r2, _0800B8BC @ =gUnknown_3003FB4
+ ldr r2, _0800B8BC @ =gSioMlt_Recv
ldr r3, _0800B8C0 @ =0x04000120
ldr r0, [r3]
ldr r1, [r3, 0x4]
@@ -4731,7 +4731,7 @@ _0800B8A0:
.align 2, 0
_0800B8B4: .4byte 0x0400012a
_0800B8B8: .4byte 0x0000b9a0
-_0800B8BC: .4byte gUnknown_3003FB4
+_0800B8BC: .4byte gSioMlt_Recv
_0800B8C0: .4byte 0x04000120
_0800B8C4: .4byte gUnknown_3000E6B
_0800B8C8: .4byte 0x00008fff
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index 0e1a79b65..c6918f6ad 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -3259,7 +3259,7 @@ sub_80FEC54: @ 80FEC54
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl is_c1_link_related_active
+ bl IsUpdateLinkStateCBActive
cmp r0, 0
bne _080FEC70
_080FEC62:
@@ -7823,7 +7823,7 @@ _08100E0A:
str r0, [sp, 0x8]
mov r0, r12
adds r2, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0x10
pop {r3,r4}
mov r8, r3
@@ -7851,7 +7851,7 @@ sub_8100E34: @ 8100E34
movs r0, 0x1
movs r1, 0x1
movs r2, 0xE0
- bl sub_815001C
+ bl TextWindow_SetUserSelectedFrame
movs r0, 0x1
movs r1, 0x1
movs r2, 0xE
@@ -9465,7 +9465,7 @@ sub_8101A90: @ 8101A90
ldr r4, _08101AC0 @ =gUnknown_843F938
_08101AA2:
adds r0, r4, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x3
diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s
index feb7c886f..2bfeaca50 100644
--- a/asm/link_rfu_2.s
+++ b/asm/link_rfu_2.s
@@ -9525,7 +9525,7 @@ sub_80FCEA8: @ 80FCEA8
cmp r0, r1
bne _080FCEC0
adds r0, r4, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
_080FCEC0:
ldr r0, _080FCEDC @ =gUnknown_843F27C
bl LoadSpritePalette
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s
index f2e88b619..17d761a3d 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -620,7 +620,7 @@ _08115DD4:
bl sub_81165E8
strb r0, [r5, 0x13]
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
b _0811610C
.align 2, 0
_08115DE4: .4byte gUnknown_203B058
@@ -783,7 +783,7 @@ _08115EF4:
movs r0, 0
strb r0, [r1, 0x1B]
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
ldrb r0, [r5, 0x13]
adds r0, 0x1
strb r0, [r5, 0x13]
@@ -870,7 +870,7 @@ _08115FB4:
ldr r0, [r5]
bl sub_81165E8
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
_08115FF0:
movs r0, 0x4
strb r0, [r5, 0xC]
@@ -1139,7 +1139,7 @@ sub_81161E4: @ 81161E4
ldrb r0, [r4, 0x12]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4, 0x10]
bl ClearWindowTilemap
ldrb r0, [r4, 0xF]
@@ -1400,7 +1400,7 @@ _08116460:
movs r0, 0x2
bl PlaySE
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
ldr r4, _081164A0 @ =gStringVar2
ldrb r0, [r5, 0x13]
lsls r0, 5
@@ -1433,7 +1433,7 @@ _081164AC:
movs r1, 0
bl sub_80FB9E4
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
strb r4, [r5, 0xC]
movs r0, 0x1
b _081164C2
@@ -1972,7 +1972,7 @@ _08116916:
b _08116BF6
_0811691E:
ldrb r0, [r6, 0xE]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r4, r0, 0
ldr r0, _0811696C @ =gMain
ldrh r1, [r0, 0x2E]
@@ -2301,7 +2301,7 @@ _08116BF4:
strb r0, [r6, 0x8]
_08116BF6:
ldrb r0, [r6, 0xE]
- bl sub_8107180
+ bl RedrawListMenu
b _08116D06
_08116BFE:
bl sub_80FB9F4
@@ -2322,7 +2322,7 @@ _08116C10:
ldrb r0, [r6, 0xE]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r6, 0xC]
bl ClearWindowTilemap
ldrb r0, [r6, 0xB]
@@ -2480,7 +2480,7 @@ sub_8116D60: @ 8116D60
movs r1, 0
bl sub_80FCD74
ldrb r0, [r4, 0xE]
- bl sub_8107180
+ bl RedrawListMenu
ldr r5, _08116DD4 @ =gStringVar1
ldrb r0, [r4, 0xF]
lsls r0, 5
@@ -3154,14 +3154,14 @@ _081172C0:
cmp r4, r0
bne _0811734A
movs r4, 0
- ldr r0, _081172E0 @ =gUnknown_2039624
+ ldr r0, _081172E0 @ =gTrainerCards
adds r7, r0, 0
adds r7, 0x38
ldr r6, _081172E4 @ =gLinkPlayers
adds r5, r0, 0
b _08117302
.align 2, 0
-_081172E0: .4byte gUnknown_2039624
+_081172E0: .4byte gTrainerCards
_081172E4: .4byte gLinkPlayers
_081172E8:
lsls r0, r4, 8
@@ -3367,7 +3367,7 @@ sub_8117440: @ 8117440
movs r0, 0
mov r3, r8
bl SetDynamicWarpWithCoords
- bl warp_in
+ bl WarpIntoMap
add sp, 0x8
pop {r3}
mov r8, r3
@@ -3424,7 +3424,7 @@ sub_81174B4: @ 81174B4
adds r1, r5, 0
mov r3, r8
bl Overworld_SetWarpDestination
- bl warp_in
+ bl WarpIntoMap
add sp, 0x4
pop {r3}
mov r8, r3
@@ -3763,21 +3763,21 @@ _08117890:
bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
- ldr r1, _081178AC @ =sub_805671C
+ ldr r1, _081178AC @ =CB2_LoadMap
bl sub_8147AA8
b _081178E0
.align 2, 0
-_081178AC: .4byte sub_805671C
+_081178AC: .4byte CB2_LoadMap
_081178B0:
movs r0, 0x7
movs r1, 0x9
movs r2, 0x1
bl sub_8117440
- ldr r0, _081178C4 @ =sub_805671C
+ ldr r0, _081178C4 @ =CB2_LoadMap
bl sub_814B754
b _081178E0
.align 2, 0
-_081178C4: .4byte sub_805671C
+_081178C4: .4byte CB2_LoadMap
_081178C8:
movs r0, 0x8
movs r1, 0x5
@@ -3786,7 +3786,7 @@ _081178C8:
bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
- ldr r1, _081178F8 @ =sub_805671C
+ ldr r1, _081178F8 @ =CB2_LoadMap
bl sub_81507FC
_081178E0:
adds r0, r4, 0
@@ -3800,7 +3800,7 @@ _081178E0:
pop {r0}
bx r0
.align 2, 0
-_081178F8: .4byte sub_805671C
+_081178F8: .4byte CB2_LoadMap
_081178FC: .4byte gSpecialVar_Result
thumb_func_end sub_81175BC
@@ -4151,7 +4151,7 @@ _08117BF4:
bl sub_81165E8
strb r0, [r5, 0x13]
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
_08117C02:
movs r0, 0x2
strb r0, [r5, 0xC]
@@ -4198,7 +4198,7 @@ _08117C42:
adds r1, r0
strb r4, [r1, 0x1B]
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
movs r0, 0x5
strb r0, [r5, 0x19]
ldrb r1, [r5, 0x13]
@@ -4268,7 +4268,7 @@ _08117CB2:
movs r0, 0
strb r0, [r1, 0x1B]
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
ldrb r0, [r5, 0x13]
adds r0, 0x1
strb r0, [r5, 0x13]
@@ -4327,7 +4327,7 @@ _08117D3C:
ldr r0, [r5]
bl sub_81165E8
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
movs r0, 0x2
strb r0, [r5, 0xC]
_08117D7C:
@@ -4398,7 +4398,7 @@ _08117DEE:
ldrb r0, [r5, 0x12]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
bl CopyBgTilemapBufferToVram
ldrb r0, [r5, 0xF]
@@ -4457,7 +4457,7 @@ _08117E80:
ldrb r0, [r5, 0x12]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
bl CopyBgTilemapBufferToVram
ldrb r0, [r5, 0xF]
@@ -4673,11 +4673,11 @@ _08118070:
bl PlaySE
_08118086:
ldrb r0, [r5, 0xE]
- bl sub_8107180
+ bl RedrawListMenu
b _08118288
_0811808E:
ldrb r0, [r5, 0xE]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r2, r0, 0
ldr r0, _08118128 @ =gMain
ldrh r1, [r0, 0x2E]
@@ -4707,7 +4707,7 @@ _0811808E:
movs r1, 0
bl sub_80FCD74
ldrb r0, [r5, 0xE]
- bl sub_8107180
+ bl RedrawListMenu
ldr r4, _0811812C @ =gStringVar1
ldrb r0, [r5, 0xF]
lsls r0, 5
@@ -4842,7 +4842,7 @@ _081181EC:
ldrb r0, [r5, 0xE]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
bl CopyBgTilemapBufferToVram
ldrb r0, [r5, 0xD]
@@ -5085,14 +5085,14 @@ _0811841E:
b _08118604
_08118426:
ldrb r0, [r5, 0xE]
- bl sub_8107180
+ bl RedrawListMenu
b _08118604
_0811842E:
ldrb r0, [r5, 0x13]
cmp r0, 0
beq _0811843A
ldrb r0, [r5, 0xE]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
_0811843A:
ldrb r0, [r5, 0x14]
cmp r0, 0x78
@@ -5242,7 +5242,7 @@ _08118564:
ldrb r0, [r5, 0xE]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
bl CopyBgTilemapBufferToVram
ldrb r0, [r5, 0xB]
@@ -5404,7 +5404,7 @@ _081186AC: .4byte gStringVar4
thumb_func_start sub_81186B0
sub_81186B0: @ 81186B0
push {lr}
- ldr r3, _081186C4 @ =gUnknown_201FF00
+ ldr r3, _081186C4 @ =gDecompressionBuffer + 0x3F00
ldr r1, [r0]
movs r2, 0x80
lsls r2, 1
@@ -5413,21 +5413,21 @@ sub_81186B0: @ 81186B0
pop {r0}
bx r0
.align 2, 0
-_081186C4: .4byte gUnknown_201FF00
+_081186C4: .4byte gDecompressionBuffer + 0x3F00
thumb_func_end sub_81186B0
thumb_func_start sub_81186C8
sub_81186C8: @ 81186C8
push {lr}
ldr r0, [r0]
- ldr r1, _081186DC @ =gUnknown_201FF00
+ ldr r1, _081186DC @ =gDecompressionBuffer + 0x3F00
movs r2, 0x80
lsls r2, 1
bl memcpy
pop {r0}
bx r0
.align 2, 0
-_081186DC: .4byte gUnknown_201FF00
+_081186DC: .4byte gDecompressionBuffer + 0x3F00
thumb_func_end sub_81186C8
thumb_func_start sub_81186E0
@@ -8491,7 +8491,7 @@ sub_811A0B4: @ 811A0B4
bl StringExpandPlaceholders
movs r0, 0
movs r1, 0x1
- bl sub_80F6E54
+ bl AddTextPrinterWithCustomSpeedForMessage
movs r0, 0
pop {r4}
pop {r1}
@@ -8503,7 +8503,7 @@ _0811A0DC: .4byte gStringVar4
thumb_func_start sub_811A0E0
sub_811A0E0: @ 811A0E0
push {lr}
- bl sub_80F6CBC
+ bl RunTextPrinters_CheckPrinter0Active
lsls r0, 16
cmp r0, 0
beq _0811A0F0
@@ -8536,7 +8536,7 @@ _0811A10A:
adds r1, r5, 0
bl StringExpandPlaceholders
movs r0, 0x1
- bl sub_80F6E08
+ bl AddTextPrinterForMessage
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
@@ -8544,7 +8544,7 @@ _0811A10A:
.align 2, 0
_0811A12C: .4byte gStringVar4
_0811A130:
- bl sub_80F6CBC
+ bl RunTextPrinters_CheckPrinter0Active
lsls r0, 16
lsrs r0, 16
cmp r0, 0
@@ -8578,7 +8578,7 @@ _0811A15E:
negs r0, r0
b _0811A1A4
_0811A168:
- bl sub_80F7858
+ bl DisplayYesNoMenuDefaultYes
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
@@ -8586,7 +8586,7 @@ _0811A168:
_0811A174:
cmp r5, 0
beq _0811A186
- bl sub_81100E8
+ bl DestroyYesNoMenu
movs r0, 0
strb r0, [r4]
movs r0, 0x3
@@ -8715,7 +8715,7 @@ _0811A270: .4byte gMultiuseListMenuTemplate
_0811A274:
mov r3, r9
ldrb r0, [r3]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
mov r8, r0
ldr r0, _0811A2AC @ =gMain
ldrh r1, [r0, 0x2E]
@@ -8726,7 +8726,7 @@ _0811A274:
ldrb r0, [r4]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r5]
movs r1, 0x1
bl ClearStdWindowAndFrame
@@ -8747,7 +8747,7 @@ _0811A2B0:
ldrb r0, [r6]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r5]
movs r1, 0x1
bl ClearStdWindowAndFrame
@@ -8821,7 +8821,7 @@ _0811A350: .4byte gUnknown_8456F1C
_0811A354: .4byte gMultiuseListMenuTemplate
_0811A358:
ldrb r0, [r5]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r1, r0, 0
ldr r0, _0811A3A8 @ =gMain
ldrh r2, [r0, 0x2E]
@@ -8842,7 +8842,7 @@ _0811A37E:
ldrb r0, [r5]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4]
movs r1, 0x1
bl ClearStdWindowAndFrame
@@ -8867,7 +8867,7 @@ _0811A3AC:
ldrb r0, [r5]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4]
movs r1, 0x1
bl ClearStdWindowAndFrame
@@ -9999,7 +9999,7 @@ _0811AC3C:
adds r0, r6, 0
movs r2, 0x44
adds r3, r5, 0
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
movs r0, 0xB
mov r2, r8
muls r2, r0
@@ -10537,14 +10537,14 @@ _0811B056:
lsls r0, r4, 24
lsrs r0, 24
adds r1, r5, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
adds r5, 0xB
adds r4, 0x1
cmp r4, 0x3
ble _0811B056
ldr r1, _0811B074 @ =gUnknown_8457D44
adds r0, r7, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
b _0811B080
.align 2, 0
_0811B074: .4byte gUnknown_8457D44
@@ -10949,10 +10949,10 @@ sub_811B31C: @ 811B31C
lsls r1, r0, 1
adds r1, r0
lsls r1, 5
- ldr r0, _0811B4B0 @ =gUnknown_2039624
+ ldr r0, _0811B4B0 @ =gTrainerCards
adds r1, r0
mov r8, r1
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
mov r6, r9
adds r6, 0xAC
bl sub_80447F0
@@ -10966,11 +10966,11 @@ sub_811B31C: @ 811B31C
bl StringCopy
movs r0, 0
adds r1, r6, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
mov r1, r8
adds r1, 0x30
movs r0, 0x1
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r4, 0xB0
lsls r4, 1
add r4, r9
@@ -10984,7 +10984,7 @@ sub_811B31C: @ 811B31C
bl StringCopy
movs r0, 0x2
adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
mov r5, r9
adds r5, 0xCA
mov r0, r8
@@ -10995,7 +10995,7 @@ sub_811B31C: @ 811B31C
bl ConvertIntToDecimalStringN
movs r0, 0x3
adds r1, r5, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r2, 0xD9
add r2, r9
mov r10, r2
@@ -11015,16 +11015,16 @@ sub_811B31C: @ 811B31C
bl ConvertIntToDecimalStringN
movs r0, 0x4
mov r1, r10
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r0, 0x5
adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r4, 0xC8
lsls r4, 1
add r4, r9
ldr r1, _0811B4BC @ =gUnknown_84594C4
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
ldr r0, _0811B4C0 @ =gStringVar4
adds r1, r4, 0
bl StringCopy
@@ -11041,7 +11041,7 @@ _0811B40A:
bl ConvertIntToDecimalStringN
movs r0, 0
adds r1, r6, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
mov r2, r8
ldrh r1, [r2, 0x16]
cmp r1, r4
@@ -11056,7 +11056,7 @@ _0811B426:
bl ConvertIntToDecimalStringN
movs r0, 0x2
adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
mov r0, r8
ldrh r1, [r0, 0x20]
adds r0, r5, 0
@@ -11065,7 +11065,7 @@ _0811B426:
bl ConvertIntToDecimalStringN
movs r0, 0x3
adds r1, r5, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r7, 0
movs r6, 0x80
lsls r6, 19
@@ -11078,7 +11078,7 @@ _0811B45E:
bl CopyEasyChatWord
lsrs r0, r6, 24
adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r2, 0x80
lsls r2, 17
adds r6, r2
@@ -11092,7 +11092,7 @@ _0811B45E:
add r4, r9
ldr r1, _0811B4C8 @ =gUnknown_8459504
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
ldr r5, _0811B4C0 @ =gStringVar4
adds r0, r5, 0
adds r1, r4, 0
@@ -11102,13 +11102,13 @@ _0811B45E:
bne _0811B4D0
ldr r1, _0811B4CC @ =gUnknown_8459588
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
adds r0, r5, 0
adds r1, r4, 0
bl StringAppend
b _0811B4F0
.align 2, 0
-_0811B4B0: .4byte gUnknown_2039624
+_0811B4B0: .4byte gTrainerCards
_0811B4B4: .4byte gTrainerClassNames
_0811B4B8: .4byte gUnknown_84594B0
_0811B4BC: .4byte gUnknown_84594C4
@@ -11127,7 +11127,7 @@ _0811B4D0:
adds r1, r0
ldr r1, [r1]
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
adds r0, r5, 0
adds r1, r4, 0
bl StringAppend
@@ -11381,13 +11381,13 @@ sub_811B66C: @ 811B66C
ldr r1, _0811B6C0 @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
bne _0811B6D0
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
lsls r0, 24
cmp r0, 0
bne _0811B6C4
@@ -11440,7 +11440,7 @@ sub_811B6E8: @ 811B6E8
ldr r1, _0811B72C @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
bne _0811B730
@@ -12496,7 +12496,7 @@ sub_811BF00: @ 811BF00
b _0811BFEE
_0811BF1C:
ldr r4, _0811BF44 @ =gUnknown_8457116
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
adds r0, r4
@@ -12766,7 +12766,7 @@ sub_811C0E0: @ 811C0E0
movs r1, 0x3
adds r2, r6, 0
ldr r3, [sp, 0x14]
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
add sp, 0x18
pop {r3-r5}
mov r8, r3
@@ -12935,7 +12935,7 @@ _0811C2C0:
movs r0, 0
movs r2, 0x1
bl InitBgsFromTemplates
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
ldr r0, _0811C358 @ =gUnknown_8457198
bl InitWindows
lsls r0, 16
@@ -12966,8 +12966,8 @@ _0811C300:
movs r0, 0
movs r1, 0x1
movs r2, 0xD0
- bl sub_814FF2C
- bl sub_80F77B8
+ bl TextWindow_SetStdFrame0_WithPal
+ bl Menu_LoadStdPal
ldr r0, _0811C35C @ =sub_811C1B4
bl SetVBlankCallback
ldr r1, _0811C360 @ =gMain
diff --git a/asm/list_menu.s b/asm/list_menu.s
deleted file mode 100644
index 4615e249b..000000000
--- a/asm/list_menu.s
+++ /dev/null
@@ -1,2019 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_90
-nullsub_90: @ 8106ECC
- bx lr
- thumb_func_end nullsub_90
-
- thumb_func_start DoMysteryGiftListMenu
-DoMysteryGiftListMenu: @ 8106ED0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- mov r12, r0
- str r1, [sp]
- ldr r0, [sp, 0x28]
- lsls r2, 24
- lsrs r6, r2, 24
- mov r10, r6
- lsls r3, 16
- lsrs r7, r3, 16
- str r7, [sp, 0x4]
- lsls r0, 16
- mov r8, r0
- lsrs r0, 16
- mov r9, r0
- ldr r5, _08106F60 @ =gUnknown_203ACF4
- ldrb r4, [r5, 0x4]
- cmp r4, 0x1
- beq _08106F68
- cmp r4, 0x1
- ble _08106F06
- cmp r4, 0x2
- beq _08106FCC
-_08106F06:
- mov r0, r12
- bl AddWindow
- strb r0, [r5, 0x5]
- cmp r6, 0x1
- beq _08106F24
- cmp r6, 0x2
- bne _08106F34
- ldrb r0, [r5, 0x5]
- mov r1, r9
- lsls r2, r1, 24
- lsrs r2, 24
- adds r1, r7, 0
- bl sub_815001C
-_08106F24:
- ldrb r0, [r5, 0x5]
- mov r3, r8
- lsrs r2, r3, 20
- lsls r2, 24
- lsrs r2, 24
- ldr r1, [sp, 0x4]
- bl DrawTextBorderOuter
-_08106F34:
- ldr r0, _08106F64 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, [sp]
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldr r4, _08106F60 @ =gUnknown_203ACF4
- ldrb r1, [r4, 0x5]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- strb r0, [r4, 0x6]
- ldrb r0, [r4, 0x5]
- movs r1, 0x1
- bl CopyWindowToVram
- movs r0, 0x1
- strb r0, [r4, 0x4]
- b _08106FE4
- .align 2, 0
-_08106F60: .4byte gUnknown_203ACF4
-_08106F64: .4byte gMultiuseListMenuTemplate
-_08106F68:
- ldrb r0, [r5, 0x6]
- bl ListMenuHandleInput
- str r0, [r5]
- ldr r1, _08106FA4 @ =gMain
- ldrh r0, [r1, 0x2E]
- ands r4, r0
- cmp r4, 0
- beq _08106F7E
- movs r0, 0x2
- strb r0, [r5, 0x4]
-_08106F7E:
- ldrh r1, [r1, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08106F92
- movs r0, 0x2
- negs r0, r0
- str r0, [r5]
- movs r0, 0x2
- strb r0, [r5, 0x4]
-_08106F92:
- ldrb r0, [r5, 0x4]
- cmp r0, 0x2
- bne _08106FE4
- cmp r6, 0
- bne _08106FA8
- ldrb r0, [r5, 0x5]
- bl ClearWindowTilemap
- b _08106FBA
- .align 2, 0
-_08106FA4: .4byte gMain
-_08106FA8:
- mov r4, r10
- cmp r4, 0
- blt _08106FBA
- cmp r4, 0x2
- bgt _08106FBA
- ldrb r0, [r5, 0x5]
- movs r1, 0
- bl ClearStdWindowAndFrame
-_08106FBA:
- ldr r0, _08106FC8 @ =gUnknown_203ACF4
- ldrb r0, [r0, 0x5]
- movs r1, 0x1
- bl CopyWindowToVram
- b _08106FE4
- .align 2, 0
-_08106FC8: .4byte gUnknown_203ACF4
-_08106FCC:
- ldrb r0, [r5, 0x6]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenu
- ldrb r0, [r5, 0x5]
- bl RemoveWindow
- movs r0, 0
- strb r0, [r5, 0x4]
- ldr r0, [r5]
- b _08106FE8
-_08106FE4:
- movs r0, 0x1
- negs r0, r0
-_08106FE8:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end DoMysteryGiftListMenu
-
- thumb_func_start ListMenuInit
-ListMenuInit: @ 8106FF8
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- bl ListMenuInitInternal
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5, 0x10]
- bl PutWindowTilemap
- ldrb r0, [r5, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end ListMenuInit
-
- thumb_func_start Unused_ListMenuInit2
-Unused_ListMenuInit2: @ 8107024
- push {r4-r7,lr}
- sub sp, 0x8
- adds r6, r0, 0
- adds r4, r1, 0
- adds r1, r2, 0
- adds r2, r3, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- bl ListMenuInitInternal
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r4, 0x4]
- cmp r0, 0xFF
- beq _08107064
- adds r5, r4, 0
-_08107048:
- ldrb r0, [r6, 0x10]
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- ldrb r3, [r5, 0x2]
- ldrb r4, [r5, 0x3]
- str r4, [sp]
- ldrb r4, [r5, 0x4]
- str r4, [sp, 0x4]
- bl PutWindowRectTilemapOverridePalette
- adds r5, 0x8
- ldrb r0, [r5, 0x4]
- cmp r0, 0xFF
- bne _08107048
-_08107064:
- ldrb r0, [r6, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- adds r0, r7, 0
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end Unused_ListMenuInit2
-
- thumb_func_start ListMenuHandleInput
-ListMenuHandleInput: @ 8107078
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _081070A4 @ =gTasks+0x8
- adds r3, r1, r0
- ldr r2, _081070A8 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081070AC
- ldrh r0, [r3, 0x18]
- ldrh r1, [r3, 0x1A]
- adds r0, r1
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0, 0x4]
- b _08107136
- .align 2, 0
-_081070A4: .4byte gTasks+0x8
-_081070A8: .4byte gMain
-_081070AC:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081070BA
- movs r0, 0x2
- negs r0, r0
- b _08107136
-_081070BA:
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081070CE
- adds r0, r3, 0
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0
- b _0810712E
-_081070CE:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081070DE
- adds r0, r3, 0
- movs r1, 0x1
- movs r2, 0x1
- b _0810712C
-_081070DE:
- ldrb r0, [r3, 0x16]
- lsrs r0, 6
- cmp r0, 0x1
- beq _081070F4
- cmp r0, 0x1
- ble _081070EE
- cmp r0, 0x2
- beq _08107100
-_081070EE:
- movs r2, 0
- movs r0, 0
- b _08107114
-_081070F4:
- movs r0, 0x20
- ands r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0x10
- b _0810710E
-_08107100:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0x80
- lsls r0, 1
-_0810710E:
- ands r0, r1
- lsls r0, 16
- lsrs r0, 16
-_08107114:
- cmp r2, 0
- beq _08107122
- ldrb r2, [r3, 0xE]
- adds r0, r3, 0
- movs r1, 0x1
- movs r3, 0
- b _0810712E
-_08107122:
- cmp r0, 0
- beq _08107132
- ldrb r2, [r3, 0xE]
- adds r0, r3, 0
- movs r1, 0x1
-_0810712C:
- movs r3, 0x1
-_0810712E:
- bl ListMenuChangeSelection
-_08107132:
- movs r0, 0x1
- negs r0, r0
-_08107136:
- pop {r1}
- bx r1
- thumb_func_end ListMenuHandleInput
-
- thumb_func_start DestroyListMenu
-DestroyListMenu: @ 810713C
- push {r4,lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0810717C @ =gTasks+0x8
- adds r1, r0, r1
- cmp r3, 0
- beq _08107158
- ldrh r0, [r1, 0x18]
- strh r0, [r3]
-_08107158:
- cmp r2, 0
- beq _08107160
- ldrh r0, [r1, 0x1A]
- strh r0, [r2]
-_08107160:
- ldrb r0, [r1, 0x1E]
- cmp r0, 0xFF
- beq _08107170
- ldrb r1, [r1, 0x17]
- lsrs r1, 6
- subs r1, 0x2
- bl ListMenuRemoveCursorObject
-_08107170:
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810717C: .4byte gTasks+0x8
- thumb_func_end DestroyListMenu
-
- thumb_func_start sub_8107180
-sub_8107180: @ 8107180
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _081071C0 @ =gTasks+0x8
- adds r4, r0
- ldrb r0, [r4, 0x10]
- ldrb r2, [r4, 0x15]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- bl FillWindowPixelBuffer
- ldrh r1, [r4, 0x18]
- ldrh r3, [r4, 0xE]
- adds r0, r4, 0
- movs r2, 0
- bl ListMenuPrintEntries
- adds r0, r4, 0
- bl ListMenuDrawCursor
- ldrb r0, [r4, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081071C0: .4byte gTasks+0x8
- thumb_func_end sub_8107180
-
- thumb_func_start sub_81071C4
-sub_81071C4: @ 81071C4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _08107204 @ =gTasks+0x8
- adds r4, r0
- lsrs r1, 20
- ldrb r6, [r4, 0x14]
- movs r5, 0xF
- adds r0, r5, 0
- ands r0, r6
- orrs r0, r1
- strb r0, [r4, 0x14]
- ands r2, r5
- ldrb r1, [r4, 0x15]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- lsrs r3, 20
- ands r0, r5
- orrs r0, r3
- strb r0, [r4, 0x15]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08107204: .4byte gTasks+0x8
- thumb_func_end sub_81071C4
-
- thumb_func_start sub_8107208
-sub_8107208: @ 8107208
- push {r4,r5,lr}
- adds r3, r1, 0
- adds r5, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _08107240 @ =gTasks+0x8
- adds r4, r0
- ldrb r0, [r4, 0x10]
- movs r1, 0x1
- adds r2, r3, 0
- bl SetWindowAttribute
- ldrb r0, [r4, 0x10]
- movs r1, 0x2
- adds r2, r5, 0
- bl SetWindowAttribute
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08107240: .4byte gTasks+0x8
- thumb_func_end sub_8107208
-
- thumb_func_start sub_8107244
-sub_8107244: @ 8107244
- push {r4-r7,lr}
- sub sp, 0x20
- mov r12, r2
- ldr r5, [sp, 0x34]
- lsls r3, 16
- lsrs r3, 16
- adds r4, r3, 0
- mov r3, sp
- ldm r0!, {r2,r6,r7}
- stm r3!, {r2,r6,r7}
- ldm r0!, {r2,r6,r7}
- stm r3!, {r2,r6,r7}
- mov r0, sp
- movs r3, 0
- strh r1, [r0, 0x18]
- mov r1, r12
- strh r1, [r0, 0x1A]
- strb r3, [r0, 0x1C]
- strb r3, [r0, 0x1D]
- cmp r4, 0x40
- bne _08107278
- movs r1, 0
- movs r2, 0x1
- movs r3, 0
- bl ListMenuChangeSelection
-_08107278:
- cmp r4, 0x80
- bne _08107288
- mov r0, sp
- movs r1, 0
- movs r2, 0x1
- movs r3, 0x1
- bl ListMenuChangeSelection
-_08107288:
- cmp r5, 0
- beq _08107292
- mov r0, sp
- ldrh r0, [r0, 0x18]
- strh r0, [r5]
-_08107292:
- ldr r2, [sp, 0x38]
- cmp r2, 0
- beq _0810729E
- mov r0, sp
- ldrh r0, [r0, 0x1A]
- strh r0, [r2]
-_0810729E:
- movs r0, 0x1
- negs r0, r0
- add sp, 0x20
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8107244
-
- thumb_func_start sub_81072AC
-sub_81072AC: @ 81072AC
- push {lr}
- adds r2, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _081072D0 @ =gTasks+0x8
- adds r1, r0
- cmp r2, 0
- beq _081072CA
- ldrh r0, [r1, 0x1A]
- ldrh r1, [r1, 0x18]
- adds r0, r1
- strh r0, [r2]
-_081072CA:
- pop {r0}
- bx r0
- .align 2, 0
-_081072D0: .4byte gTasks+0x8
- thumb_func_end sub_81072AC
-
- thumb_func_start get_coro_args_x18_x1A
-get_coro_args_x18_x1A: @ 81072D4
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _081072FC @ =gTasks+0x8
- adds r1, r0
- cmp r3, 0
- beq _081072EE
- ldrh r0, [r1, 0x18]
- strh r0, [r3]
-_081072EE:
- cmp r2, 0
- beq _081072F6
- ldrh r0, [r1, 0x1A]
- strh r0, [r2]
-_081072F6:
- pop {r0}
- bx r0
- .align 2, 0
-_081072FC: .4byte gTasks+0x8
- thumb_func_end get_coro_args_x18_x1A
-
- thumb_func_start ListMenuGetYCoordForPrintingArrowCursor
-ListMenuGetYCoordForPrintingArrowCursor: @ 8107300
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _08107344 @ =gTasks+0x8
- adds r4, r0
- ldrb r0, [r4, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetFontAttribute
- ldrb r1, [r4, 0x16]
- lsls r1, 26
- lsrs r1, 29
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x1A]
- adds r2, r1, 0
- muls r2, r0
- adds r1, r2, 0
- ldrb r0, [r4, 0x14]
- lsls r0, 28
- lsrs r0, 28
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08107344: .4byte gTasks+0x8
- thumb_func_end ListMenuGetYCoordForPrintingArrowCursor
-
- thumb_func_start ListMenuInitInternal
-ListMenuInitInternal: @ 8107348
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 16
- lsrs r6, 16
- ldr r0, _08107418 @ =nullsub_90
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, _0810741C @ =gTasks+0x8
- adds r7, r0, r1
- adds r0, r7, 0
- ldm r4!, {r1-r3}
- stm r0!, {r1-r3}
- ldm r4!, {r1-r3}
- stm r0!, {r1-r3}
- movs r1, 0
- strh r5, [r7, 0x18]
- strh r6, [r7, 0x1A]
- strb r1, [r7, 0x1C]
- strb r1, [r7, 0x1D]
- movs r0, 0xFF
- strb r0, [r7, 0x1E]
- strb r1, [r7, 0x1F]
- ldr r3, _08107420 @ =gUnknown_3005E60
- ldrb r1, [r7, 0x14]
- movs r5, 0xF
- lsrs r1, 4
- ldrb r4, [r3]
- movs r2, 0x10
- negs r2, r2
- adds r0, r2, 0
- ands r0, r4
- orrs r0, r1
- strb r0, [r3]
- ldrb r1, [r7, 0x15]
- lsls r1, 28
- lsrs r1, 24
- ands r0, r5
- orrs r0, r1
- strb r0, [r3]
- ldrb r0, [r7, 0x15]
- lsrs r0, 4
- ands r5, r0
- ldrb r0, [r3, 0x1]
- ands r2, r0
- orrs r2, r5
- strb r2, [r3, 0x1]
- ldrb r1, [r7, 0x16]
- lsls r1, 29
- lsrs r1, 17
- ldr r0, [r3]
- ldr r2, _08107424 @ =0xfffc0fff
- ands r0, r2
- orrs r0, r1
- str r0, [r3]
- ldrb r0, [r7, 0x17]
- lsls r0, 26
- lsrs r0, 26
- strb r0, [r3, 0x3]
- ldrh r0, [r7, 0xC]
- ldrh r1, [r7, 0xE]
- cmp r0, r1
- bcs _081073E0
- strh r0, [r7, 0xE]
-_081073E0:
- ldrb r0, [r7, 0x10]
- ldrb r2, [r7, 0x15]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- bl FillWindowPixelBuffer
- ldrh r1, [r7, 0x18]
- ldrh r3, [r7, 0xE]
- adds r0, r7, 0
- movs r2, 0
- bl ListMenuPrintEntries
- adds r0, r7, 0
- bl ListMenuDrawCursor
- adds r0, r7, 0
- movs r1, 0x1
- bl ListMenuCallSelectionChangedCallback
- mov r0, r8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08107418: .4byte nullsub_90
-_0810741C: .4byte gTasks+0x8
-_08107420: .4byte gUnknown_3005E60
-_08107424: .4byte 0xfffc0fff
- thumb_func_end ListMenuInitInternal
-
- thumb_func_start ListMenuPrint
-ListMenuPrint: @ 8107428
- push {r4-r7,lr}
- sub sp, 0x18
- adds r4, r0, 0
- adds r6, r1, 0
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r12, r3
- ldr r5, _08107490 @ =gUnknown_3005E60
- ldrb r1, [r5, 0x3]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _08107494
- add r1, sp, 0x14
- ldr r2, [r5]
- lsls r0, r2, 24
- lsrs r0, 28
- movs r3, 0
- strb r0, [r1]
- lsls r0, r2, 28
- lsrs r0, 28
- strb r0, [r1, 0x1]
- lsls r0, r2, 20
- lsrs r0, 28
- strb r0, [r1, 0x2]
- ldrb r0, [r4, 0x10]
- lsls r1, r2, 1
- lsrs r1, 25
- lsls r2, 14
- lsrs r2, 26
- str r2, [sp]
- str r3, [sp, 0x4]
- add r2, sp, 0x14
- str r2, [sp, 0x8]
- movs r2, 0x1
- negs r2, r2
- str r2, [sp, 0xC]
- str r6, [sp, 0x10]
- adds r2, r7, 0
- mov r3, r12
- bl AddTextPrinterParametrized2
- ldrb r1, [r5, 0x3]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r5, 0x3]
- b _081074D2
- .align 2, 0
-_08107490: .4byte gUnknown_3005E60
-_08107494:
- add r2, sp, 0x14
- ldrb r1, [r4, 0x15]
- lsls r0, r1, 28
- lsrs r0, 28
- strb r0, [r2]
- ldrb r0, [r4, 0x14]
- lsrs r0, 4
- strb r0, [r2, 0x1]
- adds r0, r2, 0
- lsls r1, 24
- lsrs r1, 28
- strb r1, [r0, 0x2]
- ldrb r0, [r4, 0x10]
- ldrb r1, [r4, 0x17]
- lsls r1, 26
- lsrs r1, 26
- ldrb r2, [r4, 0x16]
- lsls r2, 29
- lsrs r2, 29
- str r2, [sp]
- str r3, [sp, 0x4]
- add r2, sp, 0x14
- str r2, [sp, 0x8]
- movs r2, 0x1
- negs r2, r2
- str r2, [sp, 0xC]
- str r6, [sp, 0x10]
- adds r2, r7, 0
- mov r3, r12
- bl AddTextPrinterParametrized2
-_081074D2:
- add sp, 0x18
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ListMenuPrint
-
- thumb_func_start ListMenuPrintEntries
-ListMenuPrintEntries: @ 81074DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp]
- lsls r3, 16
- lsrs r3, 16
- mov r10, r3
- ldrb r0, [r4, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetFontAttribute
- ldrb r1, [r4, 0x16]
- lsls r1, 26
- lsrs r1, 29
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0
- mov r8, r0
- cmp r8, r10
- bge _08107584
-_0810751E:
- ldr r0, [r4]
- mov r2, r9
- lsls r1, r2, 3
- adds r0, r1, r0
- ldr r2, [r0, 0x4]
- movs r0, 0x3
- negs r0, r0
- adds r5, r1, 0
- cmp r2, r0
- beq _08107536
- ldrb r6, [r4, 0x12]
- b _08107538
-_08107536:
- ldrb r6, [r4, 0x11]
-_08107538:
- ldr r0, [sp]
- add r0, r8
- ldr r2, [sp, 0x4]
- adds r1, r0, 0
- muls r1, r2
- ldrb r0, [r4, 0x14]
- lsls r0, 28
- lsrs r0, 28
- adds r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- adds r7, r2, 0
- ldr r3, [r4, 0x8]
- cmp r3, 0
- beq _08107562
- ldrb r0, [r4, 0x10]
- ldr r1, [r4]
- adds r1, r5, r1
- ldr r1, [r1, 0x4]
- bl _call_via_r3
-_08107562:
- ldr r0, [r4]
- adds r0, r5, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl ListMenuPrint
- mov r0, r9
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- movs r0, 0x1
- add r8, r0
- cmp r8, r10
- blt _0810751E
-_08107584:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ListMenuPrintEntries
-
- thumb_func_start ListMenuDrawCursor
-ListMenuDrawCursor: @ 8107594
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- ldrb r0, [r6, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetFontAttribute
- ldrb r1, [r6, 0x16]
- lsls r1, 26
- lsrs r1, 29
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r6, 0x13]
- mov r8, r1
- ldrh r1, [r6, 0x1A]
- muls r1, r0
- ldrb r0, [r6, 0x14]
- lsls r0, 28
- lsrs r0, 28
- adds r0, r1
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r6, 0x17]
- lsrs r0, 6
- cmp r0, 0x1
- beq _08107680
- cmp r0, 0x1
- bgt _081075DA
- cmp r0, 0
- beq _081075E4
- b _08107680
-_081075DA:
- cmp r0, 0x2
- beq _081075F8
- cmp r0, 0x3
- beq _08107640
- b _08107680
-_081075E4:
- ldr r1, _081075F4 @ =gFameCheckerText_ListMenuCursor
- adds r0, r6, 0
- mov r2, r8
- adds r3, r7, 0
- bl ListMenuPrint
- b _08107680
- .align 2, 0
-_081075F4: .4byte gFameCheckerText_ListMenuCursor
-_081075F8:
- ldrb r0, [r6, 0x1E]
- cmp r0, 0xFF
- bne _08107608
- adds r0, r6, 0
- movs r1, 0
- bl ListMenuAddCursorObject
- strb r0, [r6, 0x1E]
-_08107608:
- ldrb r5, [r6, 0x1E]
- ldrb r0, [r6, 0x10]
- movs r1, 0x1
- bl GetWindowAttribute
- adds r4, r0, 0
- lsls r4, 19
- ldr r0, _0810763C @ =0xffff0000
- adds r4, r0
- lsrs r4, 16
- ldrb r0, [r6, 0x10]
- movs r1, 0x2
- bl GetWindowAttribute
- adds r2, r0, 0
- lsls r2, 3
- adds r2, r7
- subs r2, 0x1
- lsls r2, 16
- lsrs r2, 16
- adds r0, r5, 0
- adds r1, r4, 0
- movs r3, 0
- bl ListMenuUpdateCursorObject
- b _08107680
- .align 2, 0
-_0810763C: .4byte 0xffff0000
-_08107640:
- ldrb r0, [r6, 0x1E]
- cmp r0, 0xFF
- bne _08107650
- adds r0, r6, 0
- movs r1, 0x1
- bl ListMenuAddCursorObject
- strb r0, [r6, 0x1E]
-_08107650:
- ldrb r5, [r6, 0x1E]
- ldrb r0, [r6, 0x10]
- movs r1, 0x1
- bl GetWindowAttribute
- adds r4, r0, 0
- lsls r4, 3
- add r4, r8
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r6, 0x10]
- movs r1, 0x2
- bl GetWindowAttribute
- adds r2, r0, 0
- lsls r2, 3
- adds r2, r7
- lsls r2, 16
- lsrs r2, 16
- adds r0, r5, 0
- adds r1, r4, 0
- movs r3, 0x1
- bl ListMenuUpdateCursorObject
-_08107680:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ListMenuDrawCursor
-
- thumb_func_start ListMenuAddCursorObject
-ListMenuAddCursorObject: @ 810768C
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- adds r5, r1, 0
- mov r1, sp
- movs r0, 0
- strb r0, [r1]
- movs r0, 0xA0
- strb r0, [r1, 0x1]
- ldrb r0, [r4, 0x10]
- movs r1, 0x3
- bl GetWindowAttribute
- mov r1, sp
- lsls r0, 3
- adds r0, 0x2
- strh r0, [r1, 0x2]
- ldrb r0, [r4, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetFontAttribute
- mov r1, sp
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x2
- strh r0, [r1, 0x4]
- movs r0, 0x80
- lsls r0, 7
- strh r0, [r1, 0x6]
- ldr r0, _081076E8 @ =0x0000ffff
- strh r0, [r1, 0x8]
- movs r0, 0xF
- strb r0, [r1, 0xA]
- mov r0, sp
- adds r1, r5, 0
- bl ListMenuAddCursorObjectInternal
- lsls r0, 24
- lsrs r0, 24
- add sp, 0xC
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_081076E8: .4byte 0x0000ffff
- thumb_func_end ListMenuAddCursorObject
-
- thumb_func_start ListMenuErasePrintedCursor
-ListMenuErasePrintedCursor: @ 81076EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r7, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- ldrb r1, [r7, 0x17]
- lsrs r0, r1, 6
- cmp r0, 0
- bne _08107768
- lsls r0, r1, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetFontAttribute
- adds r4, r0, 0
- ldrb r0, [r7, 0x16]
- lsls r0, 26
- lsrs r0, 29
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r7, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldrb r0, [r7, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- ldrb r6, [r7, 0x10]
- ldrb r2, [r7, 0x15]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- ldrb r2, [r7, 0x13]
- mov r3, r8
- muls r3, r4
- adds r4, r3, 0
- ldrb r3, [r7, 0x14]
- lsls r3, 28
- lsrs r3, 28
- adds r3, r4
- lsls r3, 16
- lsrs r3, 16
- str r5, [sp]
- str r0, [sp, 0x4]
- adds r0, r6, 0
- bl FillWindowPixelRect
-_08107768:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ListMenuErasePrintedCursor
-
- thumb_func_start ListMenuUpdateSelectedRowIndexAndScrollOffset
-ListMenuUpdateSelectedRowIndexAndScrollOffset: @ 8107774
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- ldrh r3, [r4, 0x1A]
- ldrh r5, [r4, 0x18]
- cmp r1, 0
- bne _081077E8
- ldrh r0, [r4, 0xE]
- cmp r0, 0x1
- bne _0810778C
- movs r2, 0
- b _0810779E
-_0810778C:
- ldrh r0, [r4, 0xE]
- lsrs r2, r0, 1
- movs r1, 0x1
- ands r1, r0
- adds r2, r1
- subs r0, r2
- subs r0, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
-_0810779E:
- cmp r5, 0
- bne _081077C4
- cmp r3, 0
- beq _0810782A
- ldr r1, [r4]
- movs r2, 0x3
- negs r2, r2
-_081077AC:
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r5, r3
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0, 0x4]
- cmp r0, r2
- bne _0810782E
- cmp r3, 0
- bne _081077AC
- b _0810782A
-_081077C4:
- cmp r3, r2
- bls _081077E4
- ldr r1, [r4]
- movs r6, 0x3
- negs r6, r6
-_081077CE:
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r5, r3
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0, 0x4]
- cmp r0, r6
- bne _0810782E
- cmp r3, r2
- bhi _081077CE
-_081077E4:
- subs r0, r5, 0x1
- b _08107856
-_081077E8:
- ldrh r0, [r4, 0xE]
- cmp r0, 0x1
- bne _081077F2
- movs r2, 0
- b _081077FC
-_081077F2:
- ldrh r0, [r4, 0xE]
- lsrs r2, r0, 1
- movs r1, 0x1
- ands r1, r0
- adds r2, r1
-_081077FC:
- adds r1, r0, 0
- ldrh r0, [r4, 0xC]
- subs r0, r1
- cmp r5, r0
- bne _08107834
- subs r0, r1, 0x1
- cmp r3, r0
- bge _0810782A
- ldr r2, [r4]
- movs r6, 0x3
- negs r6, r6
- adds r1, r0, 0
-_08107814:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r5, r3
- lsls r0, 3
- adds r0, r2
- ldr r0, [r0, 0x4]
- cmp r0, r6
- bne _0810782E
- cmp r3, r1
- blt _08107814
-_0810782A:
- movs r0, 0
- b _0810785C
-_0810782E:
- strh r3, [r4, 0x1A]
- movs r0, 0x1
- b _0810785C
-_08107834:
- cmp r3, r2
- bcs _08107854
- ldr r1, [r4]
- movs r6, 0x3
- negs r6, r6
-_0810783E:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r5, r3
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0, 0x4]
- cmp r0, r6
- bne _0810782E
- cmp r3, r2
- bcc _0810783E
-_08107854:
- adds r0, r5, 0x1
-_08107856:
- strh r2, [r4, 0x1A]
- strh r0, [r4, 0x18]
- movs r0, 0x2
-_0810785C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ListMenuUpdateSelectedRowIndexAndScrollOffset
-
- thumb_func_start ListMenuScroll
-ListMenuScroll: @ 8107864
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- adds r7, r5, 0
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldrh r0, [r6, 0xE]
- cmp r5, r0
- bcc _0810789E
- ldrb r0, [r6, 0x10]
- ldrb r2, [r6, 0x15]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- bl FillWindowPixelBuffer
- ldrh r1, [r6, 0x18]
- ldrh r3, [r6, 0xE]
- adds r0, r6, 0
- movs r2, 0
- bl ListMenuPrintEntries
- b _0810798E
-_0810789E:
- ldrb r0, [r6, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetFontAttribute
- ldrb r1, [r6, 0x16]
- lsls r1, 26
- lsrs r1, 29
- adds r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- mov r1, r8
- cmp r1, 0
- bne _08107930
- ldrb r0, [r6, 0x10]
- adds r2, r5, 0
- muls r2, r4
- lsls r2, 24
- lsrs r2, 24
- ldrb r1, [r6, 0x15]
- lsls r1, 28
- lsrs r3, r1, 4
- orrs r3, r1
- lsrs r3, 24
- movs r1, 0x1
- bl ScrollWindow
- ldrh r1, [r6, 0x18]
- adds r0, r6, 0
- movs r2, 0
- adds r3, r5, 0
- bl ListMenuPrintEntries
- ldrh r0, [r6, 0xE]
- adds r1, r0, 0
- muls r1, r4
- adds r0, r1, 0
- ldrb r4, [r6, 0x14]
- lsls r4, 28
- lsrs r4, 28
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r6, 0x10]
- movs r1, 0x3
- bl GetWindowAttribute
- adds r5, r0, 0
- lsls r5, 19
- lsrs r5, 16
- ldrb r0, [r6, 0x10]
- movs r1, 0x4
- bl GetWindowAttribute
- lsls r0, 3
- subs r0, r4
- lsls r0, 16
- lsrs r0, 16
- ldrb r3, [r6, 0x10]
- ldrb r2, [r6, 0x15]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- str r5, [sp]
- str r0, [sp, 0x4]
- adds r0, r3, 0
- movs r2, 0
- adds r3, r4, 0
- bl FillWindowPixelRect
- b _0810798E
-_08107930:
- ldrb r0, [r6, 0x10]
- adds r2, r7, 0
- muls r2, r4
- lsls r2, 24
- lsrs r2, 24
- ldrb r1, [r6, 0x15]
- lsls r1, 28
- lsrs r3, r1, 4
- orrs r3, r1
- lsrs r3, 24
- movs r1, 0
- bl ScrollWindow
- ldrh r2, [r6, 0xE]
- subs r2, r7
- ldrh r1, [r6, 0x18]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- adds r0, r6, 0
- adds r3, r7, 0
- bl ListMenuPrintEntries
- ldrb r0, [r6, 0x10]
- movs r1, 0x3
- bl GetWindowAttribute
- lsls r0, 19
- lsrs r0, 16
- ldrb r3, [r6, 0x10]
- ldrb r2, [r6, 0x15]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- str r0, [sp]
- ldrb r0, [r6, 0x14]
- lsls r0, 28
- lsrs r0, 28
- str r0, [sp, 0x4]
- adds r0, r3, 0
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
-_0810798E:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ListMenuScroll
-
- thumb_func_start ListMenuChangeSelection
-ListMenuChangeSelection: @ 810799C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- ldrh r0, [r4, 0x1A]
- mov r10, r0
- movs r7, 0
- movs r5, 0
- movs r0, 0
- cmp r7, r8
- bcs _08107A04
-_081079CA:
- adds r6, r0, 0x1
- b _081079EA
-_081079CE:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r0, [r4, 0x18]
- ldrh r1, [r4, 0x1A]
- adds r0, r1
- ldr r1, [r4]
- lsls r0, 3
- adds r0, r1
- ldr r1, [r0, 0x4]
- movs r0, 0x3
- negs r0, r0
- cmp r1, r0
- bne _081079FC
-_081079EA:
- adds r0, r4, 0
- mov r1, r9
- bl ListMenuUpdateSelectedRowIndexAndScrollOffset
- lsls r0, 24
- lsrs r0, 24
- orrs r5, r0
- cmp r0, 0x2
- beq _081079CE
-_081079FC:
- lsls r0, r6, 24
- lsrs r0, 24
- cmp r0, r8
- bcc _081079CA
-_08107A04:
- ldr r0, [sp]
- cmp r0, 0
- beq _08107A62
- cmp r5, 0x1
- beq _08107A1A
- cmp r5, 0x1
- ble _08107A16
- cmp r5, 0x3
- ble _08107A3A
-_08107A16:
- movs r0, 0x1
- b _08107A64
-_08107A1A:
- adds r0, r4, 0
- mov r1, r10
- bl ListMenuErasePrintedCursor
- adds r0, r4, 0
- bl ListMenuDrawCursor
- adds r0, r4, 0
- movs r1, 0
- bl ListMenuCallSelectionChangedCallback
- ldrb r0, [r4, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- b _08107A62
-_08107A3A:
- adds r0, r4, 0
- mov r1, r10
- bl ListMenuErasePrintedCursor
- adds r0, r4, 0
- adds r1, r7, 0
- mov r2, r9
- bl ListMenuScroll
- adds r0, r4, 0
- bl ListMenuDrawCursor
- adds r0, r4, 0
- movs r1, 0
- bl ListMenuCallSelectionChangedCallback
- ldrb r0, [r4, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
-_08107A62:
- movs r0, 0
-_08107A64:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end ListMenuChangeSelection
-
- thumb_func_start ListMenuCallSelectionChangedCallback
-ListMenuCallSelectionChangedCallback: @ 8107A74
- push {r4,lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r3, [r2, 0x4]
- cmp r3, 0
- beq _08107A96
- ldrh r0, [r2, 0x18]
- ldrh r1, [r2, 0x1A]
- adds r0, r1
- ldr r1, [r2]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0, 0x4]
- adds r1, r4, 0
- bl _call_via_r3
-_08107A96:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ListMenuCallSelectionChangedCallback
-
- thumb_func_start sub_8107A9C
-sub_8107A9C: @ 8107A9C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r6, _08107AE8 @ =gUnknown_3005E60
- movs r5, 0xF
- ands r0, r5
- ldrb r3, [r6]
- mov r8, r3
- movs r4, 0x10
- negs r4, r4
- adds r3, r4, 0
- mov r7, r8
- ands r3, r7
- orrs r3, r0
- lsrs r1, 20
- ands r3, r5
- orrs r3, r1
- strb r3, [r6]
- ands r2, r5
- ldrb r0, [r6, 0x1]
- ands r4, r0
- orrs r4, r2
- strb r4, [r6, 0x1]
- ldrb r0, [r6, 0x3]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r6, 0x3]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08107AE8: .4byte gUnknown_3005E60
- thumb_func_end sub_8107A9C
-
- thumb_func_start ListMenuDefaultCursorMoveFunc
-ListMenuDefaultCursorMoveFunc: @ 8107AEC
- push {lr}
- lsls r1, 24
- cmp r1, 0
- bne _08107AFA
- movs r0, 0x5
- bl PlaySE
-_08107AFA:
- pop {r0}
- bx r0
- thumb_func_end ListMenuDefaultCursorMoveFunc
-
- thumb_func_start sub_8107B00
-sub_8107B00: @ 8107B00
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08107B24 @ =gTasks+0x8
- adds r2, r1, r0
- cmp r3, 0x10
- bhi _08107BC8
- lsls r0, r3, 2
- ldr r1, _08107B28 @ =_08107B2C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08107B24: .4byte gTasks+0x8
-_08107B28: .4byte _08107B2C
- .align 2, 0
-_08107B2C:
- .4byte _08107B70
- .4byte _08107B70
- .4byte _08107B74
- .4byte _08107B78
- .4byte _08107B7C
- .4byte _08107B80
- .4byte _08107B84
- .4byte _08107B88
- .4byte _08107B8C
- .4byte _08107B90
- .4byte _08107B96
- .4byte _08107B9E
- .4byte _08107BA4
- .4byte _08107BAC
- .4byte _08107BB4
- .4byte _08107BBA
- .4byte _08107BC2
-_08107B70:
- ldr r0, [r2, 0x4]
- b _08107BCC
-_08107B74:
- ldrh r0, [r2, 0xC]
- b _08107BCC
-_08107B78:
- ldrh r0, [r2, 0xE]
- b _08107BCC
-_08107B7C:
- ldrb r0, [r2, 0x10]
- b _08107BCC
-_08107B80:
- ldrb r0, [r2, 0x11]
- b _08107BCC
-_08107B84:
- ldrb r0, [r2, 0x12]
- b _08107BCC
-_08107B88:
- ldrb r0, [r2, 0x13]
- b _08107BCC
-_08107B8C:
- ldrb r0, [r2, 0x14]
- b _08107B98
-_08107B90:
- ldrb r0, [r2, 0x14]
- lsrs r0, 4
- b _08107BCC
-_08107B96:
- ldrb r0, [r2, 0x15]
-_08107B98:
- lsls r0, 28
- lsrs r0, 28
- b _08107BCC
-_08107B9E:
- ldrb r0, [r2, 0x15]
- lsrs r0, 4
- b _08107BCC
-_08107BA4:
- ldrb r0, [r2, 0x16]
- lsls r0, 29
- lsrs r0, 29
- b _08107BCC
-_08107BAC:
- ldrb r0, [r2, 0x16]
- lsls r0, 26
- lsrs r0, 29
- b _08107BCC
-_08107BB4:
- ldrb r0, [r2, 0x16]
- lsrs r0, 6
- b _08107BCC
-_08107BBA:
- ldrb r0, [r2, 0x17]
- lsls r0, 26
- lsrs r0, 26
- b _08107BCC
-_08107BC2:
- ldrb r0, [r2, 0x17]
- lsrs r0, 6
- b _08107BCC
-_08107BC8:
- movs r0, 0x1
- negs r0, r0
-_08107BCC:
- pop {r1}
- bx r1
- thumb_func_end sub_8107B00
-
- thumb_func_start sub_8107BD0
-sub_8107BD0: @ 8107BD0
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08107BF4 @ =gTasks+0x8
- adds r3, r1, r0
- cmp r4, 0x10
- bhi _08107CD0
- lsls r0, r4, 2
- ldr r1, _08107BF8 @ =_08107BFC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08107BF4: .4byte gTasks+0x8
-_08107BF8: .4byte _08107BFC
- .align 2, 0
-_08107BFC:
- .4byte _08107C40
- .4byte _08107C40
- .4byte _08107C44
- .4byte _08107C48
- .4byte _08107C4C
- .4byte _08107C50
- .4byte _08107C54
- .4byte _08107C58
- .4byte _08107C5C
- .4byte _08107C68
- .4byte _08107C76
- .4byte _08107C82
- .4byte _08107C90
- .4byte _08107C9C
- .4byte _08107CAA
- .4byte _08107CB8
- .4byte _08107CC4
-_08107C40:
- str r2, [r3, 0x4]
- b _08107CD0
-_08107C44:
- strh r2, [r3, 0xC]
- b _08107CD0
-_08107C48:
- strh r2, [r3, 0xE]
- b _08107CD0
-_08107C4C:
- strb r2, [r3, 0x10]
- b _08107CD0
-_08107C50:
- strb r2, [r3, 0x11]
- b _08107CD0
-_08107C54:
- strb r2, [r3, 0x12]
- b _08107CD0
-_08107C58:
- strb r2, [r3, 0x13]
- b _08107CD0
-_08107C5C:
- movs r0, 0xF
- ands r2, r0
- ldrb r1, [r3, 0x14]
- movs r0, 0x10
- negs r0, r0
- b _08107C6E
-_08107C68:
- lsls r2, 4
- ldrb r1, [r3, 0x14]
- movs r0, 0xF
-_08107C6E:
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x14]
- b _08107CD0
-_08107C76:
- movs r0, 0xF
- ands r2, r0
- ldrb r1, [r3, 0x15]
- movs r0, 0x10
- negs r0, r0
- b _08107C88
-_08107C82:
- lsls r2, 4
- ldrb r1, [r3, 0x15]
- movs r0, 0xF
-_08107C88:
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x15]
- b _08107CD0
-_08107C90:
- movs r0, 0x7
- ands r2, r0
- ldrb r1, [r3, 0x16]
- movs r0, 0x8
- negs r0, r0
- b _08107CB0
-_08107C9C:
- movs r0, 0x7
- ands r2, r0
- lsls r2, 3
- ldrb r1, [r3, 0x16]
- movs r0, 0x39
- negs r0, r0
- b _08107CB0
-_08107CAA:
- lsls r2, 6
- ldrb r1, [r3, 0x16]
- movs r0, 0x3F
-_08107CB0:
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x16]
- b _08107CD0
-_08107CB8:
- movs r0, 0x3F
- ands r2, r0
- ldrb r1, [r3, 0x17]
- movs r0, 0x40
- negs r0, r0
- b _08107CCA
-_08107CC4:
- lsls r2, 6
- ldrb r1, [r3, 0x17]
- movs r0, 0x3F
-_08107CCA:
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x17]
-_08107CD0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8107BD0
-
- thumb_func_start sub_8107CD8
-sub_8107CD8: @ 8107CD8
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- lsrs r0, 16
- bl sub_80971CC
- adds r1, r4, 0
- movs r2, 0x20
- bl LoadPalette
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8107CD8
-
- thumb_func_start sub_8107CF8
-sub_8107CF8: @ 8107CF8
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- adds r0, r1, 0
- adds r1, r2, 0
- adds r4, r3, 0
- ldr r5, [sp, 0x18]
- lsls r6, 24
- lsrs r6, 24
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- movs r2, 0x1
- bl GetMonIconPtr
- adds r1, r0, 0
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r0, r6, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl BlitBitmapToWindow
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8107CF8
-
- thumb_func_start sub_8107D38
-sub_8107D38: @ 8107D38
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- beq _08107D4A
- cmp r1, 0x1
- beq _08107D54
-_08107D4A:
- ldr r0, _08107D50 @ =gUnknown_8E95D9C
- b _08107D56
- .align 2, 0
-_08107D50: .4byte gUnknown_8E95D9C
-_08107D54:
- ldr r0, _08107D64 @ =gUnknown_8E95DBC
-_08107D56:
- adds r1, r2, 0
- movs r2, 0x20
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_08107D64: .4byte gUnknown_8E95DBC
- thumb_func_end sub_8107D38
-
- thumb_func_start blit_move_info_icon
-blit_move_info_icon: @ 8107D68
- push {r4,r5,lr}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r3, 16
- ldr r4, _08107DAC @ =gUnknown_8452C94
- lsrs r1, 22
- adds r1, r4
- ldrh r5, [r1, 0x2]
- lsls r5, 5
- ldr r4, _08107DB0 @ =gUnknown_8E95DDC
- adds r5, r4
- movs r4, 0x80
- str r4, [sp]
- str r4, [sp, 0x4]
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- ldrb r2, [r1]
- str r2, [sp, 0x10]
- ldrb r1, [r1, 0x1]
- str r1, [sp, 0x14]
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0
- bl BlitBitmapRectToWindow
- add sp, 0x18
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08107DAC: .4byte gUnknown_8452C94
-_08107DB0: .4byte gUnknown_8E95DDC
- thumb_func_end blit_move_info_icon
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/mail.s b/asm/mail.s
index dac4bf6f8..23aba36f6 100644
--- a/asm/mail.s
+++ b/asm/mail.s
@@ -240,7 +240,7 @@ _080BEDE0:
b _080BF0F4
_080BEDE6:
bl FreeAllSpritePalettes
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
movs r0, 0x10
movs r1, 0
bl SetGpuReg
@@ -318,13 +318,13 @@ _080BEE88:
movs r0, 0x1
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
b _080BF0F4
.align 2, 0
_080BEEB0: .4byte gUnknown_83EE9C8
_080BEEB4: .4byte gUnknown_20399C4
_080BEEB8:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
cmp r0, 0
bne _080BEEC4
@@ -623,7 +623,7 @@ _080BF112:
.align 2, 0
_080BF128: .4byte sub_80BF368
_080BF12C:
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -811,7 +811,7 @@ _080BF260:
str r0, [sp, 0x4]
str r5, [sp, 0x8]
movs r1, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
mov r1, r8
ldr r0, [r1]
adds r0, 0xF8
@@ -856,7 +856,7 @@ _080BF2CE:
str r4, [sp, 0x8]
movs r0, 0x1
movs r1, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r1, [r5]
adds r0, r1, 0
adds r0, 0xE9
@@ -875,7 +875,7 @@ _080BF2CE:
str r0, [sp, 0x8]
movs r0, 0x1
movs r1, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
diff --git a/asm/mail_data.s b/asm/mail_data.s
deleted file mode 100644
index 421aaf452..000000000
--- a/asm/mail_data.s
+++ /dev/null
@@ -1,626 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start ClearMailData
-ClearMailData: @ 8097C84
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _08097CAC @ =gSaveBlock1Ptr
-_08097C8A:
- lsls r1, r4, 3
- adds r1, r4
- lsls r1, 2
- ldr r0, _08097CB0 @ =0x00002cd0
- adds r1, r0
- ldr r0, [r5]
- adds r0, r1
- bl ClearMailStruct
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _08097C8A
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08097CAC: .4byte gSaveBlock1Ptr
-_08097CB0: .4byte 0x00002cd0
- thumb_func_end ClearMailData
-
- thumb_func_start ClearMailStruct
-ClearMailStruct: @ 8097CB4
- push {r4-r6,lr}
- adds r3, r0, 0
- ldr r0, _08097D04 @ =0x0000ffff
- adds r4, r0, 0
- adds r1, r3, 0
- movs r2, 0x8
-_08097CC0:
- ldrh r0, [r1]
- orrs r0, r4
- strh r0, [r1]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _08097CC0
- movs r2, 0
- adds r6, r3, 0
- adds r6, 0x1A
- adds r4, r3, 0
- adds r4, 0x12
- movs r5, 0xFF
-_08097CDA:
- adds r1, r4, r2
- ldrb r0, [r1]
- orrs r0, r5
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0x7
- ble _08097CDA
- adds r1, r6, 0
- movs r2, 0
- adds r0, r1, 0x3
-_08097CEE:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _08097CEE
- movs r1, 0
- movs r0, 0x1
- strh r0, [r3, 0x1E]
- strh r1, [r3, 0x20]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08097D04: .4byte 0x0000ffff
- thumb_func_end ClearMailStruct
-
- thumb_func_start MonHasMail
-MonHasMail: @ 8097D08
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl itemid_is_mail
- lsls r0, 24
- cmp r0, 0
- beq _08097D30
- adds r0, r4, 0
- movs r1, 0x40
- bl GetMonData
- cmp r0, 0xFF
- beq _08097D30
- movs r0, 0x1
- b _08097D32
-_08097D30:
- movs r0, 0
-_08097D32:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MonHasMail
-
- thumb_func_start sub_8097D38
-sub_8097D38: @ 8097D38
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r8, r0
- lsls r1, 16
- lsrs r0, r1, 16
- str r0, [sp, 0x8]
- mov r0, sp
- movs r2, 0
- ldrb r3, [r0, 0x8]
- strb r3, [r0]
- lsrs r1, 24
- strb r1, [r0, 0x1]
- add r4, sp, 0x4
- strb r2, [r4]
- mov r12, r4
- mov r9, r4
- adds r5, r4, 0
-_08097D62:
- ldr r2, _08097EC0 @ =gSaveBlock1Ptr
- ldr r0, [r2]
- ldrb r3, [r5]
- lsls r1, r3, 3
- adds r1, r3
- lsls r1, 2
- adds r0, r1
- ldr r1, _08097EC4 @ =0x00002cf0
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _08097D7C
- b _08097EE0
-_08097D7C:
- movs r4, 0
- ldr r3, _08097EC8 @ =gSaveBlock2Ptr
- mov r10, r3
- adds r7, r2, 0
- mov r5, r12
- ldr r0, _08097ECC @ =0x0000ffff
- adds r6, r0, 0
-_08097D8A:
- ldr r2, [r7]
- lsls r3, r4, 1
- ldrb r1, [r5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r3, r0
- ldr r1, _08097ED0 @ =0x00002cd0
- adds r2, r1
- adds r2, r3
- ldrh r0, [r2]
- orrs r0, r6
- strh r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x8
- bls _08097D8A
- movs r4, 0
- mov r2, r10
- ldr r0, [r2]
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08097DEE
- ldr r3, _08097EC8 @ =gSaveBlock2Ptr
-_08097DBC:
- ldr r0, _08097EC0 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- mov r0, r12
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldr r1, _08097ED4 @ =0x00002ce2
- adds r2, r1
- adds r2, r0
- ldr r0, [r3]
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bhi _08097DEE
- ldr r0, [r3]
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08097DBC
-_08097DEE:
- cmp r4, 0x5
- bhi _08097E16
- ldr r7, _08097EC0 @ =gSaveBlock1Ptr
- mov r3, r12
- ldr r6, _08097ED4 @ =0x00002ce2
- movs r5, 0
-_08097DFA:
- ldr r2, [r7]
- ldrb r1, [r3]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- adds r2, r6
- adds r2, r0
- strb r5, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _08097DFA
-_08097E16:
- ldr r3, _08097EC0 @ =gSaveBlock1Ptr
- ldr r2, [r3]
- mov r0, r12
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldr r1, _08097ED4 @ =0x00002ce2
- adds r2, r1
- adds r2, r0
- movs r0, 0xFF
- strb r0, [r2]
- movs r4, 0
- adds r5, r3, 0
- mov r3, r12
-_08097E36:
- ldr r2, [r5]
- ldrb r1, [r3]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldr r1, _08097ED8 @ =0x00002cea
- adds r2, r1
- adds r2, r0
- mov r1, r10
- ldr r0, [r1]
- adds r0, 0xA
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08097E36
- mov r0, r8
- movs r1, 0xB
- bl GetBoxMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- mov r0, r8
- movs r1, 0
- bl GetBoxMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl SpeciesToMailSpecies
- ldr r1, _08097EC0 @ =gSaveBlock1Ptr
- ldr r3, [r1]
- mov r4, r9
- ldrb r2, [r4]
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r3, r1
- ldr r2, _08097EDC @ =0x00002cee
- adds r1, r2
- strh r0, [r1]
- ldrb r1, [r4]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r3, r0
- ldr r4, _08097EC4 @ =0x00002cf0
- adds r3, r4
- mov r0, sp
- ldrh r0, [r0, 0x8]
- strh r0, [r3]
- mov r0, r8
- movs r1, 0x40
- mov r2, r9
- bl SetMonData
- mov r0, r8
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- mov r1, r9
- ldrb r0, [r1]
- b _08097EEE
- .align 2, 0
-_08097EC0: .4byte gSaveBlock1Ptr
-_08097EC4: .4byte 0x00002cf0
-_08097EC8: .4byte gSaveBlock2Ptr
-_08097ECC: .4byte 0x0000ffff
-_08097ED0: .4byte 0x00002cd0
-_08097ED4: .4byte 0x00002ce2
-_08097ED8: .4byte 0x00002cea
-_08097EDC: .4byte 0x00002cee
-_08097EE0:
- adds r0, r3, 0x1
- strb r0, [r4]
- ldrb r0, [r5]
- cmp r0, 0x5
- bhi _08097EEC
- b _08097D62
-_08097EEC:
- movs r0, 0xFF
-_08097EEE:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8097D38
-
- thumb_func_start SpeciesToMailSpecies
-SpeciesToMailSpecies: @ 8097F00
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xC9
- bne _08097F18
- adds r0, r1, 0
- bl mon_icon_personality_to_unown_id
- lsls r0, 16
- ldr r1, _08097F1C @ =0x75300000
- adds r0, r1
- lsrs r0, 16
-_08097F18:
- pop {r1}
- bx r1
- .align 2, 0
-_08097F1C: .4byte 0x75300000
- thumb_func_end SpeciesToMailSpecies
-
- thumb_func_start MailSpeciesToSpecies
-MailSpeciesToSpecies: @ 8097F20
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, _08097F38 @ =0xffff8ad0
- adds r2, r3, r0
- lsls r0, r2, 16
- lsrs r0, 16
- cmp r0, 0x1B
- bhi _08097F3C
- movs r0, 0xC9
- strh r2, [r1]
- b _08097F3E
- .align 2, 0
-_08097F38: .4byte 0xffff8ad0
-_08097F3C:
- adds r0, r3, 0
-_08097F3E:
- pop {r1}
- bx r1
- thumb_func_end MailSpeciesToSpecies
-
- thumb_func_start GiveMailToMon2
-GiveMailToMon2: @ 8097F44
- push {r4-r7,lr}
- sub sp, 0x8
- adds r6, r0, 0
- adds r7, r1, 0
- ldrh r5, [r7, 0x20]
- adds r1, r5, 0
- bl sub_8097D38
- add r4, sp, 0x4
- strb r0, [r4]
- ldrb r2, [r4]
- cmp r2, 0xFF
- beq _08097FA8
- ldr r0, _08097FA0 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r1, r0
- ldr r0, _08097FA4 @ =0x00002cd0
- adds r1, r0
- adds r0, r7, 0
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- adds r0, r6, 0
- movs r1, 0x40
- adds r2, r4, 0
- bl SetMonData
- mov r0, sp
- strb r5, [r0]
- mov r1, sp
- lsrs r0, r5, 8
- strb r0, [r1, 0x1]
- adds r0, r6, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- ldrb r0, [r4]
- b _08097FAA
- .align 2, 0
-_08097FA0: .4byte gSaveBlock1Ptr
-_08097FA4: .4byte 0x00002cd0
-_08097FA8:
- movs r0, 0xFF
-_08097FAA:
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end GiveMailToMon2
-
- thumb_func_start sub_8097FB4
-sub_8097FB4: @ 8097FB4
- movs r0, 0
- bx lr
- thumb_func_end sub_8097FB4
-
- thumb_func_start TakeMailFromMon
-TakeMailFromMon: @ 8097FB8
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- bl MonHasMail
- lsls r0, 24
- cmp r0, 0
- beq _08098008
- adds r0, r4, 0
- movs r1, 0x40
- bl GetMonData
- add r2, sp, 0x4
- strb r0, [r2]
- ldr r0, _08098010 @ =gSaveBlock1Ptr
- ldr r3, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r3, r0
- ldr r0, _08098014 @ =0x00002cf0
- adds r3, r0
- movs r1, 0
- movs r0, 0
- strh r0, [r3]
- movs r0, 0xFF
- strb r0, [r2]
- mov r0, sp
- strb r1, [r0]
- strb r1, [r0, 0x1]
- adds r0, r4, 0
- movs r1, 0x40
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
-_08098008:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08098010: .4byte gSaveBlock1Ptr
-_08098014: .4byte 0x00002cf0
- thumb_func_end TakeMailFromMon
-
- thumb_func_start sub_8098018
-sub_8098018: @ 8098018
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08098034 @ =gSaveBlock1Ptr
- ldr r2, [r1]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r2, r1
- ldr r0, _08098038 @ =0x00002cf0
- adds r2, r0
- movs r0, 0
- strh r0, [r2]
- bx lr
- .align 2, 0
-_08098034: .4byte gSaveBlock1Ptr
-_08098038: .4byte 0x00002cf0
- thumb_func_end sub_8098018
-
- thumb_func_start sub_809803C
-sub_809803C: @ 809803C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- adds r5, r0, 0
- mov r0, sp
- movs r1, 0
- strb r1, [r0]
- strb r1, [r0, 0x1]
- add r1, sp, 0x4
- movs r0, 0xFF
- strb r0, [r1]
- movs r7, 0x6
- mov r9, r1
- ldr r0, _080980D0 @ =gSaveBlock1Ptr
- mov r8, r0
- ldr r3, _080980D4 @ =0x00002cd0
-_08098060:
- mov r1, r8
- ldr r0, [r1]
- lsls r1, r7, 3
- adds r1, r7
- lsls r1, 2
- adds r4, r0, r1
- ldr r2, _080980D8 @ =0x00002cf0
- adds r0, r4, r2
- ldrh r6, [r0]
- cmp r6, 0
- bne _080980DC
- adds r4, r3
- adds r0, r5, 0
- movs r1, 0x40
- str r3, [sp, 0x8]
- bl GetMonData
- mov r1, r8
- ldr r2, [r1]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldr r3, [sp, 0x8]
- adds r1, r3
- ldm r1!, {r0,r2,r3}
- stm r4!, {r0,r2,r3}
- ldm r1!, {r0,r2,r3}
- stm r4!, {r0,r2,r3}
- ldm r1!, {r0,r2,r3}
- stm r4!, {r0,r2,r3}
- adds r0, r5, 0
- movs r1, 0x40
- bl GetMonData
- mov r1, r8
- ldr r2, [r1]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r2, r1
- ldr r3, _080980D8 @ =0x00002cf0
- adds r2, r3
- strh r6, [r2]
- adds r0, r5, 0
- movs r1, 0x40
- mov r2, r9
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- adds r0, r7, 0
- b _080980E8
- .align 2, 0
-_080980D0: .4byte gSaveBlock1Ptr
-_080980D4: .4byte 0x00002cd0
-_080980D8: .4byte 0x00002cf0
-_080980DC:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0xF
- bls _08098060
- movs r0, 0xFF
-_080980E8:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_809803C
-
- thumb_func_start itemid_is_mail
-itemid_is_mail: @ 80980F8
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x84
- bgt _0809810A
- cmp r0, 0x79
- blt _0809810A
- movs r0, 0x1
- b _0809810C
-_0809810A:
- movs r0, 0
-_0809810C:
- pop {r1}
- bx r1
- thumb_func_end itemid_is_mail
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/mailbox_pc.s b/asm/mailbox_pc.s
index 5273d1357..7e792681f 100644
--- a/asm/mailbox_pc.s
+++ b/asm/mailbox_pc.s
@@ -60,7 +60,7 @@ sub_810EBAC: @ 810EBAC
strb r0, [r4]
ldrb r0, [r4]
movs r1, 0
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
_0810EBD0:
ldrb r0, [r4]
pop {r4}
@@ -81,7 +81,7 @@ sub_810EBE0: @ 810EBE0
adds r4, r0
ldrb r0, [r4]
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl ClearWindowTilemap
ldrb r0, [r4]
@@ -154,7 +154,7 @@ _0810EC62:
movs r1, 0x2
movs r2, 0x8
adds r3, r5, 0
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
_0810EC82:
add sp, 0x34
pop {r4,r5}
@@ -303,7 +303,7 @@ sub_810ED80: @ 810ED80
movs r1, 0xC2
movs r2, 0xC
movs r3, 0x94
- bl AddScrollIndicatorArrowPairParametrized
+ bl AddScrollIndicatorArrowPairParameterized
strb r0, [r4, 0xA]
add sp, 0x10
pop {r4}
diff --git a/asm/main_menu.s b/asm/main_menu.s
index d7bf1e406..f88fea21a 100644
--- a/asm/main_menu.s
+++ b/asm/main_menu.s
@@ -639,7 +639,7 @@ _0800C828:
movs r1, 0x2
movs r2, 0x2
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r0, _0800C86C @ =gUnknown_8234618
bl sub_800D0B4
movs r0, 0
@@ -670,7 +670,7 @@ _0800C870:
movs r1, 0x2
movs r2, 0x2
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
str r5, [sp]
str r4, [sp, 0x4]
ldr r0, _0800C8E8 @ =gUnknown_8415A6E
@@ -679,7 +679,7 @@ _0800C870:
movs r1, 0x2
movs r2, 0x2
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
bl sub_800CE58
ldr r4, _0800C8EC @ =gUnknown_8234620
adds r0, r4, 0
@@ -725,7 +725,7 @@ _0800C8F0:
movs r1, 0x2
movs r2, 0x2
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
str r5, [sp]
str r4, [sp, 0x4]
ldr r0, _0800C9B8 @ =gUnknown_8415A6E
@@ -734,7 +734,7 @@ _0800C8F0:
movs r1, 0x2
movs r2, 0x2
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x1
strh r0, [r6, 0x1C]
str r5, [sp]
@@ -745,7 +745,7 @@ _0800C8F0:
movs r1, 0x2
movs r2, 0x2
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
bl sub_800CE58
ldr r4, _0800C9C0 @ =gUnknown_8234620
adds r0, r4, 0
@@ -1355,7 +1355,7 @@ sub_800CDF8: @ 800CDF8
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x4
bl PutWindowTilemap
movs r0, 0x4
@@ -1404,7 +1404,7 @@ sub_800CE70: @ 800CE70
movs r1, 0x2
movs r2, 0x2
movs r3, 0x12
- bl box_print
+ bl AddTextPrinterParameterized3
add r1, sp, 0xC
movs r2, 0
ldr r0, _0800CED0 @ =gSaveBlock2Ptr
@@ -1430,7 +1430,7 @@ _0800CE96:
movs r1, 0x2
movs r2, 0x3E
movs r3, 0x12
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0x14
pop {r0}
bx r0
@@ -1455,7 +1455,7 @@ sub_800CED4: @ 800CED4
movs r1, 0x2
movs r2, 0x2
movs r3, 0x22
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r4, _0800CF38 @ =gSaveBlock2Ptr
ldr r0, [r4]
ldrh r1, [r0, 0xE]
@@ -1479,7 +1479,7 @@ sub_800CED4: @ 800CED4
movs r1, 0x2
movs r2, 0x3E
movs r3, 0x22
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0x2C
pop {r4-r6}
pop {r0}
@@ -1525,7 +1525,7 @@ _0800CF6A:
movs r1, 0x2
movs r2, 0x2
movs r3, 0x32
- bl box_print
+ bl AddTextPrinterParameterized3
add r0, sp, 0xC
adds r1, r6, 0
movs r2, 0
@@ -1541,7 +1541,7 @@ _0800CF6A:
movs r1, 0x2
movs r2, 0x3E
movs r3, 0x32
- bl box_print
+ bl AddTextPrinterParameterized3
_0800CFAE:
add sp, 0x2C
pop {r4-r6}
@@ -1586,7 +1586,7 @@ _0800CFE2:
movs r1, 0x2
movs r2, 0x2
movs r3, 0x42
- bl box_print
+ bl AddTextPrinterParameterized3
add r0, sp, 0xC
adds r1, r6, 0
movs r2, 0x2
@@ -1602,7 +1602,7 @@ _0800CFE2:
movs r1, 0x2
movs r2, 0x3E
movs r3, 0x42
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0x2C
pop {r4-r6}
pop {r0}
@@ -1656,7 +1656,7 @@ sub_800D094: @ 800D094
ldr r1, _0800D0AC @ =0x000001b1
movs r0, 0
movs r2, 0x20
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
ldr r0, _0800D0B0 @ =gUnknown_8234638
bl sub_800D1E8
pop {r0}
diff --git a/asm/map_preview_screen.s b/asm/map_preview_screen.s
index c8f063d5a..900b36d9c 100644
--- a/asm/map_preview_screen.s
+++ b/asm/map_preview_screen.s
@@ -123,7 +123,7 @@ sub_80F819C: @ 80F819C
lsrs r5, r0, 24
cmp r5, 0x1C
beq _080F8224
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
ldr r4, _080F8200 @ =gUnknown_843E9E8
lsls r5, 4
adds r0, r4, 0
@@ -141,7 +141,7 @@ sub_80F819C: @ 80F819C
movs r0, 0
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
movs r0, 0
bl GetBgTilemapBuffer
cmp r0, 0
@@ -206,7 +206,7 @@ _080F8254: .4byte gUnknown_203ABED
thumb_func_start sub_80F8258
sub_80F8258: @ 80F8258
push {lr}
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
lsrs r0, 24
pop {r1}
@@ -345,7 +345,7 @@ sub_80F8318: @ 80F8318
adds r0, r6, 0
movs r1, 0x2
movs r3, 0x2
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
mov r0, r8
add sp, 0x14
pop {r3,r4}
@@ -440,7 +440,7 @@ _080F8448:
lsls r0, 24
cmp r0, 0
beq _080F853C
- bl sub_8055DC4
+ bl Overworld_PlaySpecialMapMusic
b _080F84EA
_080F8458:
ldrh r0, [r4, 0x2]
diff --git a/asm/menu.s b/asm/menu.s
deleted file mode 100644
index 6341c2c32..000000000
--- a/asm/menu.s
+++ /dev/null
@@ -1,3455 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_810EDC4
-sub_810EDC4: @ 810EDC4
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810EE00 @ =gUnknown_203ADF0
- strh r2, [r0]
- ldr r0, _0810EE04 @ =gUnknown_203ADF2
- strb r3, [r0]
- ldr r1, _0810EE08 @ =sub_810EE5C
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0810EDFA
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810EDFA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EE00: .4byte gUnknown_203ADF0
-_0810EE04: .4byte gUnknown_203ADF2
-_0810EE08: .4byte sub_810EE5C
- thumb_func_end sub_810EDC4
-
- thumb_func_start sub_810EE0C
-sub_810EE0C: @ 810EE0C
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810EE50 @ =gUnknown_203ADF0
- strh r2, [r0]
- ldr r5, _0810EE54 @ =gUnknown_203ADF2
- adds r0, r6, 0
- movs r1, 0x5
- bl GetWindowAttribute
- strb r0, [r5]
- ldr r1, _0810EE58 @ =sub_810EE5C
- adds r0, r6, 0
- bl CallWindowFunction
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r6, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0810EE4A
- adds r0, r6, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810EE4A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EE50: .4byte gUnknown_203ADF0
-_0810EE54: .4byte gUnknown_203ADF2
-_0810EE58: .4byte sub_810EE5C
- thumb_func_end sub_810EE0C
-
- thumb_func_start sub_810EE5C
-sub_810EE5C: @ 810EE5C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- adds r6, r0, 0
- adds r5, r2, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r0, r1, 24
- lsls r5, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x10]
- ldr r1, _0810F228 @ =gUnknown_203ADF0
- mov r9, r1
- ldrh r1, [r1]
- lsrs r2, r0, 24
- str r2, [sp, 0xC]
- movs r3, 0xFE
- lsls r3, 24
- adds r2, r0, r3
- lsrs r2, 24
- str r2, [sp, 0x14]
- lsrs r0, r5, 24
- mov r10, r0
- movs r2, 0xFF
- lsls r2, 24
- adds r5, r2
- lsrs r5, 24
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- ldr r3, _0810F22C @ =gUnknown_203ADF2
- mov r8, r3
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r0, r9
- ldrh r1, [r0]
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0xC]
- subs r0, 0x1
- lsls r2, r0, 24
- lsrs r2, 24
- str r2, [sp, 0x18]
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x2
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0xC]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x3
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0xC]
- ldr r2, [sp, 0x10]
- adds r7, r0, r2
- lsls r2, r7, 24
- lsrs r2, 24
- str r2, [sp, 0x1C]
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r0, r9
- ldrh r1, [r0]
- adds r1, 0x4
- lsls r1, 16
- lsrs r1, 16
- adds r0, r7, 0x1
- lsls r2, r0, 24
- lsrs r7, r2, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x5
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- mov r3, r10
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x6
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- mov r3, r10
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x8
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- mov r3, r10
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x9
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- mov r3, r10
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0xA
- lsls r1, 16
- lsrs r1, 16
- mov r5, r10
- adds r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0xB
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0xC
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0xD
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F230 @ =0x0000080a
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- mov r5, r10
- adds r5, 0x2
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F234 @ =0x0000080b
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F238 @ =0x0000080c
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F23C @ =0x0000080d
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F240 @ =0x00000805
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- mov r5, r10
- adds r5, 0x3
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F244 @ =0x00000806
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F248 @ =0x00000808
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F24C @ =0x00000809
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- movs r3, 0x80
- lsls r3, 4
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0x4
- add r10, r2
- mov r3, r10
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- bl FillBgTilemapBufferRect
- ldr r3, _0810F250 @ =0x00000801
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r3, _0810F254 @ =0x00000802
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, [sp, 0x10]
- str r2, [sp]
- str r4, [sp, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0xC]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r0, _0810F258 @ =0x00000803
- adds r1, r0, 0
- mov r2, r9
- ldrh r2, [r2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r0, _0810F25C @ =0x00000804
- adds r1, r0, 0
- mov r2, r9
- ldrh r2, [r2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- mov r3, r10
- bl FillBgTilemapBufferRect
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F228: .4byte gUnknown_203ADF0
-_0810F22C: .4byte gUnknown_203ADF2
-_0810F230: .4byte 0x0000080a
-_0810F234: .4byte 0x0000080b
-_0810F238: .4byte 0x0000080c
-_0810F23C: .4byte 0x0000080d
-_0810F240: .4byte 0x00000805
-_0810F244: .4byte 0x00000806
-_0810F248: .4byte 0x00000808
-_0810F24C: .4byte 0x00000809
-_0810F250: .4byte 0x00000801
-_0810F254: .4byte 0x00000802
-_0810F258: .4byte 0x00000803
-_0810F25C: .4byte 0x00000804
- thumb_func_end sub_810EE5C
-
- thumb_func_start sub_810F260
-sub_810F260: @ 810F260
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0810F294 @ =sub_810F298
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl ClearWindowTilemap
- cmp r4, 0x1
- bne _0810F28E
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F28E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F294: .4byte sub_810F298
- thumb_func_end sub_810F260
-
- thumb_func_start sub_810F298
-sub_810F298: @ 810F298
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsls r5, 24
- lsls r3, 24
- lsls r1, 24
- movs r2, 0xFE
- lsls r2, 24
- adds r4, r2
- lsrs r4, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r5, r2
- lsrs r5, 24
- movs r2, 0x80
- lsls r2, 19
- adds r3, r2
- lsrs r3, 24
- str r3, [sp]
- movs r2, 0x80
- lsls r2, 18
- adds r1, r2
- lsrs r1, 24
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- adds r2, r4, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810F298
-
- thumb_func_start SetWindowBorderStyle
-SetWindowBorderStyle: @ 810F2E8
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810F324 @ =gUnknown_203ADF0
- strh r2, [r0]
- ldr r0, _0810F328 @ =gUnknown_203ADF2
- strb r3, [r0]
- ldr r1, _0810F32C @ =DrawWindowBorder
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0810F31E
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F31E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F324: .4byte gUnknown_203ADF0
-_0810F328: .4byte gUnknown_203ADF2
-_0810F32C: .4byte DrawWindowBorder
- thumb_func_end SetWindowBorderStyle
-
- thumb_func_start sub_810F330
-sub_810F330: @ 810F330
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810F374 @ =gUnknown_203ADF0
- strh r2, [r0]
- ldr r5, _0810F378 @ =gUnknown_203ADF2
- adds r0, r6, 0
- movs r1, 0x5
- bl GetWindowAttribute
- strb r0, [r5]
- ldr r1, _0810F37C @ =DrawWindowBorder
- adds r0, r6, 0
- bl CallWindowFunction
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r6, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0810F36E
- adds r0, r6, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F36E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F374: .4byte gUnknown_203ADF0
-_0810F378: .4byte gUnknown_203ADF2
-_0810F37C: .4byte DrawWindowBorder
- thumb_func_end sub_810F330
-
- thumb_func_start DrawWindowBorder
-DrawWindowBorder: @ 810F380
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- mov r9, r0
- adds r6, r1, 0
- adds r4, r2, 0
- ldr r0, [sp, 0x38]
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r6, 24
- lsls r4, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x10]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- lsrs r0, r6, 24
- str r0, [sp, 0xC]
- movs r2, 0xFF
- lsls r2, 24
- adds r6, r2
- lsrs r6, 24
- lsrs r0, r4, 24
- mov r8, r0
- adds r4, r2
- lsrs r4, 24
- movs r5, 0x1
- str r5, [sp]
- str r5, [sp, 0x4]
- ldr r7, _0810F4D4 @ =gUnknown_203ADF2
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- ldr r2, [sp, 0xC]
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- adds r1, 0x2
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0xC]
- ldr r2, [sp, 0x10]
- adds r0, r2
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- str r5, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- mov r2, r10
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r0, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r0]
- adds r1, 0x3
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- ldr r2, [sp, 0x14]
- str r2, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- adds r2, r6, 0
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r0, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r0]
- adds r1, 0x5
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- ldr r2, [sp, 0x14]
- str r2, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- mov r2, r10
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r0, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r0]
- adds r1, 0x6
- lsls r1, 16
- lsrs r1, 16
- ldr r2, [sp, 0x14]
- add r8, r2
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- str r5, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- adds r2, r6, 0
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- adds r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- ldr r2, [sp, 0xC]
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- adds r1, 0x8
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- mov r2, r10
- mov r3, r8
- bl FillBgTilemapBufferRect
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F4D0: .4byte gUnknown_203ADF0
-_0810F4D4: .4byte gUnknown_203ADF2
- thumb_func_end DrawWindowBorder
-
- thumb_func_start sub_810F4D8
-sub_810F4D8: @ 810F4D8
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0810F50C @ =sub_810F510
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl ClearWindowTilemap
- cmp r4, 0x1
- bne _0810F506
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F506:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F50C: .4byte sub_810F510
- thumb_func_end sub_810F4D8
-
- thumb_func_start sub_810F510
-sub_810F510: @ 810F510
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsls r5, 24
- lsls r3, 24
- lsls r1, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r4, r2
- lsrs r4, 24
- adds r5, r2
- lsrs r5, 24
- movs r2, 0x80
- lsls r2, 18
- adds r3, r2
- lsrs r3, 24
- str r3, [sp]
- adds r1, r2
- lsrs r1, 24
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- adds r2, r4, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810F510
-
- thumb_func_start CreateWindow_SnapRight_StdPal
-CreateWindow_SnapRight_StdPal: @ 810F558
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- ldr r4, [sp, 0x20]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r5, r3, 24
- lsls r4, 16
- lsrs r4, 16
- mov r0, sp
- movs r1, 0
- movs r2, 0x8
- bl memset
- cmp r6, 0x3
- bls _0810F58E
- movs r1, 0
- mov r0, sp
- strb r1, [r0]
- b _0810F592
-_0810F58E:
- mov r0, sp
- strb r6, [r0]
-_0810F592:
- mov r1, sp
- mov r0, r8
- strb r0, [r1, 0x2]
- movs r0, 0x2
- strb r0, [r1, 0x4]
- movs r0, 0x1E
- subs r0, r7
- strb r0, [r1, 0x1]
- strb r7, [r1, 0x3]
- strb r5, [r1, 0x5]
- strh r4, [r1, 0x6]
- ldr r4, _0810F5BC @ =gUnknown_203ADF4
- mov r0, sp
- bl AddWindow
- strb r0, [r4]
- cmp r5, 0xF
- bls _0810F5C0
- movs r5, 0xF0
- b _0810F5C4
- .align 2, 0
-_0810F5BC: .4byte gUnknown_203ADF4
-_0810F5C0:
- lsls r0, r5, 28
- lsrs r5, r0, 24
-_0810F5C4:
- movs r0, 0x2
- bl stdpal_get
- adds r1, r5, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _0810F5E4 @ =gUnknown_203ADF4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810F5E4: .4byte gUnknown_203ADF4
- thumb_func_end CreateWindow_SnapRight_StdPal
-
- thumb_func_start PrintTextOnRightSnappedWindow
-PrintTextOnRightSnappedWindow: @ 810F5E8
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r4, _0810F648 @ =gUnknown_203ADF4
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0810F63E
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- movs r0, 0
- adds r1, r5, 0
- movs r2, 0
- bl GetStringWidth
- ldrb r1, [r4]
- movs r3, 0x14
- negs r3, r3
- adds r2, r3, 0
- subs r2, r0
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0810F64C @ =gUnknown_8456618
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0
- movs r3, 0x1
- bl box_print
- cmp r6, 0
- beq _0810F63E
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F63E:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F648: .4byte gUnknown_203ADF4
-_0810F64C: .4byte gUnknown_8456618
- thumb_func_end PrintTextOnRightSnappedWindow
-
- thumb_func_start Menu_PrintHelpSystemUIHeader
-Menu_PrintHelpSystemUIHeader: @ 810F650
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x18
- mov r8, r0
- adds r5, r1, 0
- ldr r0, [sp, 0x30]
- lsls r2, 24
- lsrs r2, 24
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _0810F67C @ =gUnknown_203ADF4
- ldrb r1, [r0]
- adds r6, r0, 0
- cmp r1, 0xFF
- beq _0810F6F6
- cmp r2, 0
- beq _0810F680
- add r1, sp, 0x14
- movs r0, 0
- b _0810F684
- .align 2, 0
-_0810F67C: .4byte gUnknown_203ADF4
-_0810F680:
- add r1, sp, 0x14
- movs r0, 0xF
-_0810F684:
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- adds r4, r6, 0
- ldrb r0, [r4]
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- cmp r5, 0
- beq _0810F6CE
- movs r0, 0
- adds r1, r5, 0
- movs r2, 0
- bl GetStringWidth
- ldrb r1, [r4]
- movs r3, 0x14
- negs r3, r3
- adds r2, r3, 0
- subs r2, r0
- lsls r2, 24
- lsrs r2, 24
- add r0, sp, 0x14
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0
- movs r3, 0x1
- bl box_print
-_0810F6CE:
- ldrb r0, [r6]
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- add r2, sp, 0x14
- str r2, [sp, 0x8]
- str r1, [sp, 0xC]
- mov r3, r8
- str r3, [sp, 0x10]
- movs r1, 0x1
- movs r2, 0x4
- movs r3, 0x1
- bl AddTextPrinterParametrized2
- cmp r7, 0
- beq _0810F6F6
- ldrb r0, [r6]
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F6F6:
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end Menu_PrintHelpSystemUIHeader
-
- thumb_func_start sub_810F704
-sub_810F704: @ 810F704
- push {lr}
- ldr r1, _0810F718 @ =gUnknown_203ADF4
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0810F714
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F714:
- pop {r0}
- bx r0
- .align 2, 0
-_0810F718: .4byte gUnknown_203ADF4
- thumb_func_end sub_810F704
-
- thumb_func_start sub_810F71C
-sub_810F71C: @ 810F71C
- push {r4,lr}
- ldr r4, _0810F73C @ =gUnknown_203ADF4
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0810F734
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F734:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F73C: .4byte gUnknown_203ADF4
- thumb_func_end sub_810F71C
-
- thumb_func_start sub_810F740
-sub_810F740: @ 810F740
- push {r4,lr}
- ldr r4, _0810F770 @ =gUnknown_203ADF4
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0810F768
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0xFF
- strb r0, [r4]
-_0810F768:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F770: .4byte gUnknown_203ADF4
- thumb_func_end sub_810F740
-
- thumb_func_start sub_810F774
-sub_810F774: @ 810F774
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, [sp, 0x18]
- mov r8, r4
- ldr r4, [sp, 0x1C]
- ldr r5, [sp, 0x20]
- ldr r6, [sp, 0x24]
- mov r12, r6
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r7, r5, 24
- ldr r5, _0810F7B8 @ =gUnknown_203ADE4
- movs r6, 0
- strb r2, [r5]
- strb r3, [r5, 0x1]
- strb r6, [r5, 0x3]
- subs r4, 0x1
- strb r4, [r5, 0x4]
- strb r0, [r5, 0x5]
- strb r1, [r5, 0x6]
- mov r0, r8
- strb r0, [r5, 0x8]
- mov r4, r12
- strb r4, [r5, 0xB]
- cmp r7, 0
- blt _0810F7B4
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r7, r0
- ble _0810F7BC
-_0810F7B4:
- strb r6, [r5, 0x2]
- b _0810F7BE
- .align 2, 0
-_0810F7B8: .4byte gUnknown_203ADE4
-_0810F7BC:
- strb r7, [r5, 0x2]
-_0810F7BE:
- movs r0, 0
- bl MoveMenuCursor
- ldr r0, _0810F7D4 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810F7D4: .4byte gUnknown_203ADE4
- thumb_func_end sub_810F774
-
- thumb_func_start ProgramAndPlaceMenuCursorOnWindow
-ProgramAndPlaceMenuCursorOnWindow: @ 810F7D8
- push {r4-r6,lr}
- sub sp, 0x10
- ldr r4, [sp, 0x20]
- ldr r5, [sp, 0x24]
- ldr r6, [sp, 0x28]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r4, 0
- str r4, [sp, 0xC]
- bl sub_810F774
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ProgramAndPlaceMenuCursorOnWindow
-
- thumb_func_start sub_810F818
-sub_810F818: @ 810F818
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x14
- mov r8, r0
- adds r6, r1, 0
- ldr r4, [sp, 0x28]
- ldr r5, [sp, 0x2C]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r6, 24
- lsrs r6, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- movs r1, 0x1
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- mov r0, r8
- adds r1, r6, 0
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- bl ProgramAndPlaceMenuCursorOnWindow
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_810F818
-
- thumb_func_start RedrawMenuCursor
-RedrawMenuCursor: @ 810F874
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0xC
- adds r6, r0, 0
- mov r8, r1
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r5, _0810F8FC @ =gUnknown_203ADE4
- ldrb r0, [r5, 0x6]
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5, 0x6]
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r5, 0x5]
- mov r9, r1
- ldrb r2, [r5]
- ldrb r1, [r5, 0x8]
- adds r3, r1, 0
- muls r3, r6
- ldrb r6, [r5, 0x1]
- adds r3, r6
- lsls r3, 16
- lsrs r3, 16
- str r4, [sp]
- str r0, [sp, 0x4]
- mov r0, r9
- movs r1, 0x1
- bl FillWindowPixelRect
- ldrb r0, [r5, 0x5]
- ldrb r1, [r5, 0x6]
- ldr r2, _0810F900 @ =gFameCheckerText_ListMenuCursor
- ldrb r3, [r5]
- ldrb r4, [r5, 0x8]
- mov r6, r8
- muls r6, r4
- adds r4, r6, 0
- ldrb r5, [r5, 0x1]
- adds r4, r5
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F8FC: .4byte gUnknown_203ADE4
-_0810F900: .4byte gFameCheckerText_ListMenuCursor
- thumb_func_end RedrawMenuCursor
-
- thumb_func_start MoveMenuCursor
-MoveMenuCursor: @ 810F904
- push {r4,r5,lr}
- ldr r1, _0810F924 @ =gUnknown_203ADE4
- ldrb r5, [r1, 0x2]
- movs r2, 0x2
- ldrsb r2, [r1, r2]
- lsls r0, 24
- asrs r3, r0, 24
- adds r2, r3
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- adds r4, r1, 0
- cmp r2, r0
- bge _0810F928
- ldrb r0, [r4, 0x4]
- b _0810F936
- .align 2, 0
-_0810F924: .4byte gUnknown_203ADE4
-_0810F928:
- movs r0, 0x4
- ldrsb r0, [r4, r0]
- cmp r2, r0
- ble _0810F934
- ldrb r0, [r4, 0x3]
- b _0810F936
-_0810F934:
- adds r0, r3, r5
-_0810F936:
- strb r0, [r4, 0x2]
- ldrb r1, [r4, 0x2]
- adds r0, r5, 0
- bl RedrawMenuCursor
- ldrb r0, [r4, 0x2]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end MoveMenuCursor
-
- thumb_func_start MoveMenuCursorNoWrapAround
-MoveMenuCursorNoWrapAround: @ 810F948
- push {r4,r5,lr}
- ldr r1, _0810F968 @ =gUnknown_203ADE4
- ldrb r5, [r1, 0x2]
- movs r2, 0x2
- ldrsb r2, [r1, r2]
- lsls r0, 24
- asrs r3, r0, 24
- adds r2, r3
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- adds r4, r1, 0
- cmp r2, r0
- bge _0810F96C
- ldrb r0, [r4, 0x3]
- b _0810F97A
- .align 2, 0
-_0810F968: .4byte gUnknown_203ADE4
-_0810F96C:
- movs r0, 0x4
- ldrsb r0, [r4, r0]
- cmp r2, r0
- ble _0810F978
- ldrb r0, [r4, 0x4]
- b _0810F97A
-_0810F978:
- adds r0, r3, r5
-_0810F97A:
- strb r0, [r4, 0x2]
- ldrb r1, [r4, 0x2]
- adds r0, r5, 0
- bl RedrawMenuCursor
- ldrb r0, [r4, 0x2]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end MoveMenuCursorNoWrapAround
-
- thumb_func_start GetMenuCursorPos
-GetMenuCursorPos: @ 810F98C
- ldr r0, _0810F994 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- bx lr
- .align 2, 0
-_0810F994: .4byte gUnknown_203ADE4
- thumb_func_end GetMenuCursorPos
-
- thumb_func_start ProcessMenuInput
-ProcessMenuInput: @ 810F998
- push {r4,lr}
- ldr r0, _0810F9BC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810F9C4
- ldr r4, _0810F9C0 @ =gUnknown_203ADE4
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _0810F9B4
- movs r0, 0x5
- bl PlaySE
-_0810F9B4:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0810F9FE
- .align 2, 0
-_0810F9BC: .4byte gMain
-_0810F9C0: .4byte gUnknown_203ADE4
-_0810F9C4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810F9D2
- movs r0, 0x1
- negs r0, r0
- b _0810F9FE
-_0810F9D2:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0810F9E6
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _0810F9F6
-_0810F9E6:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0810F9FA
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_0810F9F6:
- bl MoveMenuCursor
-_0810F9FA:
- movs r0, 0x2
- negs r0, r0
-_0810F9FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInput
-
- thumb_func_start ProcessMenuInputNoWrapAround
-ProcessMenuInputNoWrapAround: @ 810FA04
- push {r4-r6,lr}
- ldr r4, _0810FA2C @ =gUnknown_203ADE4
- ldrb r5, [r4, 0x2]
- adds r6, r5, 0
- ldr r0, _0810FA30 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810FA34
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _0810FA24
- movs r0, 0x5
- bl PlaySE
-_0810FA24:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0810FA7C
- .align 2, 0
-_0810FA2C: .4byte gUnknown_203ADE4
-_0810FA30: .4byte gMain
-_0810FA34:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810FA42
- movs r0, 0x1
- negs r0, r0
- b _0810FA7C
-_0810FA42:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0810FA5C
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _0810FA78
- b _0810FA72
-_0810FA5C:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0810FA78
- movs r0, 0x1
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _0810FA78
-_0810FA72:
- movs r0, 0x5
- bl PlaySE
-_0810FA78:
- movs r0, 0x2
- negs r0, r0
-_0810FA7C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInputNoWrapAround
-
- thumb_func_start ProcessMenuInput_other
-ProcessMenuInput_other: @ 810FA84
- push {r4,lr}
- ldr r2, _0810FAA8 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810FAB0
- ldr r4, _0810FAAC @ =gUnknown_203ADE4
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _0810FAA0
- movs r0, 0x5
- bl PlaySE
-_0810FAA0:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0810FAE8
- .align 2, 0
-_0810FAA8: .4byte gMain
-_0810FAAC: .4byte gUnknown_203ADE4
-_0810FAB0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810FABE
- movs r0, 0x1
- negs r0, r0
- b _0810FAE8
-_0810FABE:
- ldrh r0, [r2, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _0810FAD4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _0810FAE0
-_0810FAD4:
- cmp r1, 0x80
- bne _0810FAE4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_0810FAE0:
- bl MoveMenuCursor
-_0810FAE4:
- movs r0, 0x2
- negs r0, r0
-_0810FAE8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInput_other
-
- thumb_func_start ProcessMenuInputNoWrapAround_other
-ProcessMenuInputNoWrapAround_other: @ 810FAF0
- push {r4-r6,lr}
- ldr r4, _0810FB18 @ =gUnknown_203ADE4
- ldrb r5, [r4, 0x2]
- adds r6, r5, 0
- ldr r2, _0810FB1C @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810FB20
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _0810FB10
- movs r0, 0x5
- bl PlaySE
-_0810FB10:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0810FB66
- .align 2, 0
-_0810FB18: .4byte gUnknown_203ADE4
-_0810FB1C: .4byte gMain
-_0810FB20:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810FB2E
- movs r0, 0x1
- negs r0, r0
- b _0810FB66
-_0810FB2E:
- ldrh r0, [r2, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _0810FB4A
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _0810FB62
- b _0810FB5C
-_0810FB4A:
- cmp r1, 0x80
- bne _0810FB62
- movs r0, 0x1
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _0810FB62
-_0810FB5C:
- movs r0, 0x5
- bl PlaySE
-_0810FB62:
- movs r0, 0x2
- negs r0, r0
-_0810FB66:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInputNoWrapAround_other
-
- thumb_func_start PrintTextArray
-PrintTextArray: @ 810FB6C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldr r4, [sp, 0x2C]
- ldr r5, [sp, 0x30]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- lsls r4, 24
- lsrs r7, r4, 24
- lsls r5, 24
- lsrs r5, 24
- movs r4, 0
- cmp r4, r5
- bcs _0810FBD0
-_0810FBA0:
- lsls r0, r4, 3
- ldr r1, [sp, 0x34]
- adds r0, r1
- ldr r2, [r0]
- adds r0, r7, 0
- muls r0, r4
- add r0, r8
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r6, 0
- mov r1, r10
- mov r3, r9
- bl AddTextPrinterParameterized
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _0810FBA0
-_0810FBD0:
- adds r0, r6, 0
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end PrintTextArray
-
- thumb_func_start sub_810FBE8
-sub_810FBE8: @ 810FBE8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, [sp, 0x40]
- ldr r5, [sp, 0x44]
- ldr r6, [sp, 0x4C]
- ldr r7, [sp, 0x50]
- mov r8, r7
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x14]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x18]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x1C]
- lsls r4, 24
- lsrs r4, 24
- mov r10, r4
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- mov r9, r6
- mov r0, r8
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- cmp r4, r5
- bcs _0810FC68
-_0810FC30:
- lsls r0, r4, 3
- ldr r1, [sp, 0x48]
- adds r0, r1
- ldr r2, [r0]
- mov r0, r10
- muls r0, r4
- ldr r1, [sp, 0x1C]
- adds r0, r1, r0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- str r6, [sp, 0x10]
- adds r0, r7, 0
- ldr r1, [sp, 0x14]
- ldr r3, [sp, 0x18]
- bl sub_812E62C
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _0810FC30
-_0810FC68:
- adds r0, r7, 0
- movs r1, 0x2
- bl CopyWindowToVram
- 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_810FBE8
-
- thumb_func_start sub_810FC80
-sub_810FC80: @ 810FC80
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- mov r8, r0
- adds r6, r1, 0
- adds r4, r2, 0
- adds r5, r3, 0
- ldr r7, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- str r7, [sp, 0x8]
- mov r0, r8
- adds r1, r6, 0
- movs r3, 0
- bl PrintTextArray
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810FC80
-
- thumb_func_start AddItemMenuActionTextPrinters
-AddItemMenuActionTextPrinters: @ 810FCD0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- adds r6, r1, 0
- mov r8, r2
- ldr r1, [sp, 0x38]
- mov r9, r1
- ldr r1, [sp, 0x3C]
- ldr r2, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
- lsls r6, 24
- lsrs r6, 24
- mov r4, r8
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r7, r2, 24
- mov r0, sp
- ldrb r1, [r0, 0x10]
- strb r1, [r0, 0x4]
- strb r6, [r0, 0x5]
- adds r0, r6, 0
- movs r1, 0x5
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r5, 0xF
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- adds r0, r6, 0
- movs r1, 0x6
- bl GetFontAttribute
- mov r3, sp
- adds r1, r5, 0
- ands r1, r0
- ldrb r2, [r3, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x7
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xD]
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x4
- bl GetFontAttribute
- mov r1, sp
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- mov r0, sp
- mov r2, r9
- strb r2, [r0, 0xA]
- adds r0, r6, 0
- movs r1, 0x3
- bl GetFontAttribute
- mov r1, sp
- strb r0, [r1, 0xB]
- mov r0, sp
- mov r4, r8
- strb r4, [r0, 0x6]
- strb r4, [r0, 0x8]
- movs r4, 0
- cmp r4, r7
- bcs _0810FDCA
- mov r5, sp
-_0810FD9A:
- ldr r1, [sp, 0x48]
- adds r0, r1, r4
- ldrb r0, [r0]
- lsls r0, 3
- ldr r2, [sp, 0x44]
- adds r0, r2
- ldr r0, [r0]
- str r0, [sp]
- mov r0, r10
- muls r0, r4
- ldr r1, [sp, 0x14]
- adds r0, r1, r0
- strb r0, [r5, 0x7]
- strb r0, [r5, 0x9]
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r7
- bcc _0810FD9A
-_0810FDCA:
- ldr r0, [sp, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end AddItemMenuActionTextPrinters
-
- thumb_func_start sub_810FDE4
-sub_810FDE4: @ 810FDE4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r0
- adds r4, r1, 0
- adds r6, r2, 0
- mov r8, r3
- ldr r7, [sp, 0x30]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r4, 0
- movs r1, 0
- bl GetFontAttribute
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r4, 0
- movs r1, 0x2
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- str r6, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- str r7, [sp, 0xC]
- ldr r0, [sp, 0x34]
- str r0, [sp, 0x10]
- mov r0, r9
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0
- bl AddItemMenuActionTextPrinters
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810FDE4
-
- thumb_func_start SetWindowTemplateFields
-SetWindowTemplateFields: @ 810FE50
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r4, [sp, 0x28]
- mov r12, r4
- ldr r4, [sp, 0x2C]
- mov r9, r4
- ldr r4, [sp, 0x30]
- mov r10, r4
- ldr r7, [sp, 0x34]
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsls r3, 24
- mov r4, r9
- lsls r4, 24
- lsrs r4, 24
- mov r9, r4
- mov r4, r10
- lsls r4, 24
- mov r10, r4
- ldr r4, _0810FEF0 @ =0xffffff00
- mov r8, r4
- mov r5, r8
- ldr r4, [sp]
- ands r5, r4
- orrs r5, r1
- str r5, [sp]
- lsrs r2, 16
- ldr r6, _0810FEF4 @ =0xffff00ff
- adds r4, r6, 0
- ands r4, r5
- orrs r4, r2
- str r4, [sp]
- lsrs r3, 8
- ldr r1, _0810FEF8 @ =0xff00ffff
- ands r1, r4
- orrs r1, r3
- str r1, [sp]
- mov r2, r12
- lsls r2, 24
- mov r12, r2
- ldr r2, _0810FEFC @ =0x00ffffff
- ands r1, r2
- mov r4, r12
- orrs r4, r1
- str r4, [sp]
- ldr r1, [sp, 0x4]
- mov r2, r8
- ands r1, r2
- mov r4, r9
- orrs r1, r4
- mov r8, r1
- str r1, [sp, 0x4]
- mov r1, r10
- lsrs r1, 16
- mov r2, r8
- ands r6, r2
- orrs r6, r1
- str r6, [sp, 0x4]
- lsls r2, r7, 16
- ldr r1, _0810FF00 @ =0x0000ffff
- ands r6, r1
- orrs r6, r2
- str r6, [sp, 0x4]
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- str r1, [r0]
- str r2, [r0, 0x4]
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r2}
- bx r2
- .align 2, 0
-_0810FEF0: .4byte 0xffffff00
-_0810FEF4: .4byte 0xffff00ff
-_0810FEF8: .4byte 0xff00ffff
-_0810FEFC: .4byte 0x00ffffff
-_0810FF00: .4byte 0x0000ffff
- thumb_func_end SetWindowTemplateFields
-
- thumb_func_start sub_810FF04
-sub_810FF04: @ 810FF04
- push {r4-r6,lr}
- sub sp, 0x20
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- ldr r0, [sp, 0x30]
- ldr r1, [sp, 0x34]
- ldr r2, [sp, 0x38]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 16
- lsrs r2, 16
- str r3, [sp]
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- add r0, sp, 0x10
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl SetWindowTemplateFields
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- add r0, sp, 0x18
- bl AddWindow
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x20
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_810FF04
-
- thumb_func_start CreateYesNoMenu
-CreateYesNoMenu: @ 810FF60
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- adds r6, r1, 0
- mov r8, r2
- mov r9, r3
- ldr r4, [sp, 0x3C]
- ldr r5, [sp, 0x40]
- ldr r1, [sp, 0x44]
- mov r10, r1
- lsls r6, 24
- lsrs r6, 24
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- mov r1, r10
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- ldr r7, _0811009C @ =gUnknown_203ADF3
- bl AddWindow
- strb r0, [r7]
- ldrb r0, [r7]
- movs r1, 0x1
- adds r2, r4, 0
- adds r3, r5, 0
- bl SetWindowBorderStyle
- ldr r0, _081100A0 @ =gUnknown_841623D
- str r0, [sp, 0xC]
- add r1, sp, 0xC
- ldrb r0, [r7]
- strb r0, [r1, 0x4]
- adds r0, r1, 0
- strb r6, [r0, 0x5]
- adds r0, r6, 0
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- add r1, sp, 0xC
- add r0, r8
- strb r0, [r1, 0x6]
- adds r0, r1, 0
- mov r1, r9
- strb r1, [r0, 0x7]
- adds r1, r0, 0
- ldrb r0, [r0, 0x6]
- strb r0, [r1, 0x8]
- adds r0, r1, 0
- ldrb r0, [r0, 0x7]
- strb r0, [r1, 0x9]
- adds r0, r6, 0
- movs r1, 0x5
- bl GetFontAttribute
- add r3, sp, 0xC
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r5, 0xF
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- adds r0, r6, 0
- movs r1, 0x6
- bl GetFontAttribute
- add r3, sp, 0xC
- adds r1, r5, 0
- ands r1, r0
- ldrb r2, [r3, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x7
- bl GetFontAttribute
- add r3, sp, 0xC
- lsls r0, 4
- ldrb r2, [r3, 0xD]
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x4
- bl GetFontAttribute
- add r1, sp, 0xC
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- adds r0, r6, 0
- movs r1, 0x2
- bl GetFontAttribute
- add r1, sp, 0xC
- strb r0, [r1, 0xA]
- adds r0, r6, 0
- movs r1, 0x3
- bl GetFontAttribute
- add r1, sp, 0xC
- strb r0, [r1, 0xB]
- adds r0, r1, 0
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- adds r0, r6, 0
- movs r1, 0x1
- bl GetFontAttribute
- add r1, sp, 0xC
- ldrb r1, [r1, 0xB]
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r7]
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- mov r0, r10
- str r0, [sp, 0x8]
- adds r0, r1, 0
- adds r1, r6, 0
- mov r2, r8
- mov r3, r9
- bl ProgramAndPlaceMenuCursorOnWindow
- 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
-_0811009C: .4byte gUnknown_203ADF3
-_081100A0: .4byte gUnknown_841623D
- thumb_func_end CreateYesNoMenu
-
- thumb_func_start sub_81100A4
-sub_81100A4: @ 81100A4
- push {lr}
- sub sp, 0xC
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 24
- lsrs r3, 24
- str r2, [sp]
- str r3, [sp, 0x4]
- movs r2, 0
- str r2, [sp, 0x8]
- movs r3, 0
- bl CreateYesNoMenu
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_81100A4
-
- thumb_func_start Menu_ProcessInputNoWrapClearOnChoose
-Menu_ProcessInputNoWrapClearOnChoose: @ 81100C8
- push {r4,lr}
- bl ProcessMenuInputNoWrapAround
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _081100DE
- bl sub_81100E8
-_081100DE:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end Menu_ProcessInputNoWrapClearOnChoose
-
- thumb_func_start sub_81100E8
-sub_81100E8: @ 81100E8
- push {r4,lr}
- ldr r4, _08110100 @ =gUnknown_203ADF3
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_810F4D8
- ldrb r0, [r4]
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08110100: .4byte gUnknown_203ADF3
- thumb_func_end sub_81100E8
-
- thumb_func_start sub_8110104
-sub_8110104: @ 8110104
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, [sp, 0x40]
- ldr r5, [sp, 0x44]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- lsls r4, 24
- lsrs r6, r4, 24
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp, 0x18]
- mov r0, r9
- movs r1, 0
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- mov r0, r9
- movs r1, 0x1
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x10
- subs r1, r0
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x1C]
- movs r5, 0
- b _081101B8
-_08110164:
- movs r4, 0
- adds r1, r5, 0x1
- mov r8, r1
- cmp r4, r6
- bcs _081101B2
- ldr r1, [sp, 0x14]
- adds r0, r1, 0
- muls r0, r5
- ldr r1, [sp, 0x1C]
- adds r0, r1, r0
- lsls r0, 24
- lsrs r7, r0, 24
-_0811017C:
- adds r0, r5, 0
- muls r0, r6
- adds r0, r4
- lsls r0, 3
- ldr r1, [sp, 0x48]
- adds r0, r1
- ldr r2, [r0]
- ldr r0, [sp, 0x10]
- adds r3, r0, 0
- muls r3, r4
- add r3, r10
- lsls r3, 24
- lsrs r3, 24
- str r7, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- ldr r0, [sp, 0xC]
- mov r1, r9
- bl AddTextPrinterParameterized
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _0811017C
-_081101B2:
- mov r1, r8
- lsls r0, r1, 24
- lsrs r5, r0, 24
-_081101B8:
- ldr r0, [sp, 0x18]
- cmp r5, r0
- bcc _08110164
- ldr r0, [sp, 0xC]
- movs r1, 0x2
- bl CopyWindowToVram
- 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_8110104
-
- thumb_func_start sub_81101D8
-sub_81101D8: @ 81101D8
- 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, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- lsls r4, 24
- lsrs r6, r4, 24
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp, 0x18]
- mov r0, r10
- movs r1, 0
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r5, 0
- b _08110272
-_0811021C:
- movs r4, 0
- adds r1, r5, 0x1
- mov r8, r1
- cmp r4, r6
- bcs _0811026C
- ldr r1, [sp, 0x14]
- adds r0, r1, 0
- muls r0, r5
- lsls r0, 24
- lsrs r7, r0, 24
-_08110230:
- adds r0, r5, 0
- muls r0, r6
- adds r0, r4
- ldr r1, [sp, 0x48]
- adds r0, r1, r0
- ldrb r0, [r0]
- lsls r0, 3
- ldr r1, [sp, 0x44]
- adds r0, r1
- ldr r2, [r0]
- ldr r0, [sp, 0x10]
- adds r3, r0, 0
- muls r3, r4
- add r3, r9
- lsls r3, 24
- lsrs r3, 24
- str r7, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- ldr r0, [sp, 0xC]
- mov r1, r10
- bl AddTextPrinterParameterized
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _08110230
-_0811026C:
- mov r1, r8
- lsls r0, r1, 24
- lsrs r5, r0, 24
-_08110272:
- ldr r0, [sp, 0x18]
- cmp r5, r0
- bcc _0811021C
- ldr r0, [sp, 0xC]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81101D8
-
- thumb_func_start sub_8110290
-sub_8110290: @ 8110290
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, [sp, 0x20]
- mov r12, r4
- ldr r4, [sp, 0x24]
- mov r8, r4
- ldr r4, [sp, 0x28]
- mov r9, r4
- ldr r4, [sp, 0x2C]
- mov r10, r4
- ldr r4, [sp, 0x30]
- ldr r5, [sp, 0x34]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r7, r5, 24
- ldr r5, _081102E8 @ =gUnknown_203ADE4
- movs r6, 0
- strb r2, [r5]
- strb r3, [r5, 0x1]
- strb r6, [r5, 0x3]
- subs r4, 0x1
- strb r4, [r5, 0x4]
- strb r0, [r5, 0x5]
- strb r1, [r5, 0x6]
- mov r0, r12
- strb r0, [r5, 0x7]
- mov r4, r8
- strb r4, [r5, 0x8]
- mov r0, r9
- strb r0, [r5, 0x9]
- mov r4, r10
- strb r4, [r5, 0xA]
- cmp r7, 0
- blt _081102E4
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r7, r0
- ble _081102EC
-_081102E4:
- strb r6, [r5, 0x2]
- b _081102EE
- .align 2, 0
-_081102E8: .4byte gUnknown_203ADE4
-_081102EC:
- strb r7, [r5, 0x2]
-_081102EE:
- movs r0, 0
- movs r1, 0
- bl sub_8110450
- ldr r0, _08110308 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08110308: .4byte gUnknown_203ADE4
- thumb_func_end sub_8110290
-
- thumb_func_start sub_811030C
-sub_811030C: @ 811030C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- ldr r4, [sp, 0x38]
- ldr r5, [sp, 0x3C]
- ldr r6, [sp, 0x40]
- ldr r7, [sp, 0x44]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r7, 24
- adds r4, r7, 0
- lsrs r4, 24
- mov r9, r4
- movs r7, 0x10
- mov r10, r7
- adds r4, r5, 0
- muls r4, r6
- lsls r4, 24
- lsrs r4, 24
- mov r7, r8
- str r7, [sp]
- mov r7, r10
- str r7, [sp, 0x4]
- str r5, [sp, 0x8]
- str r6, [sp, 0xC]
- str r4, [sp, 0x10]
- mov r4, r9
- str r4, [sp, 0x14]
- bl sub_8110290
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811030C
-
- thumb_func_start sub_811037C
-sub_811037C: @ 811037C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, r1, 24
- lsrs r7, r0, 24
- ldr r5, _08110448 @ =gUnknown_203ADE4
- ldrb r0, [r5, 0x6]
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- mov r9, r0
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldrb r0, [r5, 0x6]
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldrb r0, [r5, 0x9]
- mov r10, r0
- mov r0, r8
- mov r1, r10
- bl __umodsi3
- ldrb r1, [r5, 0x7]
- adds r4, r1, 0
- muls r4, r0
- ldrb r1, [r5]
- adds r4, r1
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- mov r1, r10
- bl __udivsi3
- ldrb r1, [r5, 0x8]
- adds r3, r1, 0
- muls r3, r0
- ldrb r0, [r5, 0x1]
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r5, 0x5]
- mov r1, r9
- str r1, [sp]
- str r6, [sp, 0x4]
- movs r1, 0x11
- adds r2, r4, 0
- bl FillWindowPixelRect
- ldrb r6, [r5, 0x9]
- adds r0, r7, 0
- adds r1, r6, 0
- bl __umodsi3
- ldrb r1, [r5, 0x7]
- adds r4, r1, 0
- muls r4, r0
- ldrb r0, [r5]
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- adds r1, r6, 0
- bl __udivsi3
- ldrb r1, [r5, 0x8]
- adds r3, r1, 0
- muls r3, r0
- ldrb r1, [r5, 0x1]
- adds r3, r1
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r5, 0x5]
- ldrb r1, [r5, 0x6]
- ldr r2, _0811044C @ =gFameCheckerText_ListMenuCursor
- str r3, [sp]
- movs r3, 0
- str r3, [sp, 0x4]
- str r3, [sp, 0x8]
- adds r3, r4, 0
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08110448: .4byte gUnknown_203ADE4
-_0811044C: .4byte gFameCheckerText_ListMenuCursor
- thumb_func_end sub_811037C
-
- thumb_func_start sub_8110450
-sub_8110450: @ 8110450
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r1, _0811048C @ =gUnknown_203ADE4
- ldrb r2, [r1, 0x2]
- mov r8, r2
- lsls r0, 24
- asrs r6, r0, 24
- adds r5, r1, 0
- cmp r6, 0
- beq _081104A6
- movs r7, 0x2
- ldrsb r7, [r5, r7]
- ldrb r4, [r5, 0x9]
- adds r0, r7, 0
- adds r1, r4, 0
- bl __modsi3
- adds r0, r6
- cmp r0, 0
- bge _08110490
- adds r0, r4, 0
- adds r0, 0xFF
- add r0, r8
- b _081104A4
- .align 2, 0
-_0811048C: .4byte gUnknown_203ADE4
-_08110490:
- cmp r0, r4
- blt _081104A0
- adds r0, r7, 0
- adds r1, r4, 0
- bl __divsi3
- muls r0, r4
- b _081104A4
-_081104A0:
- mov r1, r8
- adds r0, r6, r1
-_081104A4:
- strb r0, [r5, 0x2]
-_081104A6:
- mov r2, r9
- lsls r0, r2, 24
- asrs r6, r0, 24
- cmp r6, 0
- beq _081104EA
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- ldrb r4, [r5, 0x9]
- adds r1, r4, 0
- bl __divsi3
- adds r1, r0, r6
- cmp r1, 0
- bge _081104CE
- ldrb r0, [r5, 0xA]
- subs r0, 0x1
- muls r0, r4
- ldrb r1, [r5, 0x2]
- adds r0, r1
- b _081104E8
-_081104CE:
- ldrb r0, [r5, 0xA]
- cmp r1, r0
- blt _081104E0
- subs r0, 0x1
- adds r1, r4, 0
- muls r1, r0
- ldrb r0, [r5, 0x2]
- subs r0, r1
- b _081104E8
-_081104E0:
- adds r0, r4, 0
- muls r0, r6
- ldrb r2, [r5, 0x2]
- adds r0, r2
-_081104E8:
- strb r0, [r5, 0x2]
-_081104EA:
- movs r1, 0x2
- ldrsb r1, [r5, r1]
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r1, r0
- bgt _08110500
- ldrb r1, [r5, 0x2]
- mov r0, r8
- bl sub_811037C
- b _08110504
-_08110500:
- mov r0, r8
- strb r0, [r5, 0x2]
-_08110504:
- ldrb r0, [r5, 0x2]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8110450
-
- thumb_func_start sub_8110514
-sub_8110514: @ 8110514
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- ldr r1, _0811058C @ =gUnknown_203ADE4
- ldrb r7, [r1, 0x2]
- lsls r0, 24
- asrs r4, r0, 24
- adds r5, r1, 0
- cmp r4, 0
- beq _08110548
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- ldrb r6, [r5, 0x9]
- adds r1, r6, 0
- bl __modsi3
- adds r0, r4
- cmp r0, 0
- blt _08110548
- cmp r0, r6
- bge _08110548
- adds r0, r4, r7
- strb r0, [r5, 0x2]
-_08110548:
- mov r1, r8
- lsls r0, r1, 24
- asrs r4, r0, 24
- cmp r4, 0
- beq _08110574
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- ldrb r6, [r5, 0x9]
- adds r1, r6, 0
- bl __divsi3
- adds r0, r4
- cmp r0, 0
- blt _08110574
- ldrb r1, [r5, 0xA]
- cmp r0, r1
- bge _08110574
- adds r0, r6, 0
- muls r0, r4
- ldrb r1, [r5, 0x2]
- adds r0, r1
- strb r0, [r5, 0x2]
-_08110574:
- movs r1, 0x2
- ldrsb r1, [r5, r1]
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r1, r0
- bgt _08110590
- ldrb r1, [r5, 0x2]
- adds r0, r7, 0
- bl sub_811037C
- b _08110592
- .align 2, 0
-_0811058C: .4byte gUnknown_203ADE4
-_08110590:
- strb r7, [r5, 0x2]
-_08110592:
- ldrb r0, [r5, 0x2]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8110514
-
- thumb_func_start sub_81105A0
-sub_81105A0: @ 81105A0
- push {r4,lr}
- ldr r4, _081105C0 @ =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081105C8
- movs r0, 0x5
- bl PlaySE
- ldr r0, _081105C4 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- b _08110648
- .align 2, 0
-_081105C0: .4byte gMain
-_081105C4: .4byte gUnknown_203ADE4
-_081105C8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081105D6
- movs r0, 0x1
- negs r0, r0
- b _08110648
-_081105D6:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081105EC
- movs r0, 0x5
- bl PlaySE
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _08110640
-_081105EC:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08110600
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0x1
- b _08110640
-_08110600:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _08110614
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08110620
-_08110614:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _0811063E
-_08110620:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08110636
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08110644
-_08110636:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_0811063E:
- movs r1, 0
-_08110640:
- bl sub_8110450
-_08110644:
- movs r0, 0x2
- negs r0, r0
-_08110648:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81105A0
-
- thumb_func_start sub_8110650
-sub_8110650: @ 8110650
- push {r4-r6,lr}
- ldr r5, _08110670 @ =gUnknown_203ADE4
- ldrb r4, [r5, 0x2]
- ldr r6, _08110674 @ =gMain
- ldrh r1, [r6, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08110678
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- b _081106EE
- .align 2, 0
-_08110670: .4byte gUnknown_203ADE4
-_08110674: .4byte gMain
-_08110678:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08110686
- movs r0, 0x1
- negs r0, r0
- b _081106EE
-_08110686:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08110696
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _081106D8
-_08110696:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081106A4
- movs r0, 0
- movs r1, 0x1
- b _081106D8
-_081106A4:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _081106B8
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081106BE
-_081106B8:
- movs r0, 0x1
- negs r0, r0
- b _081106D6
-_081106BE:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081106D4
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _081106EA
-_081106D4:
- movs r0, 0x1
-_081106D6:
- movs r1, 0
-_081106D8:
- bl sub_8110514
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _081106EA
- movs r0, 0x5
- bl PlaySE
-_081106EA:
- movs r0, 0x2
- negs r0, r0
-_081106EE:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8110650
-
- thumb_func_start sub_81106F4
-sub_81106F4: @ 81106F4
- push {r4,r5,lr}
- ldr r4, _08110714 @ =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811071C
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08110718 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- b _08110798
- .align 2, 0
-_08110714: .4byte gMain
-_08110718: .4byte gUnknown_203ADE4
-_0811071C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0811072A
- movs r0, 0x1
- negs r0, r0
- b _08110798
-_0811072A:
- ldrh r0, [r4, 0x30]
- movs r5, 0xF0
- adds r1, r5, 0
- ands r1, r0
- cmp r1, 0x40
- bne _08110744
- movs r0, 0x5
- bl PlaySE
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _08110790
-_08110744:
- cmp r1, 0x80
- bne _08110754
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0x1
- b _08110790
-_08110754:
- cmp r1, 0x20
- beq _08110764
- bl sub_80BF66C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08110770
-_08110764:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _0811078E
-_08110770:
- ldrh r1, [r4, 0x30]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0x10
- beq _08110786
- bl sub_80BF66C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08110794
-_08110786:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_0811078E:
- movs r1, 0
-_08110790:
- bl sub_8110450
-_08110794:
- movs r0, 0x2
- negs r0, r0
-_08110798:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81106F4
-
- thumb_func_start sub_81107A0
-sub_81107A0: @ 81107A0
- push {r4-r6,lr}
- ldr r6, _081107C0 @ =gUnknown_203ADE4
- ldrb r4, [r6, 0x2]
- ldr r5, _081107C4 @ =gMain
- ldrh r1, [r5, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081107C8
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x2
- ldrsb r0, [r6, r0]
- b _0811083A
- .align 2, 0
-_081107C0: .4byte gUnknown_203ADE4
-_081107C4: .4byte gMain
-_081107C8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081107D6
- movs r0, 0x1
- negs r0, r0
- b _0811083A
-_081107D6:
- ldrh r0, [r5, 0x30]
- movs r6, 0xF0
- adds r1, r6, 0
- ands r1, r0
- cmp r1, 0x40
- bne _081107EA
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _08110824
-_081107EA:
- cmp r1, 0x80
- bne _081107F4
- movs r0, 0
- movs r1, 0x1
- b _08110824
-_081107F4:
- cmp r1, 0x20
- beq _08110804
- bl sub_80BF66C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0811080A
-_08110804:
- movs r0, 0x1
- negs r0, r0
- b _08110822
-_0811080A:
- ldrh r1, [r5, 0x30]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0x10
- beq _08110820
- bl sub_80BF66C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08110836
-_08110820:
- movs r0, 0x1
-_08110822:
- movs r1, 0
-_08110824:
- bl sub_8110514
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _08110836
- movs r0, 0x5
- bl PlaySE
-_08110836:
- movs r0, 0x2
- negs r0, r0
-_0811083A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81107A0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s
deleted file mode 100644
index 792bed5cf..000000000
--- a/asm/menu_helpers.s
+++ /dev/null
@@ -1,628 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start DisplayMessageAndContinueTask
-DisplayMessageAndContinueTask: @ 80BF474
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- ldr r4, [sp, 0x28]
- ldr r5, [sp, 0x2C]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- adds r6, r1, 0
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r7, r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _080BF500 @ =gUnknown_20399D0
- strb r6, [r0]
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_810EDC4
- ldr r4, _080BF504 @ =gStringVar4
- ldr r0, [sp, 0x30]
- cmp r0, r4
- beq _080BF4B8
- adds r0, r4, 0
- ldr r1, [sp, 0x30]
- bl StringExpandPlaceholders
-_080BF4B8:
- ldr r2, _080BF508 @ =gTextFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- adds r0, r6, 0
- adds r1, r7, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl AddTextPrinterParametrized
- ldr r1, _080BF50C @ =gUnknown_20399CC
- ldr r0, [sp, 0x34]
- str r0, [r1]
- ldr r1, _080BF510 @ =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BF514 @ =Task_ContinueTaskAfterMessagePrints
- str r1, [r0]
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF500: .4byte gUnknown_20399D0
-_080BF504: .4byte gStringVar4
-_080BF508: .4byte gTextFlags
-_080BF50C: .4byte gUnknown_20399CC
-_080BF510: .4byte gTasks
-_080BF514: .4byte Task_ContinueTaskAfterMessagePrints
- thumb_func_end DisplayMessageAndContinueTask
-
- thumb_func_start sub_80BF518
-sub_80BF518: @ 80BF518
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl RunTextPrinters
- adds r0, r4, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BF518
-
- thumb_func_start Task_ContinueTaskAfterMessagePrints
-Task_ContinueTaskAfterMessagePrints: @ 80BF534
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080BF558 @ =gUnknown_20399D0
- ldrb r0, [r0]
- bl sub_80BF518
- lsls r0, 16
- cmp r0, 0
- bne _080BF552
- ldr r0, _080BF55C @ =gUnknown_20399CC
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
-_080BF552:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF558: .4byte gUnknown_20399D0
-_080BF55C: .4byte gUnknown_20399CC
- thumb_func_end Task_ContinueTaskAfterMessagePrints
-
- thumb_func_start sub_80BF560
-sub_80BF560: @ 80BF560
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _080BF586
- cmp r1, 0
- bgt _080BF580
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080BF5A8
- b _080BF5C0
-_080BF580:
- cmp r1, 0x1
- beq _080BF5A8
- b _080BF5C0
-_080BF586:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _080BF5A0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BF5A4 @ =gUnknown_20399C8
- ldr r1, [r1]
- ldr r1, [r1]
- b _080BF5BE
- .align 2, 0
-_080BF5A0: .4byte gTasks
-_080BF5A4: .4byte gUnknown_20399C8
-_080BF5A8:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _080BF5C8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BF5CC @ =gUnknown_20399C8
- ldr r1, [r1]
- ldr r1, [r1, 0x4]
-_080BF5BE:
- str r1, [r0]
-_080BF5C0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF5C8: .4byte gTasks
-_080BF5CC: .4byte gUnknown_20399C8
- thumb_func_end sub_80BF560
-
- thumb_func_start CreateYesNoMenuWithCallbacks
-CreateYesNoMenuWithCallbacks: @ 80BF5D0
- push {r4-r7,lr}
- sub sp, 0xC
- adds r6, r0, 0
- adds r0, r1, 0
- adds r1, r2, 0
- adds r2, r3, 0
- ldr r3, [sp, 0x20]
- ldr r4, [sp, 0x24]
- ldr r5, [sp, 0x28]
- ldr r7, [sp, 0x2C]
- lsls r6, 24
- lsrs r6, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r4, 0
- str r4, [sp, 0x8]
- bl CreateYesNoMenu
- ldr r0, _080BF624 @ =gUnknown_20399C8
- str r7, [r0]
- ldr r1, _080BF628 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BF62C @ =sub_80BF560
- str r1, [r0]
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF624: .4byte gUnknown_20399C8
-_080BF628: .4byte gTasks
-_080BF62C: .4byte sub_80BF560
- thumb_func_end CreateYesNoMenuWithCallbacks
-
- thumb_func_start GetLRKeysState
-GetLRKeysState: @ 80BF630
- push {lr}
- ldr r0, _080BF650 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _080BF666
- ldr r0, _080BF654 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _080BF658
- movs r0, 0x1
- b _080BF668
- .align 2, 0
-_080BF650: .4byte gSaveBlock2Ptr
-_080BF654: .4byte gMain
-_080BF658:
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080BF666
- movs r0, 0x2
- b _080BF668
-_080BF666:
- movs r0, 0
-_080BF668:
- pop {r1}
- bx r1
- thumb_func_end GetLRKeysState
-
- thumb_func_start sub_80BF66C
-sub_80BF66C: @ 80BF66C
- push {lr}
- ldr r0, _080BF68C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _080BF6A2
- ldr r0, _080BF690 @ =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _080BF694
- movs r0, 0x1
- b _080BF6A4
- .align 2, 0
-_080BF68C: .4byte gSaveBlock2Ptr
-_080BF690: .4byte gMain
-_080BF694:
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080BF6A2
- movs r0, 0x2
- b _080BF6A4
-_080BF6A2:
- movs r0, 0
-_080BF6A4:
- pop {r1}
- bx r1
- thumb_func_end sub_80BF66C
-
- thumb_func_start sub_80BF6A8
-sub_80BF6A8: @ 80BF6A8
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _080BF6D0
- ldr r0, _080BF6CC @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- beq _080BF6C8
- bl InUnionRoom
- cmp r0, 0x1
- bne _080BF6D0
-_080BF6C8:
- movs r0, 0
- b _080BF6D2
- .align 2, 0
-_080BF6CC: .4byte gSaveBlock1Ptr
-_080BF6D0:
- movs r0, 0x1
-_080BF6D2:
- pop {r1}
- bx r1
- thumb_func_end sub_80BF6A8
-
- thumb_func_start itemid_80BF6D8_mail_related
-itemid_80BF6D8_mail_related: @ 80BF6D8
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- bl is_c1_link_related_active
- cmp r0, 0x1
- beq _080BF6EE
- bl InUnionRoom
- cmp r0, 0x1
- bne _080BF700
-_080BF6EE:
- adds r0, r4, 0
- bl itemid_is_mail
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080BF700
- movs r0, 0
- b _080BF702
-_080BF700:
- movs r0, 0x1
-_080BF702:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end itemid_80BF6D8_mail_related
-
- thumb_func_start sub_80BF708
-sub_80BF708: @ 80BF708
- push {lr}
- bl is_c1_link_related_active
- cmp r0, 0x1
- beq _080BF71A
- ldr r0, _080BF720 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080BF724
-_080BF71A:
- movs r0, 0x1
- b _080BF726
- .align 2, 0
-_080BF720: .4byte gReceivedRemoteLinkPlayers
-_080BF724:
- movs r0, 0
-_080BF726:
- pop {r1}
- bx r1
- thumb_func_end sub_80BF708
-
- thumb_func_start sub_80BF72C
-sub_80BF72C: @ 80BF72C
- push {lr}
- bl sub_80BF708
- lsls r0, 24
- cmp r0, 0
- beq _080BF742
- bl sub_8058244
- lsls r0, 24
- lsrs r0, 24
- b _080BF744
-_080BF742:
- movs r0, 0
-_080BF744:
- pop {r1}
- bx r1
- thumb_func_end sub_80BF72C
-
- thumb_func_start sub_80BF748
-sub_80BF748: @ 80BF748
- push {lr}
- bl sub_80BF72C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BF75E
- bl sub_800B270
- cmp r0, 0x1
- bne _080BF762
-_080BF75E:
- movs r0, 0x1
- b _080BF764
-_080BF762:
- movs r0, 0
-_080BF764:
- pop {r1}
- bx r1
- thumb_func_end sub_80BF748
-
- thumb_func_start sub_80BF768
-sub_80BF768: @ 80BF768
- push {lr}
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- pop {r0}
- bx r0
- thumb_func_end sub_80BF768
-
- thumb_func_start sub_80BF77C
-sub_80BF77C: @ 80BF77C
- push {r4,lr}
- sub sp, 0xC
- bl sub_80BF7C8
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, _080BF7BC @ =0x0100c000
- mov r0, sp
- bl CpuSet
- movs r4, 0
- str r4, [sp, 0x4]
- add r0, sp, 0x4
- movs r1, 0xE0
- lsls r1, 19
- ldr r2, _080BF7C0 @ =0x05000100
- bl CpuSet
- add r0, sp, 0x8
- strh r4, [r0]
- movs r1, 0xA0
- lsls r1, 19
- ldr r2, _080BF7C4 @ =0x01000200
- bl CpuSet
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF7BC: .4byte 0x0100c000
-_080BF7C0: .4byte 0x05000100
-_080BF7C4: .4byte 0x01000200
- thumb_func_end sub_80BF77C
-
- thumb_func_start sub_80BF7C8
-sub_80BF7C8: @ 80BF7C8
- push {lr}
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xE
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xC
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xA
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x8
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- pop {r0}
- bx r0
- thumb_func_end sub_80BF7C8
-
- thumb_func_start sub_80BF848
-sub_80BF848: @ 80BF848
- push {r4-r6,lr}
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r5, r1, 0
- ldrh r4, [r2]
- adds r6, r4, 0
- ldr r0, _080BF87C @ =gMain
- ldrh r0, [r0, 0x30]
- movs r3, 0xF0
- ands r3, r0
- cmp r3, 0x40
- bne _080BF880
- adds r0, r4, 0x1
- strh r0, [r2]
- movs r3, 0
- ldrsh r0, [r2, r3]
- cmp r0, r1
- ble _080BF872
- movs r0, 0x1
- strh r0, [r2]
-_080BF872:
- movs r0, 0
- ldrsh r1, [r2, r0]
-_080BF876:
- lsls r0, r4, 16
- b _080BF8CA
- .align 2, 0
-_080BF87C: .4byte gMain
-_080BF880:
- cmp r3, 0x80
- bne _080BF896
- subs r0, r4, 0x1
- strh r0, [r2]
- lsls r0, 16
- cmp r0, 0
- bgt _080BF890
- strh r1, [r2]
-_080BF890:
- movs r3, 0
- ldrsh r1, [r2, r3]
- b _080BF876
-_080BF896:
- cmp r3, 0x10
- bne _080BF8B0
- adds r0, r4, 0
- adds r0, 0xA
- strh r0, [r2]
- movs r1, 0
- ldrsh r0, [r2, r1]
- cmp r0, r5
- ble _080BF8AA
- strh r5, [r2]
-_080BF8AA:
- movs r3, 0
- ldrsh r1, [r2, r3]
- b _080BF876
-_080BF8B0:
- cmp r3, 0x20
- bne _080BF8DA
- adds r0, r4, 0
- subs r0, 0xA
- strh r0, [r2]
- lsls r0, 16
- cmp r0, 0
- bgt _080BF8C4
- movs r0, 0x1
- strh r0, [r2]
-_080BF8C4:
- movs r0, 0
- ldrsh r1, [r2, r0]
- lsls r0, r6, 16
-_080BF8CA:
- asrs r0, 16
- cmp r1, r0
- beq _080BF8DA
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- b _080BF8DC
-_080BF8DA:
- movs r0, 0
-_080BF8DC:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80BF848
-
- thumb_func_start sub_80BF8E4
-sub_80BF8E4: @ 80BF8E4
- push {lr}
- bl sub_80CBE00
- lsls r0, 24
- cmp r0, 0
- beq _080BF8F4
- movs r0, 0x5
- b _080BF8F6
-_080BF8F4:
- movs r0, 0x4
-_080BF8F6:
- pop {r1}
- bx r1
- thumb_func_end sub_80BF8E4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/menu_indicators.s b/asm/menu_indicators.s
deleted file mode 100644
index 5ae7a46c4..000000000
--- a/asm/menu_indicators.s
+++ /dev/null
@@ -1,1185 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8133904
-sub_8133904: @ 8133904
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08133916
- cmp r0, 0x1
- beq _0813392A
- b _08133984
-_08133916:
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _08133984
-_0813392A:
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0813393A
- cmp r0, 0x1
- beq _08133960
- ldrh r2, [r4, 0x38]
- b _0813397E
-_0813393A:
- movs r0, 0x34
- ldrsh r3, [r4, r0]
- ldr r1, _0813395C @ =gSineTable
- ldrh r2, [r4, 0x38]
- lsls r0, r2, 24
- lsrs r0, 23
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- muls r0, r3
- cmp r0, 0
- bge _08133954
- adds r0, 0xFF
-_08133954:
- asrs r0, 8
- strh r0, [r4, 0x24]
- b _0813397E
- .align 2, 0
-_0813395C: .4byte gSineTable
-_08133960:
- movs r0, 0x34
- ldrsh r3, [r4, r0]
- ldr r1, _0813398C @ =gSineTable
- ldrh r2, [r4, 0x38]
- lsls r0, r2, 24
- lsrs r0, 23
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- muls r0, r3
- cmp r0, 0
- bge _0813397A
- adds r0, 0xFF
-_0813397A:
- asrs r0, 8
- strh r0, [r4, 0x26]
-_0813397E:
- ldrh r0, [r4, 0x36]
- adds r0, r2, r0
- strh r0, [r4, 0x38]
-_08133984:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813398C: .4byte gSineTable
- thumb_func_end sub_8133904
-
- thumb_func_start AddScrollIndicatorArrowObject
-AddScrollIndicatorArrowObject: @ 8133990
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x18
- adds r6, r0, 0
- ldr r5, [sp, 0x30]
- lsls r6, 24
- lsrs r6, 24
- mov r8, r6
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r5, 16
- lsrs r5, 16
- mov r12, r5
- mov r4, sp
- ldr r0, _08133A14 @ =gUnknown_84632A4
- ldm r0!, {r5-r7}
- stm r4!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r4!, {r5-r7}
- mov r0, sp
- movs r4, 0
- strh r3, [r0]
- mov r3, r12
- strh r3, [r0, 0x2]
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08133A18 @ =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r3, r1
- adds r5, r3, 0
- adds r5, 0x3E
- ldrb r1, [r5]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r5]
- strh r4, [r3, 0x2E]
- ldr r1, _08133A1C @ =gUnknown_846325C
- mov r5, r8
- lsls r6, r5, 2
- adds r6, r1
- ldrb r2, [r6]
- lsls r1, r2, 28
- lsrs r1, 28
- strh r1, [r3, 0x30]
- lsrs r2, 4
- strh r2, [r3, 0x32]
- ldrb r1, [r6, 0x1]
- strh r1, [r3, 0x34]
- ldrh r1, [r6, 0x2]
- strh r1, [r3, 0x36]
- strh r4, [r3, 0x38]
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08133A14: .4byte gUnknown_84632A4
-_08133A18: .4byte gSprites
-_08133A1C: .4byte gUnknown_846325C
- thumb_func_end AddScrollIndicatorArrowObject
-
- thumb_func_start AddScrollIndicatorArrowPair
-AddScrollIndicatorArrowPair: @ 8133A20
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- adds r6, r0, 0
- mov r9, r1
- ldr r0, _08133A6C @ =gUnknown_8463328
- str r0, [sp, 0x4]
- ldr r5, _08133A70 @ =0xffff0000
- ldr r0, [sp, 0x8]
- ands r0, r5
- movs r1, 0x80
- lsls r1, 1
- orrs r0, r1
- ldrh r1, [r6, 0xA]
- lsls r1, 16
- ldr r4, _08133A74 @ =0x0000ffff
- ands r0, r4
- orrs r0, r1
- str r0, [sp, 0x8]
- add r0, sp, 0x4
- bl LoadCompressedObjectPic
- ldrh r2, [r6, 0xC]
- cmp r2, r4
- bne _08133A7C
- ldr r0, _08133A78 @ =gUnknown_8463308
- ldrb r1, [r6, 0xE]
- lsls r1, 20
- movs r2, 0x80
- lsls r2, 17
- adds r1, r2
- lsrs r1, 16
- movs r2, 0x20
- bl LoadPalette
- b _08133A8E
- .align 2, 0
-_08133A6C: .4byte gUnknown_8463328
-_08133A70: .4byte 0xffff0000
-_08133A74: .4byte 0x0000ffff
-_08133A78: .4byte gUnknown_8463308
-_08133A7C:
- ldr r0, _08133B2C @ =gUnknown_8463308
- str r0, [sp, 0xC]
- add r0, sp, 0xC
- ldr r1, [r0, 0x4]
- ands r1, r5
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadSpritePalette
-_08133A8E:
- ldr r0, _08133B30 @ =sub_8133BA4
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, _08133B34 @ =gTasks+0x8
- adds r7, r0, r1
- movs r0, 0
- strb r0, [r7]
- mov r0, r9
- str r0, [r7, 0x4]
- ldrh r0, [r6, 0x6]
- strh r0, [r7, 0x8]
- ldrh r0, [r6, 0x8]
- strh r0, [r7, 0xA]
- ldrh r0, [r6, 0xA]
- strh r0, [r7, 0xE]
- ldrh r0, [r6, 0xC]
- strh r0, [r7, 0x10]
- ldrb r0, [r6]
- ldrb r1, [r6, 0x1]
- ldrb r2, [r6, 0x2]
- ldrh r3, [r6, 0xA]
- ldrh r4, [r6, 0xC]
- str r4, [sp]
- bl AddScrollIndicatorArrowObject
- strb r0, [r7, 0xC]
- ldrb r0, [r6, 0x3]
- ldrb r1, [r6, 0x4]
- ldrb r2, [r6, 0x5]
- ldrh r3, [r6, 0xA]
- ldrh r4, [r6, 0xC]
- str r4, [sp]
- bl AddScrollIndicatorArrowObject
- strb r0, [r7, 0xD]
- ldrh r1, [r6, 0xC]
- ldr r0, _08133B38 @ =0x0000ffff
- cmp r1, r0
- bne _08133B1C
- ldr r5, _08133B3C @ =gSprites
- ldrb r0, [r7, 0xC]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r3, [r6, 0xE]
- lsls r3, 4
- ldrb r4, [r1, 0x5]
- movs r2, 0xF
- adds r0, r2, 0
- ands r0, r4
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r7, 0xD]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r6, 0xE]
- lsls r1, 4
- ldrb r3, [r0, 0x5]
- ands r2, r3
- orrs r2, r1
- strb r2, [r0, 0x5]
-_08133B1C:
- mov r0, r8
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08133B2C: .4byte gUnknown_8463308
-_08133B30: .4byte sub_8133BA4
-_08133B34: .4byte gTasks+0x8
-_08133B38: .4byte 0x0000ffff
-_08133B3C: .4byte gSprites
- thumb_func_end AddScrollIndicatorArrowPair
-
- thumb_func_start AddScrollIndicatorArrowPairParametrized
-AddScrollIndicatorArrowPairParametrized: @ 8133B40
- push {r4,lr}
- adds r4, r1, 0
- subs r0, 0x2
- cmp r0, 0x1
- bhi _08133B64
- ldr r0, _08133B60 @ =gUnknown_203B130
- movs r1, 0x2
- strb r1, [r0]
- strb r4, [r0, 0x1]
- strb r2, [r0, 0x2]
- movs r1, 0x3
- strb r1, [r0, 0x3]
- strb r4, [r0, 0x4]
- strb r3, [r0, 0x5]
- b _08133B76
- .align 2, 0
-_08133B60: .4byte gUnknown_203B130
-_08133B64:
- ldr r0, _08133BA0 @ =gUnknown_203B130
- movs r1, 0
- strb r1, [r0]
- strb r2, [r0, 0x1]
- strb r4, [r0, 0x2]
- movs r1, 0x1
- strb r1, [r0, 0x3]
- strb r3, [r0, 0x4]
- strb r4, [r0, 0x5]
-_08133B76:
- adds r2, r0, 0
- movs r1, 0
- movs r0, 0
- strh r0, [r2, 0x6]
- ldr r0, [sp, 0x8]
- strh r0, [r2, 0x8]
- ldr r0, [sp, 0xC]
- strh r0, [r2, 0xA]
- ldr r0, [sp, 0x10]
- strh r0, [r2, 0xC]
- strb r1, [r2, 0xE]
- adds r0, r2, 0
- ldr r1, [sp, 0x14]
- bl AddScrollIndicatorArrowPair
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08133BA0: .4byte gUnknown_203B130
- thumb_func_end AddScrollIndicatorArrowPairParametrized
-
- thumb_func_start sub_8133BA4
-sub_8133BA4: @ 8133BA4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08133BD4 @ =gTasks+0x8
- adds r4, r1, r0
- ldr r0, [r4, 0x4]
- ldrh r5, [r0]
- ldrh r0, [r4, 0x8]
- cmp r5, r0
- bne _08133BDC
- ldr r3, _08133BD8 @ =gSprites
- ldrb r1, [r4, 0xC]
- 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
- b _08133BF2
- .align 2, 0
-_08133BD4: .4byte gTasks+0x8
-_08133BD8: .4byte gSprites
-_08133BDC:
- ldr r3, _08133C10 @ =gSprites
- ldrb r1, [r4, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
-_08133BF2:
- strb r1, [r0]
- ldrh r0, [r4, 0xA]
- cmp r5, r0
- bne _08133C14
- ldrb r1, [r4, 0xD]
- 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
- b _08133C28
- .align 2, 0
-_08133C10: .4byte gSprites
-_08133C14:
- ldrb r1, [r4, 0xD]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
-_08133C28:
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8133BA4
-
- thumb_func_start RemoveScrollIndicatorArrowPair
-RemoveScrollIndicatorArrowPair: @ 8133C30
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _08133C84 @ =gTasks+0x8
- adds r5, r0, r1
- ldrh r0, [r5, 0xE]
- ldr r4, _08133C88 @ =0x0000ffff
- cmp r0, r4
- beq _08133C4E
- bl FreeSpriteTilesByTag
-_08133C4E:
- ldrh r0, [r5, 0x10]
- cmp r0, r4
- beq _08133C58
- bl FreeSpritePaletteByTag
-_08133C58:
- ldrb r1, [r5, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08133C8C @ =gSprites
- adds r0, r4
- bl DestroySprite
- ldrb r1, [r5, 0xD]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- adds r0, r6, 0
- bl DestroyTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08133C84: .4byte gTasks+0x8
-_08133C88: .4byte 0x0000ffff
-_08133C8C: .4byte gSprites
- thumb_func_end RemoveScrollIndicatorArrowPair
-
- thumb_func_start ListMenuAddCursorObjectInternal
-ListMenuAddCursorObjectInternal: @ 8133C90
- push {lr}
- cmp r1, 0
- beq _08133C9A
- cmp r1, 0x1
- beq _08133CA0
-_08133C9A:
- bl ListMenuAddRedOutlineCursorObject
- b _08133CA4
-_08133CA0:
- bl ListMenuAddRedArrowCursorObject
-_08133CA4:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end ListMenuAddCursorObjectInternal
-
- thumb_func_start ListMenuUpdateCursorObject
-ListMenuUpdateCursorObject: @ 8133CAC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- cmp r3, 0
- beq _08133CC4
- cmp r3, 0x1
- beq _08133CCA
- b _08133CCE
-_08133CC4:
- bl ListMenuUpdateRedOutlineCursorObject
- b _08133CCE
-_08133CCA:
- bl ListMenuUpdateRedArrowCursorObject
-_08133CCE:
- pop {r0}
- bx r0
- thumb_func_end ListMenuUpdateCursorObject
-
- thumb_func_start ListMenuRemoveCursorObject
-ListMenuRemoveCursorObject: @ 8133CD4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r1, 0
- beq _08133CE4
- cmp r1, 0x1
- beq _08133CEA
- b _08133CEE
-_08133CE4:
- bl ListMenuRemoveRedOutlineCursorObject
- b _08133CEE
-_08133CEA:
- bl ListMenuRemoveRedArrowCursorObject
-_08133CEE:
- pop {r0}
- bx r0
- thumb_func_end ListMenuRemoveCursorObject
-
- thumb_func_start nullsub_94
-nullsub_94: @ 8133CF4
- bx lr
- thumb_func_end nullsub_94
-
- thumb_func_start ListMenuGetRedOutlineCursorSpriteCount
-ListMenuGetRedOutlineCursorSpriteCount: @ 8133CF8
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- movs r3, 0x4
- cmp r0, 0x10
- bls _08133D18
- movs r2, 0x8
- subs r0, 0x8
- cmp r2, r0
- bge _08133D18
-_08133D10:
- adds r3, 0x2
- adds r2, 0x8
- cmp r2, r0
- blt _08133D10
-_08133D18:
- cmp r1, 0x10
- bls _08133D2C
- movs r2, 0x8
- subs r1, 0x8
- cmp r2, r1
- bge _08133D2C
-_08133D24:
- adds r3, 0x2
- adds r2, 0x8
- cmp r2, r1
- blt _08133D24
-_08133D2C:
- lsls r0, r3, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end ListMenuGetRedOutlineCursorSpriteCount
-
- thumb_func_start ListMenuSetUpRedOutlineCursorSpriteOamTable
-ListMenuSetUpRedOutlineCursorSpriteOamTable: @ 8133D34
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r3, r2, 0
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- ldr r0, _08133E18 @ =gUnknown_84632BC
- ldr r0, [r0]
- str r0, [r3]
- movs r1, 0x88
- strb r1, [r3]
- strb r1, [r3, 0x1]
- ldr r0, _08133E1C @ =gUnknown_84632C0
- ldr r0, [r0]
- str r0, [r3, 0x4]
- mov r2, r8
- adds r2, 0x80
- strb r2, [r3, 0x4]
- strb r1, [r3, 0x5]
- ldr r0, _08133E20 @ =gUnknown_84632D4
- ldr r0, [r0]
- str r0, [r3, 0x8]
- strb r1, [r3, 0x8]
- mov r4, r9
- adds r4, 0x80
- strb r4, [r3, 0x9]
- ldr r0, _08133E24 @ =gUnknown_84632D8
- ldr r0, [r0]
- str r0, [r3, 0xC]
- strb r2, [r3, 0xC]
- strb r4, [r3, 0xD]
- movs r0, 0x4
- mov r12, r0
- mov r2, r8
- cmp r2, 0x10
- bls _08133DC8
- movs r2, 0x8
- mov r5, r8
- subs r5, 0x8
- cmp r2, r5
- bge _08133DC8
- ldr r0, _08133E28 @ =gUnknown_84632C4
- ldr r0, [r0]
- str r0, [sp]
- ldr r0, _08133E2C @ =gUnknown_84632D0
- ldr r6, [r0]
- adds r1, r3, 0
- adds r1, 0x10
- movs r7, 0x88
- mov r10, r7
-_08133DA6:
- ldr r0, [sp]
- str r0, [r1]
- adds r0, r2, 0
- subs r0, 0x78
- strb r0, [r1]
- mov r7, r10
- strb r7, [r1, 0x1]
- adds r1, 0x4
- str r6, [r1]
- strb r0, [r1]
- strb r4, [r1, 0x1]
- adds r1, 0x4
- movs r0, 0x2
- add r12, r0
- adds r2, 0x8
- cmp r2, r5
- blt _08133DA6
-_08133DC8:
- mov r2, r9
- cmp r2, 0x10
- bls _08133E06
- movs r1, 0x8
- mov r4, r9
- subs r4, 0x8
- cmp r1, r4
- bge _08133E06
- ldr r0, _08133E30 @ =gUnknown_84632C8
- ldr r6, [r0]
- ldr r0, _08133E34 @ =gUnknown_84632CC
- ldr r5, [r0]
- mov r7, r12
- lsls r0, r7, 2
- adds r2, r0, r3
- movs r7, 0x88
- mov r3, r8
- adds r3, 0x80
-_08133DEC:
- str r6, [r2]
- strb r7, [r2]
- adds r0, r1, 0
- subs r0, 0x78
- strb r0, [r2, 0x1]
- adds r2, 0x4
- str r5, [r2]
- strb r3, [r2]
- strb r0, [r2, 0x1]
- adds r2, 0x4
- adds r1, 0x8
- cmp r1, r4
- blt _08133DEC
-_08133E06:
- 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
-_08133E18: .4byte gUnknown_84632BC
-_08133E1C: .4byte gUnknown_84632C0
-_08133E20: .4byte gUnknown_84632D4
-_08133E24: .4byte gUnknown_84632D8
-_08133E28: .4byte gUnknown_84632C4
-_08133E2C: .4byte gUnknown_84632D0
-_08133E30: .4byte gUnknown_84632C8
-_08133E34: .4byte gUnknown_84632CC
- thumb_func_end ListMenuSetUpRedOutlineCursorSpriteOamTable
-
- thumb_func_start ListMenuAddRedOutlineCursorObject
-ListMenuAddRedOutlineCursorObject: @ 8133E38
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x28
- adds r6, r0, 0
- ldr r0, _08133E84 @ =gUnknown_8463398
- str r0, [sp, 0x18]
- ldr r5, _08133E88 @ =0xffff0000
- add r0, sp, 0x18
- ldr r1, [r0, 0x4]
- ands r1, r5
- movs r2, 0x80
- lsls r2, 1
- orrs r1, r2
- ldrh r2, [r6, 0x6]
- lsls r2, 16
- ldr r3, _08133E8C @ =0x0000ffff
- ands r1, r3
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadCompressedObjectPic
- ldrh r2, [r6, 0x8]
- ldr r7, _08133E8C @ =0x0000ffff
- cmp r2, r7
- bne _08133E94
- ldr r0, _08133E90 @ =gUnknown_8463308
- ldrb r1, [r6, 0xA]
- lsls r1, 20
- movs r2, 0x80
- lsls r2, 17
- adds r1, r2
- lsrs r1, 16
- movs r2, 0x20
- bl LoadPalette
- b _08133EA6
- .align 2, 0
-_08133E84: .4byte gUnknown_8463398
-_08133E88: .4byte 0xffff0000
-_08133E8C: .4byte 0x0000ffff
-_08133E90: .4byte gUnknown_8463308
-_08133E94:
- ldr r0, _08133F8C @ =gUnknown_8463308
- str r0, [sp, 0x20]
- add r0, sp, 0x20
- ldr r1, [r0, 0x4]
- ands r1, r5
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadSpritePalette
-_08133EA6:
- ldr r0, _08133F90 @ =nullsub_94
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08133F94 @ =gTasks+0x8
- adds r5, r0, r1
- ldrh r0, [r6, 0x6]
- movs r3, 0
- mov r8, r3
- strh r0, [r5, 0xE]
- ldrh r0, [r6, 0x8]
- strh r0, [r5, 0x10]
- ldrh r0, [r6, 0x2]
- ldrh r1, [r6, 0x4]
- bl ListMenuGetRedOutlineCursorSpriteCount
- strb r0, [r5]
- ldrb r0, [r5]
- lsls r0, 2
- bl Alloc
- adds r2, r0, 0
- str r2, [r5, 0x8]
- str r2, [r5, 0x4]
- ldrh r0, [r6, 0x2]
- ldrh r1, [r6, 0x4]
- bl ListMenuSetUpRedOutlineCursorSpriteOamTable
- mov r1, sp
- ldr r0, _08133F98 @ =gDummySpriteTemplate
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- mov r1, sp
- ldrh r0, [r6, 0x6]
- strh r0, [r1]
- ldrh r0, [r6, 0x8]
- strh r0, [r1, 0x2]
- ldrb r1, [r6]
- adds r1, 0x78
- ldrb r2, [r6, 0x1]
- adds r2, 0x78
- mov r0, sp
- movs r3, 0
- bl CreateSprite
- strb r0, [r5, 0xC]
- ldrb r1, [r5, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r7, _08133F9C @ =gSprites
- adds r0, r7
- adds r1, r5, 0
- bl SetSubspriteTables
- ldrb r0, [r5, 0xC]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x5]
- ldrb r1, [r5, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- adds r0, 0x43
- mov r1, r8
- strb r1, [r0]
- ldrb r1, [r5, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- adds r0, 0x42
- ldrb r2, [r0]
- movs r1, 0x40
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldrh r1, [r6, 0x8]
- ldr r0, _08133FA0 @ =0x0000ffff
- cmp r1, r0
- bne _08133F7E
- ldrb r0, [r5, 0xC]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r2, [r6, 0xA]
- lsls r2, 4
- ldrb r3, [r1, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
-_08133F7E:
- adds r0, r4, 0
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08133F8C: .4byte gUnknown_8463308
-_08133F90: .4byte nullsub_94
-_08133F94: .4byte gTasks+0x8
-_08133F98: .4byte gDummySpriteTemplate
-_08133F9C: .4byte gSprites
-_08133FA0: .4byte 0x0000ffff
- thumb_func_end ListMenuAddRedOutlineCursorObject
-
- thumb_func_start ListMenuUpdateRedOutlineCursorObject
-ListMenuUpdateRedOutlineCursorObject: @ 8133FA4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- lsls r3, r0, 2
- adds r3, r0
- lsls r3, 3
- ldr r0, _08133FE0 @ =gTasks+0x8
- adds r3, r0
- ldr r5, _08133FE4 @ =gSprites
- ldrb r4, [r3, 0xC]
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r5
- adds r1, 0x78
- strh r1, [r0, 0x20]
- ldrb r1, [r3, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r2, 0x78
- strh r2, [r0, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08133FE0: .4byte gTasks+0x8
-_08133FE4: .4byte gSprites
- thumb_func_end ListMenuUpdateRedOutlineCursorObject
-
- thumb_func_start ListMenuRemoveRedOutlineCursorObject
-ListMenuRemoveRedOutlineCursorObject: @ 8133FE8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08134034 @ =gTasks+0x8
- adds r4, r0, r1
- ldr r0, [r4, 0x8]
- bl Free
- ldrh r0, [r4, 0xE]
- ldr r6, _08134038 @ =0x0000ffff
- cmp r0, r6
- beq _0813400C
- bl FreeSpriteTilesByTag
-_0813400C:
- ldrh r0, [r4, 0x10]
- cmp r0, r6
- beq _08134016
- bl FreeSpritePaletteByTag
-_08134016:
- ldrb r1, [r4, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0813403C @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0
- bl DestroyTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08134034: .4byte gTasks+0x8
-_08134038: .4byte 0x0000ffff
-_0813403C: .4byte gSprites
- thumb_func_end ListMenuRemoveRedOutlineCursorObject
-
- thumb_func_start ObjectCB_RedArrowCursor
-ObjectCB_RedArrowCursor: @ 8134040
- push {lr}
- adds r2, r0, 0
- ldr r1, _08134068 @ =gSineTable
- ldrh r3, [r2, 0x2E]
- lsls r0, r3, 24
- lsrs r0, 23
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bge _08134058
- adds r0, 0x3F
-_08134058:
- asrs r0, 6
- strh r0, [r2, 0x24]
- adds r0, r3, 0
- adds r0, 0x8
- strh r0, [r2, 0x2E]
- pop {r0}
- bx r0
- .align 2, 0
-_08134068: .4byte gSineTable
- thumb_func_end ObjectCB_RedArrowCursor
-
- thumb_func_start nullsub_95
-nullsub_95: @ 813406C
- bx lr
- thumb_func_end nullsub_95
-
- thumb_func_start ListMenuAddRedArrowCursorObject
-ListMenuAddRedArrowCursorObject: @ 8134070
- push {r4-r7,lr}
- sub sp, 0x28
- adds r5, r0, 0
- ldr r0, _081340B4 @ =gUnknown_84633D8
- str r0, [sp, 0x18]
- ldr r6, _081340B8 @ =0xffff0000
- add r0, sp, 0x18
- ldr r1, [r0, 0x4]
- ands r1, r6
- movs r2, 0x80
- orrs r1, r2
- ldrh r2, [r5, 0x6]
- lsls r2, 16
- ldr r4, _081340BC @ =0x0000ffff
- ands r1, r4
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadCompressedObjectPic
- ldrh r2, [r5, 0x8]
- cmp r2, r4
- bne _081340C4
- ldr r0, _081340C0 @ =gUnknown_8463308
- ldrb r1, [r5, 0xA]
- lsls r1, 20
- movs r2, 0x80
- lsls r2, 17
- adds r1, r2
- lsrs r1, 16
- movs r2, 0x20
- bl LoadPalette
- b _081340D6
- .align 2, 0
-_081340B4: .4byte gUnknown_84633D8
-_081340B8: .4byte 0xffff0000
-_081340BC: .4byte 0x0000ffff
-_081340C0: .4byte gUnknown_8463308
-_081340C4:
- ldr r0, _08134160 @ =gUnknown_8463308
- str r0, [sp, 0x20]
- add r0, sp, 0x20
- ldr r1, [r0, 0x4]
- ands r1, r6
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadSpritePalette
-_081340D6:
- ldr r0, _08134164 @ =nullsub_95
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _08134168 @ =gTasks+0x8
- adds r4, r0, r1
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x4]
- mov r1, sp
- ldr r0, _0813416C @ =gUnknown_84632F0
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- mov r1, sp
- ldrh r0, [r5, 0x6]
- strh r0, [r1]
- ldrh r0, [r5, 0x8]
- strh r0, [r1, 0x2]
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- mov r0, sp
- movs r3, 0
- bl CreateSprite
- strb r0, [r4]
- ldr r3, _08134170 @ =gSprites
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r2, 0x8
- strh r2, [r0, 0x24]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x26]
- ldrh r1, [r5, 0x8]
- ldr r0, _08134174 @ =0x0000ffff
- cmp r1, r0
- bne _08134156
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r5, 0xA]
- lsls r2, 4
- ldrb r3, [r1, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
-_08134156:
- adds r0, r6, 0
- add sp, 0x28
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08134160: .4byte gUnknown_8463308
-_08134164: .4byte nullsub_95
-_08134168: .4byte gTasks+0x8
-_0813416C: .4byte gUnknown_84632F0
-_08134170: .4byte gSprites
-_08134174: .4byte 0x0000ffff
- thumb_func_end ListMenuAddRedArrowCursorObject
-
- thumb_func_start ListMenuUpdateRedArrowCursorObject
-ListMenuUpdateRedArrowCursorObject: @ 8134178
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r3, r0, 2
- adds r3, r0
- lsls r3, 3
- ldr r0, _081341A8 @ =gTasks+0x8
- adds r3, r0
- ldr r5, _081341AC @ =gSprites
- ldrb r4, [r3]
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r5
- strh r1, [r0, 0x20]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081341A8: .4byte gTasks+0x8
-_081341AC: .4byte gSprites
- thumb_func_end ListMenuUpdateRedArrowCursorObject
-
- thumb_func_start ListMenuRemoveRedArrowCursorObject
-ListMenuRemoveRedArrowCursorObject: @ 81341B0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _081341F4 @ =gTasks+0x8
- adds r4, r0, r1
- ldrh r0, [r4, 0x2]
- ldr r6, _081341F8 @ =0x0000ffff
- cmp r0, r6
- beq _081341CE
- bl FreeSpriteTilesByTag
-_081341CE:
- ldrh r0, [r4, 0x4]
- cmp r0, r6
- beq _081341D8
- bl FreeSpritePaletteByTag
-_081341D8:
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081341FC @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0
- bl DestroyTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081341F4: .4byte gTasks+0x8
-_081341F8: .4byte 0x0000ffff
-_081341FC: .4byte gSprites
- thumb_func_end ListMenuRemoveRedArrowCursorObject
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/multiboot.s b/asm/multiboot.s
deleted file mode 100644
index 615995301..000000000
--- a/asm/multiboot.s
+++ /dev/null
@@ -1,924 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start MultiBootInit
-MultiBootInit: @ 800BC20
- adds r2, r0, 0
- movs r1, 0
- strb r1, [r2, 0x1E]
- strb r1, [r2, 0x18]
- strb r1, [r2, 0x1D]
- adds r3, r2, 0
- adds r3, 0x4A
- movs r0, 0xF
- strb r0, [r3]
- adds r0, r2, 0
- adds r0, 0x48
- strb r1, [r0]
- strh r1, [r2, 0x16]
- ldr r0, _0800BC4C @ =0x04000134
- strh r1, [r0]
- ldr r2, _0800BC50 @ =0x04000128
- ldr r3, _0800BC54 @ =0x00002003
- adds r0, r3, 0
- strh r0, [r2]
- ldr r0, _0800BC58 @ =0x0400012a
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0800BC4C: .4byte 0x04000134
-_0800BC50: .4byte 0x04000128
-_0800BC54: .4byte 0x00002003
-_0800BC58: .4byte 0x0400012a
- thumb_func_end MultiBootInit
-
- thumb_func_start MultiBootMain
-MultiBootMain: @ 800BC5C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r7, r0, 0
- bl MultiBootCheckComplete
- cmp r0, 0
- beq _0800BC72
- b _0800C03A
-_0800BC72:
- adds r0, r7, 0
- adds r0, 0x4A
- ldrb r1, [r0]
- mov r10, r0
- cmp r1, 0xF
- bls _0800BC86
- subs r0, r1, 0x1
- mov r1, r10
- strb r0, [r1]
- b _0800C03A
-_0800BC86:
- adds r1, r7, 0
- adds r1, 0x48
- ldrb r0, [r1]
- cmp r0, 0
- beq _0800BCB0
- movs r0, 0
- strb r0, [r1]
- ldr r0, _0800BCAC @ =0x04000128
- ldrh r0, [r0]
- movs r5, 0xFC
- ands r5, r0
- cmp r5, 0x8
- beq _0800BCB0
- adds r0, r7, 0
- bl MultiBootInit
- movs r0, 0x8
- eors r0, r5
- b _0800C03C
- .align 2, 0
-_0800BCAC: .4byte 0x04000128
-_0800BCB0:
- ldrb r0, [r7, 0x18]
- cmp r0, 0xDF
- bls _0800BD02
- adds r0, r7, 0
- bl MultiBootHandShake
- adds r5, r0, 0
- cmp r5, 0
- beq _0800BCC4
- b _0800C03C
-_0800BCC4:
- adds r0, r7, 0
- adds r0, 0x4B
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0800BCE0
- ldrb r0, [r7, 0x18]
- cmp r0, 0xE1
- bls _0800BCE0
- adds r0, r7, 0
- bl MultiBootCheckComplete
- cmp r0, 0
- bne _0800BCE0
- b _0800C02A
-_0800BCE0:
- adds r0, r7, 0
- bl MultiBootCheckComplete
- cmp r0, 0
- beq _0800BCEC
- b _0800C03A
-_0800BCEC:
- ldrh r0, [r7, 0x16]
- cmp r0, 0
- bne _0800BCFC
- adds r0, r7, 0
- bl MultiBootInit
- movs r0, 0x71
- b _0800C03C
-_0800BCFC:
- subs r0, 0x1
- strh r0, [r7, 0x16]
- b _0800C03A
-_0800BD02:
- ldrb r0, [r7, 0x18]
- cmp r0, 0x2
- bne _0800BD0A
- b _0800BE40
-_0800BD0A:
- cmp r0, 0x2
- bgt _0800BD18
- cmp r0, 0
- beq _0800BD26
- cmp r0, 0x1
- beq _0800BDE2
- b _0800BF78
-_0800BD18:
- cmp r0, 0xD0
- bne _0800BD1E
- b _0800BE8C
-_0800BD1E:
- cmp r0, 0xD1
- bne _0800BD24
- b _0800BF26
-_0800BD24:
- b _0800BF78
-_0800BD26:
- movs r3, 0xE
- movs r5, 0x3
- ldr r0, _0800BD6C @ =0x04000120
- ldrh r0, [r0, 0x6]
- adds r1, r0, 0
- ldr r0, _0800BD70 @ =0x0000ffff
- ldrb r2, [r7, 0x1E]
- adds r6, r2, 0
- cmp r1, r0
- bne _0800BD4E
- adds r4, r1, 0
- ldr r1, _0800BD74 @ =0x04000126
-_0800BD3E:
- asrs r3, 1
- subs r1, 0x2
- subs r5, 0x1
- cmp r5, 0
- beq _0800BD4E
- ldrh r0, [r1]
- cmp r0, r4
- beq _0800BD3E
-_0800BD4E:
- movs r0, 0xE
- ands r3, r0
- strb r3, [r7, 0x1D]
- movs r5, 0x3
- ldr r0, _0800BD6C @ =0x04000120
- ldrh r0, [r0, 0x6]
- adds r4, r0, 0
- asrs r0, r2, 3
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0800BD7C
- ldr r0, _0800BD78 @ =0x00007208
- b _0800BDA2
- .align 2, 0
-_0800BD6C: .4byte 0x04000120
-_0800BD70: .4byte 0x0000ffff
-_0800BD74: .4byte 0x04000126
-_0800BD78: .4byte 0x00007208
-_0800BD7C:
- subs r5, 0x1
- cmp r5, 0
- beq _0800BDA8
- lsls r0, r5, 1
- ldr r1, _0800BDD0 @ =0x04000120
- adds r0, r1
- ldrh r0, [r0]
- adds r4, r0, 0
- adds r0, r2, 0
- asrs r0, r5
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0800BD7C
- adds r0, r1, 0
- lsls r0, r5
- movs r1, 0xE4
- lsls r1, 7
- orrs r0, r1
-_0800BDA2:
- cmp r4, r0
- beq _0800BD7C
- movs r3, 0
-_0800BDA8:
- adds r0, r3, 0
- ands r0, r6
- strb r0, [r7, 0x1E]
- cmp r3, 0
- bne _0800BDB8
- movs r0, 0xF
- mov r2, r10
- strb r0, [r2]
-_0800BDB8:
- mov r1, r10
- ldrb r0, [r1]
- cmp r0, 0
- bne _0800BDD4
- ldrb r0, [r7, 0x1D]
- ldrb r2, [r7, 0x1E]
- cmp r0, r2
- beq _0800BDDA
- adds r0, r7, 0
- bl MultiBootStartProbe
- b _0800BDE2
- .align 2, 0
-_0800BDD0: .4byte 0x04000120
-_0800BDD4:
- subs r0, 0x1
- mov r1, r10
- strb r0, [r1]
-_0800BDDA:
- ldrb r1, [r7, 0x1E]
- movs r2, 0xC4
- lsls r2, 7
- b _0800BEE2
-_0800BDE2:
- adds r1, r7, 0
- adds r1, 0x49
- movs r0, 0
- strb r0, [r1]
- movs r5, 0x3
- mov r12, r1
- ldr r3, _0800BE38 @ =gUnknown_3000E6C
-_0800BDF0:
- lsls r0, r5, 1
- ldr r2, _0800BE3C @ =0x04000120
- adds r0, r2
- ldrh r0, [r0]
- adds r4, r0, 0
- asrs r0, r4, 8
- subs r2, r5, 0x1
- cmp r0, 0x72
- bne _0800BE1A
- lsls r0, r2, 1
- adds r0, r3
- strh r4, [r0]
- movs r0, 0xFF
- ands r4, r0
- movs r0, 0x1
- lsls r0, r5
- cmp r4, r0
- bne _0800BE1A
- ldrb r0, [r1]
- orrs r4, r0
- strb r4, [r1]
-_0800BE1A:
- adds r5, r2, 0
- cmp r5, 0
- bne _0800BDF0
- ldrb r0, [r7, 0x1D]
- mov r1, r12
- ldrb r1, [r1]
- cmp r0, r1
- bne _0800BDDA
- movs r0, 0x2
- strb r0, [r7, 0x18]
- mov r2, r12
- ldrb r1, [r2]
- movs r2, 0xC2
- lsls r2, 7
- b _0800BEE2
- .align 2, 0
-_0800BE38: .4byte gUnknown_3000E6C
-_0800BE3C: .4byte 0x04000120
-_0800BE40:
- movs r5, 0x3
- movs r0, 0x49
- adds r0, r7
- mov r12, r0
- mov r4, r12
- movs r6, 0x1
- ldr r1, _0800BE84 @ =gUnknown_3000E6C
- mov r9, r1
- ldr r2, _0800BE88 @ =0x04000120
- mov r8, r2
-_0800BE54:
- ldrb r3, [r4]
- adds r0, r3, 0
- asrs r0, r5
- ands r0, r6
- subs r2, r5, 0x1
- cmp r0, 0
- beq _0800BE7A
- lsls r0, r5, 1
- add r0, r8
- ldrh r1, [r0]
- lsls r0, r2, 1
- add r0, r9
- ldrh r0, [r0]
- cmp r1, r0
- beq _0800BE7A
- adds r0, r6, 0
- lsls r0, r5
- eors r3, r0
- strb r3, [r4]
-_0800BE7A:
- adds r5, r2, 0
- cmp r5, 0
- bne _0800BE54
- b _0800BFE0
- .align 2, 0
-_0800BE84: .4byte gUnknown_3000E6C
-_0800BE88: .4byte 0x04000120
-_0800BE8C:
- movs r3, 0x1
- movs r5, 0x3
- movs r0, 0x49
- adds r0, r7
- mov r12, r0
- adds r6, r7, 0
- adds r6, 0x19
- ldr r1, _0800BEF0 @ =gUnknown_3000E6C
- mov r8, r1
-_0800BE9E:
- lsls r0, r5, 1
- ldr r2, _0800BEF4 @ =0x04000120
- adds r0, r2
- ldrh r0, [r0]
- adds r4, r0, 0
- subs r2, r5, 0x1
- adds r0, r6, r2
- strb r4, [r0]
- mov r0, r12
- ldrb r1, [r0]
- asrs r1, r5
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0800BED2
- asrs r0, r4, 8
- subs r0, 0x72
- cmp r0, 0x1
- bls _0800BEC6
- b _0800C030
-_0800BEC6:
- lsls r0, r2, 1
- add r0, r8
- ldrh r0, [r0]
- cmp r4, r0
- bne _0800BED2
- movs r3, 0
-_0800BED2:
- adds r5, r2, 0
- cmp r5, 0
- bne _0800BE9E
- cmp r3, 0
- bne _0800BEF8
- ldrb r1, [r7, 0x1C]
- movs r2, 0xC6
- lsls r2, 7
-_0800BEE2:
- adds r0, r2, 0
- orrs r1, r0
- adds r0, r7, 0
- bl MultiBootSend
- b _0800C03C
- .align 2, 0
-_0800BEF0: .4byte gUnknown_3000E6C
-_0800BEF4: .4byte 0x04000120
-_0800BEF8:
- movs r0, 0xD1
- strb r0, [r7, 0x18]
- movs r3, 0x11
- movs r5, 0x3
- adds r1, r6, 0x2
-_0800BF02:
- ldrb r0, [r1]
- adds r3, r0
- subs r1, 0x1
- subs r5, 0x1
- cmp r5, 0
- bne _0800BF02
- strb r3, [r7, 0x14]
- movs r0, 0xFF
- ands r3, r0
- movs r1, 0xC8
- lsls r1, 7
- adds r0, r1, 0
- orrs r3, r0
- adds r0, r7, 0
- adds r1, r3, 0
- bl MultiBootSend
- b _0800C03C
-_0800BF26:
- movs r5, 0x3
- movs r2, 0x49
- ldrb r1, [r2, r7]
- ldr r2, _0800BF64 @ =0x04000126
- movs r3, 0x1
-_0800BF30:
- ldrh r0, [r2]
- adds r4, r0, 0
- adds r0, r1, 0
- asrs r0, r5
- ands r0, r3
- cmp r0, 0
- beq _0800BF44
- asrs r0, r4, 8
- cmp r0, 0x73
- bne _0800C030
-_0800BF44:
- subs r2, 0x2
- subs r5, 0x1
- cmp r5, 0
- bne _0800BF30
- adds r0, r7, 0
- bl MultiBoot
- adds r5, r0, 0
- cmp r5, 0
- bne _0800BF68
- movs r0, 0xE0
- strb r0, [r7, 0x18]
- adds r0, 0xB0
- strh r0, [r7, 0x16]
- b _0800C03A
- .align 2, 0
-_0800BF64: .4byte 0x04000126
-_0800BF68:
- adds r0, r7, 0
- bl MultiBootInit
- movs r0, 0x1E
- mov r1, r10
- strb r0, [r1]
- movs r0, 0x70
- b _0800C03C
-_0800BF78:
- movs r5, 0x3
- movs r2, 0x49
- adds r2, r7
- mov r12, r2
- mov r8, r12
- movs r0, 0x1
- mov r9, r0
-_0800BF86:
- mov r1, r8
- ldrb r6, [r1]
- adds r0, r6, 0
- asrs r0, r5
- mov r2, r9
- ands r0, r2
- cmp r0, 0
- beq _0800BFC0
- lsls r0, r5, 1
- ldr r1, _0800BFDC @ =0x04000120
- adds r0, r1
- ldrh r0, [r0]
- adds r4, r0, 0
- asrs r2, r4, 8
- ldrb r0, [r7, 0x18]
- lsrs r0, 1
- movs r1, 0x62
- subs r1, r0
- mov r3, r9
- lsls r3, r5
- cmp r2, r1
- bne _0800BFBA
- movs r0, 0xFF
- ands r4, r0
- cmp r4, r3
- beq _0800BFC0
-_0800BFBA:
- eors r6, r3
- mov r2, r8
- strb r6, [r2]
-_0800BFC0:
- subs r5, 0x1
- cmp r5, 0
- bne _0800BF86
- ldrb r0, [r7, 0x18]
- cmp r0, 0xC4
- bne _0800BFE0
- mov r0, r12
- ldrb r1, [r0]
- movs r0, 0xE
- ands r0, r1
- strb r0, [r7, 0x1E]
- strb r5, [r7, 0x18]
- b _0800BDDA
- .align 2, 0
-_0800BFDC: .4byte 0x04000120
-_0800BFE0:
- mov r1, r12
- ldrb r0, [r1]
- cmp r0, 0
- bne _0800BFF2
- adds r0, r7, 0
- bl MultiBootInit
- movs r0, 0x50
- b _0800C03C
-_0800BFF2:
- ldrb r0, [r7, 0x18]
- adds r0, 0x2
- strb r0, [r7, 0x18]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC4
- bne _0800C002
- b _0800BDDA
-_0800C002:
- ldrb r0, [r7, 0x18]
- ldr r1, [r7, 0x28]
- adds r0, r1
- subs r1, r0, 0x3
- ldrb r2, [r1]
- lsls r2, 8
- subs r0, 0x4
- ldrb r1, [r0]
- orrs r1, r2
- adds r0, r7, 0
- bl MultiBootSend
- adds r5, r0, 0
- cmp r5, 0
- bne _0800C03C
- adds r0, r7, 0
- adds r0, 0x4B
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0800C03A
-_0800C02A:
- bl MultiBootWaitSendDone
- b _0800BC86
-_0800C030:
- adds r0, r7, 0
- bl MultiBootInit
- movs r0, 0x60
- b _0800C03C
-_0800C03A:
- movs r0, 0
-_0800C03C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end MultiBootMain
-
- thumb_func_start MultiBootSend
-MultiBootSend: @ 800C04C
- push {r4,lr}
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r3, _0800C078 @ =0x04000128
- ldrh r0, [r3]
- movs r4, 0x8C
- ands r4, r0
- cmp r4, 0x8
- bne _0800C084
- ldr r0, _0800C07C @ =0x0400012a
- strh r1, [r0]
- ldr r1, _0800C080 @ =0x00002083
- adds r0, r1, 0
- strh r0, [r3]
- adds r1, r2, 0
- adds r1, 0x48
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0
- b _0800C090
- .align 2, 0
-_0800C078: .4byte 0x04000128
-_0800C07C: .4byte 0x0400012a
-_0800C080: .4byte 0x00002083
-_0800C084:
- adds r0, r2, 0
- bl MultiBootInit
- movs r0, 0x8
- eors r4, r0
- adds r0, r4, 0
-_0800C090:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MultiBootSend
-
- thumb_func_start MultiBootStartProbe
-MultiBootStartProbe: @ 800C098
- push {lr}
- adds r1, r0, 0
- ldrb r0, [r1, 0x18]
- cmp r0, 0
- beq _0800C0AA
- adds r0, r1, 0
- bl MultiBootInit
- b _0800C0B6
-_0800C0AA:
- adds r2, r1, 0
- adds r2, 0x4A
- strb r0, [r2]
- strb r0, [r1, 0x1E]
- movs r0, 0x1
- strb r0, [r1, 0x18]
-_0800C0B6:
- pop {r0}
- bx r0
- thumb_func_end MultiBootStartProbe
-
- thumb_func_start MultiBootStartMaster
-MultiBootStartMaster: @ 800C0BC
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r6, r1, 0
- ldr r0, [sp, 0x14]
- lsls r3, 24
- lsrs r5, r3, 24
- lsls r0, 24
- lsrs r7, r0, 24
- movs r3, 0
- ldrb r0, [r4, 0x18]
- cmp r0, 0
- bne _0800C0F8
- ldrb r0, [r4, 0x1E]
- cmp r0, 0
- beq _0800C0F8
- adds r0, r4, 0
- adds r0, 0x4A
- ldrb r0, [r0]
- cmp r0, 0
- bne _0800C0F8
- str r6, [r4, 0x20]
- adds r2, 0xF
- movs r0, 0x10
- negs r0, r0
- ands r2, r0
- subs r0, 0xF0
- adds r1, r2, r0
- ldr r0, _0800C100 @ =0x0003ff00
- cmp r1, r0
- bls _0800C104
-_0800C0F8:
- adds r0, r4, 0
- bl MultiBootInit
- b _0800C178
- .align 2, 0
-_0800C100: .4byte 0x0003ff00
-_0800C104:
- adds r0, r6, r2
- str r0, [r4, 0x24]
- lsls r1, r7, 24
- movs r2, 0x80
- lsls r2, 19
- adds r0, r1, r2
- asrs r0, 24
- adds r2, r1, 0
- cmp r0, 0x8
- bhi _0800C164
- lsls r0, 2
- ldr r1, _0800C124 @ =_0800C128
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0800C124: .4byte _0800C128
- .align 2, 0
-_0800C128:
- .4byte _0800C14C
- .4byte _0800C14C
- .4byte _0800C14C
- .4byte _0800C14C
- .4byte _0800C156
- .4byte _0800C15C
- .4byte _0800C15C
- .4byte _0800C15C
- .4byte _0800C15C
-_0800C14C:
- lsls r3, r5, 3
- asrs r1, r2, 24
- movs r0, 0x3
- subs r0, r1
- b _0800C162
-_0800C156:
- movs r0, 0x38
- adds r3, r5, 0
- b _0800C162
-_0800C15C:
- lsls r3, r5, 3
- asrs r0, r2, 24
- subs r0, 0x1
-_0800C162:
- orrs r3, r0
-_0800C164:
- movs r0, 0x3F
- ands r3, r0
- lsls r0, r3, 1
- movs r2, 0x7F
- negs r2, r2
- adds r1, r2, 0
- orrs r0, r1
- strb r0, [r4, 0x1C]
- movs r0, 0xD0
- strb r0, [r4, 0x18]
-_0800C178:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end MultiBootStartMaster
-
- thumb_func_start MultiBootCheckComplete
-MultiBootCheckComplete: @ 800C180
- push {lr}
- ldrb r0, [r0, 0x18]
- cmp r0, 0xE9
- beq _0800C18C
- movs r0, 0
- b _0800C18E
-_0800C18C:
- movs r0, 0x1
-_0800C18E:
- pop {r1}
- bx r1
- thumb_func_end MultiBootCheckComplete
-
- thumb_func_start MultiBootHandShake
-MultiBootHandShake: @ 800C194
- push {r4-r6,lr}
- adds r3, r0, 0
- ldrb r0, [r3, 0x18]
- cmp r0, 0xE0
- beq _0800C1B0
- cmp r0, 0xE0
- blt _0800C1C0
- cmp r0, 0xE8
- bgt _0800C1C0
- cmp r0, 0xE7
- blt _0800C1C0
- movs r4, 0x3
- ldrb r5, [r3, 0x1E]
- b _0800C220
-_0800C1B0:
- movs r1, 0
- movs r0, 0xE1
- strb r0, [r3, 0x18]
- str r1, [r3, 0x4]
- movs r0, 0x80
- lsls r0, 13
- str r0, [r3]
- b _0800C212
-_0800C1C0:
- movs r4, 0x3
- ldrb r5, [r3, 0x1E]
- movs r6, 0x1
- ldr r1, _0800C21C @ =0x04000126
-_0800C1C8:
- ldrh r0, [r1]
- adds r2, r0, 0
- adds r0, r5, 0
- asrs r0, r4
- ands r0, r6
- cmp r0, 0
- beq _0800C1DC
- ldr r0, [r3, 0x4]
- cmp r2, r0
- bne _0800C1B0
-_0800C1DC:
- subs r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bne _0800C1C8
- ldrb r0, [r3, 0x18]
- adds r0, 0x1
- strb r0, [r3, 0x18]
- ldr r1, [r3]
- ldrh r0, [r3]
- str r0, [r3, 0x4]
- cmp r1, 0
- bne _0800C20A
- ldr r0, [r3, 0x28]
- adds r1, r0, 0
- adds r1, 0xAC
- ldrb r1, [r1]
- adds r0, 0xAD
- ldrb r0, [r0]
- lsls r0, 8
- orrs r1, r0
- str r1, [r3, 0x4]
- lsls r1, 5
- str r1, [r3]
-_0800C20A:
- ldr r0, [r3]
- lsrs r0, 5
- str r0, [r3]
-_0800C210:
- ldrh r1, [r3]
-_0800C212:
- adds r0, r3, 0
- bl MultiBootSend
- b _0800C278
- .align 2, 0
-_0800C21C: .4byte 0x04000126
-_0800C220:
- lsls r0, r4, 1
- ldr r1, _0800C268 @ =0x04000120
- adds r0, r1
- ldrh r0, [r0]
- adds r2, r0, 0
- adds r0, r5, 0
- asrs r0, r4
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0800C23C
- ldr r0, [r3, 0x4]
- cmp r2, r0
- bne _0800C26C
-_0800C23C:
- subs r4, 0x1
- cmp r4, 0
- bne _0800C220
- ldrb r0, [r3, 0x18]
- adds r0, 0x1
- strb r0, [r3, 0x18]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE9
- beq _0800C276
- ldr r0, [r3, 0x28]
- adds r1, r0, 0
- adds r1, 0xAE
- ldrb r1, [r1]
- adds r0, 0xAF
- ldrb r0, [r0]
- lsls r0, 8
- orrs r1, r0
- str r1, [r3]
- str r1, [r3, 0x4]
- b _0800C210
- .align 2, 0
-_0800C268: .4byte 0x04000120
-_0800C26C:
- adds r0, r3, 0
- bl MultiBootInit
- movs r0, 0x71
- b _0800C278
-_0800C276:
- movs r0, 0
-_0800C278:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end MultiBootHandShake
-
- thumb_func_start MultiBootWaitCycles
-MultiBootWaitCycles: @ 800C280
- mov r2, pc
- lsrs r2, 24
- movs r1, 0xC
- cmp r2, 0x2
- beq _0800C292
- movs r1, 0xD
- cmp r2, 0x8
- beq _0800C292
- movs r1, 0x4
-_0800C292:
- subs r0, r1
- bgt _0800C292
- bx lr
- thumb_func_end MultiBootWaitCycles
-
- thumb_func_start MultiBootWaitSendDone
-MultiBootWaitSendDone: @ 800C298
- push {r4,r5,lr}
- movs r2, 0
- ldr r3, _0800C2CC @ =0x04000128
- ldrh r1, [r3]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0800C2BC
- ldr r5, _0800C2D0 @ =0x0000795c
- movs r4, 0x80
-_0800C2AC:
- adds r2, 0x1
- cmp r2, r5
- bgt _0800C2BC
- ldrh r1, [r3]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _0800C2AC
-_0800C2BC:
- movs r0, 0x96
- lsls r0, 2
- bl MultiBootWaitCycles
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C2CC: .4byte 0x04000128
-_0800C2D0: .4byte 0x0000795c
- thumb_func_end MultiBootWaitSendDone
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/naming_screen.s b/asm/naming_screen.s
index 01217d92f..ef692b052 100644
--- a/asm/naming_screen.s
+++ b/asm/naming_screen.s
@@ -980,7 +980,7 @@ _0809E156:
movs r0, 0
movs r1, 0x2
adds r2, r4, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
@@ -2789,7 +2789,7 @@ sub_809EF54: @ 809EF54
str r2, [sp]
movs r2, 0x38
movs r3, 0x25
- bl AddPseudoFieldObject
+ bl AddPseudoEventObject
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -3657,7 +3657,7 @@ _0809F5EE:
movs r1, 0x2
movs r2, 0x68
movs r3, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
_0809F614:
add sp, 0x10
pop {r4,r5}
@@ -4196,7 +4196,7 @@ _0809FA12:
adds r0, r6, 0
movs r1, 0x1
movs r2, 0
- bl box_print
+ bl AddTextPrinterParameterized3
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
@@ -4317,7 +4317,7 @@ sub_809FAE4: @ 809FAE4
str r1, [sp, 0x8]
movs r1, 0
movs r3, 0
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r0, [r5]
adds r0, r4
ldrb r0, [r0]
diff --git a/asm/new_game.s b/asm/new_game.s
index 63bfd9523..e2b9c876f 100644
--- a/asm/new_game.s
+++ b/asm/new_game.s
@@ -159,7 +159,7 @@ sub_80549F8: @ 80549F8
movs r1, 0x1
movs r3, 0x6
bl Overworld_SetWarpDestination
- bl warp_in
+ bl WarpIntoMap
add sp, 0x4
pop {r0}
bx r0
@@ -174,8 +174,8 @@ Sav2_ClearSetDefault: @ 8054A18
bx r0
thumb_func_end Sav2_ClearSetDefault
- thumb_func_start sub_8054A28
-sub_8054A28: @ 8054A28
+ thumb_func_start ResetMenuAndMonGlobals
+ResetMenuAndMonGlobals: @ 8054A28
push {lr}
ldr r1, _08054A5C @ =gUnknown_2031DB0
movs r0, 0
@@ -195,7 +195,7 @@ sub_8054A28: @ 8054A28
bx r0
.align 2, 0
_08054A5C: .4byte gUnknown_2031DB0
- thumb_func_end sub_8054A28
+ thumb_func_end ResetMenuAndMonGlobals
thumb_func_start sub_8054A60
sub_8054A60: @ 8054A60
@@ -262,7 +262,7 @@ sub_8054A60: @ 8054A60
ldr r1, _08054B68 @ =0x00000296
adds r0, r1
strh r5, [r0]
- bl sub_809A2DC
+ bl ClearItemSlotsInAllBagPockets
bl sub_80EB658
bl sub_809C794
bl sub_80BDD34
diff --git a/asm/new_menu_helpers.s b/asm/new_menu_helpers.s
deleted file mode 100644
index 7401398af..000000000
--- a/asm/new_menu_helpers.s
+++ /dev/null
@@ -1,2497 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start clear_scheduled_bg_copies_to_vram
-clear_scheduled_bg_copies_to_vram: @ 80F6790
- push {lr}
- ldr r0, _080F67A0 @ =gUnknown_203AB58
- movs r1, 0
- movs r2, 0x4
- bl memset
- pop {r0}
- bx r0
- .align 2, 0
-_080F67A0: .4byte gUnknown_203AB58
- thumb_func_end clear_scheduled_bg_copies_to_vram
-
- thumb_func_start schedule_bg_copy_tilemap_to_vram
-schedule_bg_copy_tilemap_to_vram: @ 80F67A4
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080F67B4 @ =gUnknown_203AB58
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- bx lr
- .align 2, 0
-_080F67B4: .4byte gUnknown_203AB58
- thumb_func_end schedule_bg_copy_tilemap_to_vram
-
- thumb_func_start do_scheduled_bg_tilemap_copies_to_vram
-do_scheduled_bg_tilemap_copies_to_vram: @ 80F67B8
- push {r4,lr}
- ldr r4, _080F6804 @ =gUnknown_203AB58
- ldrb r0, [r4]
- cmp r0, 0x1
- bne _080F67CC
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- strb r0, [r4]
-_080F67CC:
- ldrb r0, [r4, 0x1]
- cmp r0, 0x1
- bne _080F67DC
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- strb r0, [r4, 0x1]
-_080F67DC:
- ldrb r0, [r4, 0x2]
- cmp r0, 0x1
- bne _080F67EC
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- strb r0, [r4, 0x2]
-_080F67EC:
- ldrb r0, [r4, 0x3]
- cmp r0, 0x1
- bne _080F67FC
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- strb r0, [r4, 0x3]
-_080F67FC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F6804: .4byte gUnknown_203AB58
- thumb_func_end do_scheduled_bg_tilemap_copies_to_vram
-
- thumb_func_start reset_temp_tile_data_buffers
-reset_temp_tile_data_buffers: @ 80F6808
- push {lr}
- ldr r3, _080F6824 @ =gUnknown_203AB5C
- ldr r1, _080F6828 @ =gUnknown_203AB60
- movs r2, 0
- adds r0, r1, 0
- adds r0, 0x7C
-_080F6814:
- str r2, [r0]
- subs r0, 0x4
- cmp r0, r1
- bge _080F6814
- movs r0, 0
- strh r0, [r3]
- pop {r0}
- bx r0
- .align 2, 0
-_080F6824: .4byte gUnknown_203AB5C
-_080F6828: .4byte gUnknown_203AB60
- thumb_func_end reset_temp_tile_data_buffers
-
- thumb_func_start free_temp_tile_data_buffers_if_possible
-free_temp_tile_data_buffers_if_possible: @ 80F682C
- push {r4-r6,lr}
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _080F6870
- ldr r1, _080F6868 @ =gUnknown_203AB5C
- ldrh r0, [r1]
- cmp r0, 0
- beq _080F6864
- movs r4, 0
- ldrh r1, [r1]
- cmp r4, r1
- bge _080F685E
- ldr r5, _080F686C @ =gUnknown_203AB60
- movs r6, 0
-_080F684C:
- ldr r0, [r5]
- bl Free
- stm r5!, {r6}
- adds r4, 0x1
- ldr r0, _080F6868 @ =gUnknown_203AB5C
- ldrh r0, [r0]
- cmp r4, r0
- blt _080F684C
-_080F685E:
- ldr r1, _080F6868 @ =gUnknown_203AB5C
- movs r0, 0
- strh r0, [r1]
-_080F6864:
- movs r0, 0
- b _080F6872
- .align 2, 0
-_080F6868: .4byte gUnknown_203AB5C
-_080F686C: .4byte gUnknown_203AB60
-_080F6870:
- movs r0, 0x1
-_080F6872:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end free_temp_tile_data_buffers_if_possible
-
- thumb_func_start decompress_and_copy_tile_data_to_vram
-decompress_and_copy_tile_data_to_vram: @ 80F6878
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r3, 16
- lsrs r3, 16
- mov r9, r3
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r6, _080F68D8 @ =gUnknown_203AB5C
- ldrh r0, [r6]
- cmp r0, 0x1F
- bhi _080F68E0
- adds r0, r4, 0
- add r1, sp, 0x4
- bl malloc_and_decompress
- adds r4, r0, 0
- cmp r5, 0
- bne _080F68B0
- ldr r5, [sp, 0x4]
-_080F68B0:
- cmp r4, 0
- beq _080F68D4
- lsls r2, r5, 16
- lsrs r2, 16
- str r7, [sp]
- mov r0, r8
- adds r1, r4, 0
- mov r3, r9
- bl sub_80F6AD0
- ldr r2, _080F68DC @ =gUnknown_203AB60
- ldrh r0, [r6]
- adds r1, r0, 0x1
- strh r1, [r6]
- lsls r0, 16
- lsrs r0, 14
- adds r0, r2
- str r4, [r0]
-_080F68D4:
- adds r0, r4, 0
- b _080F68E2
- .align 2, 0
-_080F68D8: .4byte gUnknown_203AB5C
-_080F68DC: .4byte gUnknown_203AB60
-_080F68E0:
- movs r0, 0
-_080F68E2:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end decompress_and_copy_tile_data_to_vram
-
- thumb_func_start sub_80F68F0
-sub_80F68F0: @ 80F68F0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r4, r1, 0
- adds r6, r2, 0
- ldr r1, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r3, 16
- lsrs r3, 16
- mov r9, r3
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r5, _080F6954 @ =gUnknown_203AB5C
- ldrh r0, [r5]
- cmp r0, 0x1F
- bhi _080F695C
- adds r0, r4, 0
- add r1, sp, 0x4
- bl malloc_and_decompress
- adds r4, r0, 0
- ldr r0, [sp, 0x4]
- cmp r0, r6
- bls _080F692A
- str r6, [sp, 0x4]
-_080F692A:
- cmp r4, 0
- beq _080F6950
- ldr r2, [sp, 0x4]
- lsls r2, 16
- lsrs r2, 16
- str r7, [sp]
- mov r0, r8
- adds r1, r4, 0
- mov r3, r9
- bl sub_80F6AD0
- ldr r2, _080F6958 @ =gUnknown_203AB60
- ldrh r0, [r5]
- adds r1, r0, 0x1
- strh r1, [r5]
- lsls r0, 16
- lsrs r0, 14
- adds r0, r2
- str r4, [r0]
-_080F6950:
- adds r0, r4, 0
- b _080F695E
- .align 2, 0
-_080F6954: .4byte gUnknown_203AB5C
-_080F6958: .4byte gUnknown_203AB60
-_080F695C:
- movs r0, 0
-_080F695E:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F68F0
-
- thumb_func_start DecompressAndLoadBgGfxUsingHeap
-DecompressAndLoadBgGfxUsingHeap: @ 80F696C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r5, r2, 0
- ldr r2, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r3, 16
- lsrs r3, 16
- mov r9, r3
- lsls r2, 24
- lsrs r7, r2, 24
- adds r0, r1, 0
- add r1, sp, 0x4
- bl malloc_and_decompress
- adds r6, r0, 0
- cmp r5, 0
- bne _080F699A
- ldr r5, [sp, 0x4]
-_080F699A:
- cmp r6, 0
- beq _080F69D2
- ldr r0, _080F69E0 @ =task_free_buf_after_copying_tile_data_to_vram
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r2, r5, 16
- lsrs r2, 16
- str r7, [sp]
- mov r0, r8
- adds r1, r6, 0
- mov r3, r9
- bl sub_80F6AD0
- ldr r2, _080F69E4 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r2
- strh r0, [r1, 0x8]
- adds r0, r4, 0
- movs r1, 0x1
- adds r2, r6, 0
- bl SetWordTaskArg
-_080F69D2:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F69E0: .4byte task_free_buf_after_copying_tile_data_to_vram
-_080F69E4: .4byte gTasks
- thumb_func_end DecompressAndLoadBgGfxUsingHeap
-
- thumb_func_start sub_80F69E8
-sub_80F69E8: @ 80F69E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r4, r2, 0
- ldr r2, [sp, 0x20]
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r3, 16
- lsrs r3, 16
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- adds r0, r1, 0
- add r1, sp, 0x4
- bl malloc_and_decompress
- adds r5, r0, 0
- ldr r0, [sp, 0x4]
- cmp r0, r4
- bls _080F6A14
- str r4, [sp, 0x4]
-_080F6A14:
- cmp r5, 0
- beq _080F6A4E
- ldr r0, _080F6A5C @ =task_free_buf_after_copying_tile_data_to_vram
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r2, [sp, 0x4]
- lsls r2, 16
- lsrs r2, 16
- str r6, [sp]
- adds r0, r7, 0
- adds r1, r5, 0
- mov r3, r8
- bl sub_80F6AD0
- ldr r2, _080F6A60 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r2
- strh r0, [r1, 0x8]
- adds r0, r4, 0
- movs r1, 0x1
- adds r2, r5, 0
- bl SetWordTaskArg
-_080F6A4E:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F6A5C: .4byte task_free_buf_after_copying_tile_data_to_vram
-_080F6A60: .4byte gTasks
- thumb_func_end sub_80F69E8
-
- thumb_func_start task_free_buf_after_copying_tile_data_to_vram
-task_free_buf_after_copying_tile_data_to_vram: @ 80F6A64
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080F6A9C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- bl CheckForSpaceForDma3Request
- lsls r0, 16
- cmp r0, 0
- bne _080F6A94
- adds r0, r4, 0
- movs r1, 0x1
- bl GetWordTaskArg
- bl Free
- adds r0, r4, 0
- bl DestroyTask
-_080F6A94:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F6A9C: .4byte gTasks
- thumb_func_end task_free_buf_after_copying_tile_data_to_vram
-
- thumb_func_start malloc_and_decompress
-malloc_and_decompress: @ 80F6AA0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrb r0, [r5, 0x1]
- strb r0, [r1]
- ldrb r0, [r5, 0x2]
- strb r0, [r1, 0x1]
- ldrb r0, [r5, 0x3]
- strb r0, [r1, 0x2]
- movs r0, 0
- strb r0, [r1, 0x3]
- ldr r0, [r1]
- bl Alloc
- adds r4, r0, 0
- cmp r4, 0
- beq _080F6AC8
- adds r0, r5, 0
- adds r1, r4, 0
- bl LZ77UnCompWram
-_080F6AC8:
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end malloc_and_decompress
-
- thumb_func_start sub_80F6AD0
-sub_80F6AD0: @ 80F6AD0
- push {r4,lr}
- adds r4, r1, 0
- ldr r1, [sp, 0x8]
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r3, 16
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- beq _080F6AEE
- cmp r1, 0x1
- beq _080F6AF6
-_080F6AEE:
- adds r1, r4, 0
- bl LoadBgTiles
- b _080F6AFC
-_080F6AF6:
- adds r1, r4, 0
- bl LoadBgTilemap
-_080F6AFC:
- lsls r0, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F6AD0
-
- thumb_func_start sub_80F6B08
-sub_80F6B08: @ 80F6B08
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r5, r2, 0
- ldr r4, [sp, 0x28]
- ldr r2, [sp, 0x2C]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- lsls r5, 24
- lsrs r5, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x4]
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- bl GetBgTilemapBuffer
- mov r8, r0
- adds r0, r5, r4
- cmp r5, r0
- bge _080F6B80
- mov r9, r0
-_080F6B46:
- ldr r3, [sp]
- ldr r1, [sp, 0x4]
- adds r0, r3, r1
- adds r7, r5, 0x1
- cmp r3, r0
- bge _080F6B78
- lsls r6, r5, 5
- ldr r1, _080F6B90 @ =0x00000fff
- mov r12, r1
- mov r1, r10
- lsls r5, r1, 12
- adds r4, r0, 0
-_080F6B5E:
- adds r1, r6, r3
- lsls r1, 1
- add r1, r8
- ldrh r2, [r1]
- mov r0, r12
- ands r0, r2
- orrs r0, r5
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r4
- blt _080F6B5E
-_080F6B78:
- lsls r0, r7, 24
- lsrs r5, r0, 24
- cmp r5, r9
- blt _080F6B46
-_080F6B80:
- 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
-_080F6B90: .4byte 0x00000fff
- thumb_func_end sub_80F6B08
-
- thumb_func_start sub_80F6B94
-sub_80F6B94: @ 80F6B94
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r1
- ldr r1, [sp, 0x24]
- ldr r4, [sp, 0x28]
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp]
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- bl GetBgTilemapBuffer
- adds r7, r0, 0
- movs r0, 0
- cmp r0, r8
- bcs _080F6C02
-_080F6BCC:
- movs r2, 0
- adds r6, r0, 0x1
- cmp r2, r5
- bcs _080F6BFA
- adds r4, r0, 0
- muls r4, r5
- ldr r1, [sp]
- adds r0, r1
- lsls r3, r0, 5
-_080F6BDE:
- adds r1, r4, r2
- lsls r1, 1
- add r1, r10
- adds r0, r3, r2
- add r0, r9
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r5
- bcc _080F6BDE
-_080F6BFA:
- lsls r0, r6, 24
- lsrs r0, 24
- cmp r0, r8
- bcc _080F6BCC
-_080F6C02:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F6B94
-
- thumb_func_start sub_80F6C14
-sub_80F6C14: @ 80F6C14
- push {lr}
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- pop {r0}
- bx r0
- thumb_func_end sub_80F6C14
-
- thumb_func_start InitStandardTextBoxWindows
-InitStandardTextBoxWindows: @ 80F6C6C
- push {lr}
- ldr r0, _080F6C84 @ =gUnknown_841F42C
- bl InitWindows
- ldr r1, _080F6C88 @ =gUnknown_203ABE0
- movs r0, 0xFF
- strb r0, [r1]
- bl sub_8112EA8
- pop {r0}
- bx r0
- .align 2, 0
-_080F6C84: .4byte gUnknown_841F42C
-_080F6C88: .4byte gUnknown_203ABE0
- thumb_func_end InitStandardTextBoxWindows
-
- thumb_func_start sub_80F6C8C
-sub_80F6C8C: @ 80F6C8C
- push {lr}
- bl FreeAllWindowBuffers
- pop {r0}
- bx r0
- thumb_func_end sub_80F6C8C
-
- thumb_func_start ResetBg0
-ResetBg0: @ 80F6C98
- push {lr}
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- bl DeactivateAllTextPrinters
- bl sub_80F6E9C
- pop {r0}
- bx r0
- thumb_func_end ResetBg0
-
- thumb_func_start sub_80F6CBC
-sub_80F6CBC: @ 80F6CBC
- push {lr}
- bl RunTextPrinters
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_80F6CBC
-
- thumb_func_start AddTextPrinterParametrized
-AddTextPrinterParametrized: @ 80F6CD0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- ldr r7, [sp, 0x28]
- ldr r4, [sp, 0x2C]
- mov r8, r4
- ldr r5, [sp, 0x30]
- ldr r6, [sp, 0x34]
- lsls r3, 24
- lsrs r3, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- str r2, [sp]
- mov r2, sp
- movs r4, 0
- strb r0, [r2, 0x4]
- mov r0, sp
- strb r1, [r0, 0x5]
- strb r4, [r0, 0x6]
- movs r1, 0x1
- strb r1, [r0, 0x7]
- strb r4, [r0, 0x8]
- strb r1, [r0, 0x9]
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r4, sp
- ldrb r2, [r4, 0xC]
- subs r1, 0x11
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r4, 0xC]
- mov r0, sp
- mov r2, r8
- lsls r2, 4
- movs r4, 0xF
- strb r2, [r0, 0xC]
- mov r2, sp
- ands r5, r4
- ldrb r0, [r2, 0xD]
- ands r1, r0
- orrs r1, r5
- strb r1, [r2, 0xD]
- mov r0, sp
- lsrs r6, 20
- ands r1, r4
- orrs r1, r6
- strb r1, [r0, 0xD]
- ldr r2, _080F6D58 @ =gTextFlags
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- mov r0, sp
- adds r1, r3, 0
- adds r2, r7, 0
- bl AddTextPrinter
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080F6D58: .4byte gTextFlags
- thumb_func_end AddTextPrinterParametrized
-
- thumb_func_start sub_80F6D5C
-sub_80F6D5C: @ 80F6D5C
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- ldr r3, _080F6DA8 @ =gTextFlags
- movs r4, 0x1
- ands r0, r4
- ldrb r2, [r3]
- movs r1, 0x2
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3]
- bl sub_80CBE00
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080F6DB0
- bl GetTextSpeedSetting
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- ldr r2, _080F6DAC @ =gStringVar4
- str r5, [sp]
- movs r0, 0x8
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- bl AddTextPrinterParametrized
- b _080F6DFC
- .align 2, 0
-_080F6DA8: .4byte gTextFlags
-_080F6DAC: .4byte gStringVar4
-_080F6DB0:
- cmp r0, 0x1
- bne _080F6DDC
- bl GetTextSpeedSetting
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- ldr r2, _080F6DD8 @ =gStringVar4
- str r5, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x5
- bl AddTextPrinterParametrized
- b _080F6DFC
- .align 2, 0
-_080F6DD8: .4byte gStringVar4
-_080F6DDC:
- bl GetTextSpeedSetting
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- ldr r2, _080F6E04 @ =gStringVar4
- str r5, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x2
- bl AddTextPrinterParametrized
-_080F6DFC:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F6E04: .4byte gStringVar4
- thumb_func_end sub_80F6D5C
-
- thumb_func_start sub_80F6E08
-sub_80F6E08: @ 80F6E08
- push {r4,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080F6E4C @ =gTextFlags
- movs r4, 0x1
- ands r0, r4
- ldrb r2, [r3]
- movs r1, 0x2
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3]
- bl GetTextSpeedSetting
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- ldr r2, _080F6E50 @ =gStringVar4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x2
- bl AddTextPrinterParametrized
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F6E4C: .4byte gTextFlags
-_080F6E50: .4byte gStringVar4
- thumb_func_end sub_80F6E08
-
- thumb_func_start sub_80F6E54
-sub_80F6E54: @ 80F6E54
- push {r4,r5,lr}
- sub sp, 0x10
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r4, _080F6E94 @ =gTextFlags
- movs r5, 0x1
- ands r0, r5
- ldrb r2, [r4]
- movs r1, 0x2
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r4]
- ldr r2, _080F6E98 @ =gStringVar4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x2
- bl AddTextPrinterParametrized
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F6E94: .4byte gTextFlags
-_080F6E98: .4byte gStringVar4
- thumb_func_end sub_80F6E54
-
- thumb_func_start sub_80F6E9C
-sub_80F6E9C: @ 80F6E9C
- push {lr}
- ldr r0, _080F6EBC @ =gUnknown_203ADFA
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080F6EC4
- ldr r2, _080F6EC0 @ =gTextFlags
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl sub_814FF98
- b _080F6ED4
- .align 2, 0
-_080F6EBC: .4byte gUnknown_203ADFA
-_080F6EC0: .4byte gTextFlags
-_080F6EC4:
- bl sub_80F77B8
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- movs r2, 0xF0
- bl sub_814FEAC
-_080F6ED4:
- movs r1, 0x85
- lsls r1, 2
- movs r0, 0
- movs r2, 0xE0
- bl sub_815001C
- pop {r0}
- bx r0
- thumb_func_end sub_80F6E9C
-
- thumb_func_start DrawDialogueFrame
-DrawDialogueFrame: @ 80F6EE4
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080F6F18 @ =sub_80F7124
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _080F6F12
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_080F6F12:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F6F18: .4byte sub_80F7124
- thumb_func_end DrawDialogueFrame
-
- thumb_func_start DrawStdWindowFrame
-DrawStdWindowFrame: @ 80F6F1C
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080F6F50 @ =sub_80F6FD4
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _080F6F4A
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_080F6F4A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F6F50: .4byte sub_80F6FD4
- thumb_func_end DrawStdWindowFrame
-
- thumb_func_start ClearDialogWindowAndFrame
-ClearDialogWindowAndFrame: @ 80F6F54
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080F6F94 @ =sub_80F76CC
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl ClearWindowTilemap
- cmp r4, 0x1
- bne _080F6F82
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_080F6F82:
- ldr r0, _080F6F98 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080F6F8E
- bl sub_8111134
-_080F6F8E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F6F94: .4byte sub_80F76CC
-_080F6F98: .4byte gUnknown_203ADFA
- thumb_func_end ClearDialogWindowAndFrame
-
- thumb_func_start ClearStdWindowAndFrame
-ClearStdWindowAndFrame: @ 80F6F9C
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080F6FD0 @ =sub_80F7684
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl ClearWindowTilemap
- cmp r4, 0x1
- bne _080F6FCA
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_080F6FCA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F6FD0: .4byte sub_80F7684
- thumb_func_end ClearStdWindowAndFrame
-
- thumb_func_start sub_80F6FD4
-sub_80F6FD4: @ 80F6FD4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- adds r4, r2, 0
- ldr r2, [sp, 0x3C]
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsls r4, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x10]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x14]
- movs r3, 0x85
- lsls r3, 2
- lsrs r0, r1, 24
- str r0, [sp, 0xC]
- movs r2, 0xFF
- lsls r2, 24
- adds r2, r1
- mov r8, r2
- lsrs r2, 24
- lsrs r0, r4, 24
- mov r9, r0
- movs r0, 0xFF
- lsls r0, 24
- adds r4, r0
- lsrs r4, 24
- movs r5, 0x1
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r6, 0xE
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r1, r3, 0
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F710C @ =0x00000215
- ldr r2, [sp, 0x10]
- str r2, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0xC]
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7110 @ =0x00000216
- ldr r3, [sp, 0xC]
- ldr r2, [sp, 0x10]
- adds r0, r3, r2
- lsls r0, 24
- mov r10, r0
- lsrs r2, r0, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- mov r5, r9
- ldr r0, [sp, 0x14]
- add r0, r9
- cmp r9, r0
- bge _080F70A8
- mov r3, r8
- str r3, [sp, 0x18]
- movs r6, 0x1
- movs r0, 0xE
- mov r8, r0
-_080F706E:
- lsls r4, r5, 24
- lsrs r4, 24
- str r6, [sp]
- str r6, [sp, 0x4]
- mov r2, r8
- str r2, [sp, 0x8]
- adds r0, r7, 0
- ldr r1, _080F7114 @ =0x00000217
- ldr r3, [sp, 0x18]
- lsrs r2, r3, 24
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- str r6, [sp]
- str r6, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- adds r0, r7, 0
- ldr r1, _080F7118 @ =0x00000219
- mov r3, r10
- lsrs r2, r3, 24
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- adds r5, 0x1
- ldr r0, [sp, 0x14]
- add r0, r9
- cmp r5, r0
- blt _080F706E
-_080F70A8:
- ldr r1, _080F711C @ =0x0000021a
- ldr r2, [sp, 0xC]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r4, [sp, 0x14]
- add r4, r9
- lsls r4, 24
- lsrs r4, 24
- movs r5, 0x1
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r6, 0xE
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7120 @ =0x0000021b
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0xC]
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- movs r1, 0x87
- lsls r1, 2
- ldr r3, [sp, 0xC]
- ldr r0, [sp, 0x10]
- adds r2, r3, r0
- lsls r2, 24
- lsrs r2, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- 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
-_080F710C: .4byte 0x00000215
-_080F7110: .4byte 0x00000216
-_080F7114: .4byte 0x00000217
-_080F7118: .4byte 0x00000219
-_080F711C: .4byte 0x0000021a
-_080F7120: .4byte 0x0000021b
- thumb_func_end sub_80F6FD4
-
- thumb_func_start sub_80F7124
-sub_80F7124: @ 80F7124
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0xC]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- bl sub_8069A38
- lsls r0, 24
- cmp r0, 0
- beq _080F715A
- ldr r0, _080F7390 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _080F715A
- b _080F73E8
-_080F715A:
- movs r1, 0x80
- lsls r1, 2
- ldr r0, [sp, 0xC]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r5, [sp, 0x10]
- subs r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r6, 0xF
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r10
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7394 @ =0x00000201
- ldr r2, [sp, 0xC]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7398 @ =0x00000202
- ldr r0, [sp, 0x14]
- str r0, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0xC]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F739C @ =0x00000203
- ldr r2, [sp, 0xC]
- ldr r0, [sp, 0x14]
- adds r2, r0
- mov r8, r2
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x18]
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- movs r1, 0x81
- lsls r1, 2
- add r8, r4
- mov r2, r8
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73A0 @ =0x00000205
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r10
- ldr r3, [sp, 0x10]
- bl FillBgTilemapBufferRect
- ldr r1, _080F73A4 @ =0x00000206
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r9
- ldr r3, [sp, 0x10]
- bl FillBgTilemapBufferRect
- movs r1, 0x82
- lsls r1, 2
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x10]
- bl FillBgTilemapBufferRect
- ldr r1, _080F73A8 @ =0x00000209
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r8
- ldr r3, [sp, 0x10]
- bl FillBgTilemapBufferRect
- ldr r1, _080F73AC @ =0x0000020a
- ldr r5, [sp, 0x10]
- adds r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r10
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73B0 @ =0x0000020b
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r9
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- movs r1, 0x83
- lsls r1, 2
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73B4 @ =0x0000020d
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r8
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73B8 @ =0x00000a0a
- ldr r5, [sp, 0x10]
- adds r5, 0x2
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r10
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73BC @ =0x00000a0b
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r9
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73C0 @ =0x00000a0c
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73C4 @ =0x00000a0d
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r8
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73C8 @ =0x00000a05
- ldr r5, [sp, 0x10]
- adds r5, 0x3
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r10
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73CC @ =0x00000a06
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r9
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73D0 @ =0x00000a08
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73D4 @ =0x00000a09
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r8
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- movs r1, 0xA0
- lsls r1, 4
- ldr r5, [sp, 0x10]
- adds r5, 0x4
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r10
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73D8 @ =0x00000a01
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r9
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73DC @ =0x00000a02
- ldr r0, [sp, 0x14]
- str r0, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0xC]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73E0 @ =0x00000a03
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F73E4 @ =0x00000a04
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r8
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- b _080F761E
- .align 2, 0
-_080F7390: .4byte gUnknown_203ADFA
-_080F7394: .4byte 0x00000201
-_080F7398: .4byte 0x00000202
-_080F739C: .4byte 0x00000203
-_080F73A0: .4byte 0x00000205
-_080F73A4: .4byte 0x00000206
-_080F73A8: .4byte 0x00000209
-_080F73AC: .4byte 0x0000020a
-_080F73B0: .4byte 0x0000020b
-_080F73B4: .4byte 0x0000020d
-_080F73B8: .4byte 0x00000a0a
-_080F73BC: .4byte 0x00000a0b
-_080F73C0: .4byte 0x00000a0c
-_080F73C4: .4byte 0x00000a0d
-_080F73C8: .4byte 0x00000a05
-_080F73CC: .4byte 0x00000a06
-_080F73D0: .4byte 0x00000a08
-_080F73D4: .4byte 0x00000a09
-_080F73D8: .4byte 0x00000a01
-_080F73DC: .4byte 0x00000a02
-_080F73E0: .4byte 0x00000a03
-_080F73E4: .4byte 0x00000a04
-_080F73E8:
- movs r1, 0x80
- lsls r1, 2
- ldr r2, [sp, 0xC]
- subs r2, 0x2
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- ldr r5, [sp, 0x10]
- subs r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r6, 0xF
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7630 @ =0x00000201
- ldr r0, [sp, 0xC]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r9
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7634 @ =0x00000202
- ldr r2, [sp, 0x14]
- str r2, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0xC]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7638 @ =0x00000203
- ldr r0, [sp, 0xC]
- ldr r2, [sp, 0x14]
- adds r0, r2
- mov r8, r0
- lsls r2, r0, 24
- lsrs r2, 24
- str r2, [sp, 0x1C]
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- movs r1, 0x81
- lsls r1, 2
- add r8, r4
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r8
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F763C @ =0x00000205
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r10
- ldr r3, [sp, 0x10]
- bl FillBgTilemapBufferRect
- ldr r1, _080F7640 @ =0x00000206
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r9
- ldr r3, [sp, 0x10]
- bl FillBgTilemapBufferRect
- movs r1, 0x82
- lsls r1, 2
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0x1C]
- ldr r3, [sp, 0x10]
- bl FillBgTilemapBufferRect
- ldr r1, _080F7644 @ =0x00000209
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r8
- ldr r3, [sp, 0x10]
- bl FillBgTilemapBufferRect
- ldr r1, _080F7648 @ =0x0000020a
- ldr r5, [sp, 0x10]
- adds r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r10
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F764C @ =0x0000020b
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r9
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- movs r1, 0x83
- lsls r1, 2
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7650 @ =0x0000020d
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r8
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7654 @ =0x00000a05
- ldr r5, [sp, 0x10]
- adds r5, 0x2
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r10
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7658 @ =0x00000a06
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r9
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F765C @ =0x00000a08
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7660 @ =0x00000a09
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r8
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7664 @ =0x00000a0a
- ldr r5, [sp, 0x10]
- adds r5, 0x3
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r10
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7668 @ =0x00000a0b
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r9
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F766C @ =0x00000a0c
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7670 @ =0x00000a0d
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r8
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- movs r1, 0xA0
- lsls r1, 4
- ldr r5, [sp, 0x10]
- adds r5, 0x4
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r10
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7674 @ =0x00000a01
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r9
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7678 @ =0x00000a02
- ldr r2, [sp, 0x14]
- str r2, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0xC]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F767C @ =0x00000a03
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, _080F7680 @ =0x00000a04
- str r4, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- mov r2, r8
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
-_080F761E:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F7630: .4byte 0x00000201
-_080F7634: .4byte 0x00000202
-_080F7638: .4byte 0x00000203
-_080F763C: .4byte 0x00000205
-_080F7640: .4byte 0x00000206
-_080F7644: .4byte 0x00000209
-_080F7648: .4byte 0x0000020a
-_080F764C: .4byte 0x0000020b
-_080F7650: .4byte 0x0000020d
-_080F7654: .4byte 0x00000a05
-_080F7658: .4byte 0x00000a06
-_080F765C: .4byte 0x00000a08
-_080F7660: .4byte 0x00000a09
-_080F7664: .4byte 0x00000a0a
-_080F7668: .4byte 0x00000a0b
-_080F766C: .4byte 0x00000a0c
-_080F7670: .4byte 0x00000a0d
-_080F7674: .4byte 0x00000a01
-_080F7678: .4byte 0x00000a02
-_080F767C: .4byte 0x00000a03
-_080F7680: .4byte 0x00000a04
- thumb_func_end sub_80F7124
-
- thumb_func_start sub_80F7684
-sub_80F7684: @ 80F7684
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsls r5, 24
- lsls r3, 24
- lsls r1, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r4, r2
- lsrs r4, 24
- adds r5, r2
- lsrs r5, 24
- movs r2, 0x80
- lsls r2, 18
- adds r3, r2
- lsrs r3, 24
- str r3, [sp]
- adds r1, r2
- lsrs r1, 24
- str r1, [sp, 0x4]
- movs r1, 0xE
- str r1, [sp, 0x8]
- movs r1, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F7684
-
- thumb_func_start sub_80F76CC
-sub_80F76CC: @ 80F76CC
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsls r5, 24
- lsls r3, 24
- lsls r1, 24
- movs r2, 0xFE
- lsls r2, 24
- adds r4, r2
- lsrs r4, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r5, r2
- lsrs r5, 24
- movs r2, 0x80
- lsls r2, 19
- adds r3, r2
- lsrs r3, 24
- str r3, [sp]
- movs r2, 0x80
- lsls r2, 18
- adds r1, r2
- lsrs r1, 24
- str r1, [sp, 0x4]
- movs r1, 0xE
- str r1, [sp, 0x8]
- movs r1, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F76CC
-
- thumb_func_start sub_80F771C
-sub_80F771C: @ 80F771C
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- cmp r4, 0x1
- bne _080F7746
- movs r0, 0
- bl CopyBgTilemapBufferToVram
-_080F7746:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F771C
-
- thumb_func_start sub_80F7750
-sub_80F7750: @ 80F7750
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x85
- lsls r2, 2
- movs r3, 0xE
- bl SetWindowBorderStyle
- pop {r0}
- bx r0
- thumb_func_end sub_80F7750
-
- thumb_func_start sub_80F7768
-sub_80F7768: @ 80F7768
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _080F7790 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080F7798
- ldr r2, _080F7794 @ =gTextFlags
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl sub_814FF98
- b _080F77A4
- .align 2, 0
-_080F7790: .4byte gUnknown_203ADFA
-_080F7794: .4byte gTextFlags
-_080F7798:
- movs r1, 0x80
- lsls r1, 2
- adds r0, r4, 0
- movs r2, 0xF0
- bl sub_814FEAC
-_080F77A4:
- movs r2, 0x80
- lsls r2, 2
- adds r0, r4, 0
- adds r1, r5, 0
- movs r3, 0xF
- bl sub_810EDC4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F7768
-
- thumb_func_start sub_80F77B8
-sub_80F77B8: @ 80F77B8
- push {lr}
- ldr r0, _080F77C8 @ =gTMCaseMainWindowPalette
- movs r1, 0xE0
- movs r2, 0x14
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_080F77C8: .4byte gTMCaseMainWindowPalette
- thumb_func_end sub_80F77B8
-
- thumb_func_start Menu_LoadStdPalAt
-Menu_LoadStdPalAt: @ 80F77CC
- push {lr}
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _080F77E0 @ =gTMCaseMainWindowPalette
- movs r2, 0x14
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_080F77E0: .4byte gTMCaseMainWindowPalette
- thumb_func_end Menu_LoadStdPalAt
-
- thumb_func_start sub_80F77E4
-sub_80F77E4: @ 80F77E4
- ldr r0, _080F77E8 @ =gTMCaseMainWindowPalette
- bx lr
- .align 2, 0
-_080F77E8: .4byte gTMCaseMainWindowPalette
- thumb_func_end sub_80F77E4
-
- thumb_func_start sub_80F77EC
-sub_80F77EC: @ 80F77EC
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _080F77F8
- movs r1, 0
-_080F77F8:
- ldr r0, _080F7804 @ =gTMCaseMainWindowPalette
- lsls r1, 1
- adds r1, r0
- ldrh r0, [r1]
- pop {r1}
- bx r1
- .align 2, 0
-_080F7804: .4byte gTMCaseMainWindowPalette
- thumb_func_end sub_80F77EC
-
- thumb_func_start DisplayItemMessageOnField
-DisplayItemMessageOnField: @ 80F7808
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x10
- adds r5, r0, 0
- adds r4, r1, 0
- adds r6, r2, 0
- mov r8, r3
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- bl sub_80F6E9C
- bl GetTextSpeedSetting
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 2
- str r4, [sp]
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- mov r0, r8
- str r0, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0
- movs r3, 0xF
- bl DisplayMessageAndContinueTask
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end DisplayItemMessageOnField
-
- thumb_func_start sub_80F7858
-sub_80F7858: @ 80F7858
- push {lr}
- sub sp, 0xC
- ldr r0, _080F787C @ =gUnknown_841F43C
- movs r1, 0x85
- lsls r1, 2
- str r1, [sp]
- movs r1, 0xE
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl CreateYesNoMenu
- add sp, 0xC
- pop {r0}
- bx r0
- .align 2, 0
-_080F787C: .4byte gUnknown_841F43C
- thumb_func_end sub_80F7858
-
- thumb_func_start sub_80F7880
-sub_80F7880: @ 80F7880
- push {lr}
- sub sp, 0xC
- ldr r0, _080F78A4 @ =gUnknown_841F43C
- movs r1, 0x85
- lsls r1, 2
- str r1, [sp]
- movs r1, 0xE
- str r1, [sp, 0x4]
- movs r1, 0x1
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl CreateYesNoMenu
- add sp, 0xC
- pop {r0}
- bx r0
- .align 2, 0
-_080F78A4: .4byte gUnknown_841F43C
- thumb_func_end sub_80F7880
-
- thumb_func_start GetTextSpeedSetting
-GetTextSpeedSetting: @ 80F78A8
- push {lr}
- ldr r3, _080F78D8 @ =gSaveBlock2Ptr
- ldr r2, [r3]
- ldrb r1, [r2, 0x14]
- lsls r0, r1, 29
- lsrs r0, 29
- cmp r0, 0x2
- bls _080F78C4
- movs r0, 0x8
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x14]
-_080F78C4:
- ldr r1, _080F78DC @ =gUnknown_841F428
- ldr r0, [r3]
- ldrb r0, [r0, 0x14]
- lsls r0, 29
- lsrs r0, 29
- adds r0, r1
- ldrb r0, [r0]
- pop {r1}
- bx r1
- .align 2, 0
-_080F78D8: .4byte gSaveBlock2Ptr
-_080F78DC: .4byte gUnknown_841F428
- thumb_func_end GetTextSpeedSetting
-
- thumb_func_start sub_80F78E0
-sub_80F78E0: @ 80F78E0
- push {r4,lr}
- sub sp, 0x20
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r4, _080F7934 @ =gUnknown_203ABE0
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _080F792A
- movs r0, 0x7
- str r0, [sp]
- lsls r0, r1, 25
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- ldr r0, _080F7938 @ =0x0000013d
- str r0, [sp, 0xC]
- add r0, sp, 0x10
- movs r1, 0
- movs r2, 0x16
- movs r3, 0x1
- bl SetWindowTemplateFields
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- add r0, sp, 0x18
- bl AddWindow
- strb r0, [r4]
- ldrb r0, [r4]
- bl PutWindowTilemap
-_080F792A:
- ldrb r0, [r4]
- add sp, 0x20
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F7934: .4byte gUnknown_203ABE0
-_080F7938: .4byte 0x0000013d
- thumb_func_end sub_80F78E0
-
- thumb_func_start GetStartMenuWindowId
-GetStartMenuWindowId: @ 80F793C
- ldr r0, _080F7944 @ =gUnknown_203ABE0
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080F7944: .4byte gUnknown_203ABE0
- thumb_func_end GetStartMenuWindowId
-
- thumb_func_start remove_start_menu_window_maybe
-remove_start_menu_window_maybe: @ 80F7948
- push {r4,lr}
- ldr r4, _080F7960 @ =gUnknown_203ABE0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _080F795A
- bl RemoveWindow
- movs r0, 0xFF
- strb r0, [r4]
-_080F795A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F7960: .4byte gUnknown_203ABE0
- thumb_func_end remove_start_menu_window_maybe
-
- thumb_func_start sub_80F7964
-sub_80F7964: @ 80F7964
- movs r0, 0x80
- lsls r0, 2
- bx lr
- thumb_func_end sub_80F7964
-
- thumb_func_start sub_80F796C
-sub_80F796C: @ 80F796C
- movs r0, 0x85
- lsls r0, 2
- bx lr
- thumb_func_end sub_80F796C
-
- thumb_func_start sub_80F7974
-sub_80F7974: @ 80F7974
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8112EB4
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x80
- lsls r1, 2
- movs r2, 0xF0
- bl sub_814FE6C
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_8113018
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F7974
-
- thumb_func_start sub_80F7998
-sub_80F7998: @ 80F7998
- push {lr}
- movs r0, 0x2
- bl sub_8112EDC
- pop {r0}
- bx r0
- thumb_func_end sub_80F7998
-
- thumb_func_start sub_80F79A4
-sub_80F79A4: @ 80F79A4
- push {lr}
- bl sub_80F77B8
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- movs r2, 0xF0
- bl sub_814FEEC
- movs r1, 0x85
- lsls r1, 2
- movs r0, 0
- movs r2, 0xE0
- bl sub_815001C
- pop {r0}
- bx r0
- thumb_func_end sub_80F79A4
-
- thumb_func_start SetDefaultFontsPointer
-SetDefaultFontsPointer: @ 80F79C8
- push {lr}
- ldr r0, _080F79D4 @ =gUnknown_841F444
- bl SetFontsPointer
- pop {r0}
- bx r0
- .align 2, 0
-_080F79D4: .4byte gUnknown_841F444
- thumb_func_end SetDefaultFontsPointer
-
- thumb_func_start GetFontAttribute
-GetFontAttribute: @ 80F79D8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- cmp r1, 0x7
- bhi _080F7AB6
- lsls r0, r1, 2
- ldr r1, _080F79F4 @ =_080F79F8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F79F4: .4byte _080F79F8
- .align 2, 0
-_080F79F8:
- .4byte _080F7A18
- .4byte _080F7A2C
- .4byte _080F7A40
- .4byte _080F7A54
- .4byte _080F7A68
- .4byte _080F7A7C
- .4byte _080F7A90
- .4byte _080F7AA8
-_080F7A18:
- ldr r1, _080F7A28 @ =gUnknown_841F444
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x4]
- b _080F7AB6
- .align 2, 0
-_080F7A28: .4byte gUnknown_841F444
-_080F7A2C:
- ldr r1, _080F7A3C @ =gUnknown_841F444
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x5]
- b _080F7AB6
- .align 2, 0
-_080F7A3C: .4byte gUnknown_841F444
-_080F7A40:
- ldr r1, _080F7A50 @ =gUnknown_841F444
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x6]
- b _080F7AB6
- .align 2, 0
-_080F7A50: .4byte gUnknown_841F444
-_080F7A54:
- ldr r1, _080F7A64 @ =gUnknown_841F444
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x7]
- b _080F7AB6
- .align 2, 0
-_080F7A64: .4byte gUnknown_841F444
-_080F7A68:
- ldr r0, _080F7A78 @ =gUnknown_841F444
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x8]
- b _080F7A9C
- .align 2, 0
-_080F7A78: .4byte gUnknown_841F444
-_080F7A7C:
- ldr r0, _080F7A8C @ =gUnknown_841F444
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x8]
- b _080F7AB4
- .align 2, 0
-_080F7A8C: .4byte gUnknown_841F444
-_080F7A90:
- ldr r0, _080F7AA4 @ =gUnknown_841F444
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x9]
-_080F7A9C:
- lsls r0, 28
- lsrs r0, 28
- b _080F7AB6
- .align 2, 0
-_080F7AA4: .4byte gUnknown_841F444
-_080F7AA8:
- ldr r0, _080F7ABC @ =gUnknown_841F444
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x9]
-_080F7AB4:
- lsrs r0, 4
-_080F7AB6:
- pop {r1}
- bx r1
- .align 2, 0
-_080F7ABC: .4byte gUnknown_841F444
- thumb_func_end GetFontAttribute
-
- thumb_func_start GetMenuCursorDimensionByFont
-GetMenuCursorDimensionByFont: @ 80F7AC0
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080F7AD4 @ =gUnknown_841F4A4
- lsrs r0, 23
- adds r1, r0
- adds r1, r2
- ldrb r0, [r1]
- bx lr
- .align 2, 0
-_080F7AD4: .4byte gUnknown_841F4A4
- thumb_func_end GetMenuCursorDimensionByFont
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/normal.s b/asm/normal.s
new file mode 100644
index 000000000..165fa150f
--- /dev/null
+++ b/asm/normal.s
@@ -0,0 +1,1978 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80B9904
+sub_80B9904: @ 80B9904
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080B993C @ =gBattleAnimArgs
+ ldrh r0, [r5]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x2E]
+ ldr r0, _080B9940 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _080B9944
+ ldrh r0, [r5, 0x6]
+ negs r0, r0
+ strh r0, [r4, 0x30]
+ movs r0, 0x1
+ strh r0, [r4, 0x36]
+ b _080B9952
+ .align 2, 0
+_080B993C: .4byte gBattleAnimArgs
+_080B9940: .4byte gBattleAnimAttacker
+_080B9944:
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x30]
+ strh r1, [r4, 0x36]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+_080B9952:
+ ldr r0, _080B9968 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x8]
+ strh r0, [r4, 0x34]
+ ldr r1, _080B996C @ =sub_80B9970
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9968: .4byte gBattleAnimArgs
+_080B996C: .4byte sub_80B9970
+ thumb_func_end sub_80B9904
+
+ thumb_func_start sub_80B9970
+sub_80B9970: @ 80B9970
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x1E
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ movs r1, 0xA
+ bl Sin
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x2E]
+ cmp r0, 0x7F
+ bhi _080B99A2
+ ldrb r0, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x4
+ orrs r1, r0
+ strb r1, [r4, 0x5]
+ b _080B99AA
+_080B99A2:
+ ldrb r0, [r4, 0x5]
+ movs r1, 0xC
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+_080B99AA:
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x2E]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ bne _080B99CE
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B99CE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B9970
+
+ thumb_func_start sub_80B99D4
+sub_80B99D4: @ 80B99D4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldr r4, _080B9A0C @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ bl sub_80B9A14
+ movs r1, 0x2
+ ldrsb r1, [r4, r1]
+ ldrb r2, [r4, 0x4]
+ ldrb r3, [r4, 0x6]
+ ldrh r4, [r4, 0x8]
+ str r4, [sp]
+ bl BeginNormalPaletteFade
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080B9A10 @ =sub_80B9A5C
+ str r0, [r5, 0x1C]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9A0C: .4byte gBattleAnimArgs
+_080B9A10: .4byte sub_80B9A5C
+ thumb_func_end sub_80B99D4
+
+ thumb_func_start sub_80B9A14
+sub_80B9A14: @ 80B9A14
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0xC
+ lsls r0, 16
+ lsrs r0, 16
+ movs r4, 0x1
+ mov r8, r0
+ mov r1, r8
+ ands r1, r4
+ mov r8, r1
+ lsls r0, 16
+ asrs r1, r0, 17
+ ands r1, r4
+ asrs r2, r0, 18
+ ands r2, r4
+ asrs r3, r0, 19
+ ands r3, r4
+ asrs r6, r0, 20
+ ands r6, r4
+ asrs r5, r0, 21
+ ands r5, r4
+ asrs r0, 22
+ ands r0, r4
+ str r6, [sp]
+ str r5, [sp, 0x4]
+ str r0, [sp, 0x8]
+ mov r0, r8
+ bl sub_8075BE8
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80B9A14
+
+ thumb_func_start sub_80B9A5C
+sub_80B9A5C: @ 80B9A5C
+ push {lr}
+ adds r2, r0, 0
+ ldr r0, _080B9A78 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080B9A72
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080B9A72:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9A78: .4byte gPaletteFade
+ thumb_func_end sub_80B9A5C
+
+ thumb_func_start sub_80B9A7C
+sub_80B9A7C: @ 80B9A7C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080B9AC8 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x2]
+ strh r0, [r5, 0x2E]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r4, 0x4]
+ strh r0, [r5, 0x32]
+ ldrh r0, [r4, 0x6]
+ strh r0, [r5, 0x34]
+ ldrh r0, [r4, 0x8]
+ strh r0, [r5, 0x36]
+ ldrh r0, [r4, 0xA]
+ strh r0, [r5, 0x38]
+ ldrh r0, [r4, 0xC]
+ strh r0, [r5, 0x3A]
+ ldrh r0, [r4]
+ strh r0, [r5, 0x3C]
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ bl sub_80B9A14
+ ldrb r1, [r4, 0x8]
+ ldrh r2, [r4, 0x6]
+ bl BlendPalettes
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080B9ACC @ =sub_80B9AD0
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9AC8: .4byte gBattleAnimArgs
+_080B9ACC: .4byte sub_80B9AD0
+ thumb_func_end sub_80B9A7C
+
+ thumb_func_start sub_80B9AD0
+sub_80B9AD0: @ 80B9AD0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080B9AE4
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x2E]
+ b _080B9B54
+_080B9AE4:
+ ldr r0, _080B9B00 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080B9B54
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B9B08
+ ldr r0, _080B9B04 @ =sub_80B9B5C
+ str r0, [r4, 0x1C]
+ b _080B9B54
+ .align 2, 0
+_080B9B00: .4byte gPaletteFade
+_080B9B04: .4byte sub_80B9B5C
+_080B9B08:
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ bl sub_80B9A14
+ adds r3, r0, 0
+ ldrh r1, [r4, 0x30]
+ movs r0, 0x80
+ lsls r0, 1
+ ands r0, r1
+ cmp r0, 0
+ beq _080B9B2E
+ ldrh r1, [r4, 0x36]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r4, 0x34]
+ adds r0, r3, 0
+ bl BlendPalettes
+ b _080B9B3C
+_080B9B2E:
+ ldrh r1, [r4, 0x3A]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r4, 0x38]
+ adds r0, r3, 0
+ bl BlendPalettes
+_080B9B3C:
+ ldrh r0, [r4, 0x30]
+ movs r2, 0x80
+ lsls r2, 1
+ adds r1, r2, 0
+ eors r0, r1
+ strh r0, [r4, 0x30]
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x32]
+ subs r0, 0x1
+ strh r0, [r4, 0x32]
+_080B9B54:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B9AD0
+
+ thumb_func_start sub_80B9B5C
+sub_80B9B5C: @ 80B9B5C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080B9B88 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080B9B82
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ bl sub_80B9A14
+ movs r1, 0
+ movs r2, 0
+ bl BlendPalettes
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B9B82:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9B88: .4byte gPaletteFade
+ thumb_func_end sub_80B9B5C
+
+ thumb_func_start sub_80B9B8C
+sub_80B9B8C: @ 80B9B8C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _080B9BD0 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ movs r2, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ strh r2, [r4, 0x2E]
+ movs r0, 0xA
+ strh r0, [r4, 0x30]
+ movs r0, 0x8
+ strh r0, [r4, 0x32]
+ movs r0, 0x28
+ strh r0, [r4, 0x34]
+ movs r0, 0x70
+ strh r0, [r4, 0x36]
+ strh r2, [r4, 0x38]
+ ldr r1, _080B9BD4 @ =move_anim_8074EE0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r1, _080B9BD8 @ =sub_8074AE0
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9BD0: .4byte gBattleAnimArgs
+_080B9BD4: .4byte move_anim_8074EE0
+_080B9BD8: .4byte sub_8074AE0
+ thumb_func_end sub_80B9B8C
+
+ thumb_func_start sub_80B9BDC
+sub_80B9BDC: @ 80B9BDC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080B9C20 @ =gTasks
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ adds r4, r1
+ ldr r3, _080B9C24 @ =gBattleAnimArgs
+ ldrh r1, [r3]
+ movs r5, 0
+ strh r1, [r4, 0x8]
+ ldrh r1, [r3, 0x2]
+ strh r1, [r4, 0xA]
+ ldrh r1, [r3, 0x4]
+ strh r1, [r4, 0xC]
+ ldrh r1, [r3, 0x6]
+ strh r1, [r4, 0xE]
+ ldrh r2, [r3, 0x8]
+ strh r2, [r4, 0x10]
+ ldrh r1, [r3, 0xA]
+ strh r1, [r4, 0x12]
+ strh r5, [r4, 0x18]
+ lsls r2, 24
+ lsrs r2, 24
+ movs r1, 0
+ bl sub_80B9C2C
+ ldr r0, _080B9C28 @ =sub_80B9C7C
+ str r0, [r4]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9C20: .4byte gTasks
+_080B9C24: .4byte gBattleAnimArgs
+_080B9C28: .4byte sub_80B9C7C
+ thumb_func_end sub_80B9BDC
+
+ thumb_func_start sub_80B9C2C
+sub_80B9C2C: @ 80B9C2C
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r5, r1, 0
+ adds r6, r2, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r6, 24
+ lsrs r6, 24
+ ldr r1, _080B9C78 @ =gTasks
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ adds r4, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ bl sub_80B9A14
+ movs r1, 0xA
+ ldrsb r1, [r4, r1]
+ ldrh r2, [r4, 0x12]
+ str r2, [sp]
+ adds r2, r5, 0
+ adds r3, r6, 0
+ bl BeginNormalPaletteFade
+ ldrh r0, [r4, 0xC]
+ subs r0, 0x1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x18]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r4, 0x18]
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9C78: .4byte gTasks
+ thumb_func_end sub_80B9C2C
+
+ thumb_func_start sub_80B9C7C
+sub_80B9C7C: @ 80B9C7C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r4, r3, 0
+ ldr r0, _080B9CB4 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080B9CDE
+ ldr r1, _080B9CB8 @ =gTasks
+ lsls r2, r3, 2
+ adds r0, r2, r3
+ lsls r0, 3
+ adds r3, r0, r1
+ movs r5, 0xC
+ ldrsh r0, [r3, r5]
+ adds r6, r1, 0
+ adds r5, r2, 0
+ cmp r0, 0
+ ble _080B9CD8
+ movs r1, 0x18
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ bne _080B9CBC
+ ldrb r1, [r3, 0xE]
+ ldrb r2, [r3, 0x10]
+ b _080B9CC0
+ .align 2, 0
+_080B9CB4: .4byte gPaletteFade
+_080B9CB8: .4byte gTasks
+_080B9CBC:
+ ldrb r1, [r3, 0x10]
+ ldrb r2, [r3, 0xE]
+_080B9CC0:
+ adds r0, r5, r4
+ lsls r0, 3
+ adds r0, r6
+ movs r3, 0xC
+ ldrsh r0, [r0, r3]
+ cmp r0, 0x1
+ bne _080B9CD0
+ movs r2, 0
+_080B9CD0:
+ adds r0, r4, 0
+ bl sub_80B9C2C
+ b _080B9CDE
+_080B9CD8:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080B9CDE:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B9C7C
+
+ thumb_func_start sub_80B9CE4
+sub_80B9CE4: @ 80B9CE4
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r5, 0
+ ldr r3, _080B9D88 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r0, r3
+ ldr r2, _080B9D8C @ =gBattleAnimArgs
+ ldrh r1, [r2]
+ strh r1, [r0, 0x8]
+ ldrh r1, [r2, 0x2]
+ strh r1, [r0, 0xA]
+ ldrh r1, [r2, 0x4]
+ strh r1, [r0, 0xC]
+ ldrh r1, [r2, 0x6]
+ strh r1, [r0, 0xE]
+ ldrh r1, [r2, 0x8]
+ strh r1, [r0, 0x10]
+ ldrh r1, [r2, 0xA]
+ strh r1, [r0, 0x12]
+ strh r5, [r0, 0x18]
+ movs r4, 0
+ ldr r0, _080B9D90 @ =gBattlersCount
+ ldrb r1, [r0]
+ mov r9, r3
+ mov r8, r2
+ cmp r5, r1
+ bge _080B9D4C
+ ldr r0, _080B9D94 @ =gBattleAnimAttacker
+ ldrb r3, [r0]
+ ldr r7, _080B9D98 @ =gBattleAnimTarget
+ movs r0, 0x1
+ mov r12, r0
+ adds r2, r1, 0
+_080B9D32:
+ cmp r4, r3
+ beq _080B9D46
+ ldrb r1, [r7]
+ cmp r4, r1
+ beq _080B9D46
+ adds r1, r4, 0
+ adds r1, 0x10
+ mov r0, r12
+ lsls r0, r1
+ orrs r5, r0
+_080B9D46:
+ adds r4, 0x1
+ cmp r4, r2
+ blt _080B9D32
+_080B9D4C:
+ mov r2, r8
+ movs r1, 0
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x1
+ bne _080B9D5A
+ movs r0, 0xE
+ orrs r5, r0
+_080B9D5A:
+ lsls r4, r6, 2
+ adds r4, r6
+ lsls r4, 3
+ add r4, r9
+ lsrs r0, r5, 16
+ strh r0, [r4, 0x1A]
+ movs r0, 0xFF
+ ands r5, r0
+ strh r5, [r4, 0x1C]
+ ldrb r2, [r4, 0x10]
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_80B9DA0
+ ldr r0, _080B9D9C @ =sub_80B9DF0
+ str r0, [r4]
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9D88: .4byte gTasks
+_080B9D8C: .4byte gBattleAnimArgs
+_080B9D90: .4byte gBattlersCount
+_080B9D94: .4byte gBattleAnimAttacker
+_080B9D98: .4byte gBattleAnimTarget
+_080B9D9C: .4byte sub_80B9DF0
+ thumb_func_end sub_80B9CE4
+
+ thumb_func_start sub_80B9DA0
+sub_80B9DA0: @ 80B9DA0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r1, 0
+ adds r3, r2, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r1, _080B9DEC @ =gTasks
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ adds r4, r1
+ ldrh r0, [r4, 0x1A]
+ lsls r0, 16
+ ldrh r1, [r4, 0x1C]
+ orrs r0, r1
+ movs r1, 0xA
+ ldrsb r1, [r4, r1]
+ ldrh r2, [r4, 0x12]
+ str r2, [sp]
+ adds r2, r5, 0
+ bl BeginNormalPaletteFade
+ ldrh r0, [r4, 0xC]
+ subs r0, 0x1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x18]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r4, 0x18]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9DEC: .4byte gTasks
+ thumb_func_end sub_80B9DA0
+
+ thumb_func_start sub_80B9DF0
+sub_80B9DF0: @ 80B9DF0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r4, r3, 0
+ ldr r0, _080B9E28 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080B9E52
+ ldr r1, _080B9E2C @ =gTasks
+ lsls r2, r3, 2
+ adds r0, r2, r3
+ lsls r0, 3
+ adds r3, r0, r1
+ movs r5, 0xC
+ ldrsh r0, [r3, r5]
+ adds r6, r1, 0
+ adds r5, r2, 0
+ cmp r0, 0
+ ble _080B9E4C
+ movs r1, 0x18
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ bne _080B9E30
+ ldrb r1, [r3, 0xE]
+ ldrb r2, [r3, 0x10]
+ b _080B9E34
+ .align 2, 0
+_080B9E28: .4byte gPaletteFade
+_080B9E2C: .4byte gTasks
+_080B9E30:
+ ldrb r1, [r3, 0x10]
+ ldrb r2, [r3, 0xE]
+_080B9E34:
+ adds r0, r5, r4
+ lsls r0, 3
+ adds r0, r6
+ movs r3, 0xC
+ ldrsh r0, [r0, r3]
+ cmp r0, 0x1
+ bne _080B9E44
+ movs r2, 0
+_080B9E44:
+ adds r0, r4, 0
+ bl sub_80B9DA0
+ b _080B9E52
+_080B9E4C:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080B9E52:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B9DF0
+
+ thumb_func_start sub_80B9E58
+sub_80B9E58: @ 80B9E58
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080B9E9C @ =gTasks
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ adds r4, r1
+ ldr r3, _080B9EA0 @ =gBattleAnimArgs
+ ldrh r1, [r3]
+ movs r5, 0
+ strh r1, [r4, 0x8]
+ ldrh r1, [r3, 0x2]
+ strh r1, [r4, 0xA]
+ ldrh r1, [r3, 0x4]
+ strh r1, [r4, 0xC]
+ ldrh r1, [r3, 0x6]
+ strh r1, [r4, 0xE]
+ ldrh r2, [r3, 0x8]
+ strh r2, [r4, 0x10]
+ ldrh r1, [r3, 0xA]
+ strh r1, [r4, 0x12]
+ strh r5, [r4, 0x18]
+ lsls r2, 24
+ lsrs r2, 24
+ movs r1, 0
+ bl sub_80B9EA8
+ ldr r0, _080B9EA4 @ =sub_80B9F04
+ str r0, [r4]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9E9C: .4byte gTasks
+_080B9EA0: .4byte gBattleAnimArgs
+_080B9EA4: .4byte sub_80B9F04
+ thumb_func_end sub_80B9E58
+
+ thumb_func_start sub_80B9EA8
+sub_80B9EA8: @ 80B9EA8
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r5, r1, 0
+ adds r6, r2, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r6, 24
+ lsrs r6, 24
+ ldr r1, _080B9F00 @ =gTasks
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ adds r4, r1
+ ldrh r0, [r4, 0x8]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ movs r2, 0x1
+ lsls r2, r0
+ movs r1, 0xA
+ ldrsb r1, [r4, r1]
+ ldrh r0, [r4, 0x12]
+ str r0, [sp]
+ adds r0, r2, 0
+ adds r2, r5, 0
+ adds r3, r6, 0
+ bl BeginNormalPaletteFade
+ ldrh r0, [r4, 0xC]
+ subs r0, 0x1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x18]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r4, 0x18]
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9F00: .4byte gTasks
+ thumb_func_end sub_80B9EA8
+
+ thumb_func_start sub_80B9F04
+sub_80B9F04: @ 80B9F04
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ adds r4, r3, 0
+ ldr r0, _080B9F3C @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080B9F66
+ ldr r1, _080B9F40 @ =gTasks
+ lsls r2, r3, 2
+ adds r0, r2, r3
+ lsls r0, 3
+ adds r3, r0, r1
+ movs r5, 0xC
+ ldrsh r0, [r3, r5]
+ adds r6, r1, 0
+ adds r5, r2, 0
+ cmp r0, 0
+ ble _080B9F60
+ movs r1, 0x18
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ bne _080B9F44
+ ldrb r1, [r3, 0xE]
+ ldrb r2, [r3, 0x10]
+ b _080B9F48
+ .align 2, 0
+_080B9F3C: .4byte gPaletteFade
+_080B9F40: .4byte gTasks
+_080B9F44:
+ ldrb r1, [r3, 0x10]
+ ldrb r2, [r3, 0xE]
+_080B9F48:
+ adds r0, r5, r4
+ lsls r0, 3
+ adds r0, r6
+ movs r3, 0xC
+ ldrsh r0, [r0, r3]
+ cmp r0, 0x1
+ bne _080B9F58
+ movs r2, 0
+_080B9F58:
+ adds r0, r4, 0
+ bl sub_80B9EA8
+ b _080B9F66
+_080B9F60:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080B9F66:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B9F04
+
+ thumb_func_start sub_80B9F6C
+sub_80B9F6C: @ 80B9F6C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080B9FCC @ =gTasks
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ adds r4, r1
+ ldr r5, _080B9FD0 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0x2]
+ strh r0, [r4, 0x8]
+ ldrh r0, [r5, 0x2]
+ strh r0, [r4, 0xA]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0xC]
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0xE]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r4, 0x10]
+ ldrh r0, [r5, 0xA]
+ strh r0, [r4, 0x12]
+ ldrh r0, [r5, 0xC]
+ strh r0, [r4, 0x14]
+ ldrh r0, [r5]
+ strh r0, [r4, 0x16]
+ ldrh r0, [r5]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ movs r1, 0x1
+ lsls r1, r0
+ ldrb r3, [r5, 0x8]
+ ldrh r0, [r5, 0x6]
+ str r0, [sp]
+ adds r0, r1, 0
+ movs r1, 0
+ adds r2, r3, 0
+ bl BeginNormalPaletteFade
+ ldr r0, _080B9FD4 @ =sub_80B9FD8
+ str r0, [r4]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B9FCC: .4byte gTasks
+_080B9FD0: .4byte gBattleAnimArgs
+_080B9FD4: .4byte sub_80B9FD8
+ thumb_func_end sub_80B9F6C
+
+ thumb_func_start sub_80B9FD8
+sub_80B9FD8: @ 80B9FD8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080B9FFC @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r1, [r4, 0x8]
+ movs r2, 0x8
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080BA000
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x8]
+ b _080BA084
+ .align 2, 0
+_080B9FFC: .4byte gTasks
+_080BA000:
+ ldr r0, _080BA01C @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _080BA084
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ bne _080BA024
+ ldr r0, _080BA020 @ =sub_80BA090
+ str r0, [r4]
+ b _080BA084
+ .align 2, 0
+_080BA01C: .4byte gPaletteFade
+_080BA020: .4byte sub_80BA090
+_080BA024:
+ ldrh r0, [r4, 0x16]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ movs r2, 0x1
+ lsls r2, r0
+ ldrh r1, [r4, 0xA]
+ movs r0, 0x80
+ lsls r0, 1
+ ands r0, r1
+ cmp r0, 0
+ beq _080BA052
+ ldrb r3, [r4, 0x10]
+ ldrh r0, [r4, 0xE]
+ str r0, [sp]
+ adds r0, r2, 0
+ movs r1, 0
+ adds r2, r3, 0
+ bl BeginNormalPaletteFade
+ b _080BA062
+_080BA052:
+ ldrb r3, [r4, 0x14]
+ ldrh r0, [r4, 0x12]
+ str r0, [sp]
+ adds r0, r2, 0
+ movs r1, 0
+ adds r2, r3, 0
+ bl BeginNormalPaletteFade
+_080BA062:
+ ldr r0, _080BA08C @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0xA]
+ movs r3, 0x80
+ lsls r3, 1
+ adds r2, r3, 0
+ eors r0, r2
+ strh r0, [r1, 0xA]
+ movs r2, 0xFF
+ ands r0, r2
+ strh r0, [r1, 0x8]
+ ldrh r0, [r1, 0xC]
+ subs r0, 0x1
+ strh r0, [r1, 0xC]
+_080BA084:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA08C: .4byte gTasks
+ thumb_func_end sub_80B9FD8
+
+ thumb_func_start sub_80BA090
+sub_80BA090: @ 80BA090
+ push {r4,r5,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080BA0E0 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _080BA0D6
+ ldr r1, _080BA0E4 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldrh r0, [r0, 0x16]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ movs r1, 0x1
+ lsls r1, r0
+ str r5, [sp]
+ adds r0, r1, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080BA0D6:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA0E0: .4byte gPaletteFade
+_080BA0E4: .4byte gTasks
+ thumb_func_end sub_80BA090
+
+ thumb_func_start sub_80BA0E8
+sub_80BA0E8: @ 80BA0E8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ movs r2, 0
+ ldr r0, _080BA160 @ =gBattleAnimAttacker
+ ldrb r6, [r0]
+ ldr r0, _080BA164 @ =gBattleAnimTarget
+ ldrb r7, [r0]
+ ldr r4, _080BA168 @ =gBattleAnimArgs
+ ldrh r1, [r4]
+ movs r5, 0x80
+ lsls r5, 1
+ adds r0, r5, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080BA122
+ str r2, [sp]
+ str r2, [sp, 0x4]
+ str r2, [sp, 0x8]
+ movs r0, 0x1
+ movs r1, 0
+ movs r3, 0
+ bl sub_8075BE8
+ adds r2, r0, 0
+_080BA122:
+ ldrh r1, [r4, 0x2]
+ adds r0, r5, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080BA134
+ movs r0, 0x80
+ lsls r0, 9
+ lsls r0, r6
+ orrs r2, r0
+_080BA134:
+ ldrh r1, [r4, 0x4]
+ adds r0, r5, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080BA146
+ movs r0, 0x80
+ lsls r0, 9
+ lsls r0, r7
+ orrs r2, r0
+_080BA146:
+ adds r0, r2, 0
+ bl InvertPlttBuffer
+ mov r0, r8
+ bl DestroyAnimVisualTask
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA160: .4byte gBattleAnimAttacker
+_080BA164: .4byte gBattleAnimTarget
+_080BA168: .4byte gBattleAnimArgs
+ thumb_func_end sub_80BA0E8
+
+ thumb_func_start sub_80BA16C
+sub_80BA16C: @ 80BA16C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ movs r5, 0
+ ldr r1, _080BA260 @ =gTasks
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080BA1AE
+ ldr r1, _080BA264 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r4, 0xC]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0xE]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x10]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0xA]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x12]
+ ldrh r0, [r1, 0xA]
+ strh r0, [r4, 0x14]
+ ldrh r0, [r1, 0xC]
+ strh r0, [r4, 0x16]
+_080BA1AE:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ ldr r0, _080BA268 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ mov r9, r0
+ ldr r0, _080BA26C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ mov r10, r0
+ ldrh r1, [r4, 0xC]
+ movs r7, 0x80
+ lsls r7, 1
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080BA1D0
+ ldr r5, _080BA270 @ =0x0000ffff
+_080BA1D0:
+ movs r6, 0x1
+ adds r0, r6, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080BA200
+ ldr r2, _080BA274 @ =gSprites
+ ldr r0, _080BA278 @ =gUnknown_3004FF0
+ add r0, r9
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x14
+ adds r0, r2
+ ldr r0, [r0]
+ ldrh r0, [r0, 0x2]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r6, 0
+ lsls r1, r0
+ lsls r1, 16
+ orrs r5, r1
+_080BA200:
+ ldrh r1, [r4, 0xE]
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080BA214
+ adds r0, r6, 0
+ mov r2, r9
+ lsls r0, r2
+ lsls r0, 16
+ orrs r5, r0
+_080BA214:
+ ldrh r1, [r4, 0x10]
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080BA228
+ adds r0, r6, 0
+ mov r1, r10
+ lsls r0, r1
+ lsls r0, 16
+ orrs r5, r0
+_080BA228:
+ movs r1, 0x12
+ ldrsb r1, [r4, r1]
+ movs r2, 0x14
+ ldrsb r2, [r4, r2]
+ movs r3, 0x16
+ ldrsb r3, [r4, r3]
+ adds r0, r5, 0
+ bl TintPlttBuffer
+ movs r2, 0x8
+ ldrsh r1, [r4, r2]
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _080BA252
+ adds r0, r5, 0
+ bl UnfadePlttBuffer
+ mov r0, r8
+ bl DestroyAnimVisualTask
+_080BA252:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA260: .4byte gTasks
+_080BA264: .4byte gBattleAnimArgs
+_080BA268: .4byte gBattleAnimAttacker
+_080BA26C: .4byte gBattleAnimTarget
+_080BA270: .4byte 0x0000ffff
+_080BA274: .4byte gSprites
+_080BA278: .4byte gUnknown_3004FF0
+ thumb_func_end sub_80BA16C
+
+ thumb_func_start sub_80BA27C
+sub_80BA27C: @ 80BA27C
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r1, _080BA2B0 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x30]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x34]
+ movs r2, 0x6
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x1
+ beq _080BA2C4
+ cmp r0, 0x1
+ bgt _080BA2B4
+ cmp r0, 0
+ beq _080BA2BA
+ b _080BA2DC
+ .align 2, 0
+_080BA2B0: .4byte gBattleAnimArgs
+_080BA2B4:
+ cmp r0, 0x2
+ beq _080BA2CC
+ b _080BA2DC
+_080BA2BA:
+ ldr r1, _080BA2C0 @ =gBattle_BG3_X
+ b _080BA2CE
+ .align 2, 0
+_080BA2C0: .4byte gBattle_BG3_X
+_080BA2C4:
+ ldr r1, _080BA2C8 @ =gBattle_BG3_Y
+ b _080BA2CE
+ .align 2, 0
+_080BA2C8: .4byte gBattle_BG3_Y
+_080BA2CC:
+ ldr r1, _080BA2D8 @ =gSpriteCoordOffsetX
+_080BA2CE:
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ b _080BA2E4
+ .align 2, 0
+_080BA2D8: .4byte gSpriteCoordOffsetX
+_080BA2DC:
+ ldr r1, _080BA314 @ =gSpriteCoordOffsetY
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+_080BA2E4:
+ movs r0, 0x3A
+ ldrsh r1, [r4, r0]
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ lsls r0, 16
+ orrs r1, r0
+ ldrh r0, [r1]
+ strh r0, [r4, 0x36]
+ ldr r0, _080BA318 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x6]
+ strh r0, [r4, 0x38]
+ subs r0, 0x2
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ bhi _080BA308
+ bl sub_80BA3CC
+_080BA308:
+ ldr r0, _080BA31C @ =sub_80BA320
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA314: .4byte gSpriteCoordOffsetY
+_080BA318: .4byte gBattleAnimArgs
+_080BA31C: .4byte sub_80BA320
+ thumb_func_end sub_80BA27C
+
+ thumb_func_start sub_80BA320
+sub_80BA320: @ 80BA320
+ push {r4-r7,lr}
+ adds r3, r0, 0
+ ldrh r1, [r3, 0x34]
+ movs r2, 0x34
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ ble _080BA362
+ subs r0, r1, 0x1
+ strh r0, [r3, 0x34]
+ ldrh r1, [r3, 0x30]
+ movs r2, 0x30
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ ble _080BA342
+ subs r0, r1, 0x1
+ strh r0, [r3, 0x30]
+ b _080BA3BA
+_080BA342:
+ ldrh r0, [r3, 0x32]
+ strh r0, [r3, 0x30]
+ movs r0, 0x3A
+ ldrsh r1, [r3, r0]
+ movs r2, 0x3C
+ ldrsh r0, [r3, r2]
+ lsls r0, 16
+ orrs r1, r0
+ ldrh r0, [r3, 0x2E]
+ ldrh r2, [r1]
+ adds r0, r2
+ strh r0, [r1]
+ ldrh r0, [r3, 0x2E]
+ negs r0, r0
+ strh r0, [r3, 0x2E]
+ b _080BA3BA
+_080BA362:
+ movs r0, 0x3A
+ ldrsh r1, [r3, r0]
+ movs r2, 0x3C
+ ldrsh r0, [r3, r2]
+ lsls r0, 16
+ orrs r1, r0
+ ldrh r0, [r3, 0x36]
+ strh r0, [r1]
+ ldrh r0, [r3, 0x38]
+ subs r0, 0x2
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ bhi _080BA3B4
+ movs r4, 0
+ ldr r5, _080BA3C0 @ =gBattlersCount
+ ldrb r0, [r5]
+ cmp r4, r0
+ bcs _080BA3B4
+ ldr r2, _080BA3C4 @ =gSprites
+ mov r12, r2
+ ldr r6, _080BA3C8 @ =gBattlerSpriteIds
+ movs r7, 0x3
+ negs r7, r7
+_080BA392:
+ adds r0, r4, r6
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ add r1, r12
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ adds r0, r7, 0
+ ands r0, r2
+ strb r0, [r1]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldrb r0, [r5]
+ cmp r4, r0
+ bcc _080BA392
+_080BA3B4:
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080BA3BA:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA3C0: .4byte gBattlersCount
+_080BA3C4: .4byte gSprites
+_080BA3C8: .4byte gBattlerSpriteIds
+ thumb_func_end sub_80BA320
+
+ thumb_func_start sub_80BA3CC
+sub_80BA3CC: @ 80BA3CC
+ push {r4-r6,lr}
+ ldr r6, _080BA440 @ =gSprites
+ ldr r4, _080BA444 @ =gBattlerSpriteIds
+ ldr r5, _080BA448 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ adds r0, r4
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r6
+ adds r1, 0x3E
+ ldrb r3, [r1]
+ movs r2, 0x3
+ negs r2, r2
+ adds r0, r2, 0
+ ands r0, r3
+ strb r0, [r1]
+ ldr r3, _080BA44C @ =gBattleAnimTarget
+ ldrb r0, [r3]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ ands r2, r1
+ strb r2, [r0]
+ ldr r0, _080BA450 @ =gBattleAnimArgs
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x2
+ bne _080BA454
+ ldrb r0, [r5]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x2
+ orrs r1, r2
+ strb r1, [r0]
+ ldrb r0, [r3]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ b _080BA470
+ .align 2, 0
+_080BA440: .4byte gSprites
+_080BA444: .4byte gBattlerSpriteIds
+_080BA448: .4byte gBattleAnimAttacker
+_080BA44C: .4byte gBattleAnimTarget
+_080BA450: .4byte gBattleAnimArgs
+_080BA454:
+ cmp r0, 0
+ bne _080BA45C
+ ldrb r0, [r5]
+ b _080BA45E
+_080BA45C:
+ ldrb r0, [r3]
+_080BA45E:
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x2
+_080BA470:
+ orrs r1, r2
+ strb r1, [r0]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80BA3CC
+
+ thumb_func_start sub_80BA47C
+sub_80BA47C: @ 80BA47C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080BA4BC @ =gTasks
+ lsls r2, r0, 2
+ adds r2, r0
+ lsls r2, 3
+ adds r2, r1
+ ldr r3, _080BA4C0 @ =gBattleAnimArgs
+ ldrh r1, [r3]
+ strh r1, [r2, 0x8]
+ ldrh r1, [r3, 0x2]
+ strh r1, [r2, 0xA]
+ ldrh r1, [r3, 0x4]
+ strh r1, [r2, 0xC]
+ ldrh r1, [r3, 0x6]
+ strh r1, [r2, 0xE]
+ ldrh r1, [r3, 0x6]
+ strh r1, [r2, 0x18]
+ ldr r4, _080BA4C4 @ =gBattle_BG3_X
+ ldrh r1, [r3]
+ strh r1, [r4]
+ ldr r4, _080BA4C8 @ =gBattle_BG3_Y
+ ldrh r1, [r3, 0x2]
+ strh r1, [r4]
+ ldr r1, _080BA4CC @ =sub_80BA4D0
+ str r1, [r2]
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA4BC: .4byte gTasks
+_080BA4C0: .4byte gBattleAnimArgs
+_080BA4C4: .4byte gBattle_BG3_X
+_080BA4C8: .4byte gBattle_BG3_Y
+_080BA4CC: .4byte sub_80BA4D0
+ thumb_func_end sub_80BA47C
+
+ thumb_func_start sub_80BA4D0
+sub_80BA4D0: @ 80BA4D0
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080BA500 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r3, r0, r1
+ ldrh r2, [r3, 0xE]
+ movs r4, 0xE
+ ldrsh r0, [r3, r4]
+ mov r12, r1
+ cmp r0, 0
+ bne _080BA556
+ ldr r0, _080BA504 @ =gBattle_BG3_X
+ ldrh r2, [r0]
+ movs r7, 0x8
+ ldrsh r1, [r3, r7]
+ adds r6, r0, 0
+ cmp r2, r1
+ bne _080BA508
+ ldrh r0, [r3, 0x8]
+ negs r0, r0
+ b _080BA50A
+ .align 2, 0
+_080BA500: .4byte gTasks
+_080BA504: .4byte gBattle_BG3_X
+_080BA508:
+ ldrh r0, [r3, 0x8]
+_080BA50A:
+ strh r0, [r6]
+ ldr r2, _080BA528 @ =gBattle_BG3_Y
+ ldrh r3, [r2]
+ lsls r1, r5, 2
+ adds r0, r1, r5
+ lsls r0, 3
+ mov r7, r12
+ adds r4, r0, r7
+ movs r7, 0xA
+ ldrsh r0, [r4, r7]
+ cmn r3, r0
+ bne _080BA52C
+ movs r0, 0
+ b _080BA530
+ .align 2, 0
+_080BA528: .4byte gBattle_BG3_Y
+_080BA52C:
+ ldrh r0, [r4, 0xA]
+ negs r0, r0
+_080BA530:
+ strh r0, [r2]
+ adds r0, r1, r5
+ lsls r0, 3
+ add r0, r12
+ ldrh r1, [r0, 0x18]
+ strh r1, [r0, 0xE]
+ ldrh r1, [r0, 0xC]
+ subs r1, 0x1
+ strh r1, [r0, 0xC]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0
+ bne _080BA55A
+ strh r1, [r6]
+ strh r1, [r2]
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ b _080BA55A
+_080BA556:
+ subs r0, r2, 0x1
+ strh r0, [r3, 0xE]
+_080BA55A:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80BA4D0
+
+ thumb_func_start sub_80BA560
+sub_80BA560: @ 80BA560
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080BA580 @ =gBattleAnimArgs
+ ldrb r1, [r4, 0x6]
+ bl StartSpriteAffineAnim
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080BA584
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075160
+ b _080BA58C
+ .align 2, 0
+_080BA580: .4byte gBattleAnimArgs
+_080BA584:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075114
+_080BA58C:
+ ldr r0, _080BA5A0 @ =sub_8074F50
+ str r0, [r5, 0x1C]
+ ldr r1, _080BA5A4 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA5A0: .4byte sub_8074F50
+_080BA5A4: .4byte DestroyAnimSprite
+ thumb_func_end sub_80BA560
+
+ thumb_func_start sub_80BA5A8
+sub_80BA5A8: @ 80BA5A8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080BA5C8 @ =gBattleAnimArgs
+ ldrb r1, [r4, 0x6]
+ bl StartSpriteAffineAnim
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080BA5CC
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075160
+ b _080BA5D4
+ .align 2, 0
+_080BA5C8: .4byte gBattleAnimArgs
+_080BA5CC:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075114
+_080BA5D4:
+ ldr r0, _080BA5EC @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x8]
+ strh r0, [r5, 0x2E]
+ ldr r0, _080BA5F0 @ =sub_8074F50
+ str r0, [r5, 0x1C]
+ ldr r1, _080BA5F4 @ =sub_80B1D3C
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA5EC: .4byte gBattleAnimArgs
+_080BA5F0: .4byte sub_8074F50
+_080BA5F4: .4byte sub_80B1D3C
+ thumb_func_end sub_80BA5A8
+
+ thumb_func_start sub_80BA5F8
+sub_80BA5F8: @ 80BA5F8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080BA628 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080BA61C
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080BA61C
+ ldr r1, _080BA62C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+_080BA61C:
+ adds r0, r4, 0
+ bl sub_80BA560
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA628: .4byte gBattleAnimAttacker
+_080BA62C: .4byte gBattleAnimArgs
+ thumb_func_end sub_80BA5F8
+
+ thumb_func_start sub_80BA630
+sub_80BA630: @ 80BA630
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080BA668 @ =gBattleAnimArgs
+ movs r0, 0x2
+ ldrsh r1, [r5, r0]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080BA64C
+ bl Random
+ movs r1, 0x3
+ ands r1, r0
+ strh r1, [r5, 0x2]
+_080BA64C:
+ ldrb r1, [r5, 0x2]
+ adds r0, r4, 0
+ bl StartSpriteAffineAnim
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080BA66C
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075160
+ b _080BA674
+ .align 2, 0
+_080BA668: .4byte gBattleAnimArgs
+_080BA66C:
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075114
+_080BA674:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x30
+ bl __umodsi3
+ ldr r1, _080BA6B8 @ =0x0000ffe8
+ adds r0, r1
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x18
+ bl __umodsi3
+ ldr r1, _080BA6BC @ =0x0000fff4
+ adds r0, r1
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldr r1, _080BA6C0 @ =move_anim_8074EE0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080BA6C4 @ =sub_8074F50
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA6B8: .4byte 0x0000ffe8
+_080BA6BC: .4byte 0x0000fff4
+_080BA6C0: .4byte move_anim_8074EE0
+_080BA6C4: .4byte sub_8074F50
+ thumb_func_end sub_80BA630
+
+ thumb_func_start sub_80BA6C8
+sub_80BA6C8: @ 80BA6C8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080BA728 @ =gBattleAnimArgs
+ ldrb r0, [r5]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x2E]
+ ldr r2, _080BA72C @ =gSprites
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x24]
+ ldrh r0, [r0, 0x20]
+ adds r1, r0
+ strh r1, [r4, 0x20]
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x26]
+ ldrh r0, [r0, 0x22]
+ adds r1, r0
+ strh r1, [r4, 0x22]
+ ldrh r0, [r5, 0x2]
+ strh r0, [r4, 0x24]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x26]
+ ldrb r1, [r5, 0x6]
+ adds r0, r4, 0
+ bl StartSpriteAffineAnim
+ ldr r1, _080BA730 @ =move_anim_8074EE0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080BA734 @ =sub_8074F50
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA728: .4byte gBattleAnimArgs
+_080BA72C: .4byte gSprites
+_080BA730: .4byte move_anim_8074EE0
+_080BA734: .4byte sub_8074F50
+ thumb_func_end sub_80BA6C8
+
+ thumb_func_start sub_80BA738
+sub_80BA738: @ 80BA738
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080BA750 @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080BA754
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075160
+ b _080BA75C
+ .align 2, 0
+_080BA750: .4byte gBattleAnimArgs
+_080BA754:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075114
+_080BA75C:
+ ldr r0, _080BA774 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x6]
+ strh r0, [r4, 0x2E]
+ ldr r1, _080BA778 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080BA77C @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA774: .4byte gBattleAnimArgs
+_080BA778: .4byte DestroyAnimSprite
+_080BA77C: .4byte sub_8074C44
+ thumb_func_end sub_80BA738
+
+ thumb_func_start sub_80BA780
+sub_80BA780: @ 80BA780
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080BA7A0 @ =gBattleAnimArgs
+ ldrb r1, [r4, 0x6]
+ bl StartSpriteAffineAnim
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080BA7A4
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075160
+ b _080BA7AC
+ .align 2, 0
+_080BA7A0: .4byte gBattleAnimArgs
+_080BA7A4:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075114
+_080BA7AC:
+ ldr r0, _080BA7B8 @ =sub_80BA7BC
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080BA7B8: .4byte sub_80BA7BC
+ thumb_func_end sub_80BA780
+
+ thumb_func_start sub_80BA7BC
+sub_80BA7BC: @ 80BA7BC
+ push {lr}
+ adds r3, r0, 0
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldrh r0, [r3, 0x2E]
+ adds r1, r0, 0x1
+ strh r1, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _080BA7F2
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080BA7F2:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80BA7BC
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/option_menu.s b/asm/option_menu.s
index 84cb85e6b..bf626caba 100644
--- a/asm/option_menu.s
+++ b/asm/option_menu.s
@@ -409,7 +409,7 @@ sub_8088680: @ 8088680
movs r1, 0
adds r2, r4, 0
movs r3, 0
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x2
bl PutWindowTilemap
movs r0, 0x2
@@ -906,7 +906,7 @@ _08088A72:
movs r1, 0x2
mov r2, r8
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
b _08088ADE
.align 2, 0
_08088A94: .4byte gUnknown_83CC354
@@ -940,7 +940,7 @@ _08088A9C:
movs r1, 0x2
mov r2, r8
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
_08088ADE:
movs r0, 0x1
bl PutWindowTilemap
diff --git a/asm/overworld.s b/asm/overworld.s
index 103ed2c46..39fbe770a 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -22,7 +22,7 @@ sub_8054BC8: @ 8054BC8
bl sp000_heal_pokemon
bl sub_8054DD8
bl sub_80554BC
- bl warp_in
+ bl WarpIntoMap
pop {r4}
pop {r0}
bx r0
@@ -38,7 +38,7 @@ sub_8054C04: @ 8054C04
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- bl sub_80444F8
+ bl GetPlayerPartyHighestLevel
lsls r0, 24
lsrs r0, 24
ldr r1, _08054C40 @ =gUnknown_826D294
@@ -193,8 +193,8 @@ _08054D68: .4byte 0x00000808
_08054D6C: .4byte 0x0000404d
thumb_func_end Overworld_ResetStateAfterTeleport
- thumb_func_start sub_8054D70
-sub_8054D70: @ 8054D70
+ thumb_func_start Overworld_ResetStateAfterDigEscRope
+Overworld_ResetStateAfterDigEscRope: @ 8054D70
push {lr}
bl ResetInitialPlayerAvatarState
movs r0, 0x83
@@ -230,7 +230,7 @@ _08054DC8: .4byte 0x00000805
_08054DCC: .4byte 0x00000806
_08054DD0: .4byte 0x00000808
_08054DD4: .4byte 0x0000404d
- thumb_func_end sub_8054D70
+ thumb_func_end Overworld_ResetStateAfterDigEscRope
thumb_func_start sub_8054DD8
sub_8054DD8: @ 8054DD8
@@ -334,7 +334,7 @@ _08054EB0:
ldr r1, _08054EC0 @ =0x00ffffff
_08054EB2:
adds r0, r4, 0
- bl sub_8054F00
+ bl SetGameStat
_08054EB8:
pop {r4}
pop {r0}
@@ -376,8 +376,8 @@ _08054EFA:
bx r1
thumb_func_end GetGameStat
- thumb_func_start sub_8054F00
-sub_8054F00: @ 8054F00
+ thumb_func_start SetGameStat
+SetGameStat: @ 8054F00
push {lr}
adds r3, r1, 0
lsls r0, 24
@@ -405,7 +405,7 @@ _08054F2A:
.align 2, 0
_08054F30: .4byte gSaveBlock1Ptr
_08054F34: .4byte gSaveBlock2Ptr
- thumb_func_end sub_8054F00
+ thumb_func_end SetGameStat
thumb_func_start sub_8054F38
sub_8054F38: @ 8054F38
@@ -993,15 +993,15 @@ _0805536C:
_08055374: .4byte gMapHeader
thumb_func_end update_camera_pos_from_warpid
- thumb_func_start warp_in
-warp_in: @ 8055378
+ thumb_func_start WarpIntoMap
+WarpIntoMap: @ 8055378
push {lr}
bl warp_shift
bl set_current_map_header_from_sav1_save_old_name
bl update_camera_pos_from_warpid
pop {r0}
bx r0
- thumb_func_end warp_in
+ thumb_func_end WarpIntoMap
thumb_func_start Overworld_SetWarpDestination
Overworld_SetWarpDestination: @ 805538C
@@ -1257,7 +1257,7 @@ sub_805550C: @ 805550C
ldrh r0, [r0, 0x4]
cmp r0, 0x1
beq _08055590
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -1858,7 +1858,7 @@ _08055A04: .4byte gUnknown_2031DD4
thumb_func_start sub_8055A08
sub_8055A08: @ 8055A08
push {r4,lr}
- bl player_get_direction_lower_nybble
+ bl GetPlayerFacingDirection
ldr r4, _08055A24 @ =gUnknown_2031DD4
strb r0, [r4, 0x1]
movs r0, 0x2
@@ -2378,8 +2378,8 @@ sub_8055DB8: @ 8055DB8
bx r0
thumb_func_end sub_8055DB8
- thumb_func_start sub_8055DC4
-sub_8055DC4: @ 8055DC4
+ thumb_func_start Overworld_PlaySpecialMapMusic
+Overworld_PlaySpecialMapMusic: @ 8055DC4
push {r4,r5,lr}
sub sp, 0x4
ldr r0, _08055DD8 @ =gUnknown_2031DD8
@@ -2441,7 +2441,7 @@ _08055E40:
lsls r0, 24
cmp r0, 0
beq _08055E5A
- ldr r5, _08055E74 @ =0x00000131
+ ldr r5, _08055E74 @ =0x00000131 @ BGM_FRLG_SURF
adds r0, r5, 0
bl sub_8056124
cmp r0, 0
@@ -2462,7 +2462,7 @@ _08055E6C:
bx r0
.align 2, 0
_08055E74: .4byte 0x00000131
- thumb_func_end sub_8055DC4
+ thumb_func_end Overworld_PlaySpecialMapMusic
thumb_func_start Overworld_SetSavedMusic
Overworld_SetSavedMusic: @ 8055E78
@@ -2511,7 +2511,7 @@ _08055EA8:
bl GetCurrentMapMusic
lsls r0, 16
lsrs r6, r0, 16
- ldr r5, _08055F08 @ =0x00000131
+ ldr r5, _08055F08 @ =0x00000131 @ BGM_FRLG_SURF
cmp r6, r5
beq _08055F14
movs r0, 0x8
@@ -3199,7 +3199,7 @@ _080563EC: .4byte gUnknown_300501C
thumb_func_start CleanupOverworldWindowsAndTilemaps
CleanupOverworldWindowsAndTilemaps: @ 80563F0
push {lr}
- bl sub_80F6C8C
+ bl FreeAllOverworldWindowBuffers
ldr r0, _08056414 @ =gUnknown_300501C
ldr r0, [r0]
bl Free
@@ -3225,8 +3225,8 @@ sub_8056420: @ 8056420
bx r0
thumb_func_end sub_8056420
- thumb_func_start is_c1_link_related_active
-is_c1_link_related_active: @ 805642C
+ thumb_func_start IsUpdateLinkStateCBActive
+IsUpdateLinkStateCBActive: @ 805642C
push {lr}
ldr r0, _0805643C @ =gMain
ldr r1, [r0]
@@ -3243,7 +3243,7 @@ _08056444:
_08056446:
pop {r1}
bx r1
- thumb_func_end is_c1_link_related_active
+ thumb_func_end IsUpdateLinkStateCBActive
thumb_func_start sub_805644C
sub_805644C: @ 805644C
@@ -3393,7 +3393,7 @@ sub_8056578: @ 8056578
bl BuildOamBuffer
bl UpdatePaletteFade
bl sub_806FFBC
- bl do_scheduled_bg_tilemap_copies_to_vram
+ bl DoScheduledBgTilemapCopiesToVram
pop {r0}
bx r0
thumb_func_end sub_8056578
@@ -3571,8 +3571,8 @@ _08056714: .4byte sub_8056534
_08056718: .4byte sub_80565B4
thumb_func_end c2_whiteout
- thumb_func_start sub_805671C
-sub_805671C: @ 805671C
+ thumb_func_start CB2_LoadMap
+CB2_LoadMap: @ 805671C
push {lr}
bl sub_80569BC
bl ScriptContext1_Init
@@ -3590,7 +3590,7 @@ sub_805671C: @ 805671C
_08056740: .4byte sub_80C9BFC
_08056744: .4byte gMain
_08056748: .4byte sub_805674C
- thumb_func_end sub_805671C
+ thumb_func_end CB2_LoadMap
thumb_func_start sub_805674C
sub_805674C: @ 805674C
@@ -3662,7 +3662,7 @@ _080567D8: .4byte sub_80565B4
thumb_func_start CB2_ReturnToField
CB2_ReturnToField: @ 80567DC
push {lr}
- bl is_c1_link_related_active
+ bl IsUpdateLinkStateCBActive
cmp r0, 0x1
bne _080567F4
ldr r0, _080567F0 @ =c2_exit_to_overworld_2_link
@@ -3784,8 +3784,8 @@ _080568D8: .4byte gFieldCallback
_080568DC: .4byte sub_807DD44
thumb_func_end sub_80568C4
- thumb_func_start c2_exit_to_overworld_1_continue_scripts_restart_music
-c2_exit_to_overworld_1_continue_scripts_restart_music: @ 80568E0
+ thumb_func_start CB2_ReturnToFieldContinueScriptPlayMapMusic
+CB2_ReturnToFieldContinueScriptPlayMapMusic: @ 80568E0
push {lr}
bl sub_80569BC
ldr r1, _080568F4 @ =gFieldCallback
@@ -3797,10 +3797,10 @@ c2_exit_to_overworld_1_continue_scripts_restart_music: @ 80568E0
.align 2, 0
_080568F4: .4byte gFieldCallback
_080568F8: .4byte FieldCallback_ReturnToEventScript2
- thumb_func_end c2_exit_to_overworld_1_continue_scripts_restart_music
+ thumb_func_end CB2_ReturnToFieldContinueScriptPlayMapMusic
- thumb_func_start sub_80568FC
-sub_80568FC: @ 80568FC
+ thumb_func_start CB2_Overworld
+CB2_Overworld: @ 80568FC
push {lr}
bl sub_80569BC
ldr r1, _08056910 @ =gFieldCallback
@@ -3812,7 +3812,7 @@ sub_80568FC: @ 80568FC
.align 2, 0
_08056910: .4byte gFieldCallback
_08056914: .4byte sub_807DF7C
- thumb_func_end sub_80568FC
+ thumb_func_end CB2_Overworld
thumb_func_start sub_8056918
sub_8056918: @ 8056918
@@ -3833,8 +3833,8 @@ _0805692C:
_08056934: .4byte gMapHeader
thumb_func_end sub_8056918
- thumb_func_start sub_8056938
-sub_8056938: @ 8056938
+ thumb_func_start CB2_ContinueSavedGame
+CB2_ContinueSavedGame: @ 8056938
push {lr}
bl sub_80569BC
bl StopMapMusic
@@ -3858,14 +3858,14 @@ sub_8056938: @ 8056938
bne _0805699C
bl sav2_x9_clear_bit1
bl warp1_set_to_sav1w
- bl warp_in
- ldr r0, _08056998 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _08056998 @ =CB2_LoadMap
bl SetMainCallback2
b _080569AC
.align 2, 0
_08056990: .4byte gFieldCallback2
_08056994: .4byte gUnknown_2031DE0
-_08056998: .4byte sub_805671C
+_08056998: .4byte CB2_LoadMap
_0805699C:
ldr r0, _080569B0 @ =gFieldCallback
ldr r1, _080569B4 @ =sub_8056918
@@ -3880,7 +3880,7 @@ _080569AC:
_080569B0: .4byte gFieldCallback
_080569B4: .4byte sub_8056918
_080569B8: .4byte sub_8056534
- thumb_func_end sub_8056938
+ thumb_func_end CB2_ContinueSavedGame
thumb_func_start sub_80569BC
sub_80569BC: @ 80569BC
@@ -4036,7 +4036,7 @@ _08056B04:
.align 2, 0
_08056B10: .4byte gMapHeader
_08056B14:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4178,7 +4178,7 @@ _08056C40:
.align 2, 0
_08056C4C: .4byte gMapHeader
_08056C50:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4367,7 +4367,7 @@ _08056DE0:
.align 2, 0
_08056DEC: .4byte gMapHeader
_08056DF0:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4523,8 +4523,8 @@ sub_8056F08: @ 8056F08
thumb_func_start sub_8056F1C
sub_8056F1C: @ 8056F1C
push {r4,lr}
- bl clear_scheduled_bg_copies_to_vram
- bl reset_temp_tile_data_buffers
+ bl ClearScheduledBgCopiesToVram
+ bl ResetTempTileDataBuffers
movs r0, 0x4C
movs r1, 0
bl SetGpuReg
@@ -4563,11 +4563,11 @@ sub_8056F1C: @ 8056F1C
movs r0, 0x52
bl SetGpuReg
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _08057020 @ =0x00007060
movs r0, 0
bl SetGpuReg
@@ -5078,7 +5078,7 @@ _080573D8:
.align 2, 0
_080573E4: .4byte gMapHeader
_080573E8:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -5139,14 +5139,14 @@ sub_8057430: @ 8057430
bne _08057490
bl sav2_x9_clear_bit1
bl warp1_set_to_sav1w
- bl warp_in
- ldr r0, _0805748C @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _0805748C @ =CB2_LoadMap
bl SetMainCallback2
b _0805749A
.align 2, 0
_08057484: .4byte gUnknown_2036E28
_08057488: .4byte gUnknown_2031DE0
-_0805748C: .4byte sub_805671C
+_0805748C: .4byte CB2_LoadMap
_08057490:
ldr r0, _080574A0 @ =sub_8056534
bl sub_80565E0
@@ -5177,7 +5177,7 @@ _080574B8:
bl BuildOamBuffer
bl UpdatePaletteFade
bl sub_806FFBC
- bl do_scheduled_bg_tilemap_copies_to_vram
+ bl DoScheduledBgTilemapCopiesToVram
cmp r4, 0
beq _080574E0
bl SetFieldVBlankCallback
@@ -5304,7 +5304,7 @@ _08057560:
adds r0, r4
ldrh r0, [r0, 0x4]
strh r0, [r1]
- bl warp_in
+ bl WarpIntoMap
ldr r2, _08057610 @ =gPaletteFade
ldrb r0, [r2, 0x8]
movs r1, 0x80
@@ -5427,7 +5427,7 @@ _080576E0:
.align 2, 0
_080576EC: .4byte gMapHeader
_080576F0:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -5620,7 +5620,7 @@ sub_8057854: @ 8057854
cmp r0, 0
bne _08057876
bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _08057880 @ =sub_805671C
+ ldr r0, _08057880 @ =CB2_LoadMap
bl SetMainCallback2
adds r0, r4, 0
bl DestroyTask
@@ -5630,7 +5630,7 @@ _08057876:
bx r0
.align 2, 0
_0805787C: .4byte gPaletteFade
-_08057880: .4byte sub_805671C
+_08057880: .4byte CB2_LoadMap
thumb_func_end sub_8057854
thumb_func_start c1_link_related
@@ -6144,7 +6144,7 @@ _08057C72:
bl sub_805833C
cmp r0, 0x1
bls _08057CA8
- bl is_c1_link_related_active
+ bl IsUpdateLinkStateCBActive
cmp r0, 0x1
bne _08057CA8
bl sub_800A00C
@@ -6976,7 +6976,7 @@ _08058240: .4byte gUnknown_81BB9F0
thumb_func_start sub_8058244
sub_8058244: @ 8058244
push {lr}
- bl is_c1_link_related_active
+ bl IsUpdateLinkStateCBActive
cmp r0, 0
bne _08058252
movs r0, 0
@@ -7009,7 +7009,7 @@ sub_8058274: @ 8058274
bl sub_800B248
cmp r0, 0x1
bls _080582D8
- bl is_c1_link_related_active
+ bl IsUpdateLinkStateCBActive
cmp r0, 0x1
bne _080582D8
bl sub_800A00C
@@ -7062,7 +7062,7 @@ sub_80582E0: @ 80582E0
bl sub_805833C
cmp r0, 0x1
bls _08058304
- bl is_c1_link_related_active
+ bl IsUpdateLinkStateCBActive
cmp r0, 0x1
bne _08058304
bl sub_800A00C
@@ -7888,7 +7888,7 @@ _080588C6:
movs r2, 0
str r2, [sp]
movs r3, 0
- bl AddPseudoFieldObject
+ bl AddPseudoEventObject
strb r0, [r4, 0x4]
ldrb r1, [r4, 0x4]
lsls r0, r1, 4
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 2aaa52985..ace2e3554 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start sub_811EA44
-sub_811EA44: @ 811EA44
+ thumb_func_start PartyMenuInit
+PartyMenuInit: @ 811EA44
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -181,7 +181,7 @@ _0811EB90: .4byte gUnknown_203B09C
_0811EB94: .4byte gPlayerParty
_0811EB98: .4byte gTextFlags
_0811EB9C: .4byte sub_811EBD0
- thumb_func_end sub_811EA44
+ thumb_func_end PartyMenuInit
thumb_func_start sub_811EBA0
sub_811EBA0: @ 811EBA0
@@ -189,7 +189,7 @@ sub_811EBA0: @ 811EBA0
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
+ bl DoScheduledBgTilemapCopiesToVram
bl UpdatePaletteFade
pop {r0}
bx r0
@@ -219,7 +219,7 @@ _0811EBD2:
lsrs r0, 24
cmp r0, 0x1
beq _0811EBF6
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -276,9 +276,9 @@ _0811EC24:
.4byte _0811EDD0
.4byte _0811EDDE
_0811EC80:
- bl sub_80BF768
- bl sub_80BF77C
- bl clear_scheduled_bg_copies_to_vram
+ bl SetVBlankHBlankCallbacksToNull
+ bl ClearVramOamPltt
+ bl ClearScheduledBgCopiesToVram
b _0811EDFC
_0811EC8E:
bl ScanlineEffect_Stop
@@ -299,7 +299,7 @@ _0811ECAE:
bl FreeAllSpritePalettes
b _0811EDFC
_0811ECB4:
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
cmp r0, 0
beq _0811ECC0
@@ -565,7 +565,7 @@ _0811EEC8: .4byte gUnknown_203B0B8
thumb_func_start sub_811EECC
sub_811EECC: @ 811EECC
push {r4,r5,lr}
- bl sub_80BF7C8
+ bl ResetAllBgsCoordinatesAndBgCntRegs
ldr r5, _0811EF34 @ =gUnknown_203B0BC
movs r4, 0x80
lsls r4, 4
@@ -587,7 +587,7 @@ sub_811EECC: @ 811EECC
movs r0, 0x1
bl SetBgTilemapBuffer
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r1, 0x82
lsls r1, 5
movs r0, 0
@@ -649,7 +649,7 @@ _0811EF8C:
ldr r4, _0811EFAC @ =gUnknown_203B0B8
ldr r0, _0811EFB0 @ =gFile_graphics_interface_party_menu_misc_sheet
mov r1, sp
- bl malloc_and_decompress
+ bl MallocAndDecompress
adds r1, r0, 0
str r1, [r4]
ldr r2, [sp]
@@ -883,7 +883,7 @@ sub_811F124: @ 811F124
ldrb r0, [r4, 0x8]
bl PutWindowTilemap
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
b _0811F22A
.align 2, 0
_0811F16C: .4byte gUnknown_203B0A0
@@ -973,7 +973,7 @@ _0811F218:
ldrb r0, [r0, 0x8]
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
_0811F22A:
pop {r4,r5}
pop {r0}
@@ -1274,7 +1274,7 @@ _0811F47C:
cmp r0, 0x3
bne _0811F492
adds r0, r4, 0
- bl sub_80A1150
+ bl GetItemCompatibilityRule
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1799,7 +1799,7 @@ _0811F884:
movs r1, 0x17
movs r2, 0x10
movs r3, 0x7
- bl sub_80F6B08
+ bl SetBgRectPal
b _0811F8B0
_0811F89E:
movs r0, 0x2
@@ -1809,7 +1809,7 @@ _0811F89E:
movs r1, 0x17
movs r2, 0x10
movs r3, 0x7
- bl sub_80F6B08
+ bl SetBgRectPal
_0811F8B0:
ldr r0, _0811F8BC @ =gUnknown_203B09C
ldr r0, [r0]
@@ -1857,7 +1857,7 @@ _0811F8F2:
movs r2, 0x12
_0811F904:
movs r3, 0x7
- bl sub_80F6B08
+ bl SetBgRectPal
b _0811F91E
_0811F90C:
movs r0, 0x2
@@ -1867,7 +1867,7 @@ _0811F90C:
movs r1, 0x17
movs r2, 0x12
movs r3, 0x7
- bl sub_80F6B08
+ bl SetBgRectPal
_0811F91E:
ldr r0, _0811F940 @ =gUnknown_203B09C
ldr r0, [r0]
@@ -1878,7 +1878,7 @@ _0811F926:
mov r1, r8
bl sub_81227B8
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
_0811F934:
add sp, 0x8
pop {r3}
@@ -2000,7 +2000,7 @@ sub_811F9DC: @ 811F9DC
movs r3, 0x12
bl CopyToBgTilemapBufferRect_ChangePalette
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0xC
pop {r4-r6}
pop {r0}
@@ -2494,7 +2494,7 @@ _0811FDD6:
.align 2, 0
_0811FDF0: .4byte gUnknown_203B0A0
_0811FDF4:
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
cmp r0, 0
bne _0811FE04
@@ -3218,7 +3218,7 @@ sub_8120328: @ 8120328
lsrs r4, r0, 24
adds r5, r4, 0
movs r0, 0x6
- bl sub_80BF518
+ bl RunTextPrinters_CheckActive
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
@@ -3234,7 +3234,7 @@ sub_8120328: @ 8120328
bne _0812035E
movs r0, 0x6
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x6
bl ClearWindowTilemap
_0812035E:
@@ -3302,10 +3302,10 @@ sub_81203B8: @ 81203B8
beq _08120410
movs r0, 0x6
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x6
bl ClearWindowTilemap
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3366,7 +3366,7 @@ _0812043C:
_08120448:
adds r1, r5, 0
adds r2, r4, 0
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
b _08120468
.align 2, 0
_08120454: .4byte gUnknown_203B0A0
@@ -3376,7 +3376,7 @@ _0812045C:
movs r0, 0x6
adds r1, r5, 0
adds r2, r4, 0
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
_08120468:
ldr r1, _0812049C @ =gStringVar1
adds r0, r5, 0
@@ -3392,7 +3392,7 @@ _08120468:
adds r1, r6, 0
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
pop {r4-r6}
pop {r0}
bx r0
@@ -3418,7 +3418,7 @@ sub_81204AC: @ 81204AC
movs r0, 0x8
adds r1, r6, 0
adds r2, r4, 0
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
ldr r1, _081204FC @ =gStringVar1
adds r0, r6, 0
bl GetMonNickname
@@ -3433,7 +3433,7 @@ sub_81204AC: @ 81204AC
adds r1, r5, 0
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
pop {r4-r6}
pop {r0}
bx r0
@@ -3467,7 +3467,7 @@ sub_812050C: @ 812050C
adds r1, r5, 0
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
pop {r4,r5}
pop {r0}
bx r0
@@ -3514,7 +3514,7 @@ sub_8120558: @ 8120558
adds r1, r6, 0
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
pop {r4-r6}
pop {r0}
bx r0
@@ -3536,14 +3536,14 @@ sub_81205C8: @ 81205C8
lsrs r4, r5, 16
adds r7, r4, 0
adds r0, r4, 0
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _081205F2
adds r0, r6, 0
adds r1, r4, 0
- bl sub_8097D38
+ bl GiveMailToMon
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
@@ -3627,7 +3627,7 @@ _08120678:
_0812067E:
ldr r0, _08120698 @ =0x0000016d
_08120680:
- bl ItemId_GetItem
+ bl ItemId_GetName
adds r1, r0, 0
_08120686:
ldr r0, _0812069C @ =gStringVar1
@@ -4121,7 +4121,7 @@ _08120A24:
movs r1, 0
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _08120A50 @ =gTasks
lsls r0, r4, 2
adds r0, r4
@@ -4149,7 +4149,7 @@ sub_8120A58: @ 8120A58
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _08120A88 @ =gTasks
lsls r0, r4, 2
adds r0, r4
@@ -4529,7 +4529,7 @@ sub_8120D08: @ 8120D08
ldr r5, _08120D38 @ =gTasks+0x8
adds r0, r4, r5
ldrb r0, [r0]
- bl sub_80BF518
+ bl RunTextPrinters_CheckActive
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
@@ -4643,7 +4643,7 @@ sub_8120DE0: @ 8120DE0
ldr r6, _08120E14 @ =gTasks+0x8
adds r4, r5, r6
ldrb r0, [r4]
- bl sub_80BF518
+ bl RunTextPrinters_CheckActive
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
@@ -4709,11 +4709,11 @@ sub_8120E58: @ 8120E58
movs r0, 0
movs r1, 0x4F
movs r2, 0xD0
- bl sub_815001C
+ bl TextWindow_SetUserSelectedFrame
movs r0, 0
movs r1, 0x58
movs r2, 0xF0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
ldr r0, _08120E94 @ =gUnknown_203B0A0
ldrb r0, [r0, 0xB]
cmp r0, 0x3
@@ -4878,7 +4878,7 @@ sub_8120FB0: @ 8120FB0
push {lr}
bl FreeRestoreBattleData
bl LoadPlayerParty
- bl sub_815AC20
+ bl SetTeachyTvControllerModeToResume
ldr r0, _08120FC8 @ =CB2_ReturnToTeachyTV
bl SetMainCallback2
pop {r0}
@@ -5016,11 +5016,11 @@ _081210AC:
movs r0, 0
movs r1, 0x4F
movs r2, 0xD0
- bl sub_815001C
+ bl TextWindow_SetUserSelectedFrame
movs r0, 0
movs r1, 0x58
movs r2, 0xF0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
movs r0, 0x2
bl stdpal_get
movs r1, 0xC0
@@ -5084,7 +5084,7 @@ _0812110E:
adds r0, r4, 0
movs r1, 0
movs r3, 0x1
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
adds r0, r4, 0
bl PutWindowTilemap
adds r0, r4, 0
@@ -5141,7 +5141,7 @@ _08121194:
movs r1, 0
adds r2, r5, 0
movs r3, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
b _08121224
.align 2, 0
_081211E0: .4byte gUnknown_845A108
@@ -5172,7 +5172,7 @@ _081211F0:
movs r1, 0
adds r2, r5, 0
movs r3, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
_08121224:
adds r0, r6, 0
bl PutWindowTilemap
@@ -5180,7 +5180,7 @@ _08121224:
movs r1, 0x2
bl CopyWindowToVram
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
_08121238:
add sp, 0x14
pop {r4-r6}
@@ -5778,7 +5778,7 @@ sub_8121704: @ 8121704
str r1, [sp, 0x8]
movs r1, 0
adds r2, r5, 0
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0xC
pop {r4,r5}
pop {r0}
@@ -6486,7 +6486,7 @@ _08121CAA:
ldr r1, [r1]
str r1, [sp, 0x8]
movs r1, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
_08121CD0:
add sp, 0xC
pop {r3}
@@ -6507,13 +6507,13 @@ sub_8121CE4: @ 8121CE4
cmp r0, 0xFF
beq _08121D04
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl RemoveWindow
movs r0, 0xFF
strb r0, [r4]
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
_08121D04:
pop {r4}
pop {r0}
@@ -6608,7 +6608,7 @@ _08121DB0:
movs r1, 0
movs r2, 0x58
movs r3, 0xF
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r4, _08121DF0 @ =gStringVar4
ldr r1, _08121DF4 @ =gUnknown_845A2E8
lsls r0, r6, 2
@@ -6627,7 +6627,7 @@ _08121DB0:
movs r3, 0
bl AddTextPrinterParameterized
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
_08121DE8:
add sp, 0xC
pop {r4-r6}
@@ -6770,7 +6770,7 @@ _08121ED2:
movs r1, 0
movs r2, 0x4F
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
cmp r4, 0x3
bne _08121F00
ldr r0, [r6]
@@ -6831,7 +6831,7 @@ _08121F3C:
str r1, [sp, 0x10]
movs r1, 0x2
mov r2, r9
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
@@ -6854,9 +6854,9 @@ _08121F7A:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F774
+ bl Menu_InitCursorInternal
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r0, [r4]
_08121FA2:
ldrb r0, [r0, 0xC]
@@ -6882,7 +6882,7 @@ sub_8121FC0: @ 8121FC0
movs r1, 0
movs r2, 0x4F
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r2, _08122008 @ =gTextFlags
ldrb r0, [r2]
movs r1, 0x1
@@ -6903,7 +6903,7 @@ sub_8121FC0: @ 8121FC0
movs r0, 0x6
movs r1, 0x2
adds r2, r4, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
add sp, 0x10
pop {r4}
pop {r0}
@@ -6947,7 +6947,7 @@ sub_8122034: @ 8122034
movs r1, 0
movs r2, 0x4F
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r0, [r4]
ldrb r0, [r0, 0xC]
pop {r4}
@@ -7005,7 +7005,7 @@ sub_8122084: @ 8122084
adds r0, r4, 0
movs r1, 0x4
adds r2, r5, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
add sp, 0x10
pop {r4,r5}
pop {r0}
@@ -7026,12 +7026,12 @@ sub_81220D4: @ 81220D4
adds r0, r4, 0
movs r1, 0x4F
movs r2, 0xE0
- bl sub_814FEAC
+ bl TextWindow_LoadResourcesStdFrame0
adds r0, r4, 0
movs r1, 0x1
movs r2, 0x4F
movs r3, 0xE
- bl sub_810EDC4
+ bl DrawDialogFrameWithCustomTileAndPalette
ldr r1, _0812210C @ =gUnknown_8417457
adds r0, r4, 0
bl sub_8122084
@@ -7054,11 +7054,11 @@ sub_8122110: @ 8122110
bl ClearWindowTilemap
adds r0, r4, 0
movs r1, 0
- bl sub_810F260
+ bl ClearDialogWindowAndFrameToTransparent
adds r0, r4, 0
bl RemoveWindow
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
pop {r4}
pop {r0}
bx r0
@@ -7084,7 +7084,7 @@ sub_8122138: @ 8122138
movs r0, 0xFF
strb r0, [r4, 0xE]
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
b _081221C0
.align 2, 0
_08122168: .4byte gUnknown_203B09C
@@ -7121,11 +7121,11 @@ _0812217A:
movs r1, 0x2
movs r2, 0x3
movs r3, 0x6
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
ldrb r0, [r4, 0xE]
bl PutWindowTilemap
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
_081221C0:
add sp, 0x14
pop {r4,r5}
@@ -7553,7 +7553,7 @@ sub_81224D0: @ 81224D0
.align 2, 0
_081224F4: .4byte gSprites
_081224F8:
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _0812251C
@@ -7643,7 +7643,7 @@ _08122588:
adds r0, r7, r5
ldrb r4, [r0]
adds r0, r1, 0
- bl itemid_is_mail
+ bl ItemIsMail
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -7676,7 +7676,7 @@ _081225CC:
adds r0, r5, r7
ldrb r4, [r0, 0x6]
adds r0, r1, 0
- bl itemid_is_mail
+ bl ItemIsMail
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -8013,11 +8013,11 @@ _0812285C: .4byte 0x0000fffc
sub_8122860: @ 8122860
push {lr}
ldr r0, _08122878 @ =gUnknown_845A474
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _0812287C @ =gUnknown_845A4EC
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _08122880 @ =gUnknown_845A47C
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
pop {r0}
bx r0
.align 2, 0
@@ -8164,9 +8164,9 @@ _0812297C: .4byte gSprites
sub_8122980: @ 8122980
push {lr}
ldr r0, _08122994 @ =gUnknown_845A574
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _08122998 @ =gUnknown_845A57C
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
pop {r0}
bx r0
.align 2, 0
@@ -8327,7 +8327,7 @@ _08122AB6:
bl GetMonData
lsls r0, 16
lsrs r0, 16
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _08122AEC
@@ -8550,27 +8550,27 @@ sub_8122C5C: @ 8122C5C
ldrb r0, [r0, 0x17]
cmp r0, 0x3
bhi _08122CA0
- bl ProcessMenuInputNoWrapAround_other
+ bl Menu_ProcessInputNoWrapAround_other
b _08122CA4
.align 2, 0
_08122C94: .4byte gPaletteFade
_08122C98: .4byte gTasks+0x8
_08122C9C: .4byte gUnknown_203B09C
_08122CA0:
- bl ProcessMenuInput_other
+ bl Menu_ProcessInput_other
_08122CA4:
lsls r0, 24
lsrs r5, r0, 24
movs r0, 0
ldrsh r4, [r7, r0]
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
cmp r4, r0
beq _08122CCE
ldr r0, _08122D14 @ =gUnknown_203B09C
ldr r4, [r0]
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
adds r4, 0xF
@@ -8578,7 +8578,7 @@ _08122CA4:
ldrb r0, [r4]
bl sub_8122138
_08122CCE:
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
strh r0, [r7]
@@ -8717,7 +8717,7 @@ sub_8122DBC: @ 8122DBC
str r1, [sp, 0x8]
movs r1, 0xFF
movs r3, 0x1
- bl sub_811EA44
+ bl PartyMenuInit
add sp, 0xC
pop {r0}
bx r0
@@ -8914,7 +8914,7 @@ _08122F56:
ldrb r0, [r6, 0x6]
str r0, [sp, 0x4]
movs r0, 0
- bl sub_80F6B94
+ bl CopyRectIntoAltRect
ldr r1, [r5]
ldrb r2, [r6, 0x8]
ldrb r3, [r6, 0xA]
@@ -8923,7 +8923,7 @@ _08122F56:
ldrb r0, [r6, 0xE]
str r0, [sp, 0x4]
movs r0, 0
- bl sub_80F6B94
+ bl CopyRectIntoAltRect
add r0, sp, 0x8
ldrb r0, [r0]
bl ClearWindowTilemap
@@ -9276,7 +9276,7 @@ _08123228:
bl sub_8123068
_08123256:
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x8
pop {r4-r6}
pop {r0}
@@ -9369,7 +9369,7 @@ sub_8123270: @ 8123270
ldrb r0, [r6, 0x6]
str r0, [sp, 0x4]
movs r0, 0
- bl sub_80F6B94
+ bl CopyRectIntoAltRect
ldr r0, _08123380 @ =gUnknown_203B0CC
ldr r1, [r0]
ldrb r2, [r6, 0x8]
@@ -9379,7 +9379,7 @@ sub_8123270: @ 8123270
ldrb r0, [r6, 0xE]
str r0, [sp, 0x4]
movs r0, 0
- bl sub_80F6B94
+ bl CopyRectIntoAltRect
movs r0, 0x9
ldrsb r0, [r4, r0]
ldr r1, [r5]
@@ -9454,7 +9454,7 @@ sub_8123388: @ 8123388
ldrb r0, [r0, 0x8]
bl PutWindowTilemap
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
adds r0, r6, 0
bl sub_81235E8
b _08123418
@@ -9928,7 +9928,7 @@ _081237AE:
str r1, [sp, 0x8]
movs r1, 0xFF
movs r3, 0x1
- bl sub_811EA44
+ bl PartyMenuInit
b _08123814
.align 2, 0
_081237BC: .4byte gUnknown_203B0D8
@@ -9937,7 +9937,7 @@ _081237C4: .4byte gPlayerParty
_081237C8: .4byte sub_81238A4
_081237CC:
ldrh r0, [r6]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _081237F8
@@ -9967,7 +9967,7 @@ _081237F8:
str r1, [sp, 0x8]
movs r1, 0xFF
movs r3, 0x1
- bl sub_811EA44
+ bl PartyMenuInit
_08123814:
add sp, 0xC
pop {r3}
@@ -10165,7 +10165,7 @@ _081239A4: .4byte gTasks
_081239A8: .4byte sub_81203B8
_081239AC:
ldrh r0, [r5]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _081239EC
@@ -10345,7 +10345,7 @@ sub_8123ACC: @ 8123ACC
str r1, [sp, 0x8]
movs r1, 0xFF
movs r3, 0x1
- bl sub_811EA44
+ bl PartyMenuInit
b _08123B68
.align 2, 0
_08123B38: .4byte gUnknown_203B0A0
@@ -10366,7 +10366,7 @@ _08123B4C:
str r1, [sp, 0x8]
movs r1, 0xFF
movs r3, 0x1
- bl sub_811EA44
+ bl PartyMenuInit
_08123B68:
add sp, 0xC
pop {r3}
@@ -10537,7 +10537,7 @@ _08123CC8:
bl sub_81202F8
_08123CCE:
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r0, _08123CEC @ =gTasks
lsls r1, r7, 2
adds r1, r7
@@ -10675,7 +10675,7 @@ sub_8123DCC: @ 8123DCC
str r1, [sp, 0x8]
movs r1, 0xFF
movs r3, 0x1
- bl sub_811EA44
+ bl PartyMenuInit
add sp, 0xC
pop {r0}
bx r0
@@ -10776,7 +10776,7 @@ _08123EB2:
muls r0, r1
ldr r1, _08123EE8 @ =gPlayerParty
adds r0, r1
- bl sub_809803C
+ bl TakeMailFromMon2
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
@@ -11600,7 +11600,7 @@ sub_81245A4: @ 81245A4
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
ldr r5, _08124610 @ =gUnknown_203B09C
ldr r1, [r5]
lsls r0, 24
@@ -11627,7 +11627,7 @@ _081245D6:
ldr r0, [r5]
adds r0, 0xD
bl sub_8121CE4
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -12237,7 +12237,7 @@ sub_8124AB0: @ 8124AB0
movs r1, 0
movs r2, 0
movs r3, 0x1
- bl sub_811EA44
+ bl PartyMenuInit
add sp, 0xC
pop {r0}
bx r0
@@ -12577,7 +12577,7 @@ _08124D6A:
adds r1, r7, 0
movs r2, 0x3
movs r3, 0x1
- bl sub_811EA44
+ bl PartyMenuInit
add sp, 0xC
pop {r3}
mov r8, r3
@@ -12617,7 +12617,7 @@ sub_8124DB0: @ 8124DB0
movs r0, 0x6
movs r1, 0
movs r2, 0xFF
- bl sub_813CD50
+ bl InitBerryPouch
pop {r0}
bx r0
thumb_func_end sub_8124DB0
@@ -12644,7 +12644,7 @@ sub_8124DE0: @ 8124DE0
push {r4,lr}
ldr r4, _08124E0C @ =gSpecialVar_ItemId
ldrh r0, [r4]
- bl sub_80A1150
+ bl GetItemCompatibilityRule
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
@@ -12759,7 +12759,7 @@ _08124EC8:
str r1, [sp, 0x8]
movs r1, 0xFF
movs r2, 0
- bl sub_811EA44
+ bl PartyMenuInit
_08124EE6:
add sp, 0xC
pop {r3}
@@ -12820,7 +12820,7 @@ sub_8124EFC: @ 8124EFC
movs r0, 0x4
adds r1, r5, 0
adds r3, r6, 0
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
ldrh r1, [r7]
movs r0, 0xA9
lsls r0, 1
@@ -12852,7 +12852,7 @@ _08124F94:
ldr r1, [r4]
str r1, [sp, 0x8]
movs r1, 0xFF
- bl sub_811EA44
+ bl PartyMenuInit
_08124FB2:
add sp, 0xC
pop {r3}
@@ -13293,7 +13293,7 @@ _08125342:
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _0812537C @ =gTasks
lsls r0, r7, 2
adds r0, r7
@@ -13312,7 +13312,7 @@ _08125380:
movs r0, 0x4
adds r1, r5, 0
adds r2, r6, 0
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
adds r0, r7, 0
bl sub_8124DC0
ldr r1, _081253A8 @ =gUnknown_3005E98
@@ -13501,7 +13501,7 @@ _0812551C:
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _08125550 @ =gTasks
mov r2, r9
lsls r0, r2, 2
@@ -13548,7 +13548,7 @@ sub_8125554: @ 8125554
movs r1, 0
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl sub_803539C
ldr r1, _081255B4 @ =gTasks
lsls r0, r5, 2
@@ -13684,9 +13684,9 @@ _08125680:
mov r1, r8
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x10
pop {r3-r5}
mov r8, r3
@@ -13706,7 +13706,7 @@ sub_81256C0: @ 81256C0
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
- bl ProcessMenuInput
+ bl Menu_ProcessInput
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x2
@@ -13730,8 +13730,8 @@ _081256F2:
bx r0
thumb_func_end sub_81256C0
- thumb_func_start sub_81256F8
-sub_81256F8: @ 81256F8
+ thumb_func_start ItemUseCB_PpRestore
+ItemUseCB_PpRestore: @ 81256F8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -13802,7 +13802,7 @@ _0812577E:
_08125784: .4byte gUnknown_203B0A0
_08125788: .4byte gTasks
_0812578C: .4byte sub_81256C0
- thumb_func_end sub_81256F8
+ thumb_func_end ItemUseCB_PpRestore
thumb_func_start sub_8125790
sub_8125790: @ 8125790
@@ -13813,7 +13813,7 @@ sub_8125790: @ 8125790
ldr r0, [r0]
adds r0, 0xC
bl sub_8121CE4
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
ldr r1, _081257C4 @ =gUnknown_203B0A0
lsls r0, 24
lsrs r0, 24
@@ -13897,7 +13897,7 @@ sub_812580C: @ 812580C
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _08125874 @ =gTasks
lsls r0, r5, 2
adds r0, r5
@@ -13958,7 +13958,7 @@ sub_8125898: @ 8125898
ldr r3, _08125940 @ =0x0000ffff
movs r0, 0x4
adds r1, r4, 0
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
movs r0, 0x1
bl PlaySE
ldrh r0, [r6]
@@ -13984,7 +13984,7 @@ sub_8125898: @ 8125898
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _08125950 @ =gTasks
mov r2, r8
lsls r0, r2, 2
@@ -14060,7 +14060,7 @@ _081259A0:
movs r0, 0x4
adds r1, r4, 0
adds r2, r5, 0
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
movs r0, 0x1
bl PlaySE
adds r0, r5, 0
@@ -14086,7 +14086,7 @@ _081259F6:
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _08125A34 @ =gTasks
lsls r0, r6, 2
adds r0, r6
@@ -14225,7 +14225,7 @@ sub_8125AF0: @ 8125AF0
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
pop {r4}
pop {r0}
bx r0
@@ -14315,7 +14315,7 @@ sub_8125B40: @ 8125B40
movs r0, 0x4
adds r1, r4, 0
adds r2, r5, 0
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
adds r0, r6, 0
bl sub_8124DC0
ldr r1, _08125BEC @ =gUnknown_3005E98
@@ -14427,7 +14427,7 @@ _08125C84:
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _08125CEC @ =gTasks
lsls r0, r7, 2
adds r0, r7
@@ -14712,7 +14712,7 @@ _08125EE8:
movs r1, 0
movs r2, 0
movs r3, 0x1
- bl sub_811EA44
+ bl PartyMenuInit
_08125F02:
add sp, 0xC
pop {r4,r5}
@@ -14799,7 +14799,7 @@ sub_8125F5C: @ 8125F5C
movs r0, 0x4
adds r1, r6, 0
adds r3, r4, 0
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
ldr r1, _08125FF0 @ =gStringVar1
adds r0, r6, 0
bl GetMonNickname
@@ -14956,7 +14956,7 @@ sub_81260D8: @ 81260D8
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _08126134 @ =gTasks
lsls r0, r5, 2
adds r0, r5
@@ -15197,7 +15197,7 @@ _081262F6:
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _0812632C @ =gTasks
lsls r0, r6, 2
adds r0, r6
@@ -15268,7 +15268,7 @@ sub_8126350: @ 8126350
ldr r3, _08126424 @ =0x0000ffff
movs r0, 0x4
adds r1, r4, 0
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
movs r0, 0
bl PlayFanfareByFanfareNum
ldrb r0, [r6, 0x9]
@@ -15298,7 +15298,7 @@ sub_8126350: @ 8126350
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _08126438 @ =gTasks
mov r2, r8
lsls r0, r2, 2
@@ -15381,7 +15381,7 @@ _0812647C:
movs r1, 0x1
bl sub_811F818
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
pop {r4-r7}
pop {r0}
bx r0
@@ -15502,7 +15502,7 @@ sub_8126570: @ 8126570
movs r1, 0x2
bl CopyWindowToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x8
pop {r4,r5}
pop {r0}
@@ -15533,7 +15533,7 @@ sub_81265BC: @ 81265BC
movs r1, 0x2
bl CopyWindowToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x4
pop {r4}
pop {r0}
@@ -15765,7 +15765,7 @@ sub_8126770: @ 8126770
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldrh r0, [r6]
mov r1, r8
strh r0, [r1, 0xE]
@@ -15829,7 +15829,7 @@ sub_8126804: @ 8126804
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
mov r0, r8
strh r5, [r0, 0xE]
ldr r1, _0812688C @ =gTasks
@@ -16089,7 +16089,7 @@ _08126A4E:
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
b _08126ABE
.align 2, 0
_08126A80: .4byte gUnknown_203B09C
@@ -16112,7 +16112,7 @@ _08126A94:
ldrh r2, [r0]
ldr r3, _08126AE0 @ =0x0000ffff
movs r0, 0x4
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
_08126AB4:
ldr r0, _08126ADC @ =gSpecialVar_ItemId
ldrh r0, [r0]
@@ -16170,7 +16170,7 @@ sub_8126AFC: @ 8126AFC
movs r1, 0
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _08126B58 @ =gTasks
lsls r0, r5, 2
adds r0, r5
@@ -16221,7 +16221,7 @@ sub_8126B60: @ 8126B60
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _08126BC4 @ =gTasks
lsls r0, r4, 2
adds r0, r4
@@ -16266,7 +16266,7 @@ sub_8126BD4: @ 8126BD4
ldrh r2, [r5]
ldr r3, _08126C20 @ =0x0000ffff
movs r0, 0x4
- bl sub_80A2294
+ bl ItemUse_SetQuestLogEvent
ldrh r0, [r5]
movs r1, 0x1
bl RemoveBagItem
@@ -16640,7 +16640,7 @@ CB2_PartyMenuFromStartMenu: @ 8126EB0
movs r1, 0
movs r2, 0
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
add sp, 0xC
pop {r0}
bx r0
@@ -16684,7 +16684,7 @@ _08126F0A:
movs r1, 0
movs r2, 0x5
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
ldr r1, _08126F38 @ =gUnknown_203B0A0
ldr r0, _08126F3C @ =gSpecialVar_ItemId
ldrh r0, [r0]
@@ -16736,7 +16736,7 @@ _08126F84: .4byte gUnknown_203B0A0
_08126F88: .4byte gPlayerParty
_08126F8C:
ldrh r0, [r5]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _08126FA0
@@ -16780,7 +16780,7 @@ sub_8126FD8: @ 8126FD8
lsrs r4, r0, 24
ldr r5, _08127004 @ =gUnknown_203B0A0
ldrh r0, [r5, 0xC]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _08127010
@@ -16995,7 +16995,7 @@ _0812719C:
str r1, [sp, 0x8]
movs r1, 0xFF
movs r3, 0x1
- bl sub_811EA44
+ bl PartyMenuInit
_081271B8:
add sp, 0xC
pop {r4-r7}
@@ -17135,7 +17135,7 @@ _081272C4: .4byte gUnknown_203B0D8
_081272C8: .4byte gStringVar4
_081272CC:
adds r0, r4, 0
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _081272F0
@@ -17205,7 +17205,7 @@ sub_812734C: @ 812734C
movs r1, 0x1
bl sub_81202F8
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _0812737C @ =gTasks
lsls r0, r4, 2
adds r0, r4
@@ -17233,7 +17233,7 @@ sub_8127384: @ 8127384
bne _081273A0
adds r0, r1, 0
movs r1, 0x1
- bl sub_809A460
+ bl RemoveItemFromPC
b _081273A8
.align 2, 0
_0812739C: .4byte gUnknown_203B0A0
@@ -17286,7 +17286,7 @@ sub_81273D8: @ 81273D8
movs r1, 0
movs r2, 0x7
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
add sp, 0xC
pop {r0}
bx r0
@@ -17351,7 +17351,7 @@ _0812746C:
bl sub_81202F8
_08127482:
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r0, _081274A0 @ =gTasks
lsls r1, r6, 2
adds r1, r6
@@ -17387,7 +17387,7 @@ sub_81274A8: @ 81274A8
movs r1, 0
movs r2, 0
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
ldr r1, _081274F4 @ =gUnknown_203B0A0
lsls r4, 6
ldrb r2, [r1, 0x8]
@@ -17824,7 +17824,7 @@ sub_81277F4: @ 81277F4
movs r1, 0
movs r2, 0
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
add sp, 0xC
pop {r0}
bx r0
@@ -17844,30 +17844,30 @@ sub_812781C: @ 812781C
str r0, [sp]
ldr r0, _08127848 @ =sub_811FB28
str r0, [sp, 0x4]
- ldr r0, _0812784C @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _0812784C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0
movs r2, 0xC
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
b _08127870
.align 2, 0
_08127844: .4byte gSpecialVar_0x8005
_08127848: .4byte sub_811FB28
-_0812784C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_0812784C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_08127850:
movs r0, 0x7F
str r0, [sp]
ldr r0, _08127878 @ =sub_8126DC8
str r0, [sp, 0x4]
- ldr r0, _0812787C @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _0812787C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0
movs r2, 0xC
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
ldr r1, _08127880 @ =gUnknown_203B0A0
ldr r0, _08127884 @ =gSpecialVar_0x8007
ldrh r0, [r0]
@@ -17878,7 +17878,7 @@ _08127870:
bx r0
.align 2, 0
_08127878: .4byte sub_8126DC8
-_0812787C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_0812787C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_08127880: .4byte gUnknown_203B0A0
_08127884: .4byte gSpecialVar_0x8007
thumb_func_end sub_812781C
@@ -17891,19 +17891,19 @@ sub_8127888: @ 8127888
str r0, [sp]
ldr r0, _081278AC @ =sub_811FB28
str r0, [sp, 0x4]
- ldr r0, _081278B0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _081278B0 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
str r0, [sp, 0x8]
movs r0, 0xB
movs r1, 0
movs r2, 0xD
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
add sp, 0xC
pop {r0}
bx r0
.align 2, 0
_081278AC: .4byte sub_811FB28
-_081278B0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_081278B0: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_8127888
thumb_func_start sub_81278B4
@@ -17960,7 +17960,7 @@ sub_81278DC: @ 81278DC
movs r0, 0x1
adds r2, r4, 0
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
movs r0, 0x8
bl sub_80EB2F4
b _08127950
@@ -17982,7 +17982,7 @@ _08127930:
movs r0, 0x1
adds r2, r4, 0
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
_08127950:
bl nullsub_44
bl pokemon_change_order
@@ -18012,7 +18012,7 @@ sub_8127968: @ 8127968
movs r0, 0x1
movs r2, 0
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
bl nullsub_44
bl pokemon_change_order
add sp, 0xC
@@ -18040,7 +18040,7 @@ sub_81279A4: @ 81279A4
movs r0, 0x1
movs r2, 0xE
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
bl nullsub_44
bl pokemon_change_order
add sp, 0xC
@@ -18079,7 +18079,7 @@ sub_81279E0: @ 81279E0
movs r0, 0x1
movs r2, 0x3
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
movs r0, 0x8
bl sub_80EB2F4
b _08127A62
@@ -18110,7 +18110,7 @@ _08127A44:
movs r0, 0x1
movs r2, 0x3
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
_08127A62:
bl nullsub_44
bl pokemon_change_order
@@ -18182,7 +18182,7 @@ sub_8127AC0: @ 8127AC0
bne _08127B08
_08127AE6:
ldr r4, _08127AFC @ =gStringVar1
- bl sub_80444C4
+ bl GetTrainerPartnerName
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
@@ -19069,7 +19069,7 @@ sub_8128198: @ 8128198
movs r1, 0x3
movs r2, 0
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
add sp, 0xC
pop {r0}
bx r0
@@ -19314,7 +19314,7 @@ sub_8128370: @ 8128370
movs r1, 0
movs r2, 0
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
add sp, 0xC
pop {r0}
bx r0
@@ -19343,7 +19343,7 @@ sub_81283A8: @ 81283A8
movs r1, 0
movs r2, 0xB
movs r3, 0
- bl sub_811EA44
+ bl PartyMenuInit
add sp, 0xC
pop {r0}
bx r0
diff --git a/asm/play_time.s b/asm/play_time.s
deleted file mode 100644
index 41d0f6239..000000000
--- a/asm/play_time.s
+++ /dev/null
@@ -1,137 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start PlayTimeCounter_Reset
-PlayTimeCounter_Reset: @ 8054814
- ldr r1, _08054830 @ =gUnknown_3000E7C
- movs r0, 0
- strb r0, [r1]
- ldr r2, _08054834 @ =gSaveBlock2Ptr
- ldr r3, [r2]
- movs r1, 0
- movs r0, 0
- strh r0, [r3, 0xE]
- strb r1, [r3, 0x10]
- ldr r0, [r2]
- strb r1, [r0, 0x11]
- ldr r0, [r2]
- strb r1, [r0, 0x12]
- bx lr
- .align 2, 0
-_08054830: .4byte gUnknown_3000E7C
-_08054834: .4byte gSaveBlock2Ptr
- thumb_func_end PlayTimeCounter_Reset
-
- thumb_func_start PlayTimeCounter_Start
-PlayTimeCounter_Start: @ 8054838
- push {lr}
- ldr r1, _08054854 @ =gUnknown_3000E7C
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, _08054858 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0xE]
- ldr r0, _0805485C @ =0x000003e7
- cmp r1, r0
- bls _08054850
- bl PlayTimeCounter_SetToMax
-_08054850:
- pop {r0}
- bx r0
- .align 2, 0
-_08054854: .4byte gUnknown_3000E7C
-_08054858: .4byte gSaveBlock2Ptr
-_0805485C: .4byte 0x000003e7
- thumb_func_end PlayTimeCounter_Start
-
- thumb_func_start sub_8054860
-sub_8054860: @ 8054860
- ldr r1, _08054868 @ =gUnknown_3000E7C
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08054868: .4byte gUnknown_3000E7C
- thumb_func_end sub_8054860
-
- thumb_func_start PlayTimeCounter_Update
-PlayTimeCounter_Update: @ 805486C
- push {lr}
- ldr r0, _080548C8 @ =gUnknown_3000E7C
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080548C4
- ldr r2, _080548CC @ =gSaveBlock2Ptr
- ldr r0, [r2]
- ldrb r1, [r0, 0x12]
- adds r1, 0x1
- movs r3, 0
- strb r1, [r0, 0x12]
- ldr r1, [r2]
- ldrb r0, [r1, 0x12]
- cmp r0, 0x3B
- bls _080548C4
- strb r3, [r1, 0x12]
- ldr r0, [r2]
- ldrb r1, [r0, 0x11]
- adds r1, 0x1
- strb r1, [r0, 0x11]
- ldr r1, [r2]
- ldrb r0, [r1, 0x11]
- cmp r0, 0x3B
- bls _080548C4
- strb r3, [r1, 0x11]
- ldr r0, [r2]
- ldrb r1, [r0, 0x10]
- adds r1, 0x1
- strb r1, [r0, 0x10]
- ldr r1, [r2]
- ldrb r0, [r1, 0x10]
- cmp r0, 0x3B
- bls _080548C4
- strb r3, [r1, 0x10]
- ldr r0, [r2]
- ldrh r1, [r0, 0xE]
- adds r1, 0x1
- strh r1, [r0, 0xE]
- lsls r1, 16
- ldr r0, _080548D0 @ =0x03e70000
- cmp r1, r0
- bls _080548C4
- bl PlayTimeCounter_SetToMax
-_080548C4:
- pop {r0}
- bx r0
- .align 2, 0
-_080548C8: .4byte gUnknown_3000E7C
-_080548CC: .4byte gSaveBlock2Ptr
-_080548D0: .4byte 0x03e70000
- thumb_func_end PlayTimeCounter_Update
-
- thumb_func_start PlayTimeCounter_SetToMax
-PlayTimeCounter_SetToMax: @ 80548D4
- ldr r1, _080548F0 @ =gUnknown_3000E7C
- movs r0, 0x2
- strb r0, [r1]
- ldr r2, _080548F4 @ =gSaveBlock2Ptr
- ldr r3, [r2]
- ldr r0, _080548F8 @ =0x000003e7
- strh r0, [r3, 0xE]
- movs r1, 0x3B
- strb r1, [r3, 0x10]
- ldr r0, [r2]
- strb r1, [r0, 0x11]
- ldr r0, [r2]
- strb r1, [r0, 0x12]
- bx lr
- .align 2, 0
-_080548F0: .4byte gUnknown_3000E7C
-_080548F4: .4byte gSaveBlock2Ptr
-_080548F8: .4byte 0x000003e7
- thumb_func_end PlayTimeCounter_SetToMax
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/player_pc.s b/asm/player_pc.s
index b5149a435..32838be77 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -9,7 +9,7 @@
sub_80EB658: @ 80EB658
push {r4-r6,lr}
movs r4, 0
- bl sub_809A2A4
+ bl ClearPCItemSlots
ldr r1, _080EB6A8 @ =gUnknown_8402220
ldrh r0, [r1]
cmp r0, 0
@@ -149,7 +149,7 @@ _080EB77E:
strh r0, [r7, 0x14]
ldrb r0, [r7, 0x14]
movs r1, 0
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
movs r0, 0x2
movs r1, 0
bl GetMenuCursorDimensionByFont
@@ -187,9 +187,9 @@ _080EB77E:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _080EB814 @ =gTasks
mov r2, r8
lsls r0, r2, 2
@@ -223,7 +223,7 @@ sub_80EB81C: @ 80EB81C
lsls r6, r1, 3
ldr r7, _080EB870 @ =gTasks+0x8
adds r4, r6, r7
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r5, r0, 24
movs r0, 0x2
@@ -237,13 +237,13 @@ sub_80EB81C: @ 80EB81C
bl PlaySE
ldrb r0, [r4, 0x14]
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4, 0x14]
bl ClearWindowTilemap
ldrb r0, [r4, 0x14]
bl RemoveWindow
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
adds r0, r7, 0
subs r0, 0x8
adds r0, r6, r0
@@ -256,13 +256,13 @@ _080EB874: .4byte sub_80EB9B8
_080EB878:
ldrb r0, [r4, 0x14]
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4, 0x14]
bl ClearWindowTilemap
ldrb r0, [r4, 0x14]
bl RemoveWindow
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
adds r2, r7, 0
subs r2, 0x8
adds r2, r6, r2
@@ -464,7 +464,7 @@ _080EBA1E:
lsls r0, 24
lsrs r0, 24
movs r1, 0
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
movs r0, 0x2
movs r1, 0
bl GetMenuCursorDimensionByFont
@@ -488,9 +488,9 @@ _080EBA1E:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _080EBA88 @ =gUnknown_84021DC
lsls r0, r7, 2
adds r0, r1
@@ -541,7 +541,7 @@ sub_80EBAB8: @ 80EBAB8
ands r0, r1
cmp r0, 0
beq _080EBAE8
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
cmp r0, 0
beq _080EBB64
@@ -557,7 +557,7 @@ _080EBAE8:
ands r0, r1
cmp r0, 0
beq _080EBB20
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
@@ -566,9 +566,9 @@ _080EBAE8:
bl PlaySE
movs r0, 0x1
_080EBB04:
- bl MoveMenuCursor
+ bl Menu_MoveCursor
ldr r4, _080EBB1C @ =gUnknown_84021DC
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 22
adds r0, r4
@@ -586,7 +586,7 @@ _080EBB20:
movs r0, 0x5
bl PlaySE
ldr r4, _080EBB48 @ =gUnknown_8402208
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 21
adds r4, 0x4
@@ -727,7 +727,7 @@ sub_80EBC38: @ 80EBC38
lsls r6, r0, 3
ldr r7, _080EBC6C @ =gTasks+0x8
adds r4, r6, r7
- bl sub_809A33C
+ bl CountItemsInPC
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x4]
@@ -752,7 +752,7 @@ _080EBC78: .4byte sub_80EBCAC
_080EBC7C:
ldrb r0, [r4, 0x14]
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4, 0x14]
bl ClearWindowTilemap
ldrb r0, [r4, 0x14]
@@ -811,7 +811,7 @@ sub_80EBCD8: @ 80EBCD8
bl CleanupOverworldWindowsAndTilemaps
ldrb r0, [r5, 0xC]
ldr r1, _080EBD14 @ =CB2_ReturnToField
- bl sub_810D3F4
+ bl ItemPc_Init
adds r0, r4, 0
bl DestroyTask
_080EBD06:
@@ -837,7 +837,7 @@ sub_80EBD18: @ 80EBD18
ldr r0, _080EBD44 @ =sub_80EBCD8
str r0, [r1]
movs r0, 0
- bl sub_810DE94
+ bl ItemPc_SetInitializedFlag
movs r0, 0x1
movs r1, 0
bl fade_screen
@@ -861,7 +861,7 @@ sub_80EBD48: @ 80EBD48
adds r4, r0
ldrb r0, [r4, 0x14]
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4, 0x14]
bl ClearWindowTilemap
ldrb r0, [r4, 0x14]
@@ -1084,7 +1084,7 @@ sub_80EBEB0: @ 80EBEB0
mov r2, r8
bl AddTextPrinterParameterized
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r4, _080EBF38 @ =gUnknown_203AAC4
adds r0, r4, 0
bl sub_810EC98
@@ -1134,7 +1134,7 @@ sub_80EBF40: @ 80EBF40
cmp r0, 0
bne _080EBFEA
ldrb r0, [r4, 0x16]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r6, r0, 0
ldrb r0, [r4, 0x16]
ldr r7, _080EBF9C @ =gUnknown_203AAC6
@@ -1142,7 +1142,7 @@ sub_80EBF40: @ 80EBF40
mov r8, r1
adds r1, r7, 0
mov r2, r8
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
movs r0, 0x2
negs r0, r0
cmp r6, r0
@@ -1174,9 +1174,9 @@ _080EBFB6:
ldrb r0, [r4, 0x16]
adds r1, r7, 0
mov r2, r8
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
mov r1, r8
ldrb r0, [r1, 0xA]
bl RemoveScrollIndicatorArrowPair
@@ -1288,9 +1288,9 @@ sub_80EC094: @ 80EC094
ldrb r0, [r4, 0x16]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl sub_810EDB0
adds r0, r5, 0
bl sub_80EB8BC
@@ -1341,9 +1341,9 @@ sub_80EC0D8: @ 80EC0D8
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _080EC154 @ =gTasks
lsls r0, r5, 2
adds r0, r5
@@ -1369,7 +1369,7 @@ sub_80EC15C: @ 80EC15C
lsls r0, 24
lsrs r5, r0, 24
adds r6, r5, 0
- bl ProcessMenuInput_other
+ bl Menu_ProcessInput_other
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
@@ -1578,7 +1578,7 @@ sub_80EC2FC: @ 80EC2FC
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- bl sub_80F7858
+ bl DisplayYesNoMenuDefaultYes
ldr r1, _080EC31C @ =gTasks
lsls r0, r4, 2
adds r0, r4
@@ -1875,7 +1875,7 @@ sub_80EC53C: @ 80EC53C
adds r0, r4, 0
bl sub_80EBEB0
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _080EC56C @ =gTasks
lsls r0, r4, 2
adds r0, r4
@@ -1900,7 +1900,7 @@ sub_80EC574: @ 80EC574
movs r0, 0x2
bl sub_810EBE0
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r1, _080EC59C @ =gTasks
lsls r0, r4, 2
adds r0, r4
diff --git a/asm/poison.s b/asm/poison.s
new file mode 100644
index 000000000..adaa51dbd
--- /dev/null
+++ b/asm/poison.s
@@ -0,0 +1,326 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80B1620
+sub_80B1620: @ 80B1620
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080B1674 @ =gBattleAnimArgs
+ movs r1, 0x6
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B1636
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl StartSpriteAnim
+_080B1636:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldrh r0, [r4, 0x4]
+ strh r0, [r5, 0x2E]
+ ldr r4, _080B1678 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ ldr r0, _080B167C @ =0x0000ffe2
+ strh r0, [r5, 0x38]
+ adds r0, r5, 0
+ bl sub_8075068
+ ldr r0, _080B1680 @ =sub_80B1684
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1674: .4byte gBattleAnimArgs
+_080B1678: .4byte gBattleAnimTarget
+_080B167C: .4byte 0x0000ffe2
+_080B1680: .4byte sub_80B1684
+ thumb_func_end sub_80B1620
+
+ thumb_func_start sub_80B1684
+sub_80B1684: @ 80B1684
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B1698
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B1698:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B1684
+
+ thumb_func_start sub_80B16A0
+sub_80B16A0: @ 80B16A0
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ ldr r5, _080B1714 @ =gBattleAnimArgs
+ movs r1, 0x6
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080B16B8
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl StartSpriteAnim
+_080B16B8:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080B1718 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ mov r6, sp
+ adds r6, 0x2
+ movs r1, 0x1
+ mov r2, sp
+ adds r3, r6, 0
+ bl sub_8076D9C
+ ldr r0, _080B171C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B16E6
+ ldrh r0, [r5, 0x8]
+ negs r0, r0
+ strh r0, [r5, 0x8]
+_080B16E6:
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x2E]
+ mov r1, sp
+ ldrh r0, [r5, 0x8]
+ ldrh r1, [r1]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ ldrh r0, [r5, 0xA]
+ ldrh r6, [r6]
+ adds r0, r6
+ strh r0, [r4, 0x36]
+ ldr r0, _080B1720 @ =0x0000ffe2
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_8075068
+ ldr r0, _080B1724 @ =sub_80B1728
+ str r0, [r4, 0x1C]
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1714: .4byte gBattleAnimArgs
+_080B1718: .4byte gBattleAnimTarget
+_080B171C: .4byte gBattleAnimAttacker
+_080B1720: .4byte 0x0000ffe2
+_080B1724: .4byte sub_80B1728
+ thumb_func_end sub_80B16A0
+
+ thumb_func_start sub_80B1728
+sub_80B1728: @ 80B1728
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B173C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B173C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B1728
+
+ thumb_func_start sub_80B1744
+sub_80B1744: @ 80B1744
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080B1790 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldrh r1, [r5]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ ldrh r1, [r5, 0x2]
+ adds r0, r1
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl sub_80754B8
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r2, 0x4
+ ldrsh r1, [r5, r2]
+ bl __divsi3
+ strh r0, [r4, 0x38]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ movs r2, 0x4
+ ldrsh r1, [r5, r2]
+ bl __divsi3
+ strh r0, [r4, 0x3A]
+ ldr r0, _080B1794 @ =sub_80B1798
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1790: .4byte gBattleAnimArgs
+_080B1794: .4byte sub_80B1798
+ thumb_func_end sub_80B1744
+
+ thumb_func_start sub_80B1798
+sub_80B1798: @ 80B1798
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8074D00
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x38]
+ subs r0, r1
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x32]
+ ldrh r1, [r4, 0x3A]
+ subs r0, r1
+ strh r0, [r4, 0x32]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B17BE
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B17BE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B1798
+
+ thumb_func_start sub_80B17C4
+sub_80B17C4: @ 80B17C4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080B1824 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r2, r4, 0
+ adds r2, 0x20
+ adds r3, r4, 0
+ adds r3, 0x22
+ movs r1, 0x1
+ bl sub_8076D9C
+ ldr r0, _080B1828 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B17F0
+ ldr r1, _080B182C @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r1]
+_080B17F0:
+ ldr r0, _080B182C @ =gBattleAnimArgs
+ ldrh r2, [r0]
+ ldrh r1, [r4, 0x20]
+ adds r2, r1
+ strh r2, [r4, 0x20]
+ ldrh r1, [r0, 0x2]
+ ldrh r3, [r4, 0x22]
+ adds r1, r3
+ strh r1, [r4, 0x22]
+ ldrh r3, [r0, 0x8]
+ strh r3, [r4, 0x2E]
+ ldrh r0, [r0, 0x4]
+ adds r2, r0
+ strh r2, [r4, 0x32]
+ adds r1, r3
+ strh r1, [r4, 0x36]
+ ldr r0, _080B1830 @ =sub_8075590
+ str r0, [r4, 0x1C]
+ ldr r1, _080B1834 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1824: .4byte gBattleAnimTarget
+_080B1828: .4byte gBattleAnimAttacker
+_080B182C: .4byte gBattleAnimArgs
+_080B1830: .4byte sub_8075590
+_080B1834: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B17C4
+
+ thumb_func_start sub_80B1838
+sub_80B1838: @ 80B1838
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080B1850 @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080B1854
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075114
+ b _080B188A
+ .align 2, 0
+_080B1850: .4byte gBattleAnimArgs
+_080B1854:
+ ldr r0, _080B1894 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r2, r4, 0
+ adds r2, 0x20
+ adds r3, r4, 0
+ adds r3, 0x22
+ movs r1, 0x1
+ bl sub_8076D9C
+ ldr r0, _080B1898 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B187A
+ ldrh r0, [r5]
+ negs r0, r0
+ strh r0, [r5]
+_080B187A:
+ 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]
+_080B188A:
+ ldr r0, _080B189C @ =sub_80B18A0
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B1894: .4byte gBattleAnimTarget
+_080B1898: .4byte gBattleAnimAttacker
+_080B189C: .4byte sub_80B18A0
+ thumb_func_end sub_80B1838
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokeball.s b/asm/pokeball.s
index 58c9ac77c..85bfcb620 100644
--- a/asm/pokeball.s
+++ b/asm/pokeball.s
@@ -432,7 +432,7 @@ sub_804AC94: @ 804AC94
strh r7, [r6, 0x38]
ldr r0, _0804ACF4 @ =sub_804AD00
str r0, [r6, 0x1C]
- ldr r5, _0804ACF8 @ =gUnknown_2023D44
+ ldr r5, _0804ACF8 @ =gBattlerSpriteIds
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r5
@@ -468,7 +468,7 @@ _0804ACEE:
bx r0
.align 2, 0
_0804ACF4: .4byte sub_804AD00
-_0804ACF8: .4byte gUnknown_2023D44
+_0804ACF8: .4byte gBattlerSpriteIds
_0804ACFC: .4byte gSprites
thumb_func_end sub_804AC94
@@ -487,7 +487,7 @@ sub_804AD00: @ 804AD00
bl PlaySE
_0804AD18:
ldr r6, _0804AD64 @ =gSprites
- ldr r5, _0804AD68 @ =gUnknown_2023D44
+ ldr r5, _0804AD68 @ =gBattlerSpriteIds
movs r1, 0x3A
ldrsh r0, [r4, r1]
adds r0, r5
@@ -525,7 +525,7 @@ _0804AD18:
b _0804AD90
.align 2, 0
_0804AD64: .4byte gSprites
-_0804AD68: .4byte gUnknown_2023D44
+_0804AD68: .4byte gBattlerSpriteIds
_0804AD6C: .4byte sub_804AD98
_0804AD70:
ldrh r0, [r1, 0x30]
@@ -1363,7 +1363,7 @@ _0804B3F2:
strh r7, [r1, 0x10]
strh r2, [r1, 0x26]
_0804B420:
- ldr r5, _0804B47C @ =gUnknown_2023D44
+ ldr r5, _0804B47C @ =gBattlerSpriteIds
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r5
@@ -1405,7 +1405,7 @@ _0804B420:
.align 2, 0
_0804B474: .4byte Task_PlayCryWhenReleasedFromBall
_0804B478: .4byte gTasks
-_0804B47C: .4byte gUnknown_2023D44
+_0804B47C: .4byte gBattlerSpriteIds
_0804B480: .4byte gSprites
thumb_func_end sub_804B268
@@ -1437,7 +1437,7 @@ HandleBallAnimEnd: @ 804B4A4
lsls r0, 24
lsrs r6, r0, 24
ldr r4, _0804B508 @ =gSprites
- ldr r0, _0804B50C @ =gUnknown_2023D44
+ ldr r0, _0804B50C @ =gBattlerSpriteIds
adds r3, r6, r0
ldrb r1, [r3]
lsls r0, r1, 4
@@ -1482,7 +1482,7 @@ _0804B4E6:
b _0804B52C
.align 2, 0
_0804B508: .4byte gSprites
-_0804B50C: .4byte gUnknown_2023D44
+_0804B50C: .4byte gBattlerSpriteIds
_0804B510:
ldr r2, _0804B5B4 @ =0xfffffee0
adds r0, r2, 0
@@ -1509,7 +1509,7 @@ _0804B52C:
cmp r7, 0
beq _0804B5AE
ldr r2, _0804B5B8 @ =gSprites
- ldr r0, _0804B5BC @ =gUnknown_2023D44
+ ldr r0, _0804B5BC @ =gBattlerSpriteIds
adds r0, r6, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -1571,7 +1571,7 @@ _0804B5AE:
.align 2, 0
_0804B5B4: .4byte 0xfffffee0
_0804B5B8: .4byte gSprites
-_0804B5BC: .4byte gUnknown_2023D44
+_0804B5BC: .4byte gBattlerSpriteIds
_0804B5C0: .4byte gUnknown_2024005
_0804B5C4: .4byte gUnknown_2024018
thumb_func_end HandleBallAnimEnd
@@ -1607,7 +1607,7 @@ _0804B600:
cmp r1, r0
bne _0804B666
ldr r5, _0804B670 @ =gSprites
- ldr r4, _0804B674 @ =gUnknown_2023D44
+ ldr r4, _0804B674 @ =gBattlerSpriteIds
movs r1, 0x3A
ldrsh r0, [r6, r1]
adds r0, r4
@@ -1658,7 +1658,7 @@ _0804B666:
.align 2, 0
_0804B66C: .4byte 0x0000013b
_0804B670: .4byte gSprites
-_0804B674: .4byte gUnknown_2023D44
+_0804B674: .4byte gBattlerSpriteIds
_0804B678: .4byte gMain
_0804B67C: .4byte 0x00000439
_0804B680: .4byte gUnknown_2024018
@@ -2029,9 +2029,9 @@ CreatePokeballSpriteToReleaseMon: @ 804B908
lsls r0, 24
lsrs r7, r0, 24
ldr r0, _0804B9D4 @ =gUnknown_826056C
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _0804B9D8 @ =gUnknown_82605CC
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
ldr r0, _0804B9DC @ =gUnknown_82606F4
mov r1, r9
mov r2, r10
@@ -2362,9 +2362,9 @@ sub_804BB98: @ 804BB98
lsrs r0, 24
mov r9, r0
ldr r0, _0804BC3C @ =gUnknown_826056C
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _0804BC40 @ =gUnknown_82605CC
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
ldr r0, _0804BC44 @ =gUnknown_82606F4
adds r1, r6, 0
mov r2, r8
@@ -2790,10 +2790,10 @@ LoadBallGfx: @ 804BEF4
cmp r0, r1
bne _0804BF1C
adds r0, r5, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _0804BF58 @ =gUnknown_82605CC
adds r0, r6, r0
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
_0804BF1C:
cmp r4, 0x6
beq _0804BF48
diff --git a/asm/pokedex.s b/asm/pokedex.s
index 279270fbb..69ca5adcf 100644
--- a/asm/pokedex.s
+++ b/asm/pokedex.s
@@ -220,8 +220,8 @@ _08088F7C:
bx r1
thumb_func_end sub_8088F58
- thumb_func_start sub_8088F84
-sub_8088F84: @ 8088F84
+ thumb_func_start HasAllKantoMons
+HasAllKantoMons: @ 8088F84
push {r4,r5,lr}
movs r0, 0
_08088F88:
@@ -277,6 +277,6 @@ _08088FE8:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_8088F84
+ thumb_func_end HasAllKantoMons
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokedex_area_markers.s b/asm/pokedex_area_markers.s
index 6062b95ee..d6ea7f251 100644
--- a/asm/pokedex_area_markers.s
+++ b/asm/pokedex_area_markers.s
@@ -66,7 +66,7 @@ sub_8134230: @ 8134230
ands r2, r5
orrs r2, r1
str r2, [r0, 0x4]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _081343D0 @ =gUnknown_846341C
mov r3, r8
lsls r3, 4
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index 24094d9af..268b65fd8 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -593,7 +593,7 @@ _081029D0:
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
bl sub_806E25C
cmp r0, 0
beq _081029F4
@@ -621,13 +621,13 @@ _08102A10: .4byte gUnknown_203ACF0
_08102A14:
ldr r0, [r4]
ldrb r0, [r0, 0x17]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
ldr r1, [r4]
str r0, [r1, 0xC]
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldr r0, _08102A4C @ =gMain
ldrh r1, [r0, 0x2E]
movs r3, 0x1
@@ -754,7 +754,7 @@ _08102B24:
adds r1, r2, 0
adds r1, 0x12
adds r2, 0x10
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0x20
str r0, [sp]
movs r0, 0x14
@@ -804,7 +804,7 @@ _08102B94:
adds r1, r2, 0
adds r1, 0x12
adds r2, 0x10
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0x1
bl HideBg
ldr r0, [r4]
@@ -832,7 +832,7 @@ _08102BD8:
adds r1, r2, 0
adds r1, 0x12
adds r2, 0x10
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0x1
bl HideBg
ldr r0, [r4]
@@ -1238,7 +1238,7 @@ _08102F60:
movs r0, 0x1
movs r1, 0
movs r2, 0x3
- bl sub_8107A9C
+ bl ListMenuOverrideSetColors
b _08102F7A
.align 2, 0
_08102F6C: .4byte gUnknown_203ACF0
@@ -1246,7 +1246,7 @@ _08102F70:
movs r0, 0xA
movs r1, 0
movs r2, 0xB
- bl sub_8107A9C
+ bl ListMenuOverrideSetColors
_08102F7A:
pop {r0}
bx r0
@@ -1367,7 +1367,7 @@ _0810307C:
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
bl sub_81039F0
ldr r1, [r4]
adds r1, 0x60
@@ -1379,13 +1379,13 @@ _08103098:
ldr r0, [r4]
adds r0, 0x41
ldrb r0, [r0]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
ldr r1, [r4]
str r0, [r1, 0x30]
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldr r0, _081030F0 @ =gMain
ldrh r1, [r0, 0x2E]
movs r3, 0x1
@@ -1687,7 +1687,7 @@ _08103344:
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
bl sub_81039F0
ldr r1, [r4]
adds r1, 0x60
@@ -1700,13 +1700,13 @@ _08103362:
ldr r0, [r4]
adds r0, 0x41
ldrb r0, [r0]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
ldr r1, [r4]
str r0, [r1, 0x30]
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldr r0, _081033C4 @ =gMain
ldrh r1, [r0, 0x2E]
movs r2, 0x1
@@ -2433,7 +2433,7 @@ _08103964:
ldrh r3, [r0, 0x3C]
_0810396E:
adds r0, r5, 0
- bl Unused_ListMenuInit2
+ bl ListMenuInitInRect
ldr r1, [r4]
adds r1, 0x41
strb r0, [r1]
@@ -2467,7 +2467,7 @@ _0810399C:
adds r1, r2, 0
adds r1, 0x36
adds r2, 0x34
- bl DestroyListMenu
+ bl DestroyListMenuTask
b _081039E8
.align 2, 0
_081039B4: .4byte gUnknown_203ACF0
@@ -2480,7 +2480,7 @@ _081039B8:
adds r1, r2, 0
adds r1, 0x3A
adds r2, 0x38
- bl DestroyListMenu
+ bl DestroyListMenuTask
b _081039E8
.align 2, 0
_081039D0: .4byte gUnknown_203ACF0
@@ -2493,7 +2493,7 @@ _081039D4:
adds r1, r2, 0
adds r1, 0x3E
adds r2, 0x3C
- bl DestroyListMenu
+ bl DestroyListMenuTask
_081039E8:
pop {r0}
bx r0
@@ -2572,7 +2572,7 @@ sub_8103A40: @ 8103A40
movs r1, 0
movs r2, 0x28
adds r3, r6, 0
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
ldr r0, _08103AC4 @ =gBaseStats
lsls r4, r5, 3
subs r4, r5
@@ -2587,7 +2587,7 @@ sub_8103A40: @ 8103A40
lsrs r1, 24
movs r2, 0x78
adds r3, r6, 0
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
ldrb r1, [r4, 0x7]
cmp r5, r1
beq _08103AB6
@@ -2599,7 +2599,7 @@ sub_8103A40: @ 8103A40
lsrs r1, 24
movs r2, 0x98
adds r3, r6, 0
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
_08103AB6:
add sp, 0x4
pop {r4-r7}
@@ -4266,7 +4266,7 @@ _08104852:
adds r0, r7, 0
adds r1, r5, 0
adds r2, r6, 0
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
add sp, 0x18
pop {r4-r7}
pop {r0}
@@ -7753,7 +7753,7 @@ _08106478:
lsrs r1, 24
movs r2, 0
movs r3, 0x1
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
ldrb r1, [r4, 0x7]
cmp r5, r1
beq _08106504
@@ -7765,7 +7765,7 @@ _08106478:
lsrs r1, 24
movs r2, 0x20
movs r3, 0x1
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
_08106504:
ldr r7, _081066B8 @ =gUnknown_203ACF0
ldr r0, [r7]
diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s
deleted file mode 100644
index 416c996bb..000000000
--- a/asm/pokemon_3.s
+++ /dev/null
@@ -1,1228 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80444F8
-sub_80444F8: @ 80444F8
- push {r4-r6,lr}
- movs r6, 0x1
- movs r5, 0
-_080444FE:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08044548 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x5
- movs r2, 0
- bl GetMonData
- cmp r0, 0x1
- bne _08044538
- adds r0, r4, 0
- movs r1, 0x6
- movs r2, 0
- bl GetMonData
- cmp r0, 0
- bne _08044538
- adds r0, r4, 0
- movs r1, 0x38
- movs r2, 0
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r6
- bls _08044538
- adds r6, r0, 0
-_08044538:
- adds r5, 0x1
- cmp r5, 0x5
- ble _080444FE
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08044548: .4byte gPlayerParty
- thumb_func_end sub_80444F8
-
- thumb_func_start sub_804454C
-sub_804454C: @ 804454C
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08044558 @ =gFacilityClassToPicIndex
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08044558: .4byte gFacilityClassToPicIndex
- thumb_func_end sub_804454C
-
- thumb_func_start sub_804455C
-sub_804455C: @ 804455C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- cmp r0, 0x5
- bhi _08044632
- lsls r0, 2
- ldr r1, _08044574 @ =_08044578
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08044574: .4byte _08044578
- .align 2, 0
-_08044578:
- .4byte _08044632
- .4byte _08044590
- .4byte _08044664
- .4byte _080445BC
- .4byte _08044664
- .4byte _080445F4
-_08044590:
- ldr r0, _080445B0 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08044632
- ldr r0, _080445B4 @ =gMain
- ldr r1, _080445B8 @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08044632
- b _0804461A
- .align 2, 0
-_080445B0: .4byte gBattleTypeFlags
-_080445B4: .4byte gMain
-_080445B8: .4byte 0x00000439
-_080445BC:
- ldr r0, _080445E8 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08044632
- ldr r0, _080445EC @ =gMain
- ldr r1, _080445F0 @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08044632
- cmp r5, 0x1
- beq _08044664
- cmp r5, 0x4
- beq _08044664
- cmp r5, 0x5
- beq _08044664
- b _08044632
- .align 2, 0
-_080445E8: .4byte gBattleTypeFlags
-_080445EC: .4byte gMain
-_080445F0: .4byte 0x00000439
-_080445F4:
- ldr r0, _08044638 @ =gBattleTypeFlags
- ldr r2, [r0]
- movs r3, 0x2
- adds r0, r2, 0
- ands r0, r3
- cmp r0, 0
- beq _08044648
- ldr r0, _0804463C @ =gMain
- ldr r1, _08044640 @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08044632
- movs r0, 0x40
- ands r2, r0
- cmp r2, 0
- beq _08044658
-_0804461A:
- ldr r4, _08044644 @ =gLinkPlayers
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r1, 0x18]
- cmp r0, r5
- bne _08044664
-_08044632:
- movs r0, 0
- b _08044666
- .align 2, 0
-_08044638: .4byte gBattleTypeFlags
-_0804463C: .4byte gMain
-_08044640: .4byte 0x00000439
-_08044644: .4byte gLinkPlayers
-_08044648:
- ldr r0, _0804466C @ =gMain
- ldr r1, _08044670 @ =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08044632
-_08044658:
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08044632
-_08044664:
- movs r0, 0x1
-_08044666:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0804466C: .4byte gMain
-_08044670: .4byte 0x00000439
- thumb_func_end sub_804455C
-
- thumb_func_start GetDeoxysStat
-GetDeoxysStat: @ 8044674
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r0, _0804469C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- bne _08044698
- adds r0, r5, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xCD
- lsls r1, 1
- cmp r0, r1
- beq _080446A0
-_08044698:
- movs r0, 0
- b _080446FE
- .align 2, 0
-_0804469C: .4byte gBattleTypeFlags
-_080446A0:
- adds r1, r6, 0
- adds r1, 0x27
- adds r0, r5, 0
- movs r2, 0
- bl GetMonData
- adds r4, r0, 0
- adds r1, r6, 0
- adds r1, 0x1A
- adds r0, r5, 0
- movs r2, 0
- bl GetMonData
- ldr r2, _08044704 @ =gUnknown_825E026
- lsls r1, r6, 1
- adds r1, r2
- ldrh r1, [r1]
- lsls r1, 1
- adds r1, r4
- cmp r0, 0
- bge _080446CC
- adds r0, 0x3
-_080446CC:
- asrs r0, 2
- adds r0, r1, r0
- adds r1, r5, 0
- adds r1, 0x54
- ldrb r1, [r1]
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- adds r0, 0x5
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r5, 0
- bl GetNature
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r6, 24
- lsrs r2, 24
- adds r1, r4, 0
- bl nature_stat_mod
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
-_080446FE:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08044704: .4byte gUnknown_825E026
- thumb_func_end GetDeoxysStat
-
- thumb_func_start sub_8044708
-sub_8044708: @ 8044708
- push {r4,r5,lr}
- sub sp, 0x4
- movs r5, 0
-_0804470E:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _080447A8 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xCD
- lsls r1, 1
- cmp r0, r1
- bne _08044798
- adds r0, r4, 0
- movs r1, 0x3B
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x3B
- mov r2, sp
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3C
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x3C
- mov r2, sp
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3D
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x3D
- mov r2, sp
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3E
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x3E
- mov r2, sp
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3F
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x3F
- mov r2, sp
- bl SetMonData
-_08044798:
- adds r5, 0x1
- cmp r5, 0x5
- ble _0804470E
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080447A8: .4byte gPlayerParty
- thumb_func_end sub_8044708
-
- thumb_func_start sub_80447AC
-sub_80447AC: @ 80447AC
- push {lr}
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080447E8 @ =gLinkPlayers
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r0, r3, 0x4
- adds r0, r1, r0
- ldr r2, [r0]
- movs r0, 0x7
- ands r2, r0
- adds r1, r3
- ldrb r0, [r1, 0x13]
- lsls r0, 3
- orrs r2, r0
- ldr r0, _080447EC @ =gUnknown_825E032
- lsls r2, 1
- adds r2, r0
- ldrh r0, [r2]
- bl sub_804454C
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_080447E8: .4byte gLinkPlayers
-_080447EC: .4byte gUnknown_825E032
- thumb_func_end sub_80447AC
-
- thumb_func_start sub_80447F0
-sub_80447F0: @ 80447F0
- push {lr}
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _0804482C @ =gLinkPlayers
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r0, r3, 0x4
- adds r0, r1, r0
- ldr r2, [r0]
- movs r0, 0x7
- ands r2, r0
- adds r1, r3
- ldrb r0, [r1, 0x13]
- lsls r0, 3
- orrs r2, r0
- ldr r1, _08044830 @ =gFacilityClassToTrainerClass
- ldr r0, _08044834 @ =gUnknown_825E032
- lsls r2, 1
- adds r2, r0
- ldrh r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- pop {r1}
- bx r1
- .align 2, 0
-_0804482C: .4byte gLinkPlayers
-_08044830: .4byte gFacilityClassToTrainerClass
-_08044834: .4byte gUnknown_825E032
- thumb_func_end sub_80447F0
-
- thumb_func_start sub_8044838
-sub_8044838: @ 8044838
- push {r4-r7,lr}
- sub sp, 0x14
- ldr r0, _08044888 @ =gSpecialVar_0x8004
- ldrh r5, [r0]
- ldr r0, _0804488C @ =gSpecialVar_0x8005
- ldrh r4, [r0]
- ldr r0, _08044890 @ =gSpecialVar_0x8006
- ldrh r6, [r0]
- bl ZeroEnemyPartyMons
- ldr r7, _08044894 @ =gEnemyParty
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- adds r0, r7, 0
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x20
- bl CreateObedientMon
- cmp r6, 0
- beq _08044880
- add r0, sp, 0x10
- strb r6, [r0]
- adds r1, r0, 0
- asrs r0, r6, 8
- strb r0, [r1, 0x1]
- adds r0, r7, 0
- movs r1, 0xC
- add r2, sp, 0x10
- bl SetMonData
-_08044880:
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08044888: .4byte gSpecialVar_0x8004
-_0804488C: .4byte gSpecialVar_0x8005
-_08044890: .4byte gSpecialVar_0x8006
-_08044894: .4byte gEnemyParty
- thumb_func_end sub_8044838
-
- thumb_func_start sub_8044898
-sub_8044898: @ 8044898
- push {r4-r7,lr}
- adds r7, r2, 0
- lsls r0, 16
- lsrs r4, r0, 16
- adds r6, r4, 0
- lsls r1, 24
- lsrs r5, r1, 24
- movs r0, 0x2
- eors r0, r5
- negs r1, r0
- orrs r1, r0
- lsrs r1, 31
- adds r0, r4, 0
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- bne _080448EE
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetSetPokedexFlag
- adds r0, r4, 0
- bl NationalPokedexNumToSpecies
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xC9
- bne _080448D8
- ldr r0, _080448F4 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- str r7, [r0, 0x1C]
-_080448D8:
- adds r0, r6, 0
- bl NationalPokedexNumToSpecies
- lsls r0, 16
- movs r1, 0x9A
- lsls r1, 17
- cmp r0, r1
- bne _080448EE
- ldr r0, _080448F4 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- str r7, [r0, 0x20]
-_080448EE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080448F4: .4byte gSaveBlock2Ptr
- thumb_func_end sub_8044898
-
- thumb_func_start sub_80448F8
-sub_80448F8: @ 80448F8
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r1, 24
- lsrs r2, r1, 24
- ldr r0, _0804493C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _08044944
- adds r0, r2, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08044944
- adds r0, r4, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- ldr r1, _08044940 @ =gUnknown_841D148
- mov r0, sp
- bl StringCompare
- cmp r0, 0
- bne _08044944
- movs r0, 0x1
- b _08044946
- .align 2, 0
-_0804493C: .4byte gBattleTypeFlags
-_08044940: .4byte gUnknown_841D148
-_08044944:
- movs r0, 0
-_08044946:
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80448F8
-
- thumb_func_start sub_8044950
-sub_8044950: @ 8044950
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r6, 0
- cmp r1, 0x3
- bls _080449EC
- adds r5, r6, 0
- ldrb r0, [r4]
- lsls r0, 28
- lsrs r0, 28
- cmp r5, r0
- bge _08044A2C
-_08044972:
- ldr r1, [r4, 0x10]
- lsls r3, r5, 1
- adds r0, r3, r5
- lsls r0, 3
- ldr r2, _080449E8 @ =gUnknown_825DEF0
- adds r1, r0, r1
- adds r0, r2
- ldm r0!, {r2,r6,r7}
- stm r1!, {r2,r6,r7}
- ldm r0!, {r2,r6,r7}
- stm r1!, {r2,r6,r7}
- movs r6, 0
- ldrb r2, [r4, 0x1]
- ldr r0, [r4, 0x10]
- mov r10, r0
- mov r8, r3
- ldr r7, [r4, 0x14]
- adds r1, r5, 0x1
- mov r9, r1
- cmp r6, r2
- bcs _080449C2
- mov r12, r7
- ldr r1, [r4, 0xC]
- lsls r0, r5, 2
- adds r0, r1
- ldr r3, [r0]
-_080449A6:
- adds r0, r5, 0
- muls r0, r2
- adds r0, r6
- lsls r0, 3
- add r0, r12
- lsls r1, r6, 11
- adds r1, r3, r1
- str r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldrb r2, [r4, 0x1]
- cmp r6, r2
- bcc _080449A6
-_080449C2:
- mov r2, r8
- adds r1, r2, r5
- lsls r1, 3
- add r1, r10
- ldrb r0, [r4, 0x1]
- muls r0, r5
- lsls r0, 3
- adds r0, r7, r0
- str r0, [r1, 0xC]
- mov r3, r9
- lsls r0, r3, 16
- lsrs r5, r0, 16
- ldrb r0, [r4]
- lsls r0, 28
- lsrs r0, 28
- cmp r5, r0
- blt _08044972
- b _08044A2C
- .align 2, 0
-_080449E8: .4byte gUnknown_825DEF0
-_080449EC:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldr r2, _08044A3C @ =gUnknown_825DEF0
- ldr r1, [r4, 0x10]
- adds r0, r2
- ldm r0!, {r2,r5,r7}
- stm r1!, {r2,r5,r7}
- ldm r0!, {r3,r5,r7}
- stm r1!, {r3,r5,r7}
- ldr r0, [r4, 0x10]
- mov r10, r0
- ldr r7, [r4, 0x14]
- ldrb r1, [r4, 0x1]
- cmp r6, r1
- bcs _08044A28
- adds r3, r7, 0
- ldr r0, [r4, 0xC]
- ldr r2, [r0]
-_08044A12:
- lsls r0, r6, 3
- adds r0, r3
- lsls r1, r6, 11
- adds r1, r2, r1
- str r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldrb r5, [r4, 0x1]
- cmp r6, r5
- bcc _08044A12
-_08044A28:
- mov r6, r10
- str r7, [r6, 0xC]
-_08044A2C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08044A3C: .4byte gUnknown_825DEF0
- thumb_func_end sub_8044950
-
- thumb_func_start sub_8044A40
-sub_8044A40: @ 8044A40
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r4, r0, 0
- ldrb r0, [r4]
- lsls r0, 28
- movs r3, 0
- cmp r0, 0
- beq _08044ADA
- ldr r0, _08044AE8 @ =gUnknown_825E05C
- mov r10, r0
-_08044A5A:
- ldr r0, [r4, 0x10]
- lsls r2, r3, 1
- adds r1, r2, r3
- lsls r1, 3
- adds r1, r0
- mov r0, r10
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- movs r5, 0
- ldr r0, [r4, 0x10]
- mov r8, r0
- mov r12, r2
- ldr r7, [r4, 0x14]
- adds r1, r3, 0x1
- mov r9, r1
- ldrb r6, [r4, 0x1]
- cmp r5, r6
- bcs _08044AAE
- adds r6, r7, 0
- ldr r1, [r4, 0xC]
- lsls r0, r3, 2
- adds r0, r1
- ldr r2, [r0]
-_08044A8C:
- ldrb r0, [r4]
- lsls r0, 28
- lsrs r0, 28
- adds r1, r3, 0
- muls r1, r0
- adds r1, r5
- lsls r1, 3
- adds r1, r6
- lsls r0, r5, 11
- adds r0, r2, r0
- str r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldrb r0, [r4, 0x1]
- cmp r5, r0
- bcc _08044A8C
-_08044AAE:
- mov r5, r12
- adds r1, r5, r3
- lsls r1, 3
- add r1, r8
- ldrb r0, [r4]
- lsls r0, 28
- lsrs r0, 28
- muls r0, r3
- lsls r0, 3
- adds r0, r7, r0
- str r0, [r1, 0xC]
- ldr r6, _08044AEC @ =gUnknown_82349BC
- str r6, [r1, 0x8]
- strh r3, [r1, 0x2]
- mov r7, r9
- lsls r0, r7, 16
- lsrs r3, r0, 16
- ldrb r0, [r4]
- lsls r0, 28
- lsrs r0, 28
- cmp r3, r0
- blt _08044A5A
-_08044ADA:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08044AE8: .4byte gUnknown_825E05C
-_08044AEC: .4byte gUnknown_82349BC
- thumb_func_end sub_8044A40
-
- thumb_func_start SetUpMonSpriteManagerMaybe
-SetUpMonSpriteManagerMaybe: @ 8044AF0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- movs r0, 0
- mov r8, r0
- ldr r4, _08044B34 @ =gUnknown_20244F4
- ldr r1, [r4]
- cmp r1, 0
- beq _08044B1E
- ldrb r0, [r1, 0x2]
- cmp r0, 0xA3
- beq _08044B2E
- adds r0, r1, 0
- movs r1, 0
- movs r2, 0x18
- bl memset
- mov r1, r8
- str r1, [r4]
-_08044B1E:
- ldr r4, _08044B34 @ =gUnknown_20244F4
- movs r0, 0x18
- bl AllocZeroed
- adds r2, r0, 0
- str r2, [r4]
- cmp r2, 0
- bne _08044B38
-_08044B2E:
- movs r0, 0
- b _08044D70
- .align 2, 0
-_08044B34: .4byte gUnknown_20244F4
-_08044B38:
- cmp r5, 0
- beq _08044B94
- cmp r5, 0x1
- bne _08044B94
- cmp r6, 0x4
- bne _08044B5E
- ldrb r1, [r2]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r2, [r4]
- ldrb r1, [r2]
- movs r0, 0xF
- ands r0, r1
- movs r1, 0x40
- b _08044B7C
-_08044B5E:
- cmp r6, 0x4
- bls _08044B64
- movs r6, 0
-_08044B64:
- ldrb r1, [r2]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r2, [r4]
- ldrb r1, [r2]
- movs r0, 0xF
- ands r0, r1
- movs r1, 0x10
-_08044B7C:
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _08044B90 @ =gUnknown_20244F4
- ldr r1, [r2]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x3]
- b _08044BD0
- .align 2, 0
-_08044B90: .4byte gUnknown_20244F4
-_08044B94:
- cmp r6, 0
- bne _08044B9A
- movs r6, 0x1
-_08044B9A:
- cmp r6, 0x8
- bls _08044BA0
- movs r6, 0x8
-_08044BA0:
- ldr r4, _08044C10 @ =gUnknown_20244F4
- ldr r3, [r4]
- movs r0, 0xF
- adds r1, r6, 0
- ands r1, r0
- ldrb r2, [r3]
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- ldr r2, [r4]
- lsls r3, r6, 4
- ldrb r1, [r2]
- movs r0, 0xF
- ands r0, r1
- orrs r0, r3
- strb r0, [r2]
- ldr r1, [r4]
- movs r2, 0
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r0, [r4]
- strb r2, [r0, 0x3]
-_08044BD0:
- ldr r5, _08044C10 @ =gUnknown_20244F4
- ldr r0, [r5]
- ldrb r1, [r0, 0x1]
- lsls r1, 11
- str r1, [r0, 0x4]
- ldrb r0, [r0]
- lsls r0, 28
- lsrs r0, 28
- muls r0, r1
- bl AllocZeroed
- ldr r1, [r5]
- str r0, [r1, 0x8]
- ldrb r0, [r1]
- lsls r0, 28
- lsrs r0, 23
- bl AllocZeroed
- adds r2, r0, 0
- ldr r1, [r5]
- str r2, [r1, 0xC]
- ldr r0, [r1, 0x8]
- cmp r0, 0
- beq _08044C04
- cmp r2, 0
- bne _08044C14
-_08044C04:
- movs r0, 0x1
- mov r1, r8
- orrs r1, r0
- mov r8, r1
- b _08044C44
- .align 2, 0
-_08044C10: .4byte gUnknown_20244F4
-_08044C14:
- ldrb r0, [r1]
- lsls r0, 28
- movs r4, 0
- adds r3, r5, 0
- cmp r0, 0
- beq _08044C44
-_08044C20:
- ldr r3, [r5]
- ldr r0, [r3, 0xC]
- lsls r1, r4, 2
- adds r1, r0
- ldr r0, [r3, 0x4]
- adds r2, r0, 0
- muls r2, r4
- ldr r0, [r3, 0x8]
- adds r0, r2
- str r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r3]
- lsls r0, 28
- lsrs r0, 28
- cmp r4, r0
- blt _08044C20
-_08044C44:
- ldr r5, _08044C8C @ =gUnknown_20244F4
- ldr r0, [r5]
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- bl AllocZeroed
- ldr r2, [r5]
- str r0, [r2, 0x10]
- ldrb r1, [r2]
- lsls r1, 28
- lsrs r1, 28
- ldrb r0, [r2, 0x1]
- lsls r0, 3
- muls r0, r1
- bl AllocZeroed
- adds r2, r0, 0
- ldr r1, [r5]
- str r2, [r1, 0x14]
- ldr r0, [r1, 0x10]
- cmp r0, 0
- beq _08044C7C
- cmp r2, 0
- bne _08044C90
-_08044C7C:
- movs r0, 0x2
- mov r1, r8
- orrs r1, r0
- lsls r0, r1, 24
- lsrs r0, 24
- mov r8, r0
- b _08044CE2
- .align 2, 0
-_08044C8C: .4byte gUnknown_20244F4
-_08044C90:
- movs r4, 0
- ldrb r0, [r1, 0x1]
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- muls r0, r1
- adds r3, r5, 0
- cmp r4, r0
- bge _08044CC6
- adds r7, r3, 0
- movs r5, 0x80
- lsls r5, 4
-_08044CA8:
- ldr r2, [r7]
- ldr r1, [r2, 0x14]
- lsls r0, r4, 3
- adds r0, r1
- strh r5, [r0, 0x4]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2]
- lsls r0, 28
- lsrs r0, 28
- muls r0, r1
- cmp r4, r0
- blt _08044CA8
-_08044CC6:
- ldr r0, [r3]
- ldrb r4, [r0, 0x3]
- cmp r4, 0
- beq _08044CDA
- cmp r4, 0x1
- bne _08044CDA
- adds r1, r6, 0
- bl sub_8044950
- b _08044CE2
-_08044CDA:
- ldr r0, _08044D60 @ =gUnknown_20244F4
- ldr r0, [r0]
- bl sub_8044A40
-_08044CE2:
- movs r0, 0x2
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- beq _08044D12
- ldr r4, _08044D60 @ =gUnknown_20244F4
- ldr r0, [r4]
- ldr r0, [r0, 0x14]
- cmp r0, 0
- beq _08044D00
- bl Free
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1, 0x14]
-_08044D00:
- ldr r0, [r4]
- ldr r0, [r0, 0x10]
- cmp r0, 0
- beq _08044D12
- bl Free
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1, 0x10]
-_08044D12:
- movs r0, 0x1
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- beq _08044D42
- ldr r4, _08044D60 @ =gUnknown_20244F4
- ldr r0, [r4]
- ldr r0, [r0, 0xC]
- cmp r0, 0
- beq _08044D30
- bl Free
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1, 0xC]
-_08044D30:
- ldr r0, [r4]
- ldr r0, [r0, 0x8]
- cmp r0, 0
- beq _08044D42
- bl Free
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1, 0x8]
-_08044D42:
- mov r0, r8
- cmp r0, 0
- beq _08044D64
- ldr r4, _08044D60 @ =gUnknown_20244F4
- ldr r0, [r4]
- movs r1, 0
- movs r2, 0x18
- bl memset
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
- b _08044D6C
- .align 2, 0
-_08044D60: .4byte gUnknown_20244F4
-_08044D64:
- ldr r0, _08044D7C @ =gUnknown_20244F4
- ldr r1, [r0]
- movs r0, 0xA3
- strb r0, [r1, 0x2]
-_08044D6C:
- ldr r0, _08044D7C @ =gUnknown_20244F4
- ldr r0, [r0]
-_08044D70:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08044D7C: .4byte gUnknown_20244F4
- thumb_func_end SetUpMonSpriteManagerMaybe
-
- thumb_func_start sub_8044D80
-sub_8044D80: @ 8044D80
- push {r4,lr}
- ldr r4, _08044D9C @ =gUnknown_20244F4
- ldr r1, [r4]
- cmp r1, 0
- beq _08044DFA
- ldrb r0, [r1, 0x2]
- cmp r0, 0xA3
- beq _08044DA0
- adds r0, r1, 0
- movs r1, 0
- movs r2, 0x18
- bl memset
- b _08044DF6
- .align 2, 0
-_08044D9C: .4byte gUnknown_20244F4
-_08044DA0:
- ldr r0, [r1, 0x14]
- cmp r0, 0
- beq _08044DB0
- bl Free
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1, 0x14]
-_08044DB0:
- ldr r0, [r4]
- ldr r0, [r0, 0x10]
- cmp r0, 0
- beq _08044DC2
- bl Free
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1, 0x10]
-_08044DC2:
- ldr r0, [r4]
- ldr r0, [r0, 0xC]
- cmp r0, 0
- beq _08044DD4
- bl Free
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1, 0xC]
-_08044DD4:
- ldr r0, [r4]
- ldr r0, [r0, 0x8]
- cmp r0, 0
- beq _08044DE6
- bl Free
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1, 0x8]
-_08044DE6:
- ldr r0, [r4]
- movs r1, 0
- movs r2, 0x18
- bl memset
- ldr r0, [r4]
- bl Free
-_08044DF6:
- movs r0, 0
- str r0, [r4]
-_08044DFA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8044D80
-
- thumb_func_start sub_8044E00
-sub_8044E00: @ 8044E00
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _08044E14 @ =gUnknown_20244F4
- ldr r2, [r0]
- ldrb r0, [r2, 0x2]
- cmp r0, 0xA3
- beq _08044E18
- movs r0, 0
- b _08044E2C
- .align 2, 0
-_08044E14: .4byte gUnknown_20244F4
-_08044E18:
- ldrb r0, [r2]
- lsls r0, 28
- lsrs r0, 28
- cmp r1, r0
- blt _08044E24
- movs r1, 0
-_08044E24:
- ldr r0, [r2, 0xC]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
-_08044E2C:
- pop {r1}
- bx r1
- thumb_func_end sub_8044E00
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokemon_icon.s b/asm/pokemon_icon.s
index c269ce8a4..4eb654a50 100644
--- a/asm/pokemon_icon.s
+++ b/asm/pokemon_icon.s
@@ -166,7 +166,7 @@ mon_icon_convert_unown_species_id: @ 8096F5C
cmp r2, 0xC9
bne _08096F86
adds r0, r1, 0
- bl mon_icon_personality_to_unown_id
+ bl GetUnownLetterByPersonality
lsls r0, 16
lsrs r0, 16
cmp r0, 0
@@ -195,8 +195,8 @@ _08096F92:
bx r1
thumb_func_end mon_icon_convert_unown_species_id
- thumb_func_start mon_icon_personality_to_unown_id
-mon_icon_personality_to_unown_id: @ 8096F98
+ thumb_func_start GetUnownLetterByPersonality
+GetUnownLetterByPersonality: @ 8096F98
push {lr}
adds r2, r0, 0
cmp r2, 0
@@ -228,7 +228,7 @@ _08096FCE:
_08096FD0:
pop {r1}
bx r1
- thumb_func_end mon_icon_personality_to_unown_id
+ thumb_func_end GetUnownLetterByPersonality
thumb_func_start sub_8096FD4
sub_8096FD4: @ 8096FD4
@@ -519,8 +519,8 @@ _080971C0:
_080971C8: .4byte gUnknown_83D4038
thumb_func_end sub_8097198
- thumb_func_start sub_80971CC
-sub_80971CC: @ 80971CC
+ thumb_func_start GetValidMonIconPalettePtr
+GetValidMonIconPalettePtr: @ 80971CC
push {lr}
lsls r0, 16
lsrs r2, r0, 16
@@ -542,7 +542,7 @@ _080971DC:
.align 2, 0
_080971F0: .4byte gUnknown_83D4038
_080971F4: .4byte gUnknown_83D3E80
- thumb_func_end sub_80971CC
+ thumb_func_end GetValidMonIconPalettePtr
thumb_func_start sub_80971F8
sub_80971F8: @ 80971F8
diff --git a/asm/pokemon_jump.s b/asm/pokemon_jump.s
index c00c08f20..d94a5c8db 100644
--- a/asm/pokemon_jump.s
+++ b/asm/pokemon_jump.s
@@ -170,7 +170,7 @@ sub_81476E0: @ 81476E0
lsls r0, 3
ldr r1, _081477B0 @ =gUnknown_846B42C
adds r0, r1
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
movs r2, 0x8
ldrsh r0, [r4, r2]
lsls r0, 3
diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s
index dcdf8ad3b..8fc385744 100644
--- a/asm/pokemon_jump_2.s
+++ b/asm/pokemon_jump_2.s
@@ -4793,8 +4793,8 @@ _08149DF0:
bl InitBgsFromTemplates
ldr r0, _08149EEC @ =gUnknown_846D8E4
bl InitWindows
- bl sub_80F6C14
- bl reset_temp_tile_data_buffers
+ bl ResetBgPositions
+ bl ResetTempTileDataBuffers
ldr r0, [r6]
bl sub_814AD6C
bl sub_814A9C8
@@ -4807,14 +4807,14 @@ _08149DF0:
movs r0, 0x3
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r1, _08149EF8 @ =gUnknown_846BA00
movs r4, 0x1
str r4, [sp]
movs r0, 0x3
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r0, _08149EFC @ =gUnknown_846BBB0
movs r1, 0x30
movs r2, 0x20
@@ -4824,13 +4824,13 @@ _08149DF0:
movs r0, 0x2
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r1, _08149F04 @ =gUnknown_846C520
str r4, [sp]
movs r0, 0x2
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r0, _08149F08 @ =gUnknown_846C8D8
movs r1, 0x10
movs r2, 0x20
@@ -4840,13 +4840,13 @@ _08149DF0:
movs r0, 0x1
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r1, _08149F10 @ =gUnknown_846D3A8
str r4, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r0, _08149F14 @ =gUnknown_846B794
movs r1, 0x20
movs r2, 0x20
@@ -4897,7 +4897,7 @@ _08149F0C: .4byte gUnknown_846C8F8
_08149F10: .4byte gUnknown_846D3A8
_08149F14: .4byte gUnknown_846B794
_08149F18:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
cmp r0, 0
bne _08149F5A
@@ -5304,7 +5304,7 @@ sub_814A218: @ 814A218
_0814A22C: .4byte gUnknown_203F3D8
_0814A230:
bl sub_814A6CC
- bl sub_81100E8
+ bl DestroyYesNoMenu
movs r0, 0
bl CopyBgTilemapBufferToVram
ldr r1, [r5]
@@ -5644,20 +5644,20 @@ sub_814A468: @ 814A468
ldr r1, _0814A530 @ =gUnknown_846D94C
bl StringAppend
_0814A4C2:
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r4, _0814A52C @ =gUnknown_203F3D8
ldr r1, [r4]
adds r1, 0x26
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r1, [r4]
adds r1, 0x66
movs r0, 0x1
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r4]
adds r0, 0xA6
ldr r1, _0814A534 @ =gUnknown_841CBA9
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
movs r0, 0x4
movs r1, 0x8
movs r2, 0x16
@@ -5706,15 +5706,15 @@ sub_814A53C: @ 814A53C
ldr r1, [r4]
adds r1, 0x26
bl CopyItemName
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r1, [r4]
adds r1, 0x26
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r4]
adds r0, 0xA6
ldr r1, _0814A5B0 @ =gUnknown_841CBCA
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
movs r0, 0x4
movs r1, 0x8
movs r2, 0x16
@@ -5761,15 +5761,15 @@ sub_814A5B4: @ 814A5B4
ldr r1, [r4]
adds r1, 0x26
bl CopyItemName
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r1, [r4]
adds r1, 0x26
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r4]
adds r0, 0xA6
ldr r1, _0814A628 @ =gUnknown_841CBE4
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
movs r0, 0x4
movs r1, 0x9
movs r2, 0x16
@@ -6116,7 +6116,7 @@ sub_814A84C: @ 814A84C
movs r1, 0
movs r2, 0
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
add r0, sp, 0xC
str r0, [sp]
str r4, [sp, 0x4]
@@ -6126,7 +6126,7 @@ sub_814A84C: @ 814A84C
movs r1, 0
movs r2, 0
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0x10
pop {r4}
pop {r0}
@@ -6582,7 +6582,7 @@ sub_814AB98: @ 814AB98
movs r1, 0
adds r2, r4, 0
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r0, [r6]
adds r0, 0x1C
add r0, r8
@@ -6777,7 +6777,7 @@ sub_814AD6C: @ 814AD6C
ldr r5, _0814ADAC @ =gUnknown_846E0B0
_0814AD74:
adds r0, r5, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r5, 0x8
adds r4, 0x1
cmp r4, 0x4
@@ -6881,7 +6881,7 @@ _0814AE2A:
adds r0, r1
ldr r3, [r7, 0x8]
mov r1, r8
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
mov r3, r8
str r3, [sp, 0x18]
adds r4, r6, 0
@@ -6903,7 +6903,7 @@ _0814AE2A:
ands r1, r5
orrs r1, r4
str r1, [r0, 0x4]
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
mov r0, r8
bl Free
mov r0, r10
@@ -7930,7 +7930,7 @@ sub_814B5C4: @ 814B5C4
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0xD0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0xD
@@ -7950,7 +7950,7 @@ sub_814B5C4: @ 814B5C4
adds r0, r4, 0
movs r1, 0x2
movs r3, 0
- bl sub_812E62C
+ bl AddTextPrinterParameterized5
movs r7, 0
mov r8, r4
movs r1, 0xFF
@@ -7980,7 +7980,7 @@ _0814B63E:
mov r0, r8
movs r1, 0x2
movs r3, 0
- bl sub_812E62C
+ bl AddTextPrinterParameterized5
ldr r0, [sp, 0x2C]
ldm r0!, {r1}
str r0, [sp, 0x2C]
@@ -8007,7 +8007,7 @@ _0814B63E:
mov r0, r8
movs r1, 0x2
adds r2, r5, 0
- bl sub_812E62C
+ bl AddTextPrinterParameterized5
movs r0, 0xE0
lsls r0, 20
add r9, r0
diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s
index 56b077cef..c8906230b 100644
--- a/asm/pokemon_special_anim.s
+++ b/asm/pokemon_special_anim.s
@@ -558,7 +558,7 @@ _0811C9AA:
adds r0, r4, 0
adds r0, 0x96
ldrh r0, [r0]
- bl sub_80A1150
+ bl GetItemCompatibilityRule
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
@@ -1558,7 +1558,7 @@ sub_811D184: @ 811D184
lsls r5, r1, 16
lsrs r5, 16
bl FreeAllWindowBuffers
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
movs r0, 0
movs r1, 0
bl SetGpuReg
@@ -1617,7 +1617,7 @@ sub_811D184: @ 811D184
movs r0, 0
movs r1, 0
movs r2, 0xE0
- bl sub_815001C
+ bl TextWindow_SetUserSelectedFrame
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
@@ -1654,7 +1654,7 @@ _0811D27C: .4byte 0x00001914
thumb_func_start sub_811D280
sub_811D280: @ 811D280
push {lr}
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
cmp r0, 0
beq _0811D290
@@ -1703,7 +1703,7 @@ sub_811D2D0: @ 811D2D0
bl ClearWindowTilemap
movs r0, 0
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0
movs r1, 0x1
bl CopyWindowToVram
@@ -1759,7 +1759,7 @@ _0811D330:
_0811D358:
adds r4, 0x14
adds r0, r7, 0
- bl ItemId_GetItem
+ bl ItemId_GetName
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
@@ -1815,15 +1815,15 @@ _0811D3C0:
_0811D3D4: .4byte gUnknown_841B295
_0811D3D8: .4byte gUnknown_841B2A7
_0811D3DC:
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
bl sub_811D0F4
adds r1, r0, 0
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
bl sub_811D0D0
adds r1, r0, 0
movs r0, 0x1
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
adds r4, 0x14
ldr r1, _0811D400 @ =gUnknown_841B32E
b _0811D470
@@ -1866,20 +1866,20 @@ _0811D444: .4byte gUnknown_841B2F1
_0811D448: .4byte gUnknown_841B2ED
_0811D44C: .4byte gUnknown_8459998
_0811D450:
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
bl sub_811D0F4
adds r1, r0, 0
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
bl sub_811D0C4
adds r1, r0, 0
movs r0, 0x1
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
adds r4, 0x14
ldr r1, _0811D478 @ =gUnknown_841B306
_0811D470:
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
b _0811D4A2
.align 2, 0
_0811D478: .4byte gUnknown_841B306
@@ -1918,7 +1918,7 @@ _0811D4A2:
movs r0, 0
movs r1, 0x2
adds r2, r4, 0
- bl sub_812E62C
+ bl AddTextPrinterParameterized5
_0811D4C2:
add sp, 0x14
pop {r3,r4}
@@ -2353,7 +2353,7 @@ sub_811D7D4: @ 811D7D4
movs r0, 0x3
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
cmp r4, 0x4
beq _0811D818
ldr r0, _0811D814 @ =gUnknown_845963C
@@ -2446,7 +2446,7 @@ _0811D884:
adds r1, r6, 0
adds r2, r7, 0
mov r3, r10
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
mov r0, r8
bl GetMonFrontSpritePal
adds r1, r4, 0
@@ -3699,7 +3699,7 @@ sub_811E204: @ 811E204
sub sp, 0x8
mov r10, r0
ldr r0, _0811E2E0 @ =gUnknown_84599B8
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _0811E2E4 @ =gUnknown_84599C0
bl LoadSpritePalette
movs r0, 0
@@ -4148,7 +4148,7 @@ _0811E582:
sub_811E588: @ 811E588
push {lr}
ldr r0, _0811E59C @ =gUnknown_84599C8
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _0811E5A0 @ =gUnknown_84599D0
bl LoadSpritePalette
pop {r0}
@@ -4216,7 +4216,7 @@ sub_811E5B8: @ 811E5B8
str r1, [r4]
mov r1, r9
strh r1, [r4, 0x4]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r0, r4, 0
bl LoadSpritePalette
ldr r0, _0811E674 @ =sub_811E694
@@ -4548,7 +4548,7 @@ _0811E880:
movs r1, 0x2
movs r2, 0
adds r3, r5, 0
- bl box_print
+ bl AddTextPrinterParameterized3
lsls r0, r7, 1
mov r4, sp
adds r4, r0
@@ -4571,7 +4571,7 @@ _0811E8BA:
movs r1, 0x2
movs r2, 0x38
adds r3, r5, 0
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0
strb r0, [r6]
movs r0, 0
@@ -4604,7 +4604,7 @@ _0811E8F4:
mov r0, r8
movs r1, 0x2
adds r3, r5, 0
- bl box_print
+ bl AddTextPrinterParameterized3
adds r0, r7, 0x1
lsls r0, 16
lsrs r7, r0, 16
@@ -4725,7 +4725,7 @@ _0811E9C0:
movs r1, 0x2
movs r2, 0
adds r3, r5, 0
- bl box_print
+ bl AddTextPrinterParameterized3
adds r4, 0x38
lsls r4, 24
lsrs r4, 24
@@ -4739,7 +4739,7 @@ _0811E9C0:
movs r1, 0x2
adds r2, r4, 0
adds r3, r5, 0
- bl box_print
+ bl AddTextPrinterParameterized3
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 848434a55..a7777c2ca 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -807,7 +807,7 @@ _0808BF3C:
str r1, [sp, 0x10]
movs r1, 0x1
movs r3, 0x2
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
ldr r0, [sp, 0x50]
mov r10, r4
cmp r0, 0x6
@@ -960,7 +960,7 @@ sub_808BFE0: @ 808BFE0
movs r1, 0x1
movs r2, 0
movs r3, 0x2
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
lsrs r5, 1
adds r0, r7, 0
ldr r1, [sp, 0x24]
@@ -1442,7 +1442,7 @@ _0808C3E0:
movs r0, 0
movs r1, 0x2
movs r3, 0xFF
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
@@ -1466,7 +1466,7 @@ _0808C454:
strh r0, [r5, 0x8]
b _0808C69C
_0808C45C:
- bl ProcessMenuInput
+ bl Menu_ProcessInput
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0xC]
@@ -1549,7 +1549,7 @@ _0808C4CE:
movs r0, 0
movs r1, 0x2
movs r3, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
b _0808C69C
.align 2, 0
_0808C504: .4byte gMain
@@ -1665,8 +1665,8 @@ _0808C5D8:
_0808C5F4:
movs r0, 0x1
negs r0, r0
- bl MoveMenuCursor
- bl GetMenuCursorPos
+ bl Menu_MoveCursor
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xA]
@@ -1699,8 +1699,8 @@ _0808C624:
strh r6, [r5, 0xA]
_0808C63C:
movs r0, 0x1
- bl MoveMenuCursor
- bl GetMenuCursorPos
+ bl Menu_MoveCursor
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xA]
@@ -1725,7 +1725,7 @@ _0808C66E:
movs r0, 0
movs r1, 0x2
movs r3, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
strh r4, [r5, 0x8]
b _0808C69C
.align 2, 0
@@ -1861,7 +1861,7 @@ sub_808C72C: @ 808C72C
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
mov r0, r10
strh r5, [r0]
add sp, 0xC
@@ -2669,7 +2669,7 @@ _0808CDC0: .4byte gUnknown_20397B0
c2_Box: @ 808CDC4
push {lr}
bl RunTasks
- bl do_scheduled_bg_tilemap_copies_to_vram
+ bl DoScheduledBgTilemapCopiesToVram
bl sub_808EFC8
bl sub_808F99C
bl AnimateSprites
@@ -2835,7 +2835,7 @@ sub_808CF10: @ 808CF10
ldr r1, _0808CF88 @ =gKeyRepeatStartDelay
movs r0, 0x14
strh r0, [r1]
- bl clear_scheduled_bg_copies_to_vram
+ bl ClearScheduledBgCopiesToVram
movs r0, 0x3
bl sub_80F7AD8
ldr r2, _0808CF8C @ =gUnknown_83CE6F8
@@ -3035,7 +3035,7 @@ _0808D0D6:
movs r0, 0x1
movs r1, 0xB
movs r2, 0xE0
- bl sub_815001C
+ bl TextWindow_SetUserSelectedFrame
b _0808D20C
.align 2, 0
_0808D100: .4byte 0x05000080
@@ -3377,7 +3377,7 @@ _0808D3DC:
ldr r1, _0808D40C @ =0x00000ce2
adds r0, r1
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _0808D404
@@ -3491,7 +3491,7 @@ _0808D4D8:
ldr r1, _0808D504 @ =0x00000ce2
adds r0, r1
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _0808D508
@@ -4109,7 +4109,7 @@ _0808DA20:
ldr r2, _0808DA54 @ =0x00000ce2
adds r0, r2
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
bne _0808DAA0
@@ -4154,7 +4154,7 @@ _0808DA90:
ldr r2, _0808DAA8 @ =0x00000ce2
adds r0, r1, r2
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _0808DAAC
@@ -4971,7 +4971,7 @@ _0808E166:
ldr r1, _0808E17C @ =0x00000ce2
adds r0, r1
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
bne _0808E180
@@ -5275,7 +5275,7 @@ _0808E3FC:
ldr r1, _0808E418 @ =0x00000ce2
adds r0, r1
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
bne _0808E41C
@@ -6738,7 +6738,7 @@ sub_808EFE4: @ 808EFE4
movs r0, 0x1
bl ShowBg
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x4
pop {r4,r5}
pop {r0}
@@ -6956,7 +6956,7 @@ sub_808F1D0: @ 808F1D0
bl sub_808F49C
bl sub_808F5E8
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
pop {r0}
bx r0
.align 2, 0
@@ -7233,7 +7233,7 @@ sub_808F3F8: @ 808F3F8
adds r0, r1
ldr r5, _0808F474 @ =0x000022bc
adds r1, r4, r5
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
ldr r1, [r6]
ldr r2, _0808F478 @ =0x00000cd8
adds r0, r1, r2
@@ -7526,7 +7526,7 @@ _0808F66E:
movs r0, 0
bl sub_80F7E54
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x4
pop {r4}
pop {r0}
@@ -7608,7 +7608,7 @@ _0808F718:
bl sub_80F7E54
_0808F73A:
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r0, _0808F754 @ =gUnknown_20397B0
ldr r0, [r0]
ldr r1, _0808F758 @ =0x000002c7
@@ -7680,7 +7680,7 @@ sub_808F794: @ 808F794
movs r0, 0x1
bl sub_80F7E54
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x8
bl sub_8090B98
ldr r1, [r4]
@@ -7800,7 +7800,7 @@ sub_808F850: @ 808F850
cmp r0, 0x14
beq _0808F8D4
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x1
b _0808F8FE
.align 2, 0
@@ -7822,7 +7822,7 @@ _0808F8D4:
movs r0, 0x2
bl sub_80F7E54
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
_0808F8FC:
movs r0, 0
_0808F8FE:
@@ -7859,7 +7859,7 @@ _0808F934:
movs r0, 0x2
bl sub_80F7E54
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x4
pop {r0}
bx r0
@@ -8068,7 +8068,7 @@ sub_808FAA8: @ 808FAA8
movs r0, 0x1
bl sub_80F7E54
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x4
pop {r0}
bx r0
@@ -8165,7 +8165,7 @@ sub_808FB68: @ 808FB68
movs r0, 0x1
movs r1, 0x2
movs r2, 0xD0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
movs r0, 0x20
str r0, [sp]
movs r0, 0x14
@@ -8190,7 +8190,7 @@ sub_808FBA4: @ 808FBA4
sub sp, 0xC
lsls r0, 24
lsrs r6, r0, 24
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r1, _0808FBC8 @ =gUnknown_83CEA88
lsls r0, r6, 3
adds r0, r1
@@ -8231,7 +8231,7 @@ _0808FC04:
adds r1, r2
_0808FC0C:
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
b _0808FC7C
.align 2, 0
_0808FC14: .4byte gUnknown_20397B0
@@ -8281,7 +8281,7 @@ _0808FC62:
ldr r0, _0808FCE0 @ =0x000021db
adds r1, r0
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
_0808FC7C:
ldr r5, _0808FCDC @ =gUnknown_20397B0
ldr r0, [r5]
@@ -8292,7 +8292,7 @@ _0808FC7C:
lsls r1, r6, 3
adds r1, r2
ldr r1, [r1]
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
movs r0, 0x1
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -8318,7 +8318,7 @@ _0808FC7C:
movs r1, 0x2
bl CopyWindowToVram
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0xC
pop {r4-r6}
pop {r0}
@@ -8349,7 +8349,7 @@ sub_808FCE8: @ 808FCE8
lsls r4, 24
asrs r4, 24
adds r0, r4, 0
- bl MoveMenuCursorNoWrapAround
+ bl Menu_MoveCursorNoWrapAround
add sp, 0xC
pop {r4}
pop {r0}
@@ -8363,9 +8363,9 @@ sub_808FD20: @ 808FD20
push {lr}
movs r0, 0x1
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
pop {r0}
bx r0
thumb_func_end sub_808FD20
@@ -16876,7 +16876,7 @@ _08093EF2:
beq _08093F78
ldr r3, _08093F74 @ =0x00000d61
adds r4, r3
- bl ItemId_GetItem
+ bl ItemId_GetName
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0
@@ -18314,7 +18314,7 @@ _08094A48: .4byte gUnknown_20397B0
_08094A4C: .4byte 0x00000ce2
_08094A50:
ldrh r0, [r1]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
bne _08094A68
@@ -18344,7 +18344,7 @@ _08094A70:
_08094A8C: .4byte 0x00000ce2
_08094A90:
ldrh r0, [r1]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -18931,7 +18931,7 @@ sub_8094E88: @ 8094E88
movs r1, 0
movs r2, 0xB
movs r3, 0xE
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r2, [r5]
adds r0, r2, r4
ldrb r0, [r0]
@@ -18961,9 +18961,9 @@ sub_8094E88: @ 8094E88
movs r1, 0x1
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r0, [r5]
ldr r3, _08094F8C @ =0x00000caa
adds r0, r3
@@ -19023,7 +19023,7 @@ _08094FB6:
bl PlaySE
movs r0, 0x1
negs r0, r0
- bl MoveMenuCursor
+ bl Menu_MoveCursor
b _08094FF2
.align 2, 0
_08094FD0: .4byte gMain
@@ -19035,10 +19035,10 @@ _08094FD4:
movs r0, 0x5
bl PlaySE
movs r0, 0x1
- bl MoveMenuCursor
+ bl Menu_MoveCursor
b _08094FF2
_08094FEA:
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r5, r0, 24
_08094FF2:
@@ -19077,7 +19077,7 @@ sub_8095024: @ 8095024
adds r0, r4
ldrb r0, [r0]
movs r1, 0x1
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldr r0, [r5]
adds r0, r4
ldrb r0, [r0]
@@ -20609,7 +20609,7 @@ _08095B9C:
orrs r0, r1
str r0, [r2, 0x4]
mov r0, r9
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
mov r4, r9
ldrh r0, [r4, 0x6]
bl GetSpriteTileStartByTag
@@ -21364,7 +21364,7 @@ sub_80961A8: @ 80961A8
ldr r1, _080961C0 @ =0x00002224
adds r0, r1
ldrh r0, [r0]
- bl ItemId_GetItem
+ bl ItemId_GetName
pop {r1}
bx r1
.align 2, 0
@@ -22054,7 +22054,7 @@ _080966BA:
movs r1, 0x2
adds r2, r4, 0
movs r3, 0x2
- bl sub_812E62C
+ bl AddTextPrinterParameterized5
add sp, 0x14
pop {r4}
pop {r0}
@@ -22334,7 +22334,7 @@ _080968D0:
movs r3, 0x14
bl FillBgTilemapBufferRect
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0xC
pop {r4-r7}
pop {r0}
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 7f5e31b7c..ce3a4dbc6 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -3197,7 +3197,7 @@ _08135FD8:
.align 2, 0
_08135FE0: .4byte gUnknown_84636C0
_08135FE4:
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
b _08136020
_08135FEA:
ldr r1, _08135FFC @ =gUnknown_8E9A460
@@ -3206,12 +3206,12 @@ _08135FEA:
movs r0, 0x2
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
b _08136020
.align 2, 0
_08135FFC: .4byte gUnknown_8E9A460
_08136000:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4808,7 +4808,7 @@ sub_8136DA4: @ 8136DA4
movs r1, 0x2
movs r2, 0x4
movs r3, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r0, [r5]
adds r0, r4
ldrb r0, [r0]
@@ -4853,7 +4853,7 @@ sub_8136DF0: @ 8136DF0
adds r0, r1, 0
movs r1, 0
movs r3, 0
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r0, [r5]
adds r0, r4
ldrb r0, [r0]
@@ -4904,7 +4904,7 @@ sub_8136E50: @ 8136E50
movs r1, 0x2
movs r2, 0x4
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
_08136E9A:
ldr r2, [r6]
adds r0, r2, r7
@@ -4920,7 +4920,7 @@ _08136E9A:
movs r1, 0x2
movs r2, 0x28
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r0, [r6]
ldr r3, _08136F04 @ =0x00003290
adds r0, r3
@@ -4941,7 +4941,7 @@ _08136E9A:
movs r1, 0x2
movs r2, 0x69
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
b _08136F28
.align 2, 0
_08136EEC: .4byte gUnknown_203B140
@@ -4965,7 +4965,7 @@ _08136F0C:
movs r1, 0x2
movs r2, 0x69
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
_08136F28:
ldr r0, _08136F44 @ =gUnknown_203B140
ldr r0, [r0]
@@ -5053,7 +5053,7 @@ sub_8136FB0: @ 8136FB0
movs r1, 0x2
movs r2, 0x2F
movs r3, 0x13
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r3, [r6]
movs r1, 0xC8
lsls r1, 6
@@ -5077,7 +5077,7 @@ sub_8136FB0: @ 8136FB0
str r1, [sp, 0x8]
movs r1, 0x2
movs r3, 0x5
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r1, [r6]
ldr r2, _08137064 @ =0x00003003
adds r0, r1, r2
@@ -5090,7 +5090,7 @@ sub_8136FB0: @ 8136FB0
movs r1, 0x2
movs r2, 0x2F
movs r3, 0x31
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r1, [r6]
ldr r2, _08137064 @ =0x00003003
adds r0, r1, r2
@@ -5103,7 +5103,7 @@ sub_8136FB0: @ 8136FB0
movs r1, 0x2
movs r2, 0x2F
movs r3, 0x40
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r1, [r6]
ldr r2, _08137064 @ =0x00003003
adds r0, r1, r2
@@ -5116,7 +5116,7 @@ sub_8136FB0: @ 8136FB0
movs r1, 0x2
movs r2, 0x2F
movs r3, 0x4F
- bl box_print
+ bl AddTextPrinterParameterized3
b _081370CA
.align 2, 0
_08137060: .4byte gUnknown_203B140
@@ -5167,7 +5167,7 @@ _081370A6:
movs r1, 0x2
movs r2, 0x7
movs r3, 0x2D
- bl box_print
+ bl AddTextPrinterParameterized3
_081370CA:
add sp, 0xC
pop {r4-r7}
@@ -5212,7 +5212,7 @@ sub_81370EC: @ 81370EC
str r3, [sp, 0x8]
movs r1, 0x2
movs r3, 0x4
- bl box_print
+ bl AddTextPrinterParameterized3
mov r2, r9
ldr r3, [r2]
adds r0, r3, r4
@@ -5230,7 +5230,7 @@ sub_81370EC: @ 81370EC
str r3, [sp, 0x8]
movs r1, 0x2
movs r3, 0x16
- bl box_print
+ bl AddTextPrinterParameterized3
mov r2, r9
ldr r3, [r2]
adds r0, r3, r4
@@ -5248,7 +5248,7 @@ sub_81370EC: @ 81370EC
str r3, [sp, 0x8]
movs r1, 0x2
movs r3, 0x23
- bl box_print
+ bl AddTextPrinterParameterized3
mov r2, r9
ldr r3, [r2]
adds r0, r3, r4
@@ -5266,7 +5266,7 @@ sub_81370EC: @ 81370EC
str r3, [sp, 0x8]
movs r1, 0x2
movs r3, 0x30
- bl box_print
+ bl AddTextPrinterParameterized3
mov r2, r9
ldr r3, [r2]
adds r0, r3, r4
@@ -5284,7 +5284,7 @@ sub_81370EC: @ 81370EC
str r3, [sp, 0x8]
movs r1, 0x2
movs r3, 0x3D
- bl box_print
+ bl AddTextPrinterParameterized3
mov r2, r9
ldr r3, [r2]
adds r0, r3, r4
@@ -5302,7 +5302,7 @@ sub_81370EC: @ 81370EC
str r3, [sp, 0x8]
movs r1, 0x2
movs r3, 0x4A
- bl box_print
+ bl AddTextPrinterParameterized3
mov r2, r9
ldr r3, [r2]
adds r0, r3, r4
@@ -5320,7 +5320,7 @@ sub_81370EC: @ 81370EC
str r3, [sp, 0x8]
movs r1, 0x2
movs r3, 0x57
- bl box_print
+ bl AddTextPrinterParameterized3
mov r2, r9
ldr r3, [r2]
adds r4, r3, r4
@@ -5338,7 +5338,7 @@ sub_81370EC: @ 81370EC
str r3, [sp, 0x8]
movs r1, 0x2
movs r3, 0x64
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0xC
pop {r3,r4}
mov r8, r3
@@ -5406,7 +5406,7 @@ _081372B0:
movs r1, 0x2
movs r2, 0x3
movs r3, 0x75
- bl box_print
+ bl AddTextPrinterParameterized3
_081372CE:
add sp, 0xC
pop {r4}
@@ -5490,7 +5490,7 @@ _0813733E:
movs r1, 0x2
movs r2, 0x3
mov r3, r12
- bl box_print
+ bl AddTextPrinterParameterized3
mov r1, r10
ldr r0, [r1]
ldr r2, _081373A4 @ =0x00003258
@@ -5577,7 +5577,7 @@ _081373EA:
movs r1, 0x2
movs r2, 0x24
mov r3, r8
- bl box_print
+ bl AddTextPrinterParameterized3
mov r0, r10
ldr r3, [r0]
adds r4, r3, r4
@@ -5603,7 +5603,7 @@ _081373EA:
str r3, [sp, 0x8]
movs r1, 0x2
mov r3, r8
- bl box_print
+ bl AddTextPrinterParameterized3
mov r0, r10
ldr r1, [r0]
ldr r2, _081374DC @ =0x00003258
@@ -5623,7 +5623,7 @@ _081373EA:
movs r1, 0x2
movs r2, 0x3A
mov r3, r8
- bl box_print
+ bl AddTextPrinterParameterized3
mov r0, r10
ldr r3, [r0]
ldr r1, _081374C8 @ =0x00003003
@@ -5645,7 +5645,7 @@ _081373EA:
str r3, [sp, 0x8]
movs r1, 0x2
mov r3, r8
- bl box_print
+ bl AddTextPrinterParameterized3
_081374B4:
add sp, 0x10
pop {r3-r5}
@@ -5747,7 +5747,7 @@ _08137574:
sub_8137578: @ 8137578
push {r4-r7,lr}
sub sp, 0xD4
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r7, _081375E8 @ =gUnknown_203B140
ldr r0, [r7]
ldr r4, _081375EC @ =0x00003290
@@ -5760,7 +5760,7 @@ sub_8137578: @ 8137578
adds r0, r1
ldr r1, [r0]
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r7]
adds r0, r4
movs r1, 0x24
@@ -5777,7 +5777,7 @@ _081375B2:
bl ConvertIntToDecimalStringN
movs r0, 0x1
add r1, sp, 0x14
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r7]
adds r0, r4
movs r1, 0x23
@@ -5824,7 +5824,7 @@ _0813761C:
_08137626:
adds r1, r4, 0
movs r0, 0x2
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r4, _08137664 @ =gUnknown_203B140
ldr r0, [r4]
ldr r1, _08137668 @ =0x00003290
@@ -5901,7 +5901,7 @@ _081376C0:
ldr r1, _081376D8 @ =gUnknown_8419841
_081376CE:
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
b _081376E6
.align 2, 0
_081376D8: .4byte gUnknown_8419841
@@ -5909,7 +5909,7 @@ _081376DC:
add r4, sp, 0x3C
ldr r1, _08137714 @ =gUnknown_8419822
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
_081376E6:
ldr r0, _08137718 @ =gUnknown_203B140
ldr r0, [r0]
@@ -5928,7 +5928,7 @@ _081376E6:
movs r1, 0x2
movs r2, 0
movs r3, 0x3
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
add sp, 0xD4
pop {r4-r7}
pop {r0}
@@ -5944,7 +5944,7 @@ _08137720: .4byte gUnknown_8463FA4
sub_8137724: @ 8137724
push {r4-r6,lr}
sub sp, 0xD4
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r5, _081377A0 @ =gUnknown_203B140
ldr r0, [r5]
ldr r4, _081377A4 @ =0x00003290
@@ -5957,7 +5957,7 @@ sub_8137724: @ 8137724
adds r0, r1
ldr r1, [r0]
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r5]
adds r0, r4
movs r1, 0x24
@@ -5974,7 +5974,7 @@ _0813775E:
bl ConvertIntToDecimalStringN
movs r0, 0x1
add r1, sp, 0x14
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r5]
adds r0, r4
movs r1, 0x23
@@ -6025,7 +6025,7 @@ _081377D0:
ldr r1, _081377E8 @ =gUnknown_841979D
_081377DE:
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
b _081377F6
.align 2, 0
_081377E8: .4byte gUnknown_841979D
@@ -6033,7 +6033,7 @@ _081377EC:
add r4, sp, 0x3C
ldr r1, _08137820 @ =gUnknown_8419782
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
_081377F6:
ldr r0, _08137824 @ =gUnknown_203B140
ldr r0, [r0]
@@ -6052,7 +6052,7 @@ _081377F6:
movs r1, 0x2
movs r2, 0
movs r3, 0x3
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
b _0813792C
.align 2, 0
_08137820: .4byte gUnknown_8419782
@@ -6077,7 +6077,7 @@ _08137846:
_08137850:
adds r1, r4, 0
movs r0, 0x2
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r4, _08137890 @ =gUnknown_203B140
ldr r0, [r4]
ldr r1, _08137894 @ =0x00003290
@@ -6149,7 +6149,7 @@ _081378EA:
ldr r1, _081378F8 @ =gUnknown_841988A
_081378EE:
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
b _08137906
.align 2, 0
_081378F8: .4byte gUnknown_841988A
@@ -6157,7 +6157,7 @@ _081378FC:
add r4, sp, 0x3C
ldr r1, _08137934 @ =gUnknown_8419860
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
_08137906:
ldr r0, _08137938 @ =gUnknown_203B140
ldr r0, [r0]
@@ -6176,7 +6176,7 @@ _08137906:
movs r1, 0x2
movs r2, 0
movs r3, 0x3
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
_0813792C:
add sp, 0xD4
pop {r4-r6}
@@ -6341,7 +6341,7 @@ _08137A46:
movs r1, 0x2
movs r2, 0
movs r3, 0x3
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
add sp, 0x14
pop {r4-r7}
pop {r0}
@@ -6377,7 +6377,7 @@ sub_8137A90: @ 8137A90
movs r1, 0x2
movs r2, 0x1A
movs r3, 0x7
- bl box_print
+ bl AddTextPrinterParameterized3
mov r1, r8
ldr r0, [r1]
adds r0, r6
@@ -6389,7 +6389,7 @@ sub_8137A90: @ 8137A90
movs r1, 0x2
movs r2, 0x1A
movs r3, 0x14
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0xC
pop {r3}
mov r8, r3
@@ -6444,7 +6444,7 @@ _08137B1C:
movs r1, 0x2
movs r2, 0x39
movs r3, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r3, [r7]
adds r0, r3, r4
ldrb r0, [r0]
@@ -6461,7 +6461,7 @@ _08137B1C:
movs r1, 0x2
movs r2, 0x39
movs r3, 0xF
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r2, [r7]
adds r4, r2, r4
ldrb r0, [r4]
@@ -6486,7 +6486,7 @@ _08137B1C:
movs r1, 0x2
movs r2, 0x7
movs r3, 0x2A
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
_08137B9E:
add sp, 0x14
pop {r3}
@@ -6569,7 +6569,7 @@ sub_8137C18: @ 8137C18
movs r1, 0x2
movs r2, 0x42
movs r3, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r1, [r5]
adds r4, r1, r4
ldrb r0, [r4]
@@ -6582,7 +6582,7 @@ sub_8137C18: @ 8137C18
movs r1, 0x2
movs r2, 0x2
movs r3, 0xF
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0xC
pop {r3}
mov r8, r3
@@ -6636,7 +6636,7 @@ _08137CA4:
adds r3, r2
lsrs r3, 16
movs r2, 0x3
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
_08137CDE:
adds r0, r4, 0x1
lsls r0, 24
@@ -6660,7 +6660,7 @@ _08137CDE:
lsrs r1, 24
movs r2, 0x3
movs r3, 0x75
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
_08137D0E:
pop {r4,r5}
pop {r0}
@@ -8325,7 +8325,7 @@ _08138A62:
lsrs r1, 24
movs r2, 0x2F
movs r3, 0x23
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
ldr r1, [r6]
adds r4, r1, r4
ldr r3, _08138AB8 @ =0x00003221
@@ -8342,7 +8342,7 @@ _08138A62:
lsrs r1, 24
movs r2, 0x53
movs r3, 0x23
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
b _08138B0E
.align 2, 0
_08138AB0: .4byte 0x00003003
@@ -8365,7 +8365,7 @@ _08138ABC:
lsrs r1, 24
movs r2, 0
movs r3, 0x3
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
ldr r2, [r6]
adds r4, r2, r4
ldr r1, _08138B1C @ =0x00003221
@@ -8381,7 +8381,7 @@ _08138ABC:
lsrs r1, 24
movs r2, 0x24
movs r3, 0x3
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
_08138B04:
ldr r0, [r6]
adds r0, r5
@@ -8431,7 +8431,7 @@ _08138B48: .4byte 0x00003208
thumb_func_start sub_8138B4C
sub_8138B4C: @ 8138B4C
push {lr}
- bl is_c1_link_related_active
+ bl IsUpdateLinkStateCBActive
cmp r0, 0
bne _08138B84
bl sub_811FA20
@@ -9193,7 +9193,7 @@ sub_81390B0: @ 81390B0
mov r4, sp
adds r4, 0x6
strb r0, [r4]
- ldr r5, _081391E8 @ =gUnknown_825DEA1
+ ldr r5, _081391E8 @ =gPPUpGetMask
ldr r0, _081391E0 @ =gUnknown_203B16D
ldrb r1, [r0]
adds r0, r1, r5
@@ -9278,7 +9278,7 @@ _081391D8: .4byte gUnknown_203B140
_081391DC: .4byte 0x000032f4
_081391E0: .4byte gUnknown_203B16D
_081391E4: .4byte gUnknown_203B16E
-_081391E8: .4byte gUnknown_825DEA1
+_081391E8: .4byte gPPUpGetMask
thumb_func_end sub_81390B0
thumb_func_start sub_81391EC
@@ -9340,7 +9340,7 @@ sub_81391EC: @ 81391EC
mov r4, sp
adds r4, 0x6
strb r0, [r4]
- ldr r5, _08139324 @ =gUnknown_825DEA1
+ ldr r5, _08139324 @ =gPPUpGetMask
ldr r0, _0813931C @ =gUnknown_203B16D
ldrb r1, [r0]
adds r0, r1, r5
@@ -9425,7 +9425,7 @@ _08139314: .4byte gUnknown_203B140
_08139318: .4byte 0x000032f4
_0813931C: .4byte gUnknown_203B16D
_08139320: .4byte gUnknown_203B16E
-_08139324: .4byte gUnknown_825DEA1
+_08139324: .4byte gPPUpGetMask
thumb_func_end sub_81391EC
thumb_func_start sub_8139328
@@ -9875,7 +9875,7 @@ _081396A8:
movs r1, 0x2
movs r2, 0x7
movs r3, 0x2A
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
ldr r0, [r5]
adds r0, r4
ldrb r0, [r0]
@@ -10482,7 +10482,7 @@ _08139BA0:
bl __floatsidf
str r0, [sp]
str r1, [sp, 0x4]
- ldr r3, _08139BDC @ =0x9999999a
+ ldr r3, _08139BD8+4 @ =0x9999999a
ldr r2, _08139BD8 @ =0x3fe99999
bl __muldf3
adds r5, r1, 0
@@ -10503,11 +10503,10 @@ _08139BA0:
movs r0, 0x2
b _08139C16
.align 2, 0
-_08139BD8: .4byte 0x3fe99999
-_08139BDC: .4byte 0x9999999a
+_08139BD8: .double 0.8
_08139BE0: .4byte gUnknown_203B170
_08139BE4:
- ldr r3, _08139C08 @ =0x33333333
+ ldr r3, _08139C04+4 @ =0x33333333
ldr r2, _08139C04 @ =0x3fe33333
ldr r0, [sp]
ldr r1, [sp, 0x4]
@@ -10522,8 +10521,7 @@ _08139BE4:
movs r0, 0x1
b _08139C16
.align 2, 0
-_08139C04: .4byte 0x3fe33333
-_08139C08: .4byte 0x33333333
+_08139C04: .double 0.6
_08139C0C: .4byte gUnknown_203B170
_08139C10:
ldr r0, _08139C38 @ =gUnknown_203B170
@@ -13239,7 +13237,7 @@ _0813B16C:
_0813B190: .4byte 0x000032f4
_0813B194: .4byte 0x00003210
_0813B198:
- bl is_c1_link_related_active
+ bl IsUpdateLinkStateCBActive
cmp r0, 0
bne _0813B1C4
ldr r0, _0813B1C0 @ =gReceivedRemoteLinkPlayers
diff --git a/asm/post_battle_event_funcs.s b/asm/post_battle_event_funcs.s
index 14703e26e..264ca380d 100644
--- a/asm/post_battle_event_funcs.s
+++ b/asm/post_battle_event_funcs.s
@@ -44,7 +44,7 @@ _080CA318:
ldrb r0, [r2, 0x11]
orrs r1, r0
movs r0, 0x1
- bl sub_8054F00
+ bl SetGameStat
_080CA33A:
bl sub_804C1AC
movs r0, 0x1
diff --git a/asm/psychic.s b/asm/psychic.s
new file mode 100644
index 000000000..ef0fc1385
--- /dev/null
+++ b/asm/psychic.s
@@ -0,0 +1,2180 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80B2ECC
+sub_80B2ECC: @ 80B2ECC
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ ldr r0, _080B2F84 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B2EE8
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B2EFE
+_080B2EE8:
+ 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]
+_080B2EFE:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B2F5A
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r7, r4, 0
+ adds r0, r4, 0
+ bl sub_80768B0
+ 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 sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B2F3C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8072E48
+_080B2F3C:
+ movs r0, 0x2
+ adds r4, r0, 0
+ eors r4, r7
+ adds r0, r4, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B2F5A
+ movs r0, 0x1
+ eors r5, r0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8072E48
+_080B2F5A:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B2F90
+ bl sub_8075290
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B2F90
+ ldr r0, _080B2F84 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B2F88
+ movs r0, 0x48
+ strh r0, [r6, 0x20]
+ movs r0, 0x50
+ b _080B2FCA
+ .align 2, 0
+_080B2F84: .4byte gBattleAnimAttacker
+_080B2F88:
+ movs r0, 0xB0
+ strh r0, [r6, 0x20]
+ movs r0, 0x28
+ b _080B2FCA
+_080B2F90:
+ ldr r5, _080B3000 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B2FA6
+ ldr r1, _080B3004 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r1]
+_080B2FA6:
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080B3004 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4]
+ adds r0, r1
+ strh r0, [r6, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r4, [r4, 0x2]
+ adds r0, r4
+_080B2FCA:
+ strh r0, [r6, 0x22]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B2FDC
+ ldrh r0, [r6, 0x22]
+ adds r0, 0x9
+ strh r0, [r6, 0x22]
+_080B2FDC:
+ ldr r0, _080B3004 @ =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, _080B3008 @ =sub_80B300C
+ str r1, [r6, 0x1C]
+ adds r0, r6, 0
+ bl _call_via_r1
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B3000: .4byte gBattleAnimAttacker
+_080B3004: .4byte gBattleAnimArgs
+_080B3008: .4byte sub_80B300C
+ thumb_func_end sub_80B2ECC
+
+ thumb_func_start sub_80B300C
+sub_80B300C: @ 80B300C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x34]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldrh r1, [r4, 0x34]
+ movs r2, 0x34
+ ldrsh r0, [r4, r2]
+ cmp r0, 0xD
+ bne _080B3038
+ ldr r0, _080B3034 @ =sub_80B3044
+ str r0, [r4, 0x1C]
+ b _080B303C
+ .align 2, 0
+_080B3034: .4byte sub_80B3044
+_080B3038:
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x34]
+_080B303C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B300C
+
+ thumb_func_start sub_80B3044
+sub_80B3044: @ 80B3044
+ 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 _080B30A2
+ movs r0, 0
+ strh r0, [r3, 0x30]
+ ldrh r4, [r3, 0x2E]
+ ldr r1, _080B30A8 @ =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
+_080B307A:
+ ldrh r0, [r1]
+ strh r0, [r2]
+ subs r1, 0x2
+ subs r2, 0x2
+ subs r5, 0x1
+ cmp r5, 0
+ bgt _080B307A
+ 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 _080B30A2
+ ldr r0, _080B30AC @ =sub_80B30B0
+ str r0, [r3, 0x1C]
+_080B30A2:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B30A8: .4byte gPlttBufferFaded
+_080B30AC: .4byte sub_80B30B0
+ thumb_func_end sub_80B3044
+
+ thumb_func_start sub_80B30B0
+sub_80B30B0: @ 80B30B0
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x34]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldrh r0, [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 _080B3156
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B3146
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r6, r4, 0
+ adds r0, r4, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B3118
+ ldr r2, _080B315C @ =gSprites
+ ldr r0, _080B3160 @ =gBattlerSpriteIds
+ 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]
+_080B3118:
+ movs r0, 0x2
+ adds r4, r0, 0
+ eors r4, r6
+ adds r0, r4, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B3146
+ ldr r2, _080B315C @ =gSprites
+ ldr r0, _080B3160 @ =gBattlerSpriteIds
+ 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]
+_080B3146:
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080B3164 @ =sub_80B3168
+ str r0, [r5, 0x1C]
+_080B3156:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B315C: .4byte gSprites
+_080B3160: .4byte gBattlerSpriteIds
+_080B3164: .4byte sub_80B3168
+ thumb_func_end sub_80B30B0
+
+ thumb_func_start sub_80B3168
+sub_80B3168: @ 80B3168
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B31C0
+ movs r0, 0x1
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r0, 24
+ adds r4, r0, 0
+ bl sub_80768B0
+ 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 sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B31A6
+ adds r0, r5, 0
+ bl sub_8073128
+_080B31A6:
+ movs r0, 0x2
+ eors r4, r0
+ adds r0, r4, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B31C0
+ movs r0, 0x1
+ eors r5, r0
+ adds r0, r5, 0
+ bl sub_8073128
+_080B31C0:
+ ldr r0, _080B31CC @ =DestroyAnimSprite
+ str r0, [r6, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B31CC: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B3168
+
+ thumb_func_start sub_80B31D0
+sub_80B31D0: @ 80B31D0
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B325C
+ ldr r5, _080B321C @ =gBattleAnimArgs
+ movs r1, 0x6
+ ldrsh r0, [r5, r1]
+ movs r6, 0
+ cmp r0, 0
+ bne _080B31EA
+ movs r6, 0x1
+_080B31EA:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B3232
+ bl sub_8075290
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B3232
+ ldr r0, _080B3220 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B3224
+ 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 _080B3254
+ .align 2, 0
+_080B321C: .4byte gBattleAnimArgs
+_080B3220: .4byte gBattleAnimAttacker
+_080B3224:
+ ldrh r0, [r5]
+ adds r0, 0xB0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r5, 0x2]
+ adds r0, 0x28
+ strh r0, [r4, 0x22]
+ b _080B3254
+_080B3232:
+ ldr r0, _080B3248 @ =gBattleAnimArgs
+ movs r1, 0x4
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B324C
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl sub_8075160
+ b _080B3254
+ .align 2, 0
+_080B3248: .4byte gBattleAnimArgs
+_080B324C:
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl sub_8075114
+_080B3254:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080B3270
+_080B325C:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x30
+ ands r0, r1
+ cmp r0, 0
+ beq _080B3270
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080B3270:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B31D0
+
+ thumb_func_start sub_80B3278
+sub_80B3278: @ 80B3278
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080B32C0 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B32C8
+ 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, _080B32C4 @ =0x0000ffff
+ b _080B32D6
+ .align 2, 0
+_080B32C0: .4byte gBattleAnimAttacker
+_080B32C4: .4byte 0x0000ffff
+_080B32C8:
+ 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
+_080B32D6:
+ strh r0, [r5, 0x30]
+ ldr r1, _080B32EC @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080B32F0 @ =sub_8074F6C
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B32EC: .4byte DestroyAnimSprite
+_080B32F0: .4byte sub_8074F6C
+ thumb_func_end sub_80B3278
+
+ thumb_func_start sub_80B32F4
+sub_80B32F4: @ 80B32F4
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ ldr r6, _080B3378 @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ movs r1, 0x1
+ bl sub_8076B2C
+ 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_8076B2C
+ 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 GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080B333A
+ lsls r0, r4, 16
+ negs r0, r0
+ lsrs r4, r0, 16
+_080B333A:
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ strh r0, [r5, 0x20]
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r7
+ strh r0, [r5, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ bgt _080B3366
+ movs r0, 0x10
+ strh r0, [r5, 0x22]
+_080B3366:
+ ldr r1, _080B337C @ =sub_80B3384
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080B3380 @ =sub_8074F6C
+ str r0, [r5, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B3378: .4byte gBattleAnimAttacker
+_080B337C: .4byte sub_80B3384
+_080B3380: .4byte sub_8074F6C
+ thumb_func_end sub_80B32F4
+
+ thumb_func_start sub_80B3384
+sub_80B3384: @ 80B3384
+ 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, _080B33B0 @ =gUnknown_83E6FF0
+ str r0, [r4, 0x10]
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ adds r0, r4, 0
+ bl InitSpriteAffineAnim
+ ldr r0, _080B33B4 @ =sub_80B33B8
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B33B0: .4byte gUnknown_83E6FF0
+_080B33B4: .4byte sub_80B33B8
+ thumb_func_end sub_80B3384
+
+ thumb_func_start sub_80B33B8
+sub_80B33B8: @ 80B33B8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080B33CA
+ cmp r0, 0x1
+ beq _080B33F8
+ b _080B3410
+_080B33CA:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080B3410
+ 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 _080B3410
+_080B33F8:
+ 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 _080B3410
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B3410:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B33B8
+
+ thumb_func_start sub_80B3418
+sub_80B3418: @ 80B3418
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080B3448 @ =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, _080B344C @ =gUnknown_83E700C
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080B3450 @ =sub_80B3454
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B3448: .4byte gTasks
+_080B344C: .4byte gUnknown_83E700C
+_080B3450: .4byte sub_80B3454
+ thumb_func_end sub_80B3418
+
+ thumb_func_start sub_80B3454
+sub_80B3454: @ 80B3454
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080B347C @ =gTasks
+ adds r0, r1
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B3474
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080B3474:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B347C: .4byte gTasks
+ thumb_func_end sub_80B3454
+
+ thumb_func_start sub_80B3480
+sub_80B3480: @ 80B3480
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080B34CC @ =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, _080B34D0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r1, 0x8
+ cmp r0, 0
+ beq _080B34B4
+ movs r1, 0x4
+_080B34B4:
+ strh r1, [r4, 0xE]
+ ldrb r1, [r4, 0x8]
+ ldr r2, _080B34D4 @ =gUnknown_83E702C
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080B34D8 @ =sub_80B34DC
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B34CC: .4byte gTasks
+_080B34D0: .4byte gBattleAnimAttacker
+_080B34D4: .4byte gUnknown_83E702C
+_080B34D8: .4byte sub_80B34DC
+ thumb_func_end sub_80B3480
+
+ thumb_func_start sub_80B34DC
+sub_80B34DC: @ 80B34DC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080B34FC @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080B3500
+ cmp r0, 0x1
+ beq _080B351C
+ b _080B357A
+ .align 2, 0
+_080B34FC: .4byte gTasks
+_080B3500:
+ adds r0, r4, 0
+ bl sub_8076308
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x13
+ ble _080B357A
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ b _080B357A
+_080B351C:
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080B3544
+ ldr r2, _080B3540 @ =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 _080B357A
+ .align 2, 0
+_080B3540: .4byte gSprites
+_080B3544:
+ ldr r3, _080B3580 @ =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_8075980
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080B357A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B3580: .4byte gSprites
+ thumb_func_end sub_80B34DC
+
+ thumb_func_start sub_80B3584
+sub_80B3584: @ 80B3584
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080B360C @ =gTasks
+ adds r5, r1, r0
+ movs r1, 0
+ movs r0, 0x10
+ strh r0, [r5, 0xE]
+ strh r1, [r5, 0x10]
+ ldr r4, _080B3610 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x24]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8076B2C
+ 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_8076B2C
+ 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 _080B35EE
+ adds r1, r6, 0
+_080B35EE:
+ strh r1, [r5, 0x20]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0x10
+ bl SetGpuReg
+ ldr r0, _080B3614 @ =sub_80B3618
+ str r0, [r5]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B360C: .4byte gTasks
+_080B3610: .4byte gBattleAnimAttacker
+_080B3614: .4byte sub_80B3618
+ thumb_func_end sub_80B3584
+
+ thumb_func_start sub_80B3618
+sub_80B3618: @ 80B3618
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080B363C @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ cmp r1, 0x1
+ beq _080B3718
+ cmp r1, 0x1
+ bgt _080B3640
+ cmp r1, 0
+ beq _080B364E
+ b _080B379E
+ .align 2, 0
+_080B363C: .4byte gTasks
+_080B3640:
+ cmp r1, 0x2
+ bne _080B3646
+ b _080B377A
+_080B3646:
+ cmp r1, 0x3
+ bne _080B364C
+ b _080B3788
+_080B364C:
+ b _080B379E
+_080B364E:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ bgt _080B365E
+ b _080B379E
+_080B365E:
+ strh r1, [r4, 0xA]
+ ldr r0, _080B369C @ =gUnknown_83E7044
+ 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 _080B3702
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080B36BC
+ cmp r0, 0x1
+ bgt _080B36A0
+ cmp r0, 0
+ beq _080B36AA
+ b _080B3702
+ .align 2, 0
+_080B369C: .4byte gUnknown_83E7044
+_080B36A0:
+ cmp r0, 0x2
+ beq _080B36D4
+ cmp r0, 0x3
+ beq _080B36EC
+ b _080B3702
+_080B36AA:
+ ldr r0, _080B36B8 @ =gSprites
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r4, 0x20]
+ b _080B36FA
+ .align 2, 0
+_080B36B8: .4byte gSprites
+_080B36BC:
+ ldr r0, _080B36D0 @ =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 _080B3700
+ .align 2, 0
+_080B36D0: .4byte gSprites
+_080B36D4:
+ ldr r1, _080B36E8 @ =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 _080B3702
+ .align 2, 0
+_080B36E8: .4byte gSprites
+_080B36EC:
+ ldr r0, _080B3714 @ =gSprites
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r4, 0x20]
+ negs r0, r0
+_080B36FA:
+ strh r0, [r1, 0x24]
+ ldrh r0, [r4, 0x20]
+ negs r0, r0
+_080B3700:
+ strh r0, [r1, 0x26]
+_080B3702:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ bne _080B379E
+ b _080B377A
+ .align 2, 0
+_080B3714: .4byte gSprites
+_080B3718:
+ ldrh r0, [r4, 0xA]
+ ands r1, r0
+ cmp r1, 0
+ beq _080B3728
+ ldrh r0, [r4, 0xE]
+ subs r0, 0x1
+ strh r0, [r4, 0xE]
+ b _080B372E
+_080B3728:
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x1
+ strh r0, [r4, 0x10]
+_080B372E:
+ ldrh r1, [r4, 0x10]
+ lsls r1, 8
+ ldrh r0, [r4, 0xE]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x20
+ bne _080B379E
+ movs r5, 0x8
+ adds r6, r4, 0
+ adds r6, 0x8
+_080B3754:
+ lsls r0, r5, 1
+ adds r1, r6, r0
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x40
+ beq _080B3770
+ adds r1, r0, 0
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080B3784 @ =gSprites
+ adds r0, r1
+ bl DestroySprite
+_080B3770:
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0xC
+ bls _080B3754
+_080B377A:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B379E
+ .align 2, 0
+_080B3784: .4byte gSprites
+_080B3788:
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080B379E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B3618
+
+ thumb_func_start sub_80B37A4
+sub_80B37A4: @ 80B37A4
+ 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 _080B37CE
+ 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]
+_080B37CE:
+ movs r0, 0x30
+ ldrsh r1, [r4, r0]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _080B37E0
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B37E0:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B37A4
+
+ thumb_func_start sub_80B37EC
+sub_80B37EC: @ 80B37EC
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080B3828 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080B3818
+ ldr r4, _080B382C @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+_080B3818:
+ ldrh r0, [r6, 0x2]
+ strh r0, [r5, 0x2E]
+ ldr r0, _080B3830 @ =sub_80B37A4
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B3828: .4byte gBattleAnimArgs
+_080B382C: .4byte gBattleAnimAttacker
+_080B3830: .4byte sub_80B37A4
+ thumb_func_end sub_80B37EC
+
+ thumb_func_start sub_80B3834
+sub_80B3834: @ 80B3834
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080B3890 @ =gTasks
+ adds r5, r1, r0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B38D8
+ ldr r0, _080B3894 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x1
+ bne _080B38A4
+ ldr r0, _080B3898 @ =0x0000fff6
+ strh r0, [r5, 0x1C]
+ ldr r4, _080B389C @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x5
+ bl sub_8076B2C
+ subs r0, 0x8
+ strh r0, [r5, 0x1E]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8076B2C
+ adds r0, 0x8
+ strh r0, [r5, 0x20]
+ ldr r4, _080B38A0 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x5
+ bl sub_8076B2C
+ subs r0, 0x8
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8076B2C
+ adds r0, 0x8
+ b _080B3962
+ .align 2, 0
+_080B3890: .4byte gTasks
+_080B3894: .4byte gBattleAnimArgs
+_080B3898: .4byte 0x0000fff6
+_080B389C: .4byte gBattleAnimTarget
+_080B38A0: .4byte gBattleAnimAttacker
+_080B38A4:
+ movs r0, 0xA
+ strh r0, [r5, 0x1C]
+ ldr r4, _080B38D0 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x4
+ bl sub_8076B2C
+ adds r0, 0x8
+ strh r0, [r5, 0x1E]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8076B2C
+ subs r0, 0x8
+ strh r0, [r5, 0x20]
+ ldr r4, _080B38D4 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x4
+ bl sub_8076B2C
+ adds r0, 0x8
+ b _080B3956
+ .align 2, 0
+_080B38D0: .4byte gBattleAnimAttacker
+_080B38D4: .4byte gBattleAnimTarget
+_080B38D8:
+ ldr r0, _080B391C @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x1
+ bne _080B392C
+ ldr r0, _080B3920 @ =0x0000fff6
+ strh r0, [r5, 0x1C]
+ ldr r4, _080B3924 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x4
+ bl sub_8076B2C
+ adds r0, 0x8
+ strh r0, [r5, 0x1E]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8076B2C
+ adds r0, 0x8
+ strh r0, [r5, 0x20]
+ ldr r4, _080B3928 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x4
+ bl sub_8076B2C
+ adds r0, 0x8
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8076B2C
+ adds r0, 0x8
+ b _080B3962
+ .align 2, 0
+_080B391C: .4byte gBattleAnimArgs
+_080B3920: .4byte 0x0000fff6
+_080B3924: .4byte gBattleAnimTarget
+_080B3928: .4byte gBattleAnimAttacker
+_080B392C:
+ movs r0, 0xA
+ strh r0, [r5, 0x1C]
+ ldr r4, _080B3974 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x5
+ bl sub_8076B2C
+ subs r0, 0x8
+ strh r0, [r5, 0x1E]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8076B2C
+ subs r0, 0x8
+ strh r0, [r5, 0x20]
+ ldr r4, _080B3978 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x5
+ bl sub_8076B2C
+ subs r0, 0x8
+_080B3956:
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8076B2C
+ subs r0, 0x8
+_080B3962:
+ strh r0, [r5, 0x24]
+ movs r0, 0x6
+ strh r0, [r5, 0xA]
+ ldr r0, _080B397C @ =sub_80B3980
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B3974: .4byte gBattleAnimAttacker
+_080B3978: .4byte gBattleAnimTarget
+_080B397C: .4byte sub_80B3980
+ thumb_func_end sub_80B3834
+
+ thumb_func_start sub_80B3980
+sub_80B3980: @ 80B3980
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080B39A0 @ =gTasks
+ adds r5, r0, r1
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ cmp r1, 0
+ beq _080B39A4
+ cmp r1, 0x1
+ beq _080B3A18
+ b _080B3A2C
+ .align 2, 0
+_080B39A0: .4byte gTasks
+_080B39A4:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ ble _080B3A2C
+ strh r1, [r5, 0xA]
+ ldr r0, _080B3A10 @ =gUnknown_83E7114
+ 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 _080B39F8
+ ldr r0, _080B3A14 @ =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_8075068
+ ldrb r0, [r5, 0xC]
+ movs r1, 0x3
+ ands r1, r0
+ adds r0, r4, 0
+ bl StartSpriteAffineAnim
+_080B39F8:
+ ldrh r0, [r5, 0xC]
+ adds r0, 0x1
+ strh r0, [r5, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ bne _080B3A2C
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080B3A2C
+ .align 2, 0
+_080B3A10: .4byte gUnknown_83E7114
+_080B3A14: .4byte gSprites
+_080B3A18:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x11
+ ble _080B3A2C
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080B3A2C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B3980
+
+ thumb_func_start sub_80B3A34
+sub_80B3A34: @ 80B3A34
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B3A52
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080B3A52:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B3A34
+
+ thumb_func_start sub_80B3A58
+sub_80B3A58: @ 80B3A58
+ 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, _080B3A90 @ =gTasks
+ adds r4, r1, r0
+ ldr r0, _080B3A94 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r1, r0, 24
+ adds r0, r1, 0
+ subs r0, 0x20
+ strh r0, [r4, 0x24]
+ ldr r0, _080B3A98 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ cmp r0, 0x1
+ beq _080B3AAE
+ cmp r0, 0x1
+ bgt _080B3A9C
+ cmp r0, 0
+ beq _080B3AA2
+ b _080B3ACA
+ .align 2, 0
+_080B3A90: .4byte gTasks
+_080B3A94: .4byte gBattleAnimTarget
+_080B3A98: .4byte gBattleAnimArgs
+_080B3A9C:
+ cmp r0, 0x2
+ beq _080B3ABA
+ b _080B3ACA
+_080B3AA2:
+ movs r0, 0x2
+ strh r0, [r4, 0x1E]
+ movs r0, 0x5
+ strh r0, [r4, 0x20]
+ movs r0, 0x40
+ b _080B3AC2
+_080B3AAE:
+ movs r0, 0x2
+ strh r0, [r4, 0x1E]
+ movs r0, 0x5
+ strh r0, [r4, 0x20]
+ movs r0, 0xC0
+ b _080B3AC2
+_080B3ABA:
+ movs r0, 0x4
+ strh r0, [r4, 0x1E]
+ strh r0, [r4, 0x20]
+ movs r0, 0
+_080B3AC2:
+ strh r0, [r4, 0x22]
+ adds r0, r1, 0
+ adds r0, 0x20
+ strh r0, [r4, 0x26]
+_080B3ACA:
+ movs r1, 0x24
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bge _080B3AD6
+ movs r0, 0
+ strh r0, [r4, 0x24]
+_080B3AD6:
+ ldr r0, _080B3AF0 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080B3AFC
+ ldr r0, _080B3AF4 @ =gBattle_BG1_X
+ ldrh r0, [r0]
+ strh r0, [r4, 0x1C]
+ ldr r0, _080B3AF8 @ =0x04000014
+ b _080B3B04
+ .align 2, 0
+_080B3AF0: .4byte gBattleAnimTarget
+_080B3AF4: .4byte gBattle_BG1_X
+_080B3AF8: .4byte 0x04000014
+_080B3AFC:
+ ldr r0, _080B3B64 @ =gBattle_BG2_X
+ ldrh r0, [r0]
+ strh r0, [r4, 0x1C]
+ ldr r0, _080B3B68 @ =0x04000018
+_080B3B04:
+ 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 _080B3B3E
+ ldr r5, _080B3B6C @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r5, r0
+_080B3B1E:
+ 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 _080B3B1E
+_080B3B3E:
+ ldr r0, _080B3B70 @ =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, _080B3B74 @ =sub_80B3B78
+ str r0, [r4]
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B3B64: .4byte gBattle_BG2_X
+_080B3B68: .4byte 0x04000018
+_080B3B6C: .4byte gScanlineEffectRegBuffers
+_080B3B70: .4byte 0xa2600001
+_080B3B74: .4byte sub_80B3B78
+ thumb_func_end sub_80B3A58
+
+ thumb_func_start sub_80B3B78
+sub_80B3B78: @ 80B3B78
+ 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, _080B3BA0 @ =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080B3C52
+ cmp r0, 0x1
+ bgt _080B3BA4
+ cmp r0, 0
+ beq _080B3BAA
+ b _080B3C6A
+ .align 2, 0
+_080B3BA0: .4byte gTasks
+_080B3BA4:
+ cmp r0, 0x2
+ beq _080B3C64
+ b _080B3C6A
+_080B3BAA:
+ 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 _080B3C42
+ ldr r0, _080B3BF4 @ =gSineTable
+ mov r9, r0
+ movs r7, 0x3
+ ldr r1, _080B3BF8 @ =gScanlineEffectRegBuffers
+ mov r12, r1
+ movs r2, 0xF0
+ lsls r2, 3
+ add r2, r12
+ mov r8, r2
+_080B3BCC:
+ 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 _080B3BFC
+ ldrh r1, [r5, 0xA]
+ adds r0, r7, 0
+ ands r0, r1
+ adds r0, r3, r0
+ b _080B3C08
+ .align 2, 0
+_080B3BF4: .4byte gSineTable
+_080B3BF8: .4byte gScanlineEffectRegBuffers
+_080B3BFC:
+ cmp r3, 0
+ bge _080B3C0C
+ ldrh r1, [r5, 0xA]
+ adds r0, r7, 0
+ ands r0, r1
+ subs r0, r3, r0
+_080B3C08:
+ lsls r0, 16
+ lsrs r1, r0, 16
+_080B3C0C:
+ 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 _080B3BCC
+_080B3C42:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x17
+ ble _080B3C6A
+ b _080B3C58
+_080B3C52:
+ ldr r1, _080B3C60 @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+_080B3C58:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080B3C6A
+ .align 2, 0
+_080B3C60: .4byte gScanlineEffect
+_080B3C64:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080B3C6A:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B3B78
+
+ thumb_func_start sub_80B3C78
+sub_80B3C78: @ 80B3C78
+ 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, _080B3CAC @ =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 _080B3CB0
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _080B3D5A
+ .align 2, 0
+_080B3CAC: .4byte gTasks
+_080B3CB0:
+ ldr r1, _080B3CD4 @ =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 _080B3CD8
+ adds r0, r5, 0
+ bl FreeOamMatrix
+ mov r0, r8
+ bl DestroyAnimVisualTask
+ b _080B3D5A
+ .align 2, 0
+_080B3CD4: .4byte gBattleAnimArgs
+_080B3CD8:
+ ldr r2, _080B3D68 @ =gSprites
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ adds r0, r2, 0
+ adds r0, 0x1C
+ adds r0, r4, r0
+ ldr r1, _080B3D6C @ =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, _080B3D70 @ =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, _080B3D74 @ =sub_80B3D78
+ str r0, [r7]
+_080B3D5A:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B3D68: .4byte gSprites
+_080B3D6C: .4byte SpriteCallbackDummy
+_080B3D70: .4byte gBattleAnimArgs
+_080B3D74: .4byte sub_80B3D78
+ thumb_func_end sub_80B3C78
+
+ thumb_func_start sub_80B3D78
+sub_80B3D78: @ 80B3D78
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080B3D9C @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080B3DFC
+ cmp r0, 0x1
+ bgt _080B3DA0
+ cmp r0, 0
+ beq _080B3DAA
+ b _080B3E7C
+ .align 2, 0
+_080B3D9C: .4byte gTasks
+_080B3DA0:
+ cmp r0, 0x2
+ beq _080B3E4C
+ cmp r0, 0x3
+ beq _080B3E6C
+ b _080B3E7C
+_080B3DAA:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x4
+ strh r0, [r4, 0xA]
+ ldr r1, _080B3DF8 @ =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_8076494
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x30
+ bne _080B3E7C
+ b _080B3E5E
+ .align 2, 0
+_080B3DF8: .4byte gSineTable
+_080B3DFC:
+ ldrh r0, [r4, 0xA]
+ subs r0, 0x4
+ strh r0, [r4, 0xA]
+ ldr r1, _080B3E48 @ =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_8076494
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080B3E7C
+ b _080B3E5E
+ .align 2, 0
+_080B3E48: .4byte gSineTable
+_080B3E4C:
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080B3E68 @ =gSprites
+ adds r0, r1
+ bl obj_delete_but_dont_free_vram
+_080B3E5E:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B3E7C
+ .align 2, 0
+_080B3E68: .4byte gSprites
+_080B3E6C:
+ ldrh r0, [r4, 0x24]
+ lsls r0, 24
+ lsrs r0, 24
+ bl FreeOamMatrix
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080B3E7C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B3D78
+
+ thumb_func_start sub_80B3E84
+sub_80B3E84: @ 80B3E84
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080B3EFC
+ cmp r0, 0x1
+ bgt _080B3E9A
+ cmp r0, 0
+ beq _080B3EA4
+ b _080B3FA4
+_080B3E9A:
+ cmp r0, 0x2
+ beq _080B3F2E
+ cmp r0, 0x3
+ beq _080B3F8E
+ b _080B3FA4
+_080B3EA4:
+ ldr r4, _080B3EF8 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B3ED2
+ ldrh r0, [r5, 0x22]
+ adds r0, 0xC
+ strh r0, [r5, 0x22]
+_080B3ED2:
+ movs r0, 0x8
+ strh r0, [r5, 0x30]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldrh r0, [r5, 0x30]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ b _080B3F26
+ .align 2, 0
+_080B3EF8: .4byte gBattleAnimAttacker
+_080B3EFC:
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080B3FA4
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xC4
+ bl PlaySE12WithPanning
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+_080B3F26:
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _080B3FA4
+_080B3F2E:
+ ldrh r0, [r5, 0x32]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080B3F72
+ movs r0, 0
+ strh r0, [r5, 0x32]
+ ldrh r1, [r5, 0x30]
+ subs r1, 0x1
+ strh r1, [r5, 0x30]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x30
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080B3F72
+ 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]
+_080B3F72:
+ 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 _080B3FA4
+_080B3F8E:
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r5, 0
+ bl DestroyAnimSprite
+_080B3FA4:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B3E84
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/region_map.s b/asm/region_map.s
index 187da882f..01c5a71c7 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -595,7 +595,7 @@ _080C02F0: .4byte gUnknown_20399D4
_080C02F4: .4byte 0x00004796
_080C02F8: .4byte gUnknown_83EF25A
_080C02FC:
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
b _080C03C8
_080C0302:
ldr r1, _080C0330 @ =gUnknown_83EF61C
@@ -604,7 +604,7 @@ _080C0302:
movs r0, 0
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r0, _080C0334 @ =gUnknown_20399D4
ldr r0, [r0]
ldr r2, _080C0338 @ =0x00004796
@@ -617,7 +617,7 @@ _080C0302:
movs r0, 0x1
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
b _080C03C8
.align 2, 0
_080C0330: .4byte gUnknown_83EF61C
@@ -625,7 +625,7 @@ _080C0334: .4byte gUnknown_20399D4
_080C0338: .4byte 0x00004796
_080C033C: .4byte gUnknown_83F1978
_080C0340:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1600,7 +1600,7 @@ _080C0B44:
movs r1, 0x2
movs r2, 0x2
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0
bl PutWindowTilemap
movs r0, 0
@@ -1718,7 +1718,7 @@ sub_80C0BB0: @ 80C0BB0
movs r1, 0x2
movs r2, 0xC
movs r3, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0x1
@@ -3737,7 +3737,7 @@ _080C1CA8:
movs r1, 0x2
movs r2, 0x4
movs r3, 0
- bl box_print
+ bl AddTextPrinterParameterized3
bl sub_80C3580
lsls r0, 16
lsrs r0, 16
@@ -3750,7 +3750,7 @@ _080C1CA8:
movs r1, 0x2
movs r2, 0x2
movs r3, 0xE
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x2
movs r1, 0x3
bl CopyWindowToVram
@@ -9815,7 +9815,7 @@ _080C4E48:
movs r1, 0
movs r2, 0
movs r3, 0
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x3
movs r1, 0x2
bl CopyWindowToVram
@@ -9860,7 +9860,7 @@ _080C4EA4:
movs r1, 0
movs r2, 0
movs r3, 0
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x4
movs r1, 0x3
bl CopyWindowToVram
diff --git a/asm/reset_save_heap.s b/asm/reset_save_heap.s
deleted file mode 100644
index fb46afb94..000000000
--- a/asm/reset_save_heap.s
+++ /dev/null
@@ -1,68 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8079B7C
-sub_8079B7C: @ 8079B7C
- push {r4,r5,lr}
- ldr r5, _08079BEC @ =0x04000208
- ldrh r4, [r5]
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x1
- bl RegisterRamReset
- movs r0, 0
- movs r1, 0x80
- bl ClearGpuRegBits
- strh r4, [r5]
- ldr r1, _08079BF0 @ =gMain
- ldr r0, _08079BF4 @ =0x00000439
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- bl SetSaveBlocksPointers
- bl sub_8054A28
- bl Save_ResetSaveCounters
- movs r0, 0
- bl Save_LoadGameData
- ldr r0, _08079BF8 @ =gSaveFileStatus
- ldrh r0, [r0]
- cmp r0, 0
- beq _08079BC4
- cmp r0, 0x2
- bne _08079BC8
-_08079BC4:
- bl Sav2_ClearSetDefault
-_08079BC8:
- ldr r0, _08079BFC @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x15]
- lsls r0, 31
- lsrs r0, 31
- bl SetPokemonCryStereo
- ldr r0, _08079C00 @ =gHeap
- movs r1, 0xE0
- lsls r1, 9
- bl InitHeap
- ldr r0, _08079C04 @ =sub_8056938
- bl SetMainCallback2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08079BEC: .4byte 0x04000208
-_08079BF0: .4byte gMain
-_08079BF4: .4byte 0x00000439
-_08079BF8: .4byte gSaveFileStatus
-_08079BFC: .4byte gSaveBlock2Ptr
-_08079C00: .4byte gHeap
-_08079C04: .4byte sub_8056938
- thumb_func_end sub_8079B7C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s
index a9f23d1d4..9ec3e3580 100644
--- a/asm/reshow_battle_screen.s
+++ b/asm/reshow_battle_screen.s
@@ -678,7 +678,7 @@ _08077CD2:
adds r1, r4, 0
mov r2, r8
bl CreateSprite
- ldr r4, _08077D9C @ =gUnknown_2023D44
+ ldr r4, _08077D9C @ =gBattlerSpriteIds
adds r4, r7, r4
strb r0, [r4]
ldr r5, _08077DA0 @ =gSprites
@@ -735,7 +735,7 @@ _08077CD2:
_08077D90: .4byte gBattlerPartyIndexes
_08077D94: .4byte gEnemyParty
_08077D98: .4byte gMultiuseSpriteTemplate
-_08077D9C: .4byte gUnknown_2023D44
+_08077D9C: .4byte gBattlerSpriteIds
_08077DA0: .4byte gSprites
_08077DA4: .4byte SpriteCallbackDummy
_08077DA8: .4byte gBattleMonForms
@@ -820,7 +820,7 @@ _08077E54:
movs r1, 0x50
adds r2, r4, 0
bl CreateSprite
- ldr r3, _08077E9C @ =gUnknown_2023D44
+ ldr r3, _08077E9C @ =gBattlerSpriteIds
strb r0, [r3]
ldr r4, _08077EA0 @ =gSprites
ldrb r0, [r3]
@@ -851,7 +851,7 @@ _08077E54:
.align 2, 0
_08077E94: .4byte gMultiuseSpriteTemplate
_08077E98: .4byte gUnknown_8239F8C
-_08077E9C: .4byte gUnknown_2023D44
+_08077E9C: .4byte gBattlerSpriteIds
_08077EA0: .4byte gSprites
_08077EA4: .4byte SpriteCallbackDummy
_08077EA8:
@@ -904,7 +904,7 @@ _08077EA8:
adds r1, r4, 0
mov r2, r8
bl CreateSprite
- ldr r4, _08077FD0 @ =gUnknown_2023D44
+ ldr r4, _08077FD0 @ =gBattlerSpriteIds
adds r4, r7, r4
strb r0, [r4]
ldr r5, _08077FD4 @ =gSprites
@@ -958,7 +958,7 @@ _08077EA8:
bl StartSpriteAnim
_08077F84:
ldr r1, _08077FD4 @ =gSprites
- ldr r0, _08077FD0 @ =gUnknown_2023D44
+ ldr r0, _08077FD0 @ =gBattlerSpriteIds
adds r0, r7, r0
ldrb r0, [r0]
lsls r2, r0, 4
@@ -993,7 +993,7 @@ _08077FB4:
_08077FC4: .4byte gBattlerPartyIndexes
_08077FC8: .4byte gPlayerParty
_08077FCC: .4byte gMultiuseSpriteTemplate
-_08077FD0: .4byte gUnknown_2023D44
+_08077FD0: .4byte gBattlerSpriteIds
_08077FD4: .4byte gSprites
_08077FD8: .4byte SpriteCallbackDummy
_08077FDC: .4byte gBattleMonForms
diff --git a/asm/rock.s b/asm/rock.s
new file mode 100644
index 000000000..50687a86e
--- /dev/null
+++ b/asm/rock.s
@@ -0,0 +1,1558 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80B4634
+sub_80B4634: @ 80B4634
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080B46A0 @ =gBattleAnimArgs
+ movs r1, 0x6
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ beq _080B4654
+ ldr r0, _080B46A4 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r2, r5, 0
+ adds r2, 0x20
+ adds r3, r5, 0
+ adds r3, 0x22
+ movs r1, 0
+ bl sub_8076D9C
+_080B4654:
+ 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, _080B46A8 @ =0x0000ffba
+ strh r0, [r5, 0x36]
+ ldrh r0, [r6, 0x4]
+ strh r0, [r5, 0x38]
+ ldr r1, _080B46AC @ =sub_80B46B4
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r1, _080B46B0 @ =sub_8074BE4
+ str r1, [r5, 0x1C]
+ adds r0, r5, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B46A0: .4byte gBattleAnimArgs
+_080B46A4: .4byte gBattleAnimTarget
+_080B46A8: .4byte 0x0000ffba
+_080B46AC: .4byte sub_80B46B4
+_080B46B0: .4byte sub_8074BE4
+ thumb_func_end sub_80B4634
+
+ thumb_func_start sub_80B46B4
+sub_80B46B4: @ 80B46B4
+ 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, _080B46EC @ =0x0000ffe8
+ strh r0, [r4, 0x36]
+ ldr r1, _080B46F0 @ =move_anim_8074EE0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r1, _080B46F4 @ =sub_8074BE4
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B46EC: .4byte 0x0000ffe8
+_080B46F0: .4byte move_anim_8074EE0
+_080B46F4: .4byte sub_8074BE4
+ thumb_func_end sub_80B46B4
+
+ thumb_func_start sub_80B46F8
+sub_80B46F8: @ 80B46F8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080B4720 @ =gBattleAnimArgs
+ ldrb r1, [r4, 0xA]
+ bl StartSpriteAnim
+ adds r0, r5, 0
+ bl AnimateSprite
+ ldr r0, _080B4724 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B4728
+ ldrh r0, [r5, 0x20]
+ ldrh r1, [r4]
+ subs r0, r1
+ b _080B472E
+ .align 2, 0
+_080B4720: .4byte gBattleAnimArgs
+_080B4724: .4byte gBattleAnimAttacker
+_080B4728:
+ ldrh r0, [r4]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+_080B472E:
+ strh r0, [r5, 0x20]
+ ldr r3, _080B4770 @ =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_80754B8
+ strh r4, [r5, 0x34]
+ strh r4, [r5, 0x36]
+ ldr r0, _080B4774 @ =sub_8074D00
+ str r0, [r5, 0x1C]
+ ldr r1, _080B4778 @ =move_anim_8074EE0
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B4770: .4byte gBattleAnimArgs
+_080B4774: .4byte sub_8074D00
+_080B4778: .4byte move_anim_8074EE0
+ thumb_func_end sub_80B46F8
+
+ thumb_func_start sub_80B477C
+sub_80B477C: @ 80B477C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080B4794 @ =gBattleAnimArgs
+ movs r1, 0xC
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080B4798
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075160
+ b _080B47A0
+ .align 2, 0
+_080B4794: .4byte gBattleAnimArgs
+_080B4798:
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075114
+_080B47A0:
+ ldr r1, _080B47BC @ =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, _080B47C0 @ =sub_80B47C4
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B47BC: .4byte gBattleAnimArgs
+_080B47C0: .4byte sub_80B47C4
+ thumb_func_end sub_80B477C
+
+ thumb_func_start sub_80B47C4
+sub_80B47C4: @ 80B47C4
+ 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 _080B480A
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B480A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B47C4
+
+ thumb_func_start do_boulder_dust
+do_boulder_dust: @ 80B4810
+ push {r4-r6,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r5, 0
+ ldr r1, _080B48E4 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B4854
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080B4854:
+ ldr r0, _080B48E8 @ =gBattle_BG1_X
+ strh r5, [r0]
+ ldr r4, _080B48EC @ =gBattle_BG1_Y
+ strh r5, [r4]
+ movs r0, 0x14
+ movs r1, 0
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x16
+ bl SetGpuReg
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080B48F0 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap
+ bl sub_807543C
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080B48F4 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080B48F8 @ =gFile_graphics_battle_anims_sprites_261_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B48B0
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80730C0
+_080B48B0:
+ ldr r0, _080B48FC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ beq _080B48CA
+ ldr r0, _080B4900 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B48CA
+ movs r5, 0x1
+_080B48CA:
+ ldr r0, _080B4904 @ =gTasks
+ lsls r1, r6, 2
+ adds r1, r6
+ lsls r1, 3
+ adds r1, r0
+ strh r5, [r1, 0x8]
+ ldr r0, _080B4908 @ =sub_80B490C
+ str r0, [r1]
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B48E4: .4byte 0x00003f42
+_080B48E8: .4byte gBattle_BG1_X
+_080B48EC: .4byte gBattle_BG1_Y
+_080B48F0: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap
+_080B48F4: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet
+_080B48F8: .4byte gFile_graphics_battle_anims_sprites_261_palette
+_080B48FC: .4byte gBattleAnimArgs
+_080B4900: .4byte gBattleAnimAttacker
+_080B4904: .4byte gTasks
+_080B4908: .4byte sub_80B490C
+ thumb_func_end do_boulder_dust
+
+ thumb_func_start sub_80B490C
+sub_80B490C: @ 80B490C
+ push {r4,r5,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080B4934 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ adds r2, r1, 0
+ cmp r0, 0
+ bne _080B4940
+ ldr r1, _080B4938 @ =gBattle_BG1_X
+ ldr r3, _080B493C @ =0x0000fffa
+ adds r0, r3, 0
+ ldrh r3, [r1]
+ adds r0, r3
+ b _080B4946
+ .align 2, 0
+_080B4934: .4byte gTasks
+_080B4938: .4byte gBattle_BG1_X
+_080B493C: .4byte 0x0000fffa
+_080B4940:
+ ldr r1, _080B4974 @ =gBattle_BG1_X
+ ldrh r0, [r1]
+ adds r0, 0x6
+_080B4946:
+ strh r0, [r1]
+ ldr r1, _080B4978 @ =gBattle_BG1_Y
+ ldr r3, _080B497C @ =0x0000ffff
+ adds r0, r3, 0
+ ldrh r3, [r1]
+ adds r0, r3
+ strh r0, [r1]
+ lsls r1, r5, 2
+ adds r0, r1, r5
+ lsls r0, 3
+ adds r0, r2
+ movs r3, 0x20
+ ldrsh r0, [r0, r3]
+ adds r4, r1, 0
+ cmp r0, 0x4
+ bls _080B4968
+ b _080B4A96
+_080B4968:
+ lsls r0, 2
+ ldr r1, _080B4980 @ =_080B4984
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B4974: .4byte gBattle_BG1_X
+_080B4978: .4byte gBattle_BG1_Y
+_080B497C: .4byte 0x0000ffff
+_080B4980: .4byte _080B4984
+ .align 2, 0
+_080B4984:
+ .4byte _080B4998
+ .4byte _080B49DA
+ .4byte _080B49F4
+ .4byte _080B4A36
+ .4byte _080B4A58
+_080B4998:
+ adds r0, r4, r5
+ lsls r0, 3
+ adds r4, r0, r2
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ movs r5, 0
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080B4A96
+ strh r5, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ adds r1, 0x1
+ strh r1, [r4, 0x1E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x7
+ bne _080B4A96
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ strh r5, [r4, 0x1E]
+ b _080B4A96
+_080B49DA:
+ adds r0, r4, r5
+ lsls r0, 3
+ adds r1, r0, r2
+ ldrh r0, [r1, 0x1E]
+ adds r0, 0x1
+ strh r0, [r1, 0x1E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x65
+ bne _080B4A96
+ movs r0, 0x7
+ strh r0, [r1, 0x1E]
+ b _080B4A4C
+_080B49F4:
+ adds r0, r4, r5
+ lsls r0, 3
+ adds r4, r0, r2
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x1
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080B4A96
+ movs r0, 0
+ strh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0x1E]
+ subs r1, 0x1
+ strh r1, [r4, 0x1E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0x1E
+ ldrsh r1, [r4, r2]
+ cmp r1, 0
+ bne _080B4A96
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ strh r1, [r4, 0x1E]
+ b _080B4A96
+_080B4A36:
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ bl sub_8075358
+ ldr r0, _080B4A54 @ =gTasks
+ adds r1, r4, r5
+ lsls r1, 3
+ adds r1, r0
+_080B4A4C:
+ ldrh r0, [r1, 0x20]
+ adds r0, 0x1
+ strh r0, [r1, 0x20]
+ b _080B4A96
+ .align 2, 0
+_080B4A54: .4byte gTasks
+_080B4A58:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B4A6C
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080B4A6C:
+ ldr r0, _080B4AA0 @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080B4AA4 @ =gBattle_BG1_Y
+ strh r1, [r0]
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080B4A96:
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B4AA0: .4byte gBattle_BG1_X
+_080B4AA4: .4byte gBattle_BG1_Y
+ thumb_func_end sub_80B490C
+
+ thumb_func_start sub_80B4AA8
+sub_80B4AA8: @ 80B4AA8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080B4B24
+ ldr r4, _080B4AEC @ =gBattleAnimArgs
+ movs r2, 0x6
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080B4AF4
+ ldr r0, _080B4AF0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B4AF4
+ 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 _080B4AF8
+ .align 2, 0
+_080B4AEC: .4byte gBattleAnimArgs
+_080B4AF0: .4byte gBattleAnimAttacker
+_080B4AF4:
+ ldr r0, _080B4B18 @ =0x0000ffc0
+ strh r0, [r5, 0x20]
+_080B4AF8:
+ ldr r4, _080B4B1C @ =gBattleAnimArgs
+ ldrh r0, [r4]
+ strh r0, [r5, 0x22]
+ ldr r1, _080B4B20 @ =gUnknown_83E7470
+ 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 _080B4B80
+ .align 2, 0
+_080B4B18: .4byte 0x0000ffc0
+_080B4B1C: .4byte gBattleAnimArgs
+_080B4B20: .4byte gUnknown_83E7470
+_080B4B24:
+ 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 _080B4B6A
+ 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 _080B4B80
+ b _080B4B7C
+_080B4B6A:
+ 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 _080B4B80
+_080B4B7C:
+ ldr r0, _080B4B88 @ =DestroyAnimSprite
+ str r0, [r5, 0x1C]
+_080B4B80:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B4B88: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B4AA8
+
+ thumb_func_start sub_80B4B8C
+sub_80B4B8C: @ 80B4B8C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080B4BC4 @ =gBattleAnimArgs
+ ldrb r1, [r5, 0x8]
+ bl StartSpriteAnim
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075160
+ 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, _080B4BC8 @ =sub_8075590
+ str r0, [r4, 0x1C]
+ ldr r1, _080B4BCC @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B4BC4: .4byte gBattleAnimArgs
+_080B4BC8: .4byte sub_8075590
+_080B4BCC: .4byte DestroyAnimSprite
+ thumb_func_end sub_80B4B8C
+
+ thumb_func_start sub_80B4BD0
+sub_80B4BD0: @ 80B4BD0
+ 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, _080B4C50 @ =gTasks
+ adds r6, r1, r0
+ ldr r5, _080B4C54 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 8
+ movs r1, 0xC0
+ lsls r1, 13
+ adds r0, r1
+ lsrs r7, r0, 16
+ ldr r4, _080B4C58 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ 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 _080B4C40
+ mov r8, r7
+_080B4C40:
+ bl sub_80B4FB8
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x1
+ bne _080B4C5C
+ movs r0, 0x20
+ b _080B4C62
+ .align 2, 0
+_080B4C50: .4byte gTasks
+_080B4C54: .4byte gBattleAnimAttacker
+_080B4C58: .4byte gBattleAnimTarget
+_080B4C5C:
+ lsls r1, r5, 3
+ movs r0, 0x30
+ subs r0, r1
+_080B4C62:
+ 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 _080B4C7A
+ adds r0, 0x7
+_080B4C7A:
+ 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 sub_8073A44
+ adds r4, r0, 0
+ lsls r4, 24
+ asrs r4, 8
+ lsrs r4, 16
+ movs r0, 0x3F
+ bl sub_8073A44
+ 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, _080B4CFC @ =sub_80B4D00
+ 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
+_080B4CFC: .4byte sub_80B4D00
+ thumb_func_end sub_80B4BD0
+
+ thumb_func_start sub_80B4D00
+sub_80B4D00: @ 80B4D00
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080B4D24 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _080B4D1A
+ b _080B4E68
+_080B4D1A:
+ lsls r0, 2
+ ldr r1, _080B4D28 @ =_080B4D2C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B4D24: .4byte gTasks
+_080B4D28: .4byte _080B4D2C
+ .align 2, 0
+_080B4D2C:
+ .4byte _080B4D40
+ .4byte _080B4DA4
+ .4byte _080B4DAC
+ .4byte _080B4E08
+ .4byte _080B4E5A
+_080B4D40:
+ 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, _080B4DA0 @ =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 _080B4D90
+ movs r0, 0x14
+ strh r0, [r4, 0x1E]
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+_080B4D90:
+ ldrh r1, [r4, 0x22]
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x9B
+ bl PlaySE12WithPanning
+ b _080B4E68
+ .align 2, 0
+_080B4DA0: .4byte gSprites
+_080B4DA4:
+ ldrh r0, [r4, 0x1E]
+ subs r0, 0x1
+ strh r0, [r4, 0x1E]
+ b _080B4E4C
+_080B4DAC:
+ ldrh r0, [r4, 0x1A]
+ subs r0, 0x1
+ strh r0, [r4, 0x1A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ beq _080B4DCC
+ 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 _080B4DD6
+_080B4DCC:
+ strh r0, [r4, 0x14]
+ strh r0, [r4, 0x16]
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+_080B4DD6:
+ ldr r2, _080B4E04 @ =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 _080B4E68
+ .align 2, 0
+_080B4E04: .4byte gSprites
+_080B4E08:
+ 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 _080B4E46
+ movs r0, 0
+ strh r0, [r4, 0x1A]
+ adds r0, r4, 0
+ bl sub_80B4E70
+ ldrh r1, [r4, 0x24]
+ ldrh r0, [r4, 0x22]
+ adds r1, r0
+ strh r1, [r4, 0x22]
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xA8
+ bl PlaySE12WithPanning
+_080B4E46:
+ ldrh r0, [r4, 0x18]
+ subs r0, 0x1
+ strh r0, [r4, 0x18]
+_080B4E4C:
+ lsls r0, 16
+ cmp r0, 0
+ bne _080B4E68
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080B4E68
+_080B4E5A:
+ movs r1, 0x1E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080B4E68
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080B4E68:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B4D00
+
+ thumb_func_start sub_80B4E70
+sub_80B4E70: @ 80B4E70
+ 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 _080B4F60
+ lsls r0, 2
+ ldr r1, _080B4E8C @ =_080B4E90
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080B4E8C: .4byte _080B4E90
+ .align 2, 0
+_080B4E90:
+ .4byte _080B4EA4
+ .4byte _080B4EB0
+ .4byte _080B4EB0
+ .4byte _080B4EBC
+ .4byte _080B4EC8
+_080B4EA4:
+ ldr r3, _080B4EAC @ =gUnknown_83E74D8
+ movs r5, 0
+ b _080B4ECC
+ .align 2, 0
+_080B4EAC: .4byte gUnknown_83E74D8
+_080B4EB0:
+ ldr r3, _080B4EB8 @ =gUnknown_83E74F0
+ movs r5, 0x50
+ b _080B4ECC
+ .align 2, 0
+_080B4EB8: .4byte gUnknown_83E74F0
+_080B4EBC:
+ ldr r3, _080B4EC4 @ =gUnknown_83E74F0
+ movs r5, 0x40
+ b _080B4ECC
+ .align 2, 0
+_080B4EC4: .4byte gUnknown_83E74F0
+_080B4EC8:
+ ldr r3, _080B4F68 @ =gUnknown_83E74F0
+ movs r5, 0x30
+_080B4ECC:
+ 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 _080B4F58
+ ldr r1, _080B4F6C @ =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, _080B4F70 @ =0x000003ff
+ adds r1, r5, 0
+ ands r2, r1
+ ldr r1, _080B4F74 @ =0xfffffc00
+ ands r1, r3
+ orrs r1, r2
+ strh r1, [r0, 0x4]
+ bl sub_8075068
+ ldrh r0, [r4, 0x1E]
+ adds r0, 0x1
+ strh r0, [r4, 0x1E]
+_080B4F58:
+ movs r6, 0x20
+ ldrsh r0, [r4, r6]
+ negs r0, r0
+ strh r0, [r4, 0x20]
+_080B4F60:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B4F68: .4byte gUnknown_83E74F0
+_080B4F6C: .4byte gSprites
+_080B4F70: .4byte 0x000003ff
+_080B4F74: .4byte 0xfffffc00
+ thumb_func_end sub_80B4E70
+
+ thumb_func_start sub_80B4F78
+sub_80B4F78: @ 80B4F78
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080B4FAA
+ ldr r0, _080B4FB0 @ =sub_80B4D00
+ bl FindTaskIdByFunc
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xFF
+ beq _080B4FA4
+ ldr r0, _080B4FB4 @ =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]
+_080B4FA4:
+ adds r0, r4, 0
+ bl DestroySprite
+_080B4FAA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B4FB0: .4byte sub_80B4D00
+_080B4FB4: .4byte gTasks
+ thumb_func_end sub_80B4F78
+
+ thumb_func_start sub_80B4FB8
+sub_80B4FB8: @ 80B4FB8
+ push {lr}
+ ldr r0, _080B4FE0 @ =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 _080B4FDA
+ movs r1, 0x1
+_080B4FDA:
+ adds r0, r1, 0
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080B4FE0: .4byte gAnimDisableStructPtr
+ thumb_func_end sub_80B4FB8
+
+ thumb_func_start sub_80B4FE4
+sub_80B4FE4: @ 80B4FE4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080B501C @ =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, _080B5020 @ =sub_80B5024
+ 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
+_080B501C: .4byte gBattleAnimArgs
+_080B5020: .4byte sub_80B5024
+ thumb_func_end sub_80B4FE4
+
+ thumb_func_start sub_80B5024
+sub_80B5024: @ 80B5024
+ 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 _080B505C
+ 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 _080B506E
+ movs r0, 0
+ strh r0, [r2, 0x34]
+ b _080B506E
+_080B505C:
+ ldrh r0, [r2, 0x30]
+ subs r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080B506E
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080B506E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B5024
+
+ thumb_func_start sub_80B5074
+sub_80B5074: @ 80B5074
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080B509C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080B5090
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+_080B5090:
+ adds r0, r4, 0
+ bl sub_8075DF4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B509C: .4byte gBattleAnimAttacker
+ thumb_func_end sub_80B5074
+
+ thumb_func_start sub_80B50A0
+sub_80B50A0: @ 80B50A0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080B50EC @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080B50F0 @ =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, _080B50F4 @ =sub_80B50F8
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B50EC: .4byte gBattleAnimTarget
+_080B50F0: .4byte gBattleAnimArgs
+_080B50F4: .4byte sub_80B50F8
+ thumb_func_end sub_80B50A0
+
+ thumb_func_start sub_80B50F8
+sub_80B50F8: @ 80B50F8
+ 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 _080B5142
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B5142:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B50F8
+
+ thumb_func_start sub_80B5148
+sub_80B5148: @ 80B5148
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, _080B5180 @ =gUnknown_2037EE8
+ ldr r0, [r2]
+ cmp r0, 0x20
+ bgt _080B515C
+ ldr r1, _080B5184 @ =gBattleAnimArgs
+ movs r0, 0
+ strh r0, [r1, 0xE]
+_080B515C:
+ ldr r2, [r2]
+ adds r0, r2, 0
+ subs r0, 0x21
+ cmp r0, 0x20
+ bhi _080B516C
+ ldr r1, _080B5184 @ =gBattleAnimArgs
+ movs r0, 0x1
+ strh r0, [r1, 0xE]
+_080B516C:
+ cmp r2, 0x41
+ ble _080B5176
+ ldr r1, _080B5184 @ =gBattleAnimArgs
+ movs r0, 0x2
+ strh r0, [r1, 0xE]
+_080B5176:
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B5180: .4byte gUnknown_2037EE8
+_080B5184: .4byte gBattleAnimArgs
+ thumb_func_end sub_80B5148
+
+ thumb_func_start sub_80B5188
+sub_80B5188: @ 80B5188
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080B51E4 @ =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 _080B51AA
+ movs r0, 0
+ bl sub_8075458
+ movs r0, 0xC8
+ strh r0, [r5, 0xA]
+_080B51AA:
+ ldr r4, _080B51E8 @ =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 _080B51D6
+ movs r0, 0x1
+ bl sub_8075458
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080B51D6:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B51E4: .4byte gTasks
+_080B51E8: .4byte gBattle_BG3_Y
+ thumb_func_end sub_80B5188
+
+ thumb_func_start sub_80B51EC
+sub_80B51EC: @ 80B51EC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080B5258 @ =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 _080B5218
+ movs r0, 0
+ bl sub_8075458
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ ldr r0, _080B525C @ =gBattle_BG3_Y
+ ldrh r0, [r0]
+ strh r0, [r4, 0xC]
+_080B5218:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x50
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0xA]
+ ldr r6, _080B525C @ =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, _080B5260 @ =gBattleAnimArgs
+ movs r2, 0xE
+ ldrsh r1, [r0, r2]
+ ldr r0, _080B5264 @ =0x00000fff
+ cmp r1, r0
+ bne _080B5250
+ movs r0, 0
+ strh r0, [r6]
+ movs r0, 0x1
+ bl sub_8075458
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080B5250:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080B5258: .4byte gTasks
+_080B525C: .4byte gBattle_BG3_Y
+_080B5260: .4byte gBattleAnimArgs
+_080B5264: .4byte 0x00000fff
+ thumb_func_end sub_80B51EC
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom6.s b/asm/rom6.s
deleted file mode 100644
index 2ac2cc0a4..000000000
--- a/asm/rom6.s
+++ /dev/null
@@ -1,459 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start npc_before_player_of_type
-npc_before_player_of_type: @ 80C97A8
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _080C97E8 @ =gUnknown_2039A04
- adds r1, r4, 0x2
- adds r0, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- bl PlayerGetZCoord
- strb r0, [r4, 0x4]
- ldrh r0, [r4]
- ldrh r1, [r4, 0x2]
- ldrb r2, [r4, 0x4]
- bl GetFieldObjectIdByXYZ
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C97EC @ =gMapObjects
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r2, r1, r2
- ldrb r0, [r2, 0x5]
- cmp r0, r5
- bne _080C97F4
- ldr r1, _080C97F0 @ =gSpecialVar_LastTalked
- ldrb r0, [r2, 0x8]
- strh r0, [r1]
- movs r0, 0x1
- b _080C97F6
- .align 2, 0
-_080C97E8: .4byte gUnknown_2039A04
-_080C97EC: .4byte gMapObjects
-_080C97F0: .4byte gSpecialVar_LastTalked
-_080C97F4:
- movs r0, 0
-_080C97F6:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end npc_before_player_of_type
-
- thumb_func_start oei_task_add
-oei_task_add: @ 80C97FC
- push {lr}
- ldr r0, _080C9818 @ =gUnknown_2039A04
- adds r1, r0, 0x2
- bl GetXYCoordsOneStepInFrontOfPlayer
- ldr r0, _080C981C @ =task08_080C9820
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080C9818: .4byte gUnknown_2039A04
-_080C981C: .4byte task08_080C9820
- thumb_func_end oei_task_add
-
- thumb_func_start task08_080C9820
-task08_080C9820: @ 80C9820
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- bl ScriptContext2_Enable
- ldr r1, _080C9874 @ =gPlayerAvatar
- movs r0, 0x1
- strb r0, [r1, 0x6]
- ldrb r1, [r1, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C9878 @ =gMapObjects
- adds r4, r0, r1
- adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
- lsls r0, 24
- cmp r0, 0
- beq _080C9856
- adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- lsls r0, 24
- cmp r0, 0
- beq _080C98A2
-_080C9856:
- ldr r0, _080C987C @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x5
- bne _080C9888
- movs r0, 0x3B
- bl FieldEffectStart
- ldr r0, _080C9880 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080C9884 @ =sub_80C98FC
- b _080C98A0
- .align 2, 0
-_080C9874: .4byte gPlayerAvatar
-_080C9878: .4byte gMapObjects
-_080C987C: .4byte gMapHeader
-_080C9880: .4byte gTasks
-_080C9884: .4byte sub_80C98FC
-_080C9888:
- bl sub_805CB70
- adds r0, r4, 0
- movs r1, 0x45
- bl sub_8063CA4
- ldr r0, _080C98A8 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _080C98AC @ =sub_80C98B0
-_080C98A0:
- str r0, [r1]
-_080C98A2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C98A8: .4byte gTasks
-_080C98AC: .4byte sub_80C98B0
- thumb_func_end task08_080C9820
-
- thumb_func_start sub_80C98B0
-sub_80C98B0: @ 80C98B0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080C98EC @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C98F0 @ =gMapObjects
- adds r0, r1
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C98E4
- movs r0, 0x3B
- bl FieldEffectStart
- ldr r0, _080C98F4 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080C98F8 @ =sub_80C98FC
- str r0, [r1]
-_080C98E4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C98EC: .4byte gPlayerAvatar
-_080C98F0: .4byte gMapObjects
-_080C98F4: .4byte gTasks
-_080C98F8: .4byte sub_80C98FC
- thumb_func_end sub_80C98B0
-
- thumb_func_start sub_80C98FC
-sub_80C98FC: @ 80C98FC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0x6
- bl FieldEffectActiveListContains
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080C9980
- bl player_get_direction_lower_nybble
- ldr r6, _080C9988 @ =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r6, 0x4]
- cmp r0, 0x1
- bne _080C9922
- str r4, [r6, 0x8]
-_080C9922:
- ldr r1, [r6, 0x4]
- cmp r1, 0x2
- bne _080C992C
- movs r0, 0x1
- str r0, [r6, 0x8]
-_080C992C:
- cmp r1, 0x3
- bne _080C9934
- movs r0, 0x2
- str r0, [r6, 0x8]
-_080C9934:
- cmp r1, 0x4
- bne _080C993C
- movs r0, 0x3
- str r0, [r6, 0x8]
-_080C993C:
- ldr r5, _080C998C @ =gPlayerAvatar
- ldrb r0, [r5, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _080C9990 @ =gMapObjects
- adds r4, r0
- bl GetPlayerAvatarGraphicsIdByCurrentState
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805F060
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C9994 @ =gSprites
- adds r0, r1
- ldrb r1, [r6, 0x8]
- bl StartSpriteAnim
- movs r0, 0x6
- bl FieldEffectActiveListRemove
- ldr r1, _080C9998 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, _080C999C @ =sub_80C99A0
- str r1, [r0]
-_080C9980:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C9988: .4byte gFieldEffectArguments
-_080C998C: .4byte gPlayerAvatar
-_080C9990: .4byte gMapObjects
-_080C9994: .4byte gSprites
-_080C9998: .4byte gTasks
-_080C999C: .4byte sub_80C99A0
- thumb_func_end sub_80C98FC
-
- thumb_func_start sub_80C99A0
-sub_80C99A0: @ 80C99A0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080C99D0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x18]
- lsls r1, 16
- ldrh r0, [r0, 0x1A]
- orrs r1, r0
- bl _call_via_r1
- ldr r1, _080C99D4 @ =gPlayerAvatar
- movs r0, 0
- strb r0, [r1, 0x6]
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C99D0: .4byte gTasks
-_080C99D4: .4byte gPlayerAvatar
- thumb_func_end sub_80C99A0
-
- thumb_func_start SetUpFieldMove_RockSmash
-SetUpFieldMove_RockSmash: @ 80C99D8
- push {lr}
- movs r0, 0x60
- bl npc_before_player_of_type
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080C99EC
- movs r0, 0
- b _080C99FA
-_080C99EC:
- ldr r1, _080C9A00 @ =gFieldCallback2
- ldr r0, _080C9A04 @ =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, _080C9A08 @ =gPostMenuFieldCallback
- ldr r0, _080C9A0C @ =sub_80C9A10
- str r0, [r1]
- movs r0, 0x1
-_080C99FA:
- pop {r1}
- bx r1
- .align 2, 0
-_080C9A00: .4byte gFieldCallback2
-_080C9A04: .4byte FieldCallback_PrepareFadeInFromMenu
-_080C9A08: .4byte gPostMenuFieldCallback
-_080C9A0C: .4byte sub_80C9A10
- thumb_func_end SetUpFieldMove_RockSmash
-
- thumb_func_start sub_80C9A10
-sub_80C9A10: @ 80C9A10
- push {lr}
- bl GetCursorSelectionMonId
- ldr r1, _080C9A28 @ =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- ldr r0, _080C9A2C @ =gUnknown_81BE064
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .align 2, 0
-_080C9A28: .4byte gFieldEffectArguments
-_080C9A2C: .4byte gUnknown_81BE064
- thumb_func_end sub_80C9A10
-
- thumb_func_start oei_rocksmash
-oei_rocksmash: @ 80C9A30
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C9A58 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _080C9A5C @ =sub_80C9A60
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0x13
- bl IncrementGameStat
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080C9A58: .4byte gTasks
-_080C9A5C: .4byte sub_80C9A60
- thumb_func_end oei_rocksmash
-
- thumb_func_start sub_80C9A60
-sub_80C9A60: @ 80C9A60
- push {lr}
- movs r0, 0x7C
- bl PlaySE
- movs r0, 0x25
- bl FieldEffectActiveListRemove
- bl EnableBothScriptContexts
- pop {r0}
- bx r0
- thumb_func_end sub_80C9A60
-
- thumb_func_start SetUpFieldMove_Dig
-SetUpFieldMove_Dig: @ 80C9A78
- push {lr}
- bl sub_80A1B8C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080C9A8A
- movs r0, 0
- b _080C9A98
-_080C9A8A:
- ldr r1, _080C9A9C @ =gFieldCallback2
- ldr r0, _080C9AA0 @ =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, _080C9AA4 @ =gPostMenuFieldCallback
- ldr r0, _080C9AA8 @ =hm2_dig
- str r0, [r1]
- movs r0, 0x1
-_080C9A98:
- pop {r1}
- bx r1
- .align 2, 0
-_080C9A9C: .4byte gFieldCallback2
-_080C9AA0: .4byte FieldCallback_PrepareFadeInFromMenu
-_080C9AA4: .4byte gPostMenuFieldCallback
-_080C9AA8: .4byte hm2_dig
- thumb_func_end SetUpFieldMove_Dig
-
- thumb_func_start hm2_dig
-hm2_dig: @ 80C9AAC
- push {lr}
- bl sub_8054D70
- movs r0, 0x26
- bl FieldEffectStart
- bl GetCursorSelectionMonId
- ldr r1, _080C9AC8 @ =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080C9AC8: .4byte gFieldEffectArguments
- thumb_func_end hm2_dig
-
- thumb_func_start sub_80C9ACC
-sub_80C9ACC: @ 80C9ACC
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C9AF4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _080C9AF8 @ =sub_80C9AFC
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0x1
- bl SetPlayerAvatarTransitionFlags
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080C9AF4: .4byte gTasks
-_080C9AF8: .4byte sub_80C9AFC
- thumb_func_end sub_80C9ACC
-
- thumb_func_start sub_80C9AFC
-sub_80C9AFC: @ 80C9AFC
- push {lr}
- movs r0, 0x26
- bl FieldEffectActiveListRemove
- ldr r0, _080C9B24 @ =sub_80A1C44
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C9B28 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_080C9B24: .4byte sub_80A1C44
-_080C9B28: .4byte gTasks
- thumb_func_end sub_80C9AFC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/safari_zone.s b/asm/safari_zone.s
deleted file mode 100644
index 48103dc9c..000000000
--- a/asm/safari_zone.s
+++ /dev/null
@@ -1,167 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start GetSafariZoneFlag
-GetSafariZoneFlag: @ 80A0E90
- push {lr}
- movs r0, 0x80
- lsls r0, 4
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GetSafariZoneFlag
-
- thumb_func_start sub_80A0EA4
-sub_80A0EA4: @ 80A0EA4
- push {lr}
- movs r0, 0x80
- lsls r0, 4
- bl FlagSet
- pop {r0}
- bx r0
- thumb_func_end sub_80A0EA4
-
- thumb_func_start ResetSafariZoneFlag
-ResetSafariZoneFlag: @ 80A0EB4
- push {lr}
- movs r0, 0x80
- lsls r0, 4
- bl FlagClear
- pop {r0}
- bx r0
- thumb_func_end ResetSafariZoneFlag
-
- thumb_func_start sub_80A0EC4
-sub_80A0EC4: @ 80A0EC4
- push {lr}
- movs r0, 0x11
- bl IncrementGameStat
- bl sub_80A0EA4
- ldr r1, _080A0EE4 @ =gUnknown_2039994
- movs r0, 0x1E
- strb r0, [r1]
- ldr r1, _080A0EE8 @ =gUnknown_2039996
- movs r2, 0x96
- lsls r2, 2
- adds r0, r2, 0
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080A0EE4: .4byte gUnknown_2039994
-_080A0EE8: .4byte gUnknown_2039996
- thumb_func_end sub_80A0EC4
-
- thumb_func_start sub_80A0EEC
-sub_80A0EEC: @ 80A0EEC
- push {lr}
- bl ResetSafariZoneFlag
- ldr r1, _080A0F04 @ =gUnknown_2039994
- movs r0, 0
- strb r0, [r1]
- ldr r1, _080A0F08 @ =gUnknown_2039996
- movs r0, 0
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080A0F04: .4byte gUnknown_2039994
-_080A0F08: .4byte gUnknown_2039996
- thumb_func_end sub_80A0EEC
-
- thumb_func_start sub_80A0F0C
-sub_80A0F0C: @ 80A0F0C
- push {lr}
- bl GetSafariZoneFlag
- cmp r0, 0
- beq _080A0F24
- ldr r1, _080A0F28 @ =gUnknown_2039996
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _080A0F2C
-_080A0F24:
- movs r0, 0
- b _080A0F34
- .align 2, 0
-_080A0F28: .4byte gUnknown_2039996
-_080A0F2C:
- ldr r0, _080A0F38 @ =gUnknown_81BFBC5
- bl ScriptContext1_SetupScript
- movs r0, 0x1
-_080A0F34:
- pop {r1}
- bx r1
- .align 2, 0
-_080A0F38: .4byte gUnknown_81BFBC5
- thumb_func_end sub_80A0F0C
-
- thumb_func_start sub_80A0F3C
-sub_80A0F3C: @ 80A0F3C
- push {lr}
- ldr r0, _080A0F48 @ =gUnknown_81BFBAA
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .align 2, 0
-_080A0F48: .4byte gUnknown_81BFBAA
- thumb_func_end sub_80A0F3C
-
- thumb_func_start sub_80A0F4C
-sub_80A0F4C: @ 80A0F4C
- push {lr}
- ldr r0, _080A0F60 @ =gUnknown_2039994
- ldrb r0, [r0]
- cmp r0, 0
- beq _080A0F68
- ldr r0, _080A0F64 @ =CB2_ReturnToField
- bl SetMainCallback2
- b _080A0FB0
- .align 2, 0
-_080A0F60: .4byte gUnknown_2039994
-_080A0F64: .4byte CB2_ReturnToField
-_080A0F68:
- ldr r0, _080A0F88 @ =gUnknown_2023E8A
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _080A0F9C
- ldr r0, _080A0F8C @ =gUnknown_81BFB87
- bl ScriptContext2_RunNewScript
- bl warp_in
- ldr r1, _080A0F90 @ =gFieldCallback
- ldr r0, _080A0F94 @ =sub_807E3EC
- str r0, [r1]
- ldr r0, _080A0F98 @ =sub_805671C
- bl SetMainCallback2
- b _080A0FB0
- .align 2, 0
-_080A0F88: .4byte gUnknown_2023E8A
-_080A0F8C: .4byte gUnknown_81BFB87
-_080A0F90: .4byte gFieldCallback
-_080A0F94: .4byte sub_807E3EC
-_080A0F98: .4byte sub_805671C
-_080A0F9C:
- cmp r0, 0x7
- bne _080A0FB0
- ldr r0, _080A0FB4 @ =gUnknown_81BFBD7
- bl ScriptContext1_SetupScript
- bl ScriptContext1_Stop
- ldr r0, _080A0FB8 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_080A0FB0:
- pop {r0}
- bx r0
- .align 2, 0
-_080A0FB4: .4byte gUnknown_81BFBD7
-_080A0FB8: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_80A0F4C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/save_failed_screen.s b/asm/save_failed_screen.s
index cbb07e4c7..09503af6a 100644
--- a/asm/save_failed_screen.s
+++ b/asm/save_failed_screen.s
@@ -73,7 +73,7 @@ _080F516C:
ldr r1, _080F5188 @ =0x0000ffff
movs r2, 0x80
bl m4aMPlayVolumeControl
- bl sub_813BB38
+ bl SaveCallbacks
ldr r1, _080F518C @ =gUnknown_203AB50
movs r0, 0x1
strb r0, [r1]
@@ -83,9 +83,9 @@ _080F5184: .4byte gMPlayInfo_BGM
_080F5188: .4byte 0x0000ffff
_080F518C: .4byte gUnknown_203AB50
_080F5190:
- bl sub_813BBAC
- bl sub_813BB74
- bl sub_813BBC8
+ bl SaveMapTiles
+ bl SaveMapGPURegs
+ bl SaveMapTextColors
bl sub_80F52EC
movs r0, 0
movs r1, 0
@@ -197,7 +197,7 @@ _080F5298:
movs r0, 0
movs r1, 0
bl SetGpuReg
- bl sub_813BC2C
+ bl RestoreMapTiles
bl sub_80F52EC
ldr r1, _080F52B0 @ =gUnknown_203AB50
movs r0, 0x8
@@ -211,9 +211,9 @@ _080F52B4:
movs r2, 0x80
lsls r2, 1
bl m4aMPlayVolumeControl
- bl sub_813BC48
- bl sub_813BBF4
- bl sub_813BBDC
+ bl RestoreMapTextColors
+ bl RestoreGPURegs
+ bl RestoreCallbacks
ldr r0, _080F52E4 @ =gUnknown_3005430
movs r1, 0
str r1, [r0]
@@ -259,7 +259,7 @@ _080F5314: .4byte 0x05000200
thumb_func_start sub_80F5318
sub_80F5318: @ 80F5318
push {lr}
- ldr r0, _080F532C @ =gUnknown_201F800
+ ldr r0, _080F532C @ =gDecompressionBuffer + 0x3800
ldr r1, _080F5330 @ =0x0600f800
movs r2, 0xA0
lsls r2, 3
@@ -268,14 +268,14 @@ sub_80F5318: @ 80F5318
pop {r0}
bx r0
.align 2, 0
-_080F532C: .4byte gUnknown_201F800
+_080F532C: .4byte gDecompressionBuffer + 0x3800
_080F5330: .4byte 0x0600f800
thumb_func_end sub_80F5318
thumb_func_start sub_80F5334
sub_80F5334: @ 80F5334
push {lr}
- ldr r0, _080F5348 @ =gUnknown_201C020
+ ldr r0, _080F5348 @ =gDecompressionBuffer + 0x020
ldr r1, _080F534C @ =0x0600c020
movs r2, 0x8C
lsls r2, 6
@@ -284,7 +284,7 @@ sub_80F5334: @ 80F5334
pop {r0}
bx r0
.align 2, 0
-_080F5348: .4byte gUnknown_201C020
+_080F5348: .4byte gDecompressionBuffer + 0x020
_080F534C: .4byte 0x0600c020
thumb_func_end sub_80F5334
@@ -315,7 +315,7 @@ sub_80F5350: @ 80F5350
cmp r0, r2
bge _080F53B6
mov r12, r2
- ldr r1, _080F53C8 @ =gUnknown_201F800
+ ldr r1, _080F53C8 @ =gDecompressionBuffer + 0x3800
mov r10, r1
_080F5386:
mov r4, r9
@@ -354,7 +354,7 @@ _080F53B6:
pop {r0}
bx r0
.align 2, 0
-_080F53C8: .4byte gUnknown_201F800
+_080F53C8: .4byte gDecompressionBuffer + 0x3800
thumb_func_end sub_80F5350
thumb_func_start sub_80F53CC
@@ -404,7 +404,7 @@ sub_80F5404: @ 80F5404
ldr r2, _080F544C @ =0x00001111
adds r0, r2, 0
strh r0, [r1]
- ldr r4, _080F5450 @ =gUnknown_201C020
+ ldr r4, _080F5450 @ =gDecompressionBuffer + 0x020
ldr r2, _080F5454 @ =0x01001180
adds r0, r1, 0
adds r1, r4, 0
@@ -419,7 +419,7 @@ sub_80F5404: @ 80F5404
adds r1, r4, 0
adds r2, r5, 0
movs r3, 0x2
- bl sub_813C078
+ bl HelpSystemRenderText
bl sub_80F5334
add sp, 0x10
pop {r4,r5}
@@ -427,7 +427,7 @@ sub_80F5404: @ 80F5404
bx r0
.align 2, 0
_080F544C: .4byte 0x00001111
-_080F5450: .4byte gUnknown_201C020
+_080F5450: .4byte gDecompressionBuffer + 0x020
_080F5454: .4byte 0x01001180
thumb_func_end sub_80F5404
diff --git a/asm/save_location.s b/asm/save_location.s
deleted file mode 100644
index 8a1031963..000000000
--- a/asm/save_location.s
+++ /dev/null
@@ -1,222 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start IsCurMapInLocationList
-IsCurMapInLocationList: @ 810B6F4
- push {r4,lr}
- adds r2, r0, 0
- ldr r0, _0810B724 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x4
- ldrsb r1, [r0, r1]
- lsls r1, 8
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- lsrs r3, r0, 16
- ldrh r0, [r2]
- ldr r1, _0810B728 @ =0x0000ffff
- cmp r0, r1
- beq _0810B734
- adds r4, r1, 0
- adds r1, r2, 0
-_0810B71A:
- ldrh r0, [r1]
- cmp r0, r3
- bne _0810B72C
- movs r0, 0x1
- b _0810B736
- .align 2, 0
-_0810B724: .4byte gSaveBlock1Ptr
-_0810B728: .4byte 0x0000ffff
-_0810B72C:
- adds r1, 0x2
- ldrh r0, [r1]
- cmp r0, r4
- bne _0810B71A
-_0810B734:
- movs r0, 0
-_0810B736:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end IsCurMapInLocationList
-
- thumb_func_start IsCurMapPokeCenter
-IsCurMapPokeCenter: @ 810B73C
- push {lr}
- ldr r0, _0810B748 @ =gUnknown_845303C
- bl IsCurMapInLocationList
- pop {r1}
- bx r1
- .align 2, 0
-_0810B748: .4byte gUnknown_845303C
- thumb_func_end IsCurMapPokeCenter
-
- thumb_func_start IsCurMapReloadLocation
-IsCurMapReloadLocation: @ 810B74C
- push {lr}
- ldr r0, _0810B758 @ =gUnknown_8453092
- bl IsCurMapInLocationList
- pop {r1}
- bx r1
- .align 2, 0
-_0810B758: .4byte gUnknown_8453092
- thumb_func_end IsCurMapReloadLocation
-
- thumb_func_start sub_810B75C
-sub_810B75C: @ 810B75C
- push {lr}
- ldr r0, _0810B768 @ =gUnknown_8453094
- bl IsCurMapInLocationList
- pop {r1}
- bx r1
- .align 2, 0
-_0810B768: .4byte gUnknown_8453094
- thumb_func_end sub_810B75C
-
- thumb_func_start TrySetPokeCenterWarpStatus
-TrySetPokeCenterWarpStatus: @ 810B76C
- push {lr}
- bl IsCurMapPokeCenter
- cmp r0, 0
- bne _0810B788
- ldr r0, _0810B784 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0xFD
- ands r0, r1
- b _0810B792
- .align 2, 0
-_0810B784: .4byte gSaveBlock2Ptr
-_0810B788:
- ldr r0, _0810B798 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0x2
- orrs r0, r1
-_0810B792:
- strb r0, [r2, 0x9]
- pop {r0}
- bx r0
- .align 2, 0
-_0810B798: .4byte gSaveBlock2Ptr
- thumb_func_end TrySetPokeCenterWarpStatus
-
- thumb_func_start TrySetReloadWarpStatus
-TrySetReloadWarpStatus: @ 810B79C
- push {lr}
- bl IsCurMapReloadLocation
- cmp r0, 0
- bne _0810B7B8
- ldr r0, _0810B7B4 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0xFB
- ands r0, r1
- b _0810B7C2
- .align 2, 0
-_0810B7B4: .4byte gSaveBlock2Ptr
-_0810B7B8:
- ldr r0, _0810B7C8 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0x4
- orrs r0, r1
-_0810B7C2:
- strb r0, [r2, 0x9]
- pop {r0}
- bx r0
- .align 2, 0
-_0810B7C8: .4byte gSaveBlock2Ptr
- thumb_func_end TrySetReloadWarpStatus
-
- thumb_func_start sub_810B7CC
-sub_810B7CC: @ 810B7CC
- push {lr}
- bl sub_810B75C
- cmp r0, 0
- bne _0810B7E8
- ldr r0, _0810B7E4 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0xF7
- ands r0, r1
- b _0810B7F2
- .align 2, 0
-_0810B7E4: .4byte gSaveBlock2Ptr
-_0810B7E8:
- ldr r0, _0810B7F8 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0x8
- orrs r0, r1
-_0810B7F2:
- strb r0, [r2, 0x9]
- pop {r0}
- bx r0
- .align 2, 0
-_0810B7F8: .4byte gSaveBlock2Ptr
- thumb_func_end sub_810B7CC
-
- thumb_func_start TrySetMapSaveWarpStatus
-TrySetMapSaveWarpStatus: @ 810B7FC
- push {lr}
- bl TrySetPokeCenterWarpStatus
- bl TrySetReloadWarpStatus
- bl sub_810B7CC
- pop {r0}
- bx r0
- thumb_func_end TrySetMapSaveWarpStatus
-
- thumb_func_start sub_810B810
-sub_810B810: @ 810B810
- ldr r0, _0810B828 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- adds r2, 0xA8
- ldr r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- movs r1, 0x10
- orrs r0, r1
- movs r1, 0x20
- orrs r0, r1
- str r0, [r2]
- bx lr
- .align 2, 0
-_0810B828: .4byte gSaveBlock2Ptr
- thumb_func_end sub_810B810
-
- thumb_func_start sub_810B82C
-sub_810B82C: @ 810B82C
- ldr r3, _0810B854 @ =gSaveBlock2Ptr
- ldr r2, [r3]
- ldrb r1, [r2, 0x9]
- movs r0, 0x80
- orrs r0, r1
- strb r0, [r2, 0x9]
- ldr r2, [r3]
- adds r2, 0xA8
- ldr r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x8
- orrs r0, r1
- movs r1, 0x80
- lsls r1, 8
- orrs r0, r1
- str r0, [r2]
- bx lr
- .align 2, 0
-_0810B854: .4byte gSaveBlock2Ptr
- thumb_func_end sub_810B82C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/script_menu.s b/asm/script_menu.s
index d917b5d5b..59af843f1 100644
--- a/asm/script_menu.s
+++ b/asm/script_menu.s
@@ -249,7 +249,7 @@ _0809CB02:
lsrs r5, r0, 24
adds r0, r5, 0
movs r1, 0
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
mov r2, r10
cmp r2, 0x1E
beq _0809CB32
@@ -271,7 +271,7 @@ _0809CB32:
movs r1, 0x2
movs r2, 0x8
movs r3, 0x2
- bl sub_810FBE8
+ bl MultichoiceList_PrintItems
b _0809CB7A
.align 2, 0
_0809CB54: .4byte sub_809D6D4
@@ -290,7 +290,7 @@ _0809CB5C:
movs r1, 0x2
movs r2, 0x8
movs r3, 0x2
- bl sub_810FBE8
+ bl MultichoiceList_PrintItems
_0809CB7A:
movs r0, 0xE
str r0, [sp]
@@ -301,14 +301,14 @@ _0809CB7A:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
ldr r0, [sp, 0x18]
adds r1, r7, 0
adds r2, r5, 0
mov r3, r10
bl sub_809CC18
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
_0809CBA2:
add sp, 0x20
pop {r3-r5}
@@ -475,10 +475,10 @@ _0809CCD0:
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0809CCDE
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
b _0809CCE2
_0809CCDE:
- bl ProcessMenuInput
+ bl Menu_ProcessInput
_0809CCE2:
lsls r0, 24
lsrs r4, r0, 24
@@ -562,7 +562,7 @@ _0809CD78:
bl FillWindowPixelBuffer
ldr r4, _0809CDAC @ =gUnknown_83E0738
_0809CD82:
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 22
adds r0, r4
@@ -578,7 +578,7 @@ _0809CD82:
movs r0, 0
movs r1, 0x2
movs r3, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
b _0809CDE0
.align 2, 0
_0809CDAC: .4byte gUnknown_83E0738
@@ -587,7 +587,7 @@ _0809CDB0:
movs r1, 0x11
bl FillWindowPixelBuffer
ldr r4, _0809CDE8 @ =gUnknown_83E0748
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 22
adds r0, r4
@@ -603,7 +603,7 @@ _0809CDB0:
movs r0, 0
movs r1, 0x2
movs r3, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
_0809CDE0:
add sp, 0x10
pop {r4}
@@ -636,7 +636,7 @@ _0809CE08:
lsls r0, 24
cmp r0, 0
bne _0809CE26
- bl sub_80F7858
+ bl DisplayYesNoMenuDefaultYes
adds r0, r4, 0
movs r1, 0x50
bl CreateTask
@@ -822,7 +822,7 @@ _0809CF08:
lsrs r0, 24
strh r0, [r4, 0x14]
movs r1, 0
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
ldrb r0, [r4, 0x14]
lsls r5, 27
lsrs r5, 24
@@ -833,7 +833,7 @@ _0809CF08:
movs r1, 0x1
adds r2, r5, 0
movs r3, 0x10
- bl sub_8110104
+ bl MultichoiceGrid_PrintItems
ldrb r0, [r4, 0x14]
str r5, [sp]
str r7, [sp, 0x4]
@@ -843,9 +843,9 @@ _0809CF08:
movs r1, 0x1
movs r2, 0
movs r3, 0x1
- bl sub_811030C
+ bl MultichoiceGrid_InitCursor
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
_0809CFB8:
movs r0, 0x1
_0809CFBA:
@@ -874,7 +874,7 @@ sub_809CFDC: @ 809CFDC
lsls r0, 3
ldr r1, _0809D018 @ =gTasks+0x8
adds r5, r0, r1
- bl sub_8110650
+ bl Menu_ProcessInputGridLayout
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x2
@@ -914,8 +914,8 @@ _0809D034:
_0809D03C: .4byte gSpecialVar_Result
thumb_func_end sub_809CFDC
- thumb_func_start sp109_CreatePCMenu
-sp109_CreatePCMenu: @ 809D040
+ thumb_func_start ScrSpecial_CreatePCMenu
+ScrSpecial_CreatePCMenu: @ 809D040
push {lr}
ldr r0, _0809D060 @ =sub_809CC98
bl FuncIsActiveTask
@@ -937,7 +937,7 @@ _0809D068:
_0809D06A:
pop {r1}
bx r1
- thumb_func_end sp109_CreatePCMenu
+ thumb_func_end ScrSpecial_CreatePCMenu
thumb_func_start sub_809D070
sub_809D070: @ 809D070
@@ -989,7 +989,7 @@ _0809D0B0:
lsrs r6, r0, 24
adds r0, r6, 0
movs r1, 0
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
ldr r2, _0809D128 @ =gUnknown_8417BD3
movs r0, 0x22
str r0, [sp]
@@ -1050,7 +1050,7 @@ _0809D14C:
lsrs r6, r0, 24
adds r0, r6, 0
movs r1, 0
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
mov r0, r8
bl FlagGet
lsls r0, 24
@@ -1138,14 +1138,14 @@ _0809D1FA:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
mov r1, r9
adds r2, r6, 0
movs r3, 0xFF
bl sub_809CC18
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0xC
pop {r3,r4}
mov r8, r3
@@ -1159,8 +1159,8 @@ _0809D24C: .4byte gStringVar4
_0809D250: .4byte gUnknown_8417BB6
thumb_func_end sub_809D070
- thumb_func_start sub_809D254
-sub_809D254: @ 809D254
+ thumb_func_start ScriptMenu_DisplayPCStartupPrompt
+ScriptMenu_DisplayPCStartupPrompt: @ 809D254
push {lr}
sub sp, 0x10
movs r0, 0
@@ -1178,13 +1178,13 @@ sub_809D254: @ 809D254
movs r0, 0
movs r1, 0x2
movs r3, 0
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
add sp, 0x10
pop {r0}
bx r0
.align 2, 0
_0809D284: .4byte gUnknown_81A508A
- thumb_func_end sub_809D254
+ thumb_func_end ScriptMenu_DisplayPCStartupPrompt
thumb_func_start sub_809D288
sub_809D288: @ 809D288
@@ -1326,9 +1326,9 @@ _0809D31C:
strb r0, [r1, 0x5]
ldrb r0, [r3, 0x12]
movs r1, 0x1
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x1
b _0809D3C2
.align 2, 0
@@ -1613,9 +1613,9 @@ _0809D572:
strh r2, [r1, 0x8]
strh r5, [r1, 0xC]
movs r1, 0x1
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
_0809D5F2:
movs r0, 0x1
_0809D5F4:
@@ -1721,7 +1721,7 @@ sub_809D6B0: @ 809D6B0
bl ClearWindowTilemap
adds r0, r4, 0
movs r1, 0x1
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
adds r0, r4, 0
bl RemoveWindow
pop {r4}
@@ -1859,7 +1859,7 @@ _0809D7B8:
lsrs r7, r0, 24
adds r0, r7, 0
movs r1, 0
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
movs r6, 0
mov r5, r9
subs r5, 0x2
@@ -1946,14 +1946,14 @@ _0809D844:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
mov r1, r9
adds r2, r7, 0
movs r3, 0xFF
bl sub_809CC18
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
_0809D8A8:
add sp, 0xC
pop {r3,r4}
diff --git a/asm/script_movement.s b/asm/script_movement.s
index 826d6d6bd..a2d48d44a 100644
--- a/asm/script_movement.s
+++ b/asm/script_movement.s
@@ -565,7 +565,7 @@ sub_80977F0: @ 80977F0
cmp r0, 0
beq _08097838
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0809786A
@@ -583,7 +583,7 @@ _08097838:
_08097850: .4byte gMapObjects
_08097854:
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
lsls r0, 24
cmp r0, 0
bne _0809786A
diff --git a/asm/script_pokemon_util_80A0058.s b/asm/script_pokemon_util_80A0058.s
index 60f416b48..6b4cdd1a8 100644
--- a/asm/script_pokemon_util_80A0058.s
+++ b/asm/script_pokemon_util_80A0058.s
@@ -411,13 +411,13 @@ _080A0368:
movs r0, 0x1
strh r0, [r1]
_080A036E:
- ldr r0, _080A037C @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _080A037C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
pop {r0}
bx r0
.align 2, 0
_080A0378: .4byte gSpecialVar_Result
-_080A037C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_080A037C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_80A0350
thumb_func_start sub_80A0380
@@ -455,14 +455,14 @@ _080A03B8:
movs r0, 0x1
strh r0, [r1]
_080A03C2:
- ldr r0, _080A03D4 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _080A03D4 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A03D0: .4byte gSpecialVar_Result
-_080A03D4: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_080A03D4: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_80A039C
thumb_func_start sub_80A03D8
diff --git a/asm/script_pokemon_util_80BF8FC.s b/asm/script_pokemon_util_80BF8FC.s
index 26c113dfd..b5ef5f090 100644
--- a/asm/script_pokemon_util_80BF8FC.s
+++ b/asm/script_pokemon_util_80BF8FC.s
@@ -269,7 +269,7 @@ sub_80BFAA8: @ 80BFAA8
mov r6, sp
adds r6, 0x6
strb r0, [r6]
- ldr r1, _080BFBA4 @ =gUnknown_825DEA1
+ ldr r1, _080BFBA4 @ =gPPUpGetMask
adds r0, r5, r1
ldrb r0, [r0]
mov r9, r0
@@ -330,7 +330,7 @@ sub_80BFAA8: @ 80BFAA8
pop {r0}
bx r0
.align 2, 0
-_080BFBA4: .4byte gUnknown_825DEA1
+_080BFBA4: .4byte gPPUpGetMask
thumb_func_end sub_80BFAA8
thumb_func_start sub_80BFBA8
diff --git a/asm/shop.s b/asm/shop.s
index 525fbbc45..c0f4779b7 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -23,7 +23,7 @@ sub_809AAB0: @ 809AAB0
strb r0, [r4, 0x16]
movs r0, 0
strh r0, [r4, 0xC]
- bl sub_80CBE00
+ bl ContextNpcGetTextColor
lsls r0, 24
cmp r0, 0
bne _0809AAF0
@@ -49,7 +49,7 @@ _0809AAF8:
strb r0, [r4]
ldrb r0, [r4]
movs r1, 0
- bl sub_80F7750
+ bl SetStdWindowBorderStyle
movs r0, 0x2
movs r1, 0
bl GetMenuCursorDimensionByFont
@@ -74,7 +74,7 @@ _0809AAF8:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
ldrb r0, [r4]
bl PutWindowTilemap
ldrb r0, [r4]
@@ -194,7 +194,7 @@ sub_809AC10: @ 809AC10
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x2
@@ -211,7 +211,7 @@ sub_809AC10: @ 809AC10
b _0809AC52
_0809AC3C:
ldr r4, _0809AC58 @ =gUnknown_83DF09C
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 21
adds r4, 0x4
@@ -332,7 +332,7 @@ sub_809AD24: @ 809AD24
ldr r4, _0809AD3C @ =gUnknown_2039950
ldrb r0, [r4]
movs r1, 0x2
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl RemoveWindow
pop {r4}
@@ -435,7 +435,7 @@ sub_809ADE4: @ 809ADE4
bl AnimateSprites
bl BuildOamBuffer
bl UpdatePaletteFade
- bl do_scheduled_bg_tilemap_copies_to_vram
+ bl DoScheduledBgTilemapCopiesToVram
pop {r0}
bx r0
thumb_func_end sub_809ADE4
@@ -515,7 +515,7 @@ _0809AEA0: .4byte gTasks
_0809AEA4: .4byte sub_809AE00
_0809AEA8: .4byte sub_809ADE4
_0809AEAC:
- bl sub_80BF768
+ bl SetVBlankHBlankCallbacksToNull
str r4, [sp, 0x8]
movs r1, 0xE0
lsls r1, 19
@@ -523,13 +523,13 @@ _0809AEAC:
add r0, sp, 0x8
bl CpuFastSet
bl ScanlineEffect_Stop
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
bl FreeAllSpritePalettes
bl ResetPaletteFade
bl ResetSpriteData
bl ResetTasks
- bl clear_scheduled_bg_copies_to_vram
- bl sub_80984D8
+ bl ClearScheduledBgCopiesToVram
+ bl ResetItemMenuIconState
bl sub_809AF6C
lsls r0, 24
cmp r0, 0
@@ -572,14 +572,14 @@ _0809AEAC:
ldrb r0, [r0, 0x16]
lsls r0, 28
lsrs r0, 28
- bl sub_813F66C
+ bl BuyMenuInitWindows
bl sub_809B080
b _0809AF5E
.align 2, 0
_0809AF4C: .4byte 0x01000100
_0809AF50: .4byte gUnknown_2039934
_0809AF54:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
cmp r0, 0
bne _0809AF64
@@ -721,7 +721,7 @@ sub_809B080: @ 809B080
movs r0, 0
str r0, [sp]
movs r0, 0x1
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r0, _0809B0B4 @ =gUnknown_2039934
ldrb r1, [r0, 0x16]
movs r0, 0xF
@@ -793,7 +793,7 @@ _0809B118:
movs r1, 0
movs r2, 0xE
movs r3, 0x1E
- bl sub_80F6B08
+ bl SetBgRectPal
b _0809B14E
.align 2, 0
_0809B138: .4byte gUnknown_2039934
@@ -805,10 +805,10 @@ _0809B13C:
movs r1, 0
movs r2, 0xC
movs r3, 0x1E
- bl sub_80F6B08
+ bl SetBgRectPal
_0809B14E:
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
add sp, 0x8
pop {r0}
bx r0
@@ -819,15 +819,15 @@ sub_809B15C: @ 809B15C
push {lr}
bl sub_809B764
bl sub_809BAFC
- bl sub_813F6D0
+ bl BuyMenuDrawMoneyBox
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
pop {r0}
bx r0
thumb_func_end sub_809B15C
@@ -1069,7 +1069,7 @@ _0809B34A:
lsrs r1, 30
movs r0, 0x1
eors r0, r1
- bl sub_8098940
+ bl DestroyItemMenuIcon
movs r0, 0x2
negs r0, r0
cmp r5, r0
@@ -1079,7 +1079,7 @@ _0809B34A:
ldrb r1, [r6, 0x17]
lsls r1, 29
lsrs r1, 30
- bl sub_80988E8
+ bl CreateItemMenuIcon
b _0809B398
.align 2, 0
_0809B384: .4byte gUnknown_8416757
@@ -1089,7 +1089,7 @@ _0809B38C:
ldrb r1, [r6, 0x17]
lsls r1, 29
lsrs r1, 30
- bl sub_80988E8
+ bl CreateItemMenuIcon
_0809B398:
ldr r3, _0809B3D4 @ =gUnknown_2039934
ldrb r2, [r3, 0x17]
@@ -1116,7 +1116,7 @@ _0809B398:
movs r1, 0x2
adds r2, r7, 0
movs r3, 0
- bl sub_813F6F4
+ bl BuyMenuPrint
b _0809B400
.align 2, 0
_0809B3D0: .4byte 0x00000177
@@ -1138,7 +1138,7 @@ _0809B3D8:
movs r1, 0x2
adds r2, r7, 0
movs r3, 0x2
- bl sub_813F6F4
+ bl BuyMenuPrint
_0809B400:
add sp, 0x14
pop {r4-r7}
@@ -1204,7 +1204,7 @@ _0809B45C:
adds r0, r6, 0
movs r1, 0
movs r3, 0x69
- bl sub_813F6F4
+ bl BuyMenuPrint
_0809B480:
add sp, 0x14
pop {r4-r6}
@@ -1251,7 +1251,7 @@ sub_809B494: @ 809B494
movs r1, 0
adds r2, r5, 0
movs r3, 0
- bl sub_813F6F4
+ bl BuyMenuPrint
lsls r0, r7, 16
lsrs r0, 16
bl ItemIdToBattleMoveId
@@ -1273,7 +1273,7 @@ sub_809B494: @ 809B494
movs r1, 0x2
adds r2, r5, 0
movs r3, 0
- bl sub_813F6F4
+ bl BuyMenuPrint
b _0809B55C
.align 2, 0
_0809B514: .4byte gStringVar1
@@ -1294,7 +1294,7 @@ _0809B528:
movs r0, 0x6
movs r1, 0
movs r3, 0
- bl sub_813F6F4
+ bl BuyMenuPrint
ldr r2, _0809B568 @ =gUnknown_8416217
movs r0, 0x10
str r0, [sp]
@@ -1305,7 +1305,7 @@ _0809B528:
movs r0, 0x6
movs r1, 0x2
movs r3, 0
- bl sub_813F6F4
+ bl BuyMenuPrint
_0809B55C:
add sp, 0x14
pop {r4-r7}
@@ -1388,7 +1388,7 @@ _0809B5E0:
movs r0, 0x4
movs r1, 0x2
movs r3, 0x1
- bl sub_813F6F4
+ bl BuyMenuPrint
_0809B5F8:
add sp, 0x14
pop {r4,r5}
@@ -1510,7 +1510,7 @@ _0809B6C4:
movs r2, 0x8
movs r3, 0x58
_0809B6E2:
- bl AddScrollIndicatorArrowPairParametrized
+ bl AddScrollIndicatorArrowPairParameterized
lsls r0, 3
ldrb r2, [r4, 0x17]
movs r1, 0x7
@@ -1542,7 +1542,7 @@ sub_809B6FC: @ 809B6FC
movs r1, 0x98
movs r2, 0x48
movs r3, 0x68
- bl AddScrollIndicatorArrowPairParametrized
+ bl AddScrollIndicatorArrowPairParameterized
lsls r0, 3
ldrb r2, [r4, 0x17]
movs r1, 0x7
@@ -2017,7 +2017,7 @@ _0809BA56:
str r0, [sp]
adds r0, r4, 0
ldr r1, _0809BAF4 @ =SpriteCallbackDummy
- bl AddPseudoFieldObject
+ bl AddPseudoEventObject
lsls r0, 24
lsrs r0, 24
lsls r2, r0, 4
@@ -2134,7 +2134,7 @@ sub_809BB44: @ 809BB44
movs r1, 0
adds r2, r4, 0
movs r3, 0x2
- bl sub_813F6F4
+ bl BuyMenuPrint
add sp, 0x14
pop {r4}
pop {r0}
@@ -2164,13 +2164,13 @@ sub_809BBC0: @ 809BBC0
cmp r0, 0
bne _0809BC8E
ldrb r0, [r5, 0xE]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r4, r0, 0
ldrb r0, [r5, 0xE]
ldr r7, _0809BC08 @ =gUnknown_2039942
subs r2, r7, 0x2
adds r1, r7, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
movs r0, 0x2
negs r0, r0
cmp r4, r0
@@ -2223,7 +2223,7 @@ _0809BC1A:
ldr r1, _0809BC74 @ =gUnknown_8416842
ldr r2, _0809BC78 @ =sub_809BF98
adds r0, r6, 0
- bl sub_813F75C
+ bl BuyMenuDisplayMessage
b _0809BC8E
.align 2, 0
_0809BC70: .4byte gSaveBlock1Ptr
@@ -2236,7 +2236,7 @@ _0809BC7C:
ldr r1, _0809BC98 @ =gUnknown_8416766
ldr r2, _0809BC9C @ =sub_809BCA0
adds r0, r6, 0
- bl sub_813F75C
+ bl BuyMenuDisplayMessage
_0809BC8E:
pop {r4-r7}
pop {r0}
@@ -2259,13 +2259,13 @@ sub_809BCA0: @ 809BCA0
ldr r0, _0809BD40 @ =gTasks+0x8
adds r5, r0
ldrh r0, [r5, 0xA]
- bl sub_809A7DC
+ bl BagGetQuantityByItemId
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
movs r0, 0x1
movs r1, 0
- bl sub_813F7C0
+ bl BuyMenuQuantityBoxThinBorder
ldr r0, _0809BD44 @ =gStringVar1
adds r1, r4, 0
movs r2, 0x1
@@ -2287,15 +2287,15 @@ sub_809BCA0: @ 809BCA0
movs r1, 0x2
adds r2, r6, 0
movs r3, 0
- bl sub_813F6F4
+ bl BuyMenuPrint
strh r4, [r5, 0x2]
movs r0, 0x3
movs r1, 0
- bl sub_813F7A8
+ bl BuyMenuQuantityBoxNormalBorder
adds r0, r7, 0
bl sub_809BB44
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
ldr r0, _0809BD50 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xA4
@@ -2365,7 +2365,7 @@ sub_809BD8C: @ 809BD8C
adds r0, r4, 0x2
ldr r6, _0809BDD0 @ =gUnknown_2039934
ldrh r1, [r6, 0x14]
- bl sub_80BF848
+ bl AdjustQuantityAccordingToDPadInput
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2396,10 +2396,10 @@ _0809BDD4:
bl sub_809B73C
movs r0, 0x3
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x1
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x3
bl ClearWindowTilemap
movs r0, 0x1
@@ -2423,7 +2423,7 @@ _0809BDD4:
ldr r1, _0809BE4C @ =gUnknown_841678E
ldr r2, _0809BE50 @ =sub_809BE90
adds r0, r5, 0
- bl sub_813F75C
+ bl BuyMenuDisplayMessage
b _0809BE88
.align 2, 0
_0809BE3C: .4byte gMain
@@ -2442,10 +2442,10 @@ _0809BE54:
bl sub_809B73C
movs r0, 0x3
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x1
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x3
bl ClearWindowTilemap
movs r0, 0x1
@@ -2464,7 +2464,7 @@ sub_809BE90: @ 809BE90
lsls r0, 24
lsrs r0, 24
ldr r1, _0809BEA0 @ =gUnknown_83DF0B4
- bl sub_813F7D8
+ bl BuyMenuConfirmPurchase
pop {r0}
bx r0
.align 2, 0
@@ -2493,7 +2493,7 @@ sub_809BEA4: @ 809BEA4
ldr r1, _0809BEEC @ =gUnknown_84167E7
ldr r2, _0809BEF0 @ =sub_809BF0C
adds r0, r5, 0
- bl sub_813F75C
+ bl BuyMenuDisplayMessage
adds r0, r5, 0
bl nullsub_52
ldrh r0, [r4, 0xA]
@@ -2509,7 +2509,7 @@ _0809BEF4:
ldr r1, _0809BF04 @ =gUnknown_8416861
ldr r2, _0809BF08 @ =sub_809BF98
adds r0, r5, 0
- bl sub_813F75C
+ bl BuyMenuDisplayMessage
_0809BEFE:
pop {r4,r5}
pop {r0}
@@ -2601,7 +2601,7 @@ sub_809BF98: @ 809BF98
adds r4, r5, r6
movs r0, 0x2
movs r1, 0
- bl sub_810F260
+ bl ClearDialogWindowAndFrameToTransparent
ldrb r0, [r4, 0xE]
movs r1, 0x1
bl sub_809B57C
@@ -2621,7 +2621,7 @@ sub_809BF98: @ 809BF98
bl PutWindowTilemap
_0809BFDC:
movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
+ bl ScheduleBgCopyTilemapToVram
bl sub_809B690
adds r0, r6, 0
subs r0, 0x8
@@ -2691,7 +2691,7 @@ sub_809C04C: @ 809C04C
ldrb r0, [r2, 0xE]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_809B604
ldr r0, _0809C090 @ =CB2_ReturnToField
bl SetMainCallback2
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 028457d86..e5aa4ff05 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -249,7 +249,7 @@ sub_8141AD8: @ 8141AD8
lsls r4, 24
asrs r4, 24
adds r0, r4, 0
- bl MoveMenuCursorNoWrapAround
+ bl Menu_MoveCursorNoWrapAround
bl sub_814112C
movs r1, 0x1
str r1, [r0, 0x28]
@@ -269,7 +269,7 @@ sub_8141B18: @ 8141B18
ldr r0, [r4, 0x28]
cmp r0, 0
beq _08141B2E
- bl sub_81100E8
+ bl DestroyYesNoMenu
movs r0, 0
str r0, [r4, 0x28]
_08141B2E:
diff --git a/asm/smokescreen.s b/asm/smokescreen.s
index 1768a5ea4..2a350c911 100644
--- a/asm/smokescreen.s
+++ b/asm/smokescreen.s
@@ -26,9 +26,9 @@ sub_804A76C: @ 804A76C
cmp r0, r1
bne _0804A79E
adds r0, r5, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _0804A8AC @ =gUnknown_8250994
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
_0804A79E:
ldr r0, _0804A8B0 @ =sub_804A8C0
bl CreateInvisibleSpriteWithCallback
diff --git a/asm/ss_anne.s b/asm/ss_anne.s
deleted file mode 100644
index 429645f3e..000000000
--- a/asm/ss_anne.s
+++ /dev/null
@@ -1,408 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_815D334
-sub_815D334: @ 815D334
- push {lr}
- movs r0, 0xF9
- bl PlaySE
- ldr r0, _0815D35C @ =sub_815D364
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0815D360 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x32
- strh r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_0815D35C: .4byte sub_815D364
-_0815D360: .4byte gTasks
- thumb_func_end sub_815D334
-
- thumb_func_start sub_815D364
-sub_815D364: @ 815D364
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r4, r1, 3
- ldr r5, _0815D39C @ =gTasks+0x8
- adds r1, r4, r5
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bne _0815D394
- ldr r0, _0815D3A0 @ =gUnknown_8479C58
- bl LoadSpriteSheets
- bl sub_815D498
- adds r0, r5, 0
- subs r0, 0x8
- adds r0, r4, r0
- ldr r1, _0815D3A4 @ =sub_815D3A8
- str r1, [r0]
-_0815D394:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0815D39C: .4byte gTasks+0x8
-_0815D3A0: .4byte gUnknown_8479C58
-_0815D3A4: .4byte sub_815D3A8
- thumb_func_end sub_815D364
-
- thumb_func_start sub_815D3A8
-sub_815D3A8: @ 815D3A8
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 3
- ldr r7, _0815D424 @ =gTasks+0x8
- adds r5, r6, r7
- ldrh r1, [r5, 0x2]
- adds r1, 0x1
- strh r1, [r5, 0x2]
- ldrh r0, [r5, 0x4]
- adds r0, 0x1
- strh r0, [r5, 0x4]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x46
- bne _0815D3D6
- movs r0, 0
- strh r0, [r5, 0x2]
- bl sub_815D5A4
-_0815D3D6:
- ldr r0, _0815D428 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0x1
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0815D42C @ =gMapObjects
- adds r0, r1
- ldr r2, _0815D430 @ =gSprites
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r2
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r1, 0x78
- negs r1, r1
- cmp r0, r1
- bge _0815D438
- movs r0, 0xF9
- bl PlaySE
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0815D434 @ =sub_815D454
- str r1, [r0]
- b _0815D44A
- .align 2, 0
-_0815D424: .4byte gTasks+0x8
-_0815D428: .4byte gSaveBlock1Ptr
-_0815D42C: .4byte gMapObjects
-_0815D430: .4byte gSprites
-_0815D434: .4byte sub_815D454
-_0815D438:
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- movs r1, 0x5
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r4, 0x24]
-_0815D44A:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_815D3A8
-
- thumb_func_start sub_815D454
-sub_815D454: @ 815D454
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- ldr r0, _0815D490 @ =gTasks+0x8
- adds r1, r0
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x28
- bne _0815D48A
- movs r0, 0xFA
- lsls r0, 4
- bl FreeSpriteTilesByTag
- ldr r0, _0815D494 @ =0x00000fa1
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_0815D48A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815D490: .4byte gTasks+0x8
-_0815D494: .4byte 0x00000fa1
- thumb_func_end sub_815D454
-
- thumb_func_start sub_815D498
-sub_815D498: @ 815D498
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0815D508 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0x1
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0815D50C @ =gMapObjects
- adds r0, r1
- ldr r4, _0815D510 @ =gSprites
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x24]
- ldrh r0, [r0, 0x20]
- adds r1, r0
- adds r1, 0x50
- ldr r0, _0815D514 @ =gUnknown_8479C88
- lsls r1, 16
- asrs r1, 16
- movs r2, 0x6D
- movs r3, 0xFF
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- movs r2, 0x8
- orrs r0, r2
- movs r2, 0xF
- ands r0, r2
- movs r2, 0xA0
- orrs r0, r2
- strb r0, [r1, 0x5]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815D508: .4byte gSaveBlock1Ptr
-_0815D50C: .4byte gMapObjects
-_0815D510: .4byte gSprites
-_0815D514: .4byte gUnknown_8479C88
- thumb_func_end sub_815D498
-
- thumb_func_start sub_815D518
-sub_815D518: @ 815D518
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r0, _0815D598 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0x1
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0815D59C @ =gMapObjects
- adds r0, r1
- ldr r2, _0815D5A0 @ =gSprites
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- ldrh r0, [r0, 0x20]
- adds r1, r0
- adds r1, 0x50
- strh r1, [r4, 0x20]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x6
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x15
- bgt _0815D56A
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_0815D56A:
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r1, 0x6
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r1, 0x12
- negs r1, r1
- cmp r0, r1
- bge _0815D58E
- adds r0, r4, 0
- bl DestroySprite
-_0815D58E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815D598: .4byte gSaveBlock1Ptr
-_0815D59C: .4byte gMapObjects
-_0815D5A0: .4byte gSprites
- thumb_func_end sub_815D518
-
- thumb_func_start sub_815D5A4
-sub_815D5A4: @ 815D5A4
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0815D614 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0x1
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0815D618 @ =gMapObjects
- adds r0, r1
- ldr r4, _0815D61C @ =gSprites
- ldrb r0, [r0, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r1, 0x24]
- ldrh r1, [r1, 0x20]
- adds r0, r1
- adds r0, 0x31
- lsls r0, 16
- asrs r1, r0, 16
- movs r0, 0x20
- negs r0, r0
- cmp r1, r0
- blt _0815D60C
- ldr r0, _0815D620 @ =gUnknown_8479CC0
- movs r2, 0x4E
- movs r3, 0x8
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _0815D60C
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r2, [r0, 0x5]
- movs r1, 0xF
- ands r1, r2
- movs r2, 0xA0
- orrs r1, r2
- strb r1, [r0, 0x5]
-_0815D60C:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815D614: .4byte gSaveBlock1Ptr
-_0815D618: .4byte gMapObjects
-_0815D61C: .4byte gSprites
-_0815D620: .4byte gUnknown_8479CC0
- thumb_func_end sub_815D5A4
-
- thumb_func_start sub_815D624
-sub_815D624: @ 815D624
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bge _0815D638
- adds r0, 0x3
-_0815D638:
- asrs r0, 2
- strh r0, [r2, 0x24]
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0815D650
- adds r0, r2, 0
- bl DestroySprite
-_0815D650:
- pop {r0}
- bx r0
- thumb_func_end sub_815D624
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 3fc08e41a..f7ea9a712 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -11,7 +11,7 @@ sub_806ED54: @ 806ED54
ldr r0, _0806ED6C @ =gUnknown_20370F5
movs r1, 0
strb r1, [r0]
- bl is_c1_link_related_active
+ bl IsUpdateLinkStateCBActive
cmp r0, 0x1
bne _0806ED70
bl sub_806EE34
@@ -160,7 +160,7 @@ sub_806EE7C: @ 806EE7C
movs r1, 0
bl DrawStdWindowFrame
ldr r0, _0806EEFC @ =gStringVar1
- ldr r1, _0806EF00 @ =gUnknown_2039996
+ ldr r1, _0806EF00 @ =gSafariZoneStepCounter
ldrh r1, [r1]
movs r2, 0x1
movs r3, 0x3
@@ -172,7 +172,7 @@ sub_806EE7C: @ 806EE7C
movs r3, 0x3
bl ConvertIntToDecimalStringN
ldr r0, _0806EF08 @ =gStringVar3
- ldr r1, _0806EF0C @ =gUnknown_2039994
+ ldr r1, _0806EF0C @ =gNumSafariBalls
ldrb r1, [r1]
movs r2, 0x1
movs r3, 0x2
@@ -203,10 +203,10 @@ sub_806EE7C: @ 806EE7C
_0806EEF4: .4byte gUnknown_2037101
_0806EEF8: .4byte gUnknown_83A738C
_0806EEFC: .4byte gStringVar1
-_0806EF00: .4byte gUnknown_2039996
+_0806EF00: .4byte gSafariZoneStepCounter
_0806EF04: .4byte gStringVar2
_0806EF08: .4byte gStringVar3
-_0806EF0C: .4byte gUnknown_2039994
+_0806EF0C: .4byte gNumSafariBalls
_0806EF10: .4byte gStringVar4
_0806EF14: .4byte gUnknown_84162A9
thumb_func_end sub_806EE7C
@@ -220,7 +220,7 @@ sub_806EF18: @ 806EF18
ldr r4, _0806EF40 @ =gUnknown_2037101
ldrb r0, [r4]
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
movs r1, 0x2
bl CopyWindowToVram
@@ -438,9 +438,9 @@ _0806F0C4:
movs r1, 0x2
movs r2, 0
movs r3, 0
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
strb r0, [r4]
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
cmp r0, 0
bne _0806F118
@@ -634,7 +634,7 @@ _0806F254: .4byte gUnknown_20370F0
thumb_func_start ShowStartMenu
ShowStartMenu: @ 806F258
push {lr}
- bl is_c1_link_related_active
+ bl IsUpdateLinkStateCBActive
cmp r0, 0
bne _0806F26E
bl player_bitmagic
@@ -663,10 +663,10 @@ sub_806F280: @ 806F280
bl PlaySE
movs r0, 0x1
negs r0, r0
- bl MoveMenuCursor
+ bl Menu_MoveCursor
ldr r4, _0806F360 @ =gUnknown_20370F4
strb r0, [r4]
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
cmp r0, 0
bne _0806F2D2
@@ -698,10 +698,10 @@ _0806F2D2:
movs r0, 0x5
bl PlaySE
movs r0, 0x1
- bl MoveMenuCursor
+ bl Menu_MoveCursor
ldr r4, _0806F360 @ =gUnknown_20370F4
strb r0, [r4]
- bl sub_80BF708
+ bl MenuHelpers_LinkSomething
lsls r0, 24
cmp r0, 0
bne _0806F320
@@ -911,14 +911,14 @@ _0806F498:
bl PlayRainStoppingSoundEffect
bl sub_806EF18
bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _0806F4B0 @ =UseFameCheckerFromMenu
+ ldr r0, _0806F4B0 @ =ReturnToBagFromKeyItem
bl SetMainCallback2
movs r0, 0x1
_0806F4AC:
pop {r1}
bx r1
.align 2, 0
-_0806F4B0: .4byte UseFameCheckerFromMenu
+_0806F4B0: .4byte ReturnToBagFromKeyItem
thumb_func_end sub_806F480
thumb_func_start sub_806F4B4
@@ -1009,7 +1009,7 @@ sub_806F554: @ 806F554
bl sub_806EF18
bl sub_80F7998
bl sub_806FEA0
- bl sub_80A0F3C
+ bl SafariZoneRetirePrompt
movs r0, 0x1
pop {r1}
bx r1
@@ -1080,7 +1080,7 @@ sub_806F5C8: @ 806F5C8
_0806F5E4:
movs r0, 0
movs r1, 0
- bl sub_810F260
+ bl ClearDialogWindowAndFrameToTransparent
bl sub_806F14C
bl sub_812B248
ldr r1, _0806F5FC @ =gUnknown_20370F0
@@ -1093,7 +1093,7 @@ _0806F600: .4byte sub_806F280
_0806F604:
movs r0, 0
movs r1, 0x1
- bl sub_810F260
+ bl ClearDialogWindowAndFrameToTransparent
bl sub_80696C0
bl ScriptContext2_Disable
bl sub_812B248
@@ -1127,7 +1127,7 @@ _0806F644: .4byte gUnknown_3000FA9
thumb_func_start sub_806F648
sub_806F648: @ 806F648
push {lr}
- bl sub_80F6CBC
+ bl RunTextPrinters_CheckPrinter0Active
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
@@ -1179,7 +1179,7 @@ sub_806F69C: @ 806F69C
movs r1, 0x1
bl sub_80F7768
movs r0, 0x1
- bl sub_80F6E08
+ bl AddTextPrinterForMessage
ldr r1, _0806F6CC @ =gUnknown_3000FA9
movs r0, 0x1
strb r0, [r1]
@@ -1329,7 +1329,7 @@ sub_806F7A8: @ 806F7A8
lsrs r0, 24
movs r1, 0
bl ClearStdWindowAndFrame
- bl remove_start_menu_window_maybe
+ bl RemoveStartMenuWindow
movs r0, 0
bl sub_8112EDC
bl sub_806FCF4
@@ -1347,7 +1347,7 @@ _0806F7D8: .4byte sub_806F7DC
thumb_func_start sub_806F7DC
sub_806F7DC: @ 806F7DC
push {lr}
- bl sub_80F7858
+ bl DisplayYesNoMenuDefaultYes
ldr r1, _0806F7F0 @ =gUnknown_3000FA4
ldr r0, _0806F7F4 @ =sub_806F7F8
str r0, [r1]
@@ -1451,7 +1451,7 @@ _0806F8A0: .4byte sub_806F8A4
thumb_func_start sub_806F8A4
sub_806F8A4: @ 806F8A4
push {lr}
- bl sub_80F7858
+ bl DisplayYesNoMenuDefaultYes
ldr r1, _0806F8B8 @ =gUnknown_3000FA4
ldr r0, _0806F8BC @ =sub_806F8DC
str r0, [r1]
@@ -1466,7 +1466,7 @@ _0806F8BC: .4byte sub_806F8DC
thumb_func_start sub_806F8C0
sub_806F8C0: @ 806F8C0
push {lr}
- bl sub_80F7880
+ bl DisplayYesNoMenuDefaultNo
ldr r1, _0806F8D4 @ =gUnknown_3000FA4
ldr r0, _0806F8D8 @ =sub_806F8DC
str r0, [r1]
@@ -1596,7 +1596,7 @@ _0806F9B4: .4byte sub_806FA04
thumb_func_start sub_806F9B8
sub_806F9B8: @ 806F9B8
push {lr}
- bl sub_80F6CBC
+ bl RunTextPrinters_CheckPrinter0Active
lsls r0, 16
cmp r0, 0
bne _0806F9D0
@@ -1638,7 +1638,7 @@ _0806FA00:
thumb_func_start sub_806FA04
sub_806FA04: @ 806FA04
push {lr}
- bl sub_80F6CBC
+ bl RunTextPrinters_CheckPrinter0Active
lsls r0, 16
cmp r0, 0
bne _0806FA1C
@@ -1781,7 +1781,7 @@ _0806FB12:
movs r0, 0
movs r1, 0x8
movs r2, 0xF0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
b _0806FB64
.align 2, 0
_0806FB34: .4byte gUnknown_83A73B8
@@ -1908,7 +1908,7 @@ _0806FC14:
movs r0, 0
movs r1, 0x2
movs r3, 0xFF
- bl AddTextPrinterParametrized
+ bl AddTextPrinterParameterized2
movs r0, 0
movs r1, 0x8
movs r2, 0xF
@@ -2014,12 +2014,12 @@ sub_806FCF4: @ 806FCF4
ldr r4, _0806FE5C @ =0x0000021d
adds r1, r4, 0
movs r2, 0xD0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
ldrb r0, [r5]
movs r1, 0
adds r2, r4, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r4, _0806FE60 @ =gStringVar4
movs r0, 0x3
adds r1, r4, 0
@@ -2043,7 +2043,7 @@ sub_806FCF4: @ 806FCF4
str r4, [sp, 0x8]
movs r1, 0x2
movs r3, 0
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x2
adds r1, r4, 0
adds r2, r6, 0
@@ -2058,7 +2058,7 @@ sub_806FCF4: @ 806FCF4
movs r1, 0
movs r2, 0x2
movs r3, 0xE
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0
adds r1, r4, 0
movs r2, 0x2
@@ -2077,7 +2077,7 @@ sub_806FCF4: @ 806FCF4
movs r1, 0
movs r2, 0x2
movs r3, 0x1C
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x4
adds r1, r4, 0
movs r2, 0x2
@@ -2091,7 +2091,7 @@ sub_806FCF4: @ 806FCF4
movs r1, 0
movs r2, 0x3C
movs r3, 0x1C
- bl box_print
+ bl AddTextPrinterParameterized3
movs r7, 0x2A
ldr r0, _0806FE78 @ =0x00000829
bl FlagGet
@@ -2108,7 +2108,7 @@ sub_806FCF4: @ 806FCF4
movs r1, 0
movs r2, 0x2
movs r3, 0x2A
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x1
adds r1, r4, 0
movs r2, 0x2
@@ -2121,7 +2121,7 @@ sub_806FCF4: @ 806FCF4
movs r1, 0
movs r2, 0x3C
movs r3, 0x2A
- bl box_print
+ bl AddTextPrinterParameterized3
movs r7, 0x38
_0806FE0A:
ldrb r0, [r5]
@@ -2133,7 +2133,7 @@ _0806FE0A:
movs r1, 0
movs r2, 0x2
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
movs r0, 0x2
adds r1, r4, 0
movs r2, 0x2
@@ -2146,7 +2146,7 @@ _0806FE0A:
movs r1, 0
movs r2, 0x3C
adds r3, r7, 0
- bl box_print
+ bl AddTextPrinterParameterized3
ldrb r0, [r5]
movs r1, 0x2
bl CopyWindowToVram
@@ -2198,7 +2198,7 @@ sub_806FEA0: @ 806FEA0
lsrs r0, 24
movs r1, 0x1
bl ClearStdWindowAndFrame
- bl remove_start_menu_window_maybe
+ bl RemoveStartMenuWindow
bl sub_80696C0
bl ScriptContext2_Disable
pop {r0}
diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s
deleted file mode 100644
index 482b5da60..000000000
--- a/asm/teachy_tv.s
+++ /dev/null
@@ -1,2912 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_815AB94
-sub_815AB94: @ 815AB94
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_815AB94
-
- thumb_func_start sub_815ABB0
-sub_815ABB0: @ 815ABB0
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_815ABB0
-
- thumb_func_start sub_815ABC4
-sub_815ABC4: @ 815ABC4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- ldr r3, _0815ABF4 @ =gTeachyTV_StaticResources
- movs r4, 0
- strb r2, [r3, 0x4]
- str r1, [r3]
- cmp r2, 0
- bne _0815ABE0
- movs r0, 0
- strh r4, [r3, 0x6]
- strh r4, [r3, 0x8]
- strb r0, [r3, 0x5]
-_0815ABE0:
- cmp r2, 0x1
- bne _0815ABE6
- strb r4, [r3, 0x4]
-_0815ABE6:
- ldr r0, _0815ABF8 @ =sub_815AC2C
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815ABF4: .4byte gTeachyTV_StaticResources
-_0815ABF8: .4byte sub_815AC2C
- thumb_func_end sub_815ABC4
-
- thumb_func_start CB2_ReturnToTeachyTV
-CB2_ReturnToTeachyTV: @ 815ABFC
- push {lr}
- ldr r1, _0815AC10 @ =gTeachyTV_StaticResources
- ldrb r0, [r1, 0x4]
- cmp r0, 0x1
- bne _0815AC14
- ldr r1, [r1]
- movs r0, 0x1
- bl sub_815ABC4
- b _0815AC1C
- .align 2, 0
-_0815AC10: .4byte gTeachyTV_StaticResources
-_0815AC14:
- ldr r1, [r1]
- movs r0, 0x2
- bl sub_815ABC4
-_0815AC1C:
- pop {r0}
- bx r0
- thumb_func_end CB2_ReturnToTeachyTV
-
- thumb_func_start sub_815AC20
-sub_815AC20: @ 815AC20
- ldr r1, _0815AC28 @ =gTeachyTV_StaticResources
- movs r0, 0x1
- strb r0, [r1, 0x4]
- bx lr
- .align 2, 0
-_0815AC28: .4byte gTeachyTV_StaticResources
- thumb_func_end sub_815AC20
-
- thumb_func_start sub_815AC2C
-sub_815AC2C: @ 815AC2C
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _0815AC44 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r6, r0, r1
- ldrb r5, [r6]
- cmp r5, 0
- beq _0815AC48
- cmp r5, 0x1
- beq _0815AC9C
- b _0815AD6E
- .align 2, 0
-_0815AC44: .4byte gMain
-_0815AC48:
- ldr r4, _0815AC90 @ =gUnknown_203F450
- ldr r0, _0815AC94 @ =0x00004008
- bl AllocZeroed
- str r0, [r4]
- str r5, [r0]
- ldr r1, _0815AC98 @ =0x00004006
- adds r0, r1
- strb r5, [r0]
- ldr r0, [r4]
- adds r1, 0x1
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
- bl sub_80BF768
- bl clear_scheduled_bg_copies_to_vram
- bl ScanlineEffect_Stop
- bl FreeAllSpritePalettes
- bl ResetPaletteFade
- bl ResetSpriteData
- bl ResetTasks
- bl sub_815AD88
- bl sub_815AE38
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- b _0815AD6E
- .align 2, 0
-_0815AC90: .4byte gUnknown_203F450
-_0815AC94: .4byte 0x00004008
-_0815AC98: .4byte 0x00004006
-_0815AC9C:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0815AD6E
- bl sub_815AEB8
- bl sub_815AFEC
- ldr r0, _0815ACE0 @ =gTeachyTV_StaticResources
- ldrb r0, [r0, 0x4]
- cmp r0, 0x2
- bne _0815ACEC
- ldr r0, _0815ACE4 @ =sub_815BA54
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_815B014
- ldr r2, _0815ACE8 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0xA]
- adds r0, r5, 0
- bl sub_815B118
- b _0815AD26
- .align 2, 0
-_0815ACE0: .4byte gTeachyTV_StaticResources
-_0815ACE4: .4byte sub_815BA54
-_0815ACE8: .4byte gTasks
-_0815ACEC:
- ldr r0, _0815AD78 @ =sub_815B2C0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_815AEE8
- ldr r1, _0815AD7C @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r1
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x8]
- bl sub_815B014
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
- bl sub_815AF5C
- movs r0, 0xAD
- lsls r0, 1
- bl PlayNewMapMusic
- bl sub_815B094
-_0815AD26:
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x9
- bl sub_812B1E0
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _0815AD80 @ =sub_815ABB0
- bl SetVBlankCallback
- ldr r0, _0815AD84 @ =sub_815AB94
- bl SetMainCallback2
-_0815AD6E:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815AD78: .4byte sub_815B2C0
-_0815AD7C: .4byte gTasks
-_0815AD80: .4byte sub_815ABB0
-_0815AD84: .4byte sub_815AB94
- thumb_func_end sub_815AC2C
-
- thumb_func_start sub_815AD88
-sub_815AD88: @ 815AD88
- push {r4,lr}
- bl sub_80BF7C8
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _0815AE20 @ =gUnknown_84792E0
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r4, _0815AE24 @ =gUnknown_203F450
- ldr r1, [r4]
- adds r1, 0x4
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, _0815AE28 @ =0x00001004
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, _0815AE2C @ =0x00002004
- adds r1, r0
- movs r0, 0x3
- bl SetBgTilemapBuffer
- movs r1, 0xC1
- lsls r1, 6
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x3
- movs r2, 0x2
- bl ChangeBgX
- movs r1, 0xA0
- lsls r1, 6
- movs r0, 0x3
- movs r2, 0x1
- bl ChangeBgY
- ldr r0, [r4]
- ldr r1, _0815AE30 @ =0x00004004
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- ldr r1, _0815AE34 @ =0x00004005
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815AE20: .4byte gUnknown_84792E0
-_0815AE24: .4byte gUnknown_203F450
-_0815AE28: .4byte 0x00001004
-_0815AE2C: .4byte 0x00002004
-_0815AE30: .4byte 0x00004004
-_0815AE34: .4byte 0x00004005
- thumb_func_end sub_815AD88
-
- thumb_func_start sub_815AE38
-sub_815AE38: @ 815AE38
- push {r4,lr}
- sub sp, 0x8
- movs r4, 0
- add r0, sp, 0x4
- strh r4, [r0]
- bl reset_temp_tile_data_buffers
- ldr r1, _0815AE98 @ =gUnknown_8E86240
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r0, _0815AE9C @ =gUnknown_8E86BE8
- ldr r4, _0815AEA0 @ =gUnknown_203F450
- ldr r1, [r4]
- adds r1, 0x4
- bl LZDecompressWram
- ldr r0, _0815AEA4 @ =gUnknown_8E86D6C
- ldr r1, [r4]
- ldr r2, _0815AEA8 @ =0x00003004
- adds r1, r2
- bl LZDecompressWram
- ldr r0, _0815AEAC @ =gUnknown_8E86F98
- movs r1, 0
- movs r2, 0x80
- bl LoadCompressedPalette
- add r0, sp, 0x4
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- ldr r0, _0815AEB0 @ =gUnknown_83A5348
- bl LoadSpritePalette
- ldr r0, [r4]
- ldr r1, _0815AEB4 @ =0x00002004
- adds r0, r1
- bl sub_815BD80
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815AE98: .4byte gUnknown_8E86240
-_0815AE9C: .4byte gUnknown_8E86BE8
-_0815AEA0: .4byte gUnknown_203F450
-_0815AEA4: .4byte gUnknown_8E86D6C
-_0815AEA8: .4byte 0x00003004
-_0815AEAC: .4byte gUnknown_8E86F98
-_0815AEB0: .4byte gUnknown_83A5348
-_0815AEB4: .4byte 0x00002004
- thumb_func_end sub_815AE38
-
- thumb_func_start sub_815AEB8
-sub_815AEB8: @ 815AEB8
- push {lr}
- ldr r0, _0815AEE4 @ =gUnknown_84792F0
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r0, 0
- movs r1, 0xCC
- bl FillWindowPixelBuffer
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r0}
- bx r0
- .align 2, 0
-_0815AEE4: .4byte gUnknown_84792F0
- thumb_func_end sub_815AEB8
-
- thumb_func_start sub_815AEE8
-sub_815AEE8: @ 815AEE8
- push {r4,r5,lr}
- ldr r4, _0815AF48 @ =gMultiuseListMenuTemplate
- adds r1, r4, 0
- ldr r0, _0815AF4C @ =gUnknown_8479368
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- movs r0, 0x1
- strb r0, [r4, 0x10]
- ldr r0, _0815AF50 @ =sub_815AFD8
- str r0, [r4, 0x4]
- movs r0, 0xB6
- lsls r0, 1
- movs r1, 0x1
- bl CheckBagHasItem
- lsls r0, 24
- cmp r0, 0
- bne _0815AF30
- ldr r0, _0815AF54 @ =gUnknown_8479340
- str r0, [r4]
- movs r0, 0x5
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- ldrb r2, [r4, 0x14]
- lsls r1, r2, 28
- lsrs r1, 28
- adds r1, 0x8
- movs r0, 0xF
- ands r1, r0
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x14]
-_0815AF30:
- ldr r0, _0815AF58 @ =gTeachyTV_StaticResources
- ldrh r1, [r0, 0x6]
- ldrh r2, [r0, 0x8]
- adds r0, r4, 0
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0815AF48: .4byte gMultiuseListMenuTemplate
-_0815AF4C: .4byte gUnknown_8479368
-_0815AF50: .4byte sub_815AFD8
-_0815AF54: .4byte gUnknown_8479340
-_0815AF58: .4byte gTeachyTV_StaticResources
- thumb_func_end sub_815AEE8
-
- thumb_func_start sub_815AF5C
-sub_815AF5C: @ 815AF5C
- push {lr}
- movs r0, 0xB6
- lsls r0, 1
- movs r1, 0x1
- bl CheckBagHasItem
- lsls r0, 24
- cmp r0, 0
- bne _0815AF84
- ldr r0, _0815AF7C @ =gUnknown_203F450
- ldr r0, [r0]
- ldr r1, _0815AF80 @ =0x00004007
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
- b _0815AF96
- .align 2, 0
-_0815AF7C: .4byte gUnknown_203F450
-_0815AF80: .4byte 0x00004007
-_0815AF84:
- ldr r0, _0815AF9C @ =gUnknown_8479380
- ldr r1, _0815AFA0 @ =gUnknown_203F44A
- bl AddScrollIndicatorArrowPair
- ldr r1, _0815AFA4 @ =gUnknown_203F450
- ldr r1, [r1]
- ldr r2, _0815AFA8 @ =0x00004007
- adds r1, r2
- strb r0, [r1]
-_0815AF96:
- pop {r0}
- bx r0
- .align 2, 0
-_0815AF9C: .4byte gUnknown_8479380
-_0815AFA0: .4byte gUnknown_203F44A
-_0815AFA4: .4byte gUnknown_203F450
-_0815AFA8: .4byte 0x00004007
- thumb_func_end sub_815AF5C
-
- thumb_func_start sub_815AFAC
-sub_815AFAC: @ 815AFAC
- push {r4,lr}
- ldr r4, _0815AFD0 @ =gUnknown_203F450
- ldr r0, [r4]
- ldr r2, _0815AFD4 @ =0x00004007
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0815AFCA
- bl RemoveScrollIndicatorArrowPair
- ldr r0, [r4]
- ldr r1, _0815AFD4 @ =0x00004007
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
-_0815AFCA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815AFD0: .4byte gUnknown_203F450
-_0815AFD4: .4byte 0x00004007
- thumb_func_end sub_815AFAC
-
- thumb_func_start sub_815AFD8
-sub_815AFD8: @ 815AFD8
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- beq _0815AFE8
- movs r0, 0x5
- bl PlaySE
-_0815AFE8:
- pop {r0}
- bx r0
- thumb_func_end sub_815AFD8
-
- thumb_func_start sub_815AFEC
-sub_815AFEC: @ 815AFEC
- push {lr}
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x1F
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0xCC
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x5
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_815AFEC
-
- thumb_func_start sub_815B014
-sub_815B014: @ 815B014
- push {lr}
- sub sp, 0x4
- ldr r1, _0815B054 @ =SpriteCallbackDummy
- movs r0, 0x8
- str r0, [sp]
- movs r0, 0x5A
- movs r2, 0
- movs r3, 0
- bl AddPseudoFieldObject
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0815B058 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r3, [r2, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- movs r3, 0x8
- orrs r1, r3
- strb r1, [r2, 0x5]
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r3, 0x4
- orrs r1, r3
- strb r1, [r2]
- add sp, 0x4
- pop {r1}
- bx r1
- .align 2, 0
-_0815B054: .4byte SpriteCallbackDummy
-_0815B058: .4byte gSprites
- thumb_func_end sub_815B014
-
- thumb_func_start sub_815B05C
-sub_815B05C: @ 815B05C
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r5, _0815B090 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r5
- strh r1, [r0, 0x24]
- strh r2, [r0, 0x26]
- adds r4, r0, 0
- adds r4, 0x3E
- ldrb r2, [r4]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r4]
- adds r1, r3, 0
- bl StartSpriteAnim
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B090: .4byte gSprites
- thumb_func_end sub_815B05C
-
- thumb_func_start sub_815B094
-sub_815B094: @ 815B094
- push {lr}
- ldr r1, _0815B0AC @ =0x00000c64
- movs r0, 0x44
- bl SetGpuReg
- ldr r1, _0815B0B0 @ =0x00001cd4
- movs r0, 0x40
- bl SetGpuReg
- pop {r0}
- bx r0
- .align 2, 0
-_0815B0AC: .4byte 0x00000c64
-_0815B0B0: .4byte 0x00001cd4
- thumb_func_end sub_815B094
-
- thumb_func_start sub_815B0B4
-sub_815B0B4: @ 815B0B4
- push {lr}
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_815B0B4
-
- thumb_func_start sub_815B0CC
-sub_815B0CC: @ 815B0CC
- push {r4-r7,lr}
- movs r0, 0x2
- bl GetBgTilemapBuffer
- adds r7, r0, 0
- movs r0, 0x1
-_0815B0D8:
- movs r4, 0x2
- lsls r5, r0, 5
- adds r6, r0, 0x1
-_0815B0DE:
- bl Random
- adds r2, r5, r4
- lsls r2, 1
- adds r2, r7
- movs r1, 0x3
- ands r1, r0
- lsls r1, 10
- ldr r3, _0815B114 @ =0x0000301f
- adds r0, r3, 0
- adds r1, r0
- strh r1, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1B
- bls _0815B0DE
- lsls r0, r6, 24
- lsrs r0, 24
- cmp r0, 0xC
- bls _0815B0D8
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B114: .4byte 0x0000301f
- thumb_func_end sub_815B0CC
-
- thumb_func_start sub_815B118
-sub_815B118: @ 815B118
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _0815B190 @ =gTasks+0x8
- adds r5, r0, r1
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0815B194 @ =gSprites
- adds r7, r0, r1
- movs r0, 0x1
- bl ClearWindowTilemap
- bl sub_815B0B4
- ldr r0, _0815B198 @ =gTeachyTV_StaticResources
- ldrb r0, [r0, 0x5]
- cmp r0, 0
- blt _0815B1B8
- cmp r0, 0x3
- bgt _0815B1A8
- ldrb r0, [r5, 0x2]
- movs r1, 0x78
- movs r2, 0x38
- movs r3, 0
- bl sub_815B05C
- movs r4, 0xC0
- lsls r4, 6
- movs r0, 0x3
- adds r1, r4, 0
- movs r2, 0x1
- bl ChangeBgX
- movs r0, 0x3
- adds r1, r4, 0
- movs r2, 0x2
- bl ChangeBgY
- ldr r2, _0815B19C @ =gUnknown_203F450
- ldr r1, [r2]
- ldr r0, _0815B1A0 @ =0x00004004
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x3
- strb r0, [r1]
- ldr r1, [r2]
- ldr r0, _0815B1A4 @ =0x00004005
- adds r1, r0
- ldrb r0, [r1]
- subs r0, 0x3
- strb r0, [r1]
- b _0815B1B8
- .align 2, 0
-_0815B190: .4byte gTasks+0x8
-_0815B194: .4byte gSprites
-_0815B198: .4byte gTeachyTV_StaticResources
-_0815B19C: .4byte gUnknown_203F450
-_0815B1A0: .4byte 0x00004004
-_0815B1A4: .4byte 0x00004005
-_0815B1A8:
- cmp r0, 0x5
- bgt _0815B1B8
- ldrb r0, [r5, 0x2]
- movs r1, 0x78
- movs r2, 0x38
- movs r3, 0
- bl sub_815B05C
-_0815B1B8:
- movs r0, 0
- strh r0, [r5, 0x8]
- strh r0, [r5, 0xA]
- movs r0, 0x24
- ldrsh r1, [r7, r0]
- movs r0, 0x26
- ldrsh r2, [r7, r0]
- movs r0, 0x1
- str r0, [sp]
- adds r0, r6, 0
- movs r3, 0
- bl sub_815BAA0
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_815B118
-
- thumb_func_start sub_815B1DC
-sub_815B1DC: @ 815B1DC
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- ldr r2, _0815B21C @ =gTextFlags
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- bl GetTextSpeedSetting
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0xC
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r4, 0
- bl AddTextPrinterParametrized
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B21C: .4byte gTextFlags
- thumb_func_end sub_815B1DC
-
- thumb_func_start sub_815B220
-sub_815B220: @ 815B220
- push {r4,lr}
- ldr r4, _0815B238 @ =gUnknown_203F450
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
- bl FreeAllWindowBuffers
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B238: .4byte gUnknown_203F450
- thumb_func_end sub_815B220
-
- thumb_func_start sub_815B23C
-sub_815B23C: @ 815B23C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0815B26C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0815B270 @ =sub_815B274
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B26C: .4byte gTasks
-_0815B270: .4byte sub_815B274
- thumb_func_end sub_815B23C
-
- thumb_func_start sub_815B274
-sub_815B274: @ 815B274
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0815B298 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0815B2B6
- ldr r0, _0815B29C @ =gUnknown_203F450
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0
- beq _0815B2A0
- bl SetMainCallback2
- b _0815B2AC
- .align 2, 0
-_0815B298: .4byte gPaletteFade
-_0815B29C: .4byte gUnknown_203F450
-_0815B2A0:
- bl sub_8055DC4
- ldr r0, _0815B2BC @ =gTeachyTV_StaticResources
- ldr r0, [r0]
- bl SetMainCallback2
-_0815B2AC:
- bl sub_815B220
- adds r0, r4, 0
- bl DestroyTask
-_0815B2B6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B2BC: .4byte gTeachyTV_StaticResources
- thumb_func_end sub_815B274
-
- thumb_func_start sub_815B2C0
-sub_815B2C0: @ 815B2C0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _0815B31C @ =gTasks+0x8
- adds r6, r0, r1
- bl sub_815B0CC
- ldr r0, _0815B320 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0815B37A
- ldrb r0, [r6]
- bl ListMenuHandleInput
- adds r5, r0, 0
- ldrb r0, [r6]
- ldr r4, _0815B324 @ =gUnknown_203F44A
- adds r2, r4, 0x2
- adds r1, r4, 0
- bl get_coro_args_x18_x1A
- ldr r0, _0815B328 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0815B30A
- subs r0, r4, 0x6
- ldr r1, [r0]
- ldr r0, _0815B32C @ =UseFameCheckerFromMenu
- cmp r1, r0
- bne _0815B330
-_0815B30A:
- movs r0, 0x2
- negs r0, r0
- cmp r5, r0
- beq _0815B330
- adds r0, 0x1
- cmp r5, r0
- bne _0815B33E
- b _0815B37A
- .align 2, 0
-_0815B31C: .4byte gTasks+0x8
-_0815B320: .4byte gPaletteFade
-_0815B324: .4byte gUnknown_203F44A
-_0815B328: .4byte gMain
-_0815B32C: .4byte UseFameCheckerFromMenu
-_0815B330:
- movs r0, 0x5
- bl PlaySE
- adds r0, r7, 0
- bl sub_815B23C
- b _0815B37A
-_0815B33E:
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0815B380 @ =gTeachyTV_StaticResources
- movs r4, 0
- strb r5, [r2, 0x5]
- ldrb r0, [r6]
- adds r1, r2, 0x6
- adds r2, 0x8
- bl DestroyListMenu
- bl sub_815B0B4
- movs r0, 0x1
- bl ClearWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- bl sub_815AFAC
- strh r4, [r6, 0x6]
- strh r4, [r6, 0x4]
- ldr r1, _0815B384 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, _0815B388 @ =sub_815B4EC
- str r1, [r0]
-_0815B37A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B380: .4byte gTeachyTV_StaticResources
-_0815B384: .4byte gTasks
-_0815B388: .4byte sub_815B4EC
- thumb_func_end sub_815B2C0
-
- thumb_func_start sub_815B38C
-sub_815B38C: @ 815B38C
- push {r4,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0815B3F8 @ =gTasks+0x8
- adds r4, r1, r0
- bl sub_815B0CC
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3F
- ble _0815B3F0
- ldr r0, _0815B3FC @ =gUnknown_203F450
- ldr r1, [r0]
- ldr r0, _0815B400 @ =0x00003004
- adds r1, r0
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- ldrb r0, [r4, 0x2]
- movs r1, 0x8
- movs r2, 0x38
- movs r3, 0x7
- bl sub_815B05C
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0
- strh r0, [r4, 0x4]
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
- movs r0, 0x88
- lsls r0, 1
- bl PlayNewMapMusic
-_0815B3F0:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B3F8: .4byte gTasks+0x8
-_0815B3FC: .4byte gUnknown_203F450
-_0815B400: .4byte 0x00003004
- thumb_func_end sub_815B38C
-
- thumb_func_start sub_815B404
-sub_815B404: @ 815B404
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0815B450 @ =gTasks+0x8
- adds r4, r1, r0
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x86
- bne _0815B448
- movs r0, 0x1A
- str r0, [sp]
- movs r0, 0xC
- str r0, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x1
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0
- strh r0, [r4, 0x4]
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
-_0815B448:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B450: .4byte gTasks+0x8
- thumb_func_end sub_815B404
-
- thumb_func_start sub_815B454
-sub_815B454: @ 815B454
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0815B484 @ =gTasks+0x8
- adds r4, r1, r0
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0815B488 @ =gSprites
- adds r1, r0, r1
- ldrh r2, [r4, 0x4]
- movs r3, 0x4
- ldrsh r0, [r4, r3]
- cmp r0, 0x23
- beq _0815B48C
- adds r0, r2, 0x1
- strh r0, [r4, 0x4]
- b _0815B4B8
- .align 2, 0
-_0815B484: .4byte gTasks+0x8
-_0815B488: .4byte gSprites
-_0815B48C:
- ldrh r2, [r1, 0x24]
- movs r3, 0x24
- ldrsh r0, [r1, r3]
- cmp r0, 0x78
- bne _0815B4B4
- adds r0, r1, 0
- movs r1, 0
- bl StartSpriteAnim
- ldr r0, _0815B4B0 @ =gUnknown_841B83D
- bl sub_815B1DC
- movs r0, 0
- strh r0, [r4, 0x4]
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
- b _0815B4B8
- .align 2, 0
-_0815B4B0: .4byte gUnknown_841B83D
-_0815B4B4:
- adds r0, r2, 0x1
- strh r0, [r1, 0x24]
-_0815B4B8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_815B454
-
- thumb_func_start sub_815B4C0
-sub_815B4C0: @ 815B4C0
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0815B4E8 @ =gTasks+0x8
- adds r4, r1, r0
- movs r0, 0
- bl sub_80BF518
- lsls r0, 16
- cmp r0, 0
- bne _0815B4E2
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
-_0815B4E2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B4E8: .4byte gTasks+0x8
- thumb_func_end sub_815B4C0
-
- thumb_func_start sub_815B4EC
-sub_815B4EC: @ 815B4EC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r6, r0, 3
- ldr r7, _0815B548 @ =gTasks+0x8
- adds r5, r6, r7
- ldr r0, _0815B54C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0815B55C
- ldr r0, _0815B550 @ =gUnknown_203F450
- ldr r0, [r0]
- ldr r1, _0815B554 @ =0x00004006
- adds r0, r1
- movs r4, 0
- movs r1, 0x1
- strb r1, [r0]
- ldrb r0, [r5, 0x2]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_815B05C
- movs r0, 0
- movs r1, 0xCC
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- bl sub_815B908
- strh r4, [r5, 0x4]
- strh r4, [r5, 0x6]
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0815B558 @ =sub_815B92C
- str r1, [r0]
- b _0815B578
- .align 2, 0
-_0815B548: .4byte gTasks+0x8
-_0815B54C: .4byte gMain
-_0815B550: .4byte gUnknown_203F450
-_0815B554: .4byte 0x00004006
-_0815B558: .4byte sub_815B92C
-_0815B55C:
- ldr r1, _0815B580 @ =gUnknown_8479548
- ldr r0, _0815B584 @ =gTeachyTV_StaticResources
- ldrb r0, [r0, 0x5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- movs r3, 0x6
- ldrsh r0, [r5, r3]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r2, 0
- bl _call_via_r1
-_0815B578:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B580: .4byte gUnknown_8479548
-_0815B584: .4byte gTeachyTV_StaticResources
- thumb_func_end sub_815B4EC
-
- thumb_func_start sub_815B588
-sub_815B588: @ 815B588
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _0815B5B4 @ =gTasks+0x8
- adds r4, r0
- ldr r1, _0815B5B8 @ =gUnknown_8479560
- ldr r0, _0815B5BC @ =gTeachyTV_StaticResources
- ldrb r0, [r0, 0x5]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl sub_815B1DC
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B5B4: .4byte gTasks+0x8
-_0815B5B8: .4byte gUnknown_8479560
-_0815B5BC: .4byte gTeachyTV_StaticResources
- thumb_func_end sub_815B588
-
- thumb_func_start sub_815B5C0
-sub_815B5C0: @ 815B5C0
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _0815B5EC @ =gTasks+0x8
- adds r4, r0
- ldr r1, _0815B5F0 @ =gUnknown_8479578
- ldr r0, _0815B5F4 @ =gTeachyTV_StaticResources
- ldrb r0, [r0, 0x5]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl sub_815B1DC
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B5EC: .4byte gTasks+0x8
-_0815B5F0: .4byte gUnknown_8479578
-_0815B5F4: .4byte gTeachyTV_StaticResources
- thumb_func_end sub_815B5C0
-
- thumb_func_start sub_815B5F8
-sub_815B5F8: @ 815B5F8
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0815B620 @ =gTasks+0x8
- adds r4, r1, r0
- movs r0, 0
- bl sub_80BF518
- lsls r0, 16
- cmp r0, 0
- bne _0815B61A
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
-_0815B61A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B620: .4byte gTasks+0x8
- thumb_func_end sub_815B5F8
-
- thumb_func_start sub_815B624
-sub_815B624: @ 815B624
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0815B65C @ =gTasks+0x8
- adds r4, r1, r0
- ldr r0, _0815B660 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _0815B656
- movs r0, 0
- movs r1, 0xCC
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
-_0815B656:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B65C: .4byte gTasks+0x8
-_0815B660: .4byte gMain
- thumb_func_end sub_815B624
-
- thumb_func_start sub_815B664
-sub_815B664: @ 815B664
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _0815B6A0 @ =gTasks+0x8
- adds r4, r0
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0815B6A4 @ =gSprites
- adds r0, r1
- movs r1, 0x5
- bl StartSpriteAnim
- movs r0, 0
- strh r0, [r4, 0x4]
- strh r0, [r4, 0x8]
- movs r0, 0x1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B6A0: .4byte gTasks+0x8
-_0815B6A4: .4byte gSprites
- thumb_func_end sub_815B664
-
- thumb_func_start sub_815B6A8
-sub_815B6A8: @ 815B6A8
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0815B730 @ =gTasks+0x8
- adds r4, r0, r1
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0815B734 @ =gSprites
- adds r6, r0, r1
- movs r1, 0x80
- lsls r1, 1
- movs r0, 0x3
- movs r2, 0x2
- bl ChangeBgY
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- movs r3, 0xF
- ands r3, r0
- cmp r3, 0
- bne _0815B702
- ldr r0, _0815B738 @ =gUnknown_203F450
- ldr r1, [r0]
- ldr r2, _0815B73C @ =0x00004005
- adds r1, r2
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- movs r0, 0x24
- ldrsh r1, [r6, r0]
- movs r0, 0x26
- ldrsh r2, [r6, r0]
- str r3, [sp]
- adds r0, r5, 0
- movs r3, 0
- bl sub_815BAA0
-_0815B702:
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0x30
- bne _0815B726
- movs r1, 0
- strh r1, [r4, 0x4]
- movs r2, 0x1
- negs r2, r2
- adds r0, r2, 0
- strh r0, [r4, 0x8]
- strh r1, [r4, 0xA]
- adds r0, r6, 0
- movs r1, 0x7
- bl StartSpriteAnim
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
-_0815B726:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B730: .4byte gTasks+0x8
-_0815B734: .4byte gSprites
-_0815B738: .4byte gUnknown_203F450
-_0815B73C: .4byte 0x00004005
- thumb_func_end sub_815B6A8
-
- thumb_func_start sub_815B740
-sub_815B740: @ 815B740
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0815B7D4 @ =gTasks+0x8
- adds r4, r0, r1
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0815B7D8 @ =gSprites
- adds r6, r0, r1
- movs r1, 0x80
- lsls r1, 1
- movs r0, 0x3
- movs r2, 0x1
- bl ChangeBgX
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- movs r2, 0xF
- ands r0, r2
- cmp r0, 0
- bne _0815B78A
- ldr r0, _0815B7DC @ =gUnknown_203F450
- ldr r1, [r0]
- ldr r3, _0815B7E0 @ =0x00004004
- adds r1, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0815B78A:
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- adds r0, 0x8
- ands r0, r2
- cmp r0, 0
- bne _0815B7AC
- ldrh r1, [r6, 0x24]
- adds r1, 0x8
- lsls r1, 16
- asrs r1, 16
- movs r3, 0x26
- ldrsh r2, [r6, r3]
- str r0, [sp]
- adds r0, r5, 0
- movs r3, 0
- bl sub_815BAA0
-_0815B7AC:
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0x30
- bne _0815B7CA
- movs r0, 0
- strh r0, [r4, 0x4]
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- adds r0, r6, 0
- movs r1, 0x3
- bl StartSpriteAnim
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
-_0815B7CA:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B7D4: .4byte gTasks+0x8
-_0815B7D8: .4byte gSprites
-_0815B7DC: .4byte gUnknown_203F450
-_0815B7E0: .4byte 0x00004004
- thumb_func_end sub_815B740
-
- thumb_func_start sub_815B7E4
-sub_815B7E4: @ 815B7E4
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r5, r6, 2
- adds r5, r6
- lsls r5, 3
- ldr r0, _0815B838 @ =gTasks+0x8
- adds r5, r0
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _0815B83C @ =gSprites
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x6
- bl StartSpriteAnim
- ldrh r0, [r5, 0x6]
- adds r0, 0x1
- strh r0, [r5, 0x6]
- movs r0, 0
- strh r0, [r5, 0x8]
- strh r0, [r5, 0xA]
- movs r0, 0x24
- ldrsh r1, [r4, r0]
- movs r0, 0x26
- ldrsh r2, [r4, r0]
- movs r0, 0
- str r0, [sp]
- adds r0, r6, 0
- movs r3, 0
- bl sub_815BAA0
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B838: .4byte gTasks+0x8
-_0815B83C: .4byte gSprites
- thumb_func_end sub_815B7E4
-
- thumb_func_start sub_815B840
-sub_815B840: @ 815B840
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, _0815B890 @ =gTasks+0x8
- adds r5, r0, r1
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0815B894 @ =gSprites
- adds r4, r0, r1
- ldrh r1, [r4, 0x24]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _0815B87E
- subs r1, 0x8
- lsls r1, 16
- asrs r1, 16
- movs r6, 0x26
- ldrsh r2, [r4, r6]
- str r0, [sp]
- adds r0, r3, 0
- movs r3, 0
- bl sub_815BAA0
-_0815B87E:
- ldrh r1, [r4, 0x24]
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- cmp r0, 0x8
- bne _0815B898
- ldrh r0, [r5, 0x6]
- adds r0, 0x1
- strh r0, [r5, 0x6]
- b _0815B89C
- .align 2, 0
-_0815B890: .4byte gTasks+0x8
-_0815B894: .4byte gSprites
-_0815B898:
- subs r0, r1, 0x1
- strh r0, [r4, 0x24]
-_0815B89C:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_815B840
-
- thumb_func_start sub_815B8A4
-sub_815B8A4: @ 815B8A4
- push {r4,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0815B900 @ =gTasks+0x8
- adds r4, r1, r0
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815B8DC
- ldr r1, _0815B904 @ =gUnknown_8479590
- movs r0, 0x8
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r2, 0x14
- movs r3, 0xA
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
-_0815B8DC:
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7E
- ble _0815B8F8
- bl sub_815B908
- movs r0, 0
- strh r0, [r4, 0x4]
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
-_0815B8F8:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B900: .4byte gTasks+0x8
-_0815B904: .4byte gUnknown_8479590
- thumb_func_end sub_815B8A4
-
- thumb_func_start sub_815B908
-sub_815B908: @ 815B908
- push {lr}
- sub sp, 0x8
- movs r0, 0x8
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x14
- movs r3, 0xA
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_815B908
-
- thumb_func_start sub_815B92C
-sub_815B92C: @ 815B92C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 3
- ldr r7, _0815B9DC @ =gTasks+0x8
- adds r5, r6, r7
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0815B94C
- movs r0, 0xAD
- lsls r0, 1
- bl PlayNewMapMusic
-_0815B94C:
- bl sub_815B0CC
- ldrh r0, [r5, 0x4]
- adds r0, 0x1
- strh r0, [r5, 0x4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3F
- ble _0815B9D4
- movs r4, 0
- strh r4, [r5, 0x4]
- strh r4, [r5, 0x6]
- bl sub_815AEE8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0815B9E0 @ =sub_815B2C0
- str r1, [r0]
- movs r0, 0
- bl PutWindowTilemap
- bl sub_815AF5C
- bl sub_815B094
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x3
- movs r2, 0x2
- bl ChangeBgX
- movs r1, 0xA0
- lsls r1, 6
- movs r0, 0x3
- movs r2, 0x1
- bl ChangeBgY
- ldr r2, _0815B9E4 @ =gUnknown_203F450
- ldr r0, [r2]
- ldr r1, _0815B9E8 @ =0x00004004
- adds r0, r1
- strb r4, [r0]
- ldr r0, [r2]
- adds r1, 0x1
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0]
- ldr r0, [r2]
- ldr r1, _0815B9EC @ =0x00004006
- adds r0, r1
- strb r4, [r0]
-_0815B9D4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0815B9DC: .4byte gTasks+0x8
-_0815B9E0: .4byte sub_815B2C0
-_0815B9E4: .4byte gUnknown_203F450
-_0815B9E8: .4byte 0x00004004
-_0815B9EC: .4byte 0x00004006
- thumb_func_end sub_815B92C
-
- thumb_func_start sub_815B9F0
-sub_815B9F0: @ 815B9F0
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- ldr r0, _0815BA0C @ =gTeachyTV_StaticResources
- ldrb r0, [r0, 0x5]
- cmp r0, 0
- blt _0815BA22
- cmp r0, 0x3
- bgt _0815BA10
- adds r0, r1, 0
- bl sub_815BC90
- b _0815BA22
- .align 2, 0
-_0815BA0C: .4byte gTeachyTV_StaticResources
-_0815BA10:
- cmp r0, 0x5
- bgt _0815BA22
- ldr r0, _0815BA28 @ =gUnknown_203F450
- ldr r1, [r0]
- ldr r0, _0815BA2C @ =sub_815BA30
- str r0, [r1]
- adds r0, r2, 0
- bl sub_815B23C
-_0815BA22:
- pop {r0}
- bx r0
- .align 2, 0
-_0815BA28: .4byte gUnknown_203F450
-_0815BA2C: .4byte sub_815BA30
- thumb_func_end sub_815B9F0
-
- thumb_func_start sub_815BA30
-sub_815BA30: @ 815BA30
- push {lr}
- ldr r0, _0815BA44 @ =gTeachyTV_StaticResources
- ldrb r0, [r0, 0x5]
- cmp r0, 0x4
- bne _0815BA48
- movs r0, 0xA
- bl sub_810B108
- b _0815BA4E
- .align 2, 0
-_0815BA44: .4byte gTeachyTV_StaticResources
-_0815BA48:
- movs r0, 0x9
- bl sub_810B108
-_0815BA4E:
- pop {r0}
- bx r0
- thumb_func_end sub_815BA30
-
- thumb_func_start sub_815BA54
-sub_815BA54: @ 815BA54
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r2, r1, 3
- ldr r4, _0815BA8C @ =gTasks+0x8
- adds r3, r2, r4
- ldr r0, _0815BA90 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0815BA86
- ldr r1, _0815BA94 @ =gUnknown_8479390
- ldr r0, _0815BA98 @ =gTeachyTV_StaticResources
- ldrb r0, [r0, 0x5]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r3, 0x6]
- adds r0, r4, 0
- subs r0, 0x8
- adds r0, r2, r0
- ldr r1, _0815BA9C @ =sub_815B4EC
- str r1, [r0]
-_0815BA86:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815BA8C: .4byte gTasks+0x8
-_0815BA90: .4byte gPaletteFade
-_0815BA94: .4byte gUnknown_8479390
-_0815BA98: .4byte gTeachyTV_StaticResources
-_0815BA9C: .4byte sub_815B4EC
- thumb_func_end sub_815BA54
-
- thumb_func_start sub_815BAA0
-sub_815BAA0: @ 815BAA0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r4, [sp, 0x1C]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 16
- lsrs r1, r2, 16
- lsls r3, 24
- lsrs r7, r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- ldr r0, _0815BB34 @ =gUnknown_203F450
- ldr r0, [r0]
- ldr r2, _0815BB38 @ =0x00004006
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0815BB5C
- lsls r0, r6, 16
- ldr r2, _0815BB3C @ =0xfff00000
- adds r0, r2
- asrs r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- adds r1, r5, 0
- bl sub_815BC40
- lsls r0, 24
- cmp r0, 0
- beq _0815BB5C
- ldr r0, _0815BB40 @ =gUnknown_83A0010
- ldr r0, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- adds r3, r7, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0815BB44 @ =gSprites
- adds r4, r1, r0
- strh r6, [r4, 0x24]
- adds r0, r5, 0
- adds r0, 0x8
- strh r0, [r4, 0x26]
- ldr r0, _0815BB48 @ =sub_815BB6C
- str r0, [r4, 0x1C]
- mov r0, r9
- strh r0, [r4, 0x2E]
- mov r2, r8
- cmp r2, 0x1
- bne _0815BB4C
- adds r0, r4, 0
- movs r1, 0x4
- bl SeekSpriteAnim
- ldrb r0, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x8
- orrs r1, r0
- strb r1, [r4, 0x5]
- b _0815BB5C
- .align 2, 0
-_0815BB34: .4byte gUnknown_203F450
-_0815BB38: .4byte 0x00004006
-_0815BB3C: .4byte 0xfff00000
-_0815BB40: .4byte gUnknown_83A0010
-_0815BB44: .4byte gSprites
-_0815BB48: .4byte sub_815BB6C
-_0815BB4C:
- ldr r1, _0815BB68 @ =gUnknown_84795B8
- adds r0, r4, 0
- bl SetSubspriteTables
- adds r1, r4, 0
- adds r1, 0x42
- movs r0, 0x40
- strb r0, [r1]
-_0815BB5C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0815BB68: .4byte gUnknown_84795B8
- thumb_func_end sub_815BAA0
-
- thumb_func_start sub_815BB6C
-sub_815BB6C: @ 815BB6C
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _0815BBA4 @ =gTasks+0x8
- adds r4, r0, r1
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0815BBA8 @ =gSprites
- adds r5, r0, r1
- ldr r0, _0815BBAC @ =gUnknown_203F450
- ldr r0, [r0]
- ldr r1, _0815BBB0 @ =0x00004006
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0815BBB4
- adds r0, r3, 0
- bl DestroySprite
- b _0815BC3A
- .align 2, 0
-_0815BBA4: .4byte gTasks+0x8
-_0815BBA8: .4byte gSprites
-_0815BBAC: .4byte gUnknown_203F450
-_0815BBB0: .4byte 0x00004006
-_0815BBB4:
- adds r0, r3, 0
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0
- bne _0815BBD2
- adds r2, r3, 0
- adds r2, 0x42
- ldrb r0, [r2]
- movs r1, 0x40
- negs r1, r1
- ands r1, r0
- movs r0, 0x1
- orrs r1, r0
- strb r1, [r2]
- b _0815BBE0
-_0815BBD2:
- adds r2, r3, 0
- adds r2, 0x42
- ldrb r1, [r2]
- movs r0, 0x40
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_0815BBE0:
- ldrh r0, [r4, 0x8]
- ldrh r2, [r3, 0x24]
- adds r0, r2
- strh r0, [r3, 0x24]
- ldrh r0, [r4, 0xA]
- ldrh r1, [r3, 0x26]
- adds r0, r1
- strh r0, [r3, 0x26]
- adds r0, r3, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0815BC3A
- adds r1, r3, 0
- adds r1, 0x43
- movs r0, 0
- strb r0, [r1]
- ldrh r1, [r3, 0x24]
- ldrh r0, [r5, 0x24]
- subs r1, r0
- ldrh r0, [r3, 0x26]
- ldrh r2, [r5, 0x26]
- subs r0, r2
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- movs r2, 0xF0
- lsls r2, 12
- adds r1, r2
- lsrs r1, 16
- cmp r1, 0x1E
- bhi _0815BC34
- lsls r0, 16
- asrs r1, r0, 16
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- ble _0815BC34
- cmp r1, 0x17
- ble _0815BC3A
-_0815BC34:
- adds r0, r3, 0
- bl DestroySprite
-_0815BC3A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815BB6C
-
- thumb_func_start sub_815BC40
-sub_815BC40: @ 815BC40
- push {r4,r5,lr}
- lsls r1, 16
- lsrs r1, 16
- lsls r4, r0, 16
- cmp r4, 0
- blt _0815BC52
- lsls r1, 16
- cmp r1, 0
- bge _0815BC56
-_0815BC52:
- movs r0, 0
- b _0815BC78
-_0815BC56:
- ldr r3, _0815BC80 @ =gUnknown_84795C8
- ldr r0, _0815BC84 @ =gUnknown_203F450
- ldr r2, [r0]
- ldr r5, _0815BC88 @ =0x00004005
- adds r0, r2, r5
- asrs r1, 20
- ldrb r0, [r0]
- adds r1, r0
- lsls r1, 4
- ldr r0, _0815BC8C @ =0x00004004
- adds r2, r0
- asrs r0, r4, 20
- ldrb r2, [r2]
- adds r0, r2
- adds r1, r0
- adds r1, r3
- ldrb r0, [r1]
-_0815BC78:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0815BC80: .4byte gUnknown_84795C8
-_0815BC84: .4byte gUnknown_203F450
-_0815BC88: .4byte 0x00004005
-_0815BC8C: .4byte 0x00004004
- thumb_func_end sub_815BC40
-
- thumb_func_start sub_815BC90
-sub_815BC90: @ 815BC90
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _0815BCCC @ =gTasks+0x8
- adds r5, r0, r1
- bl sub_815B220
- ldr r1, _0815BCD0 @ =gSpecialVar_0x8004
- ldr r4, _0815BCD4 @ =gTeachyTV_StaticResources
- ldrb r0, [r4, 0x5]
- strh r0, [r1]
- ldr r1, _0815BCD8 @ =gMain
- ldr r0, _0815BCDC @ =sub_815BD58
- str r0, [r1, 0x8]
- bl SavePlayerParty
- bl sub_8159F40
- movs r0, 0
- bl PlayMapChosenOrBattleBGM
- ldrb r0, [r4, 0x5]
- cmp r0, 0
- bne _0815BCE0
- movs r0, 0x9
- b _0815BCE2
- .align 2, 0
-_0815BCCC: .4byte gTasks+0x8
-_0815BCD0: .4byte gSpecialVar_0x8004
-_0815BCD4: .4byte gTeachyTV_StaticResources
-_0815BCD8: .4byte gMain
-_0815BCDC: .4byte sub_815BD58
-_0815BCE0:
- movs r0, 0x8
-_0815BCE2:
- strh r0, [r5, 0xC]
- movs r0, 0
- strh r0, [r5, 0xE]
- ldr r1, _0815BCFC @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _0815BD00 @ =sub_815BD04
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815BCFC: .4byte gTasks
-_0815BD00: .4byte sub_815BD04
- thumb_func_end sub_815BC90
-
- thumb_func_start sub_815BD04
-sub_815BD04: @ 815BD04
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0815BD24 @ =gTasks+0x8
- adds r4, r0, r1
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0815BD28
- cmp r0, 0x1
- beq _0815BD36
- b _0815BD4C
- .align 2, 0
-_0815BD24: .4byte gTasks+0x8
-_0815BD28:
- ldrb r0, [r4, 0xC]
- bl sub_80D08B8
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- b _0815BD4C
-_0815BD36:
- bl sub_80D08F8
- lsls r0, 24
- cmp r0, 0
- beq _0815BD4C
- ldr r0, _0815BD54 @ =sub_800FD9C
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_0815BD4C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0815BD54: .4byte sub_800FD9C
- thumb_func_end sub_815BD04
-
- thumb_func_start sub_815BD58
-sub_815BD58: @ 815BD58
- push {lr}
- bl LoadPlayerParty
- ldr r0, _0815BD6C @ =gUnknown_2023E8A
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0815BD70
- bl sub_815AC20
- b _0815BD78
- .align 2, 0
-_0815BD6C: .4byte gUnknown_2023E8A
-_0815BD70:
- movs r0, 0x88
- lsls r0, 1
- bl PlayNewMapMusic
-_0815BD78:
- bl CB2_ReturnToTeachyTV
- pop {r0}
- bx r0
- thumb_func_end sub_815BD58
-
- thumb_func_start sub_815BD80
-sub_815BD80: @ 815BD80
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x10]
- ldr r1, _0815BE1C @ =Route1_Layout
- mov r8, r1
- movs r0, 0x80
- lsls r0, 4
- bl AllocZeroed
- adds r6, r0, 0
- movs r0, 0x80
- lsls r0, 8
- bl AllocZeroed
- str r0, [sp, 0x8]
- movs r0, 0x10
- bl Alloc
- str r0, [sp, 0xC]
- movs r1, 0xFF
- movs r2, 0x10
- bl memset
- mov r2, r8
- ldr r0, [r2, 0x10]
- movs r2, 0xA0
- lsls r2, 2
- ldr r1, [sp, 0x8]
- bl sub_815BF48
- mov r3, r8
- ldr r0, [r3, 0x14]
- ldr r2, [sp, 0x8]
- movs r3, 0xA0
- lsls r3, 7
- adds r1, r2, r3
- movs r2, 0xC0
- lsls r2, 1
- bl sub_815BF48
- movs r4, 0
-_0815BDDE:
- movs r2, 0
- adds r0, r4, 0x6
- str r0, [sp, 0x18]
- lsls r1, r4, 4
- mov r10, r1
- lsls r3, r4, 6
- mov r9, r3
- adds r4, 0x1
- str r4, [sp, 0x14]
-_0815BDF0:
- mov r1, r8
- ldr r0, [r1]
- ldr r3, [sp, 0x18]
- muls r0, r3
- ldr r1, [r1, 0xC]
- adds r0, r2, r0
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0, 0x10]
- ldr r3, _0815BE20 @ =0x000003ff
- adds r0, r3, 0
- adds r4, r0, 0
- ands r4, r1
- movs r3, 0
- mov r0, r10
- adds r1, r0, r2
- lsls r5, r2, 1
- adds r7, r2, 0x1
- cmp r3, r1
- bge _0815BE3C
- ldrh r0, [r6]
- b _0815BE34
- .align 2, 0
-_0815BE1C: .4byte Route1_Layout
-_0815BE20: .4byte 0x000003ff
-_0815BE24:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r1
- bge _0815BE3C
- lsls r0, r3, 1
- adds r0, r6
- ldrh r0, [r0]
-_0815BE34:
- cmp r0, 0
- beq _0815BE46
- cmp r0, r4
- bne _0815BE24
-_0815BE3C:
- lsls r0, r3, 1
- adds r0, r6
- ldrh r0, [r0]
- cmp r0, 0
- bne _0815BE56
-_0815BE46:
- lsls r0, r3, 1
- adds r0, r6
- strh r4, [r0]
- ldr r0, [sp, 0x10]
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x10]
-_0815BE56:
- mov r2, r9
- adds r1, r2, r5
- lsls r1, 1
- ldr r0, [sp, 0x4]
- adds r1, r0, r1
- str r3, [sp]
- mov r0, r8
- ldr r2, [sp, 0xC]
- adds r3, r4, 0
- bl sub_815BF70
- lsls r0, r7, 16
- lsrs r2, r0, 16
- cmp r2, 0xF
- bls _0815BDF0
- ldr r1, [sp, 0x14]
- lsls r0, r1, 16
- lsrs r4, r0, 16
- cmp r4, 0x8
- bls _0815BDDE
- ldr r2, [sp, 0x10]
- lsls r0, r2, 7
- bl Alloc
- adds r7, r0, 0
- movs r0, 0x80
- bl Alloc
- adds r5, r0, 0
- movs r4, 0
- ldr r3, [sp, 0x10]
- lsls r3, 23
- mov r9, r3
- ldr r0, [sp, 0x10]
- cmp r4, r0
- bcs _0815BF00
- ldr r1, _0815BECC @ =0x0000027f
- mov r10, r1
-_0815BEA2:
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x80
- bl memset
- lsls r0, r4, 1
- adds r1, r0, r6
- ldrh r0, [r1]
- cmp r0, r10
- bhi _0815BED0
- mov r2, r8
- ldr r0, [r2, 0x10]
- ldrh r1, [r1]
- lsls r1, 4
- ldr r0, [r0, 0xC]
- adds r0, r1
- adds r1, r5, 0
- ldr r2, [sp, 0x8]
- bl sub_815BFF0
- b _0815BEE8
- .align 2, 0
-_0815BECC: .4byte 0x0000027f
-_0815BED0:
- mov r3, r8
- ldr r0, [r3, 0x14]
- ldrh r1, [r1]
- ldr r2, _0815BF44 @ =0xfffffd80
- adds r1, r2
- lsls r1, 4
- ldr r0, [r0, 0xC]
- adds r0, r1
- adds r1, r5, 0
- ldr r2, [sp, 0x8]
- bl sub_815BFF0
-_0815BEE8:
- lsls r1, r4, 7
- adds r1, r7, r1
- adds r0, r5, 0
- movs r2, 0x20
- bl CpuFastSet
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r3, [sp, 0x10]
- cmp r4, r3
- bcc _0815BEA2
-_0815BF00:
- mov r0, r9
- lsrs r2, r0, 16
- movs r0, 0x3
- adds r1, r7, 0
- movs r3, 0
- bl LoadBgTiles
- mov r0, r8
- ldr r1, [sp, 0xC]
- bl sub_815C230
- adds r0, r5, 0
- bl Free
- adds r0, r7, 0
- bl Free
- ldr r0, [sp, 0xC]
- bl Free
- ldr r0, [sp, 0x8]
- bl Free
- adds r0, r6, 0
- bl Free
- 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
-_0815BF44: .4byte 0xfffffd80
- thumb_func_end sub_815BD80
-
- thumb_func_start sub_815BF48
-sub_815BF48: @ 815BF48
- push {lr}
- adds r3, r0, 0
- lsls r2, 16
- lsrs r2, 16
- cmp r3, 0
- beq _0815BF6A
- ldrb r0, [r3]
- cmp r0, 0
- bne _0815BF64
- ldr r0, [r3, 0x4]
- lsls r2, 3
- bl CpuFastSet
- b _0815BF6A
-_0815BF64:
- ldr r0, [r3, 0x4]
- bl LZDecompressWram
-_0815BF6A:
- pop {r0}
- bx r0
- thumb_func_end sub_815BF48
-
- thumb_func_start sub_815BF70
-sub_815BF70: @ 815BF70
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r7, r1, 0
- adds r6, r2, 0
- ldr r0, [sp, 0x14]
- lsls r3, 16
- lsrs r1, r3, 16
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _0815BF8C @ =0x0000027f
- cmp r1, r0
- bhi _0815BF90
- ldr r0, [r5, 0x10]
- b _0815BF96
- .align 2, 0
-_0815BF8C: .4byte 0x0000027f
-_0815BF90:
- ldr r0, [r5, 0x14]
- ldr r2, _0815BFEC @ =0xfffffd80
- adds r1, r2
-_0815BF96:
- lsls r1, 4
- ldr r0, [r0, 0xC]
- adds r5, r0, r1
- ldrh r1, [r5]
- adds r0, r6, 0
- bl sub_815C1F0
- lsls r0, 12
- lsls r4, 2
- adds r0, r4
- strh r0, [r7]
- ldrh r1, [r5, 0x2]
- adds r0, r6, 0
- bl sub_815C1F0
- lsls r0, 12
- adds r0, r4
- adds r0, 0x1
- strh r0, [r7, 0x2]
- ldrh r1, [r5, 0x4]
- adds r0, r6, 0
- bl sub_815C1F0
- adds r1, r7, 0
- adds r1, 0x40
- lsls r0, 12
- adds r0, r4
- adds r0, 0x2
- strh r0, [r1]
- ldrh r1, [r5, 0x6]
- adds r0, r6, 0
- bl sub_815C1F0
- adds r1, r7, 0
- adds r1, 0x42
- lsls r0, 12
- adds r0, r4
- adds r0, 0x3
- strh r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0815BFEC: .4byte 0xfffffd80
- thumb_func_end sub_815BF70
-
- thumb_func_start sub_815BFF0
-sub_815BFF0: @ 815BFF0
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- mov r8, r0
- mov r9, r1
- adds r5, r2, 0
- ldrh r2, [r0]
- ldr r4, _0815C0D0 @ =0x000003ff
- adds r1, r4, 0
- ands r1, r2
- lsls r1, 5
- adds r1, r5, r1
- lsrs r2, 10
- movs r6, 0x3
- ands r2, r6
- mov r0, r9
- bl sub_815C0D4
- mov r0, r8
- ldrh r2, [r0, 0x8]
- adds r1, r4, 0
- ands r1, r2
- lsls r1, 5
- adds r1, r5, r1
- lsrs r2, 10
- ands r2, r6
- mov r0, r9
- bl sub_815C0D4
- movs r0, 0x20
- add r0, r9
- mov r10, r0
- mov r0, r8
- ldrh r2, [r0, 0x2]
- adds r1, r4, 0
- ands r1, r2
- lsls r1, 5
- adds r1, r5, r1
- lsrs r2, 10
- ands r2, r6
- mov r0, r10
- bl sub_815C0D4
- mov r0, r8
- ldrh r2, [r0, 0xA]
- adds r1, r4, 0
- ands r1, r2
- lsls r1, 5
- adds r1, r5, r1
- lsrs r2, 10
- ands r2, r6
- mov r0, r10
- bl sub_815C0D4
- movs r0, 0x40
- add r0, r9
- mov r10, r0
- mov r0, r8
- ldrh r2, [r0, 0x4]
- adds r1, r4, 0
- ands r1, r2
- lsls r1, 5
- adds r1, r5, r1
- lsrs r2, 10
- ands r2, r6
- mov r0, r10
- bl sub_815C0D4
- mov r0, r8
- ldrh r2, [r0, 0xC]
- adds r1, r4, 0
- ands r1, r2
- lsls r1, 5
- adds r1, r5, r1
- lsrs r2, 10
- ands r2, r6
- mov r0, r10
- bl sub_815C0D4
- movs r0, 0x60
- add r9, r0
- mov r0, r8
- ldrh r2, [r0, 0x6]
- adds r1, r4, 0
- ands r1, r2
- lsls r1, 5
- adds r1, r5, r1
- lsrs r2, 10
- ands r2, r6
- mov r0, r9
- bl sub_815C0D4
- mov r0, r8
- ldrh r2, [r0, 0xE]
- ands r4, r2
- lsls r4, 5
- adds r5, r4
- lsrs r2, 10
- ands r2, r6
- mov r0, r9
- adds r1, r5, 0
- bl sub_815C0D4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815C0D0: .4byte 0x000003ff
- thumb_func_end sub_815BFF0
-
- thumb_func_start sub_815C0D4
-sub_815C0D4: @ 815C0D4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r9, r0
- adds r4, r1, 0
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- movs r0, 0x20
- bl AllocZeroed
- adds r6, r0, 0
- movs r0, 0x20
- bl AllocZeroed
- str r0, [sp]
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0x8
- bl CpuFastSet
- movs r0, 0x1
- mov r1, r10
- ands r0, r1
- cmp r0, 0
- beq _0815C15A
- movs r5, 0
- movs r7, 0xF
- mov r12, r7
- movs r0, 0xF0
- mov r8, r0
-_0815C118:
- movs r3, 0
- lsls r4, r5, 2
-_0815C11C:
- subs r0, r3, 0x3
- subs r0, r4, r0
- adds r0, r6, r0
- ldrb r1, [r0]
- adds r2, r4, r3
- ldr r7, [sp]
- adds r2, r7, r2
- adds r0, r1, 0
- mov r7, r12
- ands r0, r7
- lsls r0, 4
- mov r7, r8
- ands r1, r7
- lsrs r1, 4
- adds r0, r1
- strb r0, [r2]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _0815C11C
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x7
- bls _0815C118
- ldr r0, [sp]
- adds r1, r6, 0
- movs r2, 0x8
- bl CpuFastSet
-_0815C15A:
- movs r0, 0x2
- mov r1, r10
- ands r0, r1
- cmp r0, 0
- beq _0815C18E
- movs r5, 0
-_0815C166:
- lsls r0, r5, 2
- ldr r7, [sp]
- adds r0, r7
- movs r1, 0x7
- subs r1, r5
- lsls r1, 2
- adds r1, r6
- movs r2, 0x4
- bl memcpy
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x7
- bls _0815C166
- ldr r0, [sp]
- adds r1, r6, 0
- movs r2, 0x8
- bl CpuFastSet
-_0815C18E:
- movs r5, 0
- movs r0, 0xF0
- mov r8, r0
- movs r1, 0xF
- mov r12, r1
-_0815C198:
- adds r4, r6, r5
- ldrb r0, [r4]
- mov r3, r8
- ands r3, r0
- cmp r3, 0
- beq _0815C1B2
- mov r7, r9
- adds r2, r7, r5
- ldrb r1, [r2]
- mov r0, r12
- ands r0, r1
- adds r0, r3
- strb r0, [r2]
-_0815C1B2:
- ldrb r0, [r4]
- mov r3, r12
- ands r3, r0
- cmp r3, 0
- beq _0815C1CA
- mov r0, r9
- adds r2, r0, r5
- ldrb r1, [r2]
- mov r0, r8
- ands r0, r1
- adds r0, r3
- strb r0, [r2]
-_0815C1CA:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1F
- bls _0815C198
- ldr r0, [sp]
- bl Free
- adds r0, r6, 0
- bl Free
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_815C0D4
-
- thumb_func_start sub_815C1F0
-sub_815C1F0: @ 815C1F0
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 28
- movs r3, 0
- ldrb r0, [r4]
- cmp r0, r1
- beq _0815C220
- cmp r0, 0xFF
- bne _0815C208
- strb r1, [r4]
- b _0815C220
-_0815C208:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0xF
- bhi _0815C220
- adds r2, r4, r3
- ldrb r0, [r2]
- cmp r0, r1
- beq _0815C220
- cmp r0, 0xFF
- bne _0815C208
- strb r1, [r2]
-_0815C220:
- movs r0, 0xF
- subs r0, r3
- lsls r0, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_815C1F0
-
- thumb_func_start sub_815C230
-sub_815C230: @ 815C230
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- movs r4, 0
- ldrb r0, [r5]
- cmp r0, 0xFF
- beq _0815C274
-_0815C23E:
- adds r1, r5, r4
- ldrb r0, [r1]
- cmp r0, 0x6
- bls _0815C24A
- ldr r0, [r6, 0x14]
- b _0815C24C
-_0815C24A:
- ldr r0, [r6, 0x10]
-_0815C24C:
- ldrb r1, [r1]
- lsls r1, 5
- ldr r0, [r0, 0x8]
- adds r0, r1
- movs r1, 0xF
- subs r1, r4
- lsls r1, 20
- lsrs r1, 16
- movs r2, 0x20
- bl LoadPalette
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bhi _0815C274
- adds r0, r5, r4
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0815C23E
-_0815C274:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_815C230
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/title_screen.s b/asm/title_screen.s
index a60bc959c..e62cc9a9f 100644
--- a/asm/title_screen.s
+++ b/asm/title_screen.s
@@ -113,13 +113,13 @@ _080789F0:
movs r0, 0
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r1, _08078A9C @ =gUnknown_8EAD390
str r6, [sp]
movs r0, 0
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r0, _08078AA0 @ =gUnknown_8EAD5E8
movs r1, 0xD0
movs r2, 0x20
@@ -129,13 +129,13 @@ _080789F0:
movs r0, 0x1
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r1, _08078AA8 @ =gUnknown_8EADEE4
str r6, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r5, _08078AAC @ =gUnknown_8EAE094
adds r0, r5, 0
movs r1, 0xF0
@@ -146,13 +146,13 @@ _080789F0:
movs r0, 0x2
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r1, _08078AB4 @ =gUnknown_8EAE374
str r6, [sp]
movs r0, 0x2
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
adds r0, r5, 0
movs r1, 0xE0
movs r2, 0x20
@@ -162,13 +162,13 @@ _080789F0:
movs r0, 0x3
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r1, _08078ABC @ =gUnknown_83BF5A8
str r6, [sp]
movs r0, 0x3
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
bl sub_8079708
b _08078B18
.align 2, 0
@@ -184,7 +184,7 @@ _08078AB4: .4byte gUnknown_8EAE374
_08078AB8: .4byte gUnknown_83BF58C
_08078ABC: .4byte gUnknown_83BF5A8
_08078AC0:
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
cmp r0, 0
bne _08078B26
@@ -1056,7 +1056,11 @@ _080791DE:
lsrs r5, r0, 24
cmp r5, 0
bne _080792A6
- movs r0, 0x6
+ .ifdef FIRERED
+ movs r0, 0x6 @ CHARIZARD
+ .else
+ movs r0, 0x3 @ VENUSAUR
+ .endif
movs r1, 0
bl PlayCry1
ldrb r0, [r4, 0xC]
@@ -1106,7 +1110,7 @@ _08079248:
bne _080792A6
bl SeedRngAndSetTrainerId
bl SetSaveBlocksPointers
- bl sub_8054A28
+ bl ResetMenuAndMonGlobals
bl Save_ResetSaveCounters
movs r0, 0
bl Save_LoadGameData
@@ -1641,7 +1645,7 @@ _0807965C:
movs r1, 0xE0
movs r2, 0x20
bl LoadPalette
- bl sub_80F6C14
+ bl ResetBgPositions
movs r1, 0xE0
lsls r1, 8
movs r0, 0
@@ -1688,13 +1692,13 @@ sub_80796E8: @ 80796E8
cmp r0, 0
bne _080796FE
bl m4aMPlayAllStop
- ldr r0, _08079704 @ =sub_815F74C
+ ldr r0, _08079704 @ =mb_berry_fix_serve
bl SetMainCallback2
_080796FE:
pop {r0}
bx r0
.align 2, 0
-_08079704: .4byte sub_815F74C
+_08079704: .4byte mb_berry_fix_serve
thumb_func_end sub_80796E8
thumb_func_start sub_8079708
@@ -1704,7 +1708,7 @@ sub_8079708: @ 8079708
ldr r4, _08079728 @ =gUnknown_83BFB9C
_0807970E:
adds r0, r4, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x3
diff --git a/asm/trade.s b/asm/trade.s
index 1c6dd00a8..61328d618 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -78,11 +78,11 @@ _0804C674:
movs r0, 0
movs r1, 0x14
movs r2, 0xC0
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
movs r0, 0x2
movs r1, 0x1
movs r2, 0xE0
- bl sub_815001C
+ bl TextWindow_SetUserSelectedFrame
bl sub_809707C
ldr r2, _0804C708 @ =gUnknown_2031DA8
ldr r0, [r2]
@@ -1909,7 +1909,7 @@ sub_804D638: @ 804D638
lsrs r1, 24
movs r0, 0x1C
bl SetGpuReg
- bl sub_80F6CBC
+ bl RunTextPrinters_CheckPrinter0Active
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
@@ -3379,7 +3379,7 @@ _0804E208:
movs r1, 0x3
movs r2, 0x10
movs r3, 0x2
- bl sub_810FC80
+ bl UnionRoomAndTradeMenuPrintOptions
movs r0, 0x10
str r0, [sp]
movs r0, 0x2
@@ -3390,7 +3390,7 @@ _0804E208:
movs r1, 0x3
movs r2, 0
movs r3, 0
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0x1
@@ -3533,7 +3533,7 @@ _0804E384: .4byte 0x06010000
sub_804E388: @ 804E388
push {lr}
sub sp, 0x4
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r0, 24
movs r1, 0x1
@@ -4827,7 +4827,7 @@ _0804ECEC:
str r0, [sp, 0x8]
adds r0, r5, 0
movs r3, 0x4
- bl box_print
+ bl AddTextPrinterParameterized3
add r6, sp, 0x28
adds r0, r6, 0
ldr r1, [sp, 0x60]
@@ -4847,7 +4847,7 @@ _0804ECEC:
movs r1, 0x1
movs r2, 0
movs r3, 0
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
adds r0, r5, 0
bl PutWindowTilemap
adds r0, r5, 0
@@ -5110,7 +5110,7 @@ sub_804EFB4: @ 804EFB4
adds r0, r4, 0
movs r1, 0
movs r3, 0x4
- bl box_print
+ bl AddTextPrinterParameterized3
adds r0, r4, 0
bl PutWindowTilemap
adds r0, r4, 0
@@ -7292,7 +7292,7 @@ _08050040:
ldr r1, [r1, 0x8]
adds r2, r5, 0
adds r3, r7, 0
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
movs r4, 0
b _0805009A
.align 2, 0
@@ -7316,7 +7316,7 @@ _0805007C:
_0805009A:
mov r0, r8
bl GetMonSpritePalStruct
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
ldr r0, _080500C4 @ =gUnknown_2031DAC
ldr r1, [r0]
adds r0, r1, 0
@@ -8135,7 +8135,7 @@ sub_80507A0: @ 80507A0
adds r0, r4, 0
movs r1, 0x3
adds r2, r5, 0
- bl sub_8044898
+ bl HandleSetPokedexFlag
_080507F4:
pop {r4,r5}
pop {r0}
@@ -10813,7 +10813,7 @@ _08052042:
ldr r1, [r1]
ldr r1, [r1, 0x10]
ldr r3, [r3, 0x6C]
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
ldr r1, [r7]
b _080522AC
.align 2, 0
@@ -13038,7 +13038,7 @@ _0805349E:
ldr r1, [r1]
ldr r1, [r1, 0x10]
ldr r3, [r3, 0x6C]
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
ldr r1, [r7]
b _08053708
.align 2, 0
@@ -13984,7 +13984,7 @@ sub_8053B48: @ 8053B48
ldrh r0, [r5, 0x28]
cmp r0, 0
beq _08053CC0
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _08053CB4
@@ -14989,7 +14989,7 @@ sub_8054508: @ 8054508
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl AddTextPrinterParametrized2
+ bl AddTextPrinterParameterized4
adds r0, r5, 0
movs r1, 0x3
bl CopyWindowToVram
diff --git a/asm/trainer_card.s b/asm/trainer_card.s
index 1dcdc4849..85797d38f 100644
--- a/asm/trainer_card.s
+++ b/asm/trainer_card.s
@@ -1070,7 +1070,7 @@ _080898BE:
adds r0, 0x1
strb r0, [r5, 0x1]
_080898CE:
- bl sub_8088F84
+ bl HasAllKantoMons
lsls r0, 16
cmp r0, 0
beq _080898DE
@@ -1117,7 +1117,7 @@ _08089918:
_0808991C:
bl sub_8088F58
strb r0, [r5, 0x3]
- bl sub_8088F84
+ bl HasAllKantoMons
adds r6, r5, 0
adds r6, 0x4D
strb r0, [r6]
@@ -1856,7 +1856,7 @@ sub_8089EEC: @ 8089EEC
add r0, sp, 0xC
str r0, [sp, 0x8]
movs r0, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0x4C
pop {r4,r5}
pop {r0}
@@ -1908,7 +1908,7 @@ sub_8089F78: @ 8089F78
add r0, sp, 0xC
str r0, [sp, 0x8]
movs r0, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0x2C
pop {r4}
pop {r0}
@@ -1972,7 +1972,7 @@ sub_8089FEC: @ 8089FEC
adds r1, r6, 0
movs r2, 0x14
movs r3, 0x38
- bl box_print
+ bl AddTextPrinterParameterized3
str r5, [sp]
str r4, [sp, 0x4]
add r0, sp, 0xC
@@ -1981,7 +1981,7 @@ sub_8089FEC: @ 8089FEC
adds r1, r6, 0
adds r2, r7, 0
movs r3, 0x38
- bl box_print
+ bl AddTextPrinterParameterized3
b _0808A0CA
.align 2, 0
_0808A068: .4byte gUnknown_8419CED
@@ -2015,7 +2015,7 @@ _0808A080:
adds r1, r6, 0
movs r2, 0x10
movs r3, 0x39
- bl box_print
+ bl AddTextPrinterParameterized3
str r5, [sp]
str r4, [sp, 0x4]
add r1, sp, 0xC
@@ -2024,7 +2024,7 @@ _0808A080:
adds r1, r6, 0
adds r2, r7, 0
movs r3, 0x39
- bl box_print
+ bl AddTextPrinterParameterized3
_0808A0CA:
add sp, 0x18
pop {r4-r7}
@@ -2108,7 +2108,7 @@ _0808A112:
adds r1, r6, 0
movs r2, 0x14
movs r3, 0x48
- bl box_print
+ bl AddTextPrinterParameterized3
str r5, [sp]
str r4, [sp, 0x4]
add r0, sp, 0xC
@@ -2117,7 +2117,7 @@ _0808A112:
adds r1, r6, 0
adds r2, r7, 0
movs r3, 0x48
- bl box_print
+ bl AddTextPrinterParameterized3
str r5, [sp]
str r4, [sp, 0x4]
ldr r0, _0808A1B0 @ =gUnknown_8419CF7
@@ -2126,7 +2126,7 @@ _0808A112:
adds r1, r6, 0
movs r2, 0x8A
movs r3, 0x48
- bl box_print
+ bl AddTextPrinterParameterized3
b _0808A212
.align 2, 0
_0808A198: .4byte 0x00000829
@@ -2161,7 +2161,7 @@ _0808A1B4:
adds r1, r6, 0
movs r2, 0x10
movs r3, 0x49
- bl box_print
+ bl AddTextPrinterParameterized3
str r5, [sp]
str r4, [sp, 0x4]
add r1, sp, 0xC
@@ -2170,7 +2170,7 @@ _0808A1B4:
adds r1, r6, 0
adds r2, r7, 0
movs r3, 0x49
- bl box_print
+ bl AddTextPrinterParameterized3
str r5, [sp]
str r4, [sp, 0x4]
ldr r0, _0808A228 @ =gUnknown_8419CF7
@@ -2179,7 +2179,7 @@ _0808A1B4:
adds r1, r6, 0
movs r2, 0x8A
movs r3, 0x49
- bl box_print
+ bl AddTextPrinterParameterized3
_0808A212:
add sp, 0x18
pop {r4-r7}
@@ -2258,7 +2258,7 @@ _0808A264:
movs r0, 0x1
movs r2, 0x14
movs r3, 0x58
- bl box_print
+ bl AddTextPrinterParameterized3
b _0808A2F4
.align 2, 0
_0808A2B0: .4byte gSaveBlock2Ptr
@@ -2284,7 +2284,7 @@ _0808A2D8:
movs r0, 0x1
movs r2, 0x10
movs r3, 0x59
- bl box_print
+ bl AddTextPrinterParameterized3
_0808A2F4:
add r0, sp, 0xC
adds r1, r5, 0
@@ -2316,7 +2316,7 @@ _0808A2F4:
str r1, [sp, 0x8]
movs r0, 0x1
mov r1, r10
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r1, _0808A3C0 @ =gUnknown_83CD932
mov r2, r9
ldr r4, [r2]
@@ -2338,7 +2338,7 @@ _0808A2F4:
str r0, [sp, 0x8]
movs r0, 0x1
mov r1, r10
- bl box_print
+ bl AddTextPrinterParameterized3
add r0, sp, 0xC
adds r1, r7, 0
movs r2, 0x2
@@ -2360,7 +2360,7 @@ _0808A2F4:
str r1, [sp, 0x8]
movs r0, 0x1
mov r1, r10
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0x14
pop {r3-r5}
mov r8, r3
@@ -2412,7 +2412,7 @@ sub_808A3D0: @ 808A3D0
movs r0, 0x1
movs r1, 0x2
movs r2, 0xA
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r1, [r7]
adds r1, 0x19
movs r0, 0x2
@@ -2433,7 +2433,7 @@ sub_808A3D0: @ 808A3D0
str r1, [sp, 0x8]
movs r0, 0x1
movs r1, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r0, _0808A4A4 @ =gUnknown_83CD93A
mov r8, r0
ldr r1, [r7]
@@ -2448,7 +2448,7 @@ sub_808A3D0: @ 808A3D0
movs r0, 0x1
movs r1, 0x2
movs r2, 0xA
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r1, [r7]
adds r1, 0x33
movs r0, 0x2
@@ -2469,7 +2469,7 @@ sub_808A3D0: @ 808A3D0
str r1, [sp, 0x8]
movs r0, 0x1
movs r1, 0x2
- bl box_print
+ bl AddTextPrinterParameterized3
_0808A486:
add sp, 0xC
pop {r3}
@@ -2553,7 +2553,7 @@ sub_808A4FC: @ 808A4FC
adds r0, 0x4D
str r0, [sp, 0x8]
movs r0, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
b _0808A59C
.align 2, 0
_0808A538: .4byte gUnknown_20397A4
@@ -2597,7 +2597,7 @@ _0808A550:
str r4, [sp, 0x8]
movs r0, 0x1
adds r1, r5, 0
- bl box_print
+ bl AddTextPrinterParameterized3
_0808A59C:
add sp, 0xC
pop {r4-r6}
@@ -2708,7 +2708,7 @@ sub_808A654: @ 808A654
movs r0, 0x1
adds r1, r5, 0
movs r3, 0x23
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r0, _0808A6C4 @ =gUnknown_83CD8E3
str r0, [sp]
str r4, [sp, 0x4]
@@ -2719,7 +2719,7 @@ sub_808A654: @ 808A654
adds r1, r5, 0
movs r2, 0xA4
movs r3, 0x23
- bl box_print
+ bl AddTextPrinterParameterized3
_0808A6A2:
add sp, 0xC
pop {r4-r6}
@@ -2830,7 +2830,7 @@ sub_808A760: @ 808A760
movs r0, 0x1
adds r1, r6, 0
movs r3, 0x33
- bl box_print
+ bl AddTextPrinterParameterized3
str r5, [sp]
str r4, [sp, 0x4]
ldr r0, [r7]
@@ -2841,7 +2841,7 @@ sub_808A760: @ 808A760
adds r1, r6, 0
movs r2, 0x82
movs r3, 0x33
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r5, _0808A804 @ =gUnknown_83CD8E3
str r5, [sp]
str r4, [sp, 0x4]
@@ -2853,7 +2853,7 @@ sub_808A760: @ 808A760
adds r1, r6, 0
movs r2, 0x90
movs r3, 0x33
- bl box_print
+ bl AddTextPrinterParameterized3
str r5, [sp]
str r4, [sp, 0x4]
ldr r0, [r7]
@@ -2864,7 +2864,7 @@ sub_808A760: @ 808A760
adds r1, r6, 0
movs r2, 0xC0
movs r3, 0x33
- bl box_print
+ bl AddTextPrinterParameterized3
_0808A7E2:
add sp, 0xC
pop {r4-r7}
@@ -2943,7 +2943,7 @@ sub_808A854: @ 808A854
movs r0, 0x1
adds r1, r5, 0
movs r3, 0x43
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r0, _0808A8C8 @ =gUnknown_83CD8E3
str r0, [sp]
str r4, [sp, 0x4]
@@ -2955,7 +2955,7 @@ sub_808A854: @ 808A854
adds r1, r5, 0
movs r2, 0xBA
movs r3, 0x43
- bl box_print
+ bl AddTextPrinterParameterized3
_0808A8A6:
add sp, 0xC
pop {r4-r6}
@@ -3042,7 +3042,7 @@ sub_808A91C: @ 808A91C
movs r0, 0x1
adds r1, r5, 0
movs r3, 0x63
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r0, _0808A99C @ =gUnknown_83CD8E3
str r0, [sp]
str r4, [sp, 0x4]
@@ -3054,7 +3054,7 @@ sub_808A91C: @ 808A91C
adds r1, r5, 0
movs r2, 0xBA
movs r3, 0x63
- bl box_print
+ bl AddTextPrinterParameterized3
_0808A97A:
add sp, 0xC
pop {r4-r6}
@@ -3140,7 +3140,7 @@ sub_808A9F0: @ 808A9F0
movs r0, 0x1
adds r1, r5, 0
movs r3, 0x53
- bl box_print
+ bl AddTextPrinterParameterized3
ldr r0, _0808AA70 @ =gUnknown_83CD8E3
str r0, [sp]
str r4, [sp, 0x4]
@@ -3152,7 +3152,7 @@ sub_808A9F0: @ 808A9F0
adds r1, r5, 0
movs r2, 0xBA
movs r3, 0x53
- bl box_print
+ bl AddTextPrinterParameterized3
_0808AA4C:
add sp, 0xC
pop {r4-r6}
@@ -4090,7 +4090,7 @@ _0808B1B8: .4byte 0x00007bce
sub_808B1BC: @ 808B1BC
lsls r0, 24
lsrs r0, 24
- ldr r2, _0808B1D0 @ =gUnknown_2039624
+ ldr r2, _0808B1D0 @ =gTrainerCards
lsls r1, r0, 1
adds r1, r0
lsls r1, 5
@@ -4098,7 +4098,7 @@ sub_808B1BC: @ 808B1BC
ldrb r0, [r1, 0x1]
bx lr
.align 2, 0
-_0808B1D0: .4byte gUnknown_2039624
+_0808B1D0: .4byte gTrainerCards
thumb_func_end sub_808B1BC
thumb_func_start sub_808B1D4
@@ -4792,7 +4792,7 @@ sub_808B700: @ 808B700
ldr r0, [r5]
ldr r1, _0808B760 @ =0x0000045c
adds r0, r1
- ldr r2, _0808B764 @ =gUnknown_2039624
+ ldr r2, _0808B764 @ =gTrainerCards
lsls r1, r4, 1
adds r1, r4
lsls r1, 5
@@ -4818,7 +4818,7 @@ sub_808B700: @ 808B700
_0808B758: .4byte gUnknown_20397A4
_0808B75C: .4byte 0x00007bd0
_0808B760: .4byte 0x0000045c
-_0808B764: .4byte gUnknown_2039624
+_0808B764: .4byte gTrainerCards
_0808B768: .4byte gLinkPlayers
_0808B76C: .4byte 0x00007bcf
_0808B770: .4byte sub_80895B8
@@ -4955,7 +4955,7 @@ sub_808B838: @ 808B838
adds r0, r1
ldrb r4, [r0]
adds r0, r4, 0
- bl sub_804454C
+ bl FacilityClassToPicIndex
lsls r0, 16
lsrs r0, 16
ldr r4, _0808B8A0 @ =gUnknown_83CD8EC
@@ -4982,7 +4982,7 @@ _0808B8A4:
cmp r0, 0
beq _0808B8FC
adds r0, r4, 0
- bl sub_804454C
+ bl FacilityClassToPicIndex
lsls r0, 16
lsrs r0, 16
ldr r4, _0808B8F4 @ =gUnknown_83CD8EC
@@ -5070,7 +5070,7 @@ _0808B95C: .4byte sub_80895B8
sub_808B960: @ 808B960
push {r4,lr}
adds r4, r0, 0
- ldr r0, _0808B984 @ =gUnknown_2039624
+ ldr r0, _0808B984 @ =gTrainerCards
ldr r1, _0808B988 @ =gUnknown_83CD960
movs r2, 0x60
bl memcpy
@@ -5083,7 +5083,7 @@ sub_808B960: @ 808B960
pop {r0}
bx r0
.align 2, 0
-_0808B984: .4byte gUnknown_2039624
+_0808B984: .4byte gTrainerCards
_0808B988: .4byte gUnknown_83CD960
_0808B98C: .4byte sub_80895B8
thumb_func_end sub_808B960
@@ -5092,7 +5092,7 @@ _0808B98C: .4byte sub_80895B8
sub_808B990: @ 808B990
push {r4,lr}
adds r4, r0, 0
- ldr r0, _0808B9B4 @ =gUnknown_2039624
+ ldr r0, _0808B9B4 @ =gTrainerCards
ldr r1, _0808B9B8 @ =gUnknown_83CD9C0
movs r2, 0x60
bl memcpy
@@ -5105,7 +5105,7 @@ sub_808B990: @ 808B990
pop {r0}
bx r0
.align 2, 0
-_0808B9B4: .4byte gUnknown_2039624
+_0808B9B4: .4byte gTrainerCards
_0808B9B8: .4byte gUnknown_83CD9C0
_0808B9BC: .4byte sub_80895B8
thumb_func_end sub_808B990
diff --git a/asm/trainer_see.s b/asm/trainer_see.s
index 6cc322609..c52229215 100644
--- a/asm/trainer_see.s
+++ b/asm/trainer_see.s
@@ -601,7 +601,7 @@ _08081F54:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x8]
adds r0, 0x1
_08081F82:
@@ -658,12 +658,12 @@ sub_8081FD0: @ 8081FD0
adds r5, r1, 0
adds r4, r2, 0
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _08081FEE
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _08082022
@@ -680,7 +680,7 @@ _08081FEE:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0xE]
subs r0, 0x1
strh r0, [r5, 0xE]
@@ -688,7 +688,7 @@ _08081FEE:
_08082014:
adds r0, r4, 0
movs r1, 0x4A
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
@@ -705,12 +705,12 @@ sub_808202C: @ 808202C
adds r5, r1, 0
adds r4, r2, 0
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _0808204A
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _080820AC
@@ -743,12 +743,12 @@ _0808204A:
ldr r1, _080820B8 @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _080820A2
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _080820AC
@@ -780,12 +780,12 @@ sub_80820BC: @ 80820BC
ldr r1, _080820FC @ =gMapObjects
adds r4, r0, r1
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _080820E8
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _080820EE
@@ -808,19 +808,19 @@ sub_8082100: @ 8082100
adds r5, r1, 0
adds r4, r2, 0
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _0808211E
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0808212C
_0808211E:
adds r0, r4, 0
movs r1, 0x67
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
@@ -836,7 +836,7 @@ sub_8082134: @ 8082134
push {r4,lr}
adds r4, r1, 0
adds r0, r2, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _08082148
@@ -855,19 +855,19 @@ sub_8082150: @ 8082150
adds r5, r1, 0
adds r4, r2, 0
adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _0808216E
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0808217C
_0808216E:
adds r0, r4, 0
movs r1, 0x4A
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
@@ -884,7 +884,7 @@ sub_8082184: @ 8082184
adds r5, r1, 0
adds r4, r2, 0
adds r0, r4, 0
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ bl FieldObjectCheckHeldMovementStatus
lsls r0, 24
cmp r0, 0
beq _080821CA
@@ -961,7 +961,7 @@ sub_80821DC: @ 80821DC
orrs r1, r2
strb r1, [r0, 0x5]
adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
ldrb r0, [r4, 0x18]
lsls r0, 28
lsrs r0, 28
@@ -970,7 +970,7 @@ sub_80821DC: @ 80821DC
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
@@ -1024,7 +1024,7 @@ sub_808226C: @ 808226C
movs r0, 0x12
movs r1, 0x7
movs r2, 0x7F
- bl SpawnSpecialFieldObjectParametrized
+ bl SpawnSpecialFieldObjectParameterized
ldr r2, _080822C8 @ =gMapObjects
lsls r1, r0, 3
adds r1, r0
@@ -1069,7 +1069,7 @@ sub_80822CC: @ 80822CC
lsls r0, 2
ldr r4, _0808234C @ =gMapObjects
adds r0, r4
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _08082312
@@ -1079,7 +1079,7 @@ sub_80822CC: @ 80822CC
adds r0, r1
lsls r0, 2
adds r0, r4
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0808236E
@@ -1104,7 +1104,7 @@ _08082312:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x12]
adds r0, 0x1
strh r0, [r5, 0x12]
@@ -1160,7 +1160,7 @@ sub_808237C: @ 808237C
lsls r0, 2
ldr r4, _08082408 @ =gMapObjects
adds r0, r4
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ bl FieldObjectIsMovementOverridden
lsls r0, 24
cmp r0, 0
beq _080823CC
@@ -1170,7 +1170,7 @@ sub_808237C: @ 808237C
adds r0, r1
lsls r0, 2
adds r0, r4
- bl FieldObjectClearAnimIfSpecialAnimFinished
+ bl FieldObjectClearHeldMovementIfFinished
lsls r0, 24
cmp r0, 0
beq _0808242E
@@ -1195,7 +1195,7 @@ _080823CC:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8063CA4
+ bl FieldObjectSetHeldMovement
ldrh r0, [r5, 0x12]
adds r0, 0x1
strh r0, [r5, 0x12]
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s
index c3c305d7d..9f8d7da11 100644
--- a/asm/union_room_chat.s
+++ b/asm/union_room_chat.s
@@ -499,7 +499,7 @@ _081287FE:
.align 2, 0
_0812880C: .4byte gUnknown_203B0E0
_08128810:
- bl ProcessMenuInput
+ bl Menu_ProcessInput
lsls r0, 24
asrs r0, 8
lsrs r6, r0, 16
@@ -534,7 +534,7 @@ _08128848:
movs r0, 0x5
bl PlaySE
movs r0, 0x1
- bl MoveMenuCursor
+ bl Menu_MoveCursor
b _081288CE
.align 2, 0
_08128864: .4byte gMain
@@ -2362,10 +2362,10 @@ _08129664:
ldrb r1, [r4, 0x8]
cmp r0, r1
beq _081296EC
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
movs r0, 0
adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r1, _08129684 @ =gUnknown_841B3AA
b _081296D8
.align 2, 0
@@ -2404,14 +2404,14 @@ _081296BE:
ldrb r5, [r5]
cmp r0, r5
beq _081296EC
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
movs r0, 0
adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r1, _081296E8 @ =gUnknown_841B3BE
_081296D8:
adds r0, r6, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
movs r0, 0x1
b _081296EE
.align 2, 0
@@ -2999,7 +2999,7 @@ sub_8129B14: @ 8129B14
bl InitBgsFromTemplates
ldr r0, _08129B6C @ =gUnknown_845AA94
bl InitWindows
- bl reset_temp_tile_data_buffers
+ bl ResetTempTileDataBuffers
bl sub_812AD50
ldr r0, [r4]
bl sub_8129BB8
@@ -3199,7 +3199,7 @@ _08129C9C: .4byte gUnknown_203B0E4
sub_8129CA0: @ 8129CA0
push {r4,lr}
adds r4, r0, 0
- bl free_temp_tile_data_buffers_if_possible
+ bl FreeTempTileDataBuffersIfPossible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3957,11 +3957,11 @@ sub_812A240: @ 812A240
beq _0812A280
b _0812A28A
_0812A250:
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
bl sub_8129814
adds r1, r0, 0
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r0, 0x5
movs r1, 0
bl sub_812A578
@@ -4122,11 +4122,11 @@ sub_812A378: @ 812A378
beq _0812A3BC
b _0812A3C6
_0812A388:
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r0, _0812A3B4 @ =gSaveBlock2Ptr
ldr r1, [r0]
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r0, 0x9
movs r1, 0
bl sub_812A578
@@ -4299,7 +4299,7 @@ sub_812A424: @ 812A424
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
_0812A4F0:
add sp, 0x14
pop {r3}
@@ -4329,7 +4329,7 @@ sub_812A51C: @ 812A51C
lsls r0, 24
lsrs r0, 24
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldr r0, [r4]
ldrb r0, [r0, 0x18]
bl ClearWindowTilemap
@@ -4366,7 +4366,7 @@ _0812A564: .4byte gUnknown_203B0E4
thumb_func_start sub_812A568
sub_812A568: @ 812A568
push {lr}
- bl ProcessMenuInput
+ bl Menu_ProcessInput
lsls r0, 24
asrs r0, 24
pop {r1}
@@ -4455,7 +4455,7 @@ _0812A5F8:
adds r0, r1, 0
adds r0, 0x22
ldr r1, [r4]
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
ldr r0, [r5]
adds r6, r0, 0
adds r6, 0x22
@@ -4516,7 +4516,7 @@ _0812A642:
adds r0, r5, 0
movs r1, 0x2
adds r2, r6, 0
- bl sub_812E62C
+ bl AddTextPrinterParameterized5
b _0812A6DA
.align 2, 0
_0812A6AC: .4byte gUnknown_845AB64
@@ -4539,7 +4539,7 @@ _0812A6B0:
adds r0, r5, 0
movs r1, 0x2
adds r2, r6, 0
- bl sub_812E62C
+ bl AddTextPrinterParameterized5
_0812A6DA:
ldr r0, _0812A6F0 @ =gUnknown_203B0E4
ldr r0, [r0]
@@ -4568,7 +4568,7 @@ sub_812A6F4: @ 812A6F4
lsls r0, 24
lsrs r0, 24
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
ldr r0, [r4]
ldrb r0, [r0, 0x1E]
bl ClearWindowTilemap
@@ -4689,7 +4689,7 @@ _0812A7B4:
movs r0, 0x1
movs r1, 0x2
movs r3, 0x1
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0x34
pop {r3-r5}
mov r8, r3
@@ -4767,7 +4767,7 @@ _0812A866:
movs r0, 0x2
movs r1, 0
lsrs r2, r5, 24
- bl box_print
+ bl AddTextPrinterParameterized3
adds r4, 0x4
adds r7, 0x1
adds r0, r6, 0
@@ -4807,7 +4807,7 @@ _0812A8A8:
movs r4, 0x80
lsls r4, 19
lsrs r2, r4, 24
- bl box_print
+ bl AddTextPrinterParameterized3
adds r0, r7, 0x1
str r0, [sp, 0x48]
adds r6, 0xC
@@ -4858,7 +4858,7 @@ _0812A90C:
movs r0, 0x2
movs r1, 0
adds r3, r4, 0
- bl box_print
+ bl AddTextPrinterParameterized3
adds r2, r7, 0
add r0, sp, 0xC
str r0, [sp]
@@ -4870,7 +4870,7 @@ _0812A90C:
movs r0, 0x2
movs r1, 0
adds r3, r4, 0
- bl box_print
+ bl AddTextPrinterParameterized3
_0812A960:
ldr r7, [sp, 0x48]
mov r4, r10
@@ -4987,7 +4987,7 @@ sub_812AA10: @ 812AA10
movs r1, 0x2
movs r2, 0xE
movs r3, 0x5
- bl sub_810FC80
+ bl UnionRoomAndTradeMenuPrintOptions
bl sub_81296F4
lsls r0, 24
lsrs r0, 24
@@ -5000,7 +5000,7 @@ sub_812AA10: @ 812AA10
movs r1, 0x2
movs r2, 0
movs r3, 0
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x3
bl PutWindowTilemap
add sp, 0xC
@@ -5015,7 +5015,7 @@ sub_812AA64: @ 812AA64
push {lr}
movs r0, 0x3
movs r1, 0
- bl sub_810F4D8
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x3
bl ClearWindowTilemap
pop {r0}
@@ -5063,7 +5063,7 @@ sub_812AA78: @ 812AA78
movs r1, 0x2
movs r2, 0
adds r3, r4, 0
- bl box_print
+ bl AddTextPrinterParameterized3
add sp, 0x10
pop {r4,r5}
pop {r0}
@@ -5224,7 +5224,7 @@ sub_812AC08: @ 812AC08
movs r0, 0x1
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r1, _0812AC54 @ =gUnknown_8EAAA6C
movs r0, 0x1
movs r2, 0
@@ -5256,7 +5256,7 @@ sub_812AC58: @ 812AC58
movs r0, 0x2
movs r2, 0
movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
+ bl DecompressAndCopyTileDataToVram
ldr r1, _0812AC98 @ =gUnknown_8EA1958
movs r0, 0x2
movs r2, 0
@@ -5350,11 +5350,11 @@ sub_812AD20: @ 812AD20
movs r0, 0x3
movs r1, 0x1
movs r2, 0xD0
- bl sub_815001C
+ bl TextWindow_SetUserSelectedFrame
movs r0, 0x3
movs r1, 0xA
movs r2, 0x20
- bl sub_814FF2C
+ bl TextWindow_SetStdFrame0_WithPal
ldr r0, _0812AD4C @ =gTMCaseMainWindowPalette
movs r1, 0xE0
movs r2, 0x20
@@ -5510,7 +5510,7 @@ sub_812AE70: @ 812AE70
ldr r4, _0812AE9C @ =gUnknown_845AF58
_0812AE76:
adds r0, r4, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x4
diff --git a/asm/unk_815EDDC.s b/asm/unk_815EDDC.s
deleted file mode 100644
index 16db54083..000000000
--- a/asm/unk_815EDDC.s
+++ /dev/null
@@ -1,407 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_815EE3C
-sub_815EE3C: @ 815EE3C
- ldr r1, _0815EE50 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- movs r2, 0xF2
- lsls r2, 4
- adds r1, r2
- ldr r0, [r0]
- ldr r1, [r1]
- eors r0, r1
- bx lr
- .align 2, 0
-_0815EE50: .4byte gSaveBlock2Ptr
- thumb_func_end sub_815EE3C
-
- thumb_func_start sub_815EE54
-sub_815EE54: @ 815EE54
- ldr r2, _0815EE68 @ =gSaveBlock2Ptr
- ldr r2, [r2]
- movs r3, 0xF2
- lsls r3, 4
- adds r2, r3
- ldr r2, [r2]
- eors r2, r1
- str r2, [r0]
- bx lr
- .align 2, 0
-_0815EE68: .4byte gSaveBlock2Ptr
- thumb_func_end sub_815EE54
-
- thumb_func_start sub_815EE6C
-sub_815EE6C: @ 815EE6C
- push {lr}
- adds r1, r0, 0
- ldr r0, _0815EE80 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r2, _0815EE84 @ =0x00000af8
- adds r0, r2
- bl ApplyNewEncryptionKeyToWord
- pop {r0}
- bx r0
- .align 2, 0
-_0815EE80: .4byte gSaveBlock2Ptr
-_0815EE84: .4byte 0x00000af8
- thumb_func_end sub_815EE6C
-
- thumb_func_start sub_815EE88
-sub_815EE88: @ 815EE88
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0815EEA0 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _0815EEA4 @ =0x00000af8
- adds r0, r1
- bl sub_815EE3C
- cmp r0, r4
- bcc _0815EEA8
- movs r0, 0x1
- b _0815EEAA
- .align 2, 0
-_0815EEA0: .4byte gSaveBlock2Ptr
-_0815EEA4: .4byte 0x00000af8
-_0815EEA8:
- movs r0, 0
-_0815EEAA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_815EE88
-
- thumb_func_start sub_815EEB0
-sub_815EEB0: @ 815EEB0
- push {lr}
- ldr r0, _0815EECC @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _0815EED0 @ =0x00000af8
- adds r0, r1
- bl sub_815EE3C
- ldr r1, _0815EED4 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- cmp r0, r1
- bcc _0815EED8
- movs r0, 0x1
- b _0815EEDA
- .align 2, 0
-_0815EECC: .4byte gSaveBlock2Ptr
-_0815EED0: .4byte 0x00000af8
-_0815EED4: .4byte gSpecialVar_0x8004
-_0815EED8:
- movs r0, 0
-_0815EEDA:
- pop {r1}
- bx r1
- thumb_func_end sub_815EEB0
-
- thumb_func_start sub_815EEE0
-sub_815EEE0: @ 815EEE0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, _0815EF04 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _0815EF08 @ =0x00000af8
- adds r5, r0, r1
- adds r0, r5, 0
- bl sub_815EE3C
- adds r1, r0, r4
- ldr r2, _0815EF0C @ =0x0001869f
- cmp r1, r2
- bhi _0815EF10
- adds r0, r5, 0
- bl sub_815EE54
- movs r0, 0x1
- b _0815EF1A
- .align 2, 0
-_0815EF04: .4byte gSaveBlock2Ptr
-_0815EF08: .4byte 0x00000af8
-_0815EF0C: .4byte 0x0001869f
-_0815EF10:
- adds r0, r5, 0
- adds r1, r2, 0
- bl sub_815EE54
- movs r0, 0
-_0815EF1A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_815EEE0
-
- thumb_func_start sub_815EF20
-sub_815EF20: @ 815EF20
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _0815EF4C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _0815EF50 @ =0x00000af8
- adds r4, r0, r1
- adds r0, r5, 0
- bl sub_815EE88
- lsls r0, 24
- cmp r0, 0
- beq _0815EF54
- adds r0, r4, 0
- bl sub_815EE3C
- adds r1, r0, 0
- subs r1, r5
- adds r0, r4, 0
- bl sub_815EE54
- movs r0, 0x1
- b _0815EF56
- .align 2, 0
-_0815EF4C: .4byte gSaveBlock2Ptr
-_0815EF50: .4byte 0x00000af8
-_0815EF54:
- movs r0, 0
-_0815EF56:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_815EF20
-
- thumb_func_start sub_815EF5C
-sub_815EF5C: @ 815EF5C
- push {r4,r5,lr}
- ldr r0, _0815EF8C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _0815EF90 @ =0x00000af8
- adds r4, r0, r1
- ldr r5, _0815EF94 @ =gSpecialVar_0x8004
- ldrh r0, [r5]
- bl sub_815EE88
- lsls r0, 24
- cmp r0, 0
- beq _0815EF98
- adds r0, r4, 0
- bl sub_815EE3C
- adds r1, r0, 0
- ldrh r0, [r5]
- subs r1, r0
- adds r0, r4, 0
- bl sub_815EE54
- movs r0, 0x1
- b _0815EF9A
- .align 2, 0
-_0815EF8C: .4byte gSaveBlock2Ptr
-_0815EF90: .4byte 0x00000af8
-_0815EF94: .4byte gSpecialVar_0x8004
-_0815EF98:
- movs r0, 0
-_0815EF9A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_815EF5C
-
- thumb_func_start sub_815EFA0
-sub_815EFA0: @ 815EFA0
- push {lr}
- ldr r0, _0815EFB4 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _0815EFB8 @ =0x00000af8
- adds r0, r1
- bl sub_815EE3C
- pop {r1}
- bx r1
- .align 2, 0
-_0815EFB4: .4byte gSaveBlock2Ptr
-_0815EFB8: .4byte 0x00000af8
- thumb_func_end sub_815EFA0
-
- thumb_func_start sub_815EFBC
-sub_815EFBC: @ 815EFBC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0xC
- adds r6, r0, 0
- mov r8, r2
- adds r4, r3, 0
- ldr r5, [sp, 0x24]
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _0815F010 @ =gStringVar1
- mov r9, r0
- movs r2, 0x1
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0
- mov r2, r9
- mov r3, r8
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F010: .4byte gStringVar1
- thumb_func_end sub_815EFBC
-
- thumb_func_start sub_815F014
-sub_815F014: @ 815F014
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- mov r8, r3
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- movs r1, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl SetWindowBorderStyle
- ldr r2, _0815F06C @ =gUnknown_8416655
- movs r4, 0
- str r4, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0
- movs r3, 0
- bl AddTextPrinterParameterized
- str r4, [sp]
- adds r0, r6, 0
- mov r1, r8
- movs r2, 0x27
- movs r3, 0xC
- bl sub_815EFBC
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F06C: .4byte gUnknown_8416655
- thumb_func_end sub_815F014
-
- thumb_func_start sub_815F070
-sub_815F070: @ 815F070
- push {lr}
- sub sp, 0x4
- bl sub_815EFA0
- adds r1, r0, 0
- ldr r0, _0815F090 @ =gUnknown_203F464
- ldrb r0, [r0]
- movs r2, 0
- str r2, [sp]
- movs r2, 0x27
- movs r3, 0xC
- bl sub_815EFBC
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0815F090: .4byte gUnknown_203F464
- thumb_func_end sub_815F070
-
- thumb_func_start sub_815F094
-sub_815F094: @ 815F094
- push {r4,r5,lr}
- sub sp, 0x20
- ldr r0, _0815F108 @ =sub_809D6D4
- bl sub_81119D4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0815F100
- movs r0, 0x8
- str r0, [sp]
- movs r0, 0x3
- str r0, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0x20
- str r0, [sp, 0xC]
- add r0, sp, 0x10
- movs r1, 0
- movs r2, 0x1
- movs r3, 0x1
- bl SetWindowTemplateFields
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- ldr r4, _0815F10C @ =gUnknown_203F464
- add r0, sp, 0x18
- bl AddWindow
- strb r0, [r4]
- ldrb r0, [r4]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- bl PutWindowTilemap
- ldrb r0, [r4]
- ldr r5, _0815F110 @ =0x0000021d
- adds r1, r5, 0
- movs r2, 0xD0
- bl sub_814FF2C
- ldrb r4, [r4]
- bl sub_815EFA0
- adds r3, r0, 0
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0xD
- bl sub_815F014
-_0815F100:
- add sp, 0x20
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F108: .4byte sub_809D6D4
-_0815F10C: .4byte gUnknown_203F464
-_0815F110: .4byte 0x0000021d
- thumb_func_end sub_815F094
-
- thumb_func_start sub_815F114
-sub_815F114: @ 815F114
- push {r4,lr}
- ldr r4, _0815F134 @ =gUnknown_203F464
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_810F4D8
- ldrb r0, [r4]
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F134: .4byte gUnknown_203F464
- thumb_func_end sub_815F114
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/unk_815F138.s b/asm/unk_815F138.s
deleted file mode 100644
index 3a1d49e81..000000000
--- a/asm/unk_815F138.s
+++ /dev/null
@@ -1,753 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_815F138
-sub_815F138: @ 815F138
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- ldr r0, [sp, 0x18]
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 16
- lsrs r6, 16
- lsls r3, 16
- lsrs r3, 16
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _0815F190 @ =sub_815F1AC
- movs r1, 0x50
- str r3, [sp]
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0815F194 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xC]
- strh r5, [r1, 0xE]
- strh r6, [r1, 0x10]
- ldr r3, [sp]
- strh r3, [r1, 0x12]
- mov r0, r8
- strh r0, [r1, 0x14]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F190: .4byte sub_815F1AC
-_0815F194: .4byte gTasks
- thumb_func_end sub_815F138
-
- thumb_func_start sub_815F198
-sub_815F198: @ 815F198
- push {lr}
- ldr r0, _0815F1A8 @ =sub_815F1AC
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0815F1A8: .4byte sub_815F1AC
- thumb_func_end sub_815F198
-
- thumb_func_start sub_815F1AC
-sub_815F1AC: @ 815F1AC
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _0815F1D0 @ =gTasks+0x8
- adds r5, r0, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _0815F21C
- cmp r0, 0x1
- bgt _0815F1D4
- cmp r0, 0
- beq _0815F1DA
- b _0815F29E
- .align 2, 0
-_0815F1D0: .4byte gTasks+0x8
-_0815F1D4:
- cmp r0, 0x2
- beq _0815F260
- b _0815F29E
-_0815F1DA:
- ldrh r0, [r5, 0x4]
- ldrh r1, [r5, 0x6]
- bl sub_815F564
- ldrh r0, [r5, 0x4]
- ldrh r1, [r5, 0x6]
- movs r3, 0x8
- ldrsh r2, [r5, r3]
- movs r4, 0xA
- ldrsh r3, [r5, r4]
- ldrb r4, [r5, 0xC]
- str r4, [sp]
- bl sub_815F5BC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xE]
- ldrh r0, [r5, 0x4]
- ldrh r1, [r5, 0x6]
- movs r3, 0x8
- ldrsh r2, [r5, r3]
- movs r4, 0xA
- ldrsh r3, [r5, r4]
- ldrb r4, [r5, 0xC]
- str r4, [sp]
- adds r4, r5, 0
- adds r4, 0x10
- str r4, [sp, 0x4]
- adds r4, 0x2
- str r4, [sp, 0x8]
- bl sub_815F610
- b _0815F252
-_0815F21C:
- ldrb r0, [r5, 0xE]
- bl sub_815F2AC
- cmp r0, 0
- bne _0815F29E
- ldrb r0, [r5, 0xE]
- ldrb r1, [r5, 0x10]
- ldrb r2, [r5, 0x12]
- bl sub_815F3E0
- movs r0, 0xE
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _0815F25C @ =gSprites
- adds r0, r4
- bl FreeSpriteOamMatrix
- movs r3, 0xE
- ldrsh r1, [r5, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
-_0815F252:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- b _0815F29E
- .align 2, 0
-_0815F25C: .4byte gSprites
-_0815F260:
- ldrb r0, [r5, 0x10]
- bl sub_815F444
- cmp r0, 0
- bne _0815F29E
- movs r4, 0x10
- ldrsh r1, [r5, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _0815F2A8 @ =gSprites
- adds r0, r4
- bl DestroySprite
- movs r0, 0x12
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldrh r0, [r5, 0x4]
- bl FreeSpriteTilesByTag
- ldrh r0, [r5, 0x6]
- bl FreeSpritePaletteByTag
- adds r0, r6, 0
- bl DestroyTask
-_0815F29E:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F2A8: .4byte gSprites
- thumb_func_end sub_815F1AC
-
- thumb_func_start sub_815F2AC
-sub_815F2AC: @ 815F2AC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0815F2D0 @ =gSprites
- adds r4, r1, r0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x7
- bls _0815F2C6
- b _0815F3D8
-_0815F2C6:
- lsls r0, 2
- ldr r1, _0815F2D4 @ =_0815F2D8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0815F2D0: .4byte gSprites
-_0815F2D4: .4byte _0815F2D8
- .align 2, 0
-_0815F2D8:
- .4byte _0815F2F8
- .4byte _0815F30A
- .4byte _0815F330
- .4byte _0815F340
- .4byte _0815F362
- .4byte _0815F39A
- .4byte _0815F3C0
- .4byte _0815F396
-_0815F2F8:
- movs r1, 0x80
- lsls r1, 4
- adds r0, r4, 0
- movs r2, 0x1A
- bl sub_8007FFC
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
-_0815F30A:
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0815F318
- movs r0, 0x32
- bl PlaySE
-_0815F318:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _0815F3D8
- movs r0, 0
- strh r0, [r4, 0x32]
- adds r0, r4, 0
- movs r1, 0x1
- b _0815F3B6
-_0815F330:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0815F3D8
- b _0815F3BA
-_0815F340:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _0815F3D8
- movs r0, 0
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- b _0815F3D8
-_0815F362:
- ldrh r0, [r4, 0x22]
- subs r0, 0x4
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _0815F3D8
- ldrh r1, [r4, 0x36]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bgt _0815F392
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- movs r0, 0
- strh r0, [r4, 0x32]
- b _0815F3BA
-_0815F392:
- movs r0, 0x7
- strh r0, [r4, 0x2E]
-_0815F396:
- movs r0, 0
- b _0815F3DA
-_0815F39A:
- ldrh r0, [r4, 0x22]
- adds r0, 0x4
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _0815F3D8
- movs r0, 0
- strh r0, [r4, 0x32]
- adds r0, r4, 0
- movs r1, 0x3
-_0815F3B6:
- bl StartSpriteAffineAnim
-_0815F3BA:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- b _0815F3D6
-_0815F3C0:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0815F3D8
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- movs r0, 0x1
-_0815F3D6:
- strh r0, [r4, 0x2E]
-_0815F3D8:
- movs r0, 0x1
-_0815F3DA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_815F2AC
-
- thumb_func_start sub_815F3E0
-sub_815F3E0: @ 815F3E0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0815F438 @ =gSprites
- mov r8, r0
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- adds r5, r4, r0
- ldr r0, _0815F43C @ =0x0000ffd8
- strh r0, [r5, 0x26]
- lsls r3, r2, 4
- adds r3, r2
- lsls r3, 2
- mov r1, r8
- adds r2, r3, r1
- strh r0, [r2, 0x26]
- adds r5, 0x3E
- ldrb r6, [r5]
- movs r1, 0x5
- negs r1, r1
- adds r0, r1, 0
- ands r0, r6
- strb r0, [r5]
- adds r2, 0x3E
- ldrb r0, [r2]
- ands r1, r0
- strb r1, [r2]
- movs r0, 0x1C
- add r8, r0
- add r4, r8
- ldr r0, _0815F440 @ =sub_815F470
- str r0, [r4]
- add r3, r8
- str r0, [r3]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F438: .4byte gSprites
-_0815F43C: .4byte 0x0000ffd8
-_0815F440: .4byte sub_815F470
- thumb_func_end sub_815F3E0
-
- thumb_func_start sub_815F444
-sub_815F444: @ 815F444
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0
- ldr r2, _0815F468 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r2, 0x1C
- adds r1, r2
- ldr r1, [r1]
- ldr r0, _0815F46C @ =sub_815F470
- cmp r1, r0
- bne _0815F462
- movs r3, 0x1
-_0815F462:
- adds r0, r3, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0815F468: .4byte gSprites
-_0815F46C: .4byte sub_815F470
- thumb_func_end sub_815F444
-
- thumb_func_start sub_815F470
-sub_815F470: @ 815F470
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r5, 0
- adds r4, 0x2E
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bhi _0815F55A
- lsls r0, 2
- ldr r1, _0815F48C @ =_0815F490
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0815F48C: .4byte _0815F490
- .align 2, 0
-_0815F490:
- .4byte _0815F4A4
- .4byte _0815F4B4
- .4byte _0815F4DC
- .4byte _0815F510
- .4byte _0815F548
-_0815F4A4:
- movs r0, 0x40
- strh r0, [r4, 0x8]
- ldrh r0, [r5, 0x26]
- lsls r0, 4
- strh r0, [r4, 0xA]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_0815F4B4:
- ldrh r1, [r4, 0x8]
- ldrh r2, [r4, 0xA]
- adds r0, r1, r2
- strh r0, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0x8]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r5, 0x26]
- cmp r0, 0
- blt _0815F55A
- movs r0, 0x32
- bl PlaySE
- movs r0, 0
- strh r0, [r5, 0x26]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _0815F55A
-_0815F4DC:
- ldrh r0, [r4, 0x2]
- adds r0, 0xC
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7F
- ble _0815F4FA
- movs r0, 0x32
- bl PlaySE
- movs r0, 0
- strh r0, [r4, 0x2]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_0815F4FA:
- ldr r0, _0815F50C @ =gSineTable
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- lsls r1, 1
- adds r1, r0
- movs r2, 0
- ldrsh r0, [r1, r2]
- asrs r0, 4
- b _0815F53E
- .align 2, 0
-_0815F50C: .4byte gSineTable
-_0815F510:
- ldrh r0, [r4, 0x2]
- adds r0, 0x10
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7F
- ble _0815F52E
- movs r0, 0x32
- bl PlaySE
- movs r0, 0
- strh r0, [r4, 0x2]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_0815F52E:
- ldr r1, _0815F544 @ =gSineTable
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 21
-_0815F53E:
- negs r0, r0
- strh r0, [r5, 0x26]
- b _0815F55A
- .align 2, 0
-_0815F544: .4byte gSineTable
-_0815F548:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x28
- ble _0815F55A
- ldr r0, _0815F560 @ =SpriteCallbackDummy
- str r0, [r5, 0x1C]
-_0815F55A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F560: .4byte SpriteCallbackDummy
- thumb_func_end sub_815F470
-
- thumb_func_start sub_815F564
-sub_815F564: @ 815F564
- push {r4,lr}
- sub sp, 0x10
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _0815F5AC @ =gUnknown_847A79C
- ldr r3, [r2, 0x4]
- ldr r2, [r2]
- str r2, [sp]
- str r3, [sp, 0x4]
- ldr r2, _0815F5B0 @ =gUnknown_847A7A4
- ldr r3, [r2, 0x4]
- ldr r2, [r2]
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- lsls r0, 16
- ldr r3, _0815F5B4 @ =0x0000ffff
- ldr r2, [sp, 0x4]
- ands r2, r3
- orrs r2, r0
- str r2, [sp, 0x4]
- ldr r2, _0815F5B8 @ =0xffff0000
- add r4, sp, 0x8
- ldr r0, [r4, 0x4]
- ands r0, r2
- orrs r0, r1
- str r0, [r4, 0x4]
- mov r0, sp
- bl LoadCompressedObjectPic
- adds r0, r4, 0
- bl LoadSpritePalette
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F5AC: .4byte gUnknown_847A79C
-_0815F5B0: .4byte gUnknown_847A7A4
-_0815F5B4: .4byte 0x0000ffff
-_0815F5B8: .4byte 0xffff0000
- thumb_func_end sub_815F564
-
- thumb_func_start sub_815F5BC
-sub_815F5BC: @ 815F5BC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x18
- mov r12, r3
- ldr r3, [sp, 0x30]
- lsls r1, 16
- lsrs r1, 16
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- mov r5, sp
- ldr r4, _0815F60C @ =gUnknown_847A860
- ldm r4!, {r3,r6,r7}
- stm r5!, {r3,r6,r7}
- ldm r4!, {r3,r6,r7}
- stm r5!, {r3,r6,r7}
- mov r4, sp
- strh r0, [r4]
- mov r0, sp
- strh r1, [r0, 0x2]
- lsls r2, 16
- asrs r2, 16
- mov r0, r12
- lsls r6, r0, 16
- asrs r6, 16
- mov r0, sp
- adds r1, r2, 0
- adds r2, r6, 0
- mov r3, r8
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0815F60C: .4byte gUnknown_847A860
- thumb_func_end sub_815F5BC
-
- thumb_func_start sub_815F610
-sub_815F610: @ 815F610
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- mov r12, r3
- ldr r6, [sp, 0x38]
- ldr r3, [sp, 0x3C]
- mov r9, r3
- ldr r4, [sp, 0x40]
- mov r8, r4
- lsls r1, 16
- lsrs r1, 16
- lsls r6, 24
- lsrs r6, 24
- mov r10, r6
- mov r4, sp
- ldr r3, _0815F6D4 @ =gUnknown_847A878
- ldm r3!, {r5-r7}
- stm r4!, {r5-r7}
- ldm r3!, {r5-r7}
- stm r4!, {r5-r7}
- mov r3, sp
- strh r0, [r3]
- mov r0, sp
- strh r1, [r0, 0x2]
- lsls r2, 16
- asrs r4, r2, 16
- ldr r0, _0815F6D8 @ =0xffe00000
- adds r2, r0
- asrs r2, 16
- mov r1, r12
- lsls r5, r1, 16
- asrs r5, 16
- mov r0, sp
- adds r1, r2, 0
- adds r2, r5, 0
- mov r3, r10
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r3, r9
- strh r0, [r3]
- adds r4, 0x20
- lsls r4, 16
- asrs r4, 16
- mov r0, sp
- adds r1, r4, 0
- adds r2, r5, 0
- mov r3, r10
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r4, r8
- strh r0, [r4]
- ldr r2, _0815F6DC @ =gSprites
- mov r5, r9
- movs r6, 0
- ldrsh r1, [r5, r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r3, 0x4
- orrs r1, r3
- strb r1, [r0]
- movs r7, 0
- ldrsh r1, [r4, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- movs r0, 0
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x1
- bl StartSpriteAnim
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F6D4: .4byte gUnknown_847A878
-_0815F6D8: .4byte 0xffe00000
-_0815F6DC: .4byte gSprites
- thumb_func_end sub_815F610
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/unk_text_util.s b/asm/unk_text_util.s
deleted file mode 100644
index 15d21c95a..000000000
--- a/asm/unk_text_util.s
+++ /dev/null
@@ -1,130 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start UnkTextUtil_Reset
-UnkTextUtil_Reset: @ 813CC90
- push {lr}
- ldr r1, _0813CCA8 @ =gUnknown_203F34C
- movs r2, 0
- adds r0, r1, 0
- adds r0, 0x1C
-_0813CC9A:
- str r2, [r0]
- subs r0, 0x4
- cmp r0, r1
- bge _0813CC9A
- pop {r0}
- bx r0
- .align 2, 0
-_0813CCA8: .4byte gUnknown_203F34C
- thumb_func_end UnkTextUtil_Reset
-
- thumb_func_start UnkTextUtil_SetPtrI
-UnkTextUtil_SetPtrI: @ 813CCAC
- push {lr}
- adds r2, r1, 0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x7
- bhi _0813CCC0
- ldr r1, _0813CCC4 @ =gUnknown_203F34C
- lsls r0, 2
- adds r0, r1
- str r2, [r0]
-_0813CCC0:
- pop {r0}
- bx r0
- .align 2, 0
-_0813CCC4: .4byte gUnknown_203F34C
- thumb_func_end UnkTextUtil_SetPtrI
-
- thumb_func_start UnkTextUtil_StringExpandPlaceholders
-UnkTextUtil_StringExpandPlaceholders: @ 813CCC8
- push {r4,r5,lr}
- adds r2, r0, 0
- adds r4, r1, 0
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _0813CD08
- ldr r5, _0813CCE4 @ =gUnknown_203F34C
-_0813CCD8:
- cmp r1, 0xF7
- beq _0813CCE8
- strb r1, [r2]
- adds r4, 0x1
- adds r2, 0x1
- b _0813CD00
- .align 2, 0
-_0813CCE4: .4byte gUnknown_203F34C
-_0813CCE8:
- adds r4, 0x1
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- cmp r1, 0
- beq _0813CCFE
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
-_0813CCFE:
- adds r4, 0x1
-_0813CD00:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0813CCD8
-_0813CD08:
- movs r0, 0xFF
- strb r0, [r2]
- adds r0, r2, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end UnkTextUtil_StringExpandPlaceholders
-
- thumb_func_start UnkTextUtil_GetPtrI
-UnkTextUtil_GetPtrI: @ 813CD14
- lsls r0, 24
- ldr r1, _0813CD20 @ =gUnknown_203F34C
- lsrs r0, 22
- adds r0, r1
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_0813CD20: .4byte gUnknown_203F34C
- thumb_func_end UnkTextUtil_GetPtrI
-
- thumb_func_start sub_813CD24
-sub_813CD24: @ 813CD24
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- lsrs r2, r0, 17
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- cmp r2, 0x4B
- bhi _0813CD48
- ldr r0, _0813CD44 @ =gUnknown_8464300
- adds r0, r2, r0
- ldrb r0, [r0]
- asrs r0, r1
- movs r1, 0xF
- ands r0, r1
- b _0813CD4A
- .align 2, 0
-_0813CD44: .4byte gUnknown_8464300
-_0813CD48:
- movs r0, 0x3
-_0813CD4A:
- pop {r1}
- bx r1
- thumb_func_end sub_813CD24
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/water.s b/asm/water.s
new file mode 100644
index 000000000..5518dd33e
--- /dev/null
+++ b/asm/water.s
@@ -0,0 +1,3775 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80AABC0
+sub_80AABC0: @ 80AABC0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ ldr r1, _080AAC48 @ =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 _080AABE8
+ ldr r1, _080AAC4C @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r5, 0xA]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0xC]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0xE]
+_080AABE8:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ movs r2, 0x8
+ ldrsh r0, [r5, r2]
+ movs r2, 0xC
+ ldrsh r1, [r5, r2]
+ bl __modsi3
+ cmp r0, 0x1
+ bne _080AAC30
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xF0
+ bl __umodsi3
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x50
+ bl __umodsi3
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r0, _080AAC50 @ =gUnknown_83E5898
+ adds r1, r4, 0
+ movs r3, 0x4
+ bl CreateSprite
+_080AAC30:
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ movs r2, 0xE
+ ldrsh r0, [r5, r2]
+ cmp r1, r0
+ bne _080AAC42
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080AAC42:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AAC48: .4byte gTasks
+_080AAC4C: .4byte gBattleAnimArgs
+_080AAC50: .4byte gUnknown_83E5898
+ thumb_func_end sub_80AABC0
+
+ thumb_func_start sub_80AAC54
+sub_80AAC54: @ 80AAC54
+ ldr r1, _080AAC5C @ =sub_80AAC60
+ str r1, [r0, 0x1C]
+ bx lr
+ .align 2, 0
+_080AAC5C: .4byte sub_80AAC60
+ thumb_func_end sub_80AAC54
+
+ thumb_func_start sub_80AAC60
+sub_80AAC60: @ 80AAC60
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ bgt _080AAC7E
+ ldrh r0, [r2, 0x24]
+ adds r0, 0x1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x26]
+ adds r0, 0x4
+ strh r0, [r2, 0x26]
+_080AAC7E:
+ adds r0, r2, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080AAC92
+ adds r0, r2, 0
+ bl DestroySprite
+_080AAC92:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AAC60
+
+ thumb_func_start sub_80AAC98
+sub_80AAC98: @ 80AAC98
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ ldr r5, _080AACC0 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AACC8
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r4, _080AACC4 @ =gBattleAnimArgs
+ ldrh r1, [r4]
+ subs r0, r1
+ b _080AACDA
+ .align 2, 0
+_080AACC0: .4byte gBattleAnimAttacker
+_080AACC4: .4byte gBattleAnimArgs
+_080AACC8:
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080AADA0 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4]
+ adds r0, r1
+_080AACDA:
+ strh r0, [r6, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r4, [r4, 0x2]
+ adds r0, r4
+ strh r0, [r6, 0x22]
+ adds r2, r6, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080AADA4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AAD10
+ ldr r1, _080AADA0 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080AAD10:
+ ldr r5, _080AADA0 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0xC]
+ strh r0, [r6, 0x2E]
+ ldrh r0, [r6, 0x20]
+ strh r0, [r6, 0x30]
+ ldr r4, _080AADA8 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x32]
+ ldrh r0, [r6, 0x22]
+ strh r0, [r6, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x36]
+ adds r0, r6, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldr r0, _080AADAC @ =SpriteCallbackDummy
+ bl CreateInvisibleSpriteWithCallback
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ strh r4, [r6, 0x38]
+ ldrb r0, [r5, 0x8]
+ movs r2, 0x4
+ ldrsh r1, [r5, r2]
+ bl Sin
+ ldrh r1, [r6, 0x20]
+ subs r1, r0
+ strh r1, [r6, 0x20]
+ ldrb r0, [r5, 0x8]
+ movs r2, 0x6
+ ldrsh r1, [r5, r2]
+ bl Cos
+ ldrh r1, [r6, 0x22]
+ subs r1, r0
+ strh r1, [r6, 0x22]
+ ldr r0, _080AADB0 @ =gSprites
+ lsls r1, r4, 4
+ adds r1, r4
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r5, 0x4]
+ strh r0, [r1, 0x2E]
+ ldrh r0, [r5, 0x6]
+ strh r0, [r1, 0x30]
+ ldrh r0, [r5, 0xA]
+ strh r0, [r1, 0x32]
+ ldrb r0, [r5, 0x8]
+ lsls r0, 8
+ strh r0, [r1, 0x34]
+ ldrh r0, [r5, 0xC]
+ strh r0, [r1, 0x36]
+ ldr r1, _080AADB4 @ =sub_80AADB8
+ str r1, [r6, 0x1C]
+ adds r0, r6, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AADA0: .4byte gBattleAnimArgs
+_080AADA4: .4byte gBattleAnimAttacker
+_080AADA8: .4byte gBattleAnimTarget
+_080AADAC: .4byte SpriteCallbackDummy
+_080AADB0: .4byte gSprites
+_080AADB4: .4byte sub_80AADB8
+ thumb_func_end sub_80AAC98
+
+ thumb_func_start sub_80AADB8
+sub_80AADB8: @ 80AADB8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldrh r1, [r5, 0x38]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080AAE20 @ =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r7, r0, r2
+ ldrh r4, [r7, 0x36]
+ lsls r4, 24
+ lsrs r4, 24
+ ldrh r0, [r7, 0x34]
+ mov r8, r0
+ movs r0, 0x1
+ strh r0, [r5, 0x2E]
+ adds r0, r5, 0
+ bl sub_80755E0
+ mov r1, r8
+ lsrs r6, r1, 8
+ movs r0, 0x2E
+ ldrsh r1, [r7, r0]
+ adds r0, r6, 0
+ bl Sin
+ ldrh r1, [r5, 0x24]
+ adds r0, r1
+ strh r0, [r5, 0x24]
+ movs r0, 0x30
+ ldrsh r1, [r7, r0]
+ adds r0, r6, 0
+ bl Cos
+ ldrh r1, [r5, 0x26]
+ adds r0, r1
+ strh r0, [r5, 0x26]
+ ldrh r0, [r7, 0x32]
+ mov r1, r8
+ adds r1, r0
+ strh r1, [r7, 0x34]
+ subs r4, 0x1
+ lsls r4, 24
+ lsrs r4, 24
+ cmp r4, 0
+ beq _080AAE24
+ strh r4, [r7, 0x36]
+ b _080AAE2E
+ .align 2, 0
+_080AAE20: .4byte gSprites
+_080AAE24:
+ ldr r0, _080AAE3C @ =sub_80AAE40
+ str r0, [r5, 0x1C]
+ adds r0, r7, 0
+ bl DestroySprite
+_080AAE2E:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AAE3C: .4byte sub_80AAE40
+ thumb_func_end sub_80AADB8
+
+ thumb_func_start sub_80AAE40
+sub_80AAE40: @ 80AAE40
+ push {lr}
+ adds r3, r0, 0
+ adds r3, 0x2C
+ ldrb r2, [r3]
+ movs r1, 0x41
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r3]
+ ldr r1, _080AAE60 @ =sub_8074F6C
+ str r1, [r0, 0x1C]
+ ldr r1, _080AAE64 @ =sub_80AAE68
+ bl StoreSpriteCallbackInData6
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AAE60: .4byte sub_8074F6C
+_080AAE64: .4byte sub_80AAE68
+ thumb_func_end sub_80AAE40
+
+ thumb_func_start sub_80AAE68
+sub_80AAE68: @ 80AAE68
+ push {lr}
+ movs r1, 0xA
+ strh r1, [r0, 0x2E]
+ ldr r1, _080AAE7C @ =sub_8074C44
+ str r1, [r0, 0x1C]
+ ldr r1, _080AAE80 @ =move_anim_8074EE0
+ bl StoreSpriteCallbackInData6
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AAE7C: .4byte sub_8074C44
+_080AAE80: .4byte move_anim_8074EE0
+ thumb_func_end sub_80AAE68
+
+ thumb_func_start sub_80AAE84
+sub_80AAE84: @ 80AAE84
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080AAEAC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AAEB4
+ ldr r1, _080AAEB0 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ lsls r0, 16
+ lsrs r6, r0, 16
+ adds r7, r1, 0
+ b _080AAEBA
+ .align 2, 0
+_080AAEAC: .4byte gBattleAnimAttacker
+_080AAEB0: .4byte gBattleAnimArgs
+_080AAEB4:
+ ldr r0, _080AAF10 @ =gBattleAnimArgs
+ ldrh r6, [r0, 0x4]
+ adds r7, r0, 0
+_080AAEBA:
+ ldrh r0, [r7, 0x8]
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ ldr r4, _080AAF14 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r6
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r7, [r7, 0x6]
+ adds r0, r7
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldr r0, _080AAF18 @ =sub_80AAF1C
+ str r0, [r5, 0x1C]
+ adds r2, r5, 0
+ adds r2, 0x2C
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r1, [r5, 0x1C]
+ adds r0, r5, 0
+ bl _call_via_r1
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AAF10: .4byte gBattleAnimArgs
+_080AAF14: .4byte gBattleAnimTarget
+_080AAF18: .4byte sub_80AAF1C
+ thumb_func_end sub_80AAE84
+
+ thumb_func_start sub_80AAF1C
+sub_80AAF1C: @ 80AAF1C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080AAF58 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _080AAF5C @ =0x0000ffff
+ cmp r1, r0
+ bne _080AAF3E
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ adds r2, r4, 0
+ adds r2, 0x2C
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+_080AAF3E:
+ adds r0, r4, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AAF50
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AAF50:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AAF58: .4byte gBattleAnimArgs
+_080AAF5C: .4byte 0x0000ffff
+ thumb_func_end sub_80AAF1C
+
+ thumb_func_start sub_80AAF60
+sub_80AAF60: @ 80AAF60
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080AAF94 @ =gTasks
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ adds r4, r1
+ ldr r0, _080AAF98 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r4, 0x8]
+ ldr r0, _080AAF9C @ =0x0000279c
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 20
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1
+ strh r0, [r4, 0xC]
+ ldr r0, _080AAFA0 @ =sub_80AAFA4
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AAF94: .4byte gTasks
+_080AAF98: .4byte gBattleAnimArgs
+_080AAF9C: .4byte 0x0000279c
+_080AAFA0: .4byte sub_80AAFA4
+ thumb_func_end sub_80AAF60
+
+ thumb_func_start sub_80AAFA4
+sub_80AAFA4: @ 80AAFA4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080AB01C @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r2, r0, r1
+ ldrh r0, [r2, 0x1C]
+ adds r0, 0x1
+ strh r0, [r2, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ mov r12, r1
+ cmp r0, 0x3
+ bne _080AAFF6
+ movs r0, 0
+ strh r0, [r2, 0x1C]
+ ldrh r0, [r2, 0xC]
+ adds r0, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldr r1, _080AB020 @ =gPlttBufferFaded
+ lsls r0, r5, 1
+ adds r0, r1
+ ldrh r6, [r0]
+ adds r7, r1, 0
+ adds r3, r0, 0x2
+ movs r1, 0x6
+ adds r2, r0, 0
+_080AAFE0:
+ ldrh r0, [r3]
+ strh r0, [r2]
+ adds r3, 0x2
+ adds r2, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bge _080AAFE0
+ adds r0, r5, 0x7
+ lsls r0, 1
+ adds r0, r7
+ strh r6, [r0]
+_080AAFF6:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ add r0, r12
+ ldrh r1, [r0, 0x1E]
+ adds r1, 0x1
+ strh r1, [r0, 0x1E]
+ lsls r1, 16
+ asrs r1, 16
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ cmp r1, r0
+ bne _080AB016
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080AB016:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AB01C: .4byte gTasks
+_080AB020: .4byte gPlttBufferFaded
+ thumb_func_end sub_80AAFA4
+
+ thumb_func_start sub_80AB024
+sub_80AB024: @ 80AB024
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ movs r0, 0x1E
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ ldr r4, _080AB08C @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ movs r0, 0x2E
+ ldrsh r1, [r5, r0]
+ movs r0, 0xD2
+ lsls r0, 8
+ bl __divsi3
+ strh r0, [r5, 0x38]
+ ldr r0, _080AB090 @ =gBattleAnimArgs
+ ldrh r2, [r0, 0x6]
+ strh r2, [r5, 0x3C]
+ ldrh r1, [r0, 0xE]
+ movs r3, 0xE
+ ldrsh r0, [r0, r3]
+ cmp r0, 0x7F
+ ble _080AB094
+ adds r0, r1, 0
+ subs r0, 0x7F
+ lsls r0, 8
+ strh r0, [r5, 0x3A]
+ negs r0, r2
+ strh r0, [r5, 0x3C]
+ b _080AB098
+ .align 2, 0
+_080AB08C: .4byte gBattleAnimTarget
+_080AB090: .4byte gBattleAnimArgs
+_080AB094:
+ lsls r0, r1, 8
+ strh r0, [r5, 0x3A]
+_080AB098:
+ ldr r1, _080AB0A8 @ =sub_80AB0AC
+ str r1, [r5, 0x1C]
+ adds r0, r5, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AB0A8: .4byte sub_80AB0AC
+ thumb_func_end sub_80AB024
+
+ thumb_func_start sub_80AB0AC
+sub_80AB0AC: @ 80AB0AC
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AB0C0
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AB0C0:
+ ldrh r0, [r4, 0x3A]
+ lsls r0, 16
+ asrs r0, 24
+ movs r2, 0x3C
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ asrs r0, 8
+ cmp r0, 0x7F
+ ble _080AB0F0
+ movs r0, 0
+ strh r0, [r4, 0x3A]
+ ldrh r0, [r4, 0x3C]
+ negs r0, r0
+ strh r0, [r4, 0x3C]
+ b _080AB0F8
+_080AB0F0:
+ ldrh r0, [r4, 0x38]
+ ldrh r1, [r4, 0x3A]
+ adds r0, r1
+ strh r0, [r4, 0x3A]
+_080AB0F8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AB0AC
+
+ thumb_func_start sub_80AB100
+sub_80AB100: @ 80AB100
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080AB120 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r3, _080AB124 @ =gBattleAnimArgs
+ ldrh r0, [r3]
+ movs r2, 0
+ strh r0, [r1, 0x8]
+ strh r2, [r3, 0xE]
+ ldr r0, _080AB128 @ =sub_80AB12C
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080AB120: .4byte gTasks
+_080AB124: .4byte gBattleAnimArgs
+_080AB128: .4byte sub_80AB12C
+ thumb_func_end sub_80AB100
+
+ thumb_func_start sub_80AB12C
+sub_80AB12C: @ 80AB12C
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, _080AB160 @ =gBattleAnimArgs
+ ldrh r0, [r2, 0xE]
+ adds r0, 0x3
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r2, 0xE]
+ ldr r1, _080AB164 @ =gTasks
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ adds r0, r1
+ ldrh r1, [r0, 0x8]
+ subs r1, 0x1
+ strh r1, [r0, 0x8]
+ lsls r1, 16
+ cmp r1, 0
+ bne _080AB15A
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+_080AB15A:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AB160: .4byte gBattleAnimArgs
+_080AB164: .4byte gTasks
+ thumb_func_end sub_80AB12C
+
+ thumb_func_start sub_80AB168
+sub_80AB168: @ 80AB168
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ ldr r7, _080AB1B4 @ =gBattleAnimAttacker
+ ldrb r0, [r7]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ ldrb r0, [r7]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ ldr r6, _080AB1B8 @ =0x0000fff6
+ strh r6, [r4, 0x26]
+ ldrb r0, [r7]
+ bl sub_807685C
+ lsls r0, 24
+ lsrs r5, r0, 24
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AB1C2
+ ldrb r0, [r7]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AB1BC
+ movs r0, 0xA
+ strh r0, [r4, 0x24]
+ b _080AB1C4
+ .align 2, 0
+_080AB1B4: .4byte gBattleAnimAttacker
+_080AB1B8: .4byte 0x0000fff6
+_080AB1BC:
+ strh r6, [r4, 0x24]
+ subs r0, r5, 0x2
+ b _080AB1C6
+_080AB1C2:
+ strh r6, [r4, 0x24]
+_080AB1C4:
+ adds r0, r5, 0x2
+_080AB1C6:
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldr r0, _080AB1D8 @ =sub_80AB1DC
+ str r0, [r4, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AB1D8: .4byte sub_80AB1DC
+ thumb_func_end sub_80AB168
+
+ thumb_func_start sub_80AB1DC
+sub_80AB1DC: @ 80AB1DC
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080AB1F2
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080AB1F2:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AB1DC
+
+ thumb_func_start sub_80AB1F8
+sub_80AB1F8: @ 80AB1F8
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ ldr r5, _080AB2B8 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ bl GetBattlerSide
+ adds r4, r0, 0
+ ldr r0, _080AB2BC @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ bne _080AB242
+ ldr r4, _080AB2C0 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ strh r0, [r4]
+ ldrb r0, [r5]
+ bl GetBattlerPosition
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AB23A
+ ldrb r0, [r5]
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080AB242
+_080AB23A:
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ strh r0, [r4]
+_080AB242:
+ ldr r5, _080AB2C0 @ =gBattleAnimArgs
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ movs r1, 0xFF
+ lsls r1, 8
+ ands r0, r1
+ movs r1, 0
+ cmp r0, 0
+ bne _080AB256
+ movs r1, 0x1
+_080AB256:
+ ldrb r0, [r5, 0xA]
+ movs r7, 0x1
+ cmp r0, 0
+ bne _080AB260
+ movs r7, 0x3
+_080AB260:
+ adds r0, r6, 0
+ bl sub_8075160
+ ldr r0, _080AB2B8 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AB27A
+ ldrh r0, [r5, 0x4]
+ negs r0, r0
+ strh r0, [r5, 0x4]
+_080AB27A:
+ ldrh r0, [r5, 0x8]
+ strh r0, [r6, 0x2E]
+ ldr r4, _080AB2BC @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r5, 0x4]
+ adds r0, r1
+ strh r0, [r6, 0x32]
+ ldrb r0, [r4]
+ adds r1, r7, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r5, [r5, 0x6]
+ adds r0, r5
+ strh r0, [r6, 0x36]
+ ldr r0, _080AB2C4 @ =sub_8075590
+ str r0, [r6, 0x1C]
+ ldr r1, _080AB2C8 @ =DestroyAnimSprite
+ adds r0, r6, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AB2B8: .4byte gBattleAnimAttacker
+_080AB2BC: .4byte gBattleAnimTarget
+_080AB2C0: .4byte gBattleAnimArgs
+_080AB2C4: .4byte sub_8075590
+_080AB2C8: .4byte DestroyAnimSprite
+ thumb_func_end sub_80AB1F8
+
+ thumb_func_start sub_80AB2CC
+sub_80AB2CC: @ 80AB2CC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075114
+ ldr r0, _080AB2FC @ =gBattleAnimArgs
+ ldrh r1, [r0, 0x8]
+ strh r1, [r4, 0x2E]
+ ldrh r0, [r0, 0x4]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ adds r1, r0
+ strh r1, [r4, 0x36]
+ ldr r0, _080AB300 @ =sub_8075590
+ str r0, [r4, 0x1C]
+ ldr r1, _080AB304 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AB2FC: .4byte gBattleAnimArgs
+_080AB300: .4byte sub_8075590
+_080AB304: .4byte DestroyAnimSprite
+ thumb_func_end sub_80AB2CC
+
+ thumb_func_start sub_80AB308
+sub_80AB308: @ 80AB308
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080AB320 @ =gBattleAnimArgs
+ movs r1, 0x6
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ beq _080AB324
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075114
+ b _080AB32C
+ .align 2, 0
+_080AB320: .4byte gBattleAnimArgs
+_080AB324:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075160
+_080AB32C:
+ ldr r0, _080AB33C @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x3C]
+ ldr r0, _080AB340 @ =sub_80AB344
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AB33C: .4byte gBattleAnimArgs
+_080AB340: .4byte sub_80AB344
+ thumb_func_end sub_80AB308
+
+ thumb_func_start sub_80AB344
+sub_80AB344: @ 80AB344
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0xB
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x4
+ bl Sin
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x30
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x3C]
+ subs r0, 0x1
+ strh r0, [r4, 0x3C]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080AB384
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AB384:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AB344
+
+ thumb_func_start sub_80AB38C
+sub_80AB38C: @ 80AB38C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldr r1, _080AB3FC @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ mov r0, sp
+ bl sub_80752A0
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AB418
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ ldr r0, _080AB400 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080AB408
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080AB404 @ =gFile_graphics_unknown_unknown_E81D14_tilemap
+ bl sub_807543C
+ b _080AB42E
+ .align 2, 0
+_080AB3FC: .4byte 0x00003f42
+_080AB400: .4byte gBattleAnimAttacker
+_080AB404: .4byte gFile_graphics_unknown_unknown_E81D14_tilemap
+_080AB408:
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080AB414 @ =gFile_graphics_unknown_unknown_E81FE4_tilemap
+ bl sub_807543C
+ b _080AB42E
+ .align 2, 0
+_080AB414: .4byte gFile_graphics_unknown_unknown_E81FE4_tilemap
+_080AB418:
+ ldr r0, _080AB458 @ =gFile_graphics_unknown_unknown_E822B8_tilemap
+ ldr r1, [sp, 0x4]
+ bl LZDecompressVram
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0x1
+ bl sub_80730C0
+_080AB42E:
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080AB45C @ =gFile_graphics_battle_anims_backgrounds_water_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080AB460 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080AB468
+ ldr r0, _080AB464 @ =gFile_graphics_battle_anims_backgrounds_water_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ b _080AB476
+ .align 2, 0
+_080AB458: .4byte gFile_graphics_unknown_unknown_E822B8_tilemap
+_080AB45C: .4byte gFile_graphics_battle_anims_backgrounds_water_sheet
+_080AB460: .4byte gBattleAnimArgs
+_080AB464: .4byte gFile_graphics_battle_anims_backgrounds_water_palette
+_080AB468:
+ ldr r0, _080AB4E0 @ =gFile_graphics_battle_anims_backgrounds_water_muddy_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+_080AB476:
+ ldr r0, _080AB4E4 @ =sub_80AB79C
+ ldr r4, _080AB4E8 @ =gTasks
+ mov r2, r10
+ lsls r5, r2, 2
+ adds r1, r5, r2
+ lsls r1, 3
+ adds r6, r1, r4
+ ldrb r1, [r6, 0x7]
+ adds r1, 0x1
+ lsls r1, 24
+ lsrs r1, 24
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ movs r0, 0
+ mov r9, r0
+ mov r1, r8
+ strh r1, [r6, 0x26]
+ mov r2, r8
+ lsls r0, r2, 2
+ add r0, r8
+ lsls r0, 3
+ adds r7, r0, r4
+ mov r0, r9
+ strh r0, [r7, 0x8]
+ movs r0, 0x80
+ lsls r0, 5
+ strh r0, [r7, 0xA]
+ strh r0, [r7, 0xC]
+ bl sub_8073788
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _080AB4F8
+ ldr r1, _080AB4EC @ =0x0000ffb0
+ adds r0, r1, 0
+ ldr r2, _080AB4F0 @ =gBattle_BG1_X
+ strh r0, [r2]
+ adds r1, 0x20
+ adds r0, r1, 0
+ ldr r2, _080AB4F4 @ =gBattle_BG1_Y
+ strh r0, [r2]
+ movs r0, 0x2
+ strh r0, [r6, 0x8]
+ movs r0, 0x1
+ strh r0, [r6, 0xA]
+ mov r0, r9
+ strh r0, [r7, 0xE]
+ b _080AB552
+ .align 2, 0
+_080AB4E0: .4byte gFile_graphics_battle_anims_backgrounds_water_muddy_palette
+_080AB4E4: .4byte sub_80AB79C
+_080AB4E8: .4byte gTasks
+_080AB4EC: .4byte 0x0000ffb0
+_080AB4F0: .4byte gBattle_BG1_X
+_080AB4F4: .4byte gBattle_BG1_Y
+_080AB4F8:
+ ldr r0, _080AB528 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x1
+ bne _080AB53C
+ ldr r2, _080AB52C @ =0x0000ff20
+ adds r0, r2, 0
+ ldr r2, _080AB530 @ =gBattle_BG1_X
+ strh r0, [r2]
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r2, 0
+ ldr r2, _080AB534 @ =gBattle_BG1_Y
+ strh r0, [r2]
+ movs r0, 0x2
+ strh r0, [r6, 0x8]
+ ldr r0, _080AB538 @ =0x0000ffff
+ strh r0, [r6, 0xA]
+ strh r1, [r7, 0xE]
+ b _080AB552
+ .align 2, 0
+_080AB528: .4byte gBattleAnimAttacker
+_080AB52C: .4byte 0x0000ff20
+_080AB530: .4byte gBattle_BG1_X
+_080AB534: .4byte gBattle_BG1_Y
+_080AB538: .4byte 0x0000ffff
+_080AB53C:
+ ldr r0, _080AB584 @ =gBattle_BG1_X
+ strh r4, [r0]
+ ldr r1, _080AB588 @ =0x0000ffd0
+ adds r0, r1, 0
+ ldr r2, _080AB58C @ =gBattle_BG1_Y
+ strh r0, [r2]
+ ldr r0, _080AB590 @ =0x0000fffe
+ strh r0, [r6, 0x8]
+ movs r0, 0x1
+ strh r0, [r6, 0xA]
+ strh r4, [r7, 0xE]
+_080AB552:
+ ldr r0, _080AB584 @ =gBattle_BG1_X
+ ldrh r1, [r0]
+ movs r0, 0x14
+ bl SetGpuReg
+ ldr r2, _080AB58C @ =gBattle_BG1_Y
+ ldrh r1, [r2]
+ movs r0, 0x16
+ bl SetGpuReg
+ ldr r1, _080AB594 @ =gTasks
+ mov r2, r8
+ lsls r0, r2, 2
+ add r0, r8
+ lsls r0, 3
+ adds r1, r0, r1
+ movs r2, 0xE
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080AB598
+ movs r0, 0x30
+ strh r0, [r1, 0x10]
+ movs r0, 0x70
+ b _080AB59C
+ .align 2, 0
+_080AB584: .4byte gBattle_BG1_X
+_080AB588: .4byte 0x0000ffd0
+_080AB58C: .4byte gBattle_BG1_Y
+_080AB590: .4byte 0x0000fffe
+_080AB594: .4byte gTasks
+_080AB598:
+ movs r0, 0
+ strh r0, [r1, 0x10]
+_080AB59C:
+ strh r0, [r1, 0x12]
+ ldr r1, _080AB5C0 @ =gTasks
+ mov r2, r10
+ adds r0, r5, r2
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x1
+ strh r1, [r0, 0x14]
+ ldr r1, _080AB5C4 @ =sub_80AB5C8
+ str r1, [r0]
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AB5C0: .4byte gTasks
+_080AB5C4: .4byte sub_80AB5C8
+ thumb_func_end sub_80AB38C
+
+ thumb_func_start sub_80AB5C8
+sub_80AB5C8: @ 80AB5C8
+ push {r4-r7,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080AB6F4 @ =gBattle_BG1_X
+ ldr r2, _080AB6F8 @ =gBattle_BG1_Y
+ ldr r0, _080AB6FC @ =gTasks
+ lsls r4, r5, 2
+ adds r4, r5
+ lsls r4, 3
+ adds r4, r0
+ ldrh r0, [r4, 0x8]
+ ldrh r3, [r1]
+ adds r0, r3
+ strh r0, [r1]
+ ldrh r0, [r4, 0xA]
+ ldrh r1, [r2]
+ adds r0, r1
+ strh r0, [r2]
+ mov r0, sp
+ bl sub_80752A0
+ ldrh r0, [r4, 0xA]
+ ldrh r3, [r4, 0xC]
+ adds r0, r3
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x12]
+ adds r0, 0x1
+ strh r0, [r4, 0x12]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080AB65C
+ ldr r1, _080AB700 @ =gPlttBufferFaded
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ lsls r0, 4
+ adds r0, 0x7
+ lsls r0, 1
+ adds r0, r1
+ ldrh r6, [r0]
+ movs r2, 0x6
+ adds r7, r1, 0
+ adds r3, r7, 0
+ mov r4, sp
+_080AB622:
+ ldrb r0, [r4, 0x8]
+ lsls r0, 4
+ adds r1, r2, 0x1
+ adds r0, r1
+ lsls r1, r0, 1
+ adds r1, r3
+ subs r0, 0x1
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ strh r0, [r1]
+ subs r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0
+ bne _080AB622
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ lsls r0, 4
+ adds r0, 0x1
+ lsls r0, 1
+ adds r0, r7
+ strh r6, [r0]
+ ldr r1, _080AB6FC @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ strh r2, [r0, 0x12]
+_080AB65C:
+ ldr r1, _080AB6FC @ =gTasks
+ lsls r2, r5, 2
+ adds r0, r2, r5
+ lsls r0, 3
+ adds r3, r0, r1
+ ldrh r0, [r3, 0x14]
+ adds r0, 0x1
+ strh r0, [r3, 0x14]
+ lsls r0, 16
+ asrs r0, 16
+ adds r4, r1, 0
+ adds r6, r2, 0
+ cmp r0, 0x1
+ ble _080AB6CA
+ movs r0, 0
+ strh r0, [r3, 0x14]
+ ldrh r0, [r3, 0xE]
+ adds r2, r0, 0x1
+ strh r2, [r3, 0xE]
+ lsls r0, r2, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ bgt _080AB6A6
+ movs r1, 0x26
+ ldrsh r0, [r3, r1]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r4
+ movs r0, 0x10
+ subs r0, r2
+ lsls r0, 8
+ orrs r2, r0
+ strh r2, [r1, 0xA]
+ ldrh r0, [r3, 0x10]
+ adds r0, 0x1
+ strh r0, [r3, 0x10]
+_080AB6A6:
+ movs r1, 0xE
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x36
+ ble _080AB6CA
+ ldrh r2, [r3, 0x10]
+ subs r2, 0x1
+ strh r2, [r3, 0x10]
+ movs r1, 0x26
+ ldrsh r0, [r3, r1]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r4
+ movs r0, 0x10
+ subs r0, r2
+ lsls r0, 8
+ orrs r2, r0
+ strh r2, [r1, 0xA]
+_080AB6CA:
+ adds r0, r6, r5
+ lsls r0, 3
+ adds r2, r0, r4
+ movs r3, 0x26
+ ldrsh r1, [r2, r3]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r4
+ ldrh r0, [r0, 0xA]
+ movs r3, 0x1F
+ ands r3, r0
+ cmp r3, 0
+ bne _080AB6EC
+ strh r3, [r2, 0x8]
+ ldr r0, _080AB704 @ =sub_80AB708
+ str r0, [r2]
+_080AB6EC:
+ add sp, 0x10
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AB6F4: .4byte gBattle_BG1_X
+_080AB6F8: .4byte gBattle_BG1_Y
+_080AB6FC: .4byte gTasks
+_080AB700: .4byte gPlttBufferFaded
+_080AB704: .4byte sub_80AB708
+ thumb_func_end sub_80AB5C8
+
+ thumb_func_start sub_80AB708
+sub_80AB708: @ 80AB708
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r7, _080AB740 @ =gBattle_BG1_X
+ ldr r0, _080AB744 @ =gBattle_BG1_Y
+ mov r8, r0
+ ldr r6, _080AB748 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r6
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AB74C
+ movs r0, 0x1
+ bl sub_8075358
+ movs r0, 0x2
+ bl sub_8075358
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080AB78E
+ .align 2, 0
+_080AB740: .4byte gBattle_BG1_X
+_080AB744: .4byte gBattle_BG1_Y
+_080AB748: .4byte gTasks
+_080AB74C:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AB760
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080AB760:
+ movs r0, 0
+ strh r0, [r7]
+ mov r1, r8
+ strh r0, [r1]
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r6
+ ldr r1, _080AB798 @ =0x0000ffff
+ strh r1, [r0, 0x26]
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080AB78E:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AB798: .4byte 0x0000ffff
+ thumb_func_end sub_80AB708
+
+ thumb_func_start sub_80AB79C
+sub_80AB79C: @ 80AB79C
+ push {r4-r7,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _080AB7C4 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ bne _080AB7B8
+ b _080AB8F0
+_080AB7B8:
+ cmp r0, 0x1
+ bgt _080AB7C8
+ cmp r0, 0
+ beq _080AB7D0
+ b _080ABA66
+ .align 2, 0
+_080AB7C4: .4byte gTasks
+_080AB7C8:
+ cmp r0, 0x2
+ bne _080AB7CE
+ b _080AB9BC
+_080AB7CE:
+ b _080ABA66
+_080AB7D0:
+ movs r3, 0
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ ldr r1, _080AB8A0 @ =gScanlineEffectRegBuffers
+ mov r12, r1
+ cmp r3, r0
+ bge _080AB80E
+ mov r7, r12
+ movs r5, 0xF0
+ lsls r5, 3
+ add r5, r12
+ ldr r6, _080AB8A4 @ =0x0000ffff
+_080AB7E8:
+ lsls r2, r3, 16
+ asrs r2, 16
+ lsls r1, r2, 1
+ adds r3, r1, r7
+ adds r1, r5
+ ldrh r0, [r4, 0xC]
+ strh r0, [r1]
+ ldrh r1, [r4, 0xC]
+ adds r0, r6, 0
+ ands r0, r1
+ strh r0, [r3]
+ adds r2, 0x1
+ lsls r2, 16
+ lsrs r3, r2, 16
+ asrs r2, 16
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r2, r0
+ blt _080AB7E8
+_080AB80E:
+ ldrh r3, [r4, 0x10]
+ lsls r2, r3, 16
+ asrs r1, r2, 16
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bge _080AB848
+ ldr r5, _080AB8A0 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r5, r0
+ ldr r7, _080AB8A4 @ =0x0000ffff
+_080AB826:
+ asrs r2, 16
+ lsls r1, r2, 1
+ adds r3, r1, r5
+ adds r1, r6
+ ldrh r0, [r4, 0xA]
+ strh r0, [r1]
+ ldrh r1, [r4, 0xA]
+ adds r0, r7, 0
+ ands r0, r1
+ strh r0, [r3]
+ adds r2, 0x1
+ lsls r2, 16
+ asrs r1, r2, 16
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ blt _080AB826
+_080AB848:
+ ldrh r3, [r4, 0x12]
+ lsls r2, r3, 16
+ asrs r0, r2, 16
+ cmp r0, 0x9F
+ bgt _080AB87E
+ ldr r5, _080AB8A0 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r5, r0
+ ldr r7, _080AB8A4 @ =0x0000ffff
+_080AB85C:
+ asrs r2, 16
+ lsls r1, r2, 1
+ adds r3, r1, r5
+ adds r1, r6
+ ldrh r0, [r4, 0xC]
+ strh r0, [r1]
+ ldrh r1, [r4, 0xC]
+ adds r0, r7, 0
+ ands r0, r1
+ strh r0, [r3]
+ adds r2, 0x1
+ lsls r2, 16
+ lsrs r3, r2, 16
+ lsls r2, r3, 16
+ asrs r0, r2, 16
+ cmp r0, 0x9F
+ ble _080AB85C
+_080AB87E:
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AB8A8
+ lsls r0, r3, 16
+ asrs r0, 15
+ mov r3, r12
+ adds r2, r0, r3
+ movs r1, 0xF0
+ lsls r1, 3
+ add r1, r12
+ adds r0, r1
+ ldrh r1, [r4, 0xA]
+ strh r1, [r0]
+ ldrh r0, [r4, 0xA]
+ b _080AB8BE
+ .align 2, 0
+_080AB8A0: .4byte gScanlineEffectRegBuffers
+_080AB8A4: .4byte 0x0000ffff
+_080AB8A8:
+ lsls r0, r3, 16
+ asrs r0, 15
+ mov r1, r12
+ adds r2, r0, r1
+ movs r1, 0xF0
+ lsls r1, 3
+ add r1, r12
+ adds r0, r1
+ ldrh r1, [r4, 0xC]
+ strh r1, [r0]
+ ldrh r0, [r4, 0xC]
+_080AB8BE:
+ strh r0, [r2]
+ ldr r0, _080AB8E8 @ =0x04000052
+ str r0, [sp]
+ ldr r0, _080AB8EC @ =0xa2600001
+ str r0, [sp, 0x4]
+ mov r1, sp
+ movs r2, 0
+ movs r0, 0x1
+ strb r0, [r1, 0x8]
+ mov r0, sp
+ strb r2, [r0, 0x9]
+ ldr r0, [sp]
+ ldr r1, [sp, 0x4]
+ ldr r2, [sp, 0x8]
+ bl ScanlineEffect_SetParams
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080ABA66
+ .align 2, 0
+_080AB8E8: .4byte 0x04000052
+_080AB8EC: .4byte 0xa2600001
+_080AB8F0:
+ movs r2, 0xE
+ ldrsh r1, [r4, r2]
+ cmp r1, 0
+ bne _080AB908
+ ldrh r0, [r4, 0x10]
+ subs r0, 0x1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080AB91C
+ strh r1, [r4, 0x10]
+ b _080AB916
+_080AB908:
+ ldrh r0, [r4, 0x12]
+ adds r0, 0x1
+ strh r0, [r4, 0x12]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6F
+ ble _080AB91C
+_080AB916:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+_080AB91C:
+ movs r3, 0
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r3, r0
+ bge _080AB950
+ ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers
+ ldr r5, _080AB9B8 @ =gScanlineEffect
+_080AB92A:
+ lsls r1, r3, 16
+ asrs r1, 16
+ lsls r3, r1, 1
+ ldrb r2, [r5, 0x14]
+ lsls r0, r2, 4
+ subs r0, r2
+ lsls r0, 7
+ adds r3, r0
+ adds r3, r6
+ ldrh r0, [r4, 0xC]
+ strh r0, [r3]
+ adds r1, 0x1
+ lsls r1, 16
+ lsrs r3, r1, 16
+ asrs r1, 16
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ blt _080AB92A
+_080AB950:
+ ldrh r3, [r4, 0x10]
+ lsls r2, r3, 16
+ asrs r1, r2, 16
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bge _080AB984
+ ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers
+ ldr r5, _080AB9B8 @ =gScanlineEffect
+_080AB962:
+ asrs r3, r2, 16
+ lsls r2, r3, 1
+ ldrb r1, [r5, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ adds r2, r6
+ ldrh r0, [r4, 0xA]
+ strh r0, [r2]
+ adds r3, 0x1
+ lsls r2, r3, 16
+ asrs r1, r2, 16
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ blt _080AB962
+_080AB984:
+ ldrh r3, [r4, 0x12]
+ lsls r1, r3, 16
+ asrs r0, r1, 16
+ cmp r0, 0x9F
+ bgt _080ABA66
+ ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers
+ ldr r5, _080AB9B8 @ =gScanlineEffect
+_080AB992:
+ asrs r3, r1, 16
+ lsls r2, r3, 1
+ ldrb r1, [r5, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ adds r2, r6
+ ldrh r0, [r4, 0xC]
+ strh r0, [r2]
+ adds r3, 0x1
+ lsls r1, r3, 16
+ asrs r0, r1, 16
+ cmp r0, 0x9F
+ ble _080AB992
+ b _080ABA66
+ .align 2, 0
+_080AB9B4: .4byte gScanlineEffectRegBuffers
+_080AB9B8: .4byte gScanlineEffect
+_080AB9BC:
+ movs r3, 0
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r3, r0
+ bge _080AB9F0
+ ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers
+ ldr r5, _080ABA74 @ =gScanlineEffect
+_080AB9CA:
+ lsls r1, r3, 16
+ asrs r1, 16
+ lsls r3, r1, 1
+ ldrb r2, [r5, 0x14]
+ lsls r0, r2, 4
+ subs r0, r2
+ lsls r0, 7
+ adds r3, r0
+ adds r3, r6
+ ldrh r0, [r4, 0xC]
+ strh r0, [r3]
+ adds r1, 0x1
+ lsls r1, 16
+ lsrs r3, r1, 16
+ asrs r1, 16
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ blt _080AB9CA
+_080AB9F0:
+ ldrh r3, [r4, 0x10]
+ lsls r2, r3, 16
+ asrs r1, r2, 16
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ bge _080ABA24
+ ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers
+ ldr r5, _080ABA74 @ =gScanlineEffect
+_080ABA02:
+ asrs r3, r2, 16
+ lsls r2, r3, 1
+ ldrb r1, [r5, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ adds r2, r6
+ ldrh r0, [r4, 0xA]
+ strh r0, [r2]
+ adds r3, 0x1
+ lsls r2, r3, 16
+ asrs r1, r2, 16
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ blt _080ABA02
+_080ABA24:
+ ldrh r3, [r4, 0x12]
+ lsls r1, r3, 16
+ asrs r0, r1, 16
+ cmp r0, 0x9F
+ bgt _080ABA50
+ ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers
+ ldr r5, _080ABA74 @ =gScanlineEffect
+_080ABA32:
+ asrs r3, r1, 16
+ lsls r2, r3, 1
+ ldrb r1, [r5, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ adds r2, r6
+ ldrh r0, [r4, 0xC]
+ strh r0, [r2]
+ adds r3, 0x1
+ lsls r1, r3, 16
+ asrs r0, r1, 16
+ cmp r0, 0x9F
+ ble _080ABA32
+_080ABA50:
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080ABA66
+ bl ScanlineEffect_Stop
+ adds r0, r7, 0
+ bl DestroyTask
+_080ABA66:
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ABA70: .4byte gScanlineEffectRegBuffers
+_080ABA74: .4byte gScanlineEffect
+ thumb_func_end sub_80AB79C
+
+ thumb_func_start sub_80ABA78
+sub_80ABA78: @ 80ABA78
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x8
+ ldr r3, _080ABACC @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080ABAD0 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075114
+ bl Random
+ movs r5, 0xFF
+ ands r5, r0
+ movs r0, 0x80
+ lsls r0, 1
+ adds r6, r0, 0
+ orrs r5, r6
+ bl Random
+ ldr r1, _080ABAD4 @ =0x000001ff
+ ands r1, r0
+ adds r0, r1, 0
+ cmp r0, 0xFF
+ ble _080ABABE
+ subs r0, r6, r0
+ lsls r0, 16
+ lsrs r1, r0, 16
+_080ABABE:
+ strh r5, [r4, 0x30]
+ strh r1, [r4, 0x32]
+ ldr r0, _080ABAD8 @ =sub_80ABADC
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ABACC: .4byte 0x000003ff
+_080ABAD0: .4byte 0xfffffc00
+_080ABAD4: .4byte 0x000001ff
+_080ABAD8: .4byte sub_80ABADC
+ thumb_func_end sub_80ABA78
+
+ thumb_func_start sub_80ABADC
+sub_80ABADC: @ 80ABADC
+ push {r4,lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x30]
+ ldrh r1, [r2, 0x34]
+ adds r3, r0, r1
+ strh r3, [r2, 0x34]
+ ldrh r1, [r2, 0x32]
+ ldrh r4, [r2, 0x36]
+ adds r1, r4
+ strh r1, [r2, 0x36]
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _080ABB00
+ lsls r0, r3, 16
+ asrs r0, 24
+ negs r0, r0
+ b _080ABB04
+_080ABB00:
+ lsls r0, r3, 16
+ asrs r0, 24
+_080ABB04:
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x36]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r2, 0x26]
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x15
+ bne _080ABB22
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080ABB22:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ABADC
+
+ thumb_func_start sub_80ABB28
+sub_80ABB28: @ 80ABB28
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080ABB78 @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ ldr r2, _080ABB7C @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x22]
+ strh r0, [r4, 0x12]
+ bl sub_80ABDC8
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl sub_80758E0
+ ldr r0, _080ABB80 @ =sub_80ABB84
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ABB78: .4byte gTasks
+_080ABB7C: .4byte gSprites
+_080ABB80: .4byte sub_80ABB84
+ thumb_func_end sub_80ABB28
+
+ thumb_func_start sub_80ABB84
+sub_80ABB84: @ 80ABB84
+ push {r4-r6,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080ABBAC @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x7
+ bls _080ABBA0
+ b _080ABDBE
+_080ABBA0:
+ lsls r0, 2
+ ldr r1, _080ABBB0 @ =_080ABBB4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080ABBAC: .4byte gTasks
+_080ABBB0: .4byte _080ABBB4
+ .align 2, 0
+_080ABBB4:
+ .4byte _080ABBD4
+ .4byte _080ABBFA
+ .4byte _080ABC8C
+ .4byte _080ABCC2
+ .4byte _080ABCD6
+ .4byte _080ABCE4
+ .4byte _080ABD64
+ .4byte _080ABDB0
+_080ABBD4:
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r3, 0x80
+ lsls r3, 1
+ movs r0, 0xE0
+ str r0, [sp]
+ movs r0, 0x80
+ lsls r0, 2
+ str r0, [sp, 0x4]
+ movs r0, 0x20
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ adds r2, r3, 0
+ bl sub_80765D4
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+_080ABBFA:
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080ABC56
+ movs r0, 0
+ strh r0, [r4, 0xE]
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x1
+ strh r0, [r4, 0x10]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080ABC44
+ ldr r2, _080ABC40 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0x3
+ strh r1, [r0, 0x24]
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x22]
+ adds r1, 0x1
+ strh r1, [r0, 0x22]
+ b _080ABC56
+ .align 2, 0
+_080ABC40: .4byte gSprites
+_080ABC44:
+ ldr r2, _080ABC84 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, _080ABC88 @ =0x0000fffd
+ strh r1, [r0, 0x24]
+_080ABC56:
+ adds r0, r4, 0
+ bl sub_8076640
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ beq _080ABC66
+ b _080ABDBE
+_080ABC66:
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8076440
+ ldr r2, _080ABC84 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r5, [r0, 0x24]
+ strh r5, [r4, 0xE]
+ b _080ABDA0
+ .align 2, 0
+_080ABC84: .4byte gSprites
+_080ABC88: .4byte 0x0000fffd
+_080ABC8C:
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bgt _080ABC9C
+ b _080ABDBE
+_080ABC9C:
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r3, 0x80
+ lsls r3, 2
+ movs r0, 0xC0
+ lsls r0, 1
+ str r0, [sp]
+ movs r0, 0xE0
+ str r0, [sp, 0x4]
+ movs r0, 0x8
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r2, 0xE0
+ bl sub_80765D4
+ movs r0, 0
+ strh r0, [r4, 0xE]
+ b _080ABDA2
+_080ABCC2:
+ adds r0, r4, 0
+ bl sub_8076640
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _080ABDBE
+ strh r0, [r4, 0xE]
+ strh r0, [r4, 0x10]
+ b _080ABDA2
+_080ABCD6:
+ adds r0, r4, 0
+ adds r1, r2, 0
+ bl sub_80ABE4C
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+_080ABCE4:
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080ABDBE
+ movs r0, 0
+ strh r0, [r4, 0xE]
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x1
+ strh r0, [r4, 0x10]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080ABD1C
+ ldr r2, _080ABD18 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x26]
+ adds r1, 0x2
+ b _080ABD2E
+ .align 2, 0
+_080ABD18: .4byte gSprites
+_080ABD1C:
+ ldr r2, _080ABD60 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x26]
+ subs r1, 0x2
+_080ABD2E:
+ strh r1, [r0, 0x26]
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xA
+ bne _080ABDBE
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r2, 0xC0
+ lsls r2, 1
+ movs r0, 0x80
+ lsls r0, 1
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ movs r0, 0x8
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r3, 0xE0
+ bl sub_80765D4
+ movs r0, 0
+ strh r0, [r4, 0xE]
+ strh r0, [r4, 0x10]
+ b _080ABDA2
+ .align 2, 0
+_080ABD60: .4byte gSprites
+_080ABD64:
+ ldr r6, _080ABDAC @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ ldrh r1, [r0, 0x22]
+ subs r1, 0x1
+ strh r1, [r0, 0x22]
+ adds r0, r4, 0
+ bl sub_8076640
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _080ABDBE
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8075980
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ ldrh r1, [r4, 0x12]
+ strh r1, [r0, 0x22]
+_080ABDA0:
+ strh r5, [r4, 0x10]
+_080ABDA2:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080ABDBE
+ .align 2, 0
+_080ABDAC: .4byte gSprites
+_080ABDB0:
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080ABDBE
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080ABDBE:
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ABB84
+
+ thumb_func_start sub_80ABDC8
+sub_80ABDC8: @ 80ABDC8
+ push {r4,r5,lr}
+ ldr r4, _080ABDEC @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080ABDFC
+ ldr r1, _080ABDF0 @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _080ABDF4 @ =gPlayerParty
+ b _080ABE0C
+ .align 2, 0
+_080ABDEC: .4byte gBattleAnimAttacker
+_080ABDF0: .4byte gBattlerPartyIndexes
+_080ABDF4: .4byte gPlayerParty
+_080ABDF8:
+ adds r0, r2, 0
+ b _080ABE3E
+_080ABDFC:
+ ldr r1, _080ABE44 @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _080ABE48 @ =gEnemyParty
+_080ABE0C:
+ adds r5, r1, r0
+ adds r0, r5, 0
+ movs r1, 0x3A
+ bl GetMonData
+ adds r4, r0, 0
+ lsls r4, 16
+ adds r0, r5, 0
+ movs r1, 0x39
+ bl GetMonData
+ lsls r0, 16
+ lsrs r3, r0, 16
+ lsrs r4, 18
+ movs r2, 0
+_080ABE2A:
+ adds r1, r2, 0x1
+ adds r0, r4, 0
+ muls r0, r1
+ cmp r3, r0
+ blt _080ABDF8
+ lsls r0, r1, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x2
+ bls _080ABE2A
+ movs r0, 0x3
+_080ABE3E:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080ABE44: .4byte gBattlerPartyIndexes
+_080ABE48: .4byte gEnemyParty
+ thumb_func_end sub_80ABDC8
+
+ thumb_func_start sub_80ABE4C
+sub_80ABE4C: @ 80ABE4C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ adds r7, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp]
+ ldr r4, _080ABF54 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r5, 0xAC
+ ldrb r0, [r4]
+ bl sub_807685C
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x8]
+ ldrh r1, [r7, 0xA]
+ movs r0, 0x4
+ subs r0, r1
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r0, 0
+ bgt _080ABE9C
+ movs r1, 0x1
+_080ABE9C:
+ movs r0, 0
+ str r0, [sp, 0x4]
+ lsls r0, r1, 16
+ mov r10, r8
+ mov r9, r6
+ mov r1, r10
+ lsls r1, 4
+ str r1, [sp, 0xC]
+ mov r1, r9
+ lsls r1, 4
+ str r1, [sp, 0x10]
+ asrs r0, 16
+ mov r8, r0
+_080ABEB6:
+ ldr r0, _080ABF58 @ =gUnknown_83E5AE0
+ mov r1, r10
+ mov r2, r9
+ ldr r3, [sp, 0x8]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r6, r5, 16
+ cmp r2, 0x40
+ beq _080ABF1E
+ ldr r1, _080ABF5C @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r5, r0, r1
+ mov r0, sp
+ ldrh r0, [r0, 0x4]
+ strh r0, [r5, 0x30]
+ mov r1, sp
+ ldrh r1, [r1, 0xC]
+ strh r1, [r5, 0x32]
+ mov r0, sp
+ ldrh r0, [r0, 0x10]
+ strh r0, [r5, 0x34]
+ asrs r4, r6, 16
+ adds r0, r4, 0
+ movs r1, 0x40
+ bl Cos
+ strh r0, [r5, 0x36]
+ adds r0, r4, 0
+ movs r1, 0x40
+ bl Sin
+ strh r0, [r5, 0x38]
+ mov r1, sp
+ ldrh r1, [r1]
+ strh r1, [r5, 0x3A]
+ movs r0, 0x2
+ strh r0, [r5, 0x3C]
+ ldrh r1, [r7, 0xC]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080ABF18
+ adds r0, r5, 0
+ bl sub_80ABF60
+_080ABF18:
+ ldrh r0, [r7, 0xC]
+ adds r0, 0x1
+ strh r0, [r7, 0xC]
+_080ABF1E:
+ mov r1, r8
+ lsls r0, r1, 1
+ asrs r1, r6, 16
+ adds r1, r0
+ lsls r1, 16
+ movs r0, 0xFF
+ lsls r0, 16
+ ands r0, r1
+ lsrs r5, r0, 16
+ ldr r1, [sp, 0x4]
+ lsls r0, r1, 16
+ asrs r0, 16
+ add r0, r8
+ lsls r0, 16
+ lsrs r1, r0, 16
+ str r1, [sp, 0x4]
+ asrs r0, 16
+ cmp r0, 0x13
+ ble _080ABEB6
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ABF54: .4byte gBattleAnimAttacker
+_080ABF58: .4byte gUnknown_83E5AE0
+_080ABF5C: .4byte gSprites
+ thumb_func_end sub_80ABE4C
+
+ thumb_func_start sub_80ABF60
+sub_80ABF60: @ 80ABF60
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080ABF72
+ cmp r0, 0x1
+ beq _080ABFA8
+ b _080AC002
+_080ABF72:
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ movs r1, 0x6
+ bl __modsi3
+ lsls r0, 16
+ asrs r0, 16
+ lsls r1, r0, 1
+ adds r1, r0
+ ldrh r0, [r4, 0x36]
+ adds r1, r0
+ strh r1, [r4, 0x36]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x3
+ bl __modsi3
+ lsls r0, 16
+ asrs r0, 16
+ lsls r1, r0, 1
+ adds r1, r0
+ ldrh r2, [r4, 0x38]
+ adds r1, r2
+ strh r1, [r4, 0x38]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+_080ABFA8:
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x32]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ ldrh r1, [r4, 0x38]
+ ldrh r2, [r4, 0x34]
+ adds r1, r2
+ strh r1, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 20
+ strh r0, [r4, 0x20]
+ lsls r1, 16
+ asrs r2, r1, 20
+ strh r2, [r4, 0x22]
+ adds r0, 0x8
+ lsls r0, 16
+ movs r1, 0x80
+ lsls r1, 17
+ cmp r0, r1
+ bhi _080ABFDE
+ adds r1, r2, 0
+ movs r0, 0x8
+ negs r0, r0
+ cmp r1, r0
+ blt _080ABFDE
+ cmp r1, 0x78
+ ble _080AC002
+_080ABFDE:
+ ldr r3, _080AC008 @ =gTasks
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl DestroySprite
+_080AC002:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC008: .4byte gTasks
+ thumb_func_end sub_80ABF60
+
+ thumb_func_start sub_80AC00C
+sub_80AC00C: @ 80AC00C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080AC03C @ =gTasks
+ adds r4, r1, r0
+ bl sub_80ABDC8
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0xA]
+ ldr r0, _080AC040 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AC044
+ movs r0, 0x88
+ strh r0, [r4, 0x10]
+ movs r0, 0x28
+ b _080AC04A
+ .align 2, 0
+_080AC03C: .4byte gTasks
+_080AC040: .4byte gBattleAnimAttacker
+_080AC044:
+ movs r0, 0x10
+ strh r0, [r4, 0x10]
+ movs r0, 0x50
+_080AC04A:
+ strh r0, [r4, 0x14]
+ movs r0, 0x62
+ strh r0, [r4, 0x12]
+ ldrh r0, [r4, 0x10]
+ adds r0, 0x31
+ strh r0, [r4, 0x16]
+ movs r0, 0xA
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ adds r0, 0x5
+ strh r0, [r4, 0x20]
+ ldr r0, _080AC06C @ =sub_80AC070
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC06C: .4byte sub_80AC070
+ thumb_func_end sub_80AC00C
+
+ thumb_func_start sub_80AC070
+sub_80AC070: @ 80AC070
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ ldr r7, _080AC094 @ =gTasks
+ adds r4, r0, r7
+ movs r0, 0x8
+ ldrsh r2, [r4, r0]
+ cmp r2, 0
+ beq _080AC098
+ cmp r2, 0x1
+ beq _080AC148
+ b _080AC156
+ .align 2, 0
+_080AC094: .4byte gTasks
+_080AC098:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _080AC0AE
+ strh r2, [r4, 0xC]
+ adds r0, r4, 0
+ bl sub_80AC160
+_080AC0AE:
+ movs r1, 0x1C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080AC128
+ movs r2, 0x22
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080AC128
+ ldr r5, _080AC13C @ =gBattleAnimArgs
+ movs r1, 0x1
+ mov r8, r1
+ mov r2, r8
+ strh r2, [r5]
+ strh r0, [r5, 0x2]
+ movs r0, 0xC
+ strh r0, [r5, 0x4]
+ ldr r6, _080AC140 @ =sub_80B94B4
+ adds r0, r6, 0
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xFF
+ beq _080AC0F8
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r0, r7
+ ldr r1, [r0]
+ adds r0, r2, 0
+ bl _call_via_r1
+ ldr r1, _080AC144 @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_080AC0F8:
+ movs r0, 0x3
+ strh r0, [r5]
+ adds r0, r6, 0
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xFF
+ beq _080AC124
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r0, r7
+ ldr r1, [r0]
+ adds r0, r2, 0
+ bl _call_via_r1
+ ldr r1, _080AC144 @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_080AC124:
+ mov r0, r8
+ strh r0, [r4, 0x22]
+_080AC128:
+ movs r2, 0x1E
+ ldrsh r1, [r4, r2]
+ movs r2, 0x20
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ blt _080AC156
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080AC156
+ .align 2, 0
+_080AC13C: .4byte gBattleAnimArgs
+_080AC140: .4byte sub_80B94B4
+_080AC144: .4byte gUnknown_2037EE2
+_080AC148:
+ movs r2, 0x1A
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080AC156
+ adds r0, r1, 0
+ bl DestroyAnimVisualTask
+_080AC156:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AC070
+
+ thumb_func_start sub_80AC160
+sub_80AC160: @ 80AC160
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r6, r1, 24
+ ldr r1, _080AC1EC @ =gSineTable
+ movs r2, 0x18
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ adds r0, 0x3
+ asrs r0, 4
+ ldrh r2, [r4, 0x14]
+ adds r0, r2
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldr r0, _080AC1F0 @ =gUnknown_83E5AE0
+ movs r2, 0x16
+ ldrsh r1, [r4, r2]
+ movs r2, 0
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _080AC1BA
+ ldr r3, _080AC1F4 @ =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r3, 0
+ adds r1, 0x1C
+ adds r1, r0, r1
+ ldr r2, _080AC1F8 @ =sub_80AC204
+ str r2, [r1]
+ adds r0, r3
+ strh r5, [r0, 0x38]
+ strh r6, [r0, 0x3A]
+ movs r1, 0x9
+ strh r1, [r0, 0x3C]
+ ldrh r0, [r4, 0x1A]
+ adds r0, 0x1
+ strh r0, [r4, 0x1A]
+_080AC1BA:
+ ldrh r0, [r4, 0x1E]
+ adds r0, 0x1
+ strh r0, [r4, 0x1E]
+ ldrh r0, [r4, 0x18]
+ adds r0, 0x27
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x18]
+ movs r0, 0x16
+ ldrsh r1, [r4, r0]
+ ldr r0, _080AC1FC @ =0x41c64e6d
+ muls r0, r1
+ ldr r1, _080AC200 @ =0x00003039
+ adds r0, r1
+ movs r2, 0x12
+ ldrsh r1, [r4, r2]
+ bl __modsi3
+ ldrh r1, [r4, 0x10]
+ adds r1, r0
+ strh r1, [r4, 0x16]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC1EC: .4byte gSineTable
+_080AC1F0: .4byte gUnknown_83E5AE0
+_080AC1F4: .4byte gSprites
+_080AC1F8: .4byte sub_80AC204
+_080AC1FC: .4byte 0x41c64e6d
+_080AC200: .4byte 0x00003039
+ thumb_func_end sub_80AC160
+
+ thumb_func_start sub_80AC204
+sub_80AC204: @ 80AC204
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080AC29A
+ ldrh r0, [r5, 0x22]
+ adds r0, 0x8
+ strh r0, [r5, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x38
+ ldrsh r1, [r5, r2]
+ cmp r0, r1
+ blt _080AC29A
+ ldr r2, _080AC2A0 @ =gTasks
+ movs r3, 0x3A
+ ldrsh r1, [r5, r3]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ movs r1, 0x1
+ strh r1, [r0, 0x1C]
+ ldr r0, _080AC2A4 @ =gUnknown_83E7C38
+ movs r2, 0x20
+ ldrsh r1, [r5, r2]
+ movs r3, 0x22
+ ldrsh r2, [r5, r3]
+ movs r3, 0x1
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x30]
+ cmp r0, 0x40
+ beq _080AC294
+ movs r0, 0x30
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r4, _080AC2A8 @ =gSprites
+ adds r0, r4
+ movs r1, 0x3
+ bl StartSpriteAffineAnim
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r1, [r5, 0x3A]
+ strh r1, [r0, 0x3A]
+ movs r3, 0x30
+ ldrsh r1, [r5, r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r1, [r5, 0x3C]
+ strh r1, [r0, 0x3C]
+ movs r0, 0x30
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r4, 0x1C
+ adds r0, r4
+ ldr r1, _080AC2AC @ =sub_80AC2B0
+ str r1, [r0]
+_080AC294:
+ adds r0, r5, 0
+ bl DestroySprite
+_080AC29A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC2A0: .4byte gTasks
+_080AC2A4: .4byte gUnknown_83E7C38
+_080AC2A8: .4byte gSprites
+_080AC2AC: .4byte sub_80AC2B0
+ thumb_func_end sub_80AC204
+
+ thumb_func_start sub_80AC2B0
+sub_80AC2B0: @ 80AC2B0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AC31C
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ bne _080AC31C
+ ldr r3, _080AC324 @ =gTasks
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080AC31C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC324: .4byte gTasks
+ thumb_func_end sub_80AC2B0
+
+ thumb_func_start sub_80AC328
+sub_80AC328: @ 80AC328
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080AC3AC @ =gTasks
+ adds r5, r1, r0
+ ldr r4, _080AC3B0 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ movs r6, 0
+ strh r0, [r5, 0xE]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x10]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r2, 0x1
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ bne _080AC36C
+ movs r1, 0x1
+_080AC36C:
+ strh r1, [r5, 0x16]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AC380
+ movs r1, 0x16
+ ldrsh r0, [r5, r1]
+ negs r0, r0
+ strh r0, [r5, 0x16]
+_080AC380:
+ movs r2, 0x16
+ ldrsh r0, [r5, r2]
+ lsls r0, 3
+ ldrh r1, [r5, 0xE]
+ adds r0, r1
+ strh r0, [r5, 0x12]
+ movs r2, 0x16
+ ldrsh r1, [r5, r2]
+ lsls r1, 3
+ ldrh r0, [r5, 0x10]
+ subs r0, r1
+ strh r0, [r5, 0x14]
+ ldr r0, _080AC3B4 @ =0x0000ffe0
+ strh r0, [r5, 0x1A]
+ strh r6, [r5, 0xA]
+ strh r6, [r5, 0x8]
+ ldr r0, _080AC3B8 @ =sub_80AC3BC
+ str r0, [r5]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC3AC: .4byte gTasks
+_080AC3B0: .4byte gBattleAnimAttacker
+_080AC3B4: .4byte 0x0000ffe0
+_080AC3B8: .4byte sub_80AC3BC
+ thumb_func_end sub_80AC328
+
+ thumb_func_start sub_80AC3BC
+sub_80AC3BC: @ 80AC3BC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080AC3E0 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x6
+ bls _080AC3D6
+ b _080AC4F6
+_080AC3D6:
+ lsls r0, 2
+ ldr r1, _080AC3E4 @ =_080AC3E8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080AC3E0: .4byte gTasks
+_080AC3E4: .4byte _080AC3E8
+ .align 2, 0
+_080AC3E8:
+ .4byte _080AC404
+ .4byte _080AC414
+ .4byte _080AC42E
+ .4byte _080AC470
+ .4byte _080AC492
+ .4byte _080AC4C0
+ .4byte _080AC4E6
+_080AC404:
+ adds r0, r4, 0
+ bl sub_80AC504
+ movs r1, 0x1C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080AC4FC
+ b _080AC4EE
+_080AC414:
+ adds r0, r4, 0
+ bl sub_80AC504
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _080AC4FC
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _080AC4EE
+_080AC42E:
+ adds r0, r4, 0
+ bl sub_80AC504
+ movs r1, 0x16
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 1
+ ldrh r0, [r4, 0x12]
+ adds r1, r0
+ movs r2, 0
+ strh r1, [r4, 0x12]
+ adds r1, 0x10
+ lsls r1, 16
+ movs r0, 0x88
+ lsls r0, 17
+ cmp r1, r0
+ bls _080AC4FC
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _080AC46C
+ movs r0, 0x1
+ strh r0, [r4, 0x22]
+ movs r0, 0x6
+ strh r0, [r4, 0x8]
+ strh r2, [r4, 0xA]
+ b _080AC4FC
+_080AC46C:
+ strh r2, [r4, 0xA]
+ b _080AC4EE
+_080AC470:
+ adds r0, r4, 0
+ bl sub_80AC504
+ movs r0, 0x16
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ ldrh r0, [r4, 0x14]
+ subs r0, r1
+ strh r0, [r4, 0x14]
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7
+ ble _080AC4FC
+ b _080AC4EE
+_080AC492:
+ adds r0, r4, 0
+ bl sub_80AC504
+ movs r1, 0x16
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 1
+ ldrh r0, [r4, 0x12]
+ subs r0, r1
+ strh r0, [r4, 0x12]
+ adds r0, 0x10
+ lsls r0, 16
+ movs r1, 0x88
+ lsls r1, 17
+ cmp r0, r1
+ bls _080AC4FC
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x1
+ strh r0, [r4, 0x20]
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _080AC4EE
+_080AC4C0:
+ adds r0, r4, 0
+ bl sub_80AC504
+ movs r0, 0x16
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ ldrh r0, [r4, 0x14]
+ subs r0, r1
+ strh r0, [r4, 0x14]
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7
+ ble _080AC4FC
+ movs r0, 0x2
+ strh r0, [r4, 0x8]
+ b _080AC4FC
+_080AC4E6:
+ movs r1, 0x18
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AC4FC
+_080AC4EE:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080AC4FC
+_080AC4F6:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080AC4FC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AC3BC
+
+ thumb_func_start sub_80AC504
+sub_80AC504: @ 80AC504
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ ldrh r0, [r6, 0xC]
+ adds r0, 0x1
+ strh r0, [r6, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AC55E
+ movs r0, 0
+ strh r0, [r6, 0xC]
+ ldr r0, _080AC564 @ =gUnknown_83E5AE0
+ movs r2, 0xE
+ ldrsh r1, [r6, r2]
+ movs r3, 0x10
+ ldrsh r2, [r6, r3]
+ movs r3, 0xA
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _080AC55E
+ ldr r5, _080AC568 @ =gSprites
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ adds r0, r4, r5
+ movs r1, 0x10
+ strh r1, [r0, 0x2E]
+ ldrh r1, [r6, 0x12]
+ strh r1, [r0, 0x32]
+ ldrh r1, [r6, 0x14]
+ strh r1, [r0, 0x36]
+ ldrh r1, [r6, 0x1A]
+ strh r1, [r0, 0x38]
+ bl sub_8075068
+ adds r5, 0x1C
+ adds r4, r5
+ ldr r0, _080AC56C @ =sub_80AC570
+ str r0, [r4]
+ ldrh r0, [r6, 0x18]
+ adds r0, 0x1
+ strh r0, [r6, 0x18]
+_080AC55E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC564: .4byte gUnknown_83E5AE0
+_080AC568: .4byte gSprites
+_080AC56C: .4byte sub_80AC570
+ thumb_func_end sub_80AC504
+
+ thumb_func_start sub_80AC570
+sub_80AC570: @ 80AC570
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AC5CA
+ ldrh r0, [r6, 0x24]
+ ldrh r1, [r6, 0x20]
+ adds r0, r1
+ strh r0, [r6, 0x20]
+ ldrh r0, [r6, 0x26]
+ ldrh r1, [r6, 0x22]
+ adds r0, r1
+ strh r0, [r6, 0x22]
+ movs r0, 0x6
+ strh r0, [r6, 0x2E]
+ bl Random
+ movs r4, 0x1F
+ adds r1, r4, 0
+ ands r1, r0
+ ldr r5, _080AC5D0 @ =0x0000fff0
+ adds r1, r5
+ ldrh r0, [r6, 0x20]
+ adds r1, r0
+ strh r1, [r6, 0x32]
+ bl Random
+ ands r4, r0
+ adds r4, r5
+ ldrh r1, [r6, 0x22]
+ adds r4, r1
+ strh r4, [r6, 0x36]
+ bl Random
+ movs r1, 0x7
+ ands r1, r0
+ mvns r1, r1
+ strh r1, [r6, 0x38]
+ adds r0, r6, 0
+ bl sub_8075068
+ ldr r0, _080AC5D4 @ =sub_80AC5D8
+ str r0, [r6, 0x1C]
+_080AC5CA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC5D0: .4byte 0x0000fff0
+_080AC5D4: .4byte sub_80AC5D8
+ thumb_func_end sub_80AC570
+
+ thumb_func_start sub_80AC5D8
+sub_80AC5D8: @ 80AC5D8
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AC614
+ movs r4, 0
+ ldr r6, _080AC61C @ =gTasks
+_080AC5EA:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r2, r0, r6
+ ldr r1, [r2]
+ ldr r0, _080AC620 @ =sub_80AC3BC
+ cmp r1, r0
+ bne _080AC60A
+ movs r0, 0x1
+ strh r0, [r2, 0x1C]
+ ldrh r0, [r2, 0x18]
+ subs r0, 0x1
+ strh r0, [r2, 0x18]
+ adds r0, r5, 0
+ bl DestroySprite
+_080AC60A:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0xF
+ bls _080AC5EA
+_080AC614:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC61C: .4byte gTasks
+_080AC620: .4byte sub_80AC3BC
+ thumb_func_end sub_80AC5D8
+
+ thumb_func_start sub_80AC624
+sub_80AC624: @ 80AC624
+ ldr r2, _080AC644 @ =gBattleAnimArgs
+ ldrh r1, [r2]
+ strh r1, [r0, 0x20]
+ ldrh r1, [r2, 0x2]
+ strh r1, [r0, 0x22]
+ ldrh r1, [r2, 0x4]
+ strh r1, [r0, 0x2E]
+ ldrh r1, [r2, 0x6]
+ strh r1, [r0, 0x30]
+ ldrh r1, [r2, 0x8]
+ strh r1, [r0, 0x32]
+ ldrh r1, [r2, 0xA]
+ strh r1, [r0, 0x34]
+ ldr r1, _080AC648 @ =sub_80AC64C
+ str r1, [r0, 0x1C]
+ bx lr
+ .align 2, 0
+_080AC644: .4byte gBattleAnimArgs
+_080AC648: .4byte sub_80AC64C
+ thumb_func_end sub_80AC624
+
+ thumb_func_start sub_80AC64C
+sub_80AC64C: @ 80AC64C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x36]
+ ldrh r1, [r4, 0x2E]
+ subs r0, r1
+ strh r0, [r4, 0x36]
+ movs r1, 0x36
+ ldrsh r0, [r4, r1]
+ movs r1, 0xA
+ bl __divsi3
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ ldrh r2, [r4, 0x38]
+ adds r0, r2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r2, 0x32
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x34]
+ subs r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080AC690
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AC690:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AC64C
+
+ thumb_func_start sub_80AC698
+sub_80AC698: @ 80AC698
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x34]
+ adds r0, r1
+ strh r0, [r4, 0x34]
+ ldrh r1, [r4, 0x32]
+ ldrh r2, [r4, 0x36]
+ adds r1, r2
+ strh r1, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 23
+ strh r0, [r4, 0x24]
+ lsls r1, 16
+ asrs r1, 23
+ strh r1, [r4, 0x26]
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080AC6D0
+ adds r0, r4, 0
+ bl FreeSpriteOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_080AC6D0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AC698
+
+ thumb_func_start sub_80AC6D8
+sub_80AC6D8: @ 80AC6D8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r5, _080AC714 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x30]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldr r1, _080AC718 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x34]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x36]
+ ldr r0, _080AC71C @ =sub_80AC720
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC714: .4byte gBattleAnimTarget
+_080AC718: .4byte gBattleAnimArgs
+_080AC71C: .4byte sub_80AC720
+ thumb_func_end sub_80AC6D8
+
+ thumb_func_start sub_80AC720
+sub_80AC720: @ 80AC720
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ movs r0, 0x30
+ ldrsh r1, [r4, r0]
+ movs r2, 0x20
+ ldrsh r0, [r4, r2]
+ subs r6, r1, r0
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ movs r2, 0x22
+ ldrsh r0, [r4, r2]
+ subs r5, r1, r0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ muls r0, r6
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ muls r0, r5
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ bne _080AC778
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ bl sub_80AC798
+_080AC778:
+ movs r0, 0x34
+ ldrsh r1, [r4, r0]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _080AC78A
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AC78A:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AC720
+
+ thumb_func_start sub_80AC798
+sub_80AC798: @ 80AC798
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x18
+ adds r4, r1, 0
+ adds r5, r2, 0
+ movs r2, 0x2E
+ ldrsh r1, [r0, r2]
+ lsrs r2, r1, 31
+ adds r1, r2
+ lsls r1, 15
+ lsrs r1, 16
+ str r1, [sp]
+ ldrh r1, [r0, 0x24]
+ ldrh r3, [r0, 0x20]
+ adds r1, r3
+ lsls r1, 16
+ lsrs r1, 16
+ mov r8, r1
+ ldrh r1, [r0, 0x26]
+ ldrh r0, [r0, 0x22]
+ adds r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r10, r1
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xA
+ bl __umodsi3
+ adds r0, r5, r0
+ subs r0, 0x5
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ bl Random
+ negs r4, r4
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xA
+ bl __umodsi3
+ adds r4, r0
+ subs r4, 0x5
+ lsls r4, 16
+ lsrs r7, r4, 16
+ movs r6, 0
+ mov r0, r8
+ lsls r0, 16
+ mov r8, r0
+ mov r1, r10
+ lsls r1, 16
+ str r1, [sp, 0xC]
+ ldr r2, [sp]
+ lsls r2, 16
+ str r2, [sp, 0x10]
+ asrs r1, 16
+ lsls r0, r7, 16
+ asrs r5, r0, 16
+ str r0, [sp, 0x14]
+ negs r3, r5
+ str r3, [sp, 0x4]
+ asrs r0, r2, 16
+ adds r1, r0
+ lsls r1, 16
+ mov r10, r1
+_080AC826:
+ ldr r0, _080AC868 @ =gUnknown_83E5B88
+ mov r2, r8
+ asrs r1, r2, 16
+ mov r3, r10
+ asrs r2, r3, 16
+ movs r3, 0x82
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _080AC86C @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r4, r0, r1
+ movs r0, 0x14
+ strh r0, [r4, 0x2E]
+ mov r0, r9
+ strh r0, [r4, 0x30]
+ ldr r0, _080AC870 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_807685C
+ subs r0, 0x1
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ cmp r5, 0
+ bge _080AC874
+ mov r1, sp
+ ldrh r1, [r1, 0x4]
+ strh r1, [r4, 0x32]
+ b _080AC876
+ .align 2, 0
+_080AC868: .4byte gUnknown_83E5B88
+_080AC86C: .4byte gSprites
+_080AC870: .4byte gBattleAnimAttacker
+_080AC874:
+ strh r7, [r4, 0x32]
+_080AC876:
+ lsls r0, r6, 16
+ movs r2, 0x80
+ lsls r2, 9
+ adds r0, r2
+ lsrs r6, r0, 16
+ cmp r0, 0
+ ble _080AC826
+ movs r6, 0
+ ldr r3, [sp, 0xC]
+ asrs r1, r3, 16
+ ldr r0, [sp, 0x14]
+ asrs r5, r0, 16
+ negs r2, r5
+ str r2, [sp, 0x8]
+ ldr r3, [sp, 0x10]
+ asrs r0, r3, 16
+ subs r1, r0
+ lsls r1, 16
+ mov r10, r1
+_080AC89C:
+ ldr r0, _080AC8E0 @ =gUnknown_83E5B88
+ mov r2, r8
+ asrs r1, r2, 16
+ mov r3, r10
+ asrs r2, r3, 16
+ movs r3, 0x82
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _080AC8E4 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r4, r0, r1
+ movs r0, 0x14
+ strh r0, [r4, 0x2E]
+ mov r0, r9
+ strh r0, [r4, 0x30]
+ ldr r0, _080AC8E8 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_807685C
+ subs r0, 0x1
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ cmp r5, 0
+ ble _080AC8EC
+ mov r1, sp
+ ldrh r1, [r1, 0x8]
+ strh r1, [r4, 0x32]
+ b _080AC8EE
+ .align 2, 0
+_080AC8E0: .4byte gUnknown_83E5B88
+_080AC8E4: .4byte gSprites
+_080AC8E8: .4byte gBattleAnimAttacker
+_080AC8EC:
+ strh r7, [r4, 0x32]
+_080AC8EE:
+ lsls r0, r6, 16
+ movs r2, 0x80
+ lsls r2, 9
+ adds r0, r2
+ lsrs r6, r0, 16
+ cmp r0, 0
+ ble _080AC89C
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AC798
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s
index 21b97c942..e9fb8a630 100644
--- a/asm/wild_encounter.s
+++ b/asm/wild_encounter.s
@@ -482,7 +482,7 @@ _08082A8E:
lsrs r0, 16
orrs r4, r0
adds r0, r4, 0
- bl GetUnownLetterByPersonality
+ bl GetUnownLetterByPersonalityLoByte
lsls r0, 24
lsrs r0, 24
cmp r0, r5
@@ -493,8 +493,8 @@ _08082A8E:
bx r1
thumb_func_end sub_8082A88
- thumb_func_start GetUnownLetterByPersonality
-GetUnownLetterByPersonality: @ 8082AB8
+ thumb_func_start GetUnownLetterByPersonalityLoByte
+GetUnownLetterByPersonalityLoByte: @ 8082AB8
push {lr}
adds r2, r0, 0
movs r0, 0xC0
@@ -520,7 +520,7 @@ GetUnownLetterByPersonality: @ 8082AB8
lsrs r0, 24
pop {r1}
bx r1
- thumb_func_end GetUnownLetterByPersonality
+ thumb_func_end GetUnownLetterByPersonalityLoByte
thumb_func_start sub_8082AEC
sub_8082AEC: @ 8082AEC
@@ -1020,8 +1020,8 @@ _08082EB6:
_08082EBC: .4byte gSpecialVar_Result
thumb_func_end sub_8082E54
- thumb_func_start sub_8082EC0
-sub_8082EC0: @ 8082EC0
+ thumb_func_start SweetScentWildEncounter
+SweetScentWildEncounter: @ 8082EC0
push {r4,r5,lr}
sub sp, 0x4
mov r4, sp
@@ -1108,7 +1108,7 @@ _08082F6E:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_8082EC0
+ thumb_func_end SweetScentWildEncounter
thumb_func_start sub_8082F78
sub_8082F78: @ 8082F78
diff --git a/baserom.ips b/baserom.ips
new file mode 100644
index 000000000..b8bb6bebb
--- /dev/null
+++ b/baserom.ips
Binary files differ
diff --git a/berry_fix/payload/include/global.fieldmap.h b/berry_fix/payload/include/global.fieldmap.h
index 81f805ee2..f876e5a56 100644
--- a/berry_fix/payload/include/global.fieldmap.h
+++ b/berry_fix/payload/include/global.fieldmap.h
@@ -309,7 +309,7 @@ struct Camera
s32 y;
};
-extern struct EventObject gEventObjects[];
+extern struct EventObject gMapObjects[];
extern u8 gSelectedEventObject;
extern struct MapHeader gMapHeader;
extern struct PlayerAvatar gPlayerAvatar;
diff --git a/build_tools.sh b/build_tools.sh
index 212df96e7..f64b01573 100755
--- a/build_tools.sh
+++ b/build_tools.sh
@@ -8,3 +8,4 @@ make -C tools/ramscrgen CXX=${1:-g++}
make -C tools/rsfont CXX=${1:-g++}
make -C tools/scaninc CXX=${1:-g++}
make -C tools/mapjson CXX=${1:-g++}
+make -C tools/jsonproc CXX=${1:-g++}
diff --git a/charmap.txt b/charmap.txt
index 11941ca58..fe0747616 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -323,14 +323,47 @@ TALL_PLUS = FC 0C FB
@ TODO: Identify and declare F7 control codes
UNKNOWN_F7 = F7
-UNKNOWN_F8 = F8
-UNKNOWN_F9 = F9
+KEYGFX = F8
+EXTRA = F9
-KEYGFX_A_BUTTON = F8 00
-KEYGFX_B_BUTTON = F8 01
-KEYGFX_START_BUTTON = F8 04
-KEYGFX_DPAD_UP_DOWN = F8 0A
-KEYGFX_DPAD_ANY = F8 0C
+KEYGFX_A_BUTTON = F8 00
+KEYGFX_B_BUTTON = F8 01
+KEYGFX_L_BUTTON = F8 02
+KEYGFX_R_BUTTON = F8 03
+KEYGFX_START_BUTTON = F8 04
+KEYGFX_SELECT_BUTTON = F8 05
+KEYGFX_DPAD_UP = F8 06
+KEYGFX_DPAD_DOWN = F8 07
+KEYGFX_DPAD_LEFT = F8 08
+KEYGFX_DPAD_RIGHT = F8 09
+KEYGFX_DPAD_UP_DOWN = F8 0A
+KEYGFX_DPAD_LEFT_RIGHT = F8 0B
+KEYGFX_DPAD_ANY = F8 0C
+
+EXTRA_UPARROW = F9 00
+EXTRA_DOWNARROW = F9 01
+EXTRA_LEFTARROW = F9 02
+EXTRA_RIGHTARROW = F9 03
+EXTRA_PLUS = F9 04
+EXTRA_LV = F9 05
+EXTRA_PP = F9 06
+EXTRA_ID = F9 07
+EXTRA_NO = F9 08
+EXTRA_UNDERSCORE = F9 09
+EXTRA_CIRCLE_1 = F9 0A
+EXTRA_CIRCLE_2 = F9 0B
+EXTRA_CIRCLE_3 = F9 0C
+EXTRA_CIRCLE_4 = F9 0D
+EXTRA_CIRCLE_5 = F9 0E
+EXTRA_CIRCLE_6 = F9 0F
+EXTRA_CIRCLE_7 = F9 10
+EXTRA_CIRCLE_8 = F9 11
+EXTRA_CIRCLE_9 = F9 12
+EXTRA_LEFT_PAREN = F9 13
+EXTRA_RIGHT_PAREN = F9 14
+EXTRA_TARGET = F9 15
+EXTRA_TRIANGLE = F9 16
+EXTRA_X = F9 17
STRING = FD
@@ -377,7 +410,7 @@ PAUSE_UNTIL_PRESS = FC 09
UNKNOWN_A = FC 0A
PLAY_BGM = FC 0B
ESCAPE = FC 0C
-SHIFT_TEXT = FC 0D
+SHIFT_TEXT = FC 0D
UNKNOWN_E = FC 0E
UNKNOWN_F = FC 0F
PLAY_SE = FC 10
diff --git a/common_syms/berry_fix_program.txt b/common_syms/berry_fix_program.txt
new file mode 100644
index 000000000..63b3de271
--- /dev/null
+++ b/common_syms/berry_fix_program.txt
@@ -0,0 +1,4 @@
+gUnknown_3005EF0
+gUnknown_3005EF4
+gUnknown_3005EF8
+gUnknown_3005F00
diff --git a/common_syms/help_system_812B1E0.txt b/common_syms/help_system_812B1E0.txt
new file mode 100644
index 000000000..7986bedb5
--- /dev/null
+++ b/common_syms/help_system_812B1E0.txt
@@ -0,0 +1,2 @@
+gUnknown_3005E9C
+gUnknown_3005EA0
diff --git a/common_syms/list_menu.txt b/common_syms/list_menu.txt
new file mode 100644
index 000000000..ed5343618
--- /dev/null
+++ b/common_syms/list_menu.txt
@@ -0,0 +1,2 @@
+gListMenuOverride
+gMultiuseListMenuTemplate
diff --git a/data/buy_menu_helpers.s b/data/buy_menu_helpers.s
deleted file mode 100644
index a59b8e069..000000000
--- a/data/buy_menu_helpers.s
+++ /dev/null
@@ -1,14 +0,0 @@
- .section .rodata
- .align 2
-
-gUnknown_8464804:: @ 8464804
- .incbin "baserom.gba", 0x464804, 0x38
-
-gUnknown_846483C:: @ 846483C
- .incbin "baserom.gba", 0x46483C, 0x40
-
-gUnknown_846487C:: @ 846487C
- .incbin "baserom.gba", 0x46487C, 0x8
-
-gUnknown_8464884:: @ 8464884
- .incbin "baserom.gba", 0x464884, 0xC
diff --git a/data/data.s b/data/data.s
index 499e3c9db..0322670c0 100644
--- a/data/data.s
+++ b/data/data.s
@@ -68,7 +68,52 @@ gUnknown_8234690:: @ 8234690
.incbin "baserom.gba", 0x234690, 0x4
gUnknown_8234694:: @ 8234694
- .incbin "baserom.gba", 0x234694, 0x328
+ .incbin "baserom.gba", 0x234694, 0x4
+
+gUnknown_8234698:: @ 8234698
+ .incbin "baserom.gba", 0x234698, 0x20
+
+gUnknown_82346B8:: @ 82346B8
+ .incbin "baserom.gba", 0x2346B8, 0x20
+
+gUnknown_82346D8:: @ 82346D8
+ .incbin "baserom.gba", 0x2346D8, 0x20
+
+gUnknown_82346F8:: @ 82346F8
+ .incbin "baserom.gba", 0x2346F8, 0x20
+
+gUnknown_8234718:: @ 8234718
+ .incbin "baserom.gba", 0x234718, 0x28
+
+gUnknown_8234740:: @ 8234740
+ .incbin "baserom.gba", 0x234740, 0x28
+
+gUnknown_8234768:: @ 8234768
+ .incbin "baserom.gba", 0x234768, 0x20
+
+gUnknown_8234788:: @ 8234788
+ .incbin "baserom.gba", 0x234788, 0x20
+
+gUnknown_82347A8:: @ 82347A8
+ .incbin "baserom.gba", 0x2347A8, 0x20
+
+gUnknown_82347C8:: @ 82347C8
+ .incbin "baserom.gba", 0x2347C8, 0x20
+
+gUnknown_82347E8:: @ 82347E8
+ .incbin "baserom.gba", 0x2347E8, 0xE0
+
+gUnknown_82348C8:: @ 82348C8
+ .incbin "baserom.gba", 0x2348C8, 0x24
+
+gUnknown_82348EC:: @ 82348EC
+ .incbin "baserom.gba", 0x2348EC, 0x58
+
+gUnknown_8234944:: @ 8234944
+ .incbin "baserom.gba", 0x234944, 0x58
+
+gUnknown_823499C:: @ 823499C
+ .incbin "baserom.gba", 0x23499C, 0x20
gUnknown_82349BC:: @ 82349BC
.incbin "baserom.gba", 0x2349BC, 0x10
@@ -174,7 +219,16 @@ gUnknown_824EFF0:: @ 824EFF0
.incbin "baserom.gba", 0x24EFF0, 0x18
gUnknown_824F008:: @ 824F008
- .incbin "baserom.gba", 0x24F008, 0x40
+ .incbin "baserom.gba", 0x24F008, 0x8
+
+gUnknown_824F010:: @ 824F010
+ .incbin "baserom.gba", 0x24F010, 0x8
+
+gUnknown_824F018:: @ 824F018
+ .incbin "baserom.gba", 0x24F018, 0x8
+
+gUnknown_824F020:: @ 824F020
+ .incbin "baserom.gba", 0x24F020, 0x28
gUnknown_824F048:: @ 824F048
.incbin "baserom.gba", 0x24F048, 0x8
@@ -302,251 +356,6 @@ gUnknown_8250A34:: @ 8250A34
gUnknown_8250B20:: @ 8250B20
.incbin "baserom.gba", 0x250B20, 0xE4
-gBattleMoves:: @ 8250C04
- .incbin "baserom.gba", 0x250C04, 0x10B4
-
-gUnknown_8251CB8:: @ 8251CB8
- .incbin "baserom.gba", 0x251CB8, 0x336
-
-gUnknown_8251FEE:: @ 8251FEE
- .incbin "baserom.gba", 0x251FEE, 0x336
-
-gUnknown_8252324:: @ 8252324
- .incbin "baserom.gba", 0x252324, 0x338
-
-gSpindaSpotGraphics:: @ 825265C
- .incbin "baserom.gba", 0x25265C, 0x260
-
-gItemEffectTable:: @ 82528BC
- .incbin "baserom.gba", 0x2528BC, 0x28C
-
-gNatureStatTable:: @ 8252B48
- .incbin "baserom.gba", 0x252B48, 0x80
-
-gTMHMLearnsets:: @ 8252BC8
- .incbin "baserom.gba", 0x252BC8, 0xCE0
-
-gFacilityClassToPicIndex:: @ 82538A8
- .incbin "baserom.gba", 0x2538A8, 0x96
-
-gFacilityClassToTrainerClass:: @ 825393E
- .byte CLASS_AQUA_LEADER
- .byte CLASS_TEAM_AQUA
- .byte CLASS_TEAM_AQUA
- .byte CLASS_AROMA_LADY
- .byte CLASS_RUIN_MANIAC
- .byte CLASS_INTERVIEWER
- .byte CLASS_TUBER
- .byte CLASS_TUBER_2
- .byte CLASS_COOLTRAINER
- .byte CLASS_COOLTRAINER
- .byte CLASS_HEX_MANIAC
- .byte CLASS_LADY
- .byte CLASS_BEAUTY
- .byte CLASS_RICH_BOY
- .byte CLASS_POKEMANIAC
- .byte CLASS_SWIMMER_MALE
- .byte CLASS_BLACK_BELT
- .byte CLASS_GUITARIST
- .byte CLASS_KINDLER
- .byte CLASS_CAMPER
- .byte CLASS_BUG_MANIAC
- .byte CLASS_PSYCHIC
- .byte CLASS_PSYCHIC
- .byte CLASS_GENTLEMAN
- .byte CLASS_ELITE_FOUR
- .byte CLASS_ELITE_FOUR
- .byte CLASS_LEADER
- .byte CLASS_LEADER
- .byte CLASS_LEADER
- .byte CLASS_SCHOOL_KID
- .byte CLASS_SCHOOL_KID
- .byte CLASS_SR_AND_JR
- .byte CLASS_POKEFAN
- .byte CLASS_POKEFAN
- .byte CLASS_EXPERT
- .byte CLASS_EXPERT
- .byte CLASS_YOUNGSTER
- .byte CLASS_CHAMPION
- .byte CLASS_FISHERMAN
- .byte CLASS_TRIATHLETE
- .byte CLASS_TRIATHLETE
- .byte CLASS_TRIATHLETE
- .byte CLASS_TRIATHLETE
- .byte CLASS_TRIATHLETE
- .byte CLASS_TRIATHLETE
- .byte CLASS_DRAGON_TAMER
- .byte CLASS_BIRD_KEEPER
- .byte CLASS_NINJA_BOY
- .byte CLASS_BATTLE_GIRL
- .byte CLASS_PARASOL_LADY
- .byte CLASS_SWIMMER_FEMALE
- .byte CLASS_PICNICKER
- .byte CLASS_TWINS
- .byte CLASS_SAILOR
- .byte CLASS_BOARDER
- .byte CLASS_BOARDER
- .byte CLASS_COLLECTOR
- .byte CLASS_PKMN_TRAINER_3
- .byte CLASS_PKMN_TRAINER_3
- .byte CLASS_PKMN_TRAINER_3
- .byte CLASS_PKMN_TRAINER_3
- .byte CLASS_PKMN_TRAINER_3
- .byte CLASS_PKMN_TRAINER_3
- .byte CLASS_PKMN_TRAINER_3
- .byte CLASS_PKMN_BREEDER
- .byte CLASS_PKMN_BREEDER
- .byte CLASS_PKMN_RANGER
- .byte CLASS_PKMN_RANGER
- .byte CLASS_MAGMA_LEADER
- .byte CLASS_TEAM_MAGMA
- .byte CLASS_TEAM_MAGMA
- .byte CLASS_LASS
- .byte CLASS_BUG_CATCHER
- .byte CLASS_HIKER
- .byte CLASS_YOUNG_COUPLE
- .byte CLASS_OLD_COUPLE
- .byte CLASS_SIS_AND_BRO
- .byte CLASS_AQUA_ADMIN
- .byte CLASS_AQUA_ADMIN
- .byte CLASS_MAGMA_ADMIN
- .byte CLASS_MAGMA_ADMIN
- .byte CLASS_LEADER
- .byte CLASS_LEADER
- .byte CLASS_LEADER
- .byte CLASS_LEADER
- .byte CLASS_LEADER
- .byte CLASS_ELITE_FOUR
- .byte CLASS_ELITE_FOUR
- .byte CLASS_YOUNGSTER_2
- .byte CLASS_BUG_CATCHER_2
- .byte CLASS_LASS_2
- .byte CLASS_SAILOR_2
- .byte CLASS_CAMPER_2
- .byte CLASS_PICNICKER_2
- .byte CLASS_POKEMANIAC_2
- .byte CLASS_SUPER_NERD
- .byte CLASS_HIKER_2
- .byte CLASS_BIKER
- .byte CLASS_BURGLAR
- .byte CLASS_ENGINEER
- .byte CLASS_FISHERMAN_2
- .byte CLASS_SWIMMER_MALE_2
- .byte CLASS_CUE_BALL
- .byte CLASS_GAMER
- .byte CLASS_BEAUTY_2
- .byte CLASS_SWIMMER_FEMALE_2
- .byte CLASS_PSYCHIC_2
- .byte CLASS_ROCKER
- .byte CLASS_JUGGLER
- .byte CLASS_TAMER
- .byte CLASS_BIRD_KEEPER_2
- .byte CLASS_BLACK_BELT_2
- .byte CLASS_RIVAL
- .byte CLASS_SCIENTIST
- .byte CLASS_BOSS
- .byte CLASS_TEAM_ROCKET
- .byte CLASS_COOLTRAINER_2
- .byte CLASS_COOLTRAINER_2
- .byte CLASS_ELITE_FOUR_2
- .byte CLASS_ELITE_FOUR_2
- .byte CLASS_LEADER_2
- .byte CLASS_LEADER_2
- .byte CLASS_GENTLEMAN_2
- .byte CLASS_RIVAL_2
- .byte CLASS_CHAMPION_2
- .byte CLASS_CHANNELER
- .byte CLASS_TWINS_2
- .byte CLASS_COOL_COUPLE
- .byte CLASS_YOUNG_COUPLE_2
- .byte CLASS_CRUSH_KIN
- .byte CLASS_SIS_AND_BRO_2
- .byte CLASS_PKMN_PROF
- .byte CLASS_PLAYER
- .byte CLASS_PLAYER
- .byte CLASS_PLAYER
- .byte CLASS_PLAYER
- .byte CLASS_TEAM_ROCKET
- .byte CLASS_PSYCHIC_2
- .byte CLASS_CRUSH_GIRL
- .byte CLASS_TUBER_3
- .byte CLASS_PKMN_BREEDER_2
- .byte CLASS_PKMN_RANGER_2
- .byte CLASS_PKMN_RANGER_2
- .byte CLASS_AROMA_LADY_2
- .byte CLASS_RUIN_MANIAC_2
- .byte CLASS_LADY_2
- .byte CLASS_PAINTER
- .byte CLASS_ELITE_FOUR_2
- .byte CLASS_ELITE_FOUR_2
- .byte CLASS_CHAMPION_2
-
-gUnknown_82539D4:: @ 82539D4
- .incbin "baserom.gba", 0x2539D4, 0x110
-
-gExperienceTables:: @ 8253AE4
- .incbin "baserom.gba", 0x253AE4, 0xCA0
-
-gBaseStats:: @ 8254784
- .incbin "baserom.gba", 0x254784, 0x11
-
-gUnknown_8254795:: @ 8254795
- .incbin "baserom.gba", 0x254795, 0x4FBF
-
-gEvolutionTable:: @ 8259754
- .incbin "baserom.gba", 0x259754, 0x4060
-
-gLevelUpLearnsets:: @ 825D7B4
- .incbin "baserom.gba", 0x25D7B4, 0x670
-
-gPokeblockFlavorCompatibilityTable:: @ 825DE24
- .incbin "baserom.gba", 0x25DE24, 0x7D
-
-gUnknown_825DEA1:: @ 825DEA1
- .incbin "baserom.gba", 0x25DEA1, 0x4
-
-gPPUpWriteMasks:: @ 825DEA5
- .incbin "baserom.gba", 0x25DEA5, 0x4
-
-gUnknown_825DEA9:: @ 825DEA9
- .incbin "baserom.gba", 0x25DEA9, 0x4
-
-gStatStageRatios:: @ 825DEAD
- .incbin "baserom.gba", 0x25DEAD, 0x1F
-
-sHoldEffectToType:: @ 825DECC
- .incbin "baserom.gba", 0x25DECC, 0x24
-
-gUnknown_825DEF0:: @ 825DEF0
- .incbin "baserom.gba", 0x25DEF0, 0x60
-
-gUnknown_825DF50:: @ 825DF50
- .incbin "baserom.gba", 0x25DF50, 0x90
-
-sSecretBaseFacilityClasses:: @ 825DFE0
- .incbin "baserom.gba", 0x25DFE0, 0xA
-
-sGetMonDataEVConstants:: @ 825DFEA
- .incbin "baserom.gba", 0x25DFEA, 0x6
-
-gUnknown_825DFF0:: @ 825DFF0
- .incbin "baserom.gba", 0x25DFF0, 0x6
-
-sFriendshipEventDeltas:: @ 825DFF6
- .incbin "baserom.gba", 0x25DFF6, 0x1E
-
-sHMMoves:: @ 825E014
- .incbin "baserom.gba", 0x25E014, 0x12
-
-gUnknown_825E026:: @ 825E026
- .incbin "baserom.gba", 0x25E026, 0xC
-
-gUnknown_825E032:: @ 825E032
- .incbin "baserom.gba", 0x25E032, 0x2A
-
-gUnknown_825E05C:: @ 825E05C
- .incbin "baserom.gba", 0x25E05C, 0x18
-
.section .rodata.825EF0C
.align 2
diff --git a/data/data_835B488.s b/data/data_835B488.s
index 7970f26c4..c106c46c4 100644
--- a/data/data_835B488.s
+++ b/data/data_835B488.s
@@ -542,38 +542,9 @@ gUnknown_83D414C:: @ 83D414C
.incbin "baserom.gba", 0x3D414C, 0x18
gUnknown_83D4164:: @ 83D4164
- .incbin "baserom.gba", 0x3D4164, 0x80
-
-gUnknown_83D41E4:: @ 83D41E4
- .incbin "baserom.gba", 0x3D41E4, 0x8
-
-gUnknown_83D41EC:: @ 83D41EC
- .incbin "baserom.gba", 0x3D41EC, 0x8
-
-gUnknown_83D41F4:: @ 83D41F4
- .incbin "baserom.gba", 0x3D41F4, 0x8
-
-gUnknown_83D41FC:: @ 83D41FC
- .incbin "baserom.gba", 0x3D41FC, 0x44
-
-gUnknown_83D4240:: @ 83D4240
- .incbin "baserom.gba", 0x3D4240, 0x8
-
-gUnknown_83D4248:: @ 83D4248
- .incbin "baserom.gba", 0x3D4248, 0x8
-
-gUnknown_83D4250:: @ 83D4250
- .incbin "baserom.gba", 0x3D4250, 0x2C
-
-gUnknown_83D427C:: @ 83D427C
- .incbin "baserom.gba", 0x3D427C, 0x18
-
-gUnknown_83D4294:: @ 83D4294
- .incbin "baserom.gba", 0x3D4294, 0x6D94
-
-gItems:: @ 83DB028
- .incbin "baserom.gba", 0x3DB028, 0x4074
+ .incbin "baserom.gba", 0x3D4164, 0x8
+ .section .rodata.83DF09C
gUnknown_83DF09C:: @ 83DF09C
.incbin "baserom.gba", 0x3DF09C, 0x18
@@ -803,7 +774,13 @@ gUnknown_83E27AC:: @ 83E27AC
.incbin "baserom.gba", 0x3E27AC, 0x1A8
gUnknown_83E2954:: @ 83E2954
- .incbin "baserom.gba", 0x3E2954, 0x134
+ .4byte sub_8124C8C
+ .4byte CB2_ReturnToField
+ .4byte NULL
+ .4byte NULL
+
+gUnknown_83E2964:: @ 83E2964
+ .incbin "baserom.gba", 0x3E2964, 0x124
gUnknown_83E2A88:: @ 83E2A88
.incbin "baserom.gba", 0x3E2A88, 0x4F0
diff --git a/data/data_83F5738.s b/data/data_83F5738.s
index c14edc5c8..a466ffd45 100644
--- a/data/data_83F5738.s
+++ b/data/data_83F5738.s
@@ -105,26 +105,9 @@ gUnknown_83F6366:: @ 83F6366
gUnknown_83F637C:: @ 83F637C
.incbin "baserom.gba", 0x3F637C, 0xC
-gUnknown_83F6388:: @ 83F6388
- .incbin "baserom.gba", 0x3F6388, 0xC0
-
-gUnknown_83F6448:: @ 83F6448
- .incbin "baserom.gba", 0x3F6448, 0x20
-
-gUnknown_83F6468:: @ 83F6468
- .incbin "baserom.gba", 0x3F6468, 0x800
-
-gUnknown_83F6C68:: @ 83F6C68
- .incbin "baserom.gba", 0x3F6C68, 0x10
-
-gUnknown_83F6C78:: @ 83F6C78
- .incbin "baserom.gba", 0x3F6C78, 0x4
-
-gUnknown_83F6C7C:: @ 83F6C7C
- .incbin "baserom.gba", 0x3F6C7C, 0x8
-
-gUnknown_83F6C84:: @ 83F6C84
- .incbin "baserom.gba", 0x3F6C84, 0x2C
+ .section .rodata.83F6C90
+gUnknown_83F6C90:: @ 83F6C90
+ .incbin "baserom.gba", 0x3F6C90, 0x20
gUnknown_83F6CB0:: @ 83F6CB0
.incbin "baserom.gba", 0x3F6CB0, 0x6F8
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index 839ef6d21..6aade55b6 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -165,164 +165,8 @@ gUnknown_8402250:: @ 8402250
gUnknown_8402258:: @ 8402258
.incbin "baserom.gba", 0x402258, 0x8
-gUnknown_8402260:: @ 8402260
- .incbin "baserom.gba", 0x402260, 0x20
-gUnknown_8402280:: @ 8402280
- .incbin "baserom.gba", 0x402280, 0x264
-
-gUnknown_84024E4:: @ 84024E4
- .incbin "baserom.gba", 0x4024E4, 0x14C
-
-gUnknown_8402630:: @ 8402630
- .incbin "baserom.gba", 0x402630, 0x20
-
-gUnknown_8402650:: @ 8402650
- .incbin "baserom.gba", 0x402650, 0x18
-
-gUnknown_8402668:: @ 8402668
- .incbin "baserom.gba", 0x402668, 0xA4
-
-gUnknown_840270C:: @ 840270C
- .incbin "baserom.gba", 0x40270C, 0x20
-
-gUnknown_840272C:: @ 840272C
- .incbin "baserom.gba", 0x40272C, 0x1CC
-
-gUnknown_84028F8:: @ 84028F8
- .incbin "baserom.gba", 0x4028F8, 0x43C
-
-gUnknown_8402D34:: @ 8402D34
- .incbin "baserom.gba", 0x402D34, 0x20
-
-gUnknown_8402D54:: @ 8402D54
- .incbin "baserom.gba", 0x402D54, 0x1294
-
-gUnknown_8403FE8:: @ 8403FE8
- .incbin "baserom.gba", 0x403FE8, 0x8E4
-
-gUnknown_84048CC:: @ 84048CC
- .incbin "baserom.gba", 0x4048CC, 0x20
-
-gUnknown_84048EC:: @ 84048EC
- .incbin "baserom.gba", 0x4048EC, 0x690
-
-gUnknown_8404F7C:: @ 8404F7C
- .incbin "baserom.gba", 0x404F7C, 0x438
-
-gUnknown_84053B4:: @ 84053B4
- .incbin "baserom.gba", 0x4053B4, 0x60
-
-gUnknown_8405414:: @ 8405414
- .incbin "baserom.gba", 0x405414, 0x47C
-
-gUnknown_8405890:: @ 8405890
- .incbin "baserom.gba", 0x405890, 0x298
-
-gUnknown_8405B28:: @ 8405B28
- .incbin "baserom.gba", 0x405B28, 0x1B4
-
-gUnknown_8405CDC:: @ 8405CDC
- .incbin "baserom.gba", 0x405CDC, 0xC8
-
-gUnknown_8405DA4:: @ 8405DA4
- .incbin "baserom.gba", 0x405DA4, 0x20
-
-gUnknown_8405DC4:: @ 8405DC4
- .incbin "baserom.gba", 0x405DC4, 0x688
-
-gUnknown_840644C:: @ 840644C
- .incbin "baserom.gba", 0x40644C, 0x1E8
-
-gUnknown_8406634:: @ 8406634
- .incbin "baserom.gba", 0x406634, 0x20
-
-gUnknown_8406654:: @ 8406654
- .incbin "baserom.gba", 0x406654, 0xB7C
-
-gUnknown_84071D0:: @ 84071D0
- .incbin "baserom.gba", 0x4071D0, 0x260
-
-gUnknown_8407430:: @ 8407430
- .incbin "baserom.gba", 0x407430, 0x40
-
-gUnknown_8407470:: @ 8407470
- .incbin "baserom.gba", 0x407470, 0x5E0
-
-gUnknown_8407A50:: @ 8407A50
- .incbin "baserom.gba", 0x407A50, 0x14C
-
-gUnknown_8407B9C:: @ 8407B9C
- .incbin "baserom.gba", 0x407B9C, 0x11FC
-
-gUnknown_8408D98:: @ 8408D98
- .incbin "baserom.gba", 0x408D98, 0x2DE8
-
-gUnknown_840BB80:: @ 840BB80
- .incbin "baserom.gba", 0x40BB80, 0x8
-
-gUnknown_840BB88:: @ 840BB88
- .incbin "baserom.gba", 0x40BB88, 0x8
-
-gUnknown_840BB90:: @ 840BB90
- .incbin "baserom.gba", 0x40BB90, 0x10
-
-gUnknown_840BBA0:: @ 840BBA0
- .incbin "baserom.gba", 0x40BBA0, 0x8
-
-gUnknown_840BBA8:: @ 840BBA8
- .incbin "baserom.gba", 0x40BBA8, 0x10
-
-gUnknown_840BBB8:: @ 840BBB8
- .incbin "baserom.gba", 0x40BBB8, 0x8
-
-gUnknown_840BBC0:: @ 840BBC0
- .incbin "baserom.gba", 0x40BBC0, 0x28
-
-gUnknown_840BBE8:: @ 840BBE8
- .incbin "baserom.gba", 0x40BBE8, 0x20
-
-gUnknown_840BC08:: @ 840BC08
- .incbin "baserom.gba", 0x40BC08, 0x64
-
-gUnknown_840BC6C:: @ 840BC6C
- .incbin "baserom.gba", 0x40BC6C, 0x18
-
-gUnknown_840BC84:: @ 840BC84
- .incbin "baserom.gba", 0x40BC84, 0x38
-
-gUnknown_840BCBC:: @ 840BCBC
- .incbin "baserom.gba", 0x40BCBC, 0x20
-
-gUnknown_840BCDC:: @ 840BCDC
- .incbin "baserom.gba", 0x40BCDC, 0xAC
-
-gUnknown_840BD88:: @ 840BD88
- .incbin "baserom.gba", 0x40BD88, 0x20
-
-gUnknown_840BDA8:: @ 840BDA8
- .incbin "baserom.gba", 0x40BDA8, 0x18
-
-gUnknown_840BDC0:: @ 840BDC0
- .incbin "baserom.gba", 0x40BDC0, 0x3C
-
-gUnknown_840BDFC:: @ 840BDFC
- .incbin "baserom.gba", 0x40BDFC, 0x50
-
-gUnknown_840BE4C:: @ 840BE4C
- .incbin "baserom.gba", 0x40BE4C, 0x40
-
-gUnknown_840BE8C:: @ 840BE8C
- .incbin "baserom.gba", 0x40BE8C, 0x38
-
-gUnknown_840BEC4:: @ 840BEC4
- .incbin "baserom.gba", 0x40BEC4, 0x18
-
-gUnknown_840BEDC:: @ 840BEDC
- .incbin "baserom.gba", 0x40BEDC, 0x38
-
-gUnknown_840BF14:: @ 840BF14
- .incbin "baserom.gba", 0x40BF14, 0x28
+ .section .rodata.battle_anim_special
gUnknown_840BF3C:: @ 840BF3C
.incbin "baserom.gba", 0x40BF3C, 0xC
@@ -501,2205 +345,9 @@ gUnknown_8414588:: @ 8414588
gUnknown_84145BC:: @ 84145BC
.incbin "baserom.gba", 0x4145BC, 0x204
-gUnknown_84147C0:: @ 84147C0
- .incbin "baserom.gba", 0x4147C0, 0xD28
-
-gUnknown_84154E8:: @ 84154E8
- .incbin "baserom.gba", 0x4154E8, 0x46C
-
-gUnknown_8415954:: @ 8415954
- .incbin "baserom.gba", 0x415954, 0xB0
-
-gUnknown_8415A04:: @ 8415A04
- .incbin "baserom.gba", 0x415A04, 0x4
-
-gUnknown_8415A08:: @ 8415A08
- .incbin "baserom.gba", 0x415A08, 0x8
-
-gUnknown_8415A10:: @ 8415A10
- .incbin "baserom.gba", 0x415A10, 0x10
-
@ strings
-gExpandedPlaceholder_Empty:: @ 8415A20
- .incbin "baserom.gba", 0x415A20, 0x1
-
-gExpandedPlaceholder_Kun:: @ 8415A21
- .incbin "baserom.gba", 0x415A21, 0x1
-
-gExpandedPlaceholder_Chan:: @ 8415A22
- .incbin "baserom.gba", 0x415A22, 0xA
-
-gExpandedPlaceholder_Ruby:: @ 8415A2C
- .incbin "baserom.gba", 0x415A2C, 0x5
-
-gExpandedPlaceholder_Aqua:: @ 8415A31
- .incbin "baserom.gba", 0x415A31, 0x5
-
-gExpandedPlaceholder_Magma:: @ 8415A36
- .incbin "baserom.gba", 0x415A36, 0x6
-
-gExpandedPlaceholder_Archie:: @ 8415A3C
- .incbin "baserom.gba", 0x415A3C, 0x7
-
-gExpandedPlaceholder_Maxie:: @ 8415A43
- .incbin "baserom.gba", 0x415A43, 0x6
-
-gExpandedPlaceholder_Kyogre:: @ 8415A49
- .incbin "baserom.gba", 0x415A49, 0x7
-
-gExpandedPlaceholder_Groudon:: @ 8415A50
- .incbin "baserom.gba", 0x415A50, 0x8
-
-gExpandedPlaceholder_Red:: @ 8415A58
- .incbin "baserom.gba", 0x415A58, 0x4
-
-gExpandedPlaceholder_Green:: @ 8415A5C
- .incbin "baserom.gba", 0x415A5C, 0x6
-
-gText_EggNickname:: @ 8415A62
- .incbin "baserom.gba", 0x415A62, 0x4
-
-gText_Pokemon:: @ 8415A66
- .incbin "baserom.gba", 0x415A66, 0x8
-
-gUnknown_8415A6E:: @ 8415A6E
- .incbin "baserom.gba", 0x415A6E, 0x9
-
-gUnknown_8415A77:: @ 8415A77
- .incbin "baserom.gba", 0x415A77, 0x20
-
-gUnknown_8415A97:: @ 8415A97
- .incbin "baserom.gba", 0x415A97, 0xD
-
-gUnknown_8415AA4:: @ 8415AA4
- .incbin "baserom.gba", 0x415AA4, 0x27
-
-gUnknown_8415ACB:: @ 8415ACB
- .incbin "baserom.gba", 0x415ACB, 0x134
-
-gUnknown_8415BFF:: @ 8415BFF
- .incbin "baserom.gba", 0x415BFF, 0x43
-
-gUnknown_8415C42:: @ 8415C42
- .incbin "baserom.gba", 0x415C42, 0x22
-
-gUnknown_8415C64:: @ 8415C64
- .incbin "baserom.gba", 0x415C64, 0x84
-
-gUnknown_8415CE8:: @ 8415CE8
- .incbin "baserom.gba", 0x415CE8, 0x44
-
-gText_Controls:: @ 8415D2C
- .string "CONTROLS$"
-
- .align 2
-gUnknown_8415D38:: @ 8415D2C
- .string "{KEYGFX_DPAD_UP_DOWN}えらぶ {KEYGFX_A_BUTTON}けってい$"
-
- .align 2
-gText_ABUTTONNext:: @ 8415D48
- .string "{KEYGFX_A_BUTTON}NEXT$"
-
- .align 2
-gText_ABUTTONNext_BBUTTONBack:: @ 8415D50
- .string "{KEYGFX_A_BUTTON}NEXT {KEYGFX_B_BUTTON}BACK$"
-
- .align 2
-gText_UPDOWNPick_ABUTTONNext_BBUTTONBack:: @ 8415D60
- .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}NEXT {KEYGFX_B_BUTTON}CANCEL$"
-
- .align 2
-gText_UPDOWNPick_ABUTTONBBUTTONCancel:: @ 8415D78
- .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}{KEYGFX_B_BUTTON}CANCEL$"
-
- .align 2
-gText_ABUTTONExit:: @ 8415D8C
- .string "{KEYGFX_A_BUTTON}EXIT$"
-
-gText_Boy:: @ 8415D93
- .string "BOY$"
-
-gText_Girl:: @ 8415D97
- .string "GIRL$"
-
-gUnknown_8415D9C:: @ 8415D9C
- .incbin "baserom.gba", 0x415D9C, 0x1C
-
-gUnknown_8415DB8:: @ 8415DB8
- .incbin "baserom.gba", 0x415DB8, 0xC
-
-gUnknown_8415DC4:: @ 8415DC4
- .incbin "baserom.gba", 0x415DC4, 0x6
-
-gUnknown_8415DCA:: @ 8415DCA
- .incbin "baserom.gba", 0x415DCA, 0x7
-
-gUnknown_8415DD1:: @ 8415DD1
- .incbin "baserom.gba", 0x415DD1, 0x6
-
-gUnknown_8415DD7:: @ 8415DD7
- .incbin "baserom.gba", 0x415DD7, 0x166
-
-gUnknown_8415F3D:: @ 8415F3D
- .incbin "baserom.gba", 0x415F3D, 0xD
-
-gUnknown_8415F4A:: @ 8415F4A
- .incbin "baserom.gba", 0x415F4A, 0x7
-
-gText_PickOKExit:: @ 8415F51
- .incbin "baserom.gba", 0x415F51, 0x15
-
-gUnknown_8415F66:: @ 8415F66
- .incbin "baserom.gba", 0x415F66, 0x6
-
-gUnknown_8415F6C:: @ 8415F6C
- .incbin "baserom.gba", 0x415F6C, 0x23
-
-gUnknown_8415F8F:: @ 8415F8F
- .incbin "baserom.gba", 0x415F8F, 0x9
-
-gUnknown_8415F98:: @ 8415F98
- .incbin "baserom.gba", 0x415F98, 0x3
-
-gUnknown_8415F9B:: @ 8415F9B
- .incbin "baserom.gba", 0x415F9B, 0x5
-
-gUnknown_8415FA0:: @ 8415FA0
- .incbin "baserom.gba", 0x415FA0, 0xD
-
-gUnknown_8415FAD:: @ 8415FAD
- .incbin "baserom.gba", 0x415FAD, 0x6
-
-gUnknown_8415FB3:: @ 8415FB3
- .incbin "baserom.gba", 0x415FB3, 0x15
-
-gUnknown_8415FC8:: @ 8415FC8
- .incbin "baserom.gba", 0x415FC8, 0x7
-
-gUnknown_8415FCF:: @ 8415FCF
- .incbin "baserom.gba", 0x415FCF, 0x19
-
-gUnknown_8415FE8:: @ 8415FE8
- .incbin "baserom.gba", 0x415FE8, 0x5
-
-gUnknown_8415FED:: @ 8415FED
- .incbin "baserom.gba", 0x415FED, 0x5
-
-gUnknown_8415FF2:: @ 8415FF2
- .incbin "baserom.gba", 0x415FF2, 0xD
-
-gUnknown_8415FFF:: @ 8415FFF
- .incbin "baserom.gba", 0x415FFF, 0x3
-
-gUnknown_8416002:: @ 8416002
- .incbin "baserom.gba", 0x416002, 0x6
-
-gUnknown_8416008:: @ 8416008
- .incbin "baserom.gba", 0x416008, 0x88
-
-gUnknown_8416090:: @ 8416090
- .incbin "baserom.gba", 0x416090, 0x24
-
-gUnknown_84160B4:: @ 84160B4
- .incbin "baserom.gba", 0x4160B4, 0x14
-
-gUnknown_84160C8:: @ 84160C8
- .incbin "baserom.gba", 0x4160C8, 0x24
-
-gUnknown_84160EC:: @ 84160EC
- .incbin "baserom.gba", 0x4160EC, 0x8
-
-gUnknown_84160F4:: @ 84160F4
- .incbin "baserom.gba", 0x4160F4, 0x8
-
-gUnknown_84160FC:: @ 84160FC
- .incbin "baserom.gba", 0x4160FC, 0x8
-
-gUnknown_8416104:: @ 8416104
- .incbin "baserom.gba", 0x416104, 0x47
-
-gUnknown_841614B:: @ 841614B
- .incbin "baserom.gba", 0x41614B, 0x2F
-
-gUnknown_841617A:: @ 841617A
- .incbin "baserom.gba", 0x41617A, 0x7
-
-gUnknown_8416181:: @ 8416181
- .incbin "baserom.gba", 0x416181, 0x7
-
-gUnknown_8416188:: @ 8416188
- .incbin "baserom.gba", 0x416188, 0x8
-
-gUnknown_8416190:: @ 8416190
- .string "TIME$"
-
-gUnknown_8416195::
- .string "どこへ とびますか?$"
-
-gOtherText_Use::
- .string "USE$"
-
-gUnknown_84161A4::
- .string "TOSS$"
-
-gUnknown_84161A9::
- .string "REGISTER$"
-
-gOtherText_Give::
- .string "GIVE$"
-
-gUnknown_84161B7::
- .string "けってい$"
-
-gUnknown_84161BC::
- .string "WALK$"
-
-gFameCheckerText_Cancel:: @ 84161C1
- .string "CANCEL$"
-
-gOtherText_Exit:: @ 84161C8
- .string "EXIT$"
-
-gUnknown_84161CD:: @ 84161CD
- .string "$"
-
-gUnknown_84161CE::
- .string "キャンセル$"
-
-gUnknown_84161D4::
- .string "ITEM$"
-
-gUnknown_84161D9::
- .string "MAIL$"
-
-gUnknown_84161DE::
- .string "TAKE$"
-
-gUnknown_84161E3::
- .string "STORE$"
-
-gUnknown_84161E9::
- .string "CHECK$"
-
-gUnknown_84161EF:: @ 84161EF
- .string "NONE$"
-
-gUnknown_84161F4::
- .string "OPEN$"
-
-gUnknown_84161F9::
- .string "DESELECT$"
-
-gUnknown_8416202:: @ 8416202
- .string "???$"
-
-gUnknown_8416206::
- .string "?????$"
-
-gUnknown_841620C:: @ 841620C
- .string "/$"
-
-gUnknown_841620E:: @ 841620E
- .string "-$"
-
-gUnknown_8416210:: @ 8416210
- .string "--$"
-
-gText_ThreeHyphens:: @ 8416213
- .string "---$"
-
-gUnknown_8416217:: @ 8416217
- .string "-------$"
-
-gUnknown_841621F:: @ 841621F
- .string "♂$"
-
-gUnknown_8416221:: @ 8416221
- .string "♀$"
-
-gText_Lv:: @ 8416223
- .string "{UNKNOWN_F9 0x05}$"
-
-gOtherText_UnkF9_08_Clear_01:: @ 8416226
- .string "{UNKNOWN_F9 0x08}{CLEAR 0x01}$"
-
-gUnknown_841622C::
- .string "{UNKNOWN_F9 0x04}$"
-
-gUnknown_841622F::
- .string "{ESCAPE 0x03}$"
-
-gUnknown_8416233::
- .string "{UNKNOWN_F9 0x07}{UNKNOWN_F9 0x08}$"
-
-gUnknown_8416238:: @ 8416238
- .string "{UNKNOWN_F9 0x06}$"
-
-gFameCheckerText_ListMenuCursor:: @ 841623B
- .string "▶$"
-
-gUnknown_841623D:: @ 841623D
- .string "YES\nNO$"
-
-gUnknown_8416244::
- .string "Go back to the\nprevious menu.$"
-
-gUnknown_8416262:: @ 8416262
- .string "What would you like to do?$"
-
-gUnknown_841627D::
- .string "POKéDEX$"
-
-gUnknown_8416285:: @ 8416285
- .string "BAG$"
-
-gUnknown_8416289::
- .string "ポケナビ$"
-
-gUnknown_841628E::
- .string "{PLAYER}$"
-
-gUnknown_8416291::
- .string "SAVE$"
-
-gUnknown_8416296::
- .string "OPTION$"
-
-gUnknown_841629D::
- .string "EXIT$"
-
-gUnknown_84162A2::
- .string "RETIRE$"
-
-gUnknown_84162A9:: @ 84162A9
- .string "{STR_VAR_1}/{STR_VAR_2}\nBALLS {STR_VAR_3}$"
-
-gText_TimesStrVar1:: @ 84162B9
- .string "×{STR_VAR_1}$"
-
-gUnknown_84162BD:: @ 84162BD
- .string " BERRY$"
-
-gText_Coins:: @ 84162C4
- .incbin "baserom.gba", 0x4162C4, 0x24
-
-gText_DepositItem:: @ 84162E8
- .string "DEPOSIT ITEM$"
-
-gUnknown_84162F5:: @ 84162F5
- .incbin "baserom.gba", 0x4162F5, 0xA
-
-gUnknown_84162FF:: @ 84162FF
- .incbin "baserom.gba", 0x4162FF, 0x2
-
-gText_IsSelected:: @ 8416301
- .string " is\nselected.$"
-
-gUnknown_841630F:: @ 841630F
- .incbin "baserom.gba", 0x41630F, 0x1B
-
-gText_ThereIsNoPokemon:: @ 841632A
- .string "There is no\n"
- .string "POKéMON.$"
-
-gUnknown_841633F:: @ 841633F
- .incbin "baserom.gba", 0x41633F, 0x1F
-
-gText_ItemCantBeHeld:: @ 841635E
- .string "The {STR_VAR_1} can't be held.$"
-
-gUnknown_8416374:: @ 8416374
- .incbin "baserom.gba", 0x416374, 0x1B
-
-gUnknown_841638F:: @ 841638F
- .incbin "baserom.gba", 0x41638F, 0x18
-
-gUnknown_84163A7:: @ 84163A7
- .incbin "baserom.gba", 0x4163A7, 0x14
-
-gUnknown_84163BB:: @ 84163BB
- .incbin "baserom.gba", 0x4163BB, 0x20
-
-gUnknown_84163DB:: @ 84163DB
- .incbin "baserom.gba", 0x4163DB, 0x19
-
-gUnknown_84163F4:: @ 84163F4
- .incbin "baserom.gba", 0x4163F4, 0x15
-
-gUnknown_8416409:: @ 8416409
- .incbin "baserom.gba", 0x416409, 0x1C
-
-gUnknown_8416425:: @ 8416425
- .incbin "baserom.gba", 0x416425, 0x2C
-
-gUnknown_8416451:: @ 8416451
- .incbin "baserom.gba", 0x416451, 0x25
-
-gUnknown_8416476:: @ 8416476
- .incbin "baserom.gba", 0x416476, 0x48
-
-gUnknown_84164BE:: @ 84164BE
- .incbin "baserom.gba", 0x4164BE, 0x55
-
-gUnknown_8416513:: @ 8416513
- .incbin "baserom.gba", 0x416513, 0x24
-
-gUnknown_8416537:: @ 8416537
- .incbin "baserom.gba", 0x416537, 0x55
-
-gUnknown_841658C:: @ 841658C
- .incbin "baserom.gba", 0x41658C, 0x12
-
-gUnknown_841659E:: @ 841659E
- .incbin "baserom.gba", 0x41659E, 0x34
-
-gUnknown_84165D2:: @ 84165D2
- .incbin "baserom.gba", 0x4165D2, 0x2E
-
-gUnknown_8416600:: @ 8416600
- .incbin "baserom.gba", 0x416600, 0x31
-
-gUnknown_8416631:: @ 8416631
- .incbin "baserom.gba", 0x416631, 0x13
-
-gUnknown_8416644:: @ 8416644
- .incbin "baserom.gba", 0x416644, 0x11
-
-gUnknown_8416655:: @ 8416655
- .incbin "baserom.gba", 0x416655, 0x7
-
-gUnknown_841665C:: @ 841665C
- .incbin "baserom.gba", 0x41665C, 0x34
-
-gUnknown_8416690:: @ 8416690
- .incbin "baserom.gba", 0x416690, 0x17
-
-gUnknown_84166A7:: @ 84166A7
- .incbin "baserom.gba", 0x4166A7, 0x2C
-
-gText_TMCase:: @ 84166D3
- .string "TM CASE$"
-
-gText_Close:: @ 84166DB
- .string "CLOSE$"
-
-gText_TMCaseWillBePutAway:: @ 84166E1
- .string "The TM CASE will be\n"
- .string "put away.$"
-
-gText_FontSize0:: @ 84166FF
- .string "{SIZE 0}$"
-
-gText_FontSize2:: @ 8416703
- .string "{SIZE 2}$"
-
-gUnknown_8416707:: @ 8416707
- .string " $"
-
-gUnknown_841670A:: @ 841670A
- .incbin "baserom.gba", 0x41670A, 0xC
-
-gUnknown_8416716:: @ 8416716
- .incbin "baserom.gba", 0x416716, 0x33
-
-gUnknown_8416749:: @ 8416749
- .incbin "baserom.gba", 0x416749, 0xE
-
-gUnknown_8416757:: @ 8416757
- .incbin "baserom.gba", 0x416757, 0xF
-
-gUnknown_8416766:: @ 8416766
- .incbin "baserom.gba", 0x416766, 0x28
-
-gUnknown_841678E:: @ 841678E
- .incbin "baserom.gba", 0x41678E, 0x59
-
-gUnknown_84167E7:: @ 84167E7
- .incbin "baserom.gba", 0x4167E7, 0x5B
-
-gUnknown_8416842:: @ 8416842
- .incbin "baserom.gba", 0x416842, 0x1F
-
-gUnknown_8416861:: @ 8416861
- .incbin "baserom.gba", 0x416861, 0x3D
-
-gUnknown_841689E:: @ 841689E
- .incbin "baserom.gba", 0x41689E, 0x53
-
-gText_OhNoICantBuyThat:: @ 84168F1
- .string "{STR_VAR_1}? Oh, no.\n"
- .string "I can't buy that.{PAUSE_UNTIL_PRESS}$"
-
-gText_HowManyWouldYouLikeToSell:: @ 8416911
- .string "{STR_VAR_1}?\n"
- .string "How many would you like to sell?$"
-
-gText_ICanPayThisMuch_WouldThatBeOkay:: @ 8416936
- .string "I can pay ¥{STR_VAR_3}.\n"
- .string "Would that be okay?$"
-
-gText_TurnedOverItemsWorthYen:: @ 8416959
- .incbin "baserom.gba", 0x416959, 0x21
-
-gText_PokedollarVar1:: @ 841697A
- .incbin "baserom.gba", 0x41697A, 0x48
-
-gUnknown_84169C2:: @ 84169C2
- .incbin "baserom.gba", 0x4169C2, 0x3
-
-gUnknown_84169C5:: @ 84169C5
- .incbin "baserom.gba", 0x4169C5, 0x8
-
-gUnknown_84169CD:: @ 84169CD
- .incbin "baserom.gba", 0x4169CD, 0x8
-
-gUnknown_84169D5:: @ 84169D5
- .incbin "baserom.gba", 0x4169D5, 0x4
-
-gUnknown_84169D9:: @ 84169D9
- .incbin "baserom.gba", 0x4169D9, 0x3
-
-gUnknown_84169DC:: @ 84169DC
- .incbin "baserom.gba", 0x4169DC, 0x1C
-
-gUnknown_84169F8:: @ 84169F8
- .incbin "baserom.gba", 0x4169F8, 0x26
-
-gUnknown_8416A1E:: @ 8416A1E
- .incbin "baserom.gba", 0x416A1E, 0x1C
-
-gUnknown_8416A3A:: @ 8416A3A
- .incbin "baserom.gba", 0x416A3A, 0x1B
-
-gUnknown_8416A55:: @ 8416A55
- .incbin "baserom.gba", 0x416A55, 0x20
-
-gUnknown_8416A75:: @ 8416A75
- .incbin "baserom.gba", 0x416A75, 0x23
-
-gUnknown_8416A98:: @ 8416A98
- .incbin "baserom.gba", 0x416A98, 0x33
-
-gUnknown_8416ACB:: @ 8416ACB
- .incbin "baserom.gba", 0x416ACB, 0x17
-
-gUnknown_8416AE2:: @ 8416AE2
- .incbin "baserom.gba", 0x416AE2, 0x34
-
-gUnknown_8416B16:: @ 8416B16
- .incbin "baserom.gba", 0x416B16, 0x28
-
-gUnknown_8416B3E:: @ 8416B3E
- .incbin "baserom.gba", 0x416B3E, 0x26
-
-gUnknown_8416B64:: @ 8416B64
- .incbin "baserom.gba", 0x416B64, 0x22
-
-gUnknown_8416B86:: @ 8416B86
- .incbin "baserom.gba", 0x416B86, 0x20
-
-gUnknown_8416BA6:: @ 8416BA6
- .incbin "baserom.gba", 0x416BA6, 0x1D
-
-gUnknown_8416BC3:: @ 8416BC3
- .incbin "baserom.gba", 0x416BC3, 0x38
-
-gUnknown_8416BFB:: @ 8416BFB
- .incbin "baserom.gba", 0x416BFB, 0x2F
-
-gUnknown_8416C2A:: @ 8416C2A
- .incbin "baserom.gba", 0x416C2A, 0x1F
-
-gUnknown_8416C49:: @ 8416C49
- .incbin "baserom.gba", 0x416C49, 0x46
-
-gUnknown_8416C8F:: @ 8416C8F
- .incbin "baserom.gba", 0x416C8F, 0x1D
-
-gUnknown_8416CAC:: @ 8416CAC
- .incbin "baserom.gba", 0x416CAC, 0x1B
-
-gUnknown_8416CC7:: @ 8416CC7
- .incbin "baserom.gba", 0x416CC7, 0x23
-
-gUnknown_8416CEA:: @ 8416CEA
- .incbin "baserom.gba", 0x416CEA, 0x2D
-
-gUnknown_8416D17:: @ 8416D17
- .incbin "baserom.gba", 0x416D17, 0x38
-
-gUnknown_8416D4F:: @ 8416D4F
- .incbin "baserom.gba", 0x416D4F, 0x29
-
-gUnknown_8416D78:: @ 8416D78
- .incbin "baserom.gba", 0x416D78, 0x3B
-
-gUnknown_8416DB3:: @ 8416DB3
- .incbin "baserom.gba", 0x416DB3, 0xF
-
-gUnknown_8416DC2:: @ 8416DC2
- .incbin "baserom.gba", 0x416DC2, 0x35
-
-gUnknown_8416DF7:: @ 8416DF7
- .incbin "baserom.gba", 0x416DF7, 0x74
-
-gUnknown_8416E6B:: @ 8416E6B
- .incbin "baserom.gba", 0x416E6B, 0x19
-
-gUnknown_8416E84:: @ 8416E84
- .incbin "baserom.gba", 0x416E84, 0x20
-
-gUnknown_8416EA4:: @ 8416EA4
- .incbin "baserom.gba", 0x416EA4, 0x22
-
-gUnknown_8416EC6:: @ 8416EC6
- .incbin "baserom.gba", 0x416EC6, 0x4A
-
-gUnknown_8416F10:: @ 8416F10
- .incbin "baserom.gba", 0x416F10, 0x17
-
-gUnknown_8416F27:: @ 8416F27
- .incbin "baserom.gba", 0x416F27, 0x27
-
-gUnknown_8416F4E:: @ 8416F4E
- .incbin "baserom.gba", 0x416F4E, 0x21
-
-gUnknown_8416F6F:: @ 8416F6F
- .incbin "baserom.gba", 0x416F6F, 0x1D
-
-gUnknown_8416F8C:: @ 8416F8C
- .incbin "baserom.gba", 0x416F8C, 0xE
-
-gUnknown_8416F9A:: @ 8416F9A
- .incbin "baserom.gba", 0x416F9A, 0x18
-
-gUnknown_8416FB2:: @ 8416FB2
- .incbin "baserom.gba", 0x416FB2, 0x15
-
-gUnknown_8416FC7:: @ 8416FC7
- .incbin "baserom.gba", 0x416FC7, 0x26
-
-gUnknown_8416FED:: @ 8416FED
- .incbin "baserom.gba", 0x416FED, 0x15
-
-gUnknown_8417002:: @ 8417002
- .incbin "baserom.gba", 0x417002, 0x15
-
-gUnknown_8417017:: @ 8417017
- .incbin "baserom.gba", 0x417017, 0x1B
-
-gUnknown_8417032:: @ 8417032
- .incbin "baserom.gba", 0x417032, 0x20
-
-gUnknown_8417052:: @ 8417052
- .incbin "baserom.gba", 0x417052, 0x23
-
-gUnknown_8417075:: @ 8417075
- .incbin "baserom.gba", 0x417075, 0x47
-
-gUnknown_84170BC:: @ 84170BC
- .incbin "baserom.gba", 0x4170BC, 0x24
-
-gUnknown_84170E0:: @ 84170E0
- .incbin "baserom.gba", 0x4170E0, 0x377
-
-gUnknown_8417457:: @ 8417457
- .incbin "baserom.gba", 0x417457, 0x3D
-
-gUnknown_8417494:: @ 8417494
- .incbin "baserom.gba", 0x417494, 0x181
-
-gUnknown_8417615:: @ 8417615
- .incbin "baserom.gba", 0x417615, 0x2B
-
-gUnknown_8417640:: @ 8417640
- .incbin "baserom.gba", 0x417640, 0x34
-
-gUnknown_8417674:: @ 8417674
- .incbin "baserom.gba", 0x417674, 0x7
-
-gUnknown_841767B:: @ 841767B
- .incbin "baserom.gba", 0x41767B, 0x12
-
-gUnknown_841768D:: @ 841768D
- .incbin "baserom.gba", 0x41768D, 0x9
-
-gUnknown_8417696:: @ 8417696
- .incbin "baserom.gba", 0x417696, 0x22
-
-gUnknown_84176B8:: @ 84176B8
- .incbin "baserom.gba", 0x4176B8, 0x17
-
-gUnknown_84176CF:: @ 84176CF
- .incbin "baserom.gba", 0x4176CF, 0x2F
-
-gUnknown_84176FE:: @ 84176FE
- .incbin "baserom.gba", 0x4176FE, 0x76
-
-gUnknown_8417774:: @ 8417774
- .incbin "baserom.gba", 0x417774, 0x16
-
-gUnknown_841778A:: @ 841778A
- .incbin "baserom.gba", 0x41778A, 0x22
-
-gUnknown_84177AC:: @ 84177AC
- .incbin "baserom.gba", 0x4177AC, 0x19
-
-gUnknown_84177C5:: @ 84177C5
- .incbin "baserom.gba", 0x4177C5, 0x29
-
-gUnknown_84177EE:: @ 84177EE
- .incbin "baserom.gba", 0x4177EE, 0x18
-
-gUnknown_8417806:: @ 8417806
- .incbin "baserom.gba", 0x417806, 0x2A
-
-gUnknown_8417830:: @ 8417830
- .incbin "baserom.gba", 0x417830, 0x28
-
-gUnknown_8417858:: @ 8417858
- .incbin "baserom.gba", 0x417858, 0x13
-
-gUnknown_841786B:: @ 841786B
- .incbin "baserom.gba", 0x41786B, 0x3C
-
-gUnknown_84178A7:: @ 84178A7
- .incbin "baserom.gba", 0x4178A7, 0x17
-
-gUnknown_84178BE:: @ 84178BE
- .incbin "baserom.gba", 0x4178BE, 0x12
-
-gUnknown_84178D0:: @ 84178D0
- .incbin "baserom.gba", 0x4178D0, 0xA
-
-gUnknown_84178DA:: @ 84178DA
- .incbin "baserom.gba", 0x4178DA, 0x5E
-
-gUnknown_8417938:: @ 8417938
- .incbin "baserom.gba", 0x417938, 0x4
-
-gUnknown_841793C:: @ 841793C
- .incbin "baserom.gba", 0x41793C, 0x263
-
-gUnknown_8417B9F:: @ 8417B9F
- .incbin "baserom.gba", 0x417B9F, 0xD
-
-gUnknown_8417BAC:: @ 8417BAC
- .incbin "baserom.gba", 0x417BAC, 0xA
-
-gUnknown_8417BB6:: @ 8417BB6
- .incbin "baserom.gba", 0x417BB6, 0x8
-
-gUnknown_8417BBE:: @ 8417BBE
- .incbin "baserom.gba", 0x417BBE, 0xD
-
-gUnknown_8417BCB:: @ 8417BCB
- .incbin "baserom.gba", 0x417BCB, 0x8
-
-gUnknown_8417BD3:: @ 8417BD3
- .incbin "baserom.gba", 0x417BD3, 0x5A
-
-gUnknown_8417C2D:: @ 8417C2D
- .incbin "baserom.gba", 0x417C2D, 0x1C0
-
-gUnknown_8417DED:: @ 8417DED
- .incbin "baserom.gba", 0x417DED, 0x1CC
-
-gUnknown_8417FB9:: @ 8417FB9
- .incbin "baserom.gba", 0x417FB9, 0x2
-
-gUnknown_8417FBB:: @ 8417FBB
- .incbin "baserom.gba", 0x417FBB, 0x8
-
-gUnknown_8417FC3:: @ 8417FC3
- .incbin "baserom.gba", 0x417FC3, 0x9
-
-gUnknown_8417FCC:: @ 8417FCC
- .incbin "baserom.gba", 0x417FCC, 0x4
-
-gUnknown_8417FD0:: @ 8417FD0
- .incbin "baserom.gba", 0x417FD0, 0xA5
-
-gUnknown_8418075:: @ 8418075
- .incbin "baserom.gba", 0x418075, 0xFF
-
-gUnknown_8418174:: @ 8418174
- .incbin "baserom.gba", 0x418174, 0x14
-
-gUnknown_8418188:: @ 8418188
- .incbin "baserom.gba", 0x418188, 0x1C
-
-gUnknown_84181A4:: @ 84181A4
- .incbin "baserom.gba", 0x4181A4, 0x12
-
-gUnknown_84181B6:: @ 84181B6
- .incbin "baserom.gba", 0x4181B6, 0x8
-
-gUnknown_84181BE:: @ 84181BE
- .incbin "baserom.gba", 0x4181BE, 0x5
-
-gFameCheckerText_FameCheckerWillBeClosed:: @ 84181C3
- .string "The FAME CHECKER will be closed.$"
-
-gFameCheckerText_ClearTextbox:: @ 84181E4
- .string "\n $"
-
-gUnknown_8418204:: @ 8418204
- .incbin "baserom.gba", 0x00418204, 0x48c
-
-gUnknown_8418690:: @ 8418690
- .incbin "baserom.gba", 0x418690, 0x20
-
-gUnknown_84186B0:: @ 84186B0
- .incbin "baserom.gba", 0x4186B0, 0x1D
-
-gUnknown_84186CD:: @ 84186CD
- .incbin "baserom.gba", 0x4186CD, 0x26A
-
-gUnknown_8418937:: @ 8418937
- .incbin "baserom.gba", 0x418937, 0x1F
-
-gUnknown_8418956:: @ 8418956
- .incbin "baserom.gba", 0x418956, 0x8A
-
-gUnknown_84189E0:: @ 84189E0
- .incbin "baserom.gba", 0x4189E0, 0xE
-
-gUnknown_84189EE:: @ 84189EE
- .incbin "baserom.gba", 0x4189EE, 0x22D
-
-gUnknown_8418C1B:: @ 8418C1B
- .string "POKéMON CENTER$"
-
-gUnknown_8418C2A:: @ 8418C2A
- .incbin "baserom.gba", 0x418C2A, 0x59
-
-gUnknown_8418C83:: @ 8418C83
- .incbin "baserom.gba", 0x418C83, 0x56
-
-gUnknown_8418CD9:: @ 8418CD9
- .string "The backup memory is damaged or\n"
- .string "the game's battery has run dry.\n"
- .string "The game can be played, but its\n"
- .string "progress cannot be saved.\n"
- .string "“Please press the A Button.”$"
-
-gUnknown_8418D70:: @ 8418D70
- .incbin "baserom.gba", 0x418D70, 0x99
-
-gUnknown_8418E09:: @ 8418E09
- .incbin "baserom.gba", 0x418E09, 0x6E
-
-gUnknown_8418E77:: @ 8418E77
- .incbin "baserom.gba", 0x418E77, 0x13
-
-gUnknown_8418E8A:: @ 8418E8A
- .incbin "baserom.gba", 0x418E8A, 0x1
-
-gUnknown_8418E8B:: @ 8418E8B
- .incbin "baserom.gba", 0x418E8B, 0x2
-
-gUnknown_8418E8D:: @ 8418E8D
- .incbin "baserom.gba", 0x418E8D, 0x8
-
-gUnknown_8418E95:: @ 8418E95
- .incbin "baserom.gba", 0x418E95, 0x9
-
-gUnknown_8418E9E:: @ 8418E9E
- .incbin "baserom.gba", 0x418E9E, 0x9
-
-gUnknown_8418EA7:: @ 8418EA7
- .incbin "baserom.gba", 0x418EA7, 0x9
-
-gUnknown_8418EB0:: @ 8418EB0
- .incbin "baserom.gba", 0x418EB0, 0x5
-
-gUnknown_8418EB5:: @ 8418EB5
- .incbin "baserom.gba", 0x418EB5, 0x7
-
-gUnknown_8418EBC:: @ 8418EBC
- .incbin "baserom.gba", 0x418EBC, 0x7
-
-gUnknown_8418EC3:: @ 8418EC3
- .string "No data$"
-
-gUnknown_8418ECB:: @ 8418ECB
- @ Viridian Forest
- .string "A deep and sprawling forest that\n"
- .string "extends around VIRIDIAN CITY.\n"
- .string "A natural maze, many people\n"
- .string "become lost inside.$"
-
-gUnknown_8418F3A:: @ 8418F3A
- @ Mt. Moon
- .string "A mystical mountain that is known\n"
- .string "for its frequent meteor falls.\n"
- .string "The shards of stars that fall\n"
- .string "here are known as MOON STONES.$"
-
-gUnknown_8418FB8:: @ 8418FB8
- @ Diglett's Cave
- .string "A seemingly plain tunnel that was\n"
- .string "dug by wild DIGLETT.\n"
- .string "It is famous for connecting\n"
- .string "ROUTES 2 and 11.$"
-
-gUnknown_841901C:: @ 841901C
- @ Victory Road
- .string "A tunnel situated on ROUTE 23.\n"
- .string "It earned its name because it\n"
- .string "must be traveled by all TRAINERS\n"
- .string "aiming for the top.$"
-
-gUnknown_841908E:: @ 841908E
- @ Pokémon Mansion
- .string "A decrepit, burned-down mansion\n"
- .string "on CINNABAR ISLAND.\n"
- .string "It got its name because a famous\n"
- .string "POKéMON researcher lived there.$"
-
-gUnknown_8419103:: @ 8419103
- @ Safari Zone
- .string "An amusement park outside FUCHSIA\n"
- .string "CITY where many rare POKéMON can\n"
- .string "be observed in the wild.\n"
- .string "Catch them in a popular game!$"
-
-gUnknown_841917D:: @ 841917D
- @ Rock Tunnel
- .string "A naturally formed underground\n"
- .string "tunnel. Because it has not been\n"
- .string "developed, it is inky dark inside.\n"
- .string "A light is needed to get through.$"
-
-gUnknown_8419201:: @ 8419201
- @ Seafoam Islands
- .string "A pair of islands that is situated\n"
- .string "on ROUTE 20.\n"
- .string "The two islands are shaped the\n"
- .string "same, as if they were twins.$"
-
-gUnknown_841926D:: @ 841926D
- @ Pokémon Tower
- .string "A tower that houses the graves of\n"
- .string "countless POKéMON.\n"
- .string "Many people visit it daily to pay\n"
- .string "their respects to the fallen.$"
-
-gUnknown_84192E2:: @ 84192E2
- @ Cerulean Cave
- .string "A mysterious cave that is filled\n"
- .string "with terribly tough POKéMON.\n"
- .string "It is so dangerous, the POKéMON\n"
- .string "LEAGUE is in charge of it.$"
-
-gUnknown_841935B:: @ 841935B
- @ Power Plant
- .string "A power plant that was abandoned\n"
- .string "years ago, though some of the\n"
- .string "machines still work. It is infested\n"
- .string "with electric POKéMON.$"
-
-gUnknown_84193D5:: @ 84193D5
- @ Mt. Ember
- .string "Supposedly an inactive volcano.\n"
- .string "However, there are persistent\n"
- .string "reports that the peak blazes\n"
- .string "with fire at night.$"
-
-gUnknown_8419444:: @ 8419444
- @ Berry Forest
- .string "A forest on a small islet off the\n"
- .string "coast of THREE ISLAND. BERRIES\n"
- .string "grow wildly in profusion, quickly\n"
- .string "replenishing those that fall off.$"
-
-gUnknown_84194C9:: @ 84194C9
- @ Icefall Cave
- .string "A cave which is covered by water\n"
- .string "and ice on FOUR ISLAND.\n"
- .string "It seems like the end of the cave\n"
- .string "is connected to the ocean.$"
-
-gUnknown_841953F:: @ 841953F
- @ Lost Cave
- .string "A bewildering cave off the coast\n"
- .string "of RESORT GORGEOUS.\n"
- .string "Some curious thrill seekers have\n"
- .string "never emerged from it.$"
-
-gUnknown_84195AC:: @ 84195AC
- @ Tanoby Ruins
- .string "An ancient ruin that is rumored to\n"
- .string "be home to a peculiar POKéMON.\n"
- .string "However, so far, the POKéMON\n"
- .string "remains an unconfirmed rumor.$"
-
-gUnknown_8419629:: @ 8419629
- @ Altering Cave
- .string "This island has been known by this\n"
- .string "name since the distant past.\n"
- .string "No one today knows where it got\n"
- .string "this name, however.$"
-
-gUnknown_841969D:: @ 841969D
- @ Pattern Bush
- .string "A lush and bush-like area. \n"
- .string "In it are patterns where no grass\n"
- .string "grows. Some study it in the belief\n"
- .string "that a secret is concealed.$"
-
-gUnknown_841971A:: @ 841971A
- @ Dotted Hole
- .string "A mysterious, just-discovered\n"
- .string "ruin from an ancient time.\n"
- .string "It got its name from the six dots\n"
- .string "on its door.$"
-
-gUnknown_8419782:: @ 8419782
- .string "{UNKNOWN_F7 0x00} nature.\n"
- .string "Met in a trade.$"
-
-gUnknown_841979D:: @ 841979D
- .string "{UNKNOWN_F7 0x00} nature.\n"
- .string "Met in a trade.$"
-
-gUnknown_84197B8:: @ 84197B8
- .string "{UNKNOWN_F7 0x00} nature.\n"
- .string "Met in a fateful encounter when\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
-
-gUnknown_84197ED:: @ 84197ED
- .string "{UNKNOWN_F7 0x00} nature.\n"
- .string "Met in a fateful encounter when\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
-
-gUnknown_8419822:: @ 8419822
- .string "{UNKNOWN_F7 0x00} nature.\n"
- .string "Met in {UNKNOWN_F7 0x02} at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
-
-gUnknown_8419841:: @ 8419841
- .string "{UNKNOWN_F7 0x00} nature.\n"
- .string "Met in {UNKNOWN_F7 0x02} at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
-
-gUnknown_8419860:: @ 8419860
- .string "{UNKNOWN_F7 0x00} nature.\n"
- .string "Apparently met in {UNKNOWN_F7 0x02}\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
-
-gUnknown_841988A:: @ 841988A
- .string "{UNKNOWN_F7 0x00} nature.\n"
- .string "Apparently met in {UNKNOWN_F7 0x02}\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
-
-gUnknown_84198B4:: @ 84198B4
- .string "{UNKNOWN_F7 0x00} nature.\n"
- .string "Hatched: {UNKNOWN_F7 0x02}\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
-
-gUnknown_84198D5:: @ 84198D5
- .string "{UNKNOWN_F7 0x00} nature.\n"
- .string "Hatched: {UNKNOWN_F7 0x02}\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
-
-@ TODO: Replace this gibberish with the proper Hiragana
-gUnknown_84198F6:: @ 84198F6
- .string "{UNKNOWN_F7 0x00}ßÓÁÉË {UNKNOWN_F9 0x05}{UNKNOWN_F7 0x01}çÑÊ\n"
- .string "{UNKNOWN_F7 0x02}で ÉÇっŒ ùÂだ$"
-
-gUnknown_8419913:: @ 8419913
- .string "{UNKNOWN_F7 0x00}ÓÁÉË {UNKNOWN_F9 0x05}{UNKNOWN_F7 0x01}çÑÊ\n"
- .string "{UNKNOWN_F7 0x02}で ÉÇっŒ ùÂだ$"
-
-gUnknown_841992F:: @ 841992F
- .string "{UNKNOWN_F7 0x00} nature. Met in a fateful\n"
- .string "encounter (hatched: {UNKNOWN_F7 0x02}\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}).$"
-
-gUnknown_841996D:: @ 841996D
- .string "{UNKNOWN_F7 0x00} nature. Met in a fateful\n"
- .string "encounter (hatched: {UNKNOWN_F7 0x02}\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}).$"
-
-gUnknown_84199AB:: @ 84199AB
- .string "{UNKNOWN_F7 0x00} nature. Apparently met in\n"
- .string "a fateful encounter (hatched:\n"
- .string "{UNKNOWN_F7 0x02} at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}).$"
-
-gUnknown_84199F4:: @ 84199F4
- .incbin "baserom.gba", 0x4199F4, 0x217
-
-gUnknown_8419C0B:: @ 8419C0B
- .incbin "baserom.gba", 0x419C0B, 0x8
-
-gUnknown_8419C13:: @ 8419C13
- .incbin "baserom.gba", 0x419C13, 0xA
-
-gUnknown_8419C1D:: @ 8419C1D
- .incbin "baserom.gba", 0x419C1D, 0xD
-
-gUnknown_8419C2A:: @ 8419C2A
- .incbin "baserom.gba", 0x419C2A, 0xF
-
-gUnknown_8419C39:: @ 8419C39
- .incbin "baserom.gba", 0x419C39, 0xC
-
-gUnknown_8419C45:: @ 8419C45
- .incbin "baserom.gba", 0x419C45, 0x8
-
-gUnknown_8419C4D:: @ 8419C4D
- .incbin "baserom.gba", 0x419C4D, 0xC
-
-gUnknown_8419C59:: @ 8419C59
- .incbin "baserom.gba", 0x419C59, 0x9
-
-gUnknown_8419C62:: @ 8419C62
- .incbin "baserom.gba", 0x419C62, 0x10
-
-gUnknown_8419C72:: @ 8419C72
- .incbin "baserom.gba", 0x419C72, 0x9
-
-gUnknown_8419C7B:: @ 8419C7B
- .incbin "baserom.gba", 0x419C7B, 0x7
-
-gUnknown_8419C82:: @ 8419C82
- .incbin "baserom.gba", 0x419C82, 0x10
-
-gUnknown_8419C92:: @ 8419C92
- .incbin "baserom.gba", 0x419C92, 0x10
-
-gUnknown_8419CA2:: @ 8419CA2
- .incbin "baserom.gba", 0x419CA2, 0x7
-
-gUnknown_8419CA9:: @ 8419CA9
- .incbin "baserom.gba", 0x419CA9, 0x10
-
-gUnknown_8419CB9:: @ 8419CB9
- .incbin "baserom.gba", 0x419CB9, 0x21
-
-gUnknown_8419CDA:: @ 8419CDA
- .incbin "baserom.gba", 0x419CDA, 0x7
-
-gUnknown_8419CE1:: @ 8419CE1
- .incbin "baserom.gba", 0x419CE1, 0x6
-
-gUnknown_8419CE7:: @ 8419CE7
- .incbin "baserom.gba", 0x419CE7, 0x6
-
-gUnknown_8419CED:: @ 8419CED
- .incbin "baserom.gba", 0x419CED, 0x2
-
-gUnknown_8419CEF:: @ 8419CEF
- .incbin "baserom.gba", 0x419CEF, 0x8
-
-gUnknown_8419CF7:: @ 8419CF7
- .incbin "baserom.gba", 0x419CF7, 0x1
-
-gUnknown_8419CF8:: @ 8419CF8
- .incbin "baserom.gba", 0x419CF8, 0x5
-
-gUnknown_8419CFD:: @ 8419CFD
- .incbin "baserom.gba", 0x419CFD, 0xD
-
-gUnknown_8419D0A:: @ 8419D0A
- .incbin "baserom.gba", 0x419D0A, 0x10
-
-gUnknown_8419D1A:: @ 8419D1A
- .incbin "baserom.gba", 0x419D1A, 0x35
-
-gUnknown_8419D4F:: @ 8419D4F
- .incbin "baserom.gba", 0x419D4F, 0x8
-
-gUnknown_8419D57:: @ 8419D57
- .incbin "baserom.gba", 0x419D57, 0xF
-
-gUnknown_8419D66:: @ 8419D66
- .incbin "baserom.gba", 0x419D66, 0x17
-
-gUnknown_8419D7D:: @ 8419D7D
- .incbin "baserom.gba", 0x419D7D, 0xC
-
-gUnknown_8419D89:: @ 8419D89
- .incbin "baserom.gba", 0x419D89, 0x43
-
-gUnknown_8419DCC:: @ 8419DCC
- .incbin "baserom.gba", 0x419DCC, 0x86
-
-gUnknown_8419E52:: @ 8419E52
- .incbin "baserom.gba", 0x419E52, 0x5
-
-gUnknown_8419E57:: @ 8419E57
- .incbin "baserom.gba", 0x419E57, 0xFD
-
-gUnknown_8419F54:: @ 8419F54
- .string "SAVING…\n"
- .string "DON'T TURN OFF THE POWER.$"
-
-// Start menu option descriptions
-gUnknown_8419F76:: @ 8419F76 // Pokedex
- .string "A device that records POKéMON secrets\n"
- .string "upon meeting or catching them.$"
-
-gUnknown_8419FBB:: @ 8419FBB // Pokemon
- .string "Check and organize POKéMON that are\n"
- .string "traveling with you in your party.$"
-
-gUnknown_841A001:: @ 841A001 // Bag
- .string "Equipped with pockets for storing items\n"
- .string "you bought, received, or found.$"
-
-gUnknown_841A049:: @ 841A049 // {PLAYER}
- .string "Check your money and other game data.$"
-
-gUnknown_841A06F:: @ 841A06F // Save
- .string "Save your game with a complete record\n"
- .string "of your progress to take a break.$"
-
-gUnknown_841A0B7:: @ 841A0B7 // Options
- .string "Adjust various game settings such as text\n"
- .string "speed, game rules, etc.$"
-
-gUnknown_841A0F9:: @ 841A0F9 // Quit
- .string "Close this MENU window.$"
-
-gUnknown_841A111:: @ 841A111 // Retire
- .string "Retire from the SAFARI GAME and return to\n"
- .string "the registration counter.$"
-
- .include "data/text/quest_log.inc"
-
-gUnknown_841B285:: @ 841B285
- .incbin "baserom.gba", 0x41B285, 0xE
-
-gUnknown_841B293:: @ 841B293
- .incbin "baserom.gba", 0x41B293, 0x2
-
-gUnknown_841B295:: @ 841B295
- .incbin "baserom.gba", 0x41B295, 0x12
-
-gUnknown_841B2A7:: @ 841B2A7
- .incbin "baserom.gba", 0x41B2A7, 0x35
-
-gUnknown_841B2DC:: @ 841B2DC
- .incbin "baserom.gba", 0x41B2DC, 0x9
-
-gUnknown_841B2E5:: @ 841B2E5
- .incbin "baserom.gba", 0x41B2E5, 0x8
-
-gUnknown_841B2ED:: @ 841B2ED
- .incbin "baserom.gba", 0x41B2ED, 0x4
-
-gUnknown_841B2F1:: @ 841B2F1
- .incbin "baserom.gba", 0x41B2F1, 0x15
-
-gUnknown_841B306:: @ 841B306
- .incbin "baserom.gba", 0x41B306, 0xF
-
-gUnknown_841B315:: @ 841B315
- .incbin "baserom.gba", 0x41B315, 0x6
-
-gUnknown_841B31B:: @ 841B31B
- .incbin "baserom.gba", 0x41B31B, 0xE
-
-gUnknown_841B329:: @ 841B329
- .incbin "baserom.gba", 0x41B329, 0x5
-
-gUnknown_841B32E:: @ 841B32E
- .incbin "baserom.gba", 0x41B32E, 0x7C
-
-gUnknown_841B3AA:: @ 841B3AA
- .incbin "baserom.gba", 0x41B3AA, 0x14
-
-gUnknown_841B3BE:: @ 841B3BE
- .incbin "baserom.gba", 0x41B3BE, 0x152
-
-gUnknown_841B510:: @ 841B510
- .incbin "baserom.gba", 0x41B510, 0x6
-
-gUnknown_841B516:: @ 841B516
- .incbin "baserom.gba", 0x41B516, 0x8
-
-gUnknown_841B51E:: @ 841B51E
- .incbin "baserom.gba", 0x41B51E, 0x6
-
-gUnknown_841B524:: @ 841B524
- .incbin "baserom.gba", 0x41B524, 0x7
-
-gUnknown_841B52B:: @ 841B52B
- .incbin "baserom.gba", 0x41B52B, 0x6
-
-gUnknown_841B531:: @ 841B531
- .incbin "baserom.gba", 0x41B531, 0x4
-
-gUnknown_841B535:: @ 841B535
- .incbin "baserom.gba", 0x41B535, 0x6
-
-gUnknown_841B53B:: @ 841B53B
- .incbin "baserom.gba", 0x41B53B, 0x6
-
-gUnknown_841B541:: @ 841B541
- .incbin "baserom.gba", 0x41B541, 0xA
-
-gUnknown_841B54B:: @ 841B54B
- .incbin "baserom.gba", 0x41B54B, 0x9
-
-gUnknown_841B554:: @ 841B554
- .incbin "baserom.gba", 0x41B554, 0x62
-
-gUnknown_841B5B6:: @ 841B5B6
- .incbin "baserom.gba", 0x41B5B6, 0x58
-
-gUnknown_841B60E:: @ 841B60E
- .incbin "baserom.gba", 0x41B60E, 0xB
-
-gUnknown_841B619:: @ 841B619
- .incbin "baserom.gba", 0x41B619, 0x6B
-
-gUnknown_841B684:: @ 841B684
- .incbin "baserom.gba", 0x41B684, 0xB
-
-gUnknown_841B68F:: @ 841B68F
- .incbin "baserom.gba", 0x41B68F, 0x9
-
-gUnknown_841B698:: @ 841B698
- .incbin "baserom.gba", 0x41B698, 0x6
-
-gUnknown_841B69E:: @ 841B69E
- .incbin "baserom.gba", 0x41B69E, 0x1B
-
-gUnknown_841B6B9:: @ 841B6B9
- .incbin "baserom.gba", 0x41B6B9, 0x1C
-
-gUnknown_841B6D5:: @ 841B6D5
- .incbin "baserom.gba", 0x41B6D5, 0x7
-
-gUnknown_841B6DC:: @ 841B6DC
- .incbin "baserom.gba", 0x41B6DC, 0x7
-
-gUnknown_841B6E3:: @ 841B6E3
- .incbin "baserom.gba", 0x41B6E3, 0x8
-
-gUnknown_841B6EB:: @ 841B6EB
- .incbin "baserom.gba", 0x41B6EB, 0x1
-
-gUnknown_841B6EC:: @ 841B6EC
- .incbin "baserom.gba", 0x41B6EC, 0x7
-
-gUnknown_841B6F3:: @ 841B6F3
- .incbin "baserom.gba", 0x41B6F3, 0xA
-
-gText_HatchedFromEgg:: @ 841B6FD
- .incbin "baserom.gba", 0x41B6FD, 0x19
-
-gText_NickHatchPrompt:: @ 841B716
- .incbin "baserom.gba", 0x41B716, 0x31
-
-gUnknown_841B747:: @ 841B747
- .incbin "baserom.gba", 0x41B747, 0x24
-
-gUnknown_841B76B:: @ 841B76B
- .incbin "baserom.gba", 0x41B76B, 0xE
-
-gUnknown_841B779:: @ 841B779
- .incbin "baserom.gba", 0x41B779, 0xC4
-
-gUnknown_841B83D:: @ 841B83D
- .string "Hey, all you TRAINERS out there!\n"
- .string "HELLO, TRAINERS!\p"
- .string "……… ……… ………\p"
- .string "Come on, let me hear you!\n"
- .string "HELLO, TRAINERS!\l"
- .string "It's me, the POKé DUDE!\p"
- .string "$"
-
-gUnknown_841B8BF:: @ 841B8BF
- .string "Today, the POKé DUDE's here to\n"
- .string "tell you about how you can battle\l"
- .string "POKéMON!\p"
- .string "Say you're out for a stroll when,\n"
- .string "suddenly, a wild POKéMON appears!\p"
- .string "It's up to you to smartly use your\n"
- .string "POKéMON and their moves to reduce\l"
- .string "the opponent's HP to nothing, and\l"
- .string "claim victory!\p"
- .string "I'll show you how to do that in\n"
- .string "person and for sure!\p"
- .string "All righty, here goes!\p"
- .string "Keep your eyes glued to the super\n"
- .string "POKé DUDE SHOW!$"
-
-gUnknown_841BA41:: @ 841BA41
- .string "Well, did you get that?\p"
- .string "Even if your own POKéMON's HP\n"
- .string "falls to zero, and it becomes\l"
- .string "unable to battle, not to worry!\p"
- .string "Just take it to any POKéMON\n"
- .string "CENTER and heal it!\p"
- .string "All righty, be seeing you!\p"
- .string "Remember, TRAINERS, a good deed\n"
- .string "a day brings happiness to stay!$"
-
-gUnknown_841BB40:: @ 841BB40
- .string "Today, the POKé DUDE's here to\n"
- .string "tell you about status problems!\p"
- .string "Status problems include poisoning,\n"
- .string "paralysis, sleep, burn…\p"
- .string "There are a couple others, but\n"
- .string "they really are trouble.\p"
- .string "Get any one, and your POKéMON\n"
- .string "may become useless in battle.\p"
- .string "You know, it hurts the POKé DUDE\n"
- .string "to see a POKéMON suffer…\p"
- .string "So, what should you do if your\n"
- .string "POKéMON gets a status problem?\p"
- .string "Well, you've got me to show you!\p"
- .string "All righty, here goes!\p"
- .string "Keep your eyes glued to the super\n"
- .string "POKé DUDE SHOW!$"
-
-gUnknown_841BD10:: @ 841BD10
- .string "Poisoning or paralysis don't go\n"
- .string "away after a battle.\p"
- .string "If a POKéMON is poisoned, it loses\n"
- .string "HP even while you're walking.\p"
- .string "You should heal POKéMON of these\n"
- .string "kinds of problems right away.\p"
- .string "Use an item, or try to get to a\n"
- .string "POKéMON CENTER for healing.\p"
- .string "That wasn't hard, was it?\n"
- .string "All righty, be seeing you!\p"
- .string "Remember, TRAINERS, a good deed\n"
- .string "a day brings happiness to stay!$"
-
-gUnknown_841BE76:: @ 841BE76
- .string "Does everyone know about type\n"
- .string "matchups?\p"
- .string "POKéMON and their moves all\n"
- .string "belong to certain types.\p"
- .string "For example, there are such types\n"
- .string "as GRASS and WATER.\p"
- .string "You need to consider the type of\n"
- .string "the move used to attack…\p"
- .string "And, the type of the POKéMON that\n"
- .string "is hit by that attack.\p"
- .string "Depending on how those two types\n"
- .string "match up, the damage can change.\p"
- .string "You see, it depends on whether\n"
- .string "the type matchup is good or bad.\p"
- .string "If you don't know how matchups\n"
- .string "work, battles will be tough.\p"
- .string "So, let me demonstrate exactly\n"
- .string "what I mean.\p"
- .string "All righty, here goes!\p"
- .string "Keep your eyes glued to the super\n"
- .string "POKé DUDE SHOW!$"
-
-gUnknown_841C0AF:: @ 841C0AF
- .string "Is it possible to launch an attack\n"
- .string "that will inflict heavy damage?\p"
- .string "Does the opposing POKéMON pose\n"
- .string "a threat to your POKéMON?\p"
- .string "Is there any chance that it may\n"
- .string "have disastrously tough moves?\p"
- .string "Watch the type matchups to gain\n"
- .string "the upper hand!\p"
- .string "All righty, be seeing you!\p"
- .string "Oh, for the COOL-type POKé DUDE,\n"
- .string "AWESOME-type kids like you match\l"
- .string "up perfectly!\p"
- .string "Remember, a good deed a day\n"
- .string "brings happiness to stay!$"
-
-gUnknown_841C23B:: @ 841C23B
- .string "Today, the POKé DUDE's going to\n"
- .string "show you how to catch POKéMON!\p"
- .string "Just imagine… A groovy POKéMON\n"
- .string "suddenly appearing in the wild!\p"
- .string "Oh, you want it!\n"
- .string "You just can't help it!\p"
- .string "Oh, you have to catch it!\n"
- .string "You gotta have it!\p"
- .string "Let me show you how you can make\n"
- .string "it happen!\p"
- .string "All righty, here goes!\p"
- .string "Keep your eyes glued to the super\n"
- .string "POKé DUDE SHOW!$"
-
-gUnknown_841C384:: @ 841C384
- .string "If your first POKé BALL fails to\n"
- .string "catch the POKéMON, don't give up!\p"
- .string "Keep throwing POKé BALLS…\n"
- .string "It's bound to work sometime!\p"
- .string "All righty, be seeing you!\p"
- .string "Remember, TRAINERS, a good deed\n"
- .string "a day brings happiness to stay!$"
-
-gUnknown_841C459:: @ 841C459
- .string "Hey, everyone!\n"
- .string "Do you all have TMs?\p"
- .string "A TM, Technical Machine, is an\n"
- .string "amazingly great item!\p"
- .string "It teaches POKéMON a move that\n"
- .string "it may not learn when leveling up!\p"
- .string "Isn't that just great? What a\n"
- .string "convenient world we live in!\p"
- .string "Open the TM CASE and check out\n"
- .string "the TMs you have.\p"
- .string "You can check them out in detail,\n"
- .string "too.$"
-
-gPokeDudeText_TMTypes:: @ 841C587
- .string "POKé DUDE: NORMAL, WATER, GRASS…\n"
- .string "TMs also come in types.\p"
- .string "Check the type and teach it to\n"
- .string "a POKéMON that matches up well.\p"
- .string "For example, WATER PULSE is\n"
- .string "suitable for WATER-type POKéMON.\p"
- .string "BULLET SEED is a move that most\n"
- .string "GRASS-type POKéMON can learn.\p"
- .string "There's one other thing!$"
-
-gPokeDudeText_ReadTMDescription:: @ 841C693
- .string "Don't just look at the type, read\n"
- .string "the description, too.\p"
- .string "It will contain hints about what\n"
- .string "POKéMON might learn the move.\p"
- .string "For example, take a move like\n"
- .string "FOCUS PUNCH.\p"
- .string "It doesn't sound like anything a\n"
- .string "bird or fish POKéMON can learn.\p"
- .string "So, try using it on POKéMON with\n"
- .string "arms that can throw punches!$"
-
-gUnknown_841C7B4:: @ 841C7B4
- .string "Wow, I talked a lot today!\n"
- .string "All righty, be seeing you!\p"
- .string "Remember, TRAINERS, a good deed\n"
- .string "a day brings happiness to stay!$"
-
-gUnknown_841C82A:: @ 841C82A
- .string "A TRAINER's BAG has a bunch of\n"
- .string "nifty, convenient features!\p"
- .string "Take stuff in the KEY ITEMS\n"
- .string "POCKET, for instance.\p"
- .string "You can use a key item without\n"
- .string "opening the BAG every time.\p"
- .string "For example, let's pretend I have\n"
- .string "a TEACHY TV in my BAG.\p"
- .string "I can register it for instant use,\n"
- .string "and I'll show you how!\p"
- .string "All righty, here goes!\p"
- .string "Keep your eyes glued to the sorta\n"
- .string "super POKé DUDE SHOW!$"
-
-gUnknown_841C994:: @ 841C994
- .string "And now, your TEACHY TV is\n"
- .string "registered.\p"
- .string "How do you use it?\n"
- .string "Well, here's how it works.\p"
- .string "Once an item in the KEY ITEMS\n"
- .string "POKCET is registered, you can use\l"
- .string "it by pressing SELECT.\p"
- .string "So, you've given yourself\n"
- .string "one-touch access to TEACHY TV.\p"
- .string "All it takes for you to see me is\n"
- .string "pressing one button!\p"
- .string "That kind of attention is a little\n"
- .string "embarrassing!\p"
- .string "All righty, be seeing you!\p"
- .string "Remember, TRAINERS, a good deed\n"
- .string "a day brings happiness to stay!$"
-
-gUnknown_841CB3C:: @ 841CB3C
- .incbin "baserom.gba", 0x41CB3C, 0x5
-
-gUnknown_841CB41:: @ 841CB41
- .incbin "baserom.gba", 0x41CB41, 0x8
-
-gUnknown_841CB49:: @ 841CB49
- .incbin "baserom.gba", 0x41CB49, 0x5
-
-gUnknown_841CB4E:: @ 841CB4E
- .incbin "baserom.gba", 0x41CB4E, 0x4
-
-gUnknown_841CB52:: @ 841CB52
- .incbin "baserom.gba", 0x41CB52, 0x8
-
-gUnknown_841CB5A:: @ 841CB5A
- .incbin "baserom.gba", 0x41CB5A, 0x9
-
-gUnknown_841CB63:: @ 841CB63
- .incbin "baserom.gba", 0x41CB63, 0x46
-
-gUnknown_841CBA9:: @ 841CBA9
- .incbin "baserom.gba", 0x41CBA9, 0x21
-
-gUnknown_841CBCA:: @ 841CBCA
- .incbin "baserom.gba", 0x41CBCA, 0x1A
-
-gUnknown_841CBE4:: @ 841CBE4
- .incbin "baserom.gba", 0x41CBE4, 0x19
-
-gUnknown_841CBFD:: @ 841CBFD
- .incbin "baserom.gba", 0x41CBFD, 0x14
-
-gUnknown_841CC11:: @ 841CC11
- .incbin "baserom.gba", 0x41CC11, 0x31
-
-gUnknown_841CC42:: @ 841CC42
- .incbin "baserom.gba", 0x41CC42, 0x22
-
-gUnknown_841CC64:: @ 841CC64
- .incbin "baserom.gba", 0x41CC64, 0x9F
-
-gUnknown_841CD03:: @ 841CD03
- .incbin "baserom.gba", 0x41CD03, 0x22
-
-gUnknown_841CD25:: @ 841CD25
- .incbin "baserom.gba", 0x41CD25, 0x1E
-
-gUnknown_841CD43:: @ 841CD43
- .incbin "baserom.gba", 0x41CD43, 0x15
-
-gUnknown_841CD58:: @ 841CD58
- .incbin "baserom.gba", 0x41CD58, 0x22
-
-gUnknown_841CD7A:: @ 841CD7A
- .incbin "baserom.gba", 0x41CD7A, 0x25
-
-gUnknown_841CD9F:: @ 841CD9F
- .incbin "baserom.gba", 0x41CD9F, 0x1B
-
-gUnknown_841CDBA:: @ 841CDBA
- .incbin "baserom.gba", 0x41CDBA, 0x1D
-
-gUnknown_841CDD7:: @ 841CDD7
- .incbin "baserom.gba", 0x41CDD7, 0x14
-
-gUnknown_841CDEB:: @ 841CDEB
- .incbin "baserom.gba", 0x41CDEB, 0x31
-
-gUnknown_841CE1C:: @ 841CE1C
- .incbin "baserom.gba", 0x41CE1C, 0x8
-
-gUnknown_841CE24:: @ 841CE24
- .incbin "baserom.gba", 0x41CE24, 0x1FC
-
-gUnknown_841D020:: @ 841D020
- .incbin "baserom.gba", 0x41D020, 0xC
-
-gUnknown_841D02C:: @ 841D02C
- .incbin "baserom.gba", 0x41D02C, 0x24
-
-gUnknown_841D050:: @ 841D050
- .incbin "baserom.gba", 0x41D050, 0x8
-
-gUnknown_841D058:: @ 841D058
- .incbin "baserom.gba", 0x41D058, 0x10
-
-gUnknown_841D068:: @ 841D068
- .incbin "baserom.gba", 0x41D068, 0xC
-
-gUnknown_841D074:: @ 841D074
- .incbin "baserom.gba", 0x41D074, 0x4
-
-gUnknown_841D078:: @ 841D078
- .incbin "baserom.gba", 0x41D078, 0x8
-
-gUnknown_841D080:: @ 841D080
- .incbin "baserom.gba", 0x41D080, 0x8
-
-gUnknown_841D088:: @ 841D088
- .incbin "baserom.gba", 0x41D088, 0x8
-
-gUnknown_841D090:: @ 841D090
- .incbin "baserom.gba", 0x41D090, 0x8
-
-gUnknown_841D098:: @ 841D098
- .incbin "baserom.gba", 0x41D098, 0xC
-
-gUnknown_841D0A4:: @ 841D0A4
- .incbin "baserom.gba", 0x41D0A4, 0x4
-
-gUnknown_841D0A8:: @ 841D0A8
- .incbin "baserom.gba", 0x41D0A8, 0x18
-
-gUnknown_841D0C0:: @ 841D0C0
- .incbin "baserom.gba", 0x41D0C0, 0x58
-
-gUnknown_841D118:: @ 841D118
- .incbin "baserom.gba", 0x41D118, 0xC
-
-gUnknown_841D124:: @ 841D124
- .incbin "baserom.gba", 0x41D124, 0x18
-
-gUnknown_841D13C:: @ 841D13C
- .incbin "baserom.gba", 0x41D13C, 0xC
-
-gUnknown_841D148:: @ 841D148
- .incbin "baserom.gba", 0x41D148, 0x6
-
-gUnknown_841D14E:: @ 841D14E
- .incbin "baserom.gba", 0x41D14E, 0x1B
-
-gUnknown_841D169:: @ 841D169
- .incbin "baserom.gba", 0x41D169, 0x15
-
-gUnknown_841D17E:: @ 841D17E
- .incbin "baserom.gba", 0x41D17E, 0xF
-
-gUnknown_841D18D:: @ 841D18D
- .incbin "baserom.gba", 0x41D18D, 0xB
-
-gUnknown_841D198:: @ 841D198
- .incbin "baserom.gba", 0x41D198, 0xCB8
-
-gJPText_MysteryGift:: @ 841DE50
- .string "$"
-
-gJPText_DecideStop:: @ 841DE51
- .string "$"
-
-gUnknown_841DE52:: @ 841DE52
- .string "$"
-
-gUnknown_841DE53:: @ 841DE53
- .string "$"
-
-gUnknown_841DE54:: @ 841DE54
- .string "$"
-
-gUnknown_841DE55:: @ 841DE55
- .incbin "baserom.gba", 0x41DE55, 0x27 @ japanese
-
-gUnknown_841DE7C:: @ 841DE7C
- .string "$"
-
-gUnknown_841DE7D:: @ 841DE7D
- .string "$"
-
-gUnknown_841DE7E:: @ 841DE7E
- .incbin "baserom.gba", 0x0041de7e, 0x17 @ japanese
-
-gUnknown_841DE95:: @ 841DE95
- .string "$"
-
-gUnknown_841DE96:: @ 841DE96
- .string "$"
-
-gUnknown_841DE97:: @ 841DE97
- .string "$"
-
-gUnknown_841DE98:: @ 841DE98
- .string "$"
-
-gUnknown_841DE99:: @ 841DE99
- .string "$"
-
-gUnknown_841DE9A:: @ 841DE9A
- .string "$"
-
-gUnknown_841DE9B:: @ 841DE9B
- .string "$"
-
-gUnknown_841DE9C:: @ 841DE9C
- .string "$"
-
-gUnknown_841DE9D:: @ 841DE9D
- .string "Communication error…\n"
- .string "Please check all connections,\n"
- .string "then turn the power OFF and ON.$"
-
-gUnknown_841DEF0:: @ 841DEF0
- .string "Communication error…$"
-
-gUnknown_841DF05:: @ 841DF05
- .string "Move closer to your link partner(s).\n"
- .string "Avoid obstacles between partners.$"
-
-gUnknown_841DF4C:: @ 841DF4C
- .string "A Button: Registration Counter$"
-
-gUnknown_841DF6B:: @ 841DF6B
- .string "A Button: Title Screen$"
-
-gUnknown_841DF82:: @ 841DF82
- .string "{STR_VAR_1}P LINK$"
-
-gUnknown_841DF8B:: @ 841DF8B
- .string "BRONZE$"
-
-gUnknown_841DF92:: @ 841DF92
- .string "COPPER$"
-
-gUnknown_841DF99:: @ 841DF99
- .string "SILVER$"
-
-gUnknown_841DFA0:: @ 841DFA0
- .string "GOLD$"
-
-gUnknown_841DFA5:: @ 841DFA5
- .incbin "baserom.gba", 0x41DFA5, 0x7
-
-gUnknown_841DFAC:: @ 841DFAC
- .incbin "baserom.gba", 0x41DFAC, 0x12
-
-gUnknown_841DFBE:: @ 841DFBE
- .incbin "baserom.gba", 0x41DFBE, 0xB
-
-gUnknown_841DFC9:: @ 841DFC9
- .incbin "baserom.gba", 0x41DFC9, 0xCA
-
-gUnknown_841E093:: @ 841E093
- .incbin "baserom.gba", 0x41E093, 0xC
-
-gUnknown_841E09F:: @ 841E09F
- .incbin "baserom.gba", 0x41E09F, 0x6
-
-gUnknown_841E0A5:: @ 841E0A5
- .incbin "baserom.gba", 0x41E0A5, 0x144
-
-gUnknown_841E1E9:: @ 841E1E9
- .incbin "baserom.gba", 0x41E1E9, 0x17
-
-gUnknown_841E200:: @ 841E200
- .incbin "baserom.gba", 0x41E200, 0xD
-
-gUnknown_841E20D:: @ 841E20D
- .incbin "baserom.gba", 0x41E20D, 0x11
-
-gUnknown_841E21E:: @ 841E21E
- .incbin "baserom.gba", 0x41E21E, 0x16
-
-gUnknown_841E234:: @ 841E234
- .string "From $"
-
-gUnknown_841E23A:: @ 841E23A
- .string "$"
-
-gUnknown_841E23B:: @ 841E23B
- .string "$"
-
-gUnknown_841E23C:: @ 841E23C
- .string "$"
-
-gUnknown_841E23D:: @ 841E23D
- .string "$"
-
-gUnknown_841E23E:: @ 841E23E
- .string "$"
-
-gUnknown_841E23F:: @ 841E23F
- .string "$"
-
-gUnknown_841E240:: @ 841E240
- .string "$"
-
-gUnknown_841E241:: @ 841E241
- .string "$"
-
-gUnknown_841E242:: @ 841E242
- .string "$"
-
-gUnknown_841E243:: @ 841E243
- .string "$"
-
-gUnknown_841E244:: @ 841E244
- .string "$"
-
-gUnknown_841E245:: @ 841E245
- .string "Wireless Communication Status$"
-
-gUnknown_841E263:: @ 841E263
- .string "People trading:$"
-
-gUnknown_841E273:: @ 841E273
- .string "People battling:$"
-
-gUnknown_841E284:: @ 841E284
- .string "People in the UNION ROOM:$"
-
-gUnknown_841E29E:: @ 841E29E
- .string "People communicating:$"
-
-gUnknown_841E2B4:: @ 841E2B4
- .string "{UNKNOWN_F7 0x00} players$"
-
-gUnknown_841E2BF:: @ 841E2BF
- .string "{UNKNOWN_F7 0x01} player$"
-
-gUnknown_841E2C9:: @ 841E2C9
- .string "{UNKNOWN_F7 0x02} players$"
-
-gUnknown_841E2D4:: @ 841E2D4
- .string "{UNKNOWN_F7 0x03} players$"
-
-gUnknown_841E2DF:: @ 841E2DF
- .incbin "baserom.gba", 0x41e2df, 0xd
-
-gUnknown_841E2EC:: @ 841E2EC
- .incbin "baserom.gba", 0x41e2ec, 0x9
-
-gUnknown_841E2F5:: @ 841E2F5
- .incbin "baserom.gba", 0x41e2f5, 0x2d
-
-gUnknown_841E322:: @ 841E322
- .string "{UNKNOWN_F9 0x07}$"
-
-gUnknown_841E325:: @ 841E325
- .string "Communication standby…$"
-
-gDaycareText_GetAlongVeryWell:: @ 841E33C
- .string "The two seem to get along\nvery well.$"
-
-gDaycareText_GetAlong:: @ 841E361
- .string "The two seem to get along.$"
-
-gDaycareText_DontLikeOther:: @ 841E37C
- .string "The two don't seem to like\neach other much.$"
-
-gDaycareText_PlayOther:: @ 841E3A8
- .string "The two prefer to play with other\nPOKéMON than each other.$"
-
-gUnknown_841E3E3:: @ 841E3E3
- .incbin "baserom.gba", 0x41E3E3, 0x18
-
-gUnknown_841E3FB:: @ 841E3FB
- .incbin "baserom.gba", 0x41E3FB, 0xA
-
-gUnknown_841E405:: @ 841E405
- .incbin "baserom.gba", 0x41E405, 0xF
-
-gUnknown_841E414:: @ 841E414
- .incbin "baserom.gba", 0x41E414, 0x6D
-
-gUnknown_841E481:: @ 841E481
- .incbin "baserom.gba", 0x41E481, 0x12
-
-gUnknown_841E493:: @ 841E493
- .incbin "baserom.gba", 0x41E493, 0x2D
-
-gUnknown_841E4C0:: @ 841E4C0
- .incbin "baserom.gba", 0x41E4C0, 0x22
-
-gUnknown_841E4E2:: @ 841E4E2
- .incbin "baserom.gba", 0x41E4E2, 0x2A
-
-gUnknown_841E50C:: @ 841E50C
- .incbin "baserom.gba", 0x41E50C, 0x2C
-
-gUnknown_841E538:: @ 841E538
- .incbin "baserom.gba", 0x41E538, 0x3A
-
-gUnknown_841E572:: @ 841E572
- .incbin "baserom.gba", 0x41E572, 0x1B
-
-gUnknown_841E58D:: @ 841E58D
- .incbin "baserom.gba", 0x41E58D, 0x17
-
-gFameCheckerText_MainScreenUI:: @ 841E5A4
- .string "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$"
-
-gFameCheckerText_PickScreenUI:: @ 841E5B9
- .string "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$"
-
-gFameCheckerText_FlavorTextUI:: @ 841E5D2
- .string "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {UNKNOWN_F8 0x01}CANCEL$"
-
-gFameCheckerOakName:: @ 841E5E9
- .string "OAK$"
-
-gFameCheckerDaisyName:: @ 841E5ED
- .string "DAISY$"
-
-gFameCheckerBillName:: @ 841E5F3
- .string "BILL$"
-
-gFameCheckerMrFujiName:: @ 841E5F8
- .string "FUJI$"
-
-gText_VarietyOfEventsImportedWireless:: @ 841E5FD
- .string "A variety of events will be imported\n"
- .string "over Wireless Communication.$"
-
-gText_WonderCardsInPossession:: @ 841E63F
- .string "Read the WONDER CARDS in your\n"
- .string "possession.$"
-
-gText_ReadNewsThatArrived:: @ 841E669
- .string "Read the NEWS that arrived.$"
-
-gText_ReturnToTitle:: @ 841E685
- .string "Return to the title screen.$"
-
-gText_DontHaveCardNewOneInput:: @ 841E6A1
- .string "You don't have a WONDER CARD,\nso a new CARD will be input.$"
-
-gText_DontHaveNewsNewOneInput:: @ 841E6DC
- .string "You don't have any WONDER NEWS,\nso new NEWS will be input.$"
-
-gText_WhereShouldCardBeAccessed:: @ 841E717
- .string "Where should the WONDER CARD\nbe accessed?$"
-
-gText_WhereShouldNewsBeAccessed:: @ 841E741
- .string "Where should the WONDER NEWS\nbe accessed?$"
-
-gUnknown_841E76B:: @ 841E76B
- .string "Link standby...\n... ... B Button: Cancel$"
-
-gText_Communicating:: @ 841E794
- .string "Communicating…$"
-
-gText_CommunicationCompleted:: @ 841E7A3
- .string "Communication completed.$"
-
-gText_CommunicationError:: @ 841E7BC
- .string "Communication error.$"
-
-gText_CommunicationCanceled:: @ 841E7D1
- .string "Communication has been canceled.$"
-
-gText_ThrowAwayWonderCard:: @ 841E7F2
- .string "Throw away the WONDER CARD\nand input a new CARD?$"
-
-gText_HaventReceivedCardsGift:: @ 841E823
- .string "You haven't received the CARD's gift\nyet. Input a new CARD anyway?$"
-
-gText_WonderCardReceivedFrom:: @ 841E866
- .string "A WONDER CARD has been received\nfrom {STR_VAR_1}.$"
-
-gText_WonderNewsReceivedFrom:: @ 841E88F
- .string "A WONDER NEWS item has been\nreceived from {STR_VAR_1}.$"
-
-gText_WonderCardReceived:: @ 841E8BD
- .string "A new WONDER CARD has been\nreceived.$"
-
-gText_WonderNewsReceived:: @ 841E8E2
- .string "A new WONDER NEWS item has been\nreceived.$"
-
-gText_NewStampReceived:: @ 841E90C
- .string "A new STAMP has been received.$"
-
-gText_NewTrainerReceived:: @ 841E92B
- .string "A new TRAINER has arrived.$"
-
-gText_AlreadyHadCard:: @ 841E946
- .string "You already had that\nWONDER CARD.$"
-
-gText_AlreadyHadNews:: @ 841E968
- .string "You already had that\nWONDER NEWS item.$"
-
-gText_AlreadyHadStamp:: @ 841E98F
- .string "You already had that\nSTAMP.$"
-
-gText_NoMoreRoomForStamps:: @ 841E9AB
- .string "There's no more room for adding\nSTAMPS.$"
-
-gText_RecordUploadedViaWireless:: @ 841E9D3
- .string "Your record has been uploaded via\nWIRELESS COMMUNICATION.$"
-
-gText_CantAcceptCardFromTrainer:: @ 841EA0D
- .string "You can't accept a WONDER CARD\nfrom this TRAINER.$"
-
-gText_CantAcceptNewsFromTrainer:: @ 841EA3F
- .string "You can't accept WONDER NEWS\nfrom this TRAINER.$"
-
-gText_NothingSentOver:: @ 841EA6F
- .string "Nothing was sent over…$"
-
-gText_WhatToDoWithCards:: @ 841EA86
- .string "What would you like to do\nwith the WONDER CARDS?$"
-
-gText_WhatToDoWithNews:: @ 841EAB7
- .string "What would you like to do\nwith the WONDER NEWS?$"
-
-gText_SendingWonderCard:: @ 841EAE7
- .string "Sending your WONDER CARD…$"
-
-gText_SendingWonderNews:: @ 841EB01
- .string "Sending your WONDER NEWS item…$"
-
-gText_WonderCardSentTo:: @ 841EB20
- .string "Your WONDER CARD has been sent\nto {STR_VAR_1}.$"
-
-gText_WonderNewsSentTo:: @ 841EB46
- .string "Your WONDER NEWS item has been\nsent to {STR_VAR_1}.$"
-
-gText_StampSentTo:: @ 841EB71
- .string "A STAMP has been sent to {STR_VAR_1}.$"
-
-gText_GiftSentTo:: @ 841EB8E
- .string "A GIFT has been sent to {STR_VAR_1}.$"
-
-gText_OtherTrainerHasCard:: @ 841EBAA
- .string "The other TRAINER has the same\nWONDER CARD already.$"
-
-gText_OtherTrainerHasNews:: @ 841EBDE
- .string "The other TRAINER has the same\nWONDER NEWS already.$"
-
-gText_OtherTrainerHasStamp:: @ 841EC12
- .string "The other TRAINER has the same\nSTAMP already.$"
-
-gText_OtherTrainerCanceled:: @ 841EC40
- .string "The other TRAINER canceled\ncommunication.$"
-
-gText_CantSendGiftToTrainer:: @ 841EC6A
- .string "You can't send a MYSTERY GIFT to\nthis TRAINER.$"
-
-gText_IfThrowAwayCardEventWontHappen:: @ 841EC99
- .string "If you throw away the CARD,\nits event won't happen. Okay?$"
-
-gText_OkayToDiscardNews:: @ 841ECD3
- .string "Is it okay to discard this\nNEWS item?$"
-
-gText_HaventReceivedGiftOkayToDiscard:: @ 841ECF9
- .string "You haven't received the\nGIFT. Is it okay to discard?$"
-
-gText_DataWillBeSaved:: @ 841ED2F
- .string "Data will be saved.\nPlease wait.$"
-
-gText_SaveCompletedPressA:: @ 841ED50
- .string "Save completed.\nPlease press the A Button.$"
-
-gText_WonderCardThrownAway:: @ 841ED7B
- .string "The WONDER CARD was thrown away.$"
-
-gText_WonderNewsThrownAway:: @ 841ED9C
- .string "The WONDER NEWS was thrown away.$"
-
-gText_MysteryGift:: @ 841EDBD
- .string "MYSTERY GIFT$"
-
-gText_PickOKCancel:: @ 841EDCA
- .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}EXIT$"
-
-gText_WonderCards::
- .string "WONDER CARDS$"
-
-gText_WonderNews::
- .string "WONDER NEWS$"
-
-gText_WirelessCommunication::
- .string "WIRELESS COMMUNICATION$"
-
-gText_Friend2::
- .string "FRIEND$"
-
-gText_Exit3::
- .string "EXIT$"
-
-gText_Receive::
- .string "RECEIVE$"
-
-gText_Send::
- .string "SEND$"
-
-gText_Toss::
- .string "TOSS$"
-
-gUnknown_841EE2B:: @ 841EE2B
- .incbin "baserom.gba", 0x41EE2B, 0x17
+ .section .rodata.841EE44
.align 2
gUnknown_841EE44:: @ 841EE44
.incbin "baserom.gba", 0x41EE44, 0x20
@@ -2726,26 +374,13 @@ gUnknown_841EF10:: @ 841EF10
.incbin "baserom.gba", 0x41EF10, 0x2B8
gUnknown_841F1C8:: @ 841F1C8
- .incbin "baserom.gba", 0x41F1C8, 0x240
+ .incbin "graphics/text_window/unk_841F1C8.4bpp"
gTMCaseMainWindowPalette:: @ 841F408
.incbin "graphics/tm_case/unk_841F408.gbapal"
-gUnknown_841F428:: @ 841F428
- .incbin "baserom.gba", 0x41F428, 0x4
-
-gUnknown_841F42C:: @ 841F42C
- .incbin "baserom.gba", 0x41F42C, 0x10
-
-gUnknown_841F43C:: @ 841F43C
- .incbin "baserom.gba", 0x41F43C, 0x8
-
-gUnknown_841F444:: @ 841F444
- .incbin "baserom.gba", 0x41F444, 0x60
-
-gUnknown_841F4A4:: @ 841F4A4
- .incbin "baserom.gba", 0x41F4A4, 0x10
-
+ .section .rodata.841F4B4
+ .align 2
gUnknown_841F4B4:: @ 841F4B4
.incbin "baserom.gba", 0x41F4B4, 0x1F534
@@ -2782,6 +417,7 @@ gUnknown_843EC64:: @ 843EC64
gUnknown_843EC8C:: @ 843EC8C
.incbin "baserom.gba", 0x43EC8C, 0xFC
+ .align 2
gUnknown_843ED88:: @ 843ED88
.incbin "baserom.gba", 0x43ED88, 0xC
@@ -2842,7 +478,7 @@ gUnknown_843EE64:: @ 843EE64
.asciz "SEARCH"
.align 2
- .incbin "baserom.gba", 0x43EEC0, 0x43F004-0x43EEC0
+ .incbin "baserom.gba", 0x43EEC0, 0x144
gUnknown_843F004:: @ 843F004
.incbin "baserom.gba", 0x43F004, 0x100
@@ -2908,7 +544,10 @@ gUnknown_843F8DB:: @ 843F8DB
.incbin "baserom.gba", 0x43F8DB, 0x5
gUnknown_843F8E0:: @ 843F8E0
- .incbin "baserom.gba", 0x43F8E0, 0x10
+ .4byte gUnknown_847A8D8
+ .4byte gUnknown_847A8FA
+ .4byte gUnknown_847A913
+ .4byte gUnknown_847A934
gUnknown_843F8F0:: @ 843F8F0
.incbin "baserom.gba", 0x43F8F0, 0x20
@@ -3102,8 +741,7 @@ gUnknown_84524C4:: @ 84524C4
gUnknown_8452C4C:: @ 8452C4C
.incbin "baserom.gba", 0x452C4C, 0x48
-gUnknown_8452C94:: @ 8452C94
- .incbin "baserom.gba", 0x452C94, 0x60
+ .section .rodata.8452CF4
gUnknown_8452CF4:: @ 8452CF4
.incbin "baserom.gba", 0x452CF4, 0x8
@@ -3156,33 +794,8 @@ gUnknown_8452F6C:: @ 8452F6C
gUnknown_8452F7C:: @ 8452F7C
.incbin "baserom.gba", 0x452F7C, 0xC0
-gUnknown_845303C:: @ 845303C
- .incbin "baserom.gba", 0x45303C, 0x56
-
-gUnknown_8453092:: @ 8453092
- .incbin "baserom.gba", 0x453092, 0x2
-
-gUnknown_8453094:: @ 8453094
- .incbin "baserom.gba", 0x453094, 0x4
-
.section .rodata.8453F6C
-
-// item_pc.o
-gUnknown_8453F6C:: @ 8453F6C
- .incbin "baserom.gba", 0x453F6C, 0x8
-
-gUnknown_8453F74:: @ 8453F74
- .incbin "baserom.gba", 0x453F74, 0x18
-
-gUnknown_8453F8C:: @ 8453F8C
- .incbin "baserom.gba", 0x453F8C, 0xC
-
-gUnknown_8453F98:: @ 8453F98
- .incbin "baserom.gba", 0x453F98, 0x38
-
-gUnknown_8453FD0:: @ 8453FD0
- .incbin "baserom.gba", 0x453FD0, 0x18
-
+// mailbox_pc.o
gUnknown_8453FE8:: @ 8453FE8
.incbin "baserom.gba", 0x453FE8, 0x18
@@ -3192,9 +805,7 @@ gUnknown_8454000:: @ 8454000
gUnknown_8454003:: @ 8454003
.incbin "baserom.gba", 0x454003, 0x2615
-gUnknown_8456618:: @ 8456618
- .incbin "baserom.gba", 0x456618, 0x4
-
+ @ menu.o
@ quest_log.o
@ link_rfu_3.o
.section .rodata.8456C74
@@ -3929,60 +1540,3 @@ gUnknown_845B050:: @ 845B050
gUnknown_845B068:: @ 845B068
.incbin "baserom.gba", 0x45B068, 0x18
-
-gUnknown_845B080:: @ 845B080
- .incbin "baserom.gba", 0x45B080, 0x18
-
-gUnknown_845B098:: @ 845B098
- .incbin "baserom.gba", 0x45B098, 0x18
-
-gUnknown_845B0B0:: @ 845B0B0
- .incbin "baserom.gba", 0x45B0B0, 0xB4
-
-gUnknown_845B164:: @ 845B164
- .incbin "baserom.gba", 0x45B164, 0xB4
-
-gUnknown_845B218:: @ 845B218
- .incbin "baserom.gba", 0x45B218, 0xC4
-
-gUnknown_845B2DC:: @ 845B2DC
- .incbin "baserom.gba", 0x45B2DC, 0xC4
-
-gUnknown_845B3A0:: @ 845B3A0
- .incbin "baserom.gba", 0x45B3A0, 0xB0
-
-gUnknown_845B450:: @ 845B450
- .incbin "baserom.gba", 0x45B450, 0xB0
-
-gUnknown_845B500:: @ 845B500
- .incbin "baserom.gba", 0x45B500, 0x20
-
-gUnknown_845B520:: @ 845B520
- .incbin "baserom.gba", 0x45B520, 0x20
-
-gUnknown_845B540:: @ 845B540
- .incbin "baserom.gba", 0x45B540, 0x90
-
-gUnknown_845B5D0:: @ 845B5D0
- .incbin "baserom.gba", 0x45B5D0, 0x3EE
-
-gUnknown_845B9BE:: @ 845B9BE
- .incbin "baserom.gba", 0x45B9BE, 0x22
-
-gUnknown_845B9E0:: @ 845B9E0
- .incbin "baserom.gba", 0x45B9E0, 0xAD0
-
-gUnknown_845C4B0:: @ 845C4B0
- .incbin "baserom.gba", 0x45C4B0, 0x6
-
-gUnknown_845C4B6:: @ 845C4B6
- .incbin "baserom.gba", 0x45C4B6, 0xDE
-
-gUnknown_845C594:: @ 845C594
- .incbin "baserom.gba", 0x45C594, 0x28
-
-gUnknown_845C5BC:: @ 845C5BC
- .incbin "baserom.gba", 0x45C5BC, 0x12
-
-gUnknown_845C5CE:: @ 845C5CE
- .incbin "baserom.gba", 0x45C5CE, 0x32
diff --git a/data/data_8468C98.s b/data/data_8468C98.s
index 5b59683b2..7ce7c3a02 100644
--- a/data/data_8468C98.s
+++ b/data/data_8468C98.s
@@ -138,10 +138,14 @@ gUnknown_846D953:: @ 846D953
.incbin "baserom.gba", 0x46D953, 0xD
gUnknown_846D960:: @ 846D960
- .incbin "baserom.gba", 0x46D960, 0x8
+ obj_tiles gUnknown_8479688, 0, 800
gUnknown_846D968:: @ 846D968
- .incbin "baserom.gba", 0x46D968, 0x40
+ obj_pal gUnknown_8479668, 800
+
+gUnknown_846D970::
+ .2byte 0x0006, 0x0008, 0x0010, 0x0008, 0x0006, 0x0008, 0x000b, 0x0006, 0x0010, 0x0008, 0x0002, 0x0006
+ .2byte 0x0006, 0x0008, 0x0010, 0x0008, 0x0014, 0x0006, 0x0002, 0x0006, 0x0006, 0x0008, 0x000b, 0x0006, 0x0010, 0x0008, 0x0014, 0x0006
gUnknown_846D9A8:: @ 846D9A8
.incbin "baserom.gba", 0x46D9A8, 0x2C
diff --git a/data/data_8471F00.s b/data/data_8471F00.s
index e8b51cf69..364b5458d 100644
--- a/data/data_8471F00.s
+++ b/data/data_8471F00.s
@@ -215,173 +215,88 @@ gUnknown_84791E8:: @ 84791E8
gUnknown_84792D0:: @ 84792D0
.incbin "baserom.gba", 0x4792D0, 0x10
-gUnknown_84792E0:: @ 84792E0
- .incbin "baserom.gba", 0x4792E0, 0x10
-
-gUnknown_84792F0:: @ 84792F0
- .incbin "baserom.gba", 0x4792F0, 0x50
-
-gUnknown_8479340:: @ 8479340
- .incbin "baserom.gba", 0x479340, 0x28
-
-gUnknown_8479368:: @ 8479368
- .incbin "baserom.gba", 0x479368, 0x18
-
-gUnknown_8479380:: @ 8479380
- .incbin "baserom.gba", 0x479380, 0x10
-
-gUnknown_8479390:: @ 8479390
- .incbin "baserom.gba", 0x479390, 0x1B8
-
-gUnknown_8479548:: @ 8479548
- .incbin "baserom.gba", 0x479548, 0x18
-
-gUnknown_8479560:: @ 8479560
- .4byte gUnknown_841B8BF
- .4byte gUnknown_841BB40
- .4byte gUnknown_841BE76
- .4byte gUnknown_841C23B
- .4byte gUnknown_841C459
- .4byte gUnknown_841C82A
-
-gUnknown_8479578:: @ 8479578
- .incbin "baserom.gba", 0x479578, 0x18
-
-gUnknown_8479590:: @ 8479590
- .incbin "baserom.gba", 0x479590, 0x28
-
-gUnknown_84795B8:: @ 84795B8
- .incbin "baserom.gba", 0x4795B8, 0x10
-
-gUnknown_84795C8:: @ 84795C8
- .incbin "baserom.gba", 0x4795C8, 0x90
-
.section .rodata.8479668
.align 2
gUnknown_8479668:: @ 8479668
- .incbin "baserom.gba", 0x479668, 0x5F0
-
-gUnknown_8479C58:: @ 8479C58
- .incbin "baserom.gba", 0x479C58, 0x30
-
-gUnknown_8479C88:: @ 8479C88
- .incbin "baserom.gba", 0x479C88, 0x38
-
-gUnknown_8479CC0:: @ 8479CC0
- .incbin "baserom.gba", 0x479CC0, 0x18
-
- .align 2
-gUnknown_8479CD8:: @ 8479CD8
- .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/cereader_tool.c"
+ .incbin "graphics/misc/unk_8479688.gbapal"
- .align 2
-gUnknown_8479D10:: @ 8479D10
- .asciz "ttdata->dummy == 0"
+gUnknown_8479688::
+ .incbin "graphics/misc/unk_8479688.4bpp.lz"
- .align 2
-gUnknown_8479D24:: @ 8479D24
- .asciz "ttdata->id == 0"
-
- // trainer_tower
+gUnknown_8479748::
+ .incbin "graphics/misc/unk_8479748.4bpp.lz"
.section .rodata.after_trainer_tower
- // unk_815F138
-
-gUnknown_847A328::
- .incbin "data/graphics/unk_847a348.gbapal"
-
-gUnknown_847A348::
- .incbin "data/graphics/unk_847a348.4bpp.lz"
-
-gUnknown_847A79C:: @ 847A79C
- obj_tiles gUnknown_847A348, 0xE00, 0
-
-gUnknown_847A7A4:: @ 847A7A4
- obj_pal gUnknown_847A328, 0
-
-gOamData_847A7AC::
- .4byte 0x80000300, 0x00000000
-
-gOamData_847A7B4::
- .4byte 0xc0004000, 0x00000000
-
-gUnknown_847A7BC::
- obj_image_anim_frame 0, 1
- obj_image_anim_end
-
-gUnknown_847A7C4::
- obj_image_anim_frame 16, 1
- obj_image_anim_end
-
-gUnknown_847A7CC::
- obj_image_anim_frame 32, 1
- obj_image_anim_end
-
-gUnknown_847A7D4::
- .4byte gUnknown_847A7BC
- .4byte gUnknown_847A7C4
- .4byte gUnknown_847A7CC
-
-gUnknown_847A7E0::
- obj_image_anim_frame 48, 1
- obj_image_anim_end
-
-gUnknown_847A7E8::
- obj_image_anim_frame 80, 1
- obj_image_anim_end
-
-gUnknown_847A7F0::
- .4byte gUnknown_847A7E0
- .4byte gUnknown_847A7E8
-
-gUnknown_847A7F8::
- obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
- obj_rot_scal_anim_end
-
-gUnknown_847A808::
- obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x10, -0x10, 0, 8
- obj_rot_scal_anim_end
-
-gUnknown_847A820::
- obj_rot_scal_anim_frame -0x12, 0x12, 0, 8
- obj_rot_scal_anim_end
-
-gUnknown_847A830::
- obj_rot_scal_anim_frame 0x6, -0x6, 0, 8
- obj_rot_scal_anim_frame -0x4, 0x4, 0, 8
- obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
- obj_rot_scal_anim_end
-
-gUnknown_847A850::
- .4byte gUnknown_847A7F8
- .4byte gUnknown_847A808
- .4byte gUnknown_847A820
- .4byte gUnknown_847A830
-
-gUnknown_847A860:: @ 847A860
- spr_template 0, 0, gOamData_847A7AC, gUnknown_847A7D4, NULL, gUnknown_847A850, SpriteCallbackDummy
-
-gUnknown_847A878:: @ 847A878
- spr_template 0, 0, gOamData_847A7B4, gUnknown_847A7F0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
// berry_fix_program
-gUnknown_847A890:: @ 847A890
- .4byte gUnknown_8EA467C, gUnknown_8EA52B8, gUnknown_8EA463C
- .4byte gUnknown_8EA5664, gUnknown_8EA60C8, gUnknown_8EA5604
- .4byte gUnknown_8EA6408, gUnknown_8EA7028, gUnknown_8EA63C8
- .4byte gUnknown_8EA7320, gUnknown_8EA8118, gUnknown_8EA72E0
- .4byte gUnknown_8EA8408, gUnknown_8EA8CC8, gUnknown_8EA83C8
- .4byte gUnknown_8EA8F40, gUnknown_8EA9588, gUnknown_8EA8F00
-
- .incbin "baserom.gba", 0x47A8D8, 0x2D4
+gUnknown_847A8D8::
+ .string "{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 26}others$"
+
+gUnknown_847A8FA::
+ .string "{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L$"
+
+gUnknown_847A913::
+ .string "{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} $"
+
+gUnknown_847A934::
+ .string "{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} $"
+ .string "{CLEAR 11}a{CLEAR 6}b{CLEAR 6}c{CLEAR 26}d{CLEAR 6}e{CLEAR 6}f{CLEAR 6} {CLEAR 26}.$"
+ .string "{CLEAR 11}g{CLEAR 6}h{CLEAR 7}i{CLEAR 27}j{CLEAR 6}k{CLEAR 6}l{CLEAR 7} {CLEAR 26},$"
+ .string "{CLEAR 11}m{CLEAR 6}n{CLEAR 7}o{CLEAR 26}p{CLEAR 6}q{CLEAR 7}r{CLEAR 6}s{CLEAR 27} $"
+ .string "{CLEAR 12}t{CLEAR 6}u{CLEAR 6}v{CLEAR 26}w{CLEAR 6}x{CLEAR 6}y{CLEAR 6}z{CLEAR 26} $"
+ .string "{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 6} {CLEAR 26}.$"
+ .string "{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L{CLEAR 6} {CLEAR 26},$"
+ .string "{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} $"
+ .string "{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} $"
+ .string "{CLEAR 11}0{CLEAR 16}1{CLEAR 16}2{CLEAR 16}3{CLEAR 16}4{CLEAR 16} $"
+ .string "{CLEAR 11}5{CLEAR 16}6{CLEAR 16}7{CLEAR 16}8{CLEAR 16}9{CLEAR 16} $"
+ .string "{CLEAR 11}!{CLEAR 16}?{CLEAR 16}♂{CLEAR 16}♀{CLEAR 16}/{CLEAR 16}-$"
+ .string "{CLEAR 11}…{CLEAR 16}“{CLEAR 16}”{CLEAR 18}‘{CLEAR 18}'{CLEAR 18} $"
+ .string "ABCDE$"
+ .string "FGHIJ$"
+ .string "KLMNO$"
+ .string "PQRST$"
+ .string "UVWXY$"
+ .string "Z $"
+ .string "01234$"
+ .string "56789$"
+ .string ".,!? $"
+ .string "-/&… $"
+ .string "abcde$"
+ .string "fghij$"
+ .string "klmno$"
+ .string "pqrst$"
+ .string "uvwxy$"
+ .string "z $"
+ .string "01234$"
+ .string "56789$"
+ .string ".,!? $"
+ .string "-/&… $"
+ .string "$"
+ .string "$"
+ .string "$"
+ .string "$"
+ .string "$"
+ .string "$"
+ .string "$"
+ .string "$"
+ .string "{EXTRA 245}{EXTRA 246}{EXTRA 247}{EXTRA 248}{EXTRA 254}$"
+ .string "{EXTRA 249}{EXTRA 250}{EXTRA 252}{EXTRA 251}{EXTRA 253}$"
+ .string "{EXTRA 236}{EXTRA 237}{EXTRA 238}{EXTRA 235}{EXTRA 234}$"
+ .string "♂♀{EXTRA 212}{EXTRA 213}{EXTRA 211}$"
+ .string "{EXTRA 216}{EXTRA 217}{EXTRA 242}{EXTRA 243}{EXTRA 244}$"
+ .string "{EXTRA 218}{EXTRA 241}{EXTRA 224}{EXTRA 226}{EXTRA 227}$"
+ .string "{EXTRA 240}{EXTRA 239}{EXTRA 225}{EXTRA 214}{EXTRA 215}$"
+ .string "{EXTRA 228}{EXTRA 229}{EXTRA 230}{EXTRA 231}{EXTRA 232}$"
+ .string "{EXTRA 233}{EXTRA 220}{EXTRA 221}{EXTRA 222}{EXTRA 209}$"
+ .string "{EXTRA 210}{EXTRA 208}ょ: $"
// trainer_tower (again?)
@ 847ABAC
+.align 2
.include "data/trainer_tower/trainers.inc"
.align 2
@@ -426,5 +341,359 @@ gUnknown_84827B4:: @ 84827B4
.include "data/text/move_descriptions.inc"
+ .align 2, 0
gUnknown_84886E8:: @ 84886E8
- .incbin "baserom.gba", 0x4886E8, 0x588
+ .4byte gMoveDescription_Pound
+ .4byte gMoveDescription_KarateChop
+ .4byte gMoveDescription_DoubleSlap
+ .4byte gMoveDescription_CometPunch
+ .4byte gMoveDescription_MegaPunch
+ .4byte gMoveDescription_PayDay
+ .4byte gMoveDescription_FirePunch
+ .4byte gMoveDescription_IcePunch
+ .4byte gMoveDescription_ThunderPunch
+ .4byte gMoveDescription_Scratch
+ .4byte gMoveDescription_ViceGrip
+ .4byte gMoveDescription_Guillotine
+ .4byte gMoveDescription_RazorWind
+ .4byte gMoveDescription_SwordsDance
+ .4byte gMoveDescription_Cut
+ .4byte gMoveDescription_Gust
+ .4byte gMoveDescription_WingAttack
+ .4byte gMoveDescription_Whirlwind
+ .4byte gMoveDescription_Fly
+ .4byte gMoveDescription_Bind
+ .4byte gMoveDescription_Slam
+ .4byte gMoveDescription_VineWhip
+ .4byte gMoveDescription_Stomp
+ .4byte gMoveDescription_DoubleKick
+ .4byte gMoveDescription_MegaKick
+ .4byte gMoveDescription_JumpKick
+ .4byte gMoveDescription_RollingKick
+ .4byte gMoveDescription_SandAttack
+ .4byte gMoveDescription_Headbutt
+ .4byte gMoveDescription_HornAttack
+ .4byte gMoveDescription_FuryAttack
+ .4byte gMoveDescription_HornDrill
+ .4byte gMoveDescription_Tackle
+ .4byte gMoveDescription_BodySlam
+ .4byte gMoveDescription_Wrap
+ .4byte gMoveDescription_TakeDown
+ .4byte gMoveDescription_Thrash
+ .4byte gMoveDescription_DoubleEdge
+ .4byte gMoveDescription_TailWhip
+ .4byte gMoveDescription_PoisonSting
+ .4byte gMoveDescription_Twineedle
+ .4byte gMoveDescription_PinMissile
+ .4byte gMoveDescription_Leer
+ .4byte gMoveDescription_Bite
+ .4byte gMoveDescription_Growl
+ .4byte gMoveDescription_Roar
+ .4byte gMoveDescription_Sing
+ .4byte gMoveDescription_Supersonic
+ .4byte gMoveDescription_SonicBoom
+ .4byte gMoveDescription_Disable
+ .4byte gMoveDescription_Acid
+ .4byte gMoveDescription_Ember
+ .4byte gMoveDescription_Flamethrower
+ .4byte gMoveDescription_Mist
+ .4byte gMoveDescription_WaterGun
+ .4byte gMoveDescription_HydroPump
+ .4byte gMoveDescription_Surf
+ .4byte gMoveDescription_IceBeam
+ .4byte gMoveDescription_Blizzard
+ .4byte gMoveDescription_Psybeam
+ .4byte gMoveDescription_BubbleBeam
+ .4byte gMoveDescription_AuroraBeam
+ .4byte gMoveDescription_HyperBeam
+ .4byte gMoveDescription_Peck
+ .4byte gMoveDescription_DrillPeck
+ .4byte gMoveDescription_Submission
+ .4byte gMoveDescription_LowKick
+ .4byte gMoveDescription_Counter
+ .4byte gMoveDescription_SeismicToss
+ .4byte gMoveDescription_Strength
+ .4byte gMoveDescription_Absorb
+ .4byte gMoveDescription_MegaDrain
+ .4byte gMoveDescription_LeechSeed
+ .4byte gMoveDescription_Growth
+ .4byte gMoveDescription_RazorLeaf
+ .4byte gMoveDescription_SolarBeam
+ .4byte gMoveDescription_PoisonPowder
+ .4byte gMoveDescription_StunSpore
+ .4byte gMoveDescription_SleepPowder
+ .4byte gMoveDescription_PetalDance
+ .4byte gMoveDescription_StringShot
+ .4byte gMoveDescription_DragonRage
+ .4byte gMoveDescription_FireSpin
+ .4byte gMoveDescription_ThunderShock
+ .4byte gMoveDescription_Thunderbolt
+ .4byte gMoveDescription_ThunderWave
+ .4byte gMoveDescription_Thunder
+ .4byte gMoveDescription_RockThrow
+ .4byte gMoveDescription_Earthquake
+ .4byte gMoveDescription_Fissure
+ .4byte gMoveDescription_Dig
+ .4byte gMoveDescription_Toxic
+ .4byte gMoveDescription_Confusion
+ .4byte gMoveDescription_Psychic
+ .4byte gMoveDescription_Hypnosis
+ .4byte gMoveDescription_Meditate
+ .4byte gMoveDescription_Agility
+ .4byte gMoveDescription_QuickAttack
+ .4byte gMoveDescription_Rage
+ .4byte gMoveDescription_Teleport
+ .4byte gMoveDescription_NightShade
+ .4byte gMoveDescription_Mimic
+ .4byte gMoveDescription_Screech
+ .4byte gMoveDescription_DoubleTeam
+ .4byte gMoveDescription_Recover
+ .4byte gMoveDescription_Harden
+ .4byte gMoveDescription_Minimize
+ .4byte gMoveDescription_Smokescreen
+ .4byte gMoveDescription_ConfuseRay
+ .4byte gMoveDescription_Withdraw
+ .4byte gMoveDescription_DefenseCurl
+ .4byte gMoveDescription_Barrier
+ .4byte gMoveDescription_LightScreen
+ .4byte gMoveDescription_Haze
+ .4byte gMoveDescription_Reflect
+ .4byte gMoveDescription_FocusEnergy
+ .4byte gMoveDescription_Bide
+ .4byte gMoveDescription_Metronome
+ .4byte gMoveDescription_MirrorMove
+ .4byte gMoveDescription_SelfDestruct
+ .4byte gMoveDescription_EggBomb
+ .4byte gMoveDescription_Lick
+ .4byte gMoveDescription_Smog
+ .4byte gMoveDescription_Sludge
+ .4byte gMoveDescription_BoneClub
+ .4byte gMoveDescription_FireBlast
+ .4byte gMoveDescription_Waterfall
+ .4byte gMoveDescription_Clamp
+ .4byte gMoveDescription_Swift
+ .4byte gMoveDescription_SkullBash
+ .4byte gMoveDescription_SpikeCannon
+ .4byte gMoveDescription_Constrict
+ .4byte gMoveDescription_Amnesia
+ .4byte gMoveDescription_Kinesis
+ .4byte gMoveDescription_SoftBoiled
+ .4byte gMoveDescription_HiJumpKick
+ .4byte gMoveDescription_Glare
+ .4byte gMoveDescription_DreamEater
+ .4byte gMoveDescription_PoisonGas
+ .4byte gMoveDescription_Barrage
+ .4byte gMoveDescription_LeechLife
+ .4byte gMoveDescription_LovelyKiss
+ .4byte gMoveDescription_SkyAttack
+ .4byte gMoveDescription_Transform
+ .4byte gMoveDescription_Bubble
+ .4byte gMoveDescription_DizzyPunch
+ .4byte gMoveDescription_Spore
+ .4byte gMoveDescription_Flash
+ .4byte gMoveDescription_Psywave
+ .4byte gMoveDescription_Splash
+ .4byte gMoveDescription_AcidArmor
+ .4byte gMoveDescription_Crabhammer
+ .4byte gMoveDescription_Explosion
+ .4byte gMoveDescription_FurySwipes
+ .4byte gMoveDescription_Bonemerang
+ .4byte gMoveDescription_Rest
+ .4byte gMoveDescription_RockSlide
+ .4byte gMoveDescription_HyperFang
+ .4byte gMoveDescription_Sharpen
+ .4byte gMoveDescription_Conversion
+ .4byte gMoveDescription_TriAttack
+ .4byte gMoveDescription_SuperFang
+ .4byte gMoveDescription_Slash
+ .4byte gMoveDescription_Substitute
+ .4byte gMoveDescription_Struggle
+ .4byte gMoveDescription_Sketch
+ .4byte gMoveDescription_TripleKick
+ .4byte gMoveDescription_Thief
+ .4byte gMoveDescription_SpiderWeb
+ .4byte gMoveDescription_MindReader
+ .4byte gMoveDescription_Nightmare
+ .4byte gMoveDescription_FlameWheel
+ .4byte gMoveDescription_Snore
+ .4byte gMoveDescription_Curse
+ .4byte gMoveDescription_Flail
+ .4byte gMoveDescription_Conversion2
+ .4byte gMoveDescription_Aeroblast
+ .4byte gMoveDescription_CottonSpore
+ .4byte gMoveDescription_Reversal
+ .4byte gMoveDescription_Spite
+ .4byte gMoveDescription_PowderSnow
+ .4byte gMoveDescription_Protect
+ .4byte gMoveDescription_MachPunch
+ .4byte gMoveDescription_ScaryFace
+ .4byte gMoveDescription_FaintAttack
+ .4byte gMoveDescription_SweetKiss
+ .4byte gMoveDescription_BellyDrum
+ .4byte gMoveDescription_SludgeBomb
+ .4byte gMoveDescription_MudSlap
+ .4byte gMoveDescription_Octazooka
+ .4byte gMoveDescription_Spikes
+ .4byte gMoveDescription_ZapCannon
+ .4byte gMoveDescription_Foresight
+ .4byte gMoveDescription_DestinyBond
+ .4byte gMoveDescription_PerishSong
+ .4byte gMoveDescription_IcyWind
+ .4byte gMoveDescription_Detect
+ .4byte gMoveDescription_BoneRush
+ .4byte gMoveDescription_LockOn
+ .4byte gMoveDescription_Outrage
+ .4byte gMoveDescription_Sandstorm
+ .4byte gMoveDescription_GigaDrain
+ .4byte gMoveDescription_Endure
+ .4byte gMoveDescription_Charm
+ .4byte gMoveDescription_Rollout
+ .4byte gMoveDescription_FalseSwipe
+ .4byte gMoveDescription_Swagger
+ .4byte gMoveDescription_MilkDrink
+ .4byte gMoveDescription_Spark
+ .4byte gMoveDescription_FuryCutter
+ .4byte gMoveDescription_SteelWing
+ .4byte gMoveDescription_MeanLook
+ .4byte gMoveDescription_Attract
+ .4byte gMoveDescription_SleepTalk
+ .4byte gMoveDescription_HealBell
+ .4byte gMoveDescription_Return
+ .4byte gMoveDescription_Present
+ .4byte gMoveDescription_Frustration
+ .4byte gMoveDescription_Safeguard
+ .4byte gMoveDescription_PainSplit
+ .4byte gMoveDescription_SacredFire
+ .4byte gMoveDescription_Magnitude
+ .4byte gMoveDescription_DynamicPunch
+ .4byte gMoveDescription_Megahorn
+ .4byte gMoveDescription_DragonBreath
+ .4byte gMoveDescription_BatonPass
+ .4byte gMoveDescription_Encore
+ .4byte gMoveDescription_Pursuit
+ .4byte gMoveDescription_RapidSpin
+ .4byte gMoveDescription_SweetScent
+ .4byte gMoveDescription_IronTail
+ .4byte gMoveDescription_MetalClaw
+ .4byte gMoveDescription_VitalThrow
+ .4byte gMoveDescription_MorningSun
+ .4byte gMoveDescription_Synthesis
+ .4byte gMoveDescription_Moonlight
+ .4byte gMoveDescription_HiddenPower
+ .4byte gMoveDescription_CrossChop
+ .4byte gMoveDescription_Twister
+ .4byte gMoveDescription_RainDance
+ .4byte gMoveDescription_SunnyDay
+ .4byte gMoveDescription_Crunch
+ .4byte gMoveDescription_MirrorCoat
+ .4byte gMoveDescription_PsychUp
+ .4byte gMoveDescription_ExtremeSpeed
+ .4byte gMoveDescription_AncientPower
+ .4byte gMoveDescription_ShadowBall
+ .4byte gMoveDescription_FutureSight
+ .4byte gMoveDescription_RockSmash
+ .4byte gMoveDescription_Whirlpool
+ .4byte gMoveDescription_BeatUp
+ .4byte gMoveDescription_FakeOut
+ .4byte gMoveDescription_Uproar
+ .4byte gMoveDescription_Stockpile
+ .4byte gMoveDescription_SpitUp
+ .4byte gMoveDescription_Swallow
+ .4byte gMoveDescription_HeatWave
+ .4byte gMoveDescription_Hail
+ .4byte gMoveDescription_Torment
+ .4byte gMoveDescription_Flatter
+ .4byte gMoveDescription_WillOWisp
+ .4byte gMoveDescription_Memento
+ .4byte gMoveDescription_Facade
+ .4byte gMoveDescription_FocusPunch
+ .4byte gMoveDescription_SmellingSalt
+ .4byte gMoveDescription_FollowMe
+ .4byte gMoveDescription_NaturePower
+ .4byte gMoveDescription_Charge
+ .4byte gMoveDescription_Taunt
+ .4byte gMoveDescription_HelpingHand
+ .4byte gMoveDescription_Trick
+ .4byte gMoveDescription_RolePlay
+ .4byte gMoveDescription_Wish
+ .4byte gMoveDescription_Assist
+ .4byte gMoveDescription_Ingrain
+ .4byte gMoveDescription_Superpower
+ .4byte gMoveDescription_MagicCoat
+ .4byte gMoveDescription_Recycle
+ .4byte gMoveDescription_Revenge
+ .4byte gMoveDescription_BrickBreak
+ .4byte gMoveDescription_Yawn
+ .4byte gMoveDescription_KnockOff
+ .4byte gMoveDescription_Endeavor
+ .4byte gMoveDescription_Eruption
+ .4byte gMoveDescription_SkillSwap
+ .4byte gMoveDescription_Imprison
+ .4byte gMoveDescription_Refresh
+ .4byte gMoveDescription_Grudge
+ .4byte gMoveDescription_Snatch
+ .4byte gMoveDescription_SecretPower
+ .4byte gMoveDescription_Dive
+ .4byte gMoveDescription_ArmThrust
+ .4byte gMoveDescription_Camouflage
+ .4byte gMoveDescription_TailGlow
+ .4byte gMoveDescription_LusterPurge
+ .4byte gMoveDescription_MistBall
+ .4byte gMoveDescription_FeatherDance
+ .4byte gMoveDescription_TeeterDance
+ .4byte gMoveDescription_BlazeKick
+ .4byte gMoveDescription_MudSport
+ .4byte gMoveDescription_IceBall
+ .4byte gMoveDescription_NeedleArm
+ .4byte gMoveDescription_SlackOff
+ .4byte gMoveDescription_HyperVoice
+ .4byte gMoveDescription_PoisonFang
+ .4byte gMoveDescription_CrushClaw
+ .4byte gMoveDescription_BlastBurn
+ .4byte gMoveDescription_HydroCannon
+ .4byte gMoveDescription_MeteorMash
+ .4byte gMoveDescription_Astonish
+ .4byte gMoveDescription_WeatherBall
+ .4byte gMoveDescription_Aromatherapy
+ .4byte gMoveDescription_FakeTears
+ .4byte gMoveDescription_AirCutter
+ .4byte gMoveDescription_Overheat
+ .4byte gMoveDescription_OdorSleuth
+ .4byte gMoveDescription_RockTomb
+ .4byte gMoveDescription_SilverWind
+ .4byte gMoveDescription_MetalSound
+ .4byte gMoveDescription_GrassWhistle
+ .4byte gMoveDescription_Tickle
+ .4byte gMoveDescription_CosmicPower
+ .4byte gMoveDescription_WaterSpout
+ .4byte gMoveDescription_SignalBeam
+ .4byte gMoveDescription_ShadowPunch
+ .4byte gMoveDescription_Extrasensory
+ .4byte gMoveDescription_SkyUppercut
+ .4byte gMoveDescription_SandTomb
+ .4byte gMoveDescription_SheerCold
+ .4byte gMoveDescription_MuddyWater
+ .4byte gMoveDescription_BulletSeed
+ .4byte gMoveDescription_AerialAce
+ .4byte gMoveDescription_IcicleSpear
+ .4byte gMoveDescription_IronDefense
+ .4byte gMoveDescription_Block
+ .4byte gMoveDescription_Howl
+ .4byte gMoveDescription_DragonClaw
+ .4byte gMoveDescription_FrenzyPlant
+ .4byte gMoveDescription_BulkUp
+ .4byte gMoveDescription_Bounce
+ .4byte gMoveDescription_MudShot
+ .4byte gMoveDescription_PoisonTail
+ .4byte gMoveDescription_Covet
+ .4byte gMoveDescription_VoltTackle
+ .4byte gMoveDescription_MagicalLeaf
+ .4byte gMoveDescription_WaterSport
+ .4byte gMoveDescription_CalmMind
+ .4byte gMoveDescription_LeafBlade
+ .4byte gMoveDescription_DragonDance
+ .4byte gMoveDescription_RockBlast
+ .4byte gMoveDescription_ShockWave
+ .4byte gMoveDescription_WaterPulse
+ .4byte gMoveDescription_DoomDesire
+ .4byte gMoveDescription_PsychoBoost
diff --git a/data/graphics.s b/data/graphics.s
index ff9ed3d7e..83d14001d 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -19,11 +19,11 @@ gUnknown_8D0098C:: @ 8D0098C
.align 2
gFile_graphics_pokemon_palettes_circled_question_mark_palette:: @ 8D00BD0
- .incbin "graphics/pokemon/palettes/circled_question_mark_palette.gbapal.lz"
+ .incbin "graphics/pokemon/question_mark/circled/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_palettes_circled_question_mark_shiny_palette:: @ 8D00BE8
- .incbin "graphics/pokemon/palettes/circled_question_mark_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/question_mark/circled/shiny.gbapal.lz"
.align 2
gFile_graphics_unused_old_charmap_sheet:: @ 8D00C00
@@ -2590,9625 +2590,9625 @@ gUnknown_8D2FBB4:: @ 8D2FBB4
.align 2
gFile_graphics_pokemon_front_pics_bulbasaur_still_front_pic:: @ 8D2FBD4
- .incbin "graphics/pokemon/front_pics/bulbasaur_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/bulbasaur/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_bulbasaur_palette:: @ 8D2FE78
- .incbin "graphics/pokemon/palettes/bulbasaur_palette.gbapal.lz"
+ .incbin "graphics/pokemon/bulbasaur/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_bulbasaur_back_pic:: @ 8D2FEA0
- .incbin "graphics/pokemon/back_pics/bulbasaur_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/bulbasaur/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_bulbasaur_shiny_palette:: @ 8D30164
- .incbin "graphics/pokemon/palettes/bulbasaur_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/bulbasaur/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_bulbasaur_icon:: @ 8D3018C
- .incbin "graphics/pokemon/icons/bulbasaur_icon.4bpp"
+ .incbin "graphics/pokemon/bulbasaur/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_bulbasaur_footprint:: @ 8D3058C
- .incbin "graphics/pokemon/footprints/bulbasaur_footprint.1bpp"
+ .incbin "graphics/pokemon/bulbasaur/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ivysaur_still_front_pic:: @ 8D305AC
- .incbin "graphics/pokemon/front_pics/ivysaur_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ivysaur/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ivysaur_palette:: @ 8D308E8
- .incbin "graphics/pokemon/palettes/ivysaur_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ivysaur/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ivysaur_back_pic:: @ 8D30910
- .incbin "graphics/pokemon/back_pics/ivysaur_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ivysaur/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ivysaur_shiny_palette:: @ 8D30C64
- .incbin "graphics/pokemon/palettes/ivysaur_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ivysaur/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ivysaur_icon:: @ 8D30C8C
- .incbin "graphics/pokemon/icons/ivysaur_icon.4bpp"
+ .incbin "graphics/pokemon/ivysaur/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ivysaur_footprint:: @ 8D3108C
- .incbin "graphics/pokemon/footprints/ivysaur_footprint.1bpp"
+ .incbin "graphics/pokemon/ivysaur/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_venusaur_still_front_pic:: @ 8D310AC
- .incbin "graphics/pokemon/front_pics/venusaur_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/venusaur/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_venusaur_palette:: @ 8D315EC
- .incbin "graphics/pokemon/palettes/venusaur_palette.gbapal.lz"
+ .incbin "graphics/pokemon/venusaur/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_venusaur_back_pic:: @ 8D31614
- .incbin "graphics/pokemon/back_pics/venusaur_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/venusaur/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_venusaur_shiny_palette:: @ 8D31ADC
- .incbin "graphics/pokemon/palettes/venusaur_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/venusaur/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_venusaur_icon:: @ 8D31B04
- .incbin "graphics/pokemon/icons/venusaur_icon.4bpp"
+ .incbin "graphics/pokemon/venusaur/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_venusaur_footprint:: @ 8D31F04
- .incbin "graphics/pokemon/footprints/venusaur_footprint.1bpp"
+ .incbin "graphics/pokemon/venusaur/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_charmander_still_front_pic:: @ 8D31F24
- .incbin "graphics/pokemon/front_pics/charmander_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/charmander/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_charmander_palette:: @ 8D321C4
- .incbin "graphics/pokemon/palettes/charmander_palette.gbapal.lz"
+ .incbin "graphics/pokemon/charmander/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_charmander_back_pic:: @ 8D321EC
- .incbin "graphics/pokemon/back_pics/charmander_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/charmander/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_charmander_shiny_palette:: @ 8D32470
- .incbin "graphics/pokemon/palettes/charmander_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/charmander/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_charmander_icon:: @ 8D32498
- .incbin "graphics/pokemon/icons/charmander_icon.4bpp"
+ .incbin "graphics/pokemon/charmander/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_charmander_footprint:: @ 8D32898
- .incbin "graphics/pokemon/footprints/charmander_footprint.1bpp"
+ .incbin "graphics/pokemon/charmander/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_charmeleon_still_front_pic:: @ 8D328B8
- .incbin "graphics/pokemon/front_pics/charmeleon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/charmeleon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_charmeleon_palette:: @ 8D32C64
- .incbin "graphics/pokemon/palettes/charmeleon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/charmeleon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_charmeleon_back_pic:: @ 8D32C8C
- .incbin "graphics/pokemon/back_pics/charmeleon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/charmeleon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_charmeleon_shiny_palette:: @ 8D32F80
- .incbin "graphics/pokemon/palettes/charmeleon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/charmeleon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_charmeleon_icon:: @ 8D32FA8
- .incbin "graphics/pokemon/icons/charmeleon_icon.4bpp"
+ .incbin "graphics/pokemon/charmeleon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_charmeleon_footprint:: @ 8D333A8
- .incbin "graphics/pokemon/footprints/charmeleon_footprint.1bpp"
+ .incbin "graphics/pokemon/charmeleon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_charizard_still_front_pic:: @ 8D333C8
- .incbin "graphics/pokemon/front_pics/charizard_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/charizard/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_charizard_palette:: @ 8D338C4
- .incbin "graphics/pokemon/palettes/charizard_palette.gbapal.lz"
+ .incbin "graphics/pokemon/charizard/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_charizard_back_pic:: @ 8D338EC
- .incbin "graphics/pokemon/back_pics/charizard_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/charizard/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_charizard_shiny_palette:: @ 8D33CF8
- .incbin "graphics/pokemon/palettes/charizard_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/charizard/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_charizard_icon:: @ 8D33D20
- .incbin "graphics/pokemon/icons/charizard_icon.4bpp"
+ .incbin "graphics/pokemon/charizard/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_charizard_footprint:: @ 8D34120
- .incbin "graphics/pokemon/footprints/charizard_footprint.1bpp"
+ .incbin "graphics/pokemon/charizard/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_squirtle_still_front_pic:: @ 8D34140
- .incbin "graphics/pokemon/front_pics/squirtle_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/squirtle/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_squirtle_palette:: @ 8D343DC
- .incbin "graphics/pokemon/palettes/squirtle_palette.gbapal.lz"
+ .incbin "graphics/pokemon/squirtle/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_squirtle_back_pic:: @ 8D34404
- .incbin "graphics/pokemon/back_pics/squirtle_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/squirtle/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_squirtle_shiny_palette:: @ 8D3468C
- .incbin "graphics/pokemon/palettes/squirtle_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/squirtle/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_squirtle_icon:: @ 8D346B4
- .incbin "graphics/pokemon/icons/squirtle_icon.4bpp"
+ .incbin "graphics/pokemon/squirtle/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_squirtle_footprint:: @ 8D34AB4
- .incbin "graphics/pokemon/footprints/squirtle_footprint.1bpp"
+ .incbin "graphics/pokemon/squirtle/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_wartortle_still_front_pic:: @ 8D34AD4
- .incbin "graphics/pokemon/front_pics/wartortle_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wartortle/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wartortle_palette:: @ 8D34E80
- .incbin "graphics/pokemon/palettes/wartortle_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wartortle/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_wartortle_back_pic:: @ 8D34EA8
- .incbin "graphics/pokemon/back_pics/wartortle_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wartortle/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wartortle_shiny_palette:: @ 8D351F0
- .incbin "graphics/pokemon/palettes/wartortle_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wartortle/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_wartortle_icon:: @ 8D35218
- .incbin "graphics/pokemon/icons/wartortle_icon.4bpp"
+ .incbin "graphics/pokemon/wartortle/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_wartortle_footprint:: @ 8D35618
- .incbin "graphics/pokemon/footprints/wartortle_footprint.1bpp"
+ .incbin "graphics/pokemon/wartortle/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_blastoise_still_front_pic:: @ 8D35638
- .incbin "graphics/pokemon/front_pics/blastoise_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/blastoise/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_blastoise_palette:: @ 8D35B3C
- .incbin "graphics/pokemon/palettes/blastoise_palette.gbapal.lz"
+ .incbin "graphics/pokemon/blastoise/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_blastoise_back_pic:: @ 8D35B64
- .incbin "graphics/pokemon/back_pics/blastoise_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/blastoise/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_blastoise_shiny_palette:: @ 8D35F78
- .incbin "graphics/pokemon/palettes/blastoise_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/blastoise/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_blastoise_icon:: @ 8D35FA0
- .incbin "graphics/pokemon/icons/blastoise_icon.4bpp"
+ .incbin "graphics/pokemon/blastoise/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_blastoise_footprint:: @ 8D363A0
- .incbin "graphics/pokemon/footprints/blastoise_footprint.1bpp"
+ .incbin "graphics/pokemon/blastoise/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_caterpie_still_front_pic:: @ 8D363C0
- .incbin "graphics/pokemon/front_pics/caterpie_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/caterpie/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_caterpie_palette:: @ 8D36618
- .incbin "graphics/pokemon/palettes/caterpie_palette.gbapal.lz"
+ .incbin "graphics/pokemon/caterpie/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_caterpie_back_pic:: @ 8D36640
- .incbin "graphics/pokemon/back_pics/caterpie_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/caterpie/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_caterpie_shiny_palette:: @ 8D368C8
- .incbin "graphics/pokemon/palettes/caterpie_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/caterpie/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_caterpie_icon:: @ 8D368F0
- .incbin "graphics/pokemon/icons/caterpie_icon.4bpp"
+ .incbin "graphics/pokemon/caterpie/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_caterpie_footprint:: @ 8D36CF0
- .incbin "graphics/pokemon/footprints/caterpie_footprint.1bpp"
+ .incbin "graphics/pokemon/caterpie/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_metapod_still_front_pic:: @ 8D36D10
- .incbin "graphics/pokemon/front_pics/metapod_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/metapod/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_metapod_palette:: @ 8D36F2C
- .incbin "graphics/pokemon/palettes/metapod_palette.gbapal.lz"
+ .incbin "graphics/pokemon/metapod/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_metapod_back_pic:: @ 8D36F4C
- .incbin "graphics/pokemon/back_pics/metapod_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/metapod/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_metapod_shiny_palette:: @ 8D37168
- .incbin "graphics/pokemon/palettes/metapod_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/metapod/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_metapod_icon:: @ 8D37188
- .incbin "graphics/pokemon/icons/metapod_icon.4bpp"
+ .incbin "graphics/pokemon/metapod/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_metapod_footprint:: @ 8D37588
- .incbin "graphics/pokemon/footprints/metapod_footprint.1bpp"
+ .incbin "graphics/pokemon/metapod/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_butterfree_still_front_pic:: @ 8D375A8
- .incbin "graphics/pokemon/front_pics/butterfree_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/butterfree/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_butterfree_palette:: @ 8D37920
- .incbin "graphics/pokemon/palettes/butterfree_palette.gbapal.lz"
+ .incbin "graphics/pokemon/butterfree/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_butterfree_back_pic:: @ 8D37948
- .incbin "graphics/pokemon/back_pics/butterfree_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/butterfree/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_butterfree_shiny_palette:: @ 8D37D4C
- .incbin "graphics/pokemon/palettes/butterfree_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/butterfree/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_butterfree_icon:: @ 8D37D74
- .incbin "graphics/pokemon/icons/butterfree_icon.4bpp"
+ .incbin "graphics/pokemon/butterfree/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_butterfree_footprint:: @ 8D38174
- .incbin "graphics/pokemon/footprints/butterfree_footprint.1bpp"
+ .incbin "graphics/pokemon/butterfree/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_weedle_still_front_pic:: @ 8D38194
- .incbin "graphics/pokemon/front_pics/weedle_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/weedle/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_weedle_palette:: @ 8D383D0
- .incbin "graphics/pokemon/palettes/weedle_palette.gbapal.lz"
+ .incbin "graphics/pokemon/weedle/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_weedle_back_pic:: @ 8D383F8
- .incbin "graphics/pokemon/back_pics/weedle_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/weedle/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_weedle_shiny_palette:: @ 8D38660
- .incbin "graphics/pokemon/palettes/weedle_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/weedle/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_weedle_icon:: @ 8D38688
- .incbin "graphics/pokemon/icons/weedle_icon.4bpp"
+ .incbin "graphics/pokemon/weedle/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_weedle_footprint:: @ 8D38A88
- .incbin "graphics/pokemon/footprints/weedle_footprint.1bpp"
+ .incbin "graphics/pokemon/weedle/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_kakuna_still_front_pic:: @ 8D38AA8
- .incbin "graphics/pokemon/front_pics/kakuna_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kakuna/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kakuna_palette:: @ 8D38CE8
- .incbin "graphics/pokemon/palettes/kakuna_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kakuna/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_kakuna_back_pic:: @ 8D38D0C
- .incbin "graphics/pokemon/back_pics/kakuna_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kakuna/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kakuna_shiny_palette:: @ 8D38F90
- .incbin "graphics/pokemon/palettes/kakuna_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kakuna/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_kakuna_icon:: @ 8D38FB4
- .incbin "graphics/pokemon/icons/kakuna_icon.4bpp"
+ .incbin "graphics/pokemon/kakuna/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_kakuna_footprint:: @ 8D393B4
- .incbin "graphics/pokemon/footprints/kakuna_footprint.1bpp"
+ .incbin "graphics/pokemon/kakuna/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_beedrill_still_front_pic:: @ 8D393D4
- .incbin "graphics/pokemon/front_pics/beedrill_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/beedrill/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_beedrill_palette:: @ 8D397F4
- .incbin "graphics/pokemon/palettes/beedrill_palette.gbapal.lz"
+ .incbin "graphics/pokemon/beedrill/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_beedrill_back_pic:: @ 8D3981C
- .incbin "graphics/pokemon/back_pics/beedrill_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/beedrill/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_beedrill_shiny_palette:: @ 8D39B90
- .incbin "graphics/pokemon/palettes/beedrill_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/beedrill/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_beedrill_icon:: @ 8D39BB8
- .incbin "graphics/pokemon/icons/beedrill_icon.4bpp"
+ .incbin "graphics/pokemon/beedrill/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_beedrill_footprint:: @ 8D39FB8
- .incbin "graphics/pokemon/footprints/beedrill_footprint.1bpp"
+ .incbin "graphics/pokemon/beedrill/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_pidgey_still_front_pic:: @ 8D39FD8
- .incbin "graphics/pokemon/front_pics/pidgey_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pidgey/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pidgey_palette:: @ 8D3A250
- .incbin "graphics/pokemon/palettes/pidgey_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pidgey/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_pidgey_back_pic:: @ 8D3A278
- .incbin "graphics/pokemon/back_pics/pidgey_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pidgey/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pidgey_shiny_palette:: @ 8D3A5CC
- .incbin "graphics/pokemon/palettes/pidgey_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pidgey/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_pidgey_icon:: @ 8D3A5F4
- .incbin "graphics/pokemon/icons/pidgey_icon.4bpp"
+ .incbin "graphics/pokemon/pidgey/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_pidgey_footprint:: @ 8D3A9F4
- .incbin "graphics/pokemon/footprints/pidgey_footprint.1bpp"
+ .incbin "graphics/pokemon/pidgey/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_pidgeotto_still_front_pic:: @ 8D3AA14
- .incbin "graphics/pokemon/front_pics/pidgeotto_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pidgeotto/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pidgeotto_palette:: @ 8D3ADAC
- .incbin "graphics/pokemon/palettes/pidgeotto_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pidgeotto/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_pidgeotto_back_pic:: @ 8D3ADD4
- .incbin "graphics/pokemon/back_pics/pidgeotto_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pidgeotto/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pidgeotto_shiny_palette:: @ 8D3B120
- .incbin "graphics/pokemon/palettes/pidgeotto_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pidgeotto/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_pidgeotto_icon:: @ 8D3B148
- .incbin "graphics/pokemon/icons/pidgeotto_icon.4bpp"
+ .incbin "graphics/pokemon/pidgeotto/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_pidgeotto_footprint:: @ 8D3B548
- .incbin "graphics/pokemon/footprints/pidgeotto_footprint.1bpp"
+ .incbin "graphics/pokemon/pidgeotto/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_pidgeot_still_front_pic:: @ 8D3B568
- .incbin "graphics/pokemon/front_pics/pidgeot_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pidgeot/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pidgeot_palette:: @ 8D3BA54
- .incbin "graphics/pokemon/palettes/pidgeot_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pidgeot/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_pidgeot_back_pic:: @ 8D3BA7C
- .incbin "graphics/pokemon/back_pics/pidgeot_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pidgeot/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pidgeot_shiny_palette:: @ 8D3BE64
- .incbin "graphics/pokemon/palettes/pidgeot_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pidgeot/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_pidgeot_icon:: @ 8D3BE8C
- .incbin "graphics/pokemon/icons/pidgeot_icon.4bpp"
+ .incbin "graphics/pokemon/pidgeot/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_pidgeot_footprint:: @ 8D3C28C
- .incbin "graphics/pokemon/footprints/pidgeot_footprint.1bpp"
+ .incbin "graphics/pokemon/pidgeot/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_rattata_still_front_pic:: @ 8D3C2AC
- .incbin "graphics/pokemon/front_pics/rattata_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/rattata/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_rattata_palette:: @ 8D3C504
- .incbin "graphics/pokemon/palettes/rattata_palette.gbapal.lz"
+ .incbin "graphics/pokemon/rattata/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_rattata_back_pic:: @ 8D3C52C
- .incbin "graphics/pokemon/back_pics/rattata_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/rattata/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_rattata_shiny_palette:: @ 8D3C7E4
- .incbin "graphics/pokemon/palettes/rattata_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/rattata/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_rattata_icon:: @ 8D3C80C
- .incbin "graphics/pokemon/icons/rattata_icon.4bpp"
+ .incbin "graphics/pokemon/rattata/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_rattata_footprint:: @ 8D3CC0C
- .incbin "graphics/pokemon/footprints/rattata_footprint.1bpp"
+ .incbin "graphics/pokemon/rattata/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_raticate_still_front_pic:: @ 8D3CC2C
- .incbin "graphics/pokemon/front_pics/raticate_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/raticate/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_raticate_palette:: @ 8D3CFBC
- .incbin "graphics/pokemon/palettes/raticate_palette.gbapal.lz"
+ .incbin "graphics/pokemon/raticate/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_raticate_back_pic:: @ 8D3CFE4
- .incbin "graphics/pokemon/back_pics/raticate_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/raticate/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_raticate_shiny_palette:: @ 8D3D2F4
- .incbin "graphics/pokemon/palettes/raticate_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/raticate/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_raticate_icon:: @ 8D3D31C
- .incbin "graphics/pokemon/icons/raticate_icon.4bpp"
+ .incbin "graphics/pokemon/raticate/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_raticate_footprint:: @ 8D3D71C
- .incbin "graphics/pokemon/footprints/raticate_footprint.1bpp"
+ .incbin "graphics/pokemon/raticate/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_spearow_still_front_pic:: @ 8D3D73C
- .incbin "graphics/pokemon/front_pics/spearow_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/spearow/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_spearow_palette:: @ 8D3D9FC
- .incbin "graphics/pokemon/palettes/spearow_palette.gbapal.lz"
+ .incbin "graphics/pokemon/spearow/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_spearow_back_pic:: @ 8D3DA24
- .incbin "graphics/pokemon/back_pics/spearow_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/spearow/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_spearow_shiny_palette:: @ 8D3DD00
- .incbin "graphics/pokemon/palettes/spearow_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/spearow/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_spearow_icon:: @ 8D3DD28
- .incbin "graphics/pokemon/icons/spearow_icon.4bpp"
+ .incbin "graphics/pokemon/spearow/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_spearow_footprint:: @ 8D3E128
- .incbin "graphics/pokemon/footprints/spearow_footprint.1bpp"
+ .incbin "graphics/pokemon/spearow/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_fearow_still_front_pic:: @ 8D3E148
- .incbin "graphics/pokemon/front_pics/fearow_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/fearow/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_fearow_palette:: @ 8D3E604
- .incbin "graphics/pokemon/palettes/fearow_palette.gbapal.lz"
+ .incbin "graphics/pokemon/fearow/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_fearow_back_pic:: @ 8D3E62C
- .incbin "graphics/pokemon/back_pics/fearow_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/fearow/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_fearow_shiny_palette:: @ 8D3E924
- .incbin "graphics/pokemon/palettes/fearow_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/fearow/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_fearow_icon:: @ 8D3E94C
- .incbin "graphics/pokemon/icons/fearow_icon.4bpp"
+ .incbin "graphics/pokemon/fearow/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_fearow_footprint:: @ 8D3ED4C
- .incbin "graphics/pokemon/footprints/fearow_footprint.1bpp"
+ .incbin "graphics/pokemon/fearow/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ekans_still_front_pic:: @ 8D3ED6C
- .incbin "graphics/pokemon/front_pics/ekans_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ekans/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ekans_palette:: @ 8D3F034
- .incbin "graphics/pokemon/palettes/ekans_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ekans/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ekans_back_pic:: @ 8D3F05C
- .incbin "graphics/pokemon/back_pics/ekans_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ekans/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ekans_shiny_palette:: @ 8D3F34C
- .incbin "graphics/pokemon/palettes/ekans_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ekans/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ekans_icon:: @ 8D3F374
- .incbin "graphics/pokemon/icons/ekans_icon.4bpp"
+ .incbin "graphics/pokemon/ekans/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ekans_footprint:: @ 8D3F774
- .incbin "graphics/pokemon/footprints/ekans_footprint.1bpp"
+ .incbin "graphics/pokemon/ekans/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_arbok_still_front_pic:: @ 8D3F794
- .incbin "graphics/pokemon/front_pics/arbok_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/arbok/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_arbok_palette:: @ 8D3FC08
- .incbin "graphics/pokemon/palettes/arbok_palette.gbapal.lz"
+ .incbin "graphics/pokemon/arbok/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_arbok_back_pic:: @ 8D3FC30
- .incbin "graphics/pokemon/back_pics/arbok_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/arbok/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_arbok_shiny_palette:: @ 8D3FEB8
- .incbin "graphics/pokemon/palettes/arbok_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/arbok/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_arbok_icon:: @ 8D3FEE0
- .incbin "graphics/pokemon/icons/arbok_icon.4bpp"
+ .incbin "graphics/pokemon/arbok/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_arbok_footprint:: @ 8D402E0
- .incbin "graphics/pokemon/footprints/arbok_footprint.1bpp"
+ .incbin "graphics/pokemon/arbok/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_pikachu_still_front_pic:: @ 8D40300
- .incbin "graphics/pokemon/front_pics/pikachu_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pikachu/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pikachu_palette:: @ 8D405D0
- .incbin "graphics/pokemon/palettes/pikachu_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pikachu/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_pikachu_back_pic:: @ 8D405F8
- .incbin "graphics/pokemon/back_pics/pikachu_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pikachu/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pikachu_shiny_palette:: @ 8D408D0
- .incbin "graphics/pokemon/palettes/pikachu_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pikachu/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_pikachu_icon:: @ 8D408F8
- .incbin "graphics/pokemon/icons/pikachu_icon.4bpp"
+ .incbin "graphics/pokemon/pikachu/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_pikachu_footprint:: @ 8D40CF8
- .incbin "graphics/pokemon/footprints/pikachu_footprint.1bpp"
+ .incbin "graphics/pokemon/pikachu/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_raichu_still_front_pic:: @ 8D40D18
- .incbin "graphics/pokemon/front_pics/raichu_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/raichu/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_raichu_palette:: @ 8D41110
- .incbin "graphics/pokemon/palettes/raichu_palette.gbapal.lz"
+ .incbin "graphics/pokemon/raichu/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_raichu_back_pic:: @ 8D41138
- .incbin "graphics/pokemon/back_pics/raichu_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/raichu/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_raichu_shiny_palette:: @ 8D41458
- .incbin "graphics/pokemon/palettes/raichu_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/raichu/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_raichu_icon:: @ 8D41480
- .incbin "graphics/pokemon/icons/raichu_icon.4bpp"
+ .incbin "graphics/pokemon/raichu/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_raichu_footprint:: @ 8D41880
- .incbin "graphics/pokemon/footprints/raichu_footprint.1bpp"
+ .incbin "graphics/pokemon/raichu/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_sandshrew_still_front_pic:: @ 8D418A0
- .incbin "graphics/pokemon/front_pics/sandshrew_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sandshrew/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sandshrew_palette:: @ 8D41B7C
- .incbin "graphics/pokemon/palettes/sandshrew_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sandshrew/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_sandshrew_back_pic:: @ 8D41BA4
- .incbin "graphics/pokemon/back_pics/sandshrew_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sandshrew/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sandshrew_shiny_palette:: @ 8D41ECC
- .incbin "graphics/pokemon/palettes/sandshrew_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sandshrew/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_sandshrew_icon:: @ 8D41EF4
- .incbin "graphics/pokemon/icons/sandshrew_icon.4bpp"
+ .incbin "graphics/pokemon/sandshrew/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_sandshrew_footprint:: @ 8D422F4
- .incbin "graphics/pokemon/footprints/sandshrew_footprint.1bpp"
+ .incbin "graphics/pokemon/sandshrew/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_sandslash_still_front_pic:: @ 8D42314
- .incbin "graphics/pokemon/front_pics/sandslash_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sandslash/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sandslash_palette:: @ 8D4272C
- .incbin "graphics/pokemon/palettes/sandslash_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sandslash/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_sandslash_back_pic:: @ 8D42754
- .incbin "graphics/pokemon/back_pics/sandslash_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sandslash/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sandslash_shiny_palette:: @ 8D42B70
- .incbin "graphics/pokemon/palettes/sandslash_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sandslash/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_sandslash_icon:: @ 8D42B98
- .incbin "graphics/pokemon/icons/sandslash_icon.4bpp"
+ .incbin "graphics/pokemon/sandslash/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_sandslash_footprint:: @ 8D42F98
- .incbin "graphics/pokemon/footprints/sandslash_footprint.1bpp"
+ .incbin "graphics/pokemon/sandslash/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_nidoran_f_still_front_pic:: @ 8D42FB8
- .incbin "graphics/pokemon/front_pics/nidoran_f_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nidoran_f/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nidoran_f_palette:: @ 8D4321C
- .incbin "graphics/pokemon/palettes/nidoran_f_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nidoran_f/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_nidoran_f_back_pic:: @ 8D43244
- .incbin "graphics/pokemon/back_pics/nidoran_f_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nidoran_f/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nidoran_f_shiny_palette:: @ 8D43524
- .incbin "graphics/pokemon/palettes/nidoran_f_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nidoran_f/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_nidoran_f_icon:: @ 8D4354C
- .incbin "graphics/pokemon/icons/nidoran_f_icon.4bpp"
+ .incbin "graphics/pokemon/nidoran_f/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_nidoran_f_footprint:: @ 8D4394C
- .incbin "graphics/pokemon/footprints/nidoran_f_footprint.1bpp"
+ .incbin "graphics/pokemon/nidoran_f/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_nidorina_still_front_pic:: @ 8D4396C
- .incbin "graphics/pokemon/front_pics/nidorina_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nidorina/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nidorina_palette:: @ 8D43C8C
- .incbin "graphics/pokemon/palettes/nidorina_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nidorina/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_nidorina_back_pic:: @ 8D43CB4
- .incbin "graphics/pokemon/back_pics/nidorina_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nidorina/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nidorina_shiny_palette:: @ 8D44048
- .incbin "graphics/pokemon/palettes/nidorina_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nidorina/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_nidorina_icon:: @ 8D44070
- .incbin "graphics/pokemon/icons/nidorina_icon.4bpp"
+ .incbin "graphics/pokemon/nidorina/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_nidorina_footprint:: @ 8D44470
- .incbin "graphics/pokemon/footprints/nidorina_footprint.1bpp"
+ .incbin "graphics/pokemon/nidorina/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_nidoqueen_still_front_pic:: @ 8D44490
- .incbin "graphics/pokemon/front_pics/nidoqueen_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nidoqueen/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nidoqueen_palette:: @ 8D448BC
- .incbin "graphics/pokemon/palettes/nidoqueen_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nidoqueen/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_nidoqueen_back_pic:: @ 8D448E4
- .incbin "graphics/pokemon/back_pics/nidoqueen_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nidoqueen/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nidoqueen_shiny_palette:: @ 8D44CA8
- .incbin "graphics/pokemon/palettes/nidoqueen_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nidoqueen/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_nidoqueen_icon:: @ 8D44CD0
- .incbin "graphics/pokemon/icons/nidoqueen_icon.4bpp"
+ .incbin "graphics/pokemon/nidoqueen/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_nidoqueen_footprint:: @ 8D450D0
- .incbin "graphics/pokemon/footprints/nidoqueen_footprint.1bpp"
+ .incbin "graphics/pokemon/nidoqueen/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_nidoran_m_still_front_pic:: @ 8D450F0
- .incbin "graphics/pokemon/front_pics/nidoran_m_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nidoran_m/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nidoran_m_palette:: @ 8D4537C
- .incbin "graphics/pokemon/palettes/nidoran_m_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nidoran_m/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_nidoran_m_back_pic:: @ 8D453A4
- .incbin "graphics/pokemon/back_pics/nidoran_m_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nidoran_m/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nidoran_m_shiny_palette:: @ 8D456D8
- .incbin "graphics/pokemon/palettes/nidoran_m_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nidoran_m/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_nidoran_m_icon:: @ 8D45700
- .incbin "graphics/pokemon/icons/nidoran_m_icon.4bpp"
+ .incbin "graphics/pokemon/nidoran_m/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_nidoran_m_footprint:: @ 8D45B00
- .incbin "graphics/pokemon/footprints/nidoran_m_footprint.1bpp"
+ .incbin "graphics/pokemon/nidoran_m/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_nidorino_still_front_pic:: @ 8D45B20
- .incbin "graphics/pokemon/front_pics/nidorino_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nidorino/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nidorino_palette:: @ 8D45EA4
- .incbin "graphics/pokemon/palettes/nidorino_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nidorino/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_nidorino_back_pic:: @ 8D45ECC
- .incbin "graphics/pokemon/back_pics/nidorino_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nidorino/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nidorino_shiny_palette:: @ 8D46288
- .incbin "graphics/pokemon/palettes/nidorino_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nidorino/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_nidorino_icon:: @ 8D462B0
- .incbin "graphics/pokemon/icons/nidorino_icon.4bpp"
+ .incbin "graphics/pokemon/nidorino/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_nidorino_footprint:: @ 8D466B0
- .incbin "graphics/pokemon/footprints/nidorino_footprint.1bpp"
+ .incbin "graphics/pokemon/nidorino/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_nidoking_still_front_pic:: @ 8D466D0
- .incbin "graphics/pokemon/front_pics/nidoking_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nidoking/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nidoking_palette:: @ 8D46C0C
- .incbin "graphics/pokemon/palettes/nidoking_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nidoking/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_nidoking_back_pic:: @ 8D46C34
- .incbin "graphics/pokemon/back_pics/nidoking_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nidoking/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nidoking_shiny_palette:: @ 8D47070
- .incbin "graphics/pokemon/palettes/nidoking_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nidoking/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_nidoking_icon:: @ 8D47098
- .incbin "graphics/pokemon/icons/nidoking_icon.4bpp"
+ .incbin "graphics/pokemon/nidoking/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_nidoking_footprint:: @ 8D47498
- .incbin "graphics/pokemon/footprints/nidoking_footprint.1bpp"
+ .incbin "graphics/pokemon/nidoking/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_clefairy_still_front_pic:: @ 8D474B8
- .incbin "graphics/pokemon/front_pics/clefairy_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/clefairy/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_clefairy_palette:: @ 8D47754
- .incbin "graphics/pokemon/palettes/clefairy_palette.gbapal.lz"
+ .incbin "graphics/pokemon/clefairy/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_clefairy_back_pic:: @ 8D4777C
- .incbin "graphics/pokemon/back_pics/clefairy_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/clefairy/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_clefairy_shiny_palette:: @ 8D47A4C
- .incbin "graphics/pokemon/palettes/clefairy_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/clefairy/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_clefairy_icon:: @ 8D47A74
- .incbin "graphics/pokemon/icons/clefairy_icon.4bpp"
+ .incbin "graphics/pokemon/clefairy/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_clefairy_footprint:: @ 8D47E74
- .incbin "graphics/pokemon/footprints/clefairy_footprint.1bpp"
+ .incbin "graphics/pokemon/clefairy/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_clefable_still_front_pic:: @ 8D47E94
- .incbin "graphics/pokemon/front_pics/clefable_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/clefable/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_clefable_palette:: @ 8D481D4
- .incbin "graphics/pokemon/palettes/clefable_palette.gbapal.lz"
+ .incbin "graphics/pokemon/clefable/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_clefable_back_pic:: @ 8D481FC
- .incbin "graphics/pokemon/back_pics/clefable_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/clefable/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_clefable_shiny_palette:: @ 8D48534
- .incbin "graphics/pokemon/palettes/clefable_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/clefable/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_clefable_icon:: @ 8D4855C
- .incbin "graphics/pokemon/icons/clefable_icon.4bpp"
+ .incbin "graphics/pokemon/clefable/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_clefable_footprint:: @ 8D4895C
- .incbin "graphics/pokemon/footprints/clefable_footprint.1bpp"
+ .incbin "graphics/pokemon/clefable/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_vulpix_still_front_pic:: @ 8D4897C
- .incbin "graphics/pokemon/front_pics/vulpix_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/vulpix/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_vulpix_palette:: @ 8D48CA8
- .incbin "graphics/pokemon/palettes/vulpix_palette.gbapal.lz"
+ .incbin "graphics/pokemon/vulpix/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_vulpix_back_pic:: @ 8D48CD0
- .incbin "graphics/pokemon/back_pics/vulpix_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/vulpix/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_vulpix_shiny_palette:: @ 8D48FD4
- .incbin "graphics/pokemon/palettes/vulpix_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/vulpix/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_vulpix_icon:: @ 8D48FFC
- .incbin "graphics/pokemon/icons/vulpix_icon.4bpp"
+ .incbin "graphics/pokemon/vulpix/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_vulpix_footprint:: @ 8D493FC
- .incbin "graphics/pokemon/footprints/vulpix_footprint.1bpp"
+ .incbin "graphics/pokemon/vulpix/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ninetales_still_front_pic:: @ 8D4941C
- .incbin "graphics/pokemon/front_pics/ninetales_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ninetales/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ninetales_palette:: @ 8D49870
- .incbin "graphics/pokemon/palettes/ninetales_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ninetales/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ninetales_back_pic:: @ 8D49894
- .incbin "graphics/pokemon/back_pics/ninetales_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ninetales/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ninetales_shiny_palette:: @ 8D49C84
- .incbin "graphics/pokemon/palettes/ninetales_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ninetales/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ninetales_icon:: @ 8D49CA8
- .incbin "graphics/pokemon/icons/ninetales_icon.4bpp"
+ .incbin "graphics/pokemon/ninetales/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ninetales_footprint:: @ 8D4A0A8
- .incbin "graphics/pokemon/footprints/ninetales_footprint.1bpp"
+ .incbin "graphics/pokemon/ninetales/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_jigglypuff_still_front_pic:: @ 8D4A0C8
- .incbin "graphics/pokemon/front_pics/jigglypuff_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/jigglypuff/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_jigglypuff_palette:: @ 8D4A34C
- .incbin "graphics/pokemon/palettes/jigglypuff_palette.gbapal.lz"
+ .incbin "graphics/pokemon/jigglypuff/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_jigglypuff_back_pic:: @ 8D4A374
- .incbin "graphics/pokemon/back_pics/jigglypuff_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/jigglypuff/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_jigglypuff_shiny_palette:: @ 8D4A5D0
- .incbin "graphics/pokemon/palettes/jigglypuff_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/jigglypuff/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_jigglypuff_icon:: @ 8D4A5F8
- .incbin "graphics/pokemon/icons/jigglypuff_icon.4bpp"
+ .incbin "graphics/pokemon/jigglypuff/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_jigglypuff_footprint:: @ 8D4A9F8
- .incbin "graphics/pokemon/footprints/jigglypuff_footprint.1bpp"
+ .incbin "graphics/pokemon/jigglypuff/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_wigglytuff_still_front_pic:: @ 8D4AA18
- .incbin "graphics/pokemon/front_pics/wigglytuff_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wigglytuff/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wigglytuff_palette:: @ 8D4AD8C
- .incbin "graphics/pokemon/palettes/wigglytuff_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wigglytuff/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_wigglytuff_back_pic:: @ 8D4ADB4
- .incbin "graphics/pokemon/back_pics/wigglytuff_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wigglytuff/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wigglytuff_shiny_palette:: @ 8D4B04C
- .incbin "graphics/pokemon/palettes/wigglytuff_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wigglytuff/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_wigglytuff_icon:: @ 8D4B074
- .incbin "graphics/pokemon/icons/wigglytuff_icon.4bpp"
+ .incbin "graphics/pokemon/wigglytuff/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_wigglytuff_footprint:: @ 8D4B474
- .incbin "graphics/pokemon/footprints/wigglytuff_footprint.1bpp"
+ .incbin "graphics/pokemon/wigglytuff/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_zubat_still_front_pic:: @ 8D4B494
- .incbin "graphics/pokemon/front_pics/zubat_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/zubat/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_zubat_palette:: @ 8D4B750
- .incbin "graphics/pokemon/palettes/zubat_palette.gbapal.lz"
+ .incbin "graphics/pokemon/zubat/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_zubat_back_pic:: @ 8D4B778
- .incbin "graphics/pokemon/back_pics/zubat_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/zubat/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_zubat_shiny_palette:: @ 8D4BA34
- .incbin "graphics/pokemon/palettes/zubat_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/zubat/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_zubat_icon:: @ 8D4BA5C
- .incbin "graphics/pokemon/icons/zubat_icon.4bpp"
+ .incbin "graphics/pokemon/zubat/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_zubat_footprint:: @ 8D4BE5C
- .incbin "graphics/pokemon/footprints/zubat_footprint.1bpp"
+ .incbin "graphics/pokemon/zubat/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_golbat_still_front_pic:: @ 8D4BE7C
- .incbin "graphics/pokemon/front_pics/golbat_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/golbat/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_golbat_palette:: @ 8D4C21C
- .incbin "graphics/pokemon/palettes/golbat_palette.gbapal.lz"
+ .incbin "graphics/pokemon/golbat/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_golbat_back_pic:: @ 8D4C244
- .incbin "graphics/pokemon/back_pics/golbat_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/golbat/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_golbat_shiny_palette:: @ 8D4C500
- .incbin "graphics/pokemon/palettes/golbat_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/golbat/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_golbat_icon:: @ 8D4C528
- .incbin "graphics/pokemon/icons/golbat_icon.4bpp"
+ .incbin "graphics/pokemon/golbat/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_golbat_footprint:: @ 8D4C928
- .incbin "graphics/pokemon/footprints/golbat_footprint.1bpp"
+ .incbin "graphics/pokemon/golbat/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_oddish_still_front_pic:: @ 8D4C948
- .incbin "graphics/pokemon/front_pics/oddish_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/oddish/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_oddish_palette:: @ 8D4CB88
- .incbin "graphics/pokemon/palettes/oddish_palette.gbapal.lz"
+ .incbin "graphics/pokemon/oddish/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_oddish_back_pic:: @ 8D4CBB0
- .incbin "graphics/pokemon/back_pics/oddish_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/oddish/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_oddish_shiny_palette:: @ 8D4CE74
- .incbin "graphics/pokemon/palettes/oddish_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/oddish/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_oddish_icon:: @ 8D4CE9C
- .incbin "graphics/pokemon/icons/oddish_icon.4bpp"
+ .incbin "graphics/pokemon/oddish/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_oddish_footprint:: @ 8D4D29C
- .incbin "graphics/pokemon/footprints/oddish_footprint.1bpp"
+ .incbin "graphics/pokemon/oddish/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_gloom_still_front_pic:: @ 8D4D2BC
- .incbin "graphics/pokemon/front_pics/gloom_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gloom/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gloom_palette:: @ 8D4D624
- .incbin "graphics/pokemon/palettes/gloom_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gloom/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_gloom_back_pic:: @ 8D4D64C
- .incbin "graphics/pokemon/back_pics/gloom_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gloom/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gloom_shiny_palette:: @ 8D4D9CC
- .incbin "graphics/pokemon/palettes/gloom_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gloom/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_gloom_icon:: @ 8D4D9F4
- .incbin "graphics/pokemon/icons/gloom_icon.4bpp"
+ .incbin "graphics/pokemon/gloom/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_gloom_footprint:: @ 8D4DDF4
- .incbin "graphics/pokemon/footprints/gloom_footprint.1bpp"
+ .incbin "graphics/pokemon/gloom/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_vileplume_still_front_pic:: @ 8D4DE14
- .incbin "graphics/pokemon/front_pics/vileplume_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/vileplume/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_vileplume_palette:: @ 8D4E168
- .incbin "graphics/pokemon/palettes/vileplume_palette.gbapal.lz"
+ .incbin "graphics/pokemon/vileplume/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_vileplume_back_pic:: @ 8D4E190
- .incbin "graphics/pokemon/back_pics/vileplume_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/vileplume/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_vileplume_shiny_palette:: @ 8D4E5DC
- .incbin "graphics/pokemon/palettes/vileplume_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/vileplume/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_vileplume_icon:: @ 8D4E604
- .incbin "graphics/pokemon/icons/vileplume_icon.4bpp"
+ .incbin "graphics/pokemon/vileplume/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_vileplume_footprint:: @ 8D4EA04
- .incbin "graphics/pokemon/footprints/vileplume_footprint.1bpp"
+ .incbin "graphics/pokemon/vileplume/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_paras_still_front_pic:: @ 8D4EA24
- .incbin "graphics/pokemon/front_pics/paras_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/paras/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_paras_palette:: @ 8D4EC90
- .incbin "graphics/pokemon/palettes/paras_palette.gbapal.lz"
+ .incbin "graphics/pokemon/paras/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_paras_back_pic:: @ 8D4ECB8
- .incbin "graphics/pokemon/back_pics/paras_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/paras/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_paras_shiny_palette:: @ 8D4EF58
- .incbin "graphics/pokemon/palettes/paras_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/paras/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_paras_icon:: @ 8D4EF80
- .incbin "graphics/pokemon/icons/paras_icon.4bpp"
+ .incbin "graphics/pokemon/paras/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_paras_footprint:: @ 8D4F380
- .incbin "graphics/pokemon/footprints/paras_footprint.1bpp"
+ .incbin "graphics/pokemon/paras/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_parasect_still_front_pic:: @ 8D4F3A0
- .incbin "graphics/pokemon/front_pics/parasect_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/parasect/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_parasect_palette:: @ 8D4F730
- .incbin "graphics/pokemon/palettes/parasect_palette.gbapal.lz"
+ .incbin "graphics/pokemon/parasect/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_parasect_back_pic:: @ 8D4F758
- .incbin "graphics/pokemon/back_pics/parasect_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/parasect/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_parasect_shiny_palette:: @ 8D4FA54
- .incbin "graphics/pokemon/palettes/parasect_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/parasect/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_parasect_icon:: @ 8D4FA7C
- .incbin "graphics/pokemon/icons/parasect_icon.4bpp"
+ .incbin "graphics/pokemon/parasect/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_parasect_footprint:: @ 8D4FE7C
- .incbin "graphics/pokemon/footprints/parasect_footprint.1bpp"
+ .incbin "graphics/pokemon/parasect/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_venonat_still_front_pic:: @ 8D4FE9C
- .incbin "graphics/pokemon/front_pics/venonat_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/venonat/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_venonat_palette:: @ 8D501BC
- .incbin "graphics/pokemon/palettes/venonat_palette.gbapal.lz"
+ .incbin "graphics/pokemon/venonat/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_venonat_back_pic:: @ 8D501E4
- .incbin "graphics/pokemon/back_pics/venonat_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/venonat/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_venonat_shiny_palette:: @ 8D50514
- .incbin "graphics/pokemon/palettes/venonat_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/venonat/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_venonat_icon:: @ 8D5053C
- .incbin "graphics/pokemon/icons/venonat_icon.4bpp"
+ .incbin "graphics/pokemon/venonat/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_venonat_footprint:: @ 8D5093C
- .incbin "graphics/pokemon/footprints/venonat_footprint.1bpp"
+ .incbin "graphics/pokemon/venonat/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_venomoth_still_front_pic:: @ 8D5095C
- .incbin "graphics/pokemon/front_pics/venomoth_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/venomoth/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_venomoth_palette:: @ 8D50D60
- .incbin "graphics/pokemon/palettes/venomoth_palette.gbapal.lz"
+ .incbin "graphics/pokemon/venomoth/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_venomoth_back_pic:: @ 8D50D88
- .incbin "graphics/pokemon/back_pics/venomoth_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/venomoth/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_venomoth_shiny_palette:: @ 8D5112C
- .incbin "graphics/pokemon/palettes/venomoth_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/venomoth/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_venomoth_icon:: @ 8D51154
- .incbin "graphics/pokemon/icons/venomoth_icon.4bpp"
+ .incbin "graphics/pokemon/venomoth/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_venomoth_footprint:: @ 8D51554
- .incbin "graphics/pokemon/footprints/venomoth_footprint.1bpp"
+ .incbin "graphics/pokemon/venomoth/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_diglett_still_front_pic:: @ 8D51574
- .incbin "graphics/pokemon/front_pics/diglett_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/diglett/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_diglett_palette:: @ 8D51784
- .incbin "graphics/pokemon/palettes/diglett_palette.gbapal.lz"
+ .incbin "graphics/pokemon/diglett/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_diglett_back_pic:: @ 8D517AC
- .incbin "graphics/pokemon/back_pics/diglett_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/diglett/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_diglett_shiny_palette:: @ 8D519B8
- .incbin "graphics/pokemon/palettes/diglett_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/diglett/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_diglett_icon:: @ 8D519E0
- .incbin "graphics/pokemon/icons/diglett_icon.4bpp"
+ .incbin "graphics/pokemon/diglett/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_diglett_footprint:: @ 8D51DE0
- .incbin "graphics/pokemon/footprints/diglett_footprint.1bpp"
+ .incbin "graphics/pokemon/diglett/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_dugtrio_still_front_pic:: @ 8D51E00
- .incbin "graphics/pokemon/front_pics/dugtrio_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dugtrio/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dugtrio_palette:: @ 8D5212C
- .incbin "graphics/pokemon/palettes/dugtrio_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dugtrio/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_dugtrio_back_pic:: @ 8D52154
- .incbin "graphics/pokemon/back_pics/dugtrio_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dugtrio/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dugtrio_shiny_palette:: @ 8D52400
- .incbin "graphics/pokemon/palettes/dugtrio_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dugtrio/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_dugtrio_icon:: @ 8D52428
- .incbin "graphics/pokemon/icons/dugtrio_icon.4bpp"
+ .incbin "graphics/pokemon/dugtrio/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_dugtrio_footprint:: @ 8D52828
- .incbin "graphics/pokemon/footprints/dugtrio_footprint.1bpp"
+ .incbin "graphics/pokemon/dugtrio/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_meowth_still_front_pic:: @ 8D52848
- .incbin "graphics/pokemon/front_pics/meowth_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/meowth/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_meowth_palette:: @ 8D52B34
- .incbin "graphics/pokemon/palettes/meowth_palette.gbapal.lz"
+ .incbin "graphics/pokemon/meowth/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_meowth_back_pic:: @ 8D52B5C
- .incbin "graphics/pokemon/back_pics/meowth_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/meowth/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_meowth_shiny_palette:: @ 8D52E40
- .incbin "graphics/pokemon/palettes/meowth_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/meowth/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_meowth_icon:: @ 8D52E68
- .incbin "graphics/pokemon/icons/meowth_icon.4bpp"
+ .incbin "graphics/pokemon/meowth/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_meowth_footprint:: @ 8D53268
- .incbin "graphics/pokemon/footprints/meowth_footprint.1bpp"
+ .incbin "graphics/pokemon/meowth/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_persian_still_front_pic:: @ 8D53288
- .incbin "graphics/pokemon/front_pics/persian_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/persian/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_persian_palette:: @ 8D53600
- .incbin "graphics/pokemon/palettes/persian_palette.gbapal.lz"
+ .incbin "graphics/pokemon/persian/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_persian_back_pic:: @ 8D53628
- .incbin "graphics/pokemon/back_pics/persian_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/persian/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_persian_shiny_palette:: @ 8D53968
- .incbin "graphics/pokemon/palettes/persian_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/persian/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_persian_icon:: @ 8D53990
- .incbin "graphics/pokemon/icons/persian_icon.4bpp"
+ .incbin "graphics/pokemon/persian/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_persian_footprint:: @ 8D53D90
- .incbin "graphics/pokemon/footprints/persian_footprint.1bpp"
+ .incbin "graphics/pokemon/persian/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_psyduck_still_front_pic:: @ 8D53DB0
- .incbin "graphics/pokemon/front_pics/psyduck_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/psyduck/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_psyduck_palette:: @ 8D54094
- .incbin "graphics/pokemon/palettes/psyduck_palette.gbapal.lz"
+ .incbin "graphics/pokemon/psyduck/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_psyduck_back_pic:: @ 8D540BC
- .incbin "graphics/pokemon/back_pics/psyduck_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/psyduck/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_psyduck_shiny_palette:: @ 8D54358
- .incbin "graphics/pokemon/palettes/psyduck_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/psyduck/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_psyduck_icon:: @ 8D54380
- .incbin "graphics/pokemon/icons/psyduck_icon.4bpp"
+ .incbin "graphics/pokemon/psyduck/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_psyduck_footprint:: @ 8D54780
- .incbin "graphics/pokemon/footprints/psyduck_footprint.1bpp"
+ .incbin "graphics/pokemon/psyduck/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_golduck_still_front_pic:: @ 8D547A0
- .incbin "graphics/pokemon/front_pics/golduck_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/golduck/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_golduck_palette:: @ 8D54B58
- .incbin "graphics/pokemon/palettes/golduck_palette.gbapal.lz"
+ .incbin "graphics/pokemon/golduck/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_golduck_back_pic:: @ 8D54B80
- .incbin "graphics/pokemon/back_pics/golduck_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/golduck/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_golduck_shiny_palette:: @ 8D54EAC
- .incbin "graphics/pokemon/palettes/golduck_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/golduck/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_golduck_icon:: @ 8D54ED4
- .incbin "graphics/pokemon/icons/golduck_icon.4bpp"
+ .incbin "graphics/pokemon/golduck/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_golduck_footprint:: @ 8D552D4
- .incbin "graphics/pokemon/footprints/golduck_footprint.1bpp"
+ .incbin "graphics/pokemon/golduck/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_mankey_still_front_pic:: @ 8D552F4
- .incbin "graphics/pokemon/front_pics/mankey_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mankey/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mankey_palette:: @ 8D555EC
- .incbin "graphics/pokemon/palettes/mankey_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mankey/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_mankey_back_pic:: @ 8D55614
- .incbin "graphics/pokemon/back_pics/mankey_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mankey/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mankey_shiny_palette:: @ 8D5597C
- .incbin "graphics/pokemon/palettes/mankey_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mankey/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_mankey_icon:: @ 8D559A4
- .incbin "graphics/pokemon/icons/mankey_icon.4bpp"
+ .incbin "graphics/pokemon/mankey/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_mankey_footprint:: @ 8D55DA4
- .incbin "graphics/pokemon/footprints/mankey_footprint.1bpp"
+ .incbin "graphics/pokemon/mankey/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_primeape_still_front_pic:: @ 8D55DC4
- .incbin "graphics/pokemon/front_pics/primeape_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/primeape/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_primeape_palette:: @ 8D56150
- .incbin "graphics/pokemon/palettes/primeape_palette.gbapal.lz"
+ .incbin "graphics/pokemon/primeape/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_primeape_back_pic:: @ 8D56178
- .incbin "graphics/pokemon/back_pics/primeape_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/primeape/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_primeape_shiny_palette:: @ 8D564E8
- .incbin "graphics/pokemon/palettes/primeape_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/primeape/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_primeape_icon:: @ 8D56510
- .incbin "graphics/pokemon/icons/primeape_icon.4bpp"
+ .incbin "graphics/pokemon/primeape/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_primeape_footprint:: @ 8D56910
- .incbin "graphics/pokemon/footprints/primeape_footprint.1bpp"
+ .incbin "graphics/pokemon/primeape/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_growlithe_still_front_pic:: @ 8D56930
- .incbin "graphics/pokemon/front_pics/growlithe_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/growlithe/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_growlithe_palette:: @ 8D56C58
- .incbin "graphics/pokemon/palettes/growlithe_palette.gbapal.lz"
+ .incbin "graphics/pokemon/growlithe/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_growlithe_back_pic:: @ 8D56C80
- .incbin "graphics/pokemon/back_pics/growlithe_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/growlithe/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_growlithe_shiny_palette:: @ 8D56FBC
- .incbin "graphics/pokemon/palettes/growlithe_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/growlithe/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_growlithe_icon:: @ 8D56FE4
- .incbin "graphics/pokemon/icons/growlithe_icon.4bpp"
+ .incbin "graphics/pokemon/growlithe/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_growlithe_footprint:: @ 8D573E4
- .incbin "graphics/pokemon/footprints/growlithe_footprint.1bpp"
+ .incbin "graphics/pokemon/growlithe/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_arcanine_still_front_pic:: @ 8D57404
- .incbin "graphics/pokemon/front_pics/arcanine_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/arcanine/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_arcanine_palette:: @ 8D57900
- .incbin "graphics/pokemon/palettes/arcanine_palette.gbapal.lz"
+ .incbin "graphics/pokemon/arcanine/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_arcanine_back_pic:: @ 8D57928
- .incbin "graphics/pokemon/back_pics/arcanine_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/arcanine/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_arcanine_shiny_palette:: @ 8D57D08
- .incbin "graphics/pokemon/palettes/arcanine_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/arcanine/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_arcanine_icon:: @ 8D57D30
- .incbin "graphics/pokemon/icons/arcanine_icon.4bpp"
+ .incbin "graphics/pokemon/arcanine/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_arcanine_footprint:: @ 8D58130
- .incbin "graphics/pokemon/footprints/arcanine_footprint.1bpp"
+ .incbin "graphics/pokemon/arcanine/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_poliwag_still_front_pic:: @ 8D58150
- .incbin "graphics/pokemon/front_pics/poliwag_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/poliwag/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_poliwag_palette:: @ 8D583EC
- .incbin "graphics/pokemon/palettes/poliwag_palette.gbapal.lz"
+ .incbin "graphics/pokemon/poliwag/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_poliwag_back_pic:: @ 8D58414
- .incbin "graphics/pokemon/back_pics/poliwag_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/poliwag/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_poliwag_shiny_palette:: @ 8D58678
- .incbin "graphics/pokemon/palettes/poliwag_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/poliwag/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_poliwag_icon:: @ 8D586A0
- .incbin "graphics/pokemon/icons/poliwag_icon.4bpp"
+ .incbin "graphics/pokemon/poliwag/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_poliwag_footprint:: @ 8D58AA0
- .incbin "graphics/pokemon/footprints/poliwag_footprint.1bpp"
+ .incbin "graphics/pokemon/poliwag/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_poliwhirl_still_front_pic:: @ 8D58AC0
- .incbin "graphics/pokemon/front_pics/poliwhirl_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/poliwhirl/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_poliwhirl_palette:: @ 8D58E40
- .incbin "graphics/pokemon/palettes/poliwhirl_palette.gbapal.lz"
+ .incbin "graphics/pokemon/poliwhirl/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_poliwhirl_back_pic:: @ 8D58E68
- .incbin "graphics/pokemon/back_pics/poliwhirl_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/poliwhirl/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_poliwhirl_shiny_palette:: @ 8D590E4
- .incbin "graphics/pokemon/palettes/poliwhirl_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/poliwhirl/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_poliwhirl_icon:: @ 8D5910C
- .incbin "graphics/pokemon/icons/poliwhirl_icon.4bpp"
+ .incbin "graphics/pokemon/poliwhirl/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_poliwhirl_footprint:: @ 8D5950C
- .incbin "graphics/pokemon/footprints/poliwhirl_footprint.1bpp"
+ .incbin "graphics/pokemon/poliwhirl/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_poliwrath_still_front_pic:: @ 8D5952C
- .incbin "graphics/pokemon/front_pics/poliwrath_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/poliwrath/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_poliwrath_palette:: @ 8D598F0
- .incbin "graphics/pokemon/palettes/poliwrath_palette.gbapal.lz"
+ .incbin "graphics/pokemon/poliwrath/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_poliwrath_back_pic:: @ 8D59918
- .incbin "graphics/pokemon/back_pics/poliwrath_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/poliwrath/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_poliwrath_shiny_palette:: @ 8D59C0C
- .incbin "graphics/pokemon/palettes/poliwrath_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/poliwrath/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_poliwrath_icon:: @ 8D59C34
- .incbin "graphics/pokemon/icons/poliwrath_icon.4bpp"
+ .incbin "graphics/pokemon/poliwrath/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_poliwrath_footprint:: @ 8D5A034
- .incbin "graphics/pokemon/footprints/poliwrath_footprint.1bpp"
+ .incbin "graphics/pokemon/poliwrath/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_abra_still_front_pic:: @ 8D5A054
- .incbin "graphics/pokemon/front_pics/abra_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/abra/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_abra_palette:: @ 8D5A328
- .incbin "graphics/pokemon/palettes/abra_palette.gbapal.lz"
+ .incbin "graphics/pokemon/abra/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_abra_back_pic:: @ 8D5A34C
- .incbin "graphics/pokemon/back_pics/abra_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/abra/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_abra_shiny_palette:: @ 8D5A620
- .incbin "graphics/pokemon/palettes/abra_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/abra/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_abra_icon:: @ 8D5A644
- .incbin "graphics/pokemon/icons/abra_icon.4bpp"
+ .incbin "graphics/pokemon/abra/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_abra_footprint:: @ 8D5AA44
- .incbin "graphics/pokemon/footprints/abra_footprint.1bpp"
+ .incbin "graphics/pokemon/abra/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_kadabra_still_front_pic:: @ 8D5AA64
- .incbin "graphics/pokemon/front_pics/kadabra_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kadabra/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kadabra_palette:: @ 8D5AF2C
- .incbin "graphics/pokemon/palettes/kadabra_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kadabra/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_kadabra_back_pic:: @ 8D5AF54
- .incbin "graphics/pokemon/back_pics/kadabra_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kadabra/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kadabra_shiny_palette:: @ 8D5B300
- .incbin "graphics/pokemon/palettes/kadabra_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kadabra/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_kadabra_icon:: @ 8D5B328
- .incbin "graphics/pokemon/icons/kadabra_icon.4bpp"
+ .incbin "graphics/pokemon/kadabra/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_kadabra_footprint:: @ 8D5B728
- .incbin "graphics/pokemon/footprints/kadabra_footprint.1bpp"
+ .incbin "graphics/pokemon/kadabra/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_alakazam_still_front_pic:: @ 8D5B748
- .incbin "graphics/pokemon/front_pics/alakazam_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/alakazam/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_alakazam_palette:: @ 8D5BBE0
- .incbin "graphics/pokemon/palettes/alakazam_palette.gbapal.lz"
+ .incbin "graphics/pokemon/alakazam/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_alakazam_back_pic:: @ 8D5BC08
- .incbin "graphics/pokemon/back_pics/alakazam_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/alakazam/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_alakazam_shiny_palette:: @ 8D5BF88
- .incbin "graphics/pokemon/palettes/alakazam_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/alakazam/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_alakazam_icon:: @ 8D5BFB0
- .incbin "graphics/pokemon/icons/alakazam_icon.4bpp"
+ .incbin "graphics/pokemon/alakazam/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_alakazam_footprint:: @ 8D5C3B0
- .incbin "graphics/pokemon/footprints/alakazam_footprint.1bpp"
+ .incbin "graphics/pokemon/alakazam/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_machop_still_front_pic:: @ 8D5C3D0
- .incbin "graphics/pokemon/front_pics/machop_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/machop/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_machop_palette:: @ 8D5C65C
- .incbin "graphics/pokemon/palettes/machop_palette.gbapal.lz"
+ .incbin "graphics/pokemon/machop/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_machop_back_pic:: @ 8D5C684
- .incbin "graphics/pokemon/back_pics/machop_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/machop/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_machop_shiny_palette:: @ 8D5C964
- .incbin "graphics/pokemon/palettes/machop_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/machop/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_machop_icon:: @ 8D5C98C
- .incbin "graphics/pokemon/icons/machop_icon.4bpp"
+ .incbin "graphics/pokemon/machop/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_machop_footprint:: @ 8D5CD8C
- .incbin "graphics/pokemon/footprints/machop_footprint.1bpp"
+ .incbin "graphics/pokemon/machop/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_machoke_still_front_pic:: @ 8D5CDAC
- .incbin "graphics/pokemon/front_pics/machoke_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/machoke/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_machoke_palette:: @ 8D5D178
- .incbin "graphics/pokemon/palettes/machoke_palette.gbapal.lz"
+ .incbin "graphics/pokemon/machoke/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_machoke_back_pic:: @ 8D5D1A0
- .incbin "graphics/pokemon/back_pics/machoke_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/machoke/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_machoke_shiny_palette:: @ 8D5D4F0
- .incbin "graphics/pokemon/palettes/machoke_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/machoke/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_machoke_icon:: @ 8D5D518
- .incbin "graphics/pokemon/icons/machoke_icon.4bpp"
+ .incbin "graphics/pokemon/machoke/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_machoke_footprint:: @ 8D5D918
- .incbin "graphics/pokemon/footprints/machoke_footprint.1bpp"
+ .incbin "graphics/pokemon/machoke/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_machamp_still_front_pic:: @ 8D5D938
- .incbin "graphics/pokemon/front_pics/machamp_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/machamp/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_machamp_palette:: @ 8D5DE24
- .incbin "graphics/pokemon/palettes/machamp_palette.gbapal.lz"
+ .incbin "graphics/pokemon/machamp/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_machamp_back_pic:: @ 8D5DE4C
- .incbin "graphics/pokemon/back_pics/machamp_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/machamp/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_machamp_shiny_palette:: @ 8D5E2A8
- .incbin "graphics/pokemon/palettes/machamp_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/machamp/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_machamp_icon:: @ 8D5E2D0
- .incbin "graphics/pokemon/icons/machamp_icon.4bpp"
+ .incbin "graphics/pokemon/machamp/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_machamp_footprint:: @ 8D5E6D0
- .incbin "graphics/pokemon/footprints/machamp_footprint.1bpp"
+ .incbin "graphics/pokemon/machamp/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_bellsprout_still_front_pic:: @ 8D5E6F0
- .incbin "graphics/pokemon/front_pics/bellsprout_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/bellsprout/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_bellsprout_palette:: @ 8D5E97C
- .incbin "graphics/pokemon/palettes/bellsprout_palette.gbapal.lz"
+ .incbin "graphics/pokemon/bellsprout/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_bellsprout_back_pic:: @ 8D5E9A4
- .incbin "graphics/pokemon/back_pics/bellsprout_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/bellsprout/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_bellsprout_shiny_palette:: @ 8D5EC40
- .incbin "graphics/pokemon/palettes/bellsprout_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/bellsprout/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_bellsprout_icon:: @ 8D5EC68
- .incbin "graphics/pokemon/icons/bellsprout_icon.4bpp"
+ .incbin "graphics/pokemon/bellsprout/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_bellsprout_footprint:: @ 8D5F068
- .incbin "graphics/pokemon/footprints/bellsprout_footprint.1bpp"
+ .incbin "graphics/pokemon/bellsprout/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_weepinbell_still_front_pic:: @ 8D5F088
- .incbin "graphics/pokemon/front_pics/weepinbell_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/weepinbell/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_weepinbell_palette:: @ 8D5F3AC
- .incbin "graphics/pokemon/palettes/weepinbell_palette.gbapal.lz"
+ .incbin "graphics/pokemon/weepinbell/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_weepinbell_back_pic:: @ 8D5F3D4
- .incbin "graphics/pokemon/back_pics/weepinbell_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/weepinbell/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_weepinbell_shiny_palette:: @ 8D5F6D0
- .incbin "graphics/pokemon/palettes/weepinbell_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/weepinbell/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_weepinbell_icon:: @ 8D5F6F8
- .incbin "graphics/pokemon/icons/weepinbell_icon.4bpp"
+ .incbin "graphics/pokemon/weepinbell/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_weepinbell_footprint:: @ 8D5FAF8
- .incbin "graphics/pokemon/footprints/weepinbell_footprint.1bpp"
+ .incbin "graphics/pokemon/weepinbell/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_victreebel_still_front_pic:: @ 8D5FB18
- .incbin "graphics/pokemon/front_pics/victreebel_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/victreebel/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_victreebel_palette:: @ 8D5FF44
- .incbin "graphics/pokemon/palettes/victreebel_palette.gbapal.lz"
+ .incbin "graphics/pokemon/victreebel/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_victreebel_back_pic:: @ 8D5FF6C
- .incbin "graphics/pokemon/back_pics/victreebel_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/victreebel/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_victreebel_shiny_palette:: @ 8D60304
- .incbin "graphics/pokemon/palettes/victreebel_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/victreebel/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_victreebel_icon:: @ 8D6032C
- .incbin "graphics/pokemon/icons/victreebel_icon.4bpp"
+ .incbin "graphics/pokemon/victreebel/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_victreebel_footprint:: @ 8D6072C
- .incbin "graphics/pokemon/footprints/victreebel_footprint.1bpp"
+ .incbin "graphics/pokemon/victreebel/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_tentacool_still_front_pic:: @ 8D6074C
- .incbin "graphics/pokemon/front_pics/tentacool_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tentacool/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tentacool_palette:: @ 8D609F4
- .incbin "graphics/pokemon/palettes/tentacool_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tentacool/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_tentacool_back_pic:: @ 8D60A1C
- .incbin "graphics/pokemon/back_pics/tentacool_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tentacool/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tentacool_shiny_palette:: @ 8D60CE8
- .incbin "graphics/pokemon/palettes/tentacool_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tentacool/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_tentacool_icon:: @ 8D60D10
- .incbin "graphics/pokemon/icons/tentacool_icon.4bpp"
+ .incbin "graphics/pokemon/tentacool/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_tentacool_footprint:: @ 8D61110
- .incbin "graphics/pokemon/footprints/tentacool_footprint.1bpp"
+ .incbin "graphics/pokemon/tentacool/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_tentacruel_still_front_pic:: @ 8D61130
- .incbin "graphics/pokemon/front_pics/tentacruel_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tentacruel/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tentacruel_palette:: @ 8D61624
- .incbin "graphics/pokemon/palettes/tentacruel_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tentacruel/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_tentacruel_back_pic:: @ 8D6164C
- .incbin "graphics/pokemon/back_pics/tentacruel_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tentacruel/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tentacruel_shiny_palette:: @ 8D619E8
- .incbin "graphics/pokemon/palettes/tentacruel_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tentacruel/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_tentacruel_icon:: @ 8D61A10
- .incbin "graphics/pokemon/icons/tentacruel_icon.4bpp"
+ .incbin "graphics/pokemon/tentacruel/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_tentacruel_footprint:: @ 8D61E10
- .incbin "graphics/pokemon/footprints/tentacruel_footprint.1bpp"
+ .incbin "graphics/pokemon/tentacruel/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_geodude_still_front_pic:: @ 8D61E30
- .incbin "graphics/pokemon/front_pics/geodude_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/geodude/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_geodude_palette:: @ 8D620C4
- .incbin "graphics/pokemon/palettes/geodude_palette.gbapal.lz"
+ .incbin "graphics/pokemon/geodude/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_geodude_back_pic:: @ 8D620E0
- .incbin "graphics/pokemon/back_pics/geodude_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/geodude/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_geodude_shiny_palette:: @ 8D62374
- .incbin "graphics/pokemon/palettes/geodude_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/geodude/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_geodude_icon:: @ 8D62390
- .incbin "graphics/pokemon/icons/geodude_icon.4bpp"
+ .incbin "graphics/pokemon/geodude/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_geodude_footprint:: @ 8D62790
- .incbin "graphics/pokemon/footprints/geodude_footprint.1bpp"
+ .incbin "graphics/pokemon/geodude/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_graveler_still_front_pic:: @ 8D627B0
- .incbin "graphics/pokemon/front_pics/graveler_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/graveler/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_graveler_palette:: @ 8D62BAC
- .incbin "graphics/pokemon/palettes/graveler_palette.gbapal.lz"
+ .incbin "graphics/pokemon/graveler/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_graveler_back_pic:: @ 8D62BD0
- .incbin "graphics/pokemon/back_pics/graveler_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/graveler/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_graveler_shiny_palette:: @ 8D62E4C
- .incbin "graphics/pokemon/palettes/graveler_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/graveler/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_graveler_icon:: @ 8D62E70
- .incbin "graphics/pokemon/icons/graveler_icon.4bpp"
+ .incbin "graphics/pokemon/graveler/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_graveler_footprint:: @ 8D63270
- .incbin "graphics/pokemon/footprints/graveler_footprint.1bpp"
+ .incbin "graphics/pokemon/graveler/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_golem_still_front_pic:: @ 8D63290
- .incbin "graphics/pokemon/front_pics/golem_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/golem/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_golem_palette:: @ 8D636C0
- .incbin "graphics/pokemon/palettes/golem_palette.gbapal.lz"
+ .incbin "graphics/pokemon/golem/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_golem_back_pic:: @ 8D636E8
- .incbin "graphics/pokemon/back_pics/golem_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/golem/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_golem_shiny_palette:: @ 8D639A8
- .incbin "graphics/pokemon/palettes/golem_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/golem/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_golem_icon:: @ 8D639D0
- .incbin "graphics/pokemon/icons/golem_icon.4bpp"
+ .incbin "graphics/pokemon/golem/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_golem_footprint:: @ 8D63DD0
- .incbin "graphics/pokemon/footprints/golem_footprint.1bpp"
+ .incbin "graphics/pokemon/golem/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ponyta_still_front_pic:: @ 8D63DF0
- .incbin "graphics/pokemon/front_pics/ponyta_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ponyta/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ponyta_palette:: @ 8D64180
- .incbin "graphics/pokemon/palettes/ponyta_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ponyta/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ponyta_back_pic:: @ 8D641A8
- .incbin "graphics/pokemon/back_pics/ponyta_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ponyta/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ponyta_shiny_palette:: @ 8D644E4
- .incbin "graphics/pokemon/palettes/ponyta_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ponyta/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ponyta_icon:: @ 8D6450C
- .incbin "graphics/pokemon/icons/ponyta_icon.4bpp"
+ .incbin "graphics/pokemon/ponyta/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ponyta_footprint:: @ 8D6490C
- .incbin "graphics/pokemon/footprints/ponyta_footprint.1bpp"
+ .incbin "graphics/pokemon/ponyta/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_rapidash_still_front_pic:: @ 8D6492C
- .incbin "graphics/pokemon/front_pics/rapidash_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/rapidash/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_rapidash_palette:: @ 8D64DB4
- .incbin "graphics/pokemon/palettes/rapidash_palette.gbapal.lz"
+ .incbin "graphics/pokemon/rapidash/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_rapidash_back_pic:: @ 8D64DDC
- .incbin "graphics/pokemon/back_pics/rapidash_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/rapidash/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_rapidash_shiny_palette:: @ 8D651EC
- .incbin "graphics/pokemon/palettes/rapidash_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/rapidash/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_rapidash_icon:: @ 8D65214
- .incbin "graphics/pokemon/icons/rapidash_icon.4bpp"
+ .incbin "graphics/pokemon/rapidash/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_rapidash_footprint:: @ 8D65614
- .incbin "graphics/pokemon/footprints/rapidash_footprint.1bpp"
+ .incbin "graphics/pokemon/rapidash/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_slowpoke_still_front_pic:: @ 8D65634
- .incbin "graphics/pokemon/front_pics/slowpoke_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/slowpoke/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_slowpoke_palette:: @ 8D65908
- .incbin "graphics/pokemon/palettes/slowpoke_palette.gbapal.lz"
+ .incbin "graphics/pokemon/slowpoke/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_slowpoke_back_pic:: @ 8D65930
- .incbin "graphics/pokemon/back_pics/slowpoke_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/slowpoke/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_slowpoke_shiny_palette:: @ 8D65B94
- .incbin "graphics/pokemon/palettes/slowpoke_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/slowpoke/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_slowpoke_icon:: @ 8D65BBC
- .incbin "graphics/pokemon/icons/slowpoke_icon.4bpp"
+ .incbin "graphics/pokemon/slowpoke/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_slowpoke_footprint:: @ 8D65FBC
- .incbin "graphics/pokemon/footprints/slowpoke_footprint.1bpp"
+ .incbin "graphics/pokemon/slowpoke/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_slowbro_still_front_pic:: @ 8D65FDC
- .incbin "graphics/pokemon/front_pics/slowbro_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/slowbro/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_slowbro_palette:: @ 8D6647C
- .incbin "graphics/pokemon/palettes/slowbro_palette.gbapal.lz"
+ .incbin "graphics/pokemon/slowbro/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_slowbro_back_pic:: @ 8D664A4
- .incbin "graphics/pokemon/back_pics/slowbro_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/slowbro/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_slowbro_shiny_palette:: @ 8D66840
- .incbin "graphics/pokemon/palettes/slowbro_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/slowbro/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_slowbro_icon:: @ 8D66868
- .incbin "graphics/pokemon/icons/slowbro_icon.4bpp"
+ .incbin "graphics/pokemon/slowbro/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_slowbro_footprint:: @ 8D66C68
- .incbin "graphics/pokemon/footprints/slowbro_footprint.1bpp"
+ .incbin "graphics/pokemon/slowbro/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_magnemite_still_front_pic:: @ 8D66C88
- .incbin "graphics/pokemon/front_pics/magnemite_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/magnemite/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_magnemite_palette:: @ 8D66E60
- .incbin "graphics/pokemon/palettes/magnemite_palette.gbapal.lz"
+ .incbin "graphics/pokemon/magnemite/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_magnemite_back_pic:: @ 8D66E88
- .incbin "graphics/pokemon/back_pics/magnemite_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/magnemite/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_magnemite_shiny_palette:: @ 8D67070
- .incbin "graphics/pokemon/palettes/magnemite_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/magnemite/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_magnemite_icon:: @ 8D67094
- .incbin "graphics/pokemon/icons/magnemite_icon.4bpp"
+ .incbin "graphics/pokemon/magnemite/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_magnemite_footprint:: @ 8D67494
- .incbin "graphics/pokemon/footprints/magnemite_footprint.1bpp"
+ .incbin "graphics/pokemon/magnemite/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_magneton_still_front_pic:: @ 8D674B4
- .incbin "graphics/pokemon/front_pics/magneton_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/magneton/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_magneton_palette:: @ 8D677F0
- .incbin "graphics/pokemon/palettes/magneton_palette.gbapal.lz"
+ .incbin "graphics/pokemon/magneton/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_magneton_back_pic:: @ 8D67818
- .incbin "graphics/pokemon/back_pics/magneton_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/magneton/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_magneton_shiny_palette:: @ 8D67B98
- .incbin "graphics/pokemon/palettes/magneton_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/magneton/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_magneton_icon:: @ 8D67BC0
- .incbin "graphics/pokemon/icons/magneton_icon.4bpp"
+ .incbin "graphics/pokemon/magneton/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_magneton_footprint:: @ 8D67FC0
- .incbin "graphics/pokemon/footprints/magneton_footprint.1bpp"
+ .incbin "graphics/pokemon/magneton/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_farfetch_d_still_front_pic:: @ 8D67FE0
- .incbin "graphics/pokemon/front_pics/farfetch_d_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/farfetch_d/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_farfetch_d_palette:: @ 8D68334
- .incbin "graphics/pokemon/palettes/farfetch_d_palette.gbapal.lz"
+ .incbin "graphics/pokemon/farfetch_d/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_farfetch_d_back_pic:: @ 8D6835C
- .incbin "graphics/pokemon/back_pics/farfetch_d_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/farfetch_d/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_farfetch_d_shiny_palette:: @ 8D686C8
- .incbin "graphics/pokemon/palettes/farfetch_d_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/farfetch_d/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_farfetch_d_icon:: @ 8D686F0
- .incbin "graphics/pokemon/icons/farfetch_d_icon.4bpp"
+ .incbin "graphics/pokemon/farfetch_d/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_farfetch_d_footprint:: @ 8D68AF0
- .incbin "graphics/pokemon/footprints/farfetch_d_footprint.1bpp"
+ .incbin "graphics/pokemon/farfetch_d/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_doduo_still_front_pic:: @ 8D68B10
- .incbin "graphics/pokemon/front_pics/doduo_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/doduo/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_doduo_palette:: @ 8D68DFC
- .incbin "graphics/pokemon/palettes/doduo_palette.gbapal.lz"
+ .incbin "graphics/pokemon/doduo/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_doduo_back_pic:: @ 8D68E20
- .incbin "graphics/pokemon/back_pics/doduo_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/doduo/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_doduo_shiny_palette:: @ 8D69138
- .incbin "graphics/pokemon/palettes/doduo_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/doduo/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_doduo_icon:: @ 8D6915C
- .incbin "graphics/pokemon/icons/doduo_icon.4bpp"
+ .incbin "graphics/pokemon/doduo/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_doduo_footprint:: @ 8D6955C
- .incbin "graphics/pokemon/footprints/doduo_footprint.1bpp"
+ .incbin "graphics/pokemon/doduo/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_dodrio_still_front_pic:: @ 8D6957C
- .incbin "graphics/pokemon/front_pics/dodrio_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dodrio/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dodrio_palette:: @ 8D699BC
- .incbin "graphics/pokemon/palettes/dodrio_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dodrio/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_dodrio_back_pic:: @ 8D699E4
- .incbin "graphics/pokemon/back_pics/dodrio_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dodrio/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dodrio_shiny_palette:: @ 8D69E48
- .incbin "graphics/pokemon/palettes/dodrio_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dodrio/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_dodrio_icon:: @ 8D69E70
- .incbin "graphics/pokemon/icons/dodrio_icon.4bpp"
+ .incbin "graphics/pokemon/dodrio/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_dodrio_footprint:: @ 8D6A270
- .incbin "graphics/pokemon/footprints/dodrio_footprint.1bpp"
+ .incbin "graphics/pokemon/dodrio/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_seel_still_front_pic:: @ 8D6A290
- .incbin "graphics/pokemon/front_pics/seel_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/seel/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_seel_palette:: @ 8D6A5B4
- .incbin "graphics/pokemon/palettes/seel_palette.gbapal.lz"
+ .incbin "graphics/pokemon/seel/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_seel_back_pic:: @ 8D6A5DC
- .incbin "graphics/pokemon/back_pics/seel_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/seel/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_seel_shiny_palette:: @ 8D6A8C8
- .incbin "graphics/pokemon/palettes/seel_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/seel/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_seel_icon:: @ 8D6A8F0
- .incbin "graphics/pokemon/icons/seel_icon.4bpp"
+ .incbin "graphics/pokemon/seel/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_seel_footprint:: @ 8D6ACF0
- .incbin "graphics/pokemon/footprints/seel_footprint.1bpp"
+ .incbin "graphics/pokemon/seel/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_dewgong_still_front_pic:: @ 8D6AD10
- .incbin "graphics/pokemon/front_pics/dewgong_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dewgong/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dewgong_palette:: @ 8D6B0E0
- .incbin "graphics/pokemon/palettes/dewgong_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dewgong/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_dewgong_back_pic:: @ 8D6B104
- .incbin "graphics/pokemon/back_pics/dewgong_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dewgong/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dewgong_shiny_palette:: @ 8D6B398
- .incbin "graphics/pokemon/palettes/dewgong_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dewgong/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_dewgong_icon:: @ 8D6B3BC
- .incbin "graphics/pokemon/icons/dewgong_icon.4bpp"
+ .incbin "graphics/pokemon/dewgong/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_dewgong_footprint:: @ 8D6B7BC
- .incbin "graphics/pokemon/footprints/dewgong_footprint.1bpp"
+ .incbin "graphics/pokemon/dewgong/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_grimer_still_front_pic:: @ 8D6B7DC
- .incbin "graphics/pokemon/front_pics/grimer_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/grimer/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_grimer_palette:: @ 8D6BB04
- .incbin "graphics/pokemon/palettes/grimer_palette.gbapal.lz"
+ .incbin "graphics/pokemon/grimer/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_grimer_back_pic:: @ 8D6BB28
- .incbin "graphics/pokemon/back_pics/grimer_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/grimer/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_grimer_shiny_palette:: @ 8D6BDEC
- .incbin "graphics/pokemon/palettes/grimer_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/grimer/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_grimer_icon:: @ 8D6BE10
- .incbin "graphics/pokemon/icons/grimer_icon.4bpp"
+ .incbin "graphics/pokemon/grimer/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_grimer_footprint:: @ 8D6C210
- .incbin "graphics/pokemon/footprints/grimer_footprint.1bpp"
+ .incbin "graphics/pokemon/grimer/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_muk_still_front_pic:: @ 8D6C230
- .incbin "graphics/pokemon/front_pics/muk_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/muk/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_muk_palette:: @ 8D6C5C0
- .incbin "graphics/pokemon/palettes/muk_palette.gbapal.lz"
+ .incbin "graphics/pokemon/muk/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_muk_back_pic:: @ 8D6C5E4
- .incbin "graphics/pokemon/back_pics/muk_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/muk/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_muk_shiny_palette:: @ 8D6C8DC
- .incbin "graphics/pokemon/palettes/muk_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/muk/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_muk_icon:: @ 8D6C900
- .incbin "graphics/pokemon/icons/muk_icon.4bpp"
+ .incbin "graphics/pokemon/muk/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_muk_footprint:: @ 8D6CD00
- .incbin "graphics/pokemon/footprints/muk_footprint.1bpp"
+ .incbin "graphics/pokemon/muk/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_shellder_still_front_pic:: @ 8D6CD20
- .incbin "graphics/pokemon/front_pics/shellder_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shellder/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shellder_palette:: @ 8D6CF94
- .incbin "graphics/pokemon/palettes/shellder_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shellder/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_shellder_back_pic:: @ 8D6CFB8
- .incbin "graphics/pokemon/back_pics/shellder_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shellder/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shellder_shiny_palette:: @ 8D6D2CC
- .incbin "graphics/pokemon/palettes/shellder_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shellder/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_shellder_icon:: @ 8D6D2F0
- .incbin "graphics/pokemon/icons/shellder_icon.4bpp"
+ .incbin "graphics/pokemon/shellder/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_shellder_footprint:: @ 8D6D6F0
- .incbin "graphics/pokemon/footprints/shellder_footprint.1bpp"
+ .incbin "graphics/pokemon/shellder/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_cloyster_still_front_pic:: @ 8D6D710
- .incbin "graphics/pokemon/front_pics/cloyster_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cloyster/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cloyster_palette:: @ 8D6DB4C
- .incbin "graphics/pokemon/palettes/cloyster_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cloyster/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_cloyster_back_pic:: @ 8D6DB70
- .incbin "graphics/pokemon/back_pics/cloyster_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cloyster/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cloyster_shiny_palette:: @ 8D6DF7C
- .incbin "graphics/pokemon/palettes/cloyster_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cloyster/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_cloyster_icon:: @ 8D6DFA0
- .incbin "graphics/pokemon/icons/cloyster_icon.4bpp"
+ .incbin "graphics/pokemon/cloyster/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_cloyster_footprint:: @ 8D6E3A0
- .incbin "graphics/pokemon/footprints/cloyster_footprint.1bpp"
+ .incbin "graphics/pokemon/cloyster/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_gastly_still_front_pic:: @ 8D6E3C0
- .incbin "graphics/pokemon/front_pics/gastly_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gastly/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gastly_palette:: @ 8D6E778
- .incbin "graphics/pokemon/palettes/gastly_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gastly/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_gastly_back_pic:: @ 8D6E7A0
- .incbin "graphics/pokemon/back_pics/gastly_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gastly/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gastly_shiny_palette:: @ 8D6EAC4
- .incbin "graphics/pokemon/palettes/gastly_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gastly/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_gastly_icon:: @ 8D6EAEC
- .incbin "graphics/pokemon/icons/gastly_icon.4bpp"
+ .incbin "graphics/pokemon/gastly/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_gastly_footprint:: @ 8D6EEEC
- .incbin "graphics/pokemon/footprints/gastly_footprint.1bpp"
+ .incbin "graphics/pokemon/gastly/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_haunter_still_front_pic:: @ 8D6EF0C
- .incbin "graphics/pokemon/front_pics/haunter_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/haunter/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_haunter_palette:: @ 8D6F2F4
- .incbin "graphics/pokemon/palettes/haunter_palette.gbapal.lz"
+ .incbin "graphics/pokemon/haunter/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_haunter_back_pic:: @ 8D6F318
- .incbin "graphics/pokemon/back_pics/haunter_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/haunter/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_haunter_shiny_palette:: @ 8D6F5FC
- .incbin "graphics/pokemon/palettes/haunter_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/haunter/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_haunter_icon:: @ 8D6F620
- .incbin "graphics/pokemon/icons/haunter_icon.4bpp"
+ .incbin "graphics/pokemon/haunter/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_haunter_footprint:: @ 8D6FA20
- .incbin "graphics/pokemon/footprints/haunter_footprint.1bpp"
+ .incbin "graphics/pokemon/haunter/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_gengar_still_front_pic:: @ 8D6FA40
- .incbin "graphics/pokemon/front_pics/gengar_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gengar/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gengar_palette:: @ 8D6FD9C
- .incbin "graphics/pokemon/palettes/gengar_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gengar/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_gengar_back_pic:: @ 8D6FDC0
- .incbin "graphics/pokemon/back_pics/gengar_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gengar/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gengar_shiny_palette:: @ 8D70104
- .incbin "graphics/pokemon/palettes/gengar_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gengar/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_gengar_icon:: @ 8D70128
- .incbin "graphics/pokemon/icons/gengar_icon.4bpp"
+ .incbin "graphics/pokemon/gengar/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_gengar_footprint:: @ 8D70528
- .incbin "graphics/pokemon/footprints/gengar_footprint.1bpp"
+ .incbin "graphics/pokemon/gengar/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_onix_still_front_pic:: @ 8D70548
- .incbin "graphics/pokemon/front_pics/onix_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/onix/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_onix_palette:: @ 8D70A18
- .incbin "graphics/pokemon/palettes/onix_palette.gbapal.lz"
+ .incbin "graphics/pokemon/onix/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_onix_back_pic:: @ 8D70A34
- .incbin "graphics/pokemon/back_pics/onix_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/onix/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_onix_shiny_palette:: @ 8D70DB0
- .incbin "graphics/pokemon/palettes/onix_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/onix/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_onix_icon:: @ 8D70DCC
- .incbin "graphics/pokemon/icons/onix_icon.4bpp"
+ .incbin "graphics/pokemon/onix/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_onix_footprint:: @ 8D711CC
- .incbin "graphics/pokemon/footprints/onix_footprint.1bpp"
+ .incbin "graphics/pokemon/onix/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_drowzee_still_front_pic:: @ 8D711EC
- .incbin "graphics/pokemon/front_pics/drowzee_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/drowzee/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_drowzee_palette:: @ 8D7152C
- .incbin "graphics/pokemon/palettes/drowzee_palette.gbapal.lz"
+ .incbin "graphics/pokemon/drowzee/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_drowzee_back_pic:: @ 8D71550
- .incbin "graphics/pokemon/back_pics/drowzee_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/drowzee/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_drowzee_shiny_palette:: @ 8D7178C
- .incbin "graphics/pokemon/palettes/drowzee_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/drowzee/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_drowzee_icon:: @ 8D717B0
- .incbin "graphics/pokemon/icons/drowzee_icon.4bpp"
+ .incbin "graphics/pokemon/drowzee/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_drowzee_footprint:: @ 8D71BB0
- .incbin "graphics/pokemon/footprints/drowzee_footprint.1bpp"
+ .incbin "graphics/pokemon/drowzee/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_hypno_still_front_pic:: @ 8D71BD0
- .incbin "graphics/pokemon/front_pics/hypno_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hypno/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hypno_palette:: @ 8D72008
- .incbin "graphics/pokemon/palettes/hypno_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hypno/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_hypno_back_pic:: @ 8D7202C
- .incbin "graphics/pokemon/back_pics/hypno_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hypno/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hypno_shiny_palette:: @ 8D7235C
- .incbin "graphics/pokemon/palettes/hypno_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hypno/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_hypno_icon:: @ 8D72380
- .incbin "graphics/pokemon/icons/hypno_icon.4bpp"
+ .incbin "graphics/pokemon/hypno/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_hypno_footprint:: @ 8D72780
- .incbin "graphics/pokemon/footprints/hypno_footprint.1bpp"
+ .incbin "graphics/pokemon/hypno/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_krabby_still_front_pic:: @ 8D727A0
- .incbin "graphics/pokemon/front_pics/krabby_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/krabby/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_krabby_palette:: @ 8D72AC4
- .incbin "graphics/pokemon/palettes/krabby_palette.gbapal.lz"
+ .incbin "graphics/pokemon/krabby/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_krabby_back_pic:: @ 8D72AEC
- .incbin "graphics/pokemon/back_pics/krabby_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/krabby/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_krabby_shiny_palette:: @ 8D72E78
- .incbin "graphics/pokemon/palettes/krabby_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/krabby/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_krabby_icon:: @ 8D72EA0
- .incbin "graphics/pokemon/icons/krabby_icon.4bpp"
+ .incbin "graphics/pokemon/krabby/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_krabby_footprint:: @ 8D732A0
- .incbin "graphics/pokemon/footprints/krabby_footprint.1bpp"
+ .incbin "graphics/pokemon/krabby/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_kingler_still_front_pic:: @ 8D732C0
- .incbin "graphics/pokemon/front_pics/kingler_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kingler/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kingler_palette:: @ 8D73740
- .incbin "graphics/pokemon/palettes/kingler_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kingler/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_kingler_back_pic:: @ 8D73768
- .incbin "graphics/pokemon/back_pics/kingler_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kingler/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kingler_shiny_palette:: @ 8D73AEC
- .incbin "graphics/pokemon/palettes/kingler_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kingler/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_kingler_icon:: @ 8D73B14
- .incbin "graphics/pokemon/icons/kingler_icon.4bpp"
+ .incbin "graphics/pokemon/kingler/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_kingler_footprint:: @ 8D73F14
- .incbin "graphics/pokemon/footprints/kingler_footprint.1bpp"
+ .incbin "graphics/pokemon/kingler/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_voltorb_still_front_pic:: @ 8D73F34
- .incbin "graphics/pokemon/front_pics/voltorb_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/voltorb/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_voltorb_palette:: @ 8D7413C
- .incbin "graphics/pokemon/palettes/voltorb_palette.gbapal.lz"
+ .incbin "graphics/pokemon/voltorb/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_voltorb_back_pic:: @ 8D74160
- .incbin "graphics/pokemon/back_pics/voltorb_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/voltorb/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_voltorb_shiny_palette:: @ 8D743D4
- .incbin "graphics/pokemon/palettes/voltorb_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/voltorb/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_voltorb_icon:: @ 8D743F8
- .incbin "graphics/pokemon/icons/voltorb_icon.4bpp"
+ .incbin "graphics/pokemon/voltorb/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_voltorb_footprint:: @ 8D747F8
- .incbin "graphics/pokemon/footprints/voltorb_footprint.1bpp"
+ .incbin "graphics/pokemon/voltorb/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_electrode_still_front_pic:: @ 8D74818
- .incbin "graphics/pokemon/front_pics/electrode_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/electrode/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_electrode_palette:: @ 8D74A84
- .incbin "graphics/pokemon/palettes/electrode_palette.gbapal.lz"
+ .incbin "graphics/pokemon/electrode/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_electrode_back_pic:: @ 8D74AA8
- .incbin "graphics/pokemon/back_pics/electrode_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/electrode/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_electrode_shiny_palette:: @ 8D74D18
- .incbin "graphics/pokemon/palettes/electrode_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/electrode/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_electrode_icon:: @ 8D74D3C
- .incbin "graphics/pokemon/icons/electrode_icon.4bpp"
+ .incbin "graphics/pokemon/electrode/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_electrode_footprint:: @ 8D7513C
- .incbin "graphics/pokemon/footprints/electrode_footprint.1bpp"
+ .incbin "graphics/pokemon/electrode/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_exeggcute_still_front_pic:: @ 8D7515C
- .incbin "graphics/pokemon/front_pics/exeggcute_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/exeggcute/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_exeggcute_palette:: @ 8D754EC
- .incbin "graphics/pokemon/palettes/exeggcute_palette.gbapal.lz"
+ .incbin "graphics/pokemon/exeggcute/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_exeggcute_back_pic:: @ 8D75510
- .incbin "graphics/pokemon/back_pics/exeggcute_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/exeggcute/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_exeggcute_shiny_palette:: @ 8D75818
- .incbin "graphics/pokemon/palettes/exeggcute_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/exeggcute/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_exeggcute_icon:: @ 8D7583C
- .incbin "graphics/pokemon/icons/exeggcute_icon.4bpp"
+ .incbin "graphics/pokemon/exeggcute/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_exeggcute_footprint:: @ 8D75C3C
- .incbin "graphics/pokemon/footprints/exeggcute_footprint.1bpp"
+ .incbin "graphics/pokemon/exeggcute/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_exeggutor_still_front_pic:: @ 8D75C5C
- .incbin "graphics/pokemon/front_pics/exeggutor_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/exeggutor/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_exeggutor_palette:: @ 8D760AC
- .incbin "graphics/pokemon/palettes/exeggutor_palette.gbapal.lz"
+ .incbin "graphics/pokemon/exeggutor/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_exeggutor_back_pic:: @ 8D760D4
- .incbin "graphics/pokemon/back_pics/exeggutor_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/exeggutor/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_exeggutor_shiny_palette:: @ 8D764A0
- .incbin "graphics/pokemon/palettes/exeggutor_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/exeggutor/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_exeggutor_icon:: @ 8D764C8
- .incbin "graphics/pokemon/icons/exeggutor_icon.4bpp"
+ .incbin "graphics/pokemon/exeggutor/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_exeggutor_footprint:: @ 8D768C8
- .incbin "graphics/pokemon/footprints/exeggutor_footprint.1bpp"
+ .incbin "graphics/pokemon/exeggutor/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_cubone_still_front_pic:: @ 8D768E8
- .incbin "graphics/pokemon/front_pics/cubone_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cubone/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cubone_palette:: @ 8D76BA4
- .incbin "graphics/pokemon/palettes/cubone_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cubone/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_cubone_back_pic:: @ 8D76BCC
- .incbin "graphics/pokemon/back_pics/cubone_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cubone/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cubone_shiny_palette:: @ 8D76F0C
- .incbin "graphics/pokemon/palettes/cubone_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cubone/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_cubone_icon:: @ 8D76F34
- .incbin "graphics/pokemon/icons/cubone_icon.4bpp"
+ .incbin "graphics/pokemon/cubone/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_cubone_footprint:: @ 8D77334
- .incbin "graphics/pokemon/footprints/cubone_footprint.1bpp"
+ .incbin "graphics/pokemon/cubone/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_marowak_still_front_pic:: @ 8D77354
- .incbin "graphics/pokemon/front_pics/marowak_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/marowak/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_marowak_palette:: @ 8D776D4
- .incbin "graphics/pokemon/palettes/marowak_palette.gbapal.lz"
+ .incbin "graphics/pokemon/marowak/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_marowak_back_pic:: @ 8D776FC
- .incbin "graphics/pokemon/back_pics/marowak_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/marowak/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_marowak_shiny_palette:: @ 8D77A10
- .incbin "graphics/pokemon/palettes/marowak_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/marowak/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_marowak_icon:: @ 8D77A38
- .incbin "graphics/pokemon/icons/marowak_icon.4bpp"
+ .incbin "graphics/pokemon/marowak/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_marowak_footprint:: @ 8D77E38
- .incbin "graphics/pokemon/footprints/marowak_footprint.1bpp"
+ .incbin "graphics/pokemon/marowak/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_hitmonlee_still_front_pic:: @ 8D77E58
- .incbin "graphics/pokemon/front_pics/hitmonlee_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hitmonlee/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hitmonlee_palette:: @ 8D781CC
- .incbin "graphics/pokemon/palettes/hitmonlee_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hitmonlee/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_hitmonlee_back_pic:: @ 8D781F4
- .incbin "graphics/pokemon/back_pics/hitmonlee_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hitmonlee/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hitmonlee_shiny_palette:: @ 8D78498
- .incbin "graphics/pokemon/palettes/hitmonlee_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hitmonlee/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_hitmonlee_icon:: @ 8D784C0
- .incbin "graphics/pokemon/icons/hitmonlee_icon.4bpp"
+ .incbin "graphics/pokemon/hitmonlee/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_hitmonlee_footprint:: @ 8D788C0
- .incbin "graphics/pokemon/footprints/hitmonlee_footprint.1bpp"
+ .incbin "graphics/pokemon/hitmonlee/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_hitmonchan_still_front_pic:: @ 8D788E0
- .incbin "graphics/pokemon/front_pics/hitmonchan_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hitmonchan/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hitmonchan_palette:: @ 8D78C20
- .incbin "graphics/pokemon/palettes/hitmonchan_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hitmonchan/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_hitmonchan_back_pic:: @ 8D78C48
- .incbin "graphics/pokemon/back_pics/hitmonchan_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hitmonchan/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hitmonchan_shiny_palette:: @ 8D78F8C
- .incbin "graphics/pokemon/palettes/hitmonchan_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hitmonchan/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_hitmonchan_icon:: @ 8D78FB4
- .incbin "graphics/pokemon/icons/hitmonchan_icon.4bpp"
+ .incbin "graphics/pokemon/hitmonchan/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_hitmonchan_footprint:: @ 8D793B4
- .incbin "graphics/pokemon/footprints/hitmonchan_footprint.1bpp"
+ .incbin "graphics/pokemon/hitmonchan/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_lickitung_still_front_pic:: @ 8D793D4
- .incbin "graphics/pokemon/front_pics/lickitung_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lickitung/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lickitung_palette:: @ 8D797AC
- .incbin "graphics/pokemon/palettes/lickitung_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lickitung/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_lickitung_back_pic:: @ 8D797D4
- .incbin "graphics/pokemon/back_pics/lickitung_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lickitung/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lickitung_shiny_palette:: @ 8D79A78
- .incbin "graphics/pokemon/palettes/lickitung_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lickitung/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_lickitung_icon:: @ 8D79AA0
- .incbin "graphics/pokemon/icons/lickitung_icon.4bpp"
+ .incbin "graphics/pokemon/lickitung/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_lickitung_footprint:: @ 8D79EA0
- .incbin "graphics/pokemon/footprints/lickitung_footprint.1bpp"
+ .incbin "graphics/pokemon/lickitung/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_koffing_still_front_pic:: @ 8D79EC0
- .incbin "graphics/pokemon/front_pics/koffing_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/koffing/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_koffing_palette:: @ 8D7A1C0
- .incbin "graphics/pokemon/palettes/koffing_palette.gbapal.lz"
+ .incbin "graphics/pokemon/koffing/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_koffing_back_pic:: @ 8D7A1E8
- .incbin "graphics/pokemon/back_pics/koffing_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/koffing/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_koffing_shiny_palette:: @ 8D7A4E8
- .incbin "graphics/pokemon/palettes/koffing_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/koffing/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_koffing_icon:: @ 8D7A510
- .incbin "graphics/pokemon/icons/koffing_icon.4bpp"
+ .incbin "graphics/pokemon/koffing/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_koffing_footprint:: @ 8D7A910
- .incbin "graphics/pokemon/footprints/koffing_footprint.1bpp"
+ .incbin "graphics/pokemon/koffing/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_weezing_still_front_pic:: @ 8D7A930
- .incbin "graphics/pokemon/front_pics/weezing_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/weezing/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_weezing_palette:: @ 8D7ADEC
- .incbin "graphics/pokemon/palettes/weezing_palette.gbapal.lz"
+ .incbin "graphics/pokemon/weezing/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_weezing_back_pic:: @ 8D7AE14
- .incbin "graphics/pokemon/back_pics/weezing_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/weezing/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_weezing_shiny_palette:: @ 8D7B198
- .incbin "graphics/pokemon/palettes/weezing_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/weezing/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_weezing_icon:: @ 8D7B1C0
- .incbin "graphics/pokemon/icons/weezing_icon.4bpp"
+ .incbin "graphics/pokemon/weezing/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_weezing_footprint:: @ 8D7B5C0
- .incbin "graphics/pokemon/footprints/weezing_footprint.1bpp"
+ .incbin "graphics/pokemon/weezing/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_rhyhorn_still_front_pic:: @ 8D7B5E0
- .incbin "graphics/pokemon/front_pics/rhyhorn_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/rhyhorn/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_rhyhorn_palette:: @ 8D7B9DC
- .incbin "graphics/pokemon/palettes/rhyhorn_palette.gbapal.lz"
+ .incbin "graphics/pokemon/rhyhorn/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_rhyhorn_back_pic:: @ 8D7B9FC
- .incbin "graphics/pokemon/back_pics/rhyhorn_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/rhyhorn/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_rhyhorn_shiny_palette:: @ 8D7BD44
- .incbin "graphics/pokemon/palettes/rhyhorn_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/rhyhorn/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_rhyhorn_icon:: @ 8D7BD64
- .incbin "graphics/pokemon/icons/rhyhorn_icon.4bpp"
+ .incbin "graphics/pokemon/rhyhorn/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_rhyhorn_footprint:: @ 8D7C164
- .incbin "graphics/pokemon/footprints/rhyhorn_footprint.1bpp"
+ .incbin "graphics/pokemon/rhyhorn/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_rhydon_still_front_pic:: @ 8D7C184
- .incbin "graphics/pokemon/front_pics/rhydon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/rhydon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_rhydon_palette:: @ 8D7C678
- .incbin "graphics/pokemon/palettes/rhydon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/rhydon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_rhydon_back_pic:: @ 8D7C6A0
- .incbin "graphics/pokemon/back_pics/rhydon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/rhydon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_rhydon_shiny_palette:: @ 8D7CAF0
- .incbin "graphics/pokemon/palettes/rhydon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/rhydon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_rhydon_icon:: @ 8D7CB18
- .incbin "graphics/pokemon/icons/rhydon_icon.4bpp"
+ .incbin "graphics/pokemon/rhydon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_rhydon_footprint:: @ 8D7CF18
- .incbin "graphics/pokemon/footprints/rhydon_footprint.1bpp"
+ .incbin "graphics/pokemon/rhydon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_chansey_still_front_pic:: @ 8D7CF38
- .incbin "graphics/pokemon/front_pics/chansey_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/chansey/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_chansey_palette:: @ 8D7D274
- .incbin "graphics/pokemon/palettes/chansey_palette.gbapal.lz"
+ .incbin "graphics/pokemon/chansey/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_chansey_back_pic:: @ 8D7D298
- .incbin "graphics/pokemon/back_pics/chansey_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/chansey/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_chansey_shiny_palette:: @ 8D7D4E8
- .incbin "graphics/pokemon/palettes/chansey_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/chansey/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_chansey_icon:: @ 8D7D50C
- .incbin "graphics/pokemon/icons/chansey_icon.4bpp"
+ .incbin "graphics/pokemon/chansey/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_chansey_footprint:: @ 8D7D90C
- .incbin "graphics/pokemon/footprints/chansey_footprint.1bpp"
+ .incbin "graphics/pokemon/chansey/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_tangela_still_front_pic:: @ 8D7D92C
- .incbin "graphics/pokemon/front_pics/tangela_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tangela/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tangela_palette:: @ 8D7DD00
- .incbin "graphics/pokemon/palettes/tangela_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tangela/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_tangela_back_pic:: @ 8D7DD24
- .incbin "graphics/pokemon/back_pics/tangela_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tangela/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tangela_shiny_palette:: @ 8D7E0D0
- .incbin "graphics/pokemon/palettes/tangela_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tangela/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_tangela_icon:: @ 8D7E0F4
- .incbin "graphics/pokemon/icons/tangela_icon.4bpp"
+ .incbin "graphics/pokemon/tangela/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_tangela_footprint:: @ 8D7E4F4
- .incbin "graphics/pokemon/footprints/tangela_footprint.1bpp"
+ .incbin "graphics/pokemon/tangela/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_kangaskhan_still_front_pic:: @ 8D7E514
- .incbin "graphics/pokemon/front_pics/kangaskhan_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kangaskhan/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kangaskhan_palette:: @ 8D7E9BC
- .incbin "graphics/pokemon/palettes/kangaskhan_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kangaskhan/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_kangaskhan_back_pic:: @ 8D7E9E4
- .incbin "graphics/pokemon/back_pics/kangaskhan_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kangaskhan/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kangaskhan_shiny_palette:: @ 8D7EE14
- .incbin "graphics/pokemon/palettes/kangaskhan_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kangaskhan/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_kangaskhan_icon:: @ 8D7EE3C
- .incbin "graphics/pokemon/icons/kangaskhan_icon.4bpp"
+ .incbin "graphics/pokemon/kangaskhan/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_kangaskhan_footprint:: @ 8D7F23C
- .incbin "graphics/pokemon/footprints/kangaskhan_footprint.1bpp"
+ .incbin "graphics/pokemon/kangaskhan/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_horsea_still_front_pic:: @ 8D7F25C
- .incbin "graphics/pokemon/front_pics/horsea_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/horsea/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_horsea_palette:: @ 8D7F4C8
- .incbin "graphics/pokemon/palettes/horsea_palette.gbapal.lz"
+ .incbin "graphics/pokemon/horsea/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_horsea_back_pic:: @ 8D7F4F0
- .incbin "graphics/pokemon/back_pics/horsea_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/horsea/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_horsea_shiny_palette:: @ 8D7F7D0
- .incbin "graphics/pokemon/palettes/horsea_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/horsea/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_horsea_icon:: @ 8D7F7F8
- .incbin "graphics/pokemon/icons/horsea_icon.4bpp"
+ .incbin "graphics/pokemon/horsea/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_horsea_footprint:: @ 8D7FBF8
- .incbin "graphics/pokemon/footprints/horsea_footprint.1bpp"
+ .incbin "graphics/pokemon/horsea/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_seadra_still_front_pic:: @ 8D7FC18
- .incbin "graphics/pokemon/front_pics/seadra_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/seadra/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_seadra_palette:: @ 8D7FFA0
- .incbin "graphics/pokemon/palettes/seadra_palette.gbapal.lz"
+ .incbin "graphics/pokemon/seadra/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_seadra_back_pic:: @ 8D7FFC8
- .incbin "graphics/pokemon/back_pics/seadra_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/seadra/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_seadra_shiny_palette:: @ 8D80368
- .incbin "graphics/pokemon/palettes/seadra_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/seadra/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_seadra_icon:: @ 8D80390
- .incbin "graphics/pokemon/icons/seadra_icon.4bpp"
+ .incbin "graphics/pokemon/seadra/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_seadra_footprint:: @ 8D80790
- .incbin "graphics/pokemon/footprints/seadra_footprint.1bpp"
+ .incbin "graphics/pokemon/seadra/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_goldeen_still_front_pic:: @ 8D807B0
- .incbin "graphics/pokemon/front_pics/goldeen_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/goldeen/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_goldeen_palette:: @ 8D80B18
- .incbin "graphics/pokemon/palettes/goldeen_palette.gbapal.lz"
+ .incbin "graphics/pokemon/goldeen/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_goldeen_back_pic:: @ 8D80B40
- .incbin "graphics/pokemon/back_pics/goldeen_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/goldeen/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_goldeen_shiny_palette:: @ 8D80EB0
- .incbin "graphics/pokemon/palettes/goldeen_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/goldeen/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_goldeen_icon:: @ 8D80ED8
- .incbin "graphics/pokemon/icons/goldeen_icon.4bpp"
+ .incbin "graphics/pokemon/goldeen/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_goldeen_footprint:: @ 8D812D8
- .incbin "graphics/pokemon/footprints/goldeen_footprint.1bpp"
+ .incbin "graphics/pokemon/goldeen/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_seaking_still_front_pic:: @ 8D812F8
- .incbin "graphics/pokemon/front_pics/seaking_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/seaking/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_seaking_palette:: @ 8D8176C
- .incbin "graphics/pokemon/palettes/seaking_palette.gbapal.lz"
+ .incbin "graphics/pokemon/seaking/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_seaking_back_pic:: @ 8D81794
- .incbin "graphics/pokemon/back_pics/seaking_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/seaking/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_seaking_shiny_palette:: @ 8D81AE4
- .incbin "graphics/pokemon/palettes/seaking_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/seaking/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_seaking_icon:: @ 8D81B0C
- .incbin "graphics/pokemon/icons/seaking_icon.4bpp"
+ .incbin "graphics/pokemon/seaking/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_seaking_footprint:: @ 8D81F0C
- .incbin "graphics/pokemon/footprints/seaking_footprint.1bpp"
+ .incbin "graphics/pokemon/seaking/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_staryu_still_front_pic:: @ 8D81F2C
- .incbin "graphics/pokemon/front_pics/staryu_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/staryu/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_staryu_palette:: @ 8D821DC
- .incbin "graphics/pokemon/palettes/staryu_palette.gbapal.lz"
+ .incbin "graphics/pokemon/staryu/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_staryu_back_pic:: @ 8D82204
- .incbin "graphics/pokemon/back_pics/staryu_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/staryu/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_staryu_shiny_palette:: @ 8D8246C
- .incbin "graphics/pokemon/palettes/staryu_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/staryu/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_staryu_icon:: @ 8D82494
- .incbin "graphics/pokemon/icons/staryu_icon.4bpp"
+ .incbin "graphics/pokemon/staryu/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_staryu_footprint:: @ 8D82894
- .incbin "graphics/pokemon/footprints/staryu_footprint.1bpp"
+ .incbin "graphics/pokemon/staryu/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_starmie_still_front_pic:: @ 8D828B4
- .incbin "graphics/pokemon/front_pics/starmie_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/starmie/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_starmie_palette:: @ 8D82C54
- .incbin "graphics/pokemon/palettes/starmie_palette.gbapal.lz"
+ .incbin "graphics/pokemon/starmie/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_starmie_back_pic:: @ 8D82C7C
- .incbin "graphics/pokemon/back_pics/starmie_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/starmie/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_starmie_shiny_palette:: @ 8D82F20
- .incbin "graphics/pokemon/palettes/starmie_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/starmie/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_starmie_icon:: @ 8D82F48
- .incbin "graphics/pokemon/icons/starmie_icon.4bpp"
+ .incbin "graphics/pokemon/starmie/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_starmie_footprint:: @ 8D83348
- .incbin "graphics/pokemon/footprints/starmie_footprint.1bpp"
+ .incbin "graphics/pokemon/starmie/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_mr_mime_still_front_pic:: @ 8D83368
- .incbin "graphics/pokemon/front_pics/mr_mime_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mr_mime/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mr_mime_palette:: @ 8D83724
- .incbin "graphics/pokemon/palettes/mr_mime_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mr_mime/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_mr_mime_back_pic:: @ 8D8374C
- .incbin "graphics/pokemon/back_pics/mr_mime_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mr_mime/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mr_mime_shiny_palette:: @ 8D83A80
- .incbin "graphics/pokemon/palettes/mr_mime_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mr_mime/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_mr_mime_icon:: @ 8D83AA8
- .incbin "graphics/pokemon/icons/mr_mime_icon.4bpp"
+ .incbin "graphics/pokemon/mr_mime/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_mr_mime_footprint:: @ 8D83EA8
- .incbin "graphics/pokemon/footprints/mr_mime_footprint.1bpp"
+ .incbin "graphics/pokemon/mr_mime/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_scyther_still_front_pic:: @ 8D83EC8
- .incbin "graphics/pokemon/front_pics/scyther_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/scyther/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_scyther_palette:: @ 8D842F0
- .incbin "graphics/pokemon/palettes/scyther_palette.gbapal.lz"
+ .incbin "graphics/pokemon/scyther/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_scyther_back_pic:: @ 8D84318
- .incbin "graphics/pokemon/back_pics/scyther_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/scyther/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_scyther_shiny_palette:: @ 8D84730
- .incbin "graphics/pokemon/palettes/scyther_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/scyther/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_scyther_icon:: @ 8D84758
- .incbin "graphics/pokemon/icons/scyther_icon.4bpp"
+ .incbin "graphics/pokemon/scyther/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_scyther_footprint:: @ 8D84B58
- .incbin "graphics/pokemon/footprints/scyther_footprint.1bpp"
+ .incbin "graphics/pokemon/scyther/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_jynx_still_front_pic:: @ 8D84B78
- .incbin "graphics/pokemon/front_pics/jynx_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/jynx/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_jynx_palette:: @ 8D84F44
- .incbin "graphics/pokemon/palettes/jynx_palette.gbapal.lz"
+ .incbin "graphics/pokemon/jynx/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_jynx_back_pic:: @ 8D84F6C
- .incbin "graphics/pokemon/back_pics/jynx_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/jynx/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_jynx_shiny_palette:: @ 8D85258
- .incbin "graphics/pokemon/palettes/jynx_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/jynx/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_jynx_icon:: @ 8D85280
- .incbin "graphics/pokemon/icons/jynx_icon.4bpp"
+ .incbin "graphics/pokemon/jynx/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_jynx_footprint:: @ 8D85680
- .incbin "graphics/pokemon/footprints/jynx_footprint.1bpp"
+ .incbin "graphics/pokemon/jynx/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_electabuzz_still_front_pic:: @ 8D856A0
- .incbin "graphics/pokemon/front_pics/electabuzz_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/electabuzz/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_electabuzz_palette:: @ 8D85AF8
- .incbin "graphics/pokemon/palettes/electabuzz_palette.gbapal.lz"
+ .incbin "graphics/pokemon/electabuzz/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_electabuzz_back_pic:: @ 8D85B20
- .incbin "graphics/pokemon/back_pics/electabuzz_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/electabuzz/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_electabuzz_shiny_palette:: @ 8D85E30
- .incbin "graphics/pokemon/palettes/electabuzz_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/electabuzz/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_electabuzz_icon:: @ 8D85E58
- .incbin "graphics/pokemon/icons/electabuzz_icon.4bpp"
+ .incbin "graphics/pokemon/electabuzz/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_electabuzz_footprint:: @ 8D86258
- .incbin "graphics/pokemon/footprints/electabuzz_footprint.1bpp"
+ .incbin "graphics/pokemon/electabuzz/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_magmar_still_front_pic:: @ 8D86278
- .incbin "graphics/pokemon/front_pics/magmar_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/magmar/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_magmar_palette:: @ 8D866A8
- .incbin "graphics/pokemon/palettes/magmar_palette.gbapal.lz"
+ .incbin "graphics/pokemon/magmar/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_magmar_back_pic:: @ 8D866D0
- .incbin "graphics/pokemon/back_pics/magmar_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/magmar/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_magmar_shiny_palette:: @ 8D86A08
- .incbin "graphics/pokemon/palettes/magmar_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/magmar/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_magmar_icon:: @ 8D86A30
- .incbin "graphics/pokemon/icons/magmar_icon.4bpp"
+ .incbin "graphics/pokemon/magmar/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_magmar_footprint:: @ 8D86E30
- .incbin "graphics/pokemon/footprints/magmar_footprint.1bpp"
+ .incbin "graphics/pokemon/magmar/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_pinsir_still_front_pic:: @ 8D86E50
- .incbin "graphics/pokemon/front_pics/pinsir_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pinsir/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pinsir_palette:: @ 8D87280
- .incbin "graphics/pokemon/palettes/pinsir_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pinsir/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_pinsir_back_pic:: @ 8D872A4
- .incbin "graphics/pokemon/back_pics/pinsir_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pinsir/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pinsir_shiny_palette:: @ 8D875F8
- .incbin "graphics/pokemon/palettes/pinsir_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pinsir/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_pinsir_icon:: @ 8D8761C
- .incbin "graphics/pokemon/icons/pinsir_icon.4bpp"
+ .incbin "graphics/pokemon/pinsir/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_pinsir_footprint:: @ 8D87A1C
- .incbin "graphics/pokemon/footprints/pinsir_footprint.1bpp"
+ .incbin "graphics/pokemon/pinsir/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_tauros_still_front_pic:: @ 8D87A3C
- .incbin "graphics/pokemon/front_pics/tauros_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tauros/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tauros_palette:: @ 8D87E9C
- .incbin "graphics/pokemon/palettes/tauros_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tauros/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_tauros_back_pic:: @ 8D87EC4
- .incbin "graphics/pokemon/back_pics/tauros_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tauros/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tauros_shiny_palette:: @ 8D88178
- .incbin "graphics/pokemon/palettes/tauros_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tauros/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_tauros_icon:: @ 8D881A0
- .incbin "graphics/pokemon/icons/tauros_icon.4bpp"
+ .incbin "graphics/pokemon/tauros/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_tauros_footprint:: @ 8D885A0
- .incbin "graphics/pokemon/footprints/tauros_footprint.1bpp"
+ .incbin "graphics/pokemon/tauros/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_magikarp_still_front_pic:: @ 8D885C0
- .incbin "graphics/pokemon/front_pics/magikarp_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/magikarp/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_magikarp_palette:: @ 8D88908
- .incbin "graphics/pokemon/palettes/magikarp_palette.gbapal.lz"
+ .incbin "graphics/pokemon/magikarp/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_magikarp_back_pic:: @ 8D88930
- .incbin "graphics/pokemon/back_pics/magikarp_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/magikarp/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_magikarp_shiny_palette:: @ 8D88C60
- .incbin "graphics/pokemon/palettes/magikarp_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/magikarp/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_magikarp_icon:: @ 8D88C88
- .incbin "graphics/pokemon/icons/magikarp_icon.4bpp"
+ .incbin "graphics/pokemon/magikarp/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_magikarp_footprint:: @ 8D89088
- .incbin "graphics/pokemon/footprints/magikarp_footprint.1bpp"
+ .incbin "graphics/pokemon/magikarp/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_gyarados_still_front_pic:: @ 8D890A8
- .incbin "graphics/pokemon/front_pics/gyarados_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gyarados/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gyarados_palette:: @ 8D8964C
- .incbin "graphics/pokemon/palettes/gyarados_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gyarados/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_gyarados_back_pic:: @ 8D89674
- .incbin "graphics/pokemon/back_pics/gyarados_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gyarados/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gyarados_shiny_palette:: @ 8D89B2C
- .incbin "graphics/pokemon/palettes/gyarados_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gyarados/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_gyarados_icon:: @ 8D89B54
- .incbin "graphics/pokemon/icons/gyarados_icon.4bpp"
+ .incbin "graphics/pokemon/gyarados/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_gyarados_footprint:: @ 8D89F54
- .incbin "graphics/pokemon/footprints/gyarados_footprint.1bpp"
+ .incbin "graphics/pokemon/gyarados/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_lapras_still_front_pic:: @ 8D89F74
- .incbin "graphics/pokemon/front_pics/lapras_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lapras/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lapras_palette:: @ 8D8A354
- .incbin "graphics/pokemon/palettes/lapras_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lapras/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_lapras_back_pic:: @ 8D8A37C
- .incbin "graphics/pokemon/back_pics/lapras_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lapras/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lapras_shiny_palette:: @ 8D8A6C0
- .incbin "graphics/pokemon/palettes/lapras_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lapras/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_lapras_icon:: @ 8D8A6E8
- .incbin "graphics/pokemon/icons/lapras_icon.4bpp"
+ .incbin "graphics/pokemon/lapras/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_lapras_footprint:: @ 8D8AAE8
- .incbin "graphics/pokemon/footprints/lapras_footprint.1bpp"
+ .incbin "graphics/pokemon/lapras/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ditto_still_front_pic:: @ 8D8AB08
- .incbin "graphics/pokemon/front_pics/ditto_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ditto/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ditto_palette:: @ 8D8ACF8
- .incbin "graphics/pokemon/palettes/ditto_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ditto/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ditto_back_pic:: @ 8D8AD18
- .incbin "graphics/pokemon/back_pics/ditto_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ditto/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ditto_shiny_palette:: @ 8D8AF18
- .incbin "graphics/pokemon/palettes/ditto_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ditto/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ditto_icon:: @ 8D8AF38
- .incbin "graphics/pokemon/icons/ditto_icon.4bpp"
+ .incbin "graphics/pokemon/ditto/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ditto_footprint:: @ 8D8B338
- .incbin "graphics/pokemon/footprints/ditto_footprint.1bpp"
+ .incbin "graphics/pokemon/ditto/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_eevee_still_front_pic:: @ 8D8B358
- .incbin "graphics/pokemon/front_pics/eevee_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/eevee/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_eevee_palette:: @ 8D8B644
- .incbin "graphics/pokemon/palettes/eevee_palette.gbapal.lz"
+ .incbin "graphics/pokemon/eevee/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_eevee_back_pic:: @ 8D8B66C
- .incbin "graphics/pokemon/back_pics/eevee_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/eevee/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_eevee_shiny_palette:: @ 8D8B994
- .incbin "graphics/pokemon/palettes/eevee_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/eevee/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_eevee_icon:: @ 8D8B9BC
- .incbin "graphics/pokemon/icons/eevee_icon.4bpp"
+ .incbin "graphics/pokemon/eevee/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_eevee_footprint:: @ 8D8BDBC
- .incbin "graphics/pokemon/footprints/eevee_footprint.1bpp"
+ .incbin "graphics/pokemon/eevee/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_vaporeon_still_front_pic:: @ 8D8BDDC
- .incbin "graphics/pokemon/front_pics/vaporeon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/vaporeon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_vaporeon_palette:: @ 8D8C170
- .incbin "graphics/pokemon/palettes/vaporeon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/vaporeon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_vaporeon_back_pic:: @ 8D8C198
- .incbin "graphics/pokemon/back_pics/vaporeon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/vaporeon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_vaporeon_shiny_palette:: @ 8D8C460
- .incbin "graphics/pokemon/palettes/vaporeon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/vaporeon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_vaporeon_icon:: @ 8D8C488
- .incbin "graphics/pokemon/icons/vaporeon_icon.4bpp"
+ .incbin "graphics/pokemon/vaporeon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_vaporeon_footprint:: @ 8D8C888
- .incbin "graphics/pokemon/footprints/vaporeon_footprint.1bpp"
+ .incbin "graphics/pokemon/vaporeon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_jolteon_still_front_pic:: @ 8D8C8A8
- .incbin "graphics/pokemon/front_pics/jolteon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/jolteon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_jolteon_palette:: @ 8D8CBF8
- .incbin "graphics/pokemon/palettes/jolteon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/jolteon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_jolteon_back_pic:: @ 8D8CC20
- .incbin "graphics/pokemon/back_pics/jolteon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/jolteon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_jolteon_shiny_palette:: @ 8D8CFCC
- .incbin "graphics/pokemon/palettes/jolteon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/jolteon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_jolteon_icon:: @ 8D8CFF4
- .incbin "graphics/pokemon/icons/jolteon_icon.4bpp"
+ .incbin "graphics/pokemon/jolteon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_jolteon_footprint:: @ 8D8D3F4
- .incbin "graphics/pokemon/footprints/jolteon_footprint.1bpp"
+ .incbin "graphics/pokemon/jolteon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_flareon_still_front_pic:: @ 8D8D414
- .incbin "graphics/pokemon/front_pics/flareon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/flareon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_flareon_palette:: @ 8D8D798
- .incbin "graphics/pokemon/palettes/flareon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/flareon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_flareon_back_pic:: @ 8D8D7C0
- .incbin "graphics/pokemon/back_pics/flareon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/flareon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_flareon_shiny_palette:: @ 8D8DB50
- .incbin "graphics/pokemon/palettes/flareon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/flareon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_flareon_icon:: @ 8D8DB78
- .incbin "graphics/pokemon/icons/flareon_icon.4bpp"
+ .incbin "graphics/pokemon/flareon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_flareon_footprint:: @ 8D8DF78
- .incbin "graphics/pokemon/footprints/flareon_footprint.1bpp"
+ .incbin "graphics/pokemon/flareon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_porygon_still_front_pic:: @ 8D8DF98
- .incbin "graphics/pokemon/front_pics/porygon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/porygon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_porygon_palette:: @ 8D8E250
- .incbin "graphics/pokemon/palettes/porygon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/porygon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_porygon_back_pic:: @ 8D8E274
- .incbin "graphics/pokemon/back_pics/porygon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/porygon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_porygon_shiny_palette:: @ 8D8E52C
- .incbin "graphics/pokemon/palettes/porygon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/porygon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_porygon_icon:: @ 8D8E550
- .incbin "graphics/pokemon/icons/porygon_icon.4bpp"
+ .incbin "graphics/pokemon/porygon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_porygon_footprint:: @ 8D8E950
- .incbin "graphics/pokemon/footprints/porygon_footprint.1bpp"
+ .incbin "graphics/pokemon/porygon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_omanyte_still_front_pic:: @ 8D8E970
- .incbin "graphics/pokemon/front_pics/omanyte_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/omanyte/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_omanyte_palette:: @ 8D8EC00
- .incbin "graphics/pokemon/palettes/omanyte_palette.gbapal.lz"
+ .incbin "graphics/pokemon/omanyte/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_omanyte_back_pic:: @ 8D8EC28
- .incbin "graphics/pokemon/back_pics/omanyte_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/omanyte/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_omanyte_shiny_palette:: @ 8D8EF74
- .incbin "graphics/pokemon/palettes/omanyte_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/omanyte/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_omanyte_icon:: @ 8D8EF9C
- .incbin "graphics/pokemon/icons/omanyte_icon.4bpp"
+ .incbin "graphics/pokemon/omanyte/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_omanyte_footprint:: @ 8D8F39C
- .incbin "graphics/pokemon/footprints/omanyte_footprint.1bpp"
+ .incbin "graphics/pokemon/omanyte/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_omastar_still_front_pic:: @ 8D8F3BC
- .incbin "graphics/pokemon/front_pics/omastar_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/omastar/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_omastar_palette:: @ 8D8F77C
- .incbin "graphics/pokemon/palettes/omastar_palette.gbapal.lz"
+ .incbin "graphics/pokemon/omastar/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_omastar_back_pic:: @ 8D8F7A4
- .incbin "graphics/pokemon/back_pics/omastar_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/omastar/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_omastar_shiny_palette:: @ 8D8FAE4
- .incbin "graphics/pokemon/palettes/omastar_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/omastar/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_omastar_icon:: @ 8D8FB0C
- .incbin "graphics/pokemon/icons/omastar_icon.4bpp"
+ .incbin "graphics/pokemon/omastar/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_omastar_footprint:: @ 8D8FF0C
- .incbin "graphics/pokemon/footprints/omastar_footprint.1bpp"
+ .incbin "graphics/pokemon/omastar/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_kabuto_still_front_pic:: @ 8D8FF2C
- .incbin "graphics/pokemon/front_pics/kabuto_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kabuto/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kabuto_palette:: @ 8D90154
- .incbin "graphics/pokemon/palettes/kabuto_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kabuto/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_kabuto_back_pic:: @ 8D9017C
- .incbin "graphics/pokemon/back_pics/kabuto_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kabuto/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kabuto_shiny_palette:: @ 8D90414
- .incbin "graphics/pokemon/palettes/kabuto_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kabuto/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_kabuto_icon:: @ 8D9043C
- .incbin "graphics/pokemon/icons/kabuto_icon.4bpp"
+ .incbin "graphics/pokemon/kabuto/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_kabuto_footprint:: @ 8D9083C
- .incbin "graphics/pokemon/footprints/kabuto_footprint.1bpp"
+ .incbin "graphics/pokemon/kabuto/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_kabutops_still_front_pic:: @ 8D9085C
- .incbin "graphics/pokemon/front_pics/kabutops_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kabutops/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kabutops_palette:: @ 8D90C6C
- .incbin "graphics/pokemon/palettes/kabutops_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kabutops/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_kabutops_back_pic:: @ 8D90C90
- .incbin "graphics/pokemon/back_pics/kabutops_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kabutops/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kabutops_shiny_palette:: @ 8D91034
- .incbin "graphics/pokemon/palettes/kabutops_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kabutops/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_kabutops_icon:: @ 8D91058
- .incbin "graphics/pokemon/icons/kabutops_icon.4bpp"
+ .incbin "graphics/pokemon/kabutops/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_kabutops_footprint:: @ 8D91458
- .incbin "graphics/pokemon/footprints/kabutops_footprint.1bpp"
+ .incbin "graphics/pokemon/kabutops/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_aerodactyl_still_front_pic:: @ 8D91478
- .incbin "graphics/pokemon/front_pics/aerodactyl_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/aerodactyl/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_aerodactyl_palette:: @ 8D918C8
- .incbin "graphics/pokemon/palettes/aerodactyl_palette.gbapal.lz"
+ .incbin "graphics/pokemon/aerodactyl/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_aerodactyl_back_pic:: @ 8D918F0
- .incbin "graphics/pokemon/back_pics/aerodactyl_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/aerodactyl/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_aerodactyl_shiny_palette:: @ 8D91BF4
- .incbin "graphics/pokemon/palettes/aerodactyl_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/aerodactyl/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_aerodactyl_icon:: @ 8D91C1C
- .incbin "graphics/pokemon/icons/aerodactyl_icon.4bpp"
+ .incbin "graphics/pokemon/aerodactyl/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_aerodactyl_footprint:: @ 8D9201C
- .incbin "graphics/pokemon/footprints/aerodactyl_footprint.1bpp"
+ .incbin "graphics/pokemon/aerodactyl/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_snorlax_still_front_pic:: @ 8D9203C
- .incbin "graphics/pokemon/front_pics/snorlax_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/snorlax/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_snorlax_palette:: @ 8D92410
- .incbin "graphics/pokemon/palettes/snorlax_palette.gbapal.lz"
+ .incbin "graphics/pokemon/snorlax/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_snorlax_back_pic:: @ 8D92438
- .incbin "graphics/pokemon/back_pics/snorlax_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/snorlax/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_snorlax_shiny_palette:: @ 8D92654
- .incbin "graphics/pokemon/palettes/snorlax_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/snorlax/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_snorlax_icon:: @ 8D9267C
- .incbin "graphics/pokemon/icons/snorlax_icon.4bpp"
+ .incbin "graphics/pokemon/snorlax/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_snorlax_footprint:: @ 8D92A7C
- .incbin "graphics/pokemon/footprints/snorlax_footprint.1bpp"
+ .incbin "graphics/pokemon/snorlax/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_articuno_still_front_pic:: @ 8D92A9C
- .incbin "graphics/pokemon/front_pics/articuno_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/articuno/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_articuno_palette:: @ 8D92F94
- .incbin "graphics/pokemon/palettes/articuno_palette.gbapal.lz"
+ .incbin "graphics/pokemon/articuno/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_articuno_back_pic:: @ 8D92FBC
- .incbin "graphics/pokemon/back_pics/articuno_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/articuno/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_articuno_shiny_palette:: @ 8D93218
- .incbin "graphics/pokemon/palettes/articuno_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/articuno/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_articuno_icon:: @ 8D93240
- .incbin "graphics/pokemon/icons/articuno_icon.4bpp"
+ .incbin "graphics/pokemon/articuno/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_articuno_footprint:: @ 8D93640
- .incbin "graphics/pokemon/footprints/articuno_footprint.1bpp"
+ .incbin "graphics/pokemon/articuno/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_zapdos_still_front_pic:: @ 8D93660
- .incbin "graphics/pokemon/front_pics/zapdos_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/zapdos/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_zapdos_palette:: @ 8D93AB0
- .incbin "graphics/pokemon/palettes/zapdos_palette.gbapal.lz"
+ .incbin "graphics/pokemon/zapdos/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_zapdos_back_pic:: @ 8D93AD8
- .incbin "graphics/pokemon/back_pics/zapdos_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/zapdos/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_zapdos_shiny_palette:: @ 8D93E14
- .incbin "graphics/pokemon/palettes/zapdos_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/zapdos/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_zapdos_icon:: @ 8D93E3C
- .incbin "graphics/pokemon/icons/zapdos_icon.4bpp"
+ .incbin "graphics/pokemon/zapdos/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_zapdos_footprint:: @ 8D9423C
- .incbin "graphics/pokemon/footprints/zapdos_footprint.1bpp"
+ .incbin "graphics/pokemon/zapdos/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_moltres_still_front_pic:: @ 8D9425C
- .incbin "graphics/pokemon/front_pics/moltres_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/moltres/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_moltres_palette:: @ 8D94728
- .incbin "graphics/pokemon/palettes/moltres_palette.gbapal.lz"
+ .incbin "graphics/pokemon/moltres/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_moltres_back_pic:: @ 8D94750
- .incbin "graphics/pokemon/back_pics/moltres_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/moltres/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_moltres_shiny_palette:: @ 8D94A8C
- .incbin "graphics/pokemon/palettes/moltres_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/moltres/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_moltres_icon:: @ 8D94AB4
- .incbin "graphics/pokemon/icons/moltres_icon.4bpp"
+ .incbin "graphics/pokemon/moltres/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_moltres_footprint:: @ 8D94EB4
- .incbin "graphics/pokemon/footprints/moltres_footprint.1bpp"
+ .incbin "graphics/pokemon/moltres/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_dratini_still_front_pic:: @ 8D94ED4
- .incbin "graphics/pokemon/front_pics/dratini_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dratini/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dratini_palette:: @ 8D95190
- .incbin "graphics/pokemon/palettes/dratini_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dratini/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_dratini_back_pic:: @ 8D951B4
- .incbin "graphics/pokemon/back_pics/dratini_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dratini/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dratini_shiny_palette:: @ 8D95444
- .incbin "graphics/pokemon/palettes/dratini_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dratini/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_dratini_icon:: @ 8D95468
- .incbin "graphics/pokemon/icons/dratini_icon.4bpp"
+ .incbin "graphics/pokemon/dratini/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_dratini_footprint:: @ 8D95868
- .incbin "graphics/pokemon/footprints/dratini_footprint.1bpp"
+ .incbin "graphics/pokemon/dratini/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_dragonair_still_front_pic:: @ 8D95888
- .incbin "graphics/pokemon/front_pics/dragonair_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dragonair/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dragonair_palette:: @ 8D95C20
- .incbin "graphics/pokemon/palettes/dragonair_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dragonair/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_dragonair_back_pic:: @ 8D95C48
- .incbin "graphics/pokemon/back_pics/dragonair_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dragonair/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dragonair_shiny_palette:: @ 8D95F58
- .incbin "graphics/pokemon/palettes/dragonair_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dragonair/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_dragonair_icon:: @ 8D95F80
- .incbin "graphics/pokemon/icons/dragonair_icon.4bpp"
+ .incbin "graphics/pokemon/dragonair/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_dragonair_footprint:: @ 8D96380
- .incbin "graphics/pokemon/footprints/dragonair_footprint.1bpp"
+ .incbin "graphics/pokemon/dragonair/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_dragonite_still_front_pic:: @ 8D963A0
- .incbin "graphics/pokemon/front_pics/dragonite_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dragonite/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dragonite_palette:: @ 8D968F0
- .incbin "graphics/pokemon/palettes/dragonite_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dragonite/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_dragonite_back_pic:: @ 8D96918
- .incbin "graphics/pokemon/back_pics/dragonite_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dragonite/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dragonite_shiny_palette:: @ 8D96C10
- .incbin "graphics/pokemon/palettes/dragonite_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dragonite/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_dragonite_icon:: @ 8D96C38
- .incbin "graphics/pokemon/icons/dragonite_icon.4bpp"
+ .incbin "graphics/pokemon/dragonite/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_dragonite_footprint:: @ 8D97038
- .incbin "graphics/pokemon/footprints/dragonite_footprint.1bpp"
+ .incbin "graphics/pokemon/dragonite/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_mewtwo_still_front_pic:: @ 8D97058
- .incbin "graphics/pokemon/front_pics/mewtwo_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mewtwo/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mewtwo_palette:: @ 8D97494
- .incbin "graphics/pokemon/palettes/mewtwo_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mewtwo/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_mewtwo_back_pic:: @ 8D974B8
- .incbin "graphics/pokemon/back_pics/mewtwo_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mewtwo/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mewtwo_shiny_palette:: @ 8D97884
- .incbin "graphics/pokemon/palettes/mewtwo_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mewtwo/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_mewtwo_icon:: @ 8D978A8
- .incbin "graphics/pokemon/icons/mewtwo_icon.4bpp"
+ .incbin "graphics/pokemon/mewtwo/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_mewtwo_footprint:: @ 8D97CA8
- .incbin "graphics/pokemon/footprints/mewtwo_footprint.1bpp"
+ .incbin "graphics/pokemon/mewtwo/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_mew_still_front_pic:: @ 8D97CC8
- .incbin "graphics/pokemon/front_pics/mew_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mew/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mew_palette:: @ 8D97F88
- .incbin "graphics/pokemon/palettes/mew_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mew/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_mew_back_pic:: @ 8D97FAC
- .incbin "graphics/pokemon/back_pics/mew_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mew/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mew_shiny_palette:: @ 8D982FC
- .incbin "graphics/pokemon/palettes/mew_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mew/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_mew_icon:: @ 8D98320
- .incbin "graphics/pokemon/icons/mew_icon.4bpp"
+ .incbin "graphics/pokemon/mew/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_mew_footprint:: @ 8D98720
- .incbin "graphics/pokemon/footprints/mew_footprint.1bpp"
+ .incbin "graphics/pokemon/mew/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_chikorita_still_front_pic:: @ 8D98740
- .incbin "graphics/pokemon/front_pics/chikorita_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/chikorita/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_chikorita_palette:: @ 8D989A8
- .incbin "graphics/pokemon/palettes/chikorita_palette.gbapal.lz"
+ .incbin "graphics/pokemon/chikorita/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_chikorita_back_pic:: @ 8D989D0
- .incbin "graphics/pokemon/back_pics/chikorita_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/chikorita/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_chikorita_shiny_palette:: @ 8D98C94
- .incbin "graphics/pokemon/palettes/chikorita_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/chikorita/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_chikorita_icon:: @ 8D98CBC
- .incbin "graphics/pokemon/icons/chikorita_icon.4bpp"
+ .incbin "graphics/pokemon/chikorita/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_chikorita_footprint:: @ 8D990BC
- .incbin "graphics/pokemon/footprints/chikorita_footprint.1bpp"
+ .incbin "graphics/pokemon/chikorita/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_bayleef_still_front_pic:: @ 8D990DC
- .incbin "graphics/pokemon/front_pics/bayleef_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/bayleef/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_bayleef_palette:: @ 8D994B0
- .incbin "graphics/pokemon/palettes/bayleef_palette.gbapal.lz"
+ .incbin "graphics/pokemon/bayleef/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_bayleef_back_pic:: @ 8D994D8
- .incbin "graphics/pokemon/back_pics/bayleef_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/bayleef/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_bayleef_shiny_palette:: @ 8D99868
- .incbin "graphics/pokemon/palettes/bayleef_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/bayleef/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_bayleef_icon:: @ 8D99890
- .incbin "graphics/pokemon/icons/bayleef_icon.4bpp"
+ .incbin "graphics/pokemon/bayleef/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_bayleef_footprint:: @ 8D99C90
- .incbin "graphics/pokemon/footprints/bayleef_footprint.1bpp"
+ .incbin "graphics/pokemon/bayleef/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_meganium_still_front_pic:: @ 8D99CB0
- .incbin "graphics/pokemon/front_pics/meganium_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/meganium/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_meganium_palette:: @ 8D9A20C
- .incbin "graphics/pokemon/palettes/meganium_palette.gbapal.lz"
+ .incbin "graphics/pokemon/meganium/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_meganium_back_pic:: @ 8D9A234
- .incbin "graphics/pokemon/back_pics/meganium_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/meganium/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_meganium_shiny_palette:: @ 8D9A584
- .incbin "graphics/pokemon/palettes/meganium_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/meganium/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_meganium_icon:: @ 8D9A5AC
- .incbin "graphics/pokemon/icons/meganium_icon.4bpp"
+ .incbin "graphics/pokemon/meganium/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_meganium_footprint:: @ 8D9A9AC
- .incbin "graphics/pokemon/footprints/meganium_footprint.1bpp"
+ .incbin "graphics/pokemon/meganium/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_cyndaquil_still_front_pic:: @ 8D9A9CC
- .incbin "graphics/pokemon/front_pics/cyndaquil_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cyndaquil/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cyndaquil_palette:: @ 8D9AC58
- .incbin "graphics/pokemon/palettes/cyndaquil_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cyndaquil/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_cyndaquil_back_pic:: @ 8D9AC80
- .incbin "graphics/pokemon/back_pics/cyndaquil_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cyndaquil/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cyndaquil_shiny_palette:: @ 8D9AFAC
- .incbin "graphics/pokemon/palettes/cyndaquil_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cyndaquil/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_cyndaquil_icon:: @ 8D9AFD4
- .incbin "graphics/pokemon/icons/cyndaquil_icon.4bpp"
+ .incbin "graphics/pokemon/cyndaquil/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_cyndaquil_footprint:: @ 8D9B3D4
- .incbin "graphics/pokemon/footprints/cyndaquil_footprint.1bpp"
+ .incbin "graphics/pokemon/cyndaquil/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_quilava_still_front_pic:: @ 8D9B3F4
- .incbin "graphics/pokemon/front_pics/quilava_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/quilava/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_quilava_palette:: @ 8D9B710
- .incbin "graphics/pokemon/palettes/quilava_palette.gbapal.lz"
+ .incbin "graphics/pokemon/quilava/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_quilava_back_pic:: @ 8D9B738
- .incbin "graphics/pokemon/back_pics/quilava_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/quilava/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_quilava_shiny_palette:: @ 8D9BAAC
- .incbin "graphics/pokemon/palettes/quilava_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/quilava/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_quilava_icon:: @ 8D9BAD4
- .incbin "graphics/pokemon/icons/quilava_icon.4bpp"
+ .incbin "graphics/pokemon/quilava/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_quilava_footprint:: @ 8D9BED4
- .incbin "graphics/pokemon/footprints/quilava_footprint.1bpp"
+ .incbin "graphics/pokemon/quilava/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_typhlosion_still_front_pic:: @ 8D9BEF4
- .incbin "graphics/pokemon/front_pics/typhlosion_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/typhlosion/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_typhlosion_palette:: @ 8D9C31C
- .incbin "graphics/pokemon/palettes/typhlosion_palette.gbapal.lz"
+ .incbin "graphics/pokemon/typhlosion/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_typhlosion_back_pic:: @ 8D9C344
- .incbin "graphics/pokemon/back_pics/typhlosion_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/typhlosion/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_typhlosion_shiny_palette:: @ 8D9C748
- .incbin "graphics/pokemon/palettes/typhlosion_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/typhlosion/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_typhlosion_icon:: @ 8D9C770
- .incbin "graphics/pokemon/icons/typhlosion_icon.4bpp"
+ .incbin "graphics/pokemon/typhlosion/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_typhlosion_footprint:: @ 8D9CB70
- .incbin "graphics/pokemon/footprints/typhlosion_footprint.1bpp"
+ .incbin "graphics/pokemon/typhlosion/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_totodile_still_front_pic:: @ 8D9CB90
- .incbin "graphics/pokemon/front_pics/totodile_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/totodile/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_totodile_palette:: @ 8D9CE34
- .incbin "graphics/pokemon/palettes/totodile_palette.gbapal.lz"
+ .incbin "graphics/pokemon/totodile/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_totodile_back_pic:: @ 8D9CE5C
- .incbin "graphics/pokemon/back_pics/totodile_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/totodile/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_totodile_shiny_palette:: @ 8D9D13C
- .incbin "graphics/pokemon/palettes/totodile_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/totodile/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_totodile_icon:: @ 8D9D164
- .incbin "graphics/pokemon/icons/totodile_icon.4bpp"
+ .incbin "graphics/pokemon/totodile/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_totodile_footprint:: @ 8D9D564
- .incbin "graphics/pokemon/footprints/totodile_footprint.1bpp"
+ .incbin "graphics/pokemon/totodile/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_croconaw_still_front_pic:: @ 8D9D584
- .incbin "graphics/pokemon/front_pics/croconaw_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/croconaw/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_croconaw_palette:: @ 8D9D8EC
- .incbin "graphics/pokemon/palettes/croconaw_palette.gbapal.lz"
+ .incbin "graphics/pokemon/croconaw/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_croconaw_back_pic:: @ 8D9D914
- .incbin "graphics/pokemon/back_pics/croconaw_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/croconaw/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_croconaw_shiny_palette:: @ 8D9DC64
- .incbin "graphics/pokemon/palettes/croconaw_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/croconaw/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_croconaw_icon:: @ 8D9DC8C
- .incbin "graphics/pokemon/icons/croconaw_icon.4bpp"
+ .incbin "graphics/pokemon/croconaw/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_croconaw_footprint:: @ 8D9E08C
- .incbin "graphics/pokemon/footprints/croconaw_footprint.1bpp"
+ .incbin "graphics/pokemon/croconaw/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_feraligatr_still_front_pic:: @ 8D9E0AC
- .incbin "graphics/pokemon/front_pics/feraligatr_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/feraligatr/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_feraligatr_palette:: @ 8D9E618
- .incbin "graphics/pokemon/palettes/feraligatr_palette.gbapal.lz"
+ .incbin "graphics/pokemon/feraligatr/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_feraligatr_back_pic:: @ 8D9E640
- .incbin "graphics/pokemon/back_pics/feraligatr_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/feraligatr/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_feraligatr_shiny_palette:: @ 8D9EB0C
- .incbin "graphics/pokemon/palettes/feraligatr_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/feraligatr/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_feraligatr_icon:: @ 8D9EB34
- .incbin "graphics/pokemon/icons/feraligatr_icon.4bpp"
+ .incbin "graphics/pokemon/feraligatr/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_feraligatr_footprint:: @ 8D9EF34
- .incbin "graphics/pokemon/footprints/feraligatr_footprint.1bpp"
+ .incbin "graphics/pokemon/feraligatr/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_sentret_still_front_pic:: @ 8D9EF54
- .incbin "graphics/pokemon/front_pics/sentret_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sentret/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sentret_palette:: @ 8D9F230
- .incbin "graphics/pokemon/palettes/sentret_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sentret/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_sentret_back_pic:: @ 8D9F258
- .incbin "graphics/pokemon/back_pics/sentret_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sentret/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sentret_shiny_palette:: @ 8D9F4FC
- .incbin "graphics/pokemon/palettes/sentret_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sentret/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_sentret_icon:: @ 8D9F524
- .incbin "graphics/pokemon/icons/sentret_icon.4bpp"
+ .incbin "graphics/pokemon/sentret/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_sentret_footprint:: @ 8D9F924
- .incbin "graphics/pokemon/footprints/sentret_footprint.1bpp"
+ .incbin "graphics/pokemon/sentret/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_furret_still_front_pic:: @ 8D9F944
- .incbin "graphics/pokemon/front_pics/furret_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/furret/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_furret_palette:: @ 8D9FC78
- .incbin "graphics/pokemon/palettes/furret_palette.gbapal.lz"
+ .incbin "graphics/pokemon/furret/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_furret_back_pic:: @ 8D9FCA0
- .incbin "graphics/pokemon/back_pics/furret_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/furret/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_furret_shiny_palette:: @ 8D9FFC8
- .incbin "graphics/pokemon/palettes/furret_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/furret/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_furret_icon:: @ 8D9FFF0
- .incbin "graphics/pokemon/icons/furret_icon.4bpp"
+ .incbin "graphics/pokemon/furret/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_furret_footprint:: @ 8DA03F0
- .incbin "graphics/pokemon/footprints/furret_footprint.1bpp"
+ .incbin "graphics/pokemon/furret/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_hoothoot_still_front_pic:: @ 8DA0410
- .incbin "graphics/pokemon/front_pics/hoothoot_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hoothoot/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hoothoot_palette:: @ 8DA0694
- .incbin "graphics/pokemon/palettes/hoothoot_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hoothoot/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_hoothoot_back_pic:: @ 8DA06BC
- .incbin "graphics/pokemon/back_pics/hoothoot_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hoothoot/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hoothoot_shiny_palette:: @ 8DA09C4
- .incbin "graphics/pokemon/palettes/hoothoot_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hoothoot/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_hoothoot_icon:: @ 8DA09EC
- .incbin "graphics/pokemon/icons/hoothoot_icon.4bpp"
+ .incbin "graphics/pokemon/hoothoot/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_hoothoot_footprint:: @ 8DA0DEC
- .incbin "graphics/pokemon/footprints/hoothoot_footprint.1bpp"
+ .incbin "graphics/pokemon/hoothoot/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_noctowl_still_front_pic:: @ 8DA0E0C
- .incbin "graphics/pokemon/front_pics/noctowl_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/noctowl/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_noctowl_palette:: @ 8DA1160
- .incbin "graphics/pokemon/palettes/noctowl_palette.gbapal.lz"
+ .incbin "graphics/pokemon/noctowl/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_noctowl_back_pic:: @ 8DA1188
- .incbin "graphics/pokemon/back_pics/noctowl_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/noctowl/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_noctowl_shiny_palette:: @ 8DA14E4
- .incbin "graphics/pokemon/palettes/noctowl_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/noctowl/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_noctowl_icon:: @ 8DA150C
- .incbin "graphics/pokemon/icons/noctowl_icon.4bpp"
+ .incbin "graphics/pokemon/noctowl/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_noctowl_footprint:: @ 8DA190C
- .incbin "graphics/pokemon/footprints/noctowl_footprint.1bpp"
+ .incbin "graphics/pokemon/noctowl/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ledyba_still_front_pic:: @ 8DA192C
- .incbin "graphics/pokemon/front_pics/ledyba_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ledyba/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ledyba_palette:: @ 8DA1C20
- .incbin "graphics/pokemon/palettes/ledyba_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ledyba/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ledyba_back_pic:: @ 8DA1C48
- .incbin "graphics/pokemon/back_pics/ledyba_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ledyba/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ledyba_shiny_palette:: @ 8DA1F78
- .incbin "graphics/pokemon/palettes/ledyba_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ledyba/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ledyba_icon:: @ 8DA1FA0
- .incbin "graphics/pokemon/icons/ledyba_icon.4bpp"
+ .incbin "graphics/pokemon/ledyba/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ledyba_footprint:: @ 8DA23A0
- .incbin "graphics/pokemon/footprints/ledyba_footprint.1bpp"
+ .incbin "graphics/pokemon/ledyba/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ledian_still_front_pic:: @ 8DA23C0
- .incbin "graphics/pokemon/front_pics/ledian_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ledian/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ledian_palette:: @ 8DA2748
- .incbin "graphics/pokemon/palettes/ledian_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ledian/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ledian_back_pic:: @ 8DA2770
- .incbin "graphics/pokemon/back_pics/ledian_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ledian/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ledian_shiny_palette:: @ 8DA2AC8
- .incbin "graphics/pokemon/palettes/ledian_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ledian/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ledian_icon:: @ 8DA2AF0
- .incbin "graphics/pokemon/icons/ledian_icon.4bpp"
+ .incbin "graphics/pokemon/ledian/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ledian_footprint:: @ 8DA2EF0
- .incbin "graphics/pokemon/footprints/ledian_footprint.1bpp"
+ .incbin "graphics/pokemon/ledian/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_spinarak_still_front_pic:: @ 8DA2F10
- .incbin "graphics/pokemon/front_pics/spinarak_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/spinarak/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_spinarak_palette:: @ 8DA3184
- .incbin "graphics/pokemon/palettes/spinarak_palette.gbapal.lz"
+ .incbin "graphics/pokemon/spinarak/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_spinarak_back_pic:: @ 8DA31AC
- .incbin "graphics/pokemon/back_pics/spinarak_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/spinarak/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_spinarak_shiny_palette:: @ 8DA3410
- .incbin "graphics/pokemon/palettes/spinarak_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/spinarak/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_spinarak_icon:: @ 8DA3438
- .incbin "graphics/pokemon/icons/spinarak_icon.4bpp"
+ .incbin "graphics/pokemon/spinarak/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_spinarak_footprint:: @ 8DA3838
- .incbin "graphics/pokemon/footprints/spinarak_footprint.1bpp"
+ .incbin "graphics/pokemon/spinarak/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ariados_still_front_pic:: @ 8DA3858
- .incbin "graphics/pokemon/front_pics/ariados_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ariados/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ariados_palette:: @ 8DA3C18
- .incbin "graphics/pokemon/palettes/ariados_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ariados/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ariados_back_pic:: @ 8DA3C40
- .incbin "graphics/pokemon/back_pics/ariados_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ariados/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ariados_shiny_palette:: @ 8DA3FB8
- .incbin "graphics/pokemon/palettes/ariados_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ariados/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ariados_icon:: @ 8DA3FE0
- .incbin "graphics/pokemon/icons/ariados_icon.4bpp"
+ .incbin "graphics/pokemon/ariados/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ariados_footprint:: @ 8DA43E0
- .incbin "graphics/pokemon/footprints/ariados_footprint.1bpp"
+ .incbin "graphics/pokemon/ariados/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_crobat_still_front_pic:: @ 8DA4400
- .incbin "graphics/pokemon/front_pics/crobat_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/crobat/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_crobat_palette:: @ 8DA47B0
- .incbin "graphics/pokemon/palettes/crobat_palette.gbapal.lz"
+ .incbin "graphics/pokemon/crobat/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_crobat_back_pic:: @ 8DA47D8
- .incbin "graphics/pokemon/back_pics/crobat_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/crobat/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_crobat_shiny_palette:: @ 8DA4AE0
- .incbin "graphics/pokemon/palettes/crobat_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/crobat/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_crobat_icon:: @ 8DA4B08
- .incbin "graphics/pokemon/icons/crobat_icon.4bpp"
+ .incbin "graphics/pokemon/crobat/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_crobat_footprint:: @ 8DA4F08
- .incbin "graphics/pokemon/footprints/crobat_footprint.1bpp"
+ .incbin "graphics/pokemon/crobat/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_chinchou_still_front_pic:: @ 8DA4F28
- .incbin "graphics/pokemon/front_pics/chinchou_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/chinchou/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_chinchou_palette:: @ 8DA5200
- .incbin "graphics/pokemon/palettes/chinchou_palette.gbapal.lz"
+ .incbin "graphics/pokemon/chinchou/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_chinchou_back_pic:: @ 8DA5228
- .incbin "graphics/pokemon/back_pics/chinchou_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/chinchou/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_chinchou_shiny_palette:: @ 8DA5520
- .incbin "graphics/pokemon/palettes/chinchou_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/chinchou/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_chinchou_icon:: @ 8DA5548
- .incbin "graphics/pokemon/icons/chinchou_icon.4bpp"
+ .incbin "graphics/pokemon/chinchou/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_chinchou_footprint:: @ 8DA5948
- .incbin "graphics/pokemon/footprints/chinchou_footprint.1bpp"
+ .incbin "graphics/pokemon/chinchou/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_lanturn_still_front_pic:: @ 8DA5968
- .incbin "graphics/pokemon/front_pics/lanturn_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lanturn/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lanturn_palette:: @ 8DA5CD8
- .incbin "graphics/pokemon/palettes/lanturn_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lanturn/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_lanturn_back_pic:: @ 8DA5D00
- .incbin "graphics/pokemon/back_pics/lanturn_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lanturn/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lanturn_shiny_palette:: @ 8DA6000
- .incbin "graphics/pokemon/palettes/lanturn_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lanturn/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_lanturn_icon:: @ 8DA6028
- .incbin "graphics/pokemon/icons/lanturn_icon.4bpp"
+ .incbin "graphics/pokemon/lanturn/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_lanturn_footprint:: @ 8DA6428
- .incbin "graphics/pokemon/footprints/lanturn_footprint.1bpp"
+ .incbin "graphics/pokemon/lanturn/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_pichu_still_front_pic:: @ 8DA6448
- .incbin "graphics/pokemon/front_pics/pichu_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pichu/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pichu_palette:: @ 8DA6664
- .incbin "graphics/pokemon/palettes/pichu_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pichu/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_pichu_back_pic:: @ 8DA668C
- .incbin "graphics/pokemon/back_pics/pichu_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pichu/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pichu_shiny_palette:: @ 8DA68E8
- .incbin "graphics/pokemon/palettes/pichu_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pichu/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_pichu_icon:: @ 8DA6910
- .incbin "graphics/pokemon/icons/pichu_icon.4bpp"
+ .incbin "graphics/pokemon/pichu/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_pichu_footprint:: @ 8DA6D10
- .incbin "graphics/pokemon/footprints/pichu_footprint.1bpp"
+ .incbin "graphics/pokemon/pichu/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_cleffa_still_front_pic:: @ 8DA6D30
- .incbin "graphics/pokemon/front_pics/cleffa_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cleffa/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cleffa_palette:: @ 8DA6F10
- .incbin "graphics/pokemon/palettes/cleffa_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cleffa/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_cleffa_back_pic:: @ 8DA6F38
- .incbin "graphics/pokemon/back_pics/cleffa_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cleffa/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cleffa_shiny_palette:: @ 8DA7174
- .incbin "graphics/pokemon/palettes/cleffa_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cleffa/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_cleffa_icon:: @ 8DA719C
- .incbin "graphics/pokemon/icons/cleffa_icon.4bpp"
+ .incbin "graphics/pokemon/cleffa/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_cleffa_footprint:: @ 8DA759C
- .incbin "graphics/pokemon/footprints/cleffa_footprint.1bpp"
+ .incbin "graphics/pokemon/cleffa/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_igglybuff_still_front_pic:: @ 8DA75BC
- .incbin "graphics/pokemon/front_pics/igglybuff_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/igglybuff/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_igglybuff_palette:: @ 8DA77A4
- .incbin "graphics/pokemon/palettes/igglybuff_palette.gbapal.lz"
+ .incbin "graphics/pokemon/igglybuff/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_igglybuff_back_pic:: @ 8DA77CC
- .incbin "graphics/pokemon/back_pics/igglybuff_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/igglybuff/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_igglybuff_shiny_palette:: @ 8DA7A08
- .incbin "graphics/pokemon/palettes/igglybuff_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/igglybuff/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_igglybuff_icon:: @ 8DA7A30
- .incbin "graphics/pokemon/icons/igglybuff_icon.4bpp"
+ .incbin "graphics/pokemon/igglybuff/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_igglybuff_footprint:: @ 8DA7E30
- .incbin "graphics/pokemon/footprints/igglybuff_footprint.1bpp"
+ .incbin "graphics/pokemon/igglybuff/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_togepi_still_front_pic:: @ 8DA7E50
- .incbin "graphics/pokemon/front_pics/togepi_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/togepi/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_togepi_palette:: @ 8DA8024
- .incbin "graphics/pokemon/palettes/togepi_palette.gbapal.lz"
+ .incbin "graphics/pokemon/togepi/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_togepi_back_pic:: @ 8DA804C
- .incbin "graphics/pokemon/back_pics/togepi_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/togepi/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_togepi_shiny_palette:: @ 8DA82C0
- .incbin "graphics/pokemon/palettes/togepi_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/togepi/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_togepi_icon:: @ 8DA82E8
- .incbin "graphics/pokemon/icons/togepi_icon.4bpp"
+ .incbin "graphics/pokemon/togepi/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_togepi_footprint:: @ 8DA86E8
- .incbin "graphics/pokemon/footprints/togepi_footprint.1bpp"
+ .incbin "graphics/pokemon/togepi/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_togetic_still_front_pic:: @ 8DA8708
- .incbin "graphics/pokemon/front_pics/togetic_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/togetic/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_togetic_palette:: @ 8DA897C
- .incbin "graphics/pokemon/palettes/togetic_palette.gbapal.lz"
+ .incbin "graphics/pokemon/togetic/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_togetic_back_pic:: @ 8DA89A4
- .incbin "graphics/pokemon/back_pics/togetic_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/togetic/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_togetic_shiny_palette:: @ 8DA8CD0
- .incbin "graphics/pokemon/palettes/togetic_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/togetic/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_togetic_icon:: @ 8DA8CF8
- .incbin "graphics/pokemon/icons/togetic_icon.4bpp"
+ .incbin "graphics/pokemon/togetic/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_togetic_footprint:: @ 8DA90F8
- .incbin "graphics/pokemon/footprints/togetic_footprint.1bpp"
+ .incbin "graphics/pokemon/togetic/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_natu_still_front_pic:: @ 8DA9118
- .incbin "graphics/pokemon/front_pics/natu_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/natu/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_natu_palette:: @ 8DA92E4
- .incbin "graphics/pokemon/palettes/natu_palette.gbapal.lz"
+ .incbin "graphics/pokemon/natu/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_natu_back_pic:: @ 8DA930C
- .incbin "graphics/pokemon/back_pics/natu_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/natu/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_natu_shiny_palette:: @ 8DA9520
- .incbin "graphics/pokemon/palettes/natu_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/natu/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_natu_icon:: @ 8DA9548
- .incbin "graphics/pokemon/icons/natu_icon.4bpp"
+ .incbin "graphics/pokemon/natu/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_natu_footprint:: @ 8DA9948
- .incbin "graphics/pokemon/footprints/natu_footprint.1bpp"
+ .incbin "graphics/pokemon/natu/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_xatu_still_front_pic:: @ 8DA9968
- .incbin "graphics/pokemon/front_pics/xatu_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/xatu/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_xatu_palette:: @ 8DA9C44
- .incbin "graphics/pokemon/palettes/xatu_palette.gbapal.lz"
+ .incbin "graphics/pokemon/xatu/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_xatu_back_pic:: @ 8DA9C6C
- .incbin "graphics/pokemon/back_pics/xatu_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/xatu/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_xatu_shiny_palette:: @ 8DA9FE4
- .incbin "graphics/pokemon/palettes/xatu_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/xatu/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_xatu_icon:: @ 8DAA00C
- .incbin "graphics/pokemon/icons/xatu_icon.4bpp"
+ .incbin "graphics/pokemon/xatu/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_xatu_footprint:: @ 8DAA40C
- .incbin "graphics/pokemon/footprints/xatu_footprint.1bpp"
+ .incbin "graphics/pokemon/xatu/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_mareep_still_front_pic:: @ 8DAA42C
- .incbin "graphics/pokemon/front_pics/mareep_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mareep/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mareep_palette:: @ 8DAA6E0
- .incbin "graphics/pokemon/palettes/mareep_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mareep/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_mareep_back_pic:: @ 8DAA708
- .incbin "graphics/pokemon/back_pics/mareep_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mareep/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mareep_shiny_palette:: @ 8DAA9FC
- .incbin "graphics/pokemon/palettes/mareep_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mareep/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_mareep_icon:: @ 8DAAA24
- .incbin "graphics/pokemon/icons/mareep_icon.4bpp"
+ .incbin "graphics/pokemon/mareep/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_mareep_footprint:: @ 8DAAE24
- .incbin "graphics/pokemon/footprints/mareep_footprint.1bpp"
+ .incbin "graphics/pokemon/mareep/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_flaaffy_still_front_pic:: @ 8DAAE44
- .incbin "graphics/pokemon/front_pics/flaaffy_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/flaaffy/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_flaaffy_palette:: @ 8DAB144
- .incbin "graphics/pokemon/palettes/flaaffy_palette.gbapal.lz"
+ .incbin "graphics/pokemon/flaaffy/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_flaaffy_back_pic:: @ 8DAB16C
- .incbin "graphics/pokemon/back_pics/flaaffy_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/flaaffy/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_flaaffy_shiny_palette:: @ 8DAB488
- .incbin "graphics/pokemon/palettes/flaaffy_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/flaaffy/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_flaaffy_icon:: @ 8DAB4B0
- .incbin "graphics/pokemon/icons/flaaffy_icon.4bpp"
+ .incbin "graphics/pokemon/flaaffy/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_flaaffy_footprint:: @ 8DAB8B0
- .incbin "graphics/pokemon/footprints/flaaffy_footprint.1bpp"
+ .incbin "graphics/pokemon/flaaffy/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ampharos_still_front_pic:: @ 8DAB8D0
- .incbin "graphics/pokemon/front_pics/ampharos_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ampharos/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ampharos_palette:: @ 8DABC2C
- .incbin "graphics/pokemon/palettes/ampharos_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ampharos/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ampharos_back_pic:: @ 8DABC54
- .incbin "graphics/pokemon/back_pics/ampharos_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ampharos/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ampharos_shiny_palette:: @ 8DABFCC
- .incbin "graphics/pokemon/palettes/ampharos_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ampharos/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ampharos_icon:: @ 8DABFF4
- .incbin "graphics/pokemon/icons/ampharos_icon.4bpp"
+ .incbin "graphics/pokemon/ampharos/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ampharos_footprint:: @ 8DAC3F4
- .incbin "graphics/pokemon/footprints/ampharos_footprint.1bpp"
+ .incbin "graphics/pokemon/ampharos/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_bellossom_still_front_pic:: @ 8DAC414
- .incbin "graphics/pokemon/front_pics/bellossom_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/bellossom/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_bellossom_palette:: @ 8DAC684
- .incbin "graphics/pokemon/palettes/bellossom_palette.gbapal.lz"
+ .incbin "graphics/pokemon/bellossom/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_bellossom_back_pic:: @ 8DAC6AC
- .incbin "graphics/pokemon/back_pics/bellossom_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/bellossom/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_bellossom_shiny_palette:: @ 8DAC9D0
- .incbin "graphics/pokemon/palettes/bellossom_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/bellossom/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_bellossom_icon:: @ 8DAC9F8
- .incbin "graphics/pokemon/icons/bellossom_icon.4bpp"
+ .incbin "graphics/pokemon/bellossom/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_bellossom_footprint:: @ 8DACDF8
- .incbin "graphics/pokemon/footprints/bellossom_footprint.1bpp"
+ .incbin "graphics/pokemon/bellossom/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_marill_still_front_pic:: @ 8DACE18
- .incbin "graphics/pokemon/front_pics/marill_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/marill/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_marill_palette:: @ 8DAD0DC
- .incbin "graphics/pokemon/palettes/marill_palette.gbapal.lz"
+ .incbin "graphics/pokemon/marill/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_marill_back_pic:: @ 8DAD104
- .incbin "graphics/pokemon/back_pics/marill_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/marill/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_marill_shiny_palette:: @ 8DAD3B0
- .incbin "graphics/pokemon/palettes/marill_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/marill/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_marill_icon:: @ 8DAD3D8
- .incbin "graphics/pokemon/icons/marill_icon.4bpp"
+ .incbin "graphics/pokemon/marill/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_marill_footprint:: @ 8DAD7D8
- .incbin "graphics/pokemon/footprints/marill_footprint.1bpp"
+ .incbin "graphics/pokemon/marill/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_azumarill_still_front_pic:: @ 8DAD7F8
- .incbin "graphics/pokemon/front_pics/azumarill_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/azumarill/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_azumarill_palette:: @ 8DADAF8
- .incbin "graphics/pokemon/palettes/azumarill_palette.gbapal.lz"
+ .incbin "graphics/pokemon/azumarill/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_azumarill_back_pic:: @ 8DADB20
- .incbin "graphics/pokemon/back_pics/azumarill_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/azumarill/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_azumarill_shiny_palette:: @ 8DADDDC
- .incbin "graphics/pokemon/palettes/azumarill_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/azumarill/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_azumarill_icon:: @ 8DADE04
- .incbin "graphics/pokemon/icons/azumarill_icon.4bpp"
+ .incbin "graphics/pokemon/azumarill/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_azumarill_footprint:: @ 8DAE204
- .incbin "graphics/pokemon/footprints/azumarill_footprint.1bpp"
+ .incbin "graphics/pokemon/azumarill/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_sudowoodo_still_front_pic:: @ 8DAE224
- .incbin "graphics/pokemon/front_pics/sudowoodo_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sudowoodo/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sudowoodo_palette:: @ 8DAE53C
- .incbin "graphics/pokemon/palettes/sudowoodo_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sudowoodo/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_sudowoodo_back_pic:: @ 8DAE564
- .incbin "graphics/pokemon/back_pics/sudowoodo_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sudowoodo/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sudowoodo_shiny_palette:: @ 8DAE8C0
- .incbin "graphics/pokemon/palettes/sudowoodo_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sudowoodo/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_sudowoodo_icon:: @ 8DAE8E8
- .incbin "graphics/pokemon/icons/sudowoodo_icon.4bpp"
+ .incbin "graphics/pokemon/sudowoodo/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_sudowoodo_footprint:: @ 8DAECE8
- .incbin "graphics/pokemon/footprints/sudowoodo_footprint.1bpp"
+ .incbin "graphics/pokemon/sudowoodo/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_politoed_still_front_pic:: @ 8DAED08
- .incbin "graphics/pokemon/front_pics/politoed_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/politoed/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_politoed_palette:: @ 8DAF044
- .incbin "graphics/pokemon/palettes/politoed_palette.gbapal.lz"
+ .incbin "graphics/pokemon/politoed/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_politoed_back_pic:: @ 8DAF06C
- .incbin "graphics/pokemon/back_pics/politoed_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/politoed/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_politoed_shiny_palette:: @ 8DAF328
- .incbin "graphics/pokemon/palettes/politoed_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/politoed/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_politoed_icon:: @ 8DAF350
- .incbin "graphics/pokemon/icons/politoed_icon.4bpp"
+ .incbin "graphics/pokemon/politoed/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_politoed_footprint:: @ 8DAF750
- .incbin "graphics/pokemon/footprints/politoed_footprint.1bpp"
+ .incbin "graphics/pokemon/politoed/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_hoppip_still_front_pic:: @ 8DAF770
- .incbin "graphics/pokemon/front_pics/hoppip_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hoppip/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hoppip_palette:: @ 8DAFA24
- .incbin "graphics/pokemon/palettes/hoppip_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hoppip/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_hoppip_back_pic:: @ 8DAFA4C
- .incbin "graphics/pokemon/back_pics/hoppip_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hoppip/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hoppip_shiny_palette:: @ 8DAFD2C
- .incbin "graphics/pokemon/palettes/hoppip_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hoppip/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_hoppip_icon:: @ 8DAFD54
- .incbin "graphics/pokemon/icons/hoppip_icon.4bpp"
+ .incbin "graphics/pokemon/hoppip/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_hoppip_footprint:: @ 8DB0154
- .incbin "graphics/pokemon/footprints/hoppip_footprint.1bpp"
+ .incbin "graphics/pokemon/hoppip/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_skiploom_still_front_pic:: @ 8DB0174
- .incbin "graphics/pokemon/front_pics/skiploom_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/skiploom/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_skiploom_palette:: @ 8DB03FC
- .incbin "graphics/pokemon/palettes/skiploom_palette.gbapal.lz"
+ .incbin "graphics/pokemon/skiploom/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_skiploom_back_pic:: @ 8DB0424
- .incbin "graphics/pokemon/back_pics/skiploom_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/skiploom/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_skiploom_shiny_palette:: @ 8DB0704
- .incbin "graphics/pokemon/palettes/skiploom_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/skiploom/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_skiploom_icon:: @ 8DB072C
- .incbin "graphics/pokemon/icons/skiploom_icon.4bpp"
+ .incbin "graphics/pokemon/skiploom/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_skiploom_footprint:: @ 8DB0B2C
- .incbin "graphics/pokemon/footprints/skiploom_footprint.1bpp"
+ .incbin "graphics/pokemon/skiploom/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_jumpluff_still_front_pic:: @ 8DB0B4C
- .incbin "graphics/pokemon/front_pics/jumpluff_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/jumpluff/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_jumpluff_palette:: @ 8DB0EB8
- .incbin "graphics/pokemon/palettes/jumpluff_palette.gbapal.lz"
+ .incbin "graphics/pokemon/jumpluff/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_jumpluff_back_pic:: @ 8DB0EE0
- .incbin "graphics/pokemon/back_pics/jumpluff_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/jumpluff/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_jumpluff_shiny_palette:: @ 8DB12D8
- .incbin "graphics/pokemon/palettes/jumpluff_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/jumpluff/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_jumpluff_icon:: @ 8DB1300
- .incbin "graphics/pokemon/icons/jumpluff_icon.4bpp"
+ .incbin "graphics/pokemon/jumpluff/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_jumpluff_footprint:: @ 8DB1700
- .incbin "graphics/pokemon/footprints/jumpluff_footprint.1bpp"
+ .incbin "graphics/pokemon/jumpluff/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_aipom_still_front_pic:: @ 8DB1720
- .incbin "graphics/pokemon/front_pics/aipom_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/aipom/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_aipom_palette:: @ 8DB1A1C
- .incbin "graphics/pokemon/palettes/aipom_palette.gbapal.lz"
+ .incbin "graphics/pokemon/aipom/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_aipom_back_pic:: @ 8DB1A44
- .incbin "graphics/pokemon/back_pics/aipom_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/aipom/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_aipom_shiny_palette:: @ 8DB1D38
- .incbin "graphics/pokemon/palettes/aipom_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/aipom/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_aipom_icon:: @ 8DB1D60
- .incbin "graphics/pokemon/icons/aipom_icon.4bpp"
+ .incbin "graphics/pokemon/aipom/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_aipom_footprint:: @ 8DB2160
- .incbin "graphics/pokemon/footprints/aipom_footprint.1bpp"
+ .incbin "graphics/pokemon/aipom/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_sunkern_still_front_pic:: @ 8DB2180
- .incbin "graphics/pokemon/front_pics/sunkern_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sunkern/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sunkern_palette:: @ 8DB23B8
- .incbin "graphics/pokemon/palettes/sunkern_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sunkern/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_sunkern_back_pic:: @ 8DB23E0
- .incbin "graphics/pokemon/back_pics/sunkern_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sunkern/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sunkern_shiny_palette:: @ 8DB26A4
- .incbin "graphics/pokemon/palettes/sunkern_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sunkern/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_sunkern_icon:: @ 8DB26CC
- .incbin "graphics/pokemon/icons/sunkern_icon.4bpp"
+ .incbin "graphics/pokemon/sunkern/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_sunkern_footprint:: @ 8DB2ACC
- .incbin "graphics/pokemon/footprints/sunkern_footprint.1bpp"
+ .incbin "graphics/pokemon/sunkern/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_sunflora_still_front_pic:: @ 8DB2AEC
- .incbin "graphics/pokemon/front_pics/sunflora_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sunflora/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sunflora_palette:: @ 8DB2E44
- .incbin "graphics/pokemon/palettes/sunflora_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sunflora/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_sunflora_back_pic:: @ 8DB2E6C
- .incbin "graphics/pokemon/back_pics/sunflora_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sunflora/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sunflora_shiny_palette:: @ 8DB320C
- .incbin "graphics/pokemon/palettes/sunflora_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sunflora/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_sunflora_icon:: @ 8DB3234
- .incbin "graphics/pokemon/icons/sunflora_icon.4bpp"
+ .incbin "graphics/pokemon/sunflora/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_sunflora_footprint:: @ 8DB3634
- .incbin "graphics/pokemon/footprints/sunflora_footprint.1bpp"
+ .incbin "graphics/pokemon/sunflora/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_yanma_still_front_pic:: @ 8DB3654
- .incbin "graphics/pokemon/front_pics/yanma_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/yanma/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_yanma_palette:: @ 8DB39D8
- .incbin "graphics/pokemon/palettes/yanma_palette.gbapal.lz"
+ .incbin "graphics/pokemon/yanma/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_yanma_back_pic:: @ 8DB3A00
- .incbin "graphics/pokemon/back_pics/yanma_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/yanma/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_yanma_shiny_palette:: @ 8DB3DB4
- .incbin "graphics/pokemon/palettes/yanma_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/yanma/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_yanma_icon:: @ 8DB3DDC
- .incbin "graphics/pokemon/icons/yanma_icon.4bpp"
+ .incbin "graphics/pokemon/yanma/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_yanma_footprint:: @ 8DB41DC
- .incbin "graphics/pokemon/footprints/yanma_footprint.1bpp"
+ .incbin "graphics/pokemon/yanma/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_wooper_still_front_pic:: @ 8DB41FC
- .incbin "graphics/pokemon/front_pics/wooper_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wooper/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wooper_palette:: @ 8DB443C
- .incbin "graphics/pokemon/palettes/wooper_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wooper/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_wooper_back_pic:: @ 8DB4464
- .incbin "graphics/pokemon/back_pics/wooper_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wooper/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wooper_shiny_palette:: @ 8DB46F0
- .incbin "graphics/pokemon/palettes/wooper_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wooper/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_wooper_icon:: @ 8DB4718
- .incbin "graphics/pokemon/icons/wooper_icon.4bpp"
+ .incbin "graphics/pokemon/wooper/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_wooper_footprint:: @ 8DB4B18
- .incbin "graphics/pokemon/footprints/wooper_footprint.1bpp"
+ .incbin "graphics/pokemon/wooper/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_quagsire_still_front_pic:: @ 8DB4B38
- .incbin "graphics/pokemon/front_pics/quagsire_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/quagsire/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_quagsire_palette:: @ 8DB4EAC
- .incbin "graphics/pokemon/palettes/quagsire_palette.gbapal.lz"
+ .incbin "graphics/pokemon/quagsire/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_quagsire_back_pic:: @ 8DB4ED4
- .incbin "graphics/pokemon/back_pics/quagsire_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/quagsire/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_quagsire_shiny_palette:: @ 8DB51D0
- .incbin "graphics/pokemon/palettes/quagsire_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/quagsire/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_quagsire_icon:: @ 8DB51F8
- .incbin "graphics/pokemon/icons/quagsire_icon.4bpp"
+ .incbin "graphics/pokemon/quagsire/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_quagsire_footprint:: @ 8DB55F8
- .incbin "graphics/pokemon/footprints/quagsire_footprint.1bpp"
+ .incbin "graphics/pokemon/quagsire/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_espeon_still_front_pic:: @ 8DB5618
- .incbin "graphics/pokemon/front_pics/espeon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/espeon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_espeon_palette:: @ 8DB5958
- .incbin "graphics/pokemon/palettes/espeon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/espeon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_espeon_back_pic:: @ 8DB597C
- .incbin "graphics/pokemon/back_pics/espeon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/espeon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_espeon_shiny_palette:: @ 8DB5C58
- .incbin "graphics/pokemon/palettes/espeon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/espeon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_espeon_icon:: @ 8DB5C7C
- .incbin "graphics/pokemon/icons/espeon_icon.4bpp"
+ .incbin "graphics/pokemon/espeon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_espeon_footprint:: @ 8DB607C
- .incbin "graphics/pokemon/footprints/espeon_footprint.1bpp"
+ .incbin "graphics/pokemon/espeon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_umbreon_still_front_pic:: @ 8DB609C
- .incbin "graphics/pokemon/front_pics/umbreon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/umbreon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_umbreon_palette:: @ 8DB63B0
- .incbin "graphics/pokemon/palettes/umbreon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/umbreon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_umbreon_back_pic:: @ 8DB63D8
- .incbin "graphics/pokemon/back_pics/umbreon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/umbreon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_umbreon_shiny_palette:: @ 8DB66EC
- .incbin "graphics/pokemon/palettes/umbreon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/umbreon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_umbreon_icon:: @ 8DB6714
- .incbin "graphics/pokemon/icons/umbreon_icon.4bpp"
+ .incbin "graphics/pokemon/umbreon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_umbreon_footprint:: @ 8DB6B14
- .incbin "graphics/pokemon/footprints/umbreon_footprint.1bpp"
+ .incbin "graphics/pokemon/umbreon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_murkrow_still_front_pic:: @ 8DB6B34
- .incbin "graphics/pokemon/front_pics/murkrow_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/murkrow/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_murkrow_palette:: @ 8DB6E14
- .incbin "graphics/pokemon/palettes/murkrow_palette.gbapal.lz"
+ .incbin "graphics/pokemon/murkrow/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_murkrow_back_pic:: @ 8DB6E3C
- .incbin "graphics/pokemon/back_pics/murkrow_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/murkrow/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_murkrow_shiny_palette:: @ 8DB7154
- .incbin "graphics/pokemon/palettes/murkrow_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/murkrow/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_murkrow_icon:: @ 8DB717C
- .incbin "graphics/pokemon/icons/murkrow_icon.4bpp"
+ .incbin "graphics/pokemon/murkrow/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_murkrow_footprint:: @ 8DB757C
- .incbin "graphics/pokemon/footprints/murkrow_footprint.1bpp"
+ .incbin "graphics/pokemon/murkrow/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_slowking_still_front_pic:: @ 8DB759C
- .incbin "graphics/pokemon/front_pics/slowking_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/slowking/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_slowking_palette:: @ 8DB7950
- .incbin "graphics/pokemon/palettes/slowking_palette.gbapal.lz"
+ .incbin "graphics/pokemon/slowking/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_slowking_back_pic:: @ 8DB7978
- .incbin "graphics/pokemon/back_pics/slowking_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/slowking/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_slowking_shiny_palette:: @ 8DB7D04
- .incbin "graphics/pokemon/palettes/slowking_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/slowking/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_slowking_icon:: @ 8DB7D2C
- .incbin "graphics/pokemon/icons/slowking_icon.4bpp"
+ .incbin "graphics/pokemon/slowking/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_slowking_footprint:: @ 8DB812C
- .incbin "graphics/pokemon/footprints/slowking_footprint.1bpp"
+ .incbin "graphics/pokemon/slowking/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_misdreavus_still_front_pic:: @ 8DB814C
- .incbin "graphics/pokemon/front_pics/misdreavus_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/misdreavus/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_misdreavus_palette:: @ 8DB840C
- .incbin "graphics/pokemon/palettes/misdreavus_palette.gbapal.lz"
+ .incbin "graphics/pokemon/misdreavus/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_misdreavus_back_pic:: @ 8DB8434
- .incbin "graphics/pokemon/back_pics/misdreavus_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/misdreavus/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_misdreavus_shiny_palette:: @ 8DB8758
- .incbin "graphics/pokemon/palettes/misdreavus_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/misdreavus/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_misdreavus_icon:: @ 8DB8780
- .incbin "graphics/pokemon/icons/misdreavus_icon.4bpp"
+ .incbin "graphics/pokemon/misdreavus/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_misdreavus_footprint:: @ 8DB8B80
- .incbin "graphics/pokemon/footprints/misdreavus_footprint.1bpp"
+ .incbin "graphics/pokemon/misdreavus/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_a_still_front_pic:: @ 8DB8BA0
- .incbin "graphics/pokemon/front_pics/unown_a_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/a/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_unown_palette:: @ 8DB8D74
- .incbin "graphics/pokemon/palettes/unown_palette.gbapal.lz"
+ .incbin "graphics/pokemon/unown/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_a_back_pic:: @ 8DB8D94
- .incbin "graphics/pokemon/back_pics/unown_a_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/a/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_unown_shiny_palette:: @ 8DB8F94
- .incbin "graphics/pokemon/palettes/unown_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/unown/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_unown_a_icon:: @ 8DB8FB4
- .incbin "graphics/pokemon/icons/unown_a_icon.4bpp"
+ .incbin "graphics/pokemon/unown/a/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_unown_footprint:: @ 8DB93B4
- .incbin "graphics/pokemon/footprints/unown_footprint.1bpp"
+ .incbin "graphics/pokemon/unown/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_wobbuffet_still_front_pic:: @ 8DB93D4
- .incbin "graphics/pokemon/front_pics/wobbuffet_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wobbuffet/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wobbuffet_palette:: @ 8DB9724
- .incbin "graphics/pokemon/palettes/wobbuffet_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wobbuffet/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_wobbuffet_back_pic:: @ 8DB974C
- .incbin "graphics/pokemon/back_pics/wobbuffet_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wobbuffet/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wobbuffet_shiny_palette:: @ 8DB9990
- .incbin "graphics/pokemon/palettes/wobbuffet_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wobbuffet/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_wobbuffet_icon:: @ 8DB99B8
- .incbin "graphics/pokemon/icons/wobbuffet_icon.4bpp"
+ .incbin "graphics/pokemon/wobbuffet/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_wobbuffet_footprint:: @ 8DB9DB8
- .incbin "graphics/pokemon/footprints/wobbuffet_footprint.1bpp"
+ .incbin "graphics/pokemon/wobbuffet/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_girafarig_still_front_pic:: @ 8DB9DD8
- .incbin "graphics/pokemon/front_pics/girafarig_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/girafarig/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_girafarig_palette:: @ 8DBA1DC
- .incbin "graphics/pokemon/palettes/girafarig_palette.gbapal.lz"
+ .incbin "graphics/pokemon/girafarig/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_girafarig_back_pic:: @ 8DBA204
- .incbin "graphics/pokemon/back_pics/girafarig_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/girafarig/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_girafarig_shiny_palette:: @ 8DBA5B0
- .incbin "graphics/pokemon/palettes/girafarig_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/girafarig/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_girafarig_icon:: @ 8DBA5D8
- .incbin "graphics/pokemon/icons/girafarig_icon.4bpp"
+ .incbin "graphics/pokemon/girafarig/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_girafarig_footprint:: @ 8DBA9D8
- .incbin "graphics/pokemon/footprints/girafarig_footprint.1bpp"
+ .incbin "graphics/pokemon/girafarig/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_pineco_still_front_pic:: @ 8DBA9F8
- .incbin "graphics/pokemon/front_pics/pineco_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pineco/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pineco_palette:: @ 8DBAD38
- .incbin "graphics/pokemon/palettes/pineco_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pineco/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_pineco_back_pic:: @ 8DBAD5C
- .incbin "graphics/pokemon/back_pics/pineco_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pineco/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pineco_shiny_palette:: @ 8DBB034
- .incbin "graphics/pokemon/palettes/pineco_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pineco/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_pineco_icon:: @ 8DBB058
- .incbin "graphics/pokemon/icons/pineco_icon.4bpp"
+ .incbin "graphics/pokemon/pineco/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_pineco_footprint:: @ 8DBB458
- .incbin "graphics/pokemon/footprints/pineco_footprint.1bpp"
+ .incbin "graphics/pokemon/pineco/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_forretress_still_front_pic:: @ 8DBB478
- .incbin "graphics/pokemon/front_pics/forretress_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/forretress/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_forretress_palette:: @ 8DBB894
- .incbin "graphics/pokemon/palettes/forretress_palette.gbapal.lz"
+ .incbin "graphics/pokemon/forretress/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_forretress_back_pic:: @ 8DBB8BC
- .incbin "graphics/pokemon/back_pics/forretress_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/forretress/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_forretress_shiny_palette:: @ 8DBBB7C
- .incbin "graphics/pokemon/palettes/forretress_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/forretress/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_forretress_icon:: @ 8DBBBA4
- .incbin "graphics/pokemon/icons/forretress_icon.4bpp"
+ .incbin "graphics/pokemon/forretress/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_forretress_footprint:: @ 8DBBFA4
- .incbin "graphics/pokemon/footprints/forretress_footprint.1bpp"
+ .incbin "graphics/pokemon/forretress/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_dunsparce_still_front_pic:: @ 8DBBFC4
- .incbin "graphics/pokemon/front_pics/dunsparce_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dunsparce/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dunsparce_palette:: @ 8DBC2D4
- .incbin "graphics/pokemon/palettes/dunsparce_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dunsparce/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_dunsparce_back_pic:: @ 8DBC2FC
- .incbin "graphics/pokemon/back_pics/dunsparce_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dunsparce/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dunsparce_shiny_palette:: @ 8DBC5F8
- .incbin "graphics/pokemon/palettes/dunsparce_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dunsparce/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_dunsparce_icon:: @ 8DBC620
- .incbin "graphics/pokemon/icons/dunsparce_icon.4bpp"
+ .incbin "graphics/pokemon/dunsparce/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_dunsparce_footprint:: @ 8DBCA20
- .incbin "graphics/pokemon/footprints/dunsparce_footprint.1bpp"
+ .incbin "graphics/pokemon/dunsparce/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_gligar_still_front_pic:: @ 8DBCA40
- .incbin "graphics/pokemon/front_pics/gligar_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gligar/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gligar_palette:: @ 8DBCE68
- .incbin "graphics/pokemon/palettes/gligar_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gligar/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_gligar_back_pic:: @ 8DBCE90
- .incbin "graphics/pokemon/back_pics/gligar_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gligar/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gligar_shiny_palette:: @ 8DBD268
- .incbin "graphics/pokemon/palettes/gligar_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gligar/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_gligar_icon:: @ 8DBD290
- .incbin "graphics/pokemon/icons/gligar_icon.4bpp"
+ .incbin "graphics/pokemon/gligar/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_gligar_footprint:: @ 8DBD690
- .incbin "graphics/pokemon/footprints/gligar_footprint.1bpp"
+ .incbin "graphics/pokemon/gligar/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_steelix_still_front_pic:: @ 8DBD6B0
- .incbin "graphics/pokemon/front_pics/steelix_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/steelix/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_steelix_palette:: @ 8DBDB78
- .incbin "graphics/pokemon/palettes/steelix_palette.gbapal.lz"
+ .incbin "graphics/pokemon/steelix/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_steelix_back_pic:: @ 8DBDB9C
- .incbin "graphics/pokemon/back_pics/steelix_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/steelix/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_steelix_shiny_palette:: @ 8DBDFA8
- .incbin "graphics/pokemon/palettes/steelix_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/steelix/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_steelix_icon:: @ 8DBDFCC
- .incbin "graphics/pokemon/icons/steelix_icon.4bpp"
+ .incbin "graphics/pokemon/steelix/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_steelix_footprint:: @ 8DBE3CC
- .incbin "graphics/pokemon/footprints/steelix_footprint.1bpp"
+ .incbin "graphics/pokemon/steelix/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_snubbull_still_front_pic:: @ 8DBE3EC
- .incbin "graphics/pokemon/front_pics/snubbull_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/snubbull/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_snubbull_palette:: @ 8DBE6C0
- .incbin "graphics/pokemon/palettes/snubbull_palette.gbapal.lz"
+ .incbin "graphics/pokemon/snubbull/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_snubbull_back_pic:: @ 8DBE6E8
- .incbin "graphics/pokemon/back_pics/snubbull_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/snubbull/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_snubbull_shiny_palette:: @ 8DBEA10
- .incbin "graphics/pokemon/palettes/snubbull_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/snubbull/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_snubbull_icon:: @ 8DBEA38
- .incbin "graphics/pokemon/icons/snubbull_icon.4bpp"
+ .incbin "graphics/pokemon/snubbull/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_snubbull_footprint:: @ 8DBEE38
- .incbin "graphics/pokemon/footprints/snubbull_footprint.1bpp"
+ .incbin "graphics/pokemon/snubbull/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_granbull_still_front_pic:: @ 8DBEE58
- .incbin "graphics/pokemon/front_pics/granbull_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/granbull/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_granbull_palette:: @ 8DBF1E4
- .incbin "graphics/pokemon/palettes/granbull_palette.gbapal.lz"
+ .incbin "graphics/pokemon/granbull/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_granbull_back_pic:: @ 8DBF20C
- .incbin "graphics/pokemon/back_pics/granbull_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/granbull/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_granbull_shiny_palette:: @ 8DBF530
- .incbin "graphics/pokemon/palettes/granbull_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/granbull/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_granbull_icon:: @ 8DBF558
- .incbin "graphics/pokemon/icons/granbull_icon.4bpp"
+ .incbin "graphics/pokemon/granbull/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_granbull_footprint:: @ 8DBF958
- .incbin "graphics/pokemon/footprints/granbull_footprint.1bpp"
+ .incbin "graphics/pokemon/granbull/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_qwilfish_still_front_pic:: @ 8DBF978
- .incbin "graphics/pokemon/front_pics/qwilfish_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/qwilfish/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_qwilfish_palette:: @ 8DBFC38
- .incbin "graphics/pokemon/palettes/qwilfish_palette.gbapal.lz"
+ .incbin "graphics/pokemon/qwilfish/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_qwilfish_back_pic:: @ 8DBFC60
- .incbin "graphics/pokemon/back_pics/qwilfish_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/qwilfish/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_qwilfish_shiny_palette:: @ 8DBFF40
- .incbin "graphics/pokemon/palettes/qwilfish_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/qwilfish/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_qwilfish_icon:: @ 8DBFF68
- .incbin "graphics/pokemon/icons/qwilfish_icon.4bpp"
+ .incbin "graphics/pokemon/qwilfish/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_qwilfish_footprint:: @ 8DC0368
- .incbin "graphics/pokemon/footprints/qwilfish_footprint.1bpp"
+ .incbin "graphics/pokemon/qwilfish/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_scizor_still_front_pic:: @ 8DC0388
- .incbin "graphics/pokemon/front_pics/scizor_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/scizor/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_scizor_palette:: @ 8DC0870
- .incbin "graphics/pokemon/palettes/scizor_palette.gbapal.lz"
+ .incbin "graphics/pokemon/scizor/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_scizor_back_pic:: @ 8DC0898
- .incbin "graphics/pokemon/back_pics/scizor_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/scizor/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_scizor_shiny_palette:: @ 8DC0C18
- .incbin "graphics/pokemon/palettes/scizor_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/scizor/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_scizor_icon:: @ 8DC0C40
- .incbin "graphics/pokemon/icons/scizor_icon.4bpp"
+ .incbin "graphics/pokemon/scizor/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_scizor_footprint:: @ 8DC1040
- .incbin "graphics/pokemon/footprints/scizor_footprint.1bpp"
+ .incbin "graphics/pokemon/scizor/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_shuckle_still_front_pic:: @ 8DC1060
- .incbin "graphics/pokemon/front_pics/shuckle_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shuckle/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shuckle_palette:: @ 8DC1328
- .incbin "graphics/pokemon/palettes/shuckle_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shuckle/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_shuckle_back_pic:: @ 8DC1350
- .incbin "graphics/pokemon/back_pics/shuckle_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shuckle/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shuckle_shiny_palette:: @ 8DC15A8
- .incbin "graphics/pokemon/palettes/shuckle_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shuckle/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_shuckle_icon:: @ 8DC15D0
- .incbin "graphics/pokemon/icons/shuckle_icon.4bpp"
+ .incbin "graphics/pokemon/shuckle/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_shuckle_footprint:: @ 8DC19D0
- .incbin "graphics/pokemon/footprints/shuckle_footprint.1bpp"
+ .incbin "graphics/pokemon/shuckle/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_heracross_still_front_pic:: @ 8DC19F0
- .incbin "graphics/pokemon/front_pics/heracross_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/heracross/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_heracross_palette:: @ 8DC1DE0
- .incbin "graphics/pokemon/palettes/heracross_palette.gbapal.lz"
+ .incbin "graphics/pokemon/heracross/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_heracross_back_pic:: @ 8DC1E08
- .incbin "graphics/pokemon/back_pics/heracross_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/heracross/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_heracross_shiny_palette:: @ 8DC2178
- .incbin "graphics/pokemon/palettes/heracross_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/heracross/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_heracross_icon:: @ 8DC21A0
- .incbin "graphics/pokemon/icons/heracross_icon.4bpp"
+ .incbin "graphics/pokemon/heracross/icon.4bpp"
gUnknown_heracross_icon:: @ 8DC25A0
.incbin "baserom.gba", 0xDC25A0, 0x400
.align 2
gFile_graphics_pokemon_footprints_heracross_footprint:: @ 8DC29A0
- .incbin "graphics/pokemon/footprints/heracross_footprint.1bpp"
+ .incbin "graphics/pokemon/heracross/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_sneasel_still_front_pic:: @ 8DC29C0
- .incbin "graphics/pokemon/front_pics/sneasel_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sneasel/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sneasel_palette:: @ 8DC2D04
- .incbin "graphics/pokemon/palettes/sneasel_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sneasel/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_sneasel_back_pic:: @ 8DC2D2C
- .incbin "graphics/pokemon/back_pics/sneasel_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sneasel/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sneasel_shiny_palette:: @ 8DC3050
- .incbin "graphics/pokemon/palettes/sneasel_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sneasel/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_sneasel_icon:: @ 8DC3078
- .incbin "graphics/pokemon/icons/sneasel_icon.4bpp"
+ .incbin "graphics/pokemon/sneasel/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_sneasel_footprint:: @ 8DC3478
- .incbin "graphics/pokemon/footprints/sneasel_footprint.1bpp"
+ .incbin "graphics/pokemon/sneasel/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_teddiursa_still_front_pic:: @ 8DC3498
- .incbin "graphics/pokemon/front_pics/teddiursa_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/teddiursa/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_teddiursa_palette:: @ 8DC3740
- .incbin "graphics/pokemon/palettes/teddiursa_palette.gbapal.lz"
+ .incbin "graphics/pokemon/teddiursa/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_teddiursa_back_pic:: @ 8DC3768
- .incbin "graphics/pokemon/back_pics/teddiursa_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/teddiursa/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_teddiursa_shiny_palette:: @ 8DC39E0
- .incbin "graphics/pokemon/palettes/teddiursa_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/teddiursa/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_teddiursa_icon:: @ 8DC3A08
- .incbin "graphics/pokemon/icons/teddiursa_icon.4bpp"
+ .incbin "graphics/pokemon/teddiursa/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_teddiursa_footprint:: @ 8DC3E08
- .incbin "graphics/pokemon/footprints/teddiursa_footprint.1bpp"
+ .incbin "graphics/pokemon/teddiursa/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ursaring_still_front_pic:: @ 8DC3E28
- .incbin "graphics/pokemon/front_pics/ursaring_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ursaring/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ursaring_palette:: @ 8DC4260
- .incbin "graphics/pokemon/palettes/ursaring_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ursaring/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ursaring_back_pic:: @ 8DC4288
- .incbin "graphics/pokemon/back_pics/ursaring_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ursaring/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ursaring_shiny_palette:: @ 8DC4610
- .incbin "graphics/pokemon/palettes/ursaring_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ursaring/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ursaring_icon:: @ 8DC4638
- .incbin "graphics/pokemon/icons/ursaring_icon.4bpp"
+ .incbin "graphics/pokemon/ursaring/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ursaring_footprint:: @ 8DC4A38
- .incbin "graphics/pokemon/footprints/ursaring_footprint.1bpp"
+ .incbin "graphics/pokemon/ursaring/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_slugma_still_front_pic:: @ 8DC4A58
- .incbin "graphics/pokemon/front_pics/slugma_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/slugma/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_slugma_palette:: @ 8DC4CCC
- .incbin "graphics/pokemon/palettes/slugma_palette.gbapal.lz"
+ .incbin "graphics/pokemon/slugma/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_slugma_back_pic:: @ 8DC4CF0
- .incbin "graphics/pokemon/back_pics/slugma_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/slugma/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_slugma_shiny_palette:: @ 8DC4FD8
- .incbin "graphics/pokemon/palettes/slugma_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/slugma/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_slugma_icon:: @ 8DC4FFC
- .incbin "graphics/pokemon/icons/slugma_icon.4bpp"
+ .incbin "graphics/pokemon/slugma/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_slugma_footprint:: @ 8DC53FC
- .incbin "graphics/pokemon/footprints/slugma_footprint.1bpp"
+ .incbin "graphics/pokemon/slugma/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_magcargo_still_front_pic:: @ 8DC541C
- .incbin "graphics/pokemon/front_pics/magcargo_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/magcargo/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_magcargo_palette:: @ 8DC5764
- .incbin "graphics/pokemon/palettes/magcargo_palette.gbapal.lz"
+ .incbin "graphics/pokemon/magcargo/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_magcargo_back_pic:: @ 8DC578C
- .incbin "graphics/pokemon/back_pics/magcargo_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/magcargo/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_magcargo_shiny_palette:: @ 8DC5BA4
- .incbin "graphics/pokemon/palettes/magcargo_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/magcargo/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_magcargo_icon:: @ 8DC5BCC
- .incbin "graphics/pokemon/icons/magcargo_icon.4bpp"
+ .incbin "graphics/pokemon/magcargo/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_magcargo_footprint:: @ 8DC5FCC
- .incbin "graphics/pokemon/footprints/magcargo_footprint.1bpp"
+ .incbin "graphics/pokemon/magcargo/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_swinub_still_front_pic:: @ 8DC5FEC
- .incbin "graphics/pokemon/front_pics/swinub_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/swinub/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_swinub_palette:: @ 8DC61E8
- .incbin "graphics/pokemon/palettes/swinub_palette.gbapal.lz"
+ .incbin "graphics/pokemon/swinub/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_swinub_back_pic:: @ 8DC6210
- .incbin "graphics/pokemon/back_pics/swinub_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/swinub/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_swinub_shiny_palette:: @ 8DC644C
- .incbin "graphics/pokemon/palettes/swinub_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/swinub/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_swinub_icon:: @ 8DC6474
- .incbin "graphics/pokemon/icons/swinub_icon.4bpp"
+ .incbin "graphics/pokemon/swinub/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_swinub_footprint:: @ 8DC6874
- .incbin "graphics/pokemon/footprints/swinub_footprint.1bpp"
+ .incbin "graphics/pokemon/swinub/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_piloswine_still_front_pic:: @ 8DC6894
- .incbin "graphics/pokemon/front_pics/piloswine_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/piloswine/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_piloswine_palette:: @ 8DC6BBC
- .incbin "graphics/pokemon/palettes/piloswine_palette.gbapal.lz"
+ .incbin "graphics/pokemon/piloswine/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_piloswine_back_pic:: @ 8DC6BE4
- .incbin "graphics/pokemon/back_pics/piloswine_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/piloswine/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_piloswine_shiny_palette:: @ 8DC6E30
- .incbin "graphics/pokemon/palettes/piloswine_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/piloswine/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_piloswine_icon:: @ 8DC6E58
- .incbin "graphics/pokemon/icons/piloswine_icon.4bpp"
+ .incbin "graphics/pokemon/piloswine/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_piloswine_footprint:: @ 8DC7258
- .incbin "graphics/pokemon/footprints/piloswine_footprint.1bpp"
+ .incbin "graphics/pokemon/piloswine/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_corsola_still_front_pic:: @ 8DC7278
- .incbin "graphics/pokemon/front_pics/corsola_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/corsola/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_corsola_palette:: @ 8DC7560
- .incbin "graphics/pokemon/palettes/corsola_palette.gbapal.lz"
+ .incbin "graphics/pokemon/corsola/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_corsola_back_pic:: @ 8DC7588
- .incbin "graphics/pokemon/back_pics/corsola_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/corsola/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_corsola_shiny_palette:: @ 8DC7848
- .incbin "graphics/pokemon/palettes/corsola_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/corsola/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_corsola_icon:: @ 8DC7870
- .incbin "graphics/pokemon/icons/corsola_icon.4bpp"
+ .incbin "graphics/pokemon/corsola/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_corsola_footprint:: @ 8DC7C70
- .incbin "graphics/pokemon/footprints/corsola_footprint.1bpp"
+ .incbin "graphics/pokemon/corsola/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_remoraid_still_front_pic:: @ 8DC7C90
- .incbin "graphics/pokemon/front_pics/remoraid_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/remoraid/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_remoraid_palette:: @ 8DC7EF8
- .incbin "graphics/pokemon/palettes/remoraid_palette.gbapal.lz"
+ .incbin "graphics/pokemon/remoraid/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_remoraid_back_pic:: @ 8DC7F20
- .incbin "graphics/pokemon/back_pics/remoraid_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/remoraid/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_remoraid_shiny_palette:: @ 8DC8234
- .incbin "graphics/pokemon/palettes/remoraid_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/remoraid/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_remoraid_icon:: @ 8DC825C
- .incbin "graphics/pokemon/icons/remoraid_icon.4bpp"
+ .incbin "graphics/pokemon/remoraid/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_remoraid_footprint:: @ 8DC865C
- .incbin "graphics/pokemon/footprints/remoraid_footprint.1bpp"
+ .incbin "graphics/pokemon/remoraid/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_octillery_still_front_pic:: @ 8DC867C
- .incbin "graphics/pokemon/front_pics/octillery_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/octillery/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_octillery_palette:: @ 8DC89B0
- .incbin "graphics/pokemon/palettes/octillery_palette.gbapal.lz"
+ .incbin "graphics/pokemon/octillery/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_octillery_back_pic:: @ 8DC89D8
- .incbin "graphics/pokemon/back_pics/octillery_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/octillery/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_octillery_shiny_palette:: @ 8DC8C90
- .incbin "graphics/pokemon/palettes/octillery_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/octillery/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_octillery_icon:: @ 8DC8CB8
- .incbin "graphics/pokemon/icons/octillery_icon.4bpp"
+ .incbin "graphics/pokemon/octillery/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_octillery_footprint:: @ 8DC90B8
- .incbin "graphics/pokemon/footprints/octillery_footprint.1bpp"
+ .incbin "graphics/pokemon/octillery/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_delibird_still_front_pic:: @ 8DC90D8
- .incbin "graphics/pokemon/front_pics/delibird_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/delibird/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_delibird_palette:: @ 8DC9448
- .incbin "graphics/pokemon/palettes/delibird_palette.gbapal.lz"
+ .incbin "graphics/pokemon/delibird/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_delibird_back_pic:: @ 8DC9470
- .incbin "graphics/pokemon/back_pics/delibird_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/delibird/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_delibird_shiny_palette:: @ 8DC9830
- .incbin "graphics/pokemon/palettes/delibird_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/delibird/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_delibird_icon:: @ 8DC9858
- .incbin "graphics/pokemon/icons/delibird_icon.4bpp"
+ .incbin "graphics/pokemon/delibird/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_delibird_footprint:: @ 8DC9C58
- .incbin "graphics/pokemon/footprints/delibird_footprint.1bpp"
+ .incbin "graphics/pokemon/delibird/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_mantine_still_front_pic:: @ 8DC9C78
- .incbin "graphics/pokemon/front_pics/mantine_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mantine/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mantine_palette:: @ 8DCA114
- .incbin "graphics/pokemon/palettes/mantine_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mantine/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_mantine_back_pic:: @ 8DCA13C
- .incbin "graphics/pokemon/back_pics/mantine_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mantine/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mantine_shiny_palette:: @ 8DCA3DC
- .incbin "graphics/pokemon/palettes/mantine_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mantine/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_mantine_icon:: @ 8DCA404
- .incbin "graphics/pokemon/icons/mantine_icon.4bpp"
+ .incbin "graphics/pokemon/mantine/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_mantine_footprint:: @ 8DCA804
- .incbin "graphics/pokemon/footprints/mantine_footprint.1bpp"
+ .incbin "graphics/pokemon/mantine/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_skarmory_still_front_pic:: @ 8DCA824
- .incbin "graphics/pokemon/front_pics/skarmory_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/skarmory/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_skarmory_palette:: @ 8DCAD04
- .incbin "graphics/pokemon/palettes/skarmory_palette.gbapal.lz"
+ .incbin "graphics/pokemon/skarmory/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_skarmory_back_pic:: @ 8DCAD2C
- .incbin "graphics/pokemon/back_pics/skarmory_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/skarmory/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_skarmory_shiny_palette:: @ 8DCB030
- .incbin "graphics/pokemon/palettes/skarmory_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/skarmory/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_skarmory_icon:: @ 8DCB058
- .incbin "graphics/pokemon/icons/skarmory_icon.4bpp"
+ .incbin "graphics/pokemon/skarmory/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_skarmory_footprint:: @ 8DCB458
- .incbin "graphics/pokemon/footprints/skarmory_footprint.1bpp"
+ .incbin "graphics/pokemon/skarmory/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_houndour_still_front_pic:: @ 8DCB478
- .incbin "graphics/pokemon/front_pics/houndour_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/houndour/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_houndour_palette:: @ 8DCB730
- .incbin "graphics/pokemon/palettes/houndour_palette.gbapal.lz"
+ .incbin "graphics/pokemon/houndour/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_houndour_back_pic:: @ 8DCB758
- .incbin "graphics/pokemon/back_pics/houndour_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/houndour/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_houndour_shiny_palette:: @ 8DCB9D8
- .incbin "graphics/pokemon/palettes/houndour_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/houndour/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_houndour_icon:: @ 8DCBA00
- .incbin "graphics/pokemon/icons/houndour_icon.4bpp"
+ .incbin "graphics/pokemon/houndour/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_houndour_footprint:: @ 8DCBE00
- .incbin "graphics/pokemon/footprints/houndour_footprint.1bpp"
+ .incbin "graphics/pokemon/houndour/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_houndoom_still_front_pic:: @ 8DCBE20
- .incbin "graphics/pokemon/front_pics/houndoom_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/houndoom/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_houndoom_palette:: @ 8DCC220
- .incbin "graphics/pokemon/palettes/houndoom_palette.gbapal.lz"
+ .incbin "graphics/pokemon/houndoom/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_houndoom_back_pic:: @ 8DCC248
- .incbin "graphics/pokemon/back_pics/houndoom_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/houndoom/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_houndoom_shiny_palette:: @ 8DCC56C
- .incbin "graphics/pokemon/palettes/houndoom_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/houndoom/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_houndoom_icon:: @ 8DCC594
- .incbin "graphics/pokemon/icons/houndoom_icon.4bpp"
+ .incbin "graphics/pokemon/houndoom/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_houndoom_footprint:: @ 8DCC994
- .incbin "graphics/pokemon/footprints/houndoom_footprint.1bpp"
+ .incbin "graphics/pokemon/houndoom/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_kingdra_still_front_pic:: @ 8DCC9B4
- .incbin "graphics/pokemon/front_pics/kingdra_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kingdra/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kingdra_palette:: @ 8DCCDD4
- .incbin "graphics/pokemon/palettes/kingdra_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kingdra/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_kingdra_back_pic:: @ 8DCCDFC
- .incbin "graphics/pokemon/back_pics/kingdra_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kingdra/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kingdra_shiny_palette:: @ 8DCD1B0
- .incbin "graphics/pokemon/palettes/kingdra_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kingdra/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_kingdra_icon:: @ 8DCD1D8
- .incbin "graphics/pokemon/icons/kingdra_icon.4bpp"
+ .incbin "graphics/pokemon/kingdra/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_kingdra_footprint:: @ 8DCD5D8
- .incbin "graphics/pokemon/footprints/kingdra_footprint.1bpp"
+ .incbin "graphics/pokemon/kingdra/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_phanpy_still_front_pic:: @ 8DCD5F8
- .incbin "graphics/pokemon/front_pics/phanpy_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/phanpy/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_phanpy_palette:: @ 8DCD854
- .incbin "graphics/pokemon/palettes/phanpy_palette.gbapal.lz"
+ .incbin "graphics/pokemon/phanpy/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_phanpy_back_pic:: @ 8DCD87C
- .incbin "graphics/pokemon/back_pics/phanpy_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/phanpy/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_phanpy_shiny_palette:: @ 8DCDB40
- .incbin "graphics/pokemon/palettes/phanpy_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/phanpy/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_phanpy_icon:: @ 8DCDB68
- .incbin "graphics/pokemon/icons/phanpy_icon.4bpp"
+ .incbin "graphics/pokemon/phanpy/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_phanpy_footprint:: @ 8DCDF68
- .incbin "graphics/pokemon/footprints/phanpy_footprint.1bpp"
+ .incbin "graphics/pokemon/phanpy/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_donphan_still_front_pic:: @ 8DCDF88
- .incbin "graphics/pokemon/front_pics/donphan_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/donphan/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_donphan_palette:: @ 8DCE3FC
- .incbin "graphics/pokemon/palettes/donphan_palette.gbapal.lz"
+ .incbin "graphics/pokemon/donphan/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_donphan_back_pic:: @ 8DCE424
- .incbin "graphics/pokemon/back_pics/donphan_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/donphan/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_donphan_shiny_palette:: @ 8DCE720
- .incbin "graphics/pokemon/palettes/donphan_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/donphan/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_donphan_icon:: @ 8DCE748
- .incbin "graphics/pokemon/icons/donphan_icon.4bpp"
+ .incbin "graphics/pokemon/donphan/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_donphan_footprint:: @ 8DCEB48
- .incbin "graphics/pokemon/footprints/donphan_footprint.1bpp"
+ .incbin "graphics/pokemon/donphan/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_porygon2_still_front_pic:: @ 8DCEB68
- .incbin "graphics/pokemon/front_pics/porygon2_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/porygon2/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_porygon2_palette:: @ 8DCEDF0
- .incbin "graphics/pokemon/palettes/porygon2_palette.gbapal.lz"
+ .incbin "graphics/pokemon/porygon2/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_porygon2_back_pic:: @ 8DCEE18
- .incbin "graphics/pokemon/back_pics/porygon2_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/porygon2/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_porygon2_shiny_palette:: @ 8DCF134
- .incbin "graphics/pokemon/palettes/porygon2_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/porygon2/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_porygon2_icon:: @ 8DCF15C
- .incbin "graphics/pokemon/icons/porygon2_icon.4bpp"
+ .incbin "graphics/pokemon/porygon2/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_porygon2_footprint:: @ 8DCF55C
- .incbin "graphics/pokemon/footprints/porygon2_footprint.1bpp"
+ .incbin "graphics/pokemon/porygon2/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_stantler_still_front_pic:: @ 8DCF57C
- .incbin "graphics/pokemon/front_pics/stantler_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/stantler/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_stantler_palette:: @ 8DCF990
- .incbin "graphics/pokemon/palettes/stantler_palette.gbapal.lz"
+ .incbin "graphics/pokemon/stantler/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_stantler_back_pic:: @ 8DCF9B8
- .incbin "graphics/pokemon/back_pics/stantler_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/stantler/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_stantler_shiny_palette:: @ 8DCFD04
- .incbin "graphics/pokemon/palettes/stantler_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/stantler/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_stantler_icon:: @ 8DCFD2C
- .incbin "graphics/pokemon/icons/stantler_icon.4bpp"
+ .incbin "graphics/pokemon/stantler/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_stantler_footprint:: @ 8DD012C
- .incbin "graphics/pokemon/footprints/stantler_footprint.1bpp"
+ .incbin "graphics/pokemon/stantler/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_smeargle_still_front_pic:: @ 8DD014C
- .incbin "graphics/pokemon/front_pics/smeargle_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/smeargle/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_smeargle_palette:: @ 8DD04E0
- .incbin "graphics/pokemon/palettes/smeargle_palette.gbapal.lz"
+ .incbin "graphics/pokemon/smeargle/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_smeargle_back_pic:: @ 8DD0508
- .incbin "graphics/pokemon/back_pics/smeargle_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/smeargle/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_smeargle_shiny_palette:: @ 8DD082C
- .incbin "graphics/pokemon/palettes/smeargle_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/smeargle/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_smeargle_icon:: @ 8DD0854
- .incbin "graphics/pokemon/icons/smeargle_icon.4bpp"
+ .incbin "graphics/pokemon/smeargle/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_smeargle_footprint:: @ 8DD0C54
- .incbin "graphics/pokemon/footprints/smeargle_footprint.1bpp"
+ .incbin "graphics/pokemon/smeargle/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_tyrogue_still_front_pic:: @ 8DD0C74
- .incbin "graphics/pokemon/front_pics/tyrogue_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tyrogue/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tyrogue_palette:: @ 8DD0F00
- .incbin "graphics/pokemon/palettes/tyrogue_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tyrogue/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_tyrogue_back_pic:: @ 8DD0F28
- .incbin "graphics/pokemon/back_pics/tyrogue_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tyrogue/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tyrogue_shiny_palette:: @ 8DD1244
- .incbin "graphics/pokemon/palettes/tyrogue_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tyrogue/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_tyrogue_icon:: @ 8DD126C
- .incbin "graphics/pokemon/icons/tyrogue_icon.4bpp"
+ .incbin "graphics/pokemon/tyrogue/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_tyrogue_footprint:: @ 8DD166C
- .incbin "graphics/pokemon/footprints/tyrogue_footprint.1bpp"
+ .incbin "graphics/pokemon/tyrogue/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_hitmontop_still_front_pic:: @ 8DD168C
- .incbin "graphics/pokemon/front_pics/hitmontop_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hitmontop/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hitmontop_palette:: @ 8DD1A18
- .incbin "graphics/pokemon/palettes/hitmontop_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hitmontop/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_hitmontop_back_pic:: @ 8DD1A40
- .incbin "graphics/pokemon/back_pics/hitmontop_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hitmontop/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hitmontop_shiny_palette:: @ 8DD1E68
- .incbin "graphics/pokemon/palettes/hitmontop_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hitmontop/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_hitmontop_icon:: @ 8DD1E90
- .incbin "graphics/pokemon/icons/hitmontop_icon.4bpp"
+ .incbin "graphics/pokemon/hitmontop/icon.4bpp"
gUnknown_hitmontop_unknown_data:: @ 8DD2290
.incbin "baserom.gba", 0xDD2290, 0x200
.align 2
gFile_graphics_pokemon_footprints_hitmontop_footprint:: @ 8DD2490
- .incbin "graphics/pokemon/footprints/hitmontop_footprint.1bpp"
+ .incbin "graphics/pokemon/hitmontop/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_smoochum_still_front_pic:: @ 8DD24B0
- .incbin "graphics/pokemon/front_pics/smoochum_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/smoochum/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_smoochum_palette:: @ 8DD2708
- .incbin "graphics/pokemon/palettes/smoochum_palette.gbapal.lz"
+ .incbin "graphics/pokemon/smoochum/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_smoochum_back_pic:: @ 8DD2730
- .incbin "graphics/pokemon/back_pics/smoochum_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/smoochum/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_smoochum_shiny_palette:: @ 8DD29A8
- .incbin "graphics/pokemon/palettes/smoochum_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/smoochum/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_smoochum_icon:: @ 8DD29D0
- .incbin "graphics/pokemon/icons/smoochum_icon.4bpp"
+ .incbin "graphics/pokemon/smoochum/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_smoochum_footprint:: @ 8DD2DD0
- .incbin "graphics/pokemon/footprints/smoochum_footprint.1bpp"
+ .incbin "graphics/pokemon/smoochum/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_elekid_still_front_pic:: @ 8DD2DF0
- .incbin "graphics/pokemon/front_pics/elekid_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/elekid/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_elekid_palette:: @ 8DD30F8
- .incbin "graphics/pokemon/palettes/elekid_palette.gbapal.lz"
+ .incbin "graphics/pokemon/elekid/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_elekid_back_pic:: @ 8DD3120
- .incbin "graphics/pokemon/back_pics/elekid_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/elekid/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_elekid_shiny_palette:: @ 8DD3478
- .incbin "graphics/pokemon/palettes/elekid_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/elekid/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_elekid_icon:: @ 8DD34A0
- .incbin "graphics/pokemon/icons/elekid_icon.4bpp"
+ .incbin "graphics/pokemon/elekid/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_elekid_footprint:: @ 8DD38A0
- .incbin "graphics/pokemon/footprints/elekid_footprint.1bpp"
+ .incbin "graphics/pokemon/elekid/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_magby_still_front_pic:: @ 8DD38C0
- .incbin "graphics/pokemon/front_pics/magby_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/magby/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_magby_palette:: @ 8DD3B44
- .incbin "graphics/pokemon/palettes/magby_palette.gbapal.lz"
+ .incbin "graphics/pokemon/magby/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_magby_back_pic:: @ 8DD3B6C
- .incbin "graphics/pokemon/back_pics/magby_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/magby/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_magby_shiny_palette:: @ 8DD3E18
- .incbin "graphics/pokemon/palettes/magby_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/magby/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_magby_icon:: @ 8DD3E40
- .incbin "graphics/pokemon/icons/magby_icon.4bpp"
+ .incbin "graphics/pokemon/magby/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_magby_footprint:: @ 8DD4240
- .incbin "graphics/pokemon/footprints/magby_footprint.1bpp"
+ .incbin "graphics/pokemon/magby/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_miltank_still_front_pic:: @ 8DD4260
- .incbin "graphics/pokemon/front_pics/miltank_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/miltank/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_miltank_palette:: @ 8DD4610
- .incbin "graphics/pokemon/palettes/miltank_palette.gbapal.lz"
+ .incbin "graphics/pokemon/miltank/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_miltank_back_pic:: @ 8DD4638
- .incbin "graphics/pokemon/back_pics/miltank_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/miltank/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_miltank_shiny_palette:: @ 8DD49D4
- .incbin "graphics/pokemon/palettes/miltank_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/miltank/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_miltank_icon:: @ 8DD49FC
- .incbin "graphics/pokemon/icons/miltank_icon.4bpp"
+ .incbin "graphics/pokemon/miltank/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_miltank_footprint:: @ 8DD4DFC
- .incbin "graphics/pokemon/footprints/miltank_footprint.1bpp"
+ .incbin "graphics/pokemon/miltank/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_blissey_still_front_pic:: @ 8DD4E1C
- .incbin "graphics/pokemon/front_pics/blissey_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/blissey/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_blissey_palette:: @ 8DD5204
- .incbin "graphics/pokemon/palettes/blissey_palette.gbapal.lz"
+ .incbin "graphics/pokemon/blissey/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_blissey_back_pic:: @ 8DD522C
- .incbin "graphics/pokemon/back_pics/blissey_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/blissey/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_blissey_shiny_palette:: @ 8DD54F8
- .incbin "graphics/pokemon/palettes/blissey_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/blissey/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_blissey_icon:: @ 8DD5520
- .incbin "graphics/pokemon/icons/blissey_icon.4bpp"
+ .incbin "graphics/pokemon/blissey/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_blissey_footprint:: @ 8DD5920
- .incbin "graphics/pokemon/footprints/blissey_footprint.1bpp"
+ .incbin "graphics/pokemon/blissey/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_raikou_still_front_pic:: @ 8DD5940
- .incbin "graphics/pokemon/front_pics/raikou_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/raikou/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_raikou_palette:: @ 8DD5EBC
- .incbin "graphics/pokemon/palettes/raikou_palette.gbapal.lz"
+ .incbin "graphics/pokemon/raikou/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_raikou_back_pic:: @ 8DD5EE4
- .incbin "graphics/pokemon/back_pics/raikou_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/raikou/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_raikou_shiny_palette:: @ 8DD628C
- .incbin "graphics/pokemon/palettes/raikou_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/raikou/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_raikou_icon:: @ 8DD62B4
- .incbin "graphics/pokemon/icons/raikou_icon.4bpp"
+ .incbin "graphics/pokemon/raikou/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_raikou_footprint:: @ 8DD66B4
- .incbin "graphics/pokemon/footprints/raikou_footprint.1bpp"
+ .incbin "graphics/pokemon/raikou/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_entei_still_front_pic:: @ 8DD66D4
- .incbin "graphics/pokemon/front_pics/entei_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/entei/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_entei_palette:: @ 8DD6CD0
- .incbin "graphics/pokemon/palettes/entei_palette.gbapal.lz"
+ .incbin "graphics/pokemon/entei/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_entei_back_pic:: @ 8DD6CF8
- .incbin "graphics/pokemon/back_pics/entei_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/entei/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_entei_shiny_palette:: @ 8DD711C
- .incbin "graphics/pokemon/palettes/entei_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/entei/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_entei_icon:: @ 8DD7144
- .incbin "graphics/pokemon/icons/entei_icon.4bpp"
+ .incbin "graphics/pokemon/entei/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_entei_footprint:: @ 8DD7544
- .incbin "graphics/pokemon/footprints/entei_footprint.1bpp"
+ .incbin "graphics/pokemon/entei/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_suicune_still_front_pic:: @ 8DD7564
- .incbin "graphics/pokemon/front_pics/suicune_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/suicune/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_suicune_palette:: @ 8DD7AE8
- .incbin "graphics/pokemon/palettes/suicune_palette.gbapal.lz"
+ .incbin "graphics/pokemon/suicune/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_suicune_back_pic:: @ 8DD7B10
- .incbin "graphics/pokemon/back_pics/suicune_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/suicune/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_suicune_shiny_palette:: @ 8DD7FEC
- .incbin "graphics/pokemon/palettes/suicune_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/suicune/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_suicune_icon:: @ 8DD8014
- .incbin "graphics/pokemon/icons/suicune_icon.4bpp"
+ .incbin "graphics/pokemon/suicune/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_suicune_footprint:: @ 8DD8414
- .incbin "graphics/pokemon/footprints/suicune_footprint.1bpp"
+ .incbin "graphics/pokemon/suicune/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_larvitar_still_front_pic:: @ 8DD8434
- .incbin "graphics/pokemon/front_pics/larvitar_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/larvitar/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_larvitar_palette:: @ 8DD8690
- .incbin "graphics/pokemon/palettes/larvitar_palette.gbapal.lz"
+ .incbin "graphics/pokemon/larvitar/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_larvitar_back_pic:: @ 8DD86B8
- .incbin "graphics/pokemon/back_pics/larvitar_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/larvitar/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_larvitar_shiny_palette:: @ 8DD8964
- .incbin "graphics/pokemon/palettes/larvitar_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/larvitar/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_larvitar_icon:: @ 8DD898C
- .incbin "graphics/pokemon/icons/larvitar_icon.4bpp"
+ .incbin "graphics/pokemon/larvitar/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_larvitar_footprint:: @ 8DD8D8C
- .incbin "graphics/pokemon/footprints/larvitar_footprint.1bpp"
+ .incbin "graphics/pokemon/larvitar/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_pupitar_still_front_pic:: @ 8DD8DAC
- .incbin "graphics/pokemon/front_pics/pupitar_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pupitar/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pupitar_palette:: @ 8DD909C
- .incbin "graphics/pokemon/palettes/pupitar_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pupitar/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_pupitar_back_pic:: @ 8DD90C4
- .incbin "graphics/pokemon/back_pics/pupitar_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pupitar/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pupitar_shiny_palette:: @ 8DD93FC
- .incbin "graphics/pokemon/palettes/pupitar_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pupitar/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_pupitar_icon:: @ 8DD9424
- .incbin "graphics/pokemon/icons/pupitar_icon.4bpp"
+ .incbin "graphics/pokemon/pupitar/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_pupitar_footprint:: @ 8DD9824
- .incbin "graphics/pokemon/footprints/pupitar_footprint.1bpp"
+ .incbin "graphics/pokemon/pupitar/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_tyranitar_still_front_pic:: @ 8DD9844
- .incbin "graphics/pokemon/front_pics/tyranitar_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tyranitar/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tyranitar_palette:: @ 8DD9D80
- .incbin "graphics/pokemon/palettes/tyranitar_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tyranitar/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_tyranitar_back_pic:: @ 8DD9DA8
- .incbin "graphics/pokemon/back_pics/tyranitar_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tyranitar/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tyranitar_shiny_palette:: @ 8DDA194
- .incbin "graphics/pokemon/palettes/tyranitar_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tyranitar/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_tyranitar_icon:: @ 8DDA1BC
- .incbin "graphics/pokemon/icons/tyranitar_icon.4bpp"
+ .incbin "graphics/pokemon/tyranitar/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_tyranitar_footprint:: @ 8DDA5BC
- .incbin "graphics/pokemon/footprints/tyranitar_footprint.1bpp"
+ .incbin "graphics/pokemon/tyranitar/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_lugia_still_front_pic:: @ 8DDA5DC
- .incbin "graphics/pokemon/front_pics/lugia_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lugia/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lugia_palette:: @ 8DDAAA0
- .incbin "graphics/pokemon/palettes/lugia_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lugia/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_lugia_back_pic:: @ 8DDAAC8
- .incbin "graphics/pokemon/back_pics/lugia_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lugia/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lugia_shiny_palette:: @ 8DDAE9C
- .incbin "graphics/pokemon/palettes/lugia_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lugia/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_lugia_icon:: @ 8DDAEC4
- .incbin "graphics/pokemon/icons/lugia_icon.4bpp"
+ .incbin "graphics/pokemon/lugia/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_lugia_footprint:: @ 8DDB2C4
- .incbin "graphics/pokemon/footprints/lugia_footprint.1bpp"
+ .incbin "graphics/pokemon/lugia/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ho_oh_still_front_pic:: @ 8DDB2E4
- .incbin "graphics/pokemon/front_pics/ho_oh_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ho_oh/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ho_oh_palette:: @ 8DDB938
- .incbin "graphics/pokemon/palettes/ho_oh_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ho_oh/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ho_oh_back_pic:: @ 8DDB960
- .incbin "graphics/pokemon/back_pics/ho_oh_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ho_oh/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ho_oh_shiny_palette:: @ 8DDBD70
- .incbin "graphics/pokemon/palettes/ho_oh_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ho_oh/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ho_oh_icon:: @ 8DDBD98
- .incbin "graphics/pokemon/icons/ho_oh_icon.4bpp"
+ .incbin "graphics/pokemon/ho_oh/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ho_oh_footprint:: @ 8DDC198
- .incbin "graphics/pokemon/footprints/ho_oh_footprint.1bpp"
+ .incbin "graphics/pokemon/ho_oh/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_celebi_still_front_pic:: @ 8DDC1B8
- .incbin "graphics/pokemon/front_pics/celebi_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/celebi/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_celebi_palette:: @ 8DDC430
- .incbin "graphics/pokemon/palettes/celebi_palette.gbapal.lz"
+ .incbin "graphics/pokemon/celebi/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_celebi_back_pic:: @ 8DDC458
- .incbin "graphics/pokemon/back_pics/celebi_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/celebi/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_celebi_shiny_palette:: @ 8DDC804
- .incbin "graphics/pokemon/palettes/celebi_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/celebi/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_celebi_icon:: @ 8DDC82C
- .incbin "graphics/pokemon/icons/celebi_icon.4bpp"
+ .incbin "graphics/pokemon/celebi/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_celebi_footprint:: @ 8DDCC2C
- .incbin "graphics/pokemon/footprints/celebi_footprint.1bpp"
+ .incbin "graphics/pokemon/celebi/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_double_question_mark_still_front_pic:: @ 8DDCC4C
- .incbin "graphics/pokemon/front_pics/double_question_mark_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/question_mark/double/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_double_question_mark_palette:: @ 8DDCDD0
- .incbin "graphics/pokemon/palettes/double_question_mark_palette.gbapal.lz"
+ .incbin "graphics/pokemon/question_mark/double/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_double_question_mark_back_pic:: @ 8DDCDE4
- .incbin "graphics/pokemon/back_pics/double_question_mark_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/question_mark/double/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_double_question_mark_shiny_palette:: @ 8DDCF68
- .incbin "graphics/pokemon/palettes/double_question_mark_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/question_mark/double/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_front_pics_treecko_still_front_pic:: @ 8DDCF7C
- .incbin "graphics/pokemon/front_pics/treecko_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/treecko/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_treecko_palette:: @ 8DDD284
- .incbin "graphics/pokemon/palettes/treecko_palette.gbapal.lz"
+ .incbin "graphics/pokemon/treecko/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_treecko_back_pic:: @ 8DDD2AC
- .incbin "graphics/pokemon/back_pics/treecko_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/treecko/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_treecko_shiny_palette:: @ 8DDD5AC
- .incbin "graphics/pokemon/palettes/treecko_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/treecko/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_treecko_icon:: @ 8DDD5D4
- .incbin "graphics/pokemon/icons/treecko_icon.4bpp"
+ .incbin "graphics/pokemon/treecko/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_treecko_footprint:: @ 8DDD9D4
- .incbin "graphics/pokemon/footprints/treecko_footprint.1bpp"
+ .incbin "graphics/pokemon/treecko/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_grovyle_still_front_pic:: @ 8DDD9F4
- .incbin "graphics/pokemon/front_pics/grovyle_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/grovyle/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_grovyle_palette:: @ 8DDDE80
- .incbin "graphics/pokemon/palettes/grovyle_palette.gbapal.lz"
+ .incbin "graphics/pokemon/grovyle/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_grovyle_back_pic:: @ 8DDDEA8
- .incbin "graphics/pokemon/back_pics/grovyle_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/grovyle/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_grovyle_shiny_palette:: @ 8DDE1E4
- .incbin "graphics/pokemon/palettes/grovyle_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/grovyle/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_grovyle_icon:: @ 8DDE20C
- .incbin "graphics/pokemon/icons/grovyle_icon.4bpp"
+ .incbin "graphics/pokemon/grovyle/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_grovyle_footprint:: @ 8DDE60C
- .incbin "graphics/pokemon/footprints/grovyle_footprint.1bpp"
+ .incbin "graphics/pokemon/grovyle/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_sceptile_still_front_pic:: @ 8DDE62C
- .incbin "graphics/pokemon/front_pics/sceptile_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sceptile/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sceptile_palette:: @ 8DDEB30
- .incbin "graphics/pokemon/palettes/sceptile_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sceptile/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_sceptile_back_pic:: @ 8DDEB58
- .incbin "graphics/pokemon/back_pics/sceptile_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sceptile/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sceptile_shiny_palette:: @ 8DDEF54
- .incbin "graphics/pokemon/palettes/sceptile_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sceptile/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_sceptile_icon:: @ 8DDEF7C
- .incbin "graphics/pokemon/icons/sceptile_icon.4bpp"
+ .incbin "graphics/pokemon/sceptile/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_sceptile_footprint:: @ 8DDF37C
- .incbin "graphics/pokemon/footprints/sceptile_footprint.1bpp"
+ .incbin "graphics/pokemon/sceptile/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_torchic_still_front_pic:: @ 8DDF39C
- .incbin "graphics/pokemon/front_pics/torchic_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/torchic/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_torchic_palette:: @ 8DDF638
- .incbin "graphics/pokemon/palettes/torchic_palette.gbapal.lz"
+ .incbin "graphics/pokemon/torchic/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_torchic_back_pic:: @ 8DDF660
- .incbin "graphics/pokemon/back_pics/torchic_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/torchic/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_torchic_shiny_palette:: @ 8DDF938
- .incbin "graphics/pokemon/palettes/torchic_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/torchic/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_torchic_icon:: @ 8DDF960
- .incbin "graphics/pokemon/icons/torchic_icon.4bpp"
+ .incbin "graphics/pokemon/torchic/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_torchic_footprint:: @ 8DDFD60
- .incbin "graphics/pokemon/footprints/torchic_footprint.1bpp"
+ .incbin "graphics/pokemon/torchic/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_combusken_still_front_pic:: @ 8DDFD80
- .incbin "graphics/pokemon/front_pics/combusken_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/combusken/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_combusken_palette:: @ 8DE016C
- .incbin "graphics/pokemon/palettes/combusken_palette.gbapal.lz"
+ .incbin "graphics/pokemon/combusken/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_combusken_back_pic:: @ 8DE0194
- .incbin "graphics/pokemon/back_pics/combusken_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/combusken/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_combusken_shiny_palette:: @ 8DE0564
- .incbin "graphics/pokemon/palettes/combusken_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/combusken/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_combusken_icon:: @ 8DE058C
- .incbin "graphics/pokemon/icons/combusken_icon.4bpp"
+ .incbin "graphics/pokemon/combusken/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_combusken_footprint:: @ 8DE098C
- .incbin "graphics/pokemon/footprints/combusken_footprint.1bpp"
+ .incbin "graphics/pokemon/combusken/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_blaziken_still_front_pic:: @ 8DE09AC
- .incbin "graphics/pokemon/front_pics/blaziken_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/blaziken/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_blaziken_palette:: @ 8DE0E24
- .incbin "graphics/pokemon/palettes/blaziken_palette.gbapal.lz"
+ .incbin "graphics/pokemon/blaziken/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_blaziken_back_pic:: @ 8DE0E4C
- .incbin "graphics/pokemon/back_pics/blaziken_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/blaziken/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_blaziken_shiny_palette:: @ 8DE1228
- .incbin "graphics/pokemon/palettes/blaziken_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/blaziken/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_blaziken_icon:: @ 8DE1250
- .incbin "graphics/pokemon/icons/blaziken_icon.4bpp"
+ .incbin "graphics/pokemon/blaziken/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_blaziken_footprint:: @ 8DE1650
- .incbin "graphics/pokemon/footprints/blaziken_footprint.1bpp"
+ .incbin "graphics/pokemon/blaziken/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_mudkip_still_front_pic:: @ 8DE1670
- .incbin "graphics/pokemon/front_pics/mudkip_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mudkip/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mudkip_palette:: @ 8DE1928
- .incbin "graphics/pokemon/palettes/mudkip_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mudkip/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_mudkip_back_pic:: @ 8DE1950
- .incbin "graphics/pokemon/back_pics/mudkip_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mudkip/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mudkip_shiny_palette:: @ 8DE1C30
- .incbin "graphics/pokemon/palettes/mudkip_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mudkip/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_mudkip_icon:: @ 8DE1C58
- .incbin "graphics/pokemon/icons/mudkip_icon.4bpp"
+ .incbin "graphics/pokemon/mudkip/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_mudkip_footprint:: @ 8DE2058
- .incbin "graphics/pokemon/footprints/mudkip_footprint.1bpp"
+ .incbin "graphics/pokemon/mudkip/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_marshtomp_still_front_pic:: @ 8DE2078
- .incbin "graphics/pokemon/front_pics/marshtomp_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/marshtomp/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_marshtomp_palette:: @ 8DE2400
- .incbin "graphics/pokemon/palettes/marshtomp_palette.gbapal.lz"
+ .incbin "graphics/pokemon/marshtomp/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_marshtomp_back_pic:: @ 8DE2428
- .incbin "graphics/pokemon/back_pics/marshtomp_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/marshtomp/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_marshtomp_shiny_palette:: @ 8DE27D8
- .incbin "graphics/pokemon/palettes/marshtomp_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/marshtomp/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_marshtomp_icon:: @ 8DE2800
- .incbin "graphics/pokemon/icons/marshtomp_icon.4bpp"
+ .incbin "graphics/pokemon/marshtomp/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_marshtomp_footprint:: @ 8DE2C00
- .incbin "graphics/pokemon/footprints/marshtomp_footprint.1bpp"
+ .incbin "graphics/pokemon/marshtomp/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_swampert_still_front_pic:: @ 8DE2C20
- .incbin "graphics/pokemon/front_pics/swampert_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/swampert/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_swampert_palette:: @ 8DE319C
- .incbin "graphics/pokemon/palettes/swampert_palette.gbapal.lz"
+ .incbin "graphics/pokemon/swampert/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_swampert_back_pic:: @ 8DE31C4
- .incbin "graphics/pokemon/back_pics/swampert_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/swampert/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_swampert_shiny_palette:: @ 8DE3578
- .incbin "graphics/pokemon/palettes/swampert_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/swampert/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_swampert_icon:: @ 8DE35A0
- .incbin "graphics/pokemon/icons/swampert_icon.4bpp"
+ .incbin "graphics/pokemon/swampert/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_swampert_footprint:: @ 8DE39A0
- .incbin "graphics/pokemon/footprints/swampert_footprint.1bpp"
+ .incbin "graphics/pokemon/swampert/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_poochyena_still_front_pic:: @ 8DE39C0
- .incbin "graphics/pokemon/front_pics/poochyena_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/poochyena/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_poochyena_palette:: @ 8DE3C88
- .incbin "graphics/pokemon/palettes/poochyena_palette.gbapal.lz"
+ .incbin "graphics/pokemon/poochyena/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_poochyena_back_pic:: @ 8DE3CB0
- .incbin "graphics/pokemon/back_pics/poochyena_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/poochyena/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_poochyena_shiny_palette:: @ 8DE3FDC
- .incbin "graphics/pokemon/palettes/poochyena_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/poochyena/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_poochyena_icon:: @ 8DE4004
- .incbin "graphics/pokemon/icons/poochyena_icon.4bpp"
+ .incbin "graphics/pokemon/poochyena/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_poochyena_footprint:: @ 8DE4404
- .incbin "graphics/pokemon/footprints/poochyena_footprint.1bpp"
+ .incbin "graphics/pokemon/poochyena/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_mightyena_still_front_pic:: @ 8DE4424
- .incbin "graphics/pokemon/front_pics/mightyena_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mightyena/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mightyena_palette:: @ 8DE485C
- .incbin "graphics/pokemon/palettes/mightyena_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mightyena/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_mightyena_back_pic:: @ 8DE4884
- .incbin "graphics/pokemon/back_pics/mightyena_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mightyena/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mightyena_shiny_palette:: @ 8DE4BFC
- .incbin "graphics/pokemon/palettes/mightyena_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mightyena/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_mightyena_icon:: @ 8DE4C24
- .incbin "graphics/pokemon/icons/mightyena_icon.4bpp"
+ .incbin "graphics/pokemon/mightyena/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_mightyena_footprint:: @ 8DE5024
- .incbin "graphics/pokemon/footprints/mightyena_footprint.1bpp"
+ .incbin "graphics/pokemon/mightyena/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_zigzagoon_still_front_pic:: @ 8DE5044
- .incbin "graphics/pokemon/front_pics/zigzagoon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/zigzagoon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_zigzagoon_palette:: @ 8DE5414
- .incbin "graphics/pokemon/palettes/zigzagoon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/zigzagoon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_zigzagoon_back_pic:: @ 8DE543C
- .incbin "graphics/pokemon/back_pics/zigzagoon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/zigzagoon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_zigzagoon_shiny_palette:: @ 8DE577C
- .incbin "graphics/pokemon/palettes/zigzagoon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/zigzagoon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_zigzagoon_icon:: @ 8DE57A4
- .incbin "graphics/pokemon/icons/zigzagoon_icon.4bpp"
+ .incbin "graphics/pokemon/zigzagoon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_zigzagoon_footprint:: @ 8DE5BA4
- .incbin "graphics/pokemon/footprints/zigzagoon_footprint.1bpp"
+ .incbin "graphics/pokemon/zigzagoon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_linoone_still_front_pic:: @ 8DE5BC4
- .incbin "graphics/pokemon/front_pics/linoone_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/linoone/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_linoone_palette:: @ 8DE5F34
- .incbin "graphics/pokemon/palettes/linoone_palette.gbapal.lz"
+ .incbin "graphics/pokemon/linoone/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_linoone_back_pic:: @ 8DE5F5C
- .incbin "graphics/pokemon/back_pics/linoone_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/linoone/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_linoone_shiny_palette:: @ 8DE6230
- .incbin "graphics/pokemon/palettes/linoone_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/linoone/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_linoone_icon:: @ 8DE6258
- .incbin "graphics/pokemon/icons/linoone_icon.4bpp"
+ .incbin "graphics/pokemon/linoone/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_linoone_footprint:: @ 8DE6658
- .incbin "graphics/pokemon/footprints/linoone_footprint.1bpp"
+ .incbin "graphics/pokemon/linoone/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_wurmple_still_front_pic:: @ 8DE6678
- .incbin "graphics/pokemon/front_pics/wurmple_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wurmple/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wurmple_palette:: @ 8DE6900
- .incbin "graphics/pokemon/palettes/wurmple_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wurmple/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_wurmple_back_pic:: @ 8DE6928
- .incbin "graphics/pokemon/back_pics/wurmple_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wurmple/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wurmple_shiny_palette:: @ 8DE6B74
- .incbin "graphics/pokemon/palettes/wurmple_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wurmple/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_wurmple_icon:: @ 8DE6B9C
- .incbin "graphics/pokemon/icons/wurmple_icon.4bpp"
+ .incbin "graphics/pokemon/wurmple/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_wurmple_footprint:: @ 8DE6F9C
- .incbin "graphics/pokemon/footprints/wurmple_footprint.1bpp"
+ .incbin "graphics/pokemon/wurmple/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_silcoon_still_front_pic:: @ 8DE6FBC
- .incbin "graphics/pokemon/front_pics/silcoon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/silcoon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_silcoon_palette:: @ 8DE723C
- .incbin "graphics/pokemon/palettes/silcoon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/silcoon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_silcoon_back_pic:: @ 8DE7264
- .incbin "graphics/pokemon/back_pics/silcoon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/silcoon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_silcoon_shiny_palette:: @ 8DE7480
- .incbin "graphics/pokemon/palettes/silcoon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/silcoon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_silcoon_icon:: @ 8DE74A8
- .incbin "graphics/pokemon/icons/silcoon_icon.4bpp"
+ .incbin "graphics/pokemon/silcoon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_silcoon_footprint:: @ 8DE78A8
- .incbin "graphics/pokemon/footprints/silcoon_footprint.1bpp"
+ .incbin "graphics/pokemon/silcoon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_beautifly_still_front_pic:: @ 8DE78C8
- .incbin "graphics/pokemon/front_pics/beautifly_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/beautifly/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_beautifly_palette:: @ 8DE7C20
- .incbin "graphics/pokemon/palettes/beautifly_palette.gbapal.lz"
+ .incbin "graphics/pokemon/beautifly/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_beautifly_back_pic:: @ 8DE7C48
- .incbin "graphics/pokemon/back_pics/beautifly_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/beautifly/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_beautifly_shiny_palette:: @ 8DE7FF8
- .incbin "graphics/pokemon/palettes/beautifly_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/beautifly/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_beautifly_icon:: @ 8DE8020
- .incbin "graphics/pokemon/icons/beautifly_icon.4bpp"
+ .incbin "graphics/pokemon/beautifly/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_beautifly_footprint:: @ 8DE8420
- .incbin "graphics/pokemon/footprints/beautifly_footprint.1bpp"
+ .incbin "graphics/pokemon/beautifly/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_cascoon_still_front_pic:: @ 8DE8440
- .incbin "graphics/pokemon/front_pics/cascoon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cascoon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cascoon_palette:: @ 8DE86AC
- .incbin "graphics/pokemon/palettes/cascoon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cascoon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_cascoon_back_pic:: @ 8DE86D4
- .incbin "graphics/pokemon/back_pics/cascoon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cascoon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cascoon_shiny_palette:: @ 8DE88E4
- .incbin "graphics/pokemon/palettes/cascoon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cascoon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_cascoon_icon:: @ 8DE890C
- .incbin "graphics/pokemon/icons/cascoon_icon.4bpp"
+ .incbin "graphics/pokemon/cascoon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_cascoon_footprint:: @ 8DE8D0C
- .incbin "graphics/pokemon/footprints/cascoon_footprint.1bpp"
+ .incbin "graphics/pokemon/cascoon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_dustox_still_front_pic:: @ 8DE8D2C
- .incbin "graphics/pokemon/front_pics/dustox_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dustox/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dustox_palette:: @ 8DE9094
- .incbin "graphics/pokemon/palettes/dustox_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dustox/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_dustox_back_pic:: @ 8DE90BC
- .incbin "graphics/pokemon/back_pics/dustox_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dustox/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dustox_shiny_palette:: @ 8DE9314
- .incbin "graphics/pokemon/palettes/dustox_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dustox/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_dustox_icon:: @ 8DE933C
- .incbin "graphics/pokemon/icons/dustox_icon.4bpp"
+ .incbin "graphics/pokemon/dustox/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_dustox_footprint:: @ 8DE973C
- .incbin "graphics/pokemon/footprints/dustox_footprint.1bpp"
+ .incbin "graphics/pokemon/dustox/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_lotad_still_front_pic:: @ 8DE975C
- .incbin "graphics/pokemon/front_pics/lotad_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lotad/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lotad_palette:: @ 8DE99BC
- .incbin "graphics/pokemon/palettes/lotad_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lotad/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_lotad_back_pic:: @ 8DE99E4
- .incbin "graphics/pokemon/back_pics/lotad_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lotad/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lotad_shiny_palette:: @ 8DE9CCC
- .incbin "graphics/pokemon/palettes/lotad_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lotad/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_lotad_icon:: @ 8DE9CF4
- .incbin "graphics/pokemon/icons/lotad_icon.4bpp"
+ .incbin "graphics/pokemon/lotad/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_lotad_footprint:: @ 8DEA0F4
- .incbin "graphics/pokemon/footprints/lotad_footprint.1bpp"
+ .incbin "graphics/pokemon/lotad/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_lombre_still_front_pic:: @ 8DEA114
- .incbin "graphics/pokemon/front_pics/lombre_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lombre/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lombre_palette:: @ 8DEA42C
- .incbin "graphics/pokemon/palettes/lombre_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lombre/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_lombre_back_pic:: @ 8DEA454
- .incbin "graphics/pokemon/back_pics/lombre_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lombre/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lombre_shiny_palette:: @ 8DEA750
- .incbin "graphics/pokemon/palettes/lombre_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lombre/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_lombre_icon:: @ 8DEA778
- .incbin "graphics/pokemon/icons/lombre_icon.4bpp"
+ .incbin "graphics/pokemon/lombre/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_lombre_footprint:: @ 8DEAB78
- .incbin "graphics/pokemon/footprints/lombre_footprint.1bpp"
+ .incbin "graphics/pokemon/lombre/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ludicolo_still_front_pic:: @ 8DEAB98
- .incbin "graphics/pokemon/front_pics/ludicolo_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ludicolo/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ludicolo_palette:: @ 8DEB07C
- .incbin "graphics/pokemon/palettes/ludicolo_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ludicolo/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ludicolo_back_pic:: @ 8DEB0A4
- .incbin "graphics/pokemon/back_pics/ludicolo_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ludicolo/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ludicolo_shiny_palette:: @ 8DEB3A0
- .incbin "graphics/pokemon/palettes/ludicolo_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ludicolo/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ludicolo_icon:: @ 8DEB3C8
- .incbin "graphics/pokemon/icons/ludicolo_icon.4bpp"
+ .incbin "graphics/pokemon/ludicolo/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ludicolo_footprint:: @ 8DEB7C8
- .incbin "graphics/pokemon/footprints/ludicolo_footprint.1bpp"
+ .incbin "graphics/pokemon/ludicolo/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_seedot_still_front_pic:: @ 8DEB7E8
- .incbin "graphics/pokemon/front_pics/seedot_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/seedot/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_seedot_palette:: @ 8DEBA7C
- .incbin "graphics/pokemon/palettes/seedot_palette.gbapal.lz"
+ .incbin "graphics/pokemon/seedot/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_seedot_back_pic:: @ 8DEBAA4
- .incbin "graphics/pokemon/back_pics/seedot_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/seedot/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_seedot_shiny_palette:: @ 8DEBD84
- .incbin "graphics/pokemon/palettes/seedot_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/seedot/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_seedot_icon:: @ 8DEBDAC
- .incbin "graphics/pokemon/icons/seedot_icon.4bpp"
+ .incbin "graphics/pokemon/seedot/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_seedot_footprint:: @ 8DEC1AC
- .incbin "graphics/pokemon/footprints/seedot_footprint.1bpp"
+ .incbin "graphics/pokemon/seedot/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_nuzleaf_still_front_pic:: @ 8DEC1CC
- .incbin "graphics/pokemon/front_pics/nuzleaf_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nuzleaf/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nuzleaf_palette:: @ 8DEC4B8
- .incbin "graphics/pokemon/palettes/nuzleaf_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nuzleaf/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_nuzleaf_back_pic:: @ 8DEC4E0
- .incbin "graphics/pokemon/back_pics/nuzleaf_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nuzleaf/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nuzleaf_shiny_palette:: @ 8DEC7A8
- .incbin "graphics/pokemon/palettes/nuzleaf_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nuzleaf/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_nuzleaf_icon:: @ 8DEC7D0
- .incbin "graphics/pokemon/icons/nuzleaf_icon.4bpp"
+ .incbin "graphics/pokemon/nuzleaf/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_nuzleaf_footprint:: @ 8DECBD0
- .incbin "graphics/pokemon/footprints/nuzleaf_footprint.1bpp"
+ .incbin "graphics/pokemon/nuzleaf/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_shiftry_still_front_pic:: @ 8DECBF0
- .incbin "graphics/pokemon/front_pics/shiftry_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shiftry/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shiftry_palette:: @ 8DED0AC
- .incbin "graphics/pokemon/palettes/shiftry_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shiftry/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_shiftry_back_pic:: @ 8DED0D4
- .incbin "graphics/pokemon/back_pics/shiftry_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shiftry/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shiftry_shiny_palette:: @ 8DED398
- .incbin "graphics/pokemon/palettes/shiftry_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shiftry/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_shiftry_icon:: @ 8DED3C0
- .incbin "graphics/pokemon/icons/shiftry_icon.4bpp"
+ .incbin "graphics/pokemon/shiftry/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_shiftry_footprint:: @ 8DED7C0
- .incbin "graphics/pokemon/footprints/shiftry_footprint.1bpp"
+ .incbin "graphics/pokemon/shiftry/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_nincada_still_front_pic:: @ 8DED7E0
- .incbin "graphics/pokemon/front_pics/nincada_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nincada/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nincada_palette:: @ 8DEDA80
- .incbin "graphics/pokemon/palettes/nincada_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nincada/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_nincada_back_pic:: @ 8DEDAA8
- .incbin "graphics/pokemon/back_pics/nincada_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nincada/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nincada_shiny_palette:: @ 8DEDD60
- .incbin "graphics/pokemon/palettes/nincada_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nincada/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_nincada_icon:: @ 8DEDD88
- .incbin "graphics/pokemon/icons/nincada_icon.4bpp"
+ .incbin "graphics/pokemon/nincada/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_nincada_footprint:: @ 8DEE188
- .incbin "graphics/pokemon/footprints/nincada_footprint.1bpp"
+ .incbin "graphics/pokemon/nincada/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ninjask_still_front_pic:: @ 8DEE1A8
- .incbin "graphics/pokemon/front_pics/ninjask_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ninjask/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ninjask_palette:: @ 8DEE518
- .incbin "graphics/pokemon/palettes/ninjask_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ninjask/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ninjask_back_pic:: @ 8DEE540
- .incbin "graphics/pokemon/back_pics/ninjask_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ninjask/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ninjask_shiny_palette:: @ 8DEE90C
- .incbin "graphics/pokemon/palettes/ninjask_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ninjask/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ninjask_icon:: @ 8DEE934
- .incbin "graphics/pokemon/icons/ninjask_icon.4bpp"
+ .incbin "graphics/pokemon/ninjask/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ninjask_footprint:: @ 8DEED34
- .incbin "graphics/pokemon/footprints/ninjask_footprint.1bpp"
+ .incbin "graphics/pokemon/ninjask/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_shedinja_still_front_pic:: @ 8DEED54
- .incbin "graphics/pokemon/front_pics/shedinja_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shedinja/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shedinja_palette:: @ 8DEF074
- .incbin "graphics/pokemon/palettes/shedinja_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shedinja/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_shedinja_back_pic:: @ 8DEF09C
- .incbin "graphics/pokemon/back_pics/shedinja_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shedinja/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shedinja_shiny_palette:: @ 8DEF43C
- .incbin "graphics/pokemon/palettes/shedinja_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shedinja/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_shedinja_icon:: @ 8DEF464
- .incbin "graphics/pokemon/icons/shedinja_icon.4bpp"
+ .incbin "graphics/pokemon/shedinja/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_shedinja_footprint:: @ 8DEF864
- .incbin "graphics/pokemon/footprints/shedinja_footprint.1bpp"
+ .incbin "graphics/pokemon/shedinja/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_taillow_still_front_pic:: @ 8DEF884
- .incbin "graphics/pokemon/front_pics/taillow_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/taillow/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_taillow_palette:: @ 8DEFADC
- .incbin "graphics/pokemon/palettes/taillow_palette.gbapal.lz"
+ .incbin "graphics/pokemon/taillow/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_taillow_back_pic:: @ 8DEFB04
- .incbin "graphics/pokemon/back_pics/taillow_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/taillow/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_taillow_shiny_palette:: @ 8DEFD24
- .incbin "graphics/pokemon/palettes/taillow_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/taillow/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_taillow_icon:: @ 8DEFD4C
- .incbin "graphics/pokemon/icons/taillow_icon.4bpp"
+ .incbin "graphics/pokemon/taillow/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_taillow_footprint:: @ 8DF014C
- .incbin "graphics/pokemon/footprints/taillow_footprint.1bpp"
+ .incbin "graphics/pokemon/taillow/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_swellow_still_front_pic:: @ 8DF016C
- .incbin "graphics/pokemon/front_pics/swellow_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/swellow/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_swellow_palette:: @ 8DF0530
- .incbin "graphics/pokemon/palettes/swellow_palette.gbapal.lz"
+ .incbin "graphics/pokemon/swellow/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_swellow_back_pic:: @ 8DF0558
- .incbin "graphics/pokemon/back_pics/swellow_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/swellow/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_swellow_shiny_palette:: @ 8DF0890
- .incbin "graphics/pokemon/palettes/swellow_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/swellow/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_swellow_icon:: @ 8DF08B8
- .incbin "graphics/pokemon/icons/swellow_icon.4bpp"
+ .incbin "graphics/pokemon/swellow/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_swellow_footprint:: @ 8DF0CB8
- .incbin "graphics/pokemon/footprints/swellow_footprint.1bpp"
+ .incbin "graphics/pokemon/swellow/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_shroomish_still_front_pic:: @ 8DF0CD8
- .incbin "graphics/pokemon/front_pics/shroomish_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shroomish/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shroomish_palette:: @ 8DF0F40
- .incbin "graphics/pokemon/palettes/shroomish_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shroomish/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_shroomish_back_pic:: @ 8DF0F68
- .incbin "graphics/pokemon/back_pics/shroomish_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shroomish/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shroomish_shiny_palette:: @ 8DF1248
- .incbin "graphics/pokemon/palettes/shroomish_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shroomish/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_shroomish_icon:: @ 8DF1270
- .incbin "graphics/pokemon/icons/shroomish_icon.4bpp"
+ .incbin "graphics/pokemon/shroomish/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_shroomish_footprint:: @ 8DF1670
- .incbin "graphics/pokemon/footprints/shroomish_footprint.1bpp"
+ .incbin "graphics/pokemon/shroomish/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_breloom_still_front_pic:: @ 8DF1690
- .incbin "graphics/pokemon/front_pics/breloom_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/breloom/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_breloom_palette:: @ 8DF1A78
- .incbin "graphics/pokemon/palettes/breloom_palette.gbapal.lz"
+ .incbin "graphics/pokemon/breloom/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_breloom_back_pic:: @ 8DF1AA0
- .incbin "graphics/pokemon/back_pics/breloom_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/breloom/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_breloom_shiny_palette:: @ 8DF1E80
- .incbin "graphics/pokemon/palettes/breloom_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/breloom/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_breloom_icon:: @ 8DF1EA8
- .incbin "graphics/pokemon/icons/breloom_icon.4bpp"
+ .incbin "graphics/pokemon/breloom/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_breloom_footprint:: @ 8DF22A8
- .incbin "graphics/pokemon/footprints/breloom_footprint.1bpp"
+ .incbin "graphics/pokemon/breloom/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_spinda_still_front_pic:: @ 8DF22C8
- .incbin "graphics/pokemon/front_pics/spinda_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/spinda/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_spinda_palette:: @ 8DF25C8
- .incbin "graphics/pokemon/palettes/spinda_palette.gbapal.lz"
+ .incbin "graphics/pokemon/spinda/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_spinda_back_pic:: @ 8DF25F0
- .incbin "graphics/pokemon/back_pics/spinda_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/spinda/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_spinda_shiny_palette:: @ 8DF292C
- .incbin "graphics/pokemon/palettes/spinda_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/spinda/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_spinda_icon:: @ 8DF2954
- .incbin "graphics/pokemon/icons/spinda_icon.4bpp"
+ .incbin "graphics/pokemon/spinda/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_spinda_footprint:: @ 8DF2D54
- .incbin "graphics/pokemon/footprints/spinda_footprint.1bpp"
+ .incbin "graphics/pokemon/spinda/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_wingull_still_front_pic:: @ 8DF2D74
- .incbin "graphics/pokemon/front_pics/wingull_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wingull/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wingull_palette:: @ 8DF2FB0
- .incbin "graphics/pokemon/palettes/wingull_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wingull/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_wingull_back_pic:: @ 8DF2FD8
- .incbin "graphics/pokemon/back_pics/wingull_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wingull/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wingull_shiny_palette:: @ 8DF3328
- .incbin "graphics/pokemon/palettes/wingull_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wingull/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_wingull_icon:: @ 8DF3350
- .incbin "graphics/pokemon/icons/wingull_icon.4bpp"
+ .incbin "graphics/pokemon/wingull/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_wingull_footprint:: @ 8DF3750
- .incbin "graphics/pokemon/footprints/wingull_footprint.1bpp"
+ .incbin "graphics/pokemon/wingull/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_pelipper_still_front_pic:: @ 8DF3770
- .incbin "graphics/pokemon/front_pics/pelipper_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pelipper/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pelipper_palette:: @ 8DF3B08
- .incbin "graphics/pokemon/palettes/pelipper_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pelipper/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_pelipper_back_pic:: @ 8DF3B30
- .incbin "graphics/pokemon/back_pics/pelipper_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/pelipper/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_pelipper_shiny_palette:: @ 8DF3EB0
- .incbin "graphics/pokemon/palettes/pelipper_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/pelipper/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_pelipper_icon:: @ 8DF3ED8
- .incbin "graphics/pokemon/icons/pelipper_icon.4bpp"
+ .incbin "graphics/pokemon/pelipper/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_pelipper_footprint:: @ 8DF42D8
- .incbin "graphics/pokemon/footprints/pelipper_footprint.1bpp"
+ .incbin "graphics/pokemon/pelipper/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_surskit_still_front_pic:: @ 8DF42F8
- .incbin "graphics/pokemon/front_pics/surskit_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/surskit/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_surskit_palette:: @ 8DF4504
- .incbin "graphics/pokemon/palettes/surskit_palette.gbapal.lz"
+ .incbin "graphics/pokemon/surskit/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_surskit_back_pic:: @ 8DF452C
- .incbin "graphics/pokemon/back_pics/surskit_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/surskit/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_surskit_shiny_palette:: @ 8DF4764
- .incbin "graphics/pokemon/palettes/surskit_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/surskit/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_surskit_icon:: @ 8DF478C
- .incbin "graphics/pokemon/icons/surskit_icon.4bpp"
+ .incbin "graphics/pokemon/surskit/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_surskit_footprint:: @ 8DF4B8C
- .incbin "graphics/pokemon/footprints/surskit_footprint.1bpp"
+ .incbin "graphics/pokemon/surskit/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_masquerain_still_front_pic:: @ 8DF4BAC
- .incbin "graphics/pokemon/front_pics/masquerain_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/masquerain/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_masquerain_palette:: @ 8DF4F48
- .incbin "graphics/pokemon/palettes/masquerain_palette.gbapal.lz"
+ .incbin "graphics/pokemon/masquerain/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_masquerain_back_pic:: @ 8DF4F70
- .incbin "graphics/pokemon/back_pics/masquerain_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/masquerain/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_masquerain_shiny_palette:: @ 8DF52C8
- .incbin "graphics/pokemon/palettes/masquerain_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/masquerain/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_masquerain_icon:: @ 8DF52F0
- .incbin "graphics/pokemon/icons/masquerain_icon.4bpp"
+ .incbin "graphics/pokemon/masquerain/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_masquerain_footprint:: @ 8DF56F0
- .incbin "graphics/pokemon/footprints/masquerain_footprint.1bpp"
+ .incbin "graphics/pokemon/masquerain/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_wailmer_still_front_pic:: @ 8DF5710
- .incbin "graphics/pokemon/front_pics/wailmer_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wailmer/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wailmer_palette:: @ 8DF59F0
- .incbin "graphics/pokemon/palettes/wailmer_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wailmer/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_wailmer_back_pic:: @ 8DF5A18
- .incbin "graphics/pokemon/back_pics/wailmer_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wailmer/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wailmer_shiny_palette:: @ 8DF5BFC
- .incbin "graphics/pokemon/palettes/wailmer_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wailmer/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_wailmer_icon:: @ 8DF5C24
- .incbin "graphics/pokemon/icons/wailmer_icon.4bpp"
+ .incbin "graphics/pokemon/wailmer/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_wailmer_footprint:: @ 8DF6024
- .incbin "graphics/pokemon/footprints/wailmer_footprint.1bpp"
+ .incbin "graphics/pokemon/wailmer/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_wailord_still_front_pic:: @ 8DF6044
- .incbin "graphics/pokemon/front_pics/wailord_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wailord/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wailord_palette:: @ 8DF6408
- .incbin "graphics/pokemon/palettes/wailord_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wailord/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_wailord_back_pic:: @ 8DF6430
- .incbin "graphics/pokemon/back_pics/wailord_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wailord/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wailord_shiny_palette:: @ 8DF6648
- .incbin "graphics/pokemon/palettes/wailord_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wailord/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_wailord_icon:: @ 8DF6670
- .incbin "graphics/pokemon/icons/wailord_icon.4bpp"
+ .incbin "graphics/pokemon/wailord/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_wailord_footprint:: @ 8DF6A70
- .incbin "graphics/pokemon/footprints/wailord_footprint.1bpp"
+ .incbin "graphics/pokemon/wailord/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_skitty_still_front_pic:: @ 8DF6A90
- .incbin "graphics/pokemon/front_pics/skitty_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/skitty/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_skitty_palette:: @ 8DF6D90
- .incbin "graphics/pokemon/palettes/skitty_palette.gbapal.lz"
+ .incbin "graphics/pokemon/skitty/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_skitty_back_pic:: @ 8DF6DB8
- .incbin "graphics/pokemon/back_pics/skitty_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/skitty/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_skitty_shiny_palette:: @ 8DF7100
- .incbin "graphics/pokemon/palettes/skitty_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/skitty/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_skitty_icon:: @ 8DF7128
- .incbin "graphics/pokemon/icons/skitty_icon.4bpp"
+ .incbin "graphics/pokemon/skitty/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_skitty_footprint:: @ 8DF7528
- .incbin "graphics/pokemon/footprints/skitty_footprint.1bpp"
+ .incbin "graphics/pokemon/skitty/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_delcatty_still_front_pic:: @ 8DF7548
- .incbin "graphics/pokemon/front_pics/delcatty_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/delcatty/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_delcatty_palette:: @ 8DF78D4
- .incbin "graphics/pokemon/palettes/delcatty_palette.gbapal.lz"
+ .incbin "graphics/pokemon/delcatty/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_delcatty_back_pic:: @ 8DF78FC
- .incbin "graphics/pokemon/back_pics/delcatty_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/delcatty/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_delcatty_shiny_palette:: @ 8DF7C98
- .incbin "graphics/pokemon/palettes/delcatty_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/delcatty/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_delcatty_icon:: @ 8DF7CC0
- .incbin "graphics/pokemon/icons/delcatty_icon.4bpp"
+ .incbin "graphics/pokemon/delcatty/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_delcatty_footprint:: @ 8DF80C0
- .incbin "graphics/pokemon/footprints/delcatty_footprint.1bpp"
+ .incbin "graphics/pokemon/delcatty/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_kecleon_still_front_pic:: @ 8DF80E0
- .incbin "graphics/pokemon/front_pics/kecleon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kecleon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kecleon_palette:: @ 8DF8460
- .incbin "graphics/pokemon/palettes/kecleon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kecleon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_kecleon_back_pic:: @ 8DF8488
- .incbin "graphics/pokemon/back_pics/kecleon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kecleon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kecleon_shiny_palette:: @ 8DF8860
- .incbin "graphics/pokemon/palettes/kecleon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kecleon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_kecleon_icon:: @ 8DF8888
- .incbin "graphics/pokemon/icons/kecleon_icon.4bpp"
+ .incbin "graphics/pokemon/kecleon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_kecleon_footprint:: @ 8DF8C88
- .incbin "graphics/pokemon/footprints/kecleon_footprint.1bpp"
+ .incbin "graphics/pokemon/kecleon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_baltoy_still_front_pic:: @ 8DF8CA8
- .incbin "graphics/pokemon/front_pics/baltoy_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/baltoy/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_baltoy_palette:: @ 8DF8ECC
- .incbin "graphics/pokemon/palettes/baltoy_palette.gbapal.lz"
+ .incbin "graphics/pokemon/baltoy/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_baltoy_back_pic:: @ 8DF8EEC
- .incbin "graphics/pokemon/back_pics/baltoy_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/baltoy/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_baltoy_shiny_palette:: @ 8DF9194
- .incbin "graphics/pokemon/palettes/baltoy_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/baltoy/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_baltoy_icon:: @ 8DF91B4
- .incbin "graphics/pokemon/icons/baltoy_icon.4bpp"
+ .incbin "graphics/pokemon/baltoy/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_baltoy_footprint:: @ 8DF95B4
- .incbin "graphics/pokemon/footprints/baltoy_footprint.1bpp"
+ .incbin "graphics/pokemon/baltoy/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_claydol_still_front_pic:: @ 8DF95D4
- .incbin "graphics/pokemon/front_pics/claydol_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/claydol/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_claydol_palette:: @ 8DF998C
- .incbin "graphics/pokemon/palettes/claydol_palette.gbapal.lz"
+ .incbin "graphics/pokemon/claydol/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_claydol_back_pic:: @ 8DF99B4
- .incbin "graphics/pokemon/back_pics/claydol_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/claydol/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_claydol_shiny_palette:: @ 8DF9D88
- .incbin "graphics/pokemon/palettes/claydol_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/claydol/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_claydol_icon:: @ 8DF9DB0
- .incbin "graphics/pokemon/icons/claydol_icon.4bpp"
+ .incbin "graphics/pokemon/claydol/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_claydol_footprint:: @ 8DFA1B0
- .incbin "graphics/pokemon/footprints/claydol_footprint.1bpp"
+ .incbin "graphics/pokemon/claydol/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_nosepass_still_front_pic:: @ 8DFA1D0
- .incbin "graphics/pokemon/front_pics/nosepass_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nosepass/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nosepass_palette:: @ 8DFA49C
- .incbin "graphics/pokemon/palettes/nosepass_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nosepass/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_nosepass_back_pic:: @ 8DFA4C4
- .incbin "graphics/pokemon/back_pics/nosepass_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/nosepass/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_nosepass_shiny_palette:: @ 8DFA764
- .incbin "graphics/pokemon/palettes/nosepass_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/nosepass/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_nosepass_icon:: @ 8DFA78C
- .incbin "graphics/pokemon/icons/nosepass_icon.4bpp"
+ .incbin "graphics/pokemon/nosepass/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_nosepass_footprint:: @ 8DFAB8C
- .incbin "graphics/pokemon/footprints/nosepass_footprint.1bpp"
+ .incbin "graphics/pokemon/nosepass/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_torkoal_still_front_pic:: @ 8DFABAC
- .incbin "graphics/pokemon/front_pics/torkoal_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/torkoal/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_torkoal_palette:: @ 8DFB058
- .incbin "graphics/pokemon/palettes/torkoal_palette.gbapal.lz"
+ .incbin "graphics/pokemon/torkoal/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_torkoal_back_pic:: @ 8DFB080
- .incbin "graphics/pokemon/back_pics/torkoal_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/torkoal/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_torkoal_shiny_palette:: @ 8DFB348
- .incbin "graphics/pokemon/palettes/torkoal_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/torkoal/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_torkoal_icon:: @ 8DFB370
- .incbin "graphics/pokemon/icons/torkoal_icon.4bpp"
+ .incbin "graphics/pokemon/torkoal/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_torkoal_footprint:: @ 8DFB770
- .incbin "graphics/pokemon/footprints/torkoal_footprint.1bpp"
+ .incbin "graphics/pokemon/torkoal/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_sableye_still_front_pic:: @ 8DFB790
- .incbin "graphics/pokemon/front_pics/sableye_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sableye/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sableye_palette:: @ 8DFBA64
- .incbin "graphics/pokemon/palettes/sableye_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sableye/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_sableye_back_pic:: @ 8DFBA8C
- .incbin "graphics/pokemon/back_pics/sableye_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sableye/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sableye_shiny_palette:: @ 8DFBDB4
- .incbin "graphics/pokemon/palettes/sableye_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sableye/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_sableye_icon:: @ 8DFBDDC
- .incbin "graphics/pokemon/icons/sableye_icon.4bpp"
+ .incbin "graphics/pokemon/sableye/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_sableye_footprint:: @ 8DFC1DC
- .incbin "graphics/pokemon/footprints/sableye_footprint.1bpp"
+ .incbin "graphics/pokemon/sableye/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_barboach_still_front_pic:: @ 8DFC1FC
- .incbin "graphics/pokemon/front_pics/barboach_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/barboach/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_barboach_palette:: @ 8DFC48C
- .incbin "graphics/pokemon/palettes/barboach_palette.gbapal.lz"
+ .incbin "graphics/pokemon/barboach/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_barboach_back_pic:: @ 8DFC4B4
- .incbin "graphics/pokemon/back_pics/barboach_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/barboach/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_barboach_shiny_palette:: @ 8DFC744
- .incbin "graphics/pokemon/palettes/barboach_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/barboach/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_barboach_icon:: @ 8DFC76C
- .incbin "graphics/pokemon/icons/barboach_icon.4bpp"
+ .incbin "graphics/pokemon/barboach/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_barboach_footprint:: @ 8DFCB6C
- .incbin "graphics/pokemon/footprints/barboach_footprint.1bpp"
+ .incbin "graphics/pokemon/barboach/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_whiscash_still_front_pic:: @ 8DFCB8C
- .incbin "graphics/pokemon/front_pics/whiscash_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/whiscash/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_whiscash_palette:: @ 8DFCF04
- .incbin "graphics/pokemon/palettes/whiscash_palette.gbapal.lz"
+ .incbin "graphics/pokemon/whiscash/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_whiscash_back_pic:: @ 8DFCF2C
- .incbin "graphics/pokemon/back_pics/whiscash_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/whiscash/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_whiscash_shiny_palette:: @ 8DFD278
- .incbin "graphics/pokemon/palettes/whiscash_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/whiscash/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_whiscash_icon:: @ 8DFD2A0
- .incbin "graphics/pokemon/icons/whiscash_icon.4bpp"
+ .incbin "graphics/pokemon/whiscash/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_whiscash_footprint:: @ 8DFD6A0
- .incbin "graphics/pokemon/footprints/whiscash_footprint.1bpp"
+ .incbin "graphics/pokemon/whiscash/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_luvdisc_still_front_pic:: @ 8DFD6C0
- .incbin "graphics/pokemon/front_pics/luvdisc_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/luvdisc/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_luvdisc_palette:: @ 8DFD880
- .incbin "graphics/pokemon/palettes/luvdisc_palette.gbapal.lz"
+ .incbin "graphics/pokemon/luvdisc/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_luvdisc_back_pic:: @ 8DFD8A4
- .incbin "graphics/pokemon/back_pics/luvdisc_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/luvdisc/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_luvdisc_shiny_palette:: @ 8DFDA78
- .incbin "graphics/pokemon/palettes/luvdisc_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/luvdisc/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_luvdisc_icon:: @ 8DFDA9C
- .incbin "graphics/pokemon/icons/luvdisc_icon.4bpp"
+ .incbin "graphics/pokemon/luvdisc/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_luvdisc_footprint:: @ 8DFDE9C
- .incbin "graphics/pokemon/footprints/luvdisc_footprint.1bpp"
+ .incbin "graphics/pokemon/luvdisc/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_corphish_still_front_pic:: @ 8DFDEBC
- .incbin "graphics/pokemon/front_pics/corphish_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/corphish/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_corphish_palette:: @ 8DFE218
- .incbin "graphics/pokemon/palettes/corphish_palette.gbapal.lz"
+ .incbin "graphics/pokemon/corphish/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_corphish_back_pic:: @ 8DFE240
- .incbin "graphics/pokemon/back_pics/corphish_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/corphish/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_corphish_shiny_palette:: @ 8DFE55C
- .incbin "graphics/pokemon/palettes/corphish_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/corphish/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_corphish_icon:: @ 8DFE584
- .incbin "graphics/pokemon/icons/corphish_icon.4bpp"
+ .incbin "graphics/pokemon/corphish/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_corphish_footprint:: @ 8DFE984
- .incbin "graphics/pokemon/footprints/corphish_footprint.1bpp"
+ .incbin "graphics/pokemon/corphish/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_crawdaunt_still_front_pic:: @ 8DFE9A4
- .incbin "graphics/pokemon/front_pics/crawdaunt_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/crawdaunt/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_crawdaunt_palette:: @ 8DFEE34
- .incbin "graphics/pokemon/palettes/crawdaunt_palette.gbapal.lz"
+ .incbin "graphics/pokemon/crawdaunt/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_crawdaunt_back_pic:: @ 8DFEE5C
- .incbin "graphics/pokemon/back_pics/crawdaunt_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/crawdaunt/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_crawdaunt_shiny_palette:: @ 8DFF240
- .incbin "graphics/pokemon/palettes/crawdaunt_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/crawdaunt/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_crawdaunt_icon:: @ 8DFF268
- .incbin "graphics/pokemon/icons/crawdaunt_icon.4bpp"
+ .incbin "graphics/pokemon/crawdaunt/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_crawdaunt_footprint:: @ 8DFF668
- .incbin "graphics/pokemon/footprints/crawdaunt_footprint.1bpp"
+ .incbin "graphics/pokemon/crawdaunt/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_feebas_still_front_pic:: @ 8DFF688
- .incbin "graphics/pokemon/front_pics/feebas_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/feebas/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_feebas_palette:: @ 8DFF914
- .incbin "graphics/pokemon/palettes/feebas_palette.gbapal.lz"
+ .incbin "graphics/pokemon/feebas/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_feebas_back_pic:: @ 8DFF93C
- .incbin "graphics/pokemon/back_pics/feebas_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/feebas/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_feebas_shiny_palette:: @ 8DFFC74
- .incbin "graphics/pokemon/palettes/feebas_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/feebas/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_feebas_icon:: @ 8DFFC9C
- .incbin "graphics/pokemon/icons/feebas_icon.4bpp"
+ .incbin "graphics/pokemon/feebas/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_feebas_footprint:: @ 8E0009C
- .incbin "graphics/pokemon/footprints/feebas_footprint.1bpp"
+ .incbin "graphics/pokemon/feebas/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_milotic_still_front_pic:: @ 8E000BC
- .incbin "graphics/pokemon/front_pics/milotic_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/milotic/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_milotic_palette:: @ 8E0054C
- .incbin "graphics/pokemon/palettes/milotic_palette.gbapal.lz"
+ .incbin "graphics/pokemon/milotic/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_milotic_back_pic:: @ 8E00574
- .incbin "graphics/pokemon/back_pics/milotic_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/milotic/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_milotic_shiny_palette:: @ 8E00868
- .incbin "graphics/pokemon/palettes/milotic_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/milotic/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_milotic_icon:: @ 8E00890
- .incbin "graphics/pokemon/icons/milotic_icon.4bpp"
+ .incbin "graphics/pokemon/milotic/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_milotic_footprint:: @ 8E00C90
- .incbin "graphics/pokemon/footprints/milotic_footprint.1bpp"
+ .incbin "graphics/pokemon/milotic/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_carvanha_still_front_pic:: @ 8E00CB0
- .incbin "graphics/pokemon/front_pics/carvanha_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/carvanha/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_carvanha_palette:: @ 8E00FDC
- .incbin "graphics/pokemon/palettes/carvanha_palette.gbapal.lz"
+ .incbin "graphics/pokemon/carvanha/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_carvanha_back_pic:: @ 8E01004
- .incbin "graphics/pokemon/back_pics/carvanha_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/carvanha/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_carvanha_shiny_palette:: @ 8E01314
- .incbin "graphics/pokemon/palettes/carvanha_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/carvanha/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_carvanha_icon:: @ 8E0133C
- .incbin "graphics/pokemon/icons/carvanha_icon.4bpp"
+ .incbin "graphics/pokemon/carvanha/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_carvanha_footprint:: @ 8E0173C
- .incbin "graphics/pokemon/footprints/carvanha_footprint.1bpp"
+ .incbin "graphics/pokemon/carvanha/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_sharpedo_still_front_pic:: @ 8E0175C
- .incbin "graphics/pokemon/front_pics/sharpedo_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sharpedo/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sharpedo_palette:: @ 8E01AEC
- .incbin "graphics/pokemon/palettes/sharpedo_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sharpedo/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_sharpedo_back_pic:: @ 8E01B14
- .incbin "graphics/pokemon/back_pics/sharpedo_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sharpedo/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sharpedo_shiny_palette:: @ 8E01E6C
- .incbin "graphics/pokemon/palettes/sharpedo_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sharpedo/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_sharpedo_icon:: @ 8E01E94
- .incbin "graphics/pokemon/icons/sharpedo_icon.4bpp"
+ .incbin "graphics/pokemon/sharpedo/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_sharpedo_footprint:: @ 8E02294
- .incbin "graphics/pokemon/footprints/sharpedo_footprint.1bpp"
+ .incbin "graphics/pokemon/sharpedo/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_trapinch_still_front_pic:: @ 8E022B4
- .incbin "graphics/pokemon/front_pics/trapinch_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/trapinch/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_trapinch_palette:: @ 8E024D0
- .incbin "graphics/pokemon/palettes/trapinch_palette.gbapal.lz"
+ .incbin "graphics/pokemon/trapinch/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_trapinch_back_pic:: @ 8E024F8
- .incbin "graphics/pokemon/back_pics/trapinch_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/trapinch/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_trapinch_shiny_palette:: @ 8E02718
- .incbin "graphics/pokemon/palettes/trapinch_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/trapinch/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_trapinch_icon:: @ 8E02740
- .incbin "graphics/pokemon/icons/trapinch_icon.4bpp"
+ .incbin "graphics/pokemon/trapinch/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_trapinch_footprint:: @ 8E02B40
- .incbin "graphics/pokemon/footprints/trapinch_footprint.1bpp"
+ .incbin "graphics/pokemon/trapinch/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_vibrava_still_front_pic:: @ 8E02B60
- .incbin "graphics/pokemon/front_pics/vibrava_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/vibrava/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_vibrava_palette:: @ 8E02ED0
- .incbin "graphics/pokemon/palettes/vibrava_palette.gbapal.lz"
+ .incbin "graphics/pokemon/vibrava/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_vibrava_back_pic:: @ 8E02EF8
- .incbin "graphics/pokemon/back_pics/vibrava_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/vibrava/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_vibrava_shiny_palette:: @ 8E03170
- .incbin "graphics/pokemon/palettes/vibrava_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/vibrava/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_vibrava_icon:: @ 8E03198
- .incbin "graphics/pokemon/icons/vibrava_icon.4bpp"
+ .incbin "graphics/pokemon/vibrava/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_vibrava_footprint:: @ 8E03598
- .incbin "graphics/pokemon/footprints/vibrava_footprint.1bpp"
+ .incbin "graphics/pokemon/vibrava/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_flygon_still_front_pic:: @ 8E035B8
- .incbin "graphics/pokemon/front_pics/flygon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/flygon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_flygon_palette:: @ 8E03AA8
- .incbin "graphics/pokemon/palettes/flygon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/flygon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_flygon_back_pic:: @ 8E03AD0
- .incbin "graphics/pokemon/back_pics/flygon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/flygon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_flygon_shiny_palette:: @ 8E03F0C
- .incbin "graphics/pokemon/palettes/flygon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/flygon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_flygon_icon:: @ 8E03F34
- .incbin "graphics/pokemon/icons/flygon_icon.4bpp"
+ .incbin "graphics/pokemon/flygon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_flygon_footprint:: @ 8E04334
- .incbin "graphics/pokemon/footprints/flygon_footprint.1bpp"
+ .incbin "graphics/pokemon/flygon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_makuhita_still_front_pic:: @ 8E04354
- .incbin "graphics/pokemon/front_pics/makuhita_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/makuhita/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_makuhita_palette:: @ 8E0466C
- .incbin "graphics/pokemon/palettes/makuhita_palette.gbapal.lz"
+ .incbin "graphics/pokemon/makuhita/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_makuhita_back_pic:: @ 8E04694
- .incbin "graphics/pokemon/back_pics/makuhita_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/makuhita/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_makuhita_shiny_palette:: @ 8E04984
- .incbin "graphics/pokemon/palettes/makuhita_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/makuhita/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_makuhita_icon:: @ 8E049A8
- .incbin "graphics/pokemon/icons/makuhita_icon.4bpp"
+ .incbin "graphics/pokemon/makuhita/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_makuhita_footprint:: @ 8E04DA8
- .incbin "graphics/pokemon/footprints/makuhita_footprint.1bpp"
+ .incbin "graphics/pokemon/makuhita/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_hariyama_still_front_pic:: @ 8E04DC8
- .incbin "graphics/pokemon/front_pics/hariyama_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hariyama/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hariyama_palette:: @ 8E05278
- .incbin "graphics/pokemon/palettes/hariyama_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hariyama/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_hariyama_back_pic:: @ 8E052A0
- .incbin "graphics/pokemon/back_pics/hariyama_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/hariyama/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_hariyama_shiny_palette:: @ 8E05680
- .incbin "graphics/pokemon/palettes/hariyama_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/hariyama/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_hariyama_icon:: @ 8E056A8
- .incbin "graphics/pokemon/icons/hariyama_icon.4bpp"
+ .incbin "graphics/pokemon/hariyama/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_hariyama_footprint:: @ 8E05AA8
- .incbin "graphics/pokemon/footprints/hariyama_footprint.1bpp"
+ .incbin "graphics/pokemon/hariyama/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_electrike_still_front_pic:: @ 8E05AC8
- .incbin "graphics/pokemon/front_pics/electrike_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/electrike/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_electrike_palette:: @ 8E05D58
- .incbin "graphics/pokemon/palettes/electrike_palette.gbapal.lz"
+ .incbin "graphics/pokemon/electrike/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_electrike_back_pic:: @ 8E05D80
- .incbin "graphics/pokemon/back_pics/electrike_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/electrike/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_electrike_shiny_palette:: @ 8E0600C
- .incbin "graphics/pokemon/palettes/electrike_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/electrike/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_electrike_icon:: @ 8E06034
- .incbin "graphics/pokemon/icons/electrike_icon.4bpp"
+ .incbin "graphics/pokemon/electrike/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_electrike_footprint:: @ 8E06434
- .incbin "graphics/pokemon/footprints/electrike_footprint.1bpp"
+ .incbin "graphics/pokemon/electrike/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_manectric_still_front_pic:: @ 8E06454
- .incbin "graphics/pokemon/front_pics/manectric_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/manectric/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_manectric_palette:: @ 8E06784
- .incbin "graphics/pokemon/palettes/manectric_palette.gbapal.lz"
+ .incbin "graphics/pokemon/manectric/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_manectric_back_pic:: @ 8E067AC
- .incbin "graphics/pokemon/back_pics/manectric_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/manectric/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_manectric_shiny_palette:: @ 8E069D8
- .incbin "graphics/pokemon/palettes/manectric_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/manectric/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_manectric_icon:: @ 8E06A00
- .incbin "graphics/pokemon/icons/manectric_icon.4bpp"
+ .incbin "graphics/pokemon/manectric/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_manectric_footprint:: @ 8E06E00
- .incbin "graphics/pokemon/footprints/manectric_footprint.1bpp"
+ .incbin "graphics/pokemon/manectric/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_numel_still_front_pic:: @ 8E06E20
- .incbin "graphics/pokemon/front_pics/numel_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/numel/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_numel_palette:: @ 8E070F0
- .incbin "graphics/pokemon/palettes/numel_palette.gbapal.lz"
+ .incbin "graphics/pokemon/numel/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_numel_back_pic:: @ 8E07118
- .incbin "graphics/pokemon/back_pics/numel_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/numel/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_numel_shiny_palette:: @ 8E073D4
- .incbin "graphics/pokemon/palettes/numel_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/numel/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_numel_icon:: @ 8E073FC
- .incbin "graphics/pokemon/icons/numel_icon.4bpp"
+ .incbin "graphics/pokemon/numel/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_numel_footprint:: @ 8E077FC
- .incbin "graphics/pokemon/footprints/numel_footprint.1bpp"
+ .incbin "graphics/pokemon/numel/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_camerupt_still_front_pic:: @ 8E0781C
- .incbin "graphics/pokemon/front_pics/camerupt_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/camerupt/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_camerupt_palette:: @ 8E07C34
- .incbin "graphics/pokemon/palettes/camerupt_palette.gbapal.lz"
+ .incbin "graphics/pokemon/camerupt/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_camerupt_back_pic:: @ 8E07C5C
- .incbin "graphics/pokemon/back_pics/camerupt_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/camerupt/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_camerupt_shiny_palette:: @ 8E07F20
- .incbin "graphics/pokemon/palettes/camerupt_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/camerupt/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_camerupt_icon:: @ 8E07F48
- .incbin "graphics/pokemon/icons/camerupt_icon.4bpp"
+ .incbin "graphics/pokemon/camerupt/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_camerupt_footprint:: @ 8E08348
- .incbin "graphics/pokemon/footprints/camerupt_footprint.1bpp"
+ .incbin "graphics/pokemon/camerupt/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_spheal_still_front_pic:: @ 8E08368
- .incbin "graphics/pokemon/front_pics/spheal_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/spheal/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_spheal_palette:: @ 8E085DC
- .incbin "graphics/pokemon/palettes/spheal_palette.gbapal.lz"
+ .incbin "graphics/pokemon/spheal/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_spheal_back_pic:: @ 8E08604
- .incbin "graphics/pokemon/back_pics/spheal_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/spheal/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_spheal_shiny_palette:: @ 8E08800
- .incbin "graphics/pokemon/palettes/spheal_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/spheal/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_spheal_icon:: @ 8E08828
- .incbin "graphics/pokemon/icons/spheal_icon.4bpp"
+ .incbin "graphics/pokemon/spheal/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_spheal_footprint:: @ 8E08C28
- .incbin "graphics/pokemon/footprints/spheal_footprint.1bpp"
+ .incbin "graphics/pokemon/spheal/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_sealeo_still_front_pic:: @ 8E08C48
- .incbin "graphics/pokemon/front_pics/sealeo_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sealeo/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sealeo_palette:: @ 8E08FC8
- .incbin "graphics/pokemon/palettes/sealeo_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sealeo/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_sealeo_back_pic:: @ 8E08FF0
- .incbin "graphics/pokemon/back_pics/sealeo_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/sealeo/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_sealeo_shiny_palette:: @ 8E0926C
- .incbin "graphics/pokemon/palettes/sealeo_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/sealeo/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_sealeo_icon:: @ 8E09294
- .incbin "graphics/pokemon/icons/sealeo_icon.4bpp"
+ .incbin "graphics/pokemon/sealeo/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_sealeo_footprint:: @ 8E09694
- .incbin "graphics/pokemon/footprints/sealeo_footprint.1bpp"
+ .incbin "graphics/pokemon/sealeo/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_walrein_still_front_pic:: @ 8E096B4
- .incbin "graphics/pokemon/front_pics/walrein_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/walrein/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_walrein_palette:: @ 8E09B54
- .incbin "graphics/pokemon/palettes/walrein_palette.gbapal.lz"
+ .incbin "graphics/pokemon/walrein/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_walrein_back_pic:: @ 8E09B7C
- .incbin "graphics/pokemon/back_pics/walrein_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/walrein/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_walrein_shiny_palette:: @ 8E09F04
- .incbin "graphics/pokemon/palettes/walrein_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/walrein/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_walrein_icon:: @ 8E09F2C
- .incbin "graphics/pokemon/icons/walrein_icon.4bpp"
+ .incbin "graphics/pokemon/walrein/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_walrein_footprint:: @ 8E0A32C
- .incbin "graphics/pokemon/footprints/walrein_footprint.1bpp"
+ .incbin "graphics/pokemon/walrein/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_cacnea_still_front_pic:: @ 8E0A34C
- .incbin "graphics/pokemon/front_pics/cacnea_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cacnea/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cacnea_palette:: @ 8E0A65C
- .incbin "graphics/pokemon/palettes/cacnea_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cacnea/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_cacnea_back_pic:: @ 8E0A684
- .incbin "graphics/pokemon/back_pics/cacnea_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cacnea/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cacnea_shiny_palette:: @ 8E0A9E4
- .incbin "graphics/pokemon/palettes/cacnea_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cacnea/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_cacnea_icon:: @ 8E0AA0C
- .incbin "graphics/pokemon/icons/cacnea_icon.4bpp"
+ .incbin "graphics/pokemon/cacnea/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_cacnea_footprint:: @ 8E0AE0C
- .incbin "graphics/pokemon/footprints/cacnea_footprint.1bpp"
+ .incbin "graphics/pokemon/cacnea/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_cacturne_still_front_pic:: @ 8E0AE2C
- .incbin "graphics/pokemon/front_pics/cacturne_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cacturne/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cacturne_palette:: @ 8E0B264
- .incbin "graphics/pokemon/palettes/cacturne_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cacturne/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_cacturne_back_pic:: @ 8E0B28C
- .incbin "graphics/pokemon/back_pics/cacturne_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cacturne/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cacturne_shiny_palette:: @ 8E0B58C
- .incbin "graphics/pokemon/palettes/cacturne_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cacturne/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_cacturne_icon:: @ 8E0B5B4
- .incbin "graphics/pokemon/icons/cacturne_icon.4bpp"
+ .incbin "graphics/pokemon/cacturne/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_cacturne_footprint:: @ 8E0B9B4
- .incbin "graphics/pokemon/footprints/cacturne_footprint.1bpp"
+ .incbin "graphics/pokemon/cacturne/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_snorunt_still_front_pic:: @ 8E0B9D4
- .incbin "graphics/pokemon/front_pics/snorunt_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/snorunt/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_snorunt_palette:: @ 8E0BC98
- .incbin "graphics/pokemon/palettes/snorunt_palette.gbapal.lz"
+ .incbin "graphics/pokemon/snorunt/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_snorunt_back_pic:: @ 8E0BCC0
- .incbin "graphics/pokemon/back_pics/snorunt_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/snorunt/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_snorunt_shiny_palette:: @ 8E0BFA4
- .incbin "graphics/pokemon/palettes/snorunt_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/snorunt/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_snorunt_icon:: @ 8E0BFCC
- .incbin "graphics/pokemon/icons/snorunt_icon.4bpp"
+ .incbin "graphics/pokemon/snorunt/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_snorunt_footprint:: @ 8E0C3CC
- .incbin "graphics/pokemon/footprints/snorunt_footprint.1bpp"
+ .incbin "graphics/pokemon/snorunt/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_glalie_still_front_pic:: @ 8E0C3EC
- .incbin "graphics/pokemon/front_pics/glalie_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/glalie/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_glalie_palette:: @ 8E0C7B4
- .incbin "graphics/pokemon/palettes/glalie_palette.gbapal.lz"
+ .incbin "graphics/pokemon/glalie/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_glalie_back_pic:: @ 8E0C7DC
- .incbin "graphics/pokemon/back_pics/glalie_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/glalie/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_glalie_shiny_palette:: @ 8E0CB8C
- .incbin "graphics/pokemon/palettes/glalie_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/glalie/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_glalie_icon:: @ 8E0CBB4
- .incbin "graphics/pokemon/icons/glalie_icon.4bpp"
+ .incbin "graphics/pokemon/glalie/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_glalie_footprint:: @ 8E0CFB4
- .incbin "graphics/pokemon/footprints/glalie_footprint.1bpp"
+ .incbin "graphics/pokemon/glalie/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_lunatone_still_front_pic:: @ 8E0CFD4
- .incbin "graphics/pokemon/front_pics/lunatone_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lunatone/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lunatone_palette:: @ 8E0D2FC
- .incbin "graphics/pokemon/palettes/lunatone_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lunatone/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_lunatone_back_pic:: @ 8E0D324
- .incbin "graphics/pokemon/back_pics/lunatone_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lunatone/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lunatone_shiny_palette:: @ 8E0D67C
- .incbin "graphics/pokemon/palettes/lunatone_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lunatone/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_lunatone_icon:: @ 8E0D6A4
- .incbin "graphics/pokemon/icons/lunatone_icon.4bpp"
+ .incbin "graphics/pokemon/lunatone/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_lunatone_footprint:: @ 8E0DAA4
- .incbin "graphics/pokemon/footprints/lunatone_footprint.1bpp"
+ .incbin "graphics/pokemon/lunatone/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_solrock_still_front_pic:: @ 8E0DAC4
- .incbin "graphics/pokemon/front_pics/solrock_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/solrock/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_solrock_palette:: @ 8E0DF10
- .incbin "graphics/pokemon/palettes/solrock_palette.gbapal.lz"
+ .incbin "graphics/pokemon/solrock/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_solrock_back_pic:: @ 8E0DF38
- .incbin "graphics/pokemon/back_pics/solrock_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/solrock/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_solrock_shiny_palette:: @ 8E0E324
- .incbin "graphics/pokemon/palettes/solrock_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/solrock/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_solrock_icon:: @ 8E0E34C
- .incbin "graphics/pokemon/icons/solrock_icon.4bpp"
+ .incbin "graphics/pokemon/solrock/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_solrock_footprint:: @ 8E0E74C
- .incbin "graphics/pokemon/footprints/solrock_footprint.1bpp"
+ .incbin "graphics/pokemon/solrock/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_azurill_still_front_pic:: @ 8E0E76C
- .incbin "graphics/pokemon/front_pics/azurill_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/azurill/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_azurill_palette:: @ 8E0EA34
- .incbin "graphics/pokemon/palettes/azurill_palette.gbapal.lz"
+ .incbin "graphics/pokemon/azurill/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_azurill_back_pic:: @ 8E0EA5C
- .incbin "graphics/pokemon/back_pics/azurill_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/azurill/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_azurill_shiny_palette:: @ 8E0ED74
- .incbin "graphics/pokemon/palettes/azurill_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/azurill/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_azurill_icon:: @ 8E0ED9C
- .incbin "graphics/pokemon/icons/azurill_icon.4bpp"
+ .incbin "graphics/pokemon/azurill/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_azurill_footprint:: @ 8E0F19C
- .incbin "graphics/pokemon/footprints/azurill_footprint.1bpp"
+ .incbin "graphics/pokemon/azurill/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_spoink_still_front_pic:: @ 8E0F1BC
- .incbin "graphics/pokemon/front_pics/spoink_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/spoink/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_spoink_palette:: @ 8E0F428
- .incbin "graphics/pokemon/palettes/spoink_palette.gbapal.lz"
+ .incbin "graphics/pokemon/spoink/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_spoink_back_pic:: @ 8E0F450
- .incbin "graphics/pokemon/back_pics/spoink_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/spoink/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_spoink_shiny_palette:: @ 8E0F690
- .incbin "graphics/pokemon/palettes/spoink_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/spoink/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_spoink_icon:: @ 8E0F6B8
- .incbin "graphics/pokemon/icons/spoink_icon.4bpp"
+ .incbin "graphics/pokemon/spoink/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_spoink_footprint:: @ 8E0FAB8
- .incbin "graphics/pokemon/footprints/spoink_footprint.1bpp"
+ .incbin "graphics/pokemon/spoink/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_grumpig_still_front_pic:: @ 8E0FAD8
- .incbin "graphics/pokemon/front_pics/grumpig_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/grumpig/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_grumpig_palette:: @ 8E0FE94
- .incbin "graphics/pokemon/palettes/grumpig_palette.gbapal.lz"
+ .incbin "graphics/pokemon/grumpig/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_grumpig_back_pic:: @ 8E0FEBC
- .incbin "graphics/pokemon/back_pics/grumpig_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/grumpig/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_grumpig_shiny_palette:: @ 8E1021C
- .incbin "graphics/pokemon/palettes/grumpig_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/grumpig/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_grumpig_icon:: @ 8E10244
- .incbin "graphics/pokemon/icons/grumpig_icon.4bpp"
+ .incbin "graphics/pokemon/grumpig/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_grumpig_footprint:: @ 8E10644
- .incbin "graphics/pokemon/footprints/grumpig_footprint.1bpp"
+ .incbin "graphics/pokemon/grumpig/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_plusle_still_front_pic:: @ 8E10664
- .incbin "graphics/pokemon/front_pics/plusle_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/plusle/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_plusle_palette:: @ 8E108F0
- .incbin "graphics/pokemon/palettes/plusle_palette.gbapal.lz"
+ .incbin "graphics/pokemon/plusle/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_plusle_back_pic:: @ 8E10918
- .incbin "graphics/pokemon/back_pics/plusle_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/plusle/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_plusle_shiny_palette:: @ 8E10BD0
- .incbin "graphics/pokemon/palettes/plusle_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/plusle/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_plusle_icon:: @ 8E10BF8
- .incbin "graphics/pokemon/icons/plusle_icon.4bpp"
+ .incbin "graphics/pokemon/plusle/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_plusle_footprint:: @ 8E10FF8
- .incbin "graphics/pokemon/footprints/plusle_footprint.1bpp"
+ .incbin "graphics/pokemon/plusle/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_minun_still_front_pic:: @ 8E11018
- .incbin "graphics/pokemon/front_pics/minun_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/minun/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_minun_palette:: @ 8E11280
- .incbin "graphics/pokemon/palettes/minun_palette.gbapal.lz"
+ .incbin "graphics/pokemon/minun/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_minun_back_pic:: @ 8E112A8
- .incbin "graphics/pokemon/back_pics/minun_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/minun/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_minun_shiny_palette:: @ 8E11570
- .incbin "graphics/pokemon/palettes/minun_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/minun/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_minun_icon:: @ 8E11598
- .incbin "graphics/pokemon/icons/minun_icon.4bpp"
+ .incbin "graphics/pokemon/minun/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_minun_footprint:: @ 8E11998
- .incbin "graphics/pokemon/footprints/minun_footprint.1bpp"
+ .incbin "graphics/pokemon/minun/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_mawile_still_front_pic:: @ 8E119B8
- .incbin "graphics/pokemon/front_pics/mawile_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mawile/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mawile_palette:: @ 8E11D74
- .incbin "graphics/pokemon/palettes/mawile_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mawile/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_mawile_back_pic:: @ 8E11D9C
- .incbin "graphics/pokemon/back_pics/mawile_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/mawile/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_mawile_shiny_palette:: @ 8E1219C
- .incbin "graphics/pokemon/palettes/mawile_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/mawile/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_mawile_icon:: @ 8E121C4
- .incbin "graphics/pokemon/icons/mawile_icon.4bpp"
+ .incbin "graphics/pokemon/mawile/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_mawile_footprint:: @ 8E125C4
- .incbin "graphics/pokemon/footprints/mawile_footprint.1bpp"
+ .incbin "graphics/pokemon/mawile/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_meditite_still_front_pic:: @ 8E125E4
- .incbin "graphics/pokemon/front_pics/meditite_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/meditite/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_meditite_palette:: @ 8E1289C
- .incbin "graphics/pokemon/palettes/meditite_palette.gbapal.lz"
+ .incbin "graphics/pokemon/meditite/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_meditite_back_pic:: @ 8E128C4
- .incbin "graphics/pokemon/back_pics/meditite_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/meditite/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_meditite_shiny_palette:: @ 8E12B8C
- .incbin "graphics/pokemon/palettes/meditite_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/meditite/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_meditite_icon:: @ 8E12BB0
- .incbin "graphics/pokemon/icons/meditite_icon.4bpp"
+ .incbin "graphics/pokemon/meditite/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_meditite_footprint:: @ 8E12FB0
- .incbin "graphics/pokemon/footprints/meditite_footprint.1bpp"
+ .incbin "graphics/pokemon/meditite/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_medicham_still_front_pic:: @ 8E12FD0
- .incbin "graphics/pokemon/front_pics/medicham_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/medicham/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_medicham_palette:: @ 8E13300
- .incbin "graphics/pokemon/palettes/medicham_palette.gbapal.lz"
+ .incbin "graphics/pokemon/medicham/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_medicham_back_pic:: @ 8E13328
- .incbin "graphics/pokemon/back_pics/medicham_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/medicham/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_medicham_shiny_palette:: @ 8E13660
- .incbin "graphics/pokemon/palettes/medicham_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/medicham/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_medicham_icon:: @ 8E13688
- .incbin "graphics/pokemon/icons/medicham_icon.4bpp"
+ .incbin "graphics/pokemon/medicham/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_medicham_footprint:: @ 8E13A88
- .incbin "graphics/pokemon/footprints/medicham_footprint.1bpp"
+ .incbin "graphics/pokemon/medicham/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_swablu_still_front_pic:: @ 8E13AA8
- .incbin "graphics/pokemon/front_pics/swablu_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/swablu/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_swablu_palette:: @ 8E13D80
- .incbin "graphics/pokemon/palettes/swablu_palette.gbapal.lz"
+ .incbin "graphics/pokemon/swablu/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_swablu_back_pic:: @ 8E13DA8
- .incbin "graphics/pokemon/back_pics/swablu_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/swablu/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_swablu_shiny_palette:: @ 8E14160
- .incbin "graphics/pokemon/palettes/swablu_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/swablu/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_swablu_icon:: @ 8E14188
- .incbin "graphics/pokemon/icons/swablu_icon.4bpp"
+ .incbin "graphics/pokemon/swablu/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_swablu_footprint:: @ 8E14588
- .incbin "graphics/pokemon/footprints/swablu_footprint.1bpp"
+ .incbin "graphics/pokemon/swablu/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_altaria_still_front_pic:: @ 8E145A8
- .incbin "graphics/pokemon/front_pics/altaria_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/altaria/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_altaria_palette:: @ 8E14984
- .incbin "graphics/pokemon/palettes/altaria_palette.gbapal.lz"
+ .incbin "graphics/pokemon/altaria/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_altaria_back_pic:: @ 8E149AC
- .incbin "graphics/pokemon/back_pics/altaria_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/altaria/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_altaria_shiny_palette:: @ 8E14D24
- .incbin "graphics/pokemon/palettes/altaria_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/altaria/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_altaria_icon:: @ 8E14D4C
- .incbin "graphics/pokemon/icons/altaria_icon.4bpp"
+ .incbin "graphics/pokemon/altaria/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_altaria_footprint:: @ 8E1514C
- .incbin "graphics/pokemon/footprints/altaria_footprint.1bpp"
+ .incbin "graphics/pokemon/altaria/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_wynaut_still_front_pic:: @ 8E1516C
- .incbin "graphics/pokemon/front_pics/wynaut_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wynaut/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wynaut_palette:: @ 8E15404
- .incbin "graphics/pokemon/palettes/wynaut_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wynaut/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_wynaut_back_pic:: @ 8E1542C
- .incbin "graphics/pokemon/back_pics/wynaut_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/wynaut/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_wynaut_shiny_palette:: @ 8E156BC
- .incbin "graphics/pokemon/palettes/wynaut_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/wynaut/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_wynaut_icon:: @ 8E156E4
- .incbin "graphics/pokemon/icons/wynaut_icon.4bpp"
+ .incbin "graphics/pokemon/wynaut/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_wynaut_footprint:: @ 8E15AE4
- .incbin "graphics/pokemon/footprints/wynaut_footprint.1bpp"
+ .incbin "graphics/pokemon/wynaut/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_duskull_still_front_pic:: @ 8E15B04
- .incbin "graphics/pokemon/front_pics/duskull_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/duskull/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_duskull_palette:: @ 8E15DF4
- .incbin "graphics/pokemon/palettes/duskull_palette.gbapal.lz"
+ .incbin "graphics/pokemon/duskull/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_duskull_back_pic:: @ 8E15E1C
- .incbin "graphics/pokemon/back_pics/duskull_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/duskull/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_duskull_shiny_palette:: @ 8E160CC
- .incbin "graphics/pokemon/palettes/duskull_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/duskull/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_duskull_icon:: @ 8E160F4
- .incbin "graphics/pokemon/icons/duskull_icon.4bpp"
+ .incbin "graphics/pokemon/duskull/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_duskull_footprint:: @ 8E164F4
- .incbin "graphics/pokemon/footprints/duskull_footprint.1bpp"
+ .incbin "graphics/pokemon/duskull/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_dusclops_still_front_pic:: @ 8E16514
- .incbin "graphics/pokemon/front_pics/dusclops_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dusclops/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dusclops_palette:: @ 8E168B4
- .incbin "graphics/pokemon/palettes/dusclops_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dusclops/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_dusclops_back_pic:: @ 8E168DC
- .incbin "graphics/pokemon/back_pics/dusclops_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/dusclops/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_dusclops_shiny_palette:: @ 8E16BC8
- .incbin "graphics/pokemon/palettes/dusclops_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/dusclops/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_dusclops_icon:: @ 8E16BF0
- .incbin "graphics/pokemon/icons/dusclops_icon.4bpp"
+ .incbin "graphics/pokemon/dusclops/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_dusclops_footprint:: @ 8E16FF0
- .incbin "graphics/pokemon/footprints/dusclops_footprint.1bpp"
+ .incbin "graphics/pokemon/dusclops/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_roselia_still_front_pic:: @ 8E17010
- .incbin "graphics/pokemon/front_pics/roselia_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/roselia/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_roselia_palette:: @ 8E1737C
- .incbin "graphics/pokemon/palettes/roselia_palette.gbapal.lz"
+ .incbin "graphics/pokemon/roselia/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_roselia_back_pic:: @ 8E173A4
- .incbin "graphics/pokemon/back_pics/roselia_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/roselia/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_roselia_shiny_palette:: @ 8E1776C
- .incbin "graphics/pokemon/palettes/roselia_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/roselia/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_roselia_icon:: @ 8E17794
- .incbin "graphics/pokemon/icons/roselia_icon.4bpp"
+ .incbin "graphics/pokemon/roselia/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_roselia_footprint:: @ 8E17B94
- .incbin "graphics/pokemon/footprints/roselia_footprint.1bpp"
+ .incbin "graphics/pokemon/roselia/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_slakoth_still_front_pic:: @ 8E17BB4
- .incbin "graphics/pokemon/front_pics/slakoth_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/slakoth/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_slakoth_palette:: @ 8E17E9C
- .incbin "graphics/pokemon/palettes/slakoth_palette.gbapal.lz"
+ .incbin "graphics/pokemon/slakoth/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_slakoth_back_pic:: @ 8E17EC4
- .incbin "graphics/pokemon/back_pics/slakoth_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/slakoth/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_slakoth_shiny_palette:: @ 8E181AC
- .incbin "graphics/pokemon/palettes/slakoth_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/slakoth/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_slakoth_icon:: @ 8E181D4
- .incbin "graphics/pokemon/icons/slakoth_icon.4bpp"
+ .incbin "graphics/pokemon/slakoth/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_slakoth_footprint:: @ 8E185D4
- .incbin "graphics/pokemon/footprints/slakoth_footprint.1bpp"
+ .incbin "graphics/pokemon/slakoth/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_vigoroth_still_front_pic:: @ 8E185F4
- .incbin "graphics/pokemon/front_pics/vigoroth_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/vigoroth/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_vigoroth_palette:: @ 8E189F0
- .incbin "graphics/pokemon/palettes/vigoroth_palette.gbapal.lz"
+ .incbin "graphics/pokemon/vigoroth/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_vigoroth_back_pic:: @ 8E18A18
- .incbin "graphics/pokemon/back_pics/vigoroth_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/vigoroth/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_vigoroth_shiny_palette:: @ 8E18CE0
- .incbin "graphics/pokemon/palettes/vigoroth_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/vigoroth/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_vigoroth_icon:: @ 8E18D08
- .incbin "graphics/pokemon/icons/vigoroth_icon.4bpp"
+ .incbin "graphics/pokemon/vigoroth/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_vigoroth_footprint:: @ 8E19108
- .incbin "graphics/pokemon/footprints/vigoroth_footprint.1bpp"
+ .incbin "graphics/pokemon/vigoroth/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_slaking_still_front_pic:: @ 8E19128
- .incbin "graphics/pokemon/front_pics/slaking_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/slaking/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_slaking_palette:: @ 8E195FC
- .incbin "graphics/pokemon/palettes/slaking_palette.gbapal.lz"
+ .incbin "graphics/pokemon/slaking/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_slaking_back_pic:: @ 8E19624
- .incbin "graphics/pokemon/back_pics/slaking_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/slaking/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_slaking_shiny_palette:: @ 8E199E8
- .incbin "graphics/pokemon/palettes/slaking_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/slaking/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_slaking_icon:: @ 8E19A10
- .incbin "graphics/pokemon/icons/slaking_icon.4bpp"
+ .incbin "graphics/pokemon/slaking/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_slaking_footprint:: @ 8E19E10
- .incbin "graphics/pokemon/footprints/slaking_footprint.1bpp"
+ .incbin "graphics/pokemon/slaking/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_gulpin_still_front_pic:: @ 8E19E30
- .incbin "graphics/pokemon/front_pics/gulpin_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gulpin/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gulpin_palette:: @ 8E1A048
- .incbin "graphics/pokemon/palettes/gulpin_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gulpin/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_gulpin_back_pic:: @ 8E1A070
- .incbin "graphics/pokemon/back_pics/gulpin_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gulpin/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gulpin_shiny_palette:: @ 8E1A2F4
- .incbin "graphics/pokemon/palettes/gulpin_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gulpin/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_gulpin_icon:: @ 8E1A31C
- .incbin "graphics/pokemon/icons/gulpin_icon.4bpp"
+ .incbin "graphics/pokemon/gulpin/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_gulpin_footprint:: @ 8E1A71C
- .incbin "graphics/pokemon/footprints/gulpin_footprint.1bpp"
+ .incbin "graphics/pokemon/gulpin/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_swalot_still_front_pic:: @ 8E1A73C
- .incbin "graphics/pokemon/front_pics/swalot_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/swalot/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_swalot_palette:: @ 8E1AA80
- .incbin "graphics/pokemon/palettes/swalot_palette.gbapal.lz"
+ .incbin "graphics/pokemon/swalot/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_swalot_back_pic:: @ 8E1AAA8
- .incbin "graphics/pokemon/back_pics/swalot_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/swalot/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_swalot_shiny_palette:: @ 8E1ADF0
- .incbin "graphics/pokemon/palettes/swalot_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/swalot/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_swalot_icon:: @ 8E1AE18
- .incbin "graphics/pokemon/icons/swalot_icon.4bpp"
+ .incbin "graphics/pokemon/swalot/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_swalot_footprint:: @ 8E1B218
- .incbin "graphics/pokemon/footprints/swalot_footprint.1bpp"
+ .incbin "graphics/pokemon/swalot/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_tropius_still_front_pic:: @ 8E1B238
- .incbin "graphics/pokemon/front_pics/tropius_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tropius/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tropius_palette:: @ 8E1B7B0
- .incbin "graphics/pokemon/palettes/tropius_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tropius/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_tropius_back_pic:: @ 8E1B7D8
- .incbin "graphics/pokemon/back_pics/tropius_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/tropius/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_tropius_shiny_palette:: @ 8E1BAFC
- .incbin "graphics/pokemon/palettes/tropius_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/tropius/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_tropius_icon:: @ 8E1BB24
- .incbin "graphics/pokemon/icons/tropius_icon.4bpp"
+ .incbin "graphics/pokemon/tropius/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_tropius_footprint:: @ 8E1BF24
- .incbin "graphics/pokemon/footprints/tropius_footprint.1bpp"
+ .incbin "graphics/pokemon/tropius/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_whismur_still_front_pic:: @ 8E1BF44
- .incbin "graphics/pokemon/front_pics/whismur_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/whismur/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_whismur_palette:: @ 8E1C1D8
- .incbin "graphics/pokemon/palettes/whismur_palette.gbapal.lz"
+ .incbin "graphics/pokemon/whismur/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_whismur_back_pic:: @ 8E1C200
- .incbin "graphics/pokemon/back_pics/whismur_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/whismur/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_whismur_shiny_palette:: @ 8E1C470
- .incbin "graphics/pokemon/palettes/whismur_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/whismur/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_whismur_icon:: @ 8E1C498
- .incbin "graphics/pokemon/icons/whismur_icon.4bpp"
+ .incbin "graphics/pokemon/whismur/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_whismur_footprint:: @ 8E1C898
- .incbin "graphics/pokemon/footprints/whismur_footprint.1bpp"
+ .incbin "graphics/pokemon/whismur/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_loudred_still_front_pic:: @ 8E1C8B8
- .incbin "graphics/pokemon/front_pics/loudred_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/loudred/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_loudred_palette:: @ 8E1CD30
- .incbin "graphics/pokemon/palettes/loudred_palette.gbapal.lz"
+ .incbin "graphics/pokemon/loudred/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_loudred_back_pic:: @ 8E1CD58
- .incbin "graphics/pokemon/back_pics/loudred_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/loudred/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_loudred_shiny_palette:: @ 8E1D0C8
- .incbin "graphics/pokemon/palettes/loudred_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/loudred/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_loudred_icon:: @ 8E1D0F0
- .incbin "graphics/pokemon/icons/loudred_icon.4bpp"
+ .incbin "graphics/pokemon/loudred/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_loudred_footprint:: @ 8E1D4F0
- .incbin "graphics/pokemon/footprints/loudred_footprint.1bpp"
+ .incbin "graphics/pokemon/loudred/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_exploud_still_front_pic:: @ 8E1D510
- .incbin "graphics/pokemon/front_pics/exploud_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/exploud/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_exploud_palette:: @ 8E1DA78
- .incbin "graphics/pokemon/palettes/exploud_palette.gbapal.lz"
+ .incbin "graphics/pokemon/exploud/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_exploud_back_pic:: @ 8E1DAA0
- .incbin "graphics/pokemon/back_pics/exploud_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/exploud/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_exploud_shiny_palette:: @ 8E1DEAC
- .incbin "graphics/pokemon/palettes/exploud_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/exploud/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_exploud_icon:: @ 8E1DED4
- .incbin "graphics/pokemon/icons/exploud_icon.4bpp"
+ .incbin "graphics/pokemon/exploud/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_exploud_footprint:: @ 8E1E2D4
- .incbin "graphics/pokemon/footprints/exploud_footprint.1bpp"
+ .incbin "graphics/pokemon/exploud/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_clamperl_still_front_pic:: @ 8E1E2F4
- .incbin "graphics/pokemon/front_pics/clamperl_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/clamperl/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_clamperl_palette:: @ 8E1E5CC
- .incbin "graphics/pokemon/palettes/clamperl_palette.gbapal.lz"
+ .incbin "graphics/pokemon/clamperl/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_clamperl_back_pic:: @ 8E1E5F4
- .incbin "graphics/pokemon/back_pics/clamperl_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/clamperl/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_clamperl_shiny_palette:: @ 8E1E888
- .incbin "graphics/pokemon/palettes/clamperl_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/clamperl/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_clamperl_icon:: @ 8E1E8B0
- .incbin "graphics/pokemon/icons/clamperl_icon.4bpp"
+ .incbin "graphics/pokemon/clamperl/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_clamperl_footprint:: @ 8E1ECB0
- .incbin "graphics/pokemon/footprints/clamperl_footprint.1bpp"
+ .incbin "graphics/pokemon/clamperl/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_huntail_still_front_pic:: @ 8E1ECD0
- .incbin "graphics/pokemon/front_pics/huntail_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/huntail/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_huntail_palette:: @ 8E1F09C
- .incbin "graphics/pokemon/palettes/huntail_palette.gbapal.lz"
+ .incbin "graphics/pokemon/huntail/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_huntail_back_pic:: @ 8E1F0C4
- .incbin "graphics/pokemon/back_pics/huntail_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/huntail/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_huntail_shiny_palette:: @ 8E1F418
- .incbin "graphics/pokemon/palettes/huntail_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/huntail/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_huntail_icon:: @ 8E1F440
- .incbin "graphics/pokemon/icons/huntail_icon.4bpp"
+ .incbin "graphics/pokemon/huntail/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_huntail_footprint:: @ 8E1F840
- .incbin "graphics/pokemon/footprints/huntail_footprint.1bpp"
+ .incbin "graphics/pokemon/huntail/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_gorebyss_still_front_pic:: @ 8E1F860
- .incbin "graphics/pokemon/front_pics/gorebyss_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gorebyss/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gorebyss_palette:: @ 8E1FB70
- .incbin "graphics/pokemon/palettes/gorebyss_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gorebyss/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_gorebyss_back_pic:: @ 8E1FB98
- .incbin "graphics/pokemon/back_pics/gorebyss_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gorebyss/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gorebyss_shiny_palette:: @ 8E1FE80
- .incbin "graphics/pokemon/palettes/gorebyss_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gorebyss/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_gorebyss_icon:: @ 8E1FEA8
- .incbin "graphics/pokemon/icons/gorebyss_icon.4bpp"
+ .incbin "graphics/pokemon/gorebyss/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_gorebyss_footprint:: @ 8E202A8
- .incbin "graphics/pokemon/footprints/gorebyss_footprint.1bpp"
+ .incbin "graphics/pokemon/gorebyss/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_absol_still_front_pic:: @ 8E202C8
- .incbin "graphics/pokemon/front_pics/absol_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/absol/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_absol_palette:: @ 8E206F8
- .incbin "graphics/pokemon/palettes/absol_palette.gbapal.lz"
+ .incbin "graphics/pokemon/absol/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_absol_back_pic:: @ 8E20720
- .incbin "graphics/pokemon/back_pics/absol_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/absol/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_absol_shiny_palette:: @ 8E20A80
- .incbin "graphics/pokemon/palettes/absol_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/absol/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_absol_icon:: @ 8E20AA8
- .incbin "graphics/pokemon/icons/absol_icon.4bpp"
+ .incbin "graphics/pokemon/absol/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_absol_footprint:: @ 8E20EA8
- .incbin "graphics/pokemon/footprints/absol_footprint.1bpp"
+ .incbin "graphics/pokemon/absol/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_shuppet_still_front_pic:: @ 8E20EC8
- .incbin "graphics/pokemon/front_pics/shuppet_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shuppet/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shuppet_palette:: @ 8E21100
- .incbin "graphics/pokemon/palettes/shuppet_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shuppet/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_shuppet_back_pic:: @ 8E21128
- .incbin "graphics/pokemon/back_pics/shuppet_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shuppet/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shuppet_shiny_palette:: @ 8E213C0
- .incbin "graphics/pokemon/palettes/shuppet_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shuppet/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_shuppet_icon:: @ 8E213E8
- .incbin "graphics/pokemon/icons/shuppet_icon.4bpp"
+ .incbin "graphics/pokemon/shuppet/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_shuppet_footprint:: @ 8E217E8
- .incbin "graphics/pokemon/footprints/shuppet_footprint.1bpp"
+ .incbin "graphics/pokemon/shuppet/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_banette_still_front_pic:: @ 8E21808
- .incbin "graphics/pokemon/front_pics/banette_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/banette/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_banette_palette:: @ 8E21ABC
- .incbin "graphics/pokemon/palettes/banette_palette.gbapal.lz"
+ .incbin "graphics/pokemon/banette/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_banette_back_pic:: @ 8E21AE4
- .incbin "graphics/pokemon/back_pics/banette_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/banette/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_banette_shiny_palette:: @ 8E21D60
- .incbin "graphics/pokemon/palettes/banette_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/banette/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_banette_icon:: @ 8E21D88
- .incbin "graphics/pokemon/icons/banette_icon.4bpp"
+ .incbin "graphics/pokemon/banette/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_banette_footprint:: @ 8E22188
- .incbin "graphics/pokemon/footprints/banette_footprint.1bpp"
+ .incbin "graphics/pokemon/banette/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_seviper_still_front_pic:: @ 8E221A8
- .incbin "graphics/pokemon/front_pics/seviper_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/seviper/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_seviper_palette:: @ 8E225C8
- .incbin "graphics/pokemon/palettes/seviper_palette.gbapal.lz"
+ .incbin "graphics/pokemon/seviper/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_seviper_back_pic:: @ 8E225F0
- .incbin "graphics/pokemon/back_pics/seviper_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/seviper/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_seviper_shiny_palette:: @ 8E22A7C
- .incbin "graphics/pokemon/palettes/seviper_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/seviper/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_seviper_icon:: @ 8E22AA4
- .incbin "graphics/pokemon/icons/seviper_icon.4bpp"
+ .incbin "graphics/pokemon/seviper/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_seviper_footprint:: @ 8E22EA4
- .incbin "graphics/pokemon/footprints/seviper_footprint.1bpp"
+ .incbin "graphics/pokemon/seviper/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_zangoose_still_front_pic:: @ 8E22EC4
- .incbin "graphics/pokemon/front_pics/zangoose_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/zangoose/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_zangoose_palette:: @ 8E23290
- .incbin "graphics/pokemon/palettes/zangoose_palette.gbapal.lz"
+ .incbin "graphics/pokemon/zangoose/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_zangoose_back_pic:: @ 8E232B8
- .incbin "graphics/pokemon/back_pics/zangoose_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/zangoose/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_zangoose_shiny_palette:: @ 8E2362C
- .incbin "graphics/pokemon/palettes/zangoose_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/zangoose/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_zangoose_icon:: @ 8E23654
- .incbin "graphics/pokemon/icons/zangoose_icon.4bpp"
+ .incbin "graphics/pokemon/zangoose/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_zangoose_footprint:: @ 8E23A54
- .incbin "graphics/pokemon/footprints/zangoose_footprint.1bpp"
+ .incbin "graphics/pokemon/zangoose/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_relicanth_still_front_pic:: @ 8E23A74
- .incbin "graphics/pokemon/front_pics/relicanth_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/relicanth/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_relicanth_palette:: @ 8E23E08
- .incbin "graphics/pokemon/palettes/relicanth_palette.gbapal.lz"
+ .incbin "graphics/pokemon/relicanth/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_relicanth_back_pic:: @ 8E23E30
- .incbin "graphics/pokemon/back_pics/relicanth_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/relicanth/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_relicanth_shiny_palette:: @ 8E24188
- .incbin "graphics/pokemon/palettes/relicanth_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/relicanth/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_relicanth_icon:: @ 8E241B0
- .incbin "graphics/pokemon/icons/relicanth_icon.4bpp"
+ .incbin "graphics/pokemon/relicanth/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_relicanth_footprint:: @ 8E245B0
- .incbin "graphics/pokemon/footprints/relicanth_footprint.1bpp"
+ .incbin "graphics/pokemon/relicanth/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_aron_still_front_pic:: @ 8E245D0
- .incbin "graphics/pokemon/front_pics/aron_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/aron/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_aron_palette:: @ 8E247B8
- .incbin "graphics/pokemon/palettes/aron_palette.gbapal.lz"
+ .incbin "graphics/pokemon/aron/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_aron_back_pic:: @ 8E247E0
- .incbin "graphics/pokemon/back_pics/aron_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/aron/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_aron_shiny_palette:: @ 8E24A08
- .incbin "graphics/pokemon/palettes/aron_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/aron/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_aron_icon:: @ 8E24A30
- .incbin "graphics/pokemon/icons/aron_icon.4bpp"
+ .incbin "graphics/pokemon/aron/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_aron_footprint:: @ 8E24E30
- .incbin "graphics/pokemon/footprints/aron_footprint.1bpp"
+ .incbin "graphics/pokemon/aron/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_lairon_still_front_pic:: @ 8E24E50
- .incbin "graphics/pokemon/front_pics/lairon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lairon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lairon_palette:: @ 8E2521C
- .incbin "graphics/pokemon/palettes/lairon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lairon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_lairon_back_pic:: @ 8E25244
- .incbin "graphics/pokemon/back_pics/lairon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lairon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lairon_shiny_palette:: @ 8E25530
- .incbin "graphics/pokemon/palettes/lairon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lairon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_lairon_icon:: @ 8E25558
- .incbin "graphics/pokemon/icons/lairon_icon.4bpp"
+ .incbin "graphics/pokemon/lairon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_lairon_footprint:: @ 8E25958
- .incbin "graphics/pokemon/footprints/lairon_footprint.1bpp"
+ .incbin "graphics/pokemon/lairon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_aggron_still_front_pic:: @ 8E25978
- .incbin "graphics/pokemon/front_pics/aggron_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/aggron/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_aggron_palette:: @ 8E25EF4
- .incbin "graphics/pokemon/palettes/aggron_palette.gbapal.lz"
+ .incbin "graphics/pokemon/aggron/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_aggron_back_pic:: @ 8E25F1C
- .incbin "graphics/pokemon/back_pics/aggron_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/aggron/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_aggron_shiny_palette:: @ 8E26344
- .incbin "graphics/pokemon/palettes/aggron_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/aggron/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_aggron_icon:: @ 8E2636C
- .incbin "graphics/pokemon/icons/aggron_icon.4bpp"
+ .incbin "graphics/pokemon/aggron/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_aggron_footprint:: @ 8E2676C
- .incbin "graphics/pokemon/footprints/aggron_footprint.1bpp"
+ .incbin "graphics/pokemon/aggron/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_castform_still_front_pic:: @ 8E2678C
- .incbin "graphics/pokemon/front_pics/castform_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/castform/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_castform_palette:: @ 8E27214
- .incbin "graphics/pokemon/palettes/castform_palette.gbapal.lz"
+ .incbin "graphics/pokemon/castform/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_castform_back_pic:: @ 8E27294
- .incbin "graphics/pokemon/back_pics/castform_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/castform/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_castform_shiny_palette:: @ 8E27C50
- .incbin "graphics/pokemon/palettes/castform_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/castform/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_castform_icon:: @ 8E27CCC
- .incbin "graphics/pokemon/icons/castform_icon.4bpp"
+ .incbin "graphics/pokemon/castform/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_castform_footprint:: @ 8E280CC
- .incbin "graphics/pokemon/footprints/castform_footprint.1bpp"
+ .incbin "graphics/pokemon/castform/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_volbeat_still_front_pic:: @ 8E280EC
- .incbin "graphics/pokemon/front_pics/volbeat_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/volbeat/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_volbeat_palette:: @ 8E2847C
- .incbin "graphics/pokemon/palettes/volbeat_palette.gbapal.lz"
+ .incbin "graphics/pokemon/volbeat/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_volbeat_back_pic:: @ 8E284A4
- .incbin "graphics/pokemon/back_pics/volbeat_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/volbeat/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_volbeat_shiny_palette:: @ 8E28804
- .incbin "graphics/pokemon/palettes/volbeat_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/volbeat/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_volbeat_icon:: @ 8E2882C
- .incbin "graphics/pokemon/icons/volbeat_icon.4bpp"
+ .incbin "graphics/pokemon/volbeat/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_volbeat_footprint:: @ 8E28C2C
- .incbin "graphics/pokemon/footprints/volbeat_footprint.1bpp"
+ .incbin "graphics/pokemon/volbeat/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_illumise_still_front_pic:: @ 8E28C4C
- .incbin "graphics/pokemon/front_pics/illumise_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/illumise/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_illumise_palette:: @ 8E28FC0
- .incbin "graphics/pokemon/palettes/illumise_palette.gbapal.lz"
+ .incbin "graphics/pokemon/illumise/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_illumise_back_pic:: @ 8E28FE8
- .incbin "graphics/pokemon/back_pics/illumise_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/illumise/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_illumise_shiny_palette:: @ 8E29304
- .incbin "graphics/pokemon/palettes/illumise_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/illumise/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_illumise_icon:: @ 8E2932C
- .incbin "graphics/pokemon/icons/illumise_icon.4bpp"
+ .incbin "graphics/pokemon/illumise/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_illumise_footprint:: @ 8E2972C
- .incbin "graphics/pokemon/footprints/illumise_footprint.1bpp"
+ .incbin "graphics/pokemon/illumise/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_lileep_still_front_pic:: @ 8E2974C
- .incbin "graphics/pokemon/front_pics/lileep_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lileep/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lileep_palette:: @ 8E29A90
- .incbin "graphics/pokemon/palettes/lileep_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lileep/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_lileep_back_pic:: @ 8E29AB8
- .incbin "graphics/pokemon/back_pics/lileep_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/lileep/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_lileep_shiny_palette:: @ 8E29DFC
- .incbin "graphics/pokemon/palettes/lileep_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/lileep/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_lileep_icon:: @ 8E29E24
- .incbin "graphics/pokemon/icons/lileep_icon.4bpp"
+ .incbin "graphics/pokemon/lileep/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_lileep_footprint:: @ 8E2A224
- .incbin "graphics/pokemon/footprints/lileep_footprint.1bpp"
+ .incbin "graphics/pokemon/lileep/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_cradily_still_front_pic:: @ 8E2A244
- .incbin "graphics/pokemon/front_pics/cradily_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cradily/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cradily_palette:: @ 8E2A660
- .incbin "graphics/pokemon/palettes/cradily_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cradily/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_cradily_back_pic:: @ 8E2A688
- .incbin "graphics/pokemon/back_pics/cradily_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/cradily/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_cradily_shiny_palette:: @ 8E2AA84
- .incbin "graphics/pokemon/palettes/cradily_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/cradily/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_cradily_icon:: @ 8E2AAAC
- .incbin "graphics/pokemon/icons/cradily_icon.4bpp"
+ .incbin "graphics/pokemon/cradily/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_cradily_footprint:: @ 8E2AEAC
- .incbin "graphics/pokemon/footprints/cradily_footprint.1bpp"
+ .incbin "graphics/pokemon/cradily/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_anorith_still_front_pic:: @ 8E2AECC
- .incbin "graphics/pokemon/front_pics/anorith_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/anorith/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_anorith_palette:: @ 8E2B1F0
- .incbin "graphics/pokemon/palettes/anorith_palette.gbapal.lz"
+ .incbin "graphics/pokemon/anorith/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_anorith_back_pic:: @ 8E2B218
- .incbin "graphics/pokemon/back_pics/anorith_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/anorith/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_anorith_shiny_palette:: @ 8E2B460
- .incbin "graphics/pokemon/palettes/anorith_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/anorith/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_anorith_icon:: @ 8E2B488
- .incbin "graphics/pokemon/icons/anorith_icon.4bpp"
+ .incbin "graphics/pokemon/anorith/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_anorith_footprint:: @ 8E2B888
- .incbin "graphics/pokemon/footprints/anorith_footprint.1bpp"
+ .incbin "graphics/pokemon/anorith/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_armaldo_still_front_pic:: @ 8E2B8A8
- .incbin "graphics/pokemon/front_pics/armaldo_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/armaldo/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_armaldo_palette:: @ 8E2BE28
- .incbin "graphics/pokemon/palettes/armaldo_palette.gbapal.lz"
+ .incbin "graphics/pokemon/armaldo/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_armaldo_back_pic:: @ 8E2BE50
- .incbin "graphics/pokemon/back_pics/armaldo_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/armaldo/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_armaldo_shiny_palette:: @ 8E2C288
- .incbin "graphics/pokemon/palettes/armaldo_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/armaldo/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_armaldo_icon:: @ 8E2C2B0
- .incbin "graphics/pokemon/icons/armaldo_icon.4bpp"
+ .incbin "graphics/pokemon/armaldo/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_armaldo_footprint:: @ 8E2C6B0
- .incbin "graphics/pokemon/footprints/armaldo_footprint.1bpp"
+ .incbin "graphics/pokemon/armaldo/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_ralts_still_front_pic:: @ 8E2C6D0
- .incbin "graphics/pokemon/front_pics/ralts_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ralts/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ralts_palette:: @ 8E2C900
- .incbin "graphics/pokemon/palettes/ralts_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ralts/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_ralts_back_pic:: @ 8E2C928
- .incbin "graphics/pokemon/back_pics/ralts_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/ralts/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_ralts_shiny_palette:: @ 8E2CB64
- .incbin "graphics/pokemon/palettes/ralts_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/ralts/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_ralts_icon:: @ 8E2CB8C
- .incbin "graphics/pokemon/icons/ralts_icon.4bpp"
+ .incbin "graphics/pokemon/ralts/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_ralts_footprint:: @ 8E2CF8C
- .incbin "graphics/pokemon/footprints/ralts_footprint.1bpp"
+ .incbin "graphics/pokemon/ralts/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_kirlia_still_front_pic:: @ 8E2CFAC
- .incbin "graphics/pokemon/front_pics/kirlia_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kirlia/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kirlia_palette:: @ 8E2D2A8
- .incbin "graphics/pokemon/palettes/kirlia_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kirlia/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_kirlia_back_pic:: @ 8E2D2D0
- .incbin "graphics/pokemon/back_pics/kirlia_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kirlia/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kirlia_shiny_palette:: @ 8E2D644
- .incbin "graphics/pokemon/palettes/kirlia_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kirlia/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_kirlia_icon:: @ 8E2D66C
- .incbin "graphics/pokemon/icons/kirlia_icon.4bpp"
+ .incbin "graphics/pokemon/kirlia/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_kirlia_footprint:: @ 8E2DA6C
- .incbin "graphics/pokemon/footprints/kirlia_footprint.1bpp"
+ .incbin "graphics/pokemon/kirlia/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_gardevoir_still_front_pic:: @ 8E2DA8C
- .incbin "graphics/pokemon/front_pics/gardevoir_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gardevoir/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gardevoir_palette:: @ 8E2DE08
- .incbin "graphics/pokemon/palettes/gardevoir_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gardevoir/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_gardevoir_back_pic:: @ 8E2DE30
- .incbin "graphics/pokemon/back_pics/gardevoir_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/gardevoir/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_gardevoir_shiny_palette:: @ 8E2E164
- .incbin "graphics/pokemon/palettes/gardevoir_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/gardevoir/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_gardevoir_icon:: @ 8E2E18C
- .incbin "graphics/pokemon/icons/gardevoir_icon.4bpp"
+ .incbin "graphics/pokemon/gardevoir/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_gardevoir_footprint:: @ 8E2E58C
- .incbin "graphics/pokemon/footprints/gardevoir_footprint.1bpp"
+ .incbin "graphics/pokemon/gardevoir/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_bagon_still_front_pic:: @ 8E2E5AC
- .incbin "graphics/pokemon/front_pics/bagon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/bagon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_bagon_palette:: @ 8E2E824
- .incbin "graphics/pokemon/palettes/bagon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/bagon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_bagon_back_pic:: @ 8E2E84C
- .incbin "graphics/pokemon/back_pics/bagon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/bagon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_bagon_shiny_palette:: @ 8E2EB34
- .incbin "graphics/pokemon/palettes/bagon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/bagon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_bagon_icon:: @ 8E2EB5C
- .incbin "graphics/pokemon/icons/bagon_icon.4bpp"
+ .incbin "graphics/pokemon/bagon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_bagon_footprint:: @ 8E2EF5C
- .incbin "graphics/pokemon/footprints/bagon_footprint.1bpp"
+ .incbin "graphics/pokemon/bagon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_shelgon_still_front_pic:: @ 8E2EF7C
- .incbin "graphics/pokemon/front_pics/shelgon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shelgon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shelgon_palette:: @ 8E2F280
- .incbin "graphics/pokemon/palettes/shelgon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shelgon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_shelgon_back_pic:: @ 8E2F2A8
- .incbin "graphics/pokemon/back_pics/shelgon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/shelgon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_shelgon_shiny_palette:: @ 8E2F590
- .incbin "graphics/pokemon/palettes/shelgon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/shelgon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_shelgon_icon:: @ 8E2F5B8
- .incbin "graphics/pokemon/icons/shelgon_icon.4bpp"
+ .incbin "graphics/pokemon/shelgon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_shelgon_footprint:: @ 8E2F9B8
- .incbin "graphics/pokemon/footprints/shelgon_footprint.1bpp"
+ .incbin "graphics/pokemon/shelgon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_salamence_still_front_pic:: @ 8E2F9D8
- .incbin "graphics/pokemon/front_pics/salamence_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/salamence/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_salamence_palette:: @ 8E2FE3C
- .incbin "graphics/pokemon/palettes/salamence_palette.gbapal.lz"
+ .incbin "graphics/pokemon/salamence/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_salamence_back_pic:: @ 8E2FE64
- .incbin "graphics/pokemon/back_pics/salamence_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/salamence/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_salamence_shiny_palette:: @ 8E30148
- .incbin "graphics/pokemon/palettes/salamence_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/salamence/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_salamence_icon:: @ 8E30170
- .incbin "graphics/pokemon/icons/salamence_icon.4bpp"
+ .incbin "graphics/pokemon/salamence/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_salamence_footprint:: @ 8E30570
- .incbin "graphics/pokemon/footprints/salamence_footprint.1bpp"
+ .incbin "graphics/pokemon/salamence/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_beldum_still_front_pic:: @ 8E30590
- .incbin "graphics/pokemon/front_pics/beldum_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/beldum/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_beldum_palette:: @ 8E30800
- .incbin "graphics/pokemon/palettes/beldum_palette.gbapal.lz"
+ .incbin "graphics/pokemon/beldum/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_beldum_back_pic:: @ 8E30828
- .incbin "graphics/pokemon/back_pics/beldum_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/beldum/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_beldum_shiny_palette:: @ 8E30B18
- .incbin "graphics/pokemon/palettes/beldum_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/beldum/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_beldum_icon:: @ 8E30B40
- .incbin "graphics/pokemon/icons/beldum_icon.4bpp"
+ .incbin "graphics/pokemon/beldum/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_beldum_footprint:: @ 8E30F40
- .incbin "graphics/pokemon/footprints/beldum_footprint.1bpp"
+ .incbin "graphics/pokemon/beldum/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_metang_still_front_pic:: @ 8E30F60
- .incbin "graphics/pokemon/front_pics/metang_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/metang/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_metang_palette:: @ 8E313BC
- .incbin "graphics/pokemon/palettes/metang_palette.gbapal.lz"
+ .incbin "graphics/pokemon/metang/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_metang_back_pic:: @ 8E313E4
- .incbin "graphics/pokemon/back_pics/metang_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/metang/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_metang_shiny_palette:: @ 8E31708
- .incbin "graphics/pokemon/palettes/metang_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/metang/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_metang_icon:: @ 8E31730
- .incbin "graphics/pokemon/icons/metang_icon.4bpp"
+ .incbin "graphics/pokemon/metang/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_metang_footprint:: @ 8E31B30
- .incbin "graphics/pokemon/footprints/metang_footprint.1bpp"
+ .incbin "graphics/pokemon/metang/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_metagross_still_front_pic:: @ 8E31B50
- .incbin "graphics/pokemon/front_pics/metagross_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/metagross/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_metagross_palette:: @ 8E31FB4
- .incbin "graphics/pokemon/palettes/metagross_palette.gbapal.lz"
+ .incbin "graphics/pokemon/metagross/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_metagross_back_pic:: @ 8E31FDC
- .incbin "graphics/pokemon/back_pics/metagross_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/metagross/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_metagross_shiny_palette:: @ 8E322A8
- .incbin "graphics/pokemon/palettes/metagross_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/metagross/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_metagross_icon:: @ 8E322D0
- .incbin "graphics/pokemon/icons/metagross_icon.4bpp"
+ .incbin "graphics/pokemon/metagross/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_metagross_footprint:: @ 8E326D0
- .incbin "graphics/pokemon/footprints/metagross_footprint.1bpp"
+ .incbin "graphics/pokemon/metagross/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_regirock_still_front_pic:: @ 8E326F0
- .incbin "graphics/pokemon/front_pics/regirock_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/regirock/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_regirock_palette:: @ 8E32BAC
- .incbin "graphics/pokemon/palettes/regirock_palette.gbapal.lz"
+ .incbin "graphics/pokemon/regirock/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_regirock_back_pic:: @ 8E32BD4
- .incbin "graphics/pokemon/back_pics/regirock_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/regirock/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_regirock_shiny_palette:: @ 8E33020
- .incbin "graphics/pokemon/palettes/regirock_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/regirock/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_regirock_icon:: @ 8E33048
- .incbin "graphics/pokemon/icons/regirock_icon.4bpp"
+ .incbin "graphics/pokemon/regirock/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_regirock_footprint:: @ 8E33448
- .incbin "graphics/pokemon/footprints/regirock_footprint.1bpp"
+ .incbin "graphics/pokemon/regirock/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_regice_still_front_pic:: @ 8E33468
- .incbin "graphics/pokemon/front_pics/regice_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/regice/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_regice_palette:: @ 8E338B0
- .incbin "graphics/pokemon/palettes/regice_palette.gbapal.lz"
+ .incbin "graphics/pokemon/regice/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_regice_back_pic:: @ 8E338D8
- .incbin "graphics/pokemon/back_pics/regice_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/regice/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_regice_shiny_palette:: @ 8E33BC8
- .incbin "graphics/pokemon/palettes/regice_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/regice/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_regice_icon:: @ 8E33BF0
- .incbin "graphics/pokemon/icons/regice_icon.4bpp"
+ .incbin "graphics/pokemon/regice/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_regice_footprint:: @ 8E33FF0
- .incbin "graphics/pokemon/footprints/regice_footprint.1bpp"
+ .incbin "graphics/pokemon/regice/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_registeel_still_front_pic:: @ 8E34010
- .incbin "graphics/pokemon/front_pics/registeel_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/registeel/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_registeel_palette:: @ 8E34498
- .incbin "graphics/pokemon/palettes/registeel_palette.gbapal.lz"
+ .incbin "graphics/pokemon/registeel/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_registeel_back_pic:: @ 8E344C0
- .incbin "graphics/pokemon/back_pics/registeel_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/registeel/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_registeel_shiny_palette:: @ 8E347F8
- .incbin "graphics/pokemon/palettes/registeel_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/registeel/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_registeel_icon:: @ 8E34820
- .incbin "graphics/pokemon/icons/registeel_icon.4bpp"
+ .incbin "graphics/pokemon/registeel/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_registeel_footprint:: @ 8E34C20
- .incbin "graphics/pokemon/footprints/registeel_footprint.1bpp"
+ .incbin "graphics/pokemon/registeel/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_kyogre_still_front_pic:: @ 8E34C40
- .incbin "graphics/pokemon/front_pics/kyogre_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kyogre/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kyogre_palette:: @ 8E350B0
- .incbin "graphics/pokemon/palettes/kyogre_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kyogre/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_kyogre_back_pic:: @ 8E350D8
- .incbin "graphics/pokemon/back_pics/kyogre_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/kyogre/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_kyogre_shiny_palette:: @ 8E35350
- .incbin "graphics/pokemon/palettes/kyogre_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/kyogre/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_kyogre_icon:: @ 8E35378
- .incbin "graphics/pokemon/icons/kyogre_icon.4bpp"
+ .incbin "graphics/pokemon/kyogre/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_kyogre_footprint:: @ 8E35778
- .incbin "graphics/pokemon/footprints/kyogre_footprint.1bpp"
+ .incbin "graphics/pokemon/kyogre/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_groudon_still_front_pic:: @ 8E35798
- .incbin "graphics/pokemon/front_pics/groudon_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/groudon/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_groudon_palette:: @ 8E35D2C
- .incbin "graphics/pokemon/palettes/groudon_palette.gbapal.lz"
+ .incbin "graphics/pokemon/groudon/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_groudon_back_pic:: @ 8E35D54
- .incbin "graphics/pokemon/back_pics/groudon_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/groudon/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_groudon_shiny_palette:: @ 8E361BC
- .incbin "graphics/pokemon/palettes/groudon_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/groudon/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_groudon_icon:: @ 8E361E4
- .incbin "graphics/pokemon/icons/groudon_icon.4bpp"
+ .incbin "graphics/pokemon/groudon/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_groudon_footprint:: @ 8E365E4
- .incbin "graphics/pokemon/footprints/groudon_footprint.1bpp"
+ .incbin "graphics/pokemon/groudon/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_rayquaza_still_front_pic:: @ 8E36604
- .incbin "graphics/pokemon/front_pics/rayquaza_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/rayquaza/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_rayquaza_palette:: @ 8E36B14
- .incbin "graphics/pokemon/palettes/rayquaza_palette.gbapal.lz"
+ .incbin "graphics/pokemon/rayquaza/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_rayquaza_back_pic:: @ 8E36B3C
- .incbin "graphics/pokemon/back_pics/rayquaza_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/rayquaza/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_rayquaza_shiny_palette:: @ 8E36E74
- .incbin "graphics/pokemon/palettes/rayquaza_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/rayquaza/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_rayquaza_icon:: @ 8E36E9C
- .incbin "graphics/pokemon/icons/rayquaza_icon.4bpp"
+ .incbin "graphics/pokemon/rayquaza/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_rayquaza_footprint:: @ 8E3729C
- .incbin "graphics/pokemon/footprints/rayquaza_footprint.1bpp"
+ .incbin "graphics/pokemon/rayquaza/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_latias_still_front_pic:: @ 8E372BC
- .incbin "graphics/pokemon/front_pics/latias_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/latias/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_latias_palette:: @ 8E376E0
- .incbin "graphics/pokemon/palettes/latias_palette.gbapal.lz"
+ .incbin "graphics/pokemon/latias/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_latias_back_pic:: @ 8E37708
- .incbin "graphics/pokemon/back_pics/latias_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/latias/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_latias_shiny_palette:: @ 8E37A04
- .incbin "graphics/pokemon/palettes/latias_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/latias/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_latias_icon:: @ 8E37A2C
- .incbin "graphics/pokemon/icons/latias_icon.4bpp"
+ .incbin "graphics/pokemon/latias/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_latias_footprint:: @ 8E37E2C
- .incbin "graphics/pokemon/footprints/latias_footprint.1bpp"
+ .incbin "graphics/pokemon/latias/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_latios_still_front_pic:: @ 8E37E4C
- .incbin "graphics/pokemon/front_pics/latios_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/latios/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_latios_palette:: @ 8E382A0
- .incbin "graphics/pokemon/palettes/latios_palette.gbapal.lz"
+ .incbin "graphics/pokemon/latios/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_latios_back_pic:: @ 8E382C8
- .incbin "graphics/pokemon/back_pics/latios_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/latios/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_latios_shiny_palette:: @ 8E38628
- .incbin "graphics/pokemon/palettes/latios_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/latios/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_latios_icon:: @ 8E38650
- .incbin "graphics/pokemon/icons/latios_icon.4bpp"
+ .incbin "graphics/pokemon/latios/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_latios_footprint:: @ 8E38A50
- .incbin "graphics/pokemon/footprints/latios_footprint.1bpp"
+ .incbin "graphics/pokemon/latios/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_jirachi_still_front_pic:: @ 8E38A70
- .incbin "graphics/pokemon/front_pics/jirachi_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/jirachi/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_jirachi_palette:: @ 8E38D7C
- .incbin "graphics/pokemon/palettes/jirachi_palette.gbapal.lz"
+ .incbin "graphics/pokemon/jirachi/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_jirachi_back_pic:: @ 8E38DA4
- .incbin "graphics/pokemon/back_pics/jirachi_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/jirachi/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_jirachi_shiny_palette:: @ 8E39144
- .incbin "graphics/pokemon/palettes/jirachi_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/jirachi/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_jirachi_icon:: @ 8E3916C
- .incbin "graphics/pokemon/icons/jirachi_icon.4bpp"
+ .incbin "graphics/pokemon/jirachi/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_jirachi_footprint:: @ 8E3956C
- .incbin "graphics/pokemon/footprints/jirachi_footprint.1bpp"
+ .incbin "graphics/pokemon/jirachi/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_deoxys_still_front_pic:: @ 8E3958C
- .incbin "graphics/pokemon/front_pics/deoxys_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/deoxys/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_deoxys_palette:: @ 8E39D48
- .incbin "graphics/pokemon/palettes/deoxys_palette.gbapal.lz"
+ .incbin "graphics/pokemon/deoxys/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_deoxys_back_pic:: @ 8E39D70
- .incbin "graphics/pokemon/back_pics/deoxys_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/deoxys/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_deoxys_shiny_palette:: @ 8E3A360
- .incbin "graphics/pokemon/palettes/deoxys_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/deoxys/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_deoxys_icon:: @ 8E3A388
- .incbin "graphics/pokemon/icons/deoxys_icon.4bpp"
+ .incbin "graphics/pokemon/deoxys/icon.4bpp"
.align 2
gFile_graphics_pokemon_icons_deoxys_speed_icon:: @ 8E3A788
- .incbin "graphics/pokemon/icons/deoxys_speed_icon.4bpp"
+ .incbin "graphics/pokemon/deoxys/speed_icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_deoxys_footprint:: @ 8E3AB88
- .incbin "graphics/pokemon/footprints/deoxys_footprint.1bpp"
+ .incbin "graphics/pokemon/deoxys/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_chimecho_still_front_pic:: @ 8E3ABA8
- .incbin "graphics/pokemon/front_pics/chimecho_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/chimecho/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_chimecho_palette:: @ 8E3ADF4
- .incbin "graphics/pokemon/palettes/chimecho_palette.gbapal.lz"
+ .incbin "graphics/pokemon/chimecho/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_back_pics_chimecho_back_pic:: @ 8E3AE1C
- .incbin "graphics/pokemon/back_pics/chimecho_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/chimecho/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_chimecho_shiny_palette:: @ 8E3B090
- .incbin "graphics/pokemon/palettes/chimecho_shiny_palette.gbapal.lz"
+ .incbin "graphics/pokemon/chimecho/shiny.gbapal.lz"
.align 2
gFile_graphics_pokemon_icons_chimecho_icon:: @ 8E3B0B8
- .incbin "graphics/pokemon/icons/chimecho_icon.4bpp"
+ .incbin "graphics/pokemon/chimecho/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_chimecho_footprint:: @ 8E3B4B8
- .incbin "graphics/pokemon/footprints/chimecho_footprint.1bpp"
+ .incbin "graphics/pokemon/chimecho/footprint.1bpp"
.align 2
gFile_graphics_pokemon_front_pics_egg_still_front_pic:: @ 8E3B4D8
- .incbin "graphics/pokemon/front_pics/egg_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/egg/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_palettes_egg_palette:: @ 8E3B68C
- .incbin "graphics/pokemon/palettes/egg_palette.gbapal.lz"
+ .incbin "graphics/pokemon/egg/normal.gbapal.lz"
.align 2
gFile_graphics_pokemon_front_pics_unown_b_still_front_pic:: @ 8E3B6AC
- .incbin "graphics/pokemon/front_pics/unown_b_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/b/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_b_back_pic:: @ 8E3B884
- .incbin "graphics/pokemon/back_pics/unown_b_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/b/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_B_icon:: @ 8E3BA88
- .incbin "graphics/pokemon/icons/unown_B_icon.4bpp"
+ .incbin "graphics/pokemon/unown/b/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_c_still_front_pic:: @ 8E3BE88
- .incbin "graphics/pokemon/front_pics/unown_c_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/c/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_c_back_pic:: @ 8E3C09C
- .incbin "graphics/pokemon/back_pics/unown_c_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/c/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_C_icon:: @ 8E3C348
- .incbin "graphics/pokemon/icons/unown_C_icon.4bpp"
+ .incbin "graphics/pokemon/unown/c/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_d_still_front_pic:: @ 8E3C748
- .incbin "graphics/pokemon/front_pics/unown_d_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/d/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_d_back_pic:: @ 8E3C940
- .incbin "graphics/pokemon/back_pics/unown_d_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/d/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_D_icon:: @ 8E3CB98
- .incbin "graphics/pokemon/icons/unown_D_icon.4bpp"
+ .incbin "graphics/pokemon/unown/d/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_e_still_front_pic:: @ 8E3CF98
- .incbin "graphics/pokemon/front_pics/unown_e_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/e/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_e_back_pic:: @ 8E3D150
- .incbin "graphics/pokemon/back_pics/unown_e_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/e/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_E_icon:: @ 8E3D350
- .incbin "graphics/pokemon/icons/unown_E_icon.4bpp"
+ .incbin "graphics/pokemon/unown/e/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_f_still_front_pic:: @ 8E3D750
- .incbin "graphics/pokemon/front_pics/unown_f_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/f/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_f_back_pic:: @ 8E3D944
- .incbin "graphics/pokemon/back_pics/unown_f_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/f/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_F_icon:: @ 8E3DB60
- .incbin "graphics/pokemon/icons/unown_F_icon.4bpp"
+ .incbin "graphics/pokemon/unown/f/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_g_still_front_pic:: @ 8E3DF60
- .incbin "graphics/pokemon/front_pics/unown_g_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/g/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_g_back_pic:: @ 8E3E13C
- .incbin "graphics/pokemon/back_pics/unown_g_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/g/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_G_icon:: @ 8E3E388
- .incbin "graphics/pokemon/icons/unown_G_icon.4bpp"
+ .incbin "graphics/pokemon/unown/g/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_h_still_front_pic:: @ 8E3E788
- .incbin "graphics/pokemon/front_pics/unown_h_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/h/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_h_back_pic:: @ 8E3E9CC
- .incbin "graphics/pokemon/back_pics/unown_h_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/h/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_H_icon:: @ 8E3EC90
- .incbin "graphics/pokemon/icons/unown_H_icon.4bpp"
+ .incbin "graphics/pokemon/unown/h/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_i_still_front_pic:: @ 8E3F090
- .incbin "graphics/pokemon/front_pics/unown_i_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/i/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_i_back_pic:: @ 8E3F228
- .incbin "graphics/pokemon/back_pics/unown_i_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/i/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_I_icon:: @ 8E3F3D0
- .incbin "graphics/pokemon/icons/unown_I_icon.4bpp"
+ .incbin "graphics/pokemon/unown/i/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_j_still_front_pic:: @ 8E3F7D0
- .incbin "graphics/pokemon/front_pics/unown_j_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/j/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_j_back_pic:: @ 8E3F994
- .incbin "graphics/pokemon/back_pics/unown_j_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/j/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_J_icon:: @ 8E3FB7C
- .incbin "graphics/pokemon/icons/unown_J_icon.4bpp"
+ .incbin "graphics/pokemon/unown/j/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_k_still_front_pic:: @ 8E3FF7C
- .incbin "graphics/pokemon/front_pics/unown_k_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/k/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_k_back_pic:: @ 8E4014C
- .incbin "graphics/pokemon/back_pics/unown_k_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/k/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_K_icon:: @ 8E40344
- .incbin "graphics/pokemon/icons/unown_K_icon.4bpp"
+ .incbin "graphics/pokemon/unown/k/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_l_still_front_pic:: @ 8E40744
- .incbin "graphics/pokemon/front_pics/unown_l_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/l/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_l_back_pic:: @ 8E408F4
- .incbin "graphics/pokemon/back_pics/unown_l_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/l/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_L_icon:: @ 8E40AC8
- .incbin "graphics/pokemon/icons/unown_L_icon.4bpp"
+ .incbin "graphics/pokemon/unown/l/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_m_still_front_pic:: @ 8E40EC8
- .incbin "graphics/pokemon/front_pics/unown_m_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/m/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_m_back_pic:: @ 8E410EC
- .incbin "graphics/pokemon/back_pics/unown_m_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/m/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_M_icon:: @ 8E41394
- .incbin "graphics/pokemon/icons/unown_M_icon.4bpp"
+ .incbin "graphics/pokemon/unown/m/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_n_still_front_pic:: @ 8E41794
- .incbin "graphics/pokemon/front_pics/unown_n_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/n/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_n_back_pic:: @ 8E4198C
- .incbin "graphics/pokemon/back_pics/unown_n_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/n/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_N_icon:: @ 8E41BF8
- .incbin "graphics/pokemon/icons/unown_N_icon.4bpp"
+ .incbin "graphics/pokemon/unown/n/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_o_still_front_pic:: @ 8E41FF8
- .incbin "graphics/pokemon/front_pics/unown_o_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/o/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_o_back_pic:: @ 8E42230
- .incbin "graphics/pokemon/back_pics/unown_o_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/o/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_O_icon:: @ 8E424F0
- .incbin "graphics/pokemon/icons/unown_O_icon.4bpp"
+ .incbin "graphics/pokemon/unown/o/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_p_still_front_pic:: @ 8E428F0
- .incbin "graphics/pokemon/front_pics/unown_p_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/p/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_p_back_pic:: @ 8E42A90
- .incbin "graphics/pokemon/back_pics/unown_p_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/p/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_P_icon:: @ 8E42C54
- .incbin "graphics/pokemon/icons/unown_P_icon.4bpp"
+ .incbin "graphics/pokemon/unown/p/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_q_still_front_pic:: @ 8E43054
- .incbin "graphics/pokemon/front_pics/unown_q_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/q/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_q_back_pic:: @ 8E43208
- .incbin "graphics/pokemon/back_pics/unown_q_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/q/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_Q_icon:: @ 8E433D4
- .incbin "graphics/pokemon/icons/unown_Q_icon.4bpp"
+ .incbin "graphics/pokemon/unown/q/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_r_still_front_pic:: @ 8E437D4
- .incbin "graphics/pokemon/front_pics/unown_r_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/r/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_r_back_pic:: @ 8E43978
- .incbin "graphics/pokemon/back_pics/unown_r_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/r/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_R_icon:: @ 8E43B40
- .incbin "graphics/pokemon/icons/unown_R_icon.4bpp"
+ .incbin "graphics/pokemon/unown/r/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_s_still_front_pic:: @ 8E43F40
- .incbin "graphics/pokemon/front_pics/unown_s_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/s/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_s_back_pic:: @ 8E44128
- .incbin "graphics/pokemon/back_pics/unown_s_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/s/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_S_icon:: @ 8E4437C
- .incbin "graphics/pokemon/icons/unown_S_icon.4bpp"
+ .incbin "graphics/pokemon/unown/s/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_t_still_front_pic:: @ 8E4477C
- .incbin "graphics/pokemon/front_pics/unown_t_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/t/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_t_back_pic:: @ 8E4492C
- .incbin "graphics/pokemon/back_pics/unown_t_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/t/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_T_icon:: @ 8E44AE0
- .incbin "graphics/pokemon/icons/unown_T_icon.4bpp"
+ .incbin "graphics/pokemon/unown/t/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_u_still_front_pic:: @ 8E44EE0
- .incbin "graphics/pokemon/front_pics/unown_u_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/u/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_u_back_pic:: @ 8E450F8
- .incbin "graphics/pokemon/back_pics/unown_u_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/u/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_U_icon:: @ 8E4534C
- .incbin "graphics/pokemon/icons/unown_U_icon.4bpp"
+ .incbin "graphics/pokemon/unown/u/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_v_still_front_pic:: @ 8E4574C
- .incbin "graphics/pokemon/front_pics/unown_v_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/v/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_v_back_pic:: @ 8E45930
- .incbin "graphics/pokemon/back_pics/unown_v_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/v/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_V_icon:: @ 8E45B60
- .incbin "graphics/pokemon/icons/unown_V_icon.4bpp"
+ .incbin "graphics/pokemon/unown/v/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_w_still_front_pic:: @ 8E45F60
- .incbin "graphics/pokemon/front_pics/unown_w_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/w/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_w_back_pic:: @ 8E46134
- .incbin "graphics/pokemon/back_pics/unown_w_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/w/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_W_icon:: @ 8E46338
- .incbin "graphics/pokemon/icons/unown_W_icon.4bpp"
+ .incbin "graphics/pokemon/unown/w/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_x_still_front_pic:: @ 8E46738
- .incbin "graphics/pokemon/front_pics/unown_x_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/x/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_x_back_pic:: @ 8E468FC
- .incbin "graphics/pokemon/back_pics/unown_x_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/x/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_X_icon:: @ 8E46AEC
- .incbin "graphics/pokemon/icons/unown_X_icon.4bpp"
+ .incbin "graphics/pokemon/unown/x/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_y_still_front_pic:: @ 8E46EEC
- .incbin "graphics/pokemon/front_pics/unown_y_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/y/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_y_back_pic:: @ 8E470C4
- .incbin "graphics/pokemon/back_pics/unown_y_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/y/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_Y_icon:: @ 8E472B8
- .incbin "graphics/pokemon/icons/unown_Y_icon.4bpp"
+ .incbin "graphics/pokemon/unown/y/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_z_still_front_pic:: @ 8E476B8
- .incbin "graphics/pokemon/front_pics/unown_z_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/z/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_z_back_pic:: @ 8E47868
- .incbin "graphics/pokemon/back_pics/unown_z_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/z/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_Z_icon:: @ 8E47A44
- .incbin "graphics/pokemon/icons/unown_Z_icon.4bpp"
+ .incbin "graphics/pokemon/unown/z/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_exclamation_mark_still_front_pic:: @ 8E47E44
- .incbin "graphics/pokemon/front_pics/unown_exclamation_mark_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/exclamation_mark/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_exclamation_mark_back_pic:: @ 8E47FD4
- .incbin "graphics/pokemon/back_pics/unown_exclamation_mark_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/exclamation_mark/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_exclamation_mark_icon:: @ 8E4819C
- .incbin "graphics/pokemon/icons/unown_exclamation_mark_icon.4bpp"
+ .incbin "graphics/pokemon/unown/exclamation_mark/icon.4bpp"
.align 2
gFile_graphics_pokemon_front_pics_unown_question_mark_still_front_pic:: @ 8E4859C
- .incbin "graphics/pokemon/front_pics/unown_question_mark_still_front_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/question_mark/front.4bpp.lz"
.align 2
gFile_graphics_pokemon_back_pics_unown_question_mark_back_pic:: @ 8E48758
- .incbin "graphics/pokemon/back_pics/unown_question_mark_back_pic.4bpp.lz"
+ .incbin "graphics/pokemon/unown/question_mark/back.4bpp.lz"
.align 2
gFile_graphics_pokemon_icons_unown_question_mark_icon:: @ 8E48958
- .incbin "graphics/pokemon/icons/unown_question_mark_icon.4bpp"
+ .incbin "graphics/pokemon/unown/question_mark/icon.4bpp"
.align 2
gFile_graphics_trainers_front_pics_aqua_leader_archie_front_pic:: @ 8E48D58
@@ -13436,11 +13436,11 @@ gFile_graphics_trainers_palettes_old_man_back_pic:: @ 8E76F34
.align 2
gFile_graphics_pokemon_icons_question_mark_icon:: @ 8E76F5C
- .incbin "graphics/pokemon/icons/question_mark_icon.4bpp"
+ .incbin "graphics/pokemon/question_mark/icon.4bpp"
.align 2
gFile_graphics_pokemon_footprints_question_mark_footprint:: @ 8E7735C
- .incbin "graphics/pokemon/footprints/question_mark_footprint.1bpp"
+ .incbin "graphics/pokemon/question_mark/footprint.1bpp"
.align 2
gFile_graphics_battle_transitions_vs_frame_sheet:: @ 8E7737C
@@ -13976,14 +13976,14 @@ gUnknown_8E84F20:: @ 8E84F20
gUnknown_8E85068:: @ 8E85068
.incbin "graphics/tm_case/unk_8E85068.gbapal.lz"
-gUnknown_8E85090:: @ 8E85090
- .incbin "baserom.gba", 0xE85090, 0x378
+gItemPcTiles:: @ 8E85090
+ .incbin "graphics/item_pc/unk_8E85090.4bpp.lz"
-gUnknown_8E85408:: @ 8E85408
- .incbin "baserom.gba", 0xE85408, 0x50
+gItemPcBgPals:: @ 8E85408
+ .incbin "graphics/item_pc/unk_8E85408.gbapal.lz"
-gUnknown_8E85458:: @ 8E85458
- .incbin "baserom.gba", 0xE85458, 0x1B4
+gItemPcTilemap:: @ 8E85458
+ .incbin "graphics/item_pc/unk_8E85458.bin.lz"
gUnknown_8E8560C:: @ 8E8560C
.incbin "baserom.gba", 0xE8560C, 0x3C4
@@ -14019,16 +14019,16 @@ gUnknown_8E861A8:: @ 8E861A8
.incbin "baserom.gba", 0xE861A8, 0x98
gUnknown_8E86240:: @ 8E86240
- .incbin "baserom.gba", 0xE86240, 0x9A8
+ .incbin "graphics/teachy_tv/tiles.4bpp.lz"
gUnknown_8E86BE8:: @ 8E86BE8
- .incbin "baserom.gba", 0xE86BE8, 0x184
+ .incbin "graphics/teachy_tv/bg1_tilemap.bin.lz"
gUnknown_8E86D6C:: @ 8E86D6C
- .incbin "baserom.gba", 0xE86D6C, 0x22C
+ .incbin "graphics/teachy_tv/bg2_tilemap.bin.lz"
gUnknown_8E86F98:: @ 8E86F98
- .incbin "baserom.gba", 0xE86F98, 0x78
+ .incbin "graphics/teachy_tv/palettes.gbapal.lz"
gUnknown_8E87010:: @ 8E87010
.incbin "baserom.gba", 0xE87010, 0x18
@@ -16029,14 +16029,14 @@ gFile_graphics_mail_retro_map_tilemap:: @ 8E95C88
.incbin "graphics/mail/retro/map.bin.lz"
.align 2
-gUnknown_8E95D9C:: @ 8E95D9C
- .incbin "baserom.gba", 0xE95D9C, 0x20 @UNKNOWN
+gFireRedMenuElements1_Pal:: @ 8E95D9C
+ .incbin "graphics/interface/dex_caught_pokeball.gbapal"
-gUnknown_8E95DBC:: @ 8E95DBC
- .incbin "baserom.gba", 0xE95DBC, 0x20 @UNKNOWN
+gFireRedMenuElements2_Pal:: @ 8E95DBC
+ .incbin "graphics/interface/pokemon_types.gbapal"
-gUnknown_8E95DDC:: @ 8E95DDC
- .incbin "baserom.gba", 0xE95DDC, 0x2000 @UNKNOWN
+gFireRedMenuElements_Gfx:: @ 8E95DDC
+ .incbin "graphics/interface/dex_caught_pokeball_and_pokemon_types.4bpp"
gUnknown_8E97DDC:: @ 8E97DDC
.incbin "baserom.gba", 0xE97DDC, 0x20 @UNKNOWN
@@ -16234,58 +16234,58 @@ gTilesetPalettes_8EA1B68:: @ 8EA1B68
gTilesetTiles_8EA1D68:: @ 8EA1D68
.incbin "data/tilesets/primary/82D4A94/tiles.4bpp.lz"
-gUnknown_8EA463C:: @ 8EA463C
+gBerryFixGameboy_Pal:: @ 8EA463C
.incbin "graphics/berry_fix/gba_small.gbapal"
-gUnknown_8EA467C:: @ 8EA467C
+gBerryFixGameboy_Gfx:: @ 8EA467C
.incbin "graphics/berry_fix/gba_small.4bpp.lz"
-gUnknown_8EA52B8:: @ 8EA52B8
+gBerryFixGameboy_Tilemap:: @ 8EA52B8
.incbin "graphics/berry_fix/gba_small.bin.lz"
-gUnknown_8EA5604:: @ 8EA5604
+gBerryFixGameboyLogo_Pal:: @ 8EA5604
.incbin "graphics/berry_fix/logo.gbapal"
-gUnknown_8EA5664:: @ 8EA5664
+gBerryFixGameboyLogo_Gfx:: @ 8EA5664
.incbin "graphics/berry_fix/logo.4bpp.lz"
-gUnknown_8EA60C8:: @ 8EA60C8
+gBerryFixGameboyLogo_Tilemap:: @ 8EA60C8
.incbin "graphics/berry_fix/logo.bin.lz"
-gUnknown_8EA63C8:: @ 8EA63C8
+gBerryFixGbaTransfer_Pal:: @ 8EA63C8
.incbin "graphics/berry_fix/gba_transfer.gbapal"
-gUnknown_8EA6408:: @ 8EA6408
+gBerryFixGbaTransfer_Gfx:: @ 8EA6408
.incbin "graphics/berry_fix/gba_transfer.4bpp.lz"
-gUnknown_8EA7028:: @ 8EA7028
+gBerryFixGbaTransfer_Tilemap:: @ 8EA7028
.incbin "graphics/berry_fix/gba_transfer.bin.lz"
-gUnknown_8EA72E0:: @ 8EA72E0
+gBerryFixGbaTransferHighlight_Pal:: @ 8EA72E0
.incbin "graphics/berry_fix/gba_transfer_highlight.gbapal"
-gUnknown_8EA7320:: @ 8EA7320
+gBerryFixGbaTransferHighlight_Gfx:: @ 8EA7320
.incbin "graphics/berry_fix/gba_transfer_highlight.4bpp.lz"
-gUnknown_8EA8118:: @ 8EA8118
+gBerryFixGbaTransferHighlight_Tilemap:: @ 8EA8118
.incbin "graphics/berry_fix/gba_transfer_highlight.bin.lz"
-gUnknown_8EA83C8:: @ 8EA83C8
+gBerryFixGbaTransferError_Pal:: @ 8EA83C8
.incbin "graphics/berry_fix/gba_transfer_error.gbapal"
-gUnknown_8EA8408:: @ 8EA8408
+gBerryFixGbaTransferError_Gfx:: @ 8EA8408
.incbin "graphics/berry_fix/gba_transfer_error.4bpp.lz"
-gUnknown_8EA8CC8:: @ 8EA8CC8
+gBerryFixGbaTransferError_Tilemap:: @ 8EA8CC8
.incbin "graphics/berry_fix/gba_transfer_error.bin.lz"
-gUnknown_8EA8F00:: @ 8EA8F00
+gBerryFixWindow_Pal:: @ 8EA8F00
.incbin "graphics/berry_fix/window.gbapal"
-gUnknown_8EA8F40:: @ 8EA8F40
+gBerryFixWindow_Gfx:: @ 8EA8F40
.incbin "graphics/berry_fix/window.4bpp.lz"
-gUnknown_8EA9588:: @ 8EA9588
+gBerryFixWindow_Tilemap:: @ 8EA9588
.incbin "graphics/berry_fix/window.bin.lz"
.align 2
@@ -16412,5 +16412,4 @@ gUnknown_8EAFFC0:: @ 8EAFFC0
gUnknown_8EB0ADC:: @ 8EB0ADC
.incbin "baserom.gba", 0xEB0ADC, 0x44
-gUnknown_8EB0B20:: @ 8EB0B20
- .incbin "baserom.gba", 0xEB0B20
+ @ EOF
diff --git a/data/help_system.s b/data/help_system.s
deleted file mode 100644
index 3031f4c7f..000000000
--- a/data/help_system.s
+++ /dev/null
@@ -1,8 +0,0 @@
- .section .rodata
- .align 2
-
-gUnknown_8464008:: @ 8464008
- .incbin "baserom.gba", 0x464008, 0x120
-
-gUnknown_8464128:: @ 8464128
- .incbin "baserom.gba", 0x464128, 0x20
diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc
index 9a41120b1..899ed20e6 100644
--- a/data/map_event_scripts.inc
+++ b/data/map_event_scripts.inc
@@ -1065,7 +1065,7 @@ Text_1A5446:: @ 81A5446
.string "Want to give a nickname to the\n"
.string "{STR_VAR_2} you received?$"
-gUnknown_81A5476:: @ 81A5476
+gText_PkmnFainted3:: @ 81A5476
.string "{STR_VAR_1} fainted…\p"
.string "$"
@@ -3257,31 +3257,9 @@ CeladonCity_GameCorner_EventScript_1B2867:: @ 81B2867
.incbin "baserom.gba", 0x1B2867, 0xD1
FourIsland_House2_EventScript_1B2938:: @ 81B2938
- .incbin "baserom.gba", 0x1B2938, 0x4E4
+ .incbin "baserom.gba", 0x1B2938, 0x4C0
-gUnknown_81B2E1C:: @ 81B2E1C
- .string "How do I do this?$"
-
-gUnknown_81B2E2E:: @ 81B2E2E
- .string "What does this term mean?$"
-
-gUnknown_81B2E48:: @ 81B2E48
- .string "About this game$"
-
-gUnknown_81B2E58:: @ 81B2E58
- .string "Type Matchup List$"
-
-gUnknown_81B2E6A:: @ 81B2E6A
- .string "EXIT$"
-
-gUnknown_81B2E6F:: @ 81B2E6F
- .incbin "baserom.gba", 0x1B2E6F, 0x15A
-
-gUnknown_81B2FC9:: @ 81B2FC9
- .incbin "baserom.gba", 0x1B2FC9, 0x52
-
-gUnknown_81B301B:: @ 81B301B
- .incbin "baserom.gba", 0x1B301B, 0x8199
+ .include "data/text/help_system.inc"
CeladonCity_PokemonCenter_2F_MapScript4_1BB1B4:: @ 81BB1B4
CeruleanCity_PokemonCenter_2F_MapScript4_1BB1B4:: @ 81BB1B4
@@ -3567,7 +3545,7 @@ CeruleanCave_B1F_EventScript_1BE00C:: @ 81BE00C
CeruleanCave_1F_EventScript_1BE00C:: @ 81BE00C
.incbin "baserom.gba", 0x1BE00C, 0x58
-gUnknown_81BE064:: @ 81BE064
+EventScript_FldEffRockSmash:: @ 81BE064
.incbin "baserom.gba", 0x1BE064, 0xB9
MtEmber_Exterior_EventScript_1BE11D:: @ 81BE11D
@@ -3588,7 +3566,7 @@ SeafoamIslands_B1F_EventScript_1BE11D:: @ 81BE11D
VictoryRoad_2F_EventScript_1BE11D:: @ 81BE11D
.incbin "baserom.gba", 0x1BE11D, 0x51
-gUnknown_81BE16E:: @ 81BE16E
+EventScript_FldEffStrength:: @ 81BE16E
.incbin "baserom.gba", 0x1BE16E, 0x149
gUnknown_81BE2B7:: @ 81BE2B7
@@ -3597,7 +3575,7 @@ gUnknown_81BE2B7:: @ 81BE2B7
gUnknown_81BE2FF:: @ 81BE2FF
.incbin "baserom.gba", 0x1BE2FF, 0x265
-gUnknown_81BE564:: @ 81BE564
+EventScript_FailSweetScent:: @ 81BE564
.incbin "baserom.gba", 0x1BE564, 0x2A
Route2_EventScript_1BE58E:: @ 81BE58E
@@ -4200,16 +4178,16 @@ gUnknown_81BFB5F:: @ 81BFB5F
gUnknown_81BFB65:: @ 81BFB65
.incbin "baserom.gba", 0x1BFB65, 0x22
-gUnknown_81BFB87:: @ 81BFB87
+EventScript_SafariWarpOut:: @ 81BFB87
.incbin "baserom.gba", 0x1BFB87, 0x23
-gUnknown_81BFBAA:: @ 81BFBAA
+EventScript_SafariRetire:: @ 81BFBAA
.incbin "baserom.gba", 0x1BFBAA, 0x1B
-gUnknown_81BFBC5:: @ 81BFBC5
+EventScript_SafariTimesUp:: @ 81BFBC5
.incbin "baserom.gba", 0x1BFBC5, 0x12
-gUnknown_81BFBD7:: @ 81BFBD7
+EventScript_SafariOutOfBalls:: @ 81BFBD7
.incbin "baserom.gba", 0x1BFBD7, 0x2D5
gUnknown_81BFEAC:: @ 81BFEAC
diff --git a/data/map_events.s b/data/map_events.s
index d5d0e2329..583802155 100644
--- a/data/map_events.s
+++ b/data/map_events.s
@@ -12,6 +12,7 @@
@#include "constants/trainer_hill.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
+ .include "constants/item_data_constants.inc"
.section .rodata
diff --git a/data/maps/BirthIsland_Exterior/scripts.inc b/data/maps/BirthIsland_Exterior/scripts.inc
index 1d3fc4db6..f00cd73f2 100644
--- a/data/maps/BirthIsland_Exterior/scripts.inc
+++ b/data/maps/BirthIsland_Exterior/scripts.inc
@@ -90,7 +90,7 @@ EventScript_1652C0:: @ 81652C0
setvar VAR_0x8004, SPECIES_DEOXYS
setvar VAR_0x8005, 30
setvar VAR_0x8006, 0
- special sub_8044838
+ special CreateObedientEnemyMon
setflag FLAG_0x807
special sub_807F9D8
waitstate
diff --git a/data/maps/FiveIsland_RocketWarehouse/scripts.inc b/data/maps/FiveIsland_RocketWarehouse/scripts.inc
index bac115e76..490afe501 100644
--- a/data/maps/FiveIsland_RocketWarehouse/scripts.inc
+++ b/data/maps/FiveIsland_RocketWarehouse/scripts.inc
@@ -113,7 +113,7 @@ FiveIsland_RocketWarehouse_EventScript_164087:: @ 8164087
EventScript_1640A2:: @ 81640A2
getplayerxy VAR_0x8004, VAR_0x8005
- specialvar VAR_RESULT, player_get_direction_lower_nybble
+ specialvar VAR_RESULT, GetPlayerFacingDirection
compare_var_to_value VAR_RESULT, 2
call_if 1, EventScript_16412E
msgbox gUnknown_817B7AE
diff --git a/data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc b/data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc
index a2ee86113..d9bcea13d 100644
--- a/data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc
+++ b/data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc
@@ -17,7 +17,7 @@ EventScript_16D2C8:: @ 816D2C8
closemessage
applymovement 255, Movement_16D367
waitmovement 0
- special sub_80A0EEC
+ special ExitSafariMode
setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0
releaseall
end
@@ -29,7 +29,7 @@ EventScript_16D2F2:: @ 816D2F2
closemessage
applymovement 255, Movement_16D362
waitmovement 0
- special sub_80A0EEC
+ special ExitSafariMode
setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0
releaseall
end
@@ -44,7 +44,7 @@ EventScript_16D312:: @ 816D312
closemessage
applymovement 255, Movement_16D362
waitmovement 0
- special sub_80A0EEC
+ special ExitSafariMode
setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0
releaseall
end
@@ -132,7 +132,7 @@ EventScript_16D3CA:: @ 816D3CA
call_if 1, EventScript_16D441
compare_var_to_value VAR_0x4002, 2
call_if 1, EventScript_16D457
- special sub_80A0EC4
+ special EnterSafariMode
setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 2
warp MAP_SAFARI_ZONE_CENTER, 255, 26, 30
waitstate
diff --git a/data/maps/NavelRock_Base/scripts.inc b/data/maps/NavelRock_Base/scripts.inc
index 34cca4e9b..8818c1d01 100644
--- a/data/maps/NavelRock_Base/scripts.inc
+++ b/data/maps/NavelRock_Base/scripts.inc
@@ -63,7 +63,7 @@ NavelRock_Base_EventScript_165134:: @ 8165134
setvar VAR_0x8004, SPECIES_LUGIA
setvar VAR_0x8005, 70
setvar VAR_0x8006, 0
- special sub_8044838
+ special CreateObedientEnemyMon
setflag FLAG_0x807
special sub_807F9D8
waitstate
diff --git a/data/maps/NavelRock_Summit/scripts.inc b/data/maps/NavelRock_Summit/scripts.inc
index cb82149e8..d359d4d25 100644
--- a/data/maps/NavelRock_Summit/scripts.inc
+++ b/data/maps/NavelRock_Summit/scripts.inc
@@ -67,7 +67,7 @@ NavelRock_Summit_EventScript_164FFB:: @ 8164FFB
setvar VAR_0x8004, SPECIES_HO_OH
setvar VAR_0x8005, 70
setvar VAR_0x8006, 0
- special sub_8044838
+ special CreateObedientEnemyMon
setflag FLAG_0x807
special sub_807F9D8
waitstate
diff --git a/data/maps/Route25_SeaCottage/scripts.inc b/data/maps/Route25_SeaCottage/scripts.inc
index 5707c9938..cbcdba4e9 100644
--- a/data/maps/Route25_SeaCottage/scripts.inc
+++ b/data/maps/Route25_SeaCottage/scripts.inc
@@ -118,7 +118,7 @@ EventScript_17064A:: @ 817064A
setflag FLAG_0x235
setflag FLAG_0x031
setflag FLAG_0x234
- setflag FLAG_0x834
+ setflag FLAG_SYS_NOT_SOMEONES_PC
goto EventScript_170640
end
diff --git a/data/maps/SSAnne_Exterior/scripts.inc b/data/maps/SSAnne_Exterior/scripts.inc
index 0d08a0152..b0112c459 100644
--- a/data/maps/SSAnne_Exterior/scripts.inc
+++ b/data/maps/SSAnne_Exterior/scripts.inc
@@ -20,13 +20,13 @@ SSAnne_Exterior_160859:: @ 8160859
call_if 4, EventScript_1608AC
fadenewbgm BGM_FRLG_SURF
delay 50
- special sub_815D334
+ special Special_SSAnneDepartureCutscene
waitstate
removeobject 1
applymovement 255, Movement_1608B7
waitmovement 0
setvar VAR_MAP_SCENE_VERMILION_CITY, 2
- setvar VAR_0x4053, 0
+ setvar VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER, 0
warp MAP_VERMILION_CITY, 255, 23, 34
waitstate
releaseall
diff --git a/data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc b/data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc
index 0b6b930c7..5acb601dc 100644
--- a/data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc
+++ b/data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc
@@ -223,7 +223,7 @@ SevenIsland_TrainerTower_Lobby_EventScript_164AD8:: @ 8164AD8
lockall
fadescreen 1
setvar VAR_0x8004, 1
- special sub_80CD228
+ special Special_BattleRecords
waitstate
releaseall
end
diff --git a/data/maps/VermilionCity/map.json b/data/maps/VermilionCity/map.json
index 30efc81c4..d041e9157 100644
--- a/data/maps/VermilionCity/map.json
+++ b/data/maps/VermilionCity/map.json
@@ -207,7 +207,7 @@
"x": 22,
"y": 33,
"elevation": 0,
- "var": "VAR_0x4053",
+ "var": "VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER",
"var_value": 0,
"script": "VermilionCity_EventScript_166B8A"
},
@@ -216,7 +216,7 @@
"x": 23,
"y": 33,
"elevation": 0,
- "var": "VAR_0x4053",
+ "var": "VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER",
"var_value": 0,
"script": "VermilionCity_EventScript_166B91"
},
diff --git a/data/maps/VermilionCity/scripts.inc b/data/maps/VermilionCity/scripts.inc
index 1f476abf3..c809fd7bd 100644
--- a/data/maps/VermilionCity/scripts.inc
+++ b/data/maps/VermilionCity/scripts.inc
@@ -200,7 +200,7 @@ VermilionCity_EventScript_166B91:: @ 8166B91
VermilionCity_EventScript_166B98:: @ 8166B98
lockall
- setvar VAR_0x4053, 0
+ setvar VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER, 0
releaseall
end
@@ -215,7 +215,7 @@ EventScript_166BA0:: @ 8166BA0
checkflag FLAG_0x234
goto_if 0, EventScript_166BDE
msgbox gUnknown_817FA77
- setvar VAR_0x4053, 1
+ setvar VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER, 1
releaseall
end
diff --git a/data/menu_indicators.s b/data/menu_indicators.s
deleted file mode 100644
index dd8911c7d..000000000
--- a/data/menu_indicators.s
+++ /dev/null
@@ -1,46 +0,0 @@
- .section .rodata
- .align 2
-gUnknown_846325C:: @ 846325C
- .incbin "baserom.gba", 0x46325C, 0x48
-
-gUnknown_84632A4:: @ 84632A4
- .incbin "baserom.gba", 0x4632A4, 0x18
-
-gUnknown_84632BC:: @ 84632BC
- .incbin "baserom.gba", 0x4632BC, 0x4
-
-gUnknown_84632C0:: @ 84632C0
- .incbin "baserom.gba", 0x4632C0, 0x4
-
-gUnknown_84632C4:: @ 84632C4
- .incbin "baserom.gba", 0x4632C4, 0x4
-
-gUnknown_84632C8:: @ 84632C8
- .incbin "baserom.gba", 0x4632C8, 0x4
-
-gUnknown_84632CC:: @ 84632CC
- .incbin "baserom.gba", 0x4632CC, 0x4
-
-gUnknown_84632D0:: @ 84632D0
- .incbin "baserom.gba", 0x4632D0, 0x4
-
-gUnknown_84632D4:: @ 84632D4
- .incbin "baserom.gba", 0x4632D4, 0x4
-
-gUnknown_84632D8:: @ 84632D8
- .incbin "baserom.gba", 0x4632D8, 0x18
-
-gUnknown_84632F0:: @ 84632F0
- .incbin "baserom.gba", 0x4632F0, 0x18
-
-gUnknown_8463308:: @ 8463308
- .incbin "baserom.gba", 0x463308, 0x20
-
-gUnknown_8463328:: @ 8463328
- .incbin "baserom.gba", 0x463328, 0x70
-
-gUnknown_8463398:: @ 8463398
- .incbin "baserom.gba", 0x463398, 0x40
-
-gUnknown_84633D8:: @ 84633D8
- .incbin "baserom.gba", 0x4633D8, 0x44
diff --git a/data/palette.s b/data/palette.s
index 67a6fcb0c..fc479bbd6 100644
--- a/data/palette.s
+++ b/data/palette.s
@@ -1,7 +1,18 @@
.section .rodata
.align 2
gUnknown_83AC960:: @ 83AC960
- .incbin "baserom.gba", 0x3AC960, 0x10
+ .2byte 0xFFFF
+ .align 2
+ .4byte 0
+ .2byte 0
+ .byte 0, 0x20, 0
+ .align 2
gUnknown_83AC970:: @ 83AC970
- .incbin "baserom.gba", 0x3AC970, 0x20
+ .byte 0, 0, 0, 0, 0
+ .byte 5, 5, 5, 5, 5
+ .byte 11, 11, 11, 11, 11
+ .byte 16, 16, 16, 16, 16
+ .byte 21, 21, 21, 21, 21
+ .byte 27, 27, 27, 27, 27
+ .byte 31, 31
diff --git a/data/specials.inc b/data/specials.inc
index f40c3d3be..2524a6046 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -139,7 +139,7 @@ gSpecials:: @ 815FD60
def_special nullsub_75
def_special sub_80BDB1C
def_special nullsub_75
- def_special sub_809A540
+ def_special RegisteredItemHandleBikeSwap
def_special CalculatePlayerPartyCount
def_special CountPartyNonEggMons
def_special CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
@@ -162,7 +162,7 @@ gSpecials:: @ 815FD60
def_special sub_80CA758
def_special nullsub_75
def_special nullsub_75
- def_special sub_8055DC4
+ def_special Overworld_PlaySpecialMapMusic
def_special nullsub_75
def_special nullsub_75
def_special nullsub_75
@@ -205,7 +205,7 @@ gSpecials:: @ 815FD60
def_special ScriptHatchMon
def_special EggHatch
def_special sub_8046EAC
- def_special sub_80CD228
+ def_special Special_BattleRecords
def_special IsEnoughForCostInVar0x8005
def_special SubtractMoneyFromVar0x8005
def_special ExecuteWhiteOut
@@ -214,8 +214,8 @@ gSpecials:: @ 815FD60
def_special nullsub_75
def_special nullsub_75
def_special nullsub_75
- def_special sub_80A0EC4
- def_special sub_80A0EEC
+ def_special EnterSafariMode
+ def_special ExitSafariMode
def_special nullsub_75
def_special nullsub_75
def_special nullsub_75
@@ -271,8 +271,8 @@ gSpecials:: @ 815FD60
def_special nullsub_75
def_special nullsub_75
def_special nullsub_75
- def_special sp109_CreatePCMenu
- def_special sub_80CA574
+ def_special ScrSpecial_CreatePCMenu
+ def_special HallOfFamePCBeginFade
def_special sub_80CA618
def_special nullsub_75
def_special nullsub_75
@@ -296,7 +296,7 @@ gSpecials:: @ 815FD60
def_special nullsub_75
def_special sub_80CAAAC
def_special sub_80CAABC
- def_special player_get_direction_lower_nybble
+ def_special GetPlayerFacingDirection
def_special nullsub_75
def_special nullsub_75
def_special nullsub_75
@@ -410,7 +410,7 @@ gSpecials:: @ 815FD60
def_special sub_8127888
def_special sub_80803FC
def_special sub_812B35C
- def_special sub_815D334
+ def_special Special_SSAnneDepartureCutscene
def_special sub_8149A18
def_special sub_806E25C
def_special sub_815D9E8
@@ -420,7 +420,7 @@ gSpecials:: @ 815FD60
def_special sub_812B478
def_special sub_812B484
def_special sub_810B82C
- def_special sub_8099FAC
+ def_special CheckHasAtLeastOneBerry
def_special sub_815F094
def_special sub_815F114
def_special sub_815EEB0
@@ -435,13 +435,13 @@ gSpecials:: @ 815FD60
def_special sub_809D764
def_special sub_809D8C0
def_special sub_8147500
- def_special player_get_direction_lower_nybble
+ def_special GetPlayerFacingDirection
def_special sub_80CCDFC
def_special sub_80CD008
def_special sub_8147594
def_special sub_80CD034
def_special sub_815D834
- def_special sub_8088F84
+ def_special HasAllKantoMons
def_special sub_80CD074
def_special sub_80CD098
def_special sub_811B15C
@@ -452,5 +452,5 @@ gSpecials:: @ 815FD60
def_special sub_80CB328
def_special sub_80CD154
def_special sub_80CD1B4
- def_special sub_8044838
+ def_special CreateObedientEnemyMon
gSpecialsEnd::
diff --git a/data/strings.s b/data/strings.s
new file mode 100644
index 000000000..e1804aae0
--- /dev/null
+++ b/data/strings.s
@@ -0,0 +1,4149 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+ .align 2
+gExpandedPlaceholder_Empty:: @ 8415A20
+ .string "$"
+
+gExpandedPlaceholder_Kun:: @ 8415A21
+ .string "$"
+
+gExpandedPlaceholder_Chan:: @ 8415A22
+ .string "$"
+
+gUnknown_8415A23:: @ 0x8415A23
+ .string "SAPPHIRE$"
+
+gExpandedPlaceholder_Ruby:: @ 8415A2C
+ .string "RUBY$"
+
+gExpandedPlaceholder_Aqua:: @ 8415A31
+ .string "AQUA$"
+
+gExpandedPlaceholder_Magma:: @ 8415A36
+ .string "MAGMA$"
+
+gExpandedPlaceholder_Archie:: @ 8415A3C
+ .string "ARCHIE$"
+
+gExpandedPlaceholder_Maxie:: @ 8415A43
+ .string "MAXIE$"
+
+gExpandedPlaceholder_Kyogre:: @ 8415A49
+ .string "KYOGRE$"
+
+gExpandedPlaceholder_Groudon:: @ 8415A50
+ .string "GROUDON$"
+
+gExpandedPlaceholder_Red:: @ 8415A58
+ .string "RED$"
+
+gExpandedPlaceholder_Green:: @ 8415A5C
+ .string "GREEN$"
+
+gText_EggNickname:: @ 8415A62
+ .string "EGG$"
+
+gText_Pokemon:: @ 8415A66
+ .string "POKéMON$"
+
+gUnknown_8415A6E:: @ 8415A6E
+ .string "NEW GAME$"
+
+gUnknown_8415A77:: @ 8415A77
+ .string "CONTINUE$"
+
+gUnknown_8415A80:: @ 0x8415A80
+ .string "せっていを かえる$"
+
+gUnknown_8415A8A:: @ 0x8415A8A
+ .string "MYSTERY GIFT$"
+
+gUnknown_8415A97:: @ 8415A97
+ .string "MYSTERY GIFT$"
+
+gUnknown_8415AA4:: @ 8415AA4
+ .string "The Wireless Adapter is not\nconnected.$"
+
+gUnknown_8415ACB:: @ 8415ACB
+ .string "MYSTERY GIFT can't be used while\nthe Wireless Adapter is attached.$"
+
+gUnknown_8415B0E:: @ 0x8415B0E
+ .string "がいぶデ-タにより レポ-トを こうしんします\nしばらく おまちください$"
+
+gUnknown_8415B33:: @ 0x8415B33
+ .string "レポ-トが こうしんされました!$"
+
+gUnknown_8415B44:: @ 0x8415B44
+ .string "レポ-トが こうしんされました!\pこれいじょう\nレポ-トが かききれないので\lバックアップカ-トリッジを\lこうかんしてください!\pくわしくは\nにんてんどう サ-ビスセンタ- まで\lおといあわせ ください$"
+
+gUnknown_8415BAA:: @ 0x8415BAA
+ .string "レポ-トの こうしんは\nしっぱいしました!\pバックアップカ-トリッジを\nこうかんしてください!\pくわしくは\nにんてんどう サ-ビスセンタ- まで\lおといあわせ ください$"
+
+gUnknown_8415BFF:: @ 8415BFF
+ .string "The save file is corrupted.\pThe previous save file will be\nloaded.$"
+
+gUnknown_8415C42:: @ 8415C42
+ .string "The save file has been\ndeleted...$"
+
+gUnknown_8415C64:: @ 8415C64
+ .string "The 1M sub-circuit board is\nnot installed.$"
+
+gUnknown_8415C8F:: @ 0x8415C8F
+ .string "でんちぎれの ために\nとけいが うごかなくなりました\pとけいに かんけいする できごとは おきませんが\nゲ-ムを つづけて あそぶことは できます$"
+
+gUnknown_8415CD9:: @ 0x8415CD9
+ .string "しゅじんこう$"
+
+gUnknown_8415CE0:: @ 0x8415CE0
+ .string "ポケモンずかん$"
+
+gUnknown_8415CE8:: @ 8415CE8
+ .string "TIME$"
+
+gUnknown_8415CED:: @ 0x8415CED
+ .string "もっているバッジ$"
+
+gUnknown_8415CF6:: @ 0x8415CF6
+ .string "Aボタン$"
+
+gUnknown_8415CFB:: @ 0x8415CFB
+ .string "Bボタン$"
+
+gUnknown_8415D00:: @ 0x8415D00
+ .string "Rボタン$"
+
+gUnknown_8415D05:: @ 0x8415D05
+ .string "Lボタン$"
+
+gUnknown_8415D0A:: @ 0x8415D0A
+ .string "スタ-トボタン$"
+
+gUnknown_8415D12:: @ 0x8415D12
+ .string "セレクトボタン$"
+
+gUnknown_8415D1A:: @ 0x8415D1A
+ .string "じゅうじボタン$"
+
+gUnknown_8415D22:: @ 0x8415D22
+ .string "Lボタン Rボタン$"
+
+gText_Controls:: @ 8415D2C
+ .string "CONTROLS$"
+
+ .align 2
+gUnknown_8415D38:: @ 8415D2C
+ .string "{KEYGFX_DPAD_UP_DOWN}えらぶ {KEYGFX_A_BUTTON}けってい$"
+
+ .align 2
+gText_ABUTTONNext:: @ 8415D48
+ .string "{KEYGFX_A_BUTTON}NEXT$"
+
+ .align 2
+gText_ABUTTONNext_BBUTTONBack:: @ 8415D50
+ .string "{KEYGFX_A_BUTTON}NEXT {KEYGFX_B_BUTTON}BACK$"
+
+ .align 2
+gText_UPDOWNPick_ABUTTONNext_BBUTTONBack:: @ 8415D60
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}NEXT {KEYGFX_B_BUTTON}CANCEL$"
+
+ .align 2
+gText_UPDOWNPick_ABUTTONBBUTTONCancel:: @ 8415D78
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}{KEYGFX_B_BUTTON}CANCEL$"
+
+ .align 2
+gText_ABUTTONExit:: @ 8415D8C
+ .string "{KEYGFX_A_BUTTON}EXIT$"
+
+gText_Boy:: @ 8415D93
+ .string "BOY$"
+
+gText_Girl:: @ 8415D97
+ .string "GIRL$"
+
+gUnknown_8415D9C:: @ 8415D9C
+ .string "POKéDEX TABLE OF CONTENTS$"
+
+gUnknown_8415DB8:: @ 8415DB8
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK$"
+
+gUnknown_8415DC4:: @ 8415DC4
+ .string "Seen:$"
+
+gUnknown_8415DCA:: @ 8415DCA
+ .string "Owned:$"
+
+gUnknown_8415DD1:: @ 8415DD1
+ .string "KANTO$"
+
+gUnknown_8415DD7:: @ 8415DD7
+ .string "NATIONAL$"
+
+gUnknown_8415DE0:: @ 0x8415DE0
+ .string "{COLOR WHITE2}{SHADOW LIGHT_BLUE}POKéMON HABITATS$"
+
+gUnknown_8415DF7:: @ 0x8415DF7
+ .string "Grassland POKéMON$"
+
+gUnknown_8415E09:: @ 0x8415E09
+ .string "Forest POKéMON$"
+
+gUnknown_8415E18:: @ 0x8415E18
+ .string "Water's-edge POKéMON$"
+
+gUnknown_8415E2D:: @ 0x8415E2D
+ .string "Sea POKéMON$"
+
+gUnknown_8415E39:: @ 0x8415E39
+ .string "Cave POKéMON$"
+
+gUnknown_8415E46:: @ 0x8415E46
+ .string "Mountain POKéMON$"
+
+gUnknown_8415E57:: @ 0x8415E57
+ .string "Rough-terrain POKéMON$"
+
+gUnknown_8415E6D:: @ 0x8415E6D
+ .string "Urban POKéMON$"
+
+gUnknown_8415E7B:: @ 0x8415E7B
+ .string "Rare POKéMON$"
+
+gUnknown_8415E88:: @ 0x8415E88
+ .string "{COLOR WHITE2}{SHADOW LIGHT_BLUE}SEARCH$"
+
+gUnknown_8415E95:: @ 0x8415E95
+ .string "NUMERICAL MODE$"
+
+gUnknown_8415EA4:: @ 0x8415EA4
+ .string "A TO Z MODE$"
+
+gUnknown_8415EB0:: @ 0x8415EB0
+ .string "{COLOR WHITE2}{SHADOW LIGHT_BLUE}OTHER$"
+
+gUnknown_8415EBC:: @ 0x8415EBC
+ .string "ずかんの つかいかた$"
+
+gUnknown_8415EC7:: @ 0x8415EC7
+ .string "CLOSE POKéDEX$"
+
+gUnknown_8415ED5:: @ 0x8415ED5
+ .string "TYPE MODE$"
+
+gUnknown_8415EDF:: @ 0x8415EDF
+ .string "LIGHTEST MODE$"
+
+gUnknown_8415EED:: @ 0x8415EED
+ .string "SMALLEST MODE$"
+
+gUnknown_8415EFB:: @ 0x8415EFB
+ .string "{COLOR WHITE2}{SHADOW LIGHT_BLUE}POKéMON LIST$"
+
+gUnknown_8415F0E:: @ 0x8415F0E
+ .string "NUMERICAL MODE: KANTO$"
+
+gUnknown_8415F24:: @ 0x8415F24
+ .string "NUMERICAL MODE: NATIONAL$"
+
+gUnknown_8415F3D:: @ 8415F3D
+ .string "POKéMON LIST$"
+
+gUnknown_8415F4A:: @ 8415F4A
+ .string "SEARCH$"
+
+gText_PickOKExit:: @ 8415F51
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}CANCEL$"
+
+gUnknown_8415F66:: @ 8415F66
+ .string "-----$"
+
+gUnknown_8415F6C:: @ 8415F6C
+ .string "{KEYGFX_DPAD_LEFT_RIGHT}PICK{EXTRA_PLUS}FLIP PAGE {KEYGFX_A_BUTTON}CHECK {KEYGFX_B_BUTTON}CANCEL$"
+
+gUnknown_8415F8F:: @ 8415F8F
+ .string " POKéMON$"
+
+gUnknown_8415F98:: @ 8415F98
+ .string "HT$"
+
+gUnknown_8415F9B:: @ 8415F9B
+ .string "WT$"
+
+gUnknown_8415F9E:: @ 0x8415F9E
+ .string "”$"
+
+gUnknown_8415FA0:: @ 8415FA0
+ .string "lbs.$"
+
+gUnknown_8415FA5:: @ 0x8415FA5
+ .string "ポケモンデ-タ$"
+
+gUnknown_8415FAD:: @ 8415FAD
+ .string "{KEYGFX_START_BUTTON}CRY$"
+
+gUnknown_8415FB3:: @ 8415FB3
+ .string "{KEYGFX_A_BUTTON}NEXT DATA {KEYGFX_B_BUTTON}CANCEL$"
+
+gUnknown_8415FC8:: @ 8415FC8
+ .string "{KEYGFX_A_BUTTON}NEXT$"
+
+gUnknown_8415FCF:: @ 8415FCF
+ .string "{KEYGFX_A_BUTTON}CANCEL {KEYGFX_B_BUTTON}PREVIOUS DATA$"
+
+gUnknown_8415FE8:: @ 8415FE8
+ .string "AREA$"
+
+gUnknown_8415FED:: @ 8415FED
+ .string "SIZE$"
+
+gUnknown_8415FF2:: @ 8415FF2
+ .string "AREA UNKNOWN$"
+
+gUnknown_8415FFF:: @ 8415FFF
+ .string "{EXTRA_NO}$"
+
+gUnknown_8416002:: @ 8416002
+ .string "PAGE$"
+
+ .align 2
+gUnknown_8416008:: @ 8416008
+ .string "Welcome to the HALL OF FAME!$"
+
+gUnknown_8416025:: @ 0x8416025
+ .string " みつけた ポケモン {STR_VAR_1}!\nつかまえた ポケモン {STR_VAR_2}!\pオダマキはかせの\nポケモンずかん ひょうか!\pオダマキ“どれどれ\p$"
+
+gUnknown_8416067:: @ 0x8416067
+ .string " ここまでの レポ-トを かきしるしています!\nでんげんを きらないでください$"
+
+ .align 2
+gUnknown_8416090:: @ 8416090
+ .string "The HALL OF FAME data is\ncorrupted.$"
+
+gUnknown_84160B4:: @ 84160B4
+ .string "HALL OF FAME No. {STR_VAR_1}$"
+
+gUnknown_84160C8:: @ 84160C8
+ .string "LEAGUE CHAMPION!\nCONGRATULATIONS!$"
+
+ .align 2
+gUnknown_84160EC:: @ 84160EC
+ .string "No. $"
+
+ .align 2
+gUnknown_84160F4:: @ 84160F4
+ .string "Lv. $"
+
+ .align 2
+gUnknown_84160FC:: @ 84160FC
+ .string "NAME$"
+
+ .align 2
+gUnknown_8416104:: @ 8416104
+ .string "IDNo.$"
+
+gUnknown_841610A:: @ 0x841610A
+ .string "{HIGHLIGHT WHITE2}{COLOR DARK_GREY}オダマキはかせが ピンチだ!\nポケモンを だして たすけてあげよう!$"
+
+gUnknown_8416133:: @ 0x8416133
+ .string "{HIGHLIGHT WHITE2}{COLOR DARK_GREY}このポケモンにしますか?$"
+
+gUnknown_8416146:: @ 0x8416146
+ .string "ポケモン$"
+
+gUnknown_841614B:: @ 841614B
+ .string "Save error.\pPlease exchange the\nbackup memory.$"
+
+gUnknown_841617A:: @ 841617A
+ .string "PLAYER$"
+
+gUnknown_8416181:: @ 8416181
+ .string "BADGES$"
+
+gUnknown_8416188:: @ 8416188
+ .string "POKéDEX$"
+
+gUnknown_8416190:: @ 8416190
+ .string "TIME$"
+
+gUnknown_8416195::
+ .string "どこへ とびますか?$"
+
+gOtherText_Use::
+ .string "USE$"
+
+gUnknown_84161A4::
+ .string "TOSS$"
+
+gUnknown_84161A9::
+ .string "REGISTER$"
+
+gOtherText_Give::
+ .string "GIVE$"
+
+gUnknown_84161B7::
+ .string "けってい$"
+
+gUnknown_84161BC::
+ .string "WALK$"
+
+gFameCheckerText_Cancel:: @ 84161C1
+ .string "CANCEL$"
+
+gOtherText_Exit:: @ 84161C8
+ .string "EXIT$"
+
+gUnknown_84161CD:: @ 84161CD
+ .string "$"
+
+gUnknown_84161CE::
+ .string "キャンセル$"
+
+gUnknown_84161D4::
+ .string "ITEM$"
+
+gUnknown_84161D9::
+ .string "MAIL$"
+
+gUnknown_84161DE::
+ .string "TAKE$"
+
+gUnknown_84161E3::
+ .string "STORE$"
+
+gUnknown_84161E9::
+ .string "CHECK$"
+
+gUnknown_84161EF:: @ 84161EF
+ .string "NONE$"
+
+gUnknown_84161F4::
+ .string "OPEN$"
+
+gUnknown_84161F9::
+ .string "DESELECT$"
+
+gUnknown_8416202:: @ 8416202
+ .string "???$"
+
+gUnknown_8416206::
+ .string "?????$"
+
+gUnknown_841620C:: @ 841620C
+ .string "/$"
+
+gUnknown_841620E:: @ 841620E
+ .string "-$"
+
+gUnknown_8416210:: @ 8416210
+ .string "--$"
+
+gText_ThreeHyphens:: @ 8416213
+ .string "---$"
+
+gUnknown_8416217:: @ 8416217
+ .string "-------$"
+
+gUnknown_841621F:: @ 841621F
+ .string "♂$"
+
+gUnknown_8416221:: @ 8416221
+ .string "♀$"
+
+gText_Lv:: @ 8416223
+ .string "{EXTRA_LV}$"
+
+gOtherText_UnkF9_08_Clear_01:: @ 8416226
+ .string "{EXTRA_NO}{CLEAR 0x01}$"
+
+gUnknown_841622C::
+ .string "{EXTRA_PLUS}$"
+
+gUnknown_841622F::
+ .string "{ESCAPE 0x03}$"
+
+gUnknown_8416233::
+ .string "{EXTRA_ID}{EXTRA_NO}$"
+
+gUnknown_8416238:: @ 8416238
+ .string "{EXTRA_PP}$"
+
+gFameCheckerText_ListMenuCursor:: @ 841623B
+ .string "▶$"
+
+gUnknown_841623D:: @ 841623D
+ .string "YES\n"
+ .string "NO$"
+
+gUnknown_8416244::
+ .string "Go back to the\n"
+ .string "previous menu.$"
+
+gUnknown_8416262:: @ 8416262
+ .string "What would you like to do?$"
+
+gUnknown_841627D::
+ .string "POKéDEX$"
+
+gUnknown_8416285:: @ 8416285
+ .string "BAG$"
+
+gUnknown_8416289::
+ .string "ポケナビ$"
+
+gUnknown_841628E::
+ .string "{PLAYER}$"
+
+gUnknown_8416291::
+ .string "SAVE$"
+
+gUnknown_8416296::
+ .string "OPTION$"
+
+gUnknown_841629D::
+ .string "EXIT$"
+
+gUnknown_84162A2::
+ .string "RETIRE$"
+
+gUnknown_84162A9:: @ 84162A9
+ .string "{STR_VAR_1}/{STR_VAR_2}\n"
+ .string "BALLS {STR_VAR_3}$"
+
+gText_TimesStrVar1:: @ 84162B9
+ .string "×{STR_VAR_1}$"
+
+gUnknown_84162BD:: @ 84162BD
+ .string " BERRY$"
+
+gText_Coins:: @ 84162C4
+ .string "{STR_VAR_1} COINS$"
+
+gUnknown_84162CD:: @ 0x84162CD
+ .string "ITEMS$"
+
+gUnknown_84162D3:: @ 0x84162D3
+ .string "POKé BALLS$"
+
+gUnknown_84162DE:: @ 0x84162DE
+ .string "KEY ITEMS$"
+
+gText_DepositItem:: @ 84162E8
+ .string "DEPOSIT ITEM$"
+
+gUnknown_84162F5:: @ 84162F5
+ .string "CLOSE BAG$"
+
+gOtherText_StrVar1:: @ 84162FF
+ .string "{STR_VAR_1}"
+
+gText_IsSelected:: @ 8416301
+ .string " is\n"
+ .string "selected.$"
+
+gUnknown_841630F:: @ 841630F
+ .string "You can't write\nMAIL here.$"
+
+gText_ThereIsNoPokemon:: @ 841632A
+ .string "There is no\n"
+ .string "POKéMON.$"
+
+gOtherText_WhereShouldTheStrVar1BePlaced:: @ 841633F
+ .string "Where should the {STR_VAR_1}\n"
+ .string "be placed?$"
+
+gText_ItemCantBeHeld:: @ 841635E
+ .string "The {STR_VAR_1} can't be held.$"
+
+gUnknown_8416374:: @ 8416374
+ .string "The {STR_VAR_1} can't be held\nhere.$"
+
+gUnknown_841638F:: @ 841638F
+ .string "Deposit how many\n{STR_VAR_1}シsス?$"
+
+gUnknown_84163A7:: @ 84163A7
+ .string "Deposited {STR_VAR_2}\n{STR_VAR_1}シsス.$"
+
+gUnknown_84163BB:: @ 84163BB
+ .string "There's no room to\nstore items.$"
+
+gUnknown_84163DB:: @ 84163DB
+ .string "Toss out how many\n{STR_VAR_1}シsス?$"
+
+gUnknown_84163F4:: @ 84163F4
+ .string "Threw away {STR_VAR_2}\n{STR_VAR_1}シsス.$"
+
+gUnknown_8416409:: @ 8416409
+ .string "Throw away {STR_VAR_2} of\nthis item?$"
+
+gUnknown_8416425:: @ 8416425
+ .string "OAK: {PLAYER}!\nThis isn't the time to use that!{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416451:: @ 8416451
+ .string "You can't dismount your BIKE here.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416476:: @ 8416476
+ .string "Huh?\nThe ITEMFINDER's responding!\pThere's an item buried around here!{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_84164BE:: @ 84164BE
+ .string "Oh!\nThe ITEMFINDER's shaking wildly!\pThere's an item buried underfoot!\p‥ ‥ ‥ ‥ ‥ ‥{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416513:: @ 8416513
+ .string "‥ ‥ ‥ ‥Nope!\nThere's no response.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416537:: @ 8416537
+ .string "Your COINS:\n{STR_VAR_1}{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416548:: @ 0x8416548
+ .string "わざマシンを きどうした!$"
+
+gUnknown_8416556:: @ 0x8416556
+ .string "ひでんマシンを きどうした!$"
+
+gUnknown_8416565:: @ 0x8416565
+ .string "なかには {STR_VAR_1}が\nきろくされていた!\p{STR_VAR_1}を\nポケモンに おぼえさせますか?$"
+
+gUnknown_841658C:: @ 841658C
+ .string "{PLAYER} used the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_841659E:: @ 841659E
+ .string "But the effects of a REPEL\nlingered from earlier.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_84165D2:: @ 84165D2
+ .string "{PLAYER} used the\n{STR_VAR_2}.\pWild POKéMON will be lured.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416600:: @ 8416600
+ .string "{PLAYER} used the\n{STR_VAR_2}.\pWild POKéMON will be repelled.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416631:: @ 8416631
+ .string "The BOX is full.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416644:: @ 8416644
+ .string "POWDER QTY: {STR_VAR_1}{PAUSE_UNTIL_PRESS}$"
+
+gOtherText_Powder:: @ 8416655
+ .string "POWDER$"
+
+gUnknown_841665C:: @ 841665C
+ .string "Played the POKé FLUTE.\p"
+ .string "Now, that's a catchy tune!{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416690:: @ 8416690
+ .string "Played the POKé FLUTE.$"
+
+gUnknown_84166A7:: @ 84166A7
+ .string "The POKé FLUTE awakened sleeping\n"
+ .string "POKéMON.{PAUSE_UNTIL_PRESS}$"
+
+gText_TMCase:: @ 84166D3
+ .string "TM CASE$"
+
+gText_Close:: @ 84166DB
+ .string "CLOSE$"
+
+gText_TMCaseWillBePutAway:: @ 84166E1
+ .string "The TM CASE will be\n"
+ .string "put away.$"
+
+gText_FontSize0:: @ 84166FF
+ .string "{SIZE 0}$"
+
+gText_FontSize2:: @ 8416703
+ .string "{SIZE 2}$"
+
+gUnknown_8416707:: @ 8416707
+ .string " $"
+
+gUnknown_841670A:: @ 841670A
+ .string "BERRY POUCH$"
+
+gUnknown_8416716:: @ 8416716
+ .string "The BERRY POUCH will be\nput away.$"
+
+gUnknown_8416738:: @ 0x8416738
+ .string "BUY$"
+
+gUnknown_841673C:: @ 0x841673C
+ .string "SELL$"
+
+gUnknown_8416741:: @ 0x8416741
+ .string "SEE YA!$"
+
+gUnknown_8416749:: @ 8416749
+ .string "IN BAG:{SMALL} {STR_VAR_1}$"
+
+gUnknown_8416757:: @ 8416757
+ .string "Quit shopping.$"
+
+gUnknown_8416766:: @ 8416766
+ .string "{STR_VAR_1}? Certainly.\nHow many would you like?$"
+
+gUnknown_841678E:: @ 841678E
+ .string "{STR_VAR_1}, and you want {STR_VAR_2}.\nThat will be ¥{STR_VAR_3}. Okay?$"
+
+gUnknown_84167BB:: @ 0x84167BB
+ .string "{STR_VAR_1} だね!\n{STR_VAR_2}¥ だけど かうかい?$"
+
+gUnknown_84167D0:: @ 0x84167D0
+ .string "{STR_VAR_1} ですね!\n{STR_VAR_2}¥ だけど かいますか?$"
+
+gUnknown_84167E7:: @ 84167E7
+ .string "Here you are!\nThank you!$"
+
+gUnknown_8416800:: @ 0x8416800
+ .string "どうも ありがとう!\nじたくの パソコンに おくって おきますね!$"
+
+gUnknown_8416822:: @ 0x8416822
+ .string "どうも ありがとう!\nじたくの パソコンに おくって おくね!$"
+
+gUnknown_8416842:: @ 8416842
+ .string "You don't have enough money.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416861:: @ 8416861
+ .string "You have no more room for this\nitem.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416888:: @ 0x8416888
+ .string "{STR_VAR_1}を\nいれる ばしょが いっぱいです{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_841689E:: @ 841689E
+ .string "Is there anything else I can do?$"
+
+gUnknown_84168BF:: @ 0x84168BF
+ .string "その ほかに\nなにか ちからに なれることは?$"
+
+gUnknown_84168D7:: @ 0x84168D7
+ .string "プレミアボ-ル 1コ\nおまけ しておきますね!{PAUSE_UNTIL_PRESS}$"
+
+gText_OhNoICantBuyThat:: @ 84168F1
+ .string "{STR_VAR_1}? Oh, no.\n"
+ .string "I can't buy that.{PAUSE_UNTIL_PRESS}$"
+
+gText_HowManyWouldYouLikeToSell:: @ 8416911
+ .string "{STR_VAR_1}?\n"
+ .string "How many would you like to sell?$"
+
+gText_ICanPayThisMuch_WouldThatBeOkay:: @ 8416936
+ .string "I can pay ¥{STR_VAR_3}.\n"
+ .string "Would that be okay?$"
+
+gText_TurnedOverItemsWorthYen:: @ 8416959
+ .string "Turned over the {STR_VAR_1}シSス\nworth ¥{STR_VAR_3}.$"
+
+gText_PokedollarVar1:: @ 841697A
+ .string "¥{STR_VAR_1}$"
+
+gUnknown_841697E:: @ 0x841697E
+ .string "SHIFT$"
+
+gUnknown_8416984:: @ 0x8416984
+ .string "SEND OUT$"
+
+gUnknown_841698D:: @ 0x841698D
+ .string "SWITCH$"
+
+gUnknown_8416994:: @ 0x8416994
+ .string "SUMMARY$"
+
+gUnknown_841699C:: @ 0x841699C
+ .string "つかえるわざ$"
+
+gUnknown_84169A3:: @ 0x84169A3
+ .string "ENTER$"
+
+gUnknown_84169A9:: @ 0x84169A9
+ .string "NO ENTRY$"
+
+gUnknown_84169B2:: @ 0x84169B2
+ .string "TAKE$"
+
+gUnknown_84169B7:: @ 0x84169B7
+ .string "READ$"
+
+gUnknown_84169BC:: @ 0x84169BC
+ .string "TRADE$"
+
+gUnknown_84169C2:: @ 84169C2
+ .string "HP$"
+
+gUnknown_84169C5:: @ 84169C5
+ .string "SP. ATK$"
+
+gUnknown_84169CD:: @ 84169CD
+ .string "SP. DEF$"
+
+gUnknown_84169D5:: @ 84169D5
+ .string "OK$"
+
+gUnknown_84169D8:: @ 0x84169D8
+ .string "$"
+
+gUnknown_84169D9:: @ 84169D9
+ .string "{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_84169DC:: @ 84169DC
+ .string "It won't have any effect.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_84169F8:: @ 84169F8
+ .string "This can't be used on\n"
+ .string "that POKéMON.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416A1E:: @ 8416A1E
+ .string "{STR_VAR_1} can't be switched\nout!{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416A3A:: @ 8416A3A
+ .string "{STR_VAR_1} is already\nin battle!{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416A55:: @ 8416A55
+ .string "{STR_VAR_1} has already been\nselected.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416A75:: @ 8416A75
+ .string "{STR_VAR_1} has no energy\nleft to battle!{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416A98:: @ 8416A98
+ .string "You can't switch {STR_VAR_1}'s\nPOKéMON with one of yours!{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416ACB:: @ 8416ACB
+ .string "An EGG can't battle!{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416AE2:: @ 8416AE2
+ .string "This can't be used until a new\nBADGE is obtained.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416B16:: @ 8416B16
+ .string "No more than three POKéMON\nmay enter.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416B3E:: @ 8416B3E
+ .string "No more than two POKéMON\nmay enter.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416B64:: @ 8416B64
+ .string "Send the removed MAIL to\nyour PC?$"
+
+gUnknown_8416B86:: @ 8416B86
+ .string "The MAIL was sent to your PC.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416BA6:: @ 8416BA6
+ .string "Your PC's MAILBOX is full.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416BC3:: @ 8416BC3
+ .string "If the MAIL is removed, the\nmessage will be lost. Okay?$"
+
+gUnknown_8416BFB:: @ 8416BFB
+ .string "MAIL must be removed before\nholding an item.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416C2A:: @ 8416C2A
+ .string "{STR_VAR_1} was given the\n{STR_VAR_2} to hold.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416C49:: @ 8416C49
+ .string "{STR_VAR_1} is already holding\none {STR_VAR_2}.\pWould you like to switch the\ntwo items?$"
+
+gUnknown_8416C8F:: @ 8416C8F
+ .string "{STR_VAR_1} isn't holding\nanything.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416CAC:: @ 8416CAC
+ .string "Received the {STR_VAR_2}\nfrom {STR_VAR_1}.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416CC7:: @ 8416CC7
+ .string "MAIL was taken from the\nPOKéMON.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416CEA:: @ 8416CEA
+ .string "The {STR_VAR_2} was taken and\nreplaced with the {STR_VAR_1}.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416D17:: @ 8416D17
+ .string "This POKéMON is holding an\nitem. It cannot hold MAIL.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416D4F:: @ 8416D4F
+ .string "MAIL was transferred from\nthe MAILBOX.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416D78:: @ 8416D78
+ .string "The {STR_VAR_1} is full. The POKéMON's\nitem could not be removed.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416DB3:: @ 8416DB3
+ .string "{STR_VAR_1} learned\n{STR_VAR_2}!$"
+
+gUnknown_8416DC2:: @ 8416DC2
+ .string "{STR_VAR_1} and {STR_VAR_2}\nare not compatible.\p{STR_VAR_2} can't be\nlearned.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416DF7:: @ 8416DF7
+ .string "{STR_VAR_1} wants to learn the\nmove {STR_VAR_2}.\pHowever, {STR_VAR_1} already\nknows four moves.\pShould a move be deleted and\nreplaced with {STR_VAR_2}?$"
+
+gUnknown_8416E6B:: @ 8416E6B
+ .string "Stop trying to teach\n{STR_VAR_2}?$"
+
+gUnknown_8416E84:: @ 8416E84
+ .string "{STR_VAR_1} did not learn the\nmove {STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416EA4:: @ 8416EA4
+ .string "Which move should be forgotten?{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416EC6:: @ 8416EC6
+ .string "1, {PAUSE 0x0F}2, and{PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}{PLAY_SE SE_TRACK_MOVE}Poof!\p{STR_VAR_1} forgot how to\nuse {STR_VAR_2}.\pAnd...{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416F10:: @ 8416F10
+ .string "{STR_VAR_1} already knows\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416F27:: @ 8416F27
+ .string "{STR_VAR_1}'s HP was restored\n"
+ .string "by {STR_VAR_2} point(s).{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416F4E:: @ 8416F4E
+ .string "{STR_VAR_1} was cured of its\npoisoning.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416F6F:: @ 8416F6F
+ .string "{STR_VAR_1} was cured of\nparalysis.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416F8C:: @ 8416F8C
+ .string "{STR_VAR_1} woke up.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416F9A:: @ 8416F9A
+ .string "{STR_VAR_1}'s burn was healed.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416FB2:: @ 8416FB2
+ .string "{STR_VAR_1} was thawed out.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416FC7:: @ 8416FC7
+ .string "PP was restored.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416FDA:: @ 0x8416FDA
+ .string "{STR_VAR_1}は\nげんきを とりもどした!{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416FED:: @ 8416FED
+ .string "{STR_VAR_1} became healthy.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8417002:: @ 8417002
+ .string "{STR_VAR_1}'s PP increased.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8417017:: @ 8417017
+ .string "{STR_VAR_1} was elevated to\nLv. {STR_VAR_2}.$"
+
+gUnknown_8417032:: @ 8417032
+ .string "{STR_VAR_1}'s base {STR_VAR_2}\nstat was raised.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8417052:: @ 8417052
+ .string "{STR_VAR_1} snapped out of its\nconfusion.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8417075:: @ 8417075
+ .string "{STR_VAR_1} got over its\ninfatuation.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8417094:: @ 0x8417094
+ .string "That's your only\nPOKéMON for battle.$"
+
+ .align 2
+gUnknown_84170BC:: @ 84170BC
+ .string "That POKéMON can't be traded\nnow.$"
+
+ .align 2
+gUnknown_84170E0:: @ 84170E0
+ .string "An EGG can't be traded now.$"
+
+gUnknown_84170FC:: @ 0x84170FC
+ .string "The other TRAINER's POKéMON\ncan't be traded now.$"
+
+gUnknown_841712D:: @ 0x841712D
+ .string " The other TRAINER can't accept\nthat POKéMON now.$"
+
+gUnknown_8417161:: @ 0x8417161
+ .string " You can't trade with that\nTRAINER now.$"
+
+gUnknown_841718B:: @ 0x841718B
+ .string " That isn't the type of POKéMON\nthat the other TRAINER wants.$"
+
+gUnknown_84171C9:: @ 0x84171C9
+ .string " That isn't an EGG.$"
+
+gUnknown_84171DF:: @ 0x84171DF
+ .string "Choose a POKéMON.$"
+
+gUnknown_84171F1:: @ 0x84171F1
+ .string "Move to where?$"
+
+gUnknown_8417200:: @ 0x8417200
+ .string "Teach which POKéMON?$"
+
+gUnknown_8417215:: @ 0x8417215
+ .string "Use on which POKéMON?$"
+
+gUnknown_841722B:: @ 0x841722B
+ .string "Give to which POKéMON?$"
+
+gUnknown_8417242:: @ 0x8417242
+ .string "Do what with this {PKMN}?$"
+
+gUnknown_8417258:: @ 0x8417258
+ .string "There's nothing to CUT.$"
+
+gUnknown_8417270:: @ 0x8417270
+ .string "No SURFING here!$"
+
+gUnknown_8417281:: @ 0x8417281
+ .string "You're already SURFING.$"
+
+gUnknown_8417299:: @ 0x8417299
+ .string "Can't use that here.$"
+
+gUnknown_84172AE:: @ 0x84172AE
+ .string "Restore which move?$"
+
+gUnknown_84172C2:: @ 0x84172C2
+ .string "Boost PP of which?$"
+
+gUnknown_84172D5:: @ 0x84172D5
+ .string "Do what with an item?$"
+
+gUnknown_84172EB:: @ 0x84172EB
+ .string "No battling this way!$"
+
+gUnknown_8417301:: @ 0x8417301
+ .string "Choose a POKéMON.$"
+
+gUnknown_8417313:: @ 0x8417313
+ .string "Not enough HP‥$"
+
+gUnknown_8417322:: @ 0x8417322
+ .string "Three {PKMN} are needed.$"
+
+gUnknown_8417337:: @ 0x8417337
+ .string "{PKMN} can't be the same.$"
+
+gUnknown_841734D:: @ 0x841734D
+ .string "No same hold items!$"
+
+gUnknown_8417361:: @ 0x8417361
+ .string "The current is much too fast!$"
+
+gUnknown_841737F:: @ 0x841737F
+ .string "Do what with the MAIL?$"
+
+gUnknown_8417396:: @ 0x8417396
+ .string "Choose POKéMON or CANCEL.$"
+
+gUnknown_84173B0:: @ 0x84173B0
+ .string "Choose POKéMON and confirm.$"
+
+gUnknown_84173CC:: @ 0x84173CC
+ .string "Two POKéMON are needed.$"
+
+gUnknown_84173E4:: @ 0x84173E4
+ .string "Let's enjoy cycling!$"
+
+gUnknown_84173F9:: @ 0x84173F9
+ .string "This is in use already.$"
+
+gUnknown_8417411:: @ 0x8417411
+ .string "No use.$"
+
+gUnknown_8417419:: @ 0x8417419
+ .string "ABLE$"
+
+gUnknown_841741E:: @ 0x841741E
+ .string "FIRST$"
+
+gUnknown_8417424:: @ 0x8417424
+ .string "SECOND$"
+
+gUnknown_841742B:: @ 0x841742B
+ .string "THIRD$"
+
+gUnknown_8417431:: @ 0x8417431
+ .string "ABLE$"
+
+gUnknown_8417436:: @ 0x8417436
+ .string "NOT ABLE$"
+
+gUnknown_841743F:: @ 0x841743F
+ .string "ABLE!$"
+
+gUnknown_8417445:: @ 0x8417445
+ .string "NOT ABLE!$"
+
+gUnknown_841744F:: @ 0x841744F
+ .string "LEARNED$"
+
+gUnknown_8417457:: @ 8417457
+ .string "OAK: It's important to get to know\nyour POKéMON thoroughly.\p$"
+
+gUnknown_8417494:: @ 8417494
+ .string "This is a list of your POKéMON,\n{PLAYER}.\pOpen this to check the skills\nand moves of your POKéMON.\pYou also choose POKéMON here if\nyou want to use an item on one.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8417533:: @ 0x8417533
+ .string "Cut a tree or grass.$"
+
+gUnknown_8417548:: @ 0x8417548
+ .string "Fly to a known town.$"
+
+gUnknown_841755D:: @ 0x841755D
+ .string "Travel on water.$"
+
+gUnknown_841756E:: @ 0x841756E
+ .string "Move heavy boulders.$"
+
+gUnknown_8417583:: @ 0x8417583
+ .string "Light up darkness.$"
+
+gUnknown_8417596:: @ 0x8417596
+ .string "Shatter a cracked rock.$"
+
+gUnknown_84175AE:: @ 0x84175AE
+ .string "Climb a waterfall.$"
+
+gUnknown_84175C1:: @ 0x84175C1
+ .string "すいちゅうに もぐる$"
+
+gUnknown_84175CC:: @ 0x84175CC
+ .string "Escape from here.$"
+
+gUnknown_84175DE:: @ 0x84175DE
+ .string "Lure wild POKéMON.$"
+
+gUnknown_84175F1:: @ 0x84175F1
+ .string "Share HP.$"
+
+gUnknown_84175FB:: @ 0x84175FB
+ .string "Return to a healing spot.$"
+
+gUnknown_8417615:: @ 8417615
+ .string "Want to escape from here and return\nto {STR_VAR_1}?$"
+
+gUnknown_8417640:: @ 8417640
+ .string "Want to return to the healing spot\nused last in {STR_VAR_1}?$"
+
+gUnknown_8417674:: @ 8417674
+ .string "ATTACK$"
+
+gUnknown_841767B:: @ 841767B
+ .string "DEFENSE$"
+
+gUnknown_8417683:: @ 0x8417683
+ .string "とくこう$"
+
+gUnknown_8417688:: @ 0x8417688
+ .string "とくぼう$"
+
+gUnknown_841768D:: @ 841768D
+ .string "SPEED$"
+
+gUnknown_8417693:: @ 0x8417693
+ .string "HP$"
+
+gUnknown_8417696:: @ 8417696
+ .string "That POKéMON can't participate.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_84176B8:: @ 84176B8
+ .string "Cancel participation?$"
+
+gUnknown_84176CE:: @ 0x84176CE
+ .string "$"
+
+gUnknown_84176CF:: @ 84176CF
+ .string "Cancel the battle?$"
+
+gUnknown_84176E2:: @ 0x84176E2
+ .string "TURN OFF$"
+
+gUnknown_84176EB:: @ 0x84176EB
+ .string "もようがえ$"
+
+gUnknown_84176F1:: @ 0x84176F1
+ .string "ITEM STORAGE$"
+
+gUnknown_84176FE:: @ 84176FE
+ .string "MAILBOX$"
+
+gUnknown_8417706:: @ 0x8417706
+ .string "DEPOSIT ITEM$"
+
+gUnknown_8417713:: @ 0x8417713
+ .string "WITHDRAW ITEM$"
+
+gUnknown_8417721:: @ 0x8417721
+ .string "どうぐを すてる$"
+
+gUnknown_841772A:: @ 0x841772A
+ .string "Store items in the PC.$"
+
+gUnknown_8417741:: @ 0x8417741
+ .string "Take out items from the PC.$"
+
+gUnknown_841775D:: @ 0x841775D
+ .string "パソコンに あずけている\nどうぐを すてます$"
+
+gUnknown_8417774:: @ 8417774
+ .string "There are no items.{PAUSE_UNTIL_PRESS}$"
+
+gText_NoMoreRoomInBag:: @ 841778A
+ .string "There is no more\n"
+ .string "room in the BAG.$"
+
+gText_WithdrawHowMany:: @ 84177AC
+ .string "Withdraw how many\n"
+ .string "{STR_VAR_1}(s)?$"
+
+gText_WithdrewQuantItem:: @ 84177C5
+ .string "Withdrew {STR_VAR_2}\n"
+ .string "{STR_VAR_1}(s).$"
+
+gOtherText_Read::
+ .string "READ$"
+
+gOtherText_MoveToBag::
+ .string "MOVE TO BAG$"
+
+gOtherText_Give2::
+ .string "GIVE$"
+
+gUnknown_84177EE:: @ 84177EE
+ .string "There's no MAIL here.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8417806:: @ 8417806
+ .string "What would you like to do with\n{STR_VAR_1}'s MAIL?$"
+
+gUnknown_8417830:: @ 8417830
+ .string "The message will be lost.\nIs that okay?$"
+
+gUnknown_8417858:: @ 8417858
+ .string "The BAG is full.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_841786B:: @ 841786B
+ .string "The MAIL was returned to the BAG\nwith its message erased.{PAUSE_UNTIL_PRESS}$"
+
+gText_WithdrawItem:: @ 84178A7
+ .string "WITHDRAW\n"
+ .string "ITEM$"
+
+gText_Withdraw::
+ .string "WITHDRAW$"
+
+gText_ReturnToPC:: @ 84178BE
+ .string "Return to the PC.$"
+
+gUnknown_84178D0:: @ 84178D0
+ .string "LT. SURGE$"
+
+gUnknown_84178DA:: @ 84178DA
+ .string "KOGA$"
+
+gUnknown_84178DF:: @ 0x84178DF
+ .string "さんか する$"
+
+gUnknown_84178E6:: @ 0x84178E6
+ .string "INFO$"
+
+gUnknown_84178EB:: @ 0x84178EB
+ .string "EGGS$"
+
+gUnknown_84178F0:: @ 0x84178F0
+ .string "HALL OF FAME$"
+
+gUnknown_84178FD:: @ 0x84178FD
+ .string "VICTORIES$"
+
+gUnknown_8417907:: @ 0x8417907
+ .string "QUIT$"
+
+gUnknown_841790C:: @ 0x841790C
+ .string "PSN$"
+
+gUnknown_8417910:: @ 0x8417910
+ .string "PAR$"
+
+gUnknown_8417914:: @ 0x8417914
+ .string "SLP$"
+
+gUnknown_8417918:: @ 0x8417918
+ .string "BRN$"
+
+gUnknown_841791C:: @ 0x841791C
+ .string "FRZ$"
+
+gUnknown_8417920:: @ 0x8417920
+ .string "TOXIC$"
+
+gUnknown_8417926:: @ 0x8417926
+ .string "OK$"
+
+gUnknown_8417929:: @ 0x8417929
+ .string "QUIT$"
+
+gUnknown_841792E:: @ 0x841792E
+ .string "みました$"
+
+gUnknown_8417933:: @ 0x8417933
+ .string "これから$"
+
+gUnknown_8417938:: @ 8417938
+ .string "YES$"
+
+gUnknown_841793C:: @ 841793C
+ .string "NO$"
+
+gUnknown_841793F:: @ 0x841793F
+ .string "せつめい$"
+
+gUnknown_8417944:: @ 0x8417944
+ .string "SINGLE BATTLE$"
+
+gUnknown_8417952:: @ 0x8417952
+ .string "DOUBLE BATTLE$"
+
+gUnknown_8417960:: @ 0x8417960
+ .string "MULTI BATTLE$"
+
+gUnknown_841796D:: @ 0x841796D
+ .string "Make a challenge.$"
+
+gUnknown_841797F:: @ 0x841797F
+ .string "INFO$"
+
+gUnknown_8417984:: @ 0x8417984
+ .string "FRESH WATER{CLEAR_TO 0x57}{SMALL}¥200$"
+
+gUnknown_841799A:: @ 0x841799A
+ .string "SODA POP{CLEAR_TO 0x57}{SMALL}¥300$"
+
+gUnknown_84179AD:: @ 0x84179AD
+ .string "LEMONADE{CLEAR_TO 0x57}{SMALL}¥350$"
+
+gUnknown_84179C0:: @ 0x84179C0
+ .string "{SMALL} 50 COINS{CLEAR_TO 0x45}¥1,000$"
+
+gUnknown_84179D6:: @ 0x84179D6
+ .string "{SMALL}500 COINS{CLEAR_TO 0x40}¥10,000$"
+
+gUnknown_84179ED:: @ 0x84179ED
+ .string "Excellent$"
+
+gUnknown_84179F7:: @ 0x84179F7
+ .string "Not so bad$"
+
+gUnknown_8417A02:: @ 0x8417A02
+ .string "RED SHARD$"
+
+gUnknown_8417A0C:: @ 0x8417A0C
+ .string "YELLOW SHARD$"
+
+gUnknown_8417A19:: @ 0x8417A19
+ .string "BLUE SHARD$"
+
+gUnknown_8417A24:: @ 0x8417A24
+ .string "GREEN SHARD$"
+
+gUnknown_8417A30:: @ 0x8417A30
+ .string "バトルタワ-$"
+
+gUnknown_8417A37:: @ 0x8417A37
+ .string "Right$"
+
+gUnknown_8417A3D:: @ 0x8417A3D
+ .string "Left$"
+
+gUnknown_8417A42:: @ 0x8417A42
+ .string "TM13{CLEAR_TO 0x48}{SMALL}4,000 COINS$"
+
+gUnknown_8417A58:: @ 0x8417A58
+ .string "TM23{CLEAR_TO 0x48}{SMALL}3,500 COINS$"
+
+gUnknown_8417A6E:: @ 0x8417A6E
+ .string "TM24{CLEAR_TO 0x48}{SMALL}4,000 COINS$"
+
+gUnknown_8417A84:: @ 0x8417A84
+ .string "TM30{CLEAR_TO 0x48}{SMALL}4,500 COINS$"
+
+gUnknown_8417A9A:: @ 0x8417A9A
+ .string "TM35{CLEAR_TO 0x48}{SMALL}4,000 COINS$"
+
+gUnknown_8417AB0:: @ 0x8417AB0
+ .string "1F$"
+
+gUnknown_8417AB3:: @ 0x8417AB3
+ .string "2F$"
+
+gUnknown_8417AB6:: @ 0x8417AB6
+ .string "3F$"
+
+gUnknown_8417AB9:: @ 0x8417AB9
+ .string "4F$"
+
+gUnknown_8417ABC:: @ 0x8417ABC
+ .string "5F$"
+
+gUnknown_8417ABF:: @ 0x8417ABF
+ .string "COOL$"
+
+gUnknown_8417AC4:: @ 0x8417AC4
+ .string "BEAUTY$"
+
+gUnknown_8417ACB:: @ 0x8417ACB
+ .string "CUTE$"
+
+gUnknown_8417AD0:: @ 0x8417AD0
+ .string "SMART$"
+
+gUnknown_8417AD6:: @ 0x8417AD6
+ .string "TOUGH$"
+
+gUnknown_8417ADC:: @ 0x8417ADC
+ .string "NORMAL$"
+
+gUnknown_8417AE3:: @ 0x8417AE3
+ .string "BLACK$"
+
+gUnknown_8417AE9:: @ 0x8417AE9
+ .string "PINK$"
+
+gUnknown_8417AEE:: @ 0x8417AEE
+ .string "SEPIA$"
+
+gUnknown_8417AF4:: @ 0x8417AF4
+ .string "COOL$"
+
+gUnknown_8417AF9:: @ 0x8417AF9
+ .string "BEAUTY$"
+
+gUnknown_8417B00:: @ 0x8417B00
+ .string "CUTE$"
+
+gUnknown_8417B05:: @ 0x8417B05
+ .string "SMART$"
+
+gUnknown_8417B0B:: @ 0x8417B0B
+ .string "TOUGH$"
+
+gUnknown_8417B11:: @ 0x8417B11
+ .string "ITEMS$"
+
+gUnknown_8417B17:: @ 0x8417B17
+ .string "KEY ITEMS$"
+
+gUnknown_8417B21:: @ 0x8417B21
+ .string "POKé BALLS$"
+
+gUnknown_8417B2C:: @ 0x8417B2C
+ .string "TMs を HMs$"
+
+gUnknown_8417B36:: @ 0x8417B36
+ .string "BERRIES$"
+
+gUnknown_8417B3E:: @ 0x8417B3E
+ .string "BOULDERBADGE$"
+
+gUnknown_8417B4B:: @ 0x8417B4B
+ .string "CASCADEBADGE$"
+
+gUnknown_8417B58:: @ 0x8417B58
+ .string "THUNDERBADGE$"
+
+gUnknown_8417B65:: @ 0x8417B65
+ .string "RAINBOWBADGE$"
+
+gUnknown_8417B72:: @ 0x8417B72
+ .string "SOULBADGE$"
+
+gUnknown_8417B7C:: @ 0x8417B7C
+ .string "MARSHBADGE$"
+
+gUnknown_8417B87:: @ 0x8417B87
+ .string "VOLCANOBADGE$"
+
+gUnknown_8417B94:: @ 0x8417B94
+ .string "EARTHBADGE$"
+
+gUnknown_8417B9F:: @ 8417B9F
+ .string "SOMEONE'S PC$"
+
+gUnknown_8417BAC:: @ 8417BAC
+ .string "BILL'S PC$"
+
+gUnknown_8417BB6:: @ 8417BB6
+ .string "{PLAYER}'s PC$"
+
+gUnknown_8417BBE:: @ 8417BBE
+ .string "HALL OF FAME$"
+
+gUnknown_8417BCB:: @ 8417BCB
+ .string "LOG OFF$"
+
+gUnknown_8417BD3:: @ 8417BD3
+ .string "PROF. OAK's PC$"
+
+gUnknown_8417BE2:: @ 0x8417BE2
+ .string "EEVEE$"
+
+gUnknown_8417BE8:: @ 0x8417BE8
+ .string "FLAREON$"
+
+gUnknown_8417BF0:: @ 0x8417BF0
+ .string "JOLTEON$"
+
+gUnknown_8417BF8:: @ 0x8417BF8
+ .string "VAPOREON$"
+
+gUnknown_8417C01:: @ 0x8417C01
+ .string "Quit looking.$"
+
+gUnknown_8417C0F:: @ 0x8417C0F
+ .string "FRESH WATER$"
+
+gUnknown_8417C1B:: @ 0x8417C1B
+ .string "SODA POP$"
+
+gUnknown_8417C24:: @ 0x8417C24
+ .string "LEMONADE$"
+
+gUnknown_8417C2D:: @ 8417C2D
+ .string "COINS$"
+
+gUnknown_8417C33:: @ 0x8417C33
+ .string "BICYCLE{CLEAR_TO 0x49}{SMALL}¥1,000,000$"
+
+gUnknown_8417C4B:: @ 0x8417C4B
+ .string "NO THANKS$"
+
+gUnknown_8417C55:: @ 0x8417C55
+ .string "ABRA{CLEAR_TO 0x55}{SMALL} 180 COINS$"
+
+gUnknown_8417C6A:: @ 0x8417C6A
+ .string "CLEFAIRY{CLEAR_TO 0x55}{SMALL} 500 COINS$"
+
+gUnknown_8417C83:: @ 0x8417C83
+ .string "DRATINI{CLEAR_TO 0x4B}{SMALL} 2,800 COINS$"
+
+gUnknown_8417C9D:: @ 0x8417C9D
+ .string "SCYTHER{CLEAR_TO 0x4B}{SMALL} 5,500 COINS$"
+
+gUnknown_8417CB7:: @ 0x8417CB7
+ .string "PORYGON{CLEAR_TO 0x4B}{SMALL} 9,999 COINS$"
+
+gUnknown_8417CD1:: @ 0x8417CD1
+ .string "ABRA{CLEAR_TO 0x55}{SMALL} 120 COINS$"
+
+gUnknown_8417CE6:: @ 0x8417CE6
+ .string "CLEFAIRY{CLEAR_TO 0x55}{SMALL} 750 COINS$"
+
+gUnknown_8417CFF:: @ 0x8417CFF
+ .string "PINSIR{CLEAR_TO 0x4B}{SMALL} 2,500 COINS$"
+
+gUnknown_8417D18:: @ 0x8417D18
+ .string "DRATINI{CLEAR_TO 0x4B}{SMALL} 4,600 COINS$"
+
+gUnknown_8417D32:: @ 0x8417D32
+ .string "PORYGON{CLEAR_TO 0x4B}{SMALL} 6,500 COINS$"
+
+gUnknown_8417D4C:: @ 0x8417D4C
+ .string "NO THANKS$"
+
+gUnknown_8417D56:: @ 0x8417D56
+ .string "HELIX FOSSIL$"
+
+gUnknown_8417D63:: @ 0x8417D63
+ .string "DOME FOSSIL$"
+
+gUnknown_8417D6F:: @ 0x8417D6F
+ .string "OLD AMBER$"
+
+gUnknown_8417D79:: @ 0x8417D79
+ .string "TRADE CENTER$"
+
+gUnknown_8417D86:: @ 0x8417D86
+ .string "COLOSSEUM$"
+
+gUnknown_8417D90:: @ 0x8417D90
+ .string "Game Link cable$"
+
+gUnknown_8417DA0:: @ 0x8417DA0
+ .string "Wireless$"
+
+gUnknown_8417DA9:: @ 0x8417DA9
+ .string "ITEMS POCKET$"
+
+gUnknown_8417DB6:: @ 0x8417DB6
+ .string "KEY ITEMS POCKET$"
+
+gUnknown_8417DC7:: @ 0x8417DC7
+ .string "POKé BALLS POCKET$"
+
+gUnknown_8417DD9:: @ 0x8417DD9
+ .string "TM CASE$"
+
+gUnknown_8417DE1:: @ 0x8417DE1
+ .string "BERRY POUCH$"
+
+gUnknown_8417DED:: @ 8417DED
+ .string "OTHER$"
+
+gUnknown_8417DF3:: @ 0x8417DF3
+ .string "ONE ISLAND$"
+
+gUnknown_8417DFE:: @ 0x8417DFE
+ .string "TWO ISLAND$"
+
+gUnknown_8417E09:: @ 0x8417E09
+ .string "THREE ISLAND$"
+
+gUnknown_8417E16:: @ 0x8417E16
+ .string "FOUR ISLAND$"
+
+gUnknown_8417E22:: @ 0x8417E22
+ .string "FIVE ISLAND$"
+
+gUnknown_8417E2E:: @ 0x8417E2E
+ .string "SIX ISLAND$"
+
+gUnknown_8417E39:: @ 0x8417E39
+ .string "SEVEN ISLAND$"
+
+gUnknown_8417E46:: @ 0x8417E46
+ .string "VERMILION$"
+
+gUnknown_8417E50:: @ 0x8417E50
+ .string "COLOSSEUM$"
+
+gUnknown_8417E5A:: @ 0x8417E5A
+ .string "BERRY CRUSH$"
+
+gUnknown_8417E66:: @ 0x8417E66
+ .string "$"
+
+gUnknown_8417E67:: @ 0x8417E67
+ .string "$"
+
+gUnknown_8417E68:: @ 0x8417E68
+ .string "せつめいを きく$"
+
+gUnknown_8417E71:: @ 0x8417E71
+ .string "$"
+
+gUnknown_8417E72:: @ 0x8417E72
+ .string "POKéMON JUMP$"
+
+gUnknown_8417E7F:: @ 0x8417E7F
+ .string "DODRIO BERRY-PICKING$"
+
+gUnknown_8417E94:: @ 0x8417E94
+ .string "2 TINYMUSHROOMS$"
+
+gUnknown_8417EA4:: @ 0x8417EA4
+ .string "1 BIG MUSHROOM$"
+
+gUnknown_8417EB3:: @ 0x8417EB3
+ .string "SEVII ISLANDS$"
+
+gUnknown_8417EC1:: @ 0x8417EC1
+ .string "NAVEL ROCK$"
+
+gUnknown_8417ECC:: @ 0x8417ECC
+ .string "BIRTH ISLAND$"
+
+gUnknown_8417ED9:: @ 0x8417ED9
+ .string "MIRACLE SEED{CLEAR_TO 0x50}{SMALL}1,000 COINS$"
+
+gUnknown_8417EF7:: @ 0x8417EF7
+ .string "CHARCOAL{CLEAR_TO 0x50}{SMALL}1,000 COINS$"
+
+gUnknown_8417F11:: @ 0x8417F11
+ .string "MYSTIC WATER{CLEAR_TO 0x50}{SMALL}1,000 COINS$"
+
+gUnknown_8417F2F:: @ 0x8417F2F
+ .string "YELLOW FLUTE{CLEAR_TO 0x50}{SMALL}1,600 COINS$"
+
+gUnknown_8417F4D:: @ 0x8417F4D
+ .string "SMOKE BALL{CLEAR_TO 0x5A}{SMALL}800 COINS$"
+
+gUnknown_8417F67:: @ 0x8417F67
+ .string "$"
+
+gUnknown_8417F68:: @ 0x8417F68
+ .string "$"
+
+gUnknown_8417F69:: @ 0x8417F69
+ .string "BECOME LEADER$"
+
+gUnknown_8417F77:: @ 0x8417F77
+ .string "JOIN GROUP$"
+
+gUnknown_8417F82:: @ 0x8417F82
+ .string "SINGLE$"
+
+gUnknown_8417F89:: @ 0x8417F89
+ .string "DOUBLE$"
+
+gUnknown_8417F90:: @ 0x8417F90
+ .string "KNOCKOUT$"
+
+gUnknown_8417F99:: @ 0x8417F99
+ .string "MIXED$"
+
+gUnknown_8417F9F:: @ 0x8417F9F
+ .string "99かい いじょう$"
+
+gUnknown_8417FA9:: @ 0x8417FA9
+ .string "1ぷん いじょう$"
+
+gUnknown_8417FB2:: @ 0x8417FB2
+ .string "びょう$"
+
+gUnknown_8417FB6:: @ 0x8417FB6
+ .string "かい$"
+
+gUnknown_8417FB9:: @ 8417FB9
+ .string ".$"
+
+gUnknown_8417FBB:: @ 8417FBB
+ .string "Big guy$"
+
+gUnknown_8417FC3:: @ 8417FC3
+ .string "Big girl$"
+
+gUnknown_8417FCC:: @ 8417FCC
+ .string "son$"
+
+gUnknown_8417FD0:: @ 8417FD0
+ .string "daughter$"
+
+gUnknown_8417FD9:: @ 0x8417FD9
+ .string "BOULDERBADGE$"
+
+gUnknown_8417FE6:: @ 0x8417FE6
+ .string "CASCADEBADGE$"
+
+gUnknown_8417FF3:: @ 0x8417FF3
+ .string "THUNDERBADGE$"
+
+gUnknown_8418000:: @ 0x8418000
+ .string "RAINBOWBADGE$"
+
+gUnknown_841800D:: @ 0x841800D
+ .string "SOULBADGE$"
+
+gUnknown_8418017:: @ 0x8418017
+ .string "MARSHBADGE$"
+
+gUnknown_8418022:: @ 0x8418022
+ .string "VOLCANOBADGE$"
+
+gUnknown_841802F:: @ 0x841802F
+ .string "EARTHBADGE$"
+
+gUnknown_841803A:: @ 0x841803A
+ .string "1F$"
+
+gUnknown_841803D:: @ 0x841803D
+ .string "2F$"
+
+gUnknown_8418040:: @ 0x8418040
+ .string "3F$"
+
+gUnknown_8418043:: @ 0x8418043
+ .string "4F$"
+
+gUnknown_8418046:: @ 0x8418046
+ .string "5F$"
+
+gUnknown_8418049:: @ 0x8418049
+ .string "6F$"
+
+gUnknown_841804C:: @ 0x841804C
+ .string "7F$"
+
+gUnknown_841804F:: @ 0x841804F
+ .string "8F$"
+
+gUnknown_8418052:: @ 0x8418052
+ .string "9F$"
+
+gUnknown_8418055:: @ 0x8418055
+ .string "10F$"
+
+gUnknown_8418059:: @ 0x8418059
+ .string "11F$"
+
+gUnknown_841805D:: @ 0x841805D
+ .string "B1F$"
+
+gUnknown_8418061:: @ 0x8418061
+ .string "B2F$"
+
+gUnknown_8418065:: @ 0x8418065
+ .string "B3F$"
+
+gUnknown_8418069:: @ 0x8418069
+ .string "B4F$"
+
+gUnknown_841806D:: @ 0x841806D
+ .string "ROOFTOP$"
+
+gUnknown_8418075:: @ 8418075
+ .string "Now on:$"
+
+gUnknown_841807D:: @ 0x841807D
+ .string "LINKED GAME PLAY$"
+
+gUnknown_841808E:: @ 0x841808E
+ .string "DIRECT CORNER$"
+
+gUnknown_841809C:: @ 0x841809C
+ .string "UNION ROOM$"
+
+gUnknown_84180A7:: @ 0x84180A7
+ .string "ENERGYPOWDER{CLEAR_TO 0x74}{SMALL}50$"
+
+gUnknown_84180BC:: @ 0x84180BC
+ .string "ENERGY ROOT{CLEAR_TO 0x74}{SMALL}80$"
+
+gUnknown_84180D0:: @ 0x84180D0
+ .string "HEAL POWDER{CLEAR_TO 0x74}{SMALL}50$"
+
+gUnknown_84180E4:: @ 0x84180E4
+ .string "REVIVAL HERB{CLEAR_TO 0x6F}{SMALL}300$"
+
+gUnknown_84180FA:: @ 0x84180FA
+ .string "PROTEIN{CLEAR_TO 0x65}{SMALL}1,000$"
+
+gUnknown_841810D:: @ 0x841810D
+ .string "IRON{CLEAR_TO 0x65}{SMALL}1,000$"
+
+gUnknown_841811D:: @ 0x841811D
+ .string "CARBOS{CLEAR_TO 0x65}{SMALL}1,000$"
+
+gUnknown_841812F:: @ 0x841812F
+ .string "CALCIUM{CLEAR_TO 0x65}{SMALL}1,000$"
+
+gUnknown_8418142:: @ 0x8418142
+ .string "ZINC{CLEAR_TO 0x65}{SMALL}1,000$"
+
+gUnknown_8418152:: @ 0x8418152
+ .string "HP UP{CLEAR_TO 0x65}{SMALL}1,000$"
+
+gUnknown_8418163:: @ 0x8418163
+ .string "PP UP{CLEAR_TO 0x65}{SMALL}3,000$"
+
+gString_BattleRecords_PlayersBattleResults:: @ 8418174
+ .string "{PLAYER}'s BATTLE RESULTS$"
+
+gString_BattleRecords_TotalRecord:: @ 8418188
+ .string "TOTAL RECORD W:{STR_VAR_1} L:{STR_VAR_2} D:{STR_VAR_3}$"
+
+gString_BattleRecords_ColumnHeaders:: @ 84181A4
+ .string "WIN{CLEAR_TO 0x30}LOSE{CLEAR_TO 0x60}DRAW$"
+
+gString_BattleRecords_7Dashes:: @ 84181B6
+ .string "-------$"
+
+gString_BattleRecords_4Dashes:: @ 84181BE
+ .string "----$"
+
+gFameCheckerText_FameCheckerWillBeClosed:: @ 84181C3
+ .string "The FAME CHECKER will be closed.$"
+
+gFameCheckerText_ClearTextbox:: @ 84181E4
+ .string "\n"
+ .string " $"
+
+gUnknown_8418204:: @ 8418204
+ .string "やめる$"
+
+gUnknown_8418208:: @ 0x8418208
+ .string "Exit from the BOX.$"
+
+gUnknown_841821B:: @ 0x841821B
+ .string "What do you want to do?$"
+
+gUnknown_8418233:: @ 0x8418233
+ .string "Please pick a theme.$"
+
+gUnknown_8418248:: @ 0x8418248
+ .string "Pick the wallpaper.$"
+
+gUnknown_841825C:: @ 0x841825C
+ .string "{UNKNOWN_F7 0x00} is selected.$"
+
+gUnknown_841826C:: @ 0x841826C
+ .string "Jump to which BOX?$"
+
+gUnknown_841827F:: @ 0x841827F
+ .string "Deposit in which BOX?$"
+
+gUnknown_8418295:: @ 0x8418295
+ .string "{UNKNOWN_F7 0x00} was deposited.$"
+
+gUnknown_84182A7:: @ 0x84182A7
+ .string "The BOX is full.$"
+
+gUnknown_84182B8:: @ 0x84182B8
+ .string "Release this POKéMON?$"
+
+gUnknown_84182CE:: @ 0x84182CE
+ .string "{UNKNOWN_F7 0x00} was released.$"
+
+gUnknown_84182DF:: @ 0x84182DF
+ .string "Bye-bye, {UNKNOWN_F7 0x00}!$"
+
+gUnknown_84182EC:: @ 0x84182EC
+ .string "Mark your POKéMON.$"
+
+gUnknown_84182FF:: @ 0x84182FF
+ .string "That's your last POKéMON!$"
+
+gUnknown_8418319:: @ 0x8418319
+ .string "Your party's full!$"
+
+gUnknown_841832C:: @ 0x841832C
+ .string "You're holding a POKéMON!$"
+
+gUnknown_8418346:: @ 0x8418346
+ .string "Which one will you take?$"
+
+gUnknown_841835F:: @ 0x841835F
+ .string "You can't release an EGG.$"
+
+gUnknown_8418379:: @ 0x8418379
+ .string "Continue BOX operations?$"
+
+gUnknown_8418392:: @ 0x8418392
+ .string "{UNKNOWN_F7 0x00} came back!$"
+
+gUnknown_84183A0:: @ 0x84183A0
+ .string "Was it worried about you?$"
+
+gUnknown_84183BA:: @ 0x84183BA
+ .string "‥ ‥ ‥ ‥ ‥!$"
+
+gUnknown_84183C5:: @ 0x84183C5
+ .string "Please remove the MAIL.$"
+
+gUnknown_84183DD:: @ 0x84183DD
+ .string "GIVE to a POKéMON?$"
+
+gUnknown_84183F0:: @ 0x84183F0
+ .string "Placed item in the BAG.$"
+
+gUnknown_8418408:: @ 0x8418408
+ .string "The BAG is full.$"
+
+gUnknown_8418419:: @ 0x8418419
+ .string "Put this item in the BAG?$"
+
+gUnknown_8418433:: @ 0x8418433
+ .string "{UNKNOWN_F7 0x00} is now held.$"
+
+gUnknown_8418443:: @ 0x8418443
+ .string "Changed to {UNKNOWN_F7 0x00}.$"
+
+gUnknown_8418452:: @ 0x8418452
+ .string "MAIL can't be stored!$"
+
+gUnknown_8418468:: @ 0x8418468
+ .string "CANCEL$"
+
+gUnknown_841846F:: @ 0x841846F
+ .string "STORE$"
+
+gUnknown_8418475:: @ 0x8418475
+ .string "WITHDRAW$"
+
+gUnknown_841847E:: @ 0x841847E
+ .string "SHIFT$"
+
+gUnknown_8418484:: @ 0x8418484
+ .string "MOVE$"
+
+gUnknown_8418489:: @ 0x8418489
+ .string "PLACE$"
+
+gUnknown_841848F:: @ 0x841848F
+ .string "SUMMARY$"
+
+gUnknown_8418497:: @ 0x8418497
+ .string "RELEASE$"
+
+gUnknown_841849F:: @ 0x841849F
+ .string "MARK$"
+
+gUnknown_84184A4:: @ 0x84184A4
+ .string "NAME$"
+
+gUnknown_84184A9:: @ 0x84184A9
+ .string "JUMP$"
+
+gUnknown_84184AE:: @ 0x84184AE
+ .string "WALLPAPER$"
+
+gUnknown_84184B8:: @ 0x84184B8
+ .string "TAKE$"
+
+gUnknown_84184BD:: @ 0x84184BD
+ .string "GIVE$"
+
+gUnknown_84184C2:: @ 0x84184C2
+ .string "SWITCH$"
+
+gUnknown_84184C9:: @ 0x84184C9
+ .string "BAG$"
+
+gUnknown_84184CD:: @ 0x84184CD
+ .string "INFO$"
+
+gUnknown_84184D2:: @ 0x84184D2
+ .string "SCENERY 1$"
+
+gUnknown_84184DC:: @ 0x84184DC
+ .string "SCENERY 2$"
+
+gUnknown_84184E6:: @ 0x84184E6
+ .string "SCENERY 3$"
+
+gUnknown_84184F0:: @ 0x84184F0
+ .string "ETCETERA$"
+
+gUnknown_84184F9:: @ 0x84184F9
+ .string "FOREST$"
+
+gUnknown_8418500:: @ 0x8418500
+ .string "CITY$"
+
+gUnknown_8418505:: @ 0x8418505
+ .string "DESERT$"
+
+gUnknown_841850C:: @ 0x841850C
+ .string "SAVANNA$"
+
+gUnknown_8418514:: @ 0x8418514
+ .string "CRAG$"
+
+gUnknown_8418519:: @ 0x8418519
+ .string "VOLCANO$"
+
+gUnknown_8418521:: @ 0x8418521
+ .string "SNOW$"
+
+gUnknown_8418526:: @ 0x8418526
+ .string "CAVE$"
+
+gUnknown_841852B:: @ 0x841852B
+ .string "BEACH$"
+
+gUnknown_8418531:: @ 0x8418531
+ .string "SEAFLOOR$"
+
+gUnknown_841853A:: @ 0x841853A
+ .string "RIVER$"
+
+gUnknown_8418540:: @ 0x8418540
+ .string "SKY$"
+
+gUnknown_8418544:: @ 0x8418544
+ .string "STARS$"
+
+gUnknown_841854A:: @ 0x841854A
+ .string "POKéCENTER$"
+
+gUnknown_8418555:: @ 0x8418555
+ .string "TILES$"
+
+gUnknown_841855B:: @ 0x841855B
+ .string "SIMPLE$"
+
+gUnknown_8418562:: @ 0x8418562
+ .string "なにを しますか?$"
+
+gUnknown_841856C:: @ 0x841856C
+ .string "WITHDRAW POKéMON$"
+
+gUnknown_841857D:: @ 0x841857D
+ .string "DEPOSIT POKéMON$"
+
+gUnknown_841858D:: @ 0x841858D
+ .string "MOVE POKéMON$"
+
+gUnknown_841859A:: @ 0x841859A
+ .string "MOVE ITEMS$"
+
+gUnknown_84185A5:: @ 0x84185A5
+ .string "SEE YA!$"
+
+gUnknown_84185AD:: @ 0x84185AD
+ .string "You can withdraw a POKéMON if you\nhave any in a BOX.$"
+
+gUnknown_84185E2:: @ 0x84185E2
+ .string "You can deposit your party\nPOKéMON in any BOX.$"
+
+gUnknown_8418611:: @ 0x8418611
+ .string "You can move POKéMON that are\nstored in any BOX.$"
+
+gUnknown_8418642:: @ 0x8418642
+ .string "You can move items held by any\nPOKéMON in a BOX or your party.$"
+
+gUnknown_8418681:: @ 0x8418681
+ .string "See you later!$"
+
+gUnknown_8418690:: @ 8418690
+ .string "Can't deposit the last POKéMON!$"
+
+gUnknown_84186B0:: @ 84186B0
+ .string "Can't take any more POKéMON.$"
+
+gUnknown_84186CD:: @ 84186CD
+ .string "BOX$"
+
+gUnknown_84186D1:: @ 0x84186D1
+ .string "Combine four words or phrases$"
+
+gUnknown_84186EF:: @ 0x84186EF
+ .string "and make your profile.$"
+
+gUnknown_8418706:: @ 0x8418706
+ .string "Make a message of six phrases.$"
+
+gUnknown_8418725:: @ 0x8418725
+ .string "Max two 12-letter phrases/line.$"
+
+gUnknown_8418745:: @ 0x8418745
+ .string "Find words that describe your$"
+
+gUnknown_8418763:: @ 0x8418763
+ .string "feelings right now.$"
+
+gUnknown_8418777:: @ 0x8418777
+ .string "4つの ことばで$"
+
+gUnknown_8418780:: @ 0x8418780
+ .string "Combine nine words or phrases$"
+
+gUnknown_841879E:: @ 0x841879E
+ .string "and make a message.$"
+
+gUnknown_84187B2:: @ 0x84187B2
+ .string "Change just one word or phrase$"
+
+gUnknown_84187D1:: @ 0x84187D1
+ .string "and improve the BARD's song.$"
+
+gUnknown_84187EE:: @ 0x84187EE
+ .string "and fill out the questionnaire.$"
+
+gUnknown_841880E:: @ 0x841880E
+ .string "Your profile$"
+
+gUnknown_841881B:: @ 0x841881B
+ .string "Your feeling at the battle's start$"
+
+gUnknown_841883E:: @ 0x841883E
+ .string "What you say if you win a battle$"
+
+gUnknown_841885F:: @ 0x841885F
+ .string "What you say if you lose a battle$"
+
+gUnknown_8418881:: @ 0x8418881
+ .string "The answer$"
+
+gUnknown_841888C:: @ 0x841888C
+ .string "The MAIL message$"
+
+gUnknown_841889D:: @ 0x841889D
+ .string "はがきに のせる あいさつは$"
+
+gUnknown_84188AC:: @ 0x84188AC
+ .string "The new song$"
+
+gUnknown_84188B9:: @ 0x84188B9
+ .string "Combine two words or phrases$"
+
+gUnknown_84188D6:: @ 0x84188D6
+ .string "and make a trendy saying.$"
+
+gUnknown_84188F0:: @ 0x84188F0
+ .string "The trendy saying$"
+
+gUnknown_8418902:: @ 0x8418902
+ .string "is as shown. Okay?$"
+
+gUnknown_8418915:: @ 0x8418915
+ .string "2つの ことばを くみあわせて$"
+
+gUnknown_8418925:: @ 0x8418925
+ .string "いい ことばを おしえてあげよう!$"
+
+gUnknown_8418937:: @ 8418937
+ .string "All the text being edited will$"
+
+gUnknown_8418956:: @ 8418956
+ .string "be deleted. Is that okay?$"
+
+gUnknown_8418970:: @ 0x8418970
+ .string "なにか ことばを いれてください!$"
+
+gUnknown_8418982:: @ 0x8418982
+ .string "ことばを ぜんぶ けすことは できません!$"
+
+gUnknown_8418998:: @ 0x8418998
+ .string "かえられる ことばは 1つ までです!$"
+
+gUnknown_84189AC:: @ 0x84189AC
+ .string "うたを もとに もどします!$"
+
+gUnknown_84189BB:: @ 0x84189BB
+ .string "それは もう はやっています!$"
+
+gUnknown_84189CB:: @ 0x84189CB
+ .string "2つの ことばを くみあわせてください!$"
+
+gUnknown_84189E0:: @ 84189E0
+ .string "Quit editing?$"
+
+gUnknown_84189EE:: @ 84189EE
+ .string "Stop giving the POKéMON MAIL?$"
+
+gUnknown_8418A0C:: @ 0x8418A0C
+ .string "へんしゅうした ことばは ほぞん$"
+
+gUnknown_8418A1D:: @ 0x8418A1D
+ .string "されませんが いいですか?$"
+
+gUnknown_8418A2B:: @ 0x8418A2B
+ .string "PROFILE$"
+
+gUnknown_8418A33:: @ 0x8418A33
+ .string "At the battle's start:$"
+
+gUnknown_8418A4A:: @ 0x8418A4A
+ .string "Upon winning a battle:$"
+
+gUnknown_8418A61:: @ 0x8418A61
+ .string "Upon losing a battle:$"
+
+gUnknown_8418A77:: @ 0x8418A77
+ .string "The BARD's Song$"
+
+gUnknown_8418A87:: @ 0x8418A87
+ .string "What's hip and happening?$"
+
+gUnknown_8418AA1:: @ 0x8418AA1
+ .string "Interview$"
+
+gUnknown_8418AAB:: @ 0x8418AAB
+ .string "いい ことば$"
+
+gUnknown_8418AB2:: @ 0x8418AB2
+ .string "QUESTIONNAIRE$"
+
+gUnknown_8418AC0:: @ 0x8418AC0
+ .string " きれい だよね-$"
+
+gUnknown_8418ACA:: @ 0x8418ACA
+ .string " かわいい よね-$"
+
+gUnknown_8418AD4:: @ 0x8418AD4
+ .string " のんびり だよね-$"
+
+gUnknown_8418ADF:: @ 0x8418ADF
+ .string " ぽっかぽか だよね-$"
+
+gUnknown_8418AEB:: @ 0x8418AEB
+ .string " あこがれる よね-$"
+
+gUnknown_8418AF6:: @ 0x8418AF6
+ .string " ドキドキ するよね-$"
+
+gUnknown_8418B02:: @ 0x8418B02
+ .string " おもしろい よね-$"
+
+gUnknown_8418B0D:: @ 0x8418B0D
+ .string " ふしぎ だよね-$"
+
+gUnknown_8418B17:: @ 0x8418B17
+ .string "って$"
+
+gUnknown_8418B1A:: @ 0x8418B1A
+ .string "\nそう おもわない?$"
+
+gUnknown_8418B25:: @ 0x8418B25
+ .string "たびに でたいな-\nどこか いい ところ しらない?$"
+
+gUnknown_8418B40:: @ 0x8418B40
+ .string "120しょくの クレヨン かったんだ-\nいいでしょう?$"
+
+gUnknown_8418B5C:: @ 0x8418B5C
+ .string "しゃぼんだまに のって とべるように\nならないかな-$"
+
+gUnknown_8418B77:: @ 0x8418B77
+ .string "すなはまに かいた もじは\nすぐに きえちゃうのが かなしいよね-$"
+
+gUnknown_8418B99:: @ 0x8418B99
+ .string "うみの そこって どうなってるのかな-\nいちどで いいから みて みたいな-$"
+
+gUnknown_8418BC0:: @ 0x8418BC0
+ .string "ゆうやけを みると\nウチに かえりたく ならない?$"
+
+gUnknown_8418BDA:: @ 0x8418BDA
+ .string "みどりの しばで ねころがると\nきもちいいよね-$"
+
+gUnknown_8418BF3:: @ 0x8418BF3
+ .string "ひみつきち って いいよね!\nなんか わくわく してこない?$"
+
+gUnknown_8418C12:: @ 0x8418C12
+ .string "ポケモン リ-グ$"
+
+gUnknown_8418C1B:: @ 8418C1B
+ .string "POKéMON CENTER$"
+
+gUnknown_8418C2A:: @ 8418C2A
+ .string "に ポロックを あげますか?$"
+
+gUnknown_8418C39:: @ 0x8418C39
+ .string "かっこよさ$"
+
+gUnknown_8418C3F:: @ 0x8418C3F
+ .string "うつくしさ$"
+
+gUnknown_8418C45:: @ 0x8418C45
+ .string "かわいさ$"
+
+gUnknown_8418C4A:: @ 0x8418C4A
+ .string "かしこさ$"
+
+gUnknown_8418C4F:: @ 0x8418C4F
+ .string "たくましさ$"
+
+gUnknown_8418C55:: @ 0x8418C55
+ .string "に みがきが かかった!$"
+
+gUnknown_8418C62:: @ 0x8418C62
+ .string "なにも かわらなかった!$"
+
+gUnknown_8418C6F:: @ 0x8418C6F
+ .string "もう これいじょう たべない みたい‥$"
+
+gUnknown_8418C83:: @ 8418C83
+ .string "Save failed.\nChecking the backup memory‥\nPlease wait.\n“Time required:\nabout 1 minute”$"
+
+gUnknown_8418CD9:: @ 8418CD9
+ .string "The backup memory is damaged or\n"
+ .string "the game's battery has run dry.\n"
+ .string "The game can be played, but its\n"
+ .string "progress cannot be saved.\n"
+ .string "“Please press the A Button.”$"
+
+gUnknown_8418D70:: @ 8418D70
+ .string "{COLOR RED}“このまま ぼうけんをつづけることは できません\nタイトルに もどります”$"
+
+gUnknown_8418D99:: @ 0x8418D99
+ .string "けんさが しゅうりょうしました!\nもういちど レポ-トを かきこみます\nしばらくおまちください$"
+
+gUnknown_8418DC9:: @ 0x8418DC9
+ .string "レポ-トの かきこみは しゅうりょうしました\n{COLOR RED}“このまま ぼうけんをつづけることは できません\nタイトルに もどります”$"
+
+gUnknown_8418E09:: @ 8418E09
+ .string "Save completed.\n“Please press the A Button.”$"
+
+gUnknown_8418E36:: @ 0x8418E36
+ .string "れんらくせん$"
+
+gUnknown_8418E3D:: @ 0x8418E3D
+ .string "ひみつきち$"
+
+gUnknown_8418E43:: @ 0x8418E43
+ .string "アジト$"
+
+gUnknown_8418E47:: @ 0x8418E47
+ .string "YOUR NAME?$"
+
+gUnknown_8418E52:: @ 0x8418E52
+ .string "BOX NAME?$"
+
+gUnknown_8418E5C:: @ 0x8418E5C
+ .string "'s nickname?$"
+
+gUnknown_8418E69:: @ 0x8418E69
+ .string "RIVAL's NAME?$"
+
+gUnknown_8418E77:: @ 8418E77
+ .string "{KEYGFX_DPAD_ANY}MOVE {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}BACK$"
+
+gUnknown_8418E8A:: @ 8418E8A
+ .string "$"
+
+gUnknown_8418E8B:: @ 8418E8B
+ .string " $"
+
+gUnknown_8418E8D:: @ 8418E8D
+ .string "{KEYGFX_A_BUTTON}GUIDE$"
+
+gUnknown_8418E95:: @ 8418E95
+ .string "{KEYGFX_A_BUTTON}CANCEL$"
+
+gUnknown_8418E9E:: @ 8418E9E
+ .string "{KEYGFX_A_BUTTON}CANCEL$"
+
+gUnknown_8418EA7:: @ 8418EA7
+ .string "{KEYGFX_A_BUTTON}SWITCH$"
+
+gUnknown_8418EB0:: @ 8418EB0
+ .string "{KEYGFX_A_BUTTON}OK$"
+
+gUnknown_8418EB5:: @ 8418EB5
+ .string "{KEYGFX_DPAD_ANY}MOVE$"
+
+gUnknown_8418EBC:: @ 8418EBC
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK$"
+
+gUnknown_8418EC3:: @ 8418EC3
+ .string "No data$"
+
+gUnknown_8418ECB:: @ 8418ECB
+ @ Viridian Forest
+ .string "A deep and sprawling forest that\n"
+ .string "extends around VIRIDIAN CITY.\n"
+ .string "A natural maze, many people\n"
+ .string "become lost inside.$"
+
+gUnknown_8418F3A:: @ 8418F3A
+ @ Mt. Moon
+ .string "A mystical mountain that is known\n"
+ .string "for its frequent meteor falls.\n"
+ .string "The shards of stars that fall\n"
+ .string "here are known as MOON STONES.$"
+
+gUnknown_8418FB8:: @ 8418FB8
+ @ Diglett's Cave
+ .string "A seemingly plain tunnel that was\n"
+ .string "dug by wild DIGLETT.\n"
+ .string "It is famous for connecting\n"
+ .string "ROUTES 2 and 11.$"
+
+gUnknown_841901C:: @ 841901C
+ @ Victory Road
+ .string "A tunnel situated on ROUTE 23.\n"
+ .string "It earned its name because it\n"
+ .string "must be traveled by all TRAINERS\n"
+ .string "aiming for the top.$"
+
+gUnknown_841908E:: @ 841908E
+ @ Pokémon Mansion
+ .string "A decrepit, burned-down mansion\n"
+ .string "on CINNABAR ISLAND.\n"
+ .string "It got its name because a famous\n"
+ .string "POKéMON researcher lived there.$"
+
+gUnknown_8419103:: @ 8419103
+ @ Safari Zone
+ .string "An amusement park outside FUCHSIA\n"
+ .string "CITY where many rare POKéMON can\n"
+ .string "be observed in the wild.\n"
+ .string "Catch them in a popular game!$"
+
+gUnknown_841917D:: @ 841917D
+ @ Rock Tunnel
+ .string "A naturally formed underground\n"
+ .string "tunnel. Because it has not been\n"
+ .string "developed, it is inky dark inside.\n"
+ .string "A light is needed to get through.$"
+
+gUnknown_8419201:: @ 8419201
+ @ Seafoam Islands
+ .string "A pair of islands that is situated\n"
+ .string "on ROUTE 20.\n"
+ .string "The two islands are shaped the\n"
+ .string "same, as if they were twins.$"
+
+gUnknown_841926D:: @ 841926D
+ @ Pokémon Tower
+ .string "A tower that houses the graves of\n"
+ .string "countless POKéMON.\n"
+ .string "Many people visit it daily to pay\n"
+ .string "their respects to the fallen.$"
+
+gUnknown_84192E2:: @ 84192E2
+ @ Cerulean Cave
+ .string "A mysterious cave that is filled\n"
+ .string "with terribly tough POKéMON.\n"
+ .string "It is so dangerous, the POKéMON\n"
+ .string "LEAGUE is in charge of it.$"
+
+gUnknown_841935B:: @ 841935B
+ @ Power Plant
+ .string "A power plant that was abandoned\n"
+ .string "years ago, though some of the\n"
+ .string "machines still work. It is infested\n"
+ .string "with electric POKéMON.$"
+
+gUnknown_84193D5:: @ 84193D5
+ @ Mt. Ember
+ .string "Supposedly an inactive volcano.\n"
+ .string "However, there are persistent\n"
+ .string "reports that the peak blazes\n"
+ .string "with fire at night.$"
+
+gUnknown_8419444:: @ 8419444
+ @ Berry Forest
+ .string "A forest on a small islet off the\n"
+ .string "coast of THREE ISLAND. BERRIES\n"
+ .string "grow wildly in profusion, quickly\n"
+ .string "replenishing those that fall off.$"
+
+gUnknown_84194C9:: @ 84194C9
+ @ Icefall Cave
+ .string "A cave which is covered by water\n"
+ .string "and ice on FOUR ISLAND.\n"
+ .string "It seems like the end of the cave\n"
+ .string "is connected to the ocean.$"
+
+gUnknown_841953F:: @ 841953F
+ @ Lost Cave
+ .string "A bewildering cave off the coast\n"
+ .string "of RESORT GORGEOUS.\n"
+ .string "Some curious thrill seekers have\n"
+ .string "never emerged from it.$"
+
+gUnknown_84195AC:: @ 84195AC
+ @ Tanoby Ruins
+ .string "An ancient ruin that is rumored to\n"
+ .string "be home to a peculiar POKéMON.\n"
+ .string "However, so far, the POKéMON\n"
+ .string "remains an unconfirmed rumor.$"
+
+gUnknown_8419629:: @ 8419629
+ @ Altering Cave
+ .string "This island has been known by this\n"
+ .string "name since the distant past.\n"
+ .string "No one today knows where it got\n"
+ .string "this name, however.$"
+
+gUnknown_841969D:: @ 841969D
+ @ Pattern Bush
+ .string "A lush and bush-like area. \n"
+ .string "In it are patterns where no grass\n"
+ .string "grows. Some study it in the belief\n"
+ .string "that a secret is concealed.$"
+
+gUnknown_841971A:: @ 841971A
+ @ Dotted Hole
+ .string "A mysterious, just-discovered\n"
+ .string "ruin from an ancient time.\n"
+ .string "It got its name from the six dots\n"
+ .string "on its door.$"
+
+gUnknown_8419782:: @ 8419782
+ .string "{UNKNOWN_F7 0x00} nature.\n"
+ .string "Met in a trade.$"
+
+gUnknown_841979D:: @ 841979D
+ .string "{UNKNOWN_F7 0x00} nature.\n"
+ .string "Met in a trade.$"
+
+gUnknown_84197B8:: @ 84197B8
+ .string "{UNKNOWN_F7 0x00} nature.\n"
+ .string "Met in a fateful encounter when\n"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
+
+gUnknown_84197ED:: @ 84197ED
+ .string "{UNKNOWN_F7 0x00} nature.\n"
+ .string "Met in a fateful encounter when\n"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
+
+gUnknown_8419822:: @ 8419822
+ .string "{UNKNOWN_F7 0x00} nature.\n"
+ .string "Met in {UNKNOWN_F7 0x02} at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
+
+gUnknown_8419841:: @ 8419841
+ .string "{UNKNOWN_F7 0x00} nature.\n"
+ .string "Met in {UNKNOWN_F7 0x02} at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
+
+gUnknown_8419860:: @ 8419860
+ .string "{UNKNOWN_F7 0x00} nature.\n"
+ .string "Apparently met in {UNKNOWN_F7 0x02}\n"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
+
+gUnknown_841988A:: @ 841988A
+ .string "{UNKNOWN_F7 0x00} nature.\n"
+ .string "Apparently met in {UNKNOWN_F7 0x02}\n"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
+
+gUnknown_84198B4:: @ 84198B4
+ .string "{UNKNOWN_F7 0x00} nature.\n"
+ .string "Hatched: {UNKNOWN_F7 0x02}\n"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
+
+gUnknown_84198D5:: @ 84198D5
+ .string "{UNKNOWN_F7 0x00} nature.\n"
+ .string "Hatched: {UNKNOWN_F7 0x02}\n"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
+
+@ TODO: Replace this gibberish with the proper Hiragana
+gUnknown_84198F6:: @ 84198F6
+ .string "{UNKNOWN_F7 0x00}ßÓÁÉË {EXTRA_LV}{UNKNOWN_F7 0x01}çÑÊ\n"
+ .string "{UNKNOWN_F7 0x02}で ÉÇっŒ ùÂだ$"
+
+gUnknown_8419913:: @ 8419913
+ .string "{UNKNOWN_F7 0x00}ÓÁÉË {EXTRA_LV}{UNKNOWN_F7 0x01}çÑÊ\n"
+ .string "{UNKNOWN_F7 0x02}で ÉÇっŒ ùÂだ$"
+
+gUnknown_841992F:: @ 841992F
+ .string "{UNKNOWN_F7 0x00} nature. Met in a fateful\n"
+ .string "encounter (hatched: {UNKNOWN_F7 0x02}\n"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}).$"
+
+gUnknown_841996D:: @ 841996D
+ .string "{UNKNOWN_F7 0x00} nature. Met in a fateful\n"
+ .string "encounter (hatched: {UNKNOWN_F7 0x02}\n"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}).$"
+
+gUnknown_84199AB:: @ 84199AB
+ .string "{UNKNOWN_F7 0x00} nature. Apparently met in\n"
+ .string "a fateful encounter (hatched:\n"
+ .string "{UNKNOWN_F7 0x02} at {EXTRA_LV} {UNKNOWN_F7 0x01}).$"
+
+gUnknown_84199F4:: @ 84199F4
+ .string "{UNKNOWN_F7 0x00} nature. Apparently met in\na fateful encounter シhatched:\n{UNKNOWN_F7 0x02} at {EXTRA_LV} {UNKNOWN_F7 0x01}ス.$"
+
+gUnknown_8419A3D:: @ 0x8419A3D
+ .string "An odd POKéMON EGG found by the\nDAY-CARE couple.$"
+
+gUnknown_8419A6E:: @ 0x8419A6E
+ .string "An odd POKéMON EGG obtained from\nthe traveling man.$"
+
+gUnknown_8419AA2:: @ 0x8419AA2
+ .string "A wondrously peculiar POKéMON EGG\nobtained at a nice place.$"
+
+gUnknown_8419ADE:: @ 0x8419ADE
+ .string "An odd POKéMON EGG obtained from\nan old woman at the SPA.$"
+
+gUnknown_8419B18:: @ 0x8419B18
+ .string "A peculiar POKéMON EGG obtained\nin a trade.$"
+
+gUnknown_8419B44:: @ 0x8419B44
+ .string "It looks like this\nEGG will take a\nlong time to hatch.$"
+
+gUnknown_8419B7B:: @ 0x8419B7B
+ .string "What will hatch\nfrom this? It will\ntake some time.$"
+
+gUnknown_8419BAE:: @ 0x8419BAE
+ .string "It occasionally\nmoves. It should\nhatch soon.$"
+
+gUnknown_8419BDB:: @ 0x8419BDB
+ .string "It's making sounds.\nIt's almost ready\nto hatch!$"
+
+gUnknown_8419C0B:: @ 8419C0B
+ .string "a trade$"
+
+gUnknown_8419C13:: @ 8419C13
+ .string "Somewhere$"
+
+gUnknown_8419C1D:: @ 8419C1D
+ .string "POKéMON INFO$"
+
+gUnknown_8419C2A:: @ 8419C2A
+ .string "POKéMON SKILLS$"
+
+gUnknown_8419C39:: @ 8419C39
+ .string "KNOWN MOVES$"
+
+gUnknown_8419C45:: @ 8419C45
+ .string "No data$"
+
+gUnknown_8419C4D:: @ 8419C4D
+ .string "EXP. POINTS$"
+
+gUnknown_8419C59:: @ 8419C59
+ .string "NEXT LV.$"
+
+gUnknown_8419C62:: @ 8419C62
+ .string "{KEYGFX_DPAD_RIGHT}PAGE {KEYGFX_A_BUTTON}CANCEL$"
+
+gUnknown_8419C72:: @ 8419C72
+ .string "{KEYGFX_A_BUTTON}CANCEL$"
+
+gUnknown_8419C7B:: @ 8419C7B
+ .string "{KEYGFX_DPAD_LEFT_RIGHT}PAGE$"
+
+gUnknown_8419C82:: @ 8419C82
+ .string "{KEYGFX_DPAD_LEFT}PAGE {KEYGFX_A_BUTTON}DETAIL$"
+
+gUnknown_8419C92:: @ 8419C92
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}SWITCH$"
+
+gUnknown_8419CA2:: @ 8419CA2
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK$"
+
+gUnknown_8419CA9:: @ 8419CA9
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}DELETE$"
+
+gUnknown_8419CB9:: @ 8419CB9
+ .string "HM moves can't be\nforgotten now.$"
+
+gUnknown_8419CDA:: @ 8419CDA
+ .string "NAME: $"
+
+gUnknown_8419CE1:: @ 8419CE1
+ .string "IDNo.$"
+
+gUnknown_8419CE7:: @ 8419CE7
+ .string "MONEY$"
+
+gUnknown_8419CED:: @ 8419CED
+ .string "¥$"
+
+gUnknown_8419CEF:: @ 8419CEF
+ .string "POKéDEX$"
+
+gUnknown_8419CF7:: @ 8419CF7
+ .string "$"
+
+gUnknown_8419CF8:: @ 8419CF8
+ .string ":$"
+
+gUnknown_8419CFA:: @ 0x8419CFA
+ .string "てん$"
+
+gUnknown_8419CFD:: @ 8419CFD
+ .string "TIME$"
+
+gUnknown_8419D02:: @ 0x8419D02
+ .string "ゲ-ムポイント$"
+
+gUnknown_8419D0A:: @ 8419D0A
+ .string "'s TRAINER CARD$"
+
+gUnknown_8419D1A:: @ 8419D1A
+ .string "HALL OF FAME DEBUT $"
+
+gUnknown_8419D2F:: @ 0x8419D2F
+ .string "LINK BATTLES$"
+
+gUnknown_8419D3C:: @ 0x8419D3C
+ .string "LINK CABLE BATTLES$"
+
+gUnknown_8419D4F:: @ 8419D4F
+ .string "W:{CLEAR_TO 0x30}L:$"
+
+gUnknown_8419D57:: @ 8419D57
+ .string "POKéMON TRADES$"
+
+gUnknown_8419D66:: @ 8419D66
+ .string "UNION TRADES を BATTLES$"
+
+gUnknown_8419D7D:: @ 8419D7D
+ .string "BERRY CRUSH$"
+
+gUnknown_8419D89:: @ 8419D89
+ .string "Waiting for the other TRAINER to\nfinish reading your TRAINER CARD.$"
+
+gUnknown_8419DCC:: @ 8419DCC
+ .string "OPTION$"
+
+gUnknown_8419DD3:: @ 0x8419DD3
+ .string "TEXT SPEED$"
+
+gUnknown_8419DDE:: @ 0x8419DDE
+ .string "BATTLE SCENE$"
+
+gUnknown_8419DEB:: @ 0x8419DEB
+ .string "BATTLE STYLE$"
+
+gUnknown_8419DF8:: @ 0x8419DF8
+ .string "SOUND$"
+
+gUnknown_8419DFE:: @ 0x8419DFE
+ .string "BUTTON MODE$"
+
+gUnknown_8419E0A:: @ 0x8419E0A
+ .string "FRAME$"
+
+gUnknown_8419E10:: @ 0x8419E10
+ .string "CANCEL$"
+
+gUnknown_8419E17:: @ 0x8419E17
+ .string "SLOW$"
+
+gUnknown_8419E1C:: @ 0x8419E1C
+ .string "MID$"
+
+gUnknown_8419E20:: @ 0x8419E20
+ .string "FAST$"
+
+gUnknown_8419E25:: @ 0x8419E25
+ .string "ON$"
+
+gUnknown_8419E28:: @ 0x8419E28
+ .string "OFF$"
+
+gUnknown_8419E2C:: @ 0x8419E2C
+ .string "SHIFT$"
+
+gUnknown_8419E32:: @ 0x8419E32
+ .string "SET$"
+
+gUnknown_8419E36:: @ 0x8419E36
+ .string "MONO$"
+
+gUnknown_8419E3B:: @ 0x8419E3B
+ .string "STEREO$"
+
+gUnknown_8419E42:: @ 0x8419E42
+ .string "タイプ$"
+
+gUnknown_8419E46:: @ 0x8419E46
+ .string "HELP$"
+
+gUnknown_8419E4B:: @ 0x8419E4B
+ .string "LゅA$"
+
+gUnknown_8419E4F:: @ 0x8419E4F
+ .string "LR$"
+
+gUnknown_8419E52:: @ 8419E52
+ .string "TYPE$"
+
+gUnknown_8419E57:: @ 8419E57
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_DPAD_LEFT_RIGHT}SWITCH {KEYGFX_A_BUTTON}{KEYGFX_B_BUTTON}CANCEL$"
+
+gUnknown_8419E72:: @ 0x8419E72
+ .string "RTCを リセットします\nAで けってい Bで キャンセル$"
+
+gUnknown_8419E90:: @ 0x8419E90
+ .string "げんざいの ゲ-ムない じかん$"
+
+gUnknown_8419EA0:: @ 0x8419EA0
+ .string "ぜんかいの ゲ-ムない じかん$"
+
+gUnknown_8419EB0:: @ 0x8419EB0
+ .string "じかんを さいせってい してください$"
+
+gUnknown_8419EC3:: @ 0x8419EC3
+ .string "じかんを さいせってい しました!\nレポ-トを かいています おまちください$"
+
+gUnknown_8419EEA:: @ 0x8419EEA
+ .string "レポ-トを かきこみました!$"
+
+gUnknown_8419EF9:: @ 0x8419EF9
+ .string "レポ-トの かきこみに\nしっぱい しました‥$"
+
+gUnknown_8419F10:: @ 0x8419F10
+ .string "レポ-トが ないので\nじかんの せっていは できません!$"
+
+gUnknown_8419F2D:: @ 0x8419F2D
+ .string "ゲ-ムない じかんの しゅうせい システムが\nつかえる ように なりました!$"
+
+gUnknown_8419F54:: @ 8419F54
+ .string "SAVING…\n"
+ .string "DON'T TURN OFF THE POWER.$"
+
+// Start menu option descriptions
+gUnknown_8419F76:: @ 8419F76 // Pokedex
+ .string "A device that records POKéMON secrets\n"
+ .string "upon meeting or catching them.$"
+
+gUnknown_8419FBB:: @ 8419FBB // Pokemon
+ .string "Check and organize POKéMON that are\n"
+ .string "traveling with you in your party.$"
+
+gUnknown_841A001:: @ 841A001 // Bag
+ .string "Equipped with pockets for storing items\n"
+ .string "you bought, received, or found.$"
+
+gUnknown_841A049:: @ 841A049 // {PLAYER}
+ .string "Check your money and other game data.$"
+
+gUnknown_841A06F:: @ 841A06F // Save
+ .string "Save your game with a complete record\n"
+ .string "of your progress to take a break.$"
+
+gUnknown_841A0B7:: @ 841A0B7 // Options
+ .string "Adjust various game settings such as text\n"
+ .string "speed, game rules, etc.$"
+
+gUnknown_841A0F9:: @ 841A0F9 // Quit
+ .string "Close this MENU window.$"
+
+gUnknown_841A111:: @ 841A111 // Retire
+ .string "Retire from the SAFARI GAME and return to\n"
+ .string "the registration counter.$"
+
+ .include "data/text/quest_log.inc"
+
+gUnknown_841B285:: @ 841B285
+ .string " was used on\n$"
+
+gUnknown_841B293:: @ 841B293
+ .string ".$"
+
+gUnknown_841B295:: @ 841B295
+ .string "'s level rose to\n$"
+
+gUnknown_841B2A7:: @ 841B2A7
+ .string ".$"
+
+gUnknown_841B2A9:: @ 0x841B2A9
+ .string "{SMALL}MAX.{SIZE 0x02} HP$"
+
+gUnknown_841B2B7:: @ 0x841B2B7
+ .string "ATTACK$"
+
+gUnknown_841B2BE:: @ 0x841B2BE
+ .string "DEFENSE$"
+
+gUnknown_841B2C6:: @ 0x841B2C6
+ .string "SPEED$"
+
+gUnknown_841B2CC:: @ 0x841B2CC
+ .string "SP. ATK$"
+
+gUnknown_841B2D4:: @ 0x841B2D4
+ .string "SP. DEF$"
+
+gUnknown_841B2DC:: @ 841B2DC
+ .string "{SMALL}{EXTRA_PLUS}{SIZE 0x02}$"
+
+gUnknown_841B2E5:: @ 841B2E5
+ .string "{SMALL}-{SIZE 0x02}$"
+
+gUnknown_841B2ED:: @ 841B2ED
+ .string "1, $"
+
+gUnknown_841B2F1:: @ 841B2F1
+ .string "2, and ‥ ‥ ‥ $"
+
+gUnknown_841B2FF:: @ 0x841B2FF
+ .string "Poof!\p$"
+
+gUnknown_841B306:: @ 841B306
+ .string "{UNKNOWN_F7 0x00} forgot\n{UNKNOWN_F7 0x01}.\p$"
+
+gUnknown_841B315:: @ 841B315
+ .string "And‥\p$"
+
+gUnknown_841B31B:: @ 841B31B
+ .string "Machine set!\p$"
+
+gUnknown_841B329:: @ 841B329
+ .string "Huh?$"
+
+gUnknown_841B32E:: @ 841B32E
+ .string "{UNKNOWN_F7 0x00} learned\n{UNKNOWN_F7 0x01}!$"
+
+gUnknown_841B33D:: @ 0x841B33D
+ .string "UPPER$"
+
+gUnknown_841B343:: @ 0x841B343
+ .string "lower$"
+
+gUnknown_841B349:: @ 0x841B349
+ .string "OTHERS$"
+
+gUnknown_841B350:: @ 0x841B350
+ .string "SYMBOLS$"
+
+gUnknown_841B358:: @ 0x841B358
+ .string "REGISTER$"
+
+gUnknown_841B361:: @ 0x841B361
+ .string "EXIT$"
+
+gUnknown_841B366:: @ 0x841B366
+ .string "Quit chatting?$"
+
+gUnknown_841B375:: @ 0x841B375
+ .string "Register text where?$"
+
+gUnknown_841B38A:: @ 0x841B38A
+ .string "Register text here?$"
+
+gUnknown_841B39E:: @ 0x841B39E
+ .string "Input text.$"
+
+gUnknown_841B3AA:: @ 841B3AA
+ .string "{UNKNOWN_F7 0x00} joined the chat!$"
+
+gUnknown_841B3BE:: @ 841B3BE
+ .string "{UNKNOWN_F7 0x00} left the chat.$"
+
+gUnknown_841B3D0:: @ 0x841B3D0
+ .string "{UNKNOWN_F7 0x00}の{UNKNOWN_F7 0x01}ひきめ:$"
+
+gUnknown_841B3DA:: @ 0x841B3DA
+ .string "{UNKNOWN_F7 0x00}の{UNKNOWN_F7 0x01}ひきめは いません$"
+
+gUnknown_841B3E9:: @ 0x841B3E9
+ .string "Exiting the chat‥$"
+
+gUnknown_841B3FB:: @ 0x841B3FB
+ .string "The LEADER, {UNKNOWN_F7 0x00}, has\nleft, ending the chat.$"
+
+gUnknown_841B426:: @ 0x841B426
+ .string "The registered text has been changed.\nIs it okay to save the game?$"
+
+gUnknown_841B469:: @ 0x841B469
+ .string "There is already a saved file.\nIs it okay to overwrite it?$"
+
+gUnknown_841B4A4:: @ 0x841B4A4
+ .string "SAVING‥\nDON'T TURN OFF THE POWER.$"
+
+gUnknown_841B4C6:: @ 0x841B4C6
+ .string "{UNKNOWN_F7 0x00} saved the game.$"
+
+gUnknown_841B4D9:: @ 0x841B4D9
+ .string "If the LEADER leaves, the chat\nwill end. Is that okay?$"
+
+gUnknown_841B510:: @ 841B510
+ .string "HELLO$"
+
+gUnknown_841B516:: @ 841B516
+ .string "POKéMON$"
+
+gUnknown_841B51E:: @ 841B51E
+ .string "TRADE$"
+
+gUnknown_841B524:: @ 841B524
+ .string "BATTLE$"
+
+gUnknown_841B52B:: @ 841B52B
+ .string "LET'S$"
+
+gUnknown_841B531:: @ 841B531
+ .string "OK!$"
+
+gUnknown_841B535:: @ 841B535
+ .string "SORRY$"
+
+gUnknown_841B53B:: @ 841B53B
+ .string "YAY{EXTRA 0xF9}$"
+
+gUnknown_841B541:: @ 841B541
+ .string "THANK YOU$"
+
+gUnknown_841B54B:: @ 841B54B
+ .string "BYE-BYE!$"
+
+gUnknown_841B554:: @ 841B554
+ .string "{PLAYER} scurried to a POKéMON CENTER,\nprotecting the exhausted and fainted\nPOKéMON from further harm‥\p$"
+
+gUnknown_841B5B6:: @ 841B5B6
+ .string "{PLAYER} scurried back home, protecting\nthe exhausted and fainted POKéMON from\nfurther harm‥\p$"
+
+gUnknown_841B60E:: @ 841B60E
+ .string "PLAYER: {UNKNOWN_F7 0x00}$"
+
+gUnknown_841B619:: @ 841B619
+ .string "This document is issued in\nrecognition of your magnificent\nachievement - the completion of\nthe {UNKNOWN_F7 0x01} POKéDEX.$"
+
+gUnknown_841B684:: @ 841B684
+ .string "GAME FREAK$"
+
+gUnknown_841B68F:: @ 841B68F
+ .string "NATIONAL$"
+
+gUnknown_841B698:: @ 841B698
+ .string "KANTO$"
+
+gUnknown_841B69E:: @ 841B69E
+ .string "Clear all save data areas?$"
+
+gUnknown_841B6B9:: @ 841B6B9
+ .string "Clearing data‥\nPlease wait.$"
+
+gUnknown_841B6D5:: @ 841B6D5
+ .string "PLAYER$"
+
+gUnknown_841B6DC:: @ 841B6DC
+ .string "TIME$"
+
+gUnknown_841B6E1:: @ 0x841B6E1
+ .string ":$"
+
+gUnknown_841B6E3:: @ 841B6E3
+ .string "POKéDEX$"
+
+gUnknown_841B6EB:: @ 841B6EB
+ .string "$"
+
+gUnknown_841B6EC:: @ 841B6EC
+ .string "BADGES$"
+
+gUnknown_841B6F3:: @ 841B6F3
+ .string "$"
+
+gUnknown_841B6F4:: @ 0x841B6F4
+ .string "REGISTER$"
+
+gText_HatchedFromEgg:: @ 841B6FD
+ .string "{STR_VAR_1} hatched from the EGG!$"
+
+gText_NickHatchPrompt:: @ 841B716
+ .string "Would you like to nickname the newly\nhatched {STR_VAR_1}?$"
+
+gUnknown_841B747:: @ 841B747
+ .string "You've run out of COINS.\nGame over!$"
+
+gUnknown_841B76B:: @ 841B76B
+ .string "Quit playing?$"
+
+gUnknown_841B779:: @ 841B779
+ .string "{KEYGFX_DPAD_LEFT_RIGHT}COMBOS {KEYGFX_DPAD_DOWN}WAGER {KEYGFX_A_BUTTON}STOP {KEYGFX_B_BUTTON}EXIT$"
+
+gUnknown_841B798:: @ 0x841B798
+ .string "おしえテレビ$"
+
+gUnknown_841B79F:: @ 0x841B79F
+ .string "おしまい$"
+
+ .include "data/text/teachy_tv.inc"
+
+gString_Bill:: @ 841CB3C
+ .string "BILL$"
+
+gString_Someone:: @ 841CB41
+ .string "SOMEONE$"
+
+gString_Help:: @ 841CB49
+ .string "HELP$"
+
+gString_HelpSystem_ClearTo8:: @ 841CB4E
+ .string "{CLEAR_TO 8}$"
+
+gUnknown_841CB52:: @ 841CB52
+ .string " points$"
+
+gUnknown_841CB5A:: @ 841CB5A
+ .string " time(s)$"
+
+gUnknown_841CB63:: @ 841CB63
+ .string "POKéMON JUMP RECORDS$"
+
+ .string "Jumps in a row:$"
+
+ .string "Best score:$"
+
+ .string "EXCELLENTS in a row:$"
+
+gUnknown_841CBA9:: @ 841CBA9
+ .string "Awesome score! You've\n"
+ .string "won {UNKNOWN_F7 01} {UNKNOWN_F7 00}!$"
+
+gUnknown_841CBCA:: @ 841CBCA
+ .string "There's no room left now.$"
+
+gUnknown_841CBE4:: @ 841CBE4
+ .string "You can't hold any more!$"
+
+gUnknown_841CBFD:: @ 841CBFD
+ .string "Want to play again?$"
+
+gUnknown_841CC11:: @ 841CC11
+ .string "Somebody dropped out.\n"
+ .string "The link will be canceled.$"
+
+gUnknown_841CC42:: @ 841CC42
+ .string "SAVING…\n"
+ .string "DON'T TURN OFF THE POWER.$"
+
+gUnknown_841CC64:: @ 841CC64
+ .string "Communication standby…$"
+
+ .string "SAVING...\n"
+ .string "DON'T TURN OFF THE POWER.$"
+
+ .string "DODRIO BERRY-PICKING RECORDS$"
+
+ .string "BERRIES picked:$"
+
+ .string "Best score:$"
+
+ .string "BERRIES picked in a row with\n"
+ .string "five players:$"
+
+gUnknown_841CD03:: @ 841CD03
+ .string "Announcing BERRY-PICKING results!$"
+
+gUnknown_841CD25:: @ 841CD25
+ .string "10P 30P 50P {EXTRA 0xDD}50P$"
+
+gUnknown_841CD43:: @ 841CD43
+ .string "Announcing rankings!$"
+
+gUnknown_841CD58:: @ 841CD58
+ .string "Announcing prizes!$"
+
+ .string "1:$"
+
+ .string "2:$"
+
+ .string "3:$"
+
+ .string "4:$"
+
+ .string "5:$"
+
+gUnknown_841CD7A:: @ 841CD7A
+ .string "The first-place winner gets\n"
+ .string "this {UNKNOWN_F7 00}!$"
+
+gUnknown_841CD9F:: @ 841CD9F
+ .string "You can't hold any more...$"
+
+gUnknown_841CDBA:: @ 841CDBA
+ .string "It filled its storage space.$"
+
+gUnknown_841CDD7:: @ 841CDD7
+ .string "Want to play again?$"
+
+gUnknown_841CDEB:: @ 841CDEB
+ .string "Somebody dropped out.\n"
+ .string "The link will be canceled.$"
+
+gUnknown_841CE1C:: @ 841CE1C
+ .string " points$"
+
+gUnknown_841CE24:: @ 841CE24
+ .string "Communication standby…$"
+
+ .string " Are you ready to BERRY-CRUSH?\n"
+ .string "Please pick a BERRY for use.\p"
+ .string "$"
+
+ .string "Please wait while each member\n"
+ .string "chooses a BERRY.$"
+
+ .string " {PAUSE_MUSIC}{PLAY_BGM MUS_FANFA1}You ended up with {STR_VAR_1} units of\n"
+ .string "silky-smooth BERRY POWDER.{RESUME_MUSIC}\p"
+ .string "Your total amount of BERRY POWDER\n"
+ .string "is {STR_VAR_2}.\p"
+ .string "$"
+
+ .string " Recording your game results in the\n"
+ .string "save file.\n"
+ .string "Please wait.$"
+
+ .string " Want to play BERRY CRUSH again?$"
+
+ .string "You have no BERRIES.\n"
+ .string "The game will be canceled.$"
+
+ .string "A member dropped out.\n"
+ .string "The game will be canceled.$"
+
+ .string " Time's up.\p"
+ .string "Good BERRY POWDER could not be\n"
+ .string "made…\p"
+ .string "$"
+
+ .string " Communication standby…$"
+
+ .align 2
+gUnknown_841D020:: @ 841D020
+ .string "1. {COLOR LIGHT_GRAY}{SHADOW BLACK}{UNKNOWN_F7 0x00}$"
+
+gUnknown_841D02C:: @ 841D02C
+ .string "1. {UNKNOWN_F7 0x00}$"
+
+gUnknown_841D032:: @ 0x841D032
+ .string " times$"
+
+gUnknown_841D03B:: @ 0x841D03B
+ .string " {STR_VAR_1}.{STR_VAR_2}$"
+
+gUnknown_841D042:: @ 0x841D042
+ .string " {STR_VAR_1} BERRY$"
+
+ .align 2
+gUnknown_841D050:: @ 841D050
+ .string "Time:$"
+
+ .align 2
+gUnknown_841D058:: @ 841D058
+ .string "Pressing Speed:$"
+
+gUnknown_841D068:: @ 841D068
+ .string "Silkiness:$"
+
+ .align 2
+gUnknown_841D074:: @ 841D074
+ .string "{STR_VAR_1}$"
+
+ .align 2
+gUnknown_841D078:: @ 841D078
+ .string "min.$"
+
+ .align 2
+gUnknown_841D080:: @ 841D080
+ .string "{STR_VAR_1}.{STR_VAR_2}$"
+
+ .align 2
+gUnknown_841D088:: @ 841D088
+ .string "sec.$"
+
+ .align 2
+gUnknown_841D090:: @ 841D090
+ .string "{STR_VAR_1}.{STR_VAR_2}$"
+
+ .align 2
+gUnknown_841D098:: @ 841D098
+ .string "Times/sec.$"
+
+ .align 2
+gUnknown_841D0A4:: @ 841D0A4
+ .string "{STR_VAR_1}サ$"
+
+gUnknown_841D0A8:: @ 841D0A8
+ .string "No. of Presses Rankings$"
+
+gUnknown_841D0C0:: @ 841D0C0
+ .string "Crushing Results$"
+
+gUnknown_841D0D1:: @ 0x841D0D1
+ .string " Neatness Rankings$"
+
+gUnknown_841D0E6:: @ 0x841D0E6
+ .string " Cooperative Rankings$"
+
+gUnknown_841D0FD:: @ 0x841D0FD
+ .string " Pressing-Power Rankings$"
+
+gUnknown_841D118:: @ 841D118
+ .string "BERRY CRUSH$"
+
+gUnknown_841D124:: @ 841D124
+ .string "Pressing-Speed Rankings$"
+
+gUnknown_841D13C:: @ 841D13C
+ .string "{STR_VAR_1} PLAYERS$"
+
+ .align 2
+gUnknown_841D148:: @ 841D148
+ .string "GHOST$"
+
+gUnknown_841D14E:: @ 841D14E
+ .string "A POKéMON's on the hook!{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_841D169:: @ 841D169
+ .string "Not even a nibble‥{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_841D17E:: @ 841D17E
+ .string "It got away‥{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_841D18D:: @ 841D18D
+ .string "ROOFTOP$"
+
+ .align 2
+gUnknown_841D198:: @ 841D198
+ .string "Pokémon FireRed Version\nStaff$"
+
+gUnknown_841D1B6:: @ 0x841D1B6
+ .string " Pokémon LeafGreen Version\nStaff$"
+
+gUnknown_841D1D8:: @ 0x841D1D8
+ .string "\n\nDirector\n\n\n\n$"
+
+gUnknown_841D1E7:: @ 0x841D1E7
+ .string " \n\n\nJunichi Masuda\n\n\n$"
+
+gUnknown_841D1FD:: @ 0x841D1FD
+ .string " \nArt Director\n\nBattle Director\n\n\n$"
+
+gUnknown_841D222:: @ 0x841D222
+ .string " \n\nKen Sugimori\n\nShigeki Morimoto\n\n$"
+
+gUnknown_841D247:: @ 0x841D247
+ .string " Program Leader\n\nPlanning Leader\n\nGraphic Design Leader\n\n$"
+
+gUnknown_841D281:: @ 0x841D281
+ .string " \nTetsuya Watanabe\n\nKoji Nishino\n\nTakao Unno\n$"
+
+gUnknown_841D2B1:: @ 0x841D2B1
+ .string " Programmers\n\n\n\n\n$"
+
+gUnknown_841D2C5:: @ 0x841D2C5
+ .string " \nHiroyuki Nakamura\nMasao Taya\nSatoshi Nohara\nMiyuki Iwasawa\nDaisuke Goto\n$"
+
+gUnknown_841D312:: @ 0x841D312
+ .string " System Programmers\n\n\n\n\n\n$"
+
+gUnknown_841D32D:: @ 0x841D32D
+ .string " \nTetsuya Watanabe\nAkito Mori\nHisashi Sogabe\nSousuke Tamada\n\n$"
+
+gUnknown_841D36D:: @ 0x841D36D
+ .string " Graphic Designers\n\n\n\n\n\n$"
+
+gUnknown_841D388:: @ 0x841D388
+ .string "\nTakao Unno\nAsuka Iwashita\nKanako Eo\nHiroki Fuchino\n\n$"
+
+gUnknown_841D3BE:: @ 0x841D3BE
+ .string " \nGraphic Designers\n\n\n\n\n$"
+
+gUnknown_841D3D8:: @ 0x841D3D8
+ .string "\n\nKen Sugimori\nHironobu Yoshida\n\n\n$"
+
+gUnknown_841D3FB:: @ 0x841D3FB
+ .string " \nMusic Composition\n\n\n\n\n$"
+
+gUnknown_841D414:: @ 0x841D414
+ .string "\n\nGo Ichinose\nJunichi Masuda\n\n\n$"
+
+gUnknown_841D434:: @ 0x841D434
+ .string "\n\nSound Effects\n\n\n\n$"
+
+gUnknown_841D448:: @ 0x841D448
+ .string "\n\n\nGo Ichinose\n\n\n$"
+
+gUnknown_841D45A:: @ 0x841D45A
+ .string " \nGame Designers\n\n\n\n\n$"
+
+gUnknown_841D471:: @ 0x841D471
+ .string " \n\nJunichi Masuda\nKoji Nishino\nTetsuji Ohta\n\n$"
+
+gUnknown_841D4A1:: @ 0x841D4A1
+ .string " \nGame Designers\n\n\n\n\n$"
+
+gUnknown_841D4B9:: @ 0x841D4B9
+ .string " \n\nHitomi Sato\nShigeru Ohmori\nTadashi Takahashi\n\n$"
+
+gUnknown_841D4ED:: @ 0x841D4ED
+ .string " \nGame Scenario\n\n\n\n\n$"
+
+gUnknown_841D504:: @ 0x841D504
+ .string "\n\nHitomi Sato\nSatoshi Tajiri\n\n\n$"
+
+gUnknown_841D524:: @ 0x841D524
+ .string "\nScript Designer\n\nMap Designer\n\n\n$"
+
+gUnknown_841D546:: @ 0x841D546
+ .string " \n\nSatoshi Nohara\n\nShigeru Ohmori\n\n$"
+
+gUnknown_841D56B:: @ 0x841D56B
+ .string " \nParametric Designers\n\n\n\n\n$"
+
+gUnknown_841D587:: @ 0x841D587
+ .string " \n\nKoji Nishino\nTetsuji Ohta\nShigeki Morimoto\n\n$"
+
+gUnknown_841D5B7:: @ 0x841D5B7
+ .string " \n\nPOKéDEX Text\n\n\n\n$"
+
+gUnknown_841D5CB:: @ 0x841D5CB
+ .string " \n\n\nKenji Matsushima\n\n\n$"
+
+gUnknown_841D5E3:: @ 0x841D5E3
+ .string " POKéMON Designers\n\n\n\n\n\n$"
+
+gUnknown_841D5FC:: @ 0x841D5FC
+ .string "\nKen Sugimori\nMotofumi Fujiwara\nShigeki Morimoto\nHironobu Yoshida\n\n$"
+
+gUnknown_841D640:: @ 0x841D640
+ .string "POKéMON Designers\n\n\n\n\n\n$"
+
+gUnknown_841D658:: @ 0x841D658
+ .string "\nSatoshi Ohta\nAsuka Iwashita\nTakao Unno\nKanako Eo\nAimi Tomita\n$"
+
+gUnknown_841D697:: @ 0x841D697
+ .string " POKéMON Designers\n\n\n\n\n\n$"
+
+gUnknown_841D6B0:: @ 0x841D6B0
+ .string "\nAtsuko Nishida\nMuneo Saito\nRena Yoshikawa\nJun Okutani\n\n$"
+
+gUnknown_841D6E9:: @ 0x841D6E9
+ .string " Supporting Programmers\n\n\n\n$"
+
+gUnknown_841D707:: @ 0x841D707
+ .string " \nTeruyuki Yoshioka\nTakao Nakano\n\nSatoshi Mitsuhara\nDaisuke Hoshino\n$"
+
+gUnknown_841D74C:: @ 0x841D74C
+ .string "\n\nNCL Product Testing\n\n\n\n$"
+
+gUnknown_841D766:: @ 0x841D766
+ .string " \n\n\nNCL Super Mario Club\n\n\n$"
+
+gUnknown_841D783:: @ 0x841D783
+ .string " Special Thanks\n\n\n\n\n\n$"
+
+gUnknown_841D799:: @ 0x841D799
+ .string " \nHiro Nakamura\nHiroyuki Uesugi\nTeruki Murakawa\n\nKazuya Suyama\n$"
+
+gUnknown_841D7DB:: @ 0x841D7DB
+ .string " Special Thanks\n\n\n\n\n\n$"
+
+gUnknown_841D7F1:: @ 0x841D7F1
+ .string " \nKenji Tominaga\n\nKenjiro Ito\nTomotaka Komura\nMichiko Takizawa\n$"
+
+gUnknown_841D833:: @ 0x841D833
+ .string " Special Thanks\n\n\n\n\n\n$"
+
+gUnknown_841D849:: @ 0x841D849
+ .string " \nMakiko Takada\nMikiko Ohashi\nShusaku Egami\nTakanao Kondo\nRui Kawaguchi\n$"
+
+gUnknown_841D894:: @ 0x841D894
+ .string "\n\nBraille Code Check\n\n\n\n$"
+
+gUnknown_841D8AD:: @ 0x841D8AD
+ .string " \n\n\nJapan Braille Library\n\n\n$"
+
+gUnknown_841D8CC:: @ 0x841D8CC
+ .string "Information Supervisors\n\n\n\n\n\n$"
+
+gUnknown_841D8EA:: @ 0x841D8EA
+ .string " \nHiroki Enomoto\nKazuyuki Terada\nYuri Sakurai\nYumi Funasaka\nNaoko Yanase\n$"
+
+gUnknown_841D935:: @ 0x841D935
+ .string " Coordinators\n\n\n\n\n\n$"
+
+gUnknown_841D94B:: @ 0x841D94B
+ .string " \nAzusa Tajima\nAkira Kinashi\nKazuki Yoshihara\n\nRetsuji Nomoto\n$"
+
+gUnknown_841D98A:: @ 0x841D98A
+ .string " \nTask Managers\n\n\n\n\n$"
+
+gUnknown_841D9A0:: @ 0x841D9A0
+ .string "\n\nHitoshi Yamagami\nGakuji Nomoto\n\n\n$"
+
+gUnknown_841D9C4:: @ 0x841D9C4
+ .string "\nProducers\n\n\n\n\n$"
+
+gUnknown_841D9D4:: @ 0x841D9D4
+ .string "\n\nHiroyuki Jinnai\nTakehiro Izushi\nHiroaki Tsuru\n\n$"
+
+gUnknown_841DA06:: @ 0x841DA06
+ .string " \n\nExecutive Director\n\n\n\n$"
+
+gUnknown_841DA21:: @ 0x841DA21
+ .string " \n\n\nSatoshi Tajiri\n\n\n$"
+
+gUnknown_841DA39:: @ 0x841DA39
+ .string " \n\nExecutive Producer\n\n\n\n$"
+
+gUnknown_841DA55:: @ 0x841DA55
+ .string " \n\n\nSatoru Iwata\n\n\n$"
+
+gUnknown_841DA6B:: @ 0x841DA6B
+ .string " \n\nExecutive Producer\n\n\n\n$"
+
+gUnknown_841DA85:: @ 0x841DA85
+ .string " \n\n\nTsunekaz Ishihara\n\n\n$"
+
+gUnknown_841DAA0:: @ 0x841DAA0
+ .string "\nEnglish Version Coordinators\n\n\n\n\n$"
+
+gUnknown_841DAC3:: @ 0x841DAC3
+ .string " \n\nHiro Nakamura\nSeth McMahill\n\n\n$"
+
+gUnknown_841DAE5:: @ 0x841DAE5
+ .string " \nTranslator\n\nText Editor\n\n\n$"
+
+gUnknown_841DB04:: @ 0x841DB04
+ .string "\n\nNob Ogasawara\n\nTeresa Lillygren\n\n$"
+
+gUnknown_841DB28:: @ 0x841DB28
+ .string "Programmers\n\n\n\n\n\n$"
+
+gUnknown_841DB3A:: @ 0x841DB3A
+ .string " \nTeruki Murakawa\nSouichi Yamamoto\nYuichiro Ito\nAkira Kinashi\n\n$"
+
+gUnknown_841DB7B:: @ 0x841DB7B
+ .string " \nEnvironment を Tool Programmers\n\n\n\n\n$"
+
+gUnknown_841DBA1:: @ 0x841DBA1
+ .string " \n\nTeruki Murakawa\nSouichi Yamamoto\nKimiko Nakamichi\n\n$"
+
+gUnknown_841DBDA:: @ 0x841DBDA
+ .string " NOA Product Testing\n\n\n\n\n\n$"
+
+gUnknown_841DBF6:: @ 0x841DBF6
+ .string " \nThomas Hertzog\nKathy Huguenard\nMika Kurosawa\n\n\n$"
+
+gUnknown_841DC29:: @ 0x841DC29
+ .string " Braille Code Check\n\n\n\n\n\n$"
+
+gUnknown_841DC45:: @ 0x841DC45
+ .string " \nNational Federation\n{CLEAR_TO 0x13}of the Blind\nPatricia A. Maurer\nJapan Braille Library\nEuropean Blind Union\n$"
+
+gUnknown_841DCAC:: @ 0x841DCAC
+ .string "\nBraille Code Check\n\n\n\n\n$"
+
+gUnknown_841DCC5:: @ 0x841DCC5
+ .string " \n\nNational Information Library\n{CLEAR_TO 0x2D}Service\nMargaret Campion\n\n$"
+
+gUnknown_841DD05:: @ 0x841DD05
+ .string " Special Thanks\n\n\n\n\n\n$"
+
+gUnknown_841DD1D:: @ 0x841DD1D
+ .string " \nTakehiro Izushi\nMotoyasu Tojima\nHitoshi Yamagami\nHiroyuki Uesugi\n\n$"
+
+gUnknown_841DD64:: @ 0x841DD64
+ .string "Special Thanks\n\n\n\n\n\n$"
+
+gUnknown_841DD79:: @ 0x841DD79
+ .string " \nNicola Pratt-Barlow\nShellie Dow\nAnthony Howitt\nNaoko Saeki\nKyoko Onishi\n$"
+
+gUnknown_841DDC6:: @ 0x841DDC6
+ .string " \nBraille Code Check\n\n\n\n\n$"
+
+gUnknown_841DDE1:: @ 0x841DDE1
+ .string " \n\nThe Royal New Zealand\nFoundation of the Blind\nGreg Moran\n\n$"
+
+gUnknown_841DE21:: @ 0x841DE21
+ .string " \n\nGraphic Designer\n\n\n\n$"
+
+gUnknown_841DE3B:: @ 0x841DE3B
+ .string " \n\n\nAkira Kinashi\n\n\n$"
+
+gJPText_MysteryGift:: @ 841DE50
+ .string "$"
+
+gJPText_DecideStop:: @ 841DE51
+ .string "$"
+
+gUnknown_841DE52:: @ 841DE52
+ .string "$"
+
+gUnknown_841DE53:: @ 841DE53
+ .string "$"
+
+gUnknown_841DE54:: @ 841DE54
+ .string "$"
+
+gUnknown_841DE55:: @ 841DE55
+ .string "カ-ドeリ-ダ-{EXTRA_PLUS}の ‘つうしん'を\nえらんで Aボタンを おしてください$"
+
+gUnknown_841DE7C:: @ 841DE7C
+ .string "$"
+
+gUnknown_841DE7D:: @ 841DE7D
+ .string "$"
+
+gUnknown_841DE7E:: @ 841DE7E
+ .string "カ-ドeリ-ダ-{EXTRA_PLUS}と\nつうしん できません$"
+
+gUnknown_841DE95:: @ 841DE95
+ .string "$"
+
+gUnknown_841DE96:: @ 841DE96
+ .string "$"
+
+gUnknown_841DE97:: @ 841DE97
+ .string "$"
+
+gUnknown_841DE98:: @ 841DE98
+ .string "$"
+
+gUnknown_841DE99:: @ 841DE99
+ .string "$"
+
+gUnknown_841DE9A:: @ 841DE9A
+ .string "$"
+
+gUnknown_841DE9B:: @ 841DE9B
+ .string "$"
+
+gUnknown_841DE9C:: @ 841DE9C
+ .string "$"
+
+gUnknown_841DE9D:: @ 841DE9D
+ .string "Communication error…\n"
+ .string "Please check all connections,\n"
+ .string "then turn the power OFF and ON.$"
+
+gUnknown_841DEF0:: @ 841DEF0
+ .string "Communication error…$"
+
+gUnknown_841DF05:: @ 841DF05
+ .string "Move closer to your link partner(s).\n"
+ .string "Avoid obstacles between partners.$"
+
+gUnknown_841DF4C:: @ 841DF4C
+ .string "A Button: Registration Counter$"
+
+gUnknown_841DF6B:: @ 841DF6B
+ .string "A Button: Title Screen$"
+
+gUnknown_841DF82:: @ 841DF82
+ .string "{STR_VAR_1}P LINK$"
+
+gUnknown_841DF8B:: @ 841DF8B
+ .string "BRONZE$"
+
+gUnknown_841DF92:: @ 841DF92
+ .string "COPPER$"
+
+gUnknown_841DF99:: @ 841DF99
+ .string "SILVER$"
+
+gUnknown_841DFA0:: @ 841DFA0
+ .string "GOLD$"
+
+gUnknown_841DFA5:: @ 841DFA5
+ .string "{KEYGFX_A_BUTTON}NEXT$"
+
+gUnknown_841DFAC:: @ 841DFAC
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}END$"
+
+gUnknown_841DFBE:: @ 841DFBE
+ .string "{KEYGFX_A_BUTTON}{KEYGFX_B_BUTTON}CANCEL$"
+
+gUnknown_841DFC9:: @ 841DFC9
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}CANCEL$"
+
+ @ easy chat categories
+ .string "POKéMON$"
+
+ .string "TRAINER$"
+
+ .string "STATUS$"
+
+ .string "BATTLE$"
+
+ .string "GREETINGS$"
+
+ .string "PEOPLE$"
+
+ .string "VOICES$"
+
+ .string "SPEECH$"
+
+ .string "ENDINGS$"
+
+ .string "FEELINGS$"
+
+ .string "CONDITIONS$"
+
+ .string "ACTIONS$"
+
+ .string "LIFESTYLE$"
+
+ .string "HOBBIES$"
+
+ .string "TIME$"
+
+ .string "MISC.$"
+
+ .string "ADJECTIVES$"
+
+ .string "EVENTS$"
+
+ .string "MOVE 1$"
+
+ .string "MOVE 2$"
+
+ .string "TRENDY SAYING$"
+
+ .string "POKéMON2$"
+
+ @ trade-related
+gUnknown_841E093:: @ 841E093
+ .string "???$"
+
+ .string "$"
+
+ .string "Lv$"
+
+ .string "---$"
+
+gUnknown_841E09F:: @ 841E09F
+ .string "????$"
+
+ .string "$"
+
+gUnknown_841E0A5:: @ 841E0A5
+ .string "Is this trade okay?$"
+
+ .string "CANCEL$"
+
+ .string "Choose a POKéMON.$"
+
+ .string "SUMMARY$"
+
+ .string "TRADE$"
+
+ .string "Cancel trade?$"
+
+ .string "Press the B Button to exit.$"
+
+ .string "SUMMARY$"
+
+ .string "TRADE$"
+
+ .string "{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}Communication standby…\n"
+ .string "Please wait.$"
+
+ .string "{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}The trade has been canceled.$"
+
+ .string "{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}That's your only POKéMON\n"
+ .string "for battle.$"
+
+ .string "{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}Waiting for your friend\n"
+ .string "to finish…$"
+
+ .string "Your friend wants\n"
+ .string "to trade POKéMON.$"
+
+gUnknown_841E1E9:: @ 841E1E9
+ .string "{STR_VAR_2} will be\n"
+ .string "sent to {STR_VAR_1}.$"
+
+gUnknown_841E200:: @ 841E200
+ .string "Bye-bye, {STR_VAR_2}!$"
+
+gUnknown_841E20D:: @ 841E20D
+ .string "{STR_VAR_1} sent over {STR_VAR_3}.$"
+
+gUnknown_841E21E:: @ 841E21E
+ .string "Take good care of {STR_VAR_3}!$"
+
+gUnknown_841E234:: @ 841E234
+ .string "From $"
+
+gUnknown_841E23A:: @ 841E23A
+ .string "$"
+
+gUnknown_841E23B:: @ 841E23B
+ .string "$"
+
+gUnknown_841E23C:: @ 841E23C
+ .string "$"
+
+gUnknown_841E23D:: @ 841E23D
+ .string "$"
+
+gUnknown_841E23E:: @ 841E23E
+ .string "$"
+
+gUnknown_841E23F:: @ 841E23F
+ .string "$"
+
+gUnknown_841E240:: @ 841E240
+ .string "$"
+
+gUnknown_841E241:: @ 841E241
+ .string "$"
+
+gUnknown_841E242:: @ 841E242
+ .string "$"
+
+gUnknown_841E243:: @ 841E243
+ .string "$"
+
+gUnknown_841E244:: @ 841E244
+ .string "$"
+
+gUnknown_841E245:: @ 841E245
+ .string "Wireless Communication Status$"
+
+gUnknown_841E263:: @ 841E263
+ .string "People trading:$"
+
+gUnknown_841E273:: @ 841E273
+ .string "People battling:$"
+
+gUnknown_841E284:: @ 841E284
+ .string "People in the UNION ROOM:$"
+
+gUnknown_841E29E:: @ 841E29E
+ .string "People communicating:$"
+
+gUnknown_841E2B4:: @ 841E2B4
+ .string "{UNKNOWN_F7 0x00} players$"
+
+gUnknown_841E2BF:: @ 841E2BF
+ .string "{UNKNOWN_F7 0x01} player$"
+
+gUnknown_841E2C9:: @ 841E2C9
+ .string "{UNKNOWN_F7 0x02} players$"
+
+gUnknown_841E2D4:: @ 841E2D4
+ .string "{UNKNOWN_F7 0x03} players$"
+
+gUnknown_841E2DF:: @ 841E2DF
+ .string "{KEYGFX_DPAD_ANY}えらぶ:{KEYGFX_A_BUTTON}けってい$"
+
+gUnknown_841E2EC:: @ 841E2EC
+ .string "{KEYGFX_B_BUTTON}CANCEL$"
+
+gUnknown_841E2F5:: @ 841E2F5
+ .string "{COLOR BLUE}{SHADOW YELLOW} たいせんの くみあわせ\n{COLOR RED}{SHADOW GREEN}じぶんの ばしょをきめて ください$"
+
+gUnknown_841E322:: @ 841E322
+ .string "{EXTRA_ID}$"
+
+gUnknown_841E325:: @ 841E325
+ .string "Communication standby…$"
+
+gDaycareText_GetAlongVeryWell:: @ 841E33C
+ .string "The two seem to get along\n"
+ .string "very well.$"
+
+gDaycareText_GetAlong:: @ 841E361
+ .string "The two seem to get along.$"
+
+gDaycareText_DontLikeOther:: @ 841E37C
+ .string "The two don't seem to like\n"
+ .string "each other much.$"
+
+gDaycareText_PlayOther:: @ 841E3A8
+ .string "The two prefer to play with other\n"
+ .string "POKéMON than each other.$"
+
+gUnknown_841E3E3:: @ 841E3E3
+ .string "Teach which move to {STR_VAR_1}?$"
+
+gUnknown_841E3FB:: @ 841E3FB
+ .string "Teach {STR_VAR_2}?$"
+
+gUnknown_841E405:: @ 841E405
+ .string "{STR_VAR_1} learned\n{STR_VAR_2}.$"
+
+gUnknown_841E414:: @ 841E414
+ .string "{STR_VAR_1} is trying to learn\n{STR_VAR_2}.\pBut {STR_VAR_1} can't learn more\nthan four moves.\pDelete an older move to make\nroom for {STR_VAR_2}?$"
+
+gUnknown_841E481:: @ 841E481
+ .string "Stop learning {STR_VAR_2}?$"
+
+gUnknown_841E493:: @ 841E493
+ .string "{PAUSE 0x20}1, {PAUSE 0x0F}2, and {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}{PLAY_SE SE_TRACK_MOVE}Poof!\p$"
+
+gUnknown_841E4C0:: @ 841E4C0
+ .string "{STR_VAR_1} forgot {STR_VAR_3}.\pAnd‥\p{STR_VAR_1}\nlearned {STR_VAR_2}.$"
+
+gUnknown_841E4E2:: @ 841E4E2
+ .string "Give up trying to teach a new\nmove to {STR_VAR_1}?$"
+
+gUnknown_841E50C:: @ 841E50C
+ .string "Which move should be forgotten?\p$"
+
+gUnknown_841E52D:: @ 0x841E52D
+ .string "----------$"
+
+gUnknown_841E538:: @ 841E538
+ .string "Communication standby‥\nAwaiting another player to choose.$"
+
+gUnknown_841E572:: @ 841E572
+ .string "The battle was refused.{PAUSE 0x3C}$"
+
+gUnknown_841E58D:: @ 841E58D
+ .string "Refused the battle.{PAUSE 0x3C}$"
+
+gFameCheckerText_MainScreenUI:: @ 841E5A4
+ .string "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$"
+
+gFameCheckerText_PickScreenUI:: @ 841E5B9
+ .string "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$"
+
+gFameCheckerText_FlavorTextUI:: @ 841E5D2
+ .string "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {KEYGFX_B_BUTTON}CANCEL$"
+
+gFameCheckerOakName:: @ 841E5E9
+ .string "OAK$"
+
+gFameCheckerDaisyName:: @ 841E5ED
+ .string "DAISY$"
+
+gFameCheckerBillName:: @ 841E5F3
+ .string "BILL$"
+
+gFameCheckerMrFujiName:: @ 841E5F8
+ .string "FUJI$"
+
+gText_VarietyOfEventsImportedWireless:: @ 841E5FD
+ .string "A variety of events will be imported\n"
+ .string "over Wireless Communication.$"
+
+gText_WonderCardsInPossession:: @ 841E63F
+ .string "Read the WONDER CARDS in your\n"
+ .string "possession.$"
+
+gText_ReadNewsThatArrived:: @ 841E669
+ .string "Read the NEWS that arrived.$"
+
+gText_ReturnToTitle:: @ 841E685
+ .string "Return to the title screen.$"
+
+gText_DontHaveCardNewOneInput:: @ 841E6A1
+ .string "You don't have a WONDER CARD,\n"
+ .string "so a new CARD will be input.$"
+
+gText_DontHaveNewsNewOneInput:: @ 841E6DC
+ .string "You don't have any WONDER NEWS,\n"
+ .string "so new NEWS will be input.$"
+
+gText_WhereShouldCardBeAccessed:: @ 841E717
+ .string "Where should the WONDER CARD\n"
+ .string "be accessed?$"
+
+gText_WhereShouldNewsBeAccessed:: @ 841E741
+ .string "Where should the WONDER NEWS\n"
+ .string "be accessed?$"
+
+gUnknown_841E76B:: @ 841E76B
+ .string "Link standby...\n"
+ .string "... ... B Button: Cancel$"
+
+gText_Communicating:: @ 841E794
+ .string "Communicating…$"
+
+gText_CommunicationCompleted:: @ 841E7A3
+ .string "Communication completed.$"
+
+gText_CommunicationError:: @ 841E7BC
+ .string "Communication error.$"
+
+gText_CommunicationCanceled:: @ 841E7D1
+ .string "Communication has been canceled.$"
+
+gText_ThrowAwayWonderCard:: @ 841E7F2
+ .string "Throw away the WONDER CARD\n"
+ .string "and input a new CARD?$"
+
+gText_HaventReceivedCardsGift:: @ 841E823
+ .string "You haven't received the CARD's gift\n"
+ .string "yet. Input a new CARD anyway?$"
+
+gText_WonderCardReceivedFrom:: @ 841E866
+ .string "A WONDER CARD has been received\n"
+ .string "from {STR_VAR_1}.$"
+
+gText_WonderNewsReceivedFrom:: @ 841E88F
+ .string "A WONDER NEWS item has been\n"
+ .string "received from {STR_VAR_1}.$"
+
+gText_WonderCardReceived:: @ 841E8BD
+ .string "A new WONDER CARD has been\n"
+ .string "received.$"
+
+gText_WonderNewsReceived:: @ 841E8E2
+ .string "A new WONDER NEWS item has been\n"
+ .string "received.$"
+
+gText_NewStampReceived:: @ 841E90C
+ .string "A new STAMP has been received.$"
+
+gText_NewTrainerReceived:: @ 841E92B
+ .string "A new TRAINER has arrived.$"
+
+gText_AlreadyHadCard:: @ 841E946
+ .string "You already had that\n"
+ .string "WONDER CARD.$"
+
+gText_AlreadyHadNews:: @ 841E968
+ .string "You already had that\n"
+ .string "WONDER NEWS item.$"
+
+gText_AlreadyHadStamp:: @ 841E98F
+ .string "You already had that\n"
+ .string "STAMP.$"
+
+gText_NoMoreRoomForStamps:: @ 841E9AB
+ .string "There's no more room for adding\n"
+ .string "STAMPS.$"
+
+gText_RecordUploadedViaWireless:: @ 841E9D3
+ .string "Your record has been uploaded via\n"
+ .string "WIRELESS COMMUNICATION.$"
+
+gText_CantAcceptCardFromTrainer:: @ 841EA0D
+ .string "You can't accept a WONDER CARD\n"
+ .string "from this TRAINER.$"
+
+gText_CantAcceptNewsFromTrainer:: @ 841EA3F
+ .string "You can't accept WONDER NEWS\n"
+ .string "from this TRAINER.$"
+
+gText_NothingSentOver:: @ 841EA6F
+ .string "Nothing was sent over…$"
+
+gText_WhatToDoWithCards:: @ 841EA86
+ .string "What would you like to do\n"
+ .string "with the WONDER CARDS?$"
+
+gText_WhatToDoWithNews:: @ 841EAB7
+ .string "What would you like to do\n"
+ .string "with the WONDER NEWS?$"
+
+gText_SendingWonderCard:: @ 841EAE7
+ .string "Sending your WONDER CARD…$"
+
+gText_SendingWonderNews:: @ 841EB01
+ .string "Sending your WONDER NEWS item…$"
+
+gText_WonderCardSentTo:: @ 841EB20
+ .string "Your WONDER CARD has been sent\n"
+ .string "to {STR_VAR_1}.$"
+
+gText_WonderNewsSentTo:: @ 841EB46
+ .string "Your WONDER NEWS item has been\n"
+ .string "sent to {STR_VAR_1}.$"
+
+gText_StampSentTo:: @ 841EB71
+ .string "A STAMP has been sent to {STR_VAR_1}.$"
+
+gText_GiftSentTo:: @ 841EB8E
+ .string "A GIFT has been sent to {STR_VAR_1}.$"
+
+gText_OtherTrainerHasCard:: @ 841EBAA
+ .string "The other TRAINER has the same\n"
+ .string "WONDER CARD already.$"
+
+gText_OtherTrainerHasNews:: @ 841EBDE
+ .string "The other TRAINER has the same\n"
+ .string "WONDER NEWS already.$"
+
+gText_OtherTrainerHasStamp:: @ 841EC12
+ .string "The other TRAINER has the same\n"
+ .string "STAMP already.$"
+
+gText_OtherTrainerCanceled:: @ 841EC40
+ .string "The other TRAINER canceled\n"
+ .string "communication.$"
+
+gText_CantSendGiftToTrainer:: @ 841EC6A
+ .string "You can't send a MYSTERY GIFT to\n"
+ .string "this TRAINER.$"
+
+gText_IfThrowAwayCardEventWontHappen:: @ 841EC99
+ .string "If you throw away the CARD,\n"
+ .string "its event won't happen. Okay?$"
+
+gText_OkayToDiscardNews:: @ 841ECD3
+ .string "Is it okay to discard this\n"
+ .string "NEWS item?$"
+
+gText_HaventReceivedGiftOkayToDiscard:: @ 841ECF9
+ .string "You haven't received the\n"
+ .string "GIFT. Is it okay to discard?$"
+
+gText_DataWillBeSaved:: @ 841ED2F
+ .string "Data will be saved.\n"
+ .string "Please wait.$"
+
+gText_SaveCompletedPressA:: @ 841ED50
+ .string "Save completed.\n"
+ .string "Please press the A Button.$"
+
+gText_WonderCardThrownAway:: @ 841ED7B
+ .string "The WONDER CARD was thrown away.$"
+
+gText_WonderNewsThrownAway:: @ 841ED9C
+ .string "The WONDER NEWS was thrown away.$"
+
+gText_MysteryGift:: @ 841EDBD
+ .string "MYSTERY GIFT$"
+
+gText_PickOKCancel:: @ 841EDCA
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}EXIT$"
+
+gText_WonderCards::
+ .string "WONDER CARDS$"
+
+gText_WonderNews::
+ .string "WONDER NEWS$"
+
+gText_WirelessCommunication::
+ .string "WIRELESS COMMUNICATION$"
+
+gText_Friend2::
+ .string "FRIEND$"
+
+gText_Exit3::
+ .string "EXIT$"
+
+gText_Receive::
+ .string "RECEIVE$"
+
+gText_Send::
+ .string "SEND$"
+
+gText_Toss::
+ .string "TOSS$"
+
+gUnknown_841EE2B:: @ 841EE2B
+ .string "DEL. ALL{CLEAR_TO 0x57}CANCEL{CLEAR_TO 0xA4}OK$"
+
diff --git a/data/text/help_system.inc b/data/text/help_system.inc
new file mode 100644
index 000000000..a85af88a8
--- /dev/null
+++ b/data/text/help_system.inc
@@ -0,0 +1,1879 @@
+gUnknown_81B2DF8:: @ 81B2DF8
+ .string "What should I do in this situation?$"
+
+gUnknown_81B2E1C:: @ 81B2E1C
+ .string "How do I do this?$"
+
+gUnknown_81B2E2E:: @ 81B2E2E
+ .string "What does this term mean?$"
+
+gUnknown_81B2E48:: @ 81B2E48
+ .string "About this game$"
+
+gUnknown_81B2E58:: @ 81B2E58
+ .string "Type Matchup List$"
+
+gUnknown_81B2E6A:: @ 81B2E6A
+ .string "EXIT$"
+
+gUnknown_81B2E6F:: @ 81B2E6F
+ .string "CANCEL$"
+
+gUnknown_81B2E76::
+ .string "じぶんの ちからで やってみよう!$"
+
+gUnknown_81B2E88:: @ 81B2E88
+ .string "Select to obtain hints for getting\n"
+ .string "over challenging situations.$"
+
+gUnknown_81B2EC8:: @ 81B2EC8
+ .string "Detailed instructions are given for\n"
+ .string "various operations.$"
+
+gUnknown_81B2F00:: @ 81B2F00
+ .string "Detailed descriptions are given for\n"
+ .string "terms that appear in the game.$"
+
+gUnknown_81B2F43:: @ 81B2F43
+ .string "Detailed descriptions are given\n"
+ .string "about this game.$"
+
+gUnknown_81B2F74:: @ 81B2F74
+ .string "The matchups of POKéMON types\n"
+ .string "and moves are listed.$"
+
+gUnknown_81B2FA9:: @ 81B2FA9
+ .string "Select to exit the HELP System.$"
+
+gUnknown_81B2FC9:: @ 81B2FC9
+ .string "Greetings! This is the HELP System.\n"
+ .string "Call me up whenever and wherever you\l"
+ .string "need by p"
+
+gUnknown_81B301B:: @ 81B301B
+ .string "ressing the L or R Button.\l"
+ .string "The help messages change to suit the\l"
+ .string "situation, so check them often, please.$"
+
+gUnknown_81B3083:: @ 81B3083
+ .string "I'm playing for the first time. Help!$"
+
+gUnknown_81B30A9:: @ 81B30A9
+ .string "What should I be doing?$"
+
+gUnknown_81B30C1:: @ 81B30C1
+ .string "I can't get out of a room!$"
+
+gUnknown_81B30DC:: @ 81B30DC
+ .string "I can't find the person I want.$"
+
+gUnknown_81B30FC:: @ 81B30FC
+ .string "I've talked to everyone. Now what?$"
+
+gUnknown_81B311F:: @ 81B311F
+ .string "There's someone blocking my way!$"
+
+gUnknown_81B3140:: @ 81B3140
+ .string "I can't go on!$"
+
+gUnknown_81B314F:: @ 81B314F
+ .string "I'm out of things to do.$"
+
+gUnknown_81B3168:: @ 81B3168
+ .string "What happened to the item I got?$"
+
+gUnknown_81B3189:: @ 81B3189
+ .string "What are the basics of my adventure?$"
+
+gUnknown_81B31AE:: @ 81B31AE
+ .string "How are roads and forests different?$"
+
+gUnknown_81B31D3:: @ 81B31D3
+ .string "How are caves different?$"
+
+gUnknown_81B31EC:: @ 81B31EC
+ .string "How do I progress?$"
+
+gUnknown_81B31FF:: @ 81B31FF
+ .string "When can I use items?$"
+
+gUnknown_81B3215:: @ 81B3215
+ .string "What's a battle?$"
+
+gUnknown_81B3226:: @ 81B3226
+ .string "How do I prepare for battle?$"
+
+gUnknown_81B3243:: @ 81B3243
+ .string "What is a POKéMON's vitality?$"
+
+gUnknown_81B3261:: @ 81B3261
+ .string "My POKéMON are hurt!$"
+
+gUnknown_81B3276:: @ 81B3276
+ .string "What is a status problem?$"
+
+gUnknown_81B3290:: @ 81B3290
+ .string "What happens if all my POKéMON faint?$"
+
+gUnknown_81B32B6:: @ 81B32B6
+ .string "I can't catch POKéMON!$"
+
+gUnknown_81B32CD:: @ 81B32CD
+ .string "I ran out of POTIONS.$"
+
+gUnknown_81B32E3:: @ 81B32E3
+ .string "Can I buy POKé BALLS?$"
+
+gUnknown_81B32F9:: @ 81B32F9
+ .string "What's a TRAINER?$"
+
+gUnknown_81B330B:: @ 81B330B
+ .string "How do I win against a TRAINER?$"
+
+gUnknown_81B332B:: @ 81B332B
+ .string "Where do POKéMON appear?$"
+
+gUnknown_81B3344:: @ 81B3344
+ .string "What are POKéMON moves?$"
+
+gUnknown_81B335C:: @ 81B335C
+ .string "What are HIDDEN moves?$"
+
+gUnknown_81B3373:: @ 81B3373
+ .string "What moves should I use?$"
+
+gUnknown_81B338C:: @ 81B338C
+ .string "I want to add more moves.$"
+
+gUnknown_81B33A6:: @ 81B33A6
+ .string "I want to make my POKéMON stronger.$"
+
+gUnknown_81B33CA:: @ 81B33CA
+ .string "The foe POKéMON are too strong!$"
+
+gUnknown_81B33EA:: @ 81B33EA
+ .string "What do I do in a cave?$"
+
+gUnknown_81B3402:: @ 81B3402
+ .string "There's nothing that I want to know!$"
+
+gUnknown_81B3427:: @ 81B3427
+ .string "What's a POKéMON CENTER?$"
+
+gUnknown_81B3440:: @ 81B3440
+ .string "What's a POKéMON MART?$"
+
+gUnknown_81B3457:: @ 81B3457
+ .string "I want to end the game.$"
+
+gUnknown_81B346F:: @ 81B346F
+ .string "What's a POKéMON?$"
+
+gUnknown_81B3481:: @ 81B3481
+ .string "What is that person like?$"
+
+gUnknown_81B349B:: @ 81B349B
+ .string "What does a HIDDEN move do?$"
+
+gUnknown_81B34B7:: @ 81B34B7
+ .string "What do I do in a SAFARI GAME?$"
+
+gUnknown_81B34D6:: @ 81B34D6
+ .string "What are the SAFARI GAME rules?$"
+
+gUnknown_81B34F6:: @ 81B34F6
+ .string "I want to end this SAFARI GAME!$"
+
+gUnknown_81B3516:: @ 81B3516
+ .string "What is a GYM?$"
+
+gUnknown_81B3525:: @ 81B3525
+ .string "You become the main character,\n"
+ .string "exploring the world of POKéMON.\l"
+ .string "By talking to people and solving\l"
+ .string "mysteries, new paths will open to you.\l"
+ .string "Strive for the goal together with your\l"
+ .string "wonderful POKéMON.$"
+
+gUnknown_81B35E6:: @ 81B35E6
+ .string "When you come across another person,\n"
+ .string "go up to them and press the A Button.\l"
+ .string "That will get them to talk and interact\l"
+ .string "with your character. You may also\l"
+ .string "examine various items and objects in\l"
+ .string "the same way. Talk to people and check\l"
+ .string "things often to obtain information.$"
+
+gUnknown_81B36EB:: @ 81B36EB
+ .string "On the stairs or the exits of a\n"
+ .string "building is a red mat. Move your\l"
+ .string "character to stand on top of the\l"
+ .string "red mat. Press the {EXTRA_PLUS} Control Pad \l"
+ .string "toward the stairs or the exit to\l"
+ .string "advance.$"
+
+gUnknown_81B379A:: @ 81B379A
+ .string "This isn't something you should worry\n"
+ .string "about too much.\l"
+ .string "Talk to other people, check signs,\l"
+ .string "check things, and so on.\l"
+ .string "Sometimes, you may need to just move\l"
+ .string "to a new town or place.$"
+
+gUnknown_81B3849:: @ 81B3849
+ .string "Try moving on to a new road, town, or\n"
+ .string "place.$"
+
+gUnknown_81B3876:: @ 81B3876
+ .string "There could be something in the town\n"
+ .string "or inside a building that is the cause.\l"
+ .string "Try talking to the people in the area\l"
+ .string "again. If there is a problem that they\l"
+ .string "need solved, you may have to help.\l"
+ .string "Afterwards, try talking to the person\l"
+ .string "blocking your way again.$"
+
+gUnknown_81B3972:: @ 81B3972
+ .string "Try talking to people by going up to\n"
+ .string "them and pressing the A Button.\l"
+ .string "Also, try checking things like odd trees\l"
+ .string "and strange rocks with the A Button.\l"
+ .string "Press the {EXTRA_PLUS} Control Pad and try going\l"
+ .string "to places that look impassable, too.$"
+
+gUnknown_81B3A51:: @ 81B3A51
+ .string "Try going to places where you \n"
+ .string "haven't visited yet.\l"
+ .string "Also, check everything that looks\l"
+ .string "suspicious by pressing the A Button.$"
+
+gUnknown_81B3ACC:: @ 81B3ACC
+ .string "Any item that you are given by another\n"
+ .string "character goes in your BAG.\l"
+ .string "The item is automatically sorted and\l"
+ .string "placed in one of three pockets.\l"
+ .string "For instructions on the BAG's use,\l"
+ .string "please refer to the HELP System's\l"
+ .string "“How do I do this?” heading.$"
+
+gUnknown_81B3BB6:: @ 81B3BB6
+ .string "If POKéMON are hurt in battle,\n"
+ .string "take them to a POKéMON CENTER and\l"
+ .string "have them healed by the staff.\l"
+ .string "Get in the habit of saving your\l"
+ .string "game and recording your progress.\l"
+ .string "Stock up on healing items at\l"
+ .string "POKéMON MARTS before traveling far.$"
+
+gUnknown_81B3C99:: @ 81B3C99
+ .string "Forests are basically the same as\n"
+ .string "roads but they can be like mazes.\l"
+ .string "All forests have a way out, so don't\l"
+ .string "give up if you get lost.$"
+
+gUnknown_81B3D1B:: @ 81B3D1B
+ .string "Caves are dark and dangerous. Wild\n"
+ .string "POKéMON can appear anywhere in them.\l"
+ .string "If there is an emergency, rush to a\l"
+ .string "POKéMON CENTER or use items.\l"
+ .string "New towns await discovery beyond some\l"
+ .string "caves, so don't give up.$"
+
+gUnknown_81B3DE3:: @ 81B3DE3
+ .string "The object of the game is to train\n"
+ .string "your POKéMON and move forward.\l"
+ .string "You must collect info and solve\l"
+ .string "problems. For example, what do you\l"
+ .string "need to get around an obstacle?\l"
+ .string "What would get that impeding\l"
+ .string "person out of the way?$"
+
+gUnknown_81B3EBC:: @ 81B3EBC
+ .string "There are several kinds of items.\n"
+ .string "Some can be used only on the field.\l"
+ .string "Some are only for use during battle.\l"
+ .string "Some can be used anytime.\l"
+ .string "Try using an item - if it can't be used,\l"
+ .string "you will be alerted.$"
+
+gUnknown_81B3F7F:: @ 81B3F7F
+ .string "In a battle, POKéMON try to reduce\n"
+ .string "one another's vitality, expressed as\l"
+ .string "HP. If a POKéMON's HP falls to zero,\l"
+ .string "it faints, and the other POKéMON\l"
+ .string "wins. By winning a battle, POKéMON\l"
+ .string "earn EXP. Points, which help them\l"
+ .string "level up (grow stronger).$"
+
+gUnknown_81B406C:: @ 81B406C
+ .string "First, fully heal the POKéMON in your\n"
+ .string "party (the POKéMON with you) at any\l"
+ .string "POKéMON CENTER.\l"
+ .string "You should also buy healing items for\l"
+ .string "emergencies at a POKéMON MART.$"
+
+gUnknown_81B410B:: @ 81B410B
+ .string "A POKéMON's vitality is expressed in HP.\n"
+ .string "If a POKéMON is hurt in battle, HP is\l"
+ .string "subtracted. If its HP drops to zero,\l"
+ .string "the POKéMON faints.\l"
+ .string "Heal hurt or fainted POKéMON at a\l"
+ .string "POKéMON CENTER or by using items.$"
+
+gUnknown_81B41D7:: @ 81B41D7
+ .string "A POKéMON CENTER is like an inn for\n"
+ .string "POKéMON. It will fully heal POKéMON of\l"
+ .string "any status problems and fully restore\l"
+ .string "their HP using a special machine.\l"
+ .string "This service is free, so get in the\l"
+ .string "habit of healing your POKéMON often.$"
+
+gUnknown_81B42B3:: @ 81B42B3
+ .string "A status problem refers to an ailment\n"
+ .string "that is inflicted on a POKéMON by its\l"
+ .string "foe's attack. These include burns,\l"
+ .string "paralysis, poisoning, sleep, and\l"
+ .string "freezing. These can be healed by\l"
+ .string "visiting a POKéMON CENTER or using\l"
+ .string "the appropriate item.$"
+
+gUnknown_81B439D:: @ 81B439D
+ .string "If all the POKéMON in your party\n"
+ .string "(all the POKéMON with you) faint, you\l"
+ .string "lose some MONEY, and you are\l"
+ .string "returned home or to a POKéMON\l"
+ .string "CENTER. To reduce that chance, visit\l"
+ .string "POKéMON CENTERS often. Also, get\l"
+ .string "in the habit of saving often.$"
+
+gUnknown_81B4483:: @ 81B4483
+ .string "If a wild POKéMON escapes from a POKé\n"
+ .string "BALL, it's obviously still feisty.\l"
+ .string "Try reducing its HP some more, and\l"
+ .string "try to weaken it with paralysis or sleep\l"
+ .string "before trying to catch it.\l"
+ .string "If the POKé BALL rocks for a while,\l"
+ .string "the quarry is close to being caught!$"
+
+gUnknown_81B457C:: @ 81B457C
+ .string "There are shops, known as POKéMON\n"
+ .string "MARTS, that sell items.\l"
+ .string "You will not find POKéMON MARTS on\l"
+ .string "roads, in forests, or in caves.\l"
+ .string "Stock up on needed items while you are\l"
+ .string "visiting a town with a POKéMON MART.$"
+
+gUnknown_81B4645:: @ 81B4645
+ .string "You may buy POKé BALLS at any\n"
+ .string "POKéMON MART in any town.\l"
+ .string "You will not find POKéMON MARTS on\l"
+ .string "roads, in forests, or in caves.\l"
+ .string "Stock up on POKé BALLS while you are\l"
+ .string "visiting a town with a POKéMON MART.$"
+
+gUnknown_81B470A:: @ 81B470A
+ .string "A TRAINER is a person who raises\n"
+ .string "POKéMON through battling.\l"
+ .string "TRAINERS will challenge you \l"
+ .string "wherever they are - it could be on\l"
+ .string "a road, in forests, caves, anywhere.\l"
+ .string "If your eyes meet, you have to accept\l"
+ .string "their challenge. So be careful!$"
+
+gUnknown_81B47F0:: @ 81B47F0
+ .string "To beat a TRAINER in battle, use\n"
+ .string "POKéMON that have type advantages\l"
+ .string "over the foe's POKéMON. You may also\l"
+ .string "use highly trained POKéMON with\l"
+ .string "overwhelming power. Outnumbering the\l"
+ .string "foe's POKéMON is another obvious\l"
+ .string "tactic.$"
+
+gUnknown_81B48C6:: @ 81B48C6
+ .string "Wild POKéMON will appear in tall grass,\n"
+ .string "on roads, and in forests. They will\l"
+ .string "appear anywhere in dark caves.\l"
+ .string "There are no wild POKéMON or TRAINERS\l"
+ .string "in towns, so they are safe places.$"
+
+gUnknown_81B497A:: @ 81B497A
+ .string "POKéMON may learn up to four different\n"
+ .string "techniques, or moves. There is a great\l"
+ .string "variety of moves including attacks and\l"
+ .string "those with special effects. The kinds\l"
+ .string "of moves that can be learned vary\l"
+ .string "for each POKéMON. Some moves\l"
+ .string "can be learned from machines.$"
+
+gUnknown_81B4A72:: @ 81B4A72
+ .string "HIDDEN moves are those that are\n"
+ .string "especially important for your\l"
+ .string "adventure. To use such a move outside\l"
+ .string "of battle, open the “POKéMON” MENU\l"
+ .string "and make the POKéMON that knows the\l"
+ .string "move use it. A fainted POKéMON may use\l"
+ .string "a HIDDEN move outside of battle.$"
+
+gUnknown_81B4B65:: @ 81B4B65
+ .string "Select “FIGHT,” and the MENU of moves\n"
+ .string "will appear. Consider the type\l"
+ .string "matchups, and use the most effective\l"
+ .string "moves. You can check the effects of\l"
+ .string "moves by opening “POKéMON,”\l"
+ .string "picking a POKéMON, opening “SUMMARY,”\l"
+ .string "then opening “POKéMON SKILLS.”$"
+
+gUnknown_81B4C54:: @ 81B4C54
+ .string "The most a POKéMON can learn is four\n"
+ .string "moves. They are learned as the\l"
+ .string "POKéMON levels up. It can also be\l"
+ .string "taught a move using a TM (Technical\l"
+ .string "Machine) or HM (Hidden Machine).\l"
+ .string "There are also people who teach moves.$"
+
+gUnknown_81B4D26:: @ 81B4D26
+ .string "The key to making your POKéMON\n"
+ .string "strong is to battle and win often.\l"
+ .string "The EXP. (Experience) Points earned\l"
+ .string "by winning battles accumulate to\l"
+ .string "level up POKéMON that participated in\l"
+ .string "them. Battle wild POKéMON often to\l"
+ .string "level up your party.$"
+
+gUnknown_81B4E0B:: @ 81B4E0B
+ .string "If your foes are too strong, try\n"
+ .string "leveling up your POKéMON some more.\l"
+ .string "Go back the way you came and battle\l"
+ .string "wild POKéMON to level up your party.\l"
+ .string "You may also battle TRAINERS whom you\l"
+ .string "have not battled before.$"
+
+gUnknown_81B4ED8:: @ 81B4ED8
+ .string "Unlike roads and forests, wild POKéMON\n"
+ .string "can appear anywhere in caves.\l"
+ .string "If your POKéMON are hurt in a cave,\l"
+ .string "rush to a POKéMON CENTER or use items\l"
+ .string "to heal them right away. It is very\l"
+ .string "dangerous to force your luck in caves.$"
+
+gUnknown_81B4FB2:: @ 81B4FB2
+ .string "Trust your own knowledge and power.\n"
+ .string "Believe in yourself and find your way!$"
+
+gUnknown_81B4FFD:: @ 81B4FFD
+ .string "A POKéMON CENTER is identified by its\n"
+ .string "red roof and a “P.C” sign. Every\l"
+ .string "POKéMON CENTER offers such services as\l"
+ .string "fully healing POKéMON and free PC use,\l"
+ .string "making it essential for your travels.\l"
+ .string "On the upper floor are facilities for\l"
+ .string "linking with friends and others.$"
+
+gUnknown_81B50FF:: @ 81B50FF
+ .string "A POKéMON MART is identified by its\n"
+ .string "blue roof and a “MART” sign.\l"
+ .string "Items can be bought and sold at any\l"
+ .string "POKéMON MART. Some MARTS carry items\l"
+ .string "that are available only in their towns.$"
+
+gUnknown_81B51B1:: @ 81B51B1
+ .string "You can safely end your game by\n"
+ .string "selecting “SAVE” on the MENU.\l"
+ .string "Once you have saved, the game can be\l"
+ .string "safely turned off. When the game is\l"
+ .string "turned back on, you can resume from\l"
+ .string "where you last saved.$"
+
+gUnknown_81B5272:: @ 81B5272
+ .string "POKéMON are living beings about which\n"
+ .string "many mysteries still remain. You may\l"
+ .string "see them in grass, the sea, and caves.\l"
+ .string "They appear to obey the wishes of the\l"
+ .string "TRAINERS that caught them.$"
+
+gUnknown_81B5325:: @ 81B5325
+ .string "Use the FAME CHECKER among the\n"
+ .string "KEY ITEMS in your BAG.\l"
+ .string "It may give you a hint, so try it out.$"
+
+gUnknown_81B5382:: @ 81B5382
+ .string "A HIDDEN move is taught to a POKéMON\n"
+ .string "using an HM (Hidden Machine).\l"
+ .string "A HIDDEN move is important for helping\l"
+ .string "your adventure. For example, one is\l"
+ .string "used to light up dark caves. Another\l"
+ .string "cuts down small trees. There is one\l"
+ .string "for traveling on water, and so on.$"
+
+gUnknown_81B547C:: @ 81B547C
+ .string "Try to catch wild POKéMON by throwing\n"
+ .string "the special SAFARI BALLS.\l"
+ .string "You may keep any item you find, too.$"
+
+gUnknown_81B54E1:: @ 81B54E1
+ .string "Your SAFARI GAME ends once you have\n"
+ .string "traveled a certain distance or thrown\l"
+ .string "all your SAFARI BALLS.\l"
+ .string "Open the MENU to check the remaining\l"
+ .string "number of steps and SAFARI BALLS.$"
+
+gUnknown_81B5589:: @ 81B5589
+ .string "If you would like to cut your SAFARI\n"
+ .string "GAME short, open the MENU and select\l"
+ .string "“RETIRE” at the top of the list.$"
+
+gUnknown_81B55F4:: @ 81B55F4
+ .string "POKéMON GYMS are operated by the\n"
+ .string "POKéMON LEAGUE and are training\l"
+ .string "facilities for TRAINERS. They are all\l"
+ .string "across the land in cities and towns.\l"
+ .string "Each one is headed by a LEADER, who\l"
+ .string "is a very skilled TRAINER. Beat the\l"
+ .string "LEADER to collect a BADGE.$"
+
+gUnknown_81B56E3:: @ 81B56E3
+ .string " Using “POKéDEX”$"
+
+gUnknown_81B56F4:: @ 81B56F4
+ .string " Using “POKéMON”$"
+
+gUnknown_81B5705:: @ 81B5705
+ .string " Using “SUMMARY”$"
+
+gUnknown_81B5717:: @ 81B5717
+ .string " Using “SWITCH”$"
+
+gUnknown_81B5728:: @ 81B5728
+ .string " Using “ITEM”$"
+
+gUnknown_81B5737:: @ 81B5737
+ .string " Using “BAG”$"
+
+gUnknown_81B5744:: @ 81B5744
+ .string " Using an item$"
+
+gUnknown_81B5754:: @ 81B5754
+ .string " Using a key item$"
+
+gUnknown_81B5767:: @ 81B5767
+ .string " Using a POKé BALL$"
+
+gUnknown_81B577B:: @ 81B577B
+ .string " Using “{PLAYER}”$"
+
+gUnknown_81B5787:: @ 81B5787
+ .string " Using “SAVE”$"
+
+gUnknown_81B5795:: @ 81B5795
+ .string " Using “OPTION”$"
+
+gUnknown_81B57A5:: @ 81B57A5
+ .string " Using a POTION$"
+
+gUnknown_81B57B8:: @ 81B57B8
+ .string " Using the TOWN MAP$"
+
+gUnknown_81B57CF:: @ 81B57CF
+ .string " Using a TM$"
+
+gUnknown_81B57DE:: @ 81B57DE
+ .string " Using an HM$"
+
+gUnknown_81B57EE:: @ 81B57EE
+ .string "Using a move outside of battle$"
+
+gUnknown_81B580D:: @ 81B580D
+ .string " Riding the BICYCLE$"
+
+gUnknown_81B5824:: @ 81B5824
+ .string "Entering a name$"
+
+gUnknown_81B5834:: @ 81B5834
+ .string "Using a PC$"
+
+gUnknown_81B583F:: @ 81B583F
+ .string " Using “{STR_VAR_1}'S PC”$"
+
+gUnknown_81B5850:: @ 81B5850
+ .string " Using “WITHDRAW”$"
+
+gUnknown_81B5863:: @ 81B5863
+ .string " Using “DEPOSIT”$"
+
+gUnknown_81B5875:: @ 81B5875
+ .string " Using “MOVE”$"
+
+gUnknown_81B5884:: @ 81B5884
+ .string " Moving items$"
+
+gUnknown_81B5893:: @ 81B5893
+ .string " Using “{PLAYER}'s PC”$"
+
+gUnknown_81B58A4:: @ 81B58A4
+ .string " Using “WITHDRAW ITEM”$"
+
+gUnknown_81B58BC:: @ 81B58BC
+ .string " Using “DEPOSIT ITEM”$"
+
+gUnknown_81B58D3:: @ 81B58D3
+ .string " Using “MAILBOX”$"
+
+gUnknown_81B58E5:: @ 81B58E5
+ .string " Using “PROF. OAK'S PC”$"
+
+gUnknown_81B58FD:: @ 81B58FD
+ .string "Opening the MENU$"
+
+gUnknown_81B590E:: @ 81B590E
+ .string " Using “FIGHT”$"
+
+gUnknown_81B591D:: @ 81B591D
+ .string " Using “POKéMON”$"
+
+gUnknown_81B592E:: @ 81B592E
+ .string " Using “SHIFT”$"
+
+gUnknown_81B593E:: @ 81B593E
+ .string " Using “SUMMARY”$"
+
+gUnknown_81B5950:: @ 81B5950
+ .string " Using “BAG”$"
+
+gUnknown_81B595D:: @ 81B595D
+ .string " Reading the “POKéDEX”$"
+
+gUnknown_81B5974:: @ 81B5974
+ .string "Using the PC at home$"
+
+gUnknown_81B5989:: @ 81B5989
+ .string "Using the Item Storage System$"
+
+gUnknown_81B59A7:: @ 81B59A7
+ .string " Using “WITHDRAW ITEM”$"
+
+gUnknown_81B59BF:: @ 81B59BF
+ .string " Using “DEPOSIT ITEM”$"
+
+gUnknown_81B59D6:: @ 81B59D6
+ .string "Using the MAILBOX$"
+
+gUnknown_81B59E8:: @ 81B59E8
+ .string " Using “RUN”$"
+
+gUnknown_81B59F5:: @ 81B59F5
+ .string " “REGISTER” a key item$"
+
+gUnknown_81B5A0D:: @ 81B5A0D
+ .string " Using “BALL”$"
+
+gUnknown_81B5A1B:: @ 81B5A1B
+ .string " Using “BAIT”$"
+
+gUnknown_81B5A29:: @ 81B5A29
+ .string " Using “ROCK”$"
+
+gUnknown_81B5A37:: @ 81B5A37
+ .string " Using “HALL OF FAME”$"
+
+gUnknown_81B5A4D:: @ 81B5A4D
+ .string "{EXTRA_CIRCLE_1} Select “POKéDEX” on the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Choose POKéMON using commands such\n"
+ .string " as “POKéMON LIST,”\n"
+ .string " “HABITATS OF POKéMON,” and\n"
+ .string " “SEARCH.”\n"
+ .string "{EXTRA_CIRCLE_3} Select a POKéMON to obtain detailed\n"
+ .string " information.$"
+
+gUnknown_81B5B0C:: @ 81B5B0C
+ .string "{EXTRA_CIRCLE_1} Select “POKéMON” on the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Choose a POKéMON in your party.\n"
+ .string "{EXTRA_CIRCLE_3} Select “SUMMARY,” “SWITCH,”\n"
+ .string " or “ITEM.”$"
+
+gUnknown_81B5B7D:: @ 81B5B7D
+ .string "{EXTRA_CIRCLE_1} Select “SUMMARY.”\n"
+ .string "{EXTRA_CIRCLE_2} Press left or right on the {EXTRA_PLUS} Control\n"
+ .string " Pad to check the information:\n"
+ .string " “POKéMON INFO”\n"
+ .string " “POKéMON SKILLS”\n"
+ .string " “KNOWN MOVES”$"
+
+gUnknown_81B5C13:: @ 81B5C13
+ .string "{EXTRA_CIRCLE_1} Choose the POKéMON you want to\n"
+ .string " switch around.\n"
+ .string "{EXTRA_CIRCLE_2} Select “SWITCH.”\n"
+ .string "{EXTRA_CIRCLE_3} Select the POKéMON to switch with\n"
+ .string " the first one.\n"
+ .string "The POKéMON at the left of the screen\n"
+ .string "will be the first one out in a battle.$"
+
+gUnknown_81B5CDF:: @ 81B5CDF
+ .string "{EXTRA_CIRCLE_1} Select “ITEM.”\n"
+ .string "{EXTRA_CIRCLE_2} Select whether you want to “GIVE”\n"
+ .string " an item to the POKéMON to hold,\n"
+ .string " or “TAKE” an item it is holding.\n"
+ .string "A POKéMON can hold no more than one\n"
+ .string "item!$"
+
+gUnknown_81B5D87:: @ 81B5D87
+ .string "{EXTRA_CIRCLE_1} Select “BAG” on the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Press left or right on the {EXTRA_PLUS} Control\n"
+ .string " Pad to check the data headings:\n"
+ .string " “ITEMS”\n"
+ .string " “KEY ITEMS”\n"
+ .string " “POKé BALLS”\n"
+ .string " Press up or down to select an item.$"
+
+gUnknown_81B5E41:: @ 81B5E41
+ .string "{EXTRA_CIRCLE_1} Select the “ITEMS” POCKET.\n"
+ .string "{EXTRA_CIRCLE_2} Press up or down on the {EXTRA_PLUS} Control\n"
+ .string " Pad to select an item.\n"
+ .string "{EXTRA_CIRCLE_3} Select “USE” to use the selected\n"
+ .string " item.\n"
+ .string "Some items may not be used depending\n"
+ .string "on the place and/or situation.$"
+
+gUnknown_81B5F10:: @ 81B5F10
+ .string "{EXTRA_CIRCLE_1} Select the “KEY ITEMS” POCKET.\n"
+ .string "{EXTRA_CIRCLE_2} Press up or down on the {EXTRA_PLUS} Control\n"
+ .string " Pad to select a key item.\n"
+ .string "{EXTRA_CIRCLE_3} Select “USE” to use the selected\n"
+ .string " key item.$"
+
+gUnknown_81B5FA6:: @ 81B5FA6
+ .string "{EXTRA_CIRCLE_1} While battling a wild POKéMON,\n"
+ .string " select the BAG's “POKé BALLS”\n"
+ .string " POCKET.\n"
+ .string "{EXTRA_CIRCLE_2} Press up or down on the {EXTRA_PLUS} Control\n"
+ .string " Pad to select a POKé BALL.\n"
+ .string "{EXTRA_CIRCLE_3} Select “USE” to throw the selected\n"
+ .string " POKé BALL.$"
+
+gUnknown_81B606C:: @ 81B606C
+ .string "{EXTRA_CIRCLE_1} Select “{PLAYER}” on the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Your TRAINER CARD is displayed face\n"
+ .string " up with basic information. Press the\n"
+ .string " A Button to turn the CARD over.\n"
+ .string "{EXTRA_CIRCLE_3} A variety of data can be found on\n"
+ .string " the reverse side of the CARD.$"
+
+gUnknown_81B6140:: @ 81B6140
+ .string "{EXTRA_CIRCLE_1} Select “SAVE” on the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Select “YES” and your progress is\n"
+ .string " recorded in the save file.\n"
+ .string "Once the game is saved, you may turn\n"
+ .string "off the game. Your game can be resumed\n"
+ .string "from where you saved.$"
+
+gUnknown_81B6203:: @ 81B6203
+ .string "{EXTRA_CIRCLE_1} Select “OPTION” on the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Press up or down on the {EXTRA_PLUS} Control\n"
+ .string " Pad to select an optional item, then\n"
+ .string " press left or right to alter the\n"
+ .string " settings.\n"
+ .string "{EXTRA_CIRCLE_3} Select “CANCEL” or press the\n"
+ .string " B Button after making changes.$"
+
+gUnknown_81B62E4:: @ 81B62E4
+ .string "{EXTRA_CIRCLE_1} Open the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Press up or down on the {EXTRA_PLUS} Control\n"
+ .string " Pad and select “BAG.”\n"
+ .string "{EXTRA_CIRCLE_3} Select “POTION” in the “ITEMS”\n"
+ .string " POCKET.\n"
+ .string "{EXTRA_CIRCLE_4} Select “USE.”\n"
+ .string "{EXTRA_CIRCLE_5} Select the POKéMON to be healed.$"
+
+gUnknown_81B6397:: @ 81B6397
+ .string "{EXTRA_CIRCLE_1} Open the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Press up or down on the {EXTRA_PLUS} Control\n"
+ .string " Pad and select “BAG.”\n"
+ .string "{EXTRA_CIRCLE_3} Press left or right to open the\n"
+ .string " “KEY ITEMS” POCKET, then press\n"
+ .string " up or down to select “TOWN MAP.” \n"
+ .string "{EXTRA_CIRCLE_4} Select “USE” to open the TOWN MAP.$"
+
+gUnknown_81B6478:: @ 81B6478
+ .string "{EXTRA_CIRCLE_1} Open the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Open the “KEY ITEMS” POCKET in the\n"
+ .string " “BAG.”\n"
+ .string "{EXTRA_CIRCLE_3} “OPEN” the TM CASE.\n"
+ .string "{EXTRA_CIRCLE_4} Select and “USE” a TM.\n"
+ .string "{EXTRA_CIRCLE_5} Select a POKéMON that can learn the\n"
+ .string " move in the TM.$"
+
+gUnknown_81B6525:: @ 81B6525
+ .string "{EXTRA_CIRCLE_1} Open the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Open the “KEY ITEMS” POCKET in the\n"
+ .string " “BAG.”\n"
+ .string "{EXTRA_CIRCLE_3} “OPEN” the TM CASE.\n"
+ .string "{EXTRA_CIRCLE_4} Select and “USE” an HM.\n"
+ .string "{EXTRA_CIRCLE_5} Select a POKéMON that can learn it.\n"
+ .string "HMs are hard to remove, so be careful!$"
+
+gUnknown_81B65E7:: @ 81B65E7
+ .string "{EXTRA_CIRCLE_1} Open the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Select “POKéMON.”\n"
+ .string "{EXTRA_CIRCLE_3} Select a POKéMON that knows an\n"
+ .string " HM move. The usable HM move(s)\n"
+ .string " will be shown in blue. Select and\n"
+ .string " use the desired move to destroy an\n"
+ .string " obstacle, fly, surf, etc.$"
+
+gUnknown_81B66BA:: @ 81B66BA
+ .string "{EXTRA_CIRCLE_1} Open the MENU. Open the\n"
+ .string " “KEY ITEMS” POCKET in the “BAG”\n"
+ .string " and select the “BICYCLE.”\n"
+ .string "{EXTRA_CIRCLE_2} The BICYCLE can be ridden by\n"
+ .string " selecting “USE.” You may also\n"
+ .string " “REGISTER” it for instant use by\n"
+ .string " pressing SELECT.$"
+
+gUnknown_81B678E:: @ 81B678E
+ .string "{EXTRA_CIRCLE_1} Move the cursor to the letter you\n"
+ .string " want with the {EXTRA_PLUS} Control Pad, then\n"
+ .string " press the A Button to enter it.\n"
+ .string "{EXTRA_CIRCLE_2} Press the B Button to back up.\n"
+ .string "{EXTRA_CIRCLE_3} Press SELECT to switch between\n"
+ .string " uppercase and lowercase letters.\n"
+ .string "{EXTRA_CIRCLE_4} Press the A Button on “OK.”$"
+
+gUnknown_81B6883:: @ 81B6883
+ .string "{EXTRA_CIRCLE_1} Go to any POKéMON CENTER, go up\n"
+ .string " to the PC, then press the A Button.$"
+
+gUnknown_81B68CD:: @ 81B68CD
+ .string "{EXTRA_CIRCLE_1} Select “{STR_VAR_1}'S PC” on the PC.\n"
+ .string "{EXTRA_CIRCLE_2} Select from one of the top three\n"
+ .string " MENU items to access the POKéMON\n"
+ .string " Storage System.\n"
+ .string "If you catch a POKéMON when you have\n"
+ .string "six in your party, the POKéMON is sent\n"
+ .string "automatically to a BOX in the System!$"
+
+gUnknown_81B69B9:: @ 81B69B9
+ .string "{EXTRA_CIRCLE_1} Select a POKéMON in the open BOX\n"
+ .string " with the {EXTRA_PLUS} Control Pad.\n"
+ .string "{EXTRA_CIRCLE_2} Select “WITHDRAW” to remove the\n"
+ .string " POKéMON from the BOX and add it to\n"
+ .string " your party.\n"
+ .string "You may not withdraw a POKéMON if you\n"
+ .string "already have six POKéMON with you!$"
+
+gUnknown_81B6A9A:: @ 81B6A9A
+ .string "{EXTRA_CIRCLE_1} Select a POKéMON in your party with\n"
+ .string " the {EXTRA_PLUS} Control Pad.\n"
+ .string "{EXTRA_CIRCLE_2} Select “DEPOSIT.”\n"
+ .string "{EXTRA_CIRCLE_3} Select the BOX, then press the\n"
+ .string " A Button to store the POKéMON.\n"
+ .string "If you have only one POKéMON with you,\n"
+ .string "it may not be stored!$"
+
+gUnknown_81B6B6E:: @ 81B6B6E
+ .string "{EXTRA_CIRCLE_1} Select a POKéMON in the open BOX.\n"
+ .string "{EXTRA_CIRCLE_2} Pick up the POKéMON by selecting\n"
+ .string " “MOVE” and move it anywhere with\n"
+ .string " the {EXTRA_PLUS} Control Pad.\n"
+ .string "{EXTRA_CIRCLE_3} Move the POKéMON to the BOX name\n"
+ .string " and press left or right to move it\n"
+ .string " to another BOX.$"
+
+gUnknown_81B6C4F:: @ 81B6C4F
+ .string "{EXTRA_CIRCLE_1} Faintly shown POKéMON can be made\n"
+ .string " to hold an item by selecting it and\n"
+ .string " pressing the A Button.\n"
+ .string "{EXTRA_CIRCLE_2} Clearly shown POKéMON can be made\n"
+ .string " to give the item they are holding to\n"
+ .string " another POKéMON, or return the item\n"
+ .string " to the BAG with the A Button.$"
+
+gUnknown_81B6D4A:: @ 81B6D4A
+ .string "{EXTRA_CIRCLE_1} Select “{PLAYER}'s PC” on the PC.\n"
+ .string "{EXTRA_CIRCLE_2} Select either “ITEM STORAGE” or\n"
+ .string " “MAILBOX.”\n"
+ .string "You may store things in your own PC\n"
+ .string "if your BAG is full. You may also\n"
+ .string "withdraw items stored in your PC.$"
+
+gUnknown_81B6E02:: @ 81B6E02
+ .string "{EXTRA_CIRCLE_1} Select “WITHDRAW ITEM.”\n"
+ .string "{EXTRA_CIRCLE_2} Select the item to be withdrawn.\n"
+ .string "{EXTRA_CIRCLE_3} The item can be withdrawn and\n"
+ .string " placed in the BAG's ITEMS POCKET.\n"
+ .string " It may also be directly given to a\n"
+ .string " POKéMON to hold.$"
+
+gUnknown_81B6EC1:: @ 81B6EC1
+ .string "{EXTRA_CIRCLE_1} Select “DEPOSIT ITEM.”\n"
+ .string "{EXTRA_CIRCLE_2} Select the item in the BAG to be\n"
+ .string " deposited using the {EXTRA_PLUS} Control Pad.\n"
+ .string "{EXTRA_CIRCLE_3} If there is more than one \n"
+ .string " item to be deposited, enter the\n"
+ .string " quantity with the {EXTRA_PLUS} Control Pad,\n"
+ .string " then press the A Button.$"
+
+gUnknown_81B6FA8:: @ 81B6FA8
+ .string "When MAIL is taken from a POKéMON,\n"
+ .string "it is moved to the MAILBOX. If it has\n"
+ .string "no MAIL, the MAILBOX can't be used.\n"
+ .string "{EXTRA_CIRCLE_1} Select “{PLAYER}'S PC” on the PC.\n"
+ .string "{EXTRA_CIRCLE_2} Select “MAILBOX” to read MAIL or\n"
+ .string " make a POKéMON hold MAIL.$"
+
+gUnknown_81B7075:: @ 81B7075
+ .string "{EXTRA_CIRCLE_1} Select “PROF. OAK'S PC” on the PC.\n"
+ .string "{EXTRA_CIRCLE_2} PROF. OAK will evaluate your\n"
+ .string " POKéDEX.\n"
+ .string "His evaluations should give you hints\n"
+ .string "for catching more POKéMON!$"
+
+gUnknown_81B7108:: @ 81B7108
+ .string "{EXTRA_CIRCLE_1} Press START.\n"
+ .string "{EXTRA_CIRCLE_2} The MENU will open on the right.\n"
+ .string "{EXTRA_CIRCLE_3} Depending on the situation, the MENU\n"
+ .string " may feature different headings.\n"
+ .string "The MENU will not open in certain\n"
+ .string "situations such as when talking, doing\n"
+ .string "something, battling, etc.$"
+
+gUnknown_81B71EA:: @ 81B71EA
+ .string "{EXTRA_CIRCLE_1} Select “FIGHT.”\n"
+ .string "{EXTRA_CIRCLE_2} Select one of the moves shown,\n"
+ .string "and that move will be used!$"
+
+gUnknown_81B723B:: @ 81B723B
+ .string "{EXTRA_CIRCLE_1} Select “POKéMON.”\n"
+ .string "{EXTRA_CIRCLE_2} Select the POKéMON in your party\n"
+ .string " that you want to use.\n"
+ .string "{EXTRA_CIRCLE_3} If you have two or more POKéMON\n"
+ .string " with you, they may be switched by\n"
+ .string " selecting “SHIFT.” Check POKéMON\n"
+ .string " data by selecting “SUMMARY.”$"
+
+gUnknown_81B7319:: @ 81B7319
+ .string "This command switches the POKéMON in\n"
+ .string "battle with another one in your party.\n"
+ .string "{EXTRA_CIRCLE_1} Select the POKéMON to be sent out.\n"
+ .string "{EXTRA_CIRCLE_2} Select “SHIFT.”\n"
+ .string "{EXTRA_CIRCLE_3} The selected POKéMON will switch\n"
+ .string " places with the POKéMON in battle!$"
+
+gUnknown_81B73E8:: @ 81B73E8
+ .string "{EXTRA_CIRCLE_1} Select “SUMMARY.”\n"
+ .string "{EXTRA_CIRCLE_2} Press left or right on the {EXTRA_PLUS} Control\n"
+ .string " Pad to check the information:\n"
+ .string " “POKéMON INFO”\n"
+ .string " “POKéMON SKILLS”\n"
+ .string " “KNOWN MOVES”$"
+
+gUnknown_81B747E:: @ 81B747E
+ .string "{EXTRA_CIRCLE_1} Select “BAG.”\n"
+ .string "{EXTRA_CIRCLE_2} Press left or right on the {EXTRA_PLUS} Control\n"
+ .string " Pad to check the data headings:\n"
+ .string " “ITEMS”\n"
+ .string " “KEY ITEMS”\n"
+ .string " “POKé BALLS”\n"
+ .string " Press up or down to select an item.$"
+
+gUnknown_81B752C:: @ 81B752C
+ .string "{EXTRA_CIRCLE_1} POKéMON that you have caught are\n"
+ .string " identified by a POKé BALL mark on\n"
+ .string " the POKéDEX list.\n"
+ .string "{EXTRA_CIRCLE_2} A caught POKéMON will provide a\n"
+ .string " large amount of data.\n"
+ .string "{EXTRA_CIRCLE_3} Select “AREA” to display the TOWN\n"
+ .string " MAP with the POKéMON's habitat(s).$"
+
+gUnknown_81B7611:: @ 81B7611
+ .string "{EXTRA_CIRCLE_1} Go up to the PC at home, then press\n"
+ .string " the A Button.\n"
+ .string "{EXTRA_CIRCLE_2} The PC will turn on.\n"
+ .string "{EXTRA_CIRCLE_3} Select either “ITEM STORAGE” or\n"
+ .string " “MAILBOX.”$"
+
+gUnknown_81B7692:: @ 81B7692
+ .string "{EXTRA_CIRCLE_1} Select “WITHDRAW ITEM” to withdraw\n"
+ .string " an item stored on your PC.\n"
+ .string "{EXTRA_CIRCLE_2} Select “DEPOSIT ITEM” to put \n"
+ .string " an item from your BAG into your PC.$"
+
+gUnknown_81B771E:: @ 81B771E
+ .string "{EXTRA_CIRCLE_1} Select “WITHDRAW ITEM.”\n"
+ .string "{EXTRA_CIRCLE_2} Select the item to be withdrawn.\n"
+ .string "{EXTRA_CIRCLE_3} The item can be withdrawn and\n"
+ .string " placed in the BAG's ITEMS POCKET.\n"
+ .string " It may also be directly given to a\n"
+ .string " POKéMON to hold.$"
+
+gUnknown_81B77DD:: @ 81B77DD
+ .string "{EXTRA_CIRCLE_1} Select “DEPOSIT ITEM.”\n"
+ .string "{EXTRA_CIRCLE_2} Select the item in the BAG to be\n"
+ .string " deposited using the {EXTRA_PLUS} Control Pad.\n"
+ .string "{EXTRA_CIRCLE_3} If there is nothing in the BAG, this\n"
+ .string " command can't be used!$"
+
+gUnknown_81B7884:: @ 81B7884
+ .string "When MAIL is taken from a POKéMON,\n"
+ .string "it is moved to the MAILBOX. If it has\n"
+ .string "no MAIL, the MAILBOX can't be used.\n"
+ .string "{EXTRA_CIRCLE_1} Select MAIL by name to read it or\n"
+ .string " make a POKéMON hold it.$"
+
+gUnknown_81B7931:: @ 81B7931
+ .string "You may not “RUN” from a TRAINER\n"
+ .string "battle!\n"
+ .string "{EXTRA_CIRCLE_1} You may “RUN” from a wild POKéMON.\n"
+ .string "{EXTRA_CIRCLE_2} Your chance of escape is improved\n"
+ .string " if your POKéMON in battle is fast.$"
+
+gUnknown_81B79CB:: @ 81B79CB
+ .string "You may “REGISTER” a key item for\n"
+ .string "instant use by pressing SELECT!\n"
+ .string "{EXTRA_CIRCLE_1} Open the “KEY ITEMS” POCKET.\n"
+ .string "{EXTRA_CIRCLE_2} Select the key item, then select\n"
+ .string " “REGISTER.”$"
+
+gUnknown_81B7A60:: @ 81B7A60
+ .string "{EXTRA_CIRCLE_1} Select to throw the special POKé\n"
+ .string " BALL used only in the SAFARI ZONE.\n"
+ .string "When wild POKéMON appear, throw lots\n"
+ .string "of SAFARI BALLS to catch them!$"
+
+gUnknown_81B7AEE:: @ 81B7AEE
+ .string "{EXTRA_CIRCLE_1} Select to throw the special food\n"
+ .string " used only in the SAFARI ZONE.\n"
+ .string "It is POKéMON food rolled up into\n"
+ .string "a ball for easy eating. When BAIT is\n"
+ .string "thrown, the wild POKéMON may get\n"
+ .string "attracted by it, and may not flee!$"
+
+gUnknown_81B7BBE:: @ 81B7BBE
+ .string "{EXTRA_CIRCLE_1} Select to throw a rock lying on\n"
+ .string " the ground in the SAFARI ZONE.\n"
+ .string "Throwing a rock at a POKéMON may \n"
+ .string "make it run away, but it becomes easier\n"
+ .string "to catch!$"
+
+gUnknown_81B7C57:: @ 81B7C57
+ .string "{EXTRA_CIRCLE_1} Select “HALL OF FAME” on the PC.\n"
+ .string "{EXTRA_CIRCLE_2} The POKéMON that have entered the\n"
+ .string " HALL OF FAME can be examined.$"
+
+gUnknown_81B7CC1:: @ 81B7CC1
+ .string "HP$"
+
+gUnknown_81B7CC4:: @ 81B7CC4
+ .string "EXP. {EXTRA_LEFT_PAREN}EXP. Points{EXTRA_RIGHT_PAREN}$"
+
+gUnknown_81B7CD9:: @ 81B7CD9
+ .string "MOVES$"
+
+gUnknown_81B7CDF:: @ 81B7CDF
+ .string "ATTACK$"
+
+gUnknown_81B7CE6:: @ 81B7CE6
+ .string "DEFENSE$"
+
+gUnknown_81B7CEE:: @ 81B7CEE
+ .string "SP. ATK$"
+
+gUnknown_81B7CF6:: @ 81B7CF6
+ .string "SP. DEF$"
+
+gUnknown_81B7CFE:: @ 81B7CFE
+ .string "SPEED$"
+
+gUnknown_81B7D04:: @ 81B7D04
+ .string "Lv. {EXTRA_LEFT_PAREN}Level{EXTRA_RIGHT_PAREN}$"
+
+gUnknown_81B7D12:: @ 81B7D12
+ .string "TYPE$"
+
+gUnknown_81B7D17:: @ 81B7D17
+ .string "OT$"
+
+gUnknown_81B7D1A:: @ 81B7D1A
+ .string "ITEM$"
+
+gUnknown_81B7D1F:: @ 81B7D1F
+ .string "ABILITY$"
+
+gUnknown_81B7D27:: @ 81B7D27
+ .string "MONEY$"
+
+gUnknown_81B7D2D:: @ 81B7D2D
+ .string "MOVE TYPE$"
+
+gUnknown_81B7D37:: @ 81B7D37
+ .string "NATURE$"
+
+gUnknown_81B7D3E:: @ 81B7D3E
+ .string "ID No.$"
+
+gUnknown_81B7D45:: @ 81B7D45
+ .string "PP$"
+
+gUnknown_81B7D48:: @ 81B7D48
+ .string "POWER$"
+
+gUnknown_81B7D4E:: @ 81B7D4E
+ .string "ACCURACY$"
+
+gUnknown_81B7D57:: @ 81B7D57
+ .string "FNT$"
+
+gUnknown_81B7D5B:: @ 81B7D5B
+ .string "ITEMS$"
+
+gUnknown_81B7D61:: @ 81B7D61
+ .string "KEY ITEMS$"
+
+gUnknown_81B7D6B:: @ 81B7D6B
+ .string "POKé BALLS$"
+
+gUnknown_81B7D76:: @ 81B7D76
+ .string "POKéDEX$"
+
+gUnknown_81B7D7E:: @ 81B7D7E
+ .string "PLAY TIME$"
+
+gUnknown_81B7D88:: @ 81B7D88
+ .string "BADGES$"
+
+gUnknown_81B7D8F:: @ 81B7D8F
+ .string "TEXT SPEED$"
+
+gUnknown_81B7D9A:: @ 81B7D9A
+ .string "BATTLE SCENE$"
+
+gUnknown_81B7DA7:: @ 81B7DA7
+ .string "BATTLE STYLE$"
+
+gUnknown_81B7DB4:: @ 81B7DB4
+ .string "SOUND$"
+
+gUnknown_81B7DBA:: @ 81B7DBA
+ .string "BUTTON MODE$"
+
+gUnknown_81B7DC6:: @ 81B7DC6
+ .string "FRAME$"
+
+gUnknown_81B7DCC:: @ 81B7DCC
+ .string "CANCEL$"
+
+gUnknown_81B7DD3:: @ 81B7DD3
+ .string "TM$"
+
+gUnknown_81B7DD6:: @ 81B7DD6
+ .string "HM$"
+
+gUnknown_81B7DD9:: @ 81B7DD9
+ .string "HM MOVE$"
+
+gUnknown_81B7DE1:: @ 81B7DE1
+ .string "EVOLUTION$"
+
+gUnknown_81B7DEB:: @ 81B7DEB
+ .string "STATUS PROBLEM$"
+
+gUnknown_81B7DFA:: @ 81B7DFA
+ .string "POKéMON$"
+
+gUnknown_81B7E02:: @ 81B7E02
+ .string "ID No.$"
+
+gUnknown_81B7E09:: @ 81B7E09
+ .string "MONEY$"
+
+gUnknown_81B7E0F:: @ 81B7E0F
+ .string "BADGES$"
+
+gUnknown_81B7E16:: @ 81B7E16
+ .string "HP indicates a POKéMON's vitality.\n"
+ .string "If a POKéMON's HP drops to zero, it\l"
+ .string "faints and is unable to battle.\l"
+ .string "So, the key in battle is to try to\l"
+ .string "reduce the foe's HP to zero.\l"
+ .string "If your POKéMON are hurt, restore their\l"
+ .string "HP at a POKéMON CENTER or use items.$"
+
+gUnknown_81B7F0A:: @ 81B7F0A
+ .string "EXP. Points stands for “Experience\n"
+ .string "Points.” POKéMON gain EXP. Points by\l"
+ .string "participating in winning battles.\l"
+ .string "When a POKéMON accumulates sufficient\l"
+ .string "EXP. Points, it levels up. The EXP. Bar\l"
+ .string "indicates accumulated EXP. Points.\l"
+ .string "It returns to zero upon leveling up.$"
+
+gUnknown_81B800A:: @ 81B800A
+ .string "POKéMON may learn up to four different\n"
+ .string "moves. There are many kinds of moves\l"
+ .string "including attacks and those with\l"
+ .string "special effects. The kinds of moves\l"
+ .string "that can be learned vary for each\l"
+ .string "POKéMON. Some moves can be learned\l"
+ .string "from items.$"
+
+gUnknown_81B80EC:: @ 81B80EC
+ .string "ATTACK indicates the power of an\n"
+ .string "offensive move. The higher this stat,\l"
+ .string "the more powerful the move.\l"
+ .string "It is applied for the following move\l"
+ .string "types: NORMAL, POISON, GROUND,\l"
+ .string "FLYING, BUG, FIGHTING, ROCK, GHOST,\l"
+ .string "and STEEL.$"
+
+gUnknown_81B81C2:: @ 81B81C2
+ .string "DEFENSE indicates the resistance a\n"
+ .string "POKéMON has against physical attacks.\l"
+ .string "The higher this stat, the less damage\l"
+ .string "sustained from a foe's physical hit.$"
+
+gUnknown_81B8256:: @ 81B8256
+ .string "SP. ATK (Special Attack) indicates the\n"
+ .string "power of a special attack move.\l"
+ .string "The higher this stat, the more powerful\l"
+ .string "the special attack move.\l"
+ .string "It is applied for the following move\l"
+ .string "types: FIRE, WATER, ELECTRIC, GRASS,\l"
+ .string "ICE, PSYCHIC, DRAGON, and DARK.$"
+
+gUnknown_81B8348:: @ 81B8348
+ .string "SP. DEF (Special Defense) indicates\n"
+ .string "the resistance a POKéMON has against\l"
+ .string "special attacks.\l"
+ .string "The higher this stat, the less damage\l"
+ .string "sustained from a foe's special attack.$"
+
+gUnknown_81B83EF:: @ 81B83EF
+ .string "SPEED indicates the agility of a\n"
+ .string "POKéMON. If this stat exceeds the foe's\l"
+ .string "in battle, the POKéMON can make a move\l"
+ .string "before its slower opponent.$"
+
+gUnknown_81B847B:: @ 81B847B
+ .string "Lv. (Level) indicates the growth and\n"
+ .string "strength of a POKéMON.\l"
+ .string "In general, when a POKéMON levels up,\l"
+ .string "its stats such as HP, ATTACK, and\l"
+ .string "DEFENSE rise, making it stronger.\l"
+ .string "POKéMON may learn a new move upon\l"
+ .string "leveling up.$"
+
+gUnknown_81B8550:: @ 81B8550
+ .string "POKéMON and moves are classified by\n"
+ .string "type. Every type has advantageous and\l"
+ .string "disadvantageous matchups against\l"
+ .string "other types. For example, like a rock-\l"
+ .string "paper-scissors game, the WATER type is\l"
+ .string "strong against the FIRE type and weak\l"
+ .string "against the GRASS type.$"
+
+gUnknown_81B8647:: @ 81B8647
+ .string "OT stands for “Original TRAINER,”\n"
+ .string "the first TRAINER to have caught the\l"
+ .string "selected POKéMON.\l"
+ .string "Even if the POKéMON is traded, the OT\l"
+ .string "name will remain unchanged.$"
+
+gUnknown_81B86E2:: @ 81B86E2
+ .string "All POKéMON can be made to hold one\n"
+ .string "item each. Some items will be used by\l"
+ .string "the POKéMON automatically in certain\l"
+ .string "situations. To make a POKéMON hold an\l"
+ .string "item, select the item from the BAG and\l"
+ .string "“GIVE” it to the POKéMON.$"
+
+gUnknown_81B87B8:: @ 81B87B8
+ .string "All POKéMON have a special ABILITY.\n"
+ .string "There are many different kinds of these\l"
+ .string "abilities, some used in battle, some\l"
+ .string "elsewhere. The abilities differ from\l"
+ .string "species to species. Some species may\l"
+ .string "have more than one kind of ability.$"
+
+gUnknown_81B8897:: @ 81B8897
+ .string "Whenever you win a battle against a\n"
+ .string "TRAINER, you are given prize money.\l"
+ .string "Save up your prize money so you can\l"
+ .string "enjoy shopping at POKéMON MARTS!$"
+
+gUnknown_81B8924:: @ 81B8924
+ .string "Moves are also classified by types.\n"
+ .string "If a POKéMON of a certain type uses\l"
+ .string "a move of the same type, the move's\l"
+ .string "power is boosted. If the move's type\l"
+ .string "has a matchup advantage against the\l"
+ .string "target, its effectiveness is also\l"
+ .string "boosted.$"
+
+gUnknown_81B8A04:: @ 81B8A04
+ .string "All POKéMON have a personality,\n"
+ .string "or “NATURE.” The POKéMON's\l"
+ .string "nature appears to affect how the\l"
+ .string "POKéMON will grow upon leveling up.$"
+
+gUnknown_81B8A84:: @ 81B8A84
+ .string "The ID No. is a special number assigned\n"
+ .string "specifically to you as a TRAINER.\l"
+ .string "Together with the OT name, the ID No.\l"
+ .string "is used to precisely identify the\l"
+ .string "Original TRAINER.\l"
+ .string "The ID No. does not change even if the\l"
+ .string "POKéMON is traded.$"
+
+gUnknown_81B8B62:: @ 81B8B62
+ .string "PP stands for “Power Points.”\n"
+ .string "It indicates the number of times a\l"
+ .string "certain move can be used in battle.\l"
+ .string "Like HP, PP can be restored by visiting\l"
+ .string "a POKéMON CENTER or using certain\l"
+ .string "items.$"
+
+gUnknown_81B8C18:: @ 81B8C18
+ .string "POWER indicates the strength of an\n"
+ .string "attack. The higher this number, the\l"
+ .string "greater the damage that can be\l"
+ .string "inflicted on the foe!$"
+
+gUnknown_81B8C94:: @ 81B8C94
+ .string "ACCURACY indicates the probability of\n"
+ .string "the move hitting the foe.\l"
+ .string "The higher this number, the more likely\l"
+ .string "the move will strike the target.$"
+
+gUnknown_81B8D1D:: @ 81B8D1D
+ .string "FNT stands for “fainted.”\n"
+ .string "A POKéMON faints if its HP is reduced\l"
+ .string "to zero. It becomes incapable of taking\l"
+ .string "part in battle.\l"
+ .string "Restore a fainted POKéMON at a POKéMON\l"
+ .string "CENTER, or use an item.$"
+
+gUnknown_81B8DD4:: @ 81B8DD4
+ .string "Ordinary items bought at any POKéMON\n"
+ .string "MART are placed in the ITEMS POCKET.\l"
+ .string "Items may be used, given to a POKéMON\l"
+ .string "to hold, or tossed out as garbage.$"
+
+gUnknown_81B8E67:: @ 81B8E67
+ .string "Important items that you find or \n"
+ .string "receive from people are placed in the\l"
+ .string "KEY ITEMS POCKET.\l"
+ .string "Key items may be used, or registered\l"
+ .string "for use instantly with SELECT. Once\l"
+ .string "registered, the item can be used\l"
+ .string "without opening the MENU and BAG.$"
+
+gUnknown_81B8F4D:: @ 81B8F4D
+ .string "POKé BALLS, which are used for\n"
+ .string "catching wild POKéMON, are placed in\l"
+ .string "the POKé BALLS POCKET.\l"
+ .string "POKé BALLS may be bought at POKéMON\l"
+ .string "MARTS. They may be used, given to a\l"
+ .string "POKéMON to hold, or tossed out as\l"
+ .string "garbage.$"
+
+gUnknown_81B901B:: @ 81B901B
+ .string "This indicates the number of species of\n"
+ .string "POKéMON you have caught and/or\l"
+ .string "evolved to fill the POKéDEX.\l"
+ .string "Try hard to catch all sorts of\l"
+ .string "POKéMON!$"
+
+gUnknown_81B90A7:: @ 81B90A7
+ .string "This is the total amount of time that\n"
+ .string "you have played this game.$"
+
+gUnknown_81B90E8:: @ 81B90E8
+ .string "The POKéMON LEAGUE BADGES that you\n"
+ .string "have won are registered and shown.\l"
+ .string "Earn BADGES by defeating GYM LEADERS\l"
+ .string "in various cities and towns.$"
+
+gUnknown_81B9170:: @ 81B9170
+ .string "You can adjust how quickly the text is\n"
+ .string "displayed. Choose one: SLOW, MID,\l"
+ .string "or FAST.$"
+
+gUnknown_81B91C2:: @ 81B91C2
+ .string "You can choose to turn the battle\n"
+ .string "animation ON or OFF.$"
+
+gUnknown_81B91F9:: @ 81B91F9
+ .string "You can choose whether or not a\n"
+ .string "TRAINER can switch a POKéMON after\l"
+ .string "it has made its foe faint.\l"
+ .string "Set to “SHIFT” if you would like the\l"
+ .string "chance to switch a POKéMON after it\l"
+ .string "has made its foe faint.$"
+
+gUnknown_81B92B8:: @ 81B92B8
+ .string "You can choose between MONO and\n"
+ .string "STEREO sound output.$"
+
+gUnknown_81B92ED:: @ 81B92ED
+ .string "Set to “HELP” to display help messages\n"
+ .string "by pressing the L or R Button.\l"
+ .string "Set to “LR” to enable the switching\l"
+ .string "of the POKéDEX pages and BAG POCKETS\l"
+ .string "using the L and R Buttons.\l"
+ .string "Set to “L=A” to make the L Button\l"
+ .string "work the same as the A Button.$"
+
+gUnknown_81B93D8:: @ 81B93D8
+ .string "You may choose the design of the frame\n"
+ .string "around certain menus. Try them out and\l"
+ .string "see what you like.$"
+
+gUnknown_81B9439:: @ 81B9439
+ .string "The settings will be changed to the\n"
+ .string "selections shown in red, and you will\l"
+ .string "return to the MENU.$"
+
+gUnknown_81B9497:: @ 81B9497
+ .string "A TM (Technical Machine) is a device\n"
+ .string "used to teach a move to a POKéMON.\l"
+ .string "There are many different kinds.\l"
+ .string "Moves can be taught only to those\l"
+ .string "POKéMON capable of using them.\l"
+ .string "A TM breaks after a single use.$"
+
+gUnknown_81B9560:: @ 81B9560
+ .string "An HM (Hidden Machine) is a device used\n"
+ .string "to teach a HIDDEN move to a POKéMON.\l"
+ .string "A HIDDEN move can be taught only to\l"
+ .string "those POKéMON capable of using it.\l"
+ .string "Unlike a TM, an HM can be used over\l"
+ .string "and over. A HIDDEN move can be tough\l"
+ .string "for a POKéMON to forget.$"
+
+gUnknown_81B9656:: @ 81B9656
+ .string "HIDDEN moves are those that are\n"
+ .string "especially important for your\l"
+ .string "adventure. To use such a move outside\l"
+ .string "of battle, open the “POKéMON” MENU\l"
+ .string "and make the POKéMON that knows the\l"
+ .string "move use it. A fainted POKéMON may use\l"
+ .string "a HIDDEN move outside of battle.$"
+
+gUnknown_81B9749:: @ 81B9749
+ .string "Among POKéMON, there are some that\n"
+ .string "undergo major changes (evolution) upon\l"
+ .string "growing to certain levels. Evolution\l"
+ .string "causes a POKéMON to alter form, change\l"
+ .string "its name, and perhaps change the moves\l"
+ .string "it may learn. Some POKéMON evolve\l"
+ .string "due to reasons other than leveling up.$"
+
+gUnknown_81B984F:: @ 81B984F
+ .string "Status problems include:\n"
+ .string "Sleep: Can't use moves.\l"
+ .string "Poison: Causes steady HP loss.\l"
+ .string "Paralysis: May prevent moves.\l"
+ .string "Burn: HP loss and lowers ATTACK.\l"
+ .string "Freeze: Can't use moves.\l"
+ .string "These can be healed with items, etc.$"
+
+gUnknown_81B991C:: @ 81B991C
+ .string "POKéMON is a name given to describe\n"
+ .string "wondrous creatures that inhabit all\l"
+ .string "corners of this world.\l"
+ .string "People raise POKéMON to be their pets,\l"
+ .string "use them for battling, and so on.$"
+
+gUnknown_81B99C4:: @ 81B99C4
+ .string "The ID No. is a special number assigned\n"
+ .string "specifically to you as a TRAINER.\l"
+ .string "Together with the OT name, the ID No.\l"
+ .string "is used to precisely identify the\l"
+ .string "Original TRAINER.\l"
+ .string "The ID No. does not change even if the\l"
+ .string "POKéMON is traded.$"
+
+gUnknown_81B9AA2:: @ 81B9AA2
+ .string "Whenever you win a battle against a\n"
+ .string "TRAINER, you are given prize money.\l"
+ .string "Save up your prize money so you can\l"
+ .string "enjoy shopping at POKéMON MARTS!$"
+
+gUnknown_81B9B2F:: @ 81B9B2F
+ .string "This indicates the number of POKéMON\n"
+ .string "LEAGUE BADGES that you have won.\l"
+ .string "Earn BADGES by defeating GYM LEADERS\l"
+ .string "in various cities and towns.$"
+
+gUnknown_81B9BB7:: @ 81B9BB7
+ .string "The HELP System$"
+
+gUnknown_81B9BC7:: @ 81B9BC7
+ .string "The game$"
+
+gUnknown_81B9BD0:: @ 81B9BD0
+ .string "Wireless Adapter$"
+
+gUnknown_81B9BE1:: @ 81B9BE1
+ .string "Game fundamentals 1$"
+
+gUnknown_81B9BF5:: @ 81B9BF5
+ .string "Game fundamentals 2$"
+
+gUnknown_81B9C09:: @ 81B9C09
+ .string "Game fundamentals 3$"
+
+gUnknown_81B9C1D:: @ 81B9C1D
+ .string "What are POKéMON?$"
+
+gUnknown_81B9C2F:: @ 81B9C2F
+ .string "The help messages change depending on\n"
+ .string "how much you have progressed in the\l"
+ .string "game. They are designed to support you\l"
+ .string "when you need them. If there is\l"
+ .string "anything that you don't understand,\l"
+ .string "please look up the HELP System!$"
+
+gUnknown_81B9D04:: @ 81B9D04
+ .string "You become the main character to\n"
+ .string "explore the world of POKéMON!\l"
+ .string "By talking to people and solving\l"
+ .string "mysteries, new paths will open to you.\l"
+ .string "Strive for the goal together with your\l"
+ .string "wonderful POKéMON!$"
+
+gUnknown_81B9DC5:: @ 81B9DC5
+ .string "This game communicates over a wireless\n"
+ .string "link using the Wireless Adapter.\p"
+ .string "Go wireless anywhere, anytime, and\n"
+ .string "with anybody!\p"
+ .string "Try playing with the Wireless Adapter\n"
+ .string "always attached!$"
+
+gUnknown_81B9E75:: @ 81B9E75
+ .string "Visit every city and town, travel every\n"
+ .string "road, explore every cave, and face\l"
+ .string "every challenge as you strive to\l"
+ .string "become the greatest TRAINER of\l"
+ .string "POKéMON!$"
+
+gUnknown_81B9F09:: @ 81B9F09
+ .string "On your adventure, you will be faced\n"
+ .string "with many obstacles. Every obstacle\l"
+ .string "can be overcome by doing something\l"
+ .string "or by solving mysteries. Some obstacles\l"
+ .string "are affected by something that happens\l"
+ .string "far away.$"
+
+gUnknown_81B9FCE:: @ 81B9FCE
+ .string "Some of the obstacles in your way can\n"
+ .string "be removed once your POKéMON learn\l"
+ .string "specific moves.$"
+
+gUnknown_81BA027:: @ 81BA027
+ .string "POKéMON are wondrous creatures that\n"
+ .string "are shrouded in mystery. You may meet\l"
+ .string "them all over the world…in tall\l"
+ .string "grass, caves, the sea, and more.\l"
+ .string "They appear to grow obedient to the\l"
+ .string "TRAINERS that caught them.$"
+
+gUnknown_81BA0F1:: @ 81BA0F1
+ .string "Using the Type Matchup List$"
+
+gUnknown_81BA10D:: @ 81BA10D
+ .string "Own move type: DARK$"
+
+gUnknown_81BA121:: @ 81BA121
+ .string "Own POKéMON type: DARK$"
+
+gUnknown_81BA138:: @ 81BA138
+ .string "Own move type: ROCK$"
+
+gUnknown_81BA14C:: @ 81BA14C
+ .string "Own POKéMON type: ROCK$"
+
+gUnknown_81BA163:: @ 81BA163
+ .string "Own move type: PSYCHIC$"
+
+gUnknown_81BA17A:: @ 81BA17A
+ .string "Own POKéMON type: PSYCHIC$"
+
+gUnknown_81BA194:: @ 81BA194
+ .string "Own move type: FIGHTING$"
+
+gUnknown_81BA1AC:: @ 81BA1AC
+ .string "Own POKéMON type: FIGHTING$"
+
+gUnknown_81BA1C7:: @ 81BA1C7
+ .string "Own move type: GRASS$"
+
+gUnknown_81BA1DC:: @ 81BA1DC
+ .string "Own POKéMON type: GRASS$"
+
+gUnknown_81BA1F4:: @ 81BA1F4
+ .string "Own move type: GHOST$"
+
+gUnknown_81BA209:: @ 81BA209
+ .string "Own POKéMON type: GHOST$"
+
+gUnknown_81BA221:: @ 81BA221
+ .string "Own move type: ICE$"
+
+gUnknown_81BA234:: @ 81BA234
+ .string "Own POKéMON type: ICE$"
+
+gUnknown_81BA24A:: @ 81BA24A
+ .string "Own move type: GROUND$"
+
+gUnknown_81BA260:: @ 81BA260
+ .string "Own POKéMON type: GROUND$"
+
+gUnknown_81BA279:: @ 81BA279
+ .string "Own move type: ELECTRIC$"
+
+gUnknown_81BA291:: @ 81BA291
+ .string "Own POKéMON type: ELECTRIC$"
+
+gUnknown_81BA2AC:: @ 81BA2AC
+ .string "Own move type: POISON$"
+
+gUnknown_81BA2C2:: @ 81BA2C2
+ .string "Own POKéMON type: POISON$"
+
+gUnknown_81BA2DB:: @ 81BA2DB
+ .string "Own move type: DRAGON$"
+
+gUnknown_81BA2F1:: @ 81BA2F1
+ .string "Own POKéMON type: DRAGON$"
+
+gUnknown_81BA30A:: @ 81BA30A
+ .string "Own move type: NORMAL$"
+
+gUnknown_81BA320:: @ 81BA320
+ .string "Own POKéMON type: NORMAL$"
+
+gUnknown_81BA339:: @ 81BA339
+ .string "Own move type: STEEL$"
+
+gUnknown_81BA34E:: @ 81BA34E
+ .string "Own POKéMON type: STEEL$"
+
+gUnknown_81BA366:: @ 81BA366
+ .string "Own move type: FLYING$"
+
+gUnknown_81BA37C:: @ 81BA37C
+ .string "Own POKéMON type: FLYING$"
+
+gUnknown_81BA395:: @ 81BA395
+ .string "Own move type: FIRE$"
+
+gUnknown_81BA3A9:: @ 81BA3A9
+ .string "Own POKéMON type: FIRE$"
+
+gUnknown_81BA3C0:: @ 81BA3C0
+ .string "Own move type: WATER$"
+
+gUnknown_81BA3D5:: @ 81BA3D5
+ .string "Own POKéMON type: WATER$"
+
+gUnknown_81BA3ED:: @ 81BA3ED
+ .string "Own move type: BUG$"
+
+gUnknown_81BA400:: @ 81BA400
+ .string "Own POKéMON type: BUG$"
+
+gUnknown_81BA416:: @ 81BA416
+ .string "Depending on the matchup of the\n"
+ .string "move type and the target POKéMON's\l"
+ .string "type, the move's effectiveness varies:\l"
+ .string "{EXTRA_TARGET}: Super effective!\l"
+ .string "{EXTRA_TRIANGLE}: Not very effective\l"
+ .string "{EXTRA_X}: Not effective at all\l"
+ .string "(No changes for other matchups.)$"
+
+gUnknown_81BA4E6:: @ 81BA4E6
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: PSYCHIC, GHOST\p"
+ .string " {EXTRA_TRIANGLE}: FIGHTING, DARK, STEEL$"
+
+gUnknown_81BA539:: @ 81BA539
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIGHTING, BUG\p"
+ .string " {EXTRA_TRIANGLE}: GHOST, DARK\p"
+ .string " {EXTRA_X}: PSYCHIC$"
+
+gUnknown_81BA595:: @ 81BA595
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, ICE, FLYING, BUG\p"
+ .string " {EXTRA_TRIANGLE}: FIGHTING, GROUND, STEEL$"
+
+gUnknown_81BA5F2:: @ 81BA5F2
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: WATER, GRASS, FIGHTING,\n"
+ .string " GROUND, STEEL\p"
+ .string " {EXTRA_TRIANGLE}: NORMAL, FIRE, POISON, FLYING$"
+
+gUnknown_81BA66F:: @ 81BA66F
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIGHTING, POISON\p"
+ .string " {EXTRA_TRIANGLE}: PSYCHIC, STEEL\p"
+ .string " {EXTRA_X}: DARK$"
+
+gUnknown_81BA6C9:: @ 81BA6C9
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: BUG, GHOST, DARK\p"
+ .string " {EXTRA_TRIANGLE}: FIGHTING, PSYCHIC$"
+
+gUnknown_81BA71F:: @ 81BA71F
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: NORMAL, ICE, ROCK, DARK, STEEL\p"
+ .string " {EXTRA_TRIANGLE}: POISON, FLYING, PSYCHIC, BUG\p"
+ .string " {EXTRA_X}: GHOST$"
+
+gUnknown_81BA796:: @ 81BA796
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FLYING, PSYCHIC\p"
+ .string " {EXTRA_TRIANGLE}: BUG, ROCK, DARK$"
+
+gUnknown_81BA7E9:: @ 81BA7E9
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: WATER, GROUND, ROCK\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, GRASS, POISON, FLYING,\n"
+ .string " BUG, DRAGON, STEEL$"
+
+gUnknown_81BA862:: @ 81BA862
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, ICE, POISON, FLYING, BUG\p"
+ .string " {EXTRA_TRIANGLE}: WATER, ELECTRIC, GRASS, GROUND$"
+
+gUnknown_81BA8D3:: @ 81BA8D3
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: PSYCHIC, GHOST\p"
+ .string " {EXTRA_TRIANGLE}: DARK, STEEL\p"
+ .string " {EXTRA_X}: NORMAL$"
+
+gUnknown_81BA92A:: @ 81BA92A
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: GHOST, DARK\p"
+ .string " {EXTRA_TRIANGLE}: POISON, BUG\p"
+ .string " {EXTRA_X}: NORMAL, FIGHTING$"
+
+gUnknown_81BA98D:: @ 81BA98D
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: GRASS, GROUND, FLYING, DRAGON\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, WATER, ICE, STEEL$"
+
+gUnknown_81BA9F1:: @ 81BA9F1
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, FIGHTING, ROCK, STEEL\p"
+ .string " {EXTRA_TRIANGLE}: ICE$"
+
+gUnknown_81BAA44:: @ 81BAA44
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, ELECTRIC, POISON, ROCK,\n"
+ .string " STEEL\p"
+ .string " {EXTRA_TRIANGLE}: GRASS, BUG\n"
+ .string " {EXTRA_X}: FLYING$"
+
+gUnknown_81BAAB6:: @ 81BAAB6
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: WATER, GRASS, ICE\p"
+ .string " {EXTRA_TRIANGLE}: POISON, ROCK\p"
+ .string " {EXTRA_X}: ELECTRIC$"
+
+gUnknown_81BAB18:: @ 81BAB18
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: WATER, FLYING\p"
+ .string " {EXTRA_TRIANGLE}: ELECTRIC, GRASS, DRAGON\p"
+ .string " {EXTRA_X}: GROUND$"
+
+gUnknown_81BAB7A:: @ 81BAB7A
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: GROUND\p"
+ .string " {EXTRA_TRIANGLE}: ELECTRIC, FLYING, STEEL$"
+
+gUnknown_81BABCC:: @ 81BABCC
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: GRASS\p"
+ .string " {EXTRA_TRIANGLE}: POISON, GROUND, ROCK, GHOST\p"
+ .string " {EXTRA_X}: STEEL$"
+
+gUnknown_81BAC29:: @ 81BAC29
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: GROUND, PSYCHIC\p"
+ .string " {EXTRA_TRIANGLE}: GRASS, FIGHTING, POISON, BUG$"
+
+gUnknown_81BAC89:: @ 81BAC89
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: DRAGON\p"
+ .string " {EXTRA_TRIANGLE}: STEEL$"
+
+gUnknown_81BACC4:: @ 81BACC4
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: ICE, DRAGON\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, WATER, ELECTRIC, GRASS$"
+
+gUnknown_81BAD20:: @ 81BAD20
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TRIANGLE}: ROCK, STEEL\p"
+ .string " {EXTRA_X}: GHOST$"
+
+gUnknown_81BAD60:: @ 81BAD60
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIGHTING\p"
+ .string " {EXTRA_X}: GHOST$"
+
+gUnknown_81BADA2:: @ 81BADA2
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: ICE, ROCK\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, WATER, ELECTRIC, STEEL$"
+
+gUnknown_81BADF7:: @ 81BADF7
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, FIGHTING, GROUND\n"
+ .string " {EXTRA_TRIANGLE}: NORMAL, GRASS, ICE, FLYING,\l"
+ .string " PSYCHIC, BUG, ROCK, GHOST,\l"
+ .string " DRAGON, DARK, STEEL\l"
+ .string " {EXTRA_X}: POISON$"
+
+gUnknown_81BAEA8:: @ 81BAEA8
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: GRASS, FIGHTING, BUG\p"
+ .string " {EXTRA_TRIANGLE}: ELECTRIC, ROCK, STEEL$"
+
+gUnknown_81BAF01:: @ 81BAF01
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: ELECTRIC, ICE, ROCK\p"
+ .string " {EXTRA_TRIANGLE}: GRASS, FIGHTING, BUG\p"
+ .string " {EXTRA_X}: GROUND$"
+
+gUnknown_81BAF6B:: @ 81BAF6B
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: GRASS, ICE, BUG, STEEL\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, WATER, ROCK, DRAGON$"
+
+gUnknown_81BAFCA:: @ 81BAFCA
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: WATER, GROUND, ROCK\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, GRASS, ICE, BUG, STEEL$"
+
+gUnknown_81BB02E:: @ 81BB02E
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, GROUND, ROCK\p"
+ .string " {EXTRA_TRIANGLE}: WATER, GRASS, DRAGON$"
+
+gUnknown_81BB084:: @ 81BB084
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: ELECTRIC, GRASS\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, WATER, ICE, STEEL$"
+
+gUnknown_81BB0DF:: @ 81BB0DF
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: GRASS, PSYCHIC, DARK\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, FIGHTING, POISON,\n"
+ .string " FLYING, GHOST, STEEL$"
+
+gUnknown_81BB156:: @ 81BB156
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, FLYING, ROCK\p"
+ .string " {EXTRA_TRIANGLE}: GRASS, FIGHTING, GROUND$"
+
diff --git a/data/text/move_descriptions.inc b/data/text/move_descriptions.inc
index 9a7130eb3..94a4d0ca8 100644
--- a/data/text/move_descriptions.inc
+++ b/data/text/move_descriptions.inc
@@ -1,1065 +1,1062 @@
-gUnknown_8482834::
+gMoveDescription_Pound::
.string "A physical attack\ndelivered with a\nlong tail or a\nforeleg, etc.$"
-gUnknown_8482874:: @ 8482874
+gMoveDescription_KarateChop:: @ 8482874
.string "The foe is attacked\nwith a sharp chop.\nIt has a high\ncritical-hit ratio.$"
-gUnknown_84828BD:: @ 84828BD
+gMoveDescription_DoubleSlap:: @ 84828BD
.string "The foe is slapped\nrepeatedly, back\nand forth, two to\nfive times.$"
-gUnknown_84828FF:: @ 84828FF
+gMoveDescription_CometPunch:: @ 84828FF
.string "The foe is hit with\na flurry of punches\nthat strike two to\nfive times.$"
-gUnknown_8482946:: @ 8482946
+gMoveDescription_MegaPunch:: @ 8482946
.string "The foe is slugged\nby a punch thrown\nwith muscle-packed\npower.$"
-gUnknown_8482985:: @ 8482985
+gMoveDescription_PayDay:: @ 8482985
.string "Numerous coins are\nhurled at the foe.\nMoney is earned\nafter battle.$"
-gUnknown_84829C9:: @ 84829C9
+gMoveDescription_FirePunch:: @ 84829C9
.string "The foe is punched\nwith a fiery fist.\nIt may leave the\nfoe with a burn.$"
-gUnknown_8482A11:: @ 8482A11
+gMoveDescription_IcePunch:: @ 8482A11
.string "The foe is punched\nwith an icy fist.\nIt may leave the\nfoe frozen.$"
-gUnknown_8482A53:: @ 8482A53
+gMoveDescription_ThunderPunch:: @ 8482A53
.string "The foe is punched\nwith an electrified\nfist. It may leave\nthe foe paralyzed.$"
-gUnknown_8482AA0:: @ 8482AA0
+gMoveDescription_Scratch:: @ 8482AA0
.string "Hard, pointed, and\nsharp claws rake\nthe foe.$"
-gUnknown_8482ACD:: @ 8482ACD
+gMoveDescription_ViceGrip:: @ 8482ACD
.string "Huge, impressive\npincers grip and\nsqueeze the foe.$"
-gUnknown_8482B00:: @ 8482B00
+gMoveDescription_Guillotine:: @ 8482B00
.string "A vicious tearing\nattack with pincers.\nThe foe will faint\nif it hits.$"
-gUnknown_8482B46:: @ 8482B46
+gMoveDescription_RazorWind:: @ 8482B46
.string "Blades of wind hit\nthe foe on the 2nd\nturn. It has a high\ncritical-hit ratio.$"
-gUnknown_8482B94:: @ 8482B94
+gMoveDescription_SwordsDance:: @ 8482B94
.string "A frenetic dance of\nfighting. It sharply\nraises the ATTACK\nstat.$"
-gUnknown_8482BD5:: @ 8482BD5
+gMoveDescription_Cut:: @ 8482BD5
.string "A basic attack.\nIt can be used to\ncut down thin trees\nand grass.$"
-gUnknown_8482C16:: @ 8482C16
+gMoveDescription_Gust:: @ 8482C16
.string "Strikes the foe\nwith a gust of wind\nwhipped up by\nwings.$"
-gUnknown_8482C4F:: @ 8482C4F
+gMoveDescription_WingAttack:: @ 8482C4F
.string "The foe is struck\nwith large, imposing\nwings spread wide.$"
-gUnknown_8482C89:: @ 8482C89
+gMoveDescription_Whirlwind:: @ 8482C89
.string "The foe is made to\nswitch out with an\nally. In the wild,\nthe battle ends.$"
-gUnknown_8482CD3:: @ 8482CD3
+gMoveDescription_Fly:: @ 8482CD3
.string "A 2-turn move that\nhits on the 2nd\nturn. Use it to fly\nto any known town.$"
-gUnknown_8482D1D:: @ 8482D1D
+gMoveDescription_Bind:: @ 8482D1D
.string "A long body or\ntentacles are used\nto bind the foe for\ntwo to five turns.$"
-gUnknown_8482D66:: @ 8482D66
+gMoveDescription_Slam:: @ 8482D66
.string "The foe is struck\nwith a long tail,\nvines, etc.$"
-gUnknown_8482D96:: @ 8482D96
+gMoveDescription_VineWhip:: @ 8482D96
.string "The foe is struck\nwith slender, whip-\nlike vines.$"
-gUnknown_8482DC8:: @ 8482DC8
+gMoveDescription_Stomp:: @ 8482DC8
.string "The foe is stomped\nwith a big foot.\nIt may make the\nfoe flinch.$"
-gUnknown_8482E08:: @ 8482E08
+gMoveDescription_DoubleKick:: @ 8482E08
.string "Two legs are used\nto quickly kick the\nfoe twice in one\nturn.$"
-gUnknown_8482E45:: @ 8482E45
+gMoveDescription_MegaKick:: @ 8482E45
.string "The foe is attacked\nby a kick fired\nwith muscle-packed\npower.$"
-gUnknown_8482E83:: @ 8482E83
+gMoveDescription_JumpKick:: @ 8482E83
.string "The user jumps up\nhigh, then kicks.\nIf it misses, the\nuser hurts itself.$"
-gUnknown_8482ECC:: @ 8482ECC
+gMoveDescription_RollingKick:: @ 8482ECC
.string "A quick kick from a\nrolling spin.\nIt may make the\nfoe flinch.$"
-gUnknown_8482F0A:: @ 8482F0A
+gMoveDescription_SandAttack:: @ 8482F0A
.string "A lot of sand is\nhurled in the foe's\nface, reducing its\naccuracy.$"
-gUnknown_8482F4C:: @ 8482F4C
+gMoveDescription_Headbutt:: @ 8482F4C
.string "The user sticks its\nhead out and rams.\nIt may make the\nfoe flinch.$"
-gUnknown_8482F8F:: @ 8482F8F
+gMoveDescription_HornAttack:: @ 8482F8F
.string "The foe is jabbed\nwith a sharply\npointed horn to\ninflict damage.$"
-gUnknown_8482FD0:: @ 8482FD0
+gMoveDescription_FuryAttack:: @ 8482FD0
.string "The foe is jabbed\nrepeatedly with a\nhorn or beak two to\nfive times.$"
-gUnknown_8483014:: @ 8483014
+gMoveDescription_HornDrill:: @ 8483014
.string "The horn is rotated\nlike a drill to ram.\nThe foe will faint\nif it hits.$"
-gUnknown_848305C:: @ 848305C
+gMoveDescription_Tackle:: @ 848305C
.string "A physical attack\nin which the user\ncharges, full body,\ninto the foe.$"
-gUnknown_84830A2:: @ 84830A2
+gMoveDescription_BodySlam:: @ 84830A2
.string "The user drops its\nfull body on the\nfoe. It may leave\nthe foe paralyzed.$"
-gUnknown_84830EB:: @ 84830EB
+gMoveDescription_Wrap:: @ 84830EB
.string "A long body or\nvines are used to\nwrap the foe for\ntwo to five turns.$"
-gUnknown_8483130:: @ 8483130
+gMoveDescription_TakeDown:: @ 8483130
.string "A reckless, full-\nbody charge attack\nthat also hurts the\nuser a little.$"
-gUnknown_8483178:: @ 8483178
+gMoveDescription_Thrash:: @ 8483178
.string "The user rampages\nabout for two to\nthree turns, then\nbecomes confused.$"
-gUnknown_84831BF:: @ 84831BF
+gMoveDescription_DoubleEdge:: @ 84831BF
.string "A reckless, life-\nrisking tackle that\nalso hurts the user\na little.$"
-gUnknown_8483203:: @ 8483203
+gMoveDescription_TailWhip:: @ 8483203
.string "The user wags its\ntail cutely, making\nthe foe lower its\nDEFENSE stat.$"
-gUnknown_8483249:: @ 8483249
+gMoveDescription_PoisonSting:: @ 8483249
.string "The foe is stabbed\nwith a toxic barb,\netc. It may poison\nthe foe.$"
-gUnknown_848328B:: @ 848328B
+gMoveDescription_Twineedle:: @ 848328B
.string "The foe is stabbed\ntwice with foreleg\nstingers. It may\npoison the foe.$"
-gUnknown_84832D2:: @ 84832D2
+gMoveDescription_PinMissile:: @ 84832D2
.string "Sharp pins are shot\nat the foe and hit\ntwo to five times\nat once.$"
-gUnknown_8483314:: @ 8483314
+gMoveDescription_Leer:: @ 8483314
.string "The foe is given an\nintimidating look\nthat lowers its\nDEFENSE stat.$"
-gUnknown_8483358:: @ 8483358
+gMoveDescription_Bite:: @ 8483358
.string "The user bites with\nvicious fangs.\nIt may make the\nfoe flinch.$"
-gUnknown_8483397:: @ 8483397
+gMoveDescription_Growl:: @ 8483397
.string "The user growls in\na cute way, making\nthe foe lower its\nATTACK stat.$"
-gUnknown_84833DC:: @ 84833DC
+gMoveDescription_Roar:: @ 84833DC
.string "The foe is made to\nswitch out with an\nally. In the wild,\nthe battle ends.$"
-gUnknown_8483426:: @ 8483426
+gMoveDescription_Sing:: @ 8483426
.string "A soothing song\nin a calming voice\nlulls the foe into\na deep slumber.$"
-gUnknown_848346C:: @ 848346C
+gMoveDescription_Supersonic:: @ 848346C
.string "The user generates\nodd sound waves.\nIt may confuse the\nfoe.$"
-gUnknown_84834A8:: @ 84834A8
+gMoveDescription_SonicBoom:: @ 84834A8
.string "The foe is hit with\na shock wave that\nalways inflicts 20-\nHP damage.$"
-gUnknown_84834ED:: @ 84834ED
+gMoveDescription_Disable:: @ 84834ED
.string "For a few turns,\nit prevents the foe\nfrom using the move\nit last used.$"
-gUnknown_8483534:: @ 8483534
+gMoveDescription_Acid:: @ 8483534
.string "The foe is sprayed\nwith a harsh, hide-\nmelting acid that\nmay lower DEFENSE.$"
-gUnknown_8483580:: @ 8483580
+gMoveDescription_Ember:: @ 8483580
.string "The foe is attacked\nwith small flames.\nThe foe may suffer\na burn.$"
-gUnknown_84835C2:: @ 84835C2
+gMoveDescription_Flamethrower:: @ 84835C2
.string "The foe is scorched\nwith intense flames.\nThe foe may suffer\na burn.$"
-gUnknown_8483606:: @ 8483606
+gMoveDescription_Mist:: @ 8483606
.string "The ally party is\nprotected by a\nmist that prevents\nstat reductions.$"
-gUnknown_848364B:: @ 848364B
+gMoveDescription_WaterGun:: @ 848364B
.string "The foe is struck\nwith a lot of water\nexpelled forcibly\nfrom the mouth.$"
-gUnknown_8483693:: @ 8483693
+gMoveDescription_HydroPump:: @ 8483693
.string "A high volume of\nwater is blasted at\nthe foe under great\npressure.$"
-gUnknown_84836D6:: @ 84836D6
+gMoveDescription_Surf:: @ 84836D6
.string "A big wave crashes\ndown on the foe.\nCan also be used\nfor crossing water.$"
-gUnknown_848371F:: @ 848371F
+gMoveDescription_IceBeam:: @ 848371F
.string "The foe is struck\nwith an icy beam.\nIt may freeze the\nfoe solid.$"
-gUnknown_8483760:: @ 8483760
+gMoveDescription_Blizzard:: @ 8483760
.string "The foe is blasted\nwith a blizzard.\nIt may freeze the\nfoe solid.$"
-gUnknown_84837A1:: @ 84837A1
+gMoveDescription_Psybeam:: @ 84837A1
.string "A peculiar ray is\nshot at the foe.\nIt may leave the\nfoe confused.$"
-gUnknown_84837E3:: @ 84837E3
+gMoveDescription_BubbleBeam:: @ 84837E3
.string "A spray of bubbles\nstrikes the foe.\nIt may lower the\nfoe's SPEED stat.$"
-gUnknown_848382A:: @ 848382A
+gMoveDescription_AuroraBeam:: @ 848382A
.string "A rainbow-colored\nattack beam.\nIt may lower the\nfoe's ATTACK stat.$"
-gUnknown_848386D:: @ 848386D
+gMoveDescription_HyperBeam:: @ 848386D
.string "A severely damaging\nattack that makes\nthe user rest on\nthe next turn.$"
-gUnknown_84838B3:: @ 84838B3
+gMoveDescription_Peck:: @ 84838B3
.string "The foe is jabbed\nwith a sharply\npointed beak or\nhorn.$"
-gUnknown_84838EA:: @ 84838EA
+gMoveDescription_DrillPeck:: @ 84838EA
.string "A corkscrewing\nattack with the\nsharp beak acting\nas a drill.$"
-gUnknown_8483927:: @ 8483927
+gMoveDescription_Submission:: @ 8483927
.string "A reckless, full-\nbody throw attack\nthat also hurts the\nuser a little.$"
-gUnknown_848396E:: @ 848396E
+gMoveDescription_LowKick:: @ 848396E
.string "A low, tripping kick\nthat inflicts more\ndamage on heavier\nfoes.$"
-gUnknown_84839AE:: @ 84839AE
+gMoveDescription_Counter:: @ 84839AE
.string "A retaliation move\nthat counters any\nphysical hit with\ndouble the damage.$"
-gUnknown_84839F8:: @ 84839F8
+gMoveDescription_SeismicToss:: @ 84839F8
.string "A gravity-fed throw\nthat causes damage\nmatching the user's\nlevel.$"
-gUnknown_8483A3A:: @ 8483A3A
+gMoveDescription_Strength:: @ 8483A3A
.string "The foe is slugged\nat maximum power.\nCan also be used\nto move boulders.$"
-gUnknown_8483A82:: @ 8483A82
+gMoveDescription_Absorb:: @ 8483A82
.string "An attack that\nabsorbs half the\ndamage it inflicted\nto restore HP.$"
-gUnknown_8483AC5:: @ 8483AC5
+gMoveDescription_MegaDrain:: @ 8483AC5
.string "A tough attack that\ndrains half the\ndamage it inflicted\nto restore HP.$"
-gUnknown_8483B0C:: @ 8483B0C
+gMoveDescription_LeechSeed:: @ 8483B0C
.string "A seed is planted\non the foe to steal\nsome HP for the \nuser on every turn.$"
-gUnknown_8483B57:: @ 8483B57
+gMoveDescription_Growth:: @ 8483B57
.string "The user's body is\nforced to grow,\nraising the SP.\nATK stat.$"
-gUnknown_8483B94:: @ 8483B94
+gMoveDescription_RazorLeaf:: @ 8483B94
.string "The foe is hit with\na cutting leaf.\nIt has a high\ncritical-hit ratio.$"
-gUnknown_8483BDA:: @ 8483BDA
+gMoveDescription_SolarBeam:: @ 8483BDA
.string "A 2-turn move that\nblasts the foe with\nabsorbed energy in\nthe 2nd turn.$"
-gUnknown_8483C22:: @ 8483C22
+gMoveDescription_PoisonPowder:: @ 8483C22
.string "A cloud of toxic\ndust is scattered.\nIt may poison the\nfoe.$"
-gUnknown_8483C5D:: @ 8483C5D
+gMoveDescription_StunSpore:: @ 8483C5D
.string "Paralyzing dust is\nscattered wildly.\nIt may paralyze\nthe foe.$"
-gUnknown_8483C9B:: @ 8483C9B
+gMoveDescription_SleepPowder:: @ 8483C9B
.string "A sleep-inducing\ndust is scattered\nin high volume\naround a foe.$"
-gUnknown_8483CDB:: @ 8483CDB
+gMoveDescription_PetalDance:: @ 8483CDB
.string "The user attacks\nwith petals for two\nto three turns,\nthen gets confused.$"
-gUnknown_8483D24:: @ 8483D24
+gMoveDescription_StringShot:: @ 8483D24
.string "The foe is bound\nwith strings shot\nfrom the mouth to\nreduce its SPEED.$"
-gUnknown_8483D6B:: @ 8483D6B
+gMoveDescription_DragonRage:: @ 8483D6B
.string "The foe is hit with\na shock wave that\nalways inflicts 40-\nHP damage.$"
-gUnknown_8483DB0:: @ 8483DB0
+gMoveDescription_FireSpin:: @ 8483DB0
.string "The foe is trapped\nin an intense spiral\nof fire that rages\ntwo to five turns.$"
-gUnknown_8483DFE:: @ 8483DFE
+gMoveDescription_ThunderShock:: @ 8483DFE
.string "An electric shock\nattack that may\nalso leave the foe\nparalyzed.$"
-gUnknown_8483E3E:: @ 8483E3E
+gMoveDescription_Thunderbolt:: @ 8483E3E
.string "A strong electrical\nattack that may\nalso leave the foe\nparalyzed.$"
-gUnknown_8483E80:: @ 8483E80
+gMoveDescription_ThunderWave:: @ 8483E80
.string "A weak electric\nshock that is sure\nto cause paralysis\nif it hits.$"
-gUnknown_8483EC2:: @ 8483EC2
+gMoveDescription_Thunder:: @ 8483EC2
.string "A brutal lightning\nattack that may\nalso leave the foe\nparalyzed.$"
-gUnknown_8483F03:: @ 8483F03
+gMoveDescription_RockThrow:: @ 8483F03
.string "The foe is attacked\nwith a shower of\nsmall, easily\nthrown rocks.$"
-gUnknown_8483F44:: @ 8483F44
+gMoveDescription_Earthquake:: @ 8483F44
.string "An earthquake that\nstrikes all POKéMON\nin battle excluding\nthe user.$"
-gUnknown_8483F89:: @ 8483F89
+gMoveDescription_Fissure:: @ 8483F89
.string "The foe is dropped\ninto a fissure.\nThe foe faints if it\nhits.$"
-gUnknown_8483FC7:: @ 8483FC7
+gMoveDescription_Dig:: @ 8483FC7
.string "An attack that hits\non the 2nd turn.\nCan also be used\nto exit dungeons.$"
-gUnknown_848400F:: @ 848400F
+gMoveDescription_Toxic:: @ 848400F
.string "A move that badly\npoisons the foe.\nIts poison damage\nworsens every turn.$"
-gUnknown_8484058:: @ 8484058
+gMoveDescription_Confusion:: @ 8484058
.string "A weak telekinetic\nattack that may\nalso leave the foe\nconfused.$"
-gUnknown_8484098:: @ 8484098
+gMoveDescription_Psychic:: @ 8484098
.string "A strong telekinetic\nattack. It may also\nlower the foe's\nSP. DEF stat.$"
-gUnknown_84840DF:: @ 84840DF
+gMoveDescription_Hypnosis:: @ 84840DF
.string "Hypnotic suggestion\nis used to make the\nfoe fall into a\ndeep sleep.$"
-gUnknown_8484123:: @ 8484123
+gMoveDescription_Meditate:: @ 8484123
.string "The user meditates\nto awaken its power\nand raise its\nATTACK stat.$"
-gUnknown_8484165:: @ 8484165
+gMoveDescription_Agility:: @ 8484165
.string "The user relaxes\nand lightens its\nbody to sharply\nboost its SPEED.$"
-gUnknown_84841A8:: @ 84841A8
+gMoveDescription_QuickAttack:: @ 84841A8
.string "An almost invisibly\nfast attack that\nis certain to strike\nfirst.$"
-gUnknown_84841E9:: @ 84841E9
+gMoveDescription_Rage:: @ 84841E9
.string "An attack that\nbecomes stronger\neach time the user\nis hit in battle.$"
-gUnknown_848422E:: @ 848422E
+gMoveDescription_Teleport:: @ 848422E
.string "Use it to flee from\nany wild POKéMON.\nAlso warps to the\nlast POKé CENTER.$"
-gUnknown_8484278:: @ 8484278
+gMoveDescription_NightShade:: @ 8484278
.string "An attack with a\nmirage that inflicts\ndamage matching\nthe user's level.$"
-gUnknown_84842C0:: @ 84842C0
+gMoveDescription_Mimic:: @ 84842C0
.string "The user copies the\nmove last used by\nthe foe for the\nrest of the battle.$"
-gUnknown_848430A:: @ 848430A
+gMoveDescription_Screech:: @ 848430A
.string "An ear-splitting\nscreech is emitted\nto sharply reduce\nthe foe's DEFENSE.$"
-gUnknown_8484353:: @ 8484353
+gMoveDescription_DoubleTeam:: @ 8484353
.string "The user creates\nillusory copies of\nitself to raise its\nevasiveness.$"
-gUnknown_8484398:: @ 8484398
+gMoveDescription_Recover:: @ 8484398
.string "A self-healing move\nthat restores HP by\nup to half of the\nuser's maximum HP.$"
-gUnknown_84843E5:: @ 84843E5
+gMoveDescription_Harden:: @ 84843E5
.string "The user stiffens\nall the muscles in\nits body to raise\nits DEFENSE stat.$"
-gUnknown_848442E:: @ 848442E
+gMoveDescription_Minimize:: @ 848442E
.string "The user compresses\nall the cells in its\nbody to raise its\nevasiveness.$"
-gUnknown_8484476:: @ 8484476
+gMoveDescription_Smokescreen:: @ 8484476
.string "An obscuring cloud\nof smoke or ink\nreduces the foe's\naccuracy.$"
-gUnknown_84844B5:: @ 84844B5
+gMoveDescription_ConfuseRay:: @ 84844B5
.string "The foe is exposed\nto a sinister ray\nthat triggers\nconfusion.$"
-gUnknown_84844F3:: @ 84844F3
+gMoveDescription_Withdraw:: @ 84844F3
.string "The user withdraws\nits body in its hard\nshell, raising its\nDEFENSE stat.$"
-gUnknown_848453C:: @ 848453C
+gMoveDescription_DefenseCurl:: @ 848453C
.string "The user curls up\nto conceal weak\nspots and raise its\nDEFENSE stat.$"
-gUnknown_8484580:: @ 8484580
+gMoveDescription_Barrier:: @ 8484580
.string "The user creates a\nsturdy wall that\nsharply raises its\nDEFENSE stat.$"
-gUnknown_84845C5:: @ 84845C5
+gMoveDescription_LightScreen:: @ 84845C5
.string "A wall of light\ncuts damage from\nSP. ATK attacks\nfor five turns.$"
-gUnknown_8484606:: @ 8484606
+gMoveDescription_Haze:: @ 8484606
.string "Eliminates all stat\nchanges among all\nPOKéMON engaged in\nbattle.$"
-gUnknown_8484647:: @ 8484647
+gMoveDescription_Reflect:: @ 8484647
.string "A wall of light\ncuts damage from\nphysical attacks\nfor five turns.$"
-gUnknown_8484689:: @ 8484689
+gMoveDescription_FocusEnergy:: @ 8484689
.string "The user takes a\ndeep breath and\nfocuses to raise its\ncritical-hit ratio.$"
-gUnknown_84846D3:: @ 84846D3
+gMoveDescription_Bide:: @ 84846D3
.string "The user endures\nattacks for two\nturns, then strikes\nback double.$"
-gUnknown_8484715:: @ 8484715
+gMoveDescription_Metronome:: @ 8484715
.string "Waggles a finger\nand stimulates the\nbrain into using any\nmove at random.$"
-gUnknown_848475E:: @ 848475E
+gMoveDescription_MirrorMove:: @ 848475E
.string "The user counters\nthe move last used\nby the foe with the\nsame move.$"
-gUnknown_84847A2:: @ 84847A2
+gMoveDescription_SelfDestruct:: @ 84847A2
.string "The user blows up\nto inflict severe\ndamage, even\nmaking itself faint.$"
-gUnknown_84847E8:: @ 84847E8
+gMoveDescription_EggBomb:: @ 84847E8
.string "A large egg is\nhurled with great\nforce at the foe to\ninflict damage.$"
-gUnknown_848482D:: @ 848482D
+gMoveDescription_Lick:: @ 848482D
.string "The foe is licked\nand hit with a long\ntongue. It may\nalso paralyze.$"
-gUnknown_8484871:: @ 8484871
+gMoveDescription_Smog:: @ 8484871
.string "The foe is attacked\nwith exhaust gases.\nIt may also poison\nthe foe.$"
-gUnknown_84848B5:: @ 84848B5
+gMoveDescription_Sludge:: @ 84848B5
.string "Toxic sludge is\nhurled at the foe.\nIt may poison the\ntarget.$"
-gUnknown_84848F2:: @ 84848F2
+gMoveDescription_BoneClub:: @ 84848F2
.string "The foe is clubbed\nwith a bone held in\nhand. It may make\nthe foe flinch.$"
-gUnknown_848493B:: @ 848493B
+gMoveDescription_FireBlast:: @ 848493B
.string "The foe is hit with\nan intense flame.\nIt may leave the\ntarget with a burn.$"
-gUnknown_8484986:: @ 8484986
+gMoveDescription_Waterfall:: @ 8484986
.string "A powerful charge\nattack. It can also\nbe used to climb\na waterfall.$"
-gUnknown_84849CA:: @ 84849CA
+gMoveDescription_Clamp:: @ 84849CA
.string "The foe is clamped\nand squeezed by\nthe user's shell for\ntwo to five turns.$"
-gUnknown_8484A15:: @ 8484A15
+gMoveDescription_Swift:: @ 8484A15
.string "Star-shaped rays\nthat never miss are\nfired at all foes in\nbattle.$"
-gUnknown_8484A57:: @ 8484A57
+gMoveDescription_SkullBash:: @ 8484A57
.string "The user raises its\nDEFENSE in the 1st\nturn, then attacks\nin the 2nd turn.$"
-gUnknown_8484AA2:: @ 8484AA2
+gMoveDescription_SpikeCannon:: @ 8484AA2
.string "Sharp spikes are\nfired at the foe to\nstrike two to five\ntimes.$"
-gUnknown_8484AE1:: @ 8484AE1
+gMoveDescription_Constrict:: @ 8484AE1
.string "The foe is attacked\nwith long tentacles\nor vines. It may\nlower SPEED.$"
-gUnknown_8484B27:: @ 8484B27
+gMoveDescription_Amnesia:: @ 8484B27
.string "Forgets about\nsomething and\nsharply raises\nSP. DEF.$"
-gUnknown_8484B5B:: @ 8484B5B
+gMoveDescription_Kinesis:: @ 8484B5B
.string "The user distracts\nthe foe by bending\na spoon. It may\nlower accuracy.$"
-gUnknown_8484BA1:: @ 8484BA1
+gMoveDescription_SoftBoiled:: @ 8484BA1
.string "Heals the user by\nup to half its full\nHP. It can be used\nto heal an ally.$"
-gUnknown_8484BEB:: @ 8484BEB
+gMoveDescription_HiJumpKick:: @ 8484BEB
.string "A strong jumping\nknee kick. If it\nmisses, the user is\nhurt.$"
-gUnknown_8484C27:: @ 8484C27
+gMoveDescription_Glare:: @ 8484C27
.string "The user intimidates\nthe foe with the\ndesign on its belly\nto cause paralysis.$"
-gUnknown_8484C75:: @ 8484C75
+gMoveDescription_DreamEater:: @ 8484C75
.string "Absorbs half the\ndamage it inflicted\non a sleeping foe\nto restore HP.$"
-gUnknown_8484CBB:: @ 8484CBB
+gMoveDescription_PoisonGas:: @ 8484CBB
.string "The foe is sprayed\nwith a cloud of\ntoxic gas that may\npoison the foe.$"
-gUnknown_8484D01:: @ 8484D01
+gMoveDescription_Barrage:: @ 8484D01
.string "Round objects are\nhurled at the foe\nto strike two to\nfive times.$"
-gUnknown_8484D42:: @ 8484D42
+gMoveDescription_LeechLife:: @ 8484D42
.string "An attack that\nabsorbs half the\ndamage it inflicted\nto restore HP.$"
-gUnknown_8484D85:: @ 8484D85
+gMoveDescription_LovelyKiss:: @ 8484D85
.string "The user forces a\nkiss on the foe\nwith a scary face\nthat induces sleep.$"
-gUnknown_8484DCD:: @ 8484DCD
+gMoveDescription_SkyAttack:: @ 8484DCD
.string "A 2nd-turn attack\nmove with a high\ncritical-hit ratio.\nThe foe may flinch.$"
-gUnknown_8484E18:: @ 8484E18
+gMoveDescription_Transform:: @ 8484E18
.string "The user transforms\ninto a copy of the\nfoe with even the\nsame move set.$"
-gUnknown_8484E60:: @ 8484E60
+gMoveDescription_Bubble:: @ 8484E60
.string "A spray of bubbles\nhits the foe.\nIt may lower the\nfoe's SPEED stat.$"
-gUnknown_8484EA4:: @ 8484EA4
+gMoveDescription_DizzyPunch:: @ 8484EA4
.string "The foe is hit with\na rhythmic punch\nthat may leave it\nconfused.$"
-gUnknown_8484EE5:: @ 8484EE5
+gMoveDescription_Spore:: @ 8484EE5
.string "The user scatters\nbursts of fine\nspores that induce\nsleep.$"
-gUnknown_8484F20:: @ 8484F20
+gMoveDescription_Flash:: @ 8484F20
.string "A blast of light\nthat cuts the foe's\naccuracy. It also\nilluminates caves.$"
-gUnknown_8484F6A:: @ 8484F6A
+gMoveDescription_Psywave:: @ 8484F6A
.string "The foe is attacked\nwith an odd, hot\nenergy wave that\nvaries in intensity.$"
-gUnknown_8484FB5:: @ 8484FB5
+gMoveDescription_Splash:: @ 8484FB5
.string "The user just flops\nand splashes around\nwithout having any\neffect.$"
-gUnknown_8484FF8:: @ 8484FF8
+gMoveDescription_AcidArmor:: @ 8484FF8
.string "The user alters its\ncells to liquefy\nitself and sharply\nraise DEFENSE.$"
-gUnknown_848503F:: @ 848503F
+gMoveDescription_Crabhammer:: @ 848503F
.string "A large pincer is\nused to hammer the\nfoe. It has a high\ncritical-hit ratio.$"
-gUnknown_848508B:: @ 848508B
+gMoveDescription_Explosion:: @ 848508B
.string "The user explodes\nto inflict terrible\ndamage even while\nfainting itself.$"
-gUnknown_84850D4:: @ 84850D4
+gMoveDescription_FurySwipes:: @ 84850D4
.string "The foe is raked\nwith sharp claws or\nscythes two to five\ntimes.$"
-gUnknown_8485114:: @ 8485114
+gMoveDescription_Bonemerang:: @ 8485114
.string "The user throws a\nbone that hits the\nfoe once, then once\nagain on return.$"
-gUnknown_848515E:: @ 848515E
+gMoveDescription_Rest:: @ 848515E
.string "The user sleeps for\ntwo turns to fully\nrestore HP and heal\nany status problem.$"
-gUnknown_84851AD:: @ 84851AD
+gMoveDescription_RockSlide:: @ 84851AD
.string "Large boulders are\nhurled at the foe.\nIt may make the\nfoe flinch.$"
-gUnknown_84851EF:: @ 84851EF
+gMoveDescription_HyperFang:: @ 84851EF
.string "The foe is attacked\nwith sharp fangs.\nIt may make the\nfoe flinch.$"
-gUnknown_8485231:: @ 8485231
+gMoveDescription_Sharpen:: @ 8485231
.string "The user reduces\nits polygon count\nto sharpen edges\nand raise ATTACK.$"
-gUnknown_8485277:: @ 8485277
+gMoveDescription_Conversion:: @ 8485277
.string "The user changes\nits type to match\nthe type of one of\nits moves.$"
-gUnknown_84852B8:: @ 84852B8
+gMoveDescription_TriAttack:: @ 84852B8
.string "A simultaneous\n3-beam attack that\nmay paralyze, burn,\nor freeze the foe.$"
-gUnknown_8485301:: @ 8485301
+gMoveDescription_SuperFang:: @ 8485301
.string "The user attacks\nwith sharp fangs\nand halves the\nfoe's HP.$"
-gUnknown_848533C:: @ 848533C
+gMoveDescription_Slash:: @ 848533C
.string "The foe is slashed\nwith claws, etc.\nIt has a high\ncritical-hit ratio.$"
-gUnknown_8485382:: @ 8485382
+gMoveDescription_Substitute:: @ 8485382
.string "The user creates a\ndecoy using one-\nquarter of its full\nHP.$"
-gUnknown_84853BE:: @ 84853BE
+gMoveDescription_Struggle:: @ 84853BE
.string "An attack that is\nused only if there\nis no PP. It also\nhurts the user.$"
-gUnknown_8485405:: @ 8485405
+gMoveDescription_Sketch:: @ 8485405
.string "This move copies\nthe move last used\nby the foe, then\ndisappears.$"
-gUnknown_8485446:: @ 8485446
+gMoveDescription_TripleKick:: @ 8485446
.string "A 3-kick attack\nthat becomes more\npowerful with each\nsuccessive hit.$"
-gUnknown_848548B:: @ 848548B
+gMoveDescription_Thief:: @ 848548B
.string "An attack that may\ntake the foe's held\nitem if the user\nisn't holding one.$"
-gUnknown_84854D6:: @ 84854D6
+gMoveDescription_SpiderWeb:: @ 84854D6
.string "Ensnares the foe \nwith sticky string\nso it doesn't flee\nor switch out.$"
-gUnknown_848551D:: @ 848551D
+gMoveDescription_MindReader:: @ 848551D
.string "The user predicts\nthe foe's action to\nensure its next\nattack hits.$"
-gUnknown_8485560:: @ 8485560
+gMoveDescription_Nightmare:: @ 8485560
.string "A sleeping foe is\nshown a nightmare\nthat inflicts some\ndamage every turn.$"
-gUnknown_84855AA:: @ 84855AA
+gMoveDescription_FlameWheel:: @ 84855AA
.string "The user makes a\nfiery charge at the\nfoe. It may cause\na burn.$"
-gUnknown_84855E9:: @ 84855E9
+gMoveDescription_Snore:: @ 84855E9
.string "An attack that can\nbe used only while\nasleep. It may\ncause flinching.$"
-gUnknown_848562F:: @ 848562F
+gMoveDescription_Curse:: @ 848562F
.string "A move that works\ndifferently for the\nGHOST-type and all\nthe other types.$"
-gUnknown_8485679:: @ 8485679
+gMoveDescription_Flail:: @ 8485679
.string "A desperate attack\nthat becomes more\npowerful the less\nHP the user has.$"
-gUnknown_84856C1:: @ 84856C1
+gMoveDescription_Conversion2:: @ 84856C1
.string "The user changes\ntype to make itself\nresistant to the\nlast attack it took.$"
-gUnknown_848570C:: @ 848570C
+gMoveDescription_Aeroblast:: @ 848570C
.string "A vortex of air is\nshot at the foe.\nIt has a high\ncritical-hit ratio.$"
-gUnknown_8485752:: @ 8485752
+gMoveDescription_CottonSpore:: @ 8485752
.string "Cotton-like spores\ncling to the foe,\nsharply reducing\nits SPEED stat.$"
-gUnknown_8485798:: @ 8485798
+gMoveDescription_Reversal:: @ 8485798
.string "An all-out attack\nthat becomes more\npowerful the less\nHP the user has.$"
-gUnknown_84857DF:: @ 84857DF
+gMoveDescription_Spite:: @ 84857DF
.string "A move that cuts\n2 to 5 PP from the\nmove last used by\nthe foe.$"
-gUnknown_848581E:: @ 848581E
+gMoveDescription_PowderSnow:: @ 848581E
.string "Blasts the foe with\na snowy gust.\nIt may cause\nfreezing.$"
-gUnknown_8485857:: @ 8485857
+gMoveDescription_Protect:: @ 8485857
.string "Enables the user to\nevade all attacks.\nIt may fail if used\nin succession.$"
-gUnknown_84858A1:: @ 84858A1
+gMoveDescription_MachPunch:: @ 84858A1
.string "A punch thrown at\nblinding speed.\nIt is certain to\nstrike first.$"
-gUnknown_84858E2:: @ 84858E2
+gMoveDescription_ScaryFace:: @ 84858E2
.string "Frightens the foe\nwith a scary face\nto sharply reduce\nits SPEED.$"
-gUnknown_8485923:: @ 8485923
+gMoveDescription_FaintAttack:: @ 8485923
.string "The user draws up\nclose to the foe\ndisarmingly, then\nhits without fail.$"
-gUnknown_848596B:: @ 848596B
+gMoveDescription_SweetKiss:: @ 848596B
.string "The user kisses\nthe foe with sweet\ncuteness that\ncauses confusion.$"
-gUnknown_84859AE:: @ 84859AE
+gMoveDescription_BellyDrum:: @ 84859AE
.string "The user maximizes\nits ATTACK stat at\nthe cost of half\nits full HP.$"
-gUnknown_84859F2:: @ 84859F2
+gMoveDescription_SludgeBomb:: @ 84859F2
.string "Filthy sludge is\nhurled at the foe.\nIt may poison the\ntarget.$"
-gUnknown_8485A30:: @ 8485A30
+gMoveDescription_MudSlap:: @ 8485A30
.string "Mud is hurled in\nthe foe's face to\ninflict damage and\nlower its accuracy.$"
-gUnknown_8485A7A:: @ 8485A7A
+gMoveDescription_Octazooka:: @ 8485A7A
.string "Ink is blasted in\nthe foe's face or\neyes to damage and\nlower accuracy.$"
-gUnknown_8485AC1:: @ 8485AC1
+gMoveDescription_Spikes:: @ 8485AC1
.string "A trap of spikes is\nlaid around the\nfoe's party to hurt\nfoes switching in.$"
-gUnknown_8485B0C:: @ 8485B0C
+gMoveDescription_ZapCannon:: @ 8485B0C
.string "An electric blast is\nfired like a cannon\nto inflict damage\nand paralyze.$"
-gUnknown_8485B55:: @ 8485B55
+gMoveDescription_Foresight:: @ 8485B55
.string "Completely negates\nthe foe's efforts to\nheighten its ability\nto evade.$"
-gUnknown_8485B9C:: @ 8485B9C
+gMoveDescription_DestinyBond:: @ 8485B9C
.string "If the user faints,\nthe foe delivering\nthe final hit also\nfaints.$"
-gUnknown_8485BDE:: @ 8485BDE
+gMoveDescription_PerishSong:: @ 8485BDE
.string "Any battler that\nhears this faints\nin three turns\nunless it switches.$"
-gUnknown_8485C24:: @ 8485C24
+gMoveDescription_IcyWind:: @ 8485C24
.string "A chilling wind is\nused to attack.\nIt also lowers the\nSPEED stat.$"
-gUnknown_8485C66:: @ 8485C66
+gMoveDescription_Detect:: @ 8485C66
.string "Enables the user to\nevade all attacks.\nIt may fail if used\nin succession.$"
-gUnknown_8485CB0:: @ 8485CB0
+gMoveDescription_BoneRush:: @ 8485CB0
.string "The user strikes\nthe foe with a bone\nin hand two to five\ntimes.$"
-gUnknown_8485CF0:: @ 8485CF0
+gMoveDescription_LockOn:: @ 8485CF0
.string "The user locks on\nto the foe, making\nthe next move sure\nto hit.$"
-gUnknown_8485D30:: @ 8485D30
+gMoveDescription_Outrage:: @ 8485D30
.string "The user thrashes\nabout for two to\nthree turns, then\nbecomes confused.$"
-gUnknown_8485D77:: @ 8485D77
+gMoveDescription_Sandstorm:: @ 8485D77
.string "A 5-turn sandstorm\nthat damages all\ntypes except ROCK,\nGROUND, and STEEL.$"
-gUnknown_8485DC1:: @ 8485DC1
+gMoveDescription_GigaDrain:: @ 8485DC1
.string "A harsh attack that\nabsorbs half the\ndamage it inflicted\nto restore HP.$"
-gUnknown_8485E09:: @ 8485E09
+gMoveDescription_Endure:: @ 8485E09
.string "The user endures\nany hit with 1 HP\nleft. It may fail if\nused in succession.$"
-gUnknown_8485E55:: @ 8485E55
+gMoveDescription_Charm:: @ 8485E55
.string "The foe is charmed\nby the user's cute\nappeals, sharply\ncutting its ATTACK.$"
-gUnknown_8485EA0:: @ 8485EA0
+gMoveDescription_Rollout:: @ 8485EA0
.string "A 5-turn rolling\nattack that becomes\nstronger each time\nit hits.$"
-gUnknown_8485EE1:: @ 8485EE1
+gMoveDescription_FalseSwipe:: @ 8485EE1
.string "A restrained attack\nthat always leaves\nthe foe with at\nleast 1 HP.$"
-gUnknown_8485F24:: @ 8485F24
+gMoveDescription_Swagger:: @ 8485F24
.string "A move that makes\nthe foe confused,\nbut also sharply\nraises its ATTACK.$"
-gUnknown_8485F6C:: @ 8485F6C
+gMoveDescription_MilkDrink:: @ 8485F6C
.string "Heals the user by\nup to half its full\nHP. It can be used\nto heal an ally.$"
-gUnknown_8485FB6:: @ 8485FB6
+gMoveDescription_Spark:: @ 8485FB6
.string "An electrically\ncharged tackle that\nmay also paralyze\nthe foe.$"
-gUnknown_8485FF5:: @ 8485FF5
+gMoveDescription_FuryCutter:: @ 8485FF5
.string "An attack that\ngrows stronger on\neach successive\nhit.$"
-gUnknown_848602B:: @ 848602B
+gMoveDescription_SteelWing:: @ 848602B
.string "The foe is hit with\nwings of steel.\nIt may also raise\nthe user's DEFENSE.$"
-gUnknown_8486075:: @ 8486075
+gMoveDescription_MeanLook:: @ 8486075
.string "The foe is fixed\nwith a mean look\nthat prevents it\nfrom escaping.$"
-gUnknown_84860B7:: @ 84860B7
+gMoveDescription_Attract:: @ 84860B7
.string "If it is the other\ngender, the foe is\nmade infatuated and\nunlikely to attack.$"
-gUnknown_8486105:: @ 8486105
+gMoveDescription_SleepTalk:: @ 8486105
.string "While asleep, the\nuser randomly uses\none of the moves it\nknows.$"
-gUnknown_8486145:: @ 8486145
+gMoveDescription_HealBell:: @ 8486145
.string "A soothing bell\nchimes to heal the\nstatus problems of\nall allies.$"
-gUnknown_8486187:: @ 8486187
+gMoveDescription_Return:: @ 8486187
.string "This attack move\ngrows more powerful\nthe more the user\nlikes its TRAINER.$"
-gUnknown_84861D1:: @ 84861D1
+gMoveDescription_Present:: @ 84861D1
.string "The foe is given a\nbooby-trapped gift.\nIt restores HP\nsometimes, however.$"
-gUnknown_848621B:: @ 848621B
+gMoveDescription_Frustration:: @ 848621B
.string "This attack move\ngrows more powerful\nthe less the user\nlikes its TRAINER.$"
-gUnknown_8486265:: @ 8486265
+gMoveDescription_Safeguard:: @ 8486265
.string "It protects the\nuser's party from\nall status problems\nfor five turns.$"
-gUnknown_84862AB:: @ 84862AB
+gMoveDescription_PainSplit:: @ 84862AB
.string "The user adds its\nHP to the foe's HP,\nthen equally shares\nthe total HP.$"
-gUnknown_84862F3:: @ 84862F3
+gMoveDescription_SacredFire:: @ 84862F3
.string "A mystical and\npowerful fire\nattack that may\ninflict a burn.$"
-gUnknown_8486330:: @ 8486330
+gMoveDescription_Magnitude:: @ 8486330
.string "A ground-shaking\nattack against all\nstanding POKéMON.\nIts power varies.$"
-gUnknown_8486378:: @ 8486378
+gMoveDescription_DynamicPunch:: @ 8486378
.string "The foe is punched\nwith the user's full\npower. It confuses\nthe foe if it hits.$"
-gUnknown_84863C7:: @ 84863C7
+gMoveDescription_Megahorn:: @ 84863C7
.string "A brutal ramming\nattack delivered\nwith a tough and\nimpressive horn.$"
-gUnknown_848640B:: @ 848640B
+gMoveDescription_DragonBreath:: @ 848640B
.string "The foe is hit with\nan incredible blast\nof breath that may\nalso paralyze.$"
-gUnknown_8486455:: @ 8486455
+gMoveDescription_BatonPass:: @ 8486455
.string "The user switches\nout, passing along\nany stat changes\nto the new battler.$"
-gUnknown_848649F:: @ 848649F
+gMoveDescription_Encore:: @ 848649F
.string "Makes the foe use\nthe move it last\nused repeatedly for\ntwo to six turns.$"
-gUnknown_84864E8:: @ 84864E8
+gMoveDescription_Pursuit:: @ 84864E8
.string "An attack move that\nworks especially\nwell on a foe that\nis switching out.$"
-gUnknown_8486532:: @ 8486532
+gMoveDescription_RapidSpin:: @ 8486532
.string "An attack that\nfrees the user from\nBIND, WRAP, LEECH\nSEED, and SPIKES.$"
-gUnknown_8486579:: @ 8486579
+gMoveDescription_SweetScent:: @ 8486579
.string "Allures the foe to\nreduce evasiveness.\nIt also attracts\nwild POKéMON.$"
-gUnknown_84865BF:: @ 84865BF
+gMoveDescription_IronTail:: @ 84865BF
.string "An attack with a\nsteel-hard tail.\nIt may lower the\nfoe's DEFENSE stat.$"
-gUnknown_8486606:: @ 8486606
+gMoveDescription_MetalClaw:: @ 8486606
.string "The foe is attacked\nwith steel claws.\nIt may also raise\nthe user's ATTACK.$"
-gUnknown_8486651:: @ 8486651
+gMoveDescription_VitalThrow:: @ 8486651
.string "Makes the user\nattack after the\nfoe. In return,\nit will not miss.$"
-gUnknown_8486693:: @ 8486693
+gMoveDescription_MorningSun:: @ 8486693
.string "Restores the user's\nHP. The amount of\nHP regained varies\nwith the weather.$"
-gUnknown_84866DE:: @ 84866DE
+gMoveDescription_Synthesis:: @ 84866DE
.string "Restores the user's\nHP. The amount of\nHP regained varies\nwith the weather.$"
-gUnknown_8486729:: @ 8486729
+gMoveDescription_Moonlight:: @ 8486729
.string "Restores the user's\nHP. The amount of\nHP regained varies\nwith the weather.$"
-gUnknown_8486774:: @ 8486774
+gMoveDescription_HiddenPower:: @ 8486774
.string "An attack that\nvaries in type and\nintensity depending\non the user.$"
-gUnknown_84867B7:: @ 84867B7
+gMoveDescription_CrossChop:: @ 84867B7
.string "The foe is hit with\ndouble chops.\nIt has a high\ncritical-hit ratio.$"
-gUnknown_84867FB:: @ 84867FB
+gMoveDescription_Twister:: @ 84867FB
.string "A vicious twister\nattacks the foe.\nIt may make the\nfoe flinch.$"
-gUnknown_848683A:: @ 848683A
+gMoveDescription_RainDance:: @ 848683A
.string "A heavy rain falls\nfor five turns,\npowering up WATER-\ntype moves.$"
-gUnknown_848687C:: @ 848687C
+gMoveDescription_SunnyDay:: @ 848687C
.string "The sun blazes for\nfive turns, powering\nup FIRE-type\nmoves.$"
-gUnknown_84868B8:: @ 84868B8
+gMoveDescription_Crunch:: @ 84868B8
.string "The foe is crunched\nwith sharp fangs.\nIt may lower the\nfoe's SP. DEF.$"
-gUnknown_84868FE:: @ 84868FE
+gMoveDescription_MirrorCoat:: @ 84868FE
.string "A retaliation move\nthat pays back the\nfoe's special attack\ndouble.$"
-gUnknown_8486941:: @ 8486941
+gMoveDescription_PsychUp:: @ 8486941
.string "The user hypnotizes\nitself into copying\nany stat change\nmade by the foe.$"
-gUnknown_848698A:: @ 848698A
+gMoveDescription_ExtremeSpeed:: @ 848698A
.string "A blindingly speedy\ncharge attack that\nalways goes before\nany other.$"
-gUnknown_84869CF:: @ 84869CF
+gMoveDescription_AncientPower:: @ 84869CF
.string "An ancient power is\nused to attack. It\nmay also raise all\nthe user's stats.$"
-gUnknown_8486A1B:: @ 8486A1B
+gMoveDescription_ShadowBall:: @ 8486A1B
.string "A shadowy blob is\nhurled at the foe.\nMay also lower the\nfoe's SP. DEF.$"
-gUnknown_8486A62:: @ 8486A62
+gMoveDescription_FutureSight:: @ 8486A62
.string "Two turns after\nthis move is used,\nthe foe is attacked\npsychically.$"
-gUnknown_8486AA6:: @ 8486AA6
+gMoveDescription_RockSmash:: @ 8486AA6
.string "An attack that may\nalso cut DEFENSE.\nIt can also smash\ncracked boulders.$"
-gUnknown_8486AEF:: @ 8486AEF
+gMoveDescription_Whirlpool:: @ 8486AEF
.string "The foe is trapped\nin a fast, vicious\nwhirlpool for two\nto five turns.$"
-gUnknown_8486B36:: @ 8486B36
+gMoveDescription_BeatUp:: @ 8486B36
.string "All party POKéMON\njoin in the attack.\nThe more allies,\nthe more damage.$"
-gUnknown_8486B7E:: @ 8486B7E
+gMoveDescription_FakeOut:: @ 8486B7E
.string "An attack that hits\nfirst and causes\nflinching. Usable\nonly on 1st turn.$"
-gUnknown_8486BC7:: @ 8486BC7
+gMoveDescription_Uproar:: @ 8486BC7
.string "The user attacks in\nan uproar that\nprevents sleep for\ntwo to five turns.$"
-gUnknown_8486C10:: @ 8486C10
+gMoveDescription_Stockpile:: @ 8486C10
.string "The user charges\nup power for use\nlater. It can be\nused three times.$"
-gUnknown_8486C55:: @ 8486C55
+gMoveDescription_SpitUp:: @ 8486C55
.string "The power built\nusing STOCKPILE is\nreleased at once\nfor attack.$"
-gUnknown_8486C95:: @ 8486C95
+gMoveDescription_Swallow:: @ 8486C95
.string "The energy it built\nusing STOCKPILE is\nabsorbed to restore\nHP.$"
-gUnknown_8486CD4:: @ 8486CD4
+gMoveDescription_HeatWave:: @ 8486CD4
.string "The user exhales a\nheated breath to\nattack. It may also\ninflict a burn.$"
-gUnknown_8486D1C:: @ 8486D1C
+gMoveDescription_Hail:: @ 8486D1C
.string "A hailstorm lasting\nfive turns damages\nall POKéMON except\nthe ICE-type.$"
-gUnknown_8486D64:: @ 8486D64
+gMoveDescription_Torment:: @ 8486D64
.string "It enrages the foe,\nmaking it incapable\nof using the same\nmove successively.$"
-gUnknown_8486DB1:: @ 8486DB1
+gMoveDescription_Flatter:: @ 8486DB1
.string "Flattery is used to\nconfuse the foe,\nbut its SP. ATK\nalso rises.$"
-gUnknown_8486DF2:: @ 8486DF2
+gMoveDescription_WillOWisp:: @ 8486DF2
.string "A sinister, bluish\nwhite flame is shot\nat the foe to\ninflict a burn.$"
-gUnknown_8486E37:: @ 8486E37
+gMoveDescription_Memento:: @ 8486E37
.string "The user faints,\nbut sharply lowers\nthe foe's ATTACK\nand SP. ATK.$"
-gUnknown_8486E79:: @ 8486E79
+gMoveDescription_Facade:: @ 8486E79
.string "An attack that is\nboosted if user is\nburned, poisoned,\nor paralyzed.$"
-gUnknown_8486EBE:: @ 8486EBE
+gMoveDescription_FocusPunch:: @ 8486EBE
.string "An attack that is\nexecuted last.\nThe user flinches\nif hit beforehand.$"
-gUnknown_8486F04:: @ 8486F04
+gMoveDescription_SmellingSalt:: @ 8486F04
.string "Doubly effective on\na paralyzed foe,\nbut it also cures\nthe foe's paralysis.$"
-gUnknown_8486F50:: @ 8486F50
+gMoveDescription_FollowMe:: @ 8486F50
.string "The user draws\nattention to itself,\nmaking foes attack\nonly the user.$"
-gUnknown_8486F96:: @ 8486F96
+gMoveDescription_NaturePower:: @ 8486F96
.string "An attack that\nchanges type\ndepending on the\nuser's location.$"
-gUnknown_8486FD4:: @ 8486FD4
+gMoveDescription_Charge:: @ 8486FD4
.string "The user charges\npower to boost the\nELECTRIC move it\nuses next.$"
-gUnknown_8487014:: @ 8487014
+gMoveDescription_Taunt:: @ 8487014
.string "The foe is taunted\ninto a rage that\nallows it to use\nonly attack moves.$"
-gUnknown_848705C:: @ 848705C
+gMoveDescription_HelpingHand:: @ 848705C
.string "A move that boosts\nthe power of the\nally's attack in a\nbattle.$"
-gUnknown_848709B:: @ 848709B
+gMoveDescription_Trick:: @ 848709B
.string "A move that tricks\nthe foe into\ntrading held items\nwith the user.$"
-gUnknown_84870DD:: @ 84870DD
+gMoveDescription_RolePlay:: @ 84870DD
.string "The user mimics the\nfoe completely and\ncopies the foe's\nability.$"
-gUnknown_848711E:: @ 848711E
+gMoveDescription_Wish:: @ 848711E
.string "A self-healing move\nthat restores half\nthe full HP on the\nnext turn.$"
-gUnknown_8487163:: @ 8487163
+gMoveDescription_Assist:: @ 8487163
.string "The user randomly\npicks and uses a\nmove of an allied\nPOKéMON.$"
-gUnknown_84871A1:: @ 84871A1
+gMoveDescription_Ingrain:: @ 84871A1
.string "The user lays roots\nthat restore HP on\nevery turn.\nIt can't switch out.$"
-gUnknown_84871E9:: @ 84871E9
+gMoveDescription_Superpower:: @ 84871E9
.string "A powerful attack,\nbut it also lowers\nthe user's ATTACK\nand DEFENSE stats.$"
-gUnknown_8487234:: @ 8487234
+gMoveDescription_MagicCoat:: @ 8487234
.string "Reflects back the\nfoe's LEECH SEED\nand any status-\ndamaging move.$"
-gUnknown_8487276:: @ 8487276
+gMoveDescription_Recycle:: @ 8487276
.string "A move that\nrecycles a used\nitem for use once\nmore.$"
-gUnknown_84872AA:: @ 84872AA
+gMoveDescription_Revenge:: @ 84872AA
.string "An attack move that\ngains in intensity if\nthe target has hurt\nthe user.$"
-gUnknown_84872F2:: @ 84872F2
+gMoveDescription_BrickBreak:: @ 84872F2
.string "An attack that also\nbreaks any barrier\nlike LIGHT SCREEN\nand REFLECT.$"
-gUnknown_8487338:: @ 8487338
+gMoveDescription_Yawn:: @ 8487338
.string "A huge yawn lulls\nthe foe into falling\nasleep on the next\nturn.$"
-gUnknown_8487378:: @ 8487378
+gMoveDescription_KnockOff:: @ 8487378
.string "Knocks down the\nfoe's held item to\nprevent its use\nduring the battle.$"
-gUnknown_84873BE:: @ 84873BE
+gMoveDescription_Endeavor:: @ 84873BE
.string "Gains power the\nfewer HP the user\nhas compared with\nthe foe.$"
-gUnknown_84873FB:: @ 84873FB
+gMoveDescription_Eruption:: @ 84873FB
.string "The higher the\nuser's HP, the more\npowerful this\nattack becomes.$"
-gUnknown_848743C:: @ 848743C
+gMoveDescription_SkillSwap:: @ 848743C
.string "The user employs\nits psychic power\nto swap abilities\nwith the foe.$"
-gUnknown_848747F:: @ 848747F
+gMoveDescription_Imprison:: @ 848747F
.string "Prevents foes from\nusing any move\nthat is also known\nby the user.$"
-gUnknown_84874C1:: @ 84874C1
+gMoveDescription_Refresh:: @ 84874C1
.string "A self-healing move\nthat cures the user\nof a poisoning,\nburn, or paralysis.$"
-gUnknown_848750D:: @ 848750D
+gMoveDescription_Grudge:: @ 848750D
.string "If the user faints,\nthis move deletes\nthe PP of the move\nthat finished it.$"
-gUnknown_8487558:: @ 8487558
+gMoveDescription_Snatch:: @ 8487558
.string "Steals the effects\nof the foe's\nhealing or status-\nchanging move.$"
-gUnknown_848759A:: @ 848759A
+gMoveDescription_SecretPower:: @ 848759A
.string "An attack that may\nhave an additional\neffect that varies\nwith the terrain.$"
-gUnknown_84875E5:: @ 84875E5
+gMoveDescription_Dive:: @ 84875E5
.string "The user dives\nunderwater on the\nfirst turn and\nstrikes next turn.$"
-gUnknown_8487628:: @ 8487628
+gMoveDescription_ArmThrust:: @ 8487628
.string "A quick flurry of\nstraight-arm\npunches that hit\ntwo to five times.$"
-gUnknown_848766B:: @ 848766B
+gMoveDescription_Camouflage:: @ 848766B
.string "Alters the user's\ntype depending on\nthe location's\nterrain.$"
-gUnknown_84876A7:: @ 84876A7
+gMoveDescription_TailGlow:: @ 84876A7
.string "The user flashes a\nlight that sharply\nraises its SP. ATK\nstat.$"
-gUnknown_84876E6:: @ 84876E6
+gMoveDescription_LusterPurge:: @ 84876E6
.string "A burst of light\ninjures the foe. It\nmay also lower the\nfoe's SP. DEF.$"
-gUnknown_848772D:: @ 848772D
+gMoveDescription_MistBall:: @ 848772D
.string "A flurry of down\nhits the foe. It\nmay also lower the\nfoe's SP. ATK.$"
-gUnknown_8487771:: @ 8487771
+gMoveDescription_FeatherDance:: @ 8487771
.string "The foe is covered\nwith a mass of down\nthat sharply cuts\nthe ATTACK stat.$"
-gUnknown_84877BB:: @ 84877BB
+gMoveDescription_TeeterDance:: @ 84877BB
.string "A wobbly dance\nthat confuses all\nthe POKéMON in\nbattle.$"
-gUnknown_84877F3:: @ 84877F3
+gMoveDescription_BlazeKick:: @ 84877F3
.string "A fiery kick with a\nhigh critical-hit\nratio. It may also\nburn the foe.$"
-gUnknown_848783A:: @ 848783A
+gMoveDescription_MudSport:: @ 848783A
.string "Weakens ELECTRIC-\ntype attacks while\nthe user is in the\nbattle.$"
-gUnknown_848787A:: @ 848787A
+gMoveDescription_IceBall:: @ 848787A
.string "A 5-turn rolling\nattack that becomes\nstronger each time\nit rolls.$"
-gUnknown_84878BC:: @ 84878BC
+gMoveDescription_NeedleArm:: @ 84878BC
.string "An attack using\nthorny arms.\nIt may make the\nfoe flinch.$"
-gUnknown_84878F5:: @ 84878F5
+gMoveDescription_SlackOff:: @ 84878F5
.string "The user slacks off\nand restores its HP\nby half its full\nHP.$"
-gUnknown_8487932:: @ 8487932
+gMoveDescription_HyperVoice:: @ 8487932
.string "The user lets loose\na horribly loud\nshout with the\npower to damage.$"
-gUnknown_8487976:: @ 8487976
+gMoveDescription_PoisonFang:: @ 8487976
.string "The foe is bitten\nwith toxic fangs.\nIt may also badly\npoison the foe.$"
-gUnknown_84879BC:: @ 84879BC
+gMoveDescription_CrushClaw:: @ 84879BC
.string "The foe is attacked\nwith sharp claws.\nIt may also lower\nthe foe's DEFENSE.$"
-gUnknown_8487A07:: @ 8487A07
+gMoveDescription_BlastBurn:: @ 8487A07
.string "The foe is hit with\na huge explosion.\nThe user can't move\non the next turn.$"
-gUnknown_8487A53:: @ 8487A53
+gMoveDescription_HydroCannon:: @ 8487A53
.string "The foe is hit with\na watery cannon.\nThe user can't move\non the next turn.$"
-gUnknown_8487A9E:: @ 8487A9E
+gMoveDescription_MeteorMash:: @ 8487A9E
.string "The foe is hit with\na hard, fast punch.\nIt may also raise\nthe user's ATTACK.$"
-gUnknown_8487AEB:: @ 8487AEB
+gMoveDescription_Astonish:: @ 8487AEB
.string "An attack using a\nstartling shout.\nIt also may make\nthe foe flinch.$"
-gUnknown_8487B2F:: @ 8487B2F
+gMoveDescription_WeatherBall:: @ 8487B2F
.string "An attack that\nvaries in power and\ntype depending on\nthe weather.$"
-gUnknown_8487B71:: @ 8487B71
+gMoveDescription_Aromatherapy:: @ 8487B71
.string "A soothing scent is\nreleased to heal\nall status problems\nin the user's party.$"
-gUnknown_8487BBF:: @ 8487BBF
+gMoveDescription_FakeTears:: @ 8487BBF
.string "The user feigns\ncrying to sharply\nlower the foe's\nSP. DEF stat.$"
-gUnknown_8487BFF:: @ 8487BFF
+gMoveDescription_AirCutter:: @ 8487BFF
.string "The foe is hit with\nrazor-like wind.\nIt has a high\ncritical-hit ratio.$"
-gUnknown_8487C46:: @ 8487C46
+gMoveDescription_Overheat:: @ 8487C46
.string "An intense attack\nthat also sharply\nreduces the user's\nSP. ATK stat.$"
-gUnknown_8487C8B:: @ 8487C8B
+gMoveDescription_OdorSleuth:: @ 8487C8B
.string "Completely negates\nthe foe's efforts to\nheighten its ability\nto evade.$"
-gUnknown_8487CD2:: @ 8487CD2
+gMoveDescription_RockTomb:: @ 8487CD2
.string "Boulders are hurled\nat the foe. It also\nlowers the foe's\nSPEED if it hits.$"
-gUnknown_8487D1D:: @ 8487D1D
+gMoveDescription_SilverWind:: @ 8487D1D
.string "The foe is attacked\nwith a silver dust.\nIt may raise all\nthe user's stats.$"
-gUnknown_8487D68:: @ 8487D68
+gMoveDescription_MetalSound:: @ 8487D68
.string "A horrible metallic\nscreech is used to\nsharply lower the\nfoe's SP. DEF.$"
-gUnknown_8487DB0:: @ 8487DB0
+gMoveDescription_GrassWhistle:: @ 8487DB0
.string "A pleasant melody\nis played to lull\nthe foe into a deep\nsleep.$"
-gUnknown_8487DEF:: @ 8487DEF
+gMoveDescription_Tickle:: @ 8487DEF
.string "The foe is made to\nlaugh, reducing its\nATTACK and DEFENSE\nstats.$"
-gUnknown_8487E30:: @ 8487E30
+gMoveDescription_CosmicPower:: @ 8487E30
.string "The user absorbs a\nmystic power to\nraise its DEFENSE\nand SP. DEF.$"
-gUnknown_8487E72:: @ 8487E72
+gMoveDescription_WaterSpout:: @ 8487E72
.string "The higher the\nuser's HP, the more\npowerful this\nattack becomes.$"
-gUnknown_8487EB3:: @ 8487EB3
+gMoveDescription_SignalBeam:: @ 8487EB3
.string "The foe is hit with\na flashing beam\nthat may also\ncause confusion.$"
-gUnknown_8487EF6:: @ 8487EF6
+gMoveDescription_ShadowPunch:: @ 8487EF6
.string "The user throws a\npunch from the\nshadows. It cannot\nbe evaded.$"
-gUnknown_8487F35:: @ 8487F35
+gMoveDescription_Extrasensory:: @ 8487F35
.string "The user attacks\nwith an odd power\nthat may make the\nfoe flinch.$"
-gUnknown_8487F76:: @ 8487F76
+gMoveDescription_SkyUppercut:: @ 8487F76
.string "The user attacks\nwith an uppercut\nthrown skywards\nwith force.$"
-gUnknown_8487FB4:: @ 8487FB4
+gMoveDescription_SandTomb:: @ 8487FB4
.string "The foe is trapped\ninside a painful\nsandstorm for two\nto five turns.$"
-gUnknown_8487FF9:: @ 8487FF9
+gMoveDescription_SheerCold:: @ 8487FF9
.string "The foe is attacked\nwith ultimate cold\nthat causes fainting\nif it hits.$"
-gUnknown_8488041:: @ 8488041
+gMoveDescription_MuddyWater:: @ 8488041
.string "The user attacks\nwith muddy water.\nIt may also lower\nthe foe's accuracy.$"
-gUnknown_848808A:: @ 848808A
+gMoveDescription_BulletSeed:: @ 848808A
.string "The user shoots\nseeds at the foe.\nTwo to five seeds\nare shot at once.$"
-gUnknown_84880D0:: @ 84880D0
+gMoveDescription_AerialAce:: @ 84880D0
.string "An extremely fast\nattack against one\ntarget. It can't be\nevaded.$"
-gUnknown_8488111:: @ 8488111
+gMoveDescription_IcicleSpear:: @ 8488111
.string "Sharp icicles are\nfired at the foe.\nIt strikes two to\nfive times.$"
-gUnknown_8488153:: @ 8488153
+gMoveDescription_IronDefense:: @ 8488153
.string "The user hardens\nits body's surface\nto sharply raise its\nDEFENSE stat.$"
-gUnknown_848819A:: @ 848819A
+gMoveDescription_Block:: @ 848819A
.string "The user blocks the\nfoe's way with arms\nspread wide to\nprevent escape.$"
-gUnknown_84881E1:: @ 84881E1
+gMoveDescription_Howl:: @ 84881E1
.string "The user howls to\nraise its spirit and\nboost its ATTACK\nstat.$"
-gUnknown_848821F:: @ 848821F
+gMoveDescription_DragonClaw:: @ 848821F
.string "Sharp, huge claws\nhook and slash the\nfoe quickly and\nwith great power.$"
-gUnknown_8488266:: @ 8488266
+gMoveDescription_FrenzyPlant:: @ 8488266
.string "The foe is hit with\nan enormous branch.\nThe user can't move\non the next turn.$"
-gUnknown_84882B4:: @ 84882B4
+gMoveDescription_BulkUp:: @ 84882B4
.string "The user bulks up\nits body to boost\nboth its ATTACK and\nDEFENSE stats.$"
-gUnknown_84882FB:: @ 84882FB
+gMoveDescription_Bounce:: @ 84882FB
.string "The user bounces\non the foe on the\n2nd turn. It may\nparalyze the foe.$"
-gUnknown_8488341:: @ 8488341
+gMoveDescription_MudShot:: @ 8488341
.string "The user attacks by\nhurling mud.\nIt also reduces the\nfoe's SPEED.$"
-gUnknown_8488383:: @ 8488383
+gMoveDescription_PoisonTail:: @ 8488383
.string "An attack with a\nhigh critical-hit\nratio. It may also\npoison the foe.$"
-gUnknown_84883C9:: @ 84883C9
+gMoveDescription_Covet:: @ 84883C9
.string "A cutely executed\nattack that also\nsteals the foe's\nhold item.$"
-gUnknown_8488408:: @ 8488408
+gMoveDescription_VoltTackle:: @ 8488408
.string "The user throws an\nelectrified tackle.\nIt hurts the user\na little.$"
-gUnknown_848844B:: @ 848844B
+gMoveDescription_MagicalLeaf:: @ 848844B
.string "The foe is attacked\nwith a strange leaf\nthat cannot be\nevaded.$"
-gUnknown_848848A:: @ 848848A
+gMoveDescription_WaterSport:: @ 848848A
.string "Weakens FIRE-type\nattacks while the\nuser is in the\nbattle.$"
-gUnknown_84884C5:: @ 84884C5
+gMoveDescription_CalmMind:: @ 84884C5
.string "The user focuses\nits mind to raise\nthe SP. ATK and\nSP. DEF stats.$"
-gUnknown_8488507:: @ 8488507
+gMoveDescription_LeafBlade:: @ 8488507
.string "The foe is slashed\nwith a sharp leaf.\nIt has a high\ncritical-hit ratio.$"
-gUnknown_848854F:: @ 848854F
+gMoveDescription_DragonDance:: @ 848854F
.string "A mystic, powerful\ndance that boosts\nthe user's ATTACK\nand SPEED stats.$"
-gUnknown_8488597:: @ 8488597
+gMoveDescription_RockBlast:: @ 8488597
.string "The user hurls two\nto five hard rocks\nat the foe to\nattack.$"
-gUnknown_84885D3:: @ 84885D3
+gMoveDescription_ShockWave:: @ 84885D3
.string "A rapid jolt of\nelectricity strikes\nthe foe. It can't\nbe evaded.$"
-gUnknown_8488614:: @ 8488614
+gMoveDescription_WaterPulse:: @ 8488614
.string "An attack with a\npulsing blast of\nwater. It may also\nconfuse the foe.$"
-gUnknown_848865A:: @ 848865A
+gMoveDescription_DoomDesire:: @ 848865A
.string "A move that attacks\nthe foe with a\nblast of light two\nturns after use.$"
-gUnknown_84886A1:: @ 84886A1
+gMoveDescription_PsychoBoost:: @ 84886A1
.string "An intense attack\nthat also sharply\nreduces the user's\nSP. ATK stat.$"
-gUnknown_84886E6:: @ 84886E6
- .string " "
-
diff --git a/data/text/teachy_tv.inc b/data/text/teachy_tv.inc
new file mode 100644
index 000000000..3989aa5d1
--- /dev/null
+++ b/data/text/teachy_tv.inc
@@ -0,0 +1,227 @@
+gTeachyTvString_TeachBattle:: @ 841B7A4
+ .string "Teach me how to battle.$"
+
+gTeachyTvString_StatusProblems:: @ 841B7BC
+ .string "What are status problems?$"
+
+gTeachyTvString_TypeMatchups:: @ 841B7D6
+ .string "What are type matchups?$"
+
+gTeachyTvString_CatchPkmn:: @ 841B7EE
+ .string "I want to catch POKéMON.$"
+
+gTeachyTvString_AboutTMs:: @ 841B807
+ .string "Teach me about TMs.$"
+
+gTeachyTvString_RegisterItem:: @ 841B81B
+ .string "How do I register an item?$"
+
+gTeachyTvString_Cancel:: @ 841B836
+ .string "CANCEL$"
+
+gTeachyTvText_PokeDudeSaysHello:: @ 841B83D
+ .string "Hey, all you TRAINERS out there!\n"
+ .string "HELLO, TRAINERS!\p"
+ .string "……… ……… ………\p"
+ .string "Come on, let me hear you!\n"
+ .string "HELLO, TRAINERS!\l"
+ .string "It's me, the POKé DUDE!\p"
+ .string "$"
+
+gTeachyTvText_BattleScript1:: @ 841B8BF
+ .string "Today, the POKé DUDE's here to\n"
+ .string "tell you about how you can battle\l"
+ .string "POKéMON!\p"
+ .string "Say you're out for a stroll when,\n"
+ .string "suddenly, a wild POKéMON appears!\p"
+ .string "It's up to you to smartly use your\n"
+ .string "POKéMON and their moves to reduce\l"
+ .string "the opponent's HP to nothing, and\l"
+ .string "claim victory!\p"
+ .string "I'll show you how to do that in\n"
+ .string "person and for sure!\p"
+ .string "All righty, here goes!\p"
+ .string "Keep your eyes glued to the super\n"
+ .string "POKé DUDE SHOW!$"
+
+gTeachyTvText_BattleScript2:: @ 841BA41
+ .string "Well, did you get that?\p"
+ .string "Even if your own POKéMON's HP\n"
+ .string "falls to zero, and it becomes\l"
+ .string "unable to battle, not to worry!\p"
+ .string "Just take it to any POKéMON\n"
+ .string "CENTER and heal it!\p"
+ .string "All righty, be seeing you!\p"
+ .string "Remember, TRAINERS, a good deed\n"
+ .string "a day brings happiness to stay!$"
+
+gTeachyTvText_StatusScript1:: @ 841BB40
+ .string "Today, the POKé DUDE's here to\n"
+ .string "tell you about status problems!\p"
+ .string "Status problems include poisoning,\n"
+ .string "paralysis, sleep, burn…\p"
+ .string "There are a couple others, but\n"
+ .string "they really are trouble.\p"
+ .string "Get any one, and your POKéMON\n"
+ .string "may become useless in battle.\p"
+ .string "You know, it hurts the POKé DUDE\n"
+ .string "to see a POKéMON suffer…\p"
+ .string "So, what should you do if your\n"
+ .string "POKéMON gets a status problem?\p"
+ .string "Well, you've got me to show you!\p"
+ .string "All righty, here goes!\p"
+ .string "Keep your eyes glued to the super\n"
+ .string "POKé DUDE SHOW!$"
+
+gTeachyTvText_StatusScript2:: @ 841BD10
+ .string "Poisoning or paralysis don't go\n"
+ .string "away after a battle.\p"
+ .string "If a POKéMON is poisoned, it loses\n"
+ .string "HP even while you're walking.\p"
+ .string "You should heal POKéMON of these\n"
+ .string "kinds of problems right away.\p"
+ .string "Use an item, or try to get to a\n"
+ .string "POKéMON CENTER for healing.\p"
+ .string "That wasn't hard, was it?\n"
+ .string "All righty, be seeing you!\p"
+ .string "Remember, TRAINERS, a good deed\n"
+ .string "a day brings happiness to stay!$"
+
+gTeachyTvText_MatchupsScript1:: @ 841BE76
+ .string "Does everyone know about type\n"
+ .string "matchups?\p"
+ .string "POKéMON and their moves all\n"
+ .string "belong to certain types.\p"
+ .string "For example, there are such types\n"
+ .string "as GRASS and WATER.\p"
+ .string "You need to consider the type of\n"
+ .string "the move used to attack…\p"
+ .string "And, the type of the POKéMON that\n"
+ .string "is hit by that attack.\p"
+ .string "Depending on how those two types\n"
+ .string "match up, the damage can change.\p"
+ .string "You see, it depends on whether\n"
+ .string "the type matchup is good or bad.\p"
+ .string "If you don't know how matchups\n"
+ .string "work, battles will be tough.\p"
+ .string "So, let me demonstrate exactly\n"
+ .string "what I mean.\p"
+ .string "All righty, here goes!\p"
+ .string "Keep your eyes glued to the super\n"
+ .string "POKé DUDE SHOW!$"
+
+gTeachyTvText_MatchupsScript2:: @ 841C0AF
+ .string "Is it possible to launch an attack\n"
+ .string "that will inflict heavy damage?\p"
+ .string "Does the opposing POKéMON pose\n"
+ .string "a threat to your POKéMON?\p"
+ .string "Is there any chance that it may\n"
+ .string "have disastrously tough moves?\p"
+ .string "Watch the type matchups to gain\n"
+ .string "the upper hand!\p"
+ .string "All righty, be seeing you!\p"
+ .string "Oh, for the COOL-type POKé DUDE,\n"
+ .string "AWESOME-type kids like you match\l"
+ .string "up perfectly!\p"
+ .string "Remember, a good deed a day\n"
+ .string "brings happiness to stay!$"
+
+gTeachyTvText_CatchingScript1:: @ 841C23B
+ .string "Today, the POKé DUDE's going to\n"
+ .string "show you how to catch POKéMON!\p"
+ .string "Just imagine… A groovy POKéMON\n"
+ .string "suddenly appearing in the wild!\p"
+ .string "Oh, you want it!\n"
+ .string "You just can't help it!\p"
+ .string "Oh, you have to catch it!\n"
+ .string "You gotta have it!\p"
+ .string "Let me show you how you can make\n"
+ .string "it happen!\p"
+ .string "All righty, here goes!\p"
+ .string "Keep your eyes glued to the super\n"
+ .string "POKé DUDE SHOW!$"
+
+gTeachyTvText_CatchingScript2:: @ 841C384
+ .string "If your first POKé BALL fails to\n"
+ .string "catch the POKéMON, don't give up!\p"
+ .string "Keep throwing POKé BALLS…\n"
+ .string "It's bound to work sometime!\p"
+ .string "All righty, be seeing you!\p"
+ .string "Remember, TRAINERS, a good deed\n"
+ .string "a day brings happiness to stay!$"
+
+gTeachyTvText_TMsScript1:: @ 841C459
+ .string "Hey, everyone!\n"
+ .string "Do you all have TMs?\p"
+ .string "A TM, Technical Machine, is an\n"
+ .string "amazingly great item!\p"
+ .string "It teaches POKéMON a move that\n"
+ .string "it may not learn when leveling up!\p"
+ .string "Isn't that just great? What a\n"
+ .string "convenient world we live in!\p"
+ .string "Open the TM CASE and check out\n"
+ .string "the TMs you have.\p"
+ .string "You can check them out in detail,\n"
+ .string "too.$"
+
+gPokeDudeText_TMTypes:: @ 841C587
+ .string "POKé DUDE: NORMAL, WATER, GRASS…\n"
+ .string "TMs also come in types.\p"
+ .string "Check the type and teach it to\n"
+ .string "a POKéMON that matches up well.\p"
+ .string "For example, WATER PULSE is\n"
+ .string "suitable for WATER-type POKéMON.\p"
+ .string "BULLET SEED is a move that most\n"
+ .string "GRASS-type POKéMON can learn.\p"
+ .string "There's one other thing!$"
+
+gPokeDudeText_ReadTMDescription:: @ 841C693
+ .string "Don't just look at the type, read\n"
+ .string "the description, too.\p"
+ .string "It will contain hints about what\n"
+ .string "POKéMON might learn the move.\p"
+ .string "For example, take a move like\n"
+ .string "FOCUS PUNCH.\p"
+ .string "It doesn't sound like anything a\n"
+ .string "bird or fish POKéMON can learn.\p"
+ .string "So, try using it on POKéMON with\n"
+ .string "arms that can throw punches!$"
+
+gTeachyTvText_TMsScript2:: @ 841C7B4
+ .string "Wow, I talked a lot today!\n"
+ .string "All righty, be seeing you!\p"
+ .string "Remember, TRAINERS, a good deed\n"
+ .string "a day brings happiness to stay!$"
+
+gTeachyTvText_RegisterScript1:: @ 841C82A
+ .string "A TRAINER's BAG has a bunch of\n"
+ .string "nifty, convenient features!\p"
+ .string "Take stuff in the KEY ITEMS\n"
+ .string "POCKET, for instance.\p"
+ .string "You can use a key item without\n"
+ .string "opening the BAG every time.\p"
+ .string "For example, let's pretend I have\n"
+ .string "a TEACHY TV in my BAG.\p"
+ .string "I can register it for instant use,\n"
+ .string "and I'll show you how!\p"
+ .string "All righty, here goes!\p"
+ .string "Keep your eyes glued to the sorta\n"
+ .string "super POKé DUDE SHOW!$"
+
+gTeachyTvText_RegisterScript2:: @ 841C994
+ .string "And now, your TEACHY TV is\n"
+ .string "registered.\p"
+ .string "How do you use it?\n"
+ .string "Well, here's how it works.\p"
+ .string "Once an item in the KEY ITEMS\n"
+ .string "POKCET is registered, you can use\l"
+ .string "it by pressing SELECT.\p"
+ .string "So, you've given yourself\n"
+ .string "one-touch access to TEACHY TV.\p"
+ .string "All it takes for you to see me is\n"
+ .string "pressing one button!\p"
+ .string "That kind of attention is a little\n"
+ .string "embarrassing!\p"
+ .string "All righty, be seeing you!\p"
+ .string "Remember, TRAINERS, a good deed\n"
+ .string "a day brings happiness to stay!$"
diff --git a/data/unk_text_util.s b/data/unk_text_util.s
deleted file mode 100644
index 5e5ce1a5d..000000000
--- a/data/unk_text_util.s
+++ /dev/null
@@ -1,5 +0,0 @@
- .section .rodata
- .align 2
-
-gUnknown_8464300:: @ 8464300
- .incbin "baserom.gba", 0x464300, 0x4C
diff --git a/graphics/battle_records/bg_tiles.png b/graphics/battle_records/bg_tiles.png
new file mode 100644
index 000000000..bbe9de321
--- /dev/null
+++ b/graphics/battle_records/bg_tiles.png
Binary files differ
diff --git a/graphics/battle_records/palette.pal b/graphics/battle_records/palette.pal
new file mode 100644
index 000000000..d6994a324
--- /dev/null
+++ b/graphics/battle_records/palette.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 197 164
+74 74 74
+189 131 156
+230 156 213
+222 238 255
+230 246 255
+148 115 139
+197 213 222
+172 164 189
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/battle_records/tilemap.bin b/graphics/battle_records/tilemap.bin
new file mode 100644
index 000000000..a3691cfd7
--- /dev/null
+++ b/graphics/battle_records/tilemap.bin
Binary files differ
diff --git a/graphics/diploma/unk_84147C0.png b/graphics/diploma/unk_84147C0.png
new file mode 100644
index 000000000..ac6e113f8
--- /dev/null
+++ b/graphics/diploma/unk_84147C0.png
Binary files differ
diff --git a/graphics/diploma/unk_84154E8.bin b/graphics/diploma/unk_84154E8.bin
new file mode 100644
index 000000000..38c32e5b2
--- /dev/null
+++ b/graphics/diploma/unk_84154E8.bin
Binary files differ
diff --git a/graphics/diploma/unk_8415954.pal b/graphics/diploma/unk_8415954.pal
new file mode 100644
index 000000000..3ba0bc65d
--- /dev/null
+++ b/graphics/diploma/unk_8415954.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+123 205 172
+255 0 255
+222 230 139
+205 246 156
+230 222 164
+197 238 172
+205 230 213
+213 246 172
+205 230 164
+238 255 156
+197 238 172
+222 230 238
+222 238 238
+213 246 172
+246 238 172
+238 238 139
+123 205 172
+255 0 255
+255 0 255
+246 246 205
+230 230 148
+230 230 148
+230 230 148
+238 238 164
+222 222 148
+255 238 180
+238 230 164
+238 222 180
+246 246 164
+246 230 131
+246 230 172
+222 238 222
diff --git a/graphics/help_system/unk_845BCB0.bin b/graphics/help_system/unk_845BCB0.bin
new file mode 100644
index 000000000..b7ceb5080
--- /dev/null
+++ b/graphics/help_system/unk_845BCB0.bin
Binary files differ
diff --git a/graphics/help_system/unk_8464008.png b/graphics/help_system/unk_8464008.png
new file mode 100644
index 000000000..339a685d5
--- /dev/null
+++ b/graphics/help_system/unk_8464008.png
Binary files differ
diff --git a/graphics/interface/dex_caught_pokeball.pal b/graphics/interface/dex_caught_pokeball.pal
new file mode 100644
index 000000000..ab57da621
--- /dev/null
+++ b/graphics/interface/dex_caught_pokeball.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+123 156 131
+238 238 238
+0 0 0
+213 213 189
+172 164 123
+255 131 123
+238 49 0
+222 49 16
+197 49 41
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/interface/dex_caught_pokeball_and_pokemon_types.png b/graphics/interface/dex_caught_pokeball_and_pokemon_types.png
new file mode 100644
index 000000000..4a9e67954
--- /dev/null
+++ b/graphics/interface/dex_caught_pokeball_and_pokemon_types.png
Binary files differ
diff --git a/graphics/interface/pokemon_types.pal b/graphics/interface/pokemon_types.pal
new file mode 100644
index 000000000..16a03be2c
--- /dev/null
+++ b/graphics/interface/pokemon_types.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+123 156 131
+238 49 0
+246 131 49
+255 180 16
+222 230 49
+123 205 82
+156 222 222
+106 148 246
+164 65 164
+172 172 123
+222 222 197
+189 164 57
+255 90 139
+82 123 139
+65 65 65
+255 255 255
diff --git a/graphics/interface/red_arrow.pal b/graphics/interface/red_arrow.pal
new file mode 100644
index 000000000..f820b52bb
--- /dev/null
+++ b/graphics/interface/red_arrow.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 164 197
+255 82 0
+131 32 0
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/graphics/interface/red_arrow.png b/graphics/interface/red_arrow.png
new file mode 100644
index 000000000..91c8268b7
--- /dev/null
+++ b/graphics/interface/red_arrow.png
Binary files differ
diff --git a/graphics/interface/red_arrow_other.png b/graphics/interface/red_arrow_other.png
new file mode 100644
index 000000000..33fcf44b9
--- /dev/null
+++ b/graphics/interface/red_arrow_other.png
Binary files differ
diff --git a/graphics/interface/selector_outline.png b/graphics/interface/selector_outline.png
new file mode 100644
index 000000000..d9f3e1b8d
--- /dev/null
+++ b/graphics/interface/selector_outline.png
Binary files differ
diff --git a/graphics/intro/unk_8402260.pal b/graphics/intro/unk_8402260.pal
new file mode 100644
index 000000000..4219d4394
--- /dev/null
+++ b/graphics/intro/unk_8402260.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 32 32
+24 57 57
+49 82 82
+82 106 106
+106 131 131
+139 156 156
+164 180 180
+197 205 205
+222 230 230
+255 255 255
diff --git a/graphics/intro/unk_8402280.png b/graphics/intro/unk_8402280.png
new file mode 100644
index 000000000..dccf33afa
--- /dev/null
+++ b/graphics/intro/unk_8402280.png
Binary files differ
diff --git a/graphics/intro/unk_84024E4.bin b/graphics/intro/unk_84024E4.bin
new file mode 100644
index 000000000..2e48c59b4
--- /dev/null
+++ b/graphics/intro/unk_84024E4.bin
Binary files differ
diff --git a/graphics/intro/unk_8402630.pal b/graphics/intro/unk_8402630.pal
new file mode 100644
index 000000000..6ca1f007c
--- /dev/null
+++ b/graphics/intro/unk_8402630.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+24 41 74
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+82 82 82
+180 180 180
+255 255 255
diff --git a/graphics/intro/unk_8402650.png b/graphics/intro/unk_8402650.png
new file mode 100644
index 000000000..1ed1b6dc5
--- /dev/null
+++ b/graphics/intro/unk_8402650.png
Binary files differ
diff --git a/graphics/intro/unk_8402668.bin b/graphics/intro/unk_8402668.bin
new file mode 100644
index 000000000..2fbac69de
--- /dev/null
+++ b/graphics/intro/unk_8402668.bin
Binary files differ
diff --git a/graphics/intro/unk_840270C.pal b/graphics/intro/unk_840270C.pal
new file mode 100644
index 000000000..619aee6a0
--- /dev/null
+++ b/graphics/intro/unk_840270C.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+24 41 74
+0 0 0
+139 123 16
+189 172 16
+131 164 65
+148 230 49
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+222 222 222
+24 41 74
+82 82 82
+180 180 180
+255 255 255
diff --git a/graphics/intro/unk_840272C.png b/graphics/intro/unk_840272C.png
new file mode 100644
index 000000000..d84885c6a
--- /dev/null
+++ b/graphics/intro/unk_840272C.png
Binary files differ
diff --git a/graphics/intro/unk_84028F8.bin b/graphics/intro/unk_84028F8.bin
new file mode 100644
index 000000000..70782b718
--- /dev/null
+++ b/graphics/intro/unk_84028F8.bin
Binary files differ
diff --git a/graphics/intro/unk_8402A64.png b/graphics/intro/unk_8402A64.png
new file mode 100644
index 000000000..79784c7c5
--- /dev/null
+++ b/graphics/intro/unk_8402A64.png
Binary files differ
diff --git a/graphics/intro/unk_8402ADC.png b/graphics/intro/unk_8402ADC.png
new file mode 100644
index 000000000..b57006c7b
--- /dev/null
+++ b/graphics/intro/unk_8402ADC.png
Binary files differ
diff --git a/graphics/intro/unk_8402B2C.png b/graphics/intro/unk_8402B2C.png
new file mode 100644
index 000000000..791cb0e47
--- /dev/null
+++ b/graphics/intro/unk_8402B2C.png
Binary files differ
diff --git a/graphics/intro/unk_8402CD4.png b/graphics/intro/unk_8402CD4.png
new file mode 100644
index 000000000..9e19b576c
--- /dev/null
+++ b/graphics/intro/unk_8402CD4.png
Binary files differ
diff --git a/graphics/intro/unk_8402D34.pal b/graphics/intro/unk_8402D34.pal
new file mode 100644
index 000000000..4be93ec3e
--- /dev/null
+++ b/graphics/intro/unk_8402D34.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 255 255
+115 197 106
+41 164 8
+82 180 65
+139 222 131
+98 197 82
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+16 139 98
+16 115 98
+24 90 90
+32 74 90
+32 65 82
diff --git a/graphics/intro/unk_8402D54.png b/graphics/intro/unk_8402D54.png
new file mode 100644
index 000000000..0f487f0bd
--- /dev/null
+++ b/graphics/intro/unk_8402D54.png
Binary files differ
diff --git a/graphics/intro/unk_8403FE8.bin b/graphics/intro/unk_8403FE8.bin
new file mode 100644
index 000000000..c81ca17d1
--- /dev/null
+++ b/graphics/intro/unk_8403FE8.bin
Binary files differ
diff --git a/graphics/intro/unk_84048CC.pal b/graphics/intro/unk_84048CC.pal
new file mode 100644
index 000000000..ef08ae2fe
--- /dev/null
+++ b/graphics/intro/unk_84048CC.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+255 255 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+238 246 246
+222 230 230
+180 189 197
+148 156 172
+106 123 139
+74 90 115
+41 57 90
+0 0 0
diff --git a/graphics/intro/unk_84048EC.png b/graphics/intro/unk_84048EC.png
new file mode 100644
index 000000000..577f1926d
--- /dev/null
+++ b/graphics/intro/unk_84048EC.png
Binary files differ
diff --git a/graphics/intro/unk_8404F7C.bin b/graphics/intro/unk_8404F7C.bin
new file mode 100644
index 000000000..fd7aef605
--- /dev/null
+++ b/graphics/intro/unk_8404F7C.bin
Binary files differ
diff --git a/graphics/intro/unk_84053B4.pal b/graphics/intro/unk_84053B4.pal
new file mode 100644
index 000000000..3567f4cff
--- /dev/null
+++ b/graphics/intro/unk_84053B4.pal
@@ -0,0 +1,51 @@
+JASC-PAL
+0100
+48
+0 0 0
+131 238 115
+82 189 74
+57 164 57
+115 213 98
+16 123 16
+164 255 131
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 148 0
+164 222 98
+0 0 0
+82 98 115
+98 189 123
+139 156 172
+65 139 98
+238 246 246
+106 172 57
+189 189 213
+148 213 82
+106 180 41
+164 131 41
+115 98 49
+82 74 57
+222 222 230
+32 65 90
+24 115 65
+0 0 0
+156 230 156
+131 205 148
+106 180 131
+65 139 98
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/graphics/intro/unk_8405414.png b/graphics/intro/unk_8405414.png
new file mode 100644
index 000000000..254ec3b06
--- /dev/null
+++ b/graphics/intro/unk_8405414.png
Binary files differ
diff --git a/graphics/intro/unk_8405890.bin b/graphics/intro/unk_8405890.bin
new file mode 100644
index 000000000..aea2053b3
--- /dev/null
+++ b/graphics/intro/unk_8405890.bin
Binary files differ
diff --git a/graphics/intro/unk_8405B08.pal b/graphics/intro/unk_8405B08.pal
new file mode 100644
index 000000000..43cc9d949
--- /dev/null
+++ b/graphics/intro/unk_8405B08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+131 238 115
+82 189 74
+57 164 57
+115 213 98
+16 123 16
+164 255 131
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 148 0
+164 222 98
diff --git a/graphics/intro/unk_8405B28.png b/graphics/intro/unk_8405B28.png
new file mode 100644
index 000000000..45400d46d
--- /dev/null
+++ b/graphics/intro/unk_8405B28.png
Binary files differ
diff --git a/graphics/intro/unk_8405CDC.bin b/graphics/intro/unk_8405CDC.bin
new file mode 100644
index 000000000..32cd439b8
--- /dev/null
+++ b/graphics/intro/unk_8405CDC.bin
Binary files differ
diff --git a/graphics/intro/unk_8405DA4.pal b/graphics/intro/unk_8405DA4.pal
new file mode 100644
index 000000000..79d568984
--- /dev/null
+++ b/graphics/intro/unk_8405DA4.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+197 222 205
+255 255 255
+222 222 222
+123 123 123
+255 0 255
+255 0 255
+255 0 255
+65 41 74
+255 180 123
+238 98 74
+205 57 32
+197 131 180
+164 98 148
+131 65 123
+90 57 90
+16 16 16
diff --git a/graphics/intro/unk_8405DC4.png b/graphics/intro/unk_8405DC4.png
new file mode 100644
index 000000000..8ae6ba691
--- /dev/null
+++ b/graphics/intro/unk_8405DC4.png
Binary files differ
diff --git a/graphics/intro/unk_840644C.bin b/graphics/intro/unk_840644C.bin
new file mode 100644
index 000000000..3a6ca9351
--- /dev/null
+++ b/graphics/intro/unk_840644C.bin
Binary files differ
diff --git a/graphics/intro/unk_8406634.pal b/graphics/intro/unk_8406634.pal
new file mode 100644
index 000000000..8e13fe902
--- /dev/null
+++ b/graphics/intro/unk_8406634.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 123 41
+65 148 90
+49 115 74
+106 57 98
+49 115 98
+82 205 156
+49 164 115
+255 255 255
+106 189 115
+90 41 82
+222 180 205
+189 131 189
+139 90 148
+205 205 222
+131 131 131
+16 16 16
diff --git a/graphics/intro/unk_8406654.png b/graphics/intro/unk_8406654.png
new file mode 100644
index 000000000..4c6c06681
--- /dev/null
+++ b/graphics/intro/unk_8406654.png
Binary files differ
diff --git a/graphics/intro/unk_84071D0.bin b/graphics/intro/unk_84071D0.bin
new file mode 100644
index 000000000..37b2b07d8
--- /dev/null
+++ b/graphics/intro/unk_84071D0.bin
Binary files differ
diff --git a/graphics/intro/unk_8407430.pal b/graphics/intro/unk_8407430.pal
new file mode 100644
index 000000000..5c34c44c8
--- /dev/null
+++ b/graphics/intro/unk_8407430.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+0 0 0
+82 98 115
+98 189 123
+139 156 172
+65 139 98
+238 246 246
+106 172 57
+189 189 213
+148 213 82
+106 180 41
+164 131 41
+115 98 49
+82 74 57
+222 222 230
+32 65 90
+24 115 65
+0 0 0
+164 238 139
+57 148 57
+131 213 115
+156 230 156
+131 205 148
+106 180 131
+65 139 98
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+255 0 0
diff --git a/graphics/intro/unk_8407470.png b/graphics/intro/unk_8407470.png
new file mode 100644
index 000000000..809c259bf
--- /dev/null
+++ b/graphics/intro/unk_8407470.png
Binary files differ
diff --git a/graphics/intro/unk_8407A50.bin b/graphics/intro/unk_8407A50.bin
new file mode 100644
index 000000000..6a70c1dc0
--- /dev/null
+++ b/graphics/intro/unk_8407A50.bin
Binary files differ
diff --git a/graphics/intro/unk_8407B9C.png b/graphics/intro/unk_8407B9C.png
new file mode 100644
index 000000000..75528b3b6
--- /dev/null
+++ b/graphics/intro/unk_8407B9C.png
Binary files differ
diff --git a/graphics/intro/unk_8408D98.bin b/graphics/intro/unk_8408D98.bin
new file mode 100644
index 000000000..6e02db72d
--- /dev/null
+++ b/graphics/intro/unk_8408D98.bin
Binary files differ
diff --git a/graphics/intro/unk_840926C.png b/graphics/intro/unk_840926C.png
new file mode 100644
index 000000000..80cc52d52
--- /dev/null
+++ b/graphics/intro/unk_840926C.png
Binary files differ
diff --git a/graphics/intro/unk_84096AC.pal b/graphics/intro/unk_84096AC.pal
new file mode 100644
index 000000000..53a2c5c2b
--- /dev/null
+++ b/graphics/intro/unk_84096AC.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+197 222 205
+255 106 82
+222 65 41
+180 24 0
+57 238 189
+82 205 156
+0 164 115
+255 255 255
+255 0 255
+222 180 205
+189 131 189
+139 90 148
+106 57 98
+205 205 222
+131 131 131
+16 16 16
diff --git a/graphics/intro/unk_84096CC.png b/graphics/intro/unk_84096CC.png
new file mode 100644
index 000000000..75aacced4
--- /dev/null
+++ b/graphics/intro/unk_84096CC.png
Binary files differ
diff --git a/graphics/intro/unk_8409A1C.pal b/graphics/intro/unk_8409A1C.pal
new file mode 100644
index 000000000..36cbbb9a0
--- /dev/null
+++ b/graphics/intro/unk_8409A1C.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+164 238 139
+57 148 57
+131 213 115
+156 230 156
+131 205 148
+106 180 131
+65 139 98
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+255 0 0
diff --git a/graphics/intro/unk_8409A3C.png b/graphics/intro/unk_8409A3C.png
new file mode 100644
index 000000000..01ed028f8
--- /dev/null
+++ b/graphics/intro/unk_8409A3C.png
Binary files differ
diff --git a/graphics/intro/unk_8409D20.png b/graphics/intro/unk_8409D20.png
new file mode 100644
index 000000000..11f299cfd
--- /dev/null
+++ b/graphics/intro/unk_8409D20.png
Binary files differ
diff --git a/graphics/intro/unk_840A3E4.png b/graphics/intro/unk_840A3E4.png
new file mode 100644
index 000000000..7b91a5bb4
--- /dev/null
+++ b/graphics/intro/unk_840A3E4.png
Binary files differ
diff --git a/graphics/intro/unk_840B834.pal b/graphics/intro/unk_840B834.pal
new file mode 100644
index 000000000..40bbce557
--- /dev/null
+++ b/graphics/intro/unk_840B834.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+238 246 189
+0 0 0
+0 0 0
+115 213 255
+156 222 255
+205 238 255
+255 255 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/unk_840B854.pal b/graphics/intro/unk_840B854.pal
new file mode 100644
index 000000000..dcf29b92e
--- /dev/null
+++ b/graphics/intro/unk_840B854.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+197 222 205
+255 255 255
+222 222 222
+123 123 123
+156 222 255
+189 230 255
+222 238 255
+255 255 255
+255 180 123
+238 98 74
+205 57 32
+197 131 180
+164 98 148
+131 65 123
+90 57 90
+16 16 16
diff --git a/graphics/intro/unk_840B874.png b/graphics/intro/unk_840B874.png
new file mode 100644
index 000000000..b8877f079
--- /dev/null
+++ b/graphics/intro/unk_840B874.png
Binary files differ
diff --git a/graphics/intro/unk_840BAE0.png b/graphics/intro/unk_840BAE0.png
new file mode 100644
index 000000000..bf5578cae
--- /dev/null
+++ b/graphics/intro/unk_840BAE0.png
Binary files differ
diff --git a/graphics/item_pc/unk_8E85090.png b/graphics/item_pc/unk_8E85090.png
new file mode 100644
index 000000000..6c6748683
--- /dev/null
+++ b/graphics/item_pc/unk_8E85090.png
Binary files differ
diff --git a/graphics/item_pc/unk_8E85408.pal b/graphics/item_pc/unk_8E85408.pal
new file mode 100644
index 000000000..b873bd0f6
--- /dev/null
+++ b/graphics/item_pc/unk_8E85408.pal
@@ -0,0 +1,51 @@
+JASC-PAL
+0100
+48
+0 0 0
+148 189 246
+106 172 230
+238 246 246
+222 230 230
+255 189 74
+230 131 41
+172 74 8
+156 164 172
+115 123 139
+164 255 139
+139 238 106
+115 222 82
+98 205 57
+230 230 238
+255 255 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+189 213 213
+238 255 255
+222 246 255
+255 255 255
+164 222 255
+16 172 222
+0 82 115
+0 115 139
+0 123 197
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+189 213 213
+238 255 255
+222 246 255
+255 255 255
+164 222 255
+24 82 180
+0 90 131
+24 82 180
+24 82 180
diff --git a/graphics/item_pc/unk_8E85458.bin b/graphics/item_pc/unk_8E85458.bin
new file mode 100644
index 000000000..046ef83b4
--- /dev/null
+++ b/graphics/item_pc/unk_8E85458.bin
Binary files differ
diff --git a/graphics/misc/unk_8479688.png b/graphics/misc/unk_8479688.png
new file mode 100644
index 000000000..9c84eaf1e
--- /dev/null
+++ b/graphics/misc/unk_8479688.png
Binary files differ
diff --git a/graphics/misc/unk_8479748.png b/graphics/misc/unk_8479748.png
new file mode 100644
index 000000000..29b9ee764
--- /dev/null
+++ b/graphics/misc/unk_8479748.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/abra_back_pic.png b/graphics/pokemon/abra/back.png
index fd53dd1f6..fd53dd1f6 100644
--- a/graphics/pokemon/back_pics/abra_back_pic.png
+++ b/graphics/pokemon/abra/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/abra_footprint.png b/graphics/pokemon/abra/footprint.png
index 42b5e416f..42b5e416f 100644
--- a/graphics/pokemon/footprints/abra_footprint.png
+++ b/graphics/pokemon/abra/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/abra_still_front_pic.png b/graphics/pokemon/abra/front.png
index a3f2aa453..a3f2aa453 100644
--- a/graphics/pokemon/front_pics/abra_still_front_pic.png
+++ b/graphics/pokemon/abra/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/abra_icon.png b/graphics/pokemon/abra/icon.png
index cf7d3d2f7..cf7d3d2f7 100644
--- a/graphics/pokemon/icons/abra_icon.png
+++ b/graphics/pokemon/abra/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/abra_palette.pal b/graphics/pokemon/abra/normal.pal
index b66db0279..b66db0279 100644
--- a/graphics/pokemon/palettes/abra_palette.pal
+++ b/graphics/pokemon/abra/normal.pal
diff --git a/graphics/pokemon/palettes/abra_shiny_palette.pal b/graphics/pokemon/abra/shiny.pal
index 9b3ebe682..9b3ebe682 100644
--- a/graphics/pokemon/palettes/abra_shiny_palette.pal
+++ b/graphics/pokemon/abra/shiny.pal
diff --git a/graphics/pokemon/back_pics/absol_back_pic.png b/graphics/pokemon/absol/back.png
index 876ba48aa..876ba48aa 100644
--- a/graphics/pokemon/back_pics/absol_back_pic.png
+++ b/graphics/pokemon/absol/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/absol_footprint.png b/graphics/pokemon/absol/footprint.png
index da4076f78..da4076f78 100644
--- a/graphics/pokemon/footprints/absol_footprint.png
+++ b/graphics/pokemon/absol/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/absol_still_front_pic.png b/graphics/pokemon/absol/front.png
index 17759b2e7..17759b2e7 100644
--- a/graphics/pokemon/front_pics/absol_still_front_pic.png
+++ b/graphics/pokemon/absol/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/absol_icon.png b/graphics/pokemon/absol/icon.png
index 3cc5e01b5..3cc5e01b5 100644
--- a/graphics/pokemon/icons/absol_icon.png
+++ b/graphics/pokemon/absol/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/absol_palette.pal b/graphics/pokemon/absol/normal.pal
index 990038917..990038917 100644
--- a/graphics/pokemon/palettes/absol_palette.pal
+++ b/graphics/pokemon/absol/normal.pal
diff --git a/graphics/pokemon/palettes/absol_shiny_palette.pal b/graphics/pokemon/absol/shiny.pal
index 4b86195a7..4b86195a7 100644
--- a/graphics/pokemon/palettes/absol_shiny_palette.pal
+++ b/graphics/pokemon/absol/shiny.pal
diff --git a/graphics/pokemon/back_pics/aerodactyl_back_pic.png b/graphics/pokemon/aerodactyl/back.png
index 8dfa76f57..8dfa76f57 100644
--- a/graphics/pokemon/back_pics/aerodactyl_back_pic.png
+++ b/graphics/pokemon/aerodactyl/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/aerodactyl_footprint.png b/graphics/pokemon/aerodactyl/footprint.png
index 7c5d3e6c1..7c5d3e6c1 100644
--- a/graphics/pokemon/footprints/aerodactyl_footprint.png
+++ b/graphics/pokemon/aerodactyl/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/aerodactyl_still_front_pic.png b/graphics/pokemon/aerodactyl/front.png
index dc4a521f9..dc4a521f9 100644
--- a/graphics/pokemon/front_pics/aerodactyl_still_front_pic.png
+++ b/graphics/pokemon/aerodactyl/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/aerodactyl_icon.png b/graphics/pokemon/aerodactyl/icon.png
index f90e269b0..f90e269b0 100644
--- a/graphics/pokemon/icons/aerodactyl_icon.png
+++ b/graphics/pokemon/aerodactyl/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/aerodactyl_palette.pal b/graphics/pokemon/aerodactyl/normal.pal
index 9f7de3d61..9f7de3d61 100644
--- a/graphics/pokemon/palettes/aerodactyl_palette.pal
+++ b/graphics/pokemon/aerodactyl/normal.pal
diff --git a/graphics/pokemon/palettes/aerodactyl_shiny_palette.pal b/graphics/pokemon/aerodactyl/shiny.pal
index d661e6154..d661e6154 100644
--- a/graphics/pokemon/palettes/aerodactyl_shiny_palette.pal
+++ b/graphics/pokemon/aerodactyl/shiny.pal
diff --git a/graphics/pokemon/back_pics/aggron_back_pic.png b/graphics/pokemon/aggron/back.png
index 24ade1ff4..24ade1ff4 100644
--- a/graphics/pokemon/back_pics/aggron_back_pic.png
+++ b/graphics/pokemon/aggron/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/aggron_footprint.png b/graphics/pokemon/aggron/footprint.png
index 3ba6d480b..3ba6d480b 100644
--- a/graphics/pokemon/footprints/aggron_footprint.png
+++ b/graphics/pokemon/aggron/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/aggron_still_front_pic.png b/graphics/pokemon/aggron/front.png
index 0c357efe4..0c357efe4 100644
--- a/graphics/pokemon/front_pics/aggron_still_front_pic.png
+++ b/graphics/pokemon/aggron/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/aggron_icon.png b/graphics/pokemon/aggron/icon.png
index ed7ae52e4..ed7ae52e4 100644
--- a/graphics/pokemon/icons/aggron_icon.png
+++ b/graphics/pokemon/aggron/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/aggron_palette.pal b/graphics/pokemon/aggron/normal.pal
index b5711fdad..b5711fdad 100644
--- a/graphics/pokemon/palettes/aggron_palette.pal
+++ b/graphics/pokemon/aggron/normal.pal
diff --git a/graphics/pokemon/palettes/aggron_shiny_palette.pal b/graphics/pokemon/aggron/shiny.pal
index eadb9aa81..eadb9aa81 100644
--- a/graphics/pokemon/palettes/aggron_shiny_palette.pal
+++ b/graphics/pokemon/aggron/shiny.pal
diff --git a/graphics/pokemon/back_pics/aipom_back_pic.png b/graphics/pokemon/aipom/back.png
index 7e9594b6f..7e9594b6f 100644
--- a/graphics/pokemon/back_pics/aipom_back_pic.png
+++ b/graphics/pokemon/aipom/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/aipom_footprint.png b/graphics/pokemon/aipom/footprint.png
index 67f7f1188..67f7f1188 100644
--- a/graphics/pokemon/footprints/aipom_footprint.png
+++ b/graphics/pokemon/aipom/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/aipom_still_front_pic.png b/graphics/pokemon/aipom/front.png
index 25b20c739..25b20c739 100644
--- a/graphics/pokemon/front_pics/aipom_still_front_pic.png
+++ b/graphics/pokemon/aipom/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/aipom_icon.png b/graphics/pokemon/aipom/icon.png
index d5138f203..d5138f203 100644
--- a/graphics/pokemon/icons/aipom_icon.png
+++ b/graphics/pokemon/aipom/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/aipom_palette.pal b/graphics/pokemon/aipom/normal.pal
index bc79b2a2a..bc79b2a2a 100644
--- a/graphics/pokemon/palettes/aipom_palette.pal
+++ b/graphics/pokemon/aipom/normal.pal
diff --git a/graphics/pokemon/palettes/aipom_shiny_palette.pal b/graphics/pokemon/aipom/shiny.pal
index 785e324ab..785e324ab 100644
--- a/graphics/pokemon/palettes/aipom_shiny_palette.pal
+++ b/graphics/pokemon/aipom/shiny.pal
diff --git a/graphics/pokemon/back_pics/alakazam_back_pic.png b/graphics/pokemon/alakazam/back.png
index fd4f4ab42..fd4f4ab42 100644
--- a/graphics/pokemon/back_pics/alakazam_back_pic.png
+++ b/graphics/pokemon/alakazam/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/alakazam_footprint.png b/graphics/pokemon/alakazam/footprint.png
index e3c3795cf..e3c3795cf 100644
--- a/graphics/pokemon/footprints/alakazam_footprint.png
+++ b/graphics/pokemon/alakazam/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/alakazam_still_front_pic.png b/graphics/pokemon/alakazam/front.png
index bd6d57240..bd6d57240 100644
--- a/graphics/pokemon/front_pics/alakazam_still_front_pic.png
+++ b/graphics/pokemon/alakazam/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/alakazam_icon.png b/graphics/pokemon/alakazam/icon.png
index f15231469..f15231469 100644
--- a/graphics/pokemon/icons/alakazam_icon.png
+++ b/graphics/pokemon/alakazam/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/alakazam_palette.pal b/graphics/pokemon/alakazam/normal.pal
index a02bea0db..a02bea0db 100644
--- a/graphics/pokemon/palettes/alakazam_palette.pal
+++ b/graphics/pokemon/alakazam/normal.pal
diff --git a/graphics/pokemon/palettes/alakazam_shiny_palette.pal b/graphics/pokemon/alakazam/shiny.pal
index 083ce6897..083ce6897 100644
--- a/graphics/pokemon/palettes/alakazam_shiny_palette.pal
+++ b/graphics/pokemon/alakazam/shiny.pal
diff --git a/graphics/pokemon/back_pics/altaria_back_pic.png b/graphics/pokemon/altaria/back.png
index b224676be..b224676be 100644
--- a/graphics/pokemon/back_pics/altaria_back_pic.png
+++ b/graphics/pokemon/altaria/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/altaria_footprint.png b/graphics/pokemon/altaria/footprint.png
index 6c65deae5..6c65deae5 100644
--- a/graphics/pokemon/footprints/altaria_footprint.png
+++ b/graphics/pokemon/altaria/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/altaria_still_front_pic.png b/graphics/pokemon/altaria/front.png
index 8b45828a2..8b45828a2 100644
--- a/graphics/pokemon/front_pics/altaria_still_front_pic.png
+++ b/graphics/pokemon/altaria/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/altaria_icon.png b/graphics/pokemon/altaria/icon.png
index 300dfec82..300dfec82 100644
--- a/graphics/pokemon/icons/altaria_icon.png
+++ b/graphics/pokemon/altaria/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/altaria_palette.pal b/graphics/pokemon/altaria/normal.pal
index d7af0b531..d7af0b531 100644
--- a/graphics/pokemon/palettes/altaria_palette.pal
+++ b/graphics/pokemon/altaria/normal.pal
diff --git a/graphics/pokemon/palettes/altaria_shiny_palette.pal b/graphics/pokemon/altaria/shiny.pal
index 0ebea146a..0ebea146a 100644
--- a/graphics/pokemon/palettes/altaria_shiny_palette.pal
+++ b/graphics/pokemon/altaria/shiny.pal
diff --git a/graphics/pokemon/back_pics/ampharos_back_pic.png b/graphics/pokemon/ampharos/back.png
index 2e7c2399e..2e7c2399e 100644
--- a/graphics/pokemon/back_pics/ampharos_back_pic.png
+++ b/graphics/pokemon/ampharos/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ampharos_footprint.png b/graphics/pokemon/ampharos/footprint.png
index bfc2f8034..bfc2f8034 100644
--- a/graphics/pokemon/footprints/ampharos_footprint.png
+++ b/graphics/pokemon/ampharos/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ampharos_still_front_pic.png b/graphics/pokemon/ampharos/front.png
index cc4956afb..cc4956afb 100644
--- a/graphics/pokemon/front_pics/ampharos_still_front_pic.png
+++ b/graphics/pokemon/ampharos/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ampharos_icon.png b/graphics/pokemon/ampharos/icon.png
index d7a3f9e70..d7a3f9e70 100644
--- a/graphics/pokemon/icons/ampharos_icon.png
+++ b/graphics/pokemon/ampharos/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ampharos_palette.pal b/graphics/pokemon/ampharos/normal.pal
index f7fdd3683..f7fdd3683 100644
--- a/graphics/pokemon/palettes/ampharos_palette.pal
+++ b/graphics/pokemon/ampharos/normal.pal
diff --git a/graphics/pokemon/palettes/ampharos_shiny_palette.pal b/graphics/pokemon/ampharos/shiny.pal
index f29dc710f..f29dc710f 100644
--- a/graphics/pokemon/palettes/ampharos_shiny_palette.pal
+++ b/graphics/pokemon/ampharos/shiny.pal
diff --git a/graphics/pokemon/back_pics/anorith_back_pic.png b/graphics/pokemon/anorith/back.png
index 0f9c0efc0..0f9c0efc0 100644
--- a/graphics/pokemon/back_pics/anorith_back_pic.png
+++ b/graphics/pokemon/anorith/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/anorith_footprint.png b/graphics/pokemon/anorith/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/anorith_footprint.png
+++ b/graphics/pokemon/anorith/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/anorith_still_front_pic.png b/graphics/pokemon/anorith/front.png
index 425ff4c0d..425ff4c0d 100644
--- a/graphics/pokemon/front_pics/anorith_still_front_pic.png
+++ b/graphics/pokemon/anorith/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/anorith_icon.png b/graphics/pokemon/anorith/icon.png
index 936355d61..936355d61 100644
--- a/graphics/pokemon/icons/anorith_icon.png
+++ b/graphics/pokemon/anorith/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/anorith_palette.pal b/graphics/pokemon/anorith/normal.pal
index 01bb5c13f..01bb5c13f 100644
--- a/graphics/pokemon/palettes/anorith_palette.pal
+++ b/graphics/pokemon/anorith/normal.pal
diff --git a/graphics/pokemon/palettes/anorith_shiny_palette.pal b/graphics/pokemon/anorith/shiny.pal
index dc1fe0374..dc1fe0374 100644
--- a/graphics/pokemon/palettes/anorith_shiny_palette.pal
+++ b/graphics/pokemon/anorith/shiny.pal
diff --git a/graphics/pokemon/back_pics/arbok_back_pic.png b/graphics/pokemon/arbok/back.png
index 63004593c..63004593c 100644
--- a/graphics/pokemon/back_pics/arbok_back_pic.png
+++ b/graphics/pokemon/arbok/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/arbok_footprint.png b/graphics/pokemon/arbok/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/arbok_footprint.png
+++ b/graphics/pokemon/arbok/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/arbok_still_front_pic.png b/graphics/pokemon/arbok/front.png
index 025f84b90..025f84b90 100644
--- a/graphics/pokemon/front_pics/arbok_still_front_pic.png
+++ b/graphics/pokemon/arbok/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/arbok_icon.png b/graphics/pokemon/arbok/icon.png
index 8967d44a6..8967d44a6 100644
--- a/graphics/pokemon/icons/arbok_icon.png
+++ b/graphics/pokemon/arbok/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/arbok_palette.pal b/graphics/pokemon/arbok/normal.pal
index bd25500f3..bd25500f3 100644
--- a/graphics/pokemon/palettes/arbok_palette.pal
+++ b/graphics/pokemon/arbok/normal.pal
diff --git a/graphics/pokemon/palettes/arbok_shiny_palette.pal b/graphics/pokemon/arbok/shiny.pal
index 6c88ffb42..6c88ffb42 100644
--- a/graphics/pokemon/palettes/arbok_shiny_palette.pal
+++ b/graphics/pokemon/arbok/shiny.pal
diff --git a/graphics/pokemon/back_pics/arcanine_back_pic.png b/graphics/pokemon/arcanine/back.png
index 1b0840c8a..1b0840c8a 100644
--- a/graphics/pokemon/back_pics/arcanine_back_pic.png
+++ b/graphics/pokemon/arcanine/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/arcanine_footprint.png b/graphics/pokemon/arcanine/footprint.png
index 96b7f93ae..96b7f93ae 100644
--- a/graphics/pokemon/footprints/arcanine_footprint.png
+++ b/graphics/pokemon/arcanine/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/arcanine_still_front_pic.png b/graphics/pokemon/arcanine/front.png
index 2ee31ddab..2ee31ddab 100644
--- a/graphics/pokemon/front_pics/arcanine_still_front_pic.png
+++ b/graphics/pokemon/arcanine/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/arcanine_icon.png b/graphics/pokemon/arcanine/icon.png
index 3fed9199a..3fed9199a 100644
--- a/graphics/pokemon/icons/arcanine_icon.png
+++ b/graphics/pokemon/arcanine/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/arcanine_palette.pal b/graphics/pokemon/arcanine/normal.pal
index b6d54296e..b6d54296e 100644
--- a/graphics/pokemon/palettes/arcanine_palette.pal
+++ b/graphics/pokemon/arcanine/normal.pal
diff --git a/graphics/pokemon/palettes/arcanine_shiny_palette.pal b/graphics/pokemon/arcanine/shiny.pal
index 99edcb435..99edcb435 100644
--- a/graphics/pokemon/palettes/arcanine_shiny_palette.pal
+++ b/graphics/pokemon/arcanine/shiny.pal
diff --git a/graphics/pokemon/back_pics/ariados_back_pic.png b/graphics/pokemon/ariados/back.png
index b677b7222..b677b7222 100644
--- a/graphics/pokemon/back_pics/ariados_back_pic.png
+++ b/graphics/pokemon/ariados/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ariados_footprint.png b/graphics/pokemon/ariados/footprint.png
index cee3b1ba5..cee3b1ba5 100644
--- a/graphics/pokemon/footprints/ariados_footprint.png
+++ b/graphics/pokemon/ariados/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ariados_still_front_pic.png b/graphics/pokemon/ariados/front.png
index 07bc4a4db..07bc4a4db 100644
--- a/graphics/pokemon/front_pics/ariados_still_front_pic.png
+++ b/graphics/pokemon/ariados/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ariados_icon.png b/graphics/pokemon/ariados/icon.png
index 4284968f2..4284968f2 100644
--- a/graphics/pokemon/icons/ariados_icon.png
+++ b/graphics/pokemon/ariados/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ariados_palette.pal b/graphics/pokemon/ariados/normal.pal
index ccf5f7fe7..ccf5f7fe7 100644
--- a/graphics/pokemon/palettes/ariados_palette.pal
+++ b/graphics/pokemon/ariados/normal.pal
diff --git a/graphics/pokemon/palettes/ariados_shiny_palette.pal b/graphics/pokemon/ariados/shiny.pal
index c2557b589..c2557b589 100644
--- a/graphics/pokemon/palettes/ariados_shiny_palette.pal
+++ b/graphics/pokemon/ariados/shiny.pal
diff --git a/graphics/pokemon/back_pics/armaldo_back_pic.png b/graphics/pokemon/armaldo/back.png
index 23c8c7113..23c8c7113 100644
--- a/graphics/pokemon/back_pics/armaldo_back_pic.png
+++ b/graphics/pokemon/armaldo/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/armaldo_footprint.png b/graphics/pokemon/armaldo/footprint.png
index d12d2e42c..d12d2e42c 100644
--- a/graphics/pokemon/footprints/armaldo_footprint.png
+++ b/graphics/pokemon/armaldo/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/armaldo_still_front_pic.png b/graphics/pokemon/armaldo/front.png
index 01b7ee08b..01b7ee08b 100644
--- a/graphics/pokemon/front_pics/armaldo_still_front_pic.png
+++ b/graphics/pokemon/armaldo/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/armaldo_icon.png b/graphics/pokemon/armaldo/icon.png
index ed3bb65f2..ed3bb65f2 100644
--- a/graphics/pokemon/icons/armaldo_icon.png
+++ b/graphics/pokemon/armaldo/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/armaldo_palette.pal b/graphics/pokemon/armaldo/normal.pal
index a6fc406b3..a6fc406b3 100644
--- a/graphics/pokemon/palettes/armaldo_palette.pal
+++ b/graphics/pokemon/armaldo/normal.pal
diff --git a/graphics/pokemon/palettes/armaldo_shiny_palette.pal b/graphics/pokemon/armaldo/shiny.pal
index e6d09d611..e6d09d611 100644
--- a/graphics/pokemon/palettes/armaldo_shiny_palette.pal
+++ b/graphics/pokemon/armaldo/shiny.pal
diff --git a/graphics/pokemon/back_pics/aron_back_pic.png b/graphics/pokemon/aron/back.png
index 330d46c42..330d46c42 100644
--- a/graphics/pokemon/back_pics/aron_back_pic.png
+++ b/graphics/pokemon/aron/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/aron_footprint.png b/graphics/pokemon/aron/footprint.png
index fe53cb5eb..fe53cb5eb 100644
--- a/graphics/pokemon/footprints/aron_footprint.png
+++ b/graphics/pokemon/aron/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/aron_still_front_pic.png b/graphics/pokemon/aron/front.png
index f3764ec2b..f3764ec2b 100644
--- a/graphics/pokemon/front_pics/aron_still_front_pic.png
+++ b/graphics/pokemon/aron/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/aron_icon.png b/graphics/pokemon/aron/icon.png
index 547846374..547846374 100644
--- a/graphics/pokemon/icons/aron_icon.png
+++ b/graphics/pokemon/aron/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/aron_palette.pal b/graphics/pokemon/aron/normal.pal
index b5711fdad..b5711fdad 100644
--- a/graphics/pokemon/palettes/aron_palette.pal
+++ b/graphics/pokemon/aron/normal.pal
diff --git a/graphics/pokemon/palettes/aron_shiny_palette.pal b/graphics/pokemon/aron/shiny.pal
index eadb9aa81..eadb9aa81 100644
--- a/graphics/pokemon/palettes/aron_shiny_palette.pal
+++ b/graphics/pokemon/aron/shiny.pal
diff --git a/graphics/pokemon/back_pics/articuno_back_pic.png b/graphics/pokemon/articuno/back.png
index 7e06ba84e..7e06ba84e 100644
--- a/graphics/pokemon/back_pics/articuno_back_pic.png
+++ b/graphics/pokemon/articuno/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/articuno_footprint.png b/graphics/pokemon/articuno/footprint.png
index e6e4fa9ef..e6e4fa9ef 100644
--- a/graphics/pokemon/footprints/articuno_footprint.png
+++ b/graphics/pokemon/articuno/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/articuno_still_front_pic.png b/graphics/pokemon/articuno/front.png
index a3203a190..a3203a190 100644
--- a/graphics/pokemon/front_pics/articuno_still_front_pic.png
+++ b/graphics/pokemon/articuno/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/articuno_icon.png b/graphics/pokemon/articuno/icon.png
index e2f19f133..e2f19f133 100644
--- a/graphics/pokemon/icons/articuno_icon.png
+++ b/graphics/pokemon/articuno/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/articuno_palette.pal b/graphics/pokemon/articuno/normal.pal
index a4cba7de4..a4cba7de4 100644
--- a/graphics/pokemon/palettes/articuno_palette.pal
+++ b/graphics/pokemon/articuno/normal.pal
diff --git a/graphics/pokemon/palettes/articuno_shiny_palette.pal b/graphics/pokemon/articuno/shiny.pal
index bda666847..bda666847 100644
--- a/graphics/pokemon/palettes/articuno_shiny_palette.pal
+++ b/graphics/pokemon/articuno/shiny.pal
diff --git a/graphics/pokemon/back_pics/azumarill_back_pic.png b/graphics/pokemon/azumarill/back.png
index ca59011c6..ca59011c6 100644
--- a/graphics/pokemon/back_pics/azumarill_back_pic.png
+++ b/graphics/pokemon/azumarill/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/azumarill_footprint.png b/graphics/pokemon/azumarill/footprint.png
index 904bf941c..904bf941c 100644
--- a/graphics/pokemon/footprints/azumarill_footprint.png
+++ b/graphics/pokemon/azumarill/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/azumarill_still_front_pic.png b/graphics/pokemon/azumarill/front.png
index feb172d52..feb172d52 100644
--- a/graphics/pokemon/front_pics/azumarill_still_front_pic.png
+++ b/graphics/pokemon/azumarill/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/azumarill_icon.png b/graphics/pokemon/azumarill/icon.png
index f41d53d2c..f41d53d2c 100644
--- a/graphics/pokemon/icons/azumarill_icon.png
+++ b/graphics/pokemon/azumarill/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/azumarill_palette.pal b/graphics/pokemon/azumarill/normal.pal
index 429d3fecc..429d3fecc 100644
--- a/graphics/pokemon/palettes/azumarill_palette.pal
+++ b/graphics/pokemon/azumarill/normal.pal
diff --git a/graphics/pokemon/palettes/azumarill_shiny_palette.pal b/graphics/pokemon/azumarill/shiny.pal
index 5f185cecb..5f185cecb 100644
--- a/graphics/pokemon/palettes/azumarill_shiny_palette.pal
+++ b/graphics/pokemon/azumarill/shiny.pal
diff --git a/graphics/pokemon/back_pics/azurill_back_pic.png b/graphics/pokemon/azurill/back.png
index cf10bded4..cf10bded4 100644
--- a/graphics/pokemon/back_pics/azurill_back_pic.png
+++ b/graphics/pokemon/azurill/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/azurill_footprint.png b/graphics/pokemon/azurill/footprint.png
index 60db8e03b..60db8e03b 100644
--- a/graphics/pokemon/footprints/azurill_footprint.png
+++ b/graphics/pokemon/azurill/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/azurill_still_front_pic.png b/graphics/pokemon/azurill/front.png
index 02cc79a6c..02cc79a6c 100644
--- a/graphics/pokemon/front_pics/azurill_still_front_pic.png
+++ b/graphics/pokemon/azurill/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/azurill_icon.png b/graphics/pokemon/azurill/icon.png
index b69acc7fd..b69acc7fd 100644
--- a/graphics/pokemon/icons/azurill_icon.png
+++ b/graphics/pokemon/azurill/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/azurill_palette.pal b/graphics/pokemon/azurill/normal.pal
index 44214498f..44214498f 100644
--- a/graphics/pokemon/palettes/azurill_palette.pal
+++ b/graphics/pokemon/azurill/normal.pal
diff --git a/graphics/pokemon/palettes/azurill_shiny_palette.pal b/graphics/pokemon/azurill/shiny.pal
index bbc8d2f29..bbc8d2f29 100644
--- a/graphics/pokemon/palettes/azurill_shiny_palette.pal
+++ b/graphics/pokemon/azurill/shiny.pal
diff --git a/graphics/pokemon/back_pics/bagon_back_pic.png b/graphics/pokemon/bagon/back.png
index 0a058d768..0a058d768 100644
--- a/graphics/pokemon/back_pics/bagon_back_pic.png
+++ b/graphics/pokemon/bagon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/bagon_footprint.png b/graphics/pokemon/bagon/footprint.png
index 9a93a7564..9a93a7564 100644
--- a/graphics/pokemon/footprints/bagon_footprint.png
+++ b/graphics/pokemon/bagon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/bagon_still_front_pic.png b/graphics/pokemon/bagon/front.png
index 259872b72..259872b72 100644
--- a/graphics/pokemon/front_pics/bagon_still_front_pic.png
+++ b/graphics/pokemon/bagon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/bagon_icon.png b/graphics/pokemon/bagon/icon.png
index cc3af423f..cc3af423f 100644
--- a/graphics/pokemon/icons/bagon_icon.png
+++ b/graphics/pokemon/bagon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/bagon_palette.pal b/graphics/pokemon/bagon/normal.pal
index c71cdb94b..c71cdb94b 100644
--- a/graphics/pokemon/palettes/bagon_palette.pal
+++ b/graphics/pokemon/bagon/normal.pal
diff --git a/graphics/pokemon/palettes/bagon_shiny_palette.pal b/graphics/pokemon/bagon/shiny.pal
index 6cd8ce5ea..6cd8ce5ea 100644
--- a/graphics/pokemon/palettes/bagon_shiny_palette.pal
+++ b/graphics/pokemon/bagon/shiny.pal
diff --git a/graphics/pokemon/back_pics/baltoy_back_pic.png b/graphics/pokemon/baltoy/back.png
index a8d124481..a8d124481 100644
--- a/graphics/pokemon/back_pics/baltoy_back_pic.png
+++ b/graphics/pokemon/baltoy/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/baltoy_footprint.png b/graphics/pokemon/baltoy/footprint.png
index 6965dbe60..6965dbe60 100644
--- a/graphics/pokemon/footprints/baltoy_footprint.png
+++ b/graphics/pokemon/baltoy/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/baltoy_still_front_pic.png b/graphics/pokemon/baltoy/front.png
index d161de265..d161de265 100644
--- a/graphics/pokemon/front_pics/baltoy_still_front_pic.png
+++ b/graphics/pokemon/baltoy/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/baltoy_icon.png b/graphics/pokemon/baltoy/icon.png
index 4ec3f35e9..4ec3f35e9 100644
--- a/graphics/pokemon/icons/baltoy_icon.png
+++ b/graphics/pokemon/baltoy/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/baltoy_palette.pal b/graphics/pokemon/baltoy/normal.pal
index 335657267..335657267 100644
--- a/graphics/pokemon/palettes/baltoy_palette.pal
+++ b/graphics/pokemon/baltoy/normal.pal
diff --git a/graphics/pokemon/palettes/baltoy_shiny_palette.pal b/graphics/pokemon/baltoy/shiny.pal
index 39cfa55ad..39cfa55ad 100644
--- a/graphics/pokemon/palettes/baltoy_shiny_palette.pal
+++ b/graphics/pokemon/baltoy/shiny.pal
diff --git a/graphics/pokemon/back_pics/banette_back_pic.png b/graphics/pokemon/banette/back.png
index 3ea5f30af..3ea5f30af 100644
--- a/graphics/pokemon/back_pics/banette_back_pic.png
+++ b/graphics/pokemon/banette/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/banette_footprint.png b/graphics/pokemon/banette/footprint.png
index a15814f2f..a15814f2f 100644
--- a/graphics/pokemon/footprints/banette_footprint.png
+++ b/graphics/pokemon/banette/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/banette_still_front_pic.png b/graphics/pokemon/banette/front.png
index be02be897..be02be897 100644
--- a/graphics/pokemon/front_pics/banette_still_front_pic.png
+++ b/graphics/pokemon/banette/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/banette_icon.png b/graphics/pokemon/banette/icon.png
index 3b5cbaed1..3b5cbaed1 100644
--- a/graphics/pokemon/icons/banette_icon.png
+++ b/graphics/pokemon/banette/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/banette_palette.pal b/graphics/pokemon/banette/normal.pal
index cebcb7757..cebcb7757 100644
--- a/graphics/pokemon/palettes/banette_palette.pal
+++ b/graphics/pokemon/banette/normal.pal
diff --git a/graphics/pokemon/palettes/banette_shiny_palette.pal b/graphics/pokemon/banette/shiny.pal
index b6df68803..b6df68803 100644
--- a/graphics/pokemon/palettes/banette_shiny_palette.pal
+++ b/graphics/pokemon/banette/shiny.pal
diff --git a/graphics/pokemon/back_pics/barboach_back_pic.png b/graphics/pokemon/barboach/back.png
index 4fa892c53..4fa892c53 100644
--- a/graphics/pokemon/back_pics/barboach_back_pic.png
+++ b/graphics/pokemon/barboach/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/barboach_footprint.png b/graphics/pokemon/barboach/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/barboach_footprint.png
+++ b/graphics/pokemon/barboach/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/barboach_still_front_pic.png b/graphics/pokemon/barboach/front.png
index 150e6c086..150e6c086 100644
--- a/graphics/pokemon/front_pics/barboach_still_front_pic.png
+++ b/graphics/pokemon/barboach/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/barboach_icon.png b/graphics/pokemon/barboach/icon.png
index ad874daac..ad874daac 100644
--- a/graphics/pokemon/icons/barboach_icon.png
+++ b/graphics/pokemon/barboach/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/barboach_palette.pal b/graphics/pokemon/barboach/normal.pal
index 20167a557..20167a557 100644
--- a/graphics/pokemon/palettes/barboach_palette.pal
+++ b/graphics/pokemon/barboach/normal.pal
diff --git a/graphics/pokemon/palettes/barboach_shiny_palette.pal b/graphics/pokemon/barboach/shiny.pal
index e29a02099..e29a02099 100644
--- a/graphics/pokemon/palettes/barboach_shiny_palette.pal
+++ b/graphics/pokemon/barboach/shiny.pal
diff --git a/graphics/pokemon/back_pics/bayleef_back_pic.png b/graphics/pokemon/bayleef/back.png
index 63ba17c5e..63ba17c5e 100644
--- a/graphics/pokemon/back_pics/bayleef_back_pic.png
+++ b/graphics/pokemon/bayleef/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/bayleef_footprint.png b/graphics/pokemon/bayleef/footprint.png
index 04b375a7a..04b375a7a 100644
--- a/graphics/pokemon/footprints/bayleef_footprint.png
+++ b/graphics/pokemon/bayleef/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/bayleef_still_front_pic.png b/graphics/pokemon/bayleef/front.png
index ad6713c61..ad6713c61 100644
--- a/graphics/pokemon/front_pics/bayleef_still_front_pic.png
+++ b/graphics/pokemon/bayleef/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/bayleef_icon.png b/graphics/pokemon/bayleef/icon.png
index 47d2774d6..47d2774d6 100644
--- a/graphics/pokemon/icons/bayleef_icon.png
+++ b/graphics/pokemon/bayleef/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/bayleef_palette.pal b/graphics/pokemon/bayleef/normal.pal
index 9fce32009..9fce32009 100644
--- a/graphics/pokemon/palettes/bayleef_palette.pal
+++ b/graphics/pokemon/bayleef/normal.pal
diff --git a/graphics/pokemon/palettes/bayleef_shiny_palette.pal b/graphics/pokemon/bayleef/shiny.pal
index 573c02e75..573c02e75 100644
--- a/graphics/pokemon/palettes/bayleef_shiny_palette.pal
+++ b/graphics/pokemon/bayleef/shiny.pal
diff --git a/graphics/pokemon/back_pics/beautifly_back_pic.png b/graphics/pokemon/beautifly/back.png
index 1eca6edc9..1eca6edc9 100644
--- a/graphics/pokemon/back_pics/beautifly_back_pic.png
+++ b/graphics/pokemon/beautifly/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/beautifly_footprint.png b/graphics/pokemon/beautifly/footprint.png
index 49175cb02..49175cb02 100644
--- a/graphics/pokemon/footprints/beautifly_footprint.png
+++ b/graphics/pokemon/beautifly/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/beautifly_still_front_pic.png b/graphics/pokemon/beautifly/front.png
index 89020c63a..89020c63a 100644
--- a/graphics/pokemon/front_pics/beautifly_still_front_pic.png
+++ b/graphics/pokemon/beautifly/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/beautifly_icon.png b/graphics/pokemon/beautifly/icon.png
index 346c5c906..346c5c906 100644
--- a/graphics/pokemon/icons/beautifly_icon.png
+++ b/graphics/pokemon/beautifly/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/beautifly_palette.pal b/graphics/pokemon/beautifly/normal.pal
index 65a02145f..65a02145f 100644
--- a/graphics/pokemon/palettes/beautifly_palette.pal
+++ b/graphics/pokemon/beautifly/normal.pal
diff --git a/graphics/pokemon/palettes/beautifly_shiny_palette.pal b/graphics/pokemon/beautifly/shiny.pal
index 9f0418187..9f0418187 100644
--- a/graphics/pokemon/palettes/beautifly_shiny_palette.pal
+++ b/graphics/pokemon/beautifly/shiny.pal
diff --git a/graphics/pokemon/back_pics/beedrill_back_pic.png b/graphics/pokemon/beedrill/back.png
index 166c399e5..166c399e5 100644
--- a/graphics/pokemon/back_pics/beedrill_back_pic.png
+++ b/graphics/pokemon/beedrill/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/beedrill_footprint.png b/graphics/pokemon/beedrill/footprint.png
index 5c3f21090..5c3f21090 100644
--- a/graphics/pokemon/footprints/beedrill_footprint.png
+++ b/graphics/pokemon/beedrill/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/beedrill_still_front_pic.png b/graphics/pokemon/beedrill/front.png
index adb2894c6..adb2894c6 100644
--- a/graphics/pokemon/front_pics/beedrill_still_front_pic.png
+++ b/graphics/pokemon/beedrill/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/beedrill_icon.png b/graphics/pokemon/beedrill/icon.png
index d5e6471ab..d5e6471ab 100644
--- a/graphics/pokemon/icons/beedrill_icon.png
+++ b/graphics/pokemon/beedrill/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/beedrill_palette.pal b/graphics/pokemon/beedrill/normal.pal
index 52fe8ac7a..52fe8ac7a 100644
--- a/graphics/pokemon/palettes/beedrill_palette.pal
+++ b/graphics/pokemon/beedrill/normal.pal
diff --git a/graphics/pokemon/palettes/beedrill_shiny_palette.pal b/graphics/pokemon/beedrill/shiny.pal
index f35f264de..f35f264de 100644
--- a/graphics/pokemon/palettes/beedrill_shiny_palette.pal
+++ b/graphics/pokemon/beedrill/shiny.pal
diff --git a/graphics/pokemon/back_pics/beldum_back_pic.png b/graphics/pokemon/beldum/back.png
index 7a2cab465..7a2cab465 100644
--- a/graphics/pokemon/back_pics/beldum_back_pic.png
+++ b/graphics/pokemon/beldum/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/beldum_footprint.png b/graphics/pokemon/beldum/footprint.png
index 0554eedfe..0554eedfe 100644
--- a/graphics/pokemon/footprints/beldum_footprint.png
+++ b/graphics/pokemon/beldum/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/beldum_still_front_pic.png b/graphics/pokemon/beldum/front.png
index 1c2a04e68..1c2a04e68 100644
--- a/graphics/pokemon/front_pics/beldum_still_front_pic.png
+++ b/graphics/pokemon/beldum/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/beldum_icon.png b/graphics/pokemon/beldum/icon.png
index 346a0469d..346a0469d 100644
--- a/graphics/pokemon/icons/beldum_icon.png
+++ b/graphics/pokemon/beldum/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/beldum_palette.pal b/graphics/pokemon/beldum/normal.pal
index 41b48bc08..41b48bc08 100644
--- a/graphics/pokemon/palettes/beldum_palette.pal
+++ b/graphics/pokemon/beldum/normal.pal
diff --git a/graphics/pokemon/palettes/beldum_shiny_palette.pal b/graphics/pokemon/beldum/shiny.pal
index 8fc3bc4be..8fc3bc4be 100644
--- a/graphics/pokemon/palettes/beldum_shiny_palette.pal
+++ b/graphics/pokemon/beldum/shiny.pal
diff --git a/graphics/pokemon/back_pics/bellossom_back_pic.png b/graphics/pokemon/bellossom/back.png
index 2bd8b176e..2bd8b176e 100644
--- a/graphics/pokemon/back_pics/bellossom_back_pic.png
+++ b/graphics/pokemon/bellossom/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/bellossom_footprint.png b/graphics/pokemon/bellossom/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/bellossom_footprint.png
+++ b/graphics/pokemon/bellossom/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/bellossom_still_front_pic.png b/graphics/pokemon/bellossom/front.png
index 11ec4a08c..11ec4a08c 100644
--- a/graphics/pokemon/front_pics/bellossom_still_front_pic.png
+++ b/graphics/pokemon/bellossom/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/bellossom_icon.png b/graphics/pokemon/bellossom/icon.png
index 443d7a98c..443d7a98c 100644
--- a/graphics/pokemon/icons/bellossom_icon.png
+++ b/graphics/pokemon/bellossom/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/bellossom_palette.pal b/graphics/pokemon/bellossom/normal.pal
index 7b0591a62..7b0591a62 100644
--- a/graphics/pokemon/palettes/bellossom_palette.pal
+++ b/graphics/pokemon/bellossom/normal.pal
diff --git a/graphics/pokemon/palettes/bellossom_shiny_palette.pal b/graphics/pokemon/bellossom/shiny.pal
index 1f10af6fb..1f10af6fb 100644
--- a/graphics/pokemon/palettes/bellossom_shiny_palette.pal
+++ b/graphics/pokemon/bellossom/shiny.pal
diff --git a/graphics/pokemon/back_pics/bellsprout_back_pic.png b/graphics/pokemon/bellsprout/back.png
index e2a336696..e2a336696 100644
--- a/graphics/pokemon/back_pics/bellsprout_back_pic.png
+++ b/graphics/pokemon/bellsprout/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/bellsprout_footprint.png b/graphics/pokemon/bellsprout/footprint.png
index 8fcf4f4f4..8fcf4f4f4 100644
--- a/graphics/pokemon/footprints/bellsprout_footprint.png
+++ b/graphics/pokemon/bellsprout/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/bellsprout_still_front_pic.png b/graphics/pokemon/bellsprout/front.png
index dba4f81bc..dba4f81bc 100644
--- a/graphics/pokemon/front_pics/bellsprout_still_front_pic.png
+++ b/graphics/pokemon/bellsprout/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/bellsprout_icon.png b/graphics/pokemon/bellsprout/icon.png
index f67c94eec..f67c94eec 100644
--- a/graphics/pokemon/icons/bellsprout_icon.png
+++ b/graphics/pokemon/bellsprout/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/bellsprout_palette.pal b/graphics/pokemon/bellsprout/normal.pal
index 8a91d8f8e..8a91d8f8e 100644
--- a/graphics/pokemon/palettes/bellsprout_palette.pal
+++ b/graphics/pokemon/bellsprout/normal.pal
diff --git a/graphics/pokemon/palettes/bellsprout_shiny_palette.pal b/graphics/pokemon/bellsprout/shiny.pal
index 6a813078f..6a813078f 100644
--- a/graphics/pokemon/palettes/bellsprout_shiny_palette.pal
+++ b/graphics/pokemon/bellsprout/shiny.pal
diff --git a/graphics/pokemon/back_pics/blastoise_back_pic.png b/graphics/pokemon/blastoise/back.png
index f380e1515..f380e1515 100644
--- a/graphics/pokemon/back_pics/blastoise_back_pic.png
+++ b/graphics/pokemon/blastoise/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/blastoise_footprint.png b/graphics/pokemon/blastoise/footprint.png
index b881f9270..b881f9270 100644
--- a/graphics/pokemon/footprints/blastoise_footprint.png
+++ b/graphics/pokemon/blastoise/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/blastoise_still_front_pic.png b/graphics/pokemon/blastoise/front.png
index 1166b98ea..1166b98ea 100644
--- a/graphics/pokemon/front_pics/blastoise_still_front_pic.png
+++ b/graphics/pokemon/blastoise/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/blastoise_icon.png b/graphics/pokemon/blastoise/icon.png
index 253d4f8da..253d4f8da 100644
--- a/graphics/pokemon/icons/blastoise_icon.png
+++ b/graphics/pokemon/blastoise/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/blastoise_palette.pal b/graphics/pokemon/blastoise/normal.pal
index 694eb3675..694eb3675 100644
--- a/graphics/pokemon/palettes/blastoise_palette.pal
+++ b/graphics/pokemon/blastoise/normal.pal
diff --git a/graphics/pokemon/palettes/blastoise_shiny_palette.pal b/graphics/pokemon/blastoise/shiny.pal
index d96b5ffee..d96b5ffee 100644
--- a/graphics/pokemon/palettes/blastoise_shiny_palette.pal
+++ b/graphics/pokemon/blastoise/shiny.pal
diff --git a/graphics/pokemon/back_pics/blaziken_back_pic.png b/graphics/pokemon/blaziken/back.png
index cf89544c1..cf89544c1 100644
--- a/graphics/pokemon/back_pics/blaziken_back_pic.png
+++ b/graphics/pokemon/blaziken/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/blaziken_footprint.png b/graphics/pokemon/blaziken/footprint.png
index cf18a353a..cf18a353a 100644
--- a/graphics/pokemon/footprints/blaziken_footprint.png
+++ b/graphics/pokemon/blaziken/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/blaziken_still_front_pic.png b/graphics/pokemon/blaziken/front.png
index 4b22ec1de..4b22ec1de 100644
--- a/graphics/pokemon/front_pics/blaziken_still_front_pic.png
+++ b/graphics/pokemon/blaziken/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/blaziken_icon.png b/graphics/pokemon/blaziken/icon.png
index 6197cce23..6197cce23 100644
--- a/graphics/pokemon/icons/blaziken_icon.png
+++ b/graphics/pokemon/blaziken/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/blaziken_palette.pal b/graphics/pokemon/blaziken/normal.pal
index 64aaed794..64aaed794 100644
--- a/graphics/pokemon/palettes/blaziken_palette.pal
+++ b/graphics/pokemon/blaziken/normal.pal
diff --git a/graphics/pokemon/palettes/blaziken_shiny_palette.pal b/graphics/pokemon/blaziken/shiny.pal
index fea29cce8..fea29cce8 100644
--- a/graphics/pokemon/palettes/blaziken_shiny_palette.pal
+++ b/graphics/pokemon/blaziken/shiny.pal
diff --git a/graphics/pokemon/back_pics/blissey_back_pic.png b/graphics/pokemon/blissey/back.png
index 9823bd994..9823bd994 100644
--- a/graphics/pokemon/back_pics/blissey_back_pic.png
+++ b/graphics/pokemon/blissey/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/blissey_footprint.png b/graphics/pokemon/blissey/footprint.png
index 3da3dbf93..3da3dbf93 100644
--- a/graphics/pokemon/footprints/blissey_footprint.png
+++ b/graphics/pokemon/blissey/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/blissey_still_front_pic.png b/graphics/pokemon/blissey/front.png
index 3173f820c..3173f820c 100644
--- a/graphics/pokemon/front_pics/blissey_still_front_pic.png
+++ b/graphics/pokemon/blissey/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/blissey_icon.png b/graphics/pokemon/blissey/icon.png
index 44af9704c..44af9704c 100644
--- a/graphics/pokemon/icons/blissey_icon.png
+++ b/graphics/pokemon/blissey/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/blissey_palette.pal b/graphics/pokemon/blissey/normal.pal
index edeacbdaa..edeacbdaa 100644
--- a/graphics/pokemon/palettes/blissey_palette.pal
+++ b/graphics/pokemon/blissey/normal.pal
diff --git a/graphics/pokemon/palettes/blissey_shiny_palette.pal b/graphics/pokemon/blissey/shiny.pal
index d6d75db9e..d6d75db9e 100644
--- a/graphics/pokemon/palettes/blissey_shiny_palette.pal
+++ b/graphics/pokemon/blissey/shiny.pal
diff --git a/graphics/pokemon/back_pics/breloom_back_pic.png b/graphics/pokemon/breloom/back.png
index 85df08040..85df08040 100644
--- a/graphics/pokemon/back_pics/breloom_back_pic.png
+++ b/graphics/pokemon/breloom/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/breloom_footprint.png b/graphics/pokemon/breloom/footprint.png
index 98d920669..98d920669 100644
--- a/graphics/pokemon/footprints/breloom_footprint.png
+++ b/graphics/pokemon/breloom/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/breloom_still_front_pic.png b/graphics/pokemon/breloom/front.png
index 932fdbad8..932fdbad8 100644
--- a/graphics/pokemon/front_pics/breloom_still_front_pic.png
+++ b/graphics/pokemon/breloom/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/breloom_icon.png b/graphics/pokemon/breloom/icon.png
index 314873a27..314873a27 100644
--- a/graphics/pokemon/icons/breloom_icon.png
+++ b/graphics/pokemon/breloom/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/breloom_palette.pal b/graphics/pokemon/breloom/normal.pal
index f01f5d947..f01f5d947 100644
--- a/graphics/pokemon/palettes/breloom_palette.pal
+++ b/graphics/pokemon/breloom/normal.pal
diff --git a/graphics/pokemon/palettes/breloom_shiny_palette.pal b/graphics/pokemon/breloom/shiny.pal
index ad89e65f2..ad89e65f2 100644
--- a/graphics/pokemon/palettes/breloom_shiny_palette.pal
+++ b/graphics/pokemon/breloom/shiny.pal
diff --git a/graphics/pokemon/back_pics/bulbasaur_back_pic.png b/graphics/pokemon/bulbasaur/back.png
index 993352c32..993352c32 100644
--- a/graphics/pokemon/back_pics/bulbasaur_back_pic.png
+++ b/graphics/pokemon/bulbasaur/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/bulbasaur_footprint.png b/graphics/pokemon/bulbasaur/footprint.png
index 8e9ab9c6b..8e9ab9c6b 100644
--- a/graphics/pokemon/footprints/bulbasaur_footprint.png
+++ b/graphics/pokemon/bulbasaur/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/bulbasaur_still_front_pic.png b/graphics/pokemon/bulbasaur/front.png
index e23eaeeb6..e23eaeeb6 100644
--- a/graphics/pokemon/front_pics/bulbasaur_still_front_pic.png
+++ b/graphics/pokemon/bulbasaur/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/bulbasaur_icon.png b/graphics/pokemon/bulbasaur/icon.png
index 8d6fe1725..8d6fe1725 100644
--- a/graphics/pokemon/icons/bulbasaur_icon.png
+++ b/graphics/pokemon/bulbasaur/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/bulbasaur_palette.pal b/graphics/pokemon/bulbasaur/normal.pal
index cc333bed3..cc333bed3 100644
--- a/graphics/pokemon/palettes/bulbasaur_palette.pal
+++ b/graphics/pokemon/bulbasaur/normal.pal
diff --git a/graphics/pokemon/palettes/bulbasaur_shiny_palette.pal b/graphics/pokemon/bulbasaur/shiny.pal
index 86a535831..86a535831 100644
--- a/graphics/pokemon/palettes/bulbasaur_shiny_palette.pal
+++ b/graphics/pokemon/bulbasaur/shiny.pal
diff --git a/graphics/pokemon/back_pics/butterfree_back_pic.png b/graphics/pokemon/butterfree/back.png
index 7dab08c7a..7dab08c7a 100644
--- a/graphics/pokemon/back_pics/butterfree_back_pic.png
+++ b/graphics/pokemon/butterfree/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/butterfree_footprint.png b/graphics/pokemon/butterfree/footprint.png
index b2740e9cc..b2740e9cc 100644
--- a/graphics/pokemon/footprints/butterfree_footprint.png
+++ b/graphics/pokemon/butterfree/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/butterfree_still_front_pic.png b/graphics/pokemon/butterfree/front.png
index b7746d8df..b7746d8df 100644
--- a/graphics/pokemon/front_pics/butterfree_still_front_pic.png
+++ b/graphics/pokemon/butterfree/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/butterfree_icon.png b/graphics/pokemon/butterfree/icon.png
index 11c4a379f..11c4a379f 100644
--- a/graphics/pokemon/icons/butterfree_icon.png
+++ b/graphics/pokemon/butterfree/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/butterfree_palette.pal b/graphics/pokemon/butterfree/normal.pal
index c0eb72213..c0eb72213 100644
--- a/graphics/pokemon/palettes/butterfree_palette.pal
+++ b/graphics/pokemon/butterfree/normal.pal
diff --git a/graphics/pokemon/palettes/butterfree_shiny_palette.pal b/graphics/pokemon/butterfree/shiny.pal
index a0cb8fa39..a0cb8fa39 100644
--- a/graphics/pokemon/palettes/butterfree_shiny_palette.pal
+++ b/graphics/pokemon/butterfree/shiny.pal
diff --git a/graphics/pokemon/back_pics/cacnea_back_pic.png b/graphics/pokemon/cacnea/back.png
index dbc804775..dbc804775 100644
--- a/graphics/pokemon/back_pics/cacnea_back_pic.png
+++ b/graphics/pokemon/cacnea/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/cacnea_footprint.png b/graphics/pokemon/cacnea/footprint.png
index 00b6a8a7e..00b6a8a7e 100644
--- a/graphics/pokemon/footprints/cacnea_footprint.png
+++ b/graphics/pokemon/cacnea/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/cacnea_still_front_pic.png b/graphics/pokemon/cacnea/front.png
index c57dce95f..c57dce95f 100644
--- a/graphics/pokemon/front_pics/cacnea_still_front_pic.png
+++ b/graphics/pokemon/cacnea/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/cacnea_icon.png b/graphics/pokemon/cacnea/icon.png
index 367f07668..367f07668 100644
--- a/graphics/pokemon/icons/cacnea_icon.png
+++ b/graphics/pokemon/cacnea/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/cacnea_palette.pal b/graphics/pokemon/cacnea/normal.pal
index 2bfc05a1e..2bfc05a1e 100644
--- a/graphics/pokemon/palettes/cacnea_palette.pal
+++ b/graphics/pokemon/cacnea/normal.pal
diff --git a/graphics/pokemon/palettes/cacnea_shiny_palette.pal b/graphics/pokemon/cacnea/shiny.pal
index 67e730f61..67e730f61 100644
--- a/graphics/pokemon/palettes/cacnea_shiny_palette.pal
+++ b/graphics/pokemon/cacnea/shiny.pal
diff --git a/graphics/pokemon/back_pics/cacturne_back_pic.png b/graphics/pokemon/cacturne/back.png
index 9a67227d0..9a67227d0 100644
--- a/graphics/pokemon/back_pics/cacturne_back_pic.png
+++ b/graphics/pokemon/cacturne/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/cacturne_footprint.png b/graphics/pokemon/cacturne/footprint.png
index 5441f92d6..5441f92d6 100644
--- a/graphics/pokemon/footprints/cacturne_footprint.png
+++ b/graphics/pokemon/cacturne/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/cacturne_still_front_pic.png b/graphics/pokemon/cacturne/front.png
index 80434c3c8..80434c3c8 100644
--- a/graphics/pokemon/front_pics/cacturne_still_front_pic.png
+++ b/graphics/pokemon/cacturne/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/cacturne_icon.png b/graphics/pokemon/cacturne/icon.png
index 948bea2d8..948bea2d8 100644
--- a/graphics/pokemon/icons/cacturne_icon.png
+++ b/graphics/pokemon/cacturne/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/cacturne_palette.pal b/graphics/pokemon/cacturne/normal.pal
index cd8281641..cd8281641 100644
--- a/graphics/pokemon/palettes/cacturne_palette.pal
+++ b/graphics/pokemon/cacturne/normal.pal
diff --git a/graphics/pokemon/palettes/cacturne_shiny_palette.pal b/graphics/pokemon/cacturne/shiny.pal
index 11914015b..11914015b 100644
--- a/graphics/pokemon/palettes/cacturne_shiny_palette.pal
+++ b/graphics/pokemon/cacturne/shiny.pal
diff --git a/graphics/pokemon/back_pics/camerupt_back_pic.png b/graphics/pokemon/camerupt/back.png
index 3b1744755..3b1744755 100644
--- a/graphics/pokemon/back_pics/camerupt_back_pic.png
+++ b/graphics/pokemon/camerupt/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/camerupt_footprint.png b/graphics/pokemon/camerupt/footprint.png
index 40708b8a1..40708b8a1 100644
--- a/graphics/pokemon/footprints/camerupt_footprint.png
+++ b/graphics/pokemon/camerupt/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/camerupt_still_front_pic.png b/graphics/pokemon/camerupt/front.png
index ffd9ed0f2..ffd9ed0f2 100644
--- a/graphics/pokemon/front_pics/camerupt_still_front_pic.png
+++ b/graphics/pokemon/camerupt/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/camerupt_icon.png b/graphics/pokemon/camerupt/icon.png
index 372fc7ce0..372fc7ce0 100644
--- a/graphics/pokemon/icons/camerupt_icon.png
+++ b/graphics/pokemon/camerupt/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/camerupt_palette.pal b/graphics/pokemon/camerupt/normal.pal
index bd1096ff6..bd1096ff6 100644
--- a/graphics/pokemon/palettes/camerupt_palette.pal
+++ b/graphics/pokemon/camerupt/normal.pal
diff --git a/graphics/pokemon/palettes/camerupt_shiny_palette.pal b/graphics/pokemon/camerupt/shiny.pal
index c402d68dd..c402d68dd 100644
--- a/graphics/pokemon/palettes/camerupt_shiny_palette.pal
+++ b/graphics/pokemon/camerupt/shiny.pal
diff --git a/graphics/pokemon/back_pics/carvanha_back_pic.png b/graphics/pokemon/carvanha/back.png
index cef8c25dd..cef8c25dd 100644
--- a/graphics/pokemon/back_pics/carvanha_back_pic.png
+++ b/graphics/pokemon/carvanha/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/carvanha_footprint.png b/graphics/pokemon/carvanha/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/carvanha_footprint.png
+++ b/graphics/pokemon/carvanha/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/carvanha_still_front_pic.png b/graphics/pokemon/carvanha/front.png
index f67f56cc7..f67f56cc7 100644
--- a/graphics/pokemon/front_pics/carvanha_still_front_pic.png
+++ b/graphics/pokemon/carvanha/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/carvanha_icon.png b/graphics/pokemon/carvanha/icon.png
index 6b0d48a8a..6b0d48a8a 100644
--- a/graphics/pokemon/icons/carvanha_icon.png
+++ b/graphics/pokemon/carvanha/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/carvanha_palette.pal b/graphics/pokemon/carvanha/normal.pal
index fbe24d28b..fbe24d28b 100644
--- a/graphics/pokemon/palettes/carvanha_palette.pal
+++ b/graphics/pokemon/carvanha/normal.pal
diff --git a/graphics/pokemon/palettes/carvanha_shiny_palette.pal b/graphics/pokemon/carvanha/shiny.pal
index 0e0cb9268..0e0cb9268 100644
--- a/graphics/pokemon/palettes/carvanha_shiny_palette.pal
+++ b/graphics/pokemon/carvanha/shiny.pal
diff --git a/graphics/pokemon/back_pics/cascoon_back_pic.png b/graphics/pokemon/cascoon/back.png
index fb6bc2955..fb6bc2955 100644
--- a/graphics/pokemon/back_pics/cascoon_back_pic.png
+++ b/graphics/pokemon/cascoon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/cascoon_footprint.png b/graphics/pokemon/cascoon/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/cascoon_footprint.png
+++ b/graphics/pokemon/cascoon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/cascoon_still_front_pic.png b/graphics/pokemon/cascoon/front.png
index 474610aac..474610aac 100644
--- a/graphics/pokemon/front_pics/cascoon_still_front_pic.png
+++ b/graphics/pokemon/cascoon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/cascoon_icon.png b/graphics/pokemon/cascoon/icon.png
index 4d49506c0..4d49506c0 100644
--- a/graphics/pokemon/icons/cascoon_icon.png
+++ b/graphics/pokemon/cascoon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/cascoon_palette.pal b/graphics/pokemon/cascoon/normal.pal
index 05dceb931..05dceb931 100644
--- a/graphics/pokemon/palettes/cascoon_palette.pal
+++ b/graphics/pokemon/cascoon/normal.pal
diff --git a/graphics/pokemon/palettes/cascoon_shiny_palette.pal b/graphics/pokemon/cascoon/shiny.pal
index e8b230ed1..e8b230ed1 100644
--- a/graphics/pokemon/palettes/cascoon_shiny_palette.pal
+++ b/graphics/pokemon/cascoon/shiny.pal
diff --git a/graphics/pokemon/footprints/castform_footprint.png b/graphics/pokemon/castform/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/castform_footprint.png
+++ b/graphics/pokemon/castform/footprint.png
Binary files differ
diff --git a/graphics/pokemon/icons/castform_icon.png b/graphics/pokemon/castform/icon.png
index 56c62ad07..56c62ad07 100644
--- a/graphics/pokemon/icons/castform_icon.png
+++ b/graphics/pokemon/castform/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/castform_normal_form_back_pic.png b/graphics/pokemon/castform/normal/back.png
index 6348a35e8..6348a35e8 100644
--- a/graphics/pokemon/back_pics/castform_normal_form_back_pic.png
+++ b/graphics/pokemon/castform/normal/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/castform_normal_form_still_front_pic.png b/graphics/pokemon/castform/normal/front.png
index 39bfaf426..39bfaf426 100644
--- a/graphics/pokemon/front_pics/castform_normal_form_still_front_pic.png
+++ b/graphics/pokemon/castform/normal/front.png
Binary files differ
diff --git a/graphics/pokemon/palettes/castform_normal_form_palette.pal b/graphics/pokemon/castform/normal/normal.pal
index 3fe2b7692..3fe2b7692 100644
--- a/graphics/pokemon/palettes/castform_normal_form_palette.pal
+++ b/graphics/pokemon/castform/normal/normal.pal
diff --git a/graphics/pokemon/palettes/castform_normal_form_shiny_palette.pal b/graphics/pokemon/castform/normal/shiny.pal
index 2fa401dd6..2fa401dd6 100644
--- a/graphics/pokemon/palettes/castform_normal_form_shiny_palette.pal
+++ b/graphics/pokemon/castform/normal/shiny.pal
diff --git a/graphics/pokemon/back_pics/castform_rainy_form_back_pic.png b/graphics/pokemon/castform/rainy/back.png
index 70bad9130..70bad9130 100644
--- a/graphics/pokemon/back_pics/castform_rainy_form_back_pic.png
+++ b/graphics/pokemon/castform/rainy/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/castform_rainy_form_still_front_pic.png b/graphics/pokemon/castform/rainy/front.png
index 155374035..155374035 100644
--- a/graphics/pokemon/front_pics/castform_rainy_form_still_front_pic.png
+++ b/graphics/pokemon/castform/rainy/front.png
Binary files differ
diff --git a/graphics/pokemon/palettes/castform_rainy_form_palette.pal b/graphics/pokemon/castform/rainy/normal.pal
index 914cdac62..914cdac62 100644
--- a/graphics/pokemon/palettes/castform_rainy_form_palette.pal
+++ b/graphics/pokemon/castform/rainy/normal.pal
diff --git a/graphics/pokemon/palettes/castform_rainy_form_shiny_palette.pal b/graphics/pokemon/castform/rainy/shiny.pal
index 914cdac62..914cdac62 100644
--- a/graphics/pokemon/palettes/castform_rainy_form_shiny_palette.pal
+++ b/graphics/pokemon/castform/rainy/shiny.pal
diff --git a/graphics/pokemon/back_pics/castform_snowy_form_back_pic.png b/graphics/pokemon/castform/snowy/back.png
index b4f27cbe6..b4f27cbe6 100644
--- a/graphics/pokemon/back_pics/castform_snowy_form_back_pic.png
+++ b/graphics/pokemon/castform/snowy/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/castform_snowy_form_still_front_pic.png b/graphics/pokemon/castform/snowy/front.png
index a75bf647e..a75bf647e 100644
--- a/graphics/pokemon/front_pics/castform_snowy_form_still_front_pic.png
+++ b/graphics/pokemon/castform/snowy/front.png
Binary files differ
diff --git a/graphics/pokemon/palettes/castform_snowy_form_palette.pal b/graphics/pokemon/castform/snowy/normal.pal
index d1c64ac75..d1c64ac75 100644
--- a/graphics/pokemon/palettes/castform_snowy_form_palette.pal
+++ b/graphics/pokemon/castform/snowy/normal.pal
diff --git a/graphics/pokemon/palettes/castform_snowy_form_shiny_palette.pal b/graphics/pokemon/castform/snowy/shiny.pal
index d1c64ac75..d1c64ac75 100644
--- a/graphics/pokemon/palettes/castform_snowy_form_shiny_palette.pal
+++ b/graphics/pokemon/castform/snowy/shiny.pal
diff --git a/graphics/pokemon/back_pics/castform_sunny_form_back_pic.png b/graphics/pokemon/castform/sunny/back.png
index 83b27298a..83b27298a 100644
--- a/graphics/pokemon/back_pics/castform_sunny_form_back_pic.png
+++ b/graphics/pokemon/castform/sunny/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/castform_sunny_form_still_front_pic.png b/graphics/pokemon/castform/sunny/front.png
index 7e14f9892..7e14f9892 100644
--- a/graphics/pokemon/front_pics/castform_sunny_form_still_front_pic.png
+++ b/graphics/pokemon/castform/sunny/front.png
Binary files differ
diff --git a/graphics/pokemon/palettes/castform_sunny_form_palette.pal b/graphics/pokemon/castform/sunny/normal.pal
index af0cfbb93..af0cfbb93 100644
--- a/graphics/pokemon/palettes/castform_sunny_form_palette.pal
+++ b/graphics/pokemon/castform/sunny/normal.pal
diff --git a/graphics/pokemon/palettes/castform_sunny_form_shiny_palette.pal b/graphics/pokemon/castform/sunny/shiny.pal
index af0cfbb93..af0cfbb93 100644
--- a/graphics/pokemon/palettes/castform_sunny_form_shiny_palette.pal
+++ b/graphics/pokemon/castform/sunny/shiny.pal
diff --git a/graphics/pokemon/back_pics/caterpie_back_pic.png b/graphics/pokemon/caterpie/back.png
index 801748d1c..801748d1c 100644
--- a/graphics/pokemon/back_pics/caterpie_back_pic.png
+++ b/graphics/pokemon/caterpie/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/caterpie_footprint.png b/graphics/pokemon/caterpie/footprint.png
index c1c0058e7..c1c0058e7 100644
--- a/graphics/pokemon/footprints/caterpie_footprint.png
+++ b/graphics/pokemon/caterpie/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/caterpie_still_front_pic.png b/graphics/pokemon/caterpie/front.png
index b67875094..b67875094 100644
--- a/graphics/pokemon/front_pics/caterpie_still_front_pic.png
+++ b/graphics/pokemon/caterpie/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/caterpie_icon.png b/graphics/pokemon/caterpie/icon.png
index be20669c3..be20669c3 100644
--- a/graphics/pokemon/icons/caterpie_icon.png
+++ b/graphics/pokemon/caterpie/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/caterpie_palette.pal b/graphics/pokemon/caterpie/normal.pal
index f01008218..f01008218 100644
--- a/graphics/pokemon/palettes/caterpie_palette.pal
+++ b/graphics/pokemon/caterpie/normal.pal
diff --git a/graphics/pokemon/palettes/caterpie_shiny_palette.pal b/graphics/pokemon/caterpie/shiny.pal
index 604283c2c..604283c2c 100644
--- a/graphics/pokemon/palettes/caterpie_shiny_palette.pal
+++ b/graphics/pokemon/caterpie/shiny.pal
diff --git a/graphics/pokemon/back_pics/celebi_back_pic.png b/graphics/pokemon/celebi/back.png
index c43e455dc..c43e455dc 100644
--- a/graphics/pokemon/back_pics/celebi_back_pic.png
+++ b/graphics/pokemon/celebi/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/celebi_footprint.png b/graphics/pokemon/celebi/footprint.png
index 11aa4301c..11aa4301c 100644
--- a/graphics/pokemon/footprints/celebi_footprint.png
+++ b/graphics/pokemon/celebi/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/celebi_still_front_pic.png b/graphics/pokemon/celebi/front.png
index 1717f2561..1717f2561 100644
--- a/graphics/pokemon/front_pics/celebi_still_front_pic.png
+++ b/graphics/pokemon/celebi/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/celebi_icon.png b/graphics/pokemon/celebi/icon.png
index 245d580f7..245d580f7 100644
--- a/graphics/pokemon/icons/celebi_icon.png
+++ b/graphics/pokemon/celebi/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/celebi_palette.pal b/graphics/pokemon/celebi/normal.pal
index aed1b3ec2..aed1b3ec2 100644
--- a/graphics/pokemon/palettes/celebi_palette.pal
+++ b/graphics/pokemon/celebi/normal.pal
diff --git a/graphics/pokemon/palettes/celebi_shiny_palette.pal b/graphics/pokemon/celebi/shiny.pal
index b90d6ed43..b90d6ed43 100644
--- a/graphics/pokemon/palettes/celebi_shiny_palette.pal
+++ b/graphics/pokemon/celebi/shiny.pal
diff --git a/graphics/pokemon/back_pics/chansey_back_pic.png b/graphics/pokemon/chansey/back.png
index bea131b45..bea131b45 100644
--- a/graphics/pokemon/back_pics/chansey_back_pic.png
+++ b/graphics/pokemon/chansey/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/chansey_footprint.png b/graphics/pokemon/chansey/footprint.png
index 17893b9fb..17893b9fb 100644
--- a/graphics/pokemon/footprints/chansey_footprint.png
+++ b/graphics/pokemon/chansey/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/chansey_still_front_pic.png b/graphics/pokemon/chansey/front.png
index 0f9db97dc..0f9db97dc 100644
--- a/graphics/pokemon/front_pics/chansey_still_front_pic.png
+++ b/graphics/pokemon/chansey/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/chansey_icon.png b/graphics/pokemon/chansey/icon.png
index 4083185b0..4083185b0 100644
--- a/graphics/pokemon/icons/chansey_icon.png
+++ b/graphics/pokemon/chansey/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/chansey_palette.pal b/graphics/pokemon/chansey/normal.pal
index 3a740dba0..3a740dba0 100644
--- a/graphics/pokemon/palettes/chansey_palette.pal
+++ b/graphics/pokemon/chansey/normal.pal
diff --git a/graphics/pokemon/palettes/chansey_shiny_palette.pal b/graphics/pokemon/chansey/shiny.pal
index e8107f8d5..e8107f8d5 100644
--- a/graphics/pokemon/palettes/chansey_shiny_palette.pal
+++ b/graphics/pokemon/chansey/shiny.pal
diff --git a/graphics/pokemon/back_pics/charizard_back_pic.png b/graphics/pokemon/charizard/back.png
index 183359501..183359501 100644
--- a/graphics/pokemon/back_pics/charizard_back_pic.png
+++ b/graphics/pokemon/charizard/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/charizard_footprint.png b/graphics/pokemon/charizard/footprint.png
index e69f38392..e69f38392 100644
--- a/graphics/pokemon/footprints/charizard_footprint.png
+++ b/graphics/pokemon/charizard/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/charizard_still_front_pic.png b/graphics/pokemon/charizard/front.png
index 68653c55b..68653c55b 100644
--- a/graphics/pokemon/front_pics/charizard_still_front_pic.png
+++ b/graphics/pokemon/charizard/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/charizard_icon.png b/graphics/pokemon/charizard/icon.png
index 9c8140887..9c8140887 100644
--- a/graphics/pokemon/icons/charizard_icon.png
+++ b/graphics/pokemon/charizard/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/charizard_palette.pal b/graphics/pokemon/charizard/normal.pal
index 3823f2f28..3823f2f28 100644
--- a/graphics/pokemon/palettes/charizard_palette.pal
+++ b/graphics/pokemon/charizard/normal.pal
diff --git a/graphics/pokemon/palettes/charizard_shiny_palette.pal b/graphics/pokemon/charizard/shiny.pal
index 6a7a91f87..6a7a91f87 100644
--- a/graphics/pokemon/palettes/charizard_shiny_palette.pal
+++ b/graphics/pokemon/charizard/shiny.pal
diff --git a/graphics/pokemon/back_pics/charmander_back_pic.png b/graphics/pokemon/charmander/back.png
index c37155339..c37155339 100644
--- a/graphics/pokemon/back_pics/charmander_back_pic.png
+++ b/graphics/pokemon/charmander/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/charmander_footprint.png b/graphics/pokemon/charmander/footprint.png
index 2f7723621..2f7723621 100644
--- a/graphics/pokemon/footprints/charmander_footprint.png
+++ b/graphics/pokemon/charmander/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/charmander_still_front_pic.png b/graphics/pokemon/charmander/front.png
index 7235c104f..7235c104f 100644
--- a/graphics/pokemon/front_pics/charmander_still_front_pic.png
+++ b/graphics/pokemon/charmander/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/charmander_icon.png b/graphics/pokemon/charmander/icon.png
index c3fa4fde4..c3fa4fde4 100644
--- a/graphics/pokemon/icons/charmander_icon.png
+++ b/graphics/pokemon/charmander/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/charmander_palette.pal b/graphics/pokemon/charmander/normal.pal
index 223adef4c..223adef4c 100644
--- a/graphics/pokemon/palettes/charmander_palette.pal
+++ b/graphics/pokemon/charmander/normal.pal
diff --git a/graphics/pokemon/palettes/charmander_shiny_palette.pal b/graphics/pokemon/charmander/shiny.pal
index aea29571f..aea29571f 100644
--- a/graphics/pokemon/palettes/charmander_shiny_palette.pal
+++ b/graphics/pokemon/charmander/shiny.pal
diff --git a/graphics/pokemon/back_pics/charmeleon_back_pic.png b/graphics/pokemon/charmeleon/back.png
index 84f2ee1e3..84f2ee1e3 100644
--- a/graphics/pokemon/back_pics/charmeleon_back_pic.png
+++ b/graphics/pokemon/charmeleon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/charmeleon_footprint.png b/graphics/pokemon/charmeleon/footprint.png
index 6ec15ee20..6ec15ee20 100644
--- a/graphics/pokemon/footprints/charmeleon_footprint.png
+++ b/graphics/pokemon/charmeleon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/charmeleon_still_front_pic.png b/graphics/pokemon/charmeleon/front.png
index 5cc6615a4..5cc6615a4 100644
--- a/graphics/pokemon/front_pics/charmeleon_still_front_pic.png
+++ b/graphics/pokemon/charmeleon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/charmeleon_icon.png b/graphics/pokemon/charmeleon/icon.png
index 0f1550d0c..0f1550d0c 100644
--- a/graphics/pokemon/icons/charmeleon_icon.png
+++ b/graphics/pokemon/charmeleon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/charmeleon_palette.pal b/graphics/pokemon/charmeleon/normal.pal
index f79c4cd97..f79c4cd97 100644
--- a/graphics/pokemon/palettes/charmeleon_palette.pal
+++ b/graphics/pokemon/charmeleon/normal.pal
diff --git a/graphics/pokemon/palettes/charmeleon_shiny_palette.pal b/graphics/pokemon/charmeleon/shiny.pal
index 6fa23cf00..6fa23cf00 100644
--- a/graphics/pokemon/palettes/charmeleon_shiny_palette.pal
+++ b/graphics/pokemon/charmeleon/shiny.pal
diff --git a/graphics/pokemon/back_pics/chikorita_back_pic.png b/graphics/pokemon/chikorita/back.png
index 18c3569bf..18c3569bf 100644
--- a/graphics/pokemon/back_pics/chikorita_back_pic.png
+++ b/graphics/pokemon/chikorita/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/chikorita_footprint.png b/graphics/pokemon/chikorita/footprint.png
index 3ac4abd9f..3ac4abd9f 100644
--- a/graphics/pokemon/footprints/chikorita_footprint.png
+++ b/graphics/pokemon/chikorita/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/chikorita_still_front_pic.png b/graphics/pokemon/chikorita/front.png
index 80f5dc9ab..80f5dc9ab 100644
--- a/graphics/pokemon/front_pics/chikorita_still_front_pic.png
+++ b/graphics/pokemon/chikorita/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/chikorita_icon.png b/graphics/pokemon/chikorita/icon.png
index f9bc40d0e..f9bc40d0e 100644
--- a/graphics/pokemon/icons/chikorita_icon.png
+++ b/graphics/pokemon/chikorita/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/chikorita_palette.pal b/graphics/pokemon/chikorita/normal.pal
index 9bca4c3eb..9bca4c3eb 100644
--- a/graphics/pokemon/palettes/chikorita_palette.pal
+++ b/graphics/pokemon/chikorita/normal.pal
diff --git a/graphics/pokemon/palettes/chikorita_shiny_palette.pal b/graphics/pokemon/chikorita/shiny.pal
index d7ecae6fb..d7ecae6fb 100644
--- a/graphics/pokemon/palettes/chikorita_shiny_palette.pal
+++ b/graphics/pokemon/chikorita/shiny.pal
diff --git a/graphics/pokemon/back_pics/chimecho_back_pic.png b/graphics/pokemon/chimecho/back.png
index 7a3fedacb..7a3fedacb 100644
--- a/graphics/pokemon/back_pics/chimecho_back_pic.png
+++ b/graphics/pokemon/chimecho/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/chimecho_footprint.png b/graphics/pokemon/chimecho/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/chimecho_footprint.png
+++ b/graphics/pokemon/chimecho/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/chimecho_still_front_pic.png b/graphics/pokemon/chimecho/front.png
index 534bec4d7..534bec4d7 100644
--- a/graphics/pokemon/front_pics/chimecho_still_front_pic.png
+++ b/graphics/pokemon/chimecho/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/chimecho_icon.png b/graphics/pokemon/chimecho/icon.png
index 11b2d93b2..11b2d93b2 100644
--- a/graphics/pokemon/icons/chimecho_icon.png
+++ b/graphics/pokemon/chimecho/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/chimecho_palette.pal b/graphics/pokemon/chimecho/normal.pal
index 9dd34b7c4..9dd34b7c4 100644
--- a/graphics/pokemon/palettes/chimecho_palette.pal
+++ b/graphics/pokemon/chimecho/normal.pal
diff --git a/graphics/pokemon/palettes/chimecho_shiny_palette.pal b/graphics/pokemon/chimecho/shiny.pal
index 44983802b..44983802b 100644
--- a/graphics/pokemon/palettes/chimecho_shiny_palette.pal
+++ b/graphics/pokemon/chimecho/shiny.pal
diff --git a/graphics/pokemon/back_pics/chinchou_back_pic.png b/graphics/pokemon/chinchou/back.png
index a3b11b2dc..a3b11b2dc 100644
--- a/graphics/pokemon/back_pics/chinchou_back_pic.png
+++ b/graphics/pokemon/chinchou/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/chinchou_footprint.png b/graphics/pokemon/chinchou/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/chinchou_footprint.png
+++ b/graphics/pokemon/chinchou/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/chinchou_still_front_pic.png b/graphics/pokemon/chinchou/front.png
index 7bb954382..7bb954382 100644
--- a/graphics/pokemon/front_pics/chinchou_still_front_pic.png
+++ b/graphics/pokemon/chinchou/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/chinchou_icon.png b/graphics/pokemon/chinchou/icon.png
index 1b585204b..1b585204b 100644
--- a/graphics/pokemon/icons/chinchou_icon.png
+++ b/graphics/pokemon/chinchou/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/chinchou_palette.pal b/graphics/pokemon/chinchou/normal.pal
index fc382ddbb..fc382ddbb 100644
--- a/graphics/pokemon/palettes/chinchou_palette.pal
+++ b/graphics/pokemon/chinchou/normal.pal
diff --git a/graphics/pokemon/palettes/chinchou_shiny_palette.pal b/graphics/pokemon/chinchou/shiny.pal
index babb78178..babb78178 100644
--- a/graphics/pokemon/palettes/chinchou_shiny_palette.pal
+++ b/graphics/pokemon/chinchou/shiny.pal
diff --git a/graphics/pokemon/back_pics/clamperl_back_pic.png b/graphics/pokemon/clamperl/back.png
index 5b1324473..5b1324473 100644
--- a/graphics/pokemon/back_pics/clamperl_back_pic.png
+++ b/graphics/pokemon/clamperl/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/clamperl_footprint.png b/graphics/pokemon/clamperl/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/clamperl_footprint.png
+++ b/graphics/pokemon/clamperl/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/clamperl_still_front_pic.png b/graphics/pokemon/clamperl/front.png
index 1cfe4d4f8..1cfe4d4f8 100644
--- a/graphics/pokemon/front_pics/clamperl_still_front_pic.png
+++ b/graphics/pokemon/clamperl/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/clamperl_icon.png b/graphics/pokemon/clamperl/icon.png
index fabcd9641..fabcd9641 100644
--- a/graphics/pokemon/icons/clamperl_icon.png
+++ b/graphics/pokemon/clamperl/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/clamperl_palette.pal b/graphics/pokemon/clamperl/normal.pal
index 84d730399..84d730399 100644
--- a/graphics/pokemon/palettes/clamperl_palette.pal
+++ b/graphics/pokemon/clamperl/normal.pal
diff --git a/graphics/pokemon/palettes/clamperl_shiny_palette.pal b/graphics/pokemon/clamperl/shiny.pal
index d479da971..d479da971 100644
--- a/graphics/pokemon/palettes/clamperl_shiny_palette.pal
+++ b/graphics/pokemon/clamperl/shiny.pal
diff --git a/graphics/pokemon/back_pics/claydol_back_pic.png b/graphics/pokemon/claydol/back.png
index 9fdd6e0c2..9fdd6e0c2 100644
--- a/graphics/pokemon/back_pics/claydol_back_pic.png
+++ b/graphics/pokemon/claydol/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/claydol_footprint.png b/graphics/pokemon/claydol/footprint.png
index 2f0bca1ac..2f0bca1ac 100644
--- a/graphics/pokemon/footprints/claydol_footprint.png
+++ b/graphics/pokemon/claydol/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/claydol_still_front_pic.png b/graphics/pokemon/claydol/front.png
index ea8e2cf74..ea8e2cf74 100644
--- a/graphics/pokemon/front_pics/claydol_still_front_pic.png
+++ b/graphics/pokemon/claydol/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/claydol_icon.png b/graphics/pokemon/claydol/icon.png
index 3f3f04ead..3f3f04ead 100644
--- a/graphics/pokemon/icons/claydol_icon.png
+++ b/graphics/pokemon/claydol/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/claydol_palette.pal b/graphics/pokemon/claydol/normal.pal
index cd7f876c5..cd7f876c5 100644
--- a/graphics/pokemon/palettes/claydol_palette.pal
+++ b/graphics/pokemon/claydol/normal.pal
diff --git a/graphics/pokemon/palettes/claydol_shiny_palette.pal b/graphics/pokemon/claydol/shiny.pal
index e4203b19b..e4203b19b 100644
--- a/graphics/pokemon/palettes/claydol_shiny_palette.pal
+++ b/graphics/pokemon/claydol/shiny.pal
diff --git a/graphics/pokemon/back_pics/clefable_back_pic.png b/graphics/pokemon/clefable/back.png
index 42592b8d7..42592b8d7 100644
--- a/graphics/pokemon/back_pics/clefable_back_pic.png
+++ b/graphics/pokemon/clefable/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/clefable_footprint.png b/graphics/pokemon/clefable/footprint.png
index 5ff3e19a1..5ff3e19a1 100644
--- a/graphics/pokemon/footprints/clefable_footprint.png
+++ b/graphics/pokemon/clefable/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/clefable_still_front_pic.png b/graphics/pokemon/clefable/front.png
index 81d7456a1..81d7456a1 100644
--- a/graphics/pokemon/front_pics/clefable_still_front_pic.png
+++ b/graphics/pokemon/clefable/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/clefable_icon.png b/graphics/pokemon/clefable/icon.png
index 4078e2854..4078e2854 100644
--- a/graphics/pokemon/icons/clefable_icon.png
+++ b/graphics/pokemon/clefable/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/clefable_palette.pal b/graphics/pokemon/clefable/normal.pal
index 46e74099c..46e74099c 100644
--- a/graphics/pokemon/palettes/clefable_palette.pal
+++ b/graphics/pokemon/clefable/normal.pal
diff --git a/graphics/pokemon/palettes/clefable_shiny_palette.pal b/graphics/pokemon/clefable/shiny.pal
index 106d78ed4..106d78ed4 100644
--- a/graphics/pokemon/palettes/clefable_shiny_palette.pal
+++ b/graphics/pokemon/clefable/shiny.pal
diff --git a/graphics/pokemon/back_pics/clefairy_back_pic.png b/graphics/pokemon/clefairy/back.png
index 6720a7865..6720a7865 100644
--- a/graphics/pokemon/back_pics/clefairy_back_pic.png
+++ b/graphics/pokemon/clefairy/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/clefairy_footprint.png b/graphics/pokemon/clefairy/footprint.png
index 85c25a5dc..85c25a5dc 100644
--- a/graphics/pokemon/footprints/clefairy_footprint.png
+++ b/graphics/pokemon/clefairy/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/clefairy_still_front_pic.png b/graphics/pokemon/clefairy/front.png
index 4684b7df6..4684b7df6 100644
--- a/graphics/pokemon/front_pics/clefairy_still_front_pic.png
+++ b/graphics/pokemon/clefairy/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/clefairy_icon.png b/graphics/pokemon/clefairy/icon.png
index 7895bb93c..7895bb93c 100644
--- a/graphics/pokemon/icons/clefairy_icon.png
+++ b/graphics/pokemon/clefairy/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/clefairy_palette.pal b/graphics/pokemon/clefairy/normal.pal
index 78c34d19c..78c34d19c 100644
--- a/graphics/pokemon/palettes/clefairy_palette.pal
+++ b/graphics/pokemon/clefairy/normal.pal
diff --git a/graphics/pokemon/palettes/clefairy_shiny_palette.pal b/graphics/pokemon/clefairy/shiny.pal
index e61e335f8..e61e335f8 100644
--- a/graphics/pokemon/palettes/clefairy_shiny_palette.pal
+++ b/graphics/pokemon/clefairy/shiny.pal
diff --git a/graphics/pokemon/back_pics/cleffa_back_pic.png b/graphics/pokemon/cleffa/back.png
index b110614e1..b110614e1 100644
--- a/graphics/pokemon/back_pics/cleffa_back_pic.png
+++ b/graphics/pokemon/cleffa/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/cleffa_footprint.png b/graphics/pokemon/cleffa/footprint.png
index 4bf9339ae..4bf9339ae 100644
--- a/graphics/pokemon/footprints/cleffa_footprint.png
+++ b/graphics/pokemon/cleffa/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/cleffa_still_front_pic.png b/graphics/pokemon/cleffa/front.png
index 82b6c103b..82b6c103b 100644
--- a/graphics/pokemon/front_pics/cleffa_still_front_pic.png
+++ b/graphics/pokemon/cleffa/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/cleffa_icon.png b/graphics/pokemon/cleffa/icon.png
index e866394f0..e866394f0 100644
--- a/graphics/pokemon/icons/cleffa_icon.png
+++ b/graphics/pokemon/cleffa/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/cleffa_palette.pal b/graphics/pokemon/cleffa/normal.pal
index 757446357..757446357 100644
--- a/graphics/pokemon/palettes/cleffa_palette.pal
+++ b/graphics/pokemon/cleffa/normal.pal
diff --git a/graphics/pokemon/palettes/cleffa_shiny_palette.pal b/graphics/pokemon/cleffa/shiny.pal
index 1af070d66..1af070d66 100644
--- a/graphics/pokemon/palettes/cleffa_shiny_palette.pal
+++ b/graphics/pokemon/cleffa/shiny.pal
diff --git a/graphics/pokemon/back_pics/cloyster_back_pic.png b/graphics/pokemon/cloyster/back.png
index fa69b7b59..fa69b7b59 100644
--- a/graphics/pokemon/back_pics/cloyster_back_pic.png
+++ b/graphics/pokemon/cloyster/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/cloyster_footprint.png b/graphics/pokemon/cloyster/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/cloyster_footprint.png
+++ b/graphics/pokemon/cloyster/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/cloyster_still_front_pic.png b/graphics/pokemon/cloyster/front.png
index 7568a23fc..7568a23fc 100644
--- a/graphics/pokemon/front_pics/cloyster_still_front_pic.png
+++ b/graphics/pokemon/cloyster/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/cloyster_icon.png b/graphics/pokemon/cloyster/icon.png
index 71ca401c4..71ca401c4 100644
--- a/graphics/pokemon/icons/cloyster_icon.png
+++ b/graphics/pokemon/cloyster/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/cloyster_palette.pal b/graphics/pokemon/cloyster/normal.pal
index 7eeb9f47e..7eeb9f47e 100644
--- a/graphics/pokemon/palettes/cloyster_palette.pal
+++ b/graphics/pokemon/cloyster/normal.pal
diff --git a/graphics/pokemon/palettes/cloyster_shiny_palette.pal b/graphics/pokemon/cloyster/shiny.pal
index 8a0d5bd4b..8a0d5bd4b 100644
--- a/graphics/pokemon/palettes/cloyster_shiny_palette.pal
+++ b/graphics/pokemon/cloyster/shiny.pal
diff --git a/graphics/pokemon/back_pics/combusken_back_pic.png b/graphics/pokemon/combusken/back.png
index 6c6d094dd..6c6d094dd 100644
--- a/graphics/pokemon/back_pics/combusken_back_pic.png
+++ b/graphics/pokemon/combusken/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/combusken_footprint.png b/graphics/pokemon/combusken/footprint.png
index 6b66429d8..6b66429d8 100644
--- a/graphics/pokemon/footprints/combusken_footprint.png
+++ b/graphics/pokemon/combusken/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/combusken_still_front_pic.png b/graphics/pokemon/combusken/front.png
index 5852709f3..5852709f3 100644
--- a/graphics/pokemon/front_pics/combusken_still_front_pic.png
+++ b/graphics/pokemon/combusken/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/combusken_icon.png b/graphics/pokemon/combusken/icon.png
index 3cdd0f5c1..3cdd0f5c1 100644
--- a/graphics/pokemon/icons/combusken_icon.png
+++ b/graphics/pokemon/combusken/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/combusken_palette.pal b/graphics/pokemon/combusken/normal.pal
index 7327dbece..7327dbece 100644
--- a/graphics/pokemon/palettes/combusken_palette.pal
+++ b/graphics/pokemon/combusken/normal.pal
diff --git a/graphics/pokemon/palettes/combusken_shiny_palette.pal b/graphics/pokemon/combusken/shiny.pal
index 6fbb74b08..6fbb74b08 100644
--- a/graphics/pokemon/palettes/combusken_shiny_palette.pal
+++ b/graphics/pokemon/combusken/shiny.pal
diff --git a/graphics/pokemon/back_pics/corphish_back_pic.png b/graphics/pokemon/corphish/back.png
index 01d603778..01d603778 100644
--- a/graphics/pokemon/back_pics/corphish_back_pic.png
+++ b/graphics/pokemon/corphish/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/corphish_footprint.png b/graphics/pokemon/corphish/footprint.png
index f624724c7..f624724c7 100644
--- a/graphics/pokemon/footprints/corphish_footprint.png
+++ b/graphics/pokemon/corphish/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/corphish_still_front_pic.png b/graphics/pokemon/corphish/front.png
index f8a06a67c..f8a06a67c 100644
--- a/graphics/pokemon/front_pics/corphish_still_front_pic.png
+++ b/graphics/pokemon/corphish/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/corphish_icon.png b/graphics/pokemon/corphish/icon.png
index f14b262d2..f14b262d2 100644
--- a/graphics/pokemon/icons/corphish_icon.png
+++ b/graphics/pokemon/corphish/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/corphish_palette.pal b/graphics/pokemon/corphish/normal.pal
index 0fd4ea330..0fd4ea330 100644
--- a/graphics/pokemon/palettes/corphish_palette.pal
+++ b/graphics/pokemon/corphish/normal.pal
diff --git a/graphics/pokemon/palettes/corphish_shiny_palette.pal b/graphics/pokemon/corphish/shiny.pal
index a3eb45805..a3eb45805 100644
--- a/graphics/pokemon/palettes/corphish_shiny_palette.pal
+++ b/graphics/pokemon/corphish/shiny.pal
diff --git a/graphics/pokemon/back_pics/corsola_back_pic.png b/graphics/pokemon/corsola/back.png
index d15f330fc..d15f330fc 100644
--- a/graphics/pokemon/back_pics/corsola_back_pic.png
+++ b/graphics/pokemon/corsola/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/corsola_footprint.png b/graphics/pokemon/corsola/footprint.png
index bae0aaf92..bae0aaf92 100644
--- a/graphics/pokemon/footprints/corsola_footprint.png
+++ b/graphics/pokemon/corsola/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/corsola_still_front_pic.png b/graphics/pokemon/corsola/front.png
index 550ddbbe3..550ddbbe3 100644
--- a/graphics/pokemon/front_pics/corsola_still_front_pic.png
+++ b/graphics/pokemon/corsola/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/corsola_icon.png b/graphics/pokemon/corsola/icon.png
index dd2d2e82e..dd2d2e82e 100644
--- a/graphics/pokemon/icons/corsola_icon.png
+++ b/graphics/pokemon/corsola/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/corsola_palette.pal b/graphics/pokemon/corsola/normal.pal
index 95c7616fe..95c7616fe 100644
--- a/graphics/pokemon/palettes/corsola_palette.pal
+++ b/graphics/pokemon/corsola/normal.pal
diff --git a/graphics/pokemon/palettes/corsola_shiny_palette.pal b/graphics/pokemon/corsola/shiny.pal
index 13daa4e26..13daa4e26 100644
--- a/graphics/pokemon/palettes/corsola_shiny_palette.pal
+++ b/graphics/pokemon/corsola/shiny.pal
diff --git a/graphics/pokemon/back_pics/cradily_back_pic.png b/graphics/pokemon/cradily/back.png
index 338c7f0ba..338c7f0ba 100644
--- a/graphics/pokemon/back_pics/cradily_back_pic.png
+++ b/graphics/pokemon/cradily/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/cradily_footprint.png b/graphics/pokemon/cradily/footprint.png
index 998229dc7..998229dc7 100644
--- a/graphics/pokemon/footprints/cradily_footprint.png
+++ b/graphics/pokemon/cradily/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/cradily_still_front_pic.png b/graphics/pokemon/cradily/front.png
index 0bc94d6a3..0bc94d6a3 100644
--- a/graphics/pokemon/front_pics/cradily_still_front_pic.png
+++ b/graphics/pokemon/cradily/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/cradily_icon.png b/graphics/pokemon/cradily/icon.png
index ea57b45f1..ea57b45f1 100644
--- a/graphics/pokemon/icons/cradily_icon.png
+++ b/graphics/pokemon/cradily/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/cradily_palette.pal b/graphics/pokemon/cradily/normal.pal
index 9167eb879..9167eb879 100644
--- a/graphics/pokemon/palettes/cradily_palette.pal
+++ b/graphics/pokemon/cradily/normal.pal
diff --git a/graphics/pokemon/palettes/cradily_shiny_palette.pal b/graphics/pokemon/cradily/shiny.pal
index 32a3b9e8f..32a3b9e8f 100644
--- a/graphics/pokemon/palettes/cradily_shiny_palette.pal
+++ b/graphics/pokemon/cradily/shiny.pal
diff --git a/graphics/pokemon/back_pics/crawdaunt_back_pic.png b/graphics/pokemon/crawdaunt/back.png
index f96f2c488..f96f2c488 100644
--- a/graphics/pokemon/back_pics/crawdaunt_back_pic.png
+++ b/graphics/pokemon/crawdaunt/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/crawdaunt_footprint.png b/graphics/pokemon/crawdaunt/footprint.png
index 9169e2807..9169e2807 100644
--- a/graphics/pokemon/footprints/crawdaunt_footprint.png
+++ b/graphics/pokemon/crawdaunt/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/crawdaunt_still_front_pic.png b/graphics/pokemon/crawdaunt/front.png
index 88ee71100..88ee71100 100644
--- a/graphics/pokemon/front_pics/crawdaunt_still_front_pic.png
+++ b/graphics/pokemon/crawdaunt/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/crawdaunt_icon.png b/graphics/pokemon/crawdaunt/icon.png
index 605482d25..605482d25 100644
--- a/graphics/pokemon/icons/crawdaunt_icon.png
+++ b/graphics/pokemon/crawdaunt/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/crawdaunt_palette.pal b/graphics/pokemon/crawdaunt/normal.pal
index 7fe04e329..7fe04e329 100644
--- a/graphics/pokemon/palettes/crawdaunt_palette.pal
+++ b/graphics/pokemon/crawdaunt/normal.pal
diff --git a/graphics/pokemon/palettes/crawdaunt_shiny_palette.pal b/graphics/pokemon/crawdaunt/shiny.pal
index 21b58b2a0..21b58b2a0 100644
--- a/graphics/pokemon/palettes/crawdaunt_shiny_palette.pal
+++ b/graphics/pokemon/crawdaunt/shiny.pal
diff --git a/graphics/pokemon/back_pics/crobat_back_pic.png b/graphics/pokemon/crobat/back.png
index d14ecec7b..d14ecec7b 100644
--- a/graphics/pokemon/back_pics/crobat_back_pic.png
+++ b/graphics/pokemon/crobat/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/crobat_footprint.png b/graphics/pokemon/crobat/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/crobat_footprint.png
+++ b/graphics/pokemon/crobat/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/crobat_still_front_pic.png b/graphics/pokemon/crobat/front.png
index b61cdebe7..b61cdebe7 100644
--- a/graphics/pokemon/front_pics/crobat_still_front_pic.png
+++ b/graphics/pokemon/crobat/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/crobat_icon.png b/graphics/pokemon/crobat/icon.png
index 817951dd0..817951dd0 100644
--- a/graphics/pokemon/icons/crobat_icon.png
+++ b/graphics/pokemon/crobat/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/crobat_palette.pal b/graphics/pokemon/crobat/normal.pal
index 9c466e9e8..9c466e9e8 100644
--- a/graphics/pokemon/palettes/crobat_palette.pal
+++ b/graphics/pokemon/crobat/normal.pal
diff --git a/graphics/pokemon/palettes/crobat_shiny_palette.pal b/graphics/pokemon/crobat/shiny.pal
index 8f22fd4b0..8f22fd4b0 100644
--- a/graphics/pokemon/palettes/crobat_shiny_palette.pal
+++ b/graphics/pokemon/crobat/shiny.pal
diff --git a/graphics/pokemon/back_pics/croconaw_back_pic.png b/graphics/pokemon/croconaw/back.png
index 991be60bc..991be60bc 100644
--- a/graphics/pokemon/back_pics/croconaw_back_pic.png
+++ b/graphics/pokemon/croconaw/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/croconaw_footprint.png b/graphics/pokemon/croconaw/footprint.png
index 43da8e68e..43da8e68e 100644
--- a/graphics/pokemon/footprints/croconaw_footprint.png
+++ b/graphics/pokemon/croconaw/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/croconaw_still_front_pic.png b/graphics/pokemon/croconaw/front.png
index 585be79f4..585be79f4 100644
--- a/graphics/pokemon/front_pics/croconaw_still_front_pic.png
+++ b/graphics/pokemon/croconaw/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/croconaw_icon.png b/graphics/pokemon/croconaw/icon.png
index 6f57e5656..6f57e5656 100644
--- a/graphics/pokemon/icons/croconaw_icon.png
+++ b/graphics/pokemon/croconaw/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/croconaw_palette.pal b/graphics/pokemon/croconaw/normal.pal
index 2e64441a4..2e64441a4 100644
--- a/graphics/pokemon/palettes/croconaw_palette.pal
+++ b/graphics/pokemon/croconaw/normal.pal
diff --git a/graphics/pokemon/palettes/croconaw_shiny_palette.pal b/graphics/pokemon/croconaw/shiny.pal
index 847f2ed29..847f2ed29 100644
--- a/graphics/pokemon/palettes/croconaw_shiny_palette.pal
+++ b/graphics/pokemon/croconaw/shiny.pal
diff --git a/graphics/pokemon/back_pics/cubone_back_pic.png b/graphics/pokemon/cubone/back.png
index db4d31543..db4d31543 100644
--- a/graphics/pokemon/back_pics/cubone_back_pic.png
+++ b/graphics/pokemon/cubone/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/cubone_footprint.png b/graphics/pokemon/cubone/footprint.png
index 21deee1a6..21deee1a6 100644
--- a/graphics/pokemon/footprints/cubone_footprint.png
+++ b/graphics/pokemon/cubone/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/cubone_still_front_pic.png b/graphics/pokemon/cubone/front.png
index a0e1a464e..a0e1a464e 100644
--- a/graphics/pokemon/front_pics/cubone_still_front_pic.png
+++ b/graphics/pokemon/cubone/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/cubone_icon.png b/graphics/pokemon/cubone/icon.png
index 679d8e7e5..679d8e7e5 100644
--- a/graphics/pokemon/icons/cubone_icon.png
+++ b/graphics/pokemon/cubone/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/cubone_palette.pal b/graphics/pokemon/cubone/normal.pal
index 3576a449e..3576a449e 100644
--- a/graphics/pokemon/palettes/cubone_palette.pal
+++ b/graphics/pokemon/cubone/normal.pal
diff --git a/graphics/pokemon/palettes/cubone_shiny_palette.pal b/graphics/pokemon/cubone/shiny.pal
index 51b6bc8ba..51b6bc8ba 100644
--- a/graphics/pokemon/palettes/cubone_shiny_palette.pal
+++ b/graphics/pokemon/cubone/shiny.pal
diff --git a/graphics/pokemon/back_pics/cyndaquil_back_pic.png b/graphics/pokemon/cyndaquil/back.png
index cfc64164e..cfc64164e 100644
--- a/graphics/pokemon/back_pics/cyndaquil_back_pic.png
+++ b/graphics/pokemon/cyndaquil/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/cyndaquil_footprint.png b/graphics/pokemon/cyndaquil/footprint.png
index 6413cbaae..6413cbaae 100644
--- a/graphics/pokemon/footprints/cyndaquil_footprint.png
+++ b/graphics/pokemon/cyndaquil/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/cyndaquil_still_front_pic.png b/graphics/pokemon/cyndaquil/front.png
index 1a31da433..1a31da433 100644
--- a/graphics/pokemon/front_pics/cyndaquil_still_front_pic.png
+++ b/graphics/pokemon/cyndaquil/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/cyndaquil_icon.png b/graphics/pokemon/cyndaquil/icon.png
index 5f174dcf1..5f174dcf1 100644
--- a/graphics/pokemon/icons/cyndaquil_icon.png
+++ b/graphics/pokemon/cyndaquil/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/cyndaquil_palette.pal b/graphics/pokemon/cyndaquil/normal.pal
index 46fb06347..46fb06347 100644
--- a/graphics/pokemon/palettes/cyndaquil_palette.pal
+++ b/graphics/pokemon/cyndaquil/normal.pal
diff --git a/graphics/pokemon/palettes/cyndaquil_shiny_palette.pal b/graphics/pokemon/cyndaquil/shiny.pal
index 14e35dbc5..14e35dbc5 100644
--- a/graphics/pokemon/palettes/cyndaquil_shiny_palette.pal
+++ b/graphics/pokemon/cyndaquil/shiny.pal
diff --git a/graphics/pokemon/back_pics/delcatty_back_pic.png b/graphics/pokemon/delcatty/back.png
index 38bcfd5a7..38bcfd5a7 100644
--- a/graphics/pokemon/back_pics/delcatty_back_pic.png
+++ b/graphics/pokemon/delcatty/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/delcatty_footprint.png b/graphics/pokemon/delcatty/footprint.png
index 5ff40e5a0..5ff40e5a0 100644
--- a/graphics/pokemon/footprints/delcatty_footprint.png
+++ b/graphics/pokemon/delcatty/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/delcatty_still_front_pic.png b/graphics/pokemon/delcatty/front.png
index bfb7f3894..bfb7f3894 100644
--- a/graphics/pokemon/front_pics/delcatty_still_front_pic.png
+++ b/graphics/pokemon/delcatty/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/delcatty_icon.png b/graphics/pokemon/delcatty/icon.png
index b5d874a88..b5d874a88 100644
--- a/graphics/pokemon/icons/delcatty_icon.png
+++ b/graphics/pokemon/delcatty/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/delcatty_palette.pal b/graphics/pokemon/delcatty/normal.pal
index 7d7d44e12..7d7d44e12 100644
--- a/graphics/pokemon/palettes/delcatty_palette.pal
+++ b/graphics/pokemon/delcatty/normal.pal
diff --git a/graphics/pokemon/palettes/delcatty_shiny_palette.pal b/graphics/pokemon/delcatty/shiny.pal
index caf7d7be8..caf7d7be8 100644
--- a/graphics/pokemon/palettes/delcatty_shiny_palette.pal
+++ b/graphics/pokemon/delcatty/shiny.pal
diff --git a/graphics/pokemon/back_pics/delibird_back_pic.png b/graphics/pokemon/delibird/back.png
index b4dccb119..b4dccb119 100644
--- a/graphics/pokemon/back_pics/delibird_back_pic.png
+++ b/graphics/pokemon/delibird/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/delibird_footprint.png b/graphics/pokemon/delibird/footprint.png
index e7348586e..e7348586e 100644
--- a/graphics/pokemon/footprints/delibird_footprint.png
+++ b/graphics/pokemon/delibird/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/delibird_still_front_pic.png b/graphics/pokemon/delibird/front.png
index b31baa203..b31baa203 100644
--- a/graphics/pokemon/front_pics/delibird_still_front_pic.png
+++ b/graphics/pokemon/delibird/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/delibird_icon.png b/graphics/pokemon/delibird/icon.png
index 438f80863..438f80863 100644
--- a/graphics/pokemon/icons/delibird_icon.png
+++ b/graphics/pokemon/delibird/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/delibird_palette.pal b/graphics/pokemon/delibird/normal.pal
index a975e93d3..a975e93d3 100644
--- a/graphics/pokemon/palettes/delibird_palette.pal
+++ b/graphics/pokemon/delibird/normal.pal
diff --git a/graphics/pokemon/palettes/delibird_shiny_palette.pal b/graphics/pokemon/delibird/shiny.pal
index f94267729..f94267729 100644
--- a/graphics/pokemon/palettes/delibird_shiny_palette.pal
+++ b/graphics/pokemon/delibird/shiny.pal
diff --git a/graphics/pokemon/back_pics/deoxys_back_pic.png b/graphics/pokemon/deoxys/back.png
index c6cf22288..c6cf22288 100644
--- a/graphics/pokemon/back_pics/deoxys_back_pic.png
+++ b/graphics/pokemon/deoxys/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/deoxys_footprint.png b/graphics/pokemon/deoxys/footprint.png
index ea97e4014..ea97e4014 100644
--- a/graphics/pokemon/footprints/deoxys_footprint.png
+++ b/graphics/pokemon/deoxys/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/deoxys_still_front_pic.png b/graphics/pokemon/deoxys/front.png
index 017eb84d3..017eb84d3 100644
--- a/graphics/pokemon/front_pics/deoxys_still_front_pic.png
+++ b/graphics/pokemon/deoxys/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/deoxys_icon.png b/graphics/pokemon/deoxys/icon.png
index 18735fc72..18735fc72 100644
--- a/graphics/pokemon/icons/deoxys_icon.png
+++ b/graphics/pokemon/deoxys/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/deoxys_palette.pal b/graphics/pokemon/deoxys/normal.pal
index e8921dd3d..e8921dd3d 100644
--- a/graphics/pokemon/palettes/deoxys_palette.pal
+++ b/graphics/pokemon/deoxys/normal.pal
diff --git a/graphics/pokemon/palettes/deoxys_shiny_palette.pal b/graphics/pokemon/deoxys/shiny.pal
index 666acaa3a..666acaa3a 100644
--- a/graphics/pokemon/palettes/deoxys_shiny_palette.pal
+++ b/graphics/pokemon/deoxys/shiny.pal
diff --git a/graphics/pokemon/icons/deoxys_speed_icon.png b/graphics/pokemon/deoxys/speed_icon.png
index ae34130ee..ae34130ee 100644
--- a/graphics/pokemon/icons/deoxys_speed_icon.png
+++ b/graphics/pokemon/deoxys/speed_icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/dewgong_back_pic.png b/graphics/pokemon/dewgong/back.png
index ba6c297ea..ba6c297ea 100644
--- a/graphics/pokemon/back_pics/dewgong_back_pic.png
+++ b/graphics/pokemon/dewgong/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/dewgong_footprint.png b/graphics/pokemon/dewgong/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/dewgong_footprint.png
+++ b/graphics/pokemon/dewgong/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/dewgong_still_front_pic.png b/graphics/pokemon/dewgong/front.png
index 1ab15de43..1ab15de43 100644
--- a/graphics/pokemon/front_pics/dewgong_still_front_pic.png
+++ b/graphics/pokemon/dewgong/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/dewgong_icon.png b/graphics/pokemon/dewgong/icon.png
index ea227df7c..ea227df7c 100644
--- a/graphics/pokemon/icons/dewgong_icon.png
+++ b/graphics/pokemon/dewgong/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/dewgong_palette.pal b/graphics/pokemon/dewgong/normal.pal
index b9d0bdfed..b9d0bdfed 100644
--- a/graphics/pokemon/palettes/dewgong_palette.pal
+++ b/graphics/pokemon/dewgong/normal.pal
diff --git a/graphics/pokemon/palettes/dewgong_shiny_palette.pal b/graphics/pokemon/dewgong/shiny.pal
index 8949d4fa8..8949d4fa8 100644
--- a/graphics/pokemon/palettes/dewgong_shiny_palette.pal
+++ b/graphics/pokemon/dewgong/shiny.pal
diff --git a/graphics/pokemon/back_pics/diglett_back_pic.png b/graphics/pokemon/diglett/back.png
index 238432ddd..238432ddd 100644
--- a/graphics/pokemon/back_pics/diglett_back_pic.png
+++ b/graphics/pokemon/diglett/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/diglett_footprint.png b/graphics/pokemon/diglett/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/diglett_footprint.png
+++ b/graphics/pokemon/diglett/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/diglett_still_front_pic.png b/graphics/pokemon/diglett/front.png
index cb26e4a63..cb26e4a63 100644
--- a/graphics/pokemon/front_pics/diglett_still_front_pic.png
+++ b/graphics/pokemon/diglett/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/diglett_icon.png b/graphics/pokemon/diglett/icon.png
index 43db9f62d..43db9f62d 100644
--- a/graphics/pokemon/icons/diglett_icon.png
+++ b/graphics/pokemon/diglett/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/diglett_palette.pal b/graphics/pokemon/diglett/normal.pal
index 7417ef7ff..7417ef7ff 100644
--- a/graphics/pokemon/palettes/diglett_palette.pal
+++ b/graphics/pokemon/diglett/normal.pal
diff --git a/graphics/pokemon/palettes/diglett_shiny_palette.pal b/graphics/pokemon/diglett/shiny.pal
index c7c26b7e5..c7c26b7e5 100644
--- a/graphics/pokemon/palettes/diglett_shiny_palette.pal
+++ b/graphics/pokemon/diglett/shiny.pal
diff --git a/graphics/pokemon/back_pics/ditto_back_pic.png b/graphics/pokemon/ditto/back.png
index 002635423..002635423 100644
--- a/graphics/pokemon/back_pics/ditto_back_pic.png
+++ b/graphics/pokemon/ditto/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ditto_footprint.png b/graphics/pokemon/ditto/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/ditto_footprint.png
+++ b/graphics/pokemon/ditto/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ditto_still_front_pic.png b/graphics/pokemon/ditto/front.png
index 52eef0e60..52eef0e60 100644
--- a/graphics/pokemon/front_pics/ditto_still_front_pic.png
+++ b/graphics/pokemon/ditto/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ditto_icon.png b/graphics/pokemon/ditto/icon.png
index e6328feb5..e6328feb5 100644
--- a/graphics/pokemon/icons/ditto_icon.png
+++ b/graphics/pokemon/ditto/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ditto_palette.pal b/graphics/pokemon/ditto/normal.pal
index 262742c15..262742c15 100644
--- a/graphics/pokemon/palettes/ditto_palette.pal
+++ b/graphics/pokemon/ditto/normal.pal
diff --git a/graphics/pokemon/palettes/ditto_shiny_palette.pal b/graphics/pokemon/ditto/shiny.pal
index 987958312..987958312 100644
--- a/graphics/pokemon/palettes/ditto_shiny_palette.pal
+++ b/graphics/pokemon/ditto/shiny.pal
diff --git a/graphics/pokemon/back_pics/dodrio_back_pic.png b/graphics/pokemon/dodrio/back.png
index 090c189e4..090c189e4 100644
--- a/graphics/pokemon/back_pics/dodrio_back_pic.png
+++ b/graphics/pokemon/dodrio/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/dodrio_footprint.png b/graphics/pokemon/dodrio/footprint.png
index 34f85bfb3..34f85bfb3 100644
--- a/graphics/pokemon/footprints/dodrio_footprint.png
+++ b/graphics/pokemon/dodrio/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/dodrio_still_front_pic.png b/graphics/pokemon/dodrio/front.png
index 563a89cf0..563a89cf0 100644
--- a/graphics/pokemon/front_pics/dodrio_still_front_pic.png
+++ b/graphics/pokemon/dodrio/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/dodrio_icon.png b/graphics/pokemon/dodrio/icon.png
index 3d462999e..3d462999e 100644
--- a/graphics/pokemon/icons/dodrio_icon.png
+++ b/graphics/pokemon/dodrio/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/dodrio_palette.pal b/graphics/pokemon/dodrio/normal.pal
index 1d5fd2ea4..1d5fd2ea4 100644
--- a/graphics/pokemon/palettes/dodrio_palette.pal
+++ b/graphics/pokemon/dodrio/normal.pal
diff --git a/graphics/pokemon/palettes/dodrio_shiny_palette.pal b/graphics/pokemon/dodrio/shiny.pal
index e7c27940f..e7c27940f 100644
--- a/graphics/pokemon/palettes/dodrio_shiny_palette.pal
+++ b/graphics/pokemon/dodrio/shiny.pal
diff --git a/graphics/pokemon/back_pics/doduo_back_pic.png b/graphics/pokemon/doduo/back.png
index 4589eff60..4589eff60 100644
--- a/graphics/pokemon/back_pics/doduo_back_pic.png
+++ b/graphics/pokemon/doduo/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/doduo_footprint.png b/graphics/pokemon/doduo/footprint.png
index 0710eca52..0710eca52 100644
--- a/graphics/pokemon/footprints/doduo_footprint.png
+++ b/graphics/pokemon/doduo/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/doduo_still_front_pic.png b/graphics/pokemon/doduo/front.png
index 3a30b75e4..3a30b75e4 100644
--- a/graphics/pokemon/front_pics/doduo_still_front_pic.png
+++ b/graphics/pokemon/doduo/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/doduo_icon.png b/graphics/pokemon/doduo/icon.png
index 540834591..540834591 100644
--- a/graphics/pokemon/icons/doduo_icon.png
+++ b/graphics/pokemon/doduo/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/doduo_palette.pal b/graphics/pokemon/doduo/normal.pal
index b82c77be5..b82c77be5 100644
--- a/graphics/pokemon/palettes/doduo_palette.pal
+++ b/graphics/pokemon/doduo/normal.pal
diff --git a/graphics/pokemon/palettes/doduo_shiny_palette.pal b/graphics/pokemon/doduo/shiny.pal
index fa2c1c8fb..fa2c1c8fb 100644
--- a/graphics/pokemon/palettes/doduo_shiny_palette.pal
+++ b/graphics/pokemon/doduo/shiny.pal
diff --git a/graphics/pokemon/back_pics/donphan_back_pic.png b/graphics/pokemon/donphan/back.png
index d50d467ee..d50d467ee 100644
--- a/graphics/pokemon/back_pics/donphan_back_pic.png
+++ b/graphics/pokemon/donphan/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/donphan_footprint.png b/graphics/pokemon/donphan/footprint.png
index 394cf6457..394cf6457 100644
--- a/graphics/pokemon/footprints/donphan_footprint.png
+++ b/graphics/pokemon/donphan/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/donphan_still_front_pic.png b/graphics/pokemon/donphan/front.png
index c971f446a..c971f446a 100644
--- a/graphics/pokemon/front_pics/donphan_still_front_pic.png
+++ b/graphics/pokemon/donphan/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/donphan_icon.png b/graphics/pokemon/donphan/icon.png
index 09000b166..09000b166 100644
--- a/graphics/pokemon/icons/donphan_icon.png
+++ b/graphics/pokemon/donphan/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/donphan_palette.pal b/graphics/pokemon/donphan/normal.pal
index 4e0393757..4e0393757 100644
--- a/graphics/pokemon/palettes/donphan_palette.pal
+++ b/graphics/pokemon/donphan/normal.pal
diff --git a/graphics/pokemon/palettes/donphan_shiny_palette.pal b/graphics/pokemon/donphan/shiny.pal
index 55a6da008..55a6da008 100644
--- a/graphics/pokemon/palettes/donphan_shiny_palette.pal
+++ b/graphics/pokemon/donphan/shiny.pal
diff --git a/graphics/pokemon/back_pics/dragonair_back_pic.png b/graphics/pokemon/dragonair/back.png
index ee3cf04d1..ee3cf04d1 100644
--- a/graphics/pokemon/back_pics/dragonair_back_pic.png
+++ b/graphics/pokemon/dragonair/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/dragonair_footprint.png b/graphics/pokemon/dragonair/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/dragonair_footprint.png
+++ b/graphics/pokemon/dragonair/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/dragonair_still_front_pic.png b/graphics/pokemon/dragonair/front.png
index b2a88698c..b2a88698c 100644
--- a/graphics/pokemon/front_pics/dragonair_still_front_pic.png
+++ b/graphics/pokemon/dragonair/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/dragonair_icon.png b/graphics/pokemon/dragonair/icon.png
index f4b870a2a..f4b870a2a 100644
--- a/graphics/pokemon/icons/dragonair_icon.png
+++ b/graphics/pokemon/dragonair/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/dragonair_palette.pal b/graphics/pokemon/dragonair/normal.pal
index 011d2e583..011d2e583 100644
--- a/graphics/pokemon/palettes/dragonair_palette.pal
+++ b/graphics/pokemon/dragonair/normal.pal
diff --git a/graphics/pokemon/palettes/dragonair_shiny_palette.pal b/graphics/pokemon/dragonair/shiny.pal
index 1eedd8ef7..1eedd8ef7 100644
--- a/graphics/pokemon/palettes/dragonair_shiny_palette.pal
+++ b/graphics/pokemon/dragonair/shiny.pal
diff --git a/graphics/pokemon/back_pics/dragonite_back_pic.png b/graphics/pokemon/dragonite/back.png
index 098b9fda7..098b9fda7 100644
--- a/graphics/pokemon/back_pics/dragonite_back_pic.png
+++ b/graphics/pokemon/dragonite/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/dragonite_footprint.png b/graphics/pokemon/dragonite/footprint.png
index 1f41296b0..1f41296b0 100644
--- a/graphics/pokemon/footprints/dragonite_footprint.png
+++ b/graphics/pokemon/dragonite/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/dragonite_still_front_pic.png b/graphics/pokemon/dragonite/front.png
index 03688332c..03688332c 100644
--- a/graphics/pokemon/front_pics/dragonite_still_front_pic.png
+++ b/graphics/pokemon/dragonite/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/dragonite_icon.png b/graphics/pokemon/dragonite/icon.png
index efcbd8f11..efcbd8f11 100644
--- a/graphics/pokemon/icons/dragonite_icon.png
+++ b/graphics/pokemon/dragonite/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/dragonite_palette.pal b/graphics/pokemon/dragonite/normal.pal
index 420f870cf..420f870cf 100644
--- a/graphics/pokemon/palettes/dragonite_palette.pal
+++ b/graphics/pokemon/dragonite/normal.pal
diff --git a/graphics/pokemon/palettes/dragonite_shiny_palette.pal b/graphics/pokemon/dragonite/shiny.pal
index 6204273b3..6204273b3 100644
--- a/graphics/pokemon/palettes/dragonite_shiny_palette.pal
+++ b/graphics/pokemon/dragonite/shiny.pal
diff --git a/graphics/pokemon/back_pics/dratini_back_pic.png b/graphics/pokemon/dratini/back.png
index f87eb13cb..f87eb13cb 100644
--- a/graphics/pokemon/back_pics/dratini_back_pic.png
+++ b/graphics/pokemon/dratini/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/dratini_footprint.png b/graphics/pokemon/dratini/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/dratini_footprint.png
+++ b/graphics/pokemon/dratini/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/dratini_still_front_pic.png b/graphics/pokemon/dratini/front.png
index b33883b5f..b33883b5f 100644
--- a/graphics/pokemon/front_pics/dratini_still_front_pic.png
+++ b/graphics/pokemon/dratini/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/dratini_icon.png b/graphics/pokemon/dratini/icon.png
index c26efee60..c26efee60 100644
--- a/graphics/pokemon/icons/dratini_icon.png
+++ b/graphics/pokemon/dratini/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/dratini_palette.pal b/graphics/pokemon/dratini/normal.pal
index 22ba0544e..22ba0544e 100644
--- a/graphics/pokemon/palettes/dratini_palette.pal
+++ b/graphics/pokemon/dratini/normal.pal
diff --git a/graphics/pokemon/palettes/dratini_shiny_palette.pal b/graphics/pokemon/dratini/shiny.pal
index a6861e455..a6861e455 100644
--- a/graphics/pokemon/palettes/dratini_shiny_palette.pal
+++ b/graphics/pokemon/dratini/shiny.pal
diff --git a/graphics/pokemon/back_pics/drowzee_back_pic.png b/graphics/pokemon/drowzee/back.png
index 6a5d98818..6a5d98818 100644
--- a/graphics/pokemon/back_pics/drowzee_back_pic.png
+++ b/graphics/pokemon/drowzee/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/drowzee_footprint.png b/graphics/pokemon/drowzee/footprint.png
index 23293423e..23293423e 100644
--- a/graphics/pokemon/footprints/drowzee_footprint.png
+++ b/graphics/pokemon/drowzee/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/drowzee_still_front_pic.png b/graphics/pokemon/drowzee/front.png
index 3b5107c78..3b5107c78 100644
--- a/graphics/pokemon/front_pics/drowzee_still_front_pic.png
+++ b/graphics/pokemon/drowzee/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/drowzee_icon.png b/graphics/pokemon/drowzee/icon.png
index 39b84c871..39b84c871 100644
--- a/graphics/pokemon/icons/drowzee_icon.png
+++ b/graphics/pokemon/drowzee/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/drowzee_palette.pal b/graphics/pokemon/drowzee/normal.pal
index 8013633f9..8013633f9 100644
--- a/graphics/pokemon/palettes/drowzee_palette.pal
+++ b/graphics/pokemon/drowzee/normal.pal
diff --git a/graphics/pokemon/palettes/drowzee_shiny_palette.pal b/graphics/pokemon/drowzee/shiny.pal
index 9c01eb20d..9c01eb20d 100644
--- a/graphics/pokemon/palettes/drowzee_shiny_palette.pal
+++ b/graphics/pokemon/drowzee/shiny.pal
diff --git a/graphics/pokemon/back_pics/dugtrio_back_pic.png b/graphics/pokemon/dugtrio/back.png
index 84fd0b630..84fd0b630 100644
--- a/graphics/pokemon/back_pics/dugtrio_back_pic.png
+++ b/graphics/pokemon/dugtrio/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/dugtrio_footprint.png b/graphics/pokemon/dugtrio/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/dugtrio_footprint.png
+++ b/graphics/pokemon/dugtrio/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/dugtrio_still_front_pic.png b/graphics/pokemon/dugtrio/front.png
index 7b1127a58..7b1127a58 100644
--- a/graphics/pokemon/front_pics/dugtrio_still_front_pic.png
+++ b/graphics/pokemon/dugtrio/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/dugtrio_icon.png b/graphics/pokemon/dugtrio/icon.png
index a837c7f6f..a837c7f6f 100644
--- a/graphics/pokemon/icons/dugtrio_icon.png
+++ b/graphics/pokemon/dugtrio/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/dugtrio_palette.pal b/graphics/pokemon/dugtrio/normal.pal
index ed81b96fe..ed81b96fe 100644
--- a/graphics/pokemon/palettes/dugtrio_palette.pal
+++ b/graphics/pokemon/dugtrio/normal.pal
diff --git a/graphics/pokemon/palettes/dugtrio_shiny_palette.pal b/graphics/pokemon/dugtrio/shiny.pal
index 77345a714..77345a714 100644
--- a/graphics/pokemon/palettes/dugtrio_shiny_palette.pal
+++ b/graphics/pokemon/dugtrio/shiny.pal
diff --git a/graphics/pokemon/back_pics/dunsparce_back_pic.png b/graphics/pokemon/dunsparce/back.png
index 05f700ea7..05f700ea7 100644
--- a/graphics/pokemon/back_pics/dunsparce_back_pic.png
+++ b/graphics/pokemon/dunsparce/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/dunsparce_footprint.png b/graphics/pokemon/dunsparce/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/dunsparce_footprint.png
+++ b/graphics/pokemon/dunsparce/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/dunsparce_still_front_pic.png b/graphics/pokemon/dunsparce/front.png
index cf3c421af..cf3c421af 100644
--- a/graphics/pokemon/front_pics/dunsparce_still_front_pic.png
+++ b/graphics/pokemon/dunsparce/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/dunsparce_icon.png b/graphics/pokemon/dunsparce/icon.png
index d2896e72b..d2896e72b 100644
--- a/graphics/pokemon/icons/dunsparce_icon.png
+++ b/graphics/pokemon/dunsparce/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/dunsparce_palette.pal b/graphics/pokemon/dunsparce/normal.pal
index e0440cdc1..e0440cdc1 100644
--- a/graphics/pokemon/palettes/dunsparce_palette.pal
+++ b/graphics/pokemon/dunsparce/normal.pal
diff --git a/graphics/pokemon/palettes/dunsparce_shiny_palette.pal b/graphics/pokemon/dunsparce/shiny.pal
index 425dc8b36..425dc8b36 100644
--- a/graphics/pokemon/palettes/dunsparce_shiny_palette.pal
+++ b/graphics/pokemon/dunsparce/shiny.pal
diff --git a/graphics/pokemon/back_pics/dusclops_back_pic.png b/graphics/pokemon/dusclops/back.png
index 9362e8421..9362e8421 100644
--- a/graphics/pokemon/back_pics/dusclops_back_pic.png
+++ b/graphics/pokemon/dusclops/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/dusclops_footprint.png b/graphics/pokemon/dusclops/footprint.png
index 752ffa353..752ffa353 100644
--- a/graphics/pokemon/footprints/dusclops_footprint.png
+++ b/graphics/pokemon/dusclops/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/dusclops_still_front_pic.png b/graphics/pokemon/dusclops/front.png
index 477423e62..477423e62 100644
--- a/graphics/pokemon/front_pics/dusclops_still_front_pic.png
+++ b/graphics/pokemon/dusclops/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/dusclops_icon.png b/graphics/pokemon/dusclops/icon.png
index 6ebc957da..6ebc957da 100644
--- a/graphics/pokemon/icons/dusclops_icon.png
+++ b/graphics/pokemon/dusclops/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/dusclops_palette.pal b/graphics/pokemon/dusclops/normal.pal
index f82d7f82e..f82d7f82e 100644
--- a/graphics/pokemon/palettes/dusclops_palette.pal
+++ b/graphics/pokemon/dusclops/normal.pal
diff --git a/graphics/pokemon/palettes/dusclops_shiny_palette.pal b/graphics/pokemon/dusclops/shiny.pal
index f07d7112f..f07d7112f 100644
--- a/graphics/pokemon/palettes/dusclops_shiny_palette.pal
+++ b/graphics/pokemon/dusclops/shiny.pal
diff --git a/graphics/pokemon/back_pics/duskull_back_pic.png b/graphics/pokemon/duskull/back.png
index 52a5c867d..52a5c867d 100644
--- a/graphics/pokemon/back_pics/duskull_back_pic.png
+++ b/graphics/pokemon/duskull/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/duskull_footprint.png b/graphics/pokemon/duskull/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/duskull_footprint.png
+++ b/graphics/pokemon/duskull/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/duskull_still_front_pic.png b/graphics/pokemon/duskull/front.png
index bf379af6d..bf379af6d 100644
--- a/graphics/pokemon/front_pics/duskull_still_front_pic.png
+++ b/graphics/pokemon/duskull/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/duskull_icon.png b/graphics/pokemon/duskull/icon.png
index 22710a79f..22710a79f 100644
--- a/graphics/pokemon/icons/duskull_icon.png
+++ b/graphics/pokemon/duskull/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/duskull_palette.pal b/graphics/pokemon/duskull/normal.pal
index aa1fb6ba4..aa1fb6ba4 100644
--- a/graphics/pokemon/palettes/duskull_palette.pal
+++ b/graphics/pokemon/duskull/normal.pal
diff --git a/graphics/pokemon/palettes/duskull_shiny_palette.pal b/graphics/pokemon/duskull/shiny.pal
index 2ec13fb1d..2ec13fb1d 100644
--- a/graphics/pokemon/palettes/duskull_shiny_palette.pal
+++ b/graphics/pokemon/duskull/shiny.pal
diff --git a/graphics/pokemon/back_pics/dustox_back_pic.png b/graphics/pokemon/dustox/back.png
index 759b98ea2..759b98ea2 100644
--- a/graphics/pokemon/back_pics/dustox_back_pic.png
+++ b/graphics/pokemon/dustox/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/dustox_footprint.png b/graphics/pokemon/dustox/footprint.png
index f7cc85bf9..f7cc85bf9 100644
--- a/graphics/pokemon/footprints/dustox_footprint.png
+++ b/graphics/pokemon/dustox/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/dustox_still_front_pic.png b/graphics/pokemon/dustox/front.png
index 8866606d8..8866606d8 100644
--- a/graphics/pokemon/front_pics/dustox_still_front_pic.png
+++ b/graphics/pokemon/dustox/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/dustox_icon.png b/graphics/pokemon/dustox/icon.png
index 2f0d14001..2f0d14001 100644
--- a/graphics/pokemon/icons/dustox_icon.png
+++ b/graphics/pokemon/dustox/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/dustox_palette.pal b/graphics/pokemon/dustox/normal.pal
index 262b7d1ba..262b7d1ba 100644
--- a/graphics/pokemon/palettes/dustox_palette.pal
+++ b/graphics/pokemon/dustox/normal.pal
diff --git a/graphics/pokemon/palettes/dustox_shiny_palette.pal b/graphics/pokemon/dustox/shiny.pal
index c1c43725b..c1c43725b 100644
--- a/graphics/pokemon/palettes/dustox_shiny_palette.pal
+++ b/graphics/pokemon/dustox/shiny.pal
diff --git a/graphics/pokemon/back_pics/eevee_back_pic.png b/graphics/pokemon/eevee/back.png
index 79bd1129c..79bd1129c 100644
--- a/graphics/pokemon/back_pics/eevee_back_pic.png
+++ b/graphics/pokemon/eevee/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/eevee_footprint.png b/graphics/pokemon/eevee/footprint.png
index 4e4c01c9f..4e4c01c9f 100644
--- a/graphics/pokemon/footprints/eevee_footprint.png
+++ b/graphics/pokemon/eevee/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/eevee_still_front_pic.png b/graphics/pokemon/eevee/front.png
index 115dc3e0a..115dc3e0a 100644
--- a/graphics/pokemon/front_pics/eevee_still_front_pic.png
+++ b/graphics/pokemon/eevee/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/eevee_icon.png b/graphics/pokemon/eevee/icon.png
index 13b90c2e2..13b90c2e2 100644
--- a/graphics/pokemon/icons/eevee_icon.png
+++ b/graphics/pokemon/eevee/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/eevee_palette.pal b/graphics/pokemon/eevee/normal.pal
index f6bec2522..f6bec2522 100644
--- a/graphics/pokemon/palettes/eevee_palette.pal
+++ b/graphics/pokemon/eevee/normal.pal
diff --git a/graphics/pokemon/palettes/eevee_shiny_palette.pal b/graphics/pokemon/eevee/shiny.pal
index 0d4aca238..0d4aca238 100644
--- a/graphics/pokemon/palettes/eevee_shiny_palette.pal
+++ b/graphics/pokemon/eevee/shiny.pal
diff --git a/graphics/pokemon/front_pics/egg_still_front_pic.png b/graphics/pokemon/egg/front.png
index d9680a899..d9680a899 100644
--- a/graphics/pokemon/front_pics/egg_still_front_pic.png
+++ b/graphics/pokemon/egg/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/egg_icon.png b/graphics/pokemon/egg/icon.png
index 8f6ca5dde..8f6ca5dde 100644
--- a/graphics/pokemon/icons/egg_icon.png
+++ b/graphics/pokemon/egg/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/egg_palette.pal b/graphics/pokemon/egg/normal.pal
index cadeacee0..cadeacee0 100644
--- a/graphics/pokemon/palettes/egg_palette.pal
+++ b/graphics/pokemon/egg/normal.pal
diff --git a/graphics/pokemon/back_pics/ekans_back_pic.png b/graphics/pokemon/ekans/back.png
index e72a7a9ed..e72a7a9ed 100644
--- a/graphics/pokemon/back_pics/ekans_back_pic.png
+++ b/graphics/pokemon/ekans/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ekans_footprint.png b/graphics/pokemon/ekans/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/ekans_footprint.png
+++ b/graphics/pokemon/ekans/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ekans_still_front_pic.png b/graphics/pokemon/ekans/front.png
index 3e1d41ba1..3e1d41ba1 100644
--- a/graphics/pokemon/front_pics/ekans_still_front_pic.png
+++ b/graphics/pokemon/ekans/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ekans_icon.png b/graphics/pokemon/ekans/icon.png
index 3c81efd69..3c81efd69 100644
--- a/graphics/pokemon/icons/ekans_icon.png
+++ b/graphics/pokemon/ekans/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ekans_palette.pal b/graphics/pokemon/ekans/normal.pal
index 748d88fbc..748d88fbc 100644
--- a/graphics/pokemon/palettes/ekans_palette.pal
+++ b/graphics/pokemon/ekans/normal.pal
diff --git a/graphics/pokemon/palettes/ekans_shiny_palette.pal b/graphics/pokemon/ekans/shiny.pal
index 529864430..529864430 100644
--- a/graphics/pokemon/palettes/ekans_shiny_palette.pal
+++ b/graphics/pokemon/ekans/shiny.pal
diff --git a/graphics/pokemon/back_pics/electabuzz_back_pic.png b/graphics/pokemon/electabuzz/back.png
index 8d84c2cb6..8d84c2cb6 100644
--- a/graphics/pokemon/back_pics/electabuzz_back_pic.png
+++ b/graphics/pokemon/electabuzz/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/electabuzz_footprint.png b/graphics/pokemon/electabuzz/footprint.png
index b2b4de625..b2b4de625 100644
--- a/graphics/pokemon/footprints/electabuzz_footprint.png
+++ b/graphics/pokemon/electabuzz/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/electabuzz_still_front_pic.png b/graphics/pokemon/electabuzz/front.png
index 1bed04c89..1bed04c89 100644
--- a/graphics/pokemon/front_pics/electabuzz_still_front_pic.png
+++ b/graphics/pokemon/electabuzz/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/electabuzz_icon.png b/graphics/pokemon/electabuzz/icon.png
index 4c9babe2a..4c9babe2a 100644
--- a/graphics/pokemon/icons/electabuzz_icon.png
+++ b/graphics/pokemon/electabuzz/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/electabuzz_palette.pal b/graphics/pokemon/electabuzz/normal.pal
index 75bfcbabe..75bfcbabe 100644
--- a/graphics/pokemon/palettes/electabuzz_palette.pal
+++ b/graphics/pokemon/electabuzz/normal.pal
diff --git a/graphics/pokemon/palettes/electabuzz_shiny_palette.pal b/graphics/pokemon/electabuzz/shiny.pal
index df9fa23e8..df9fa23e8 100644
--- a/graphics/pokemon/palettes/electabuzz_shiny_palette.pal
+++ b/graphics/pokemon/electabuzz/shiny.pal
diff --git a/graphics/pokemon/back_pics/electrike_back_pic.png b/graphics/pokemon/electrike/back.png
index c6e9e83e5..c6e9e83e5 100644
--- a/graphics/pokemon/back_pics/electrike_back_pic.png
+++ b/graphics/pokemon/electrike/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/electrike_footprint.png b/graphics/pokemon/electrike/footprint.png
index 8dd914b35..8dd914b35 100644
--- a/graphics/pokemon/footprints/electrike_footprint.png
+++ b/graphics/pokemon/electrike/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/electrike_still_front_pic.png b/graphics/pokemon/electrike/front.png
index 0a86b13af..0a86b13af 100644
--- a/graphics/pokemon/front_pics/electrike_still_front_pic.png
+++ b/graphics/pokemon/electrike/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/electrike_icon.png b/graphics/pokemon/electrike/icon.png
index ebef61c49..ebef61c49 100644
--- a/graphics/pokemon/icons/electrike_icon.png
+++ b/graphics/pokemon/electrike/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/electrike_palette.pal b/graphics/pokemon/electrike/normal.pal
index 5ee96cb84..5ee96cb84 100644
--- a/graphics/pokemon/palettes/electrike_palette.pal
+++ b/graphics/pokemon/electrike/normal.pal
diff --git a/graphics/pokemon/palettes/electrike_shiny_palette.pal b/graphics/pokemon/electrike/shiny.pal
index c7f51a2b1..c7f51a2b1 100644
--- a/graphics/pokemon/palettes/electrike_shiny_palette.pal
+++ b/graphics/pokemon/electrike/shiny.pal
diff --git a/graphics/pokemon/back_pics/electrode_back_pic.png b/graphics/pokemon/electrode/back.png
index 74ca458d3..74ca458d3 100644
--- a/graphics/pokemon/back_pics/electrode_back_pic.png
+++ b/graphics/pokemon/electrode/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/electrode_footprint.png b/graphics/pokemon/electrode/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/electrode_footprint.png
+++ b/graphics/pokemon/electrode/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/electrode_still_front_pic.png b/graphics/pokemon/electrode/front.png
index 801c2cdb2..801c2cdb2 100644
--- a/graphics/pokemon/front_pics/electrode_still_front_pic.png
+++ b/graphics/pokemon/electrode/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/electrode_icon.png b/graphics/pokemon/electrode/icon.png
index e46c57974..e46c57974 100644
--- a/graphics/pokemon/icons/electrode_icon.png
+++ b/graphics/pokemon/electrode/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/electrode_palette.pal b/graphics/pokemon/electrode/normal.pal
index 1848bf716..1848bf716 100644
--- a/graphics/pokemon/palettes/electrode_palette.pal
+++ b/graphics/pokemon/electrode/normal.pal
diff --git a/graphics/pokemon/palettes/electrode_shiny_palette.pal b/graphics/pokemon/electrode/shiny.pal
index d651b064f..d651b064f 100644
--- a/graphics/pokemon/palettes/electrode_shiny_palette.pal
+++ b/graphics/pokemon/electrode/shiny.pal
diff --git a/graphics/pokemon/back_pics/elekid_back_pic.png b/graphics/pokemon/elekid/back.png
index 0d8d9428a..0d8d9428a 100644
--- a/graphics/pokemon/back_pics/elekid_back_pic.png
+++ b/graphics/pokemon/elekid/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/elekid_footprint.png b/graphics/pokemon/elekid/footprint.png
index 15547931c..15547931c 100644
--- a/graphics/pokemon/footprints/elekid_footprint.png
+++ b/graphics/pokemon/elekid/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/elekid_still_front_pic.png b/graphics/pokemon/elekid/front.png
index 0c3d5325e..0c3d5325e 100644
--- a/graphics/pokemon/front_pics/elekid_still_front_pic.png
+++ b/graphics/pokemon/elekid/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/elekid_icon.png b/graphics/pokemon/elekid/icon.png
index d80ce6f0d..d80ce6f0d 100644
--- a/graphics/pokemon/icons/elekid_icon.png
+++ b/graphics/pokemon/elekid/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/elekid_palette.pal b/graphics/pokemon/elekid/normal.pal
index 522f7de84..522f7de84 100644
--- a/graphics/pokemon/palettes/elekid_palette.pal
+++ b/graphics/pokemon/elekid/normal.pal
diff --git a/graphics/pokemon/palettes/elekid_shiny_palette.pal b/graphics/pokemon/elekid/shiny.pal
index 59ff6b2cf..59ff6b2cf 100644
--- a/graphics/pokemon/palettes/elekid_shiny_palette.pal
+++ b/graphics/pokemon/elekid/shiny.pal
diff --git a/graphics/pokemon/back_pics/entei_back_pic.png b/graphics/pokemon/entei/back.png
index 902b4461a..902b4461a 100644
--- a/graphics/pokemon/back_pics/entei_back_pic.png
+++ b/graphics/pokemon/entei/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/entei_footprint.png b/graphics/pokemon/entei/footprint.png
index 7336df599..7336df599 100644
--- a/graphics/pokemon/footprints/entei_footprint.png
+++ b/graphics/pokemon/entei/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/entei_still_front_pic.png b/graphics/pokemon/entei/front.png
index 1aa34cf4d..1aa34cf4d 100644
--- a/graphics/pokemon/front_pics/entei_still_front_pic.png
+++ b/graphics/pokemon/entei/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/entei_icon.png b/graphics/pokemon/entei/icon.png
index 4d2353a20..4d2353a20 100644
--- a/graphics/pokemon/icons/entei_icon.png
+++ b/graphics/pokemon/entei/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/entei_palette.pal b/graphics/pokemon/entei/normal.pal
index 27cad95ea..27cad95ea 100644
--- a/graphics/pokemon/palettes/entei_palette.pal
+++ b/graphics/pokemon/entei/normal.pal
diff --git a/graphics/pokemon/palettes/entei_shiny_palette.pal b/graphics/pokemon/entei/shiny.pal
index e3f22acdd..e3f22acdd 100644
--- a/graphics/pokemon/palettes/entei_shiny_palette.pal
+++ b/graphics/pokemon/entei/shiny.pal
diff --git a/graphics/pokemon/back_pics/espeon_back_pic.png b/graphics/pokemon/espeon/back.png
index c3e5d96de..c3e5d96de 100644
--- a/graphics/pokemon/back_pics/espeon_back_pic.png
+++ b/graphics/pokemon/espeon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/espeon_footprint.png b/graphics/pokemon/espeon/footprint.png
index c7b17a4ad..c7b17a4ad 100644
--- a/graphics/pokemon/footprints/espeon_footprint.png
+++ b/graphics/pokemon/espeon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/espeon_still_front_pic.png b/graphics/pokemon/espeon/front.png
index 9e66b1626..9e66b1626 100644
--- a/graphics/pokemon/front_pics/espeon_still_front_pic.png
+++ b/graphics/pokemon/espeon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/espeon_icon.png b/graphics/pokemon/espeon/icon.png
index bc63aa3f2..bc63aa3f2 100644
--- a/graphics/pokemon/icons/espeon_icon.png
+++ b/graphics/pokemon/espeon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/espeon_palette.pal b/graphics/pokemon/espeon/normal.pal
index b001102c1..b001102c1 100644
--- a/graphics/pokemon/palettes/espeon_palette.pal
+++ b/graphics/pokemon/espeon/normal.pal
diff --git a/graphics/pokemon/palettes/espeon_shiny_palette.pal b/graphics/pokemon/espeon/shiny.pal
index 22222e2c7..22222e2c7 100644
--- a/graphics/pokemon/palettes/espeon_shiny_palette.pal
+++ b/graphics/pokemon/espeon/shiny.pal
diff --git a/graphics/pokemon/back_pics/exeggcute_back_pic.png b/graphics/pokemon/exeggcute/back.png
index e340cd036..e340cd036 100644
--- a/graphics/pokemon/back_pics/exeggcute_back_pic.png
+++ b/graphics/pokemon/exeggcute/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/exeggcute_footprint.png b/graphics/pokemon/exeggcute/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/exeggcute_footprint.png
+++ b/graphics/pokemon/exeggcute/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/exeggcute_still_front_pic.png b/graphics/pokemon/exeggcute/front.png
index 500dd49fb..500dd49fb 100644
--- a/graphics/pokemon/front_pics/exeggcute_still_front_pic.png
+++ b/graphics/pokemon/exeggcute/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/exeggcute_icon.png b/graphics/pokemon/exeggcute/icon.png
index 5d0306610..5d0306610 100644
--- a/graphics/pokemon/icons/exeggcute_icon.png
+++ b/graphics/pokemon/exeggcute/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/exeggcute_palette.pal b/graphics/pokemon/exeggcute/normal.pal
index 8b180c09c..8b180c09c 100644
--- a/graphics/pokemon/palettes/exeggcute_palette.pal
+++ b/graphics/pokemon/exeggcute/normal.pal
diff --git a/graphics/pokemon/palettes/exeggcute_shiny_palette.pal b/graphics/pokemon/exeggcute/shiny.pal
index 2358a2621..2358a2621 100644
--- a/graphics/pokemon/palettes/exeggcute_shiny_palette.pal
+++ b/graphics/pokemon/exeggcute/shiny.pal
diff --git a/graphics/pokemon/back_pics/exeggutor_back_pic.png b/graphics/pokemon/exeggutor/back.png
index a44877f9c..a44877f9c 100644
--- a/graphics/pokemon/back_pics/exeggutor_back_pic.png
+++ b/graphics/pokemon/exeggutor/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/exeggutor_footprint.png b/graphics/pokemon/exeggutor/footprint.png
index 6df7122f8..6df7122f8 100644
--- a/graphics/pokemon/footprints/exeggutor_footprint.png
+++ b/graphics/pokemon/exeggutor/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/exeggutor_still_front_pic.png b/graphics/pokemon/exeggutor/front.png
index 4a61df884..4a61df884 100644
--- a/graphics/pokemon/front_pics/exeggutor_still_front_pic.png
+++ b/graphics/pokemon/exeggutor/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/exeggutor_icon.png b/graphics/pokemon/exeggutor/icon.png
index 610c65a3d..610c65a3d 100644
--- a/graphics/pokemon/icons/exeggutor_icon.png
+++ b/graphics/pokemon/exeggutor/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/exeggutor_palette.pal b/graphics/pokemon/exeggutor/normal.pal
index 24702f6fa..24702f6fa 100644
--- a/graphics/pokemon/palettes/exeggutor_palette.pal
+++ b/graphics/pokemon/exeggutor/normal.pal
diff --git a/graphics/pokemon/palettes/exeggutor_shiny_palette.pal b/graphics/pokemon/exeggutor/shiny.pal
index c06646a6c..c06646a6c 100644
--- a/graphics/pokemon/palettes/exeggutor_shiny_palette.pal
+++ b/graphics/pokemon/exeggutor/shiny.pal
diff --git a/graphics/pokemon/back_pics/exploud_back_pic.png b/graphics/pokemon/exploud/back.png
index 37132bf48..37132bf48 100644
--- a/graphics/pokemon/back_pics/exploud_back_pic.png
+++ b/graphics/pokemon/exploud/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/exploud_footprint.png b/graphics/pokemon/exploud/footprint.png
index b27283a14..b27283a14 100644
--- a/graphics/pokemon/footprints/exploud_footprint.png
+++ b/graphics/pokemon/exploud/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/exploud_still_front_pic.png b/graphics/pokemon/exploud/front.png
index 48e86c610..48e86c610 100644
--- a/graphics/pokemon/front_pics/exploud_still_front_pic.png
+++ b/graphics/pokemon/exploud/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/exploud_icon.png b/graphics/pokemon/exploud/icon.png
index 04ed7f13d..04ed7f13d 100644
--- a/graphics/pokemon/icons/exploud_icon.png
+++ b/graphics/pokemon/exploud/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/exploud_palette.pal b/graphics/pokemon/exploud/normal.pal
index 074305af3..074305af3 100644
--- a/graphics/pokemon/palettes/exploud_palette.pal
+++ b/graphics/pokemon/exploud/normal.pal
diff --git a/graphics/pokemon/palettes/exploud_shiny_palette.pal b/graphics/pokemon/exploud/shiny.pal
index cfde98dc2..cfde98dc2 100644
--- a/graphics/pokemon/palettes/exploud_shiny_palette.pal
+++ b/graphics/pokemon/exploud/shiny.pal
diff --git a/graphics/pokemon/back_pics/farfetch_d_back_pic.png b/graphics/pokemon/farfetch_d/back.png
index 7f981b389..7f981b389 100644
--- a/graphics/pokemon/back_pics/farfetch_d_back_pic.png
+++ b/graphics/pokemon/farfetch_d/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/farfetch_d_footprint.png b/graphics/pokemon/farfetch_d/footprint.png
index 2f08f732d..2f08f732d 100644
--- a/graphics/pokemon/footprints/farfetch_d_footprint.png
+++ b/graphics/pokemon/farfetch_d/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/farfetch_d_still_front_pic.png b/graphics/pokemon/farfetch_d/front.png
index 5b3bb3664..5b3bb3664 100644
--- a/graphics/pokemon/front_pics/farfetch_d_still_front_pic.png
+++ b/graphics/pokemon/farfetch_d/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/farfetch_d_icon.png b/graphics/pokemon/farfetch_d/icon.png
index cb3cd931b..cb3cd931b 100644
--- a/graphics/pokemon/icons/farfetch_d_icon.png
+++ b/graphics/pokemon/farfetch_d/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/farfetch_d_palette.pal b/graphics/pokemon/farfetch_d/normal.pal
index 2a2dfd6aa..2a2dfd6aa 100644
--- a/graphics/pokemon/palettes/farfetch_d_palette.pal
+++ b/graphics/pokemon/farfetch_d/normal.pal
diff --git a/graphics/pokemon/palettes/farfetch_d_shiny_palette.pal b/graphics/pokemon/farfetch_d/shiny.pal
index 5537612ce..5537612ce 100644
--- a/graphics/pokemon/palettes/farfetch_d_shiny_palette.pal
+++ b/graphics/pokemon/farfetch_d/shiny.pal
diff --git a/graphics/pokemon/back_pics/fearow_back_pic.png b/graphics/pokemon/fearow/back.png
index ae54db9a7..ae54db9a7 100644
--- a/graphics/pokemon/back_pics/fearow_back_pic.png
+++ b/graphics/pokemon/fearow/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/fearow_footprint.png b/graphics/pokemon/fearow/footprint.png
index 04ea7924d..04ea7924d 100644
--- a/graphics/pokemon/footprints/fearow_footprint.png
+++ b/graphics/pokemon/fearow/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/fearow_still_front_pic.png b/graphics/pokemon/fearow/front.png
index e4e420728..e4e420728 100644
--- a/graphics/pokemon/front_pics/fearow_still_front_pic.png
+++ b/graphics/pokemon/fearow/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/fearow_icon.png b/graphics/pokemon/fearow/icon.png
index 9a3be9393..9a3be9393 100644
--- a/graphics/pokemon/icons/fearow_icon.png
+++ b/graphics/pokemon/fearow/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/fearow_palette.pal b/graphics/pokemon/fearow/normal.pal
index 231165e59..231165e59 100644
--- a/graphics/pokemon/palettes/fearow_palette.pal
+++ b/graphics/pokemon/fearow/normal.pal
diff --git a/graphics/pokemon/palettes/fearow_shiny_palette.pal b/graphics/pokemon/fearow/shiny.pal
index 686e65a9c..686e65a9c 100644
--- a/graphics/pokemon/palettes/fearow_shiny_palette.pal
+++ b/graphics/pokemon/fearow/shiny.pal
diff --git a/graphics/pokemon/back_pics/feebas_back_pic.png b/graphics/pokemon/feebas/back.png
index 3eabd6021..3eabd6021 100644
--- a/graphics/pokemon/back_pics/feebas_back_pic.png
+++ b/graphics/pokemon/feebas/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/feebas_footprint.png b/graphics/pokemon/feebas/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/feebas_footprint.png
+++ b/graphics/pokemon/feebas/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/feebas_still_front_pic.png b/graphics/pokemon/feebas/front.png
index 036e151e8..036e151e8 100644
--- a/graphics/pokemon/front_pics/feebas_still_front_pic.png
+++ b/graphics/pokemon/feebas/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/feebas_icon.png b/graphics/pokemon/feebas/icon.png
index 19e08797a..19e08797a 100644
--- a/graphics/pokemon/icons/feebas_icon.png
+++ b/graphics/pokemon/feebas/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/feebas_palette.pal b/graphics/pokemon/feebas/normal.pal
index c66deb1e0..c66deb1e0 100644
--- a/graphics/pokemon/palettes/feebas_palette.pal
+++ b/graphics/pokemon/feebas/normal.pal
diff --git a/graphics/pokemon/palettes/feebas_shiny_palette.pal b/graphics/pokemon/feebas/shiny.pal
index 6d85b2866..6d85b2866 100644
--- a/graphics/pokemon/palettes/feebas_shiny_palette.pal
+++ b/graphics/pokemon/feebas/shiny.pal
diff --git a/graphics/pokemon/back_pics/feraligatr_back_pic.png b/graphics/pokemon/feraligatr/back.png
index d996dd8ce..d996dd8ce 100644
--- a/graphics/pokemon/back_pics/feraligatr_back_pic.png
+++ b/graphics/pokemon/feraligatr/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/feraligatr_footprint.png b/graphics/pokemon/feraligatr/footprint.png
index efe894289..efe894289 100644
--- a/graphics/pokemon/footprints/feraligatr_footprint.png
+++ b/graphics/pokemon/feraligatr/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/feraligatr_still_front_pic.png b/graphics/pokemon/feraligatr/front.png
index c44e7afc2..c44e7afc2 100644
--- a/graphics/pokemon/front_pics/feraligatr_still_front_pic.png
+++ b/graphics/pokemon/feraligatr/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/feraligatr_icon.png b/graphics/pokemon/feraligatr/icon.png
index fe3f4fca6..fe3f4fca6 100644
--- a/graphics/pokemon/icons/feraligatr_icon.png
+++ b/graphics/pokemon/feraligatr/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/feraligatr_palette.pal b/graphics/pokemon/feraligatr/normal.pal
index 7fc0a9eb8..7fc0a9eb8 100644
--- a/graphics/pokemon/palettes/feraligatr_palette.pal
+++ b/graphics/pokemon/feraligatr/normal.pal
diff --git a/graphics/pokemon/palettes/feraligatr_shiny_palette.pal b/graphics/pokemon/feraligatr/shiny.pal
index 81c5ebc2a..81c5ebc2a 100644
--- a/graphics/pokemon/palettes/feraligatr_shiny_palette.pal
+++ b/graphics/pokemon/feraligatr/shiny.pal
diff --git a/graphics/pokemon/back_pics/flaaffy_back_pic.png b/graphics/pokemon/flaaffy/back.png
index e0ac771bf..e0ac771bf 100644
--- a/graphics/pokemon/back_pics/flaaffy_back_pic.png
+++ b/graphics/pokemon/flaaffy/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/flaaffy_footprint.png b/graphics/pokemon/flaaffy/footprint.png
index d1695ec80..d1695ec80 100644
--- a/graphics/pokemon/footprints/flaaffy_footprint.png
+++ b/graphics/pokemon/flaaffy/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/flaaffy_still_front_pic.png b/graphics/pokemon/flaaffy/front.png
index 49f794128..49f794128 100644
--- a/graphics/pokemon/front_pics/flaaffy_still_front_pic.png
+++ b/graphics/pokemon/flaaffy/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/flaaffy_icon.png b/graphics/pokemon/flaaffy/icon.png
index 719ed69a3..719ed69a3 100644
--- a/graphics/pokemon/icons/flaaffy_icon.png
+++ b/graphics/pokemon/flaaffy/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/flaaffy_palette.pal b/graphics/pokemon/flaaffy/normal.pal
index 4efbb5bda..4efbb5bda 100644
--- a/graphics/pokemon/palettes/flaaffy_palette.pal
+++ b/graphics/pokemon/flaaffy/normal.pal
diff --git a/graphics/pokemon/palettes/flaaffy_shiny_palette.pal b/graphics/pokemon/flaaffy/shiny.pal
index b99745d84..b99745d84 100644
--- a/graphics/pokemon/palettes/flaaffy_shiny_palette.pal
+++ b/graphics/pokemon/flaaffy/shiny.pal
diff --git a/graphics/pokemon/back_pics/flareon_back_pic.png b/graphics/pokemon/flareon/back.png
index c1efa1306..c1efa1306 100644
--- a/graphics/pokemon/back_pics/flareon_back_pic.png
+++ b/graphics/pokemon/flareon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/flareon_footprint.png b/graphics/pokemon/flareon/footprint.png
index db5d37ed4..db5d37ed4 100644
--- a/graphics/pokemon/footprints/flareon_footprint.png
+++ b/graphics/pokemon/flareon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/flareon_still_front_pic.png b/graphics/pokemon/flareon/front.png
index c36448b18..c36448b18 100644
--- a/graphics/pokemon/front_pics/flareon_still_front_pic.png
+++ b/graphics/pokemon/flareon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/flareon_icon.png b/graphics/pokemon/flareon/icon.png
index 317aa61d0..317aa61d0 100644
--- a/graphics/pokemon/icons/flareon_icon.png
+++ b/graphics/pokemon/flareon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/flareon_palette.pal b/graphics/pokemon/flareon/normal.pal
index a39e1e1f7..a39e1e1f7 100644
--- a/graphics/pokemon/palettes/flareon_palette.pal
+++ b/graphics/pokemon/flareon/normal.pal
diff --git a/graphics/pokemon/palettes/flareon_shiny_palette.pal b/graphics/pokemon/flareon/shiny.pal
index 60c1b337c..60c1b337c 100644
--- a/graphics/pokemon/palettes/flareon_shiny_palette.pal
+++ b/graphics/pokemon/flareon/shiny.pal
diff --git a/graphics/pokemon/back_pics/flygon_back_pic.png b/graphics/pokemon/flygon/back.png
index 576cff1c5..576cff1c5 100644
--- a/graphics/pokemon/back_pics/flygon_back_pic.png
+++ b/graphics/pokemon/flygon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/flygon_footprint.png b/graphics/pokemon/flygon/footprint.png
index 5af877878..5af877878 100644
--- a/graphics/pokemon/footprints/flygon_footprint.png
+++ b/graphics/pokemon/flygon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/flygon_still_front_pic.png b/graphics/pokemon/flygon/front.png
index 310966c6e..310966c6e 100644
--- a/graphics/pokemon/front_pics/flygon_still_front_pic.png
+++ b/graphics/pokemon/flygon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/flygon_icon.png b/graphics/pokemon/flygon/icon.png
index f033c9a88..f033c9a88 100644
--- a/graphics/pokemon/icons/flygon_icon.png
+++ b/graphics/pokemon/flygon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/flygon_palette.pal b/graphics/pokemon/flygon/normal.pal
index 33888cd1a..33888cd1a 100644
--- a/graphics/pokemon/palettes/flygon_palette.pal
+++ b/graphics/pokemon/flygon/normal.pal
diff --git a/graphics/pokemon/palettes/flygon_shiny_palette.pal b/graphics/pokemon/flygon/shiny.pal
index 772834b38..772834b38 100644
--- a/graphics/pokemon/palettes/flygon_shiny_palette.pal
+++ b/graphics/pokemon/flygon/shiny.pal
diff --git a/graphics/pokemon/back_pics/forretress_back_pic.png b/graphics/pokemon/forretress/back.png
index 5761be137..5761be137 100644
--- a/graphics/pokemon/back_pics/forretress_back_pic.png
+++ b/graphics/pokemon/forretress/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/forretress_footprint.png b/graphics/pokemon/forretress/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/forretress_footprint.png
+++ b/graphics/pokemon/forretress/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/forretress_still_front_pic.png b/graphics/pokemon/forretress/front.png
index 511ee5720..511ee5720 100644
--- a/graphics/pokemon/front_pics/forretress_still_front_pic.png
+++ b/graphics/pokemon/forretress/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/forretress_icon.png b/graphics/pokemon/forretress/icon.png
index 056683bec..056683bec 100644
--- a/graphics/pokemon/icons/forretress_icon.png
+++ b/graphics/pokemon/forretress/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/forretress_palette.pal b/graphics/pokemon/forretress/normal.pal
index 285c56291..285c56291 100644
--- a/graphics/pokemon/palettes/forretress_palette.pal
+++ b/graphics/pokemon/forretress/normal.pal
diff --git a/graphics/pokemon/palettes/forretress_shiny_palette.pal b/graphics/pokemon/forretress/shiny.pal
index 7b894a11a..7b894a11a 100644
--- a/graphics/pokemon/palettes/forretress_shiny_palette.pal
+++ b/graphics/pokemon/forretress/shiny.pal
diff --git a/graphics/pokemon/back_pics/furret_back_pic.png b/graphics/pokemon/furret/back.png
index 0dd2873af..0dd2873af 100644
--- a/graphics/pokemon/back_pics/furret_back_pic.png
+++ b/graphics/pokemon/furret/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/furret_footprint.png b/graphics/pokemon/furret/footprint.png
index 225445fb3..225445fb3 100644
--- a/graphics/pokemon/footprints/furret_footprint.png
+++ b/graphics/pokemon/furret/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/furret_still_front_pic.png b/graphics/pokemon/furret/front.png
index 4f7ca56e1..4f7ca56e1 100644
--- a/graphics/pokemon/front_pics/furret_still_front_pic.png
+++ b/graphics/pokemon/furret/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/furret_icon.png b/graphics/pokemon/furret/icon.png
index 6974ee9f3..6974ee9f3 100644
--- a/graphics/pokemon/icons/furret_icon.png
+++ b/graphics/pokemon/furret/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/furret_palette.pal b/graphics/pokemon/furret/normal.pal
index 5996436be..5996436be 100644
--- a/graphics/pokemon/palettes/furret_palette.pal
+++ b/graphics/pokemon/furret/normal.pal
diff --git a/graphics/pokemon/palettes/furret_shiny_palette.pal b/graphics/pokemon/furret/shiny.pal
index 24ebc5bd6..24ebc5bd6 100644
--- a/graphics/pokemon/palettes/furret_shiny_palette.pal
+++ b/graphics/pokemon/furret/shiny.pal
diff --git a/graphics/pokemon/back_pics/gardevoir_back_pic.png b/graphics/pokemon/gardevoir/back.png
index 9f975a82c..9f975a82c 100644
--- a/graphics/pokemon/back_pics/gardevoir_back_pic.png
+++ b/graphics/pokemon/gardevoir/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/gardevoir_footprint.png b/graphics/pokemon/gardevoir/footprint.png
index fd9f4755b..fd9f4755b 100644
--- a/graphics/pokemon/footprints/gardevoir_footprint.png
+++ b/graphics/pokemon/gardevoir/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/gardevoir_still_front_pic.png b/graphics/pokemon/gardevoir/front.png
index 27de874ac..27de874ac 100644
--- a/graphics/pokemon/front_pics/gardevoir_still_front_pic.png
+++ b/graphics/pokemon/gardevoir/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/gardevoir_icon.png b/graphics/pokemon/gardevoir/icon.png
index 958ea7f62..958ea7f62 100644
--- a/graphics/pokemon/icons/gardevoir_icon.png
+++ b/graphics/pokemon/gardevoir/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/gardevoir_palette.pal b/graphics/pokemon/gardevoir/normal.pal
index 1e513ae87..1e513ae87 100644
--- a/graphics/pokemon/palettes/gardevoir_palette.pal
+++ b/graphics/pokemon/gardevoir/normal.pal
diff --git a/graphics/pokemon/palettes/gardevoir_shiny_palette.pal b/graphics/pokemon/gardevoir/shiny.pal
index b588f6eea..b588f6eea 100644
--- a/graphics/pokemon/palettes/gardevoir_shiny_palette.pal
+++ b/graphics/pokemon/gardevoir/shiny.pal
diff --git a/graphics/pokemon/back_pics/gastly_back_pic.png b/graphics/pokemon/gastly/back.png
index 3ff1badde..3ff1badde 100644
--- a/graphics/pokemon/back_pics/gastly_back_pic.png
+++ b/graphics/pokemon/gastly/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/gastly_footprint.png b/graphics/pokemon/gastly/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/gastly_footprint.png
+++ b/graphics/pokemon/gastly/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/gastly_still_front_pic.png b/graphics/pokemon/gastly/front.png
index 444ac485a..444ac485a 100644
--- a/graphics/pokemon/front_pics/gastly_still_front_pic.png
+++ b/graphics/pokemon/gastly/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/gastly_icon.png b/graphics/pokemon/gastly/icon.png
index 6a33a8ab5..6a33a8ab5 100644
--- a/graphics/pokemon/icons/gastly_icon.png
+++ b/graphics/pokemon/gastly/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/gastly_palette.pal b/graphics/pokemon/gastly/normal.pal
index 6098ec195..6098ec195 100644
--- a/graphics/pokemon/palettes/gastly_palette.pal
+++ b/graphics/pokemon/gastly/normal.pal
diff --git a/graphics/pokemon/palettes/gastly_shiny_palette.pal b/graphics/pokemon/gastly/shiny.pal
index 350cb8abf..350cb8abf 100644
--- a/graphics/pokemon/palettes/gastly_shiny_palette.pal
+++ b/graphics/pokemon/gastly/shiny.pal
diff --git a/graphics/pokemon/back_pics/gengar_back_pic.png b/graphics/pokemon/gengar/back.png
index 75278dc1f..75278dc1f 100644
--- a/graphics/pokemon/back_pics/gengar_back_pic.png
+++ b/graphics/pokemon/gengar/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/gengar_footprint.png b/graphics/pokemon/gengar/footprint.png
index 0eb8fcebf..0eb8fcebf 100644
--- a/graphics/pokemon/footprints/gengar_footprint.png
+++ b/graphics/pokemon/gengar/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/gengar_still_front_pic.png b/graphics/pokemon/gengar/front.png
index 1bb2468e8..1bb2468e8 100644
--- a/graphics/pokemon/front_pics/gengar_still_front_pic.png
+++ b/graphics/pokemon/gengar/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/gengar_icon.png b/graphics/pokemon/gengar/icon.png
index bbc3d758d..bbc3d758d 100644
--- a/graphics/pokemon/icons/gengar_icon.png
+++ b/graphics/pokemon/gengar/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/gengar_palette.pal b/graphics/pokemon/gengar/normal.pal
index 6fe99805e..6fe99805e 100644
--- a/graphics/pokemon/palettes/gengar_palette.pal
+++ b/graphics/pokemon/gengar/normal.pal
diff --git a/graphics/pokemon/palettes/gengar_shiny_palette.pal b/graphics/pokemon/gengar/shiny.pal
index d3f61f7d5..d3f61f7d5 100644
--- a/graphics/pokemon/palettes/gengar_shiny_palette.pal
+++ b/graphics/pokemon/gengar/shiny.pal
diff --git a/graphics/pokemon/back_pics/geodude_back_pic.png b/graphics/pokemon/geodude/back.png
index 29a4e3f3d..29a4e3f3d 100644
--- a/graphics/pokemon/back_pics/geodude_back_pic.png
+++ b/graphics/pokemon/geodude/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/geodude_footprint.png b/graphics/pokemon/geodude/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/geodude_footprint.png
+++ b/graphics/pokemon/geodude/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/geodude_still_front_pic.png b/graphics/pokemon/geodude/front.png
index f6d2317d4..f6d2317d4 100644
--- a/graphics/pokemon/front_pics/geodude_still_front_pic.png
+++ b/graphics/pokemon/geodude/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/geodude_icon.png b/graphics/pokemon/geodude/icon.png
index da39c60f0..da39c60f0 100644
--- a/graphics/pokemon/icons/geodude_icon.png
+++ b/graphics/pokemon/geodude/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/geodude_palette.pal b/graphics/pokemon/geodude/normal.pal
index fd6264307..fd6264307 100644
--- a/graphics/pokemon/palettes/geodude_palette.pal
+++ b/graphics/pokemon/geodude/normal.pal
diff --git a/graphics/pokemon/palettes/geodude_shiny_palette.pal b/graphics/pokemon/geodude/shiny.pal
index 3ea7069c9..3ea7069c9 100644
--- a/graphics/pokemon/palettes/geodude_shiny_palette.pal
+++ b/graphics/pokemon/geodude/shiny.pal
diff --git a/graphics/pokemon/back_pics/girafarig_back_pic.png b/graphics/pokemon/girafarig/back.png
index 8d86e1f79..8d86e1f79 100644
--- a/graphics/pokemon/back_pics/girafarig_back_pic.png
+++ b/graphics/pokemon/girafarig/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/girafarig_footprint.png b/graphics/pokemon/girafarig/footprint.png
index f7af3f622..f7af3f622 100644
--- a/graphics/pokemon/footprints/girafarig_footprint.png
+++ b/graphics/pokemon/girafarig/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/girafarig_still_front_pic.png b/graphics/pokemon/girafarig/front.png
index bcada08dd..bcada08dd 100644
--- a/graphics/pokemon/front_pics/girafarig_still_front_pic.png
+++ b/graphics/pokemon/girafarig/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/girafarig_icon.png b/graphics/pokemon/girafarig/icon.png
index c8b79b132..c8b79b132 100644
--- a/graphics/pokemon/icons/girafarig_icon.png
+++ b/graphics/pokemon/girafarig/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/girafarig_palette.pal b/graphics/pokemon/girafarig/normal.pal
index 03e09de81..03e09de81 100644
--- a/graphics/pokemon/palettes/girafarig_palette.pal
+++ b/graphics/pokemon/girafarig/normal.pal
diff --git a/graphics/pokemon/palettes/girafarig_shiny_palette.pal b/graphics/pokemon/girafarig/shiny.pal
index d720557a7..d720557a7 100644
--- a/graphics/pokemon/palettes/girafarig_shiny_palette.pal
+++ b/graphics/pokemon/girafarig/shiny.pal
diff --git a/graphics/pokemon/back_pics/glalie_back_pic.png b/graphics/pokemon/glalie/back.png
index 9c73ee9b2..9c73ee9b2 100644
--- a/graphics/pokemon/back_pics/glalie_back_pic.png
+++ b/graphics/pokemon/glalie/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/glalie_footprint.png b/graphics/pokemon/glalie/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/glalie_footprint.png
+++ b/graphics/pokemon/glalie/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/glalie_still_front_pic.png b/graphics/pokemon/glalie/front.png
index c49ea517c..c49ea517c 100644
--- a/graphics/pokemon/front_pics/glalie_still_front_pic.png
+++ b/graphics/pokemon/glalie/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/glalie_icon.png b/graphics/pokemon/glalie/icon.png
index 0fc66c900..0fc66c900 100644
--- a/graphics/pokemon/icons/glalie_icon.png
+++ b/graphics/pokemon/glalie/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/glalie_palette.pal b/graphics/pokemon/glalie/normal.pal
index aeadcf782..aeadcf782 100644
--- a/graphics/pokemon/palettes/glalie_palette.pal
+++ b/graphics/pokemon/glalie/normal.pal
diff --git a/graphics/pokemon/palettes/glalie_shiny_palette.pal b/graphics/pokemon/glalie/shiny.pal
index c45ff937f..c45ff937f 100644
--- a/graphics/pokemon/palettes/glalie_shiny_palette.pal
+++ b/graphics/pokemon/glalie/shiny.pal
diff --git a/graphics/pokemon/back_pics/gligar_back_pic.png b/graphics/pokemon/gligar/back.png
index 8179867e9..8179867e9 100644
--- a/graphics/pokemon/back_pics/gligar_back_pic.png
+++ b/graphics/pokemon/gligar/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/gligar_footprint.png b/graphics/pokemon/gligar/footprint.png
index 3ca9864f0..3ca9864f0 100644
--- a/graphics/pokemon/footprints/gligar_footprint.png
+++ b/graphics/pokemon/gligar/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/gligar_still_front_pic.png b/graphics/pokemon/gligar/front.png
index b6bb68483..b6bb68483 100644
--- a/graphics/pokemon/front_pics/gligar_still_front_pic.png
+++ b/graphics/pokemon/gligar/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/gligar_icon.png b/graphics/pokemon/gligar/icon.png
index baa8414a7..baa8414a7 100644
--- a/graphics/pokemon/icons/gligar_icon.png
+++ b/graphics/pokemon/gligar/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/gligar_palette.pal b/graphics/pokemon/gligar/normal.pal
index 2f5ba7645..2f5ba7645 100644
--- a/graphics/pokemon/palettes/gligar_palette.pal
+++ b/graphics/pokemon/gligar/normal.pal
diff --git a/graphics/pokemon/palettes/gligar_shiny_palette.pal b/graphics/pokemon/gligar/shiny.pal
index 9b1d7d308..9b1d7d308 100644
--- a/graphics/pokemon/palettes/gligar_shiny_palette.pal
+++ b/graphics/pokemon/gligar/shiny.pal
diff --git a/graphics/pokemon/back_pics/gloom_back_pic.png b/graphics/pokemon/gloom/back.png
index 8b4d4221b..8b4d4221b 100644
--- a/graphics/pokemon/back_pics/gloom_back_pic.png
+++ b/graphics/pokemon/gloom/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/gloom_footprint.png b/graphics/pokemon/gloom/footprint.png
index 7e9c265e8..7e9c265e8 100644
--- a/graphics/pokemon/footprints/gloom_footprint.png
+++ b/graphics/pokemon/gloom/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/gloom_still_front_pic.png b/graphics/pokemon/gloom/front.png
index 5bcb4fa46..5bcb4fa46 100644
--- a/graphics/pokemon/front_pics/gloom_still_front_pic.png
+++ b/graphics/pokemon/gloom/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/gloom_icon.png b/graphics/pokemon/gloom/icon.png
index 99c487dd2..99c487dd2 100644
--- a/graphics/pokemon/icons/gloom_icon.png
+++ b/graphics/pokemon/gloom/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/gloom_palette.pal b/graphics/pokemon/gloom/normal.pal
index 9a3ea471b..9a3ea471b 100644
--- a/graphics/pokemon/palettes/gloom_palette.pal
+++ b/graphics/pokemon/gloom/normal.pal
diff --git a/graphics/pokemon/palettes/gloom_shiny_palette.pal b/graphics/pokemon/gloom/shiny.pal
index c5e913980..c5e913980 100644
--- a/graphics/pokemon/palettes/gloom_shiny_palette.pal
+++ b/graphics/pokemon/gloom/shiny.pal
diff --git a/graphics/pokemon/back_pics/golbat_back_pic.png b/graphics/pokemon/golbat/back.png
index caa196036..caa196036 100644
--- a/graphics/pokemon/back_pics/golbat_back_pic.png
+++ b/graphics/pokemon/golbat/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/golbat_footprint.png b/graphics/pokemon/golbat/footprint.png
index 65c126fb3..65c126fb3 100644
--- a/graphics/pokemon/footprints/golbat_footprint.png
+++ b/graphics/pokemon/golbat/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/golbat_still_front_pic.png b/graphics/pokemon/golbat/front.png
index 1c25fe337..1c25fe337 100644
--- a/graphics/pokemon/front_pics/golbat_still_front_pic.png
+++ b/graphics/pokemon/golbat/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/golbat_icon.png b/graphics/pokemon/golbat/icon.png
index 25b3f6821..25b3f6821 100644
--- a/graphics/pokemon/icons/golbat_icon.png
+++ b/graphics/pokemon/golbat/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/golbat_palette.pal b/graphics/pokemon/golbat/normal.pal
index 8c78d7375..8c78d7375 100644
--- a/graphics/pokemon/palettes/golbat_palette.pal
+++ b/graphics/pokemon/golbat/normal.pal
diff --git a/graphics/pokemon/palettes/golbat_shiny_palette.pal b/graphics/pokemon/golbat/shiny.pal
index 7255f93b7..7255f93b7 100644
--- a/graphics/pokemon/palettes/golbat_shiny_palette.pal
+++ b/graphics/pokemon/golbat/shiny.pal
diff --git a/graphics/pokemon/back_pics/goldeen_back_pic.png b/graphics/pokemon/goldeen/back.png
index 8ac7cb7bc..8ac7cb7bc 100644
--- a/graphics/pokemon/back_pics/goldeen_back_pic.png
+++ b/graphics/pokemon/goldeen/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/goldeen_footprint.png b/graphics/pokemon/goldeen/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/goldeen_footprint.png
+++ b/graphics/pokemon/goldeen/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/goldeen_still_front_pic.png b/graphics/pokemon/goldeen/front.png
index 5908b3dda..5908b3dda 100644
--- a/graphics/pokemon/front_pics/goldeen_still_front_pic.png
+++ b/graphics/pokemon/goldeen/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/goldeen_icon.png b/graphics/pokemon/goldeen/icon.png
index 9dc3bff80..9dc3bff80 100644
--- a/graphics/pokemon/icons/goldeen_icon.png
+++ b/graphics/pokemon/goldeen/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/goldeen_palette.pal b/graphics/pokemon/goldeen/normal.pal
index d88f14932..d88f14932 100644
--- a/graphics/pokemon/palettes/goldeen_palette.pal
+++ b/graphics/pokemon/goldeen/normal.pal
diff --git a/graphics/pokemon/palettes/goldeen_shiny_palette.pal b/graphics/pokemon/goldeen/shiny.pal
index d2a881523..d2a881523 100644
--- a/graphics/pokemon/palettes/goldeen_shiny_palette.pal
+++ b/graphics/pokemon/goldeen/shiny.pal
diff --git a/graphics/pokemon/back_pics/golduck_back_pic.png b/graphics/pokemon/golduck/back.png
index 1422a73ae..1422a73ae 100644
--- a/graphics/pokemon/back_pics/golduck_back_pic.png
+++ b/graphics/pokemon/golduck/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/golduck_footprint.png b/graphics/pokemon/golduck/footprint.png
index 63ba752e4..63ba752e4 100644
--- a/graphics/pokemon/footprints/golduck_footprint.png
+++ b/graphics/pokemon/golduck/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/golduck_still_front_pic.png b/graphics/pokemon/golduck/front.png
index be5eea3bc..be5eea3bc 100644
--- a/graphics/pokemon/front_pics/golduck_still_front_pic.png
+++ b/graphics/pokemon/golduck/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/golduck_icon.png b/graphics/pokemon/golduck/icon.png
index c0c922834..c0c922834 100644
--- a/graphics/pokemon/icons/golduck_icon.png
+++ b/graphics/pokemon/golduck/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/golduck_palette.pal b/graphics/pokemon/golduck/normal.pal
index ca01ee358..ca01ee358 100644
--- a/graphics/pokemon/palettes/golduck_palette.pal
+++ b/graphics/pokemon/golduck/normal.pal
diff --git a/graphics/pokemon/palettes/golduck_shiny_palette.pal b/graphics/pokemon/golduck/shiny.pal
index 858fc677c..858fc677c 100644
--- a/graphics/pokemon/palettes/golduck_shiny_palette.pal
+++ b/graphics/pokemon/golduck/shiny.pal
diff --git a/graphics/pokemon/back_pics/golem_back_pic.png b/graphics/pokemon/golem/back.png
index fb27ae43f..fb27ae43f 100644
--- a/graphics/pokemon/back_pics/golem_back_pic.png
+++ b/graphics/pokemon/golem/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/golem_footprint.png b/graphics/pokemon/golem/footprint.png
index 8ddc6345c..8ddc6345c 100644
--- a/graphics/pokemon/footprints/golem_footprint.png
+++ b/graphics/pokemon/golem/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/golem_still_front_pic.png b/graphics/pokemon/golem/front.png
index 4901bf0a1..4901bf0a1 100644
--- a/graphics/pokemon/front_pics/golem_still_front_pic.png
+++ b/graphics/pokemon/golem/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/golem_icon.png b/graphics/pokemon/golem/icon.png
index 480f8c0bb..480f8c0bb 100644
--- a/graphics/pokemon/icons/golem_icon.png
+++ b/graphics/pokemon/golem/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/golem_palette.pal b/graphics/pokemon/golem/normal.pal
index e373f3ade..e373f3ade 100644
--- a/graphics/pokemon/palettes/golem_palette.pal
+++ b/graphics/pokemon/golem/normal.pal
diff --git a/graphics/pokemon/palettes/golem_shiny_palette.pal b/graphics/pokemon/golem/shiny.pal
index 41b80863c..41b80863c 100644
--- a/graphics/pokemon/palettes/golem_shiny_palette.pal
+++ b/graphics/pokemon/golem/shiny.pal
diff --git a/graphics/pokemon/back_pics/gorebyss_back_pic.png b/graphics/pokemon/gorebyss/back.png
index aaf24366b..aaf24366b 100644
--- a/graphics/pokemon/back_pics/gorebyss_back_pic.png
+++ b/graphics/pokemon/gorebyss/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/gorebyss_footprint.png b/graphics/pokemon/gorebyss/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/gorebyss_footprint.png
+++ b/graphics/pokemon/gorebyss/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/gorebyss_still_front_pic.png b/graphics/pokemon/gorebyss/front.png
index ba017418c..ba017418c 100644
--- a/graphics/pokemon/front_pics/gorebyss_still_front_pic.png
+++ b/graphics/pokemon/gorebyss/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/gorebyss_icon.png b/graphics/pokemon/gorebyss/icon.png
index 7dc8bc476..7dc8bc476 100644
--- a/graphics/pokemon/icons/gorebyss_icon.png
+++ b/graphics/pokemon/gorebyss/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/gorebyss_palette.pal b/graphics/pokemon/gorebyss/normal.pal
index 432c0eccc..432c0eccc 100644
--- a/graphics/pokemon/palettes/gorebyss_palette.pal
+++ b/graphics/pokemon/gorebyss/normal.pal
diff --git a/graphics/pokemon/palettes/gorebyss_shiny_palette.pal b/graphics/pokemon/gorebyss/shiny.pal
index 693375005..693375005 100644
--- a/graphics/pokemon/palettes/gorebyss_shiny_palette.pal
+++ b/graphics/pokemon/gorebyss/shiny.pal
diff --git a/graphics/pokemon/back_pics/granbull_back_pic.png b/graphics/pokemon/granbull/back.png
index 2ac044da6..2ac044da6 100644
--- a/graphics/pokemon/back_pics/granbull_back_pic.png
+++ b/graphics/pokemon/granbull/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/granbull_footprint.png b/graphics/pokemon/granbull/footprint.png
index 010b5fb67..010b5fb67 100644
--- a/graphics/pokemon/footprints/granbull_footprint.png
+++ b/graphics/pokemon/granbull/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/granbull_still_front_pic.png b/graphics/pokemon/granbull/front.png
index ee4c40b25..ee4c40b25 100644
--- a/graphics/pokemon/front_pics/granbull_still_front_pic.png
+++ b/graphics/pokemon/granbull/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/granbull_icon.png b/graphics/pokemon/granbull/icon.png
index 89beb7a8c..89beb7a8c 100644
--- a/graphics/pokemon/icons/granbull_icon.png
+++ b/graphics/pokemon/granbull/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/granbull_palette.pal b/graphics/pokemon/granbull/normal.pal
index b83b14d16..b83b14d16 100644
--- a/graphics/pokemon/palettes/granbull_palette.pal
+++ b/graphics/pokemon/granbull/normal.pal
diff --git a/graphics/pokemon/palettes/granbull_shiny_palette.pal b/graphics/pokemon/granbull/shiny.pal
index a8dfec728..a8dfec728 100644
--- a/graphics/pokemon/palettes/granbull_shiny_palette.pal
+++ b/graphics/pokemon/granbull/shiny.pal
diff --git a/graphics/pokemon/back_pics/graveler_back_pic.png b/graphics/pokemon/graveler/back.png
index 79e87cee9..79e87cee9 100644
--- a/graphics/pokemon/back_pics/graveler_back_pic.png
+++ b/graphics/pokemon/graveler/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/graveler_footprint.png b/graphics/pokemon/graveler/footprint.png
index c836ad3f4..c836ad3f4 100644
--- a/graphics/pokemon/footprints/graveler_footprint.png
+++ b/graphics/pokemon/graveler/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/graveler_still_front_pic.png b/graphics/pokemon/graveler/front.png
index 384ebacee..384ebacee 100644
--- a/graphics/pokemon/front_pics/graveler_still_front_pic.png
+++ b/graphics/pokemon/graveler/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/graveler_icon.png b/graphics/pokemon/graveler/icon.png
index 84e81dc10..84e81dc10 100644
--- a/graphics/pokemon/icons/graveler_icon.png
+++ b/graphics/pokemon/graveler/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/graveler_palette.pal b/graphics/pokemon/graveler/normal.pal
index 766d69f41..766d69f41 100644
--- a/graphics/pokemon/palettes/graveler_palette.pal
+++ b/graphics/pokemon/graveler/normal.pal
diff --git a/graphics/pokemon/palettes/graveler_shiny_palette.pal b/graphics/pokemon/graveler/shiny.pal
index 42027a8db..42027a8db 100644
--- a/graphics/pokemon/palettes/graveler_shiny_palette.pal
+++ b/graphics/pokemon/graveler/shiny.pal
diff --git a/graphics/pokemon/back_pics/grimer_back_pic.png b/graphics/pokemon/grimer/back.png
index 9df0a8bfb..9df0a8bfb 100644
--- a/graphics/pokemon/back_pics/grimer_back_pic.png
+++ b/graphics/pokemon/grimer/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/grimer_footprint.png b/graphics/pokemon/grimer/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/grimer_footprint.png
+++ b/graphics/pokemon/grimer/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/grimer_still_front_pic.png b/graphics/pokemon/grimer/front.png
index a0c6b05ce..a0c6b05ce 100644
--- a/graphics/pokemon/front_pics/grimer_still_front_pic.png
+++ b/graphics/pokemon/grimer/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/grimer_icon.png b/graphics/pokemon/grimer/icon.png
index c814df542..c814df542 100644
--- a/graphics/pokemon/icons/grimer_icon.png
+++ b/graphics/pokemon/grimer/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/grimer_palette.pal b/graphics/pokemon/grimer/normal.pal
index 0aacf859a..0aacf859a 100644
--- a/graphics/pokemon/palettes/grimer_palette.pal
+++ b/graphics/pokemon/grimer/normal.pal
diff --git a/graphics/pokemon/palettes/grimer_shiny_palette.pal b/graphics/pokemon/grimer/shiny.pal
index 546d2e753..546d2e753 100644
--- a/graphics/pokemon/palettes/grimer_shiny_palette.pal
+++ b/graphics/pokemon/grimer/shiny.pal
diff --git a/graphics/pokemon/back_pics/groudon_back_pic.png b/graphics/pokemon/groudon/back.png
index e2b711932..e2b711932 100644
--- a/graphics/pokemon/back_pics/groudon_back_pic.png
+++ b/graphics/pokemon/groudon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/groudon_footprint.png b/graphics/pokemon/groudon/footprint.png
index cb80ba48d..cb80ba48d 100644
--- a/graphics/pokemon/footprints/groudon_footprint.png
+++ b/graphics/pokemon/groudon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/groudon_still_front_pic.png b/graphics/pokemon/groudon/front.png
index 2e768694f..2e768694f 100644
--- a/graphics/pokemon/front_pics/groudon_still_front_pic.png
+++ b/graphics/pokemon/groudon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/groudon_icon.png b/graphics/pokemon/groudon/icon.png
index 2b8707bb8..2b8707bb8 100644
--- a/graphics/pokemon/icons/groudon_icon.png
+++ b/graphics/pokemon/groudon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/groudon_palette.pal b/graphics/pokemon/groudon/normal.pal
index 24c99e510..24c99e510 100644
--- a/graphics/pokemon/palettes/groudon_palette.pal
+++ b/graphics/pokemon/groudon/normal.pal
diff --git a/graphics/pokemon/palettes/groudon_shiny_palette.pal b/graphics/pokemon/groudon/shiny.pal
index 6c0a16585..6c0a16585 100644
--- a/graphics/pokemon/palettes/groudon_shiny_palette.pal
+++ b/graphics/pokemon/groudon/shiny.pal
diff --git a/graphics/pokemon/back_pics/grovyle_back_pic.png b/graphics/pokemon/grovyle/back.png
index 1ffed7b90..1ffed7b90 100644
--- a/graphics/pokemon/back_pics/grovyle_back_pic.png
+++ b/graphics/pokemon/grovyle/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/grovyle_footprint.png b/graphics/pokemon/grovyle/footprint.png
index c78ea507c..c78ea507c 100644
--- a/graphics/pokemon/footprints/grovyle_footprint.png
+++ b/graphics/pokemon/grovyle/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/grovyle_still_front_pic.png b/graphics/pokemon/grovyle/front.png
index 95a19a7ca..95a19a7ca 100644
--- a/graphics/pokemon/front_pics/grovyle_still_front_pic.png
+++ b/graphics/pokemon/grovyle/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/grovyle_icon.png b/graphics/pokemon/grovyle/icon.png
index bed04dc98..bed04dc98 100644
--- a/graphics/pokemon/icons/grovyle_icon.png
+++ b/graphics/pokemon/grovyle/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/grovyle_palette.pal b/graphics/pokemon/grovyle/normal.pal
index a1e6181fc..a1e6181fc 100644
--- a/graphics/pokemon/palettes/grovyle_palette.pal
+++ b/graphics/pokemon/grovyle/normal.pal
diff --git a/graphics/pokemon/palettes/grovyle_shiny_palette.pal b/graphics/pokemon/grovyle/shiny.pal
index c61afa4a3..c61afa4a3 100644
--- a/graphics/pokemon/palettes/grovyle_shiny_palette.pal
+++ b/graphics/pokemon/grovyle/shiny.pal
diff --git a/graphics/pokemon/back_pics/growlithe_back_pic.png b/graphics/pokemon/growlithe/back.png
index 2b89351a3..2b89351a3 100644
--- a/graphics/pokemon/back_pics/growlithe_back_pic.png
+++ b/graphics/pokemon/growlithe/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/growlithe_footprint.png b/graphics/pokemon/growlithe/footprint.png
index 2517cdcba..2517cdcba 100644
--- a/graphics/pokemon/footprints/growlithe_footprint.png
+++ b/graphics/pokemon/growlithe/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/growlithe_still_front_pic.png b/graphics/pokemon/growlithe/front.png
index 6a7f3f9a4..6a7f3f9a4 100644
--- a/graphics/pokemon/front_pics/growlithe_still_front_pic.png
+++ b/graphics/pokemon/growlithe/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/growlithe_icon.png b/graphics/pokemon/growlithe/icon.png
index 8870c8b4f..8870c8b4f 100644
--- a/graphics/pokemon/icons/growlithe_icon.png
+++ b/graphics/pokemon/growlithe/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/growlithe_palette.pal b/graphics/pokemon/growlithe/normal.pal
index bd55be2a7..bd55be2a7 100644
--- a/graphics/pokemon/palettes/growlithe_palette.pal
+++ b/graphics/pokemon/growlithe/normal.pal
diff --git a/graphics/pokemon/palettes/growlithe_shiny_palette.pal b/graphics/pokemon/growlithe/shiny.pal
index 0604c9c25..0604c9c25 100644
--- a/graphics/pokemon/palettes/growlithe_shiny_palette.pal
+++ b/graphics/pokemon/growlithe/shiny.pal
diff --git a/graphics/pokemon/back_pics/grumpig_back_pic.png b/graphics/pokemon/grumpig/back.png
index 08d476c29..08d476c29 100644
--- a/graphics/pokemon/back_pics/grumpig_back_pic.png
+++ b/graphics/pokemon/grumpig/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/grumpig_footprint.png b/graphics/pokemon/grumpig/footprint.png
index ddff0e500..ddff0e500 100644
--- a/graphics/pokemon/footprints/grumpig_footprint.png
+++ b/graphics/pokemon/grumpig/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/grumpig_still_front_pic.png b/graphics/pokemon/grumpig/front.png
index 42604aed2..42604aed2 100644
--- a/graphics/pokemon/front_pics/grumpig_still_front_pic.png
+++ b/graphics/pokemon/grumpig/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/grumpig_icon.png b/graphics/pokemon/grumpig/icon.png
index fb3cac59d..fb3cac59d 100644
--- a/graphics/pokemon/icons/grumpig_icon.png
+++ b/graphics/pokemon/grumpig/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/grumpig_palette.pal b/graphics/pokemon/grumpig/normal.pal
index c49601f91..c49601f91 100644
--- a/graphics/pokemon/palettes/grumpig_palette.pal
+++ b/graphics/pokemon/grumpig/normal.pal
diff --git a/graphics/pokemon/palettes/grumpig_shiny_palette.pal b/graphics/pokemon/grumpig/shiny.pal
index b9c88ae3d..b9c88ae3d 100644
--- a/graphics/pokemon/palettes/grumpig_shiny_palette.pal
+++ b/graphics/pokemon/grumpig/shiny.pal
diff --git a/graphics/pokemon/back_pics/gulpin_back_pic.png b/graphics/pokemon/gulpin/back.png
index 928f291d1..928f291d1 100644
--- a/graphics/pokemon/back_pics/gulpin_back_pic.png
+++ b/graphics/pokemon/gulpin/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/gulpin_footprint.png b/graphics/pokemon/gulpin/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/gulpin_footprint.png
+++ b/graphics/pokemon/gulpin/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/gulpin_still_front_pic.png b/graphics/pokemon/gulpin/front.png
index 14809cf73..14809cf73 100644
--- a/graphics/pokemon/front_pics/gulpin_still_front_pic.png
+++ b/graphics/pokemon/gulpin/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/gulpin_icon.png b/graphics/pokemon/gulpin/icon.png
index 53eed645f..53eed645f 100644
--- a/graphics/pokemon/icons/gulpin_icon.png
+++ b/graphics/pokemon/gulpin/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/gulpin_palette.pal b/graphics/pokemon/gulpin/normal.pal
index 588be1e4a..588be1e4a 100644
--- a/graphics/pokemon/palettes/gulpin_palette.pal
+++ b/graphics/pokemon/gulpin/normal.pal
diff --git a/graphics/pokemon/palettes/gulpin_shiny_palette.pal b/graphics/pokemon/gulpin/shiny.pal
index 83373f072..83373f072 100644
--- a/graphics/pokemon/palettes/gulpin_shiny_palette.pal
+++ b/graphics/pokemon/gulpin/shiny.pal
diff --git a/graphics/pokemon/back_pics/gyarados_back_pic.png b/graphics/pokemon/gyarados/back.png
index 3db55190d..3db55190d 100644
--- a/graphics/pokemon/back_pics/gyarados_back_pic.png
+++ b/graphics/pokemon/gyarados/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/gyarados_footprint.png b/graphics/pokemon/gyarados/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/gyarados_footprint.png
+++ b/graphics/pokemon/gyarados/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/gyarados_still_front_pic.png b/graphics/pokemon/gyarados/front.png
index 7e24eac3b..7e24eac3b 100644
--- a/graphics/pokemon/front_pics/gyarados_still_front_pic.png
+++ b/graphics/pokemon/gyarados/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/gyarados_icon.png b/graphics/pokemon/gyarados/icon.png
index 13e611d09..13e611d09 100644
--- a/graphics/pokemon/icons/gyarados_icon.png
+++ b/graphics/pokemon/gyarados/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/gyarados_palette.pal b/graphics/pokemon/gyarados/normal.pal
index 2a74de808..2a74de808 100644
--- a/graphics/pokemon/palettes/gyarados_palette.pal
+++ b/graphics/pokemon/gyarados/normal.pal
diff --git a/graphics/pokemon/palettes/gyarados_shiny_palette.pal b/graphics/pokemon/gyarados/shiny.pal
index d9f55f451..d9f55f451 100644
--- a/graphics/pokemon/palettes/gyarados_shiny_palette.pal
+++ b/graphics/pokemon/gyarados/shiny.pal
diff --git a/graphics/pokemon/back_pics/hariyama_back_pic.png b/graphics/pokemon/hariyama/back.png
index 09eba4b52..09eba4b52 100644
--- a/graphics/pokemon/back_pics/hariyama_back_pic.png
+++ b/graphics/pokemon/hariyama/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/hariyama_footprint.png b/graphics/pokemon/hariyama/footprint.png
index ab5d9f369..ab5d9f369 100644
--- a/graphics/pokemon/footprints/hariyama_footprint.png
+++ b/graphics/pokemon/hariyama/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/hariyama_still_front_pic.png b/graphics/pokemon/hariyama/front.png
index abefe0de2..abefe0de2 100644
--- a/graphics/pokemon/front_pics/hariyama_still_front_pic.png
+++ b/graphics/pokemon/hariyama/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/hariyama_icon.png b/graphics/pokemon/hariyama/icon.png
index b16b04907..b16b04907 100644
--- a/graphics/pokemon/icons/hariyama_icon.png
+++ b/graphics/pokemon/hariyama/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/hariyama_palette.pal b/graphics/pokemon/hariyama/normal.pal
index 99b5902d9..99b5902d9 100644
--- a/graphics/pokemon/palettes/hariyama_palette.pal
+++ b/graphics/pokemon/hariyama/normal.pal
diff --git a/graphics/pokemon/palettes/hariyama_shiny_palette.pal b/graphics/pokemon/hariyama/shiny.pal
index 14281f812..14281f812 100644
--- a/graphics/pokemon/palettes/hariyama_shiny_palette.pal
+++ b/graphics/pokemon/hariyama/shiny.pal
diff --git a/graphics/pokemon/back_pics/haunter_back_pic.png b/graphics/pokemon/haunter/back.png
index ee4740636..ee4740636 100644
--- a/graphics/pokemon/back_pics/haunter_back_pic.png
+++ b/graphics/pokemon/haunter/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/haunter_footprint.png b/graphics/pokemon/haunter/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/haunter_footprint.png
+++ b/graphics/pokemon/haunter/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/haunter_still_front_pic.png b/graphics/pokemon/haunter/front.png
index db6c29439..db6c29439 100644
--- a/graphics/pokemon/front_pics/haunter_still_front_pic.png
+++ b/graphics/pokemon/haunter/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/haunter_icon.png b/graphics/pokemon/haunter/icon.png
index aac3e15f8..aac3e15f8 100644
--- a/graphics/pokemon/icons/haunter_icon.png
+++ b/graphics/pokemon/haunter/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/haunter_palette.pal b/graphics/pokemon/haunter/normal.pal
index 5f1f2573b..5f1f2573b 100644
--- a/graphics/pokemon/palettes/haunter_palette.pal
+++ b/graphics/pokemon/haunter/normal.pal
diff --git a/graphics/pokemon/palettes/haunter_shiny_palette.pal b/graphics/pokemon/haunter/shiny.pal
index d6cab2588..d6cab2588 100644
--- a/graphics/pokemon/palettes/haunter_shiny_palette.pal
+++ b/graphics/pokemon/haunter/shiny.pal
diff --git a/graphics/pokemon/back_pics/heracross_back_pic.png b/graphics/pokemon/heracross/back.png
index df8202179..df8202179 100644
--- a/graphics/pokemon/back_pics/heracross_back_pic.png
+++ b/graphics/pokemon/heracross/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/heracross_footprint.png b/graphics/pokemon/heracross/footprint.png
index a740a17c9..a740a17c9 100644
--- a/graphics/pokemon/footprints/heracross_footprint.png
+++ b/graphics/pokemon/heracross/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/heracross_still_front_pic.png b/graphics/pokemon/heracross/front.png
index f693a4c46..f693a4c46 100644
--- a/graphics/pokemon/front_pics/heracross_still_front_pic.png
+++ b/graphics/pokemon/heracross/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/heracross_icon.png b/graphics/pokemon/heracross/icon.png
index 994fbe33f..994fbe33f 100644
--- a/graphics/pokemon/icons/heracross_icon.png
+++ b/graphics/pokemon/heracross/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/heracross_palette.pal b/graphics/pokemon/heracross/normal.pal
index 06fe289a5..06fe289a5 100644
--- a/graphics/pokemon/palettes/heracross_palette.pal
+++ b/graphics/pokemon/heracross/normal.pal
diff --git a/graphics/pokemon/palettes/heracross_shiny_palette.pal b/graphics/pokemon/heracross/shiny.pal
index c85ace38b..c85ace38b 100644
--- a/graphics/pokemon/palettes/heracross_shiny_palette.pal
+++ b/graphics/pokemon/heracross/shiny.pal
diff --git a/graphics/pokemon/back_pics/hitmonchan_back_pic.png b/graphics/pokemon/hitmonchan/back.png
index 8d9423071..8d9423071 100644
--- a/graphics/pokemon/back_pics/hitmonchan_back_pic.png
+++ b/graphics/pokemon/hitmonchan/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/hitmonchan_footprint.png b/graphics/pokemon/hitmonchan/footprint.png
index cfd1efd54..cfd1efd54 100644
--- a/graphics/pokemon/footprints/hitmonchan_footprint.png
+++ b/graphics/pokemon/hitmonchan/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/hitmonchan_still_front_pic.png b/graphics/pokemon/hitmonchan/front.png
index 5a16c4070..5a16c4070 100644
--- a/graphics/pokemon/front_pics/hitmonchan_still_front_pic.png
+++ b/graphics/pokemon/hitmonchan/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/hitmonchan_icon.png b/graphics/pokemon/hitmonchan/icon.png
index a657a6d74..a657a6d74 100644
--- a/graphics/pokemon/icons/hitmonchan_icon.png
+++ b/graphics/pokemon/hitmonchan/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/hitmonchan_palette.pal b/graphics/pokemon/hitmonchan/normal.pal
index 77c20d85a..77c20d85a 100644
--- a/graphics/pokemon/palettes/hitmonchan_palette.pal
+++ b/graphics/pokemon/hitmonchan/normal.pal
diff --git a/graphics/pokemon/palettes/hitmonchan_shiny_palette.pal b/graphics/pokemon/hitmonchan/shiny.pal
index 2e4a28f0c..2e4a28f0c 100644
--- a/graphics/pokemon/palettes/hitmonchan_shiny_palette.pal
+++ b/graphics/pokemon/hitmonchan/shiny.pal
diff --git a/graphics/pokemon/back_pics/hitmonlee_back_pic.png b/graphics/pokemon/hitmonlee/back.png
index 9aa095a6a..9aa095a6a 100644
--- a/graphics/pokemon/back_pics/hitmonlee_back_pic.png
+++ b/graphics/pokemon/hitmonlee/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/hitmonlee_footprint.png b/graphics/pokemon/hitmonlee/footprint.png
index 505120110..505120110 100644
--- a/graphics/pokemon/footprints/hitmonlee_footprint.png
+++ b/graphics/pokemon/hitmonlee/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/hitmonlee_still_front_pic.png b/graphics/pokemon/hitmonlee/front.png
index 7cb5e4a2d..7cb5e4a2d 100644
--- a/graphics/pokemon/front_pics/hitmonlee_still_front_pic.png
+++ b/graphics/pokemon/hitmonlee/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/hitmonlee_icon.png b/graphics/pokemon/hitmonlee/icon.png
index b45c93686..b45c93686 100644
--- a/graphics/pokemon/icons/hitmonlee_icon.png
+++ b/graphics/pokemon/hitmonlee/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/hitmonlee_palette.pal b/graphics/pokemon/hitmonlee/normal.pal
index 36a7a03a4..36a7a03a4 100644
--- a/graphics/pokemon/palettes/hitmonlee_palette.pal
+++ b/graphics/pokemon/hitmonlee/normal.pal
diff --git a/graphics/pokemon/palettes/hitmonlee_shiny_palette.pal b/graphics/pokemon/hitmonlee/shiny.pal
index 74e6c6452..74e6c6452 100644
--- a/graphics/pokemon/palettes/hitmonlee_shiny_palette.pal
+++ b/graphics/pokemon/hitmonlee/shiny.pal
diff --git a/graphics/pokemon/back_pics/hitmontop_back_pic.png b/graphics/pokemon/hitmontop/back.png
index 09d16414c..09d16414c 100644
--- a/graphics/pokemon/back_pics/hitmontop_back_pic.png
+++ b/graphics/pokemon/hitmontop/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/hitmontop_footprint.png b/graphics/pokemon/hitmontop/footprint.png
index ba8c1cca2..ba8c1cca2 100644
--- a/graphics/pokemon/footprints/hitmontop_footprint.png
+++ b/graphics/pokemon/hitmontop/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/hitmontop_still_front_pic.png b/graphics/pokemon/hitmontop/front.png
index d2d7b5093..d2d7b5093 100644
--- a/graphics/pokemon/front_pics/hitmontop_still_front_pic.png
+++ b/graphics/pokemon/hitmontop/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/hitmontop_icon.png b/graphics/pokemon/hitmontop/icon.png
index c5b8ee564..c5b8ee564 100644
--- a/graphics/pokemon/icons/hitmontop_icon.png
+++ b/graphics/pokemon/hitmontop/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/hitmontop_palette.pal b/graphics/pokemon/hitmontop/normal.pal
index b49c96760..b49c96760 100644
--- a/graphics/pokemon/palettes/hitmontop_palette.pal
+++ b/graphics/pokemon/hitmontop/normal.pal
diff --git a/graphics/pokemon/palettes/hitmontop_shiny_palette.pal b/graphics/pokemon/hitmontop/shiny.pal
index 8c6bbd31f..8c6bbd31f 100644
--- a/graphics/pokemon/palettes/hitmontop_shiny_palette.pal
+++ b/graphics/pokemon/hitmontop/shiny.pal
diff --git a/graphics/pokemon/back_pics/ho_oh_back_pic.png b/graphics/pokemon/ho_oh/back.png
index 9acbdf0cc..9acbdf0cc 100644
--- a/graphics/pokemon/back_pics/ho_oh_back_pic.png
+++ b/graphics/pokemon/ho_oh/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ho_oh_footprint.png b/graphics/pokemon/ho_oh/footprint.png
index adceb3878..adceb3878 100644
--- a/graphics/pokemon/footprints/ho_oh_footprint.png
+++ b/graphics/pokemon/ho_oh/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ho_oh_still_front_pic.png b/graphics/pokemon/ho_oh/front.png
index 97a7c3e25..97a7c3e25 100644
--- a/graphics/pokemon/front_pics/ho_oh_still_front_pic.png
+++ b/graphics/pokemon/ho_oh/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ho_oh_icon.png b/graphics/pokemon/ho_oh/icon.png
index 4cd5ed871..4cd5ed871 100644
--- a/graphics/pokemon/icons/ho_oh_icon.png
+++ b/graphics/pokemon/ho_oh/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ho_oh_palette.pal b/graphics/pokemon/ho_oh/normal.pal
index f4b583541..f4b583541 100644
--- a/graphics/pokemon/palettes/ho_oh_palette.pal
+++ b/graphics/pokemon/ho_oh/normal.pal
diff --git a/graphics/pokemon/palettes/ho_oh_shiny_palette.pal b/graphics/pokemon/ho_oh/shiny.pal
index 2c14ff9e4..2c14ff9e4 100644
--- a/graphics/pokemon/palettes/ho_oh_shiny_palette.pal
+++ b/graphics/pokemon/ho_oh/shiny.pal
diff --git a/graphics/pokemon/back_pics/hoothoot_back_pic.png b/graphics/pokemon/hoothoot/back.png
index 2ab2253bd..2ab2253bd 100644
--- a/graphics/pokemon/back_pics/hoothoot_back_pic.png
+++ b/graphics/pokemon/hoothoot/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/hoothoot_footprint.png b/graphics/pokemon/hoothoot/footprint.png
index 1eacf9116..1eacf9116 100644
--- a/graphics/pokemon/footprints/hoothoot_footprint.png
+++ b/graphics/pokemon/hoothoot/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/hoothoot_still_front_pic.png b/graphics/pokemon/hoothoot/front.png
index 12e160d81..12e160d81 100644
--- a/graphics/pokemon/front_pics/hoothoot_still_front_pic.png
+++ b/graphics/pokemon/hoothoot/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/hoothoot_icon.png b/graphics/pokemon/hoothoot/icon.png
index c25065113..c25065113 100644
--- a/graphics/pokemon/icons/hoothoot_icon.png
+++ b/graphics/pokemon/hoothoot/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/hoothoot_palette.pal b/graphics/pokemon/hoothoot/normal.pal
index f1a3ee54e..f1a3ee54e 100644
--- a/graphics/pokemon/palettes/hoothoot_palette.pal
+++ b/graphics/pokemon/hoothoot/normal.pal
diff --git a/graphics/pokemon/palettes/hoothoot_shiny_palette.pal b/graphics/pokemon/hoothoot/shiny.pal
index 3b951e004..3b951e004 100644
--- a/graphics/pokemon/palettes/hoothoot_shiny_palette.pal
+++ b/graphics/pokemon/hoothoot/shiny.pal
diff --git a/graphics/pokemon/back_pics/hoppip_back_pic.png b/graphics/pokemon/hoppip/back.png
index a5d042909..a5d042909 100644
--- a/graphics/pokemon/back_pics/hoppip_back_pic.png
+++ b/graphics/pokemon/hoppip/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/hoppip_footprint.png b/graphics/pokemon/hoppip/footprint.png
index 0be22ed86..0be22ed86 100644
--- a/graphics/pokemon/footprints/hoppip_footprint.png
+++ b/graphics/pokemon/hoppip/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/hoppip_still_front_pic.png b/graphics/pokemon/hoppip/front.png
index 87110d09c..87110d09c 100644
--- a/graphics/pokemon/front_pics/hoppip_still_front_pic.png
+++ b/graphics/pokemon/hoppip/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/hoppip_icon.png b/graphics/pokemon/hoppip/icon.png
index 0692f69d7..0692f69d7 100644
--- a/graphics/pokemon/icons/hoppip_icon.png
+++ b/graphics/pokemon/hoppip/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/hoppip_palette.pal b/graphics/pokemon/hoppip/normal.pal
index 578494117..578494117 100644
--- a/graphics/pokemon/palettes/hoppip_palette.pal
+++ b/graphics/pokemon/hoppip/normal.pal
diff --git a/graphics/pokemon/palettes/hoppip_shiny_palette.pal b/graphics/pokemon/hoppip/shiny.pal
index c70c55c99..c70c55c99 100644
--- a/graphics/pokemon/palettes/hoppip_shiny_palette.pal
+++ b/graphics/pokemon/hoppip/shiny.pal
diff --git a/graphics/pokemon/back_pics/horsea_back_pic.png b/graphics/pokemon/horsea/back.png
index bd6cb3d2b..bd6cb3d2b 100644
--- a/graphics/pokemon/back_pics/horsea_back_pic.png
+++ b/graphics/pokemon/horsea/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/horsea_footprint.png b/graphics/pokemon/horsea/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/horsea_footprint.png
+++ b/graphics/pokemon/horsea/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/horsea_still_front_pic.png b/graphics/pokemon/horsea/front.png
index 0ee92319e..0ee92319e 100644
--- a/graphics/pokemon/front_pics/horsea_still_front_pic.png
+++ b/graphics/pokemon/horsea/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/horsea_icon.png b/graphics/pokemon/horsea/icon.png
index d57901f51..d57901f51 100644
--- a/graphics/pokemon/icons/horsea_icon.png
+++ b/graphics/pokemon/horsea/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/horsea_palette.pal b/graphics/pokemon/horsea/normal.pal
index d0924f3ac..d0924f3ac 100644
--- a/graphics/pokemon/palettes/horsea_palette.pal
+++ b/graphics/pokemon/horsea/normal.pal
diff --git a/graphics/pokemon/palettes/horsea_shiny_palette.pal b/graphics/pokemon/horsea/shiny.pal
index 73eec42ef..73eec42ef 100644
--- a/graphics/pokemon/palettes/horsea_shiny_palette.pal
+++ b/graphics/pokemon/horsea/shiny.pal
diff --git a/graphics/pokemon/back_pics/houndoom_back_pic.png b/graphics/pokemon/houndoom/back.png
index 6aae855c6..6aae855c6 100644
--- a/graphics/pokemon/back_pics/houndoom_back_pic.png
+++ b/graphics/pokemon/houndoom/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/houndoom_footprint.png b/graphics/pokemon/houndoom/footprint.png
index b1f2c80f4..b1f2c80f4 100644
--- a/graphics/pokemon/footprints/houndoom_footprint.png
+++ b/graphics/pokemon/houndoom/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/houndoom_still_front_pic.png b/graphics/pokemon/houndoom/front.png
index d5ab79d18..d5ab79d18 100644
--- a/graphics/pokemon/front_pics/houndoom_still_front_pic.png
+++ b/graphics/pokemon/houndoom/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/houndoom_icon.png b/graphics/pokemon/houndoom/icon.png
index 8ca4aec3c..8ca4aec3c 100644
--- a/graphics/pokemon/icons/houndoom_icon.png
+++ b/graphics/pokemon/houndoom/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/houndoom_palette.pal b/graphics/pokemon/houndoom/normal.pal
index 676369d07..676369d07 100644
--- a/graphics/pokemon/palettes/houndoom_palette.pal
+++ b/graphics/pokemon/houndoom/normal.pal
diff --git a/graphics/pokemon/palettes/houndoom_shiny_palette.pal b/graphics/pokemon/houndoom/shiny.pal
index 7e7aa56bf..7e7aa56bf 100644
--- a/graphics/pokemon/palettes/houndoom_shiny_palette.pal
+++ b/graphics/pokemon/houndoom/shiny.pal
diff --git a/graphics/pokemon/back_pics/houndour_back_pic.png b/graphics/pokemon/houndour/back.png
index 64e104954..64e104954 100644
--- a/graphics/pokemon/back_pics/houndour_back_pic.png
+++ b/graphics/pokemon/houndour/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/houndour_footprint.png b/graphics/pokemon/houndour/footprint.png
index 3f8161431..3f8161431 100644
--- a/graphics/pokemon/footprints/houndour_footprint.png
+++ b/graphics/pokemon/houndour/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/houndour_still_front_pic.png b/graphics/pokemon/houndour/front.png
index 87bbce73e..87bbce73e 100644
--- a/graphics/pokemon/front_pics/houndour_still_front_pic.png
+++ b/graphics/pokemon/houndour/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/houndour_icon.png b/graphics/pokemon/houndour/icon.png
index 1d397d9bf..1d397d9bf 100644
--- a/graphics/pokemon/icons/houndour_icon.png
+++ b/graphics/pokemon/houndour/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/houndour_palette.pal b/graphics/pokemon/houndour/normal.pal
index 676369d07..676369d07 100644
--- a/graphics/pokemon/palettes/houndour_palette.pal
+++ b/graphics/pokemon/houndour/normal.pal
diff --git a/graphics/pokemon/palettes/houndour_shiny_palette.pal b/graphics/pokemon/houndour/shiny.pal
index 4197f8de7..4197f8de7 100644
--- a/graphics/pokemon/palettes/houndour_shiny_palette.pal
+++ b/graphics/pokemon/houndour/shiny.pal
diff --git a/graphics/pokemon/back_pics/huntail_back_pic.png b/graphics/pokemon/huntail/back.png
index 23ccaac12..23ccaac12 100644
--- a/graphics/pokemon/back_pics/huntail_back_pic.png
+++ b/graphics/pokemon/huntail/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/huntail_footprint.png b/graphics/pokemon/huntail/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/huntail_footprint.png
+++ b/graphics/pokemon/huntail/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/huntail_still_front_pic.png b/graphics/pokemon/huntail/front.png
index 647cdb8ca..647cdb8ca 100644
--- a/graphics/pokemon/front_pics/huntail_still_front_pic.png
+++ b/graphics/pokemon/huntail/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/huntail_icon.png b/graphics/pokemon/huntail/icon.png
index b70fca87e..b70fca87e 100644
--- a/graphics/pokemon/icons/huntail_icon.png
+++ b/graphics/pokemon/huntail/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/huntail_palette.pal b/graphics/pokemon/huntail/normal.pal
index 192061e01..192061e01 100644
--- a/graphics/pokemon/palettes/huntail_palette.pal
+++ b/graphics/pokemon/huntail/normal.pal
diff --git a/graphics/pokemon/palettes/huntail_shiny_palette.pal b/graphics/pokemon/huntail/shiny.pal
index 713c54adf..713c54adf 100644
--- a/graphics/pokemon/palettes/huntail_shiny_palette.pal
+++ b/graphics/pokemon/huntail/shiny.pal
diff --git a/graphics/pokemon/back_pics/hypno_back_pic.png b/graphics/pokemon/hypno/back.png
index 12aec4f4d..12aec4f4d 100644
--- a/graphics/pokemon/back_pics/hypno_back_pic.png
+++ b/graphics/pokemon/hypno/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/hypno_footprint.png b/graphics/pokemon/hypno/footprint.png
index 51f734973..51f734973 100644
--- a/graphics/pokemon/footprints/hypno_footprint.png
+++ b/graphics/pokemon/hypno/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/hypno_still_front_pic.png b/graphics/pokemon/hypno/front.png
index 56687d4a4..56687d4a4 100644
--- a/graphics/pokemon/front_pics/hypno_still_front_pic.png
+++ b/graphics/pokemon/hypno/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/hypno_icon.png b/graphics/pokemon/hypno/icon.png
index 4015f2386..4015f2386 100644
--- a/graphics/pokemon/icons/hypno_icon.png
+++ b/graphics/pokemon/hypno/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/hypno_palette.pal b/graphics/pokemon/hypno/normal.pal
index a91224353..a91224353 100644
--- a/graphics/pokemon/palettes/hypno_palette.pal
+++ b/graphics/pokemon/hypno/normal.pal
diff --git a/graphics/pokemon/palettes/hypno_shiny_palette.pal b/graphics/pokemon/hypno/shiny.pal
index bf99b49c7..bf99b49c7 100644
--- a/graphics/pokemon/palettes/hypno_shiny_palette.pal
+++ b/graphics/pokemon/hypno/shiny.pal
diff --git a/graphics/pokemon/back_pics/igglybuff_back_pic.png b/graphics/pokemon/igglybuff/back.png
index efc417ab5..efc417ab5 100644
--- a/graphics/pokemon/back_pics/igglybuff_back_pic.png
+++ b/graphics/pokemon/igglybuff/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/igglybuff_footprint.png b/graphics/pokemon/igglybuff/footprint.png
index bbb7352a6..bbb7352a6 100644
--- a/graphics/pokemon/footprints/igglybuff_footprint.png
+++ b/graphics/pokemon/igglybuff/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/igglybuff_still_front_pic.png b/graphics/pokemon/igglybuff/front.png
index b232daaac..b232daaac 100644
--- a/graphics/pokemon/front_pics/igglybuff_still_front_pic.png
+++ b/graphics/pokemon/igglybuff/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/igglybuff_icon.png b/graphics/pokemon/igglybuff/icon.png
index 55d1a9eb1..55d1a9eb1 100644
--- a/graphics/pokemon/icons/igglybuff_icon.png
+++ b/graphics/pokemon/igglybuff/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/igglybuff_palette.pal b/graphics/pokemon/igglybuff/normal.pal
index 9b5beb079..9b5beb079 100644
--- a/graphics/pokemon/palettes/igglybuff_palette.pal
+++ b/graphics/pokemon/igglybuff/normal.pal
diff --git a/graphics/pokemon/palettes/igglybuff_shiny_palette.pal b/graphics/pokemon/igglybuff/shiny.pal
index fd1f6fbf8..fd1f6fbf8 100644
--- a/graphics/pokemon/palettes/igglybuff_shiny_palette.pal
+++ b/graphics/pokemon/igglybuff/shiny.pal
diff --git a/graphics/pokemon/back_pics/illumise_back_pic.png b/graphics/pokemon/illumise/back.png
index a06de56a1..a06de56a1 100644
--- a/graphics/pokemon/back_pics/illumise_back_pic.png
+++ b/graphics/pokemon/illumise/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/illumise_footprint.png b/graphics/pokemon/illumise/footprint.png
index 451d532b2..451d532b2 100644
--- a/graphics/pokemon/footprints/illumise_footprint.png
+++ b/graphics/pokemon/illumise/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/illumise_still_front_pic.png b/graphics/pokemon/illumise/front.png
index 14513aee6..14513aee6 100644
--- a/graphics/pokemon/front_pics/illumise_still_front_pic.png
+++ b/graphics/pokemon/illumise/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/illumise_icon.png b/graphics/pokemon/illumise/icon.png
index ac812de37..ac812de37 100644
--- a/graphics/pokemon/icons/illumise_icon.png
+++ b/graphics/pokemon/illumise/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/illumise_palette.pal b/graphics/pokemon/illumise/normal.pal
index 63c55bbc0..63c55bbc0 100644
--- a/graphics/pokemon/palettes/illumise_palette.pal
+++ b/graphics/pokemon/illumise/normal.pal
diff --git a/graphics/pokemon/palettes/illumise_shiny_palette.pal b/graphics/pokemon/illumise/shiny.pal
index 78bdbdc22..78bdbdc22 100644
--- a/graphics/pokemon/palettes/illumise_shiny_palette.pal
+++ b/graphics/pokemon/illumise/shiny.pal
diff --git a/graphics/pokemon/back_pics/ivysaur_back_pic.png b/graphics/pokemon/ivysaur/back.png
index 2a979d70c..2a979d70c 100644
--- a/graphics/pokemon/back_pics/ivysaur_back_pic.png
+++ b/graphics/pokemon/ivysaur/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ivysaur_footprint.png b/graphics/pokemon/ivysaur/footprint.png
index 29206b935..29206b935 100644
--- a/graphics/pokemon/footprints/ivysaur_footprint.png
+++ b/graphics/pokemon/ivysaur/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ivysaur_still_front_pic.png b/graphics/pokemon/ivysaur/front.png
index 659c29fc5..659c29fc5 100644
--- a/graphics/pokemon/front_pics/ivysaur_still_front_pic.png
+++ b/graphics/pokemon/ivysaur/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ivysaur_icon.png b/graphics/pokemon/ivysaur/icon.png
index 2f1627506..2f1627506 100644
--- a/graphics/pokemon/icons/ivysaur_icon.png
+++ b/graphics/pokemon/ivysaur/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ivysaur_palette.pal b/graphics/pokemon/ivysaur/normal.pal
index 82c2ec525..82c2ec525 100644
--- a/graphics/pokemon/palettes/ivysaur_palette.pal
+++ b/graphics/pokemon/ivysaur/normal.pal
diff --git a/graphics/pokemon/palettes/ivysaur_shiny_palette.pal b/graphics/pokemon/ivysaur/shiny.pal
index 75baf6a46..75baf6a46 100644
--- a/graphics/pokemon/palettes/ivysaur_shiny_palette.pal
+++ b/graphics/pokemon/ivysaur/shiny.pal
diff --git a/graphics/pokemon/back_pics/jigglypuff_back_pic.png b/graphics/pokemon/jigglypuff/back.png
index 8055a79b0..8055a79b0 100644
--- a/graphics/pokemon/back_pics/jigglypuff_back_pic.png
+++ b/graphics/pokemon/jigglypuff/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/jigglypuff_footprint.png b/graphics/pokemon/jigglypuff/footprint.png
index 59b5f1171..59b5f1171 100644
--- a/graphics/pokemon/footprints/jigglypuff_footprint.png
+++ b/graphics/pokemon/jigglypuff/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/jigglypuff_still_front_pic.png b/graphics/pokemon/jigglypuff/front.png
index 1699d2e83..1699d2e83 100644
--- a/graphics/pokemon/front_pics/jigglypuff_still_front_pic.png
+++ b/graphics/pokemon/jigglypuff/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/jigglypuff_icon.png b/graphics/pokemon/jigglypuff/icon.png
index 4c5a33cb8..4c5a33cb8 100644
--- a/graphics/pokemon/icons/jigglypuff_icon.png
+++ b/graphics/pokemon/jigglypuff/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/jigglypuff_palette.pal b/graphics/pokemon/jigglypuff/normal.pal
index 8f97b28b9..8f97b28b9 100644
--- a/graphics/pokemon/palettes/jigglypuff_palette.pal
+++ b/graphics/pokemon/jigglypuff/normal.pal
diff --git a/graphics/pokemon/palettes/jigglypuff_shiny_palette.pal b/graphics/pokemon/jigglypuff/shiny.pal
index c6c39e2dd..c6c39e2dd 100644
--- a/graphics/pokemon/palettes/jigglypuff_shiny_palette.pal
+++ b/graphics/pokemon/jigglypuff/shiny.pal
diff --git a/graphics/pokemon/back_pics/jirachi_back_pic.png b/graphics/pokemon/jirachi/back.png
index 4fa283e0d..4fa283e0d 100644
--- a/graphics/pokemon/back_pics/jirachi_back_pic.png
+++ b/graphics/pokemon/jirachi/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/jirachi_footprint.png b/graphics/pokemon/jirachi/footprint.png
index 856bb5faa..856bb5faa 100644
--- a/graphics/pokemon/footprints/jirachi_footprint.png
+++ b/graphics/pokemon/jirachi/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/jirachi_still_front_pic.png b/graphics/pokemon/jirachi/front.png
index 91f5e3fad..91f5e3fad 100644
--- a/graphics/pokemon/front_pics/jirachi_still_front_pic.png
+++ b/graphics/pokemon/jirachi/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/jirachi_icon.png b/graphics/pokemon/jirachi/icon.png
index 15df4559b..15df4559b 100644
--- a/graphics/pokemon/icons/jirachi_icon.png
+++ b/graphics/pokemon/jirachi/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/jirachi_palette.pal b/graphics/pokemon/jirachi/normal.pal
index ba0b7a6b1..ba0b7a6b1 100644
--- a/graphics/pokemon/palettes/jirachi_palette.pal
+++ b/graphics/pokemon/jirachi/normal.pal
diff --git a/graphics/pokemon/palettes/jirachi_shiny_palette.pal b/graphics/pokemon/jirachi/shiny.pal
index 219b9ac57..219b9ac57 100644
--- a/graphics/pokemon/palettes/jirachi_shiny_palette.pal
+++ b/graphics/pokemon/jirachi/shiny.pal
diff --git a/graphics/pokemon/back_pics/jolteon_back_pic.png b/graphics/pokemon/jolteon/back.png
index 004131600..004131600 100644
--- a/graphics/pokemon/back_pics/jolteon_back_pic.png
+++ b/graphics/pokemon/jolteon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/jolteon_footprint.png b/graphics/pokemon/jolteon/footprint.png
index d1e9477b3..d1e9477b3 100644
--- a/graphics/pokemon/footprints/jolteon_footprint.png
+++ b/graphics/pokemon/jolteon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/jolteon_still_front_pic.png b/graphics/pokemon/jolteon/front.png
index be21a9d9e..be21a9d9e 100644
--- a/graphics/pokemon/front_pics/jolteon_still_front_pic.png
+++ b/graphics/pokemon/jolteon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/jolteon_icon.png b/graphics/pokemon/jolteon/icon.png
index b98fd78b2..b98fd78b2 100644
--- a/graphics/pokemon/icons/jolteon_icon.png
+++ b/graphics/pokemon/jolteon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/jolteon_palette.pal b/graphics/pokemon/jolteon/normal.pal
index c4f6d9021..c4f6d9021 100644
--- a/graphics/pokemon/palettes/jolteon_palette.pal
+++ b/graphics/pokemon/jolteon/normal.pal
diff --git a/graphics/pokemon/palettes/jolteon_shiny_palette.pal b/graphics/pokemon/jolteon/shiny.pal
index ece1425c3..ece1425c3 100644
--- a/graphics/pokemon/palettes/jolteon_shiny_palette.pal
+++ b/graphics/pokemon/jolteon/shiny.pal
diff --git a/graphics/pokemon/back_pics/jumpluff_back_pic.png b/graphics/pokemon/jumpluff/back.png
index 1f822f850..1f822f850 100644
--- a/graphics/pokemon/back_pics/jumpluff_back_pic.png
+++ b/graphics/pokemon/jumpluff/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/jumpluff_footprint.png b/graphics/pokemon/jumpluff/footprint.png
index 9cd0f5938..9cd0f5938 100644
--- a/graphics/pokemon/footprints/jumpluff_footprint.png
+++ b/graphics/pokemon/jumpluff/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/jumpluff_still_front_pic.png b/graphics/pokemon/jumpluff/front.png
index 6b7cbaf61..6b7cbaf61 100644
--- a/graphics/pokemon/front_pics/jumpluff_still_front_pic.png
+++ b/graphics/pokemon/jumpluff/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/jumpluff_icon.png b/graphics/pokemon/jumpluff/icon.png
index bf0cb64de..bf0cb64de 100644
--- a/graphics/pokemon/icons/jumpluff_icon.png
+++ b/graphics/pokemon/jumpluff/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/jumpluff_palette.pal b/graphics/pokemon/jumpluff/normal.pal
index 422184976..422184976 100644
--- a/graphics/pokemon/palettes/jumpluff_palette.pal
+++ b/graphics/pokemon/jumpluff/normal.pal
diff --git a/graphics/pokemon/palettes/jumpluff_shiny_palette.pal b/graphics/pokemon/jumpluff/shiny.pal
index 4885690b6..4885690b6 100644
--- a/graphics/pokemon/palettes/jumpluff_shiny_palette.pal
+++ b/graphics/pokemon/jumpluff/shiny.pal
diff --git a/graphics/pokemon/back_pics/jynx_back_pic.png b/graphics/pokemon/jynx/back.png
index 4b6d97bed..4b6d97bed 100644
--- a/graphics/pokemon/back_pics/jynx_back_pic.png
+++ b/graphics/pokemon/jynx/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/jynx_footprint.png b/graphics/pokemon/jynx/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/jynx_footprint.png
+++ b/graphics/pokemon/jynx/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/jynx_still_front_pic.png b/graphics/pokemon/jynx/front.png
index 7af4ac93e..7af4ac93e 100644
--- a/graphics/pokemon/front_pics/jynx_still_front_pic.png
+++ b/graphics/pokemon/jynx/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/jynx_icon.png b/graphics/pokemon/jynx/icon.png
index be6522806..be6522806 100644
--- a/graphics/pokemon/icons/jynx_icon.png
+++ b/graphics/pokemon/jynx/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/jynx_palette.pal b/graphics/pokemon/jynx/normal.pal
index 71a25303e..71a25303e 100644
--- a/graphics/pokemon/palettes/jynx_palette.pal
+++ b/graphics/pokemon/jynx/normal.pal
diff --git a/graphics/pokemon/palettes/jynx_shiny_palette.pal b/graphics/pokemon/jynx/shiny.pal
index b6838c13d..b6838c13d 100644
--- a/graphics/pokemon/palettes/jynx_shiny_palette.pal
+++ b/graphics/pokemon/jynx/shiny.pal
diff --git a/graphics/pokemon/back_pics/kabuto_back_pic.png b/graphics/pokemon/kabuto/back.png
index 9664ead41..9664ead41 100644
--- a/graphics/pokemon/back_pics/kabuto_back_pic.png
+++ b/graphics/pokemon/kabuto/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/kabuto_footprint.png b/graphics/pokemon/kabuto/footprint.png
index 6965dbe60..6965dbe60 100644
--- a/graphics/pokemon/footprints/kabuto_footprint.png
+++ b/graphics/pokemon/kabuto/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/kabuto_still_front_pic.png b/graphics/pokemon/kabuto/front.png
index 76fd39d3d..76fd39d3d 100644
--- a/graphics/pokemon/front_pics/kabuto_still_front_pic.png
+++ b/graphics/pokemon/kabuto/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/kabuto_icon.png b/graphics/pokemon/kabuto/icon.png
index c0a140722..c0a140722 100644
--- a/graphics/pokemon/icons/kabuto_icon.png
+++ b/graphics/pokemon/kabuto/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/kabuto_palette.pal b/graphics/pokemon/kabuto/normal.pal
index 4264dd8a3..4264dd8a3 100644
--- a/graphics/pokemon/palettes/kabuto_palette.pal
+++ b/graphics/pokemon/kabuto/normal.pal
diff --git a/graphics/pokemon/palettes/kabuto_shiny_palette.pal b/graphics/pokemon/kabuto/shiny.pal
index 8e3eaad12..8e3eaad12 100644
--- a/graphics/pokemon/palettes/kabuto_shiny_palette.pal
+++ b/graphics/pokemon/kabuto/shiny.pal
diff --git a/graphics/pokemon/back_pics/kabutops_back_pic.png b/graphics/pokemon/kabutops/back.png
index e1aab4de2..e1aab4de2 100644
--- a/graphics/pokemon/back_pics/kabutops_back_pic.png
+++ b/graphics/pokemon/kabutops/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/kabutops_footprint.png b/graphics/pokemon/kabutops/footprint.png
index 127b741d8..127b741d8 100644
--- a/graphics/pokemon/footprints/kabutops_footprint.png
+++ b/graphics/pokemon/kabutops/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/kabutops_still_front_pic.png b/graphics/pokemon/kabutops/front.png
index 6f47c841e..6f47c841e 100644
--- a/graphics/pokemon/front_pics/kabutops_still_front_pic.png
+++ b/graphics/pokemon/kabutops/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/kabutops_icon.png b/graphics/pokemon/kabutops/icon.png
index 1c23836e5..1c23836e5 100644
--- a/graphics/pokemon/icons/kabutops_icon.png
+++ b/graphics/pokemon/kabutops/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/kabutops_palette.pal b/graphics/pokemon/kabutops/normal.pal
index 0aa390135..0aa390135 100644
--- a/graphics/pokemon/palettes/kabutops_palette.pal
+++ b/graphics/pokemon/kabutops/normal.pal
diff --git a/graphics/pokemon/palettes/kabutops_shiny_palette.pal b/graphics/pokemon/kabutops/shiny.pal
index 9217ab55d..9217ab55d 100644
--- a/graphics/pokemon/palettes/kabutops_shiny_palette.pal
+++ b/graphics/pokemon/kabutops/shiny.pal
diff --git a/graphics/pokemon/back_pics/kadabra_back_pic.png b/graphics/pokemon/kadabra/back.png
index a219404c7..a219404c7 100644
--- a/graphics/pokemon/back_pics/kadabra_back_pic.png
+++ b/graphics/pokemon/kadabra/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/kadabra_footprint.png b/graphics/pokemon/kadabra/footprint.png
index a699f2987..a699f2987 100644
--- a/graphics/pokemon/footprints/kadabra_footprint.png
+++ b/graphics/pokemon/kadabra/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/kadabra_still_front_pic.png b/graphics/pokemon/kadabra/front.png
index 72645d55c..72645d55c 100644
--- a/graphics/pokemon/front_pics/kadabra_still_front_pic.png
+++ b/graphics/pokemon/kadabra/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/kadabra_icon.png b/graphics/pokemon/kadabra/icon.png
index 8653f7524..8653f7524 100644
--- a/graphics/pokemon/icons/kadabra_icon.png
+++ b/graphics/pokemon/kadabra/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/kadabra_palette.pal b/graphics/pokemon/kadabra/normal.pal
index aedab9d53..aedab9d53 100644
--- a/graphics/pokemon/palettes/kadabra_palette.pal
+++ b/graphics/pokemon/kadabra/normal.pal
diff --git a/graphics/pokemon/palettes/kadabra_shiny_palette.pal b/graphics/pokemon/kadabra/shiny.pal
index f19dbf469..f19dbf469 100644
--- a/graphics/pokemon/palettes/kadabra_shiny_palette.pal
+++ b/graphics/pokemon/kadabra/shiny.pal
diff --git a/graphics/pokemon/back_pics/kakuna_back_pic.png b/graphics/pokemon/kakuna/back.png
index 2f5455238..2f5455238 100644
--- a/graphics/pokemon/back_pics/kakuna_back_pic.png
+++ b/graphics/pokemon/kakuna/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/kakuna_footprint.png b/graphics/pokemon/kakuna/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/kakuna_footprint.png
+++ b/graphics/pokemon/kakuna/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/kakuna_still_front_pic.png b/graphics/pokemon/kakuna/front.png
index 393c3b407..393c3b407 100644
--- a/graphics/pokemon/front_pics/kakuna_still_front_pic.png
+++ b/graphics/pokemon/kakuna/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/kakuna_icon.png b/graphics/pokemon/kakuna/icon.png
index 1c857d442..1c857d442 100644
--- a/graphics/pokemon/icons/kakuna_icon.png
+++ b/graphics/pokemon/kakuna/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/kakuna_palette.pal b/graphics/pokemon/kakuna/normal.pal
index fe51d0fbf..fe51d0fbf 100644
--- a/graphics/pokemon/palettes/kakuna_palette.pal
+++ b/graphics/pokemon/kakuna/normal.pal
diff --git a/graphics/pokemon/palettes/kakuna_shiny_palette.pal b/graphics/pokemon/kakuna/shiny.pal
index 0a45b029a..0a45b029a 100644
--- a/graphics/pokemon/palettes/kakuna_shiny_palette.pal
+++ b/graphics/pokemon/kakuna/shiny.pal
diff --git a/graphics/pokemon/back_pics/kangaskhan_back_pic.png b/graphics/pokemon/kangaskhan/back.png
index babb41fce..babb41fce 100644
--- a/graphics/pokemon/back_pics/kangaskhan_back_pic.png
+++ b/graphics/pokemon/kangaskhan/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/kangaskhan_footprint.png b/graphics/pokemon/kangaskhan/footprint.png
index 7753a4a71..7753a4a71 100644
--- a/graphics/pokemon/footprints/kangaskhan_footprint.png
+++ b/graphics/pokemon/kangaskhan/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/kangaskhan_still_front_pic.png b/graphics/pokemon/kangaskhan/front.png
index fd513941b..fd513941b 100644
--- a/graphics/pokemon/front_pics/kangaskhan_still_front_pic.png
+++ b/graphics/pokemon/kangaskhan/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/kangaskhan_icon.png b/graphics/pokemon/kangaskhan/icon.png
index 177a688cd..177a688cd 100644
--- a/graphics/pokemon/icons/kangaskhan_icon.png
+++ b/graphics/pokemon/kangaskhan/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/kangaskhan_palette.pal b/graphics/pokemon/kangaskhan/normal.pal
index ff63a7ac3..ff63a7ac3 100644
--- a/graphics/pokemon/palettes/kangaskhan_palette.pal
+++ b/graphics/pokemon/kangaskhan/normal.pal
diff --git a/graphics/pokemon/palettes/kangaskhan_shiny_palette.pal b/graphics/pokemon/kangaskhan/shiny.pal
index b2405925f..b2405925f 100644
--- a/graphics/pokemon/palettes/kangaskhan_shiny_palette.pal
+++ b/graphics/pokemon/kangaskhan/shiny.pal
diff --git a/graphics/pokemon/back_pics/kecleon_back_pic.png b/graphics/pokemon/kecleon/back.png
index 1baeeb58a..1baeeb58a 100644
--- a/graphics/pokemon/back_pics/kecleon_back_pic.png
+++ b/graphics/pokemon/kecleon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/kecleon_footprint.png b/graphics/pokemon/kecleon/footprint.png
index 3c6968437..3c6968437 100644
--- a/graphics/pokemon/footprints/kecleon_footprint.png
+++ b/graphics/pokemon/kecleon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/kecleon_still_front_pic.png b/graphics/pokemon/kecleon/front.png
index e57431a06..e57431a06 100644
--- a/graphics/pokemon/front_pics/kecleon_still_front_pic.png
+++ b/graphics/pokemon/kecleon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/kecleon_icon.png b/graphics/pokemon/kecleon/icon.png
index 98b108fd9..98b108fd9 100644
--- a/graphics/pokemon/icons/kecleon_icon.png
+++ b/graphics/pokemon/kecleon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/kecleon_palette.pal b/graphics/pokemon/kecleon/normal.pal
index 36d6be7d7..36d6be7d7 100644
--- a/graphics/pokemon/palettes/kecleon_palette.pal
+++ b/graphics/pokemon/kecleon/normal.pal
diff --git a/graphics/pokemon/palettes/kecleon_shiny_palette.pal b/graphics/pokemon/kecleon/shiny.pal
index e056b670f..e056b670f 100644
--- a/graphics/pokemon/palettes/kecleon_shiny_palette.pal
+++ b/graphics/pokemon/kecleon/shiny.pal
diff --git a/graphics/pokemon/back_pics/kingdra_back_pic.png b/graphics/pokemon/kingdra/back.png
index 3e6ec7789..3e6ec7789 100644
--- a/graphics/pokemon/back_pics/kingdra_back_pic.png
+++ b/graphics/pokemon/kingdra/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/kingdra_footprint.png b/graphics/pokemon/kingdra/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/kingdra_footprint.png
+++ b/graphics/pokemon/kingdra/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/kingdra_still_front_pic.png b/graphics/pokemon/kingdra/front.png
index 86fecb914..86fecb914 100644
--- a/graphics/pokemon/front_pics/kingdra_still_front_pic.png
+++ b/graphics/pokemon/kingdra/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/kingdra_icon.png b/graphics/pokemon/kingdra/icon.png
index c0fb5484a..c0fb5484a 100644
--- a/graphics/pokemon/icons/kingdra_icon.png
+++ b/graphics/pokemon/kingdra/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/kingdra_palette.pal b/graphics/pokemon/kingdra/normal.pal
index 9dcb7ab85..9dcb7ab85 100644
--- a/graphics/pokemon/palettes/kingdra_palette.pal
+++ b/graphics/pokemon/kingdra/normal.pal
diff --git a/graphics/pokemon/palettes/kingdra_shiny_palette.pal b/graphics/pokemon/kingdra/shiny.pal
index c45869283..c45869283 100644
--- a/graphics/pokemon/palettes/kingdra_shiny_palette.pal
+++ b/graphics/pokemon/kingdra/shiny.pal
diff --git a/graphics/pokemon/back_pics/kingler_back_pic.png b/graphics/pokemon/kingler/back.png
index 11338630f..11338630f 100644
--- a/graphics/pokemon/back_pics/kingler_back_pic.png
+++ b/graphics/pokemon/kingler/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/kingler_footprint.png b/graphics/pokemon/kingler/footprint.png
index b75db30dc..b75db30dc 100644
--- a/graphics/pokemon/footprints/kingler_footprint.png
+++ b/graphics/pokemon/kingler/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/kingler_still_front_pic.png b/graphics/pokemon/kingler/front.png
index 596f37d97..596f37d97 100644
--- a/graphics/pokemon/front_pics/kingler_still_front_pic.png
+++ b/graphics/pokemon/kingler/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/kingler_icon.png b/graphics/pokemon/kingler/icon.png
index dbf1af284..dbf1af284 100644
--- a/graphics/pokemon/icons/kingler_icon.png
+++ b/graphics/pokemon/kingler/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/kingler_palette.pal b/graphics/pokemon/kingler/normal.pal
index ef05864d1..ef05864d1 100644
--- a/graphics/pokemon/palettes/kingler_palette.pal
+++ b/graphics/pokemon/kingler/normal.pal
diff --git a/graphics/pokemon/palettes/kingler_shiny_palette.pal b/graphics/pokemon/kingler/shiny.pal
index faa3b01af..faa3b01af 100644
--- a/graphics/pokemon/palettes/kingler_shiny_palette.pal
+++ b/graphics/pokemon/kingler/shiny.pal
diff --git a/graphics/pokemon/back_pics/kirlia_back_pic.png b/graphics/pokemon/kirlia/back.png
index 5820cd068..5820cd068 100644
--- a/graphics/pokemon/back_pics/kirlia_back_pic.png
+++ b/graphics/pokemon/kirlia/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/kirlia_footprint.png b/graphics/pokemon/kirlia/footprint.png
index c1c0058e7..c1c0058e7 100644
--- a/graphics/pokemon/footprints/kirlia_footprint.png
+++ b/graphics/pokemon/kirlia/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/kirlia_still_front_pic.png b/graphics/pokemon/kirlia/front.png
index 84acc1494..84acc1494 100644
--- a/graphics/pokemon/front_pics/kirlia_still_front_pic.png
+++ b/graphics/pokemon/kirlia/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/kirlia_icon.png b/graphics/pokemon/kirlia/icon.png
index b99dfee25..b99dfee25 100644
--- a/graphics/pokemon/icons/kirlia_icon.png
+++ b/graphics/pokemon/kirlia/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/kirlia_palette.pal b/graphics/pokemon/kirlia/normal.pal
index 91b428af2..91b428af2 100644
--- a/graphics/pokemon/palettes/kirlia_palette.pal
+++ b/graphics/pokemon/kirlia/normal.pal
diff --git a/graphics/pokemon/palettes/kirlia_shiny_palette.pal b/graphics/pokemon/kirlia/shiny.pal
index ff944e551..ff944e551 100644
--- a/graphics/pokemon/palettes/kirlia_shiny_palette.pal
+++ b/graphics/pokemon/kirlia/shiny.pal
diff --git a/graphics/pokemon/back_pics/koffing_back_pic.png b/graphics/pokemon/koffing/back.png
index a76b27fae..a76b27fae 100644
--- a/graphics/pokemon/back_pics/koffing_back_pic.png
+++ b/graphics/pokemon/koffing/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/koffing_footprint.png b/graphics/pokemon/koffing/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/koffing_footprint.png
+++ b/graphics/pokemon/koffing/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/koffing_still_front_pic.png b/graphics/pokemon/koffing/front.png
index d3bd02eb7..d3bd02eb7 100644
--- a/graphics/pokemon/front_pics/koffing_still_front_pic.png
+++ b/graphics/pokemon/koffing/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/koffing_icon.png b/graphics/pokemon/koffing/icon.png
index 683df2b85..683df2b85 100644
--- a/graphics/pokemon/icons/koffing_icon.png
+++ b/graphics/pokemon/koffing/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/koffing_palette.pal b/graphics/pokemon/koffing/normal.pal
index 4565aa527..4565aa527 100644
--- a/graphics/pokemon/palettes/koffing_palette.pal
+++ b/graphics/pokemon/koffing/normal.pal
diff --git a/graphics/pokemon/palettes/koffing_shiny_palette.pal b/graphics/pokemon/koffing/shiny.pal
index 164cdfb0b..164cdfb0b 100644
--- a/graphics/pokemon/palettes/koffing_shiny_palette.pal
+++ b/graphics/pokemon/koffing/shiny.pal
diff --git a/graphics/pokemon/back_pics/krabby_back_pic.png b/graphics/pokemon/krabby/back.png
index d0501e77a..d0501e77a 100644
--- a/graphics/pokemon/back_pics/krabby_back_pic.png
+++ b/graphics/pokemon/krabby/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/krabby_footprint.png b/graphics/pokemon/krabby/footprint.png
index eae28fe5e..eae28fe5e 100644
--- a/graphics/pokemon/footprints/krabby_footprint.png
+++ b/graphics/pokemon/krabby/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/krabby_still_front_pic.png b/graphics/pokemon/krabby/front.png
index 9db2178be..9db2178be 100644
--- a/graphics/pokemon/front_pics/krabby_still_front_pic.png
+++ b/graphics/pokemon/krabby/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/krabby_icon.png b/graphics/pokemon/krabby/icon.png
index f9fdaa6d5..f9fdaa6d5 100644
--- a/graphics/pokemon/icons/krabby_icon.png
+++ b/graphics/pokemon/krabby/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/krabby_palette.pal b/graphics/pokemon/krabby/normal.pal
index e54552ad9..e54552ad9 100644
--- a/graphics/pokemon/palettes/krabby_palette.pal
+++ b/graphics/pokemon/krabby/normal.pal
diff --git a/graphics/pokemon/palettes/krabby_shiny_palette.pal b/graphics/pokemon/krabby/shiny.pal
index d1318f36c..d1318f36c 100644
--- a/graphics/pokemon/palettes/krabby_shiny_palette.pal
+++ b/graphics/pokemon/krabby/shiny.pal
diff --git a/graphics/pokemon/back_pics/kyogre_back_pic.png b/graphics/pokemon/kyogre/back.png
index d0c4f55c1..d0c4f55c1 100644
--- a/graphics/pokemon/back_pics/kyogre_back_pic.png
+++ b/graphics/pokemon/kyogre/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/kyogre_footprint.png b/graphics/pokemon/kyogre/footprint.png
index 8d58ee462..8d58ee462 100644
--- a/graphics/pokemon/footprints/kyogre_footprint.png
+++ b/graphics/pokemon/kyogre/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/kyogre_still_front_pic.png b/graphics/pokemon/kyogre/front.png
index 3b4b8e093..3b4b8e093 100644
--- a/graphics/pokemon/front_pics/kyogre_still_front_pic.png
+++ b/graphics/pokemon/kyogre/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/kyogre_icon.png b/graphics/pokemon/kyogre/icon.png
index 544ed9daf..544ed9daf 100644
--- a/graphics/pokemon/icons/kyogre_icon.png
+++ b/graphics/pokemon/kyogre/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/kyogre_palette.pal b/graphics/pokemon/kyogre/normal.pal
index d598595cb..d598595cb 100644
--- a/graphics/pokemon/palettes/kyogre_palette.pal
+++ b/graphics/pokemon/kyogre/normal.pal
diff --git a/graphics/pokemon/palettes/kyogre_shiny_palette.pal b/graphics/pokemon/kyogre/shiny.pal
index 392162401..392162401 100644
--- a/graphics/pokemon/palettes/kyogre_shiny_palette.pal
+++ b/graphics/pokemon/kyogre/shiny.pal
diff --git a/graphics/pokemon/back_pics/lairon_back_pic.png b/graphics/pokemon/lairon/back.png
index 552c01356..552c01356 100644
--- a/graphics/pokemon/back_pics/lairon_back_pic.png
+++ b/graphics/pokemon/lairon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/lairon_footprint.png b/graphics/pokemon/lairon/footprint.png
index 9a6527c1c..9a6527c1c 100644
--- a/graphics/pokemon/footprints/lairon_footprint.png
+++ b/graphics/pokemon/lairon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/lairon_still_front_pic.png b/graphics/pokemon/lairon/front.png
index 50470dead..50470dead 100644
--- a/graphics/pokemon/front_pics/lairon_still_front_pic.png
+++ b/graphics/pokemon/lairon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/lairon_icon.png b/graphics/pokemon/lairon/icon.png
index 6d450b08d..6d450b08d 100644
--- a/graphics/pokemon/icons/lairon_icon.png
+++ b/graphics/pokemon/lairon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/lairon_palette.pal b/graphics/pokemon/lairon/normal.pal
index b5711fdad..b5711fdad 100644
--- a/graphics/pokemon/palettes/lairon_palette.pal
+++ b/graphics/pokemon/lairon/normal.pal
diff --git a/graphics/pokemon/palettes/lairon_shiny_palette.pal b/graphics/pokemon/lairon/shiny.pal
index eadb9aa81..eadb9aa81 100644
--- a/graphics/pokemon/palettes/lairon_shiny_palette.pal
+++ b/graphics/pokemon/lairon/shiny.pal
diff --git a/graphics/pokemon/back_pics/lanturn_back_pic.png b/graphics/pokemon/lanturn/back.png
index 1b9543d63..1b9543d63 100644
--- a/graphics/pokemon/back_pics/lanturn_back_pic.png
+++ b/graphics/pokemon/lanturn/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/lanturn_footprint.png b/graphics/pokemon/lanturn/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/lanturn_footprint.png
+++ b/graphics/pokemon/lanturn/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/lanturn_still_front_pic.png b/graphics/pokemon/lanturn/front.png
index a94ab7470..a94ab7470 100644
--- a/graphics/pokemon/front_pics/lanturn_still_front_pic.png
+++ b/graphics/pokemon/lanturn/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/lanturn_icon.png b/graphics/pokemon/lanturn/icon.png
index d2b3d4348..d2b3d4348 100644
--- a/graphics/pokemon/icons/lanturn_icon.png
+++ b/graphics/pokemon/lanturn/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/lanturn_palette.pal b/graphics/pokemon/lanturn/normal.pal
index 7baa22c6e..7baa22c6e 100644
--- a/graphics/pokemon/palettes/lanturn_palette.pal
+++ b/graphics/pokemon/lanturn/normal.pal
diff --git a/graphics/pokemon/palettes/lanturn_shiny_palette.pal b/graphics/pokemon/lanturn/shiny.pal
index 70360c029..70360c029 100644
--- a/graphics/pokemon/palettes/lanturn_shiny_palette.pal
+++ b/graphics/pokemon/lanturn/shiny.pal
diff --git a/graphics/pokemon/back_pics/lapras_back_pic.png b/graphics/pokemon/lapras/back.png
index 3b5a18f17..3b5a18f17 100644
--- a/graphics/pokemon/back_pics/lapras_back_pic.png
+++ b/graphics/pokemon/lapras/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/lapras_footprint.png b/graphics/pokemon/lapras/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/lapras_footprint.png
+++ b/graphics/pokemon/lapras/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/lapras_still_front_pic.png b/graphics/pokemon/lapras/front.png
index 063068e90..063068e90 100644
--- a/graphics/pokemon/front_pics/lapras_still_front_pic.png
+++ b/graphics/pokemon/lapras/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/lapras_icon.png b/graphics/pokemon/lapras/icon.png
index fa8035ada..fa8035ada 100644
--- a/graphics/pokemon/icons/lapras_icon.png
+++ b/graphics/pokemon/lapras/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/lapras_palette.pal b/graphics/pokemon/lapras/normal.pal
index 094f8fec8..094f8fec8 100644
--- a/graphics/pokemon/palettes/lapras_palette.pal
+++ b/graphics/pokemon/lapras/normal.pal
diff --git a/graphics/pokemon/palettes/lapras_shiny_palette.pal b/graphics/pokemon/lapras/shiny.pal
index 5090527aa..5090527aa 100644
--- a/graphics/pokemon/palettes/lapras_shiny_palette.pal
+++ b/graphics/pokemon/lapras/shiny.pal
diff --git a/graphics/pokemon/back_pics/larvitar_back_pic.png b/graphics/pokemon/larvitar/back.png
index 1c28da425..1c28da425 100644
--- a/graphics/pokemon/back_pics/larvitar_back_pic.png
+++ b/graphics/pokemon/larvitar/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/larvitar_footprint.png b/graphics/pokemon/larvitar/footprint.png
index a31e8d7f3..a31e8d7f3 100644
--- a/graphics/pokemon/footprints/larvitar_footprint.png
+++ b/graphics/pokemon/larvitar/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/larvitar_still_front_pic.png b/graphics/pokemon/larvitar/front.png
index 4183e29e1..4183e29e1 100644
--- a/graphics/pokemon/front_pics/larvitar_still_front_pic.png
+++ b/graphics/pokemon/larvitar/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/larvitar_icon.png b/graphics/pokemon/larvitar/icon.png
index 85a5504c3..85a5504c3 100644
--- a/graphics/pokemon/icons/larvitar_icon.png
+++ b/graphics/pokemon/larvitar/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/larvitar_palette.pal b/graphics/pokemon/larvitar/normal.pal
index 3bcc1f133..3bcc1f133 100644
--- a/graphics/pokemon/palettes/larvitar_palette.pal
+++ b/graphics/pokemon/larvitar/normal.pal
diff --git a/graphics/pokemon/palettes/larvitar_shiny_palette.pal b/graphics/pokemon/larvitar/shiny.pal
index aa6a59c36..aa6a59c36 100644
--- a/graphics/pokemon/palettes/larvitar_shiny_palette.pal
+++ b/graphics/pokemon/larvitar/shiny.pal
diff --git a/graphics/pokemon/back_pics/latias_back_pic.png b/graphics/pokemon/latias/back.png
index a4286579b..a4286579b 100644
--- a/graphics/pokemon/back_pics/latias_back_pic.png
+++ b/graphics/pokemon/latias/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/latias_footprint.png b/graphics/pokemon/latias/footprint.png
index 0419630c1..0419630c1 100644
--- a/graphics/pokemon/footprints/latias_footprint.png
+++ b/graphics/pokemon/latias/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/latias_still_front_pic.png b/graphics/pokemon/latias/front.png
index 55e7e36b1..55e7e36b1 100644
--- a/graphics/pokemon/front_pics/latias_still_front_pic.png
+++ b/graphics/pokemon/latias/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/latias_icon.png b/graphics/pokemon/latias/icon.png
index 1727c0af6..1727c0af6 100644
--- a/graphics/pokemon/icons/latias_icon.png
+++ b/graphics/pokemon/latias/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/latias_palette.pal b/graphics/pokemon/latias/normal.pal
index 6f831271f..6f831271f 100644
--- a/graphics/pokemon/palettes/latias_palette.pal
+++ b/graphics/pokemon/latias/normal.pal
diff --git a/graphics/pokemon/palettes/latias_shiny_palette.pal b/graphics/pokemon/latias/shiny.pal
index a701dc933..a701dc933 100644
--- a/graphics/pokemon/palettes/latias_shiny_palette.pal
+++ b/graphics/pokemon/latias/shiny.pal
diff --git a/graphics/pokemon/back_pics/latios_back_pic.png b/graphics/pokemon/latios/back.png
index 0f2b7f5d6..0f2b7f5d6 100644
--- a/graphics/pokemon/back_pics/latios_back_pic.png
+++ b/graphics/pokemon/latios/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/latios_footprint.png b/graphics/pokemon/latios/footprint.png
index f77d0fa86..f77d0fa86 100644
--- a/graphics/pokemon/footprints/latios_footprint.png
+++ b/graphics/pokemon/latios/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/latios_still_front_pic.png b/graphics/pokemon/latios/front.png
index a9c41e250..a9c41e250 100644
--- a/graphics/pokemon/front_pics/latios_still_front_pic.png
+++ b/graphics/pokemon/latios/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/latios_icon.png b/graphics/pokemon/latios/icon.png
index 10a23ad47..10a23ad47 100644
--- a/graphics/pokemon/icons/latios_icon.png
+++ b/graphics/pokemon/latios/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/latios_palette.pal b/graphics/pokemon/latios/normal.pal
index 6a3d8bead..6a3d8bead 100644
--- a/graphics/pokemon/palettes/latios_palette.pal
+++ b/graphics/pokemon/latios/normal.pal
diff --git a/graphics/pokemon/palettes/latios_shiny_palette.pal b/graphics/pokemon/latios/shiny.pal
index 2b539fd9c..2b539fd9c 100644
--- a/graphics/pokemon/palettes/latios_shiny_palette.pal
+++ b/graphics/pokemon/latios/shiny.pal
diff --git a/graphics/pokemon/back_pics/ledian_back_pic.png b/graphics/pokemon/ledian/back.png
index 577fd2d71..577fd2d71 100644
--- a/graphics/pokemon/back_pics/ledian_back_pic.png
+++ b/graphics/pokemon/ledian/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ledian_footprint.png b/graphics/pokemon/ledian/footprint.png
index 5c2d6221f..5c2d6221f 100644
--- a/graphics/pokemon/footprints/ledian_footprint.png
+++ b/graphics/pokemon/ledian/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ledian_still_front_pic.png b/graphics/pokemon/ledian/front.png
index ea58651cb..ea58651cb 100644
--- a/graphics/pokemon/front_pics/ledian_still_front_pic.png
+++ b/graphics/pokemon/ledian/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ledian_icon.png b/graphics/pokemon/ledian/icon.png
index b82ef1306..b82ef1306 100644
--- a/graphics/pokemon/icons/ledian_icon.png
+++ b/graphics/pokemon/ledian/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ledian_palette.pal b/graphics/pokemon/ledian/normal.pal
index dc9acc426..dc9acc426 100644
--- a/graphics/pokemon/palettes/ledian_palette.pal
+++ b/graphics/pokemon/ledian/normal.pal
diff --git a/graphics/pokemon/palettes/ledian_shiny_palette.pal b/graphics/pokemon/ledian/shiny.pal
index 472f0974d..472f0974d 100644
--- a/graphics/pokemon/palettes/ledian_shiny_palette.pal
+++ b/graphics/pokemon/ledian/shiny.pal
diff --git a/graphics/pokemon/back_pics/ledyba_back_pic.png b/graphics/pokemon/ledyba/back.png
index 6a84f405d..6a84f405d 100644
--- a/graphics/pokemon/back_pics/ledyba_back_pic.png
+++ b/graphics/pokemon/ledyba/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ledyba_footprint.png b/graphics/pokemon/ledyba/footprint.png
index a52ed2560..a52ed2560 100644
--- a/graphics/pokemon/footprints/ledyba_footprint.png
+++ b/graphics/pokemon/ledyba/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ledyba_still_front_pic.png b/graphics/pokemon/ledyba/front.png
index 210a16176..210a16176 100644
--- a/graphics/pokemon/front_pics/ledyba_still_front_pic.png
+++ b/graphics/pokemon/ledyba/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ledyba_icon.png b/graphics/pokemon/ledyba/icon.png
index f417e2d74..f417e2d74 100644
--- a/graphics/pokemon/icons/ledyba_icon.png
+++ b/graphics/pokemon/ledyba/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ledyba_palette.pal b/graphics/pokemon/ledyba/normal.pal
index 2cc003adf..2cc003adf 100644
--- a/graphics/pokemon/palettes/ledyba_palette.pal
+++ b/graphics/pokemon/ledyba/normal.pal
diff --git a/graphics/pokemon/palettes/ledyba_shiny_palette.pal b/graphics/pokemon/ledyba/shiny.pal
index 472f0974d..472f0974d 100644
--- a/graphics/pokemon/palettes/ledyba_shiny_palette.pal
+++ b/graphics/pokemon/ledyba/shiny.pal
diff --git a/graphics/pokemon/back_pics/lickitung_back_pic.png b/graphics/pokemon/lickitung/back.png
index f6524e2c0..f6524e2c0 100644
--- a/graphics/pokemon/back_pics/lickitung_back_pic.png
+++ b/graphics/pokemon/lickitung/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/lickitung_footprint.png b/graphics/pokemon/lickitung/footprint.png
index 1f88f23fc..1f88f23fc 100644
--- a/graphics/pokemon/footprints/lickitung_footprint.png
+++ b/graphics/pokemon/lickitung/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/lickitung_still_front_pic.png b/graphics/pokemon/lickitung/front.png
index 445a7173e..445a7173e 100644
--- a/graphics/pokemon/front_pics/lickitung_still_front_pic.png
+++ b/graphics/pokemon/lickitung/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/lickitung_icon.png b/graphics/pokemon/lickitung/icon.png
index 5b7804afa..5b7804afa 100644
--- a/graphics/pokemon/icons/lickitung_icon.png
+++ b/graphics/pokemon/lickitung/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/lickitung_palette.pal b/graphics/pokemon/lickitung/normal.pal
index 602ac2724..602ac2724 100644
--- a/graphics/pokemon/palettes/lickitung_palette.pal
+++ b/graphics/pokemon/lickitung/normal.pal
diff --git a/graphics/pokemon/palettes/lickitung_shiny_palette.pal b/graphics/pokemon/lickitung/shiny.pal
index 5d01bf06c..5d01bf06c 100644
--- a/graphics/pokemon/palettes/lickitung_shiny_palette.pal
+++ b/graphics/pokemon/lickitung/shiny.pal
diff --git a/graphics/pokemon/back_pics/lileep_back_pic.png b/graphics/pokemon/lileep/back.png
index 753602091..753602091 100644
--- a/graphics/pokemon/back_pics/lileep_back_pic.png
+++ b/graphics/pokemon/lileep/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/lileep_footprint.png b/graphics/pokemon/lileep/footprint.png
index ce6b2790e..ce6b2790e 100644
--- a/graphics/pokemon/footprints/lileep_footprint.png
+++ b/graphics/pokemon/lileep/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/lileep_still_front_pic.png b/graphics/pokemon/lileep/front.png
index 5f85c25aa..5f85c25aa 100644
--- a/graphics/pokemon/front_pics/lileep_still_front_pic.png
+++ b/graphics/pokemon/lileep/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/lileep_icon.png b/graphics/pokemon/lileep/icon.png
index b875a53a7..b875a53a7 100644
--- a/graphics/pokemon/icons/lileep_icon.png
+++ b/graphics/pokemon/lileep/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/lileep_palette.pal b/graphics/pokemon/lileep/normal.pal
index a739bf847..a739bf847 100644
--- a/graphics/pokemon/palettes/lileep_palette.pal
+++ b/graphics/pokemon/lileep/normal.pal
diff --git a/graphics/pokemon/palettes/lileep_shiny_palette.pal b/graphics/pokemon/lileep/shiny.pal
index 6402a8688..6402a8688 100644
--- a/graphics/pokemon/palettes/lileep_shiny_palette.pal
+++ b/graphics/pokemon/lileep/shiny.pal
diff --git a/graphics/pokemon/back_pics/linoone_back_pic.png b/graphics/pokemon/linoone/back.png
index 9fc8fad38..9fc8fad38 100644
--- a/graphics/pokemon/back_pics/linoone_back_pic.png
+++ b/graphics/pokemon/linoone/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/linoone_footprint.png b/graphics/pokemon/linoone/footprint.png
index 8d83166d3..8d83166d3 100644
--- a/graphics/pokemon/footprints/linoone_footprint.png
+++ b/graphics/pokemon/linoone/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/linoone_still_front_pic.png b/graphics/pokemon/linoone/front.png
index 8b5baa699..8b5baa699 100644
--- a/graphics/pokemon/front_pics/linoone_still_front_pic.png
+++ b/graphics/pokemon/linoone/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/linoone_icon.png b/graphics/pokemon/linoone/icon.png
index bf0ea0cac..bf0ea0cac 100644
--- a/graphics/pokemon/icons/linoone_icon.png
+++ b/graphics/pokemon/linoone/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/linoone_palette.pal b/graphics/pokemon/linoone/normal.pal
index 368b6ac6f..368b6ac6f 100644
--- a/graphics/pokemon/palettes/linoone_palette.pal
+++ b/graphics/pokemon/linoone/normal.pal
diff --git a/graphics/pokemon/palettes/linoone_shiny_palette.pal b/graphics/pokemon/linoone/shiny.pal
index 7988bb21c..7988bb21c 100644
--- a/graphics/pokemon/palettes/linoone_shiny_palette.pal
+++ b/graphics/pokemon/linoone/shiny.pal
diff --git a/graphics/pokemon/back_pics/lombre_back_pic.png b/graphics/pokemon/lombre/back.png
index c87b4bcf3..c87b4bcf3 100644
--- a/graphics/pokemon/back_pics/lombre_back_pic.png
+++ b/graphics/pokemon/lombre/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/lombre_footprint.png b/graphics/pokemon/lombre/footprint.png
index 051e5ab55..051e5ab55 100644
--- a/graphics/pokemon/footprints/lombre_footprint.png
+++ b/graphics/pokemon/lombre/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/lombre_still_front_pic.png b/graphics/pokemon/lombre/front.png
index 3719098a9..3719098a9 100644
--- a/graphics/pokemon/front_pics/lombre_still_front_pic.png
+++ b/graphics/pokemon/lombre/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/lombre_icon.png b/graphics/pokemon/lombre/icon.png
index b3e661cca..b3e661cca 100644
--- a/graphics/pokemon/icons/lombre_icon.png
+++ b/graphics/pokemon/lombre/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/lombre_palette.pal b/graphics/pokemon/lombre/normal.pal
index 69f944a22..69f944a22 100644
--- a/graphics/pokemon/palettes/lombre_palette.pal
+++ b/graphics/pokemon/lombre/normal.pal
diff --git a/graphics/pokemon/palettes/lombre_shiny_palette.pal b/graphics/pokemon/lombre/shiny.pal
index d4458373a..d4458373a 100644
--- a/graphics/pokemon/palettes/lombre_shiny_palette.pal
+++ b/graphics/pokemon/lombre/shiny.pal
diff --git a/graphics/pokemon/back_pics/lotad_back_pic.png b/graphics/pokemon/lotad/back.png
index d8ca7648d..d8ca7648d 100644
--- a/graphics/pokemon/back_pics/lotad_back_pic.png
+++ b/graphics/pokemon/lotad/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/lotad_footprint.png b/graphics/pokemon/lotad/footprint.png
index caac6945f..caac6945f 100644
--- a/graphics/pokemon/footprints/lotad_footprint.png
+++ b/graphics/pokemon/lotad/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/lotad_still_front_pic.png b/graphics/pokemon/lotad/front.png
index 0b7e0a0a6..0b7e0a0a6 100644
--- a/graphics/pokemon/front_pics/lotad_still_front_pic.png
+++ b/graphics/pokemon/lotad/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/lotad_icon.png b/graphics/pokemon/lotad/icon.png
index 74e37ceed..74e37ceed 100644
--- a/graphics/pokemon/icons/lotad_icon.png
+++ b/graphics/pokemon/lotad/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/lotad_palette.pal b/graphics/pokemon/lotad/normal.pal
index efb988ea0..efb988ea0 100644
--- a/graphics/pokemon/palettes/lotad_palette.pal
+++ b/graphics/pokemon/lotad/normal.pal
diff --git a/graphics/pokemon/palettes/lotad_shiny_palette.pal b/graphics/pokemon/lotad/shiny.pal
index 36f271590..36f271590 100644
--- a/graphics/pokemon/palettes/lotad_shiny_palette.pal
+++ b/graphics/pokemon/lotad/shiny.pal
diff --git a/graphics/pokemon/back_pics/loudred_back_pic.png b/graphics/pokemon/loudred/back.png
index cb3d5d816..cb3d5d816 100644
--- a/graphics/pokemon/back_pics/loudred_back_pic.png
+++ b/graphics/pokemon/loudred/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/loudred_footprint.png b/graphics/pokemon/loudred/footprint.png
index 604af9000..604af9000 100644
--- a/graphics/pokemon/footprints/loudred_footprint.png
+++ b/graphics/pokemon/loudred/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/loudred_still_front_pic.png b/graphics/pokemon/loudred/front.png
index 2b87c0b29..2b87c0b29 100644
--- a/graphics/pokemon/front_pics/loudred_still_front_pic.png
+++ b/graphics/pokemon/loudred/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/loudred_icon.png b/graphics/pokemon/loudred/icon.png
index cbb1859f8..cbb1859f8 100644
--- a/graphics/pokemon/icons/loudred_icon.png
+++ b/graphics/pokemon/loudred/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/loudred_palette.pal b/graphics/pokemon/loudred/normal.pal
index 27c8ed1e7..27c8ed1e7 100644
--- a/graphics/pokemon/palettes/loudred_palette.pal
+++ b/graphics/pokemon/loudred/normal.pal
diff --git a/graphics/pokemon/palettes/loudred_shiny_palette.pal b/graphics/pokemon/loudred/shiny.pal
index b905b269c..b905b269c 100644
--- a/graphics/pokemon/palettes/loudred_shiny_palette.pal
+++ b/graphics/pokemon/loudred/shiny.pal
diff --git a/graphics/pokemon/back_pics/ludicolo_back_pic.png b/graphics/pokemon/ludicolo/back.png
index 2bdc96c39..2bdc96c39 100644
--- a/graphics/pokemon/back_pics/ludicolo_back_pic.png
+++ b/graphics/pokemon/ludicolo/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ludicolo_footprint.png b/graphics/pokemon/ludicolo/footprint.png
index 23163f358..23163f358 100644
--- a/graphics/pokemon/footprints/ludicolo_footprint.png
+++ b/graphics/pokemon/ludicolo/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ludicolo_still_front_pic.png b/graphics/pokemon/ludicolo/front.png
index df8e0091b..df8e0091b 100644
--- a/graphics/pokemon/front_pics/ludicolo_still_front_pic.png
+++ b/graphics/pokemon/ludicolo/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ludicolo_icon.png b/graphics/pokemon/ludicolo/icon.png
index 47490411b..47490411b 100644
--- a/graphics/pokemon/icons/ludicolo_icon.png
+++ b/graphics/pokemon/ludicolo/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ludicolo_palette.pal b/graphics/pokemon/ludicolo/normal.pal
index 618414394..618414394 100644
--- a/graphics/pokemon/palettes/ludicolo_palette.pal
+++ b/graphics/pokemon/ludicolo/normal.pal
diff --git a/graphics/pokemon/palettes/ludicolo_shiny_palette.pal b/graphics/pokemon/ludicolo/shiny.pal
index 442eda95e..442eda95e 100644
--- a/graphics/pokemon/palettes/ludicolo_shiny_palette.pal
+++ b/graphics/pokemon/ludicolo/shiny.pal
diff --git a/graphics/pokemon/back_pics/lugia_back_pic.png b/graphics/pokemon/lugia/back.png
index ece7def85..ece7def85 100644
--- a/graphics/pokemon/back_pics/lugia_back_pic.png
+++ b/graphics/pokemon/lugia/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/lugia_footprint.png b/graphics/pokemon/lugia/footprint.png
index e6642ed07..e6642ed07 100644
--- a/graphics/pokemon/footprints/lugia_footprint.png
+++ b/graphics/pokemon/lugia/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/lugia_still_front_pic.png b/graphics/pokemon/lugia/front.png
index 44f6ce278..44f6ce278 100644
--- a/graphics/pokemon/front_pics/lugia_still_front_pic.png
+++ b/graphics/pokemon/lugia/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/lugia_icon.png b/graphics/pokemon/lugia/icon.png
index 5e581ee19..5e581ee19 100644
--- a/graphics/pokemon/icons/lugia_icon.png
+++ b/graphics/pokemon/lugia/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/lugia_palette.pal b/graphics/pokemon/lugia/normal.pal
index 483157770..483157770 100644
--- a/graphics/pokemon/palettes/lugia_palette.pal
+++ b/graphics/pokemon/lugia/normal.pal
diff --git a/graphics/pokemon/palettes/lugia_shiny_palette.pal b/graphics/pokemon/lugia/shiny.pal
index 42db26696..42db26696 100644
--- a/graphics/pokemon/palettes/lugia_shiny_palette.pal
+++ b/graphics/pokemon/lugia/shiny.pal
diff --git a/graphics/pokemon/back_pics/lunatone_back_pic.png b/graphics/pokemon/lunatone/back.png
index 3f2247f8e..3f2247f8e 100644
--- a/graphics/pokemon/back_pics/lunatone_back_pic.png
+++ b/graphics/pokemon/lunatone/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/lunatone_footprint.png b/graphics/pokemon/lunatone/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/lunatone_footprint.png
+++ b/graphics/pokemon/lunatone/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/lunatone_still_front_pic.png b/graphics/pokemon/lunatone/front.png
index 3458d32d5..3458d32d5 100644
--- a/graphics/pokemon/front_pics/lunatone_still_front_pic.png
+++ b/graphics/pokemon/lunatone/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/lunatone_icon.png b/graphics/pokemon/lunatone/icon.png
index 27a42ae41..27a42ae41 100644
--- a/graphics/pokemon/icons/lunatone_icon.png
+++ b/graphics/pokemon/lunatone/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/lunatone_palette.pal b/graphics/pokemon/lunatone/normal.pal
index 9a0a5885f..9a0a5885f 100644
--- a/graphics/pokemon/palettes/lunatone_palette.pal
+++ b/graphics/pokemon/lunatone/normal.pal
diff --git a/graphics/pokemon/palettes/lunatone_shiny_palette.pal b/graphics/pokemon/lunatone/shiny.pal
index e0f5eb308..e0f5eb308 100644
--- a/graphics/pokemon/palettes/lunatone_shiny_palette.pal
+++ b/graphics/pokemon/lunatone/shiny.pal
diff --git a/graphics/pokemon/back_pics/luvdisc_back_pic.png b/graphics/pokemon/luvdisc/back.png
index 04895aa25..04895aa25 100644
--- a/graphics/pokemon/back_pics/luvdisc_back_pic.png
+++ b/graphics/pokemon/luvdisc/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/luvdisc_footprint.png b/graphics/pokemon/luvdisc/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/luvdisc_footprint.png
+++ b/graphics/pokemon/luvdisc/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/luvdisc_still_front_pic.png b/graphics/pokemon/luvdisc/front.png
index e85283e10..e85283e10 100644
--- a/graphics/pokemon/front_pics/luvdisc_still_front_pic.png
+++ b/graphics/pokemon/luvdisc/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/luvdisc_icon.png b/graphics/pokemon/luvdisc/icon.png
index 980b73492..980b73492 100644
--- a/graphics/pokemon/icons/luvdisc_icon.png
+++ b/graphics/pokemon/luvdisc/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/luvdisc_palette.pal b/graphics/pokemon/luvdisc/normal.pal
index c443e0633..c443e0633 100644
--- a/graphics/pokemon/palettes/luvdisc_palette.pal
+++ b/graphics/pokemon/luvdisc/normal.pal
diff --git a/graphics/pokemon/palettes/luvdisc_shiny_palette.pal b/graphics/pokemon/luvdisc/shiny.pal
index b1df53235..b1df53235 100644
--- a/graphics/pokemon/palettes/luvdisc_shiny_palette.pal
+++ b/graphics/pokemon/luvdisc/shiny.pal
diff --git a/graphics/pokemon/back_pics/machamp_back_pic.png b/graphics/pokemon/machamp/back.png
index 98f6f961b..98f6f961b 100644
--- a/graphics/pokemon/back_pics/machamp_back_pic.png
+++ b/graphics/pokemon/machamp/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/machamp_footprint.png b/graphics/pokemon/machamp/footprint.png
index e562fd08c..e562fd08c 100644
--- a/graphics/pokemon/footprints/machamp_footprint.png
+++ b/graphics/pokemon/machamp/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/machamp_still_front_pic.png b/graphics/pokemon/machamp/front.png
index 8096b4ddd..8096b4ddd 100644
--- a/graphics/pokemon/front_pics/machamp_still_front_pic.png
+++ b/graphics/pokemon/machamp/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/machamp_icon.png b/graphics/pokemon/machamp/icon.png
index f803845ab..f803845ab 100644
--- a/graphics/pokemon/icons/machamp_icon.png
+++ b/graphics/pokemon/machamp/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/machamp_palette.pal b/graphics/pokemon/machamp/normal.pal
index ceb43fc3c..ceb43fc3c 100644
--- a/graphics/pokemon/palettes/machamp_palette.pal
+++ b/graphics/pokemon/machamp/normal.pal
diff --git a/graphics/pokemon/palettes/machamp_shiny_palette.pal b/graphics/pokemon/machamp/shiny.pal
index 6e7cc549c..6e7cc549c 100644
--- a/graphics/pokemon/palettes/machamp_shiny_palette.pal
+++ b/graphics/pokemon/machamp/shiny.pal
diff --git a/graphics/pokemon/back_pics/machoke_back_pic.png b/graphics/pokemon/machoke/back.png
index b3c84c77c..b3c84c77c 100644
--- a/graphics/pokemon/back_pics/machoke_back_pic.png
+++ b/graphics/pokemon/machoke/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/machoke_footprint.png b/graphics/pokemon/machoke/footprint.png
index d9009d3e1..d9009d3e1 100644
--- a/graphics/pokemon/footprints/machoke_footprint.png
+++ b/graphics/pokemon/machoke/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/machoke_still_front_pic.png b/graphics/pokemon/machoke/front.png
index a42831e68..a42831e68 100644
--- a/graphics/pokemon/front_pics/machoke_still_front_pic.png
+++ b/graphics/pokemon/machoke/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/machoke_icon.png b/graphics/pokemon/machoke/icon.png
index 97d3a6bf0..97d3a6bf0 100644
--- a/graphics/pokemon/icons/machoke_icon.png
+++ b/graphics/pokemon/machoke/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/machoke_palette.pal b/graphics/pokemon/machoke/normal.pal
index 937fd5d77..937fd5d77 100644
--- a/graphics/pokemon/palettes/machoke_palette.pal
+++ b/graphics/pokemon/machoke/normal.pal
diff --git a/graphics/pokemon/palettes/machoke_shiny_palette.pal b/graphics/pokemon/machoke/shiny.pal
index 5d5cb321b..5d5cb321b 100644
--- a/graphics/pokemon/palettes/machoke_shiny_palette.pal
+++ b/graphics/pokemon/machoke/shiny.pal
diff --git a/graphics/pokemon/back_pics/machop_back_pic.png b/graphics/pokemon/machop/back.png
index 6b0dda04c..6b0dda04c 100644
--- a/graphics/pokemon/back_pics/machop_back_pic.png
+++ b/graphics/pokemon/machop/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/machop_footprint.png b/graphics/pokemon/machop/footprint.png
index 8b2808553..8b2808553 100644
--- a/graphics/pokemon/footprints/machop_footprint.png
+++ b/graphics/pokemon/machop/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/machop_still_front_pic.png b/graphics/pokemon/machop/front.png
index 4a9656314..4a9656314 100644
--- a/graphics/pokemon/front_pics/machop_still_front_pic.png
+++ b/graphics/pokemon/machop/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/machop_icon.png b/graphics/pokemon/machop/icon.png
index 53773ea8c..53773ea8c 100644
--- a/graphics/pokemon/icons/machop_icon.png
+++ b/graphics/pokemon/machop/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/machop_palette.pal b/graphics/pokemon/machop/normal.pal
index 6914cd822..6914cd822 100644
--- a/graphics/pokemon/palettes/machop_palette.pal
+++ b/graphics/pokemon/machop/normal.pal
diff --git a/graphics/pokemon/palettes/machop_shiny_palette.pal b/graphics/pokemon/machop/shiny.pal
index 2ceeb3c56..2ceeb3c56 100644
--- a/graphics/pokemon/palettes/machop_shiny_palette.pal
+++ b/graphics/pokemon/machop/shiny.pal
diff --git a/graphics/pokemon/back_pics/magby_back_pic.png b/graphics/pokemon/magby/back.png
index f05f62283..f05f62283 100644
--- a/graphics/pokemon/back_pics/magby_back_pic.png
+++ b/graphics/pokemon/magby/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/magby_footprint.png b/graphics/pokemon/magby/footprint.png
index 655d0ca2b..655d0ca2b 100644
--- a/graphics/pokemon/footprints/magby_footprint.png
+++ b/graphics/pokemon/magby/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/magby_still_front_pic.png b/graphics/pokemon/magby/front.png
index 6994953b2..6994953b2 100644
--- a/graphics/pokemon/front_pics/magby_still_front_pic.png
+++ b/graphics/pokemon/magby/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/magby_icon.png b/graphics/pokemon/magby/icon.png
index 574274003..574274003 100644
--- a/graphics/pokemon/icons/magby_icon.png
+++ b/graphics/pokemon/magby/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/magby_palette.pal b/graphics/pokemon/magby/normal.pal
index 42daceeb8..42daceeb8 100644
--- a/graphics/pokemon/palettes/magby_palette.pal
+++ b/graphics/pokemon/magby/normal.pal
diff --git a/graphics/pokemon/palettes/magby_shiny_palette.pal b/graphics/pokemon/magby/shiny.pal
index 97a19115c..97a19115c 100644
--- a/graphics/pokemon/palettes/magby_shiny_palette.pal
+++ b/graphics/pokemon/magby/shiny.pal
diff --git a/graphics/pokemon/back_pics/magcargo_back_pic.png b/graphics/pokemon/magcargo/back.png
index 8d2221f0d..8d2221f0d 100644
--- a/graphics/pokemon/back_pics/magcargo_back_pic.png
+++ b/graphics/pokemon/magcargo/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/magcargo_footprint.png b/graphics/pokemon/magcargo/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/magcargo_footprint.png
+++ b/graphics/pokemon/magcargo/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/magcargo_still_front_pic.png b/graphics/pokemon/magcargo/front.png
index b2e3679cd..b2e3679cd 100644
--- a/graphics/pokemon/front_pics/magcargo_still_front_pic.png
+++ b/graphics/pokemon/magcargo/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/magcargo_icon.png b/graphics/pokemon/magcargo/icon.png
index 46cbb8cb5..46cbb8cb5 100644
--- a/graphics/pokemon/icons/magcargo_icon.png
+++ b/graphics/pokemon/magcargo/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/magcargo_palette.pal b/graphics/pokemon/magcargo/normal.pal
index 71f6dce5b..71f6dce5b 100644
--- a/graphics/pokemon/palettes/magcargo_palette.pal
+++ b/graphics/pokemon/magcargo/normal.pal
diff --git a/graphics/pokemon/palettes/magcargo_shiny_palette.pal b/graphics/pokemon/magcargo/shiny.pal
index ff0c9dd40..ff0c9dd40 100644
--- a/graphics/pokemon/palettes/magcargo_shiny_palette.pal
+++ b/graphics/pokemon/magcargo/shiny.pal
diff --git a/graphics/pokemon/back_pics/magikarp_back_pic.png b/graphics/pokemon/magikarp/back.png
index 66e874bb9..66e874bb9 100644
--- a/graphics/pokemon/back_pics/magikarp_back_pic.png
+++ b/graphics/pokemon/magikarp/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/magikarp_footprint.png b/graphics/pokemon/magikarp/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/magikarp_footprint.png
+++ b/graphics/pokemon/magikarp/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/magikarp_still_front_pic.png b/graphics/pokemon/magikarp/front.png
index a34e0e9cd..a34e0e9cd 100644
--- a/graphics/pokemon/front_pics/magikarp_still_front_pic.png
+++ b/graphics/pokemon/magikarp/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/magikarp_icon.png b/graphics/pokemon/magikarp/icon.png
index 004884582..004884582 100644
--- a/graphics/pokemon/icons/magikarp_icon.png
+++ b/graphics/pokemon/magikarp/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/magikarp_palette.pal b/graphics/pokemon/magikarp/normal.pal
index 48f4b2d0d..48f4b2d0d 100644
--- a/graphics/pokemon/palettes/magikarp_palette.pal
+++ b/graphics/pokemon/magikarp/normal.pal
diff --git a/graphics/pokemon/palettes/magikarp_shiny_palette.pal b/graphics/pokemon/magikarp/shiny.pal
index d6eec780a..d6eec780a 100644
--- a/graphics/pokemon/palettes/magikarp_shiny_palette.pal
+++ b/graphics/pokemon/magikarp/shiny.pal
diff --git a/graphics/pokemon/back_pics/magmar_back_pic.png b/graphics/pokemon/magmar/back.png
index 4d4f4e77a..4d4f4e77a 100644
--- a/graphics/pokemon/back_pics/magmar_back_pic.png
+++ b/graphics/pokemon/magmar/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/magmar_footprint.png b/graphics/pokemon/magmar/footprint.png
index 17de53a46..17de53a46 100644
--- a/graphics/pokemon/footprints/magmar_footprint.png
+++ b/graphics/pokemon/magmar/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/magmar_still_front_pic.png b/graphics/pokemon/magmar/front.png
index 1414e4e04..1414e4e04 100644
--- a/graphics/pokemon/front_pics/magmar_still_front_pic.png
+++ b/graphics/pokemon/magmar/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/magmar_icon.png b/graphics/pokemon/magmar/icon.png
index af5ece4f7..af5ece4f7 100644
--- a/graphics/pokemon/icons/magmar_icon.png
+++ b/graphics/pokemon/magmar/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/magmar_palette.pal b/graphics/pokemon/magmar/normal.pal
index be4ac826e..be4ac826e 100644
--- a/graphics/pokemon/palettes/magmar_palette.pal
+++ b/graphics/pokemon/magmar/normal.pal
diff --git a/graphics/pokemon/palettes/magmar_shiny_palette.pal b/graphics/pokemon/magmar/shiny.pal
index f4da957cb..f4da957cb 100644
--- a/graphics/pokemon/palettes/magmar_shiny_palette.pal
+++ b/graphics/pokemon/magmar/shiny.pal
diff --git a/graphics/pokemon/back_pics/magnemite_back_pic.png b/graphics/pokemon/magnemite/back.png
index c1769ec51..c1769ec51 100644
--- a/graphics/pokemon/back_pics/magnemite_back_pic.png
+++ b/graphics/pokemon/magnemite/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/magnemite_footprint.png b/graphics/pokemon/magnemite/footprint.png
index f710e5028..f710e5028 100644
--- a/graphics/pokemon/footprints/magnemite_footprint.png
+++ b/graphics/pokemon/magnemite/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/magnemite_still_front_pic.png b/graphics/pokemon/magnemite/front.png
index 4f1b8a04f..4f1b8a04f 100644
--- a/graphics/pokemon/front_pics/magnemite_still_front_pic.png
+++ b/graphics/pokemon/magnemite/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/magnemite_icon.png b/graphics/pokemon/magnemite/icon.png
index ba9561d21..ba9561d21 100644
--- a/graphics/pokemon/icons/magnemite_icon.png
+++ b/graphics/pokemon/magnemite/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/magnemite_palette.pal b/graphics/pokemon/magnemite/normal.pal
index efcd33f3e..efcd33f3e 100644
--- a/graphics/pokemon/palettes/magnemite_palette.pal
+++ b/graphics/pokemon/magnemite/normal.pal
diff --git a/graphics/pokemon/palettes/magnemite_shiny_palette.pal b/graphics/pokemon/magnemite/shiny.pal
index 50bb00b88..50bb00b88 100644
--- a/graphics/pokemon/palettes/magnemite_shiny_palette.pal
+++ b/graphics/pokemon/magnemite/shiny.pal
diff --git a/graphics/pokemon/back_pics/magneton_back_pic.png b/graphics/pokemon/magneton/back.png
index 5fc357dfc..5fc357dfc 100644
--- a/graphics/pokemon/back_pics/magneton_back_pic.png
+++ b/graphics/pokemon/magneton/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/magneton_footprint.png b/graphics/pokemon/magneton/footprint.png
index 00b8b0ebf..00b8b0ebf 100644
--- a/graphics/pokemon/footprints/magneton_footprint.png
+++ b/graphics/pokemon/magneton/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/magneton_still_front_pic.png b/graphics/pokemon/magneton/front.png
index 2589acbb4..2589acbb4 100644
--- a/graphics/pokemon/front_pics/magneton_still_front_pic.png
+++ b/graphics/pokemon/magneton/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/magneton_icon.png b/graphics/pokemon/magneton/icon.png
index 91a25f3ce..91a25f3ce 100644
--- a/graphics/pokemon/icons/magneton_icon.png
+++ b/graphics/pokemon/magneton/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/magneton_palette.pal b/graphics/pokemon/magneton/normal.pal
index 00f6da9b2..00f6da9b2 100644
--- a/graphics/pokemon/palettes/magneton_palette.pal
+++ b/graphics/pokemon/magneton/normal.pal
diff --git a/graphics/pokemon/palettes/magneton_shiny_palette.pal b/graphics/pokemon/magneton/shiny.pal
index 1777fbd2a..1777fbd2a 100644
--- a/graphics/pokemon/palettes/magneton_shiny_palette.pal
+++ b/graphics/pokemon/magneton/shiny.pal
diff --git a/graphics/pokemon/back_pics/makuhita_back_pic.png b/graphics/pokemon/makuhita/back.png
index 45423f822..45423f822 100644
--- a/graphics/pokemon/back_pics/makuhita_back_pic.png
+++ b/graphics/pokemon/makuhita/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/makuhita_footprint.png b/graphics/pokemon/makuhita/footprint.png
index 3da20ccb3..3da20ccb3 100644
--- a/graphics/pokemon/footprints/makuhita_footprint.png
+++ b/graphics/pokemon/makuhita/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/makuhita_still_front_pic.png b/graphics/pokemon/makuhita/front.png
index 76a11c069..76a11c069 100644
--- a/graphics/pokemon/front_pics/makuhita_still_front_pic.png
+++ b/graphics/pokemon/makuhita/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/makuhita_icon.png b/graphics/pokemon/makuhita/icon.png
index d64f2c418..d64f2c418 100644
--- a/graphics/pokemon/icons/makuhita_icon.png
+++ b/graphics/pokemon/makuhita/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/makuhita_palette.pal b/graphics/pokemon/makuhita/normal.pal
index 7fc578bb1..7fc578bb1 100644
--- a/graphics/pokemon/palettes/makuhita_palette.pal
+++ b/graphics/pokemon/makuhita/normal.pal
diff --git a/graphics/pokemon/palettes/makuhita_shiny_palette.pal b/graphics/pokemon/makuhita/shiny.pal
index 2f3aa75fc..2f3aa75fc 100644
--- a/graphics/pokemon/palettes/makuhita_shiny_palette.pal
+++ b/graphics/pokemon/makuhita/shiny.pal
diff --git a/graphics/pokemon/back_pics/manectric_back_pic.png b/graphics/pokemon/manectric/back.png
index 9373757a0..9373757a0 100644
--- a/graphics/pokemon/back_pics/manectric_back_pic.png
+++ b/graphics/pokemon/manectric/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/manectric_footprint.png b/graphics/pokemon/manectric/footprint.png
index 4f4903bf9..4f4903bf9 100644
--- a/graphics/pokemon/footprints/manectric_footprint.png
+++ b/graphics/pokemon/manectric/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/manectric_still_front_pic.png b/graphics/pokemon/manectric/front.png
index d4142301c..d4142301c 100644
--- a/graphics/pokemon/front_pics/manectric_still_front_pic.png
+++ b/graphics/pokemon/manectric/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/manectric_icon.png b/graphics/pokemon/manectric/icon.png
index 0b8fe933d..0b8fe933d 100644
--- a/graphics/pokemon/icons/manectric_icon.png
+++ b/graphics/pokemon/manectric/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/manectric_palette.pal b/graphics/pokemon/manectric/normal.pal
index 05ec20919..05ec20919 100644
--- a/graphics/pokemon/palettes/manectric_palette.pal
+++ b/graphics/pokemon/manectric/normal.pal
diff --git a/graphics/pokemon/palettes/manectric_shiny_palette.pal b/graphics/pokemon/manectric/shiny.pal
index 52285031d..52285031d 100644
--- a/graphics/pokemon/palettes/manectric_shiny_palette.pal
+++ b/graphics/pokemon/manectric/shiny.pal
diff --git a/graphics/pokemon/back_pics/mankey_back_pic.png b/graphics/pokemon/mankey/back.png
index 00336d751..00336d751 100644
--- a/graphics/pokemon/back_pics/mankey_back_pic.png
+++ b/graphics/pokemon/mankey/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/mankey_footprint.png b/graphics/pokemon/mankey/footprint.png
index f02036af5..f02036af5 100644
--- a/graphics/pokemon/footprints/mankey_footprint.png
+++ b/graphics/pokemon/mankey/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/mankey_still_front_pic.png b/graphics/pokemon/mankey/front.png
index 47b9e9d93..47b9e9d93 100644
--- a/graphics/pokemon/front_pics/mankey_still_front_pic.png
+++ b/graphics/pokemon/mankey/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/mankey_icon.png b/graphics/pokemon/mankey/icon.png
index 369221126..369221126 100644
--- a/graphics/pokemon/icons/mankey_icon.png
+++ b/graphics/pokemon/mankey/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/mankey_palette.pal b/graphics/pokemon/mankey/normal.pal
index 0f80883fc..0f80883fc 100644
--- a/graphics/pokemon/palettes/mankey_palette.pal
+++ b/graphics/pokemon/mankey/normal.pal
diff --git a/graphics/pokemon/palettes/mankey_shiny_palette.pal b/graphics/pokemon/mankey/shiny.pal
index 55703c37b..55703c37b 100644
--- a/graphics/pokemon/palettes/mankey_shiny_palette.pal
+++ b/graphics/pokemon/mankey/shiny.pal
diff --git a/graphics/pokemon/back_pics/mantine_back_pic.png b/graphics/pokemon/mantine/back.png
index 186e90e1e..186e90e1e 100644
--- a/graphics/pokemon/back_pics/mantine_back_pic.png
+++ b/graphics/pokemon/mantine/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/mantine_footprint.png b/graphics/pokemon/mantine/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/mantine_footprint.png
+++ b/graphics/pokemon/mantine/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/mantine_still_front_pic.png b/graphics/pokemon/mantine/front.png
index b8a292d83..b8a292d83 100644
--- a/graphics/pokemon/front_pics/mantine_still_front_pic.png
+++ b/graphics/pokemon/mantine/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/mantine_icon.png b/graphics/pokemon/mantine/icon.png
index cf0bb2223..cf0bb2223 100644
--- a/graphics/pokemon/icons/mantine_icon.png
+++ b/graphics/pokemon/mantine/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/mantine_palette.pal b/graphics/pokemon/mantine/normal.pal
index 36e0777c4..36e0777c4 100644
--- a/graphics/pokemon/palettes/mantine_palette.pal
+++ b/graphics/pokemon/mantine/normal.pal
diff --git a/graphics/pokemon/palettes/mantine_shiny_palette.pal b/graphics/pokemon/mantine/shiny.pal
index 5427dc275..5427dc275 100644
--- a/graphics/pokemon/palettes/mantine_shiny_palette.pal
+++ b/graphics/pokemon/mantine/shiny.pal
diff --git a/graphics/pokemon/back_pics/mareep_back_pic.png b/graphics/pokemon/mareep/back.png
index 601d13c8d..601d13c8d 100644
--- a/graphics/pokemon/back_pics/mareep_back_pic.png
+++ b/graphics/pokemon/mareep/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/mareep_footprint.png b/graphics/pokemon/mareep/footprint.png
index 2913a4c48..2913a4c48 100644
--- a/graphics/pokemon/footprints/mareep_footprint.png
+++ b/graphics/pokemon/mareep/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/mareep_still_front_pic.png b/graphics/pokemon/mareep/front.png
index 7f052faea..7f052faea 100644
--- a/graphics/pokemon/front_pics/mareep_still_front_pic.png
+++ b/graphics/pokemon/mareep/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/mareep_icon.png b/graphics/pokemon/mareep/icon.png
index 2bd5335b6..2bd5335b6 100644
--- a/graphics/pokemon/icons/mareep_icon.png
+++ b/graphics/pokemon/mareep/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/mareep_palette.pal b/graphics/pokemon/mareep/normal.pal
index bd24bfe72..bd24bfe72 100644
--- a/graphics/pokemon/palettes/mareep_palette.pal
+++ b/graphics/pokemon/mareep/normal.pal
diff --git a/graphics/pokemon/palettes/mareep_shiny_palette.pal b/graphics/pokemon/mareep/shiny.pal
index 587f7493f..587f7493f 100644
--- a/graphics/pokemon/palettes/mareep_shiny_palette.pal
+++ b/graphics/pokemon/mareep/shiny.pal
diff --git a/graphics/pokemon/back_pics/marill_back_pic.png b/graphics/pokemon/marill/back.png
index 49bc29d97..49bc29d97 100644
--- a/graphics/pokemon/back_pics/marill_back_pic.png
+++ b/graphics/pokemon/marill/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/marill_footprint.png b/graphics/pokemon/marill/footprint.png
index a09d8f2c0..a09d8f2c0 100644
--- a/graphics/pokemon/footprints/marill_footprint.png
+++ b/graphics/pokemon/marill/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/marill_still_front_pic.png b/graphics/pokemon/marill/front.png
index 91cdf233f..91cdf233f 100644
--- a/graphics/pokemon/front_pics/marill_still_front_pic.png
+++ b/graphics/pokemon/marill/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/marill_icon.png b/graphics/pokemon/marill/icon.png
index d91f9da86..d91f9da86 100644
--- a/graphics/pokemon/icons/marill_icon.png
+++ b/graphics/pokemon/marill/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/marill_palette.pal b/graphics/pokemon/marill/normal.pal
index 77ed6b4b6..77ed6b4b6 100644
--- a/graphics/pokemon/palettes/marill_palette.pal
+++ b/graphics/pokemon/marill/normal.pal
diff --git a/graphics/pokemon/palettes/marill_shiny_palette.pal b/graphics/pokemon/marill/shiny.pal
index 7bd492c65..7bd492c65 100644
--- a/graphics/pokemon/palettes/marill_shiny_palette.pal
+++ b/graphics/pokemon/marill/shiny.pal
diff --git a/graphics/pokemon/back_pics/marowak_back_pic.png b/graphics/pokemon/marowak/back.png
index 3af621821..3af621821 100644
--- a/graphics/pokemon/back_pics/marowak_back_pic.png
+++ b/graphics/pokemon/marowak/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/marowak_footprint.png b/graphics/pokemon/marowak/footprint.png
index fbde41d04..fbde41d04 100644
--- a/graphics/pokemon/footprints/marowak_footprint.png
+++ b/graphics/pokemon/marowak/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/marowak_still_front_pic.png b/graphics/pokemon/marowak/front.png
index cc30ea0c6..cc30ea0c6 100644
--- a/graphics/pokemon/front_pics/marowak_still_front_pic.png
+++ b/graphics/pokemon/marowak/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/marowak_icon.png b/graphics/pokemon/marowak/icon.png
index 7efbb1779..7efbb1779 100644
--- a/graphics/pokemon/icons/marowak_icon.png
+++ b/graphics/pokemon/marowak/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/marowak_palette.pal b/graphics/pokemon/marowak/normal.pal
index 467682472..467682472 100644
--- a/graphics/pokemon/palettes/marowak_palette.pal
+++ b/graphics/pokemon/marowak/normal.pal
diff --git a/graphics/pokemon/palettes/marowak_shiny_palette.pal b/graphics/pokemon/marowak/shiny.pal
index 569ccc082..569ccc082 100644
--- a/graphics/pokemon/palettes/marowak_shiny_palette.pal
+++ b/graphics/pokemon/marowak/shiny.pal
diff --git a/graphics/pokemon/back_pics/marshtomp_back_pic.png b/graphics/pokemon/marshtomp/back.png
index 6c530aaee..6c530aaee 100644
--- a/graphics/pokemon/back_pics/marshtomp_back_pic.png
+++ b/graphics/pokemon/marshtomp/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/marshtomp_footprint.png b/graphics/pokemon/marshtomp/footprint.png
index 3c232ccad..3c232ccad 100644
--- a/graphics/pokemon/footprints/marshtomp_footprint.png
+++ b/graphics/pokemon/marshtomp/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/marshtomp_still_front_pic.png b/graphics/pokemon/marshtomp/front.png
index 92e043bbc..92e043bbc 100644
--- a/graphics/pokemon/front_pics/marshtomp_still_front_pic.png
+++ b/graphics/pokemon/marshtomp/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/marshtomp_icon.png b/graphics/pokemon/marshtomp/icon.png
index 170e82851..170e82851 100644
--- a/graphics/pokemon/icons/marshtomp_icon.png
+++ b/graphics/pokemon/marshtomp/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/marshtomp_palette.pal b/graphics/pokemon/marshtomp/normal.pal
index b21cb52db..b21cb52db 100644
--- a/graphics/pokemon/palettes/marshtomp_palette.pal
+++ b/graphics/pokemon/marshtomp/normal.pal
diff --git a/graphics/pokemon/palettes/marshtomp_shiny_palette.pal b/graphics/pokemon/marshtomp/shiny.pal
index f47e2751d..f47e2751d 100644
--- a/graphics/pokemon/palettes/marshtomp_shiny_palette.pal
+++ b/graphics/pokemon/marshtomp/shiny.pal
diff --git a/graphics/pokemon/back_pics/masquerain_back_pic.png b/graphics/pokemon/masquerain/back.png
index 0092c2ca6..0092c2ca6 100644
--- a/graphics/pokemon/back_pics/masquerain_back_pic.png
+++ b/graphics/pokemon/masquerain/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/masquerain_footprint.png b/graphics/pokemon/masquerain/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/masquerain_footprint.png
+++ b/graphics/pokemon/masquerain/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/masquerain_still_front_pic.png b/graphics/pokemon/masquerain/front.png
index b4c33dccc..b4c33dccc 100644
--- a/graphics/pokemon/front_pics/masquerain_still_front_pic.png
+++ b/graphics/pokemon/masquerain/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/masquerain_icon.png b/graphics/pokemon/masquerain/icon.png
index 5487241e2..5487241e2 100644
--- a/graphics/pokemon/icons/masquerain_icon.png
+++ b/graphics/pokemon/masquerain/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/masquerain_palette.pal b/graphics/pokemon/masquerain/normal.pal
index 54690d35b..54690d35b 100644
--- a/graphics/pokemon/palettes/masquerain_palette.pal
+++ b/graphics/pokemon/masquerain/normal.pal
diff --git a/graphics/pokemon/palettes/masquerain_shiny_palette.pal b/graphics/pokemon/masquerain/shiny.pal
index 09ed3ccf5..09ed3ccf5 100644
--- a/graphics/pokemon/palettes/masquerain_shiny_palette.pal
+++ b/graphics/pokemon/masquerain/shiny.pal
diff --git a/graphics/pokemon/back_pics/mawile_back_pic.png b/graphics/pokemon/mawile/back.png
index 5bbf44ca9..5bbf44ca9 100644
--- a/graphics/pokemon/back_pics/mawile_back_pic.png
+++ b/graphics/pokemon/mawile/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/mawile_footprint.png b/graphics/pokemon/mawile/footprint.png
index 5195fd4df..5195fd4df 100644
--- a/graphics/pokemon/footprints/mawile_footprint.png
+++ b/graphics/pokemon/mawile/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/mawile_still_front_pic.png b/graphics/pokemon/mawile/front.png
index 49f38de14..49f38de14 100644
--- a/graphics/pokemon/front_pics/mawile_still_front_pic.png
+++ b/graphics/pokemon/mawile/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/mawile_icon.png b/graphics/pokemon/mawile/icon.png
index cf7363277..cf7363277 100644
--- a/graphics/pokemon/icons/mawile_icon.png
+++ b/graphics/pokemon/mawile/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/mawile_palette.pal b/graphics/pokemon/mawile/normal.pal
index ebb40809c..ebb40809c 100644
--- a/graphics/pokemon/palettes/mawile_palette.pal
+++ b/graphics/pokemon/mawile/normal.pal
diff --git a/graphics/pokemon/palettes/mawile_shiny_palette.pal b/graphics/pokemon/mawile/shiny.pal
index ceadfc93e..ceadfc93e 100644
--- a/graphics/pokemon/palettes/mawile_shiny_palette.pal
+++ b/graphics/pokemon/mawile/shiny.pal
diff --git a/graphics/pokemon/back_pics/medicham_back_pic.png b/graphics/pokemon/medicham/back.png
index f4f58839b..f4f58839b 100644
--- a/graphics/pokemon/back_pics/medicham_back_pic.png
+++ b/graphics/pokemon/medicham/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/medicham_footprint.png b/graphics/pokemon/medicham/footprint.png
index 804e8c1d8..804e8c1d8 100644
--- a/graphics/pokemon/footprints/medicham_footprint.png
+++ b/graphics/pokemon/medicham/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/medicham_still_front_pic.png b/graphics/pokemon/medicham/front.png
index 1da67a1f2..1da67a1f2 100644
--- a/graphics/pokemon/front_pics/medicham_still_front_pic.png
+++ b/graphics/pokemon/medicham/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/medicham_icon.png b/graphics/pokemon/medicham/icon.png
index ed287fb28..ed287fb28 100644
--- a/graphics/pokemon/icons/medicham_icon.png
+++ b/graphics/pokemon/medicham/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/medicham_palette.pal b/graphics/pokemon/medicham/normal.pal
index ffc38ab86..ffc38ab86 100644
--- a/graphics/pokemon/palettes/medicham_palette.pal
+++ b/graphics/pokemon/medicham/normal.pal
diff --git a/graphics/pokemon/palettes/medicham_shiny_palette.pal b/graphics/pokemon/medicham/shiny.pal
index 9a1d82aa7..9a1d82aa7 100644
--- a/graphics/pokemon/palettes/medicham_shiny_palette.pal
+++ b/graphics/pokemon/medicham/shiny.pal
diff --git a/graphics/pokemon/back_pics/meditite_back_pic.png b/graphics/pokemon/meditite/back.png
index 8c00d8f6d..8c00d8f6d 100644
--- a/graphics/pokemon/back_pics/meditite_back_pic.png
+++ b/graphics/pokemon/meditite/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/meditite_footprint.png b/graphics/pokemon/meditite/footprint.png
index 034cb0df8..034cb0df8 100644
--- a/graphics/pokemon/footprints/meditite_footprint.png
+++ b/graphics/pokemon/meditite/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/meditite_still_front_pic.png b/graphics/pokemon/meditite/front.png
index e8717b13d..e8717b13d 100644
--- a/graphics/pokemon/front_pics/meditite_still_front_pic.png
+++ b/graphics/pokemon/meditite/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/meditite_icon.png b/graphics/pokemon/meditite/icon.png
index 05a02f077..05a02f077 100644
--- a/graphics/pokemon/icons/meditite_icon.png
+++ b/graphics/pokemon/meditite/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/meditite_palette.pal b/graphics/pokemon/meditite/normal.pal
index a60729a6a..a60729a6a 100644
--- a/graphics/pokemon/palettes/meditite_palette.pal
+++ b/graphics/pokemon/meditite/normal.pal
diff --git a/graphics/pokemon/palettes/meditite_shiny_palette.pal b/graphics/pokemon/meditite/shiny.pal
index de7c38f5a..de7c38f5a 100644
--- a/graphics/pokemon/palettes/meditite_shiny_palette.pal
+++ b/graphics/pokemon/meditite/shiny.pal
diff --git a/graphics/pokemon/back_pics/meganium_back_pic.png b/graphics/pokemon/meganium/back.png
index be01710af..be01710af 100644
--- a/graphics/pokemon/back_pics/meganium_back_pic.png
+++ b/graphics/pokemon/meganium/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/meganium_footprint.png b/graphics/pokemon/meganium/footprint.png
index 39303ac4f..39303ac4f 100644
--- a/graphics/pokemon/footprints/meganium_footprint.png
+++ b/graphics/pokemon/meganium/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/meganium_still_front_pic.png b/graphics/pokemon/meganium/front.png
index 5ecee5287..5ecee5287 100644
--- a/graphics/pokemon/front_pics/meganium_still_front_pic.png
+++ b/graphics/pokemon/meganium/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/meganium_icon.png b/graphics/pokemon/meganium/icon.png
index ce4592272..ce4592272 100644
--- a/graphics/pokemon/icons/meganium_icon.png
+++ b/graphics/pokemon/meganium/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/meganium_palette.pal b/graphics/pokemon/meganium/normal.pal
index 6a4bca91c..6a4bca91c 100644
--- a/graphics/pokemon/palettes/meganium_palette.pal
+++ b/graphics/pokemon/meganium/normal.pal
diff --git a/graphics/pokemon/palettes/meganium_shiny_palette.pal b/graphics/pokemon/meganium/shiny.pal
index 0b03b419d..0b03b419d 100644
--- a/graphics/pokemon/palettes/meganium_shiny_palette.pal
+++ b/graphics/pokemon/meganium/shiny.pal
diff --git a/graphics/pokemon/back_pics/meowth_back_pic.png b/graphics/pokemon/meowth/back.png
index d87e7aa14..d87e7aa14 100644
--- a/graphics/pokemon/back_pics/meowth_back_pic.png
+++ b/graphics/pokemon/meowth/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/meowth_footprint.png b/graphics/pokemon/meowth/footprint.png
index 7dc20ada7..7dc20ada7 100644
--- a/graphics/pokemon/footprints/meowth_footprint.png
+++ b/graphics/pokemon/meowth/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/meowth_still_front_pic.png b/graphics/pokemon/meowth/front.png
index 76299ea59..76299ea59 100644
--- a/graphics/pokemon/front_pics/meowth_still_front_pic.png
+++ b/graphics/pokemon/meowth/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/meowth_icon.png b/graphics/pokemon/meowth/icon.png
index 146c69093..146c69093 100644
--- a/graphics/pokemon/icons/meowth_icon.png
+++ b/graphics/pokemon/meowth/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/meowth_palette.pal b/graphics/pokemon/meowth/normal.pal
index 034249ad5..034249ad5 100644
--- a/graphics/pokemon/palettes/meowth_palette.pal
+++ b/graphics/pokemon/meowth/normal.pal
diff --git a/graphics/pokemon/palettes/meowth_shiny_palette.pal b/graphics/pokemon/meowth/shiny.pal
index 68f386ca6..68f386ca6 100644
--- a/graphics/pokemon/palettes/meowth_shiny_palette.pal
+++ b/graphics/pokemon/meowth/shiny.pal
diff --git a/graphics/pokemon/back_pics/metagross_back_pic.png b/graphics/pokemon/metagross/back.png
index 2097f945d..2097f945d 100644
--- a/graphics/pokemon/back_pics/metagross_back_pic.png
+++ b/graphics/pokemon/metagross/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/metagross_footprint.png b/graphics/pokemon/metagross/footprint.png
index 07f91d604..07f91d604 100644
--- a/graphics/pokemon/footprints/metagross_footprint.png
+++ b/graphics/pokemon/metagross/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/metagross_still_front_pic.png b/graphics/pokemon/metagross/front.png
index 6349fe912..6349fe912 100644
--- a/graphics/pokemon/front_pics/metagross_still_front_pic.png
+++ b/graphics/pokemon/metagross/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/metagross_icon.png b/graphics/pokemon/metagross/icon.png
index e9cf14ab1..e9cf14ab1 100644
--- a/graphics/pokemon/icons/metagross_icon.png
+++ b/graphics/pokemon/metagross/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/metagross_palette.pal b/graphics/pokemon/metagross/normal.pal
index 265dadb67..265dadb67 100644
--- a/graphics/pokemon/palettes/metagross_palette.pal
+++ b/graphics/pokemon/metagross/normal.pal
diff --git a/graphics/pokemon/palettes/metagross_shiny_palette.pal b/graphics/pokemon/metagross/shiny.pal
index 4ff89d816..4ff89d816 100644
--- a/graphics/pokemon/palettes/metagross_shiny_palette.pal
+++ b/graphics/pokemon/metagross/shiny.pal
diff --git a/graphics/pokemon/back_pics/metang_back_pic.png b/graphics/pokemon/metang/back.png
index 2ba18eb3d..2ba18eb3d 100644
--- a/graphics/pokemon/back_pics/metang_back_pic.png
+++ b/graphics/pokemon/metang/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/metang_footprint.png b/graphics/pokemon/metang/footprint.png
index 5b0f8f5b0..5b0f8f5b0 100644
--- a/graphics/pokemon/footprints/metang_footprint.png
+++ b/graphics/pokemon/metang/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/metang_still_front_pic.png b/graphics/pokemon/metang/front.png
index 397bef3bf..397bef3bf 100644
--- a/graphics/pokemon/front_pics/metang_still_front_pic.png
+++ b/graphics/pokemon/metang/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/metang_icon.png b/graphics/pokemon/metang/icon.png
index cc095e935..cc095e935 100644
--- a/graphics/pokemon/icons/metang_icon.png
+++ b/graphics/pokemon/metang/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/metang_palette.pal b/graphics/pokemon/metang/normal.pal
index 41b48bc08..41b48bc08 100644
--- a/graphics/pokemon/palettes/metang_palette.pal
+++ b/graphics/pokemon/metang/normal.pal
diff --git a/graphics/pokemon/palettes/metang_shiny_palette.pal b/graphics/pokemon/metang/shiny.pal
index 56c14cd75..56c14cd75 100644
--- a/graphics/pokemon/palettes/metang_shiny_palette.pal
+++ b/graphics/pokemon/metang/shiny.pal
diff --git a/graphics/pokemon/back_pics/metapod_back_pic.png b/graphics/pokemon/metapod/back.png
index 825f6d504..825f6d504 100644
--- a/graphics/pokemon/back_pics/metapod_back_pic.png
+++ b/graphics/pokemon/metapod/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/metapod_footprint.png b/graphics/pokemon/metapod/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/metapod_footprint.png
+++ b/graphics/pokemon/metapod/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/metapod_still_front_pic.png b/graphics/pokemon/metapod/front.png
index 5069c7202..5069c7202 100644
--- a/graphics/pokemon/front_pics/metapod_still_front_pic.png
+++ b/graphics/pokemon/metapod/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/metapod_icon.png b/graphics/pokemon/metapod/icon.png
index 2316b2408..2316b2408 100644
--- a/graphics/pokemon/icons/metapod_icon.png
+++ b/graphics/pokemon/metapod/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/metapod_palette.pal b/graphics/pokemon/metapod/normal.pal
index 747522889..747522889 100644
--- a/graphics/pokemon/palettes/metapod_palette.pal
+++ b/graphics/pokemon/metapod/normal.pal
diff --git a/graphics/pokemon/palettes/metapod_shiny_palette.pal b/graphics/pokemon/metapod/shiny.pal
index ed6240fb0..ed6240fb0 100644
--- a/graphics/pokemon/palettes/metapod_shiny_palette.pal
+++ b/graphics/pokemon/metapod/shiny.pal
diff --git a/graphics/pokemon/back_pics/mew_back_pic.png b/graphics/pokemon/mew/back.png
index 85303cf70..85303cf70 100644
--- a/graphics/pokemon/back_pics/mew_back_pic.png
+++ b/graphics/pokemon/mew/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/mew_footprint.png b/graphics/pokemon/mew/footprint.png
index afbba43ac..afbba43ac 100644
--- a/graphics/pokemon/footprints/mew_footprint.png
+++ b/graphics/pokemon/mew/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/mew_still_front_pic.png b/graphics/pokemon/mew/front.png
index a2b2dd573..a2b2dd573 100644
--- a/graphics/pokemon/front_pics/mew_still_front_pic.png
+++ b/graphics/pokemon/mew/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/mew_icon.png b/graphics/pokemon/mew/icon.png
index cffd1dacc..cffd1dacc 100644
--- a/graphics/pokemon/icons/mew_icon.png
+++ b/graphics/pokemon/mew/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/mew_palette.pal b/graphics/pokemon/mew/normal.pal
index 2d1c73fbc..2d1c73fbc 100644
--- a/graphics/pokemon/palettes/mew_palette.pal
+++ b/graphics/pokemon/mew/normal.pal
diff --git a/graphics/pokemon/palettes/mew_shiny_palette.pal b/graphics/pokemon/mew/shiny.pal
index 6fd333100..6fd333100 100644
--- a/graphics/pokemon/palettes/mew_shiny_palette.pal
+++ b/graphics/pokemon/mew/shiny.pal
diff --git a/graphics/pokemon/back_pics/mewtwo_back_pic.png b/graphics/pokemon/mewtwo/back.png
index e466856e5..e466856e5 100644
--- a/graphics/pokemon/back_pics/mewtwo_back_pic.png
+++ b/graphics/pokemon/mewtwo/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/mewtwo_footprint.png b/graphics/pokemon/mewtwo/footprint.png
index 0f7573dd3..0f7573dd3 100644
--- a/graphics/pokemon/footprints/mewtwo_footprint.png
+++ b/graphics/pokemon/mewtwo/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/mewtwo_still_front_pic.png b/graphics/pokemon/mewtwo/front.png
index a35fd8dda..a35fd8dda 100644
--- a/graphics/pokemon/front_pics/mewtwo_still_front_pic.png
+++ b/graphics/pokemon/mewtwo/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/mewtwo_icon.png b/graphics/pokemon/mewtwo/icon.png
index 65f2aeec2..65f2aeec2 100644
--- a/graphics/pokemon/icons/mewtwo_icon.png
+++ b/graphics/pokemon/mewtwo/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/mewtwo_palette.pal b/graphics/pokemon/mewtwo/normal.pal
index 4afd3567e..4afd3567e 100644
--- a/graphics/pokemon/palettes/mewtwo_palette.pal
+++ b/graphics/pokemon/mewtwo/normal.pal
diff --git a/graphics/pokemon/palettes/mewtwo_shiny_palette.pal b/graphics/pokemon/mewtwo/shiny.pal
index c65c6c83e..c65c6c83e 100644
--- a/graphics/pokemon/palettes/mewtwo_shiny_palette.pal
+++ b/graphics/pokemon/mewtwo/shiny.pal
diff --git a/graphics/pokemon/back_pics/mightyena_back_pic.png b/graphics/pokemon/mightyena/back.png
index 188562590..188562590 100644
--- a/graphics/pokemon/back_pics/mightyena_back_pic.png
+++ b/graphics/pokemon/mightyena/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/mightyena_footprint.png b/graphics/pokemon/mightyena/footprint.png
index b39af65bc..b39af65bc 100644
--- a/graphics/pokemon/footprints/mightyena_footprint.png
+++ b/graphics/pokemon/mightyena/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/mightyena_still_front_pic.png b/graphics/pokemon/mightyena/front.png
index 16af4c021..16af4c021 100644
--- a/graphics/pokemon/front_pics/mightyena_still_front_pic.png
+++ b/graphics/pokemon/mightyena/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/mightyena_icon.png b/graphics/pokemon/mightyena/icon.png
index 3f9e61763..3f9e61763 100644
--- a/graphics/pokemon/icons/mightyena_icon.png
+++ b/graphics/pokemon/mightyena/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/mightyena_palette.pal b/graphics/pokemon/mightyena/normal.pal
index 42cdc8fc1..42cdc8fc1 100644
--- a/graphics/pokemon/palettes/mightyena_palette.pal
+++ b/graphics/pokemon/mightyena/normal.pal
diff --git a/graphics/pokemon/palettes/mightyena_shiny_palette.pal b/graphics/pokemon/mightyena/shiny.pal
index 7881952af..7881952af 100644
--- a/graphics/pokemon/palettes/mightyena_shiny_palette.pal
+++ b/graphics/pokemon/mightyena/shiny.pal
diff --git a/graphics/pokemon/back_pics/milotic_back_pic.png b/graphics/pokemon/milotic/back.png
index 5d91dfb63..5d91dfb63 100644
--- a/graphics/pokemon/back_pics/milotic_back_pic.png
+++ b/graphics/pokemon/milotic/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/milotic_footprint.png b/graphics/pokemon/milotic/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/milotic_footprint.png
+++ b/graphics/pokemon/milotic/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/milotic_still_front_pic.png b/graphics/pokemon/milotic/front.png
index 82d683449..82d683449 100644
--- a/graphics/pokemon/front_pics/milotic_still_front_pic.png
+++ b/graphics/pokemon/milotic/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/milotic_icon.png b/graphics/pokemon/milotic/icon.png
index c1aa2ec8a..c1aa2ec8a 100644
--- a/graphics/pokemon/icons/milotic_icon.png
+++ b/graphics/pokemon/milotic/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/milotic_palette.pal b/graphics/pokemon/milotic/normal.pal
index df5cab01a..df5cab01a 100644
--- a/graphics/pokemon/palettes/milotic_palette.pal
+++ b/graphics/pokemon/milotic/normal.pal
diff --git a/graphics/pokemon/palettes/milotic_shiny_palette.pal b/graphics/pokemon/milotic/shiny.pal
index 8a57b80b2..8a57b80b2 100644
--- a/graphics/pokemon/palettes/milotic_shiny_palette.pal
+++ b/graphics/pokemon/milotic/shiny.pal
diff --git a/graphics/pokemon/back_pics/miltank_back_pic.png b/graphics/pokemon/miltank/back.png
index 0cf5b21e6..0cf5b21e6 100644
--- a/graphics/pokemon/back_pics/miltank_back_pic.png
+++ b/graphics/pokemon/miltank/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/miltank_footprint.png b/graphics/pokemon/miltank/footprint.png
index a7162cd21..a7162cd21 100644
--- a/graphics/pokemon/footprints/miltank_footprint.png
+++ b/graphics/pokemon/miltank/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/miltank_still_front_pic.png b/graphics/pokemon/miltank/front.png
index 394b56fab..394b56fab 100644
--- a/graphics/pokemon/front_pics/miltank_still_front_pic.png
+++ b/graphics/pokemon/miltank/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/miltank_icon.png b/graphics/pokemon/miltank/icon.png
index ade9cad90..ade9cad90 100644
--- a/graphics/pokemon/icons/miltank_icon.png
+++ b/graphics/pokemon/miltank/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/miltank_palette.pal b/graphics/pokemon/miltank/normal.pal
index 105c67283..105c67283 100644
--- a/graphics/pokemon/palettes/miltank_palette.pal
+++ b/graphics/pokemon/miltank/normal.pal
diff --git a/graphics/pokemon/palettes/miltank_shiny_palette.pal b/graphics/pokemon/miltank/shiny.pal
index 7dcb6f2ee..7dcb6f2ee 100644
--- a/graphics/pokemon/palettes/miltank_shiny_palette.pal
+++ b/graphics/pokemon/miltank/shiny.pal
diff --git a/graphics/pokemon/back_pics/minun_back_pic.png b/graphics/pokemon/minun/back.png
index 7c1377d59..7c1377d59 100644
--- a/graphics/pokemon/back_pics/minun_back_pic.png
+++ b/graphics/pokemon/minun/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/minun_footprint.png b/graphics/pokemon/minun/footprint.png
index 1071b8069..1071b8069 100644
--- a/graphics/pokemon/footprints/minun_footprint.png
+++ b/graphics/pokemon/minun/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/minun_still_front_pic.png b/graphics/pokemon/minun/front.png
index 9b373c0a2..9b373c0a2 100644
--- a/graphics/pokemon/front_pics/minun_still_front_pic.png
+++ b/graphics/pokemon/minun/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/minun_icon.png b/graphics/pokemon/minun/icon.png
index 1aacd776a..1aacd776a 100644
--- a/graphics/pokemon/icons/minun_icon.png
+++ b/graphics/pokemon/minun/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/minun_palette.pal b/graphics/pokemon/minun/normal.pal
index 3ed8a19ee..3ed8a19ee 100644
--- a/graphics/pokemon/palettes/minun_palette.pal
+++ b/graphics/pokemon/minun/normal.pal
diff --git a/graphics/pokemon/palettes/minun_shiny_palette.pal b/graphics/pokemon/minun/shiny.pal
index db9c93534..db9c93534 100644
--- a/graphics/pokemon/palettes/minun_shiny_palette.pal
+++ b/graphics/pokemon/minun/shiny.pal
diff --git a/graphics/pokemon/back_pics/misdreavus_back_pic.png b/graphics/pokemon/misdreavus/back.png
index 44b44a3ff..44b44a3ff 100644
--- a/graphics/pokemon/back_pics/misdreavus_back_pic.png
+++ b/graphics/pokemon/misdreavus/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/misdreavus_footprint.png b/graphics/pokemon/misdreavus/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/misdreavus_footprint.png
+++ b/graphics/pokemon/misdreavus/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/misdreavus_still_front_pic.png b/graphics/pokemon/misdreavus/front.png
index 135f6969b..135f6969b 100644
--- a/graphics/pokemon/front_pics/misdreavus_still_front_pic.png
+++ b/graphics/pokemon/misdreavus/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/misdreavus_icon.png b/graphics/pokemon/misdreavus/icon.png
index bbe121b91..bbe121b91 100644
--- a/graphics/pokemon/icons/misdreavus_icon.png
+++ b/graphics/pokemon/misdreavus/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/misdreavus_palette.pal b/graphics/pokemon/misdreavus/normal.pal
index c57ab5ea7..c57ab5ea7 100644
--- a/graphics/pokemon/palettes/misdreavus_palette.pal
+++ b/graphics/pokemon/misdreavus/normal.pal
diff --git a/graphics/pokemon/palettes/misdreavus_shiny_palette.pal b/graphics/pokemon/misdreavus/shiny.pal
index 8814515be..8814515be 100644
--- a/graphics/pokemon/palettes/misdreavus_shiny_palette.pal
+++ b/graphics/pokemon/misdreavus/shiny.pal
diff --git a/graphics/pokemon/back_pics/moltres_back_pic.png b/graphics/pokemon/moltres/back.png
index 11ed8ced8..11ed8ced8 100644
--- a/graphics/pokemon/back_pics/moltres_back_pic.png
+++ b/graphics/pokemon/moltres/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/moltres_footprint.png b/graphics/pokemon/moltres/footprint.png
index 3900403bd..3900403bd 100644
--- a/graphics/pokemon/footprints/moltres_footprint.png
+++ b/graphics/pokemon/moltres/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/moltres_still_front_pic.png b/graphics/pokemon/moltres/front.png
index 3ce75c7cc..3ce75c7cc 100644
--- a/graphics/pokemon/front_pics/moltres_still_front_pic.png
+++ b/graphics/pokemon/moltres/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/moltres_icon.png b/graphics/pokemon/moltres/icon.png
index e15d2164a..e15d2164a 100644
--- a/graphics/pokemon/icons/moltres_icon.png
+++ b/graphics/pokemon/moltres/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/moltres_palette.pal b/graphics/pokemon/moltres/normal.pal
index b27f7cdac..b27f7cdac 100644
--- a/graphics/pokemon/palettes/moltres_palette.pal
+++ b/graphics/pokemon/moltres/normal.pal
diff --git a/graphics/pokemon/palettes/moltres_shiny_palette.pal b/graphics/pokemon/moltres/shiny.pal
index b289551aa..b289551aa 100644
--- a/graphics/pokemon/palettes/moltres_shiny_palette.pal
+++ b/graphics/pokemon/moltres/shiny.pal
diff --git a/graphics/pokemon/back_pics/mr_mime_back_pic.png b/graphics/pokemon/mr_mime/back.png
index 129fbb4e2..129fbb4e2 100644
--- a/graphics/pokemon/back_pics/mr_mime_back_pic.png
+++ b/graphics/pokemon/mr_mime/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/mr_mime_footprint.png b/graphics/pokemon/mr_mime/footprint.png
index cb0aff1a3..cb0aff1a3 100644
--- a/graphics/pokemon/footprints/mr_mime_footprint.png
+++ b/graphics/pokemon/mr_mime/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/mr_mime_still_front_pic.png b/graphics/pokemon/mr_mime/front.png
index aac232c67..aac232c67 100644
--- a/graphics/pokemon/front_pics/mr_mime_still_front_pic.png
+++ b/graphics/pokemon/mr_mime/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/mr_mime_icon.png b/graphics/pokemon/mr_mime/icon.png
index b1e3b2bfb..b1e3b2bfb 100644
--- a/graphics/pokemon/icons/mr_mime_icon.png
+++ b/graphics/pokemon/mr_mime/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/mr_mime_palette.pal b/graphics/pokemon/mr_mime/normal.pal
index e878e42c4..e878e42c4 100644
--- a/graphics/pokemon/palettes/mr_mime_palette.pal
+++ b/graphics/pokemon/mr_mime/normal.pal
diff --git a/graphics/pokemon/palettes/mr_mime_shiny_palette.pal b/graphics/pokemon/mr_mime/shiny.pal
index 95c8d6ff3..95c8d6ff3 100644
--- a/graphics/pokemon/palettes/mr_mime_shiny_palette.pal
+++ b/graphics/pokemon/mr_mime/shiny.pal
diff --git a/graphics/pokemon/back_pics/mudkip_back_pic.png b/graphics/pokemon/mudkip/back.png
index 1b1282d42..1b1282d42 100644
--- a/graphics/pokemon/back_pics/mudkip_back_pic.png
+++ b/graphics/pokemon/mudkip/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/mudkip_footprint.png b/graphics/pokemon/mudkip/footprint.png
index 490db6e25..490db6e25 100644
--- a/graphics/pokemon/footprints/mudkip_footprint.png
+++ b/graphics/pokemon/mudkip/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/mudkip_still_front_pic.png b/graphics/pokemon/mudkip/front.png
index 15405baf9..15405baf9 100644
--- a/graphics/pokemon/front_pics/mudkip_still_front_pic.png
+++ b/graphics/pokemon/mudkip/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/mudkip_icon.png b/graphics/pokemon/mudkip/icon.png
index 5a657aa91..5a657aa91 100644
--- a/graphics/pokemon/icons/mudkip_icon.png
+++ b/graphics/pokemon/mudkip/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/mudkip_palette.pal b/graphics/pokemon/mudkip/normal.pal
index bc3cc1b65..bc3cc1b65 100644
--- a/graphics/pokemon/palettes/mudkip_palette.pal
+++ b/graphics/pokemon/mudkip/normal.pal
diff --git a/graphics/pokemon/palettes/mudkip_shiny_palette.pal b/graphics/pokemon/mudkip/shiny.pal
index ef5447b60..ef5447b60 100644
--- a/graphics/pokemon/palettes/mudkip_shiny_palette.pal
+++ b/graphics/pokemon/mudkip/shiny.pal
diff --git a/graphics/pokemon/back_pics/muk_back_pic.png b/graphics/pokemon/muk/back.png
index 07c18b350..07c18b350 100644
--- a/graphics/pokemon/back_pics/muk_back_pic.png
+++ b/graphics/pokemon/muk/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/muk_footprint.png b/graphics/pokemon/muk/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/muk_footprint.png
+++ b/graphics/pokemon/muk/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/muk_still_front_pic.png b/graphics/pokemon/muk/front.png
index f1ec93830..f1ec93830 100644
--- a/graphics/pokemon/front_pics/muk_still_front_pic.png
+++ b/graphics/pokemon/muk/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/muk_icon.png b/graphics/pokemon/muk/icon.png
index 6d8d09350..6d8d09350 100644
--- a/graphics/pokemon/icons/muk_icon.png
+++ b/graphics/pokemon/muk/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/muk_palette.pal b/graphics/pokemon/muk/normal.pal
index be7aba3a8..be7aba3a8 100644
--- a/graphics/pokemon/palettes/muk_palette.pal
+++ b/graphics/pokemon/muk/normal.pal
diff --git a/graphics/pokemon/palettes/muk_shiny_palette.pal b/graphics/pokemon/muk/shiny.pal
index 5ed5ae280..5ed5ae280 100644
--- a/graphics/pokemon/palettes/muk_shiny_palette.pal
+++ b/graphics/pokemon/muk/shiny.pal
diff --git a/graphics/pokemon/back_pics/murkrow_back_pic.png b/graphics/pokemon/murkrow/back.png
index 3007b7643..3007b7643 100644
--- a/graphics/pokemon/back_pics/murkrow_back_pic.png
+++ b/graphics/pokemon/murkrow/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/murkrow_footprint.png b/graphics/pokemon/murkrow/footprint.png
index 0f0566834..0f0566834 100644
--- a/graphics/pokemon/footprints/murkrow_footprint.png
+++ b/graphics/pokemon/murkrow/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/murkrow_still_front_pic.png b/graphics/pokemon/murkrow/front.png
index 77c11fef2..77c11fef2 100644
--- a/graphics/pokemon/front_pics/murkrow_still_front_pic.png
+++ b/graphics/pokemon/murkrow/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/murkrow_icon.png b/graphics/pokemon/murkrow/icon.png
index eac91aa18..eac91aa18 100644
--- a/graphics/pokemon/icons/murkrow_icon.png
+++ b/graphics/pokemon/murkrow/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/murkrow_palette.pal b/graphics/pokemon/murkrow/normal.pal
index 1d8b5f991..1d8b5f991 100644
--- a/graphics/pokemon/palettes/murkrow_palette.pal
+++ b/graphics/pokemon/murkrow/normal.pal
diff --git a/graphics/pokemon/palettes/murkrow_shiny_palette.pal b/graphics/pokemon/murkrow/shiny.pal
index 4524256e4..4524256e4 100644
--- a/graphics/pokemon/palettes/murkrow_shiny_palette.pal
+++ b/graphics/pokemon/murkrow/shiny.pal
diff --git a/graphics/pokemon/back_pics/natu_back_pic.png b/graphics/pokemon/natu/back.png
index 0349877d5..0349877d5 100644
--- a/graphics/pokemon/back_pics/natu_back_pic.png
+++ b/graphics/pokemon/natu/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/natu_footprint.png b/graphics/pokemon/natu/footprint.png
index f17821fc0..f17821fc0 100644
--- a/graphics/pokemon/footprints/natu_footprint.png
+++ b/graphics/pokemon/natu/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/natu_still_front_pic.png b/graphics/pokemon/natu/front.png
index b25742d8e..b25742d8e 100644
--- a/graphics/pokemon/front_pics/natu_still_front_pic.png
+++ b/graphics/pokemon/natu/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/natu_icon.png b/graphics/pokemon/natu/icon.png
index 7188fb7f3..7188fb7f3 100644
--- a/graphics/pokemon/icons/natu_icon.png
+++ b/graphics/pokemon/natu/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/natu_palette.pal b/graphics/pokemon/natu/normal.pal
index c1712ee1e..c1712ee1e 100644
--- a/graphics/pokemon/palettes/natu_palette.pal
+++ b/graphics/pokemon/natu/normal.pal
diff --git a/graphics/pokemon/palettes/natu_shiny_palette.pal b/graphics/pokemon/natu/shiny.pal
index 2dcf957e9..2dcf957e9 100644
--- a/graphics/pokemon/palettes/natu_shiny_palette.pal
+++ b/graphics/pokemon/natu/shiny.pal
diff --git a/graphics/pokemon/back_pics/nidoking_back_pic.png b/graphics/pokemon/nidoking/back.png
index 65a253b45..65a253b45 100644
--- a/graphics/pokemon/back_pics/nidoking_back_pic.png
+++ b/graphics/pokemon/nidoking/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/nidoking_footprint.png b/graphics/pokemon/nidoking/footprint.png
index 577e14f30..577e14f30 100644
--- a/graphics/pokemon/footprints/nidoking_footprint.png
+++ b/graphics/pokemon/nidoking/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/nidoking_still_front_pic.png b/graphics/pokemon/nidoking/front.png
index db7740e99..db7740e99 100644
--- a/graphics/pokemon/front_pics/nidoking_still_front_pic.png
+++ b/graphics/pokemon/nidoking/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/nidoking_icon.png b/graphics/pokemon/nidoking/icon.png
index baa05c6a0..baa05c6a0 100644
--- a/graphics/pokemon/icons/nidoking_icon.png
+++ b/graphics/pokemon/nidoking/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/nidoking_palette.pal b/graphics/pokemon/nidoking/normal.pal
index 4de13c9ca..4de13c9ca 100644
--- a/graphics/pokemon/palettes/nidoking_palette.pal
+++ b/graphics/pokemon/nidoking/normal.pal
diff --git a/graphics/pokemon/palettes/nidoking_shiny_palette.pal b/graphics/pokemon/nidoking/shiny.pal
index ec9702076..ec9702076 100644
--- a/graphics/pokemon/palettes/nidoking_shiny_palette.pal
+++ b/graphics/pokemon/nidoking/shiny.pal
diff --git a/graphics/pokemon/back_pics/nidoqueen_back_pic.png b/graphics/pokemon/nidoqueen/back.png
index 339582c54..339582c54 100644
--- a/graphics/pokemon/back_pics/nidoqueen_back_pic.png
+++ b/graphics/pokemon/nidoqueen/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/nidoqueen_footprint.png b/graphics/pokemon/nidoqueen/footprint.png
index c3156e621..c3156e621 100644
--- a/graphics/pokemon/footprints/nidoqueen_footprint.png
+++ b/graphics/pokemon/nidoqueen/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/nidoqueen_still_front_pic.png b/graphics/pokemon/nidoqueen/front.png
index 3db1a20fd..3db1a20fd 100644
--- a/graphics/pokemon/front_pics/nidoqueen_still_front_pic.png
+++ b/graphics/pokemon/nidoqueen/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/nidoqueen_icon.png b/graphics/pokemon/nidoqueen/icon.png
index 2d3cdc477..2d3cdc477 100644
--- a/graphics/pokemon/icons/nidoqueen_icon.png
+++ b/graphics/pokemon/nidoqueen/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/nidoqueen_palette.pal b/graphics/pokemon/nidoqueen/normal.pal
index 4b5ab5aa3..4b5ab5aa3 100644
--- a/graphics/pokemon/palettes/nidoqueen_palette.pal
+++ b/graphics/pokemon/nidoqueen/normal.pal
diff --git a/graphics/pokemon/palettes/nidoqueen_shiny_palette.pal b/graphics/pokemon/nidoqueen/shiny.pal
index 3b08f01ac..3b08f01ac 100644
--- a/graphics/pokemon/palettes/nidoqueen_shiny_palette.pal
+++ b/graphics/pokemon/nidoqueen/shiny.pal
diff --git a/graphics/pokemon/back_pics/nidoran_f_back_pic.png b/graphics/pokemon/nidoran_f/back.png
index acfc360cc..acfc360cc 100644
--- a/graphics/pokemon/back_pics/nidoran_f_back_pic.png
+++ b/graphics/pokemon/nidoran_f/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/nidoran_f_footprint.png b/graphics/pokemon/nidoran_f/footprint.png
index f673df112..f673df112 100644
--- a/graphics/pokemon/footprints/nidoran_f_footprint.png
+++ b/graphics/pokemon/nidoran_f/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/nidoran_f_still_front_pic.png b/graphics/pokemon/nidoran_f/front.png
index 8cfed4258..8cfed4258 100644
--- a/graphics/pokemon/front_pics/nidoran_f_still_front_pic.png
+++ b/graphics/pokemon/nidoran_f/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/nidoran_f_icon.png b/graphics/pokemon/nidoran_f/icon.png
index a2483ae63..a2483ae63 100644
--- a/graphics/pokemon/icons/nidoran_f_icon.png
+++ b/graphics/pokemon/nidoran_f/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/nidoran_f_palette.pal b/graphics/pokemon/nidoran_f/normal.pal
index 7f26f6277..7f26f6277 100644
--- a/graphics/pokemon/palettes/nidoran_f_palette.pal
+++ b/graphics/pokemon/nidoran_f/normal.pal
diff --git a/graphics/pokemon/palettes/nidoran_f_shiny_palette.pal b/graphics/pokemon/nidoran_f/shiny.pal
index 5b6e230fe..5b6e230fe 100644
--- a/graphics/pokemon/palettes/nidoran_f_shiny_palette.pal
+++ b/graphics/pokemon/nidoran_f/shiny.pal
diff --git a/graphics/pokemon/back_pics/nidoran_m_back_pic.png b/graphics/pokemon/nidoran_m/back.png
index 76c47d33e..76c47d33e 100644
--- a/graphics/pokemon/back_pics/nidoran_m_back_pic.png
+++ b/graphics/pokemon/nidoran_m/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/nidoran_m_footprint.png b/graphics/pokemon/nidoran_m/footprint.png
index 874c60781..874c60781 100644
--- a/graphics/pokemon/footprints/nidoran_m_footprint.png
+++ b/graphics/pokemon/nidoran_m/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/nidoran_m_still_front_pic.png b/graphics/pokemon/nidoran_m/front.png
index b46c3d586..b46c3d586 100644
--- a/graphics/pokemon/front_pics/nidoran_m_still_front_pic.png
+++ b/graphics/pokemon/nidoran_m/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/nidoran_m_icon.png b/graphics/pokemon/nidoran_m/icon.png
index 4467c5192..4467c5192 100644
--- a/graphics/pokemon/icons/nidoran_m_icon.png
+++ b/graphics/pokemon/nidoran_m/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/nidoran_m_palette.pal b/graphics/pokemon/nidoran_m/normal.pal
index fb4e29f10..fb4e29f10 100644
--- a/graphics/pokemon/palettes/nidoran_m_palette.pal
+++ b/graphics/pokemon/nidoran_m/normal.pal
diff --git a/graphics/pokemon/palettes/nidoran_m_shiny_palette.pal b/graphics/pokemon/nidoran_m/shiny.pal
index dfbf08893..dfbf08893 100644
--- a/graphics/pokemon/palettes/nidoran_m_shiny_palette.pal
+++ b/graphics/pokemon/nidoran_m/shiny.pal
diff --git a/graphics/pokemon/back_pics/nidorina_back_pic.png b/graphics/pokemon/nidorina/back.png
index 14940d21f..14940d21f 100644
--- a/graphics/pokemon/back_pics/nidorina_back_pic.png
+++ b/graphics/pokemon/nidorina/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/nidorina_footprint.png b/graphics/pokemon/nidorina/footprint.png
index 94553054a..94553054a 100644
--- a/graphics/pokemon/footprints/nidorina_footprint.png
+++ b/graphics/pokemon/nidorina/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/nidorina_still_front_pic.png b/graphics/pokemon/nidorina/front.png
index 0aa883505..0aa883505 100644
--- a/graphics/pokemon/front_pics/nidorina_still_front_pic.png
+++ b/graphics/pokemon/nidorina/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/nidorina_icon.png b/graphics/pokemon/nidorina/icon.png
index ad90d02ba..ad90d02ba 100644
--- a/graphics/pokemon/icons/nidorina_icon.png
+++ b/graphics/pokemon/nidorina/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/nidorina_palette.pal b/graphics/pokemon/nidorina/normal.pal
index 396733a06..396733a06 100644
--- a/graphics/pokemon/palettes/nidorina_palette.pal
+++ b/graphics/pokemon/nidorina/normal.pal
diff --git a/graphics/pokemon/palettes/nidorina_shiny_palette.pal b/graphics/pokemon/nidorina/shiny.pal
index 2d04c4b5c..2d04c4b5c 100644
--- a/graphics/pokemon/palettes/nidorina_shiny_palette.pal
+++ b/graphics/pokemon/nidorina/shiny.pal
diff --git a/graphics/pokemon/back_pics/nidorino_back_pic.png b/graphics/pokemon/nidorino/back.png
index 01b866e00..01b866e00 100644
--- a/graphics/pokemon/back_pics/nidorino_back_pic.png
+++ b/graphics/pokemon/nidorino/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/nidorino_footprint.png b/graphics/pokemon/nidorino/footprint.png
index eaa67b379..eaa67b379 100644
--- a/graphics/pokemon/footprints/nidorino_footprint.png
+++ b/graphics/pokemon/nidorino/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/nidorino_still_front_pic.png b/graphics/pokemon/nidorino/front.png
index 8acf1cc72..8acf1cc72 100644
--- a/graphics/pokemon/front_pics/nidorino_still_front_pic.png
+++ b/graphics/pokemon/nidorino/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/nidorino_icon.png b/graphics/pokemon/nidorino/icon.png
index 5edc103c1..5edc103c1 100644
--- a/graphics/pokemon/icons/nidorino_icon.png
+++ b/graphics/pokemon/nidorino/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/nidorino_palette.pal b/graphics/pokemon/nidorino/normal.pal
index f495113d5..f495113d5 100644
--- a/graphics/pokemon/palettes/nidorino_palette.pal
+++ b/graphics/pokemon/nidorino/normal.pal
diff --git a/graphics/pokemon/palettes/nidorino_shiny_palette.pal b/graphics/pokemon/nidorino/shiny.pal
index e8ca02aeb..e8ca02aeb 100644
--- a/graphics/pokemon/palettes/nidorino_shiny_palette.pal
+++ b/graphics/pokemon/nidorino/shiny.pal
diff --git a/graphics/pokemon/back_pics/nincada_back_pic.png b/graphics/pokemon/nincada/back.png
index e35b19cc7..e35b19cc7 100644
--- a/graphics/pokemon/back_pics/nincada_back_pic.png
+++ b/graphics/pokemon/nincada/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/nincada_footprint.png b/graphics/pokemon/nincada/footprint.png
index deea05721..deea05721 100644
--- a/graphics/pokemon/footprints/nincada_footprint.png
+++ b/graphics/pokemon/nincada/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/nincada_still_front_pic.png b/graphics/pokemon/nincada/front.png
index 576144c48..576144c48 100644
--- a/graphics/pokemon/front_pics/nincada_still_front_pic.png
+++ b/graphics/pokemon/nincada/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/nincada_icon.png b/graphics/pokemon/nincada/icon.png
index 003ddb992..003ddb992 100644
--- a/graphics/pokemon/icons/nincada_icon.png
+++ b/graphics/pokemon/nincada/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/nincada_palette.pal b/graphics/pokemon/nincada/normal.pal
index 22184bbbd..22184bbbd 100644
--- a/graphics/pokemon/palettes/nincada_palette.pal
+++ b/graphics/pokemon/nincada/normal.pal
diff --git a/graphics/pokemon/palettes/nincada_shiny_palette.pal b/graphics/pokemon/nincada/shiny.pal
index 08e4c9575..08e4c9575 100644
--- a/graphics/pokemon/palettes/nincada_shiny_palette.pal
+++ b/graphics/pokemon/nincada/shiny.pal
diff --git a/graphics/pokemon/back_pics/ninetales_back_pic.png b/graphics/pokemon/ninetales/back.png
index cb1919138..cb1919138 100644
--- a/graphics/pokemon/back_pics/ninetales_back_pic.png
+++ b/graphics/pokemon/ninetales/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ninetales_footprint.png b/graphics/pokemon/ninetales/footprint.png
index 3f1f0247e..3f1f0247e 100644
--- a/graphics/pokemon/footprints/ninetales_footprint.png
+++ b/graphics/pokemon/ninetales/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ninetales_still_front_pic.png b/graphics/pokemon/ninetales/front.png
index 30b5d0d1f..30b5d0d1f 100644
--- a/graphics/pokemon/front_pics/ninetales_still_front_pic.png
+++ b/graphics/pokemon/ninetales/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ninetales_icon.png b/graphics/pokemon/ninetales/icon.png
index 1a74d34eb..1a74d34eb 100644
--- a/graphics/pokemon/icons/ninetales_icon.png
+++ b/graphics/pokemon/ninetales/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ninetales_palette.pal b/graphics/pokemon/ninetales/normal.pal
index 59affc534..59affc534 100644
--- a/graphics/pokemon/palettes/ninetales_palette.pal
+++ b/graphics/pokemon/ninetales/normal.pal
diff --git a/graphics/pokemon/palettes/ninetales_shiny_palette.pal b/graphics/pokemon/ninetales/shiny.pal
index b7007523a..b7007523a 100644
--- a/graphics/pokemon/palettes/ninetales_shiny_palette.pal
+++ b/graphics/pokemon/ninetales/shiny.pal
diff --git a/graphics/pokemon/back_pics/ninjask_back_pic.png b/graphics/pokemon/ninjask/back.png
index fd2daf29a..fd2daf29a 100644
--- a/graphics/pokemon/back_pics/ninjask_back_pic.png
+++ b/graphics/pokemon/ninjask/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ninjask_footprint.png b/graphics/pokemon/ninjask/footprint.png
index eacba16dc..eacba16dc 100644
--- a/graphics/pokemon/footprints/ninjask_footprint.png
+++ b/graphics/pokemon/ninjask/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ninjask_still_front_pic.png b/graphics/pokemon/ninjask/front.png
index c642dbad5..c642dbad5 100644
--- a/graphics/pokemon/front_pics/ninjask_still_front_pic.png
+++ b/graphics/pokemon/ninjask/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ninjask_icon.png b/graphics/pokemon/ninjask/icon.png
index c51533c67..c51533c67 100644
--- a/graphics/pokemon/icons/ninjask_icon.png
+++ b/graphics/pokemon/ninjask/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ninjask_palette.pal b/graphics/pokemon/ninjask/normal.pal
index ec7c1daa7..ec7c1daa7 100644
--- a/graphics/pokemon/palettes/ninjask_palette.pal
+++ b/graphics/pokemon/ninjask/normal.pal
diff --git a/graphics/pokemon/palettes/ninjask_shiny_palette.pal b/graphics/pokemon/ninjask/shiny.pal
index bd2fbbda9..bd2fbbda9 100644
--- a/graphics/pokemon/palettes/ninjask_shiny_palette.pal
+++ b/graphics/pokemon/ninjask/shiny.pal
diff --git a/graphics/pokemon/back_pics/noctowl_back_pic.png b/graphics/pokemon/noctowl/back.png
index e9984ea5e..e9984ea5e 100644
--- a/graphics/pokemon/back_pics/noctowl_back_pic.png
+++ b/graphics/pokemon/noctowl/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/noctowl_footprint.png b/graphics/pokemon/noctowl/footprint.png
index 89ed409e9..89ed409e9 100644
--- a/graphics/pokemon/footprints/noctowl_footprint.png
+++ b/graphics/pokemon/noctowl/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/noctowl_still_front_pic.png b/graphics/pokemon/noctowl/front.png
index 56e148d94..56e148d94 100644
--- a/graphics/pokemon/front_pics/noctowl_still_front_pic.png
+++ b/graphics/pokemon/noctowl/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/noctowl_icon.png b/graphics/pokemon/noctowl/icon.png
index eafbea37e..eafbea37e 100644
--- a/graphics/pokemon/icons/noctowl_icon.png
+++ b/graphics/pokemon/noctowl/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/noctowl_palette.pal b/graphics/pokemon/noctowl/normal.pal
index 710759236..710759236 100644
--- a/graphics/pokemon/palettes/noctowl_palette.pal
+++ b/graphics/pokemon/noctowl/normal.pal
diff --git a/graphics/pokemon/palettes/noctowl_shiny_palette.pal b/graphics/pokemon/noctowl/shiny.pal
index 859222f59..859222f59 100644
--- a/graphics/pokemon/palettes/noctowl_shiny_palette.pal
+++ b/graphics/pokemon/noctowl/shiny.pal
diff --git a/graphics/pokemon/back_pics/nosepass_back_pic.png b/graphics/pokemon/nosepass/back.png
index 21b41a3cd..21b41a3cd 100644
--- a/graphics/pokemon/back_pics/nosepass_back_pic.png
+++ b/graphics/pokemon/nosepass/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/nosepass_footprint.png b/graphics/pokemon/nosepass/footprint.png
index 9b9ad2708..9b9ad2708 100644
--- a/graphics/pokemon/footprints/nosepass_footprint.png
+++ b/graphics/pokemon/nosepass/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/nosepass_still_front_pic.png b/graphics/pokemon/nosepass/front.png
index 5ed3a851f..5ed3a851f 100644
--- a/graphics/pokemon/front_pics/nosepass_still_front_pic.png
+++ b/graphics/pokemon/nosepass/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/nosepass_icon.png b/graphics/pokemon/nosepass/icon.png
index 718fed8fa..718fed8fa 100644
--- a/graphics/pokemon/icons/nosepass_icon.png
+++ b/graphics/pokemon/nosepass/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/nosepass_palette.pal b/graphics/pokemon/nosepass/normal.pal
index ec3681288..ec3681288 100644
--- a/graphics/pokemon/palettes/nosepass_palette.pal
+++ b/graphics/pokemon/nosepass/normal.pal
diff --git a/graphics/pokemon/palettes/nosepass_shiny_palette.pal b/graphics/pokemon/nosepass/shiny.pal
index b17260e5a..b17260e5a 100644
--- a/graphics/pokemon/palettes/nosepass_shiny_palette.pal
+++ b/graphics/pokemon/nosepass/shiny.pal
diff --git a/graphics/pokemon/back_pics/numel_back_pic.png b/graphics/pokemon/numel/back.png
index 9722ff438..9722ff438 100644
--- a/graphics/pokemon/back_pics/numel_back_pic.png
+++ b/graphics/pokemon/numel/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/numel_footprint.png b/graphics/pokemon/numel/footprint.png
index 6238f9400..6238f9400 100644
--- a/graphics/pokemon/footprints/numel_footprint.png
+++ b/graphics/pokemon/numel/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/numel_still_front_pic.png b/graphics/pokemon/numel/front.png
index 1aca480f7..1aca480f7 100644
--- a/graphics/pokemon/front_pics/numel_still_front_pic.png
+++ b/graphics/pokemon/numel/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/numel_icon.png b/graphics/pokemon/numel/icon.png
index 62281e8bf..62281e8bf 100644
--- a/graphics/pokemon/icons/numel_icon.png
+++ b/graphics/pokemon/numel/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/numel_palette.pal b/graphics/pokemon/numel/normal.pal
index 74388d36b..74388d36b 100644
--- a/graphics/pokemon/palettes/numel_palette.pal
+++ b/graphics/pokemon/numel/normal.pal
diff --git a/graphics/pokemon/palettes/numel_shiny_palette.pal b/graphics/pokemon/numel/shiny.pal
index 2162c155c..2162c155c 100644
--- a/graphics/pokemon/palettes/numel_shiny_palette.pal
+++ b/graphics/pokemon/numel/shiny.pal
diff --git a/graphics/pokemon/back_pics/nuzleaf_back_pic.png b/graphics/pokemon/nuzleaf/back.png
index 858377c11..858377c11 100644
--- a/graphics/pokemon/back_pics/nuzleaf_back_pic.png
+++ b/graphics/pokemon/nuzleaf/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/nuzleaf_footprint.png b/graphics/pokemon/nuzleaf/footprint.png
index b35288e05..b35288e05 100644
--- a/graphics/pokemon/footprints/nuzleaf_footprint.png
+++ b/graphics/pokemon/nuzleaf/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/nuzleaf_still_front_pic.png b/graphics/pokemon/nuzleaf/front.png
index ecaf00f85..ecaf00f85 100644
--- a/graphics/pokemon/front_pics/nuzleaf_still_front_pic.png
+++ b/graphics/pokemon/nuzleaf/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/nuzleaf_icon.png b/graphics/pokemon/nuzleaf/icon.png
index 8c9f4038f..8c9f4038f 100644
--- a/graphics/pokemon/icons/nuzleaf_icon.png
+++ b/graphics/pokemon/nuzleaf/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/nuzleaf_palette.pal b/graphics/pokemon/nuzleaf/normal.pal
index fd8ec8bff..fd8ec8bff 100644
--- a/graphics/pokemon/palettes/nuzleaf_palette.pal
+++ b/graphics/pokemon/nuzleaf/normal.pal
diff --git a/graphics/pokemon/palettes/nuzleaf_shiny_palette.pal b/graphics/pokemon/nuzleaf/shiny.pal
index 1706d316b..1706d316b 100644
--- a/graphics/pokemon/palettes/nuzleaf_shiny_palette.pal
+++ b/graphics/pokemon/nuzleaf/shiny.pal
diff --git a/graphics/pokemon/back_pics/octillery_back_pic.png b/graphics/pokemon/octillery/back.png
index 09a867881..09a867881 100644
--- a/graphics/pokemon/back_pics/octillery_back_pic.png
+++ b/graphics/pokemon/octillery/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/octillery_footprint.png b/graphics/pokemon/octillery/footprint.png
index afa1f5433..afa1f5433 100644
--- a/graphics/pokemon/footprints/octillery_footprint.png
+++ b/graphics/pokemon/octillery/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/octillery_still_front_pic.png b/graphics/pokemon/octillery/front.png
index 99d3a166e..99d3a166e 100644
--- a/graphics/pokemon/front_pics/octillery_still_front_pic.png
+++ b/graphics/pokemon/octillery/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/octillery_icon.png b/graphics/pokemon/octillery/icon.png
index a21e60327..a21e60327 100644
--- a/graphics/pokemon/icons/octillery_icon.png
+++ b/graphics/pokemon/octillery/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/octillery_palette.pal b/graphics/pokemon/octillery/normal.pal
index 2a32e5f6d..2a32e5f6d 100644
--- a/graphics/pokemon/palettes/octillery_palette.pal
+++ b/graphics/pokemon/octillery/normal.pal
diff --git a/graphics/pokemon/palettes/octillery_shiny_palette.pal b/graphics/pokemon/octillery/shiny.pal
index fcbdd5cda..fcbdd5cda 100644
--- a/graphics/pokemon/palettes/octillery_shiny_palette.pal
+++ b/graphics/pokemon/octillery/shiny.pal
diff --git a/graphics/pokemon/back_pics/oddish_back_pic.png b/graphics/pokemon/oddish/back.png
index a1919e4ea..a1919e4ea 100644
--- a/graphics/pokemon/back_pics/oddish_back_pic.png
+++ b/graphics/pokemon/oddish/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/oddish_footprint.png b/graphics/pokemon/oddish/footprint.png
index d38175273..d38175273 100644
--- a/graphics/pokemon/footprints/oddish_footprint.png
+++ b/graphics/pokemon/oddish/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/oddish_still_front_pic.png b/graphics/pokemon/oddish/front.png
index 6b43f1683..6b43f1683 100644
--- a/graphics/pokemon/front_pics/oddish_still_front_pic.png
+++ b/graphics/pokemon/oddish/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/oddish_icon.png b/graphics/pokemon/oddish/icon.png
index 7c46ae7e7..7c46ae7e7 100644
--- a/graphics/pokemon/icons/oddish_icon.png
+++ b/graphics/pokemon/oddish/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/oddish_palette.pal b/graphics/pokemon/oddish/normal.pal
index 7583f6592..7583f6592 100644
--- a/graphics/pokemon/palettes/oddish_palette.pal
+++ b/graphics/pokemon/oddish/normal.pal
diff --git a/graphics/pokemon/palettes/oddish_shiny_palette.pal b/graphics/pokemon/oddish/shiny.pal
index c37765a09..c37765a09 100644
--- a/graphics/pokemon/palettes/oddish_shiny_palette.pal
+++ b/graphics/pokemon/oddish/shiny.pal
diff --git a/graphics/pokemon/back_pics/omanyte_back_pic.png b/graphics/pokemon/omanyte/back.png
index 6cd77bffc..6cd77bffc 100644
--- a/graphics/pokemon/back_pics/omanyte_back_pic.png
+++ b/graphics/pokemon/omanyte/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/omanyte_footprint.png b/graphics/pokemon/omanyte/footprint.png
index f5eb9fdba..f5eb9fdba 100644
--- a/graphics/pokemon/footprints/omanyte_footprint.png
+++ b/graphics/pokemon/omanyte/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/omanyte_still_front_pic.png b/graphics/pokemon/omanyte/front.png
index 5c779d128..5c779d128 100644
--- a/graphics/pokemon/front_pics/omanyte_still_front_pic.png
+++ b/graphics/pokemon/omanyte/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/omanyte_icon.png b/graphics/pokemon/omanyte/icon.png
index 94684f5c3..94684f5c3 100644
--- a/graphics/pokemon/icons/omanyte_icon.png
+++ b/graphics/pokemon/omanyte/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/omanyte_palette.pal b/graphics/pokemon/omanyte/normal.pal
index 09d257a66..09d257a66 100644
--- a/graphics/pokemon/palettes/omanyte_palette.pal
+++ b/graphics/pokemon/omanyte/normal.pal
diff --git a/graphics/pokemon/palettes/omanyte_shiny_palette.pal b/graphics/pokemon/omanyte/shiny.pal
index af72dc30d..af72dc30d 100644
--- a/graphics/pokemon/palettes/omanyte_shiny_palette.pal
+++ b/graphics/pokemon/omanyte/shiny.pal
diff --git a/graphics/pokemon/back_pics/omastar_back_pic.png b/graphics/pokemon/omastar/back.png
index 3f7467950..3f7467950 100644
--- a/graphics/pokemon/back_pics/omastar_back_pic.png
+++ b/graphics/pokemon/omastar/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/omastar_footprint.png b/graphics/pokemon/omastar/footprint.png
index fdd911ecf..fdd911ecf 100644
--- a/graphics/pokemon/footprints/omastar_footprint.png
+++ b/graphics/pokemon/omastar/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/omastar_still_front_pic.png b/graphics/pokemon/omastar/front.png
index 2a1c58e38..2a1c58e38 100644
--- a/graphics/pokemon/front_pics/omastar_still_front_pic.png
+++ b/graphics/pokemon/omastar/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/omastar_icon.png b/graphics/pokemon/omastar/icon.png
index b72bd6aec..b72bd6aec 100644
--- a/graphics/pokemon/icons/omastar_icon.png
+++ b/graphics/pokemon/omastar/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/omastar_palette.pal b/graphics/pokemon/omastar/normal.pal
index f63530b4e..f63530b4e 100644
--- a/graphics/pokemon/palettes/omastar_palette.pal
+++ b/graphics/pokemon/omastar/normal.pal
diff --git a/graphics/pokemon/palettes/omastar_shiny_palette.pal b/graphics/pokemon/omastar/shiny.pal
index b17facc09..b17facc09 100644
--- a/graphics/pokemon/palettes/omastar_shiny_palette.pal
+++ b/graphics/pokemon/omastar/shiny.pal
diff --git a/graphics/pokemon/back_pics/onix_back_pic.png b/graphics/pokemon/onix/back.png
index 233e66d91..233e66d91 100644
--- a/graphics/pokemon/back_pics/onix_back_pic.png
+++ b/graphics/pokemon/onix/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/onix_footprint.png b/graphics/pokemon/onix/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/onix_footprint.png
+++ b/graphics/pokemon/onix/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/onix_still_front_pic.png b/graphics/pokemon/onix/front.png
index 4f9679d3f..4f9679d3f 100644
--- a/graphics/pokemon/front_pics/onix_still_front_pic.png
+++ b/graphics/pokemon/onix/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/onix_icon.png b/graphics/pokemon/onix/icon.png
index ddd7ee4f9..ddd7ee4f9 100644
--- a/graphics/pokemon/icons/onix_icon.png
+++ b/graphics/pokemon/onix/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/onix_palette.pal b/graphics/pokemon/onix/normal.pal
index d0820bdc6..d0820bdc6 100644
--- a/graphics/pokemon/palettes/onix_palette.pal
+++ b/graphics/pokemon/onix/normal.pal
diff --git a/graphics/pokemon/palettes/onix_shiny_palette.pal b/graphics/pokemon/onix/shiny.pal
index fc100a9cf..fc100a9cf 100644
--- a/graphics/pokemon/palettes/onix_shiny_palette.pal
+++ b/graphics/pokemon/onix/shiny.pal
diff --git a/graphics/pokemon/back_pics/paras_back_pic.png b/graphics/pokemon/paras/back.png
index cb77d2d77..cb77d2d77 100644
--- a/graphics/pokemon/back_pics/paras_back_pic.png
+++ b/graphics/pokemon/paras/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/paras_footprint.png b/graphics/pokemon/paras/footprint.png
index f8d7574d2..f8d7574d2 100644
--- a/graphics/pokemon/footprints/paras_footprint.png
+++ b/graphics/pokemon/paras/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/paras_still_front_pic.png b/graphics/pokemon/paras/front.png
index 6fceba2f2..6fceba2f2 100644
--- a/graphics/pokemon/front_pics/paras_still_front_pic.png
+++ b/graphics/pokemon/paras/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/paras_icon.png b/graphics/pokemon/paras/icon.png
index 6b828b058..6b828b058 100644
--- a/graphics/pokemon/icons/paras_icon.png
+++ b/graphics/pokemon/paras/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/paras_palette.pal b/graphics/pokemon/paras/normal.pal
index 9dc798375..9dc798375 100644
--- a/graphics/pokemon/palettes/paras_palette.pal
+++ b/graphics/pokemon/paras/normal.pal
diff --git a/graphics/pokemon/palettes/paras_shiny_palette.pal b/graphics/pokemon/paras/shiny.pal
index 9174d9168..9174d9168 100644
--- a/graphics/pokemon/palettes/paras_shiny_palette.pal
+++ b/graphics/pokemon/paras/shiny.pal
diff --git a/graphics/pokemon/back_pics/parasect_back_pic.png b/graphics/pokemon/parasect/back.png
index f313d5a91..f313d5a91 100644
--- a/graphics/pokemon/back_pics/parasect_back_pic.png
+++ b/graphics/pokemon/parasect/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/parasect_footprint.png b/graphics/pokemon/parasect/footprint.png
index e0f1715f2..e0f1715f2 100644
--- a/graphics/pokemon/footprints/parasect_footprint.png
+++ b/graphics/pokemon/parasect/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/parasect_still_front_pic.png b/graphics/pokemon/parasect/front.png
index ebded40ab..ebded40ab 100644
--- a/graphics/pokemon/front_pics/parasect_still_front_pic.png
+++ b/graphics/pokemon/parasect/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/parasect_icon.png b/graphics/pokemon/parasect/icon.png
index 907cbf5ca..907cbf5ca 100644
--- a/graphics/pokemon/icons/parasect_icon.png
+++ b/graphics/pokemon/parasect/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/parasect_palette.pal b/graphics/pokemon/parasect/normal.pal
index 3350e5c48..3350e5c48 100644
--- a/graphics/pokemon/palettes/parasect_palette.pal
+++ b/graphics/pokemon/parasect/normal.pal
diff --git a/graphics/pokemon/palettes/parasect_shiny_palette.pal b/graphics/pokemon/parasect/shiny.pal
index 3574c408f..3574c408f 100644
--- a/graphics/pokemon/palettes/parasect_shiny_palette.pal
+++ b/graphics/pokemon/parasect/shiny.pal
diff --git a/graphics/pokemon/back_pics/pelipper_back_pic.png b/graphics/pokemon/pelipper/back.png
index 4b155c28d..4b155c28d 100644
--- a/graphics/pokemon/back_pics/pelipper_back_pic.png
+++ b/graphics/pokemon/pelipper/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/pelipper_footprint.png b/graphics/pokemon/pelipper/footprint.png
index 54718d259..54718d259 100644
--- a/graphics/pokemon/footprints/pelipper_footprint.png
+++ b/graphics/pokemon/pelipper/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/pelipper_still_front_pic.png b/graphics/pokemon/pelipper/front.png
index 1bf3669ae..1bf3669ae 100644
--- a/graphics/pokemon/front_pics/pelipper_still_front_pic.png
+++ b/graphics/pokemon/pelipper/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/pelipper_icon.png b/graphics/pokemon/pelipper/icon.png
index 55a16bc5f..55a16bc5f 100644
--- a/graphics/pokemon/icons/pelipper_icon.png
+++ b/graphics/pokemon/pelipper/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/pelipper_palette.pal b/graphics/pokemon/pelipper/normal.pal
index c78d73c37..c78d73c37 100644
--- a/graphics/pokemon/palettes/pelipper_palette.pal
+++ b/graphics/pokemon/pelipper/normal.pal
diff --git a/graphics/pokemon/palettes/pelipper_shiny_palette.pal b/graphics/pokemon/pelipper/shiny.pal
index 41686ffed..41686ffed 100644
--- a/graphics/pokemon/palettes/pelipper_shiny_palette.pal
+++ b/graphics/pokemon/pelipper/shiny.pal
diff --git a/graphics/pokemon/back_pics/persian_back_pic.png b/graphics/pokemon/persian/back.png
index f9acc3c24..f9acc3c24 100644
--- a/graphics/pokemon/back_pics/persian_back_pic.png
+++ b/graphics/pokemon/persian/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/persian_footprint.png b/graphics/pokemon/persian/footprint.png
index 33f25f0aa..33f25f0aa 100644
--- a/graphics/pokemon/footprints/persian_footprint.png
+++ b/graphics/pokemon/persian/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/persian_still_front_pic.png b/graphics/pokemon/persian/front.png
index baf8a4eed..baf8a4eed 100644
--- a/graphics/pokemon/front_pics/persian_still_front_pic.png
+++ b/graphics/pokemon/persian/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/persian_icon.png b/graphics/pokemon/persian/icon.png
index 3d6f72fee..3d6f72fee 100644
--- a/graphics/pokemon/icons/persian_icon.png
+++ b/graphics/pokemon/persian/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/persian_palette.pal b/graphics/pokemon/persian/normal.pal
index 694d1a0f6..694d1a0f6 100644
--- a/graphics/pokemon/palettes/persian_palette.pal
+++ b/graphics/pokemon/persian/normal.pal
diff --git a/graphics/pokemon/palettes/persian_shiny_palette.pal b/graphics/pokemon/persian/shiny.pal
index 4e4a92e32..4e4a92e32 100644
--- a/graphics/pokemon/palettes/persian_shiny_palette.pal
+++ b/graphics/pokemon/persian/shiny.pal
diff --git a/graphics/pokemon/back_pics/phanpy_back_pic.png b/graphics/pokemon/phanpy/back.png
index b40fb8ddf..b40fb8ddf 100644
--- a/graphics/pokemon/back_pics/phanpy_back_pic.png
+++ b/graphics/pokemon/phanpy/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/phanpy_footprint.png b/graphics/pokemon/phanpy/footprint.png
index 70498b18f..70498b18f 100644
--- a/graphics/pokemon/footprints/phanpy_footprint.png
+++ b/graphics/pokemon/phanpy/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/phanpy_still_front_pic.png b/graphics/pokemon/phanpy/front.png
index f9dc5fce6..f9dc5fce6 100644
--- a/graphics/pokemon/front_pics/phanpy_still_front_pic.png
+++ b/graphics/pokemon/phanpy/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/phanpy_icon.png b/graphics/pokemon/phanpy/icon.png
index 341724973..341724973 100644
--- a/graphics/pokemon/icons/phanpy_icon.png
+++ b/graphics/pokemon/phanpy/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/phanpy_palette.pal b/graphics/pokemon/phanpy/normal.pal
index 57ca810fa..57ca810fa 100644
--- a/graphics/pokemon/palettes/phanpy_palette.pal
+++ b/graphics/pokemon/phanpy/normal.pal
diff --git a/graphics/pokemon/palettes/phanpy_shiny_palette.pal b/graphics/pokemon/phanpy/shiny.pal
index a09fc1dcc..a09fc1dcc 100644
--- a/graphics/pokemon/palettes/phanpy_shiny_palette.pal
+++ b/graphics/pokemon/phanpy/shiny.pal
diff --git a/graphics/pokemon/back_pics/pichu_back_pic.png b/graphics/pokemon/pichu/back.png
index 94d593632..94d593632 100644
--- a/graphics/pokemon/back_pics/pichu_back_pic.png
+++ b/graphics/pokemon/pichu/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/pichu_footprint.png b/graphics/pokemon/pichu/footprint.png
index 823c7e32d..823c7e32d 100644
--- a/graphics/pokemon/footprints/pichu_footprint.png
+++ b/graphics/pokemon/pichu/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/pichu_still_front_pic.png b/graphics/pokemon/pichu/front.png
index f061d578b..f061d578b 100644
--- a/graphics/pokemon/front_pics/pichu_still_front_pic.png
+++ b/graphics/pokemon/pichu/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/pichu_icon.png b/graphics/pokemon/pichu/icon.png
index dd696ac10..dd696ac10 100644
--- a/graphics/pokemon/icons/pichu_icon.png
+++ b/graphics/pokemon/pichu/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/pichu_palette.pal b/graphics/pokemon/pichu/normal.pal
index 50d614dae..50d614dae 100644
--- a/graphics/pokemon/palettes/pichu_palette.pal
+++ b/graphics/pokemon/pichu/normal.pal
diff --git a/graphics/pokemon/palettes/pichu_shiny_palette.pal b/graphics/pokemon/pichu/shiny.pal
index dd17d7fe0..dd17d7fe0 100644
--- a/graphics/pokemon/palettes/pichu_shiny_palette.pal
+++ b/graphics/pokemon/pichu/shiny.pal
diff --git a/graphics/pokemon/back_pics/pidgeot_back_pic.png b/graphics/pokemon/pidgeot/back.png
index a050dd31c..a050dd31c 100644
--- a/graphics/pokemon/back_pics/pidgeot_back_pic.png
+++ b/graphics/pokemon/pidgeot/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/pidgeot_footprint.png b/graphics/pokemon/pidgeot/footprint.png
index 025341554..025341554 100644
--- a/graphics/pokemon/footprints/pidgeot_footprint.png
+++ b/graphics/pokemon/pidgeot/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/pidgeot_still_front_pic.png b/graphics/pokemon/pidgeot/front.png
index 314ea0e95..314ea0e95 100644
--- a/graphics/pokemon/front_pics/pidgeot_still_front_pic.png
+++ b/graphics/pokemon/pidgeot/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/pidgeot_icon.png b/graphics/pokemon/pidgeot/icon.png
index 472c0640c..472c0640c 100644
--- a/graphics/pokemon/icons/pidgeot_icon.png
+++ b/graphics/pokemon/pidgeot/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/pidgeot_palette.pal b/graphics/pokemon/pidgeot/normal.pal
index 4f7242c65..4f7242c65 100644
--- a/graphics/pokemon/palettes/pidgeot_palette.pal
+++ b/graphics/pokemon/pidgeot/normal.pal
diff --git a/graphics/pokemon/palettes/pidgeot_shiny_palette.pal b/graphics/pokemon/pidgeot/shiny.pal
index 8f6518b6b..8f6518b6b 100644
--- a/graphics/pokemon/palettes/pidgeot_shiny_palette.pal
+++ b/graphics/pokemon/pidgeot/shiny.pal
diff --git a/graphics/pokemon/back_pics/pidgeotto_back_pic.png b/graphics/pokemon/pidgeotto/back.png
index 4aeab2844..4aeab2844 100644
--- a/graphics/pokemon/back_pics/pidgeotto_back_pic.png
+++ b/graphics/pokemon/pidgeotto/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/pidgeotto_footprint.png b/graphics/pokemon/pidgeotto/footprint.png
index c507f72b8..c507f72b8 100644
--- a/graphics/pokemon/footprints/pidgeotto_footprint.png
+++ b/graphics/pokemon/pidgeotto/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/pidgeotto_still_front_pic.png b/graphics/pokemon/pidgeotto/front.png
index dc7f68df0..dc7f68df0 100644
--- a/graphics/pokemon/front_pics/pidgeotto_still_front_pic.png
+++ b/graphics/pokemon/pidgeotto/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/pidgeotto_icon.png b/graphics/pokemon/pidgeotto/icon.png
index bb134533e..bb134533e 100644
--- a/graphics/pokemon/icons/pidgeotto_icon.png
+++ b/graphics/pokemon/pidgeotto/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/pidgeotto_palette.pal b/graphics/pokemon/pidgeotto/normal.pal
index 26fc191ec..26fc191ec 100644
--- a/graphics/pokemon/palettes/pidgeotto_palette.pal
+++ b/graphics/pokemon/pidgeotto/normal.pal
diff --git a/graphics/pokemon/palettes/pidgeotto_shiny_palette.pal b/graphics/pokemon/pidgeotto/shiny.pal
index 09a5b5cd3..09a5b5cd3 100644
--- a/graphics/pokemon/palettes/pidgeotto_shiny_palette.pal
+++ b/graphics/pokemon/pidgeotto/shiny.pal
diff --git a/graphics/pokemon/back_pics/pidgey_back_pic.png b/graphics/pokemon/pidgey/back.png
index ecb42e8f1..ecb42e8f1 100644
--- a/graphics/pokemon/back_pics/pidgey_back_pic.png
+++ b/graphics/pokemon/pidgey/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/pidgey_footprint.png b/graphics/pokemon/pidgey/footprint.png
index 6fe6e4282..6fe6e4282 100644
--- a/graphics/pokemon/footprints/pidgey_footprint.png
+++ b/graphics/pokemon/pidgey/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/pidgey_still_front_pic.png b/graphics/pokemon/pidgey/front.png
index 081602716..081602716 100644
--- a/graphics/pokemon/front_pics/pidgey_still_front_pic.png
+++ b/graphics/pokemon/pidgey/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/pidgey_icon.png b/graphics/pokemon/pidgey/icon.png
index 44ff94311..44ff94311 100644
--- a/graphics/pokemon/icons/pidgey_icon.png
+++ b/graphics/pokemon/pidgey/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/pidgey_palette.pal b/graphics/pokemon/pidgey/normal.pal
index 2d9f8708f..2d9f8708f 100644
--- a/graphics/pokemon/palettes/pidgey_palette.pal
+++ b/graphics/pokemon/pidgey/normal.pal
diff --git a/graphics/pokemon/palettes/pidgey_shiny_palette.pal b/graphics/pokemon/pidgey/shiny.pal
index 5723ea075..5723ea075 100644
--- a/graphics/pokemon/palettes/pidgey_shiny_palette.pal
+++ b/graphics/pokemon/pidgey/shiny.pal
diff --git a/graphics/pokemon/back_pics/pikachu_back_pic.png b/graphics/pokemon/pikachu/back.png
index 0ea5ff592..0ea5ff592 100644
--- a/graphics/pokemon/back_pics/pikachu_back_pic.png
+++ b/graphics/pokemon/pikachu/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/pikachu_footprint.png b/graphics/pokemon/pikachu/footprint.png
index a8ee2e4ac..a8ee2e4ac 100644
--- a/graphics/pokemon/footprints/pikachu_footprint.png
+++ b/graphics/pokemon/pikachu/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/pikachu_still_front_pic.png b/graphics/pokemon/pikachu/front.png
index 18f83cf02..18f83cf02 100644
--- a/graphics/pokemon/front_pics/pikachu_still_front_pic.png
+++ b/graphics/pokemon/pikachu/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/pikachu_icon.png b/graphics/pokemon/pikachu/icon.png
index feb77f7db..feb77f7db 100644
--- a/graphics/pokemon/icons/pikachu_icon.png
+++ b/graphics/pokemon/pikachu/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/pikachu_palette.pal b/graphics/pokemon/pikachu/normal.pal
index bb60c24a9..bb60c24a9 100644
--- a/graphics/pokemon/palettes/pikachu_palette.pal
+++ b/graphics/pokemon/pikachu/normal.pal
diff --git a/graphics/pokemon/palettes/pikachu_shiny_palette.pal b/graphics/pokemon/pikachu/shiny.pal
index ee905559c..ee905559c 100644
--- a/graphics/pokemon/palettes/pikachu_shiny_palette.pal
+++ b/graphics/pokemon/pikachu/shiny.pal
diff --git a/graphics/pokemon/back_pics/piloswine_back_pic.png b/graphics/pokemon/piloswine/back.png
index a9a3bfed8..a9a3bfed8 100644
--- a/graphics/pokemon/back_pics/piloswine_back_pic.png
+++ b/graphics/pokemon/piloswine/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/piloswine_footprint.png b/graphics/pokemon/piloswine/footprint.png
index 0b7405ece..0b7405ece 100644
--- a/graphics/pokemon/footprints/piloswine_footprint.png
+++ b/graphics/pokemon/piloswine/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/piloswine_still_front_pic.png b/graphics/pokemon/piloswine/front.png
index 939fb3908..939fb3908 100644
--- a/graphics/pokemon/front_pics/piloswine_still_front_pic.png
+++ b/graphics/pokemon/piloswine/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/piloswine_icon.png b/graphics/pokemon/piloswine/icon.png
index 974e9ea6a..974e9ea6a 100644
--- a/graphics/pokemon/icons/piloswine_icon.png
+++ b/graphics/pokemon/piloswine/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/piloswine_palette.pal b/graphics/pokemon/piloswine/normal.pal
index 287cfcd0d..287cfcd0d 100644
--- a/graphics/pokemon/palettes/piloswine_palette.pal
+++ b/graphics/pokemon/piloswine/normal.pal
diff --git a/graphics/pokemon/palettes/piloswine_shiny_palette.pal b/graphics/pokemon/piloswine/shiny.pal
index ff56a634a..ff56a634a 100644
--- a/graphics/pokemon/palettes/piloswine_shiny_palette.pal
+++ b/graphics/pokemon/piloswine/shiny.pal
diff --git a/graphics/pokemon/back_pics/pineco_back_pic.png b/graphics/pokemon/pineco/back.png
index a92454bb3..a92454bb3 100644
--- a/graphics/pokemon/back_pics/pineco_back_pic.png
+++ b/graphics/pokemon/pineco/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/pineco_footprint.png b/graphics/pokemon/pineco/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/pineco_footprint.png
+++ b/graphics/pokemon/pineco/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/pineco_still_front_pic.png b/graphics/pokemon/pineco/front.png
index eee32963a..eee32963a 100644
--- a/graphics/pokemon/front_pics/pineco_still_front_pic.png
+++ b/graphics/pokemon/pineco/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/pineco_icon.png b/graphics/pokemon/pineco/icon.png
index 3c12df5a2..3c12df5a2 100644
--- a/graphics/pokemon/icons/pineco_icon.png
+++ b/graphics/pokemon/pineco/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/pineco_palette.pal b/graphics/pokemon/pineco/normal.pal
index 91acee124..91acee124 100644
--- a/graphics/pokemon/palettes/pineco_palette.pal
+++ b/graphics/pokemon/pineco/normal.pal
diff --git a/graphics/pokemon/palettes/pineco_shiny_palette.pal b/graphics/pokemon/pineco/shiny.pal
index a474cc3e8..a474cc3e8 100644
--- a/graphics/pokemon/palettes/pineco_shiny_palette.pal
+++ b/graphics/pokemon/pineco/shiny.pal
diff --git a/graphics/pokemon/back_pics/pinsir_back_pic.png b/graphics/pokemon/pinsir/back.png
index 95ee9784c..95ee9784c 100644
--- a/graphics/pokemon/back_pics/pinsir_back_pic.png
+++ b/graphics/pokemon/pinsir/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/pinsir_footprint.png b/graphics/pokemon/pinsir/footprint.png
index ebd22101e..ebd22101e 100644
--- a/graphics/pokemon/footprints/pinsir_footprint.png
+++ b/graphics/pokemon/pinsir/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/pinsir_still_front_pic.png b/graphics/pokemon/pinsir/front.png
index c14846d5b..c14846d5b 100644
--- a/graphics/pokemon/front_pics/pinsir_still_front_pic.png
+++ b/graphics/pokemon/pinsir/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/pinsir_icon.png b/graphics/pokemon/pinsir/icon.png
index b05b075b9..b05b075b9 100644
--- a/graphics/pokemon/icons/pinsir_icon.png
+++ b/graphics/pokemon/pinsir/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/pinsir_palette.pal b/graphics/pokemon/pinsir/normal.pal
index d4fd44e8f..d4fd44e8f 100644
--- a/graphics/pokemon/palettes/pinsir_palette.pal
+++ b/graphics/pokemon/pinsir/normal.pal
diff --git a/graphics/pokemon/palettes/pinsir_shiny_palette.pal b/graphics/pokemon/pinsir/shiny.pal
index 597e7a335..597e7a335 100644
--- a/graphics/pokemon/palettes/pinsir_shiny_palette.pal
+++ b/graphics/pokemon/pinsir/shiny.pal
diff --git a/graphics/pokemon/back_pics/plusle_back_pic.png b/graphics/pokemon/plusle/back.png
index 7365f9921..7365f9921 100644
--- a/graphics/pokemon/back_pics/plusle_back_pic.png
+++ b/graphics/pokemon/plusle/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/plusle_footprint.png b/graphics/pokemon/plusle/footprint.png
index 1071b8069..1071b8069 100644
--- a/graphics/pokemon/footprints/plusle_footprint.png
+++ b/graphics/pokemon/plusle/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/plusle_still_front_pic.png b/graphics/pokemon/plusle/front.png
index dc38ca3d1..dc38ca3d1 100644
--- a/graphics/pokemon/front_pics/plusle_still_front_pic.png
+++ b/graphics/pokemon/plusle/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/plusle_icon.png b/graphics/pokemon/plusle/icon.png
index 97f10d56f..97f10d56f 100644
--- a/graphics/pokemon/icons/plusle_icon.png
+++ b/graphics/pokemon/plusle/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/plusle_palette.pal b/graphics/pokemon/plusle/normal.pal
index e225ab56a..e225ab56a 100644
--- a/graphics/pokemon/palettes/plusle_palette.pal
+++ b/graphics/pokemon/plusle/normal.pal
diff --git a/graphics/pokemon/palettes/plusle_shiny_palette.pal b/graphics/pokemon/plusle/shiny.pal
index f1305ea50..f1305ea50 100644
--- a/graphics/pokemon/palettes/plusle_shiny_palette.pal
+++ b/graphics/pokemon/plusle/shiny.pal
diff --git a/graphics/pokemon/back_pics/politoed_back_pic.png b/graphics/pokemon/politoed/back.png
index 5337b6f27..5337b6f27 100644
--- a/graphics/pokemon/back_pics/politoed_back_pic.png
+++ b/graphics/pokemon/politoed/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/politoed_footprint.png b/graphics/pokemon/politoed/footprint.png
index f97b78994..f97b78994 100644
--- a/graphics/pokemon/footprints/politoed_footprint.png
+++ b/graphics/pokemon/politoed/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/politoed_still_front_pic.png b/graphics/pokemon/politoed/front.png
index d07bf4013..d07bf4013 100644
--- a/graphics/pokemon/front_pics/politoed_still_front_pic.png
+++ b/graphics/pokemon/politoed/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/politoed_icon.png b/graphics/pokemon/politoed/icon.png
index a5e5d699b..a5e5d699b 100644
--- a/graphics/pokemon/icons/politoed_icon.png
+++ b/graphics/pokemon/politoed/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/politoed_palette.pal b/graphics/pokemon/politoed/normal.pal
index 31177861d..31177861d 100644
--- a/graphics/pokemon/palettes/politoed_palette.pal
+++ b/graphics/pokemon/politoed/normal.pal
diff --git a/graphics/pokemon/palettes/politoed_shiny_palette.pal b/graphics/pokemon/politoed/shiny.pal
index 1d25291bf..1d25291bf 100644
--- a/graphics/pokemon/palettes/politoed_shiny_palette.pal
+++ b/graphics/pokemon/politoed/shiny.pal
diff --git a/graphics/pokemon/back_pics/poliwag_back_pic.png b/graphics/pokemon/poliwag/back.png
index 11e30aef7..11e30aef7 100644
--- a/graphics/pokemon/back_pics/poliwag_back_pic.png
+++ b/graphics/pokemon/poliwag/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/poliwag_footprint.png b/graphics/pokemon/poliwag/footprint.png
index 04e411726..04e411726 100644
--- a/graphics/pokemon/footprints/poliwag_footprint.png
+++ b/graphics/pokemon/poliwag/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/poliwag_still_front_pic.png b/graphics/pokemon/poliwag/front.png
index 47d5bb762..47d5bb762 100644
--- a/graphics/pokemon/front_pics/poliwag_still_front_pic.png
+++ b/graphics/pokemon/poliwag/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/poliwag_icon.png b/graphics/pokemon/poliwag/icon.png
index d4cd95f1c..d4cd95f1c 100644
--- a/graphics/pokemon/icons/poliwag_icon.png
+++ b/graphics/pokemon/poliwag/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/poliwag_palette.pal b/graphics/pokemon/poliwag/normal.pal
index fa7a79543..fa7a79543 100644
--- a/graphics/pokemon/palettes/poliwag_palette.pal
+++ b/graphics/pokemon/poliwag/normal.pal
diff --git a/graphics/pokemon/palettes/poliwag_shiny_palette.pal b/graphics/pokemon/poliwag/shiny.pal
index 1789edc4a..1789edc4a 100644
--- a/graphics/pokemon/palettes/poliwag_shiny_palette.pal
+++ b/graphics/pokemon/poliwag/shiny.pal
diff --git a/graphics/pokemon/back_pics/poliwhirl_back_pic.png b/graphics/pokemon/poliwhirl/back.png
index 31540c539..31540c539 100644
--- a/graphics/pokemon/back_pics/poliwhirl_back_pic.png
+++ b/graphics/pokemon/poliwhirl/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/poliwhirl_footprint.png b/graphics/pokemon/poliwhirl/footprint.png
index 14f6c2ea9..14f6c2ea9 100644
--- a/graphics/pokemon/footprints/poliwhirl_footprint.png
+++ b/graphics/pokemon/poliwhirl/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/poliwhirl_still_front_pic.png b/graphics/pokemon/poliwhirl/front.png
index ab7eb3a4b..ab7eb3a4b 100644
--- a/graphics/pokemon/front_pics/poliwhirl_still_front_pic.png
+++ b/graphics/pokemon/poliwhirl/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/poliwhirl_icon.png b/graphics/pokemon/poliwhirl/icon.png
index bb90740ac..bb90740ac 100644
--- a/graphics/pokemon/icons/poliwhirl_icon.png
+++ b/graphics/pokemon/poliwhirl/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/poliwhirl_palette.pal b/graphics/pokemon/poliwhirl/normal.pal
index 50de4d631..50de4d631 100644
--- a/graphics/pokemon/palettes/poliwhirl_palette.pal
+++ b/graphics/pokemon/poliwhirl/normal.pal
diff --git a/graphics/pokemon/palettes/poliwhirl_shiny_palette.pal b/graphics/pokemon/poliwhirl/shiny.pal
index b6aa45616..b6aa45616 100644
--- a/graphics/pokemon/palettes/poliwhirl_shiny_palette.pal
+++ b/graphics/pokemon/poliwhirl/shiny.pal
diff --git a/graphics/pokemon/back_pics/poliwrath_back_pic.png b/graphics/pokemon/poliwrath/back.png
index b38239be7..b38239be7 100644
--- a/graphics/pokemon/back_pics/poliwrath_back_pic.png
+++ b/graphics/pokemon/poliwrath/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/poliwrath_footprint.png b/graphics/pokemon/poliwrath/footprint.png
index 8f562fcef..8f562fcef 100644
--- a/graphics/pokemon/footprints/poliwrath_footprint.png
+++ b/graphics/pokemon/poliwrath/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/poliwrath_still_front_pic.png b/graphics/pokemon/poliwrath/front.png
index 84210c773..84210c773 100644
--- a/graphics/pokemon/front_pics/poliwrath_still_front_pic.png
+++ b/graphics/pokemon/poliwrath/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/poliwrath_icon.png b/graphics/pokemon/poliwrath/icon.png
index d1afb4511..d1afb4511 100644
--- a/graphics/pokemon/icons/poliwrath_icon.png
+++ b/graphics/pokemon/poliwrath/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/poliwrath_palette.pal b/graphics/pokemon/poliwrath/normal.pal
index 0f2a6a88b..0f2a6a88b 100644
--- a/graphics/pokemon/palettes/poliwrath_palette.pal
+++ b/graphics/pokemon/poliwrath/normal.pal
diff --git a/graphics/pokemon/palettes/poliwrath_shiny_palette.pal b/graphics/pokemon/poliwrath/shiny.pal
index 64aab4039..64aab4039 100644
--- a/graphics/pokemon/palettes/poliwrath_shiny_palette.pal
+++ b/graphics/pokemon/poliwrath/shiny.pal
diff --git a/graphics/pokemon/back_pics/ponyta_back_pic.png b/graphics/pokemon/ponyta/back.png
index cc4bf1189..cc4bf1189 100644
--- a/graphics/pokemon/back_pics/ponyta_back_pic.png
+++ b/graphics/pokemon/ponyta/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ponyta_footprint.png b/graphics/pokemon/ponyta/footprint.png
index 906ee7a5b..906ee7a5b 100644
--- a/graphics/pokemon/footprints/ponyta_footprint.png
+++ b/graphics/pokemon/ponyta/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ponyta_still_front_pic.png b/graphics/pokemon/ponyta/front.png
index b2a4e903d..b2a4e903d 100644
--- a/graphics/pokemon/front_pics/ponyta_still_front_pic.png
+++ b/graphics/pokemon/ponyta/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ponyta_icon.png b/graphics/pokemon/ponyta/icon.png
index 05ac87a44..05ac87a44 100644
--- a/graphics/pokemon/icons/ponyta_icon.png
+++ b/graphics/pokemon/ponyta/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ponyta_palette.pal b/graphics/pokemon/ponyta/normal.pal
index af1b95044..af1b95044 100644
--- a/graphics/pokemon/palettes/ponyta_palette.pal
+++ b/graphics/pokemon/ponyta/normal.pal
diff --git a/graphics/pokemon/palettes/ponyta_shiny_palette.pal b/graphics/pokemon/ponyta/shiny.pal
index eef11581b..eef11581b 100644
--- a/graphics/pokemon/palettes/ponyta_shiny_palette.pal
+++ b/graphics/pokemon/ponyta/shiny.pal
diff --git a/graphics/pokemon/back_pics/poochyena_back_pic.png b/graphics/pokemon/poochyena/back.png
index 6d13ed43a..6d13ed43a 100644
--- a/graphics/pokemon/back_pics/poochyena_back_pic.png
+++ b/graphics/pokemon/poochyena/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/poochyena_footprint.png b/graphics/pokemon/poochyena/footprint.png
index c4afe995f..c4afe995f 100644
--- a/graphics/pokemon/footprints/poochyena_footprint.png
+++ b/graphics/pokemon/poochyena/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/poochyena_still_front_pic.png b/graphics/pokemon/poochyena/front.png
index bfdc6e7e6..bfdc6e7e6 100644
--- a/graphics/pokemon/front_pics/poochyena_still_front_pic.png
+++ b/graphics/pokemon/poochyena/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/poochyena_icon.png b/graphics/pokemon/poochyena/icon.png
index 7e6be6a17..7e6be6a17 100644
--- a/graphics/pokemon/icons/poochyena_icon.png
+++ b/graphics/pokemon/poochyena/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/poochyena_palette.pal b/graphics/pokemon/poochyena/normal.pal
index 4c386e261..4c386e261 100644
--- a/graphics/pokemon/palettes/poochyena_palette.pal
+++ b/graphics/pokemon/poochyena/normal.pal
diff --git a/graphics/pokemon/palettes/poochyena_shiny_palette.pal b/graphics/pokemon/poochyena/shiny.pal
index c30dcec93..c30dcec93 100644
--- a/graphics/pokemon/palettes/poochyena_shiny_palette.pal
+++ b/graphics/pokemon/poochyena/shiny.pal
diff --git a/graphics/pokemon/back_pics/porygon_back_pic.png b/graphics/pokemon/porygon/back.png
index f102465a8..f102465a8 100644
--- a/graphics/pokemon/back_pics/porygon_back_pic.png
+++ b/graphics/pokemon/porygon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/porygon_footprint.png b/graphics/pokemon/porygon/footprint.png
index 02243e3bc..02243e3bc 100644
--- a/graphics/pokemon/footprints/porygon_footprint.png
+++ b/graphics/pokemon/porygon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/porygon_still_front_pic.png b/graphics/pokemon/porygon/front.png
index c22e57d32..c22e57d32 100644
--- a/graphics/pokemon/front_pics/porygon_still_front_pic.png
+++ b/graphics/pokemon/porygon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/porygon_icon.png b/graphics/pokemon/porygon/icon.png
index 306ea8d31..306ea8d31 100644
--- a/graphics/pokemon/icons/porygon_icon.png
+++ b/graphics/pokemon/porygon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/porygon_palette.pal b/graphics/pokemon/porygon/normal.pal
index 4de40a0c3..4de40a0c3 100644
--- a/graphics/pokemon/palettes/porygon_palette.pal
+++ b/graphics/pokemon/porygon/normal.pal
diff --git a/graphics/pokemon/palettes/porygon_shiny_palette.pal b/graphics/pokemon/porygon/shiny.pal
index 19178b1b8..19178b1b8 100644
--- a/graphics/pokemon/palettes/porygon_shiny_palette.pal
+++ b/graphics/pokemon/porygon/shiny.pal
diff --git a/graphics/pokemon/back_pics/porygon2_back_pic.png b/graphics/pokemon/porygon2/back.png
index aad400b56..aad400b56 100644
--- a/graphics/pokemon/back_pics/porygon2_back_pic.png
+++ b/graphics/pokemon/porygon2/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/porygon2_footprint.png b/graphics/pokemon/porygon2/footprint.png
index f92224af3..f92224af3 100644
--- a/graphics/pokemon/footprints/porygon2_footprint.png
+++ b/graphics/pokemon/porygon2/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/porygon2_still_front_pic.png b/graphics/pokemon/porygon2/front.png
index ef08816d7..ef08816d7 100644
--- a/graphics/pokemon/front_pics/porygon2_still_front_pic.png
+++ b/graphics/pokemon/porygon2/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/porygon2_icon.png b/graphics/pokemon/porygon2/icon.png
index 312640b40..312640b40 100644
--- a/graphics/pokemon/icons/porygon2_icon.png
+++ b/graphics/pokemon/porygon2/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/porygon2_palette.pal b/graphics/pokemon/porygon2/normal.pal
index a9de00549..a9de00549 100644
--- a/graphics/pokemon/palettes/porygon2_palette.pal
+++ b/graphics/pokemon/porygon2/normal.pal
diff --git a/graphics/pokemon/palettes/porygon2_shiny_palette.pal b/graphics/pokemon/porygon2/shiny.pal
index 4c0d2054c..4c0d2054c 100644
--- a/graphics/pokemon/palettes/porygon2_shiny_palette.pal
+++ b/graphics/pokemon/porygon2/shiny.pal
diff --git a/graphics/pokemon/back_pics/primeape_back_pic.png b/graphics/pokemon/primeape/back.png
index 02b326cd4..02b326cd4 100644
--- a/graphics/pokemon/back_pics/primeape_back_pic.png
+++ b/graphics/pokemon/primeape/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/primeape_footprint.png b/graphics/pokemon/primeape/footprint.png
index f4c90ee17..f4c90ee17 100644
--- a/graphics/pokemon/footprints/primeape_footprint.png
+++ b/graphics/pokemon/primeape/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/primeape_still_front_pic.png b/graphics/pokemon/primeape/front.png
index 4d135e9f4..4d135e9f4 100644
--- a/graphics/pokemon/front_pics/primeape_still_front_pic.png
+++ b/graphics/pokemon/primeape/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/primeape_icon.png b/graphics/pokemon/primeape/icon.png
index d2d42f7dc..d2d42f7dc 100644
--- a/graphics/pokemon/icons/primeape_icon.png
+++ b/graphics/pokemon/primeape/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/primeape_palette.pal b/graphics/pokemon/primeape/normal.pal
index 5515043b2..5515043b2 100644
--- a/graphics/pokemon/palettes/primeape_palette.pal
+++ b/graphics/pokemon/primeape/normal.pal
diff --git a/graphics/pokemon/palettes/primeape_shiny_palette.pal b/graphics/pokemon/primeape/shiny.pal
index 02b4f4e16..02b4f4e16 100644
--- a/graphics/pokemon/palettes/primeape_shiny_palette.pal
+++ b/graphics/pokemon/primeape/shiny.pal
diff --git a/graphics/pokemon/back_pics/psyduck_back_pic.png b/graphics/pokemon/psyduck/back.png
index 65f8032a7..65f8032a7 100644
--- a/graphics/pokemon/back_pics/psyduck_back_pic.png
+++ b/graphics/pokemon/psyduck/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/psyduck_footprint.png b/graphics/pokemon/psyduck/footprint.png
index 4dff44800..4dff44800 100644
--- a/graphics/pokemon/footprints/psyduck_footprint.png
+++ b/graphics/pokemon/psyduck/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/psyduck_still_front_pic.png b/graphics/pokemon/psyduck/front.png
index 41e5202fc..41e5202fc 100644
--- a/graphics/pokemon/front_pics/psyduck_still_front_pic.png
+++ b/graphics/pokemon/psyduck/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/psyduck_icon.png b/graphics/pokemon/psyduck/icon.png
index f3ebc9f96..f3ebc9f96 100644
--- a/graphics/pokemon/icons/psyduck_icon.png
+++ b/graphics/pokemon/psyduck/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/psyduck_palette.pal b/graphics/pokemon/psyduck/normal.pal
index 546dddd9f..546dddd9f 100644
--- a/graphics/pokemon/palettes/psyduck_palette.pal
+++ b/graphics/pokemon/psyduck/normal.pal
diff --git a/graphics/pokemon/palettes/psyduck_shiny_palette.pal b/graphics/pokemon/psyduck/shiny.pal
index 49b953b0d..49b953b0d 100644
--- a/graphics/pokemon/palettes/psyduck_shiny_palette.pal
+++ b/graphics/pokemon/psyduck/shiny.pal
diff --git a/graphics/pokemon/back_pics/pupitar_back_pic.png b/graphics/pokemon/pupitar/back.png
index 1f49a87f9..1f49a87f9 100644
--- a/graphics/pokemon/back_pics/pupitar_back_pic.png
+++ b/graphics/pokemon/pupitar/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/pupitar_footprint.png b/graphics/pokemon/pupitar/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/pupitar_footprint.png
+++ b/graphics/pokemon/pupitar/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/pupitar_still_front_pic.png b/graphics/pokemon/pupitar/front.png
index 9e48ec20a..9e48ec20a 100644
--- a/graphics/pokemon/front_pics/pupitar_still_front_pic.png
+++ b/graphics/pokemon/pupitar/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/pupitar_icon.png b/graphics/pokemon/pupitar/icon.png
index 3491849d1..3491849d1 100644
--- a/graphics/pokemon/icons/pupitar_icon.png
+++ b/graphics/pokemon/pupitar/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/pupitar_palette.pal b/graphics/pokemon/pupitar/normal.pal
index bd8385e29..bd8385e29 100644
--- a/graphics/pokemon/palettes/pupitar_palette.pal
+++ b/graphics/pokemon/pupitar/normal.pal
diff --git a/graphics/pokemon/palettes/pupitar_shiny_palette.pal b/graphics/pokemon/pupitar/shiny.pal
index 58371ba01..58371ba01 100644
--- a/graphics/pokemon/palettes/pupitar_shiny_palette.pal
+++ b/graphics/pokemon/pupitar/shiny.pal
diff --git a/graphics/pokemon/back_pics/quagsire_back_pic.png b/graphics/pokemon/quagsire/back.png
index 9233569b8..9233569b8 100644
--- a/graphics/pokemon/back_pics/quagsire_back_pic.png
+++ b/graphics/pokemon/quagsire/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/quagsire_footprint.png b/graphics/pokemon/quagsire/footprint.png
index d04039763..d04039763 100644
--- a/graphics/pokemon/footprints/quagsire_footprint.png
+++ b/graphics/pokemon/quagsire/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/quagsire_still_front_pic.png b/graphics/pokemon/quagsire/front.png
index d065f9fa1..d065f9fa1 100644
--- a/graphics/pokemon/front_pics/quagsire_still_front_pic.png
+++ b/graphics/pokemon/quagsire/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/quagsire_icon.png b/graphics/pokemon/quagsire/icon.png
index 62c7f2e46..62c7f2e46 100644
--- a/graphics/pokemon/icons/quagsire_icon.png
+++ b/graphics/pokemon/quagsire/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/quagsire_palette.pal b/graphics/pokemon/quagsire/normal.pal
index 5a74c8c08..5a74c8c08 100644
--- a/graphics/pokemon/palettes/quagsire_palette.pal
+++ b/graphics/pokemon/quagsire/normal.pal
diff --git a/graphics/pokemon/palettes/quagsire_shiny_palette.pal b/graphics/pokemon/quagsire/shiny.pal
index cb5bd7922..cb5bd7922 100644
--- a/graphics/pokemon/palettes/quagsire_shiny_palette.pal
+++ b/graphics/pokemon/quagsire/shiny.pal
diff --git a/graphics/pokemon/back_pics/circled_question_mark_back_pic.png b/graphics/pokemon/question_mark/circled/back.png
index 3056402db..3056402db 100644
--- a/graphics/pokemon/back_pics/circled_question_mark_back_pic.png
+++ b/graphics/pokemon/question_mark/circled/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/circled_question_mark_still_front_pic.png b/graphics/pokemon/question_mark/circled/front.png
index 3056402db..3056402db 100644
--- a/graphics/pokemon/front_pics/circled_question_mark_still_front_pic.png
+++ b/graphics/pokemon/question_mark/circled/front.png
Binary files differ
diff --git a/graphics/pokemon/palettes/circled_question_mark_palette.pal b/graphics/pokemon/question_mark/circled/normal.pal
index 681f1cefe..681f1cefe 100644
--- a/graphics/pokemon/palettes/circled_question_mark_palette.pal
+++ b/graphics/pokemon/question_mark/circled/normal.pal
diff --git a/graphics/pokemon/palettes/circled_question_mark_shiny_palette.pal b/graphics/pokemon/question_mark/circled/shiny.pal
index aa8d08dc3..aa8d08dc3 100644
--- a/graphics/pokemon/palettes/circled_question_mark_shiny_palette.pal
+++ b/graphics/pokemon/question_mark/circled/shiny.pal
diff --git a/graphics/pokemon/back_pics/double_question_mark_back_pic.png b/graphics/pokemon/question_mark/double/back.png
index 881ff0519..881ff0519 100644
--- a/graphics/pokemon/back_pics/double_question_mark_back_pic.png
+++ b/graphics/pokemon/question_mark/double/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/double_question_mark_still_front_pic.png b/graphics/pokemon/question_mark/double/front.png
index 14eb6e139..14eb6e139 100644
--- a/graphics/pokemon/front_pics/double_question_mark_still_front_pic.png
+++ b/graphics/pokemon/question_mark/double/front.png
Binary files differ
diff --git a/graphics/pokemon/palettes/double_question_mark_palette.pal b/graphics/pokemon/question_mark/double/normal.pal
index 67be6bbf4..67be6bbf4 100644
--- a/graphics/pokemon/palettes/double_question_mark_palette.pal
+++ b/graphics/pokemon/question_mark/double/normal.pal
diff --git a/graphics/pokemon/palettes/double_question_mark_shiny_palette.pal b/graphics/pokemon/question_mark/double/shiny.pal
index 67be6bbf4..67be6bbf4 100644
--- a/graphics/pokemon/palettes/double_question_mark_shiny_palette.pal
+++ b/graphics/pokemon/question_mark/double/shiny.pal
diff --git a/graphics/pokemon/footprints/question_mark_footprint.png b/graphics/pokemon/question_mark/footprint.png
index 7c4f45eaa..7c4f45eaa 100644
--- a/graphics/pokemon/footprints/question_mark_footprint.png
+++ b/graphics/pokemon/question_mark/footprint.png
Binary files differ
diff --git a/graphics/pokemon/icons/question_mark_icon.png b/graphics/pokemon/question_mark/icon.png
index b31ebacf7..b31ebacf7 100644
--- a/graphics/pokemon/icons/question_mark_icon.png
+++ b/graphics/pokemon/question_mark/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/quilava_back_pic.png b/graphics/pokemon/quilava/back.png
index 5a97c1b11..5a97c1b11 100644
--- a/graphics/pokemon/back_pics/quilava_back_pic.png
+++ b/graphics/pokemon/quilava/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/quilava_footprint.png b/graphics/pokemon/quilava/footprint.png
index 28324dd7c..28324dd7c 100644
--- a/graphics/pokemon/footprints/quilava_footprint.png
+++ b/graphics/pokemon/quilava/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/quilava_still_front_pic.png b/graphics/pokemon/quilava/front.png
index a5a0d34f6..a5a0d34f6 100644
--- a/graphics/pokemon/front_pics/quilava_still_front_pic.png
+++ b/graphics/pokemon/quilava/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/quilava_icon.png b/graphics/pokemon/quilava/icon.png
index 62d0608dd..62d0608dd 100644
--- a/graphics/pokemon/icons/quilava_icon.png
+++ b/graphics/pokemon/quilava/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/quilava_palette.pal b/graphics/pokemon/quilava/normal.pal
index 0b37faf22..0b37faf22 100644
--- a/graphics/pokemon/palettes/quilava_palette.pal
+++ b/graphics/pokemon/quilava/normal.pal
diff --git a/graphics/pokemon/palettes/quilava_shiny_palette.pal b/graphics/pokemon/quilava/shiny.pal
index e1baba127..e1baba127 100644
--- a/graphics/pokemon/palettes/quilava_shiny_palette.pal
+++ b/graphics/pokemon/quilava/shiny.pal
diff --git a/graphics/pokemon/back_pics/qwilfish_back_pic.png b/graphics/pokemon/qwilfish/back.png
index 34fb6e12e..34fb6e12e 100644
--- a/graphics/pokemon/back_pics/qwilfish_back_pic.png
+++ b/graphics/pokemon/qwilfish/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/qwilfish_footprint.png b/graphics/pokemon/qwilfish/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/qwilfish_footprint.png
+++ b/graphics/pokemon/qwilfish/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/qwilfish_still_front_pic.png b/graphics/pokemon/qwilfish/front.png
index 67266d4af..67266d4af 100644
--- a/graphics/pokemon/front_pics/qwilfish_still_front_pic.png
+++ b/graphics/pokemon/qwilfish/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/qwilfish_icon.png b/graphics/pokemon/qwilfish/icon.png
index b0fc12302..b0fc12302 100644
--- a/graphics/pokemon/icons/qwilfish_icon.png
+++ b/graphics/pokemon/qwilfish/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/qwilfish_palette.pal b/graphics/pokemon/qwilfish/normal.pal
index 1956e57c4..1956e57c4 100644
--- a/graphics/pokemon/palettes/qwilfish_palette.pal
+++ b/graphics/pokemon/qwilfish/normal.pal
diff --git a/graphics/pokemon/palettes/qwilfish_shiny_palette.pal b/graphics/pokemon/qwilfish/shiny.pal
index d548d12e9..d548d12e9 100644
--- a/graphics/pokemon/palettes/qwilfish_shiny_palette.pal
+++ b/graphics/pokemon/qwilfish/shiny.pal
diff --git a/graphics/pokemon/back_pics/raichu_back_pic.png b/graphics/pokemon/raichu/back.png
index 6f8a0afcd..6f8a0afcd 100644
--- a/graphics/pokemon/back_pics/raichu_back_pic.png
+++ b/graphics/pokemon/raichu/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/raichu_footprint.png b/graphics/pokemon/raichu/footprint.png
index 9f2ac3993..9f2ac3993 100644
--- a/graphics/pokemon/footprints/raichu_footprint.png
+++ b/graphics/pokemon/raichu/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/raichu_still_front_pic.png b/graphics/pokemon/raichu/front.png
index 8c324b5e5..8c324b5e5 100644
--- a/graphics/pokemon/front_pics/raichu_still_front_pic.png
+++ b/graphics/pokemon/raichu/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/raichu_icon.png b/graphics/pokemon/raichu/icon.png
index a34997b47..a34997b47 100644
--- a/graphics/pokemon/icons/raichu_icon.png
+++ b/graphics/pokemon/raichu/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/raichu_palette.pal b/graphics/pokemon/raichu/normal.pal
index f221efbab..f221efbab 100644
--- a/graphics/pokemon/palettes/raichu_palette.pal
+++ b/graphics/pokemon/raichu/normal.pal
diff --git a/graphics/pokemon/palettes/raichu_shiny_palette.pal b/graphics/pokemon/raichu/shiny.pal
index 8b6a3fe37..8b6a3fe37 100644
--- a/graphics/pokemon/palettes/raichu_shiny_palette.pal
+++ b/graphics/pokemon/raichu/shiny.pal
diff --git a/graphics/pokemon/back_pics/raikou_back_pic.png b/graphics/pokemon/raikou/back.png
index e187eda52..e187eda52 100644
--- a/graphics/pokemon/back_pics/raikou_back_pic.png
+++ b/graphics/pokemon/raikou/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/raikou_footprint.png b/graphics/pokemon/raikou/footprint.png
index b7081dcd3..b7081dcd3 100644
--- a/graphics/pokemon/footprints/raikou_footprint.png
+++ b/graphics/pokemon/raikou/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/raikou_still_front_pic.png b/graphics/pokemon/raikou/front.png
index f9ee02ea9..f9ee02ea9 100644
--- a/graphics/pokemon/front_pics/raikou_still_front_pic.png
+++ b/graphics/pokemon/raikou/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/raikou_icon.png b/graphics/pokemon/raikou/icon.png
index 7847a6f16..7847a6f16 100644
--- a/graphics/pokemon/icons/raikou_icon.png
+++ b/graphics/pokemon/raikou/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/raikou_palette.pal b/graphics/pokemon/raikou/normal.pal
index 975f92b23..975f92b23 100644
--- a/graphics/pokemon/palettes/raikou_palette.pal
+++ b/graphics/pokemon/raikou/normal.pal
diff --git a/graphics/pokemon/palettes/raikou_shiny_palette.pal b/graphics/pokemon/raikou/shiny.pal
index 73bbcb405..73bbcb405 100644
--- a/graphics/pokemon/palettes/raikou_shiny_palette.pal
+++ b/graphics/pokemon/raikou/shiny.pal
diff --git a/graphics/pokemon/back_pics/ralts_back_pic.png b/graphics/pokemon/ralts/back.png
index 926bdc0ab..926bdc0ab 100644
--- a/graphics/pokemon/back_pics/ralts_back_pic.png
+++ b/graphics/pokemon/ralts/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ralts_footprint.png b/graphics/pokemon/ralts/footprint.png
index 6965dbe60..6965dbe60 100644
--- a/graphics/pokemon/footprints/ralts_footprint.png
+++ b/graphics/pokemon/ralts/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ralts_still_front_pic.png b/graphics/pokemon/ralts/front.png
index dc4551880..dc4551880 100644
--- a/graphics/pokemon/front_pics/ralts_still_front_pic.png
+++ b/graphics/pokemon/ralts/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ralts_icon.png b/graphics/pokemon/ralts/icon.png
index ed99d3427..ed99d3427 100644
--- a/graphics/pokemon/icons/ralts_icon.png
+++ b/graphics/pokemon/ralts/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ralts_palette.pal b/graphics/pokemon/ralts/normal.pal
index 1e513ae87..1e513ae87 100644
--- a/graphics/pokemon/palettes/ralts_palette.pal
+++ b/graphics/pokemon/ralts/normal.pal
diff --git a/graphics/pokemon/palettes/ralts_shiny_palette.pal b/graphics/pokemon/ralts/shiny.pal
index b588f6eea..b588f6eea 100644
--- a/graphics/pokemon/palettes/ralts_shiny_palette.pal
+++ b/graphics/pokemon/ralts/shiny.pal
diff --git a/graphics/pokemon/back_pics/rapidash_back_pic.png b/graphics/pokemon/rapidash/back.png
index 7d4b9667e..7d4b9667e 100644
--- a/graphics/pokemon/back_pics/rapidash_back_pic.png
+++ b/graphics/pokemon/rapidash/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/rapidash_footprint.png b/graphics/pokemon/rapidash/footprint.png
index 3361489fd..3361489fd 100644
--- a/graphics/pokemon/footprints/rapidash_footprint.png
+++ b/graphics/pokemon/rapidash/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/rapidash_still_front_pic.png b/graphics/pokemon/rapidash/front.png
index 156aa6a59..156aa6a59 100644
--- a/graphics/pokemon/front_pics/rapidash_still_front_pic.png
+++ b/graphics/pokemon/rapidash/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/rapidash_icon.png b/graphics/pokemon/rapidash/icon.png
index c0af0dd08..c0af0dd08 100644
--- a/graphics/pokemon/icons/rapidash_icon.png
+++ b/graphics/pokemon/rapidash/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/rapidash_palette.pal b/graphics/pokemon/rapidash/normal.pal
index 181b4f58a..181b4f58a 100644
--- a/graphics/pokemon/palettes/rapidash_palette.pal
+++ b/graphics/pokemon/rapidash/normal.pal
diff --git a/graphics/pokemon/palettes/rapidash_shiny_palette.pal b/graphics/pokemon/rapidash/shiny.pal
index 6297b0e4e..6297b0e4e 100644
--- a/graphics/pokemon/palettes/rapidash_shiny_palette.pal
+++ b/graphics/pokemon/rapidash/shiny.pal
diff --git a/graphics/pokemon/back_pics/raticate_back_pic.png b/graphics/pokemon/raticate/back.png
index 38935407e..38935407e 100644
--- a/graphics/pokemon/back_pics/raticate_back_pic.png
+++ b/graphics/pokemon/raticate/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/raticate_footprint.png b/graphics/pokemon/raticate/footprint.png
index 6628cfdd7..6628cfdd7 100644
--- a/graphics/pokemon/footprints/raticate_footprint.png
+++ b/graphics/pokemon/raticate/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/raticate_still_front_pic.png b/graphics/pokemon/raticate/front.png
index ebbfeead1..ebbfeead1 100644
--- a/graphics/pokemon/front_pics/raticate_still_front_pic.png
+++ b/graphics/pokemon/raticate/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/raticate_icon.png b/graphics/pokemon/raticate/icon.png
index 40fbd79c5..40fbd79c5 100644
--- a/graphics/pokemon/icons/raticate_icon.png
+++ b/graphics/pokemon/raticate/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/raticate_palette.pal b/graphics/pokemon/raticate/normal.pal
index c82a9117e..c82a9117e 100644
--- a/graphics/pokemon/palettes/raticate_palette.pal
+++ b/graphics/pokemon/raticate/normal.pal
diff --git a/graphics/pokemon/palettes/raticate_shiny_palette.pal b/graphics/pokemon/raticate/shiny.pal
index c15414d53..c15414d53 100644
--- a/graphics/pokemon/palettes/raticate_shiny_palette.pal
+++ b/graphics/pokemon/raticate/shiny.pal
diff --git a/graphics/pokemon/back_pics/rattata_back_pic.png b/graphics/pokemon/rattata/back.png
index 717be0bc6..717be0bc6 100644
--- a/graphics/pokemon/back_pics/rattata_back_pic.png
+++ b/graphics/pokemon/rattata/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/rattata_footprint.png b/graphics/pokemon/rattata/footprint.png
index 008b1ddc0..008b1ddc0 100644
--- a/graphics/pokemon/footprints/rattata_footprint.png
+++ b/graphics/pokemon/rattata/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/rattata_still_front_pic.png b/graphics/pokemon/rattata/front.png
index 28abd0e9a..28abd0e9a 100644
--- a/graphics/pokemon/front_pics/rattata_still_front_pic.png
+++ b/graphics/pokemon/rattata/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/rattata_icon.png b/graphics/pokemon/rattata/icon.png
index ae7b22258..ae7b22258 100644
--- a/graphics/pokemon/icons/rattata_icon.png
+++ b/graphics/pokemon/rattata/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/rattata_palette.pal b/graphics/pokemon/rattata/normal.pal
index a71005b50..a71005b50 100644
--- a/graphics/pokemon/palettes/rattata_palette.pal
+++ b/graphics/pokemon/rattata/normal.pal
diff --git a/graphics/pokemon/palettes/rattata_shiny_palette.pal b/graphics/pokemon/rattata/shiny.pal
index 532f2948f..532f2948f 100644
--- a/graphics/pokemon/palettes/rattata_shiny_palette.pal
+++ b/graphics/pokemon/rattata/shiny.pal
diff --git a/graphics/pokemon/back_pics/rayquaza_back_pic.png b/graphics/pokemon/rayquaza/back.png
index e8b8704a8..e8b8704a8 100644
--- a/graphics/pokemon/back_pics/rayquaza_back_pic.png
+++ b/graphics/pokemon/rayquaza/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/rayquaza_footprint.png b/graphics/pokemon/rayquaza/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/rayquaza_footprint.png
+++ b/graphics/pokemon/rayquaza/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/rayquaza_still_front_pic.png b/graphics/pokemon/rayquaza/front.png
index 21d554ce3..21d554ce3 100644
--- a/graphics/pokemon/front_pics/rayquaza_still_front_pic.png
+++ b/graphics/pokemon/rayquaza/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/rayquaza_icon.png b/graphics/pokemon/rayquaza/icon.png
index 65844ebf7..65844ebf7 100644
--- a/graphics/pokemon/icons/rayquaza_icon.png
+++ b/graphics/pokemon/rayquaza/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/rayquaza_palette.pal b/graphics/pokemon/rayquaza/normal.pal
index 651b1b9b1..651b1b9b1 100644
--- a/graphics/pokemon/palettes/rayquaza_palette.pal
+++ b/graphics/pokemon/rayquaza/normal.pal
diff --git a/graphics/pokemon/palettes/rayquaza_shiny_palette.pal b/graphics/pokemon/rayquaza/shiny.pal
index c294fa7ca..c294fa7ca 100644
--- a/graphics/pokemon/palettes/rayquaza_shiny_palette.pal
+++ b/graphics/pokemon/rayquaza/shiny.pal
diff --git a/graphics/pokemon/back_pics/regice_back_pic.png b/graphics/pokemon/regice/back.png
index 69b091437..69b091437 100644
--- a/graphics/pokemon/back_pics/regice_back_pic.png
+++ b/graphics/pokemon/regice/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/regice_footprint.png b/graphics/pokemon/regice/footprint.png
index 6965dbe60..6965dbe60 100644
--- a/graphics/pokemon/footprints/regice_footprint.png
+++ b/graphics/pokemon/regice/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/regice_still_front_pic.png b/graphics/pokemon/regice/front.png
index 022a3a855..022a3a855 100644
--- a/graphics/pokemon/front_pics/regice_still_front_pic.png
+++ b/graphics/pokemon/regice/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/regice_icon.png b/graphics/pokemon/regice/icon.png
index 46b07b3aa..46b07b3aa 100644
--- a/graphics/pokemon/icons/regice_icon.png
+++ b/graphics/pokemon/regice/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/regice_palette.pal b/graphics/pokemon/regice/normal.pal
index 2d599438d..2d599438d 100644
--- a/graphics/pokemon/palettes/regice_palette.pal
+++ b/graphics/pokemon/regice/normal.pal
diff --git a/graphics/pokemon/palettes/regice_shiny_palette.pal b/graphics/pokemon/regice/shiny.pal
index 0c3dc8a37..0c3dc8a37 100644
--- a/graphics/pokemon/palettes/regice_shiny_palette.pal
+++ b/graphics/pokemon/regice/shiny.pal
diff --git a/graphics/pokemon/back_pics/regirock_back_pic.png b/graphics/pokemon/regirock/back.png
index 7175fc90a..7175fc90a 100644
--- a/graphics/pokemon/back_pics/regirock_back_pic.png
+++ b/graphics/pokemon/regirock/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/regirock_footprint.png b/graphics/pokemon/regirock/footprint.png
index 44da2a57f..44da2a57f 100644
--- a/graphics/pokemon/footprints/regirock_footprint.png
+++ b/graphics/pokemon/regirock/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/regirock_still_front_pic.png b/graphics/pokemon/regirock/front.png
index 9e179079a..9e179079a 100644
--- a/graphics/pokemon/front_pics/regirock_still_front_pic.png
+++ b/graphics/pokemon/regirock/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/regirock_icon.png b/graphics/pokemon/regirock/icon.png
index e69836744..e69836744 100644
--- a/graphics/pokemon/icons/regirock_icon.png
+++ b/graphics/pokemon/regirock/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/regirock_palette.pal b/graphics/pokemon/regirock/normal.pal
index f577420cb..f577420cb 100644
--- a/graphics/pokemon/palettes/regirock_palette.pal
+++ b/graphics/pokemon/regirock/normal.pal
diff --git a/graphics/pokemon/palettes/regirock_shiny_palette.pal b/graphics/pokemon/regirock/shiny.pal
index b997589cc..b997589cc 100644
--- a/graphics/pokemon/palettes/regirock_shiny_palette.pal
+++ b/graphics/pokemon/regirock/shiny.pal
diff --git a/graphics/pokemon/back_pics/registeel_back_pic.png b/graphics/pokemon/registeel/back.png
index 233240d45..233240d45 100644
--- a/graphics/pokemon/back_pics/registeel_back_pic.png
+++ b/graphics/pokemon/registeel/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/registeel_footprint.png b/graphics/pokemon/registeel/footprint.png
index e191faabc..e191faabc 100644
--- a/graphics/pokemon/footprints/registeel_footprint.png
+++ b/graphics/pokemon/registeel/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/registeel_still_front_pic.png b/graphics/pokemon/registeel/front.png
index d7fe7e101..d7fe7e101 100644
--- a/graphics/pokemon/front_pics/registeel_still_front_pic.png
+++ b/graphics/pokemon/registeel/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/registeel_icon.png b/graphics/pokemon/registeel/icon.png
index 5a8cd3d19..5a8cd3d19 100644
--- a/graphics/pokemon/icons/registeel_icon.png
+++ b/graphics/pokemon/registeel/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/registeel_palette.pal b/graphics/pokemon/registeel/normal.pal
index 9d7d328f4..9d7d328f4 100644
--- a/graphics/pokemon/palettes/registeel_palette.pal
+++ b/graphics/pokemon/registeel/normal.pal
diff --git a/graphics/pokemon/palettes/registeel_shiny_palette.pal b/graphics/pokemon/registeel/shiny.pal
index e0489363a..e0489363a 100644
--- a/graphics/pokemon/palettes/registeel_shiny_palette.pal
+++ b/graphics/pokemon/registeel/shiny.pal
diff --git a/graphics/pokemon/back_pics/relicanth_back_pic.png b/graphics/pokemon/relicanth/back.png
index c9ae2e572..c9ae2e572 100644
--- a/graphics/pokemon/back_pics/relicanth_back_pic.png
+++ b/graphics/pokemon/relicanth/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/relicanth_footprint.png b/graphics/pokemon/relicanth/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/relicanth_footprint.png
+++ b/graphics/pokemon/relicanth/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/relicanth_still_front_pic.png b/graphics/pokemon/relicanth/front.png
index 41886e9e2..41886e9e2 100644
--- a/graphics/pokemon/front_pics/relicanth_still_front_pic.png
+++ b/graphics/pokemon/relicanth/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/relicanth_icon.png b/graphics/pokemon/relicanth/icon.png
index da17eec33..da17eec33 100644
--- a/graphics/pokemon/icons/relicanth_icon.png
+++ b/graphics/pokemon/relicanth/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/relicanth_palette.pal b/graphics/pokemon/relicanth/normal.pal
index 2a95fb3cb..2a95fb3cb 100644
--- a/graphics/pokemon/palettes/relicanth_palette.pal
+++ b/graphics/pokemon/relicanth/normal.pal
diff --git a/graphics/pokemon/palettes/relicanth_shiny_palette.pal b/graphics/pokemon/relicanth/shiny.pal
index 3c3780470..3c3780470 100644
--- a/graphics/pokemon/palettes/relicanth_shiny_palette.pal
+++ b/graphics/pokemon/relicanth/shiny.pal
diff --git a/graphics/pokemon/back_pics/remoraid_back_pic.png b/graphics/pokemon/remoraid/back.png
index 22e48fa6d..22e48fa6d 100644
--- a/graphics/pokemon/back_pics/remoraid_back_pic.png
+++ b/graphics/pokemon/remoraid/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/remoraid_footprint.png b/graphics/pokemon/remoraid/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/remoraid_footprint.png
+++ b/graphics/pokemon/remoraid/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/remoraid_still_front_pic.png b/graphics/pokemon/remoraid/front.png
index b80e2af89..b80e2af89 100644
--- a/graphics/pokemon/front_pics/remoraid_still_front_pic.png
+++ b/graphics/pokemon/remoraid/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/remoraid_icon.png b/graphics/pokemon/remoraid/icon.png
index efbe4ace3..efbe4ace3 100644
--- a/graphics/pokemon/icons/remoraid_icon.png
+++ b/graphics/pokemon/remoraid/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/remoraid_palette.pal b/graphics/pokemon/remoraid/normal.pal
index 4d8f3326c..4d8f3326c 100644
--- a/graphics/pokemon/palettes/remoraid_palette.pal
+++ b/graphics/pokemon/remoraid/normal.pal
diff --git a/graphics/pokemon/palettes/remoraid_shiny_palette.pal b/graphics/pokemon/remoraid/shiny.pal
index b9fd05014..b9fd05014 100644
--- a/graphics/pokemon/palettes/remoraid_shiny_palette.pal
+++ b/graphics/pokemon/remoraid/shiny.pal
diff --git a/graphics/pokemon/back_pics/rhydon_back_pic.png b/graphics/pokemon/rhydon/back.png
index 4acc986ba..4acc986ba 100644
--- a/graphics/pokemon/back_pics/rhydon_back_pic.png
+++ b/graphics/pokemon/rhydon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/rhydon_footprint.png b/graphics/pokemon/rhydon/footprint.png
index df6d8fced..df6d8fced 100644
--- a/graphics/pokemon/footprints/rhydon_footprint.png
+++ b/graphics/pokemon/rhydon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/rhydon_still_front_pic.png b/graphics/pokemon/rhydon/front.png
index 1455d7010..1455d7010 100644
--- a/graphics/pokemon/front_pics/rhydon_still_front_pic.png
+++ b/graphics/pokemon/rhydon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/rhydon_icon.png b/graphics/pokemon/rhydon/icon.png
index 3bf633680..3bf633680 100644
--- a/graphics/pokemon/icons/rhydon_icon.png
+++ b/graphics/pokemon/rhydon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/rhydon_palette.pal b/graphics/pokemon/rhydon/normal.pal
index b4cf375f4..b4cf375f4 100644
--- a/graphics/pokemon/palettes/rhydon_palette.pal
+++ b/graphics/pokemon/rhydon/normal.pal
diff --git a/graphics/pokemon/palettes/rhydon_shiny_palette.pal b/graphics/pokemon/rhydon/shiny.pal
index b7076b1ca..b7076b1ca 100644
--- a/graphics/pokemon/palettes/rhydon_shiny_palette.pal
+++ b/graphics/pokemon/rhydon/shiny.pal
diff --git a/graphics/pokemon/back_pics/rhyhorn_back_pic.png b/graphics/pokemon/rhyhorn/back.png
index 67d006205..67d006205 100644
--- a/graphics/pokemon/back_pics/rhyhorn_back_pic.png
+++ b/graphics/pokemon/rhyhorn/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/rhyhorn_footprint.png b/graphics/pokemon/rhyhorn/footprint.png
index 632b753c2..632b753c2 100644
--- a/graphics/pokemon/footprints/rhyhorn_footprint.png
+++ b/graphics/pokemon/rhyhorn/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/rhyhorn_still_front_pic.png b/graphics/pokemon/rhyhorn/front.png
index 357977812..357977812 100644
--- a/graphics/pokemon/front_pics/rhyhorn_still_front_pic.png
+++ b/graphics/pokemon/rhyhorn/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/rhyhorn_icon.png b/graphics/pokemon/rhyhorn/icon.png
index 03bb348e7..03bb348e7 100644
--- a/graphics/pokemon/icons/rhyhorn_icon.png
+++ b/graphics/pokemon/rhyhorn/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/rhyhorn_palette.pal b/graphics/pokemon/rhyhorn/normal.pal
index bf720235e..bf720235e 100644
--- a/graphics/pokemon/palettes/rhyhorn_palette.pal
+++ b/graphics/pokemon/rhyhorn/normal.pal
diff --git a/graphics/pokemon/palettes/rhyhorn_shiny_palette.pal b/graphics/pokemon/rhyhorn/shiny.pal
index 64280c939..64280c939 100644
--- a/graphics/pokemon/palettes/rhyhorn_shiny_palette.pal
+++ b/graphics/pokemon/rhyhorn/shiny.pal
diff --git a/graphics/pokemon/back_pics/roselia_back_pic.png b/graphics/pokemon/roselia/back.png
index 5275c801d..5275c801d 100644
--- a/graphics/pokemon/back_pics/roselia_back_pic.png
+++ b/graphics/pokemon/roselia/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/roselia_footprint.png b/graphics/pokemon/roselia/footprint.png
index bedf2ab69..bedf2ab69 100644
--- a/graphics/pokemon/footprints/roselia_footprint.png
+++ b/graphics/pokemon/roselia/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/roselia_still_front_pic.png b/graphics/pokemon/roselia/front.png
index d018ba658..d018ba658 100644
--- a/graphics/pokemon/front_pics/roselia_still_front_pic.png
+++ b/graphics/pokemon/roselia/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/roselia_icon.png b/graphics/pokemon/roselia/icon.png
index fc63c9644..fc63c9644 100644
--- a/graphics/pokemon/icons/roselia_icon.png
+++ b/graphics/pokemon/roselia/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/roselia_palette.pal b/graphics/pokemon/roselia/normal.pal
index a96e5081c..a96e5081c 100644
--- a/graphics/pokemon/palettes/roselia_palette.pal
+++ b/graphics/pokemon/roselia/normal.pal
diff --git a/graphics/pokemon/palettes/roselia_shiny_palette.pal b/graphics/pokemon/roselia/shiny.pal
index eebb104af..eebb104af 100644
--- a/graphics/pokemon/palettes/roselia_shiny_palette.pal
+++ b/graphics/pokemon/roselia/shiny.pal
diff --git a/graphics/pokemon/back_pics/sableye_back_pic.png b/graphics/pokemon/sableye/back.png
index 75c12743c..75c12743c 100644
--- a/graphics/pokemon/back_pics/sableye_back_pic.png
+++ b/graphics/pokemon/sableye/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/sableye_footprint.png b/graphics/pokemon/sableye/footprint.png
index 204d8da54..204d8da54 100644
--- a/graphics/pokemon/footprints/sableye_footprint.png
+++ b/graphics/pokemon/sableye/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/sableye_still_front_pic.png b/graphics/pokemon/sableye/front.png
index 5004a61ec..5004a61ec 100644
--- a/graphics/pokemon/front_pics/sableye_still_front_pic.png
+++ b/graphics/pokemon/sableye/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/sableye_icon.png b/graphics/pokemon/sableye/icon.png
index e8ac1307e..e8ac1307e 100644
--- a/graphics/pokemon/icons/sableye_icon.png
+++ b/graphics/pokemon/sableye/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/sableye_palette.pal b/graphics/pokemon/sableye/normal.pal
index 89a2bed0a..89a2bed0a 100644
--- a/graphics/pokemon/palettes/sableye_palette.pal
+++ b/graphics/pokemon/sableye/normal.pal
diff --git a/graphics/pokemon/palettes/sableye_shiny_palette.pal b/graphics/pokemon/sableye/shiny.pal
index 8b03a2efe..8b03a2efe 100644
--- a/graphics/pokemon/palettes/sableye_shiny_palette.pal
+++ b/graphics/pokemon/sableye/shiny.pal
diff --git a/graphics/pokemon/back_pics/salamence_back_pic.png b/graphics/pokemon/salamence/back.png
index 748147e77..748147e77 100644
--- a/graphics/pokemon/back_pics/salamence_back_pic.png
+++ b/graphics/pokemon/salamence/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/salamence_footprint.png b/graphics/pokemon/salamence/footprint.png
index 2440a370f..2440a370f 100644
--- a/graphics/pokemon/footprints/salamence_footprint.png
+++ b/graphics/pokemon/salamence/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/salamence_still_front_pic.png b/graphics/pokemon/salamence/front.png
index 97db0937c..97db0937c 100644
--- a/graphics/pokemon/front_pics/salamence_still_front_pic.png
+++ b/graphics/pokemon/salamence/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/salamence_icon.png b/graphics/pokemon/salamence/icon.png
index b4c925502..b4c925502 100644
--- a/graphics/pokemon/icons/salamence_icon.png
+++ b/graphics/pokemon/salamence/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/salamence_palette.pal b/graphics/pokemon/salamence/normal.pal
index 8ee78691f..8ee78691f 100644
--- a/graphics/pokemon/palettes/salamence_palette.pal
+++ b/graphics/pokemon/salamence/normal.pal
diff --git a/graphics/pokemon/palettes/salamence_shiny_palette.pal b/graphics/pokemon/salamence/shiny.pal
index bf2da08f2..bf2da08f2 100644
--- a/graphics/pokemon/palettes/salamence_shiny_palette.pal
+++ b/graphics/pokemon/salamence/shiny.pal
diff --git a/graphics/pokemon/back_pics/sandshrew_back_pic.png b/graphics/pokemon/sandshrew/back.png
index 86fa10ec8..86fa10ec8 100644
--- a/graphics/pokemon/back_pics/sandshrew_back_pic.png
+++ b/graphics/pokemon/sandshrew/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/sandshrew_footprint.png b/graphics/pokemon/sandshrew/footprint.png
index 481de0993..481de0993 100644
--- a/graphics/pokemon/footprints/sandshrew_footprint.png
+++ b/graphics/pokemon/sandshrew/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/sandshrew_still_front_pic.png b/graphics/pokemon/sandshrew/front.png
index 12c9cad5a..12c9cad5a 100644
--- a/graphics/pokemon/front_pics/sandshrew_still_front_pic.png
+++ b/graphics/pokemon/sandshrew/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/sandshrew_icon.png b/graphics/pokemon/sandshrew/icon.png
index 5919f1095..5919f1095 100644
--- a/graphics/pokemon/icons/sandshrew_icon.png
+++ b/graphics/pokemon/sandshrew/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/sandshrew_palette.pal b/graphics/pokemon/sandshrew/normal.pal
index 952ff6231..952ff6231 100644
--- a/graphics/pokemon/palettes/sandshrew_palette.pal
+++ b/graphics/pokemon/sandshrew/normal.pal
diff --git a/graphics/pokemon/palettes/sandshrew_shiny_palette.pal b/graphics/pokemon/sandshrew/shiny.pal
index 4f4ac7be6..4f4ac7be6 100644
--- a/graphics/pokemon/palettes/sandshrew_shiny_palette.pal
+++ b/graphics/pokemon/sandshrew/shiny.pal
diff --git a/graphics/pokemon/back_pics/sandslash_back_pic.png b/graphics/pokemon/sandslash/back.png
index 64c305047..64c305047 100644
--- a/graphics/pokemon/back_pics/sandslash_back_pic.png
+++ b/graphics/pokemon/sandslash/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/sandslash_footprint.png b/graphics/pokemon/sandslash/footprint.png
index 431ca99be..431ca99be 100644
--- a/graphics/pokemon/footprints/sandslash_footprint.png
+++ b/graphics/pokemon/sandslash/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/sandslash_still_front_pic.png b/graphics/pokemon/sandslash/front.png
index 86115f777..86115f777 100644
--- a/graphics/pokemon/front_pics/sandslash_still_front_pic.png
+++ b/graphics/pokemon/sandslash/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/sandslash_icon.png b/graphics/pokemon/sandslash/icon.png
index 08198e6b2..08198e6b2 100644
--- a/graphics/pokemon/icons/sandslash_icon.png
+++ b/graphics/pokemon/sandslash/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/sandslash_palette.pal b/graphics/pokemon/sandslash/normal.pal
index 384676a30..384676a30 100644
--- a/graphics/pokemon/palettes/sandslash_palette.pal
+++ b/graphics/pokemon/sandslash/normal.pal
diff --git a/graphics/pokemon/palettes/sandslash_shiny_palette.pal b/graphics/pokemon/sandslash/shiny.pal
index 092846e12..092846e12 100644
--- a/graphics/pokemon/palettes/sandslash_shiny_palette.pal
+++ b/graphics/pokemon/sandslash/shiny.pal
diff --git a/graphics/pokemon/back_pics/sceptile_back_pic.png b/graphics/pokemon/sceptile/back.png
index 5b7e8696e..5b7e8696e 100644
--- a/graphics/pokemon/back_pics/sceptile_back_pic.png
+++ b/graphics/pokemon/sceptile/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/sceptile_footprint.png b/graphics/pokemon/sceptile/footprint.png
index 1958a4778..1958a4778 100644
--- a/graphics/pokemon/footprints/sceptile_footprint.png
+++ b/graphics/pokemon/sceptile/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/sceptile_still_front_pic.png b/graphics/pokemon/sceptile/front.png
index f6ce3a054..f6ce3a054 100644
--- a/graphics/pokemon/front_pics/sceptile_still_front_pic.png
+++ b/graphics/pokemon/sceptile/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/sceptile_icon.png b/graphics/pokemon/sceptile/icon.png
index d144941e0..d144941e0 100644
--- a/graphics/pokemon/icons/sceptile_icon.png
+++ b/graphics/pokemon/sceptile/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/sceptile_palette.pal b/graphics/pokemon/sceptile/normal.pal
index 31f822b0c..31f822b0c 100644
--- a/graphics/pokemon/palettes/sceptile_palette.pal
+++ b/graphics/pokemon/sceptile/normal.pal
diff --git a/graphics/pokemon/palettes/sceptile_shiny_palette.pal b/graphics/pokemon/sceptile/shiny.pal
index 9a6882bf4..9a6882bf4 100644
--- a/graphics/pokemon/palettes/sceptile_shiny_palette.pal
+++ b/graphics/pokemon/sceptile/shiny.pal
diff --git a/graphics/pokemon/back_pics/scizor_back_pic.png b/graphics/pokemon/scizor/back.png
index b31f50da1..b31f50da1 100644
--- a/graphics/pokemon/back_pics/scizor_back_pic.png
+++ b/graphics/pokemon/scizor/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/scizor_footprint.png b/graphics/pokemon/scizor/footprint.png
index 00824374a..00824374a 100644
--- a/graphics/pokemon/footprints/scizor_footprint.png
+++ b/graphics/pokemon/scizor/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/scizor_still_front_pic.png b/graphics/pokemon/scizor/front.png
index 33bdef332..33bdef332 100644
--- a/graphics/pokemon/front_pics/scizor_still_front_pic.png
+++ b/graphics/pokemon/scizor/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/scizor_icon.png b/graphics/pokemon/scizor/icon.png
index 0a8667832..0a8667832 100644
--- a/graphics/pokemon/icons/scizor_icon.png
+++ b/graphics/pokemon/scizor/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/scizor_palette.pal b/graphics/pokemon/scizor/normal.pal
index a9310feae..a9310feae 100644
--- a/graphics/pokemon/palettes/scizor_palette.pal
+++ b/graphics/pokemon/scizor/normal.pal
diff --git a/graphics/pokemon/palettes/scizor_shiny_palette.pal b/graphics/pokemon/scizor/shiny.pal
index 93e8e479b..93e8e479b 100644
--- a/graphics/pokemon/palettes/scizor_shiny_palette.pal
+++ b/graphics/pokemon/scizor/shiny.pal
diff --git a/graphics/pokemon/back_pics/scyther_back_pic.png b/graphics/pokemon/scyther/back.png
index bf598ee88..bf598ee88 100644
--- a/graphics/pokemon/back_pics/scyther_back_pic.png
+++ b/graphics/pokemon/scyther/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/scyther_footprint.png b/graphics/pokemon/scyther/footprint.png
index c6b773028..c6b773028 100644
--- a/graphics/pokemon/footprints/scyther_footprint.png
+++ b/graphics/pokemon/scyther/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/scyther_still_front_pic.png b/graphics/pokemon/scyther/front.png
index 55c7a3de9..55c7a3de9 100644
--- a/graphics/pokemon/front_pics/scyther_still_front_pic.png
+++ b/graphics/pokemon/scyther/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/scyther_icon.png b/graphics/pokemon/scyther/icon.png
index 62f94bba6..62f94bba6 100644
--- a/graphics/pokemon/icons/scyther_icon.png
+++ b/graphics/pokemon/scyther/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/scyther_palette.pal b/graphics/pokemon/scyther/normal.pal
index 1367f8a23..1367f8a23 100644
--- a/graphics/pokemon/palettes/scyther_palette.pal
+++ b/graphics/pokemon/scyther/normal.pal
diff --git a/graphics/pokemon/palettes/scyther_shiny_palette.pal b/graphics/pokemon/scyther/shiny.pal
index fd0a63924..fd0a63924 100644
--- a/graphics/pokemon/palettes/scyther_shiny_palette.pal
+++ b/graphics/pokemon/scyther/shiny.pal
diff --git a/graphics/pokemon/back_pics/seadra_back_pic.png b/graphics/pokemon/seadra/back.png
index 526d7495c..526d7495c 100644
--- a/graphics/pokemon/back_pics/seadra_back_pic.png
+++ b/graphics/pokemon/seadra/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/seadra_footprint.png b/graphics/pokemon/seadra/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/seadra_footprint.png
+++ b/graphics/pokemon/seadra/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/seadra_still_front_pic.png b/graphics/pokemon/seadra/front.png
index 8f03a6736..8f03a6736 100644
--- a/graphics/pokemon/front_pics/seadra_still_front_pic.png
+++ b/graphics/pokemon/seadra/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/seadra_icon.png b/graphics/pokemon/seadra/icon.png
index f85ea2f32..f85ea2f32 100644
--- a/graphics/pokemon/icons/seadra_icon.png
+++ b/graphics/pokemon/seadra/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/seadra_palette.pal b/graphics/pokemon/seadra/normal.pal
index 3e4751707..3e4751707 100644
--- a/graphics/pokemon/palettes/seadra_palette.pal
+++ b/graphics/pokemon/seadra/normal.pal
diff --git a/graphics/pokemon/palettes/seadra_shiny_palette.pal b/graphics/pokemon/seadra/shiny.pal
index ae99ccc22..ae99ccc22 100644
--- a/graphics/pokemon/palettes/seadra_shiny_palette.pal
+++ b/graphics/pokemon/seadra/shiny.pal
diff --git a/graphics/pokemon/back_pics/seaking_back_pic.png b/graphics/pokemon/seaking/back.png
index eb3fbd661..eb3fbd661 100644
--- a/graphics/pokemon/back_pics/seaking_back_pic.png
+++ b/graphics/pokemon/seaking/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/seaking_footprint.png b/graphics/pokemon/seaking/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/seaking_footprint.png
+++ b/graphics/pokemon/seaking/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/seaking_still_front_pic.png b/graphics/pokemon/seaking/front.png
index 155dc6172..155dc6172 100644
--- a/graphics/pokemon/front_pics/seaking_still_front_pic.png
+++ b/graphics/pokemon/seaking/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/seaking_icon.png b/graphics/pokemon/seaking/icon.png
index 7c3bcaec1..7c3bcaec1 100644
--- a/graphics/pokemon/icons/seaking_icon.png
+++ b/graphics/pokemon/seaking/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/seaking_palette.pal b/graphics/pokemon/seaking/normal.pal
index 1ffe314f4..1ffe314f4 100644
--- a/graphics/pokemon/palettes/seaking_palette.pal
+++ b/graphics/pokemon/seaking/normal.pal
diff --git a/graphics/pokemon/palettes/seaking_shiny_palette.pal b/graphics/pokemon/seaking/shiny.pal
index 2a4acb23d..2a4acb23d 100644
--- a/graphics/pokemon/palettes/seaking_shiny_palette.pal
+++ b/graphics/pokemon/seaking/shiny.pal
diff --git a/graphics/pokemon/back_pics/sealeo_back_pic.png b/graphics/pokemon/sealeo/back.png
index 302ffb7f2..302ffb7f2 100644
--- a/graphics/pokemon/back_pics/sealeo_back_pic.png
+++ b/graphics/pokemon/sealeo/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/sealeo_footprint.png b/graphics/pokemon/sealeo/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/sealeo_footprint.png
+++ b/graphics/pokemon/sealeo/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/sealeo_still_front_pic.png b/graphics/pokemon/sealeo/front.png
index 920a190d0..920a190d0 100644
--- a/graphics/pokemon/front_pics/sealeo_still_front_pic.png
+++ b/graphics/pokemon/sealeo/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/sealeo_icon.png b/graphics/pokemon/sealeo/icon.png
index 2d21e8837..2d21e8837 100644
--- a/graphics/pokemon/icons/sealeo_icon.png
+++ b/graphics/pokemon/sealeo/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/sealeo_palette.pal b/graphics/pokemon/sealeo/normal.pal
index 6644440c0..6644440c0 100644
--- a/graphics/pokemon/palettes/sealeo_palette.pal
+++ b/graphics/pokemon/sealeo/normal.pal
diff --git a/graphics/pokemon/palettes/sealeo_shiny_palette.pal b/graphics/pokemon/sealeo/shiny.pal
index df4474877..df4474877 100644
--- a/graphics/pokemon/palettes/sealeo_shiny_palette.pal
+++ b/graphics/pokemon/sealeo/shiny.pal
diff --git a/graphics/pokemon/back_pics/seedot_back_pic.png b/graphics/pokemon/seedot/back.png
index ee4017cf5..ee4017cf5 100644
--- a/graphics/pokemon/back_pics/seedot_back_pic.png
+++ b/graphics/pokemon/seedot/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/seedot_footprint.png b/graphics/pokemon/seedot/footprint.png
index 9b41f13ed..9b41f13ed 100644
--- a/graphics/pokemon/footprints/seedot_footprint.png
+++ b/graphics/pokemon/seedot/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/seedot_still_front_pic.png b/graphics/pokemon/seedot/front.png
index 6be5868e6..6be5868e6 100644
--- a/graphics/pokemon/front_pics/seedot_still_front_pic.png
+++ b/graphics/pokemon/seedot/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/seedot_icon.png b/graphics/pokemon/seedot/icon.png
index 500a49d47..500a49d47 100644
--- a/graphics/pokemon/icons/seedot_icon.png
+++ b/graphics/pokemon/seedot/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/seedot_palette.pal b/graphics/pokemon/seedot/normal.pal
index 0fc33bf9b..0fc33bf9b 100644
--- a/graphics/pokemon/palettes/seedot_palette.pal
+++ b/graphics/pokemon/seedot/normal.pal
diff --git a/graphics/pokemon/palettes/seedot_shiny_palette.pal b/graphics/pokemon/seedot/shiny.pal
index 0cd33d0c1..0cd33d0c1 100644
--- a/graphics/pokemon/palettes/seedot_shiny_palette.pal
+++ b/graphics/pokemon/seedot/shiny.pal
diff --git a/graphics/pokemon/back_pics/seel_back_pic.png b/graphics/pokemon/seel/back.png
index 5268657f5..5268657f5 100644
--- a/graphics/pokemon/back_pics/seel_back_pic.png
+++ b/graphics/pokemon/seel/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/seel_footprint.png b/graphics/pokemon/seel/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/seel_footprint.png
+++ b/graphics/pokemon/seel/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/seel_still_front_pic.png b/graphics/pokemon/seel/front.png
index e6bbb2580..e6bbb2580 100644
--- a/graphics/pokemon/front_pics/seel_still_front_pic.png
+++ b/graphics/pokemon/seel/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/seel_icon.png b/graphics/pokemon/seel/icon.png
index 9000021e9..9000021e9 100644
--- a/graphics/pokemon/icons/seel_icon.png
+++ b/graphics/pokemon/seel/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/seel_palette.pal b/graphics/pokemon/seel/normal.pal
index 2a1a75900..2a1a75900 100644
--- a/graphics/pokemon/palettes/seel_palette.pal
+++ b/graphics/pokemon/seel/normal.pal
diff --git a/graphics/pokemon/palettes/seel_shiny_palette.pal b/graphics/pokemon/seel/shiny.pal
index 952eec318..952eec318 100644
--- a/graphics/pokemon/palettes/seel_shiny_palette.pal
+++ b/graphics/pokemon/seel/shiny.pal
diff --git a/graphics/pokemon/back_pics/sentret_back_pic.png b/graphics/pokemon/sentret/back.png
index 97ef90a8d..97ef90a8d 100644
--- a/graphics/pokemon/back_pics/sentret_back_pic.png
+++ b/graphics/pokemon/sentret/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/sentret_footprint.png b/graphics/pokemon/sentret/footprint.png
index 49ab94c0b..49ab94c0b 100644
--- a/graphics/pokemon/footprints/sentret_footprint.png
+++ b/graphics/pokemon/sentret/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/sentret_still_front_pic.png b/graphics/pokemon/sentret/front.png
index eb3032ade..eb3032ade 100644
--- a/graphics/pokemon/front_pics/sentret_still_front_pic.png
+++ b/graphics/pokemon/sentret/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/sentret_icon.png b/graphics/pokemon/sentret/icon.png
index 560b38d44..560b38d44 100644
--- a/graphics/pokemon/icons/sentret_icon.png
+++ b/graphics/pokemon/sentret/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/sentret_palette.pal b/graphics/pokemon/sentret/normal.pal
index 5591d8f1b..5591d8f1b 100644
--- a/graphics/pokemon/palettes/sentret_palette.pal
+++ b/graphics/pokemon/sentret/normal.pal
diff --git a/graphics/pokemon/palettes/sentret_shiny_palette.pal b/graphics/pokemon/sentret/shiny.pal
index 05c9da6f7..05c9da6f7 100644
--- a/graphics/pokemon/palettes/sentret_shiny_palette.pal
+++ b/graphics/pokemon/sentret/shiny.pal
diff --git a/graphics/pokemon/back_pics/seviper_back_pic.png b/graphics/pokemon/seviper/back.png
index b9849a6fa..b9849a6fa 100644
--- a/graphics/pokemon/back_pics/seviper_back_pic.png
+++ b/graphics/pokemon/seviper/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/seviper_footprint.png b/graphics/pokemon/seviper/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/seviper_footprint.png
+++ b/graphics/pokemon/seviper/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/seviper_still_front_pic.png b/graphics/pokemon/seviper/front.png
index 41635e5fb..41635e5fb 100644
--- a/graphics/pokemon/front_pics/seviper_still_front_pic.png
+++ b/graphics/pokemon/seviper/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/seviper_icon.png b/graphics/pokemon/seviper/icon.png
index ce751ce33..ce751ce33 100644
--- a/graphics/pokemon/icons/seviper_icon.png
+++ b/graphics/pokemon/seviper/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/seviper_palette.pal b/graphics/pokemon/seviper/normal.pal
index bdcc5e761..bdcc5e761 100644
--- a/graphics/pokemon/palettes/seviper_palette.pal
+++ b/graphics/pokemon/seviper/normal.pal
diff --git a/graphics/pokemon/palettes/seviper_shiny_palette.pal b/graphics/pokemon/seviper/shiny.pal
index 7296a030a..7296a030a 100644
--- a/graphics/pokemon/palettes/seviper_shiny_palette.pal
+++ b/graphics/pokemon/seviper/shiny.pal
diff --git a/graphics/pokemon/back_pics/sharpedo_back_pic.png b/graphics/pokemon/sharpedo/back.png
index 4e011968b..4e011968b 100644
--- a/graphics/pokemon/back_pics/sharpedo_back_pic.png
+++ b/graphics/pokemon/sharpedo/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/sharpedo_footprint.png b/graphics/pokemon/sharpedo/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/sharpedo_footprint.png
+++ b/graphics/pokemon/sharpedo/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/sharpedo_still_front_pic.png b/graphics/pokemon/sharpedo/front.png
index 65d1182c0..65d1182c0 100644
--- a/graphics/pokemon/front_pics/sharpedo_still_front_pic.png
+++ b/graphics/pokemon/sharpedo/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/sharpedo_icon.png b/graphics/pokemon/sharpedo/icon.png
index d8dbc26b2..d8dbc26b2 100644
--- a/graphics/pokemon/icons/sharpedo_icon.png
+++ b/graphics/pokemon/sharpedo/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/sharpedo_palette.pal b/graphics/pokemon/sharpedo/normal.pal
index 3db40a601..3db40a601 100644
--- a/graphics/pokemon/palettes/sharpedo_palette.pal
+++ b/graphics/pokemon/sharpedo/normal.pal
diff --git a/graphics/pokemon/palettes/sharpedo_shiny_palette.pal b/graphics/pokemon/sharpedo/shiny.pal
index 11b98e3bd..11b98e3bd 100644
--- a/graphics/pokemon/palettes/sharpedo_shiny_palette.pal
+++ b/graphics/pokemon/sharpedo/shiny.pal
diff --git a/graphics/pokemon/back_pics/shedinja_back_pic.png b/graphics/pokemon/shedinja/back.png
index bb3a5be7d..bb3a5be7d 100644
--- a/graphics/pokemon/back_pics/shedinja_back_pic.png
+++ b/graphics/pokemon/shedinja/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/shedinja_footprint.png b/graphics/pokemon/shedinja/footprint.png
index d4118d5e6..d4118d5e6 100644
--- a/graphics/pokemon/footprints/shedinja_footprint.png
+++ b/graphics/pokemon/shedinja/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/shedinja_still_front_pic.png b/graphics/pokemon/shedinja/front.png
index 06c47ea9c..06c47ea9c 100644
--- a/graphics/pokemon/front_pics/shedinja_still_front_pic.png
+++ b/graphics/pokemon/shedinja/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/shedinja_icon.png b/graphics/pokemon/shedinja/icon.png
index 9f400e338..9f400e338 100644
--- a/graphics/pokemon/icons/shedinja_icon.png
+++ b/graphics/pokemon/shedinja/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/shedinja_palette.pal b/graphics/pokemon/shedinja/normal.pal
index 1e1eefe6b..1e1eefe6b 100644
--- a/graphics/pokemon/palettes/shedinja_palette.pal
+++ b/graphics/pokemon/shedinja/normal.pal
diff --git a/graphics/pokemon/palettes/shedinja_shiny_palette.pal b/graphics/pokemon/shedinja/shiny.pal
index 7e7ae66bd..7e7ae66bd 100644
--- a/graphics/pokemon/palettes/shedinja_shiny_palette.pal
+++ b/graphics/pokemon/shedinja/shiny.pal
diff --git a/graphics/pokemon/back_pics/shelgon_back_pic.png b/graphics/pokemon/shelgon/back.png
index 9c87ad57c..9c87ad57c 100644
--- a/graphics/pokemon/back_pics/shelgon_back_pic.png
+++ b/graphics/pokemon/shelgon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/shelgon_footprint.png b/graphics/pokemon/shelgon/footprint.png
index e2d61b9bc..e2d61b9bc 100644
--- a/graphics/pokemon/footprints/shelgon_footprint.png
+++ b/graphics/pokemon/shelgon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/shelgon_still_front_pic.png b/graphics/pokemon/shelgon/front.png
index c9474977e..c9474977e 100644
--- a/graphics/pokemon/front_pics/shelgon_still_front_pic.png
+++ b/graphics/pokemon/shelgon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/shelgon_icon.png b/graphics/pokemon/shelgon/icon.png
index 76e0c6a1f..76e0c6a1f 100644
--- a/graphics/pokemon/icons/shelgon_icon.png
+++ b/graphics/pokemon/shelgon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/shelgon_palette.pal b/graphics/pokemon/shelgon/normal.pal
index a5abe063e..a5abe063e 100644
--- a/graphics/pokemon/palettes/shelgon_palette.pal
+++ b/graphics/pokemon/shelgon/normal.pal
diff --git a/graphics/pokemon/palettes/shelgon_shiny_palette.pal b/graphics/pokemon/shelgon/shiny.pal
index 3d1e1a361..3d1e1a361 100644
--- a/graphics/pokemon/palettes/shelgon_shiny_palette.pal
+++ b/graphics/pokemon/shelgon/shiny.pal
diff --git a/graphics/pokemon/back_pics/shellder_back_pic.png b/graphics/pokemon/shellder/back.png
index ee5374333..ee5374333 100644
--- a/graphics/pokemon/back_pics/shellder_back_pic.png
+++ b/graphics/pokemon/shellder/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/shellder_footprint.png b/graphics/pokemon/shellder/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/shellder_footprint.png
+++ b/graphics/pokemon/shellder/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/shellder_still_front_pic.png b/graphics/pokemon/shellder/front.png
index 0cb47ebf8..0cb47ebf8 100644
--- a/graphics/pokemon/front_pics/shellder_still_front_pic.png
+++ b/graphics/pokemon/shellder/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/shellder_icon.png b/graphics/pokemon/shellder/icon.png
index 36ad59dfa..36ad59dfa 100644
--- a/graphics/pokemon/icons/shellder_icon.png
+++ b/graphics/pokemon/shellder/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/shellder_palette.pal b/graphics/pokemon/shellder/normal.pal
index 681ebf8d1..681ebf8d1 100644
--- a/graphics/pokemon/palettes/shellder_palette.pal
+++ b/graphics/pokemon/shellder/normal.pal
diff --git a/graphics/pokemon/palettes/shellder_shiny_palette.pal b/graphics/pokemon/shellder/shiny.pal
index e01229644..e01229644 100644
--- a/graphics/pokemon/palettes/shellder_shiny_palette.pal
+++ b/graphics/pokemon/shellder/shiny.pal
diff --git a/graphics/pokemon/back_pics/shiftry_back_pic.png b/graphics/pokemon/shiftry/back.png
index 17ddb24ca..17ddb24ca 100644
--- a/graphics/pokemon/back_pics/shiftry_back_pic.png
+++ b/graphics/pokemon/shiftry/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/shiftry_footprint.png b/graphics/pokemon/shiftry/footprint.png
index 3ea82a3da..3ea82a3da 100644
--- a/graphics/pokemon/footprints/shiftry_footprint.png
+++ b/graphics/pokemon/shiftry/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/shiftry_still_front_pic.png b/graphics/pokemon/shiftry/front.png
index 580c248b7..580c248b7 100644
--- a/graphics/pokemon/front_pics/shiftry_still_front_pic.png
+++ b/graphics/pokemon/shiftry/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/shiftry_icon.png b/graphics/pokemon/shiftry/icon.png
index c10fa772d..c10fa772d 100644
--- a/graphics/pokemon/icons/shiftry_icon.png
+++ b/graphics/pokemon/shiftry/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/shiftry_palette.pal b/graphics/pokemon/shiftry/normal.pal
index 3a91e677c..3a91e677c 100644
--- a/graphics/pokemon/palettes/shiftry_palette.pal
+++ b/graphics/pokemon/shiftry/normal.pal
diff --git a/graphics/pokemon/palettes/shiftry_shiny_palette.pal b/graphics/pokemon/shiftry/shiny.pal
index 35aca99d4..35aca99d4 100644
--- a/graphics/pokemon/palettes/shiftry_shiny_palette.pal
+++ b/graphics/pokemon/shiftry/shiny.pal
diff --git a/graphics/pokemon/back_pics/shroomish_back_pic.png b/graphics/pokemon/shroomish/back.png
index 4812bcbcd..4812bcbcd 100644
--- a/graphics/pokemon/back_pics/shroomish_back_pic.png
+++ b/graphics/pokemon/shroomish/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/shroomish_footprint.png b/graphics/pokemon/shroomish/footprint.png
index d3a5986ce..d3a5986ce 100644
--- a/graphics/pokemon/footprints/shroomish_footprint.png
+++ b/graphics/pokemon/shroomish/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/shroomish_still_front_pic.png b/graphics/pokemon/shroomish/front.png
index 0ebe8ca06..0ebe8ca06 100644
--- a/graphics/pokemon/front_pics/shroomish_still_front_pic.png
+++ b/graphics/pokemon/shroomish/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/shroomish_icon.png b/graphics/pokemon/shroomish/icon.png
index 87dd12060..87dd12060 100644
--- a/graphics/pokemon/icons/shroomish_icon.png
+++ b/graphics/pokemon/shroomish/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/shroomish_palette.pal b/graphics/pokemon/shroomish/normal.pal
index 97f25bdf6..97f25bdf6 100644
--- a/graphics/pokemon/palettes/shroomish_palette.pal
+++ b/graphics/pokemon/shroomish/normal.pal
diff --git a/graphics/pokemon/palettes/shroomish_shiny_palette.pal b/graphics/pokemon/shroomish/shiny.pal
index a0bd12821..a0bd12821 100644
--- a/graphics/pokemon/palettes/shroomish_shiny_palette.pal
+++ b/graphics/pokemon/shroomish/shiny.pal
diff --git a/graphics/pokemon/back_pics/shuckle_back_pic.png b/graphics/pokemon/shuckle/back.png
index 1b19db0e5..1b19db0e5 100644
--- a/graphics/pokemon/back_pics/shuckle_back_pic.png
+++ b/graphics/pokemon/shuckle/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/shuckle_footprint.png b/graphics/pokemon/shuckle/footprint.png
index e26b60bcd..e26b60bcd 100644
--- a/graphics/pokemon/footprints/shuckle_footprint.png
+++ b/graphics/pokemon/shuckle/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/shuckle_still_front_pic.png b/graphics/pokemon/shuckle/front.png
index 1747fe5e7..1747fe5e7 100644
--- a/graphics/pokemon/front_pics/shuckle_still_front_pic.png
+++ b/graphics/pokemon/shuckle/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/shuckle_icon.png b/graphics/pokemon/shuckle/icon.png
index aaf49345a..aaf49345a 100644
--- a/graphics/pokemon/icons/shuckle_icon.png
+++ b/graphics/pokemon/shuckle/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/shuckle_palette.pal b/graphics/pokemon/shuckle/normal.pal
index ea40c0be4..ea40c0be4 100644
--- a/graphics/pokemon/palettes/shuckle_palette.pal
+++ b/graphics/pokemon/shuckle/normal.pal
diff --git a/graphics/pokemon/palettes/shuckle_shiny_palette.pal b/graphics/pokemon/shuckle/shiny.pal
index 30126f57c..30126f57c 100644
--- a/graphics/pokemon/palettes/shuckle_shiny_palette.pal
+++ b/graphics/pokemon/shuckle/shiny.pal
diff --git a/graphics/pokemon/back_pics/shuppet_back_pic.png b/graphics/pokemon/shuppet/back.png
index 2c6dbdb18..2c6dbdb18 100644
--- a/graphics/pokemon/back_pics/shuppet_back_pic.png
+++ b/graphics/pokemon/shuppet/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/shuppet_footprint.png b/graphics/pokemon/shuppet/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/shuppet_footprint.png
+++ b/graphics/pokemon/shuppet/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/shuppet_still_front_pic.png b/graphics/pokemon/shuppet/front.png
index 9b63e2640..9b63e2640 100644
--- a/graphics/pokemon/front_pics/shuppet_still_front_pic.png
+++ b/graphics/pokemon/shuppet/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/shuppet_icon.png b/graphics/pokemon/shuppet/icon.png
index 6e7087efd..6e7087efd 100644
--- a/graphics/pokemon/icons/shuppet_icon.png
+++ b/graphics/pokemon/shuppet/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/shuppet_palette.pal b/graphics/pokemon/shuppet/normal.pal
index 7dafb6a01..7dafb6a01 100644
--- a/graphics/pokemon/palettes/shuppet_palette.pal
+++ b/graphics/pokemon/shuppet/normal.pal
diff --git a/graphics/pokemon/palettes/shuppet_shiny_palette.pal b/graphics/pokemon/shuppet/shiny.pal
index 9d5557a71..9d5557a71 100644
--- a/graphics/pokemon/palettes/shuppet_shiny_palette.pal
+++ b/graphics/pokemon/shuppet/shiny.pal
diff --git a/graphics/pokemon/back_pics/silcoon_back_pic.png b/graphics/pokemon/silcoon/back.png
index 26c8cfdaf..26c8cfdaf 100644
--- a/graphics/pokemon/back_pics/silcoon_back_pic.png
+++ b/graphics/pokemon/silcoon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/silcoon_footprint.png b/graphics/pokemon/silcoon/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/silcoon_footprint.png
+++ b/graphics/pokemon/silcoon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/silcoon_still_front_pic.png b/graphics/pokemon/silcoon/front.png
index f416f074d..f416f074d 100644
--- a/graphics/pokemon/front_pics/silcoon_still_front_pic.png
+++ b/graphics/pokemon/silcoon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/silcoon_icon.png b/graphics/pokemon/silcoon/icon.png
index 0b572a20c..0b572a20c 100644
--- a/graphics/pokemon/icons/silcoon_icon.png
+++ b/graphics/pokemon/silcoon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/silcoon_palette.pal b/graphics/pokemon/silcoon/normal.pal
index 2a48849f8..2a48849f8 100644
--- a/graphics/pokemon/palettes/silcoon_palette.pal
+++ b/graphics/pokemon/silcoon/normal.pal
diff --git a/graphics/pokemon/palettes/silcoon_shiny_palette.pal b/graphics/pokemon/silcoon/shiny.pal
index db9e98b7a..db9e98b7a 100644
--- a/graphics/pokemon/palettes/silcoon_shiny_palette.pal
+++ b/graphics/pokemon/silcoon/shiny.pal
diff --git a/graphics/pokemon/back_pics/skarmory_back_pic.png b/graphics/pokemon/skarmory/back.png
index f3c8d95cc..f3c8d95cc 100644
--- a/graphics/pokemon/back_pics/skarmory_back_pic.png
+++ b/graphics/pokemon/skarmory/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/skarmory_footprint.png b/graphics/pokemon/skarmory/footprint.png
index 1134fec29..1134fec29 100644
--- a/graphics/pokemon/footprints/skarmory_footprint.png
+++ b/graphics/pokemon/skarmory/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/skarmory_still_front_pic.png b/graphics/pokemon/skarmory/front.png
index 06ce4420f..06ce4420f 100644
--- a/graphics/pokemon/front_pics/skarmory_still_front_pic.png
+++ b/graphics/pokemon/skarmory/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/skarmory_icon.png b/graphics/pokemon/skarmory/icon.png
index 1eb310654..1eb310654 100644
--- a/graphics/pokemon/icons/skarmory_icon.png
+++ b/graphics/pokemon/skarmory/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/skarmory_palette.pal b/graphics/pokemon/skarmory/normal.pal
index d4662ab92..d4662ab92 100644
--- a/graphics/pokemon/palettes/skarmory_palette.pal
+++ b/graphics/pokemon/skarmory/normal.pal
diff --git a/graphics/pokemon/palettes/skarmory_shiny_palette.pal b/graphics/pokemon/skarmory/shiny.pal
index 561324c82..561324c82 100644
--- a/graphics/pokemon/palettes/skarmory_shiny_palette.pal
+++ b/graphics/pokemon/skarmory/shiny.pal
diff --git a/graphics/pokemon/back_pics/skiploom_back_pic.png b/graphics/pokemon/skiploom/back.png
index 8f010fb4f..8f010fb4f 100644
--- a/graphics/pokemon/back_pics/skiploom_back_pic.png
+++ b/graphics/pokemon/skiploom/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/skiploom_footprint.png b/graphics/pokemon/skiploom/footprint.png
index efa7f5034..efa7f5034 100644
--- a/graphics/pokemon/footprints/skiploom_footprint.png
+++ b/graphics/pokemon/skiploom/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/skiploom_still_front_pic.png b/graphics/pokemon/skiploom/front.png
index 0efc78f1d..0efc78f1d 100644
--- a/graphics/pokemon/front_pics/skiploom_still_front_pic.png
+++ b/graphics/pokemon/skiploom/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/skiploom_icon.png b/graphics/pokemon/skiploom/icon.png
index 90c0c8e7c..90c0c8e7c 100644
--- a/graphics/pokemon/icons/skiploom_icon.png
+++ b/graphics/pokemon/skiploom/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/skiploom_palette.pal b/graphics/pokemon/skiploom/normal.pal
index 15fcce8e5..15fcce8e5 100644
--- a/graphics/pokemon/palettes/skiploom_palette.pal
+++ b/graphics/pokemon/skiploom/normal.pal
diff --git a/graphics/pokemon/palettes/skiploom_shiny_palette.pal b/graphics/pokemon/skiploom/shiny.pal
index 2dedaa30e..2dedaa30e 100644
--- a/graphics/pokemon/palettes/skiploom_shiny_palette.pal
+++ b/graphics/pokemon/skiploom/shiny.pal
diff --git a/graphics/pokemon/back_pics/skitty_back_pic.png b/graphics/pokemon/skitty/back.png
index e7f5ebb67..e7f5ebb67 100644
--- a/graphics/pokemon/back_pics/skitty_back_pic.png
+++ b/graphics/pokemon/skitty/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/skitty_footprint.png b/graphics/pokemon/skitty/footprint.png
index 355153dcb..355153dcb 100644
--- a/graphics/pokemon/footprints/skitty_footprint.png
+++ b/graphics/pokemon/skitty/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/skitty_still_front_pic.png b/graphics/pokemon/skitty/front.png
index b0b85cc95..b0b85cc95 100644
--- a/graphics/pokemon/front_pics/skitty_still_front_pic.png
+++ b/graphics/pokemon/skitty/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/skitty_icon.png b/graphics/pokemon/skitty/icon.png
index fb41f1c07..fb41f1c07 100644
--- a/graphics/pokemon/icons/skitty_icon.png
+++ b/graphics/pokemon/skitty/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/skitty_palette.pal b/graphics/pokemon/skitty/normal.pal
index 0a1228191..0a1228191 100644
--- a/graphics/pokemon/palettes/skitty_palette.pal
+++ b/graphics/pokemon/skitty/normal.pal
diff --git a/graphics/pokemon/palettes/skitty_shiny_palette.pal b/graphics/pokemon/skitty/shiny.pal
index d3e9130f3..d3e9130f3 100644
--- a/graphics/pokemon/palettes/skitty_shiny_palette.pal
+++ b/graphics/pokemon/skitty/shiny.pal
diff --git a/graphics/pokemon/back_pics/slaking_back_pic.png b/graphics/pokemon/slaking/back.png
index 50d55a957..50d55a957 100644
--- a/graphics/pokemon/back_pics/slaking_back_pic.png
+++ b/graphics/pokemon/slaking/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/slaking_footprint.png b/graphics/pokemon/slaking/footprint.png
index c2c20413b..c2c20413b 100644
--- a/graphics/pokemon/footprints/slaking_footprint.png
+++ b/graphics/pokemon/slaking/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/slaking_still_front_pic.png b/graphics/pokemon/slaking/front.png
index 3ff648701..3ff648701 100644
--- a/graphics/pokemon/front_pics/slaking_still_front_pic.png
+++ b/graphics/pokemon/slaking/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/slaking_icon.png b/graphics/pokemon/slaking/icon.png
index 71b6c7537..71b6c7537 100644
--- a/graphics/pokemon/icons/slaking_icon.png
+++ b/graphics/pokemon/slaking/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/slaking_palette.pal b/graphics/pokemon/slaking/normal.pal
index 84cf081cf..84cf081cf 100644
--- a/graphics/pokemon/palettes/slaking_palette.pal
+++ b/graphics/pokemon/slaking/normal.pal
diff --git a/graphics/pokemon/palettes/slaking_shiny_palette.pal b/graphics/pokemon/slaking/shiny.pal
index 1ec404cf6..1ec404cf6 100644
--- a/graphics/pokemon/palettes/slaking_shiny_palette.pal
+++ b/graphics/pokemon/slaking/shiny.pal
diff --git a/graphics/pokemon/back_pics/slakoth_back_pic.png b/graphics/pokemon/slakoth/back.png
index 9f82930b0..9f82930b0 100644
--- a/graphics/pokemon/back_pics/slakoth_back_pic.png
+++ b/graphics/pokemon/slakoth/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/slakoth_footprint.png b/graphics/pokemon/slakoth/footprint.png
index ec258f41b..ec258f41b 100644
--- a/graphics/pokemon/footprints/slakoth_footprint.png
+++ b/graphics/pokemon/slakoth/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/slakoth_still_front_pic.png b/graphics/pokemon/slakoth/front.png
index 5440669ae..5440669ae 100644
--- a/graphics/pokemon/front_pics/slakoth_still_front_pic.png
+++ b/graphics/pokemon/slakoth/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/slakoth_icon.png b/graphics/pokemon/slakoth/icon.png
index c04ff08a0..c04ff08a0 100644
--- a/graphics/pokemon/icons/slakoth_icon.png
+++ b/graphics/pokemon/slakoth/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/slakoth_palette.pal b/graphics/pokemon/slakoth/normal.pal
index 934fc9ae9..934fc9ae9 100644
--- a/graphics/pokemon/palettes/slakoth_palette.pal
+++ b/graphics/pokemon/slakoth/normal.pal
diff --git a/graphics/pokemon/palettes/slakoth_shiny_palette.pal b/graphics/pokemon/slakoth/shiny.pal
index 4f65ae8e4..4f65ae8e4 100644
--- a/graphics/pokemon/palettes/slakoth_shiny_palette.pal
+++ b/graphics/pokemon/slakoth/shiny.pal
diff --git a/graphics/pokemon/back_pics/slowbro_back_pic.png b/graphics/pokemon/slowbro/back.png
index b62c5fcf4..b62c5fcf4 100644
--- a/graphics/pokemon/back_pics/slowbro_back_pic.png
+++ b/graphics/pokemon/slowbro/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/slowbro_footprint.png b/graphics/pokemon/slowbro/footprint.png
index c4f82e405..c4f82e405 100644
--- a/graphics/pokemon/footprints/slowbro_footprint.png
+++ b/graphics/pokemon/slowbro/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/slowbro_still_front_pic.png b/graphics/pokemon/slowbro/front.png
index 36bd9e8c5..36bd9e8c5 100644
--- a/graphics/pokemon/front_pics/slowbro_still_front_pic.png
+++ b/graphics/pokemon/slowbro/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/slowbro_icon.png b/graphics/pokemon/slowbro/icon.png
index bf7ee6a32..bf7ee6a32 100644
--- a/graphics/pokemon/icons/slowbro_icon.png
+++ b/graphics/pokemon/slowbro/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/slowbro_palette.pal b/graphics/pokemon/slowbro/normal.pal
index 8088b21e4..8088b21e4 100644
--- a/graphics/pokemon/palettes/slowbro_palette.pal
+++ b/graphics/pokemon/slowbro/normal.pal
diff --git a/graphics/pokemon/palettes/slowbro_shiny_palette.pal b/graphics/pokemon/slowbro/shiny.pal
index c635dbe64..c635dbe64 100644
--- a/graphics/pokemon/palettes/slowbro_shiny_palette.pal
+++ b/graphics/pokemon/slowbro/shiny.pal
diff --git a/graphics/pokemon/back_pics/slowking_back_pic.png b/graphics/pokemon/slowking/back.png
index 16a779506..16a779506 100644
--- a/graphics/pokemon/back_pics/slowking_back_pic.png
+++ b/graphics/pokemon/slowking/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/slowking_footprint.png b/graphics/pokemon/slowking/footprint.png
index 52593624a..52593624a 100644
--- a/graphics/pokemon/footprints/slowking_footprint.png
+++ b/graphics/pokemon/slowking/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/slowking_still_front_pic.png b/graphics/pokemon/slowking/front.png
index 11b16a952..11b16a952 100644
--- a/graphics/pokemon/front_pics/slowking_still_front_pic.png
+++ b/graphics/pokemon/slowking/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/slowking_icon.png b/graphics/pokemon/slowking/icon.png
index 04bd1a155..04bd1a155 100644
--- a/graphics/pokemon/icons/slowking_icon.png
+++ b/graphics/pokemon/slowking/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/slowking_palette.pal b/graphics/pokemon/slowking/normal.pal
index c3e452f0d..c3e452f0d 100644
--- a/graphics/pokemon/palettes/slowking_palette.pal
+++ b/graphics/pokemon/slowking/normal.pal
diff --git a/graphics/pokemon/palettes/slowking_shiny_palette.pal b/graphics/pokemon/slowking/shiny.pal
index 55ae2a1ee..55ae2a1ee 100644
--- a/graphics/pokemon/palettes/slowking_shiny_palette.pal
+++ b/graphics/pokemon/slowking/shiny.pal
diff --git a/graphics/pokemon/back_pics/slowpoke_back_pic.png b/graphics/pokemon/slowpoke/back.png
index 62bf72f0e..62bf72f0e 100644
--- a/graphics/pokemon/back_pics/slowpoke_back_pic.png
+++ b/graphics/pokemon/slowpoke/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/slowpoke_footprint.png b/graphics/pokemon/slowpoke/footprint.png
index a66ebbc32..a66ebbc32 100644
--- a/graphics/pokemon/footprints/slowpoke_footprint.png
+++ b/graphics/pokemon/slowpoke/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/slowpoke_still_front_pic.png b/graphics/pokemon/slowpoke/front.png
index 5c6c87026..5c6c87026 100644
--- a/graphics/pokemon/front_pics/slowpoke_still_front_pic.png
+++ b/graphics/pokemon/slowpoke/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/slowpoke_icon.png b/graphics/pokemon/slowpoke/icon.png
index cc3123e14..cc3123e14 100644
--- a/graphics/pokemon/icons/slowpoke_icon.png
+++ b/graphics/pokemon/slowpoke/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/slowpoke_palette.pal b/graphics/pokemon/slowpoke/normal.pal
index 19966396c..19966396c 100644
--- a/graphics/pokemon/palettes/slowpoke_palette.pal
+++ b/graphics/pokemon/slowpoke/normal.pal
diff --git a/graphics/pokemon/palettes/slowpoke_shiny_palette.pal b/graphics/pokemon/slowpoke/shiny.pal
index 7dbc76ed3..7dbc76ed3 100644
--- a/graphics/pokemon/palettes/slowpoke_shiny_palette.pal
+++ b/graphics/pokemon/slowpoke/shiny.pal
diff --git a/graphics/pokemon/back_pics/slugma_back_pic.png b/graphics/pokemon/slugma/back.png
index 347d27ed1..347d27ed1 100644
--- a/graphics/pokemon/back_pics/slugma_back_pic.png
+++ b/graphics/pokemon/slugma/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/slugma_footprint.png b/graphics/pokemon/slugma/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/slugma_footprint.png
+++ b/graphics/pokemon/slugma/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/slugma_still_front_pic.png b/graphics/pokemon/slugma/front.png
index 4b27af3fc..4b27af3fc 100644
--- a/graphics/pokemon/front_pics/slugma_still_front_pic.png
+++ b/graphics/pokemon/slugma/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/slugma_icon.png b/graphics/pokemon/slugma/icon.png
index d954c6f68..d954c6f68 100644
--- a/graphics/pokemon/icons/slugma_icon.png
+++ b/graphics/pokemon/slugma/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/slugma_palette.pal b/graphics/pokemon/slugma/normal.pal
index 081ae47dc..081ae47dc 100644
--- a/graphics/pokemon/palettes/slugma_palette.pal
+++ b/graphics/pokemon/slugma/normal.pal
diff --git a/graphics/pokemon/palettes/slugma_shiny_palette.pal b/graphics/pokemon/slugma/shiny.pal
index 85babdbe1..85babdbe1 100644
--- a/graphics/pokemon/palettes/slugma_shiny_palette.pal
+++ b/graphics/pokemon/slugma/shiny.pal
diff --git a/graphics/pokemon/back_pics/smeargle_back_pic.png b/graphics/pokemon/smeargle/back.png
index fefbed16f..fefbed16f 100644
--- a/graphics/pokemon/back_pics/smeargle_back_pic.png
+++ b/graphics/pokemon/smeargle/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/smeargle_footprint.png b/graphics/pokemon/smeargle/footprint.png
index b946130cd..b946130cd 100644
--- a/graphics/pokemon/footprints/smeargle_footprint.png
+++ b/graphics/pokemon/smeargle/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/smeargle_still_front_pic.png b/graphics/pokemon/smeargle/front.png
index 91c400395..91c400395 100644
--- a/graphics/pokemon/front_pics/smeargle_still_front_pic.png
+++ b/graphics/pokemon/smeargle/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/smeargle_icon.png b/graphics/pokemon/smeargle/icon.png
index 54b387b05..54b387b05 100644
--- a/graphics/pokemon/icons/smeargle_icon.png
+++ b/graphics/pokemon/smeargle/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/smeargle_palette.pal b/graphics/pokemon/smeargle/normal.pal
index 068322e3e..068322e3e 100644
--- a/graphics/pokemon/palettes/smeargle_palette.pal
+++ b/graphics/pokemon/smeargle/normal.pal
diff --git a/graphics/pokemon/palettes/smeargle_shiny_palette.pal b/graphics/pokemon/smeargle/shiny.pal
index f5f50de2d..f5f50de2d 100644
--- a/graphics/pokemon/palettes/smeargle_shiny_palette.pal
+++ b/graphics/pokemon/smeargle/shiny.pal
diff --git a/graphics/pokemon/back_pics/smoochum_back_pic.png b/graphics/pokemon/smoochum/back.png
index bad0422e5..bad0422e5 100644
--- a/graphics/pokemon/back_pics/smoochum_back_pic.png
+++ b/graphics/pokemon/smoochum/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/smoochum_footprint.png b/graphics/pokemon/smoochum/footprint.png
index e901d9334..e901d9334 100644
--- a/graphics/pokemon/footprints/smoochum_footprint.png
+++ b/graphics/pokemon/smoochum/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/smoochum_still_front_pic.png b/graphics/pokemon/smoochum/front.png
index 608841600..608841600 100644
--- a/graphics/pokemon/front_pics/smoochum_still_front_pic.png
+++ b/graphics/pokemon/smoochum/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/smoochum_icon.png b/graphics/pokemon/smoochum/icon.png
index 11f1e6fe7..11f1e6fe7 100644
--- a/graphics/pokemon/icons/smoochum_icon.png
+++ b/graphics/pokemon/smoochum/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/smoochum_palette.pal b/graphics/pokemon/smoochum/normal.pal
index 722cd4206..722cd4206 100644
--- a/graphics/pokemon/palettes/smoochum_palette.pal
+++ b/graphics/pokemon/smoochum/normal.pal
diff --git a/graphics/pokemon/palettes/smoochum_shiny_palette.pal b/graphics/pokemon/smoochum/shiny.pal
index 00a439312..00a439312 100644
--- a/graphics/pokemon/palettes/smoochum_shiny_palette.pal
+++ b/graphics/pokemon/smoochum/shiny.pal
diff --git a/graphics/pokemon/back_pics/sneasel_back_pic.png b/graphics/pokemon/sneasel/back.png
index 5a0765cb2..5a0765cb2 100644
--- a/graphics/pokemon/back_pics/sneasel_back_pic.png
+++ b/graphics/pokemon/sneasel/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/sneasel_footprint.png b/graphics/pokemon/sneasel/footprint.png
index 2159ef3dc..2159ef3dc 100644
--- a/graphics/pokemon/footprints/sneasel_footprint.png
+++ b/graphics/pokemon/sneasel/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/sneasel_still_front_pic.png b/graphics/pokemon/sneasel/front.png
index 704489419..704489419 100644
--- a/graphics/pokemon/front_pics/sneasel_still_front_pic.png
+++ b/graphics/pokemon/sneasel/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/sneasel_icon.png b/graphics/pokemon/sneasel/icon.png
index 95eb3e66d..95eb3e66d 100644
--- a/graphics/pokemon/icons/sneasel_icon.png
+++ b/graphics/pokemon/sneasel/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/sneasel_palette.pal b/graphics/pokemon/sneasel/normal.pal
index 076fa7300..076fa7300 100644
--- a/graphics/pokemon/palettes/sneasel_palette.pal
+++ b/graphics/pokemon/sneasel/normal.pal
diff --git a/graphics/pokemon/palettes/sneasel_shiny_palette.pal b/graphics/pokemon/sneasel/shiny.pal
index 64a502ce6..64a502ce6 100644
--- a/graphics/pokemon/palettes/sneasel_shiny_palette.pal
+++ b/graphics/pokemon/sneasel/shiny.pal
diff --git a/graphics/pokemon/back_pics/snorlax_back_pic.png b/graphics/pokemon/snorlax/back.png
index da44b95aa..da44b95aa 100644
--- a/graphics/pokemon/back_pics/snorlax_back_pic.png
+++ b/graphics/pokemon/snorlax/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/snorlax_footprint.png b/graphics/pokemon/snorlax/footprint.png
index d3d25c4bc..d3d25c4bc 100644
--- a/graphics/pokemon/footprints/snorlax_footprint.png
+++ b/graphics/pokemon/snorlax/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/snorlax_still_front_pic.png b/graphics/pokemon/snorlax/front.png
index e71642b2c..e71642b2c 100644
--- a/graphics/pokemon/front_pics/snorlax_still_front_pic.png
+++ b/graphics/pokemon/snorlax/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/snorlax_icon.png b/graphics/pokemon/snorlax/icon.png
index 00a74b6ac..00a74b6ac 100644
--- a/graphics/pokemon/icons/snorlax_icon.png
+++ b/graphics/pokemon/snorlax/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/snorlax_palette.pal b/graphics/pokemon/snorlax/normal.pal
index 2310b2b3f..2310b2b3f 100644
--- a/graphics/pokemon/palettes/snorlax_palette.pal
+++ b/graphics/pokemon/snorlax/normal.pal
diff --git a/graphics/pokemon/palettes/snorlax_shiny_palette.pal b/graphics/pokemon/snorlax/shiny.pal
index 8fcbe5988..8fcbe5988 100644
--- a/graphics/pokemon/palettes/snorlax_shiny_palette.pal
+++ b/graphics/pokemon/snorlax/shiny.pal
diff --git a/graphics/pokemon/back_pics/snorunt_back_pic.png b/graphics/pokemon/snorunt/back.png
index 53ddf9fdc..53ddf9fdc 100644
--- a/graphics/pokemon/back_pics/snorunt_back_pic.png
+++ b/graphics/pokemon/snorunt/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/snorunt_footprint.png b/graphics/pokemon/snorunt/footprint.png
index 14277b506..14277b506 100644
--- a/graphics/pokemon/footprints/snorunt_footprint.png
+++ b/graphics/pokemon/snorunt/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/snorunt_still_front_pic.png b/graphics/pokemon/snorunt/front.png
index bf18fb9fa..bf18fb9fa 100644
--- a/graphics/pokemon/front_pics/snorunt_still_front_pic.png
+++ b/graphics/pokemon/snorunt/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/snorunt_icon.png b/graphics/pokemon/snorunt/icon.png
index 2710b9a0a..2710b9a0a 100644
--- a/graphics/pokemon/icons/snorunt_icon.png
+++ b/graphics/pokemon/snorunt/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/snorunt_palette.pal b/graphics/pokemon/snorunt/normal.pal
index 25d137458..25d137458 100644
--- a/graphics/pokemon/palettes/snorunt_palette.pal
+++ b/graphics/pokemon/snorunt/normal.pal
diff --git a/graphics/pokemon/palettes/snorunt_shiny_palette.pal b/graphics/pokemon/snorunt/shiny.pal
index b483a219f..b483a219f 100644
--- a/graphics/pokemon/palettes/snorunt_shiny_palette.pal
+++ b/graphics/pokemon/snorunt/shiny.pal
diff --git a/graphics/pokemon/back_pics/snubbull_back_pic.png b/graphics/pokemon/snubbull/back.png
index 2b212b708..2b212b708 100644
--- a/graphics/pokemon/back_pics/snubbull_back_pic.png
+++ b/graphics/pokemon/snubbull/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/snubbull_footprint.png b/graphics/pokemon/snubbull/footprint.png
index 443847cdd..443847cdd 100644
--- a/graphics/pokemon/footprints/snubbull_footprint.png
+++ b/graphics/pokemon/snubbull/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/snubbull_still_front_pic.png b/graphics/pokemon/snubbull/front.png
index 86c602d49..86c602d49 100644
--- a/graphics/pokemon/front_pics/snubbull_still_front_pic.png
+++ b/graphics/pokemon/snubbull/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/snubbull_icon.png b/graphics/pokemon/snubbull/icon.png
index 80f9b1288..80f9b1288 100644
--- a/graphics/pokemon/icons/snubbull_icon.png
+++ b/graphics/pokemon/snubbull/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/snubbull_palette.pal b/graphics/pokemon/snubbull/normal.pal
index dea1ea530..dea1ea530 100644
--- a/graphics/pokemon/palettes/snubbull_palette.pal
+++ b/graphics/pokemon/snubbull/normal.pal
diff --git a/graphics/pokemon/palettes/snubbull_shiny_palette.pal b/graphics/pokemon/snubbull/shiny.pal
index 5dcc2957d..5dcc2957d 100644
--- a/graphics/pokemon/palettes/snubbull_shiny_palette.pal
+++ b/graphics/pokemon/snubbull/shiny.pal
diff --git a/graphics/pokemon/back_pics/solrock_back_pic.png b/graphics/pokemon/solrock/back.png
index 2f6e7cb99..2f6e7cb99 100644
--- a/graphics/pokemon/back_pics/solrock_back_pic.png
+++ b/graphics/pokemon/solrock/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/solrock_footprint.png b/graphics/pokemon/solrock/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/solrock_footprint.png
+++ b/graphics/pokemon/solrock/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/solrock_still_front_pic.png b/graphics/pokemon/solrock/front.png
index d0fe58533..d0fe58533 100644
--- a/graphics/pokemon/front_pics/solrock_still_front_pic.png
+++ b/graphics/pokemon/solrock/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/solrock_icon.png b/graphics/pokemon/solrock/icon.png
index f9e689424..f9e689424 100644
--- a/graphics/pokemon/icons/solrock_icon.png
+++ b/graphics/pokemon/solrock/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/solrock_palette.pal b/graphics/pokemon/solrock/normal.pal
index 315f49dd3..315f49dd3 100644
--- a/graphics/pokemon/palettes/solrock_palette.pal
+++ b/graphics/pokemon/solrock/normal.pal
diff --git a/graphics/pokemon/palettes/solrock_shiny_palette.pal b/graphics/pokemon/solrock/shiny.pal
index 9de01aa0b..9de01aa0b 100644
--- a/graphics/pokemon/palettes/solrock_shiny_palette.pal
+++ b/graphics/pokemon/solrock/shiny.pal
diff --git a/graphics/pokemon/back_pics/spearow_back_pic.png b/graphics/pokemon/spearow/back.png
index b630f24e0..b630f24e0 100644
--- a/graphics/pokemon/back_pics/spearow_back_pic.png
+++ b/graphics/pokemon/spearow/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/spearow_footprint.png b/graphics/pokemon/spearow/footprint.png
index 6fe6e4282..6fe6e4282 100644
--- a/graphics/pokemon/footprints/spearow_footprint.png
+++ b/graphics/pokemon/spearow/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/spearow_still_front_pic.png b/graphics/pokemon/spearow/front.png
index f6408d7c0..f6408d7c0 100644
--- a/graphics/pokemon/front_pics/spearow_still_front_pic.png
+++ b/graphics/pokemon/spearow/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/spearow_icon.png b/graphics/pokemon/spearow/icon.png
index a88db9927..a88db9927 100644
--- a/graphics/pokemon/icons/spearow_icon.png
+++ b/graphics/pokemon/spearow/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/spearow_palette.pal b/graphics/pokemon/spearow/normal.pal
index 8cf97399d..8cf97399d 100644
--- a/graphics/pokemon/palettes/spearow_palette.pal
+++ b/graphics/pokemon/spearow/normal.pal
diff --git a/graphics/pokemon/palettes/spearow_shiny_palette.pal b/graphics/pokemon/spearow/shiny.pal
index fd2223485..fd2223485 100644
--- a/graphics/pokemon/palettes/spearow_shiny_palette.pal
+++ b/graphics/pokemon/spearow/shiny.pal
diff --git a/graphics/pokemon/back_pics/spheal_back_pic.png b/graphics/pokemon/spheal/back.png
index 6fb9e9443..6fb9e9443 100644
--- a/graphics/pokemon/back_pics/spheal_back_pic.png
+++ b/graphics/pokemon/spheal/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/spheal_footprint.png b/graphics/pokemon/spheal/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/spheal_footprint.png
+++ b/graphics/pokemon/spheal/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/spheal_still_front_pic.png b/graphics/pokemon/spheal/front.png
index f07cf67b5..f07cf67b5 100644
--- a/graphics/pokemon/front_pics/spheal_still_front_pic.png
+++ b/graphics/pokemon/spheal/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/spheal_icon.png b/graphics/pokemon/spheal/icon.png
index fd392e196..fd392e196 100644
--- a/graphics/pokemon/icons/spheal_icon.png
+++ b/graphics/pokemon/spheal/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/spheal_palette.pal b/graphics/pokemon/spheal/normal.pal
index 1fa035c32..1fa035c32 100644
--- a/graphics/pokemon/palettes/spheal_palette.pal
+++ b/graphics/pokemon/spheal/normal.pal
diff --git a/graphics/pokemon/palettes/spheal_shiny_palette.pal b/graphics/pokemon/spheal/shiny.pal
index 14f207301..14f207301 100644
--- a/graphics/pokemon/palettes/spheal_shiny_palette.pal
+++ b/graphics/pokemon/spheal/shiny.pal
diff --git a/graphics/pokemon/back_pics/spinarak_back_pic.png b/graphics/pokemon/spinarak/back.png
index 7c2144971..7c2144971 100644
--- a/graphics/pokemon/back_pics/spinarak_back_pic.png
+++ b/graphics/pokemon/spinarak/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/spinarak_footprint.png b/graphics/pokemon/spinarak/footprint.png
index 6965dbe60..6965dbe60 100644
--- a/graphics/pokemon/footprints/spinarak_footprint.png
+++ b/graphics/pokemon/spinarak/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/spinarak_still_front_pic.png b/graphics/pokemon/spinarak/front.png
index cd525f1c4..cd525f1c4 100644
--- a/graphics/pokemon/front_pics/spinarak_still_front_pic.png
+++ b/graphics/pokemon/spinarak/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/spinarak_icon.png b/graphics/pokemon/spinarak/icon.png
index 54ec8e0fe..54ec8e0fe 100644
--- a/graphics/pokemon/icons/spinarak_icon.png
+++ b/graphics/pokemon/spinarak/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/spinarak_palette.pal b/graphics/pokemon/spinarak/normal.pal
index 0a09982d6..0a09982d6 100644
--- a/graphics/pokemon/palettes/spinarak_palette.pal
+++ b/graphics/pokemon/spinarak/normal.pal
diff --git a/graphics/pokemon/palettes/spinarak_shiny_palette.pal b/graphics/pokemon/spinarak/shiny.pal
index f2aed8e9f..f2aed8e9f 100644
--- a/graphics/pokemon/palettes/spinarak_shiny_palette.pal
+++ b/graphics/pokemon/spinarak/shiny.pal
diff --git a/graphics/pokemon/back_pics/spinda_back_pic.png b/graphics/pokemon/spinda/back.png
index c5f699e2c..c5f699e2c 100644
--- a/graphics/pokemon/back_pics/spinda_back_pic.png
+++ b/graphics/pokemon/spinda/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/spinda_footprint.png b/graphics/pokemon/spinda/footprint.png
index 7be943a89..7be943a89 100644
--- a/graphics/pokemon/footprints/spinda_footprint.png
+++ b/graphics/pokemon/spinda/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/spinda_still_front_pic.png b/graphics/pokemon/spinda/front.png
index 5976a87d1..5976a87d1 100644
--- a/graphics/pokemon/front_pics/spinda_still_front_pic.png
+++ b/graphics/pokemon/spinda/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/spinda_icon.png b/graphics/pokemon/spinda/icon.png
index 75699c7cb..75699c7cb 100644
--- a/graphics/pokemon/icons/spinda_icon.png
+++ b/graphics/pokemon/spinda/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/spinda_palette.pal b/graphics/pokemon/spinda/normal.pal
index 9b0ad5bfc..9b0ad5bfc 100644
--- a/graphics/pokemon/palettes/spinda_palette.pal
+++ b/graphics/pokemon/spinda/normal.pal
diff --git a/graphics/pokemon/palettes/spinda_shiny_palette.pal b/graphics/pokemon/spinda/shiny.pal
index 6aa748129..6aa748129 100644
--- a/graphics/pokemon/palettes/spinda_shiny_palette.pal
+++ b/graphics/pokemon/spinda/shiny.pal
diff --git a/graphics/pokemon/back_pics/spoink_back_pic.png b/graphics/pokemon/spoink/back.png
index 7872e240c..7872e240c 100644
--- a/graphics/pokemon/back_pics/spoink_back_pic.png
+++ b/graphics/pokemon/spoink/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/spoink_footprint.png b/graphics/pokemon/spoink/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/spoink_footprint.png
+++ b/graphics/pokemon/spoink/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/spoink_still_front_pic.png b/graphics/pokemon/spoink/front.png
index ee4afc1ed..ee4afc1ed 100644
--- a/graphics/pokemon/front_pics/spoink_still_front_pic.png
+++ b/graphics/pokemon/spoink/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/spoink_icon.png b/graphics/pokemon/spoink/icon.png
index 387d0ed00..387d0ed00 100644
--- a/graphics/pokemon/icons/spoink_icon.png
+++ b/graphics/pokemon/spoink/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/spoink_palette.pal b/graphics/pokemon/spoink/normal.pal
index c1891323c..c1891323c 100644
--- a/graphics/pokemon/palettes/spoink_palette.pal
+++ b/graphics/pokemon/spoink/normal.pal
diff --git a/graphics/pokemon/palettes/spoink_shiny_palette.pal b/graphics/pokemon/spoink/shiny.pal
index c8edfafd7..c8edfafd7 100644
--- a/graphics/pokemon/palettes/spoink_shiny_palette.pal
+++ b/graphics/pokemon/spoink/shiny.pal
diff --git a/graphics/pokemon/back_pics/squirtle_back_pic.png b/graphics/pokemon/squirtle/back.png
index 36c9d2666..36c9d2666 100644
--- a/graphics/pokemon/back_pics/squirtle_back_pic.png
+++ b/graphics/pokemon/squirtle/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/squirtle_footprint.png b/graphics/pokemon/squirtle/footprint.png
index 696cd6d42..696cd6d42 100644
--- a/graphics/pokemon/footprints/squirtle_footprint.png
+++ b/graphics/pokemon/squirtle/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/squirtle_still_front_pic.png b/graphics/pokemon/squirtle/front.png
index c494d47e3..c494d47e3 100644
--- a/graphics/pokemon/front_pics/squirtle_still_front_pic.png
+++ b/graphics/pokemon/squirtle/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/squirtle_icon.png b/graphics/pokemon/squirtle/icon.png
index 75a58770f..75a58770f 100644
--- a/graphics/pokemon/icons/squirtle_icon.png
+++ b/graphics/pokemon/squirtle/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/squirtle_palette.pal b/graphics/pokemon/squirtle/normal.pal
index 4cc9f28e8..4cc9f28e8 100644
--- a/graphics/pokemon/palettes/squirtle_palette.pal
+++ b/graphics/pokemon/squirtle/normal.pal
diff --git a/graphics/pokemon/palettes/squirtle_shiny_palette.pal b/graphics/pokemon/squirtle/shiny.pal
index 9ca78b24d..9ca78b24d 100644
--- a/graphics/pokemon/palettes/squirtle_shiny_palette.pal
+++ b/graphics/pokemon/squirtle/shiny.pal
diff --git a/graphics/pokemon/back_pics/stantler_back_pic.png b/graphics/pokemon/stantler/back.png
index 9ddf7a40c..9ddf7a40c 100644
--- a/graphics/pokemon/back_pics/stantler_back_pic.png
+++ b/graphics/pokemon/stantler/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/stantler_footprint.png b/graphics/pokemon/stantler/footprint.png
index 7f2b0f532..7f2b0f532 100644
--- a/graphics/pokemon/footprints/stantler_footprint.png
+++ b/graphics/pokemon/stantler/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/stantler_still_front_pic.png b/graphics/pokemon/stantler/front.png
index aa3d80efc..aa3d80efc 100644
--- a/graphics/pokemon/front_pics/stantler_still_front_pic.png
+++ b/graphics/pokemon/stantler/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/stantler_icon.png b/graphics/pokemon/stantler/icon.png
index da9e6da99..da9e6da99 100644
--- a/graphics/pokemon/icons/stantler_icon.png
+++ b/graphics/pokemon/stantler/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/stantler_palette.pal b/graphics/pokemon/stantler/normal.pal
index 29eeabc43..29eeabc43 100644
--- a/graphics/pokemon/palettes/stantler_palette.pal
+++ b/graphics/pokemon/stantler/normal.pal
diff --git a/graphics/pokemon/palettes/stantler_shiny_palette.pal b/graphics/pokemon/stantler/shiny.pal
index 18b43b330..18b43b330 100644
--- a/graphics/pokemon/palettes/stantler_shiny_palette.pal
+++ b/graphics/pokemon/stantler/shiny.pal
diff --git a/graphics/pokemon/back_pics/starmie_back_pic.png b/graphics/pokemon/starmie/back.png
index 62fdf3a41..62fdf3a41 100644
--- a/graphics/pokemon/back_pics/starmie_back_pic.png
+++ b/graphics/pokemon/starmie/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/starmie_footprint.png b/graphics/pokemon/starmie/footprint.png
index c1c0058e7..c1c0058e7 100644
--- a/graphics/pokemon/footprints/starmie_footprint.png
+++ b/graphics/pokemon/starmie/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/starmie_still_front_pic.png b/graphics/pokemon/starmie/front.png
index e695d83de..e695d83de 100644
--- a/graphics/pokemon/front_pics/starmie_still_front_pic.png
+++ b/graphics/pokemon/starmie/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/starmie_icon.png b/graphics/pokemon/starmie/icon.png
index 844cae0c7..844cae0c7 100644
--- a/graphics/pokemon/icons/starmie_icon.png
+++ b/graphics/pokemon/starmie/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/starmie_palette.pal b/graphics/pokemon/starmie/normal.pal
index 82435deec..82435deec 100644
--- a/graphics/pokemon/palettes/starmie_palette.pal
+++ b/graphics/pokemon/starmie/normal.pal
diff --git a/graphics/pokemon/palettes/starmie_shiny_palette.pal b/graphics/pokemon/starmie/shiny.pal
index 1f68c3476..1f68c3476 100644
--- a/graphics/pokemon/palettes/starmie_shiny_palette.pal
+++ b/graphics/pokemon/starmie/shiny.pal
diff --git a/graphics/pokemon/back_pics/staryu_back_pic.png b/graphics/pokemon/staryu/back.png
index b48a929ea..b48a929ea 100644
--- a/graphics/pokemon/back_pics/staryu_back_pic.png
+++ b/graphics/pokemon/staryu/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/staryu_footprint.png b/graphics/pokemon/staryu/footprint.png
index c1c0058e7..c1c0058e7 100644
--- a/graphics/pokemon/footprints/staryu_footprint.png
+++ b/graphics/pokemon/staryu/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/staryu_still_front_pic.png b/graphics/pokemon/staryu/front.png
index c17a80418..c17a80418 100644
--- a/graphics/pokemon/front_pics/staryu_still_front_pic.png
+++ b/graphics/pokemon/staryu/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/staryu_icon.png b/graphics/pokemon/staryu/icon.png
index b90c0b9c3..b90c0b9c3 100644
--- a/graphics/pokemon/icons/staryu_icon.png
+++ b/graphics/pokemon/staryu/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/staryu_palette.pal b/graphics/pokemon/staryu/normal.pal
index 19ea03347..19ea03347 100644
--- a/graphics/pokemon/palettes/staryu_palette.pal
+++ b/graphics/pokemon/staryu/normal.pal
diff --git a/graphics/pokemon/palettes/staryu_shiny_palette.pal b/graphics/pokemon/staryu/shiny.pal
index 9285cb48c..9285cb48c 100644
--- a/graphics/pokemon/palettes/staryu_shiny_palette.pal
+++ b/graphics/pokemon/staryu/shiny.pal
diff --git a/graphics/pokemon/back_pics/steelix_back_pic.png b/graphics/pokemon/steelix/back.png
index 74cb256d0..74cb256d0 100644
--- a/graphics/pokemon/back_pics/steelix_back_pic.png
+++ b/graphics/pokemon/steelix/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/steelix_footprint.png b/graphics/pokemon/steelix/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/steelix_footprint.png
+++ b/graphics/pokemon/steelix/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/steelix_still_front_pic.png b/graphics/pokemon/steelix/front.png
index e5b3a35d6..e5b3a35d6 100644
--- a/graphics/pokemon/front_pics/steelix_still_front_pic.png
+++ b/graphics/pokemon/steelix/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/steelix_icon.png b/graphics/pokemon/steelix/icon.png
index c99e17581..c99e17581 100644
--- a/graphics/pokemon/icons/steelix_icon.png
+++ b/graphics/pokemon/steelix/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/steelix_palette.pal b/graphics/pokemon/steelix/normal.pal
index e18ae398c..e18ae398c 100644
--- a/graphics/pokemon/palettes/steelix_palette.pal
+++ b/graphics/pokemon/steelix/normal.pal
diff --git a/graphics/pokemon/palettes/steelix_shiny_palette.pal b/graphics/pokemon/steelix/shiny.pal
index 02b21c7ac..02b21c7ac 100644
--- a/graphics/pokemon/palettes/steelix_shiny_palette.pal
+++ b/graphics/pokemon/steelix/shiny.pal
diff --git a/graphics/pokemon/back_pics/sudowoodo_back_pic.png b/graphics/pokemon/sudowoodo/back.png
index befda7efc..befda7efc 100644
--- a/graphics/pokemon/back_pics/sudowoodo_back_pic.png
+++ b/graphics/pokemon/sudowoodo/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/sudowoodo_footprint.png b/graphics/pokemon/sudowoodo/footprint.png
index 4ed751a79..4ed751a79 100644
--- a/graphics/pokemon/footprints/sudowoodo_footprint.png
+++ b/graphics/pokemon/sudowoodo/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/sudowoodo_still_front_pic.png b/graphics/pokemon/sudowoodo/front.png
index 897516953..897516953 100644
--- a/graphics/pokemon/front_pics/sudowoodo_still_front_pic.png
+++ b/graphics/pokemon/sudowoodo/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/sudowoodo_icon.png b/graphics/pokemon/sudowoodo/icon.png
index 4cc4afadf..4cc4afadf 100644
--- a/graphics/pokemon/icons/sudowoodo_icon.png
+++ b/graphics/pokemon/sudowoodo/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/sudowoodo_palette.pal b/graphics/pokemon/sudowoodo/normal.pal
index 3d589fc9d..3d589fc9d 100644
--- a/graphics/pokemon/palettes/sudowoodo_palette.pal
+++ b/graphics/pokemon/sudowoodo/normal.pal
diff --git a/graphics/pokemon/palettes/sudowoodo_shiny_palette.pal b/graphics/pokemon/sudowoodo/shiny.pal
index 6344dcc53..6344dcc53 100644
--- a/graphics/pokemon/palettes/sudowoodo_shiny_palette.pal
+++ b/graphics/pokemon/sudowoodo/shiny.pal
diff --git a/graphics/pokemon/back_pics/suicune_back_pic.png b/graphics/pokemon/suicune/back.png
index 80eef8678..80eef8678 100644
--- a/graphics/pokemon/back_pics/suicune_back_pic.png
+++ b/graphics/pokemon/suicune/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/suicune_footprint.png b/graphics/pokemon/suicune/footprint.png
index 946c35dd0..946c35dd0 100644
--- a/graphics/pokemon/footprints/suicune_footprint.png
+++ b/graphics/pokemon/suicune/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/suicune_still_front_pic.png b/graphics/pokemon/suicune/front.png
index 3529d8fe1..3529d8fe1 100644
--- a/graphics/pokemon/front_pics/suicune_still_front_pic.png
+++ b/graphics/pokemon/suicune/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/suicune_icon.png b/graphics/pokemon/suicune/icon.png
index 3e4b3c695..3e4b3c695 100644
--- a/graphics/pokemon/icons/suicune_icon.png
+++ b/graphics/pokemon/suicune/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/suicune_palette.pal b/graphics/pokemon/suicune/normal.pal
index 3a21dbd4d..3a21dbd4d 100644
--- a/graphics/pokemon/palettes/suicune_palette.pal
+++ b/graphics/pokemon/suicune/normal.pal
diff --git a/graphics/pokemon/palettes/suicune_shiny_palette.pal b/graphics/pokemon/suicune/shiny.pal
index 2ee8b7a0f..2ee8b7a0f 100644
--- a/graphics/pokemon/palettes/suicune_shiny_palette.pal
+++ b/graphics/pokemon/suicune/shiny.pal
diff --git a/graphics/pokemon/back_pics/sunflora_back_pic.png b/graphics/pokemon/sunflora/back.png
index c048bebc2..c048bebc2 100644
--- a/graphics/pokemon/back_pics/sunflora_back_pic.png
+++ b/graphics/pokemon/sunflora/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/sunflora_footprint.png b/graphics/pokemon/sunflora/footprint.png
index f6de3ca9f..f6de3ca9f 100644
--- a/graphics/pokemon/footprints/sunflora_footprint.png
+++ b/graphics/pokemon/sunflora/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/sunflora_still_front_pic.png b/graphics/pokemon/sunflora/front.png
index 9752bb9d4..9752bb9d4 100644
--- a/graphics/pokemon/front_pics/sunflora_still_front_pic.png
+++ b/graphics/pokemon/sunflora/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/sunflora_icon.png b/graphics/pokemon/sunflora/icon.png
index 6493eb510..6493eb510 100644
--- a/graphics/pokemon/icons/sunflora_icon.png
+++ b/graphics/pokemon/sunflora/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/sunflora_palette.pal b/graphics/pokemon/sunflora/normal.pal
index a22ed3fe7..a22ed3fe7 100644
--- a/graphics/pokemon/palettes/sunflora_palette.pal
+++ b/graphics/pokemon/sunflora/normal.pal
diff --git a/graphics/pokemon/palettes/sunflora_shiny_palette.pal b/graphics/pokemon/sunflora/shiny.pal
index ea8de6e05..ea8de6e05 100644
--- a/graphics/pokemon/palettes/sunflora_shiny_palette.pal
+++ b/graphics/pokemon/sunflora/shiny.pal
diff --git a/graphics/pokemon/back_pics/sunkern_back_pic.png b/graphics/pokemon/sunkern/back.png
index e6adde775..e6adde775 100644
--- a/graphics/pokemon/back_pics/sunkern_back_pic.png
+++ b/graphics/pokemon/sunkern/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/sunkern_footprint.png b/graphics/pokemon/sunkern/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/sunkern_footprint.png
+++ b/graphics/pokemon/sunkern/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/sunkern_still_front_pic.png b/graphics/pokemon/sunkern/front.png
index 15a743cc3..15a743cc3 100644
--- a/graphics/pokemon/front_pics/sunkern_still_front_pic.png
+++ b/graphics/pokemon/sunkern/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/sunkern_icon.png b/graphics/pokemon/sunkern/icon.png
index 60d7ea91b..60d7ea91b 100644
--- a/graphics/pokemon/icons/sunkern_icon.png
+++ b/graphics/pokemon/sunkern/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/sunkern_palette.pal b/graphics/pokemon/sunkern/normal.pal
index 7dab1246d..7dab1246d 100644
--- a/graphics/pokemon/palettes/sunkern_palette.pal
+++ b/graphics/pokemon/sunkern/normal.pal
diff --git a/graphics/pokemon/palettes/sunkern_shiny_palette.pal b/graphics/pokemon/sunkern/shiny.pal
index 84a106f65..84a106f65 100644
--- a/graphics/pokemon/palettes/sunkern_shiny_palette.pal
+++ b/graphics/pokemon/sunkern/shiny.pal
diff --git a/graphics/pokemon/back_pics/surskit_back_pic.png b/graphics/pokemon/surskit/back.png
index 85b8a8a4f..85b8a8a4f 100644
--- a/graphics/pokemon/back_pics/surskit_back_pic.png
+++ b/graphics/pokemon/surskit/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/surskit_footprint.png b/graphics/pokemon/surskit/footprint.png
index e4945976f..e4945976f 100644
--- a/graphics/pokemon/footprints/surskit_footprint.png
+++ b/graphics/pokemon/surskit/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/surskit_still_front_pic.png b/graphics/pokemon/surskit/front.png
index 559e8e786..559e8e786 100644
--- a/graphics/pokemon/front_pics/surskit_still_front_pic.png
+++ b/graphics/pokemon/surskit/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/surskit_icon.png b/graphics/pokemon/surskit/icon.png
index a7267c21a..a7267c21a 100644
--- a/graphics/pokemon/icons/surskit_icon.png
+++ b/graphics/pokemon/surskit/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/surskit_palette.pal b/graphics/pokemon/surskit/normal.pal
index 7aa7f389d..7aa7f389d 100644
--- a/graphics/pokemon/palettes/surskit_palette.pal
+++ b/graphics/pokemon/surskit/normal.pal
diff --git a/graphics/pokemon/palettes/surskit_shiny_palette.pal b/graphics/pokemon/surskit/shiny.pal
index 71624ff69..71624ff69 100644
--- a/graphics/pokemon/palettes/surskit_shiny_palette.pal
+++ b/graphics/pokemon/surskit/shiny.pal
diff --git a/graphics/pokemon/back_pics/swablu_back_pic.png b/graphics/pokemon/swablu/back.png
index 802a9e37c..802a9e37c 100644
--- a/graphics/pokemon/back_pics/swablu_back_pic.png
+++ b/graphics/pokemon/swablu/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/swablu_footprint.png b/graphics/pokemon/swablu/footprint.png
index 7e71113c3..7e71113c3 100644
--- a/graphics/pokemon/footprints/swablu_footprint.png
+++ b/graphics/pokemon/swablu/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/swablu_still_front_pic.png b/graphics/pokemon/swablu/front.png
index 1992c2d06..1992c2d06 100644
--- a/graphics/pokemon/front_pics/swablu_still_front_pic.png
+++ b/graphics/pokemon/swablu/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/swablu_icon.png b/graphics/pokemon/swablu/icon.png
index fa269d741..fa269d741 100644
--- a/graphics/pokemon/icons/swablu_icon.png
+++ b/graphics/pokemon/swablu/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/swablu_palette.pal b/graphics/pokemon/swablu/normal.pal
index 180dac0df..180dac0df 100644
--- a/graphics/pokemon/palettes/swablu_palette.pal
+++ b/graphics/pokemon/swablu/normal.pal
diff --git a/graphics/pokemon/palettes/swablu_shiny_palette.pal b/graphics/pokemon/swablu/shiny.pal
index 392d5a8bb..392d5a8bb 100644
--- a/graphics/pokemon/palettes/swablu_shiny_palette.pal
+++ b/graphics/pokemon/swablu/shiny.pal
diff --git a/graphics/pokemon/back_pics/swalot_back_pic.png b/graphics/pokemon/swalot/back.png
index acd59b1b9..acd59b1b9 100644
--- a/graphics/pokemon/back_pics/swalot_back_pic.png
+++ b/graphics/pokemon/swalot/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/swalot_footprint.png b/graphics/pokemon/swalot/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/swalot_footprint.png
+++ b/graphics/pokemon/swalot/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/swalot_still_front_pic.png b/graphics/pokemon/swalot/front.png
index 7607b8c2e..7607b8c2e 100644
--- a/graphics/pokemon/front_pics/swalot_still_front_pic.png
+++ b/graphics/pokemon/swalot/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/swalot_icon.png b/graphics/pokemon/swalot/icon.png
index 9868d73d3..9868d73d3 100644
--- a/graphics/pokemon/icons/swalot_icon.png
+++ b/graphics/pokemon/swalot/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/swalot_palette.pal b/graphics/pokemon/swalot/normal.pal
index fcd80af0b..fcd80af0b 100644
--- a/graphics/pokemon/palettes/swalot_palette.pal
+++ b/graphics/pokemon/swalot/normal.pal
diff --git a/graphics/pokemon/palettes/swalot_shiny_palette.pal b/graphics/pokemon/swalot/shiny.pal
index 109d19022..109d19022 100644
--- a/graphics/pokemon/palettes/swalot_shiny_palette.pal
+++ b/graphics/pokemon/swalot/shiny.pal
diff --git a/graphics/pokemon/back_pics/swampert_back_pic.png b/graphics/pokemon/swampert/back.png
index bb795c65f..bb795c65f 100644
--- a/graphics/pokemon/back_pics/swampert_back_pic.png
+++ b/graphics/pokemon/swampert/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/swampert_footprint.png b/graphics/pokemon/swampert/footprint.png
index ed223e641..ed223e641 100644
--- a/graphics/pokemon/footprints/swampert_footprint.png
+++ b/graphics/pokemon/swampert/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/swampert_still_front_pic.png b/graphics/pokemon/swampert/front.png
index eea565e43..eea565e43 100644
--- a/graphics/pokemon/front_pics/swampert_still_front_pic.png
+++ b/graphics/pokemon/swampert/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/swampert_icon.png b/graphics/pokemon/swampert/icon.png
index 5b2f04ca9..5b2f04ca9 100644
--- a/graphics/pokemon/icons/swampert_icon.png
+++ b/graphics/pokemon/swampert/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/swampert_palette.pal b/graphics/pokemon/swampert/normal.pal
index 149557aa4..149557aa4 100644
--- a/graphics/pokemon/palettes/swampert_palette.pal
+++ b/graphics/pokemon/swampert/normal.pal
diff --git a/graphics/pokemon/palettes/swampert_shiny_palette.pal b/graphics/pokemon/swampert/shiny.pal
index 284a31508..284a31508 100644
--- a/graphics/pokemon/palettes/swampert_shiny_palette.pal
+++ b/graphics/pokemon/swampert/shiny.pal
diff --git a/graphics/pokemon/back_pics/swellow_back_pic.png b/graphics/pokemon/swellow/back.png
index c2c1c3ed3..c2c1c3ed3 100644
--- a/graphics/pokemon/back_pics/swellow_back_pic.png
+++ b/graphics/pokemon/swellow/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/swellow_footprint.png b/graphics/pokemon/swellow/footprint.png
index f44a71c29..f44a71c29 100644
--- a/graphics/pokemon/footprints/swellow_footprint.png
+++ b/graphics/pokemon/swellow/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/swellow_still_front_pic.png b/graphics/pokemon/swellow/front.png
index 6a5dcb239..6a5dcb239 100644
--- a/graphics/pokemon/front_pics/swellow_still_front_pic.png
+++ b/graphics/pokemon/swellow/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/swellow_icon.png b/graphics/pokemon/swellow/icon.png
index 47a2ea74d..47a2ea74d 100644
--- a/graphics/pokemon/icons/swellow_icon.png
+++ b/graphics/pokemon/swellow/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/swellow_palette.pal b/graphics/pokemon/swellow/normal.pal
index cf8e9f794..cf8e9f794 100644
--- a/graphics/pokemon/palettes/swellow_palette.pal
+++ b/graphics/pokemon/swellow/normal.pal
diff --git a/graphics/pokemon/palettes/swellow_shiny_palette.pal b/graphics/pokemon/swellow/shiny.pal
index 388f2b220..388f2b220 100644
--- a/graphics/pokemon/palettes/swellow_shiny_palette.pal
+++ b/graphics/pokemon/swellow/shiny.pal
diff --git a/graphics/pokemon/back_pics/swinub_back_pic.png b/graphics/pokemon/swinub/back.png
index 66998faad..66998faad 100644
--- a/graphics/pokemon/back_pics/swinub_back_pic.png
+++ b/graphics/pokemon/swinub/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/swinub_footprint.png b/graphics/pokemon/swinub/footprint.png
index fb56709ec..fb56709ec 100644
--- a/graphics/pokemon/footprints/swinub_footprint.png
+++ b/graphics/pokemon/swinub/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/swinub_still_front_pic.png b/graphics/pokemon/swinub/front.png
index c92de5b5a..c92de5b5a 100644
--- a/graphics/pokemon/front_pics/swinub_still_front_pic.png
+++ b/graphics/pokemon/swinub/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/swinub_icon.png b/graphics/pokemon/swinub/icon.png
index f33656a0c..f33656a0c 100644
--- a/graphics/pokemon/icons/swinub_icon.png
+++ b/graphics/pokemon/swinub/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/swinub_palette.pal b/graphics/pokemon/swinub/normal.pal
index b014d69d6..b014d69d6 100644
--- a/graphics/pokemon/palettes/swinub_palette.pal
+++ b/graphics/pokemon/swinub/normal.pal
diff --git a/graphics/pokemon/palettes/swinub_shiny_palette.pal b/graphics/pokemon/swinub/shiny.pal
index 9482e2d46..9482e2d46 100644
--- a/graphics/pokemon/palettes/swinub_shiny_palette.pal
+++ b/graphics/pokemon/swinub/shiny.pal
diff --git a/graphics/pokemon/back_pics/taillow_back_pic.png b/graphics/pokemon/taillow/back.png
index 997d6db45..997d6db45 100644
--- a/graphics/pokemon/back_pics/taillow_back_pic.png
+++ b/graphics/pokemon/taillow/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/taillow_footprint.png b/graphics/pokemon/taillow/footprint.png
index dbf5c5c6b..dbf5c5c6b 100644
--- a/graphics/pokemon/footprints/taillow_footprint.png
+++ b/graphics/pokemon/taillow/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/taillow_still_front_pic.png b/graphics/pokemon/taillow/front.png
index 6ff802ac6..6ff802ac6 100644
--- a/graphics/pokemon/front_pics/taillow_still_front_pic.png
+++ b/graphics/pokemon/taillow/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/taillow_icon.png b/graphics/pokemon/taillow/icon.png
index a0668865b..a0668865b 100644
--- a/graphics/pokemon/icons/taillow_icon.png
+++ b/graphics/pokemon/taillow/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/taillow_palette.pal b/graphics/pokemon/taillow/normal.pal
index b1777b5be..b1777b5be 100644
--- a/graphics/pokemon/palettes/taillow_palette.pal
+++ b/graphics/pokemon/taillow/normal.pal
diff --git a/graphics/pokemon/palettes/taillow_shiny_palette.pal b/graphics/pokemon/taillow/shiny.pal
index 388f2b220..388f2b220 100644
--- a/graphics/pokemon/palettes/taillow_shiny_palette.pal
+++ b/graphics/pokemon/taillow/shiny.pal
diff --git a/graphics/pokemon/back_pics/tangela_back_pic.png b/graphics/pokemon/tangela/back.png
index 5a15f1b91..5a15f1b91 100644
--- a/graphics/pokemon/back_pics/tangela_back_pic.png
+++ b/graphics/pokemon/tangela/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/tangela_footprint.png b/graphics/pokemon/tangela/footprint.png
index c05d3b437..c05d3b437 100644
--- a/graphics/pokemon/footprints/tangela_footprint.png
+++ b/graphics/pokemon/tangela/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/tangela_still_front_pic.png b/graphics/pokemon/tangela/front.png
index 2aec57c3a..2aec57c3a 100644
--- a/graphics/pokemon/front_pics/tangela_still_front_pic.png
+++ b/graphics/pokemon/tangela/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/tangela_icon.png b/graphics/pokemon/tangela/icon.png
index c2a8ee33f..c2a8ee33f 100644
--- a/graphics/pokemon/icons/tangela_icon.png
+++ b/graphics/pokemon/tangela/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/tangela_palette.pal b/graphics/pokemon/tangela/normal.pal
index 3de914144..3de914144 100644
--- a/graphics/pokemon/palettes/tangela_palette.pal
+++ b/graphics/pokemon/tangela/normal.pal
diff --git a/graphics/pokemon/palettes/tangela_shiny_palette.pal b/graphics/pokemon/tangela/shiny.pal
index 6c8c7fad5..6c8c7fad5 100644
--- a/graphics/pokemon/palettes/tangela_shiny_palette.pal
+++ b/graphics/pokemon/tangela/shiny.pal
diff --git a/graphics/pokemon/back_pics/tauros_back_pic.png b/graphics/pokemon/tauros/back.png
index 2fac61283..2fac61283 100644
--- a/graphics/pokemon/back_pics/tauros_back_pic.png
+++ b/graphics/pokemon/tauros/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/tauros_footprint.png b/graphics/pokemon/tauros/footprint.png
index 602011c6d..602011c6d 100644
--- a/graphics/pokemon/footprints/tauros_footprint.png
+++ b/graphics/pokemon/tauros/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/tauros_still_front_pic.png b/graphics/pokemon/tauros/front.png
index 97498f415..97498f415 100644
--- a/graphics/pokemon/front_pics/tauros_still_front_pic.png
+++ b/graphics/pokemon/tauros/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/tauros_icon.png b/graphics/pokemon/tauros/icon.png
index fc432dab9..fc432dab9 100644
--- a/graphics/pokemon/icons/tauros_icon.png
+++ b/graphics/pokemon/tauros/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/tauros_palette.pal b/graphics/pokemon/tauros/normal.pal
index 598262ca7..598262ca7 100644
--- a/graphics/pokemon/palettes/tauros_palette.pal
+++ b/graphics/pokemon/tauros/normal.pal
diff --git a/graphics/pokemon/palettes/tauros_shiny_palette.pal b/graphics/pokemon/tauros/shiny.pal
index 3f2d46d67..3f2d46d67 100644
--- a/graphics/pokemon/palettes/tauros_shiny_palette.pal
+++ b/graphics/pokemon/tauros/shiny.pal
diff --git a/graphics/pokemon/back_pics/teddiursa_back_pic.png b/graphics/pokemon/teddiursa/back.png
index d79f39a5b..d79f39a5b 100644
--- a/graphics/pokemon/back_pics/teddiursa_back_pic.png
+++ b/graphics/pokemon/teddiursa/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/teddiursa_footprint.png b/graphics/pokemon/teddiursa/footprint.png
index def88c323..def88c323 100644
--- a/graphics/pokemon/footprints/teddiursa_footprint.png
+++ b/graphics/pokemon/teddiursa/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/teddiursa_still_front_pic.png b/graphics/pokemon/teddiursa/front.png
index 27651cfc8..27651cfc8 100644
--- a/graphics/pokemon/front_pics/teddiursa_still_front_pic.png
+++ b/graphics/pokemon/teddiursa/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/teddiursa_icon.png b/graphics/pokemon/teddiursa/icon.png
index 94994c86d..94994c86d 100644
--- a/graphics/pokemon/icons/teddiursa_icon.png
+++ b/graphics/pokemon/teddiursa/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/teddiursa_palette.pal b/graphics/pokemon/teddiursa/normal.pal
index a044a8e9c..a044a8e9c 100644
--- a/graphics/pokemon/palettes/teddiursa_palette.pal
+++ b/graphics/pokemon/teddiursa/normal.pal
diff --git a/graphics/pokemon/palettes/teddiursa_shiny_palette.pal b/graphics/pokemon/teddiursa/shiny.pal
index 0be332569..0be332569 100644
--- a/graphics/pokemon/palettes/teddiursa_shiny_palette.pal
+++ b/graphics/pokemon/teddiursa/shiny.pal
diff --git a/graphics/pokemon/back_pics/tentacool_back_pic.png b/graphics/pokemon/tentacool/back.png
index d603ca052..d603ca052 100644
--- a/graphics/pokemon/back_pics/tentacool_back_pic.png
+++ b/graphics/pokemon/tentacool/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/tentacool_footprint.png b/graphics/pokemon/tentacool/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/tentacool_footprint.png
+++ b/graphics/pokemon/tentacool/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/tentacool_still_front_pic.png b/graphics/pokemon/tentacool/front.png
index 038f78f89..038f78f89 100644
--- a/graphics/pokemon/front_pics/tentacool_still_front_pic.png
+++ b/graphics/pokemon/tentacool/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/tentacool_icon.png b/graphics/pokemon/tentacool/icon.png
index d29ca1938..d29ca1938 100644
--- a/graphics/pokemon/icons/tentacool_icon.png
+++ b/graphics/pokemon/tentacool/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/tentacool_palette.pal b/graphics/pokemon/tentacool/normal.pal
index 530c0a4d6..530c0a4d6 100644
--- a/graphics/pokemon/palettes/tentacool_palette.pal
+++ b/graphics/pokemon/tentacool/normal.pal
diff --git a/graphics/pokemon/palettes/tentacool_shiny_palette.pal b/graphics/pokemon/tentacool/shiny.pal
index d90b7d4a0..d90b7d4a0 100644
--- a/graphics/pokemon/palettes/tentacool_shiny_palette.pal
+++ b/graphics/pokemon/tentacool/shiny.pal
diff --git a/graphics/pokemon/back_pics/tentacruel_back_pic.png b/graphics/pokemon/tentacruel/back.png
index 232bc9259..232bc9259 100644
--- a/graphics/pokemon/back_pics/tentacruel_back_pic.png
+++ b/graphics/pokemon/tentacruel/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/tentacruel_footprint.png b/graphics/pokemon/tentacruel/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/tentacruel_footprint.png
+++ b/graphics/pokemon/tentacruel/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/tentacruel_still_front_pic.png b/graphics/pokemon/tentacruel/front.png
index 6c9579573..6c9579573 100644
--- a/graphics/pokemon/front_pics/tentacruel_still_front_pic.png
+++ b/graphics/pokemon/tentacruel/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/tentacruel_icon.png b/graphics/pokemon/tentacruel/icon.png
index 72b6da9b9..72b6da9b9 100644
--- a/graphics/pokemon/icons/tentacruel_icon.png
+++ b/graphics/pokemon/tentacruel/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/tentacruel_palette.pal b/graphics/pokemon/tentacruel/normal.pal
index 1a4cf74c2..1a4cf74c2 100644
--- a/graphics/pokemon/palettes/tentacruel_palette.pal
+++ b/graphics/pokemon/tentacruel/normal.pal
diff --git a/graphics/pokemon/palettes/tentacruel_shiny_palette.pal b/graphics/pokemon/tentacruel/shiny.pal
index b53f96599..b53f96599 100644
--- a/graphics/pokemon/palettes/tentacruel_shiny_palette.pal
+++ b/graphics/pokemon/tentacruel/shiny.pal
diff --git a/graphics/pokemon/back_pics/togepi_back_pic.png b/graphics/pokemon/togepi/back.png
index 24858fc22..24858fc22 100644
--- a/graphics/pokemon/back_pics/togepi_back_pic.png
+++ b/graphics/pokemon/togepi/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/togepi_footprint.png b/graphics/pokemon/togepi/footprint.png
index 84e75101b..84e75101b 100644
--- a/graphics/pokemon/footprints/togepi_footprint.png
+++ b/graphics/pokemon/togepi/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/togepi_still_front_pic.png b/graphics/pokemon/togepi/front.png
index 2fd04df59..2fd04df59 100644
--- a/graphics/pokemon/front_pics/togepi_still_front_pic.png
+++ b/graphics/pokemon/togepi/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/togepi_icon.png b/graphics/pokemon/togepi/icon.png
index ded646fa1..ded646fa1 100644
--- a/graphics/pokemon/icons/togepi_icon.png
+++ b/graphics/pokemon/togepi/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/togepi_palette.pal b/graphics/pokemon/togepi/normal.pal
index 6e9355508..6e9355508 100644
--- a/graphics/pokemon/palettes/togepi_palette.pal
+++ b/graphics/pokemon/togepi/normal.pal
diff --git a/graphics/pokemon/palettes/togepi_shiny_palette.pal b/graphics/pokemon/togepi/shiny.pal
index 6ce2e1be7..6ce2e1be7 100644
--- a/graphics/pokemon/palettes/togepi_shiny_palette.pal
+++ b/graphics/pokemon/togepi/shiny.pal
diff --git a/graphics/pokemon/back_pics/togetic_back_pic.png b/graphics/pokemon/togetic/back.png
index f5125735a..f5125735a 100644
--- a/graphics/pokemon/back_pics/togetic_back_pic.png
+++ b/graphics/pokemon/togetic/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/togetic_footprint.png b/graphics/pokemon/togetic/footprint.png
index b15913fa8..b15913fa8 100644
--- a/graphics/pokemon/footprints/togetic_footprint.png
+++ b/graphics/pokemon/togetic/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/togetic_still_front_pic.png b/graphics/pokemon/togetic/front.png
index 4f6fe9339..4f6fe9339 100644
--- a/graphics/pokemon/front_pics/togetic_still_front_pic.png
+++ b/graphics/pokemon/togetic/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/togetic_icon.png b/graphics/pokemon/togetic/icon.png
index 61e73ab3e..61e73ab3e 100644
--- a/graphics/pokemon/icons/togetic_icon.png
+++ b/graphics/pokemon/togetic/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/togetic_palette.pal b/graphics/pokemon/togetic/normal.pal
index c07ecff88..c07ecff88 100644
--- a/graphics/pokemon/palettes/togetic_palette.pal
+++ b/graphics/pokemon/togetic/normal.pal
diff --git a/graphics/pokemon/palettes/togetic_shiny_palette.pal b/graphics/pokemon/togetic/shiny.pal
index 6d37ce70d..6d37ce70d 100644
--- a/graphics/pokemon/palettes/togetic_shiny_palette.pal
+++ b/graphics/pokemon/togetic/shiny.pal
diff --git a/graphics/pokemon/back_pics/torchic_back_pic.png b/graphics/pokemon/torchic/back.png
index ed2c53879..ed2c53879 100644
--- a/graphics/pokemon/back_pics/torchic_back_pic.png
+++ b/graphics/pokemon/torchic/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/torchic_footprint.png b/graphics/pokemon/torchic/footprint.png
index 955afa82a..955afa82a 100644
--- a/graphics/pokemon/footprints/torchic_footprint.png
+++ b/graphics/pokemon/torchic/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/torchic_still_front_pic.png b/graphics/pokemon/torchic/front.png
index a8eeb2699..a8eeb2699 100644
--- a/graphics/pokemon/front_pics/torchic_still_front_pic.png
+++ b/graphics/pokemon/torchic/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/torchic_icon.png b/graphics/pokemon/torchic/icon.png
index 6346e2272..6346e2272 100644
--- a/graphics/pokemon/icons/torchic_icon.png
+++ b/graphics/pokemon/torchic/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/torchic_palette.pal b/graphics/pokemon/torchic/normal.pal
index 373cb59b7..373cb59b7 100644
--- a/graphics/pokemon/palettes/torchic_palette.pal
+++ b/graphics/pokemon/torchic/normal.pal
diff --git a/graphics/pokemon/palettes/torchic_shiny_palette.pal b/graphics/pokemon/torchic/shiny.pal
index 368d18494..368d18494 100644
--- a/graphics/pokemon/palettes/torchic_shiny_palette.pal
+++ b/graphics/pokemon/torchic/shiny.pal
diff --git a/graphics/pokemon/back_pics/torkoal_back_pic.png b/graphics/pokemon/torkoal/back.png
index 4eb5c4f0e..4eb5c4f0e 100644
--- a/graphics/pokemon/back_pics/torkoal_back_pic.png
+++ b/graphics/pokemon/torkoal/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/torkoal_footprint.png b/graphics/pokemon/torkoal/footprint.png
index 208f3bb77..208f3bb77 100644
--- a/graphics/pokemon/footprints/torkoal_footprint.png
+++ b/graphics/pokemon/torkoal/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/torkoal_still_front_pic.png b/graphics/pokemon/torkoal/front.png
index b19eea08b..b19eea08b 100644
--- a/graphics/pokemon/front_pics/torkoal_still_front_pic.png
+++ b/graphics/pokemon/torkoal/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/torkoal_icon.png b/graphics/pokemon/torkoal/icon.png
index 077ce4026..077ce4026 100644
--- a/graphics/pokemon/icons/torkoal_icon.png
+++ b/graphics/pokemon/torkoal/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/torkoal_palette.pal b/graphics/pokemon/torkoal/normal.pal
index 85caef491..85caef491 100644
--- a/graphics/pokemon/palettes/torkoal_palette.pal
+++ b/graphics/pokemon/torkoal/normal.pal
diff --git a/graphics/pokemon/palettes/torkoal_shiny_palette.pal b/graphics/pokemon/torkoal/shiny.pal
index 70194b9f1..70194b9f1 100644
--- a/graphics/pokemon/palettes/torkoal_shiny_palette.pal
+++ b/graphics/pokemon/torkoal/shiny.pal
diff --git a/graphics/pokemon/back_pics/totodile_back_pic.png b/graphics/pokemon/totodile/back.png
index 1ac54c7bd..1ac54c7bd 100644
--- a/graphics/pokemon/back_pics/totodile_back_pic.png
+++ b/graphics/pokemon/totodile/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/totodile_footprint.png b/graphics/pokemon/totodile/footprint.png
index 210260273..210260273 100644
--- a/graphics/pokemon/footprints/totodile_footprint.png
+++ b/graphics/pokemon/totodile/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/totodile_still_front_pic.png b/graphics/pokemon/totodile/front.png
index d65863e81..d65863e81 100644
--- a/graphics/pokemon/front_pics/totodile_still_front_pic.png
+++ b/graphics/pokemon/totodile/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/totodile_icon.png b/graphics/pokemon/totodile/icon.png
index c2bc68521..c2bc68521 100644
--- a/graphics/pokemon/icons/totodile_icon.png
+++ b/graphics/pokemon/totodile/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/totodile_palette.pal b/graphics/pokemon/totodile/normal.pal
index 8a68271f6..8a68271f6 100644
--- a/graphics/pokemon/palettes/totodile_palette.pal
+++ b/graphics/pokemon/totodile/normal.pal
diff --git a/graphics/pokemon/palettes/totodile_shiny_palette.pal b/graphics/pokemon/totodile/shiny.pal
index 609f22253..609f22253 100644
--- a/graphics/pokemon/palettes/totodile_shiny_palette.pal
+++ b/graphics/pokemon/totodile/shiny.pal
diff --git a/graphics/pokemon/back_pics/trapinch_back_pic.png b/graphics/pokemon/trapinch/back.png
index 61eec3c92..61eec3c92 100644
--- a/graphics/pokemon/back_pics/trapinch_back_pic.png
+++ b/graphics/pokemon/trapinch/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/trapinch_footprint.png b/graphics/pokemon/trapinch/footprint.png
index c3e6e785b..c3e6e785b 100644
--- a/graphics/pokemon/footprints/trapinch_footprint.png
+++ b/graphics/pokemon/trapinch/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/trapinch_still_front_pic.png b/graphics/pokemon/trapinch/front.png
index 48dd7951a..48dd7951a 100644
--- a/graphics/pokemon/front_pics/trapinch_still_front_pic.png
+++ b/graphics/pokemon/trapinch/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/trapinch_icon.png b/graphics/pokemon/trapinch/icon.png
index 731dbf569..731dbf569 100644
--- a/graphics/pokemon/icons/trapinch_icon.png
+++ b/graphics/pokemon/trapinch/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/trapinch_palette.pal b/graphics/pokemon/trapinch/normal.pal
index 2344a7eca..2344a7eca 100644
--- a/graphics/pokemon/palettes/trapinch_palette.pal
+++ b/graphics/pokemon/trapinch/normal.pal
diff --git a/graphics/pokemon/palettes/trapinch_shiny_palette.pal b/graphics/pokemon/trapinch/shiny.pal
index 87ce33ef0..87ce33ef0 100644
--- a/graphics/pokemon/palettes/trapinch_shiny_palette.pal
+++ b/graphics/pokemon/trapinch/shiny.pal
diff --git a/graphics/pokemon/back_pics/treecko_back_pic.png b/graphics/pokemon/treecko/back.png
index 89e53390d..89e53390d 100644
--- a/graphics/pokemon/back_pics/treecko_back_pic.png
+++ b/graphics/pokemon/treecko/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/treecko_footprint.png b/graphics/pokemon/treecko/footprint.png
index ed3854702..ed3854702 100644
--- a/graphics/pokemon/footprints/treecko_footprint.png
+++ b/graphics/pokemon/treecko/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/treecko_still_front_pic.png b/graphics/pokemon/treecko/front.png
index 7cacddaae..7cacddaae 100644
--- a/graphics/pokemon/front_pics/treecko_still_front_pic.png
+++ b/graphics/pokemon/treecko/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/treecko_icon.png b/graphics/pokemon/treecko/icon.png
index f51358adf..f51358adf 100644
--- a/graphics/pokemon/icons/treecko_icon.png
+++ b/graphics/pokemon/treecko/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/treecko_palette.pal b/graphics/pokemon/treecko/normal.pal
index 987a3a5b9..987a3a5b9 100644
--- a/graphics/pokemon/palettes/treecko_palette.pal
+++ b/graphics/pokemon/treecko/normal.pal
diff --git a/graphics/pokemon/palettes/treecko_shiny_palette.pal b/graphics/pokemon/treecko/shiny.pal
index da5dda0e4..da5dda0e4 100644
--- a/graphics/pokemon/palettes/treecko_shiny_palette.pal
+++ b/graphics/pokemon/treecko/shiny.pal
diff --git a/graphics/pokemon/back_pics/tropius_back_pic.png b/graphics/pokemon/tropius/back.png
index d948c3dc0..d948c3dc0 100644
--- a/graphics/pokemon/back_pics/tropius_back_pic.png
+++ b/graphics/pokemon/tropius/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/tropius_footprint.png b/graphics/pokemon/tropius/footprint.png
index e6e7e8795..e6e7e8795 100644
--- a/graphics/pokemon/footprints/tropius_footprint.png
+++ b/graphics/pokemon/tropius/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/tropius_still_front_pic.png b/graphics/pokemon/tropius/front.png
index e2ae021cb..e2ae021cb 100644
--- a/graphics/pokemon/front_pics/tropius_still_front_pic.png
+++ b/graphics/pokemon/tropius/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/tropius_icon.png b/graphics/pokemon/tropius/icon.png
index dabfcd295..dabfcd295 100644
--- a/graphics/pokemon/icons/tropius_icon.png
+++ b/graphics/pokemon/tropius/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/tropius_palette.pal b/graphics/pokemon/tropius/normal.pal
index efe3d75ab..efe3d75ab 100644
--- a/graphics/pokemon/palettes/tropius_palette.pal
+++ b/graphics/pokemon/tropius/normal.pal
diff --git a/graphics/pokemon/palettes/tropius_shiny_palette.pal b/graphics/pokemon/tropius/shiny.pal
index cb02cf449..cb02cf449 100644
--- a/graphics/pokemon/palettes/tropius_shiny_palette.pal
+++ b/graphics/pokemon/tropius/shiny.pal
diff --git a/graphics/pokemon/back_pics/typhlosion_back_pic.png b/graphics/pokemon/typhlosion/back.png
index deb3ffb0d..deb3ffb0d 100644
--- a/graphics/pokemon/back_pics/typhlosion_back_pic.png
+++ b/graphics/pokemon/typhlosion/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/typhlosion_footprint.png b/graphics/pokemon/typhlosion/footprint.png
index 1d4492cf1..1d4492cf1 100644
--- a/graphics/pokemon/footprints/typhlosion_footprint.png
+++ b/graphics/pokemon/typhlosion/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/typhlosion_still_front_pic.png b/graphics/pokemon/typhlosion/front.png
index 22ab5cd90..22ab5cd90 100644
--- a/graphics/pokemon/front_pics/typhlosion_still_front_pic.png
+++ b/graphics/pokemon/typhlosion/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/typhlosion_icon.png b/graphics/pokemon/typhlosion/icon.png
index e15d7b683..e15d7b683 100644
--- a/graphics/pokemon/icons/typhlosion_icon.png
+++ b/graphics/pokemon/typhlosion/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/typhlosion_palette.pal b/graphics/pokemon/typhlosion/normal.pal
index 72f0c9c8c..72f0c9c8c 100644
--- a/graphics/pokemon/palettes/typhlosion_palette.pal
+++ b/graphics/pokemon/typhlosion/normal.pal
diff --git a/graphics/pokemon/palettes/typhlosion_shiny_palette.pal b/graphics/pokemon/typhlosion/shiny.pal
index 42fb4ee9c..42fb4ee9c 100644
--- a/graphics/pokemon/palettes/typhlosion_shiny_palette.pal
+++ b/graphics/pokemon/typhlosion/shiny.pal
diff --git a/graphics/pokemon/back_pics/tyranitar_back_pic.png b/graphics/pokemon/tyranitar/back.png
index 273318be0..273318be0 100644
--- a/graphics/pokemon/back_pics/tyranitar_back_pic.png
+++ b/graphics/pokemon/tyranitar/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/tyranitar_footprint.png b/graphics/pokemon/tyranitar/footprint.png
index ea12c75b0..ea12c75b0 100644
--- a/graphics/pokemon/footprints/tyranitar_footprint.png
+++ b/graphics/pokemon/tyranitar/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/tyranitar_still_front_pic.png b/graphics/pokemon/tyranitar/front.png
index a1035064b..a1035064b 100644
--- a/graphics/pokemon/front_pics/tyranitar_still_front_pic.png
+++ b/graphics/pokemon/tyranitar/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/tyranitar_icon.png b/graphics/pokemon/tyranitar/icon.png
index 76113bc68..76113bc68 100644
--- a/graphics/pokemon/icons/tyranitar_icon.png
+++ b/graphics/pokemon/tyranitar/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/tyranitar_palette.pal b/graphics/pokemon/tyranitar/normal.pal
index 6c5e2941c..6c5e2941c 100644
--- a/graphics/pokemon/palettes/tyranitar_palette.pal
+++ b/graphics/pokemon/tyranitar/normal.pal
diff --git a/graphics/pokemon/palettes/tyranitar_shiny_palette.pal b/graphics/pokemon/tyranitar/shiny.pal
index 3090536a9..3090536a9 100644
--- a/graphics/pokemon/palettes/tyranitar_shiny_palette.pal
+++ b/graphics/pokemon/tyranitar/shiny.pal
diff --git a/graphics/pokemon/back_pics/tyrogue_back_pic.png b/graphics/pokemon/tyrogue/back.png
index 1d6b2e198..1d6b2e198 100644
--- a/graphics/pokemon/back_pics/tyrogue_back_pic.png
+++ b/graphics/pokemon/tyrogue/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/tyrogue_footprint.png b/graphics/pokemon/tyrogue/footprint.png
index 0ef849eb8..0ef849eb8 100644
--- a/graphics/pokemon/footprints/tyrogue_footprint.png
+++ b/graphics/pokemon/tyrogue/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/tyrogue_still_front_pic.png b/graphics/pokemon/tyrogue/front.png
index cd12978ae..cd12978ae 100644
--- a/graphics/pokemon/front_pics/tyrogue_still_front_pic.png
+++ b/graphics/pokemon/tyrogue/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/tyrogue_icon.png b/graphics/pokemon/tyrogue/icon.png
index 10099d5cf..10099d5cf 100644
--- a/graphics/pokemon/icons/tyrogue_icon.png
+++ b/graphics/pokemon/tyrogue/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/tyrogue_palette.pal b/graphics/pokemon/tyrogue/normal.pal
index 97bff0783..97bff0783 100644
--- a/graphics/pokemon/palettes/tyrogue_palette.pal
+++ b/graphics/pokemon/tyrogue/normal.pal
diff --git a/graphics/pokemon/palettes/tyrogue_shiny_palette.pal b/graphics/pokemon/tyrogue/shiny.pal
index e8fef8a16..e8fef8a16 100644
--- a/graphics/pokemon/palettes/tyrogue_shiny_palette.pal
+++ b/graphics/pokemon/tyrogue/shiny.pal
diff --git a/graphics/pokemon/back_pics/umbreon_back_pic.png b/graphics/pokemon/umbreon/back.png
index d73508aed..d73508aed 100644
--- a/graphics/pokemon/back_pics/umbreon_back_pic.png
+++ b/graphics/pokemon/umbreon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/umbreon_footprint.png b/graphics/pokemon/umbreon/footprint.png
index a1d897dc3..a1d897dc3 100644
--- a/graphics/pokemon/footprints/umbreon_footprint.png
+++ b/graphics/pokemon/umbreon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/umbreon_still_front_pic.png b/graphics/pokemon/umbreon/front.png
index 8fbc3b0f2..8fbc3b0f2 100644
--- a/graphics/pokemon/front_pics/umbreon_still_front_pic.png
+++ b/graphics/pokemon/umbreon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/umbreon_icon.png b/graphics/pokemon/umbreon/icon.png
index 8d8d867c2..8d8d867c2 100644
--- a/graphics/pokemon/icons/umbreon_icon.png
+++ b/graphics/pokemon/umbreon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/umbreon_palette.pal b/graphics/pokemon/umbreon/normal.pal
index dc6ec68e6..dc6ec68e6 100644
--- a/graphics/pokemon/palettes/umbreon_palette.pal
+++ b/graphics/pokemon/umbreon/normal.pal
diff --git a/graphics/pokemon/palettes/umbreon_shiny_palette.pal b/graphics/pokemon/umbreon/shiny.pal
index 82c71e1ae..82c71e1ae 100644
--- a/graphics/pokemon/palettes/umbreon_shiny_palette.pal
+++ b/graphics/pokemon/umbreon/shiny.pal
diff --git a/graphics/pokemon/back_pics/unown_a_back_pic.png b/graphics/pokemon/unown/a/back.png
index b90973023..b90973023 100644
--- a/graphics/pokemon/back_pics/unown_a_back_pic.png
+++ b/graphics/pokemon/unown/a/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_a_still_front_pic.png b/graphics/pokemon/unown/a/front.png
index 697de36dc..697de36dc 100644
--- a/graphics/pokemon/front_pics/unown_a_still_front_pic.png
+++ b/graphics/pokemon/unown/a/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_a_icon.png b/graphics/pokemon/unown/a/icon.png
index cd9056ab2..cd9056ab2 100644
--- a/graphics/pokemon/icons/unown_a_icon.png
+++ b/graphics/pokemon/unown/a/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_b_back_pic.png b/graphics/pokemon/unown/b/back.png
index b398754ca..b398754ca 100644
--- a/graphics/pokemon/back_pics/unown_b_back_pic.png
+++ b/graphics/pokemon/unown/b/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_b_still_front_pic.png b/graphics/pokemon/unown/b/front.png
index fbe2e4623..fbe2e4623 100644
--- a/graphics/pokemon/front_pics/unown_b_still_front_pic.png
+++ b/graphics/pokemon/unown/b/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_B_icon.png b/graphics/pokemon/unown/b/icon.png
index 47654aba5..47654aba5 100644
--- a/graphics/pokemon/icons/unown_B_icon.png
+++ b/graphics/pokemon/unown/b/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_c_back_pic.png b/graphics/pokemon/unown/c/back.png
index b9bccf4c5..b9bccf4c5 100644
--- a/graphics/pokemon/back_pics/unown_c_back_pic.png
+++ b/graphics/pokemon/unown/c/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_c_still_front_pic.png b/graphics/pokemon/unown/c/front.png
index c5ef1c457..c5ef1c457 100644
--- a/graphics/pokemon/front_pics/unown_c_still_front_pic.png
+++ b/graphics/pokemon/unown/c/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_C_icon.png b/graphics/pokemon/unown/c/icon.png
index 7b8721a7d..7b8721a7d 100644
--- a/graphics/pokemon/icons/unown_C_icon.png
+++ b/graphics/pokemon/unown/c/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_d_back_pic.png b/graphics/pokemon/unown/d/back.png
index 1b3f19b09..1b3f19b09 100644
--- a/graphics/pokemon/back_pics/unown_d_back_pic.png
+++ b/graphics/pokemon/unown/d/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_d_still_front_pic.png b/graphics/pokemon/unown/d/front.png
index c39b26120..c39b26120 100644
--- a/graphics/pokemon/front_pics/unown_d_still_front_pic.png
+++ b/graphics/pokemon/unown/d/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_D_icon.png b/graphics/pokemon/unown/d/icon.png
index db6b0cf8a..db6b0cf8a 100644
--- a/graphics/pokemon/icons/unown_D_icon.png
+++ b/graphics/pokemon/unown/d/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_e_back_pic.png b/graphics/pokemon/unown/e/back.png
index 1baaf759f..1baaf759f 100644
--- a/graphics/pokemon/back_pics/unown_e_back_pic.png
+++ b/graphics/pokemon/unown/e/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_e_still_front_pic.png b/graphics/pokemon/unown/e/front.png
index 81e3f9c93..81e3f9c93 100644
--- a/graphics/pokemon/front_pics/unown_e_still_front_pic.png
+++ b/graphics/pokemon/unown/e/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_E_icon.png b/graphics/pokemon/unown/e/icon.png
index 6addb828e..6addb828e 100644
--- a/graphics/pokemon/icons/unown_E_icon.png
+++ b/graphics/pokemon/unown/e/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_exclamation_mark_back_pic.png b/graphics/pokemon/unown/exclamation_mark/back.png
index cb05b906d..cb05b906d 100644
--- a/graphics/pokemon/back_pics/unown_exclamation_mark_back_pic.png
+++ b/graphics/pokemon/unown/exclamation_mark/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_exclamation_mark_still_front_pic.png b/graphics/pokemon/unown/exclamation_mark/front.png
index 86f329f92..86f329f92 100644
--- a/graphics/pokemon/front_pics/unown_exclamation_mark_still_front_pic.png
+++ b/graphics/pokemon/unown/exclamation_mark/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_exclamation_mark_icon.png b/graphics/pokemon/unown/exclamation_mark/icon.png
index beeea4ae1..beeea4ae1 100644
--- a/graphics/pokemon/icons/unown_exclamation_mark_icon.png
+++ b/graphics/pokemon/unown/exclamation_mark/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_f_back_pic.png b/graphics/pokemon/unown/f/back.png
index 30be252f9..30be252f9 100644
--- a/graphics/pokemon/back_pics/unown_f_back_pic.png
+++ b/graphics/pokemon/unown/f/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_f_still_front_pic.png b/graphics/pokemon/unown/f/front.png
index 8e61eb768..8e61eb768 100644
--- a/graphics/pokemon/front_pics/unown_f_still_front_pic.png
+++ b/graphics/pokemon/unown/f/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_F_icon.png b/graphics/pokemon/unown/f/icon.png
index 3c45017b1..3c45017b1 100644
--- a/graphics/pokemon/icons/unown_F_icon.png
+++ b/graphics/pokemon/unown/f/icon.png
Binary files differ
diff --git a/graphics/pokemon/footprints/unown_footprint.png b/graphics/pokemon/unown/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/unown_footprint.png
+++ b/graphics/pokemon/unown/footprint.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_g_back_pic.png b/graphics/pokemon/unown/g/back.png
index ec5e708bf..ec5e708bf 100644
--- a/graphics/pokemon/back_pics/unown_g_back_pic.png
+++ b/graphics/pokemon/unown/g/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_g_still_front_pic.png b/graphics/pokemon/unown/g/front.png
index 4f665124a..4f665124a 100644
--- a/graphics/pokemon/front_pics/unown_g_still_front_pic.png
+++ b/graphics/pokemon/unown/g/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_G_icon.png b/graphics/pokemon/unown/g/icon.png
index ab00f8ad2..ab00f8ad2 100644
--- a/graphics/pokemon/icons/unown_G_icon.png
+++ b/graphics/pokemon/unown/g/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_h_back_pic.png b/graphics/pokemon/unown/h/back.png
index 992e34e21..992e34e21 100644
--- a/graphics/pokemon/back_pics/unown_h_back_pic.png
+++ b/graphics/pokemon/unown/h/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_h_still_front_pic.png b/graphics/pokemon/unown/h/front.png
index f8ab66963..f8ab66963 100644
--- a/graphics/pokemon/front_pics/unown_h_still_front_pic.png
+++ b/graphics/pokemon/unown/h/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_H_icon.png b/graphics/pokemon/unown/h/icon.png
index bd4fd96bf..bd4fd96bf 100644
--- a/graphics/pokemon/icons/unown_H_icon.png
+++ b/graphics/pokemon/unown/h/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_i_back_pic.png b/graphics/pokemon/unown/i/back.png
index 5640fd5e0..5640fd5e0 100644
--- a/graphics/pokemon/back_pics/unown_i_back_pic.png
+++ b/graphics/pokemon/unown/i/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_i_still_front_pic.png b/graphics/pokemon/unown/i/front.png
index ebc8a51a9..ebc8a51a9 100644
--- a/graphics/pokemon/front_pics/unown_i_still_front_pic.png
+++ b/graphics/pokemon/unown/i/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_I_icon.png b/graphics/pokemon/unown/i/icon.png
index 6973196bb..6973196bb 100644
--- a/graphics/pokemon/icons/unown_I_icon.png
+++ b/graphics/pokemon/unown/i/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_j_back_pic.png b/graphics/pokemon/unown/j/back.png
index 619ebb75b..619ebb75b 100644
--- a/graphics/pokemon/back_pics/unown_j_back_pic.png
+++ b/graphics/pokemon/unown/j/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_j_still_front_pic.png b/graphics/pokemon/unown/j/front.png
index 4c1f4ed2e..4c1f4ed2e 100644
--- a/graphics/pokemon/front_pics/unown_j_still_front_pic.png
+++ b/graphics/pokemon/unown/j/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_J_icon.png b/graphics/pokemon/unown/j/icon.png
index b85a45a71..b85a45a71 100644
--- a/graphics/pokemon/icons/unown_J_icon.png
+++ b/graphics/pokemon/unown/j/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_k_back_pic.png b/graphics/pokemon/unown/k/back.png
index 46ac175bc..46ac175bc 100644
--- a/graphics/pokemon/back_pics/unown_k_back_pic.png
+++ b/graphics/pokemon/unown/k/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_k_still_front_pic.png b/graphics/pokemon/unown/k/front.png
index 8ccce125e..8ccce125e 100644
--- a/graphics/pokemon/front_pics/unown_k_still_front_pic.png
+++ b/graphics/pokemon/unown/k/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_K_icon.png b/graphics/pokemon/unown/k/icon.png
index 81bcb385e..81bcb385e 100644
--- a/graphics/pokemon/icons/unown_K_icon.png
+++ b/graphics/pokemon/unown/k/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_l_back_pic.png b/graphics/pokemon/unown/l/back.png
index da0c6c5f5..da0c6c5f5 100644
--- a/graphics/pokemon/back_pics/unown_l_back_pic.png
+++ b/graphics/pokemon/unown/l/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_l_still_front_pic.png b/graphics/pokemon/unown/l/front.png
index 6bb837167..6bb837167 100644
--- a/graphics/pokemon/front_pics/unown_l_still_front_pic.png
+++ b/graphics/pokemon/unown/l/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_L_icon.png b/graphics/pokemon/unown/l/icon.png
index 5f6fb9db8..5f6fb9db8 100644
--- a/graphics/pokemon/icons/unown_L_icon.png
+++ b/graphics/pokemon/unown/l/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_m_back_pic.png b/graphics/pokemon/unown/m/back.png
index 37dd0a97f..37dd0a97f 100644
--- a/graphics/pokemon/back_pics/unown_m_back_pic.png
+++ b/graphics/pokemon/unown/m/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_m_still_front_pic.png b/graphics/pokemon/unown/m/front.png
index 981c7f801..981c7f801 100644
--- a/graphics/pokemon/front_pics/unown_m_still_front_pic.png
+++ b/graphics/pokemon/unown/m/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_M_icon.png b/graphics/pokemon/unown/m/icon.png
index c9b8d0fb4..c9b8d0fb4 100644
--- a/graphics/pokemon/icons/unown_M_icon.png
+++ b/graphics/pokemon/unown/m/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_n_back_pic.png b/graphics/pokemon/unown/n/back.png
index 17163be73..17163be73 100644
--- a/graphics/pokemon/back_pics/unown_n_back_pic.png
+++ b/graphics/pokemon/unown/n/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_n_still_front_pic.png b/graphics/pokemon/unown/n/front.png
index cff797db4..cff797db4 100644
--- a/graphics/pokemon/front_pics/unown_n_still_front_pic.png
+++ b/graphics/pokemon/unown/n/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_N_icon.png b/graphics/pokemon/unown/n/icon.png
index b1e5c5abb..b1e5c5abb 100644
--- a/graphics/pokemon/icons/unown_N_icon.png
+++ b/graphics/pokemon/unown/n/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/unown_palette.pal b/graphics/pokemon/unown/normal.pal
index 6babb2d90..6babb2d90 100644
--- a/graphics/pokemon/palettes/unown_palette.pal
+++ b/graphics/pokemon/unown/normal.pal
diff --git a/graphics/pokemon/back_pics/unown_o_back_pic.png b/graphics/pokemon/unown/o/back.png
index 7260da757..7260da757 100644
--- a/graphics/pokemon/back_pics/unown_o_back_pic.png
+++ b/graphics/pokemon/unown/o/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_o_still_front_pic.png b/graphics/pokemon/unown/o/front.png
index 8b8e81295..8b8e81295 100644
--- a/graphics/pokemon/front_pics/unown_o_still_front_pic.png
+++ b/graphics/pokemon/unown/o/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_O_icon.png b/graphics/pokemon/unown/o/icon.png
index 14a88d062..14a88d062 100644
--- a/graphics/pokemon/icons/unown_O_icon.png
+++ b/graphics/pokemon/unown/o/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_p_back_pic.png b/graphics/pokemon/unown/p/back.png
index e275a3a96..e275a3a96 100644
--- a/graphics/pokemon/back_pics/unown_p_back_pic.png
+++ b/graphics/pokemon/unown/p/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_p_still_front_pic.png b/graphics/pokemon/unown/p/front.png
index 99a7c98e2..99a7c98e2 100644
--- a/graphics/pokemon/front_pics/unown_p_still_front_pic.png
+++ b/graphics/pokemon/unown/p/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_P_icon.png b/graphics/pokemon/unown/p/icon.png
index 7a7afb8de..7a7afb8de 100644
--- a/graphics/pokemon/icons/unown_P_icon.png
+++ b/graphics/pokemon/unown/p/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_q_back_pic.png b/graphics/pokemon/unown/q/back.png
index 08d5a0d0a..08d5a0d0a 100644
--- a/graphics/pokemon/back_pics/unown_q_back_pic.png
+++ b/graphics/pokemon/unown/q/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_q_still_front_pic.png b/graphics/pokemon/unown/q/front.png
index fe94c27fa..fe94c27fa 100644
--- a/graphics/pokemon/front_pics/unown_q_still_front_pic.png
+++ b/graphics/pokemon/unown/q/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_Q_icon.png b/graphics/pokemon/unown/q/icon.png
index 2270f8373..2270f8373 100644
--- a/graphics/pokemon/icons/unown_Q_icon.png
+++ b/graphics/pokemon/unown/q/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_question_mark_back_pic.png b/graphics/pokemon/unown/question_mark/back.png
index 3d9ae3ee3..3d9ae3ee3 100644
--- a/graphics/pokemon/back_pics/unown_question_mark_back_pic.png
+++ b/graphics/pokemon/unown/question_mark/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_question_mark_still_front_pic.png b/graphics/pokemon/unown/question_mark/front.png
index ee0ad284c..ee0ad284c 100644
--- a/graphics/pokemon/front_pics/unown_question_mark_still_front_pic.png
+++ b/graphics/pokemon/unown/question_mark/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_question_mark_icon.png b/graphics/pokemon/unown/question_mark/icon.png
index a9bb50930..a9bb50930 100644
--- a/graphics/pokemon/icons/unown_question_mark_icon.png
+++ b/graphics/pokemon/unown/question_mark/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_r_back_pic.png b/graphics/pokemon/unown/r/back.png
index 9ea2bd6f7..9ea2bd6f7 100644
--- a/graphics/pokemon/back_pics/unown_r_back_pic.png
+++ b/graphics/pokemon/unown/r/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_r_still_front_pic.png b/graphics/pokemon/unown/r/front.png
index 4e2a40007..4e2a40007 100644
--- a/graphics/pokemon/front_pics/unown_r_still_front_pic.png
+++ b/graphics/pokemon/unown/r/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_R_icon.png b/graphics/pokemon/unown/r/icon.png
index 6ba4d5764..6ba4d5764 100644
--- a/graphics/pokemon/icons/unown_R_icon.png
+++ b/graphics/pokemon/unown/r/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_s_back_pic.png b/graphics/pokemon/unown/s/back.png
index c85571503..c85571503 100644
--- a/graphics/pokemon/back_pics/unown_s_back_pic.png
+++ b/graphics/pokemon/unown/s/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_s_still_front_pic.png b/graphics/pokemon/unown/s/front.png
index a144e27f5..a144e27f5 100644
--- a/graphics/pokemon/front_pics/unown_s_still_front_pic.png
+++ b/graphics/pokemon/unown/s/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_S_icon.png b/graphics/pokemon/unown/s/icon.png
index 44f17718b..44f17718b 100644
--- a/graphics/pokemon/icons/unown_S_icon.png
+++ b/graphics/pokemon/unown/s/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/unown_shiny_palette.pal b/graphics/pokemon/unown/shiny.pal
index 016a93548..016a93548 100644
--- a/graphics/pokemon/palettes/unown_shiny_palette.pal
+++ b/graphics/pokemon/unown/shiny.pal
diff --git a/graphics/pokemon/back_pics/unown_t_back_pic.png b/graphics/pokemon/unown/t/back.png
index f840953b8..f840953b8 100644
--- a/graphics/pokemon/back_pics/unown_t_back_pic.png
+++ b/graphics/pokemon/unown/t/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_t_still_front_pic.png b/graphics/pokemon/unown/t/front.png
index 4d5fa8b98..4d5fa8b98 100644
--- a/graphics/pokemon/front_pics/unown_t_still_front_pic.png
+++ b/graphics/pokemon/unown/t/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_T_icon.png b/graphics/pokemon/unown/t/icon.png
index 9023b7366..9023b7366 100644
--- a/graphics/pokemon/icons/unown_T_icon.png
+++ b/graphics/pokemon/unown/t/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_u_back_pic.png b/graphics/pokemon/unown/u/back.png
index 8d99bd088..8d99bd088 100644
--- a/graphics/pokemon/back_pics/unown_u_back_pic.png
+++ b/graphics/pokemon/unown/u/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_u_still_front_pic.png b/graphics/pokemon/unown/u/front.png
index 39503f01c..39503f01c 100644
--- a/graphics/pokemon/front_pics/unown_u_still_front_pic.png
+++ b/graphics/pokemon/unown/u/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_U_icon.png b/graphics/pokemon/unown/u/icon.png
index 3d315ebf2..3d315ebf2 100644
--- a/graphics/pokemon/icons/unown_U_icon.png
+++ b/graphics/pokemon/unown/u/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_v_back_pic.png b/graphics/pokemon/unown/v/back.png
index 41e215720..41e215720 100644
--- a/graphics/pokemon/back_pics/unown_v_back_pic.png
+++ b/graphics/pokemon/unown/v/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_v_still_front_pic.png b/graphics/pokemon/unown/v/front.png
index f014289bd..f014289bd 100644
--- a/graphics/pokemon/front_pics/unown_v_still_front_pic.png
+++ b/graphics/pokemon/unown/v/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_V_icon.png b/graphics/pokemon/unown/v/icon.png
index f973a3d85..f973a3d85 100644
--- a/graphics/pokemon/icons/unown_V_icon.png
+++ b/graphics/pokemon/unown/v/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_w_back_pic.png b/graphics/pokemon/unown/w/back.png
index 3d42e4eb2..3d42e4eb2 100644
--- a/graphics/pokemon/back_pics/unown_w_back_pic.png
+++ b/graphics/pokemon/unown/w/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_w_still_front_pic.png b/graphics/pokemon/unown/w/front.png
index 829804ebf..829804ebf 100644
--- a/graphics/pokemon/front_pics/unown_w_still_front_pic.png
+++ b/graphics/pokemon/unown/w/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_W_icon.png b/graphics/pokemon/unown/w/icon.png
index aabb0663e..aabb0663e 100644
--- a/graphics/pokemon/icons/unown_W_icon.png
+++ b/graphics/pokemon/unown/w/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_x_back_pic.png b/graphics/pokemon/unown/x/back.png
index a21d5a9c3..a21d5a9c3 100644
--- a/graphics/pokemon/back_pics/unown_x_back_pic.png
+++ b/graphics/pokemon/unown/x/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_x_still_front_pic.png b/graphics/pokemon/unown/x/front.png
index 053e2ee08..053e2ee08 100644
--- a/graphics/pokemon/front_pics/unown_x_still_front_pic.png
+++ b/graphics/pokemon/unown/x/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_X_icon.png b/graphics/pokemon/unown/x/icon.png
index b5be9e10b..b5be9e10b 100644
--- a/graphics/pokemon/icons/unown_X_icon.png
+++ b/graphics/pokemon/unown/x/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_y_back_pic.png b/graphics/pokemon/unown/y/back.png
index 3ccca08e8..3ccca08e8 100644
--- a/graphics/pokemon/back_pics/unown_y_back_pic.png
+++ b/graphics/pokemon/unown/y/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_y_still_front_pic.png b/graphics/pokemon/unown/y/front.png
index d8f40e27e..d8f40e27e 100644
--- a/graphics/pokemon/front_pics/unown_y_still_front_pic.png
+++ b/graphics/pokemon/unown/y/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_Y_icon.png b/graphics/pokemon/unown/y/icon.png
index 8923810aa..8923810aa 100644
--- a/graphics/pokemon/icons/unown_Y_icon.png
+++ b/graphics/pokemon/unown/y/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/unown_z_back_pic.png b/graphics/pokemon/unown/z/back.png
index e1f528a2b..e1f528a2b 100644
--- a/graphics/pokemon/back_pics/unown_z_back_pic.png
+++ b/graphics/pokemon/unown/z/back.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/unown_z_still_front_pic.png b/graphics/pokemon/unown/z/front.png
index 054eacb6d..054eacb6d 100644
--- a/graphics/pokemon/front_pics/unown_z_still_front_pic.png
+++ b/graphics/pokemon/unown/z/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/unown_Z_icon.png b/graphics/pokemon/unown/z/icon.png
index a14f73696..a14f73696 100644
--- a/graphics/pokemon/icons/unown_Z_icon.png
+++ b/graphics/pokemon/unown/z/icon.png
Binary files differ
diff --git a/graphics/pokemon/back_pics/ursaring_back_pic.png b/graphics/pokemon/ursaring/back.png
index 4a546c055..4a546c055 100644
--- a/graphics/pokemon/back_pics/ursaring_back_pic.png
+++ b/graphics/pokemon/ursaring/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/ursaring_footprint.png b/graphics/pokemon/ursaring/footprint.png
index b1023bd3b..b1023bd3b 100644
--- a/graphics/pokemon/footprints/ursaring_footprint.png
+++ b/graphics/pokemon/ursaring/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/ursaring_still_front_pic.png b/graphics/pokemon/ursaring/front.png
index 8699738b5..8699738b5 100644
--- a/graphics/pokemon/front_pics/ursaring_still_front_pic.png
+++ b/graphics/pokemon/ursaring/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/ursaring_icon.png b/graphics/pokemon/ursaring/icon.png
index 143353f31..143353f31 100644
--- a/graphics/pokemon/icons/ursaring_icon.png
+++ b/graphics/pokemon/ursaring/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/ursaring_palette.pal b/graphics/pokemon/ursaring/normal.pal
index e77c0b345..e77c0b345 100644
--- a/graphics/pokemon/palettes/ursaring_palette.pal
+++ b/graphics/pokemon/ursaring/normal.pal
diff --git a/graphics/pokemon/palettes/ursaring_shiny_palette.pal b/graphics/pokemon/ursaring/shiny.pal
index 7bb95b380..7bb95b380 100644
--- a/graphics/pokemon/palettes/ursaring_shiny_palette.pal
+++ b/graphics/pokemon/ursaring/shiny.pal
diff --git a/graphics/pokemon/back_pics/vaporeon_back_pic.png b/graphics/pokemon/vaporeon/back.png
index 5ac5b94fb..5ac5b94fb 100644
--- a/graphics/pokemon/back_pics/vaporeon_back_pic.png
+++ b/graphics/pokemon/vaporeon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/vaporeon_footprint.png b/graphics/pokemon/vaporeon/footprint.png
index 2b44d4b24..2b44d4b24 100644
--- a/graphics/pokemon/footprints/vaporeon_footprint.png
+++ b/graphics/pokemon/vaporeon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/vaporeon_still_front_pic.png b/graphics/pokemon/vaporeon/front.png
index af9a0f999..af9a0f999 100644
--- a/graphics/pokemon/front_pics/vaporeon_still_front_pic.png
+++ b/graphics/pokemon/vaporeon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/vaporeon_icon.png b/graphics/pokemon/vaporeon/icon.png
index d4003c2a8..d4003c2a8 100644
--- a/graphics/pokemon/icons/vaporeon_icon.png
+++ b/graphics/pokemon/vaporeon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/vaporeon_palette.pal b/graphics/pokemon/vaporeon/normal.pal
index e6a4024f1..e6a4024f1 100644
--- a/graphics/pokemon/palettes/vaporeon_palette.pal
+++ b/graphics/pokemon/vaporeon/normal.pal
diff --git a/graphics/pokemon/palettes/vaporeon_shiny_palette.pal b/graphics/pokemon/vaporeon/shiny.pal
index 1cfaae92b..1cfaae92b 100644
--- a/graphics/pokemon/palettes/vaporeon_shiny_palette.pal
+++ b/graphics/pokemon/vaporeon/shiny.pal
diff --git a/graphics/pokemon/back_pics/venomoth_back_pic.png b/graphics/pokemon/venomoth/back.png
index 910608088..910608088 100644
--- a/graphics/pokemon/back_pics/venomoth_back_pic.png
+++ b/graphics/pokemon/venomoth/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/venomoth_footprint.png b/graphics/pokemon/venomoth/footprint.png
index 6965dbe60..6965dbe60 100644
--- a/graphics/pokemon/footprints/venomoth_footprint.png
+++ b/graphics/pokemon/venomoth/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/venomoth_still_front_pic.png b/graphics/pokemon/venomoth/front.png
index 3abc34f90..3abc34f90 100644
--- a/graphics/pokemon/front_pics/venomoth_still_front_pic.png
+++ b/graphics/pokemon/venomoth/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/venomoth_icon.png b/graphics/pokemon/venomoth/icon.png
index d77b6dce8..d77b6dce8 100644
--- a/graphics/pokemon/icons/venomoth_icon.png
+++ b/graphics/pokemon/venomoth/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/venomoth_palette.pal b/graphics/pokemon/venomoth/normal.pal
index 4ebc1f953..4ebc1f953 100644
--- a/graphics/pokemon/palettes/venomoth_palette.pal
+++ b/graphics/pokemon/venomoth/normal.pal
diff --git a/graphics/pokemon/palettes/venomoth_shiny_palette.pal b/graphics/pokemon/venomoth/shiny.pal
index 89ad92feb..89ad92feb 100644
--- a/graphics/pokemon/palettes/venomoth_shiny_palette.pal
+++ b/graphics/pokemon/venomoth/shiny.pal
diff --git a/graphics/pokemon/back_pics/venonat_back_pic.png b/graphics/pokemon/venonat/back.png
index 44f7f45c5..44f7f45c5 100644
--- a/graphics/pokemon/back_pics/venonat_back_pic.png
+++ b/graphics/pokemon/venonat/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/venonat_footprint.png b/graphics/pokemon/venonat/footprint.png
index 3675945c9..3675945c9 100644
--- a/graphics/pokemon/footprints/venonat_footprint.png
+++ b/graphics/pokemon/venonat/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/venonat_still_front_pic.png b/graphics/pokemon/venonat/front.png
index 7370b39c0..7370b39c0 100644
--- a/graphics/pokemon/front_pics/venonat_still_front_pic.png
+++ b/graphics/pokemon/venonat/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/venonat_icon.png b/graphics/pokemon/venonat/icon.png
index a2ed54b71..a2ed54b71 100644
--- a/graphics/pokemon/icons/venonat_icon.png
+++ b/graphics/pokemon/venonat/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/venonat_palette.pal b/graphics/pokemon/venonat/normal.pal
index 26db14b2d..26db14b2d 100644
--- a/graphics/pokemon/palettes/venonat_palette.pal
+++ b/graphics/pokemon/venonat/normal.pal
diff --git a/graphics/pokemon/palettes/venonat_shiny_palette.pal b/graphics/pokemon/venonat/shiny.pal
index 88c346a27..88c346a27 100644
--- a/graphics/pokemon/palettes/venonat_shiny_palette.pal
+++ b/graphics/pokemon/venonat/shiny.pal
diff --git a/graphics/pokemon/back_pics/venusaur_back_pic.png b/graphics/pokemon/venusaur/back.png
index e2d19152c..e2d19152c 100644
--- a/graphics/pokemon/back_pics/venusaur_back_pic.png
+++ b/graphics/pokemon/venusaur/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/venusaur_footprint.png b/graphics/pokemon/venusaur/footprint.png
index bdef2c818..bdef2c818 100644
--- a/graphics/pokemon/footprints/venusaur_footprint.png
+++ b/graphics/pokemon/venusaur/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/venusaur_still_front_pic.png b/graphics/pokemon/venusaur/front.png
index 8f0521e26..8f0521e26 100644
--- a/graphics/pokemon/front_pics/venusaur_still_front_pic.png
+++ b/graphics/pokemon/venusaur/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/venusaur_icon.png b/graphics/pokemon/venusaur/icon.png
index fbd5380f5..fbd5380f5 100644
--- a/graphics/pokemon/icons/venusaur_icon.png
+++ b/graphics/pokemon/venusaur/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/venusaur_palette.pal b/graphics/pokemon/venusaur/normal.pal
index f88c8375d..f88c8375d 100644
--- a/graphics/pokemon/palettes/venusaur_palette.pal
+++ b/graphics/pokemon/venusaur/normal.pal
diff --git a/graphics/pokemon/palettes/venusaur_shiny_palette.pal b/graphics/pokemon/venusaur/shiny.pal
index b00e69629..b00e69629 100644
--- a/graphics/pokemon/palettes/venusaur_shiny_palette.pal
+++ b/graphics/pokemon/venusaur/shiny.pal
diff --git a/graphics/pokemon/back_pics/vibrava_back_pic.png b/graphics/pokemon/vibrava/back.png
index c5a0eb60b..c5a0eb60b 100644
--- a/graphics/pokemon/back_pics/vibrava_back_pic.png
+++ b/graphics/pokemon/vibrava/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/vibrava_footprint.png b/graphics/pokemon/vibrava/footprint.png
index fdf76f9f2..fdf76f9f2 100644
--- a/graphics/pokemon/footprints/vibrava_footprint.png
+++ b/graphics/pokemon/vibrava/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/vibrava_still_front_pic.png b/graphics/pokemon/vibrava/front.png
index 487ce4746..487ce4746 100644
--- a/graphics/pokemon/front_pics/vibrava_still_front_pic.png
+++ b/graphics/pokemon/vibrava/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/vibrava_icon.png b/graphics/pokemon/vibrava/icon.png
index 422ea2359..422ea2359 100644
--- a/graphics/pokemon/icons/vibrava_icon.png
+++ b/graphics/pokemon/vibrava/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/vibrava_palette.pal b/graphics/pokemon/vibrava/normal.pal
index 7f40d2316..7f40d2316 100644
--- a/graphics/pokemon/palettes/vibrava_palette.pal
+++ b/graphics/pokemon/vibrava/normal.pal
diff --git a/graphics/pokemon/palettes/vibrava_shiny_palette.pal b/graphics/pokemon/vibrava/shiny.pal
index 8da128d69..8da128d69 100644
--- a/graphics/pokemon/palettes/vibrava_shiny_palette.pal
+++ b/graphics/pokemon/vibrava/shiny.pal
diff --git a/graphics/pokemon/back_pics/victreebel_back_pic.png b/graphics/pokemon/victreebel/back.png
index a92b61f7a..a92b61f7a 100644
--- a/graphics/pokemon/back_pics/victreebel_back_pic.png
+++ b/graphics/pokemon/victreebel/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/victreebel_footprint.png b/graphics/pokemon/victreebel/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/victreebel_footprint.png
+++ b/graphics/pokemon/victreebel/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/victreebel_still_front_pic.png b/graphics/pokemon/victreebel/front.png
index 4f2d7b8f4..4f2d7b8f4 100644
--- a/graphics/pokemon/front_pics/victreebel_still_front_pic.png
+++ b/graphics/pokemon/victreebel/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/victreebel_icon.png b/graphics/pokemon/victreebel/icon.png
index 49298177e..49298177e 100644
--- a/graphics/pokemon/icons/victreebel_icon.png
+++ b/graphics/pokemon/victreebel/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/victreebel_palette.pal b/graphics/pokemon/victreebel/normal.pal
index 635eae0ab..635eae0ab 100644
--- a/graphics/pokemon/palettes/victreebel_palette.pal
+++ b/graphics/pokemon/victreebel/normal.pal
diff --git a/graphics/pokemon/palettes/victreebel_shiny_palette.pal b/graphics/pokemon/victreebel/shiny.pal
index 2542072f3..2542072f3 100644
--- a/graphics/pokemon/palettes/victreebel_shiny_palette.pal
+++ b/graphics/pokemon/victreebel/shiny.pal
diff --git a/graphics/pokemon/back_pics/vigoroth_back_pic.png b/graphics/pokemon/vigoroth/back.png
index 7d806e703..7d806e703 100644
--- a/graphics/pokemon/back_pics/vigoroth_back_pic.png
+++ b/graphics/pokemon/vigoroth/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/vigoroth_footprint.png b/graphics/pokemon/vigoroth/footprint.png
index bc10a7230..bc10a7230 100644
--- a/graphics/pokemon/footprints/vigoroth_footprint.png
+++ b/graphics/pokemon/vigoroth/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/vigoroth_still_front_pic.png b/graphics/pokemon/vigoroth/front.png
index fe87041ee..fe87041ee 100644
--- a/graphics/pokemon/front_pics/vigoroth_still_front_pic.png
+++ b/graphics/pokemon/vigoroth/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/vigoroth_icon.png b/graphics/pokemon/vigoroth/icon.png
index f8808cde3..f8808cde3 100644
--- a/graphics/pokemon/icons/vigoroth_icon.png
+++ b/graphics/pokemon/vigoroth/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/vigoroth_palette.pal b/graphics/pokemon/vigoroth/normal.pal
index 824efe711..824efe711 100644
--- a/graphics/pokemon/palettes/vigoroth_palette.pal
+++ b/graphics/pokemon/vigoroth/normal.pal
diff --git a/graphics/pokemon/palettes/vigoroth_shiny_palette.pal b/graphics/pokemon/vigoroth/shiny.pal
index adc647979..adc647979 100644
--- a/graphics/pokemon/palettes/vigoroth_shiny_palette.pal
+++ b/graphics/pokemon/vigoroth/shiny.pal
diff --git a/graphics/pokemon/back_pics/vileplume_back_pic.png b/graphics/pokemon/vileplume/back.png
index 8aa3006ee..8aa3006ee 100644
--- a/graphics/pokemon/back_pics/vileplume_back_pic.png
+++ b/graphics/pokemon/vileplume/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/vileplume_footprint.png b/graphics/pokemon/vileplume/footprint.png
index 8fd5bdf83..8fd5bdf83 100644
--- a/graphics/pokemon/footprints/vileplume_footprint.png
+++ b/graphics/pokemon/vileplume/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/vileplume_still_front_pic.png b/graphics/pokemon/vileplume/front.png
index 374cd4ddd..374cd4ddd 100644
--- a/graphics/pokemon/front_pics/vileplume_still_front_pic.png
+++ b/graphics/pokemon/vileplume/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/vileplume_icon.png b/graphics/pokemon/vileplume/icon.png
index 7009048c5..7009048c5 100644
--- a/graphics/pokemon/icons/vileplume_icon.png
+++ b/graphics/pokemon/vileplume/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/vileplume_palette.pal b/graphics/pokemon/vileplume/normal.pal
index 56a9e2e64..56a9e2e64 100644
--- a/graphics/pokemon/palettes/vileplume_palette.pal
+++ b/graphics/pokemon/vileplume/normal.pal
diff --git a/graphics/pokemon/palettes/vileplume_shiny_palette.pal b/graphics/pokemon/vileplume/shiny.pal
index 6def71be1..6def71be1 100644
--- a/graphics/pokemon/palettes/vileplume_shiny_palette.pal
+++ b/graphics/pokemon/vileplume/shiny.pal
diff --git a/graphics/pokemon/back_pics/volbeat_back_pic.png b/graphics/pokemon/volbeat/back.png
index 217b966ed..217b966ed 100644
--- a/graphics/pokemon/back_pics/volbeat_back_pic.png
+++ b/graphics/pokemon/volbeat/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/volbeat_footprint.png b/graphics/pokemon/volbeat/footprint.png
index 916c59f60..916c59f60 100644
--- a/graphics/pokemon/footprints/volbeat_footprint.png
+++ b/graphics/pokemon/volbeat/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/volbeat_still_front_pic.png b/graphics/pokemon/volbeat/front.png
index 9daf199a3..9daf199a3 100644
--- a/graphics/pokemon/front_pics/volbeat_still_front_pic.png
+++ b/graphics/pokemon/volbeat/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/volbeat_icon.png b/graphics/pokemon/volbeat/icon.png
index 849715d33..849715d33 100644
--- a/graphics/pokemon/icons/volbeat_icon.png
+++ b/graphics/pokemon/volbeat/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/volbeat_palette.pal b/graphics/pokemon/volbeat/normal.pal
index 8d2cedfa8..8d2cedfa8 100644
--- a/graphics/pokemon/palettes/volbeat_palette.pal
+++ b/graphics/pokemon/volbeat/normal.pal
diff --git a/graphics/pokemon/palettes/volbeat_shiny_palette.pal b/graphics/pokemon/volbeat/shiny.pal
index 106d373cf..106d373cf 100644
--- a/graphics/pokemon/palettes/volbeat_shiny_palette.pal
+++ b/graphics/pokemon/volbeat/shiny.pal
diff --git a/graphics/pokemon/back_pics/voltorb_back_pic.png b/graphics/pokemon/voltorb/back.png
index c379b4a8b..c379b4a8b 100644
--- a/graphics/pokemon/back_pics/voltorb_back_pic.png
+++ b/graphics/pokemon/voltorb/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/voltorb_footprint.png b/graphics/pokemon/voltorb/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/voltorb_footprint.png
+++ b/graphics/pokemon/voltorb/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/voltorb_still_front_pic.png b/graphics/pokemon/voltorb/front.png
index 046e4f9c3..046e4f9c3 100644
--- a/graphics/pokemon/front_pics/voltorb_still_front_pic.png
+++ b/graphics/pokemon/voltorb/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/voltorb_icon.png b/graphics/pokemon/voltorb/icon.png
index 53d318fdb..53d318fdb 100644
--- a/graphics/pokemon/icons/voltorb_icon.png
+++ b/graphics/pokemon/voltorb/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/voltorb_palette.pal b/graphics/pokemon/voltorb/normal.pal
index 96cf0dd7e..96cf0dd7e 100644
--- a/graphics/pokemon/palettes/voltorb_palette.pal
+++ b/graphics/pokemon/voltorb/normal.pal
diff --git a/graphics/pokemon/palettes/voltorb_shiny_palette.pal b/graphics/pokemon/voltorb/shiny.pal
index 20cb4fbfa..20cb4fbfa 100644
--- a/graphics/pokemon/palettes/voltorb_shiny_palette.pal
+++ b/graphics/pokemon/voltorb/shiny.pal
diff --git a/graphics/pokemon/back_pics/vulpix_back_pic.png b/graphics/pokemon/vulpix/back.png
index 2272a71dd..2272a71dd 100644
--- a/graphics/pokemon/back_pics/vulpix_back_pic.png
+++ b/graphics/pokemon/vulpix/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/vulpix_footprint.png b/graphics/pokemon/vulpix/footprint.png
index a0a655ca6..a0a655ca6 100644
--- a/graphics/pokemon/footprints/vulpix_footprint.png
+++ b/graphics/pokemon/vulpix/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/vulpix_still_front_pic.png b/graphics/pokemon/vulpix/front.png
index 38ec988fd..38ec988fd 100644
--- a/graphics/pokemon/front_pics/vulpix_still_front_pic.png
+++ b/graphics/pokemon/vulpix/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/vulpix_icon.png b/graphics/pokemon/vulpix/icon.png
index d998362d1..d998362d1 100644
--- a/graphics/pokemon/icons/vulpix_icon.png
+++ b/graphics/pokemon/vulpix/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/vulpix_palette.pal b/graphics/pokemon/vulpix/normal.pal
index 1e7a92f57..1e7a92f57 100644
--- a/graphics/pokemon/palettes/vulpix_palette.pal
+++ b/graphics/pokemon/vulpix/normal.pal
diff --git a/graphics/pokemon/palettes/vulpix_shiny_palette.pal b/graphics/pokemon/vulpix/shiny.pal
index ba3fa06a8..ba3fa06a8 100644
--- a/graphics/pokemon/palettes/vulpix_shiny_palette.pal
+++ b/graphics/pokemon/vulpix/shiny.pal
diff --git a/graphics/pokemon/back_pics/wailmer_back_pic.png b/graphics/pokemon/wailmer/back.png
index 9ad9f21ea..9ad9f21ea 100644
--- a/graphics/pokemon/back_pics/wailmer_back_pic.png
+++ b/graphics/pokemon/wailmer/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/wailmer_footprint.png b/graphics/pokemon/wailmer/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/wailmer_footprint.png
+++ b/graphics/pokemon/wailmer/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/wailmer_still_front_pic.png b/graphics/pokemon/wailmer/front.png
index a17d48cdf..a17d48cdf 100644
--- a/graphics/pokemon/front_pics/wailmer_still_front_pic.png
+++ b/graphics/pokemon/wailmer/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/wailmer_icon.png b/graphics/pokemon/wailmer/icon.png
index 16ba6d4b9..16ba6d4b9 100644
--- a/graphics/pokemon/icons/wailmer_icon.png
+++ b/graphics/pokemon/wailmer/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/wailmer_palette.pal b/graphics/pokemon/wailmer/normal.pal
index 4e56fb42a..4e56fb42a 100644
--- a/graphics/pokemon/palettes/wailmer_palette.pal
+++ b/graphics/pokemon/wailmer/normal.pal
diff --git a/graphics/pokemon/palettes/wailmer_shiny_palette.pal b/graphics/pokemon/wailmer/shiny.pal
index 296519dbd..296519dbd 100644
--- a/graphics/pokemon/palettes/wailmer_shiny_palette.pal
+++ b/graphics/pokemon/wailmer/shiny.pal
diff --git a/graphics/pokemon/back_pics/wailord_back_pic.png b/graphics/pokemon/wailord/back.png
index 7698ba500..7698ba500 100644
--- a/graphics/pokemon/back_pics/wailord_back_pic.png
+++ b/graphics/pokemon/wailord/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/wailord_footprint.png b/graphics/pokemon/wailord/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/wailord_footprint.png
+++ b/graphics/pokemon/wailord/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/wailord_still_front_pic.png b/graphics/pokemon/wailord/front.png
index e542cbc64..e542cbc64 100644
--- a/graphics/pokemon/front_pics/wailord_still_front_pic.png
+++ b/graphics/pokemon/wailord/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/wailord_icon.png b/graphics/pokemon/wailord/icon.png
index f84a7ea70..f84a7ea70 100644
--- a/graphics/pokemon/icons/wailord_icon.png
+++ b/graphics/pokemon/wailord/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/wailord_palette.pal b/graphics/pokemon/wailord/normal.pal
index 55fdf02f6..55fdf02f6 100644
--- a/graphics/pokemon/palettes/wailord_palette.pal
+++ b/graphics/pokemon/wailord/normal.pal
diff --git a/graphics/pokemon/palettes/wailord_shiny_palette.pal b/graphics/pokemon/wailord/shiny.pal
index 31a687fb9..31a687fb9 100644
--- a/graphics/pokemon/palettes/wailord_shiny_palette.pal
+++ b/graphics/pokemon/wailord/shiny.pal
diff --git a/graphics/pokemon/back_pics/walrein_back_pic.png b/graphics/pokemon/walrein/back.png
index c58df92b0..c58df92b0 100644
--- a/graphics/pokemon/back_pics/walrein_back_pic.png
+++ b/graphics/pokemon/walrein/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/walrein_footprint.png b/graphics/pokemon/walrein/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/walrein_footprint.png
+++ b/graphics/pokemon/walrein/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/walrein_still_front_pic.png b/graphics/pokemon/walrein/front.png
index b8458e11a..b8458e11a 100644
--- a/graphics/pokemon/front_pics/walrein_still_front_pic.png
+++ b/graphics/pokemon/walrein/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/walrein_icon.png b/graphics/pokemon/walrein/icon.png
index f98348a54..f98348a54 100644
--- a/graphics/pokemon/icons/walrein_icon.png
+++ b/graphics/pokemon/walrein/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/walrein_palette.pal b/graphics/pokemon/walrein/normal.pal
index 2b4fb8ad4..2b4fb8ad4 100644
--- a/graphics/pokemon/palettes/walrein_palette.pal
+++ b/graphics/pokemon/walrein/normal.pal
diff --git a/graphics/pokemon/palettes/walrein_shiny_palette.pal b/graphics/pokemon/walrein/shiny.pal
index 0d93d3e7d..0d93d3e7d 100644
--- a/graphics/pokemon/palettes/walrein_shiny_palette.pal
+++ b/graphics/pokemon/walrein/shiny.pal
diff --git a/graphics/pokemon/back_pics/wartortle_back_pic.png b/graphics/pokemon/wartortle/back.png
index 7a909f36d..7a909f36d 100644
--- a/graphics/pokemon/back_pics/wartortle_back_pic.png
+++ b/graphics/pokemon/wartortle/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/wartortle_footprint.png b/graphics/pokemon/wartortle/footprint.png
index 4dd126496..4dd126496 100644
--- a/graphics/pokemon/footprints/wartortle_footprint.png
+++ b/graphics/pokemon/wartortle/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/wartortle_still_front_pic.png b/graphics/pokemon/wartortle/front.png
index 067f21684..067f21684 100644
--- a/graphics/pokemon/front_pics/wartortle_still_front_pic.png
+++ b/graphics/pokemon/wartortle/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/wartortle_icon.png b/graphics/pokemon/wartortle/icon.png
index 2cdfca2d9..2cdfca2d9 100644
--- a/graphics/pokemon/icons/wartortle_icon.png
+++ b/graphics/pokemon/wartortle/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/wartortle_palette.pal b/graphics/pokemon/wartortle/normal.pal
index b497d87b3..b497d87b3 100644
--- a/graphics/pokemon/palettes/wartortle_palette.pal
+++ b/graphics/pokemon/wartortle/normal.pal
diff --git a/graphics/pokemon/palettes/wartortle_shiny_palette.pal b/graphics/pokemon/wartortle/shiny.pal
index 081f832f8..081f832f8 100644
--- a/graphics/pokemon/palettes/wartortle_shiny_palette.pal
+++ b/graphics/pokemon/wartortle/shiny.pal
diff --git a/graphics/pokemon/back_pics/weedle_back_pic.png b/graphics/pokemon/weedle/back.png
index 3180bf513..3180bf513 100644
--- a/graphics/pokemon/back_pics/weedle_back_pic.png
+++ b/graphics/pokemon/weedle/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/weedle_footprint.png b/graphics/pokemon/weedle/footprint.png
index c1c0058e7..c1c0058e7 100644
--- a/graphics/pokemon/footprints/weedle_footprint.png
+++ b/graphics/pokemon/weedle/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/weedle_still_front_pic.png b/graphics/pokemon/weedle/front.png
index db4bc28f2..db4bc28f2 100644
--- a/graphics/pokemon/front_pics/weedle_still_front_pic.png
+++ b/graphics/pokemon/weedle/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/weedle_icon.png b/graphics/pokemon/weedle/icon.png
index 3a36001c6..3a36001c6 100644
--- a/graphics/pokemon/icons/weedle_icon.png
+++ b/graphics/pokemon/weedle/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/weedle_palette.pal b/graphics/pokemon/weedle/normal.pal
index 32a4c1222..32a4c1222 100644
--- a/graphics/pokemon/palettes/weedle_palette.pal
+++ b/graphics/pokemon/weedle/normal.pal
diff --git a/graphics/pokemon/palettes/weedle_shiny_palette.pal b/graphics/pokemon/weedle/shiny.pal
index 8d572dc19..8d572dc19 100644
--- a/graphics/pokemon/palettes/weedle_shiny_palette.pal
+++ b/graphics/pokemon/weedle/shiny.pal
diff --git a/graphics/pokemon/back_pics/weepinbell_back_pic.png b/graphics/pokemon/weepinbell/back.png
index aad38d1df..aad38d1df 100644
--- a/graphics/pokemon/back_pics/weepinbell_back_pic.png
+++ b/graphics/pokemon/weepinbell/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/weepinbell_footprint.png b/graphics/pokemon/weepinbell/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/weepinbell_footprint.png
+++ b/graphics/pokemon/weepinbell/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/weepinbell_still_front_pic.png b/graphics/pokemon/weepinbell/front.png
index 19b821711..19b821711 100644
--- a/graphics/pokemon/front_pics/weepinbell_still_front_pic.png
+++ b/graphics/pokemon/weepinbell/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/weepinbell_icon.png b/graphics/pokemon/weepinbell/icon.png
index eda2fd29a..eda2fd29a 100644
--- a/graphics/pokemon/icons/weepinbell_icon.png
+++ b/graphics/pokemon/weepinbell/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/weepinbell_palette.pal b/graphics/pokemon/weepinbell/normal.pal
index 162f84084..162f84084 100644
--- a/graphics/pokemon/palettes/weepinbell_palette.pal
+++ b/graphics/pokemon/weepinbell/normal.pal
diff --git a/graphics/pokemon/palettes/weepinbell_shiny_palette.pal b/graphics/pokemon/weepinbell/shiny.pal
index 2c7c777e6..2c7c777e6 100644
--- a/graphics/pokemon/palettes/weepinbell_shiny_palette.pal
+++ b/graphics/pokemon/weepinbell/shiny.pal
diff --git a/graphics/pokemon/back_pics/weezing_back_pic.png b/graphics/pokemon/weezing/back.png
index beef9e8e4..beef9e8e4 100644
--- a/graphics/pokemon/back_pics/weezing_back_pic.png
+++ b/graphics/pokemon/weezing/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/weezing_footprint.png b/graphics/pokemon/weezing/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/weezing_footprint.png
+++ b/graphics/pokemon/weezing/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/weezing_still_front_pic.png b/graphics/pokemon/weezing/front.png
index 3c50aca9b..3c50aca9b 100644
--- a/graphics/pokemon/front_pics/weezing_still_front_pic.png
+++ b/graphics/pokemon/weezing/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/weezing_icon.png b/graphics/pokemon/weezing/icon.png
index 4ef2404a9..4ef2404a9 100644
--- a/graphics/pokemon/icons/weezing_icon.png
+++ b/graphics/pokemon/weezing/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/weezing_palette.pal b/graphics/pokemon/weezing/normal.pal
index d3d46dd7a..d3d46dd7a 100644
--- a/graphics/pokemon/palettes/weezing_palette.pal
+++ b/graphics/pokemon/weezing/normal.pal
diff --git a/graphics/pokemon/palettes/weezing_shiny_palette.pal b/graphics/pokemon/weezing/shiny.pal
index 3ba9720b5..3ba9720b5 100644
--- a/graphics/pokemon/palettes/weezing_shiny_palette.pal
+++ b/graphics/pokemon/weezing/shiny.pal
diff --git a/graphics/pokemon/back_pics/whiscash_back_pic.png b/graphics/pokemon/whiscash/back.png
index 6aad1817d..6aad1817d 100644
--- a/graphics/pokemon/back_pics/whiscash_back_pic.png
+++ b/graphics/pokemon/whiscash/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/whiscash_footprint.png b/graphics/pokemon/whiscash/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/whiscash_footprint.png
+++ b/graphics/pokemon/whiscash/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/whiscash_still_front_pic.png b/graphics/pokemon/whiscash/front.png
index 1262d3af8..1262d3af8 100644
--- a/graphics/pokemon/front_pics/whiscash_still_front_pic.png
+++ b/graphics/pokemon/whiscash/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/whiscash_icon.png b/graphics/pokemon/whiscash/icon.png
index dcd79a540..dcd79a540 100644
--- a/graphics/pokemon/icons/whiscash_icon.png
+++ b/graphics/pokemon/whiscash/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/whiscash_palette.pal b/graphics/pokemon/whiscash/normal.pal
index c6b70659b..c6b70659b 100644
--- a/graphics/pokemon/palettes/whiscash_palette.pal
+++ b/graphics/pokemon/whiscash/normal.pal
diff --git a/graphics/pokemon/palettes/whiscash_shiny_palette.pal b/graphics/pokemon/whiscash/shiny.pal
index 12554c568..12554c568 100644
--- a/graphics/pokemon/palettes/whiscash_shiny_palette.pal
+++ b/graphics/pokemon/whiscash/shiny.pal
diff --git a/graphics/pokemon/back_pics/whismur_back_pic.png b/graphics/pokemon/whismur/back.png
index f13819f15..f13819f15 100644
--- a/graphics/pokemon/back_pics/whismur_back_pic.png
+++ b/graphics/pokemon/whismur/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/whismur_footprint.png b/graphics/pokemon/whismur/footprint.png
index a2ad42b4c..a2ad42b4c 100644
--- a/graphics/pokemon/footprints/whismur_footprint.png
+++ b/graphics/pokemon/whismur/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/whismur_still_front_pic.png b/graphics/pokemon/whismur/front.png
index d12369e26..d12369e26 100644
--- a/graphics/pokemon/front_pics/whismur_still_front_pic.png
+++ b/graphics/pokemon/whismur/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/whismur_icon.png b/graphics/pokemon/whismur/icon.png
index 573dfa531..573dfa531 100644
--- a/graphics/pokemon/icons/whismur_icon.png
+++ b/graphics/pokemon/whismur/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/whismur_palette.pal b/graphics/pokemon/whismur/normal.pal
index e57bb7b39..e57bb7b39 100644
--- a/graphics/pokemon/palettes/whismur_palette.pal
+++ b/graphics/pokemon/whismur/normal.pal
diff --git a/graphics/pokemon/palettes/whismur_shiny_palette.pal b/graphics/pokemon/whismur/shiny.pal
index 395867cad..395867cad 100644
--- a/graphics/pokemon/palettes/whismur_shiny_palette.pal
+++ b/graphics/pokemon/whismur/shiny.pal
diff --git a/graphics/pokemon/back_pics/wigglytuff_back_pic.png b/graphics/pokemon/wigglytuff/back.png
index e63442a9d..e63442a9d 100644
--- a/graphics/pokemon/back_pics/wigglytuff_back_pic.png
+++ b/graphics/pokemon/wigglytuff/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/wigglytuff_footprint.png b/graphics/pokemon/wigglytuff/footprint.png
index 68ce8eda3..68ce8eda3 100644
--- a/graphics/pokemon/footprints/wigglytuff_footprint.png
+++ b/graphics/pokemon/wigglytuff/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/wigglytuff_still_front_pic.png b/graphics/pokemon/wigglytuff/front.png
index 045be7fe4..045be7fe4 100644
--- a/graphics/pokemon/front_pics/wigglytuff_still_front_pic.png
+++ b/graphics/pokemon/wigglytuff/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/wigglytuff_icon.png b/graphics/pokemon/wigglytuff/icon.png
index adb921150..adb921150 100644
--- a/graphics/pokemon/icons/wigglytuff_icon.png
+++ b/graphics/pokemon/wigglytuff/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/wigglytuff_palette.pal b/graphics/pokemon/wigglytuff/normal.pal
index 8751c488e..8751c488e 100644
--- a/graphics/pokemon/palettes/wigglytuff_palette.pal
+++ b/graphics/pokemon/wigglytuff/normal.pal
diff --git a/graphics/pokemon/palettes/wigglytuff_shiny_palette.pal b/graphics/pokemon/wigglytuff/shiny.pal
index e05e38f24..e05e38f24 100644
--- a/graphics/pokemon/palettes/wigglytuff_shiny_palette.pal
+++ b/graphics/pokemon/wigglytuff/shiny.pal
diff --git a/graphics/pokemon/back_pics/wingull_back_pic.png b/graphics/pokemon/wingull/back.png
index 3ea8c6474..3ea8c6474 100644
--- a/graphics/pokemon/back_pics/wingull_back_pic.png
+++ b/graphics/pokemon/wingull/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/wingull_footprint.png b/graphics/pokemon/wingull/footprint.png
index 057b2cefa..057b2cefa 100644
--- a/graphics/pokemon/footprints/wingull_footprint.png
+++ b/graphics/pokemon/wingull/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/wingull_still_front_pic.png b/graphics/pokemon/wingull/front.png
index 4d1b16ece..4d1b16ece 100644
--- a/graphics/pokemon/front_pics/wingull_still_front_pic.png
+++ b/graphics/pokemon/wingull/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/wingull_icon.png b/graphics/pokemon/wingull/icon.png
index 524ecda23..524ecda23 100644
--- a/graphics/pokemon/icons/wingull_icon.png
+++ b/graphics/pokemon/wingull/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/wingull_palette.pal b/graphics/pokemon/wingull/normal.pal
index ce5820061..ce5820061 100644
--- a/graphics/pokemon/palettes/wingull_palette.pal
+++ b/graphics/pokemon/wingull/normal.pal
diff --git a/graphics/pokemon/palettes/wingull_shiny_palette.pal b/graphics/pokemon/wingull/shiny.pal
index 59785b7cb..59785b7cb 100644
--- a/graphics/pokemon/palettes/wingull_shiny_palette.pal
+++ b/graphics/pokemon/wingull/shiny.pal
diff --git a/graphics/pokemon/back_pics/wobbuffet_back_pic.png b/graphics/pokemon/wobbuffet/back.png
index 3f22dd4a1..3f22dd4a1 100644
--- a/graphics/pokemon/back_pics/wobbuffet_back_pic.png
+++ b/graphics/pokemon/wobbuffet/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/wobbuffet_footprint.png b/graphics/pokemon/wobbuffet/footprint.png
index 49fa6818d..49fa6818d 100644
--- a/graphics/pokemon/footprints/wobbuffet_footprint.png
+++ b/graphics/pokemon/wobbuffet/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/wobbuffet_still_front_pic.png b/graphics/pokemon/wobbuffet/front.png
index 0e3f39ae1..0e3f39ae1 100644
--- a/graphics/pokemon/front_pics/wobbuffet_still_front_pic.png
+++ b/graphics/pokemon/wobbuffet/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/wobbuffet_icon.png b/graphics/pokemon/wobbuffet/icon.png
index 14cddd184..14cddd184 100644
--- a/graphics/pokemon/icons/wobbuffet_icon.png
+++ b/graphics/pokemon/wobbuffet/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/wobbuffet_palette.pal b/graphics/pokemon/wobbuffet/normal.pal
index e83cdc8c2..e83cdc8c2 100644
--- a/graphics/pokemon/palettes/wobbuffet_palette.pal
+++ b/graphics/pokemon/wobbuffet/normal.pal
diff --git a/graphics/pokemon/palettes/wobbuffet_shiny_palette.pal b/graphics/pokemon/wobbuffet/shiny.pal
index 0fa077555..0fa077555 100644
--- a/graphics/pokemon/palettes/wobbuffet_shiny_palette.pal
+++ b/graphics/pokemon/wobbuffet/shiny.pal
diff --git a/graphics/pokemon/back_pics/wooper_back_pic.png b/graphics/pokemon/wooper/back.png
index 13cb768c1..13cb768c1 100644
--- a/graphics/pokemon/back_pics/wooper_back_pic.png
+++ b/graphics/pokemon/wooper/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/wooper_footprint.png b/graphics/pokemon/wooper/footprint.png
index 5e1ba56e6..5e1ba56e6 100644
--- a/graphics/pokemon/footprints/wooper_footprint.png
+++ b/graphics/pokemon/wooper/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/wooper_still_front_pic.png b/graphics/pokemon/wooper/front.png
index 4562b0baa..4562b0baa 100644
--- a/graphics/pokemon/front_pics/wooper_still_front_pic.png
+++ b/graphics/pokemon/wooper/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/wooper_icon.png b/graphics/pokemon/wooper/icon.png
index 26e617d33..26e617d33 100644
--- a/graphics/pokemon/icons/wooper_icon.png
+++ b/graphics/pokemon/wooper/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/wooper_palette.pal b/graphics/pokemon/wooper/normal.pal
index f364d6c71..f364d6c71 100644
--- a/graphics/pokemon/palettes/wooper_palette.pal
+++ b/graphics/pokemon/wooper/normal.pal
diff --git a/graphics/pokemon/palettes/wooper_shiny_palette.pal b/graphics/pokemon/wooper/shiny.pal
index cf0a3ce59..cf0a3ce59 100644
--- a/graphics/pokemon/palettes/wooper_shiny_palette.pal
+++ b/graphics/pokemon/wooper/shiny.pal
diff --git a/graphics/pokemon/back_pics/wurmple_back_pic.png b/graphics/pokemon/wurmple/back.png
index d6ef56dcd..d6ef56dcd 100644
--- a/graphics/pokemon/back_pics/wurmple_back_pic.png
+++ b/graphics/pokemon/wurmple/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/wurmple_footprint.png b/graphics/pokemon/wurmple/footprint.png
index 3ac4abd9f..3ac4abd9f 100644
--- a/graphics/pokemon/footprints/wurmple_footprint.png
+++ b/graphics/pokemon/wurmple/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/wurmple_still_front_pic.png b/graphics/pokemon/wurmple/front.png
index 86d8bc06a..86d8bc06a 100644
--- a/graphics/pokemon/front_pics/wurmple_still_front_pic.png
+++ b/graphics/pokemon/wurmple/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/wurmple_icon.png b/graphics/pokemon/wurmple/icon.png
index 52b46b490..52b46b490 100644
--- a/graphics/pokemon/icons/wurmple_icon.png
+++ b/graphics/pokemon/wurmple/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/wurmple_palette.pal b/graphics/pokemon/wurmple/normal.pal
index 2fe1fd189..2fe1fd189 100644
--- a/graphics/pokemon/palettes/wurmple_palette.pal
+++ b/graphics/pokemon/wurmple/normal.pal
diff --git a/graphics/pokemon/palettes/wurmple_shiny_palette.pal b/graphics/pokemon/wurmple/shiny.pal
index 3217ddc57..3217ddc57 100644
--- a/graphics/pokemon/palettes/wurmple_shiny_palette.pal
+++ b/graphics/pokemon/wurmple/shiny.pal
diff --git a/graphics/pokemon/back_pics/wynaut_back_pic.png b/graphics/pokemon/wynaut/back.png
index 388b1582b..388b1582b 100644
--- a/graphics/pokemon/back_pics/wynaut_back_pic.png
+++ b/graphics/pokemon/wynaut/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/wynaut_footprint.png b/graphics/pokemon/wynaut/footprint.png
index 4fe4832c0..4fe4832c0 100644
--- a/graphics/pokemon/footprints/wynaut_footprint.png
+++ b/graphics/pokemon/wynaut/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/wynaut_still_front_pic.png b/graphics/pokemon/wynaut/front.png
index 7b1be29f0..7b1be29f0 100644
--- a/graphics/pokemon/front_pics/wynaut_still_front_pic.png
+++ b/graphics/pokemon/wynaut/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/wynaut_icon.png b/graphics/pokemon/wynaut/icon.png
index cca26e1bb..cca26e1bb 100644
--- a/graphics/pokemon/icons/wynaut_icon.png
+++ b/graphics/pokemon/wynaut/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/wynaut_palette.pal b/graphics/pokemon/wynaut/normal.pal
index c37046634..c37046634 100644
--- a/graphics/pokemon/palettes/wynaut_palette.pal
+++ b/graphics/pokemon/wynaut/normal.pal
diff --git a/graphics/pokemon/palettes/wynaut_shiny_palette.pal b/graphics/pokemon/wynaut/shiny.pal
index 7a5032aa6..7a5032aa6 100644
--- a/graphics/pokemon/palettes/wynaut_shiny_palette.pal
+++ b/graphics/pokemon/wynaut/shiny.pal
diff --git a/graphics/pokemon/back_pics/xatu_back_pic.png b/graphics/pokemon/xatu/back.png
index b66774b13..b66774b13 100644
--- a/graphics/pokemon/back_pics/xatu_back_pic.png
+++ b/graphics/pokemon/xatu/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/xatu_footprint.png b/graphics/pokemon/xatu/footprint.png
index 44fcad1e3..44fcad1e3 100644
--- a/graphics/pokemon/footprints/xatu_footprint.png
+++ b/graphics/pokemon/xatu/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/xatu_still_front_pic.png b/graphics/pokemon/xatu/front.png
index 138550b54..138550b54 100644
--- a/graphics/pokemon/front_pics/xatu_still_front_pic.png
+++ b/graphics/pokemon/xatu/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/xatu_icon.png b/graphics/pokemon/xatu/icon.png
index a0e6d6fc9..a0e6d6fc9 100644
--- a/graphics/pokemon/icons/xatu_icon.png
+++ b/graphics/pokemon/xatu/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/xatu_palette.pal b/graphics/pokemon/xatu/normal.pal
index b6ab27604..b6ab27604 100644
--- a/graphics/pokemon/palettes/xatu_palette.pal
+++ b/graphics/pokemon/xatu/normal.pal
diff --git a/graphics/pokemon/palettes/xatu_shiny_palette.pal b/graphics/pokemon/xatu/shiny.pal
index 2dcf957e9..2dcf957e9 100644
--- a/graphics/pokemon/palettes/xatu_shiny_palette.pal
+++ b/graphics/pokemon/xatu/shiny.pal
diff --git a/graphics/pokemon/back_pics/yanma_back_pic.png b/graphics/pokemon/yanma/back.png
index 980bc86f2..980bc86f2 100644
--- a/graphics/pokemon/back_pics/yanma_back_pic.png
+++ b/graphics/pokemon/yanma/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/yanma_footprint.png b/graphics/pokemon/yanma/footprint.png
index 20b4a00b0..20b4a00b0 100644
--- a/graphics/pokemon/footprints/yanma_footprint.png
+++ b/graphics/pokemon/yanma/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/yanma_still_front_pic.png b/graphics/pokemon/yanma/front.png
index 534e873a1..534e873a1 100644
--- a/graphics/pokemon/front_pics/yanma_still_front_pic.png
+++ b/graphics/pokemon/yanma/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/yanma_icon.png b/graphics/pokemon/yanma/icon.png
index 336841a00..336841a00 100644
--- a/graphics/pokemon/icons/yanma_icon.png
+++ b/graphics/pokemon/yanma/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/yanma_palette.pal b/graphics/pokemon/yanma/normal.pal
index a53cd19e3..a53cd19e3 100644
--- a/graphics/pokemon/palettes/yanma_palette.pal
+++ b/graphics/pokemon/yanma/normal.pal
diff --git a/graphics/pokemon/palettes/yanma_shiny_palette.pal b/graphics/pokemon/yanma/shiny.pal
index 08b7c0cce..08b7c0cce 100644
--- a/graphics/pokemon/palettes/yanma_shiny_palette.pal
+++ b/graphics/pokemon/yanma/shiny.pal
diff --git a/graphics/pokemon/back_pics/zangoose_back_pic.png b/graphics/pokemon/zangoose/back.png
index 88357e182..88357e182 100644
--- a/graphics/pokemon/back_pics/zangoose_back_pic.png
+++ b/graphics/pokemon/zangoose/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/zangoose_footprint.png b/graphics/pokemon/zangoose/footprint.png
index e07e58cee..e07e58cee 100644
--- a/graphics/pokemon/footprints/zangoose_footprint.png
+++ b/graphics/pokemon/zangoose/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/zangoose_still_front_pic.png b/graphics/pokemon/zangoose/front.png
index b95a412bf..b95a412bf 100644
--- a/graphics/pokemon/front_pics/zangoose_still_front_pic.png
+++ b/graphics/pokemon/zangoose/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/zangoose_icon.png b/graphics/pokemon/zangoose/icon.png
index e0485b0b0..e0485b0b0 100644
--- a/graphics/pokemon/icons/zangoose_icon.png
+++ b/graphics/pokemon/zangoose/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/zangoose_palette.pal b/graphics/pokemon/zangoose/normal.pal
index eb0ef7068..eb0ef7068 100644
--- a/graphics/pokemon/palettes/zangoose_palette.pal
+++ b/graphics/pokemon/zangoose/normal.pal
diff --git a/graphics/pokemon/palettes/zangoose_shiny_palette.pal b/graphics/pokemon/zangoose/shiny.pal
index 82487aa4f..82487aa4f 100644
--- a/graphics/pokemon/palettes/zangoose_shiny_palette.pal
+++ b/graphics/pokemon/zangoose/shiny.pal
diff --git a/graphics/pokemon/back_pics/zapdos_back_pic.png b/graphics/pokemon/zapdos/back.png
index 248366dc5..248366dc5 100644
--- a/graphics/pokemon/back_pics/zapdos_back_pic.png
+++ b/graphics/pokemon/zapdos/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/zapdos_footprint.png b/graphics/pokemon/zapdos/footprint.png
index 480063a88..480063a88 100644
--- a/graphics/pokemon/footprints/zapdos_footprint.png
+++ b/graphics/pokemon/zapdos/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/zapdos_still_front_pic.png b/graphics/pokemon/zapdos/front.png
index 2d9249027..2d9249027 100644
--- a/graphics/pokemon/front_pics/zapdos_still_front_pic.png
+++ b/graphics/pokemon/zapdos/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/zapdos_icon.png b/graphics/pokemon/zapdos/icon.png
index 26fc73427..26fc73427 100644
--- a/graphics/pokemon/icons/zapdos_icon.png
+++ b/graphics/pokemon/zapdos/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/zapdos_palette.pal b/graphics/pokemon/zapdos/normal.pal
index 88e36bd7f..88e36bd7f 100644
--- a/graphics/pokemon/palettes/zapdos_palette.pal
+++ b/graphics/pokemon/zapdos/normal.pal
diff --git a/graphics/pokemon/palettes/zapdos_shiny_palette.pal b/graphics/pokemon/zapdos/shiny.pal
index fb7840ebc..fb7840ebc 100644
--- a/graphics/pokemon/palettes/zapdos_shiny_palette.pal
+++ b/graphics/pokemon/zapdos/shiny.pal
diff --git a/graphics/pokemon/back_pics/zigzagoon_back_pic.png b/graphics/pokemon/zigzagoon/back.png
index cc56c5d67..cc56c5d67 100644
--- a/graphics/pokemon/back_pics/zigzagoon_back_pic.png
+++ b/graphics/pokemon/zigzagoon/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/zigzagoon_footprint.png b/graphics/pokemon/zigzagoon/footprint.png
index d7373e064..d7373e064 100644
--- a/graphics/pokemon/footprints/zigzagoon_footprint.png
+++ b/graphics/pokemon/zigzagoon/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/zigzagoon_still_front_pic.png b/graphics/pokemon/zigzagoon/front.png
index 442a5c5aa..442a5c5aa 100644
--- a/graphics/pokemon/front_pics/zigzagoon_still_front_pic.png
+++ b/graphics/pokemon/zigzagoon/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/zigzagoon_icon.png b/graphics/pokemon/zigzagoon/icon.png
index acd0ecc8c..acd0ecc8c 100644
--- a/graphics/pokemon/icons/zigzagoon_icon.png
+++ b/graphics/pokemon/zigzagoon/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/zigzagoon_palette.pal b/graphics/pokemon/zigzagoon/normal.pal
index 55f6178cb..55f6178cb 100644
--- a/graphics/pokemon/palettes/zigzagoon_palette.pal
+++ b/graphics/pokemon/zigzagoon/normal.pal
diff --git a/graphics/pokemon/palettes/zigzagoon_shiny_palette.pal b/graphics/pokemon/zigzagoon/shiny.pal
index fe2d3cbc9..fe2d3cbc9 100644
--- a/graphics/pokemon/palettes/zigzagoon_shiny_palette.pal
+++ b/graphics/pokemon/zigzagoon/shiny.pal
diff --git a/graphics/pokemon/back_pics/zubat_back_pic.png b/graphics/pokemon/zubat/back.png
index 5589e5767..5589e5767 100644
--- a/graphics/pokemon/back_pics/zubat_back_pic.png
+++ b/graphics/pokemon/zubat/back.png
Binary files differ
diff --git a/graphics/pokemon/footprints/zubat_footprint.png b/graphics/pokemon/zubat/footprint.png
index c7ccf57f3..c7ccf57f3 100644
--- a/graphics/pokemon/footprints/zubat_footprint.png
+++ b/graphics/pokemon/zubat/footprint.png
Binary files differ
diff --git a/graphics/pokemon/front_pics/zubat_still_front_pic.png b/graphics/pokemon/zubat/front.png
index 3b1e586b5..3b1e586b5 100644
--- a/graphics/pokemon/front_pics/zubat_still_front_pic.png
+++ b/graphics/pokemon/zubat/front.png
Binary files differ
diff --git a/graphics/pokemon/icons/zubat_icon.png b/graphics/pokemon/zubat/icon.png
index 696c097e1..696c097e1 100644
--- a/graphics/pokemon/icons/zubat_icon.png
+++ b/graphics/pokemon/zubat/icon.png
Binary files differ
diff --git a/graphics/pokemon/palettes/zubat_palette.pal b/graphics/pokemon/zubat/normal.pal
index e9b2a3018..e9b2a3018 100644
--- a/graphics/pokemon/palettes/zubat_palette.pal
+++ b/graphics/pokemon/zubat/normal.pal
diff --git a/graphics/pokemon/palettes/zubat_shiny_palette.pal b/graphics/pokemon/zubat/shiny.pal
index ab2540e88..ab2540e88 100644
--- a/graphics/pokemon/palettes/zubat_shiny_palette.pal
+++ b/graphics/pokemon/zubat/shiny.pal
diff --git a/graphics/spinda_spots/spot_0.bin b/graphics/spinda_spots/spot_0.bin
new file mode 100644
index 000000000..938d1d592
--- /dev/null
+++ b/graphics/spinda_spots/spot_0.bin
Binary files differ
diff --git a/graphics/spinda_spots/spot_1.bin b/graphics/spinda_spots/spot_1.bin
new file mode 100644
index 000000000..db46b5de4
--- /dev/null
+++ b/graphics/spinda_spots/spot_1.bin
Binary files differ
diff --git a/graphics/spinda_spots/spot_2.bin b/graphics/spinda_spots/spot_2.bin
new file mode 100644
index 000000000..3b1bf7214
--- /dev/null
+++ b/graphics/spinda_spots/spot_2.bin
Binary files differ
diff --git a/graphics/spinda_spots/spot_3.bin b/graphics/spinda_spots/spot_3.bin
new file mode 100644
index 000000000..10c73f9ba
--- /dev/null
+++ b/graphics/spinda_spots/spot_3.bin
Binary files differ
diff --git a/graphics/ss_anne/unk_8479838.png b/graphics/ss_anne/unk_8479838.png
new file mode 100644
index 000000000..e7d0d8c44
--- /dev/null
+++ b/graphics/ss_anne/unk_8479838.png
Binary files differ
diff --git a/graphics/ss_anne/unk_8479A38.png b/graphics/ss_anne/unk_8479A38.png
new file mode 100644
index 000000000..98fbc8d97
--- /dev/null
+++ b/graphics/ss_anne/unk_8479A38.png
Binary files differ
diff --git a/graphics/teachy_tv/bg1_tilemap.bin b/graphics/teachy_tv/bg1_tilemap.bin
new file mode 100644
index 000000000..34dc439bc
--- /dev/null
+++ b/graphics/teachy_tv/bg1_tilemap.bin
Binary files differ
diff --git a/graphics/teachy_tv/bg2_tilemap.bin b/graphics/teachy_tv/bg2_tilemap.bin
new file mode 100644
index 000000000..f51b3695f
--- /dev/null
+++ b/graphics/teachy_tv/bg2_tilemap.bin
Binary files differ
diff --git a/graphics/teachy_tv/palettes.pal b/graphics/teachy_tv/palettes.pal
new file mode 100644
index 000000000..22808d3de
--- /dev/null
+++ b/graphics/teachy_tv/palettes.pal
@@ -0,0 +1,67 @@
+JASC-PAL
+0100
+64
+115 205 164
+255 255 255
+98 98 98
+255 230 90
+246 180 0
+189 115 0
+123 123 255
+74 65 74
+49 49 57
+98 106 106
+131 139 139
+255 0 255
+255 0 255
+255 255 180
+246 205 41
+213 156 16
+115 205 164
+255 255 255
+230 230 238
+205 213 222
+180 197 205
+164 180 189
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+115 205 164
+156 255 255
+255 255 255
+255 222 32
+246 230 164
+255 74 24
+255 148 139
+255 156 24
+131 230 222
+24 32 32
+156 189 213
+74 131 189
+90 222 164
+205 238 139
+255 0 255
+255 0 255
+115 205 164
+255 255 255
+98 98 98
+213 213 205
+230 8 8
+255 189 115
+32 156 8
+148 246 148
+49 82 205
+164 197 246
+255 0 255
+255 0 255
+74 65 74
+164 164 164
+197 197 205
+230 230 238
diff --git a/graphics/teachy_tv/tiles.png b/graphics/teachy_tv/tiles.png
new file mode 100644
index 000000000..e867de82b
--- /dev/null
+++ b/graphics/teachy_tv/tiles.png
Binary files differ
diff --git a/graphics/text_window/unk_841F1C8.png b/graphics/text_window/unk_841F1C8.png
new file mode 100644
index 000000000..5bdff868a
--- /dev/null
+++ b/graphics/text_window/unk_841F1C8.png
Binary files differ
diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk
index 27931e87e..20d2efc21 100644
--- a/graphics_file_rules.mk
+++ b/graphics_file_rules.mk
@@ -1,7 +1,3 @@
-MONSTILLFRONTGFXDIR := graphics/pokemon/front_pics
-MONBACKGFXDIR := graphics/pokemon/back_pics
-MONFRONTGFXDIR := graphics/pokemon/anim_front_pics
-MONPALDIR := graphics/pokemon/palettes
TILESETGFXDIR := data/tilesets
GLOBALGFXDIR := data/graphics
FONTGFXDIR := $(GLOBALGFXDIR)/fonts
@@ -24,38 +20,36 @@ EVENTOBJGFXDIR := graphics/event_objects
MISCGFXDIR := graphics/misc
TEXTWINDOWGFXDIR := graphics/text_window
SLOTMACHINEGFXDIR := graphics/slot_machine
+TEACHYTVGFXDIR := graphics/teachy_tv
+SSANNEGFXDIR := graphics/ss_anne
+ITEMPCGFXDIR := graphics/item_pc
types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark
contest_types := cool beauty cute smart tough
-$(MONSTILLFRONTGFXDIR)/castform_still_front_pic.4bpp: $(MONSTILLFRONTGFXDIR)/castform_normal_form_still_front_pic.4bpp \
- $(MONSTILLFRONTGFXDIR)/castform_sunny_form_still_front_pic.4bpp \
- $(MONSTILLFRONTGFXDIR)/castform_rainy_form_still_front_pic.4bpp \
- $(MONSTILLFRONTGFXDIR)/castform_snowy_form_still_front_pic.4bpp
+CASTFORMGFXDIR := graphics/pokemon/castform
+$(CASTFORMGFXDIR)/front.4bpp: $(CASTFORMGFXDIR)/normal/front.4bpp \
+ $(CASTFORMGFXDIR)/sunny/front.4bpp \
+ $(CASTFORMGFXDIR)/rainy/front.4bpp \
+ $(CASTFORMGFXDIR)/snowy/front.4bpp
@cat $^ >$@
-$(MONBACKGFXDIR)/castform_back_pic.4bpp: $(MONBACKGFXDIR)/castform_normal_form_back_pic.4bpp \
- $(MONBACKGFXDIR)/castform_sunny_form_back_pic.4bpp \
- $(MONBACKGFXDIR)/castform_rainy_form_back_pic.4bpp \
- $(MONBACKGFXDIR)/castform_snowy_form_back_pic.4bpp
+$(CASTFORMGFXDIR)/back.4bpp: $(CASTFORMGFXDIR)/normal/back.4bpp \
+ $(CASTFORMGFXDIR)/sunny/back.4bpp \
+ $(CASTFORMGFXDIR)/rainy/back.4bpp \
+ $(CASTFORMGFXDIR)/snowy/back.4bpp
@cat $^ >$@
-$(MONFRONTGFXDIR)/castform_front_pic.4bpp: $(MONFRONTGFXDIR)/castform_normal_form_front_pic.4bpp \
- $(MONFRONTGFXDIR)/castform_sunny_form_front_pic.4bpp \
- $(MONFRONTGFXDIR)/castform_rainy_form_front_pic.4bpp \
- $(MONFRONTGFXDIR)/castform_snowy_form_front_pic.4bpp
+$(CASTFORMGFXDIR)/normal.gbapal: $(CASTFORMGFXDIR)/normal/normal.gbapal \
+ $(CASTFORMGFXDIR)/sunny/normal.gbapal \
+ $(CASTFORMGFXDIR)/rainy/normal.gbapal \
+ $(CASTFORMGFXDIR)/snowy/normal.gbapal
@cat $^ >$@
-$(MONPALDIR)/castform_palette.gbapal: $(MONPALDIR)/castform_normal_form_palette.gbapal \
- $(MONPALDIR)/castform_sunny_form_palette.gbapal \
- $(MONPALDIR)/castform_rainy_form_palette.gbapal \
- $(MONPALDIR)/castform_snowy_form_palette.gbapal
- @cat $^ >$@
-
-$(MONPALDIR)/castform_shiny_palette.gbapal: $(MONPALDIR)/castform_normal_form_shiny_palette.gbapal \
- $(MONPALDIR)/castform_sunny_form_shiny_palette.gbapal \
- $(MONPALDIR)/castform_rainy_form_shiny_palette.gbapal \
- $(MONPALDIR)/castform_snowy_form_shiny_palette.gbapal
+$(CASTFORMGFXDIR)/shiny.gbapal: $(CASTFORMGFXDIR)/normal/shiny.gbapal \
+ $(CASTFORMGFXDIR)/sunny/shiny.gbapal \
+ $(CASTFORMGFXDIR)/rainy/shiny.gbapal \
+ $(CASTFORMGFXDIR)/snowy/shiny.gbapal
@cat $^ >$@
$(FONTGFXDIR)/font0_latin.latfont: $(FONTGFXDIR)/font0_latin.png
@@ -490,3 +484,12 @@ $(SLOTMACHINEGFXDIR)/unk_8466620.4bpp: %.4bpp: %.png
$(SLOTMACHINEGFXDIR)/unk_84659d0.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 138
+
+$(TEACHYTVGFXDIR)/tiles.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -num_tiles 233
+
+$(SSANNEGFXDIR)/unk_8479A38.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -num_tiles 17
+
+$(ITEMPCGFXDIR)/unk_8E85090.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -num_tiles 82
diff --git a/include/battle.h b/include/battle.h
index c86bc9232..b1284fd6c 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -33,39 +33,6 @@
#define GET_BANK_SIDE(bank)((GetBattlerPosition(bank) & BIT_SIDE))
#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE))
-#define BATTLE_TYPE_DOUBLE 0x0001
-#define BATTLE_TYPE_LINK 0x0002
-#define BATTLE_TYPE_WILD 0x0004
-#define BATTLE_TYPE_TRAINER 0x0008
-#define BATTLE_TYPE_FIRST_BATTLE 0x0010
-#define BATTLE_TYPE_20 0x0020
-#define BATTLE_TYPE_MULTI 0x0040
-#define BATTLE_TYPE_SAFARI 0x0080
-#define BATTLE_TYPE_BATTLE_TOWER 0x0100
-#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200
-#define BATTLE_TYPE_ROAMER 0x0400
-#define BATTLE_TYPE_EREADER_TRAINER 0x0800
-#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
-#define BATTLE_TYPE_LEGENDARY 0x2000
-#define BATTLE_TYPE_REGI 0x4000
-#define BATTLE_TYPE_TWO_OPPONENTS 0x8000
-#define BATTLE_TYPE_DOME 0x10000 // this is used in pokemon.c, but its clearly not the correct name for FR/LG. TODO: Fix these
-#define BATTLE_TYPE_PALACE 0x20000
-#define BATTLE_TYPE_ARENA 0x40000
-#define BATTLE_TYPE_FACTORY 0x80000
-#define BATTLE_TYPE_x100000 0x100000
-#define BATTLE_TYPE_PYRAMID 0x200000
-#define BATTLE_TYPE_INGAME_PARTNER 0x400000
-#define BATTLE_TYPE_x800000 0x800000
-#define BATTLE_TYPE_RECORDED 0x1000000
-#define BATTLE_TYPE_x2000000 0x2000000
-#define BATTLE_TYPE_x4000000 0x4000000
-#define BATTLE_TYPE_SECRET_BASE 0x8000000
-#define BATTLE_TYPE_GROUDON 0x10000000
-#define BATTLE_TYPE_KYORGE 0x20000000
-#define BATTLE_TYPE_RAYQUAZA 0x40000000
-#define BATTLE_TYPE_x80000000 0x80000000
-
#define TRAINER_OPPONENT_3FE 0x3FE
#define TRAINER_OPPONENT_C00 0xC00
#define TRAINER_OPPONENT_800 0x800
@@ -159,14 +126,14 @@
#define MSG_DISPLAY 0x7
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 0x8
-#define MOVE_TARGET_SELECTED 0x0
-#define MOVE_TARGET_DEPENDS 0x1
-#define MOVE_TARGET_USER 0x2
-#define MOVE_TARGET_RANDOM 0x4
-#define MOVE_TARGET_x10 0x10
-#define MOVE_TARGET_BOTH 0x8
-#define MOVE_TARGET_FOES_AND_ALLY 0x20
-#define MOVE_TARGET_OPPONENTS_FIELD 0x40
+#define MOVE_TARGET_SELECTED 0x0
+#define MOVE_TARGET_DEPENDS 0x1
+#define MOVE_TARGET_USER_OR_SELECTED 0x2
+#define MOVE_TARGET_RANDOM 0x4
+#define MOVE_TARGET_BOTH 0x8
+#define MOVE_TARGET_USER 0x10
+#define MOVE_TARGET_FOES_AND_ALLY 0x20
+#define MOVE_TARGET_OPPONENTS_FIELD 0x40
// defines for the u8 array gTypeEffectiveness
#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0]))
@@ -983,6 +950,7 @@ extern u8 gBattlersCount;
extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern s32 gBattleMoveDamage;
-extern u8 gUnknown_2023E8A;
+extern u8 gBattleOutcome;
+extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
#endif // GUARD_BATTLE_H
diff --git a/include/battle_2.h b/include/battle_2.h
index 1f7a2304d..02050afd9 100644
--- a/include/battle_2.h
+++ b/include/battle_2.h
@@ -2,6 +2,7 @@
#define GUARD_BATTLE_2_H
#include "global.h"
+#include "sprite.h"
void CB2_InitBattle(void);
void BattleMainCB2(void);
@@ -44,6 +45,7 @@ void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 bank);
void sub_800FD9C(void);
+void sub_80120C4(struct Sprite *);
extern const u8 gStatusConditionString_PoisonJpn[8];
extern const u8 gStatusConditionString_SleepJpn[8];
diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h
index 5f8c4419b..3786d4a8c 100644
--- a/include/battle_ai_script_commands.h
+++ b/include/battle_ai_script_commands.h
@@ -3,6 +3,8 @@
#include "global.h"
+extern u8 sBattler_AI;
+
void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves);
void BattleAI_SetupAIData(u8 defaultScoreMoves);
u8 BattleAI_ChooseMoveOrAction(void);
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 4ea3bdead..5929a318e 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -59,10 +59,13 @@ extern u8 gAnimFriendship;
extern u16 gWeatherMoveAnim;
extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT];
extern u8 gAnimMoveTurn;
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
+extern u8 gBattleAnimAttacker;
+extern u8 gBattleAnimTarget;
extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT];
extern u8 gUnknown_02038440;
+extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
+extern u16 gUnknown_2037EEC;
+extern s32 gUnknown_2037EE8;
void ClearBattleAnimationVars(void);
void DoMoveAnim(u16 move);
@@ -77,6 +80,7 @@ s8 BattleAnimAdjustPanning(s8 pan);
s8 BattleAnimAdjustPanning2(s8 pan);
s16 sub_80A52EC(s16 a);
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
+bool8 sub_8072DF0(u8 battlerId);
// battle_anim_80FE840.s
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
@@ -121,4 +125,14 @@ u8 ItemIdToBallId(u16 itemId);
u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 bank, u32 arg2, u8 ballId);
+// battle_anim_mons.s
+void sub_8074DC4(struct Sprite * sprite);
+void sub_8074E14(struct Sprite * sprite);
+void sub_80754B8(struct Sprite * sprite);
+void sub_80758E0(u8 spriteId, u8 b);
+void sub_8075980(u8 spriteId);
+void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation);
+bool8 sub_8073788(void);
+void sub_80759DC(u8 spriteId);
+
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_util.h b/include/battle_util.h
index ed070720d..a062f0743 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -87,5 +87,6 @@ void HandleAction_RunBattleScript(void);
u8 GetMoveTarget(u16 move, u8 useMoveTarget);
u8 IsMonDisobedient(void);
void MarkBufferBankForExecution(u8 battlerId);
+void sub_80174B8(u8 battlerId);
#endif // GUARD_BATTLE_UTIL_H
diff --git a/include/berry.h b/include/berry.h
index 40715868b..c5a132ccb 100644
--- a/include/berry.h
+++ b/include/berry.h
@@ -62,6 +62,7 @@ void FieldObjectInteractionPickBerryTree(void);
void FieldObjectInteractionRemoveBerryTree(void);
u8 PlayerHasBerries(void);
void ResetBerryTreeSparkleFlags(void);
+const struct Berry * sub_809C8A0(u8 berryIdx);
extern const struct Berry gBerries[];
diff --git a/include/berry_pouch.h b/include/berry_pouch.h
new file mode 100644
index 000000000..8e652225b
--- /dev/null
+++ b/include/berry_pouch.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_BERRY_POUCH_H
+#define GUARD_BERRY_POUCH_H
+
+#include "task.h"
+
+void BerryPouch_StartFadeToExitCallback(u8 taskId);
+void BerryPouch_SetExitCallback(void (*)(void));
+void InitBerryPouch(u8, void (*)(void), u8);
+void DisplayItemMessageInBerryPouch(u8 taskId, u8 bgId, const u8 * str, TaskFunc followUpFunc);
+void sub_813E2B8(u8 taskId);
+
+#endif //GUARD_BERRY_POUCH_H
diff --git a/include/berry_powder.h b/include/berry_powder.h
new file mode 100644
index 000000000..89582aacc
--- /dev/null
+++ b/include/berry_powder.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BERRY_POWDER_H
+#define GUARD_BERRY_POWDER_H
+
+u32 GetBerryPowder(void);
+
+#endif //GUARD_BERRY_POWDER_H
diff --git a/include/bg.h b/include/bg.h
index 003ffc916..40c51167f 100644
--- a/include/bg.h
+++ b/include/bg.h
@@ -25,6 +25,17 @@ enum
BG_CTRL_ATTR_WRAPAROUND = 8,
};
+enum AdjustBgMosaicMode
+{
+ BG_MOSAIC_SET,
+ BG_MOSAIC_SET_H,
+ BG_MOSAIC_INC_H,
+ BG_MOSAIC_DEC_H,
+ BG_MOSAIC_SET_V,
+ BG_MOSAIC_INC_V,
+ BG_MOSAIC_DEC_V,
+};
+
enum BgTileAllocMode
{
BG_TILE_FIND_FREE_SPACE,
@@ -71,7 +82,7 @@ u32 ChangeBgY(u8 bg, u32 value, u8 op);
u32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op);
u32 GetBgY(u8 bg);
void SetBgAffine(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle);
-u8 Unused_AdjustBgMosaic(u8 a1, u8 a2);
+u8 AdjustBgMosaic(u8 value, u8 mode);
void SetBgTilemapBuffer(u8 bg, void *tilemap);
void UnsetBgTilemapBuffer(u8 bg);
void* GetBgTilemapBuffer(u8 bg);
diff --git a/include/bike.h b/include/bike.h
index 468c48273..68cc5f5c9 100644
--- a/include/bike.h
+++ b/include/bike.h
@@ -2,5 +2,7 @@
#define GUARD_BIKE_H
void sub_80BD620(u32 unkC, u32 unk10);
+bool8 sub_80BD540(void);
+void StartTransitionToFlipBikeState(u8 flags);
#endif //GUARD_BIKE_H
diff --git a/include/cereader_tool.h b/include/cereader_tool.h
index 05677dc79..f223bdaa5 100644
--- a/include/cereader_tool.h
+++ b/include/cereader_tool.h
@@ -3,7 +3,45 @@
#include "global.h"
-bool32 sub_815D794(u8 *);
-bool32 sub_815D6B4(u8 *);
+struct TrainerTowerTrainer_004
+{
+ /* 0x000 */ u8 unk_000[11];
+ /* 0x00B */ u8 unk_00B;
+ /* 0x00C */ u8 unk_00C;
+ /* 0x00E */ u16 unk_00E[6];
+ /* 0x01A */ u16 unk_01A[6];
+ /* 0x026 */ u16 unk_026[6];
+ /* 0x032 */ u16 unk_032[6];
+ /* 0x040 */ struct BattleTowerPokemon unk_040[PARTY_SIZE];
+}; // size: 328
+
+struct TrainerTowerTrainer
+{
+ /* 0x000 */ u8 unk_000;
+ /* 0x000 */ u8 unk_001;
+ /* 0x002 */ u8 unk_002;
+ /* 0x003 */ u8 unk_003;
+ /* 0x004 */ struct TrainerTowerTrainer_004 unk_004[3];
+ /* 0x3DC */ u32 checksum;
+};
+
+struct Unk_203F458_Header
+{
+ u8 unk0;
+ u8 unk1;
+ u32 unk4;
+};
+
+struct TrainerTowerData
+{
+ u8 count;
+ u8 id;
+ u16 dummy;
+ u32 checksum;
+ struct TrainerTowerTrainer trainers[8];
+};
+
+bool32 ValidateTrainerTowerData(struct TrainerTowerData * a0);
+bool32 CEReaderTool_SaveTrainerTower(struct TrainerTowerData * a0);
#endif //GUARD_CEREADER_TOOL_H
diff --git a/include/config.h b/include/config.h
index f094c95bd..491eadf13 100644
--- a/include/config.h
+++ b/include/config.h
@@ -15,8 +15,6 @@
// since not all baseroms and pointers have been dumped yet and will result in
// a broken ROM.
-#define ENGLISH
-
#ifdef ENGLISH
#define UNITS_IMPERIAL
#else
diff --git a/include/constants/battle.h b/include/constants/battle.h
index 074c0d0cd..f886f560b 100644
--- a/include/constants/battle.h
+++ b/include/constants/battle.h
@@ -59,8 +59,8 @@
#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
#define BATTLE_TYPE_LEGENDARY 0x2000
#define BATTLE_TYPE_REGI 0x4000
-#define BATTLE_TYPE_TWO_OPPONENTS 0x8000
-#define BATTLE_TYPE_DOME 0x10000
+#define BATTLE_TYPE_GHOST 0x8000
+#define BATTLE_TYPE_POKEDUDE 0x10000
#define BATTLE_TYPE_PALACE 0x20000
#define BATTLE_TYPE_ARENA 0x40000
#define BATTLE_TYPE_FACTORY 0x80000
diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h
index 1b59f2f64..b54f01353 100644
--- a/include/constants/battle_move_effects.h
+++ b/include/constants/battle_move_effects.h
@@ -151,7 +151,7 @@
#define EFFECT_EARTHQUAKE 147
#define EFFECT_FUTURE_SIGHT 148
#define EFFECT_GUST 149
-#define EFFECT_FLINCH_HIT_2 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
+#define EFFECT_FLINCH_MINIMIZE_HIT 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
#define EFFECT_SOLARBEAM 151
#define EFFECT_THUNDER 152
#define EFFECT_TELEPORT 153
diff --git a/include/constants/fanfares.h b/include/constants/fanfares.h
new file mode 100644
index 000000000..21d3af79c
--- /dev/null
+++ b/include/constants/fanfares.h
@@ -0,0 +1,22 @@
+#ifndef GUARD_CONSTANTS_FANFARES_H
+#define GUARD_CONSTANTS_FANFARES_H
+
+enum Fanfares
+{
+ FANFARE_00,
+ FANFARE_01,
+ FANFARE_02,
+ FANFARE_03,
+ FANFARE_04,
+ FANFARE_05,
+ FANFARE_06,
+ FANFARE_07,
+ FANFARE_08,
+ FANFARE_09,
+ FANFARE_10,
+ FANFARE_POKEFLUTE,
+ FANFARE_KEY_ITEM,
+ FANFARE_DEX_EVAL
+};
+
+#endif //GUARD_CONSTANTS_FANFARES_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 8ecac9769..de9a98b43 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1,6 +1,11 @@
#ifndef GUARD_CONSTANTS_FLAGS_H
#define GUARD_CONSTANTS_FLAGS_H
+// Sys Flags Maybe
+#define FLAG_SYS_SAFARI_MODE 0x800
+#define FLAG_WHITE_FLUTE_ACTIVE 0x803
+#define FLAG_BLACK_FLUTE_ACTIVE 0x804
+
// World Map Flags
#define FLAG_WORLD_MAP_PALLET_TOWN 0x890
#define FLAG_WORLD_MAP_VIRIDIAN_CITY 0x891
@@ -67,7 +72,8 @@
#define FLAG_0x82C 0x82C
#define FLAG_0x82F 0x82F
#define FLAG_0x830 0x830
-#define FLAG_0x834 0x834
+#define FLAG_SYS_NOT_SOMEONES_PC 0x834
+#define FLAG_0x83C 0x83C
#define FLAG_0x83E 0x83E
#define FLAG_0x841 0x841
#define FLAG_0x844 0x844
@@ -1431,7 +1437,7 @@
#define FLAG_SYS_USE_STRENGTH (CODE_FLAGS + 0x29)
#define FLAG_SYS_WEATHER_CTRL (CODE_FLAGS + 0x2A)
#define FLAG_SYS_CYCLING_ROAD (CODE_FLAGS + 0x2B)
-#define FLAG_SYS_SAFARI_MODE (CODE_FLAGS + 0x2C)
+#define FLAG_0x88C (CODE_FLAGS + 0x2C)
#define FLAG_SYS_CRUISE_MODE (CODE_FLAGS + 0x2D)
#define FLAG_0x88E (CODE_FLAGS + 0x2E)
diff --git a/include/constants/global.h b/include/constants/global.h
new file mode 100644
index 000000000..3cac8d473
--- /dev/null
+++ b/include/constants/global.h
@@ -0,0 +1,83 @@
+#ifndef GUARD_CONSTANTS_GLOBAL_H
+#define GUARD_CONSTANTS_GLOBAL_H
+
+#define POKEMON_SLOTS_NUMBER 412
+
+#define ITEM_NAME_LENGTH 14
+#define POKEMON_NAME_LENGTH 10
+#define OT_NAME_LENGTH 7
+
+enum
+{
+ VERSION_SAPPHIRE = 1,
+ VERSION_RUBY = 2,
+ VERSION_EMERALD = 3,
+ VERSION_FIRE_RED = 4,
+ VERSION_LEAF_GREEN = 5,
+};
+
+enum LanguageId {
+ LANGUAGE_JAPANESE = 1,
+ LANGUAGE_ENGLISH = 2,
+ LANGUAGE_FRENCH = 3,
+ LANGUAGE_ITALIAN = 4,
+ LANGUAGE_GERMAN = 5,
+ // 6 goes unused but the theory is it was meant to be Korean
+ LANGUAGE_SPANISH = 7,
+};
+
+#ifdef ENGLISH
+#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
+#endif
+
+#define PC_ITEMS_COUNT 30
+#define BAG_ITEMS_COUNT 42
+#define BAG_KEYITEMS_COUNT 30
+#define BAG_POKEBALLS_COUNT 13
+#define BAG_TMHM_COUNT 58
+#define BAG_BERRIES_COUNT 43
+
+enum
+{
+ MALE,
+ FEMALE
+};
+
+enum
+{
+ OPTIONS_BUTTON_MODE_NORMAL,
+ OPTIONS_BUTTON_MODE_LR,
+ OPTIONS_BUTTON_MODE_L_EQUALS_A
+};
+
+enum
+{
+ OPTIONS_TEXT_SPEED_SLOW,
+ OPTIONS_TEXT_SPEED_MID,
+ OPTIONS_TEXT_SPEED_FAST
+};
+
+enum
+{
+ OPTIONS_SOUND_MONO,
+ OPTIONS_SOUND_STEREO
+};
+
+enum
+{
+ OPTIONS_BATTLE_STYLE_SHIFT,
+ OPTIONS_BATTLE_STYLE_SET
+};
+
+enum
+{
+ POCKET_ITEMS = 1,
+ POCKET_KEY_ITEMS,
+ POCKET_POKE_BALLS,
+ POCKET_TM_CASE,
+ POCKET_BERRY_POUCH,
+};
+
+#define NUM_BAG_POCKETS 5
+
+#endif //GUARD_CONSTANTS_GLOBAL_H
diff --git a/include/constants/hoenn_cries.h b/include/constants/hoenn_cries.h
new file mode 100644
index 000000000..5b90aa31d
--- /dev/null
+++ b/include/constants/hoenn_cries.h
@@ -0,0 +1,143 @@
+#ifndef GUARD_CONSTANTS_HOENN_CRIES_H
+#define GUARD_CONSTANTS_HOENN_CRIES_H
+
+enum
+{
+ CRY_KECLEON = 251,
+ CRY_ROSELIA = 252,
+ CRY_TORKOAL = 253,
+ CRY_ELECTRIKE = 254,
+ CRY_MANECTRIC = 255,
+ CRY_DUSKULL = 256,
+ CRY_LATIAS = 257,
+ CRY_WYNAUT = 258,
+ CRY_SEVIPER = 259,
+ CRY_SHARPEDO = 260,
+ CRY_ZANGOOSE = 261,
+ CRY_AZURILL = 262,
+ CRY_SWABLU = 263,
+ CRY_ALTARIA = 264,
+ CRY_TAILLOW = 266,
+ CRY_SWELLOW = 267,
+ CRY_SPINDA = 269,
+ CRY_TORCHIC = 270,
+ CRY_COMBUSKEN = 271,
+ CRY_BLAZIKEN = 272,
+ CRY_TREECKO = 273,
+ CRY_GROVYLE = 274,
+ CRY_SCEPTILE = 275,
+ CRY_MUDKIP = 276,
+ CRY_MARSHTOMP = 277,
+ CRY_SWAMPERT = 278,
+ CRY_PELIPPER = 279,
+ CRY_WINGULL = 280,
+ CRY_BANETTE = 281,
+ CRY_SHUPPET = 282,
+ CRY_LOTAD = 283,
+ CRY_LOMBRE = 284,
+ CRY_LUDICOLO = 285,
+ CRY_SEEDOT = 286,
+ CRY_NUZLEAF = 287,
+ CRY_SHIFTRY = 288,
+ CRY_CARVANHA = 289,
+ CRY_WURMPLE = 290,
+ CRY_SILCOON = 291,
+ CRY_BEAUTIFLY = 292,
+ CRY_CASCOON = 293,
+ CRY_DUSTOX = 294,
+ CRY_RALTS = 295,
+ CRY_KIRLIA = 296,
+ CRY_GARDEVOIR = 297,
+ CRY_SLAKOTH = 298,
+ CRY_VIGOROTH = 299,
+ CRY_SLAKING = 300,
+ CRY_NINCADA = 301,
+ CRY_NINJASK = 302,
+ CRY_SHEDINJA = 303,
+ CRY_MAKUHITA = 304,
+ CRY_HARIYAMA = 305,
+ CRY_NOSEPASS = 306,
+ CRY_GLALIE = 307,
+ CRY_PLUSLE = 308,
+ CRY_MINUN = 309,
+ CRY_SURSKIT = 310,
+ CRY_MASQUERAIN = 311,
+ CRY_SKITTY = 312,
+ CRY_DELCATTY = 313,
+ CRY_GULPIN = 314,
+ CRY_SWALOT = 315,
+ CRY_NUMEL = 316,
+ CRY_CAMERUPT = 317,
+ CRY_BARBOACH = 318,
+ CRY_WHISCASH = 319,
+ CRY_CORPHISH = 320,
+ CRY_CRAWDAUNT = 321,
+ CRY_SPOINK = 322,
+ CRY_GRUMPIG = 323,
+ CRY_TRAPINCH = 324,
+ CRY_VIBRAVA = 325,
+ CRY_FLYGON = 326,
+ CRY_CACNEA = 327,
+ CRY_CACTURNE = 328,
+ CRY_BALTOY = 329,
+ CRY_CLAYDOL = 330,
+ CRY_LUNATONE = 331,
+ CRY_SOLROCK = 332,
+ CRY_FEEBAS = 333,
+ CRY_MILOTIC = 334,
+ CRY_ABSOL = 335,
+ CRY_MEDITITE = 336,
+ CRY_MEDICHAM = 337,
+ CRY_SPHEAL = 338,
+ CRY_SEALEO = 339,
+ CRY_WALREIN = 340,
+ CRY_CLAMPERL = 341,
+ CRY_HUNTAIL = 342,
+ CRY_GOREBYSS = 343,
+ CRY_LILEEP = 344,
+ CRY_CRADILY = 345,
+ CRY_ANORITH = 346,
+ CRY_ARMALDO = 347,
+ CRY_BELDUM = 348,
+ CRY_METANG = 349,
+ CRY_METAGROSS = 350,
+ CRY_BAGON = 351,
+ CRY_SHELGON = 352,
+ CRY_REGIROCK = 353,
+ CRY_REGICE = 354,
+ CRY_REGISTEEL = 355,
+ CRY_CASTFORM = 356,
+ CRY_VOLBEAT = 357,
+ CRY_ILLUMISE = 358,
+ CRY_POOCHYENA = 359,
+ CRY_MIGHTYENA = 360,
+ CRY_DUSCLOPS = 361,
+ CRY_SABLEYE = 362,
+ CRY_MAWILE = 363,
+ CRY_ARON = 364,
+ CRY_LAIRON = 365,
+ CRY_AGGRON = 366,
+ CRY_RELICANTH = 367,
+ CRY_LUVDISC = 368,
+ CRY_GROUDON = 369,
+ CRY_KYOGRE = 370,
+ CRY_RAYQUAZA = 371,
+ CRY_SALAMENCE = 372,
+ CRY_BRELOOM = 373,
+ CRY_SHROOMISH = 374,
+ CRY_LINOONE = 375,
+ CRY_TROPIUS = 376,
+ CRY_WAILMER = 377,
+ CRY_ZIGZAGOON = 378,
+ CRY_EXPLOUD = 379,
+ CRY_LOUDRED = 380,
+ CRY_WAILORD = 381,
+ CRY_WHISMUR = 382,
+ CRY_SNORUNT = 383,
+ CRY_LATIOS = 384,
+ CRY_JIRACHI = 385,
+ CRY_DEOXYS = 386,
+ CRY_CHIMECHO = 387,
+};
+
+#endif
diff --git a/include/constants/item_effects.h b/include/constants/item_effects.h
new file mode 100644
index 000000000..a5bb77035
--- /dev/null
+++ b/include/constants/item_effects.h
@@ -0,0 +1,79 @@
+#ifndef GUARD_CONSTANTS_ITEM_EFFECTS_H
+#define GUARD_CONSTANTS_ITEM_EFFECTS_H
+
+// field 0 masks
+#define ITEM0_X_ATTACK 0x0F
+#define ITEM0_HIGH_CRIT 0x30 // For Dire Hit, works the same way as move Focus Energy.
+#define ITEM0_SACRED_ASH 0x40
+#define ITEM0_INFATUATION 0x80
+
+// field 1 masks
+#define ITEM1_X_SPEED 0x0F
+#define ITEM1_X_DEFEND 0xF0
+
+// field 2 masks
+#define ITEM2_X_SPATK 0x0F
+#define ITEM2_X_ACCURACY 0xF0
+
+// field 3 masks
+#define ITEM3_CONFUSION 0x1
+#define ITEM3_PARALYSIS 0x2
+#define ITEM3_FREEZE 0x4
+#define ITEM3_BURN 0x8
+#define ITEM3_POISON 0x10
+#define ITEM3_SLEEP 0x20
+#define ITEM3_LEVEL_UP 0x40
+#define ITEM3_MIST 0x80 // For Guard Specs, works the same way as move Mist.
+
+#define ITEM3_STATUS_ALL (ITEM3_CONFUSION | ITEM3_PARALYSIS | ITEM3_FREEZE | ITEM3_BURN | ITEM3_POISON | ITEM3_SLEEP)
+
+// field 4 masks
+#define ITEM4_EV_HP 0x1
+#define ITEM4_EV_ATK 0x2
+#define ITEM4_HEAL_HP 0x4
+#define ITEM4_HEAL_PP_ALL 0x8
+#define ITEM4_HEAL_PP_ONE 0x10
+#define ITEM4_PP_UP 0x20
+#define ITEM4_REVIVE 0x40
+#define ITEM4_EVO_STONE 0x80
+
+// field 5 masks
+#define ITEM5_EV_DEF 0x1
+#define ITEM5_EV_SPEED 0x2
+#define ITEM5_EV_SPDEF 0x4
+#define ITEM5_EV_SPATK 0x8
+#define ITEM5_PP_MAX 0x10
+#define ITEM5_FRIENDSHIP_LOW 0x20
+#define ITEM5_FRIENDSHIP_MID 0x40
+#define ITEM5_FRIENDSHIP_HIGH 0x80
+
+#define ITEM5_FRIENDSHIP_ALL (ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID | ITEM5_FRIENDSHIP_HIGH)
+
+// fields 6 and onwards are item-specific arguments
+
+// Used for GetItemEffectType.
+#define ITEM_EFFECT_X_ITEM 0
+#define ITEM_EFFECT_RAISE_LEVEL 1
+#define ITEM_EFFECT_HEAL_HP 2
+#define ITEM_EFFECT_CURE_POISON 3
+#define ITEM_EFFECT_CURE_SLEEP 4
+#define ITEM_EFFECT_CURE_BURN 5
+#define ITEM_EFFECT_CURE_FREEZE 6
+#define ITEM_EFFECT_CURE_PARALYSIS 7
+#define ITEM_EFFECT_CURE_CONFUSION 8
+#define ITEM_EFFECT_CURE_INFATUATION 9
+#define ITEM_EFFECT_SACRED_ASH 10
+#define ITEM_EFFECT_CURE_ALL_STATUS 11
+#define ITEM_EFFECT_ATK_EV 12
+#define ITEM_EFFECT_HP_EV 13
+#define ITEM_EFFECT_SPATK_EV 14
+#define ITEM_EFFECT_SPDEF_EV 15
+#define ITEM_EFFECT_SPEED_EV 16
+#define ITEM_EFFECT_DEF_EV 17
+#define ITEM_EFFECT_EVO_STONE 18
+#define ITEM_EFFECT_PP_UP 19
+#define ITEM_EFFECT_PP_MAX 20
+#define ITEM_EFFECT_HEAL_PP 21
+#define ITEM_EFFECT_NONE 22
+
+#endif // GUARD_CONSTANTS_ITEM_EFFECTS_H
diff --git a/include/constants/items.h b/include/constants/items.h
index 64fed0e4c..8f3e82c90 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -351,6 +351,65 @@
#define ITEM_15B 347
#define ITEM_15C 348
+#define ITEM_TM01_FOCUS_PUNCH ITEM_TM01
+#define ITEM_TM02_DRAGON_CLAW ITEM_TM02
+#define ITEM_TM03_WATER_PULSE ITEM_TM03
+#define ITEM_TM04_CALM_MIND ITEM_TM04
+#define ITEM_TM05_ROAR ITEM_TM05
+#define ITEM_TM06_TOXIC ITEM_TM06
+#define ITEM_TM07_HAIL ITEM_TM07
+#define ITEM_TM08_BULK_UP ITEM_TM08
+#define ITEM_TM09_BULLET_SEED ITEM_TM09
+#define ITEM_TM10_HIDDEN_POWER ITEM_TM10
+#define ITEM_TM11_SUNNY_DAY ITEM_TM11
+#define ITEM_TM12_TAUNT ITEM_TM12
+#define ITEM_TM13_ICE_BEAM ITEM_TM13
+#define ITEM_TM14_BLIZZARD ITEM_TM14
+#define ITEM_TM15_HYPER_BEAM ITEM_TM15
+#define ITEM_TM16_LIGHT_SCREEN ITEM_TM16
+#define ITEM_TM17_PROTECT ITEM_TM17
+#define ITEM_TM18_RAIN_DANCE ITEM_TM18
+#define ITEM_TM19_GIGA_DRAIN ITEM_TM19
+#define ITEM_TM20_SAFEGUARD ITEM_TM20
+#define ITEM_TM21_FRUSTRATION ITEM_TM21
+#define ITEM_TM22_SOLARBEAM ITEM_TM22
+#define ITEM_TM23_IRON_TAIL ITEM_TM23
+#define ITEM_TM24_THUNDERBOLT ITEM_TM24
+#define ITEM_TM25_THUNDER ITEM_TM25
+#define ITEM_TM26_EARTHQUAKE ITEM_TM26
+#define ITEM_TM27_RETURN ITEM_TM27
+#define ITEM_TM28_DIG ITEM_TM28
+#define ITEM_TM29_PSYCHIC ITEM_TM29
+#define ITEM_TM30_SHADOW_BALL ITEM_TM30
+#define ITEM_TM31_BRICK_BREAK ITEM_TM31
+#define ITEM_TM32_DOUBLE_TEAM ITEM_TM32
+#define ITEM_TM33_REFLECT ITEM_TM33
+#define ITEM_TM34_SHOCK_WAVE ITEM_TM34
+#define ITEM_TM35_FLAMETHROWER ITEM_TM35
+#define ITEM_TM36_SLUDGE_BOMB ITEM_TM36
+#define ITEM_TM37_SANDSTORM ITEM_TM37
+#define ITEM_TM38_FIRE_BLAST ITEM_TM38
+#define ITEM_TM39_ROCK_TOMB ITEM_TM39
+#define ITEM_TM40_AERIAL_ACE ITEM_TM40
+#define ITEM_TM41_TORMENT ITEM_TM41
+#define ITEM_TM42_FACADE ITEM_TM42
+#define ITEM_TM43_SECRET_POWER ITEM_TM43
+#define ITEM_TM44_REST ITEM_TM44
+#define ITEM_TM45_ATTRACT ITEM_TM45
+#define ITEM_TM46_THIEF ITEM_TM46
+#define ITEM_TM47_STEEL_WING ITEM_TM47
+#define ITEM_TM48_SKILL_SWAP ITEM_TM48
+#define ITEM_TM49_SNATCH ITEM_TM49
+#define ITEM_TM50_OVERHEAT ITEM_TM50
+#define ITEM_HM01_CUT ITEM_HM01
+#define ITEM_HM02_FLY ITEM_HM02
+#define ITEM_HM03_SURF ITEM_HM03
+#define ITEM_HM04_STRENGTH ITEM_HM04
+#define ITEM_HM05_FLASH ITEM_HM05
+#define ITEM_HM06_ROCK_SMASH ITEM_HM06
+#define ITEM_HM07_WATERFALL ITEM_HM07
+#define ITEM_HM08_DIVE ITEM_HM08
+
// FireRed/LeafGreen
#define ITEM_OAKS_PARCEL 349
#define ITEM_POKE_FLUTE 350
@@ -379,6 +438,8 @@
#define ITEM_RUBY 373
#define ITEM_SAPPHIRE 374
+#define ITEM_N_A 375
+
// Emerald
#define ITEM_MAGMA_EMBLEM 375
#define ITEM_OLD_SEA_MAP 376
@@ -393,11 +454,4 @@
// Check if the item is one that can be used on a Pokemon.
#define IS_POKEMON_ITEM(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
-// POCKETS
-#define POCKET_ITEMS 1
-#define POCKET_KEY_ITEMS 2
-#define POCKET_POKE_BALLS 3
-#define POCKET_TM_CASE 4
-#define POCKET_BERRY_POUCH 5
-
#endif // GUARD_CONSTANTS_ITEMS_H
diff --git a/include/constants/moves.h b/include/constants/moves.h
index f3a3acb90..62eacc5f1 100644
--- a/include/constants/moves.h
+++ b/include/constants/moves.h
@@ -359,4 +359,6 @@
#define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST
+#define MOVES_COUNT 355
+
#endif // GUARD_CONSTANTS_MOVES_H
diff --git a/include/constants/songs.h b/include/constants/songs.h
index b83b84f26..193a57756 100644
--- a/include/constants/songs.h
+++ b/include/constants/songs.h
@@ -251,6 +251,10 @@
#define SE_W114 246
#define SE_W063B 247
#define SE_CASHIER 248
+#define SE_SHIP_HORN 249
+#define SE_HELP_OPEN 250
+#define SE_HELP_CLOSE 251
+#define SE_HELP_PAGE 252
#define MUS_ME_ASA 256
#define MUS_FANFA1 257
diff --git a/include/constants/species.h b/include/constants/species.h
index 9cb239799..bedb1282d 100644
--- a/include/constants/species.h
+++ b/include/constants/species.h
@@ -450,4 +450,838 @@
#define NUM_SPECIES SPECIES_EGG
+// National Dex Index Defines
+
+#define NATIONAL_DEX_NONE 0
+#define NATIONAL_DEX_BULBASAUR 1
+#define NATIONAL_DEX_IVYSAUR 2
+#define NATIONAL_DEX_VENUSAUR 3
+#define NATIONAL_DEX_CHARMANDER 4
+#define NATIONAL_DEX_CHARMELEON 5
+#define NATIONAL_DEX_CHARIZARD 6
+#define NATIONAL_DEX_SQUIRTLE 7
+#define NATIONAL_DEX_WARTORTLE 8
+#define NATIONAL_DEX_BLASTOISE 9
+#define NATIONAL_DEX_CATERPIE 10
+#define NATIONAL_DEX_METAPOD 11
+#define NATIONAL_DEX_BUTTERFREE 12
+#define NATIONAL_DEX_WEEDLE 13
+#define NATIONAL_DEX_KAKUNA 14
+#define NATIONAL_DEX_BEEDRILL 15
+#define NATIONAL_DEX_PIDGEY 16
+#define NATIONAL_DEX_PIDGEOTTO 17
+#define NATIONAL_DEX_PIDGEOT 18
+#define NATIONAL_DEX_RATTATA 19
+#define NATIONAL_DEX_RATICATE 20
+#define NATIONAL_DEX_SPEAROW 21
+#define NATIONAL_DEX_FEAROW 22
+#define NATIONAL_DEX_EKANS 23
+#define NATIONAL_DEX_ARBOK 24
+#define NATIONAL_DEX_PIKACHU 25
+#define NATIONAL_DEX_RAICHU 26
+#define NATIONAL_DEX_SANDSHREW 27
+#define NATIONAL_DEX_SANDSLASH 28
+#define NATIONAL_DEX_NIDORAN_F 29
+#define NATIONAL_DEX_NIDORINA 30
+#define NATIONAL_DEX_NIDOQUEEN 31
+#define NATIONAL_DEX_NIDORAN_M 32
+#define NATIONAL_DEX_NIDORINO 33
+#define NATIONAL_DEX_NIDOKING 34
+#define NATIONAL_DEX_CLEFAIRY 35
+#define NATIONAL_DEX_CLEFABLE 36
+#define NATIONAL_DEX_VULPIX 37
+#define NATIONAL_DEX_NINETALES 38
+#define NATIONAL_DEX_JIGGLYPUFF 39
+#define NATIONAL_DEX_WIGGLYTUFF 40
+#define NATIONAL_DEX_ZUBAT 41
+#define NATIONAL_DEX_GOLBAT 42
+#define NATIONAL_DEX_ODDISH 43
+#define NATIONAL_DEX_GLOOM 44
+#define NATIONAL_DEX_VILEPLUME 45
+#define NATIONAL_DEX_PARAS 46
+#define NATIONAL_DEX_PARASECT 47
+#define NATIONAL_DEX_VENONAT 48
+#define NATIONAL_DEX_VENOMOTH 49
+#define NATIONAL_DEX_DIGLETT 50
+#define NATIONAL_DEX_DUGTRIO 51
+#define NATIONAL_DEX_MEOWTH 52
+#define NATIONAL_DEX_PERSIAN 53
+#define NATIONAL_DEX_PSYDUCK 54
+#define NATIONAL_DEX_GOLDUCK 55
+#define NATIONAL_DEX_MANKEY 56
+#define NATIONAL_DEX_PRIMEAPE 57
+#define NATIONAL_DEX_GROWLITHE 58
+#define NATIONAL_DEX_ARCANINE 59
+#define NATIONAL_DEX_POLIWAG 60
+#define NATIONAL_DEX_POLIWHIRL 61
+#define NATIONAL_DEX_POLIWRATH 62
+#define NATIONAL_DEX_ABRA 63
+#define NATIONAL_DEX_KADABRA 64
+#define NATIONAL_DEX_ALAKAZAM 65
+#define NATIONAL_DEX_MACHOP 66
+#define NATIONAL_DEX_MACHOKE 67
+#define NATIONAL_DEX_MACHAMP 68
+#define NATIONAL_DEX_BELLSPROUT 69
+#define NATIONAL_DEX_WEEPINBELL 70
+#define NATIONAL_DEX_VICTREEBEL 71
+#define NATIONAL_DEX_TENTACOOL 72
+#define NATIONAL_DEX_TENTACRUEL 73
+#define NATIONAL_DEX_GEODUDE 74
+#define NATIONAL_DEX_GRAVELER 75
+#define NATIONAL_DEX_GOLEM 76
+#define NATIONAL_DEX_PONYTA 77
+#define NATIONAL_DEX_RAPIDASH 78
+#define NATIONAL_DEX_SLOWPOKE 79
+#define NATIONAL_DEX_SLOWBRO 80
+#define NATIONAL_DEX_MAGNEMITE 81
+#define NATIONAL_DEX_MAGNETON 82
+#define NATIONAL_DEX_FARFETCHD 83
+#define NATIONAL_DEX_DODUO 84
+#define NATIONAL_DEX_DODRIO 85
+#define NATIONAL_DEX_SEEL 86
+#define NATIONAL_DEX_DEWGONG 87
+#define NATIONAL_DEX_GRIMER 88
+#define NATIONAL_DEX_MUK 89
+#define NATIONAL_DEX_SHELLDER 90
+#define NATIONAL_DEX_CLOYSTER 91
+#define NATIONAL_DEX_GASTLY 92
+#define NATIONAL_DEX_HAUNTER 93
+#define NATIONAL_DEX_GENGAR 94
+#define NATIONAL_DEX_ONIX 95
+#define NATIONAL_DEX_DROWZEE 96
+#define NATIONAL_DEX_HYPNO 97
+#define NATIONAL_DEX_KRABBY 98
+#define NATIONAL_DEX_KINGLER 99
+#define NATIONAL_DEX_VOLTORB 100
+#define NATIONAL_DEX_ELECTRODE 101
+#define NATIONAL_DEX_EXEGGCUTE 102
+#define NATIONAL_DEX_EXEGGUTOR 103
+#define NATIONAL_DEX_CUBONE 104
+#define NATIONAL_DEX_MAROWAK 105
+#define NATIONAL_DEX_HITMONLEE 106
+#define NATIONAL_DEX_HITMONCHAN 107
+#define NATIONAL_DEX_LICKITUNG 108
+#define NATIONAL_DEX_KOFFING 109
+#define NATIONAL_DEX_WEEZING 110
+#define NATIONAL_DEX_RHYHORN 111
+#define NATIONAL_DEX_RHYDON 112
+#define NATIONAL_DEX_CHANSEY 113
+#define NATIONAL_DEX_TANGELA 114
+#define NATIONAL_DEX_KANGASKHAN 115
+#define NATIONAL_DEX_HORSEA 116
+#define NATIONAL_DEX_SEADRA 117
+#define NATIONAL_DEX_GOLDEEN 118
+#define NATIONAL_DEX_SEAKING 119
+#define NATIONAL_DEX_STARYU 120
+#define NATIONAL_DEX_STARMIE 121
+#define NATIONAL_DEX_MR_MIME 122
+#define NATIONAL_DEX_SCYTHER 123
+#define NATIONAL_DEX_JYNX 124
+#define NATIONAL_DEX_ELECTABUZZ 125
+#define NATIONAL_DEX_MAGMAR 126
+#define NATIONAL_DEX_PINSIR 127
+#define NATIONAL_DEX_TAUROS 128
+#define NATIONAL_DEX_MAGIKARP 129
+#define NATIONAL_DEX_GYARADOS 130
+#define NATIONAL_DEX_LAPRAS 131
+#define NATIONAL_DEX_DITTO 132
+#define NATIONAL_DEX_EEVEE 133
+#define NATIONAL_DEX_VAPOREON 134
+#define NATIONAL_DEX_JOLTEON 135
+#define NATIONAL_DEX_FLAREON 136
+#define NATIONAL_DEX_PORYGON 137
+#define NATIONAL_DEX_OMANYTE 138
+#define NATIONAL_DEX_OMASTAR 139
+#define NATIONAL_DEX_KABUTO 140
+#define NATIONAL_DEX_KABUTOPS 141
+#define NATIONAL_DEX_AERODACTYL 142
+#define NATIONAL_DEX_SNORLAX 143
+#define NATIONAL_DEX_ARTICUNO 144
+#define NATIONAL_DEX_ZAPDOS 145
+#define NATIONAL_DEX_MOLTRES 146
+#define NATIONAL_DEX_DRATINI 147
+#define NATIONAL_DEX_DRAGONAIR 148
+#define NATIONAL_DEX_DRAGONITE 149
+#define NATIONAL_DEX_MEWTWO 150
+#define NATIONAL_DEX_MEW 151
+#define NATIONAL_DEX_CHIKORITA 152
+#define NATIONAL_DEX_BAYLEEF 153
+#define NATIONAL_DEX_MEGANIUM 154
+#define NATIONAL_DEX_CYNDAQUIL 155
+#define NATIONAL_DEX_QUILAVA 156
+#define NATIONAL_DEX_TYPHLOSION 157
+#define NATIONAL_DEX_TOTODILE 158
+#define NATIONAL_DEX_CROCONAW 159
+#define NATIONAL_DEX_FERALIGATR 160
+#define NATIONAL_DEX_SENTRET 161
+#define NATIONAL_DEX_FURRET 162
+#define NATIONAL_DEX_HOOTHOOT 163
+#define NATIONAL_DEX_NOCTOWL 164
+#define NATIONAL_DEX_LEDYBA 165
+#define NATIONAL_DEX_LEDIAN 166
+#define NATIONAL_DEX_SPINARAK 167
+#define NATIONAL_DEX_ARIADOS 168
+#define NATIONAL_DEX_CROBAT 169
+#define NATIONAL_DEX_CHINCHOU 170
+#define NATIONAL_DEX_LANTURN 171
+#define NATIONAL_DEX_PICHU 172
+#define NATIONAL_DEX_CLEFFA 173
+#define NATIONAL_DEX_IGGLYBUFF 174
+#define NATIONAL_DEX_TOGEPI 175
+#define NATIONAL_DEX_TOGETIC 176
+#define NATIONAL_DEX_NATU 177
+#define NATIONAL_DEX_XATU 178
+#define NATIONAL_DEX_MAREEP 179
+#define NATIONAL_DEX_FLAAFFY 180
+#define NATIONAL_DEX_AMPHAROS 181
+#define NATIONAL_DEX_BELLOSSOM 182
+#define NATIONAL_DEX_MARILL 183
+#define NATIONAL_DEX_AZUMARILL 184
+#define NATIONAL_DEX_SUDOWOODO 185
+#define NATIONAL_DEX_POLITOED 186
+#define NATIONAL_DEX_HOPPIP 187
+#define NATIONAL_DEX_SKIPLOOM 188
+#define NATIONAL_DEX_JUMPLUFF 189
+#define NATIONAL_DEX_AIPOM 190
+#define NATIONAL_DEX_SUNKERN 191
+#define NATIONAL_DEX_SUNFLORA 192
+#define NATIONAL_DEX_YANMA 193
+#define NATIONAL_DEX_WOOPER 194
+#define NATIONAL_DEX_QUAGSIRE 195
+#define NATIONAL_DEX_ESPEON 196
+#define NATIONAL_DEX_UMBREON 197
+#define NATIONAL_DEX_MURKROW 198
+#define NATIONAL_DEX_SLOWKING 199
+#define NATIONAL_DEX_MISDREAVUS 200
+#define NATIONAL_DEX_UNOWN 201
+#define NATIONAL_DEX_WOBBUFFET 202
+#define NATIONAL_DEX_GIRAFARIG 203
+#define NATIONAL_DEX_PINECO 204
+#define NATIONAL_DEX_FORRETRESS 205
+#define NATIONAL_DEX_DUNSPARCE 206
+#define NATIONAL_DEX_GLIGAR 207
+#define NATIONAL_DEX_STEELIX 208
+#define NATIONAL_DEX_SNUBBULL 209
+#define NATIONAL_DEX_GRANBULL 210
+#define NATIONAL_DEX_QWILFISH 211
+#define NATIONAL_DEX_SCIZOR 212
+#define NATIONAL_DEX_SHUCKLE 213
+#define NATIONAL_DEX_HERACROSS 214
+#define NATIONAL_DEX_SNEASEL 215
+#define NATIONAL_DEX_TEDDIURSA 216
+#define NATIONAL_DEX_URSARING 217
+#define NATIONAL_DEX_SLUGMA 218
+#define NATIONAL_DEX_MAGCARGO 219
+#define NATIONAL_DEX_SWINUB 220
+#define NATIONAL_DEX_PILOSWINE 221
+#define NATIONAL_DEX_CORSOLA 222
+#define NATIONAL_DEX_REMORAID 223
+#define NATIONAL_DEX_OCTILLERY 224
+#define NATIONAL_DEX_DELIBIRD 225
+#define NATIONAL_DEX_MANTINE 226
+#define NATIONAL_DEX_SKARMORY 227
+#define NATIONAL_DEX_HOUNDOUR 228
+#define NATIONAL_DEX_HOUNDOOM 229
+#define NATIONAL_DEX_KINGDRA 230
+#define NATIONAL_DEX_PHANPY 231
+#define NATIONAL_DEX_DONPHAN 232
+#define NATIONAL_DEX_PORYGON2 233
+#define NATIONAL_DEX_STANTLER 234
+#define NATIONAL_DEX_SMEARGLE 235
+#define NATIONAL_DEX_TYROGUE 236
+#define NATIONAL_DEX_HITMONTOP 237
+#define NATIONAL_DEX_SMOOCHUM 238
+#define NATIONAL_DEX_ELEKID 239
+#define NATIONAL_DEX_MAGBY 240
+#define NATIONAL_DEX_MILTANK 241
+#define NATIONAL_DEX_BLISSEY 242
+#define NATIONAL_DEX_RAIKOU 243
+#define NATIONAL_DEX_ENTEI 244
+#define NATIONAL_DEX_SUICUNE 245
+#define NATIONAL_DEX_LARVITAR 246
+#define NATIONAL_DEX_PUPITAR 247
+#define NATIONAL_DEX_TYRANITAR 248
+#define NATIONAL_DEX_LUGIA 249
+#define NATIONAL_DEX_HO_OH 250
+#define NATIONAL_DEX_CELEBI 251
+
+#define NATIONAL_DEX_OLD_UNOWN_B 387
+#define NATIONAL_DEX_OLD_UNOWN_C 388
+#define NATIONAL_DEX_OLD_UNOWN_D 389
+#define NATIONAL_DEX_OLD_UNOWN_E 390
+#define NATIONAL_DEX_OLD_UNOWN_F 391
+#define NATIONAL_DEX_OLD_UNOWN_G 392
+#define NATIONAL_DEX_OLD_UNOWN_H 393
+#define NATIONAL_DEX_OLD_UNOWN_I 394
+#define NATIONAL_DEX_OLD_UNOWN_J 395
+#define NATIONAL_DEX_OLD_UNOWN_K 396
+#define NATIONAL_DEX_OLD_UNOWN_L 397
+#define NATIONAL_DEX_OLD_UNOWN_M 398
+#define NATIONAL_DEX_OLD_UNOWN_N 399
+#define NATIONAL_DEX_OLD_UNOWN_O 400
+#define NATIONAL_DEX_OLD_UNOWN_P 401
+#define NATIONAL_DEX_OLD_UNOWN_Q 402
+#define NATIONAL_DEX_OLD_UNOWN_R 403
+#define NATIONAL_DEX_OLD_UNOWN_S 404
+#define NATIONAL_DEX_OLD_UNOWN_T 405
+#define NATIONAL_DEX_OLD_UNOWN_U 406
+#define NATIONAL_DEX_OLD_UNOWN_V 407
+#define NATIONAL_DEX_OLD_UNOWN_W 408
+#define NATIONAL_DEX_OLD_UNOWN_X 409
+#define NATIONAL_DEX_OLD_UNOWN_Y 410
+#define NATIONAL_DEX_OLD_UNOWN_Z 411
+
+#define NATIONAL_DEX_TREECKO 252
+#define NATIONAL_DEX_GROVYLE 253
+#define NATIONAL_DEX_SCEPTILE 254
+#define NATIONAL_DEX_TORCHIC 255
+#define NATIONAL_DEX_COMBUSKEN 256
+#define NATIONAL_DEX_BLAZIKEN 257
+#define NATIONAL_DEX_MUDKIP 258
+#define NATIONAL_DEX_MARSHTOMP 259
+#define NATIONAL_DEX_SWAMPERT 260
+#define NATIONAL_DEX_POOCHYENA 261
+#define NATIONAL_DEX_MIGHTYENA 262
+#define NATIONAL_DEX_ZIGZAGOON 263
+#define NATIONAL_DEX_LINOONE 264
+#define NATIONAL_DEX_WURMPLE 265
+#define NATIONAL_DEX_SILCOON 266
+#define NATIONAL_DEX_BEAUTIFLY 267
+#define NATIONAL_DEX_CASCOON 268
+#define NATIONAL_DEX_DUSTOX 269
+#define NATIONAL_DEX_LOTAD 270
+#define NATIONAL_DEX_LOMBRE 271
+#define NATIONAL_DEX_LUDICOLO 272
+#define NATIONAL_DEX_SEEDOT 273
+#define NATIONAL_DEX_NUZLEAF 274
+#define NATIONAL_DEX_SHIFTRY 275
+#define NATIONAL_DEX_NINCADA 290
+#define NATIONAL_DEX_NINJASK 291
+#define NATIONAL_DEX_SHEDINJA 292
+#define NATIONAL_DEX_TAILLOW 276
+#define NATIONAL_DEX_SWELLOW 277
+#define NATIONAL_DEX_SHROOMISH 285
+#define NATIONAL_DEX_BRELOOM 286
+#define NATIONAL_DEX_SPINDA 327
+#define NATIONAL_DEX_WINGULL 278
+#define NATIONAL_DEX_PELIPPER 279
+#define NATIONAL_DEX_SURSKIT 283
+#define NATIONAL_DEX_MASQUERAIN 284
+#define NATIONAL_DEX_WAILMER 320
+#define NATIONAL_DEX_WAILORD 321
+#define NATIONAL_DEX_SKITTY 300
+#define NATIONAL_DEX_DELCATTY 301
+#define NATIONAL_DEX_KECLEON 352
+#define NATIONAL_DEX_BALTOY 343
+#define NATIONAL_DEX_CLAYDOL 344
+#define NATIONAL_DEX_NOSEPASS 299
+#define NATIONAL_DEX_TORKOAL 324
+#define NATIONAL_DEX_SABLEYE 302
+#define NATIONAL_DEX_BARBOACH 339
+#define NATIONAL_DEX_WHISCASH 340
+#define NATIONAL_DEX_LUVDISC 370
+#define NATIONAL_DEX_CORPHISH 341
+#define NATIONAL_DEX_CRAWDAUNT 342
+#define NATIONAL_DEX_FEEBAS 349
+#define NATIONAL_DEX_MILOTIC 350
+#define NATIONAL_DEX_CARVANHA 318
+#define NATIONAL_DEX_SHARPEDO 319
+#define NATIONAL_DEX_TRAPINCH 328
+#define NATIONAL_DEX_VIBRAVA 329
+#define NATIONAL_DEX_FLYGON 330
+#define NATIONAL_DEX_MAKUHITA 296
+#define NATIONAL_DEX_HARIYAMA 297
+#define NATIONAL_DEX_ELECTRIKE 309
+#define NATIONAL_DEX_MANECTRIC 310
+#define NATIONAL_DEX_NUMEL 322
+#define NATIONAL_DEX_CAMERUPT 323
+#define NATIONAL_DEX_SPHEAL 363
+#define NATIONAL_DEX_SEALEO 364
+#define NATIONAL_DEX_WALREIN 365
+#define NATIONAL_DEX_CACNEA 331
+#define NATIONAL_DEX_CACTURNE 332
+#define NATIONAL_DEX_SNORUNT 361
+#define NATIONAL_DEX_GLALIE 362
+#define NATIONAL_DEX_LUNATONE 337
+#define NATIONAL_DEX_SOLROCK 338
+#define NATIONAL_DEX_AZURILL 298
+#define NATIONAL_DEX_SPOINK 325
+#define NATIONAL_DEX_GRUMPIG 326
+#define NATIONAL_DEX_PLUSLE 311
+#define NATIONAL_DEX_MINUN 312
+#define NATIONAL_DEX_MAWILE 303
+#define NATIONAL_DEX_MEDITITE 307
+#define NATIONAL_DEX_MEDICHAM 308
+#define NATIONAL_DEX_SWABLU 333
+#define NATIONAL_DEX_ALTARIA 334
+#define NATIONAL_DEX_WYNAUT 360
+#define NATIONAL_DEX_DUSKULL 355
+#define NATIONAL_DEX_DUSCLOPS 356
+#define NATIONAL_DEX_ROSELIA 315
+#define NATIONAL_DEX_SLAKOTH 287
+#define NATIONAL_DEX_VIGOROTH 288
+#define NATIONAL_DEX_SLAKING 289
+#define NATIONAL_DEX_GULPIN 316
+#define NATIONAL_DEX_SWALOT 317
+#define NATIONAL_DEX_TROPIUS 357
+#define NATIONAL_DEX_WHISMUR 293
+#define NATIONAL_DEX_LOUDRED 294
+#define NATIONAL_DEX_EXPLOUD 295
+#define NATIONAL_DEX_CLAMPERL 366
+#define NATIONAL_DEX_HUNTAIL 367
+#define NATIONAL_DEX_GOREBYSS 368
+#define NATIONAL_DEX_ABSOL 359
+#define NATIONAL_DEX_SHUPPET 353
+#define NATIONAL_DEX_BANETTE 354
+#define NATIONAL_DEX_SEVIPER 336
+#define NATIONAL_DEX_ZANGOOSE 335
+#define NATIONAL_DEX_RELICANTH 369
+#define NATIONAL_DEX_ARON 304
+#define NATIONAL_DEX_LAIRON 305
+#define NATIONAL_DEX_AGGRON 306
+#define NATIONAL_DEX_CASTFORM 351
+#define NATIONAL_DEX_VOLBEAT 313
+#define NATIONAL_DEX_ILLUMISE 314
+#define NATIONAL_DEX_LILEEP 345
+#define NATIONAL_DEX_CRADILY 346
+#define NATIONAL_DEX_ANORITH 347
+#define NATIONAL_DEX_ARMALDO 348
+#define NATIONAL_DEX_RALTS 280
+#define NATIONAL_DEX_KIRLIA 281
+#define NATIONAL_DEX_GARDEVOIR 282
+#define NATIONAL_DEX_BAGON 371
+#define NATIONAL_DEX_SHELGON 372
+#define NATIONAL_DEX_SALAMENCE 373
+#define NATIONAL_DEX_BELDUM 374
+#define NATIONAL_DEX_METANG 375
+#define NATIONAL_DEX_METAGROSS 376
+#define NATIONAL_DEX_REGIROCK 377
+#define NATIONAL_DEX_REGICE 378
+#define NATIONAL_DEX_REGISTEEL 379
+#define NATIONAL_DEX_KYOGRE 382
+#define NATIONAL_DEX_GROUDON 383
+#define NATIONAL_DEX_RAYQUAZA 384
+#define NATIONAL_DEX_LATIAS 380
+#define NATIONAL_DEX_LATIOS 381
+#define NATIONAL_DEX_JIRACHI 385
+#define NATIONAL_DEX_DEOXYS 386
+#define NATIONAL_DEX_CHIMECHO 358
+
+// Hoenn Dex Index Defines
+
+#define HOENN_DEX_NONE 0
+#define HOENN_DEX_BULBASAUR 203
+#define HOENN_DEX_IVYSAUR 204
+#define HOENN_DEX_VENUSAUR 205
+#define HOENN_DEX_CHARMANDER 206
+#define HOENN_DEX_CHARMELEON 207
+#define HOENN_DEX_CHARIZARD 208
+#define HOENN_DEX_SQUIRTLE 209
+#define HOENN_DEX_WARTORTLE 210
+#define HOENN_DEX_BLASTOISE 211
+#define HOENN_DEX_CATERPIE 212
+#define HOENN_DEX_METAPOD 213
+#define HOENN_DEX_BUTTERFREE 214
+#define HOENN_DEX_WEEDLE 215
+#define HOENN_DEX_KAKUNA 216
+#define HOENN_DEX_BEEDRILL 217
+#define HOENN_DEX_PIDGEY 218
+#define HOENN_DEX_PIDGEOTTO 219
+#define HOENN_DEX_PIDGEOT 220
+#define HOENN_DEX_RATTATA 221
+#define HOENN_DEX_RATICATE 222
+#define HOENN_DEX_SPEAROW 223
+#define HOENN_DEX_FEAROW 224
+#define HOENN_DEX_EKANS 225
+#define HOENN_DEX_ARBOK 226
+#define HOENN_DEX_PIKACHU 156
+#define HOENN_DEX_RAICHU 157
+#define HOENN_DEX_SANDSHREW 112
+#define HOENN_DEX_SANDSLASH 113
+#define HOENN_DEX_NIDORAN_F 227
+#define HOENN_DEX_NIDORINA 228
+#define HOENN_DEX_NIDOQUEEN 229
+#define HOENN_DEX_NIDORAN_M 230
+#define HOENN_DEX_NIDORINO 231
+#define HOENN_DEX_NIDOKING 232
+#define HOENN_DEX_CLEFAIRY 233
+#define HOENN_DEX_CLEFABLE 234
+#define HOENN_DEX_VULPIX 153
+#define HOENN_DEX_NINETALES 154
+#define HOENN_DEX_JIGGLYPUFF 138
+#define HOENN_DEX_WIGGLYTUFF 139
+#define HOENN_DEX_ZUBAT 63
+#define HOENN_DEX_GOLBAT 64
+#define HOENN_DEX_ODDISH 88
+#define HOENN_DEX_GLOOM 89
+#define HOENN_DEX_VILEPLUME 90
+#define HOENN_DEX_PARAS 235
+#define HOENN_DEX_PARASECT 236
+#define HOENN_DEX_VENONAT 237
+#define HOENN_DEX_VENOMOTH 238
+#define HOENN_DEX_DIGLETT 239
+#define HOENN_DEX_DUGTRIO 240
+#define HOENN_DEX_MEOWTH 241
+#define HOENN_DEX_PERSIAN 242
+#define HOENN_DEX_PSYDUCK 158
+#define HOENN_DEX_GOLDUCK 159
+#define HOENN_DEX_MANKEY 243
+#define HOENN_DEX_PRIMEAPE 244
+#define HOENN_DEX_GROWLITHE 245
+#define HOENN_DEX_ARCANINE 246
+#define HOENN_DEX_POLIWAG 247
+#define HOENN_DEX_POLIWHIRL 248
+#define HOENN_DEX_POLIWRATH 249
+#define HOENN_DEX_ABRA 39
+#define HOENN_DEX_KADABRA 40
+#define HOENN_DEX_ALAKAZAM 41
+#define HOENN_DEX_MACHOP 73
+#define HOENN_DEX_MACHOKE 74
+#define HOENN_DEX_MACHAMP 75
+#define HOENN_DEX_BELLSPROUT 250
+#define HOENN_DEX_WEEPINBELL 251
+#define HOENN_DEX_VICTREEBEL 252
+#define HOENN_DEX_TENTACOOL 66
+#define HOENN_DEX_TENTACRUEL 67
+#define HOENN_DEX_GEODUDE 57
+#define HOENN_DEX_GRAVELER 58
+#define HOENN_DEX_GOLEM 59
+#define HOENN_DEX_PONYTA 253
+#define HOENN_DEX_RAPIDASH 254
+#define HOENN_DEX_SLOWPOKE 255
+#define HOENN_DEX_SLOWBRO 256
+#define HOENN_DEX_MAGNEMITE 82
+#define HOENN_DEX_MAGNETON 83
+#define HOENN_DEX_FARFETCHD 257
+#define HOENN_DEX_DODUO 92
+#define HOENN_DEX_DODRIO 93
+#define HOENN_DEX_SEEL 258
+#define HOENN_DEX_DEWGONG 259
+#define HOENN_DEX_GRIMER 106
+#define HOENN_DEX_MUK 107
+#define HOENN_DEX_SHELLDER 260
+#define HOENN_DEX_CLOYSTER 261
+#define HOENN_DEX_GASTLY 262
+#define HOENN_DEX_HAUNTER 263
+#define HOENN_DEX_GENGAR 264
+#define HOENN_DEX_ONIX 265
+#define HOENN_DEX_DROWZEE 266
+#define HOENN_DEX_HYPNO 267
+#define HOENN_DEX_KRABBY 268
+#define HOENN_DEX_KINGLER 269
+#define HOENN_DEX_VOLTORB 84
+#define HOENN_DEX_ELECTRODE 85
+#define HOENN_DEX_EXEGGCUTE 270
+#define HOENN_DEX_EXEGGUTOR 271
+#define HOENN_DEX_CUBONE 272
+#define HOENN_DEX_MAROWAK 273
+#define HOENN_DEX_HITMONLEE 274
+#define HOENN_DEX_HITMONCHAN 275
+#define HOENN_DEX_LICKITUNG 276
+#define HOENN_DEX_KOFFING 108
+#define HOENN_DEX_WEEZING 109
+#define HOENN_DEX_RHYHORN 169
+#define HOENN_DEX_RHYDON 170
+#define HOENN_DEX_CHANSEY 277
+#define HOENN_DEX_TANGELA 278
+#define HOENN_DEX_KANGASKHAN 279
+#define HOENN_DEX_HORSEA 184
+#define HOENN_DEX_SEADRA 185
+#define HOENN_DEX_GOLDEEN 50
+#define HOENN_DEX_SEAKING 51
+#define HOENN_DEX_STARYU 143
+#define HOENN_DEX_STARMIE 144
+#define HOENN_DEX_MR_MIME 280
+#define HOENN_DEX_SCYTHER 281
+#define HOENN_DEX_JYNX 282
+#define HOENN_DEX_ELECTABUZZ 283
+#define HOENN_DEX_MAGMAR 284
+#define HOENN_DEX_PINSIR 167
+#define HOENN_DEX_TAUROS 285
+#define HOENN_DEX_MAGIKARP 52
+#define HOENN_DEX_GYARADOS 53
+#define HOENN_DEX_LAPRAS 286
+#define HOENN_DEX_DITTO 287
+#define HOENN_DEX_EEVEE 288
+#define HOENN_DEX_VAPOREON 289
+#define HOENN_DEX_JOLTEON 290
+#define HOENN_DEX_FLAREON 291
+#define HOENN_DEX_PORYGON 292
+#define HOENN_DEX_OMANYTE 293
+#define HOENN_DEX_OMASTAR 294
+#define HOENN_DEX_KABUTO 295
+#define HOENN_DEX_KABUTOPS 296
+#define HOENN_DEX_AERODACTYL 297
+#define HOENN_DEX_SNORLAX 298
+#define HOENN_DEX_ARTICUNO 299
+#define HOENN_DEX_ZAPDOS 300
+#define HOENN_DEX_MOLTRES 301
+#define HOENN_DEX_DRATINI 302
+#define HOENN_DEX_DRAGONAIR 303
+#define HOENN_DEX_DRAGONITE 304
+#define HOENN_DEX_MEWTWO 305
+#define HOENN_DEX_MEW 306
+#define HOENN_DEX_CHIKORITA 307
+#define HOENN_DEX_BAYLEEF 308
+#define HOENN_DEX_MEGANIUM 309
+#define HOENN_DEX_CYNDAQUIL 310
+#define HOENN_DEX_QUILAVA 311
+#define HOENN_DEX_TYPHLOSION 312
+#define HOENN_DEX_TOTODILE 313
+#define HOENN_DEX_CROCONAW 314
+#define HOENN_DEX_FERALIGATR 315
+#define HOENN_DEX_SENTRET 316
+#define HOENN_DEX_FURRET 317
+#define HOENN_DEX_HOOTHOOT 318
+#define HOENN_DEX_NOCTOWL 319
+#define HOENN_DEX_LEDYBA 320
+#define HOENN_DEX_LEDIAN 321
+#define HOENN_DEX_SPINARAK 322
+#define HOENN_DEX_ARIADOS 323
+#define HOENN_DEX_CROBAT 65
+#define HOENN_DEX_CHINCHOU 181
+#define HOENN_DEX_LANTURN 182
+#define HOENN_DEX_PICHU 155
+#define HOENN_DEX_CLEFFA 324
+#define HOENN_DEX_IGGLYBUFF 137
+#define HOENN_DEX_TOGEPI 325
+#define HOENN_DEX_TOGETIC 326
+#define HOENN_DEX_NATU 162
+#define HOENN_DEX_XATU 163
+#define HOENN_DEX_MAREEP 327
+#define HOENN_DEX_FLAAFFY 328
+#define HOENN_DEX_AMPHAROS 329
+#define HOENN_DEX_BELLOSSOM 91
+#define HOENN_DEX_MARILL 55
+#define HOENN_DEX_AZUMARILL 56
+#define HOENN_DEX_SUDOWOODO 330
+#define HOENN_DEX_POLITOED 331
+#define HOENN_DEX_HOPPIP 332
+#define HOENN_DEX_SKIPLOOM 333
+#define HOENN_DEX_JUMPLUFF 334
+#define HOENN_DEX_AIPOM 335
+#define HOENN_DEX_SUNKERN 336
+#define HOENN_DEX_SUNFLORA 337
+#define HOENN_DEX_YANMA 338
+#define HOENN_DEX_WOOPER 339
+#define HOENN_DEX_QUAGSIRE 340
+#define HOENN_DEX_ESPEON 341
+#define HOENN_DEX_UMBREON 342
+#define HOENN_DEX_MURKROW 343
+#define HOENN_DEX_SLOWKING 344
+#define HOENN_DEX_MISDREAVUS 345
+#define HOENN_DEX_UNOWN 346
+#define HOENN_DEX_WOBBUFFET 161
+#define HOENN_DEX_GIRAFARIG 164
+#define HOENN_DEX_PINECO 347
+#define HOENN_DEX_FORRETRESS 348
+#define HOENN_DEX_DUNSPARCE 349
+#define HOENN_DEX_GLIGAR 350
+#define HOENN_DEX_STEELIX 351
+#define HOENN_DEX_SNUBBULL 352
+#define HOENN_DEX_GRANBULL 353
+#define HOENN_DEX_QWILFISH 354
+#define HOENN_DEX_SCIZOR 355
+#define HOENN_DEX_SHUCKLE 356
+#define HOENN_DEX_HERACROSS 168
+#define HOENN_DEX_SNEASEL 357
+#define HOENN_DEX_TEDDIURSA 358
+#define HOENN_DEX_URSARING 359
+#define HOENN_DEX_SLUGMA 103
+#define HOENN_DEX_MAGCARGO 104
+#define HOENN_DEX_SWINUB 360
+#define HOENN_DEX_PILOSWINE 361
+#define HOENN_DEX_CORSOLA 180
+#define HOENN_DEX_REMORAID 362
+#define HOENN_DEX_OCTILLERY 363
+#define HOENN_DEX_DELIBIRD 364
+#define HOENN_DEX_MANTINE 365
+#define HOENN_DEX_SKARMORY 115
+#define HOENN_DEX_HOUNDOUR 366
+#define HOENN_DEX_HOUNDOOM 367
+#define HOENN_DEX_KINGDRA 186
+#define HOENN_DEX_PHANPY 165
+#define HOENN_DEX_DONPHAN 166
+#define HOENN_DEX_PORYGON2 368
+#define HOENN_DEX_STANTLER 369
+#define HOENN_DEX_SMEARGLE 370
+#define HOENN_DEX_TYROGUE 371
+#define HOENN_DEX_HITMONTOP 372
+#define HOENN_DEX_SMOOCHUM 373
+#define HOENN_DEX_ELEKID 374
+#define HOENN_DEX_MAGBY 375
+#define HOENN_DEX_MILTANK 376
+#define HOENN_DEX_BLISSEY 377
+#define HOENN_DEX_RAIKOU 378
+#define HOENN_DEX_ENTEI 379
+#define HOENN_DEX_SUICUNE 380
+#define HOENN_DEX_LARVITAR 381
+#define HOENN_DEX_PUPITAR 382
+#define HOENN_DEX_TYRANITAR 383
+#define HOENN_DEX_LUGIA 384
+#define HOENN_DEX_HO_OH 385
+#define HOENN_DEX_CELEBI 386
+
+#define HOENN_DEX_OLD_UNOWN_B 387
+#define HOENN_DEX_OLD_UNOWN_C 388
+#define HOENN_DEX_OLD_UNOWN_D 389
+#define HOENN_DEX_OLD_UNOWN_E 390
+#define HOENN_DEX_OLD_UNOWN_F 391
+#define HOENN_DEX_OLD_UNOWN_G 392
+#define HOENN_DEX_OLD_UNOWN_H 393
+#define HOENN_DEX_OLD_UNOWN_I 394
+#define HOENN_DEX_OLD_UNOWN_J 395
+#define HOENN_DEX_OLD_UNOWN_K 396
+#define HOENN_DEX_OLD_UNOWN_L 397
+#define HOENN_DEX_OLD_UNOWN_M 398
+#define HOENN_DEX_OLD_UNOWN_N 399
+#define HOENN_DEX_OLD_UNOWN_O 400
+#define HOENN_DEX_OLD_UNOWN_P 401
+#define HOENN_DEX_OLD_UNOWN_Q 402
+#define HOENN_DEX_OLD_UNOWN_R 403
+#define HOENN_DEX_OLD_UNOWN_S 404
+#define HOENN_DEX_OLD_UNOWN_T 405
+#define HOENN_DEX_OLD_UNOWN_U 406
+#define HOENN_DEX_OLD_UNOWN_V 407
+#define HOENN_DEX_OLD_UNOWN_W 408
+#define HOENN_DEX_OLD_UNOWN_X 409
+#define HOENN_DEX_OLD_UNOWN_Y 410
+#define HOENN_DEX_OLD_UNOWN_Z 411
+
+#define HOENN_DEX_TREECKO 1
+#define HOENN_DEX_GROVYLE 2
+#define HOENN_DEX_SCEPTILE 3
+#define HOENN_DEX_TORCHIC 4
+#define HOENN_DEX_COMBUSKEN 5
+#define HOENN_DEX_BLAZIKEN 6
+#define HOENN_DEX_MUDKIP 7
+#define HOENN_DEX_MARSHTOMP 8
+#define HOENN_DEX_SWAMPERT 9
+#define HOENN_DEX_POOCHYENA 10
+#define HOENN_DEX_MIGHTYENA 11
+#define HOENN_DEX_ZIGZAGOON 12
+#define HOENN_DEX_LINOONE 13
+#define HOENN_DEX_WURMPLE 14
+#define HOENN_DEX_SILCOON 15
+#define HOENN_DEX_BEAUTIFLY 16
+#define HOENN_DEX_CASCOON 17
+#define HOENN_DEX_DUSTOX 18
+#define HOENN_DEX_LOTAD 19
+#define HOENN_DEX_LOMBRE 20
+#define HOENN_DEX_LUDICOLO 21
+#define HOENN_DEX_SEEDOT 22
+#define HOENN_DEX_NUZLEAF 23
+#define HOENN_DEX_SHIFTRY 24
+#define HOENN_DEX_NINCADA 42
+#define HOENN_DEX_NINJASK 43
+#define HOENN_DEX_SHEDINJA 44
+#define HOENN_DEX_TAILLOW 25
+#define HOENN_DEX_SWELLOW 26
+#define HOENN_DEX_SHROOMISH 34
+#define HOENN_DEX_BRELOOM 35
+#define HOENN_DEX_SPINDA 114
+#define HOENN_DEX_WINGULL 27
+#define HOENN_DEX_PELIPPER 28
+#define HOENN_DEX_SURSKIT 32
+#define HOENN_DEX_MASQUERAIN 33
+#define HOENN_DEX_WAILMER 99
+#define HOENN_DEX_WAILORD 100
+#define HOENN_DEX_SKITTY 61
+#define HOENN_DEX_DELCATTY 62
+#define HOENN_DEX_KECLEON 145
+#define HOENN_DEX_BALTOY 131
+#define HOENN_DEX_CLAYDOL 132
+#define HOENN_DEX_NOSEPASS 60
+#define HOENN_DEX_TORKOAL 105
+#define HOENN_DEX_SABLEYE 68
+#define HOENN_DEX_BARBOACH 127
+#define HOENN_DEX_WHISCASH 128
+#define HOENN_DEX_LUVDISC 183
+#define HOENN_DEX_CORPHISH 129
+#define HOENN_DEX_CRAWDAUNT 130
+#define HOENN_DEX_FEEBAS 140
+#define HOENN_DEX_MILOTIC 141
+#define HOENN_DEX_CARVANHA 97
+#define HOENN_DEX_SHARPEDO 98
+#define HOENN_DEX_TRAPINCH 116
+#define HOENN_DEX_VIBRAVA 117
+#define HOENN_DEX_FLYGON 118
+#define HOENN_DEX_MAKUHITA 48
+#define HOENN_DEX_HARIYAMA 49
+#define HOENN_DEX_ELECTRIKE 78
+#define HOENN_DEX_MANECTRIC 79
+#define HOENN_DEX_NUMEL 101
+#define HOENN_DEX_CAMERUPT 102
+#define HOENN_DEX_SPHEAL 173
+#define HOENN_DEX_SEALEO 174
+#define HOENN_DEX_WALREIN 175
+#define HOENN_DEX_CACNEA 119
+#define HOENN_DEX_CACTURNE 120
+#define HOENN_DEX_SNORUNT 171
+#define HOENN_DEX_GLALIE 172
+#define HOENN_DEX_LUNATONE 125
+#define HOENN_DEX_SOLROCK 126
+#define HOENN_DEX_AZURILL 54
+#define HOENN_DEX_SPOINK 110
+#define HOENN_DEX_GRUMPIG 111
+#define HOENN_DEX_PLUSLE 80
+#define HOENN_DEX_MINUN 81
+#define HOENN_DEX_MAWILE 69
+#define HOENN_DEX_MEDITITE 76
+#define HOENN_DEX_MEDICHAM 77
+#define HOENN_DEX_SWABLU 121
+#define HOENN_DEX_ALTARIA 122
+#define HOENN_DEX_WYNAUT 160
+#define HOENN_DEX_DUSKULL 148
+#define HOENN_DEX_DUSCLOPS 149
+#define HOENN_DEX_ROSELIA 94
+#define HOENN_DEX_SLAKOTH 36
+#define HOENN_DEX_VIGOROTH 37
+#define HOENN_DEX_SLAKING 38
+#define HOENN_DEX_GULPIN 95
+#define HOENN_DEX_SWALOT 96
+#define HOENN_DEX_TROPIUS 150
+#define HOENN_DEX_WHISMUR 45
+#define HOENN_DEX_LOUDRED 46
+#define HOENN_DEX_EXPLOUD 47
+#define HOENN_DEX_CLAMPERL 176
+#define HOENN_DEX_HUNTAIL 177
+#define HOENN_DEX_GOREBYSS 178
+#define HOENN_DEX_ABSOL 152
+#define HOENN_DEX_SHUPPET 146
+#define HOENN_DEX_BANETTE 147
+#define HOENN_DEX_SEVIPER 124
+#define HOENN_DEX_ZANGOOSE 123
+#define HOENN_DEX_RELICANTH 179
+#define HOENN_DEX_ARON 70
+#define HOENN_DEX_LAIRON 71
+#define HOENN_DEX_AGGRON 72
+#define HOENN_DEX_CASTFORM 142
+#define HOENN_DEX_VOLBEAT 86
+#define HOENN_DEX_ILLUMISE 87
+#define HOENN_DEX_LILEEP 133
+#define HOENN_DEX_CRADILY 134
+#define HOENN_DEX_ANORITH 135
+#define HOENN_DEX_ARMALDO 136
+#define HOENN_DEX_RALTS 29
+#define HOENN_DEX_KIRLIA 30
+#define HOENN_DEX_GARDEVOIR 31
+#define HOENN_DEX_BAGON 187
+#define HOENN_DEX_SHELGON 188
+#define HOENN_DEX_SALAMENCE 189
+#define HOENN_DEX_BELDUM 190
+#define HOENN_DEX_METANG 191
+#define HOENN_DEX_METAGROSS 192
+#define HOENN_DEX_REGIROCK 193
+#define HOENN_DEX_REGICE 194
+#define HOENN_DEX_REGISTEEL 195
+#define HOENN_DEX_KYOGRE 198
+#define HOENN_DEX_GROUDON 199
+#define HOENN_DEX_RAYQUAZA 200
+#define HOENN_DEX_LATIAS 196
+#define HOENN_DEX_LATIOS 197
+#define HOENN_DEX_JIRACHI 201
+#define HOENN_DEX_DEOXYS 202
+#define HOENN_DEX_CHIMECHO 151
+
#endif // GUARD_CONSTANTS_SPECIES_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 54bcb20a0..989b27387 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -35,8 +35,8 @@
#define VAR_0x401D 0x401D
#define VAR_0x401E 0x401E
#define VAR_0x401F 0x401F
-#define VAR_RECYCLE_GOODS 0x4020
-#define VAR_REPEL_STEP_COUNT 0x4021
+#define VAR_REPEL_STEP_COUNT 0x4020
+#define VAR_0x4021 0x4021
#define VAR_ICE_STEP_COUNT 0x4022
#define VAR_0x4023 0x4023
#define VAR_MIRAGE_RND_H 0x4024
@@ -89,7 +89,7 @@
#define VAR_MAP_SCENE_PALLET_TOWN 0x4050
#define VAR_0x4051 0x4051
#define VAR_0x4052 0x4052
-#define VAR_0x4053 0x4053
+#define VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER 0x4053
#define VAR_0x4054 0x4054
#define VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB 0x4055
#define VAR_MAP_SCENE_PALLET_TOWN_PLAYERS_HOUSE_2F 0x4056
diff --git a/include/data2.h b/include/data2.h
index e383b1c9a..3ce3c33c8 100644
--- a/include/data2.h
+++ b/include/data2.h
@@ -18,5 +18,30 @@ extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
extern const u8 gMoveNames[][13];
extern const u8 gAbilityNames[][13];
extern const u8 gTypeNames[][7];
+extern const u16 gUnknown_8251CB8[];
+extern const u16 gUnknown_8251FEE[];
+extern const u16 gUnknown_8252324[];
+extern const u16 gUnknown_82539D4[];
+
+extern const struct CompressedSpritePalette gMonPaletteTable[];
+extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
+extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[];
+extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
+
+extern const struct OamData gUnknown_824F010;
+extern const struct OamData gUnknown_824F018;
+extern const union AnimCmd *const gUnknown_82349BC[];
+extern const union AffineAnimCmd *const gUnknown_82348C8[];
+extern const union AffineAnimCmd *const gUnknown_8234944[];
+extern const struct SpriteFrameImage gUnknown_8234698[];
+extern const struct SpriteFrameImage gUnknown_82346B8[];
+extern const struct SpriteFrameImage gUnknown_82346D8[];
+extern const struct SpriteFrameImage gUnknown_82346F8[];
+extern const struct SpriteFrameImage gUnknown_8234718[];
+extern const struct SpriteFrameImage gUnknown_8234740[];
+extern const struct SpriteFrameImage gUnknown_8234768[];
+extern const struct SpriteFrameImage gUnknown_8234788[];
+extern const struct SpriteFrameImage gUnknown_82347A8[];
+extern const struct SpriteFrameImage gUnknown_82347C8[];
#endif // GUARD_DATA2_H
diff --git a/include/decompress.h b/include/decompress.h
index 19b507525..03080fe48 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -10,15 +10,13 @@ extern u8 gDecompressionBuffer[0x4000];
void LZDecompressWram(const void *src, void *dest);
void LZDecompressVram(const void *src, void *dest);
-u16 LoadCompressedObjectPic(const struct CompressedSpriteSheet *src);
-void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer);
-bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src);
+u16 LoadCompressedSpriteSheet(const struct CompressedSpriteSheet *src);
+void LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer);
+bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet* src);
-void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src);
-void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
-bool8 LoadCompressedObjectPaletteUsingHeap(const struct CompressedSpritePalette *src);
-
-bool8 sub_800F078(const struct CompressedSpritePalette *src);
+void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src);
+void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
+bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src);
void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
@@ -27,15 +25,12 @@ void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet
void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
void HandleLoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
void HandleLoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
-void sub_800ECC4(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
+void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
-u32 sub_8034974(const u8 *ptr);
-
-void sub_800F034(const struct CompressedSpriteSheet *src);
u32 GetDecompressedDataSize(const u8 *ptr);
#endif // GUARD_DECOMPRESS_H
diff --git a/include/dma3.h b/include/dma3.h
index fcd7bae43..381e1e322 100644
--- a/include/dma3.h
+++ b/include/dma3.h
@@ -3,10 +3,55 @@
#include "global.h"
+// Maximum amount of data we will transfer in one operation
+#define MAX_DMA_BLOCK_SIZE 0x1000
+
+#define Dma3CopyLarge_(src, dest, size, bit) \
+{ \
+ const void *_src = src; \
+ void *_dest = dest; \
+ u32 _size = size; \
+ while (1) \
+ { \
+ if (_size <= MAX_DMA_BLOCK_SIZE) \
+ { \
+ DmaCopy##bit(3, _src, _dest, _size); \
+ break; \
+ } \
+ DmaCopy##bit(3, _src, _dest, MAX_DMA_BLOCK_SIZE); \
+ _src += MAX_DMA_BLOCK_SIZE; \
+ _dest += MAX_DMA_BLOCK_SIZE; \
+ _size -= MAX_DMA_BLOCK_SIZE; \
+ } \
+}
+
+#define Dma3CopyLarge16_(src, dest, size) Dma3CopyLarge_(src, dest, size, 16)
+#define Dma3CopyLarge32_(src, dest, size) Dma3CopyLarge_(src, dest, size, 32)
+
+#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 ClearDma3Requests(void);
void ProcessDma3Requests(void);
-int RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode);
-int RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode);
-int CheckForSpaceForDma3Request(s16 index);
+s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode);
+s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode);
+s16 CheckForSpaceForDma3Request(s16 index);
#endif // GUARD_DMA3_H
diff --git a/include/dynamic_placeholder_text_util.h b/include/dynamic_placeholder_text_util.h
new file mode 100644
index 000000000..31cfe8d30
--- /dev/null
+++ b/include/dynamic_placeholder_text_util.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_UNK_TEXT_UTIL_H
+#define GUARD_UNK_TEXT_UTIL_H
+
+#include "global.h"
+
+void DynamicPlaceholderTextUtil_Reset(void);
+void DynamicPlaceholderTextUtil_SetPlaceholderPtr(u8 idx, const u8 *ptr);
+u8 *DynamicPlaceholderTextUtil_ExpandPlaceholders(u8 *dest, const u8 *src);
+const u8 *DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 idx);
+u8 GetColorFromTextColorTable(u16 graphicId);
+
+#endif //GUARD_UNK_TEXT_UTIL_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 1762faf8e..91612c06b 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -772,4 +772,385 @@ extern const u8 gOakText_ConfirmRivalName[];
extern const u8 gOakText_RememberRivalName[];
extern const u8 gOakText_LegendAboutToUnfold[];
+// Help System
+extern const u8 gUnknown_81B2DF8[];
+extern const u8 gUnknown_81B2E1C[];
+extern const u8 gUnknown_81B2E2E[];
+extern const u8 gUnknown_81B2E48[];
+extern const u8 gUnknown_81B2E58[];
+extern const u8 gUnknown_81B2E6A[];
+extern const u8 gUnknown_81B2E6F[];
+extern const u8 gUnknown_81B2E76[];
+extern const u8 gUnknown_81B2E88[];
+extern const u8 gUnknown_81B2EC8[];
+extern const u8 gUnknown_81B2F00[];
+extern const u8 gUnknown_81B2F43[];
+extern const u8 gUnknown_81B2F74[];
+extern const u8 gUnknown_81B2FA9[];
+extern const u8 gUnknown_81B2FC9[];
+extern const u8 gUnknown_81B301B[];
+extern const u8 gUnknown_81B3083[];
+extern const u8 gUnknown_81B30A9[];
+extern const u8 gUnknown_81B30C1[];
+extern const u8 gUnknown_81B30DC[];
+extern const u8 gUnknown_81B30FC[];
+extern const u8 gUnknown_81B311F[];
+extern const u8 gUnknown_81B3140[];
+extern const u8 gUnknown_81B314F[];
+extern const u8 gUnknown_81B3168[];
+extern const u8 gUnknown_81B3189[];
+extern const u8 gUnknown_81B31AE[];
+extern const u8 gUnknown_81B31D3[];
+extern const u8 gUnknown_81B31EC[];
+extern const u8 gUnknown_81B31FF[];
+extern const u8 gUnknown_81B3215[];
+extern const u8 gUnknown_81B3226[];
+extern const u8 gUnknown_81B3243[];
+extern const u8 gUnknown_81B3261[];
+extern const u8 gUnknown_81B3276[];
+extern const u8 gUnknown_81B3290[];
+extern const u8 gUnknown_81B32B6[];
+extern const u8 gUnknown_81B32CD[];
+extern const u8 gUnknown_81B32E3[];
+extern const u8 gUnknown_81B32F9[];
+extern const u8 gUnknown_81B330B[];
+extern const u8 gUnknown_81B332B[];
+extern const u8 gUnknown_81B3344[];
+extern const u8 gUnknown_81B335C[];
+extern const u8 gUnknown_81B3373[];
+extern const u8 gUnknown_81B338C[];
+extern const u8 gUnknown_81B33A6[];
+extern const u8 gUnknown_81B33CA[];
+extern const u8 gUnknown_81B33EA[];
+extern const u8 gUnknown_81B3402[];
+extern const u8 gUnknown_81B3427[];
+extern const u8 gUnknown_81B3440[];
+extern const u8 gUnknown_81B3457[];
+extern const u8 gUnknown_81B346F[];
+extern const u8 gUnknown_81B3481[];
+extern const u8 gUnknown_81B349B[];
+extern const u8 gUnknown_81B34B7[];
+extern const u8 gUnknown_81B34D6[];
+extern const u8 gUnknown_81B34F6[];
+extern const u8 gUnknown_81B3516[];
+extern const u8 gUnknown_81B3525[];
+extern const u8 gUnknown_81B35E6[];
+extern const u8 gUnknown_81B36EB[];
+extern const u8 gUnknown_81B379A[];
+extern const u8 gUnknown_81B3849[];
+extern const u8 gUnknown_81B3876[];
+extern const u8 gUnknown_81B3972[];
+extern const u8 gUnknown_81B3A51[];
+extern const u8 gUnknown_81B3ACC[];
+extern const u8 gUnknown_81B3BB6[];
+extern const u8 gUnknown_81B3C99[];
+extern const u8 gUnknown_81B3D1B[];
+extern const u8 gUnknown_81B3DE3[];
+extern const u8 gUnknown_81B3EBC[];
+extern const u8 gUnknown_81B3F7F[];
+extern const u8 gUnknown_81B406C[];
+extern const u8 gUnknown_81B410B[];
+extern const u8 gUnknown_81B41D7[];
+extern const u8 gUnknown_81B42B3[];
+extern const u8 gUnknown_81B439D[];
+extern const u8 gUnknown_81B4483[];
+extern const u8 gUnknown_81B457C[];
+extern const u8 gUnknown_81B4645[];
+extern const u8 gUnknown_81B470A[];
+extern const u8 gUnknown_81B47F0[];
+extern const u8 gUnknown_81B48C6[];
+extern const u8 gUnknown_81B497A[];
+extern const u8 gUnknown_81B4A72[];
+extern const u8 gUnknown_81B4B65[];
+extern const u8 gUnknown_81B4C54[];
+extern const u8 gUnknown_81B4D26[];
+extern const u8 gUnknown_81B4E0B[];
+extern const u8 gUnknown_81B4ED8[];
+extern const u8 gUnknown_81B4FB2[];
+extern const u8 gUnknown_81B4FFD[];
+extern const u8 gUnknown_81B50FF[];
+extern const u8 gUnknown_81B51B1[];
+extern const u8 gUnknown_81B5272[];
+extern const u8 gUnknown_81B5325[];
+extern const u8 gUnknown_81B5382[];
+extern const u8 gUnknown_81B547C[];
+extern const u8 gUnknown_81B54E1[];
+extern const u8 gUnknown_81B5589[];
+extern const u8 gUnknown_81B55F4[];
+extern const u8 gUnknown_81B56E3[];
+extern const u8 gUnknown_81B56F4[];
+extern const u8 gUnknown_81B5705[];
+extern const u8 gUnknown_81B5717[];
+extern const u8 gUnknown_81B5728[];
+extern const u8 gUnknown_81B5737[];
+extern const u8 gUnknown_81B5744[];
+extern const u8 gUnknown_81B5754[];
+extern const u8 gUnknown_81B5767[];
+extern const u8 gUnknown_81B577B[];
+extern const u8 gUnknown_81B5787[];
+extern const u8 gUnknown_81B5795[];
+extern const u8 gUnknown_81B57A5[];
+extern const u8 gUnknown_81B57B8[];
+extern const u8 gUnknown_81B57CF[];
+extern const u8 gUnknown_81B57DE[];
+extern const u8 gUnknown_81B57EE[];
+extern const u8 gUnknown_81B580D[];
+extern const u8 gUnknown_81B5824[];
+extern const u8 gUnknown_81B5834[];
+extern const u8 gUnknown_81B583F[];
+extern const u8 gUnknown_81B5850[];
+extern const u8 gUnknown_81B5863[];
+extern const u8 gUnknown_81B5875[];
+extern const u8 gUnknown_81B5884[];
+extern const u8 gUnknown_81B5893[];
+extern const u8 gUnknown_81B58A4[];
+extern const u8 gUnknown_81B58BC[];
+extern const u8 gUnknown_81B58D3[];
+extern const u8 gUnknown_81B58E5[];
+extern const u8 gUnknown_81B58FD[];
+extern const u8 gUnknown_81B590E[];
+extern const u8 gUnknown_81B591D[];
+extern const u8 gUnknown_81B592E[];
+extern const u8 gUnknown_81B593E[];
+extern const u8 gUnknown_81B5950[];
+extern const u8 gUnknown_81B595D[];
+extern const u8 gUnknown_81B5974[];
+extern const u8 gUnknown_81B5989[];
+extern const u8 gUnknown_81B59A7[];
+extern const u8 gUnknown_81B59BF[];
+extern const u8 gUnknown_81B59D6[];
+extern const u8 gUnknown_81B59E8[];
+extern const u8 gUnknown_81B59F5[];
+extern const u8 gUnknown_81B5A0D[];
+extern const u8 gUnknown_81B5A1B[];
+extern const u8 gUnknown_81B5A29[];
+extern const u8 gUnknown_81B5A37[];
+extern const u8 gUnknown_81B5A4D[];
+extern const u8 gUnknown_81B5B0C[];
+extern const u8 gUnknown_81B5B7D[];
+extern const u8 gUnknown_81B5C13[];
+extern const u8 gUnknown_81B5CDF[];
+extern const u8 gUnknown_81B5D87[];
+extern const u8 gUnknown_81B5E41[];
+extern const u8 gUnknown_81B5F10[];
+extern const u8 gUnknown_81B5FA6[];
+extern const u8 gUnknown_81B606C[];
+extern const u8 gUnknown_81B6140[];
+extern const u8 gUnknown_81B6203[];
+extern const u8 gUnknown_81B62E4[];
+extern const u8 gUnknown_81B6397[];
+extern const u8 gUnknown_81B6478[];
+extern const u8 gUnknown_81B6525[];
+extern const u8 gUnknown_81B65E7[];
+extern const u8 gUnknown_81B66BA[];
+extern const u8 gUnknown_81B678E[];
+extern const u8 gUnknown_81B6883[];
+extern const u8 gUnknown_81B68CD[];
+extern const u8 gUnknown_81B69B9[];
+extern const u8 gUnknown_81B6A9A[];
+extern const u8 gUnknown_81B6B6E[];
+extern const u8 gUnknown_81B6C4F[];
+extern const u8 gUnknown_81B6D4A[];
+extern const u8 gUnknown_81B6E02[];
+extern const u8 gUnknown_81B6EC1[];
+extern const u8 gUnknown_81B6FA8[];
+extern const u8 gUnknown_81B7075[];
+extern const u8 gUnknown_81B7108[];
+extern const u8 gUnknown_81B71EA[];
+extern const u8 gUnknown_81B723B[];
+extern const u8 gUnknown_81B7319[];
+extern const u8 gUnknown_81B73E8[];
+extern const u8 gUnknown_81B747E[];
+extern const u8 gUnknown_81B752C[];
+extern const u8 gUnknown_81B7611[];
+extern const u8 gUnknown_81B7692[];
+extern const u8 gUnknown_81B771E[];
+extern const u8 gUnknown_81B77DD[];
+extern const u8 gUnknown_81B7884[];
+extern const u8 gUnknown_81B7931[];
+extern const u8 gUnknown_81B79CB[];
+extern const u8 gUnknown_81B7A60[];
+extern const u8 gUnknown_81B7AEE[];
+extern const u8 gUnknown_81B7BBE[];
+extern const u8 gUnknown_81B7C57[];
+extern const u8 gUnknown_81B7CC1[];
+extern const u8 gUnknown_81B7CC4[];
+extern const u8 gUnknown_81B7CD9[];
+extern const u8 gUnknown_81B7CDF[];
+extern const u8 gUnknown_81B7CE6[];
+extern const u8 gUnknown_81B7CEE[];
+extern const u8 gUnknown_81B7CF6[];
+extern const u8 gUnknown_81B7CFE[];
+extern const u8 gUnknown_81B7D04[];
+extern const u8 gUnknown_81B7D12[];
+extern const u8 gUnknown_81B7D17[];
+extern const u8 gUnknown_81B7D1A[];
+extern const u8 gUnknown_81B7D1F[];
+extern const u8 gUnknown_81B7D27[];
+extern const u8 gUnknown_81B7D2D[];
+extern const u8 gUnknown_81B7D37[];
+extern const u8 gUnknown_81B7D3E[];
+extern const u8 gUnknown_81B7D45[];
+extern const u8 gUnknown_81B7D48[];
+extern const u8 gUnknown_81B7D4E[];
+extern const u8 gUnknown_81B7D57[];
+extern const u8 gUnknown_81B7D5B[];
+extern const u8 gUnknown_81B7D61[];
+extern const u8 gUnknown_81B7D6B[];
+extern const u8 gUnknown_81B7D76[];
+extern const u8 gUnknown_81B7D7E[];
+extern const u8 gUnknown_81B7D88[];
+extern const u8 gUnknown_81B7D8F[];
+extern const u8 gUnknown_81B7D9A[];
+extern const u8 gUnknown_81B7DA7[];
+extern const u8 gUnknown_81B7DB4[];
+extern const u8 gUnknown_81B7DBA[];
+extern const u8 gUnknown_81B7DC6[];
+extern const u8 gUnknown_81B7DCC[];
+extern const u8 gUnknown_81B7DD3[];
+extern const u8 gUnknown_81B7DD6[];
+extern const u8 gUnknown_81B7DD9[];
+extern const u8 gUnknown_81B7DE1[];
+extern const u8 gUnknown_81B7DEB[];
+extern const u8 gUnknown_81B7DFA[];
+extern const u8 gUnknown_81B7E02[];
+extern const u8 gUnknown_81B7E09[];
+extern const u8 gUnknown_81B7E0F[];
+extern const u8 gUnknown_81B7E16[];
+extern const u8 gUnknown_81B7F0A[];
+extern const u8 gUnknown_81B800A[];
+extern const u8 gUnknown_81B80EC[];
+extern const u8 gUnknown_81B81C2[];
+extern const u8 gUnknown_81B8256[];
+extern const u8 gUnknown_81B8348[];
+extern const u8 gUnknown_81B83EF[];
+extern const u8 gUnknown_81B847B[];
+extern const u8 gUnknown_81B8550[];
+extern const u8 gUnknown_81B8647[];
+extern const u8 gUnknown_81B86E2[];
+extern const u8 gUnknown_81B87B8[];
+extern const u8 gUnknown_81B8897[];
+extern const u8 gUnknown_81B8924[];
+extern const u8 gUnknown_81B8A04[];
+extern const u8 gUnknown_81B8A84[];
+extern const u8 gUnknown_81B8B62[];
+extern const u8 gUnknown_81B8C18[];
+extern const u8 gUnknown_81B8C94[];
+extern const u8 gUnknown_81B8D1D[];
+extern const u8 gUnknown_81B8DD4[];
+extern const u8 gUnknown_81B8E67[];
+extern const u8 gUnknown_81B8F4D[];
+extern const u8 gUnknown_81B901B[];
+extern const u8 gUnknown_81B90A7[];
+extern const u8 gUnknown_81B90E8[];
+extern const u8 gUnknown_81B9170[];
+extern const u8 gUnknown_81B91C2[];
+extern const u8 gUnknown_81B91F9[];
+extern const u8 gUnknown_81B92B8[];
+extern const u8 gUnknown_81B92ED[];
+extern const u8 gUnknown_81B93D8[];
+extern const u8 gUnknown_81B9439[];
+extern const u8 gUnknown_81B9497[];
+extern const u8 gUnknown_81B9560[];
+extern const u8 gUnknown_81B9656[];
+extern const u8 gUnknown_81B9749[];
+extern const u8 gUnknown_81B984F[];
+extern const u8 gUnknown_81B991C[];
+extern const u8 gUnknown_81B99C4[];
+extern const u8 gUnknown_81B9AA2[];
+extern const u8 gUnknown_81B9B2F[];
+extern const u8 gUnknown_81B9BB7[];
+extern const u8 gUnknown_81B9BC7[];
+extern const u8 gUnknown_81B9BD0[];
+extern const u8 gUnknown_81B9BE1[];
+extern const u8 gUnknown_81B9BF5[];
+extern const u8 gUnknown_81B9C09[];
+extern const u8 gUnknown_81B9C1D[];
+extern const u8 gUnknown_81B9C2F[];
+extern const u8 gUnknown_81B9D04[];
+extern const u8 gUnknown_81B9DC5[];
+extern const u8 gUnknown_81B9E75[];
+extern const u8 gUnknown_81B9F09[];
+extern const u8 gUnknown_81B9FCE[];
+extern const u8 gUnknown_81BA027[];
+extern const u8 gUnknown_81BA0F1[];
+extern const u8 gUnknown_81BA10D[];
+extern const u8 gUnknown_81BA121[];
+extern const u8 gUnknown_81BA138[];
+extern const u8 gUnknown_81BA14C[];
+extern const u8 gUnknown_81BA163[];
+extern const u8 gUnknown_81BA17A[];
+extern const u8 gUnknown_81BA194[];
+extern const u8 gUnknown_81BA1AC[];
+extern const u8 gUnknown_81BA1C7[];
+extern const u8 gUnknown_81BA1DC[];
+extern const u8 gUnknown_81BA1F4[];
+extern const u8 gUnknown_81BA209[];
+extern const u8 gUnknown_81BA221[];
+extern const u8 gUnknown_81BA234[];
+extern const u8 gUnknown_81BA24A[];
+extern const u8 gUnknown_81BA260[];
+extern const u8 gUnknown_81BA279[];
+extern const u8 gUnknown_81BA291[];
+extern const u8 gUnknown_81BA2AC[];
+extern const u8 gUnknown_81BA2C2[];
+extern const u8 gUnknown_81BA2DB[];
+extern const u8 gUnknown_81BA2F1[];
+extern const u8 gUnknown_81BA30A[];
+extern const u8 gUnknown_81BA320[];
+extern const u8 gUnknown_81BA339[];
+extern const u8 gUnknown_81BA34E[];
+extern const u8 gUnknown_81BA366[];
+extern const u8 gUnknown_81BA37C[];
+extern const u8 gUnknown_81BA395[];
+extern const u8 gUnknown_81BA3A9[];
+extern const u8 gUnknown_81BA3C0[];
+extern const u8 gUnknown_81BA3D5[];
+extern const u8 gUnknown_81BA3ED[];
+extern const u8 gUnknown_81BA400[];
+extern const u8 gUnknown_81BA416[];
+extern const u8 gUnknown_81BA4E6[];
+extern const u8 gUnknown_81BA539[];
+extern const u8 gUnknown_81BA595[];
+extern const u8 gUnknown_81BA5F2[];
+extern const u8 gUnknown_81BA66F[];
+extern const u8 gUnknown_81BA6C9[];
+extern const u8 gUnknown_81BA71F[];
+extern const u8 gUnknown_81BA796[];
+extern const u8 gUnknown_81BA7E9[];
+extern const u8 gUnknown_81BA862[];
+extern const u8 gUnknown_81BA8D3[];
+extern const u8 gUnknown_81BA92A[];
+extern const u8 gUnknown_81BA98D[];
+extern const u8 gUnknown_81BA9F1[];
+extern const u8 gUnknown_81BAA44[];
+extern const u8 gUnknown_81BAAB6[];
+extern const u8 gUnknown_81BAB18[];
+extern const u8 gUnknown_81BAB7A[];
+extern const u8 gUnknown_81BABCC[];
+extern const u8 gUnknown_81BAC29[];
+extern const u8 gUnknown_81BAC89[];
+extern const u8 gUnknown_81BACC4[];
+extern const u8 gUnknown_81BAD20[];
+extern const u8 gUnknown_81BAD60[];
+extern const u8 gUnknown_81BADA2[];
+extern const u8 gUnknown_81BADF7[];
+extern const u8 gUnknown_81BAEA8[];
+extern const u8 gUnknown_81BAF01[];
+extern const u8 gUnknown_81BAF6B[];
+extern const u8 gUnknown_81BAFCA[];
+extern const u8 gUnknown_81BB02E[];
+extern const u8 gUnknown_81BB084[];
+extern const u8 gUnknown_81BB0DF[];
+extern const u8 gUnknown_81BB156[];
+
+extern const u8 EventScript_FldEffStrength[];
+extern const u8 EventScript_FailSweetScent[];
+extern const u8 EventScript_FldEffRockSmash[];
+
+extern const u8 EventScript_SafariTimesUp[];
+extern const u8 EventScript_SafariRetire[];
+extern const u8 EventScript_SafariWarpOut[];
+extern const u8 EventScript_SafariOutOfBalls[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_effect.h b/include/field_effect.h
index 979037a8e..426f77510 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -82,5 +82,6 @@ bool8 FieldEffectActiveListContains(u8 id);
void sub_80B69DC(void);
void CreateTeleportFieldEffectTask(void);
void FieldEffectActiveListRemove(u8 id);
+void sub_8085620(void);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
index d0856c84c..4ba350491 100644
--- a/include/field_fadetransition.h
+++ b/include/field_fadetransition.h
@@ -14,5 +14,6 @@ void sub_807E500(void);
void sub_807DF64(void);
void sub_807DC18(void);
void FieldCallback_ReturnToEventScript2(void);
+void sub_807DC00(void);
#endif // GUARD_FIELD_FADETRANSITION_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 69e3419de..83cc263e5 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -46,9 +46,9 @@ void FieldObjectClearAnim(struct MapObject *);
void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *);
void SpawnFieldObjectsInView(s16, s16);
u8 sprite_new(u8, u8, s16, s16, u8, u8);
-u8 AddPseudoFieldObject(u16, void (*)(struct Sprite *), s16, s16, u8);
+u8 AddPseudoEventObject(u16, SpriteCallback, s16, s16, u8);
u8 show_sprite(u8, u8, u8);
-u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8);
+u8 SpawnSpecialFieldObjectParameterized(u8, u8, u8, s16, s16, u8);
u8 SpawnSpecialFieldObject(struct MapObjectTemplate *);
void sub_8093038(s16, s16, s16 *, s16 *);
void CameraObjectReset1(void);
@@ -76,21 +76,25 @@ u8 GetStepInPlaceDelay32AnimId(u32);
u8 npc_block_way(struct MapObject *, s16, s16, u32);
void MoveCoords(u8, s16 *, s16 *);
bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
-u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
+u8 FieldObjectClearHeldMovementIfFinished(struct MapObject *);
u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z);
void sub_8063E28(struct MapObject *, struct Sprite *);
-void sub_8063CA4(struct MapObject *, u8);
+void FieldObjectSetHeldMovement(struct MapObject *, u8);
void npc_coords_shift_still(struct MapObject *);
void sub_805FE7C(struct MapObject *, u8);
void npc_set_running_behaviour_etc(struct MapObject *, u8);
u8 sub_80634F0(u8 direction);
u8 sub_8063500(u8 a0);
-void sub_805F060(struct MapObject *mapObject, u8 a1);
+void EventObjectSetGraphicsId(struct MapObject *mapObject, u8 a1);
u8 sub_805EB44(u8, u8, s16, s16);
void npc_paltag_set_load(u8 mode);
+bool8 FieldObjectIsMovementOverridden(struct MapObject *mapObject);
+u8 FieldObjectCheckHeldMovementStatus(struct MapObject *mapObject);
// Exported data declarations
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
+extern const struct SpritePalette gUnknown_83A5348;
+extern const struct SpriteTemplate * const gUnknown_83A0010[];
#endif //GUARD_FIELD_MAP_OBJ_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index b365a9d92..b87de3fef 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -8,7 +8,7 @@ void SetPlayerAvatarExtraStateTransition(u8, u8);
u8 GetPlayerAvatarGenderByGraphicsId(u8);
bool8 TestPlayerAvatarFlags(u8);
void PlayerGetDestCoords(s16 *, s16 *);
-u8 player_get_direction_lower_nybble(void);
+u8 GetPlayerFacingDirection(void);
u8 player_get_direction_upper_nybble(void);
u8 player_get_x22(void);
@@ -22,5 +22,11 @@ void sub_805D9C4(struct Sprite *sprite);
void sub_805D154(u8 direction);
void sub_805DAE4(u8 direction);
void SetPlayerAvatarTransitionFlags(u16 a);
+bool8 IsPlayerFacingSurfableFishableWater(void);
+void sub_805D2C0(u8 secondaryId);
+u8 GetPlayerAvatarObjectId(void);
+u8 PlayerGetZCoord(void);
+u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
+void sub_805CB70(void);
#endif //GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_poison.h b/include/field_poison.h
index fcfb71cf5..4887fa27a 100644
--- a/include/field_poison.h
+++ b/include/field_poison.h
@@ -3,19 +3,13 @@
#include "global.h"
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-
enum {
FLDPSN_NONE,
FLDPSN_PSN,
FLDPSN_FNT
};
-void sub_80F972C(void);
-unsigned int overworld_poison(void);
+void ExecuteWhiteOut(void);
+s32 DoPoisonFieldEffect(void);
#endif //GUARD_FIELD_POISON_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index 14d7e5d81..d1fde7eac 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -6,5 +6,6 @@
void sub_80AF79C(void);
void sub_807F028(u8);
void sub_80B0244(void);
+void sub_807E3EC(void);
#endif // GUARD_FIELD_SCREEN_EFFECT_H
diff --git a/include/field_specials.h b/include/field_specials.h
index c1bc8e8c9..a82cb20a2 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -7,5 +7,11 @@ u8 GetLeadMonIndex(void);
u8 CountDigits(u16 number);
void TV_PrintIntToStringVar(u8, int);
u16 ScrSpecial_GetStarter(void);
+void sub_80CCB68(void);
+void nullsub_60(void);
+void nullsub_61(void);
+u8 ContextNpcGetTextColor(void);
+void set_unknown_box_id(u8);
+u16 get_unknown_box_id(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/field_weather.h b/include/field_weather.h
index cf0e34d06..c3ecd4fa6 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -13,5 +13,8 @@ void DoCurrentWeather(void);
void SetSav1WeatherFromCurrMapHeader(void);
void sub_807B0C4(u16 *, u16 *, u32);
void PlayRainStoppingSoundEffect(void);
+bool8 sub_807AA70(void);
+void SetWeatherScreenFadeOut(void);
+void sub_807B070(void);
#endif // GUARD_WEATHER_H
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 537626edc..9903962a1 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -12,6 +12,7 @@
#define VIRTUAL_MAP_SIZE 0x2800
extern struct BackupMapData VMap;
+extern const struct MapData Route1_Layout;
u32 MapGridGetMetatileIdAt(int, int);
u32 MapGridGetMetatileBehaviorAt(int, int);
diff --git a/include/fldeff.h b/include/fldeff.h
index 364cb7550..e5e7e5f7d 100644
--- a/include/fldeff.h
+++ b/include/fldeff.h
@@ -1,7 +1,51 @@
#ifndef GUARD_FLDEFF_H
#define GUARD_FLDEFF_H
-// rock smash
+#define FLDEFF_CALL_FUNC_IN_DATA() ((void (*)(void))(((u16)gTasks[taskId].data[8] << 16) | (u16)gTasks[taskId].data[9]))();
+
+#define FLDEFF_SET_FUNC_TO_DATA(func) \
+gTasks[taskId].data[8] = (u32)func >> 16; \
+gTasks[taskId].data[9] = (u32)func;
+
+extern struct MapPosition gPlayerFacingPosition;
+
+bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId);
u8 oei_task_add(void);
+// flash
+
+// cut
+
+// dig
+bool8 SetUpFieldMove_Dig(void);
+bool8 FldEff_UseDig(void);
+
+// rocksmash
+bool8 SetUpFieldMove_RockSmash(void);
+bool8 FldEff_UseRockSmash(void);
+
+// berrytree
+void nullsub_56(void);
+
+// poison
+void FldEffPoison_Start(void);
+bool32 FldEffPoison_IsActive(void);
+
+// strength
+bool8 SetUpFieldMove_Strength(void);
+bool8 sub_80D0860(void);
+
+// teleport
+bool8 SetUpFieldMove_Teleport(void);
+bool8 FldEff_UseTeleport(void);
+
+// softboiled
+bool8 hm_prepare_dive_probably(void);
+void sub_80E56DC(u8 taskId);
+void sub_80E5724(u8 taskId);
+
+// sweetscent
+bool8 SetUpFieldMove_SweetScent(void);
+bool8 FldEff_SweetScent(void);
+
#endif // GUARD_FLDEFF_H
diff --git a/include/fldeff_80F9BCC.h b/include/fldeff_80F9BCC.h
deleted file mode 100644
index 3960c6c65..000000000
--- a/include/fldeff_80F9BCC.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef GUARD_FLDEFF_80F9BCC_H
-#define GUARD_FLDEFF_80F9BCC_H
-
-#include "global.h"
-
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-
-void sub_80FA5E4(s16 id, s16 x, s16 y);
-void sub_80FA794(s16 x, s16 y);
-void overworld_poison_effect(void);
-
-#endif //GUARD_FLDEFF_80F9BCC_H
diff --git a/include/gba/defines.h b/include/gba/defines.h
index a0ef506dd..5489f9e14 100644
--- a/include/gba/defines.h
+++ b/include/gba/defines.h
@@ -40,6 +40,9 @@
#define BG_SCREEN_ADDR(n) (void *)(BG_VRAM + (BG_SCREEN_SIZE * (n)))
#define BG_TILE_ADDR(n) (void *)(BG_VRAM + (0x80 * (n)))
+#define BG_TILE_H_FLIP(n) (0x400 + (n))
+#define BG_TILE_V_FLIP(n) (0x800 + (n))
+
// text-mode BG
#define OBJ_VRAM0 (void *)(VRAM + 0x10000)
#define OBJ_VRAM0_SIZE 0x8000
diff --git a/include/gba/multiboot.h b/include/gba/multiboot.h
index e88b43a19..a8bc8fddf 100644
--- a/include/gba/multiboot.h
+++ b/include/gba/multiboot.h
@@ -18,9 +18,9 @@ struct MultiBootParam
u8 response_bit;
u8 client_bit;
u8 reserved1;
- u8 *boot_srcp;
- u8 *boot_endp;
- u8 *masterp;
+ const u8 *boot_srcp;
+ const u8 *boot_endp;
+ const u8 *masterp;
u8 *reserved2[MULTIBOOT_NCHILD];
u32 system_work2[4];
u8 sendflag;
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index a14905cc2..3623737ea 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -51,8 +51,8 @@ struct Tileset
/*0x04*/ void *tiles;
/*0x08*/ void *palettes;
/*0x0c*/ void *metatiles;
- /*0x14*/ TilesetCB callback;
- /*0x10*/ void *metatileAttributes;
+ /*0x10*/ TilesetCB callback;
+ /*0x14*/ void *metatileAttributes;
};
struct MapData
diff --git a/include/global.h b/include/global.h
index b10f4af49..e1f63213a 100644
--- a/include/global.h
+++ b/include/global.h
@@ -4,6 +4,7 @@
#include "config.h"
#include "gba/gba.h"
#include <string.h>
+#include "constants/global.h"
// Prevent cross-jump optimization.
#define BLOCK_CROSS_JUMP asm("");
@@ -39,10 +40,6 @@
// Converts a number to Q4.12 fixed-point format
#define Q_4_12(n) ((s16)((n) * 4096))
-#define POKEMON_SLOTS_NUMBER 412
-#define POKEMON_NAME_LENGTH 10
-#define OT_NAME_LENGTH 7
-
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) >= (b) ? (a) : (b))
@@ -72,81 +69,13 @@
#define TEST_BUTTON(field, button) ({(field) & (button);})
#define JOY_NEW(button) TEST_BUTTON(gMain.newKeys, button)
#define JOY_HELD(button) TEST_BUTTON(gMain.heldKeys, button)
+#define JOY_REPT(button) TEST_BUTTON(gMain.newAndRepeatedKeys, button)
extern u8 gStringVar1[];
extern u8 gStringVar2[];
extern u8 gStringVar3[];
extern u8 gStringVar4[];
-enum
-{
- VERSION_SAPPHIRE = 1,
- VERSION_RUBY = 2,
- VERSION_EMERALD = 3,
- VERSION_FIRE_RED = 4,
- VERSION_LEAF_GREEN = 5,
-};
-
-enum LanguageId {
- LANGUAGE_JAPANESE = 1,
- LANGUAGE_ENGLISH = 2,
- LANGUAGE_FRENCH = 3,
- LANGUAGE_ITALIAN = 4,
- LANGUAGE_GERMAN = 5,
- // 6 goes unused but the theory is it was meant to be Korean
- LANGUAGE_SPANISH = 7,
-};
-
-#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
-
-#define PC_ITEMS_COUNT 30
-#define BAG_ITEMS_COUNT 42
-#define BAG_KEYITEMS_COUNT 30
-#define BAG_POKEBALLS_COUNT 13
-#define BAG_TMHM_COUNT 58
-#define BAG_BERRIES_COUNT 43
-
-enum
-{
- MALE,
- FEMALE
-};
-
-enum
-{
- OPTIONS_BUTTON_MODE_NORMAL,
- OPTIONS_BUTTON_MODE_LR,
- OPTIONS_BUTTON_MODE_L_EQUALS_A
-};
-
-enum
-{
- OPTIONS_TEXT_SPEED_SLOW,
- OPTIONS_TEXT_SPEED_MID,
- OPTIONS_TEXT_SPEED_FAST
-};
-
-enum
-{
- OPTIONS_SOUND_MONO,
- OPTIONS_SOUND_STEREO
-};
-
-enum
-{
- OPTIONS_BATTLE_STYLE_SHIFT,
- OPTIONS_BATTLE_STYLE_SET
-};
-
-enum
-{
- BAG_ITEMS = 1,
- BAG_POKEBALLS,
- BAG_TMsHMs,
- BAG_BERRIES,
- BAG_KEYITEMS
-};
-
struct Coords16
{
s16 x;
@@ -280,7 +209,7 @@ struct SaveBlock2
{
/*0x000*/ u8 playerName[PLAYER_NAME_LENGTH];
/*0x008*/ u8 playerGender; // MALE, FEMALE
- /*0x009*/ u8 specialSaveWarp;
+ /*0x009*/ u8 specialSaveWarpFlags;
/*0x00A*/ u8 playerTrainerId[4];
/*0x00E*/ u16 playTimeHours;
/*0x010*/ u8 playTimeMinutes;
@@ -797,8 +726,14 @@ struct SaveBlock1
/*0x3D38*/ struct TrainerTowerLog unkArray[4];
};
-extern struct SaveBlock1* gSaveBlock1Ptr;
+struct MapPosition
+{
+ s16 x;
+ s16 y;
+ s8 height;
+};
+extern struct SaveBlock1* gSaveBlock1Ptr;
extern u8 gReservedSpritePaletteCount;
#endif // GUARD_GLOBAL_H
diff --git a/include/graphics.h b/include/graphics.h
index 04d05da2b..e8503609e 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -32,6 +32,9 @@ extern const u8 gInterfacePal_LuxuryBall[];
extern const u8 gInterfaceGfx_PremierBall[];
extern const u8 gInterfacePal_PremierBall[];
extern const u8 gOpenPokeballGfx[];
+extern const u8 gFireRedMenuElements_Gfx[];
+extern const u16 gFireRedMenuElements1_Pal[];
+extern const u16 gFireRedMenuElements2_Pal[];
extern const u8 gItemIcon_QuestionMark[];
extern const u8 gItemIconPalette_QuestionMark[];
@@ -160,6 +163,7 @@ extern const u32 gTMCase_TMSpriteGfx[];
extern const u32 gUnknown_8E84F20[];
extern const u32 gUnknown_8E85068[];
extern const u8 gUnknown_8E99118[];
+extern const u16 gTMCaseMainWindowPalette[];
// egg_hatch
extern const u32 gBattleTextboxTiles[];
@@ -168,4 +172,793 @@ extern const u32 gBattleTextboxPalette[];
extern const u32 gTradeGba2_Pal[];
extern const u32 gTradeGba_Gfx[];
+// teachy_tv
+extern const u8 gUnknown_8E86240[];
+extern const u8 gUnknown_8E86BE8[];
+extern const u8 gUnknown_8E86D6C[];
+extern const u8 gUnknown_8E86F98[];
+
+// berry_fix_program
+extern const u8 gBerryFixGameboy_Gfx[];
+extern const u8 gBerryFixGameboy_Tilemap[];
+extern const u8 gBerryFixGameboy_Pal[];
+extern const u8 gBerryFixGameboyLogo_Gfx[];
+extern const u8 gBerryFixGameboyLogo_Tilemap[];
+extern const u8 gBerryFixGameboyLogo_Pal[];
+extern const u8 gBerryFixGbaTransfer_Gfx[];
+extern const u8 gBerryFixGbaTransfer_Tilemap[];
+extern const u8 gBerryFixGbaTransfer_Pal[];
+extern const u8 gBerryFixGbaTransferHighlight_Gfx[];
+extern const u8 gBerryFixGbaTransferHighlight_Tilemap[];
+extern const u8 gBerryFixGbaTransferHighlight_Pal[];
+extern const u8 gBerryFixGbaTransferError_Gfx[];
+extern const u8 gBerryFixGbaTransferError_Tilemap[];
+extern const u8 gBerryFixGbaTransferError_Pal[];
+extern const u8 gBerryFixWindow_Gfx[];
+extern const u8 gBerryFixWindow_Tilemap[];
+extern const u8 gBerryFixWindow_Pal[];
+
+// item_pc
+
+extern const u8 gItemPcTiles[];
+extern const u8 gItemPcBgPals[];
+extern const u8 gItemPcTilemap[];
+
+// item_menu_icons
+extern const u32 gUnknown_8E8362C[];
+extern const u32 gUnknown_8E83DBC[];
+extern const u32 gUnknown_8E84560[];
+extern const u32 gFile_graphics_interface_bag_swap_sheet[];
+extern const u32 gFile_graphics_interface_bag_swap_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_master_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_master_ball_palette[];
+extern const u8 gFile_graphics_items_icons_ultra_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ultra_ball_palette[];
+extern const u8 gFile_graphics_items_icons_great_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_great_ball_palette[];
+extern const u8 gFile_graphics_items_icons_poke_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_poke_ball_palette[];
+extern const u8 gFile_graphics_items_icons_safari_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_safari_ball_palette[];
+extern const u8 gFile_graphics_items_icons_net_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_net_ball_palette[];
+extern const u8 gFile_graphics_items_icons_dive_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dive_ball_palette[];
+extern const u8 gFile_graphics_items_icons_nest_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_nest_ball_palette[];
+extern const u8 gFile_graphics_items_icons_repeat_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_repeat_ball_palette[];
+extern const u8 gFile_graphics_items_icons_timer_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_repeat_ball_palette[];
+extern const u8 gFile_graphics_items_icons_luxury_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_luxury_ball_palette[];
+extern const u8 gFile_graphics_items_icons_premier_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_luxury_ball_palette[];
+extern const u8 gFile_graphics_items_icons_potion_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_potion_palette[];
+extern const u8 gFile_graphics_items_icons_antidote_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_antidote_palette[];
+extern const u8 gFile_graphics_items_icons_status_heal_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_burn_heal_palette[];
+extern const u8 gFile_graphics_items_icons_status_heal_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ice_heal_palette[];
+extern const u8 gFile_graphics_items_icons_status_heal_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_awakening_palette[];
+extern const u8 gFile_graphics_items_icons_status_heal_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_paralyze_heal_palette[];
+extern const u8 gFile_graphics_items_icons_large_potion_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_full_restore_palette[];
+extern const u8 gFile_graphics_items_icons_large_potion_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_max_potion_palette[];
+extern const u8 gFile_graphics_items_icons_potion_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_hyper_potion_palette[];
+extern const u8 gFile_graphics_items_icons_potion_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_super_potion_palette[];
+extern const u8 gFile_graphics_items_icons_full_heal_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_full_heal_palette[];
+extern const u8 gFile_graphics_items_icons_revive_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_revive_palette[];
+extern const u8 gFile_graphics_items_icons_max_revive_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_revive_palette[];
+extern const u8 gFile_graphics_items_icons_fresh_water_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fresh_water_palette[];
+extern const u8 gFile_graphics_items_icons_soda_pop_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_soda_pop_palette[];
+extern const u8 gFile_graphics_items_icons_lemonade_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lemonade_palette[];
+extern const u8 gFile_graphics_items_icons_moomoo_milk_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_moomoo_milk_palette[];;
+extern const u8 gFile_graphics_items_icon_palettes_energy_powder_palette[];
+extern const u8 gFile_graphics_items_icons_energy_root_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_energy_root_palette[];
+extern const u8 gFile_graphics_items_icon_palettes_heal_powder_palette[];
+extern const u8 gFile_graphics_items_icons_revival_herb_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_revival_herb_palette[];
+extern const u8 gFile_graphics_items_icons_ether_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ether_palette[];
+extern const u8 gFile_graphics_items_icons_ether_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_max_ether_palette[];
+extern const u8 gFile_graphics_items_icons_ether_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_elixir_palette[];
+extern const u8 gFile_graphics_items_icons_ether_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_max_elixir_palette[];
+extern const u8 gFile_graphics_items_icons_lava_cookie_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lava_cookie_and_letter_palette[];
+extern const u8 gFile_graphics_items_icons_flute_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_blue_flute_palette[];
+extern const u8 gFile_graphics_items_icons_flute_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_yellow_flute_palette[];
+extern const u8 gFile_graphics_items_icons_flute_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_red_flute_palette[];
+extern const u8 gFile_graphics_items_icons_flute_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_black_flute_palette[];
+extern const u8 gFile_graphics_items_icons_flute_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_white_flute_palette[];
+extern const u8 gFile_graphics_items_icons_berry_juice_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_berry_juice_palette[];
+extern const u8 gFile_graphics_items_icons_sacred_ash_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_sacred_ash_palette[];
+extern const u32 gFile_graphics_items_icons_powder_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_shoal_salt_palette[];
+extern const u8 gFile_graphics_items_icons_shoal_shell_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_shell_palette[];
+extern const u8 gFile_graphics_items_icons_shard_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_red_shard_palette[];
+extern const u8 gFile_graphics_items_icons_shard_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_blue_shard_palette[];
+extern const u8 gFile_graphics_items_icons_shard_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_yellow_shard_palette[];
+extern const u8 gFile_graphics_items_icons_shard_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_green_shard_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_hp_up_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_hp_up_palette[];
+extern const u8 gFile_graphics_items_icons_vitamin_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_protein_palette[];
+extern const u8 gFile_graphics_items_icons_vitamin_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_iron_palette[];
+extern const u8 gFile_graphics_items_icons_vitamin_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_carbos_palette[];
+extern const u8 gFile_graphics_items_icons_vitamin_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_calcium_palette[];
+extern const u8 gFile_graphics_items_icons_rare_candy_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_rare_candy_palette[];
+extern const u8 gFile_graphics_items_icons_pp_up_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pp_up_palette[];
+extern const u8 gFile_graphics_items_icons_vitamin_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_zinc_palette[];
+extern const u8 gFile_graphics_items_icons_pp_max_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pp_max_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_guard_spec_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dire_hit_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_x_attack_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_x_defend_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_x_speed_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_x_accuracy_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_x_special_palette[];
+extern const u8 gFile_graphics_items_icons_poke_doll_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_poke_doll_palette[];
+extern const u8 gFile_graphics_items_icons_fluffy_tail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fluffy_tail_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_repel_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_super_repel_palette[];
+extern const u8 gFile_graphics_items_icons_repel_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_max_repel_palette[];
+extern const u8 gFile_graphics_items_icons_escape_rope_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_escape_rope_palette[];
+extern const u8 gFile_graphics_items_icons_repel_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_repel_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_sun_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_sun_stone_palette[];
+extern const u8 gFile_graphics_items_icons_moon_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_moon_stone_palette[];
+extern const u8 gFile_graphics_items_icons_fire_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fire_stone_palette[];
+extern const u8 gFile_graphics_items_icons_thunder_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_thunder_stone_palette[];
+extern const u8 gFile_graphics_items_icons_water_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_water_stone_palette[];
+extern const u8 gFile_graphics_items_icons_leaf_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_leaf_stone_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_tiny_mushroom_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mushroom_palette[];
+extern const u8 gFile_graphics_items_icons_big_mushroom_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mushroom_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_pearl_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pearl_palette[];
+extern const u8 gFile_graphics_items_icons_big_pearl_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pearl_palette[];
+extern const u8 gFile_graphics_items_icons_stardust_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_star_palette[];
+extern const u8 gFile_graphics_items_icons_star_piece_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_star_palette[];
+extern const u8 gFile_graphics_items_icons_nugget_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_nugget_palette[];
+extern const u8 gFile_graphics_items_icons_heart_scale_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_heart_scale_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_orange_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_orange_mail_palette[];
+extern const u8 gFile_graphics_items_icons_harbor_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_harbor_mail_palette[];
+extern const u8 gFile_graphics_items_icons_glitter_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_glitter_mail_palette[];
+extern const u8 gFile_graphics_items_icons_mech_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mech_mail_palette[];
+extern const u8 gFile_graphics_items_icons_wood_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_wood_mail_palette[];
+extern const u8 gFile_graphics_items_icons_wave_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_wave_mail_palette[];
+extern const u8 gFile_graphics_items_icons_bead_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_bead_mail_palette[];
+extern const u8 gFile_graphics_items_icons_shadow_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_shadow_mail_palette[];
+extern const u8 gFile_graphics_items_icons_tropic_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_tropic_mail_palette[];
+extern const u8 gFile_graphics_items_icons_dream_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dream_mail_palette[];
+extern const u8 gFile_graphics_items_icons_fab_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fab_mail_palette[];
+extern const u8 gFile_graphics_items_icons_retro_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_retro_mail_palette[];
+extern const u8 gFile_graphics_items_icons_cheri_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_cheri_berry_palette[];
+extern const u8 gFile_graphics_items_icons_chesto_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_chesto_berry_palette[];
+extern const u8 gFile_graphics_items_icons_pecha_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pecha_berry_palette[];
+extern const u8 gFile_graphics_items_icons_rawst_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_rawst_berry_palette[];
+extern const u8 gFile_graphics_items_icons_aspear_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_aspear_berry_palette[];
+extern const u8 gFile_graphics_items_icons_leppa_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_leppa_berry_palette[];
+extern const u8 gFile_graphics_items_icons_oran_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_oran_berry_palette[];
+extern const u8 gFile_graphics_items_icons_persim_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_persim_berry_palette[];
+extern const u8 gFile_graphics_items_icons_lum_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lum_berry_palette[];
+extern const u8 gFile_graphics_items_icons_sitrus_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_sitrus_berry_palette[];
+extern const u8 gFile_graphics_items_icons_figy_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_figy_berry_palette[];
+extern const u8 gFile_graphics_items_icons_wiki_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_wiki_berry_palette[];
+extern const u8 gFile_graphics_items_icons_mago_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mago_berry_palette[];
+extern const u8 gFile_graphics_items_icons_aguav_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_aguav_berry_palette[];
+extern const u8 gFile_graphics_items_icons_iapapa_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_iapapa_berry_palette[];
+extern const u8 gFile_graphics_items_icons_razz_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_razz_berry_palette[];
+extern const u8 gFile_graphics_items_icons_bluk_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_bluk_berry_palette[];
+extern const u8 gFile_graphics_items_icons_nanab_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_nanab_berry_palette[];
+extern const u8 gFile_graphics_items_icons_wepear_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_wepear_berry_palette[];
+extern const u8 gFile_graphics_items_icons_pinap_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pinap_berry_palette[];
+extern const u8 gFile_graphics_items_icons_pomeg_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pomeg_berry_palette[];
+extern const u8 gFile_graphics_items_icons_kelpsy_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_kelpsy_berry_palette[];
+extern const u8 gFile_graphics_items_icons_qualot_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_qualot_berry_palette[];
+extern const u8 gFile_graphics_items_icons_hondew_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_hondew_berry_palette[];
+extern const u8 gFile_graphics_items_icons_grepa_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_grepa_berry_palette[];
+extern const u8 gFile_graphics_items_icons_tamato_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_tamato_berry_palette[];
+extern const u8 gFile_graphics_items_icons_cornn_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_cornn_berry_palette[];
+extern const u8 gFile_graphics_items_icons_magost_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_magost_berry_palette[];
+extern const u8 gFile_graphics_items_icons_rabuta_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_rabuta_berry_palette[];
+extern const u8 gFile_graphics_items_icons_nomel_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_nomel_berry_palette[];
+extern const u8 gFile_graphics_items_icons_spelon_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_spelon_berry_palette[];
+extern const u8 gFile_graphics_items_icons_pamtre_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pamtre_berry_palette[];
+extern const u8 gFile_graphics_items_icons_watmel_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_watmel_berry_palette[];
+extern const u8 gFile_graphics_items_icons_durin_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_durin_berry_palette[];
+extern const u8 gFile_graphics_items_icons_belue_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_belue_berry_palette[];
+extern const u8 gFile_graphics_items_icons_liechi_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_liechi_berry_palette[];
+extern const u8 gFile_graphics_items_icons_ganlon_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ganlon_berry_palette[];
+extern const u8 gFile_graphics_items_icons_salac_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_salac_berry_palette[];
+extern const u8 gFile_graphics_items_icons_petaya_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_petaya_berry_palette[];
+extern const u8 gFile_graphics_items_icons_apicot_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_apicot_berry_palette[];
+extern const u8 gFile_graphics_items_icons_lansat_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lansat_berry_palette[];
+extern const u8 gFile_graphics_items_icons_starf_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_starf_berry_palette[];
+extern const u8 gFile_graphics_items_icons_enigma_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_enigma_berry_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_bright_powder_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_bright_powder_palette[];
+extern const u8 gFile_graphics_items_icons_in_battle_herb_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_white_herb_palette[];
+extern const u8 gFile_graphics_items_icons_macho_brace_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_macho_brace_palette[];
+extern const u8 gFile_graphics_items_icons_exp_share_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_exp_share_palette[];
+extern const u8 gFile_graphics_items_icons_quick_claw_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_quick_claw_palette[];
+extern const u8 gFile_graphics_items_icons_soothe_bell_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_soothe_bell_palette[];
+extern const u8 gFile_graphics_items_icons_in_battle_herb_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mental_herb_palette[];
+extern const u8 gFile_graphics_items_icons_choice_band_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_choice_band_palette[];
+extern const u8 gFile_graphics_items_icons_kings_rock_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_kings_rock_palette[];
+extern const u8 gFile_graphics_items_icons_silver_powder_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_silver_powder_palette[];
+extern const u8 gFile_graphics_items_icons_amulet_coin_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_amulet_coin_palette[];
+extern const u8 gFile_graphics_items_icons_cleanse_tag_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_cleanse_tag_palette[];
+extern const u8 gFile_graphics_items_icons_soul_dew_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_soul_dew_palette[];
+extern const u8 gFile_graphics_items_icons_deep_sea_tooth_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_deep_sea_tooth_palette[];
+extern const u8 gFile_graphics_items_icons_deep_sea_scale_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_deep_sea_scale_palette[];
+extern const u8 gFile_graphics_items_icons_smoke_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_smoke_ball_palette[];
+extern const u8 gFile_graphics_items_icons_everstone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_everstone_palette[];
+extern const u8 gFile_graphics_items_icons_focus_band_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_focus_band_palette[];
+extern const u8 gFile_graphics_items_icons_lucky_egg_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lucky_egg_palette[];
+extern const u8 gFile_graphics_items_icons_scope_lens_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_scope_lens_palette[];
+extern const u8 gFile_graphics_items_icons_metal_coat_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_metal_coat_palette[];
+extern const u8 gFile_graphics_items_icons_leftovers_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_leftovers_palette[];
+extern const u8 gFile_graphics_items_icons_dragon_scale_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dragon_scale_palette[];
+extern const u8 gFile_graphics_items_icons_light_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_light_ball_palette[];
+extern const u8 gFile_graphics_items_icons_soft_sand_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_soft_sand_palette[];
+extern const u8 gFile_graphics_items_icons_hard_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_hard_stone_palette[];
+extern const u8 gFile_graphics_items_icons_miracle_seed_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_miracle_seed_palette[];
+extern const u8 gFile_graphics_items_icons_black_glasses_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_black_type_enhancing_item_palette[];
+extern const u8 gFile_graphics_items_icons_black_belt_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_black_type_enhancing_item_palette[];
+extern const u8 gFile_graphics_items_icons_magnet_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_magnet_palette[];
+extern const u8 gFile_graphics_items_icons_mystic_water_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mystic_water_palette[];
+extern const u8 gFile_graphics_items_icons_sharp_beak_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_sharp_beak_palette[];
+extern const u8 gFile_graphics_items_icons_poison_barb_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_poison_barb_palette[];
+extern const u8 gFile_graphics_items_icons_never_melt_ice_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_never_melt_ice_palette[];
+extern const u8 gFile_graphics_items_icons_spell_tag_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_spell_tag_palette[];
+extern const u8 gFile_graphics_items_icons_twisted_spoon_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_twisted_spoon_palette[];
+extern const u8 gFile_graphics_items_icons_charcoal_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_charcoal_palette[];
+extern const u8 gFile_graphics_items_icons_dragon_fang_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dragon_fang_palette[];
+extern const u8 gFile_graphics_items_icons_silk_scarf_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_silk_scarf_palette[];
+extern const u8 gFile_graphics_items_icons_up_grade_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_up_grade_palette[];
+extern const u8 gFile_graphics_items_icons_shell_bell_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_shell_palette[];
+extern const u8 gFile_graphics_items_icons_sea_incense_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_sea_incense_palette[];
+extern const u8 gFile_graphics_items_icons_lax_incense_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lax_incense_palette[];
+extern const u8 gFile_graphics_items_icons_lucky_punch_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lucky_punch_palette[];
+extern const u8 gFile_graphics_items_icons_metal_powder_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_metal_powder_palette[];
+extern const u8 gFile_graphics_items_icons_thick_club_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_thick_club_palette[];
+extern const u8 gFile_graphics_items_icons_stick_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_stick_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_scarf_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_red_scarf_palette[];
+extern const u8 gFile_graphics_items_icons_scarf_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_blue_scarf_palette[];
+extern const u8 gFile_graphics_items_icons_scarf_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pink_scarf_palette[];
+extern const u8 gFile_graphics_items_icons_scarf_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_green_scarf_palette[];
+extern const u8 gFile_graphics_items_icons_scarf_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_yellow_scarf_palette[];
+extern const u8 gFile_graphics_items_icons_mach_bike_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mach_bike_palette[];
+extern const u8 gFile_graphics_items_icons_coin_case_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_coin_case_palette[];
+extern const u8 gFile_graphics_items_icons_itemfinder_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_itemfinder_palette[];
+extern const u8 gFile_graphics_items_icons_old_rod_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_old_rod_palette[];
+extern const u8 gFile_graphics_items_icons_good_rod_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_good_rod_palette[];
+extern const u8 gFile_graphics_items_icons_super_rod_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_super_rod_palette[];
+extern const u8 gFile_graphics_items_icons_ss_ticket_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ss_ticket_palette[];
+extern const u8 gFile_graphics_items_icons_contest_pass_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_contest_pass_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_wailmer_pail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_wailmer_pail_palette[];
+extern const u8 gFile_graphics_items_icons_devon_goods_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_devon_goods_palette[];
+extern const u8 gFile_graphics_items_icons_soot_sack_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_soot_sack_palette[];
+extern const u8 gFile_graphics_items_icons_basement_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_old_key_palette[];
+extern const u8 gFile_graphics_items_icons_acro_bike_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_acro_bike_palette[];
+extern const u8 gFile_graphics_items_icons_pokeblock_case_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pokeblock_case_palette[];
+extern const u8 gFile_graphics_items_icons_letter_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lava_cookie_and_letter_palette[];
+extern const u8 gFile_graphics_items_icons_eon_ticket_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_eon_ticket_palette[];
+extern const u8 gFile_graphics_items_icons_orb_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_red_orb_palette[];
+extern const u8 gFile_graphics_items_icons_orb_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_blue_orb_palette[];
+extern const u8 gFile_graphics_items_icons_scanner_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_scanner_palette[];
+extern const u8 gFile_graphics_items_icons_go_goggles_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_go_goggles_palette[];
+extern const u8 gFile_graphics_items_icons_meteorite_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_meteorite_palette[];
+extern const u8 gFile_graphics_items_icons_room1_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_key_palette[];
+extern const u8 gFile_graphics_items_icons_room2_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_key_palette[];
+extern const u8 gFile_graphics_items_icons_room4_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_key_palette[];
+extern const u8 gFile_graphics_items_icons_room6_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_key_palette[];
+extern const u8 gFile_graphics_items_icons_storage_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_old_key_palette[];
+extern const u8 gFile_graphics_items_icons_root_fossil_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_hoenn_fossil_palette[];
+extern const u8 gFile_graphics_items_icons_claw_fossil_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_hoenn_fossil_palette[];
+extern const u8 gFile_graphics_items_icons_devon_scope_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_devon_scope_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dragon_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_poison_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ice_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_grass_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ice_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ice_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_grass_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_grass_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_steel_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_electric_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_electric_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ground_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ground_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ghost_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_electric_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_poison_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_rock_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_rock_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_flying_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_steel_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_flying_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_oaks_parcel_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_oaks_parcel_palette[];
+extern const u8 gFile_graphics_items_icons_poke_flute_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_poke_flute_palette[];
+extern const u8 gFile_graphics_items_icons_secret_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_secret_key_palette[];
+extern const u8 gFile_graphics_items_icons_bike_voucher_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_bike_voucher_palette[];
+extern const u8 gFile_graphics_items_icons_gold_teeth_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_gold_teeth_palette[];
+extern const u8 gFile_graphics_items_icons_old_amber_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_old_amber_palette[];
+extern const u8 gFile_graphics_items_icons_card_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_card_key_palette[];
+extern const u8 gFile_graphics_items_icons_lift_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_key_palette[];
+extern const u8 gFile_graphics_items_icons_helix_fossil_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_kanto_fossil_palette[];
+extern const u8 gFile_graphics_items_icons_dome_fossil_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_kanto_fossil_palette[];
+extern const u8 gFile_graphics_items_icons_silph_scope_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_silph_scope_palette[];
+extern const u8 gFile_graphics_items_icons_bicycle_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_bicycle_palette[];
+extern const u8 gFile_graphics_items_icons_town_map_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_town_map_palette[];
+extern const u8 gFile_graphics_items_icons_vs_seeker_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_vs_seeker_palette[];
+extern const u8 gFile_graphics_items_icons_fame_checker_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fame_checker_palette[];
+extern const u8 gFile_graphics_items_icons_tm_case_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_tm_case_palette[];
+extern const u8 gFile_graphics_items_icons_berry_pouch_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_berry_pouch_palette[];
+extern const u8 gFile_graphics_items_icons_teachy_tv_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_teachy_tv_palette[];
+extern const u8 gFile_graphics_items_icons_tri_pass_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_tri_pass_palette[];
+extern const u8 gFile_graphics_items_icons_rainbow_pass_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_rainbow_pass_palette[];
+extern const u8 gFile_graphics_items_icons_tea_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_tea_palette[];
+extern const u8 gFile_graphics_items_icons_mystic_ticket_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mystic_ticket_palette[];
+extern const u8 gFile_graphics_items_icons_aurora_ticket_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_aurora_ticket_palette[];
+extern const u8 gFile_graphics_items_icons_powder_jar_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_powder_jar_palette[];
+extern const u8 gFile_graphics_items_icons_gem_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ruby_palette[];
+extern const u8 gFile_graphics_items_icons_gem_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_sapphire_palette[];
+extern const u8 gFile_graphics_items_icons_return_to_field_arrow_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_return_to_field_arrow_palette[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/hall_of_fame.h b/include/hall_of_fame.h
index 2dc9fae41..1d2122399 100644
--- a/include/hall_of_fame.h
+++ b/include/hall_of_fame.h
@@ -7,5 +7,8 @@ void CB2_DoHallOfFameScreen(void);
void CB2_DoHallOfFameScreenDontSaveData(void);
void CB2_DoHallOfFamePC(void);
void sub_8175280(void);
+void sub_80F2978(void);
+void HallOfFamePCBeginFade(void);
+void ReturnFromHallOfFamePC(void);
#endif // GUARD_HALL_OF_FAME_H
diff --git a/include/help_system.h b/include/help_system.h
index 6398d306b..3ba0cf475 100644
--- a/include/help_system.h
+++ b/include/help_system.h
@@ -2,11 +2,92 @@
#define GUARD_HELP_SYSTEM_H
#include "global.h"
+#include "list_menu.h"
+#include "blit.h"
+struct HelpSystemListMenu_sub
+{
+ struct ListMenuItem * items;
+ u16 totalItems;
+ u16 maxShowed;
+ u8 left;
+ u8 top;
+};
+
+struct HelpSystemListMenu
+{
+ struct HelpSystemListMenu_sub sub;
+ u8 field_0C;
+ u8 field_0D;
+ u8 field_0E;
+ u8 filler_10[0xC];
+};
+
+extern struct HelpSystemListMenu gHelpSystemListMenu;
+extern struct ListMenuItem gHelpSystemListMenuItems[];
extern bool8 gUnknown_3005ECC;
+extern u8 gUnknown_203F175;
-void sub_812B484(void);
+// help_system_812B1E0
+void sub_812B1E0(u8);
void HelpSystem_SetSomeVariable2(u8);
+bool8 sub_812B40C(void);
+bool8 sub_812B45C(void);
void sub_812B478(void);
+void sub_812B484(void);
+void sub_812B4B8(void);
+bool8 sub_812BB9C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BC54(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BC80(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BCA8(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BCD0(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BD2C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BD64(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BD98(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+void sub_812BDEC(void);
+bool8 sub_812BE10(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BEEC(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BF18(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BF88(void);
+
+// help_system
+bool8 RunHelpSystemCallback(void);
+void SaveCallbacks(void);
+void SaveMapGPURegs(void);
+void SaveMapTiles(void);
+void SaveMapTextColors(void);
+void RestoreCallbacks(void);
+void RestoreGPURegs(void);
+void RestoreMapTiles(void);
+void RestoreMapTextColors(void);
+void CommitTilemap(void);
+void sub_813BCF4(void);
+void sub_813BD14(u8);
+void sub_813BD5C(u8);
+void sub_813BDA4(u8);
+void sub_813BDE8(u8);
+void sub_813BE30(u8);
+void sub_813BE78(u8);
+void sub_813BEE4(u8);
+void sub_813BF50(u8);
+void sub_813BFC0(u8);
+void sub_813C004(u8, u8);
+void HelpSystem_PrintTextRightAlign_Row52(const u8 *str);
+void HelpSystem_PrintTextAt(const u8 *, u8, u8);
+void HelpSystem_PrintTwoStrings(const u8 *a0, const u8 *a1);
+void HelpSystem_PrintText_813C584(const u8 *str);
+void HelpSystem_FillPanel2(void);
+void HelpSystem_FillPanel1(void);
+void HelpSystem_InitListMenuController(struct HelpSystemListMenu *, u8, u8);
+void HelpSystem_SetInputDelay(u8);
+s32 HelpSystem_GetMenuInput(void);
+void sub_813C75C(void);
+
+void DecompressAndRenderGlyph(u8 font, u16 glyph, struct Bitmap *srcBlit, struct Bitmap *destBlit, u8 *destBuffer, u8 x, u8 y, u8 width, u8 height);
+void HelpSystem_PrintText_Row61(const u8 * str);
+void HelpSystem_FillPanel3(void);
+void PrintListMenuItems(void);
+void PlaceListMenuCursor(void);
+bool8 MoveCursor(u8 by, u8 dirn);
#endif //GUARD_HELP_SYSTEM_H
diff --git a/include/item.h b/include/item.h
index 320b7ffec..0f0adbca8 100644
--- a/include/item.h
+++ b/include/item.h
@@ -1,18 +1,20 @@
-#ifndef ITEM_H
-#define ITEM_H
+#ifndef GUARD_ITEM_H
+#define GUARD_ITEM_H
+
+#include "global.h"
typedef void (*ItemUseFunc)(u8);
struct Item
{
- u8 name[14];
+ u8 name[ITEM_NAME_LENGTH];
u16 itemId;
u16 price;
u8 holdEffect;
u8 holdEffectParam;
const u8 *description;
u8 importance;
- u8 unk19;
+ u8 exitsBagOnUse;
u8 pocket;
u8 type;
ItemUseFunc fieldUseFunc;
@@ -44,7 +46,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);
@@ -60,16 +62,20 @@ u8 ItemId_GetBattleUsage(u16 itemId);
ItemUseFunc ItemId_GetBattleFunc(u16 itemId);
u8 ItemId_GetSecondaryId(u16 itemId);
u16 itemid_get_market_price(u16 itemId);
-void sub_809A2DC(void);
-void sub_809A2A4(void);
+void ClearItemSlotsInAllBagPockets(void);
+void ClearPCItemSlots(void);
void CopyItemName(u16, u8 *);
void sub_809A824(u16 itemId);
bool8 AddBagItem(u16 itemId, u16 amount);
-void sub_809A5E4(struct BagPocket *);
+void SortPocketAndPlaceHMsFirst(struct BagPocket *);
u16 BagGetItemIdByPocketPosition(u8 a0, u16 a1);
u16 BagGetQuantityByPocketPosition(u8 a0, u16 a1);
bool8 itemid_is_unique(u16 itemId);
-void sub_809A584(struct ItemSlot * slots, u8 capacity);
+void BagPocketCompaction(struct ItemSlot * slots, u8 capacity);
+u16 GetPcItemQuantity(u16 *);
+
+void ItemPcCompaction(void);
+void RemoveItemFromPC(u16 itemId, u16 quantity);
-#endif // ITEM_H
+#endif // GUARD_ITEM_H
diff --git a/include/item_icon.h b/include/item_icon.h
deleted file mode 100644
index 75e2475f3..000000000
--- a/include/item_icon.h
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// Created by scott on 10/20/2017.
-//
-
-#ifndef GUARD_ITEM_ICON_H
-#define GUARD_ITEM_ICON_H
-
-#include "global.h"
-
-extern EWRAM_DATA void *gUnknown_0203CEBC;
-extern EWRAM_DATA void *gUnknown_0203CEC0;
-
-extern const struct SpriteTemplate gUnknown_08614FF4;
-
-bool8 AllocItemIconTemporaryBuffers(void);
-void CopyItemIconPicTo4x4Buffer(void *src, void *dest);
-void FreeItemIconTemporaryBuffers(void);
-
-#endif //GUARD_ITEM_ICON_H
diff --git a/include/item_menu.h b/include/item_menu.h
index efd0066ed..2e83ed1f4 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -2,6 +2,7 @@
#define GUARD_ITEM_MENU_H
#include "global.h"
+#include "task.h"
// Exported type declarations
@@ -25,6 +26,16 @@ extern u16 gSpecialVar_ItemId;
void sub_81AAC50(void);
void sub_81AAC70(void);
void sub_8108CF0(void);
-void UseFameCheckerFromMenu(void);
+void sub_810B108(u8);
+void ReturnToBagFromKeyItem(void);
+void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2);
+void ItemMenu_StartFadeToExitCallback(u8 taskId);
+void sub_8108CB4(void);
+void ItemMenu_SetExitCallback(void (*)(void));
+void DisplayItemMessageInBag(u8 taskId, u8 bgId, const u8 * string, TaskFunc followUpFunc);
+void sub_810A1F8(u8 taskId);
+void sub_8107ECC(void);
+void sub_8108DC8(u8 pocketId);
+void sub_81089F4(u8 pocketId);
#endif //GUARD_ITEM_MENU_H
diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h
index 7fcd6d5e1..b5b5c6b0b 100644
--- a/include/item_menu_icons.h
+++ b/include/item_menu_icons.h
@@ -3,6 +3,28 @@
#include "global.h"
-u8 sub_80D511C(u8 a0, u8 a1, u8 a2, u8 a3);
+extern void * gUnknown_2039884;
+
+extern const struct CompressedSpriteSheet gUnknown_83D41E4;
+extern const struct CompressedSpriteSheet gUnknown_83D41EC;
+extern const struct CompressedSpritePalette gUnknown_83D41F4;
+
+extern const struct CompressedSpriteSheet gBagSwapSpriteSheet;
+extern const struct CompressedSpritePalette gBagSwapSpritePalette;
+
+void ResetItemMenuIconState(void);
+void sub_80985E4(void);
+void DestroyItemMenuIcon(bool8 a0);
+void CreateItemMenuIcon(u16 itemId, bool8 a0);
+void CopyItemIconPicTo4x4Buffer(const void *src, void *dest);
+u8 AddItemIconObject(u16 tilesTag, u16 paletteTag, u16 itemId);
+u8 AddItemIconObjectWithCustomObjectTemplate(const struct SpriteTemplate * origTemplate, u16 tilesTag, u16 paletteTag, u16 itemId);
+void sub_80989A0(u16 itemId, u8 idx);
+void sub_80986A8(s16 x, u16 y);
+void sub_8098660(u8);
+void sub_8098528(u8);
+void sub_8098580(void);
+const void * sub_8098974(u16 itemId, u8 ptrId);
+void sub_80984FC(u8 animNum);
#endif // GUARD_ITEM_MENU_ICONS
diff --git a/include/item_pc.h b/include/item_pc.h
new file mode 100644
index 000000000..2fecf69a8
--- /dev/null
+++ b/include/item_pc.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_ITEM_PC_H
+#define GUARD_ITEM_PC_H
+
+void ItemPc_Init(u8 a0, MainCallback callback);
+void ItemPc_SetInitializedFlag(u8);
+
+#endif //GUARD_ITEM_PC_H
diff --git a/include/item_use.h b/include/item_use.h
index 5ec5f2b33..db98533f1 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -4,6 +4,41 @@
#include "global.h"
void sub_80A1E0C(u8);
-void sub_80A2294(u8, u8, u16, u16);
+void ItemUse_SetQuestLogEvent(u8, struct Pokemon *, u16, u16);
+
+void FieldUseFunc_OrangeMail(u8 taskId);
+void FieldUseFunc_MachBike(u8 taskId);
+void FieldUseFunc_OldRod(u8 taskId);
+void FieldUseFunc_CoinCase(u8 taskId);
+void FieldUseFunc_PowderJar(u8 taskId);
+void FieldUseFunc_PokeFlute(u8 taskId);
+void FieldUseFunc_Medicine(u8 taskId);
+void FieldUseFunc_Ether(u8 taskId);
+void FieldUseFunc_PpUp(u8 taskId);
+void FieldUseFunc_RareCandy(u8 taskId);
+void FieldUseFunc_EvoItem(u8 taskId);
+void FieldUseFunc_SacredAsh(u8 taskId);
+void FieldUseFunc_TmCase(u8 taskId);
+void FieldUseFunc_BerryPouch(u8 taskId);
+void BattleUseFunc_BerryPouch(u8 taskId);
+void FieldUseFunc_TeachyTv(u8 taskId);
+void FieldUseFunc_SuperRepel(u8 taskId);
+void FieldUseFunc_BlackFlute(u8 taskId);
+void FieldUseFunc_TownMap(u8 taskId);
+void FieldUseFunc_FameChecker(u8 taskId);
+void FieldUseFunc_VsSeeker(u8 taskId);
+void BattleUseFunc_PokeBallEtc(u8 taskId);
+void BattleUseFunc_PokeFlute(u8 taskId);
+void BattleUseFunc_GuardSpec(u8 taskId);
+void BattleUseFunc_Medicine(u8 taskId);
+void BattleUseFunc_Ether(u8 taskId);
+void BattleUseFunc_PokeDoll(u8 taskId);
+void FieldUseFunc_OakStopsYou(u8 taskId);
+void ItemUseOutOfBattle_EscapeRope(u8 taskId);
+void ItemUseOutOfBattle_EnigmaBerry(u8 taskId);
+void ItemUseInBattle_EnigmaBerry(u8 taskId);
+void ItemUseOutOfBattle_Itemfinder(u8 taskId);
+void sub_80A1C44(u8 taskId);
+u8 CanUseEscapeRopeOnCurrMap(void);
#endif //GUARD_ITEM_USE_H
diff --git a/include/itemfinder.h b/include/itemfinder.h
new file mode 100644
index 000000000..2b882b144
--- /dev/null
+++ b/include/itemfinder.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_ITEMFINDER_H
+#define GUARD_ITEMFINDER_H
+
+void sub_813EC8C(u8 taskId);
+
+#endif //GUARD_ITEMFINDER_H
diff --git a/include/libgcnmultiboot.h b/include/libgcnmultiboot.h
new file mode 100644
index 000000000..7d347df05
--- /dev/null
+++ b/include/libgcnmultiboot.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_LIBGCMMULTIBOOT_H
+#define GUARD_LIBGCNMULTIBOOT_H
+
+struct GcmbStruct
+{
+ u16 gcmb_field_0;
+ vu8 gcmb_field_2;
+ u8 filler3[0x2C - 0x3];
+};
+
+void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_ExecuteProgram(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_Init(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_HandleSerialInterrupt(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_Quit(void);
+
+#endif // GUARD_LIBGCNMULTIBOOT_H
diff --git a/include/link.h b/include/link.h
index a875149aa..e1a4e106b 100644
--- a/include/link.h
+++ b/include/link.h
@@ -147,7 +147,7 @@ extern bool8 gReceivedRemoteLinkPlayers;
extern bool8 gLinkVSyncDisabled;
extern u8 gUnknown_3003F84;
-extern u64 gUnknown_3003FB4;
+extern u64 gSioMlt_Recv;
void Task_DestroySelf(u8);
void OpenLink(void);
@@ -206,5 +206,8 @@ void sub_800AA80(u8);
void sub_80098D8(void);
void CloseLink(void);
bool8 sub_800A4BC(void);
+bool32 sub_800B270(void);
+void sub_800B388(void);
+void sub_8054A28(void);
#endif // GUARD_LINK_H
diff --git a/include/list_menu.h b/include/list_menu.h
index 8ff65da0b..df53bb529 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -2,15 +2,28 @@
#define GUARD_LIST_MENU_H
#include "global.h"
+#include "window.h"
-// Exported type declarations
+#define LIST_NOTHING_CHOSEN -1
+#define LIST_CANCEL -2
+#define LIST_HEADER -3
-// Exported RAM declarations
+#define LIST_NO_MULTIPLE_SCROLL 0
+#define LIST_MULTIPLE_SCROLL_DPAD 1
+#define LIST_MULTIPLE_SCROLL_L_R 2
+
+enum
+{
+ SCROLL_ARROW_LEFT,
+ SCROLL_ARROW_RIGHT,
+ SCROLL_ARROW_UP,
+ SCROLL_ARROW_DOWN,
+};
struct ListMenuItem
{
- const u8 *unk_00;
- s32 unk_04;
+ const u8 *label;
+ s32 index;
};
struct ListMenu;
@@ -37,29 +50,38 @@ struct ListMenuTemplate
u8 cursorKind:2; // x40, x80
};
-struct ListMenu {
- struct ListMenuTemplate _template;
+struct ListMenu
+{
+ struct ListMenuTemplate template;
u16 scrollOffset;
u16 selectedRow;
u8 unk_1C;
u8 unk_1D;
- u8 unk_1E;
+ u8 taskId;
u8 unk_1F;
};
-extern struct ListMenuTemplate gUnknown_03006310;
-extern struct ListMenuTemplate gMultiuseListMenuTemplate;
+struct ListMenuWindowRect
+{
+ u8 x;
+ u8 y;
+ u8 width;
+ u8 height;
+ u8 palNum;
+};
-// Exported ROM declarations
+extern struct ListMenuTemplate gMultiuseListMenuTemplate;
-u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2);
-s32 ListMenuHandleInput(u8 id);
-void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2);
-void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2);
-void DestroyListMenu(u8, u16 *, u16 *);
-u16 ListMenuGetYCoordForPrintingArrowCursor(u8);
-void sub_8107D38(u8, u8);
s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
-void ListMenuDefaultCursorMoveFunc(s32, u8, struct ListMenu *);
+u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
+u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 scrollOffset, u16 selectedRow);
+s32 ListMenu_ProcessInput(u8 listTaskId);
+void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
+void RedrawListMenu(u8 listTaskId);
+void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
+u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId);
+void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal);
+void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value);
#endif //GUARD_LIST_MENU_H
diff --git a/include/load_save.h b/include/load_save.h
index 064e6dff2..bd33f89c8 100644
--- a/include/load_save.h
+++ b/include/load_save.h
@@ -24,5 +24,7 @@ void SetSaveBlocksPointers(void);
void MoveSaveBlocks_ResetHeap(void);
void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
void ApplyNewEncryptionKeyToBagItems(u32 encryptionKey);
+void ApplyNewEncryptionKeyToWord(u32 * word, u32 encryptionKey);
+void ApplyNewEncryptionKeyToHword(u16 * hword, u32 encryptionKey);
#endif // GUARD_LOAD_SAVE_H
diff --git a/include/m4a.h b/include/m4a.h
index 24b454104..2bb7f2124 100644
--- a/include/m4a.h
+++ b/include/m4a.h
@@ -5,6 +5,11 @@
#include "gba/m4a_internal.h"
+extern struct MusicPlayerInfo gMPlayInfo_BGM;
+extern struct MusicPlayerInfo gMPlayInfo_SE1;
+extern struct MusicPlayerInfo gMPlayInfo_SE2;
+extern struct MusicPlayerInfo gMPlayInfo_SE3;
+
void m4aSoundVSync(void);
void m4aSoundVSyncOn(void);
diff --git a/include/mail.h b/include/mail.h
index 5d6ad559b..3ba731c66 100644
--- a/include/mail.h
+++ b/include/mail.h
@@ -3,6 +3,8 @@
#include "global.h"
+#define MAIL_WORDS_COUNT 9
+
#define IS_ITEM_MAIL(itemId)((itemId == ITEM_ORANGE_MAIL \
|| itemId == ITEM_HARBOR_MAIL \
|| itemId == ITEM_GLITTER_MAIL \
@@ -17,9 +19,6 @@
|| itemId == ITEM_RETRO_MAIL))
-bool8 MonHasMail(struct Pokemon *mon);
-void TakeMailFromMon(struct Pokemon *mon);
-u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail);
-void ClearMailStruct(struct MailStruct *mail);
+void sub_80BEBEC(struct MailStruct * mail, void (* callback)(void), u8 a2);
#endif // GUARD_MAIL_H
diff --git a/include/mail_data.h b/include/mail_data.h
index 0275d8dc6..a5795ed7e 100644
--- a/include/mail_data.h
+++ b/include/mail_data.h
@@ -9,7 +9,16 @@
// Exported ROM declarations
-u16 sub_80D45E8(u16, u16 *);
-bool8 itemid_is_mail(u16 itemId);
+void ClearMailData(void);
+void ClearMailStruct(struct MailStruct *mail);
+bool8 MonHasMail(struct Pokemon *mon);
+u8 GiveMailToMon(struct Pokemon *mon, u16 itemId);
+u16 SpeciesToMailSpecies(u16 species, u32 personality);
+u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer);
+u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail);
+void TakeMailFromMon(struct Pokemon *mon);
+void ClearMailItemId(u8 mailId);
+u8 TakeMailFromMon2(struct Pokemon *mon);
+bool8 ItemIsMail(u16 itemId);
#endif //GUARD_MAIL_DATA_H
diff --git a/include/main.h b/include/main.h
index 6e9d2a25d..a250475cb 100644
--- a/include/main.h
+++ b/include/main.h
@@ -3,8 +3,6 @@
#include "global.h"
-#include "global.h"
-
typedef void (*MainCallback)(void);
typedef void (*IntrCallback)(void);
typedef void (*IntrFunc)(void);
diff --git a/include/menu.h b/include/menu.h
index 172944064..19d7c82a4 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -2,10 +2,12 @@
#define GUARD_MENU_H
#include "global.h"
-
#include "text.h"
#include "window.h"
+#define MENU_NOTHING_CHOSEN -2
+#define MENU_B_PRESSED -1
+
struct MenuAction
{
const u8 *text;
@@ -15,41 +17,54 @@ struct MenuAction
} func;
};
-void box_print(u8, u8, u8, u8, const void *, s8, const u8 *);
-void sub_8198070(u8 windowId, bool8 copyToVram);
-void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
-void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette);
-void schedule_bg_copy_tilemap_to_vram(u8 bgNum);
-void PrintMenuTable(u8 idx, u8 nstrs, const struct MenuAction *strs);
-void InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 idx, u8 nstrs,u8);
-u8 GetMenuCursorPos(void);
-s8 ProcessMenuInput(void);
-s8 ProcessMenuInputNoWrapAround(void);
-void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y);
-void reset_temp_tile_data_buffers(void);
-int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode);
-bool8 free_temp_tile_data_buffers_if_possible(void);
-u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
-//void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
-s8 Menu_ProcessInputNoWrapClearOnChoose(void);
-void do_scheduled_bg_tilemap_copies_to_vram(void);
-void clear_scheduled_bg_copies_to_vram(void);
-void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str);
-void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3);
-void sub_810F4D8(u8 windowId, bool32 someBool);
-void *sub_80F68F0(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
-void CreateWindow_SnapRight_StdPal(u8, u8, u8, u8, u16);
-void Menu_PrintHelpSystemUIHeader(const u8 *, const u8 *, u8, u32, u8);
-void PrintTextOnRightSnappedWindow(const u8 *, u32, u8);
-void sub_810F71C(void);
-void sub_810F740(void);
-u8 ProgramAndPlaceMenuCursorOnWindow(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPosition);
-void CreateYesNoMenu(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8);
-
+// menu2
+void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * color, s8 speed, const u8 * str);
+void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str);
+void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing);
+void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y);
void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority);
bool8 IsBlendTaskActive(void);
void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8);
void sub_810F260(u8 windowId, u8 a1);
void sub_812E62C(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing);
+u8 sub_812EA78(u16 species, u32 personality, u8 a2);
+s8 sub_812EAE4(u16 species, u32 personality, u8 a2);
+
+// list_menu
+void sub_8107CD8(u8 palOffset, u16 speciesId);
+void sub_8107CF8(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y);
+void sub_8107D38(u8 palOffset, u8 palId);
+void BlitMoveInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y);
+
+// menu
+s8 Menu_ProcessInputGridLayout(void);
+u8 MultichoiceGrid_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cols, u8 rows, u8 cursorPos);
+void MultichoiceGrid_PrintItems(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHeight, u8 cols, u8 rows, const struct MenuAction *strs);
+void DestroyYesNoMenu(void);
+s8 Menu_ProcessInputNoWrapClearOnChoose(void);
+void CreateYesNoMenu(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos);
+void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *orderArray);
+void UnionRoomAndTradeMenuPrintOptions(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs);
+void MultichoiceList_PrintItems(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, u8 letterSpacing, u8 lineSpacing);
+void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs);
+s8 Menu_ProcessInputNoWrapAround_other(void);
+s8 Menu_ProcessInput_other(void);
+s8 Menu_ProcessInputNoWrapAround(void);
+s8 Menu_ProcessInput(void);
+u8 Menu_GetCursorPos(void);
+u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta);
+u8 Menu_MoveCursor(s8 cursorDelta);
+u8 Menu_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos);
+u8 Menu_InitCursorInternal(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos, bool8 APressMuted);
+void TopBarWindowPrintTwoStrings(const u8 *string, const u8 *string2, bool8 fgColorChooser, u8 notUsed, bool8 copyToVram);
+void TopBarWindowPrintString(const u8 *string, u8 unUsed, bool8 copyToVram);
+void ClearTopBarWindow(void);
+void DestroyTopBarWindow(void);
+u8 CreateTopBarWindowLoadPalette(u8 bg, u8 width, u8 yPos, u8 palette, u16 baseTile);
+void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram);
+void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum);
+void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram);
+void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum);
+struct WindowTemplate SetWindowTemplateFields(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock);
#endif // GUARD_MENU_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index e27fb4e5d..7fe8c19b2 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -2,29 +2,28 @@
#define GUARD_MENU_HELPERS_H
#include "global.h"
+#include "task.h"
-// Exported type declarations
-
-struct YesNoFuncTable {
+struct YesNoFuncTable
+{
TaskFunc yesFunc;
TaskFunc noFunc;
};
-// Exported RAM declarations
-
-// Exported ROM declarations
-
-void sub_812225C(u16 *, u16 *, u8, u8);
-void sub_8122298(u16 *, u16 *, u8, u8, u8);
-void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
-bool8 sub_81221AC(void);
+bool16 RunTextPrinters_CheckActive(u8 textPrinterId);
bool8 sub_80BF72C(void);
-bool8 sub_80BF708(void);
-void sub_80BF768(void);
-void sub_80BF7C8(void);
+bool8 sub_80BF748(void);
+bool8 MenuHelpers_LinkSomething(void);
+void SetVBlankHBlankCallbacksToNull(void);
+void ResetAllBgsCoordinatesAndBgCntRegs(void);
u8 sub_80BF8E4(void);
-u8 sub_80BF848(s16 * a0, u16 a1);
-void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
-void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate * unk1, u8 unk2, u8 unk3, u8 unk4, u8 unk5, u8 unk6, const struct YesNoFuncTable *ptrs);
+bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
+void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
+void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
+u8 GetLRKeysState(void);
+u8 sub_80BF66C(void);
+bool8 sub_80BF6A8(u16 itemId);
+bool8 itemid_80BF6D8_mail_related(u16 itemId);
+void ClearVramOamPltt(void);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/menu_indicators.h b/include/menu_indicators.h
index f195ceb6d..fbcee2590 100644
--- a/include/menu_indicators.h
+++ b/include/menu_indicators.h
@@ -3,29 +3,40 @@
#include "global.h"
-// Exported type declarations
-
-// Exported RAM declarations
+struct ScrollArrowsTemplate
+{
+ u8 firstArrowType;
+ u8 firstX;
+ u8 firstY;
+ u8 secondArrowType;
+ u8 secondX;
+ u8 secondY;
+ u16 fullyUpThreshold;
+ u16 fullyDownThreshold;
+ u16 tileTag;
+ u16 palTag;
+ u8 palNum;
+};
-struct ScrollIndicatorArrowPairTemplate
+struct CursorStruct
{
- u8 unk_00;
- u8 unk_01;
- u8 unk_02;
- u8 unk_03;
- u8 unk_04;
- u8 unk_05;
- u16 unk_06;
- u16 unk_08;
- u16 unk_0a;
- u16 unk_0c;
- u16 unk_0e_0:4;
- u16 unk_0e_4:12;
+ u8 left;
+ u8 top;
+ u16 rowWidth;
+ u16 rowHeight;
+ u16 tileTag;
+ u16 palTag;
+ u8 palNum;
};
-// Exported ROM declarations
-u8 AddScrollIndicatorArrowPairParametrized(u8, u8, u8, u8, s32, u16, u16, u16 *);
-u8 AddScrollIndicatorArrowPair(const struct ScrollIndicatorArrowPairTemplate * template, u16 * a1);
+u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *scrollOffset);
+u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate * template, u16 * a1);
void RemoveScrollIndicatorArrowPair(u8);
+u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind);
+u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor);
+void ListMenuUpdateRedOutlineCursorObject(u8 taskId, u16 x, u16 y);
+void ListMenuRemoveRedOutlineCursorObject(u8 taskId);
+void ListMenuRemoveCursorObject(u8 taskId, u32 cursorKind);
+void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorKind);
#endif //GUARD_MENU_INDICATORS_H
diff --git a/include/mevent.h b/include/mevent.h
index b9b17d8c0..b61fa732d 100644
--- a/include/mevent.h
+++ b/include/mevent.h
@@ -23,9 +23,9 @@ struct MEventStruct_Unk1442CC
struct MEvent_Str_1
{
- u16 unk_000;
- size_t unk_004;
- const void * unk_008;
+ u16 status;
+ size_t size;
+ const void * data;
};
struct MEvent_Str_2
diff --git a/include/multiboot.h b/include/multiboot.h
index 4b4a3693a..ee0a34c83 100644
--- a/include/multiboot.h
+++ b/include/multiboot.h
@@ -18,6 +18,6 @@ void MultiBootInit(struct MultiBootParam *mp);
int MultiBootMain(struct MultiBootParam *mp);
void MultiBootStartProbe(struct MultiBootParam *mp);
void MultiBootStartMaster(struct MultiBootParam *mp, const u8 *srcp, int length, u8 palette_color, s8 palette_speed);
-int MultiBootCheckComplete(struct MultiBootParam *mp);
+bool32 MultiBootCheckComplete(struct MultiBootParam *mp);
#endif // GUARD_MULTIBOOT_H
diff --git a/include/new_game.h b/include/new_game.h
index c495a9585..a45b090c8 100644
--- a/include/new_game.h
+++ b/include/new_game.h
@@ -14,5 +14,6 @@ void NewGameInitData(void);
void ResetMiniGamesResults(void);
void sub_808447C(void);
void Sav2_ClearSetDefault(void);
+void ResetMenuAndMonGlobals(void);
#endif // GUARD_NEW_GAME_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index 8fb3bba78..7b83c913b 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -5,33 +5,49 @@
#include "text.h"
#include "task.h"
-void sub_81973A4(void);
-void sub_81973C4(u8, u8);
-void sub_819746C(u8 windowId, bool8 copyToVram);
-void sub_81973FC(u8, u8);
-u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor);
-void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *src, TaskFunc callback);
-void sub_8197434(u8 a0, u8 a1);
-void SetStandardWindowBorderStyle(u8 a0, u8 a1);
-void sub_8197930(void);
-u8 GetPlayerTextSpeed(void);
-void ClearDialogWindowAndFrame(u8, u8);
-u8 GetTextSpeedSetting(void);
+void ClearScheduledBgCopiesToVram(void);
+void ScheduleBgCopyTilemapToVram(u8 bgId);
+void DoScheduledBgTilemapCopiesToVram(void);
+void ResetTempTileDataBuffers(void);
+bool8 FreeTempTileDataBuffersIfPossible(void);
+void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void * MallocAndDecompress(const void * src, u32 * size);
+void SetBgRectPal(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
+void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
+void ResetBgPositions(void);
+void InitStandardTextBoxWindows(void);
+void FreeAllOverworldWindowBuffers(void);
+void ResetBg0(void);
+u16 RunTextPrinters_CheckPrinter0Active(void);
+u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
+void AddTextPrinterDiffStyle(bool8 allowSkippingDelayWithButtonPress);
+void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
+void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed);
void sub_80F6E9C(void);
void DrawDialogueFrame(u8 windowId, bool8 transfer);
-void sub_80F7974(const u8 *);
-u8 GetStartMenuWindowId(void);
-void sub_80F7998(void);
-void sub_80F69E8(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
void DrawStdWindowFrame(u8 windowId, bool8 copyNow);
-void InitStandardTextBoxWindows(void);
-void ResetBg0(void);
-void Menu_LoadStdPalAt(u16);
-void * malloc_and_decompress(const void * src, u32 * size);
-u16 sub_80F796C(void);
-void sub_80F6B08(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
-void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void * gfx, u32 size, u16 a3, u8 a4);
+void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram);
void ClearStdWindowAndFrame(u8 taskId, bool8 copyNow);
void sub_80F6C14(void);
+void sub_80F771C(bool8 copyToVram);
+void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram);
+void sub_80F7768(u8 windowId, bool8 copyToVram);
+void Menu_LoadStdPal(void);
+void Menu_LoadStdPalAt(u16 offset);
+void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *src, TaskFunc callback);
+void DisplayYesNoMenuDefaultYes(void);
+void DisplayYesNoMenuDefaultNo(void);
+u8 GetTextSpeedSetting(void);
+u8 sub_80F78E0(u8 height);
+u8 GetStartMenuWindowId(void);
+void RemoveStartMenuWindow(void);
+u16 GetStdWindowBaseTileNum(void);
+void sub_80F7974(const u8 * text);
+void sub_80F7998(void);
+void sub_80F79A4(void);
+void SetDefaultFontsPointer(void);
#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/overworld.h b/include/overworld.h
index 5c4235b8c..9a9657006 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -2,7 +2,6 @@
#define GUARD_ROM4_H
#include "global.h"
-
#include "main.h"
struct UnkPlayerStruct
@@ -31,6 +30,8 @@ extern MainCallback gFieldCallback;
extern struct WarpData gUnknown_2031DBC;
+extern u8 gUnknown_2031DE0;
+
void IncrementGameStat(u8 index);
void Overworld_SetMapObjTemplateCoords(u8, s16, s16);
@@ -59,7 +60,7 @@ void Overworld_SetSavedMusic(u16);
void Overworld_ChangeMusicToDefault(void);
void Overworld_ChangeMusicTo(u16);
-bool32 is_c1_link_related_active(void);
+bool32 IsUpdateLinkStateCBActive(void);
void strange_npc_table_clear(void);
const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16);
@@ -67,8 +68,8 @@ void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
void sub_8086230(void);
void CB2_ReturnToField(void);
bool32 sub_8087598(void);
-void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
-void warp_in(void);
+void CB2_ReturnToFieldContinueScriptPlayMapMusic(void);
+void WarpIntoMap(void);
u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
void sub_8086194(void);
void sub_8084CCC(u8 spawn);
@@ -77,14 +78,15 @@ void c2_load_new_map(void);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
void mapldr_default(void);
-u32 GetGameStat(u8);
+u32 GetGameStat(u8 statId);
+u32 SetGameStat(u8 statId, u32 value);
-void sub_8056938(void);
+void CB2_ContinueSavedGame(void);
void sub_8055D5C(struct WarpData *);
void sub_80572A8(void);
void sub_805726C(void);
void sub_8057430(void);
-void sub_8055DC4(void);
+void Overworld_PlaySpecialMapMusic(void);
u8 GetCurrentRegionMapSectionId(void);
@@ -103,12 +105,17 @@ extern bool8 (* gFieldCallback2)(void);
void SetLastHealLocationWarp(u8 healLocaionId);
void sub_8055864(u8 mapGroup, u8 mapNum);
+void CB2_Overworld(void);
void CB2_NewGame(void);
bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType);
void Overworld_ResetStateAfterTeleport(void);
void Overworld_FadeOutMapMusic(void);
-void sub_805671C(void);
+void CB2_LoadMap(void);
bool8 sub_8055FC4(void);
+bool8 is_light_level_8_or_9(u8 mapType);
+bool32 sub_8055C9C(void);
+void Overworld_ResetStateAfterDigEscRope(void);
+bool32 sub_8058244(void);
#endif //GUARD_ROM4_H
diff --git a/include/palette.h b/include/palette.h
index 31c8ffefe..06b9b1f6f 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -43,7 +43,7 @@ struct PaletteFadeControl
extern struct PaletteFadeControl gPaletteFade;
extern u32 gPlttBufferTransferPending;
-extern u8 gPaletteDecompressionBuffer[];
+extern u8 *gUnknown_203AAB0;
extern u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE];
extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE];
diff --git a/include/party_menu.h b/include/party_menu.h
index 34b375e42..e4fc182e9 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -13,6 +13,23 @@ enum {
AILMENT_BRN
};
+struct Struct203B0A0
+{
+ MainCallback exitCallback;
+ TaskFunc unk4;
+ u8 unk8_0:4;
+ u8 mode:2;
+ u8 unk8_2:2;
+ s8 unk9;
+ s8 unkA;
+ u8 unkB;
+ u16 unkC;
+ s16 unkE;
+ s16 unk10;
+};
+
+extern struct Struct203B0A0 gUnknown_203B0A0;
+
extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func);
bool8 FieldCallback_PrepareFadeInFromMenu(void);
@@ -27,5 +44,23 @@ void sub_8126EDC(void);
void c2_8123744(void);
u8 GetCursorSelectionMonId(void);
void sub_8128370(void);
+void sub_811F818(u8 monId, u8 a1);
+void sub_8121D0C(u8);
+void sub_811FB28(u8 taskId);
+void sub_8120760(u8 taskId, u8 a1, s8 a2, s16 amount, TaskFunc followupFunc);
+void GetMonNickname(const struct Pokemon * mon, u8 * dest);
+void sub_81202F8(const u8 * src, u8 a1);
+bool8 sub_8120370(void);
+void PartyMenuInit(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback);
+void sub_81252D0(u8 taskId, TaskFunc followUpFunc);
+void ItemUseCB_PpRestore(u8 taskId, TaskFunc followUpFunc);
+void dp05_pp_up(u8 taskId, TaskFunc followUpFunc);
+void dp05_rare_candy(u8 taskId, TaskFunc followUpFunc);
+void sub_8126B60(u8 taskId, TaskFunc followUpFunc);
+void sub_8126894(u8 taskId, TaskFunc followUpFunc);
+void sub_81279E0(void);
+void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc);
+u8 GetItemEffectType(u16 itemId);
+u8 pokemon_order_func(u8);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pc_screen_effect.h b/include/pc_screen_effect.h
new file mode 100644
index 000000000..6d68de2d3
--- /dev/null
+++ b/include/pc_screen_effect.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_PC_SCREEN_EFFECT_H
+#define GUARD_PC_SCREEN_EFFECT_H
+
+void sub_80A0A48(u16, u16, u8);
+void sub_80A0A70(u16, u16, u8);
+bool8 sub_80A0AAC(void);
+bool8 sub_80A0A98(void);
+
+#endif //GUARD_PC_SCREEN_EFFECT_H
diff --git a/include/pokedex.h b/include/pokedex.h
index b389bf821..c4ec27e0b 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -7,7 +7,8 @@ void ResetPokedex(void);
void CopyMonCategoryText(u16 species, u8 *dst);
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
u16 GetNationalPokedexCount(u8);
-u16 GetHoennPokedexCount(u8);
+u16 GetKantoPokedexCount(u8);
+bool16 HasAllKantoMons(void);
u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
enum
diff --git a/include/pokemon.h b/include/pokemon.h
index a6dd9931b..9dd5850b4 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -2,6 +2,7 @@
#define GUARD_POKEMON_H
#include "global.h"
+#include "sprite.h"
#define MON_DATA_PERSONALITY 0
#define MON_DATA_OT_ID 1
@@ -109,6 +110,16 @@
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
+#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0
+#define FRIENDSHIP_EVENT_VITAMIN 0x1
+#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2
+#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3
+#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4
+#define FRIENDSHIP_EVENT_WALKING 0x5
+#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6
+#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7
+#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8
+
#define TYPE_NORMAL 0x00
#define TYPE_FIGHTING 0x01
#define TYPE_FLYING 0x02
@@ -425,8 +436,7 @@ struct BaseStats
/* 0x13 */ u8 growthRate;
/* 0x14 */ u8 eggGroup1;
/* 0x15 */ u8 eggGroup2;
- /* 0x16 */ u8 ability1;
- /* 0x17 */ u8 ability2;
+ /* 0x16 */ u8 abilities[2];
/* 0x18 */ u8 safariZoneFleeRate;
/* 0x19 */ u8 bodyColor : 7;
u8 noFlip : 1;
@@ -530,11 +540,6 @@ extern const u16 *const gLevelUpLearnsets[];
extern const u8 gFacilityClassToPicIndex[];
extern const u8 gFacilityClassToTrainerClass[];
-u8 CountAliveMons(u8 caseId);
-#define BATTLE_ALIVE_EXCEPT_ACTIVE 0
-#define BATTLE_ALIVE_ATK_SIDE 1
-#define BATTLE_ALIVE_DEF_SIDE 2
-
void ZeroBoxMonData(struct BoxPokemon *boxMon);
void ZeroMonData(struct Pokemon *mon);
void ZeroPlayerPartyMons(void);
@@ -545,30 +550,32 @@ void CreateMonWithNature(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV,
void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 gender, u8 nature, u8 unownLetter);
void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level);
void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality);
-void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId);
void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread);
-u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
+void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src);
+void sub_803E23C(struct Pokemon *mon, struct BattleTowerPokemon *dest);
void CalculateMonStats(struct Pokemon *mon);
-u8 GetLevelFromMonExp(struct Pokemon *mon);
+void BoxMonToMon(struct BoxPokemon *src, struct Pokemon *dest);
u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon);
u16 GiveMoveToMon(struct Pokemon *mon, u16 move);
-u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move);
-void MonRestorePP(struct Pokemon *mon);
void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot);
void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot);
-void GiveMonInitialMoveset(struct Pokemon *mon);
-void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon);
+u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove);
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move);
-void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
-bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
-bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
+s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 battlerIdAtk, u8 battlerIdDef);
+
+#define BATTLE_ALIVE_EXCEPT_ACTIVE 0
+#define BATTLE_ALIVE_ATK_SIDE 1
+#define BATTLE_ALIVE_DEF_SIDE 2
+
+u8 CountAliveMonsInBattle(u8 caseId);
+u8 GetDefaultMoveTarget(u8 battlerId);
u8 GetMonGender(struct Pokemon *mon);
u8 GetBoxMonGender(struct BoxPokemon *boxMon);
u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
-void EncryptBoxMon(struct BoxPokemon *boxMon);
-void DecryptBoxMon(struct BoxPokemon *boxMon);
+void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition);
+void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition);
// These are full type signatures for GetMonData() and GetBoxMonData(),
// but they are not used since some code erroneously omits the third arg.
@@ -583,99 +590,81 @@ u32 GetMonData();
u32 GetBoxMonData();
#endif // IS_POKEMON_C
-void SetMonData(struct Pokemon *mon, s32 field, const void *data);
-void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *data);
+void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg);
+void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg);
void CopyMon(void *dest, void *src, size_t size);
u8 GiveMonToPlayer(struct Pokemon *mon);
-u8 SendMonToPC(struct Pokemon *mon);
u8 CalculatePlayerPartyCount(void);
u8 CalculateEnemyPartyCount(void);
-
+u8 GetMonsStateToDoubles(void);
u8 GetAbilityBySpecies(u16 species, bool8 altAbility);
u8 GetMonAbility(struct Pokemon *mon);
-void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord);
u8 GetSecretBaseTrainerPicIndex(void);
u8 GetSecretBaseTrainerNameIndex(void);
bool8 IsPlayerPartyAndPokemonStorageFull(void);
-bool8 IsPokemonStorageFull(void);
void GetSpeciesName(u8 *name, u16 species);
u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex);
void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex);
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex);
-void CopyPlayerPartyMonToBattleData(u8 battleIndex, u8 partyIndex);
-
+bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
+bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
+bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
+u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
+const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId);
u8 GetNature(struct Pokemon *mon);
-u8 GetNatureFromPersonality(u32 personality);
-
-u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex);
-
-void MonRestorePP(struct Pokemon *);
-void BoxMonRestorePP(struct BoxPokemon *);
-
+u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem);
u16 NationalPokedexNumToSpecies(u16 nationalNum);
-u16 NationalToHoennOrder(u16);
-u16 SpeciesToNationalPokedexNum(u16);
-u16 HoennToNationalOrder(u16);
+u16 SpeciesToNationalPokedexNum(u16 species);
+u16 HoennToNationalOrder(u16 hoennNum);
u16 SpeciesToCryId(u16 species);
-void DrawSpindaSpots(u16, u32, u8 *, u8);
-void AdjustFriendship(struct Pokemon *, u8);
-u8 CheckPartyHasHadPokerus(struct Pokemon *, u8);
-void UpdatePartyPokerusTime(u16);
-u32 CanMonLearnTMHM(struct Pokemon *, u8);
-u32 CanSpeciesLearnTMHM(u16 species, u8 tm);
+void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4);
+void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
+bool8 sub_80435E0(void);
+bool8 GetLinkTrainerFlankId(u8 linkPlayerId);
+s32 GetBankMultiplayerId(u16 a1);
+u8 GetTrainerEncounterMusicId(u16 trainer);
+void AdjustFriendship(struct Pokemon *mon, u8 event);
+void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
+u16 GetMonEVCount(struct Pokemon *mon);
+void sub_8043A68(void);
+u8 CheckPartyPokerus(struct Pokemon *party, u8 selection);
+u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection);
+void sub_8043B40(void);
+bool8 TryIncrementMonLevel(struct Pokemon *mon);
+u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm);
u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
+u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
+u8 GetNumberOfRelearnableMoves(struct Pokemon *mon);
+u16 sub_8043F90(u16 species);
void ClearBattleMonForms(void);
-const u8 *GetMonFrontSpritePal(struct Pokemon *mon);
-const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16, u32, u32);
-const struct CompressedSpritePalette *sub_80409C8(u16, u32, u32);
-bool8 IsOtherTrainer(u32, u8 *);
-void SetWildMonHeldItem(void);
-u16 GetMonEVCount(struct Pokemon *);
-
-const struct CompressedSpritePalette *sub_806E794(struct Pokemon *mon);
+void PlayBattleBGM(void);
+void PlayMapChosenOrBattleBGM(u16 songId);
+const u32 *GetMonFrontSpritePal(struct Pokemon *mon);
+const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality);
const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon);
const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality);
bool32 IsHMMove2(u16 move);
bool8 IsPokeSpriteNotFlipped(u16 species);
-bool8 IsMonShiny(struct Pokemon *mon);
-bool8 IsShinyOtIdPersonality(u32 otId, u32 personality);
-
-void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
+s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor);
bool8 IsTradedMon(struct Pokemon *mon);
+bool8 IsOtherTrainer(u32 otId, u8 *otName);
+void MonRestorePP(struct Pokemon *mon);
+void BoxMonRestorePP(struct BoxPokemon *boxMon);
+void sub_8044348(void);
+void SetWildMonHeldItem(void);
+bool8 IsMonShiny(struct Pokemon *mon);
+u8 *GetTrainerPartnerName(void);
+u8 GetPlayerPartyHighestLevel(void);
+u16 FacilityClassToPicIndex(u16 facilityClass);
+bool8 sub_804455C(u8 caseId, u8 battlerId);
+void SetDeoxysStats(void);
+u16 sub_80447AC(void);
+u16 sub_80447F0(void);
+void CreateObedientEnemyMon(void);
void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality);
-s32 GetBankMultiplayerId(u16 a1);
-bool16 sub_806D82C(u8 id);
-u16 MonTryLearningNewMove(struct Pokemon* mon, bool8);
-void sub_8068AA4(void); // sets stats for deoxys
-bool8 HasTwoFramesAnimation(u16 species);
-u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem);
-void RandomlyGivePartyPokerus(struct Pokemon *party);
-u8 CheckPartyPokerus(struct Pokemon *party, u8 selection);
-u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection);
-void UpdatePartyPokerusTime(u16 days);
-void PartySpreadPokerus(struct Pokemon *party);
-s8 GetMonFlavorRelation(struct Pokemon *mon, u8 a2);
-s8 GetFlavorRelationByPersonality(u32 personality, u8 a2);
-u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
-u8 GetDefaultMoveTarget(u8 atkBank);
-u16 PlayerGenderToFrontTrainerPicId(u8 playerGender);
-void sub_806A1C0(u16 arg0, u8 bankIdentity);
-void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity);
-u8 GetSecretBaseTrainerPicIndex(void);
-bool8 TryIncrementMonLevel(struct Pokemon *mon);
-void BoxMonToMon(struct BoxPokemon *srcMon, struct Pokemon *dstMon);
-u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
-bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battlerId);
-
-#include "sprite.h"
-
-void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
-void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
-void BattleAnimateBackSprite(struct Sprite* sprite, u16 species);
-
-void PlayMapChosenOrBattleBGM(u16 songId);
-u8 GetMonsStateToDoubles(void);
-void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src);
-void SetMultiuseSpriteTemplateToPokemon(u16 trainerSpriteId, u8 battlerPosition);
+bool8 CheckBattleTypeGhost(struct Pokemon *mon, u8 bank);
+struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 enable);
+void OakSpeechNidoranFFreeResources(void);
+void *OakSpeechNidoranFGetBuffer(u8 bufferId);
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_3.h b/include/pokemon_3.h
deleted file mode 100644
index e65bc85fc..000000000
--- a/include/pokemon_3.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef GUARD_POKEMON_3_H
-#define GUARD_POKEMON_3_H
-
-#include "global.h"
-
-const u8* GetTrainerClassNameFromId(u16 trainerId);
-const u8* GetTrainerNameFromId(u16 trainerId);
-void * SetUpMonSpriteManagerMaybe(u8, u8);
-void sub_8044D80(void);
-void * sub_8044E00(u8 buffId);
-
-#endif // GUARD_POKEMON_3_H
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 593715b7d..cd8c798f9 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -15,5 +15,6 @@ void FreeMonIconPalettes(void);
u16 sub_8096FD4(u16);
u8 sub_8096ECC(u16, void (*)(struct Sprite *), s16, s16, u8, bool32);
void sub_8097070(struct Sprite *);
+u16 GetUnownLetterByPersonality(u32 personality);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index f2fbe85a7..8ab9e5f0e 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -14,5 +14,6 @@ u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request);
void sub_808BCB4(u8 boxId, u8 monPosition);
u8 * GetBoxNamePtr(u8 boxId);
void sub_808CE60(void);
+u8 StorageGetCurrentBox(void);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/include/quest_log.h b/include/quest_log.h
index aca3e5fe8..858ea593a 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -27,6 +27,11 @@ void sub_8115748(u16);
u8 sub_8112CAC(void);
bool8 sub_81119D4(void (*func)(void));
void sub_8111F38(u16, u16);
+void sub_8111134(void);
+void sub_8112EDC(u8 a0);
+u8 sub_8112EB4(void);
+void sub_8113018(const u8 * text, u8 mode);
+void MapNamePopupWindowIdSetDummy(void);
extern u8 gUnknown_203ADFA;
diff --git a/include/region_map.h b/include/region_map.h
index ea8a8130e..394fee469 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -95,5 +95,6 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
u8 *GetMapName(u8 *, u16, u16);
bool32 sub_8124668(u8 mapSecId);
void sub_80C4DF8(u8 *, u8);
+void sub_80BFF50(u8 a0, void (*a1)(void));
#endif //GUARD_REGION_MAP_H
diff --git a/include/reset_save_heap.h b/include/reset_save_heap.h
new file mode 100644
index 000000000..8cb038906
--- /dev/null
+++ b/include/reset_save_heap.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_RESET_SAVE_HEAP_H
+#define GUARD_RESET_SAVE_HEAP_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+void sub_8079B7C(void);
+
+#endif //GUARD_RESET_SAVE_HEAP_H
+
diff --git a/include/safari_zone.h b/include/safari_zone.h
index b20555a8c..feaa93ed0 100644
--- a/include/safari_zone.h
+++ b/include/safari_zone.h
@@ -4,6 +4,7 @@
#include "global.h"
extern u8 gNumSafariBalls;
+extern u16 gSafariZoneStepCounter;
bool32 GetSafariZoneFlag(void);
void SetSafariZoneFlag(void);
@@ -15,7 +16,4 @@ void ExitSafariMode(void);
bool8 SafariZoneTakeStep(void);
void SafariZoneRetirePrompt(void);
-struct Pokeblock *SafariZoneGetActivePokeblock(void);
-void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index);
-
#endif // GUARD_SAFARI_ZONE_H
diff --git a/include/save.h b/include/save.h
index f547230b9..7a74373c8 100644
--- a/include/save.h
+++ b/include/save.h
@@ -121,7 +121,7 @@ u8 Save_LoadGameData(u8 a1);
u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
u32 sub_8153634(u8 sector, u8* src);
void sub_8153688(u8 taskId);
-u32 sub_80DA5E0(u8 sector, u8* src);
+u32 TryWriteSpecialSaveSection(u8 sector, u8* src);
void sub_80DA634(u8 taskId);
#endif // GUARD_SAVE_H
diff --git a/include/save_location.h b/include/save_location.h
index 69b39ea53..4e01c64e4 100644
--- a/include/save_location.h
+++ b/include/save_location.h
@@ -1,11 +1,15 @@
#ifndef GUARD_SAVE_LOCATION_H
#define GUARD_SAVE_LOCATION_H
-#include "global.h"
+// specialSaveWarp flags
+#define CONTINUE_GAME_WARP (1 << 0)
+#define POKECENTER_SAVEWARP (1 << 1)
+#define LOBBY_SAVEWARP (1 << 2)
+#define UNK_SPECIAL_SAVE_WARP_FLAG_3 (1 << 3)
-bool32 sub_81AFCEC(void);
void TrySetMapSaveWarpStatus(void);
-void sub_81AFDA0(void);
-void sub_81AFDD0(void);
+bool32 IsCurMapPokeCenter(void);
+void sub_810B810(void);
+void sub_810B82C(void);
-#endif // GUARD_SAVE_LOCATION_H
+#endif // GUARD_SAVE_LOCATION_H \ No newline at end of file
diff --git a/include/script.h b/include/script.h
index 8ffbe1563..4e8b8c305 100644
--- a/include/script.h
+++ b/include/script.h
@@ -72,6 +72,7 @@ void sub_80699A4(void);
void sub_8069970(void);
void sub_8069A20(void);
void sub_8069A2C(void);
+bool8 IsMsgSignPost(void);
extern const u8 *gRAMScriptPtr;
diff --git a/include/script_menu.h b/include/script_menu.h
index f82b061a5..c1e32beae 100644
--- a/include/script_menu.h
+++ b/include/script_menu.h
@@ -10,6 +10,9 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 va
bool8 ScriptMenu_YesNo(u8 var1, u8 var2);
bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount);
bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3);
+bool32 ScrSpecial_CreatePCMenu(void);
+void ScriptMenu_DisplayPCStartupPrompt(void);
+
bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void);
void sub_809D6D4(void);
diff --git a/include/shop.h b/include/shop.h
index 05f5160e6..481fd6c76 100644
--- a/include/shop.h
+++ b/include/shop.h
@@ -2,6 +2,7 @@
#define GUARD_SHOP_H
#include "global.h"
+#include "menu_helpers.h"
extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3];
@@ -9,5 +10,15 @@ void CreatePokemartMenu(const u16 *);
void CreateDecorationShop1Menu(const u16 *);
void CreateDecorationShop2Menu(const u16 *);
void sub_809C09C(u16, u16, u8);
+u8 sub_809B56C(void);
+
+// buy_menu_helper
+void BuyMenuInitWindows(bool32 isSellingTM);
+void BuyMenuDrawMoneyBox(void);
+void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 color);
+void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback);
+void BuyMenuQuantityBoxNormalBorder(u8 windowId, bool8 copyToVram);
+void BuyMenuQuantityBoxThinBorder(u8 windowId, bool8 copyToVram);
+void BuyMenuConfirmPurchase(u8 taskId, const struct YesNoFuncTable *yesNo);
#endif // GUARD_SHOP_H
diff --git a/include/sound.h b/include/sound.h
index e720fc1a2..e5736fad8 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -12,7 +12,6 @@ void StopMapMusic(void);
void FadeOutMapMusic(u8 speed);
void FadeOutAndPlayNewMapMusic(u16 songNum, u8 speed);
void FadeOutAndFadeInNewMapMusic(u16 songNum, u8 fadeOutSpeed, u8 fadeInSpeed);
-void FadeInNewMapMusic(u16 songNum, u8 speed);
bool8 IsNotWaitingForBGMStop(void);
void PlayFanfareByFanfareNum(u8 fanfareNum);
bool8 WaitFanfare(bool8 stop);
diff --git a/include/sprite.h b/include/sprite.h
index bc47f7100..27e5dc852 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -4,28 +4,30 @@
#include "global.h"
#define MAX_SPRITES 64
+#define SPRITE_INVALID_TAG 0xFFFF
struct SpriteSheet
{
- const u8 *data; // Raw uncompressed pixel data
+ const void *data; // Raw uncompressed pixel data
u16 size;
u16 tag;
};
struct CompressedSpriteSheet
{
- const u8 *data; // LZ77 compressed pixel data
+ const u32 *data; // LZ77 compressed pixel data
u16 size; // Uncompressed size of pixel data
u16 tag;
};
struct SpriteFrameImage
{
- const u8 *data;
+ const void *data;
u16 size;
};
#define obj_frame_tiles(ptr) {.data = (u8 *)ptr, .size = sizeof ptr}
+#define overworld_frame(ptr, width, height, frame) {.data = (u8 *)ptr + (width * height * frame * 64)/2, .size = (width * height * 64)/2}
struct SpritePalette
{
@@ -35,7 +37,7 @@ struct SpritePalette
struct CompressedSpritePalette
{
- const u8 *data; // LZ77 compressed palette data
+ const u32 *data; // LZ77 compressed palette data
u16 tag;
};
@@ -102,6 +104,12 @@ struct AffineAnimJumpCmd
u16 target;
};
+struct AffineAnimEndCmdAlt
+{
+ s16 type;
+ u16 val;
+};
+
union AffineAnimCmd
{
s16 type;
@@ -126,6 +134,8 @@ union AffineAnimCmd
{.loop = {.type = AFFINEANIMCMDTYPE_LOOP, .count = _count}}
#define AFFINEANIMCMD_JUMP(_target) \
{.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}}
+#define AFFINEANIMCMD_END_ALT(_val) \
+ {.end = {.type = AFFINEANIMCMDTYPE_END, .val = _val}}
struct AffineAnimState
{
@@ -163,6 +173,8 @@ struct SubspriteTable
struct Sprite;
+typedef void (*SpriteCallback)(struct Sprite *);
+
struct SpriteTemplate
{
u16 tileTag;
@@ -171,7 +183,7 @@ struct SpriteTemplate
const union AnimCmd *const *anims;
const struct SpriteFrameImage *images;
const union AffineAnimCmd *const *affineAnims;
- void (*callback)(struct Sprite *);
+ SpriteCallback callback;
};
struct Sprite
@@ -182,7 +194,7 @@ struct Sprite
/*0x10*/ const union AffineAnimCmd *const *affineAnims;
/*0x14*/ const struct SpriteTemplate *template;
/*0x18*/ const struct SubspriteTable *subspriteTables;
- /*0x1C*/ void (*callback)(struct Sprite *);
+ /*0x1C*/ SpriteCallback callback;
/*0x20*/ struct Coords16 pos1;
/*0x24*/ struct Coords16 pos2;
@@ -237,7 +249,7 @@ extern const union AnimCmd *const gDummySpriteAnimTable[];
extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
extern s16 gSpriteCoordOffsetX;
extern s16 gSpriteCoordOffsetY;
-
+extern const struct SpriteTemplate gDummySpriteTemplate;
extern struct Sprite gSprites[];
void ResetSpriteData(void);
@@ -300,5 +312,6 @@ void CopyFromSprites(u8 *dest);
u8 SpriteTileAllocBitmapOp(u16 bit, u8 op);
void ClearSpriteCopyRequests(void);
void ResetAffineAnimData(void);
+void sub_8007FFC(struct Sprite* sprite, s16 a2, s16 a3);
#endif //GUARD_SPRITE_H
diff --git a/include/strings.h b/include/strings.h
index 6af1b0d69..85b67ed57 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -91,6 +91,7 @@ extern const u8 gText_PkmnFainted3[];
extern const u8 gText_Coins[];
extern const u8 gText_EggNickname[];
extern const u8 gText_Pokemon[];
+extern const u8 gText_PkmnFainted3[];
extern const u8 gOtherText_Use[];
extern const u8 gOtherText_Give[];
@@ -113,6 +114,93 @@ extern const u8 gText_ICanPayThisMuch_WouldThatBeOkay[];
extern const u8 gText_TurnedOverItemsWorthYen[];
extern const u8 gPokeDudeText_TMTypes[];
extern const u8 gPokeDudeText_ReadTMDescription[];
-extern const u16 gTMCaseMainWindowPalette[];
+extern const u8 gFameCheckerText_Cancel[];
+
+// teachy_tv
+extern const u8 gTeachyTvString_TeachBattle[];
+extern const u8 gTeachyTvString_StatusProblems[];
+extern const u8 gTeachyTvString_TypeMatchups[];
+extern const u8 gTeachyTvString_CatchPkmn[];
+extern const u8 gTeachyTvString_AboutTMs[];
+extern const u8 gTeachyTvString_RegisterItem[];
+extern const u8 gTeachyTvString_Cancel[];
+extern const u8 gTeachyTvText_PokeDudeSaysHello[];
+extern const u8 gTeachyTvText_BattleScript1[];
+extern const u8 gTeachyTvText_StatusScript1[];
+extern const u8 gTeachyTvText_MatchupsScript1[];
+extern const u8 gTeachyTvText_CatchingScript1[];
+extern const u8 gTeachyTvText_TMsScript1[];
+extern const u8 gTeachyTvText_RegisterScript1[];
+extern const u8 gTeachyTvText_BattleScript2[];
+extern const u8 gTeachyTvText_StatusScript2[];
+extern const u8 gTeachyTvText_MatchupsScript2[];
+extern const u8 gTeachyTvText_CatchingScript2[];
+extern const u8 gTeachyTvText_TMsScript2[];
+extern const u8 gTeachyTvText_RegisterScript2[];
+
+// help_system_812B1E0
+extern const u8 gUnknown_841DFA5[];
+extern const u8 gUnknown_841DFAC[];
+extern const u8 gUnknown_841DFBE[];
+extern const u8 gUnknown_841DFC9[];
+
+// help_system
+extern const u8 gString_Bill[];
+extern const u8 gString_Someone[];
+extern const u8 gString_Help[];
+extern const u8 gString_HelpSystem_ClearTo8[];
+
+extern const u8 gOtherText_Give[];
+extern const u8 gFameCheckerText_Cancel[];
+extern const u8 gOtherText_StrVar1[];
+extern const u8 gOtherText_WhereShouldTheStrVar1BePlaced[];
+extern const u8 gOtherText_Powder[];
+extern const u8 gText_NoMoreRoomInBag[];
+extern const u8 gText_WithdrawHowMany[];
+extern const u8 gText_WithdrewQuantItem[];
+extern const u8 gText_WithdrawItem[];
+extern const u8 gText_Withdraw[];
+extern const u8 gText_ReturnToPC[];
+
+extern const u8 gUnknown_8416425[];
+extern const u8 gUnknown_8416451[];
+extern const u8 gUnknown_8416537[];
+extern const u8 gUnknown_841658C[];
+extern const u8 gUnknown_841659E[];
+extern const u8 gUnknown_84165D2[];
+extern const u8 gUnknown_8416600[];
+extern const u8 gUnknown_8416631[];
+extern const u8 gUnknown_8416644[];
+extern const u8 gUnknown_841665C[];
+extern const u8 gUnknown_8416690[];
+extern const u8 gUnknown_84166A7[];
+extern const u8 gUnknown_84169DC[];
+extern const u8 gUnknown_841623D[];
+extern const u8 gUnknown_84162BD[];
+extern const u8 gUnknown_841D148[];
+
+// pokemon.c
+extern const u8 BattleText_Rose[];
+extern const u8 BattleText_UnknownString3[];
+extern const u8 BattleText_GetPumped[];
+extern const u8 BattleText_MistShroud[];
+extern const u8 gText_EggNickname[];
+extern const u8 gText_BadEgg[];
+extern const u8 gText_PkmnsXPreventsSwitching[];
+extern u8 *gUnknown_83FD5D0[];
+
+// diploma
+extern const u8 gUnknown_841B60E[];
+extern const u8 gUnknown_841B619[];
+extern const u8 gUnknown_841B684[];
+extern const u8 gUnknown_841B68F[];
+extern const u8 gUnknown_841B698[];
+
+// battle_records
+extern const u8 gString_BattleRecords_PlayersBattleResults[];
+extern const u8 gString_BattleRecords_TotalRecord[];
+extern const u8 gString_BattleRecords_ColumnHeaders[];
+extern const u8 gString_BattleRecords_7Dashes[];
+extern const u8 gString_BattleRecords_4Dashes[];
#endif //GUARD_STRINGS_H
diff --git a/include/task.h b/include/task.h
index cd3deb544..834bb5655 100644
--- a/include/task.h
+++ b/include/task.h
@@ -4,6 +4,7 @@
#include "global.h"
#define NUM_TASKS 16
+#define TASK_NONE 0xFF
typedef void (*TaskFunc)(u8 taskId);
diff --git a/include/teachy_tv.h b/include/teachy_tv.h
index 374780c04..36bac6a67 100644
--- a/include/teachy_tv.h
+++ b/include/teachy_tv.h
@@ -1,7 +1,8 @@
#ifndef GUARD_TEACHY_TV_H
#define GUARD_TEACHY_TV_H
+void InitTeachyTvController(u8 mode, void (*cb)());
void CB2_ReturnToTeachyTV(void);
-void sub_815AC20(void);
+void SetTeachyTvControllerModeToResume(void);
#endif //GUARD_TEACHY_TV_H
diff --git a/include/text.h b/include/text.h
index e0533cc98..07f6b29c2 100644
--- a/include/text.h
+++ b/include/text.h
@@ -68,7 +68,8 @@
#define CHAR_y 0xED
#define CHAR_z 0xEE
#define CHAR_SPECIAL_F7 0xF7
-#define CHAR_SPECIAL_F9 0xF9
+#define CHAR_KEYPAD_ICON 0xF8
+#define CHAR_EXTRA_EMOJI 0xF9
#define CHAR_COLON 0xF0
#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog
#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog
@@ -90,6 +91,18 @@
#define TEXT_SPEED_FF 0xFF
+enum
+{
+ FONTATTR_MAX_LETTER_WIDTH,
+ FONTATTR_MAX_LETTER_HEIGHT,
+ FONTATTR_LETTER_SPACING,
+ FONTATTR_LINE_SPACING,
+ FONTATTR_UNKNOWN, // dunno what this is yet
+ FONTATTR_COLOR_FOREGROUND,
+ FONTATTR_COLOR_BACKGROUND,
+ FONTATTR_COLOR_SHADOW
+};
+
struct TextPrinterSubStruct
{
u8 font_type:4; // 0x14
@@ -192,6 +205,8 @@ extern u8 gStringVar2[];
extern u8 gStringVar3[];
extern u8 gStringVar4[];
+extern const u8 gKeypadIconTiles[];
+
void SetFontsPointer(const struct FontInfo *fonts);
void DeactivateAllTextPrinters(void);
u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
@@ -215,6 +230,7 @@ u16 Font4Func(struct TextPrinter *textPrinter);
u16 Font5Func(struct TextPrinter *textPrinter);
u16 Font7Func(struct TextPrinter *textPrinter);
u16 Font8Func(struct TextPrinter *textPrinter);
+u16 Font6Func(struct TextPrinter *textPrinter);
void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter);
void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter);
@@ -248,6 +264,7 @@ s32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont9(u16 glyphId);
s32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese);
s32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese);
+void DecompressGlyphFont5(u16 glyphId, bool32 isJapanese);
s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese);
void sub_80062B0(struct Sprite *sprite);
u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority);
diff --git a/include/text_window.h b/include/text_window.h
index c384ca1bb..c1463a9c7 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -20,11 +20,14 @@ void rbox_fill_rectangle(u8 windowId);
const u16* stdpal_get(u8 id);
const u16* GetOverworldTextboxPalettePtr(void);
void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset);
-void sub_814FEAC(u8 windowId, u16 tileStart, u8 palette);
-void sub_814FF2C(u8 windowId, u16 tileStart, u8 palette);
-void sub_815001C(u8 windowId, u16 tileStart, u8 palette);
+void TextWindow_LoadResourcesStdFrame0(u8 windowId, u16 tileStart, u8 palette);
+void TextWindow_SetStdFrame0_WithPal(u8 windowId, u16 tileStart, u8 palette);
+void TextWindow_SetUserSelectedFrame(u8 windowId, u16 tileStart, u8 palette);
void LoadUserWindowBorderGfx(u8 windowId, u16 tileStart, u8 palette);
void sub_814FDA0(u8 windowId, u16 tileStart, u8 palette);
void DrawTextBorderOuter(u8 windowId, u16 tileStart, u8 palette);
+void TextWindow_LoadTilesStdFrame1(u8 windowId, u16 destOffset);
+void sub_814FE6C(u8 windowId, u16 destOffset, u8 palIdx);
+void sub_814FEEC(u8 windowId, u16 destOffset, u8 palIdx);
#endif // GUARD_TEXT_WINDOW_H
diff --git a/include/text_window_graphics.h b/include/text_window_graphics.h
index 5fa78d955..17e919705 100644
--- a/include/text_window_graphics.h
+++ b/include/text_window_graphics.h
@@ -8,11 +8,11 @@ struct TextWindowGraphics
};
extern const u16 gUnknown_8470B0C[];
-extern const u16 gUnknown_8471A4C[];
-extern const u16 gUnknown_8471B6C[];
+extern const u16 gStdFrame0[];
+extern const u16 gStdFrame1[];
extern const u16 gUnknown_8471DEC[][16];
-extern const struct TextWindowGraphics gUnknown_8471E8C[];
+extern const struct TextWindowGraphics gUserFrames[];
const struct TextWindowGraphics * sub_8069788(u8 idx);
diff --git a/include/trainer_card.h b/include/trainer_card.h
new file mode 100644
index 000000000..e8531cef5
--- /dev/null
+++ b/include/trainer_card.h
@@ -0,0 +1,43 @@
+#ifndef GUARD_TRAINER_CARD_H
+#define GUARD_TRAINER_CARD_H
+
+struct TrainerCard
+{
+ /*0x00*/ u8 gender;
+ /*0x01*/ u8 stars;
+ /*0x02*/ bool8 hasPokedex;
+ /*0x03*/ bool8 caughtAllHoenn;
+ /*0x04*/ bool8 hasAllPaintings;
+ /*0x06*/ u16 hofDebutHours;
+ /*0x08*/ u16 hofDebutMinutes;
+ /*0x0A*/ u16 hofDebutSeconds;
+ /*0x0C*/ u16 caughtMonsCount;
+ /*0x0E*/ u16 trainerId;
+ /*0x10*/ u16 playTimeHours;
+ /*0x12*/ u16 playTimeMinutes;
+ /*0x14*/ u16 linkBattleWins;
+ /*0x16*/ u16 linkBattleLosses;
+ /*0x18*/ u16 battleTowerWins;
+ /*0x1A*/ u16 battleTowerStraightWins;
+ /*0x1C*/ u16 contestsWithFriends;
+ /*0x1E*/ u16 pokeblocksWithFriends;
+ /*0x20*/ u16 pokemonTrades;
+ /*0x24*/ u32 money;
+ /*0x28*/ u16 var_28[4];
+ /*0x30*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
+ /*0x38*/ u8 version;
+ /*0x3A*/ u16 var_3A;
+ /*0x3C*/ u32 berryCrushPoints;
+ /*0x40*/ u32 unionRoomNum;
+ /*0x44*/ u8 filler44[0x8];
+ /*0x4C*/ u8 var_4C;
+ /*0x4D*/ u8 var_4D;
+ /*0x4E*/ u8 var_4E;
+ /*0x4F*/ u8 var_4F;
+ /*0x50*/ u8 var_50[0x4];
+ /*0x54*/ u16 monSpecies[PARTY_SIZE];
+};
+
+extern struct TrainerCard gTrainerCards[4];
+
+#endif //GUARD_TRAINER_CARD_H
diff --git a/include/trainer_tower.h b/include/trainer_tower.h
new file mode 100644
index 000000000..b9c16d958
--- /dev/null
+++ b/include/trainer_tower.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_TRAINER_TOWER_H
+#define GUARD_TRAINER_TOWER_H
+
+void PrintTrainerTowerRecords(void);
+
+#endif //GUARD_TRAINER_TOWER_H
diff --git a/include/unk_8159F40.h b/include/unk_8159F40.h
index f0e85d416..7f6a98c3a 100644
--- a/include/unk_8159F40.h
+++ b/include/unk_8159F40.h
@@ -3,6 +3,7 @@
#include "global.h"
+void sub_8159F40(void);
void sub_815A008(struct QuestLog *);
void sub_815A1F8(struct QuestLog *, struct MapObjectTemplate *);
diff --git a/include/unk_815C980.h b/include/unk_815C980.h
index 78d4bd73b..a3249a8e2 100644
--- a/include/unk_815C980.h
+++ b/include/unk_815C980.h
@@ -17,8 +17,8 @@ struct UnkStruct3
void sub_815C9F4(void);
void sub_815D108(u32 id);
-void sub_815CD70(u32 id, s32 arg1);
-u8 sub_815D324(u32 shape, u32 size);
+void sub_815D1A8(u32 id, bool32 arg1);
bool32 sub_815CA40(u32 id, s32 arg1, const struct UnkStruct3 *arg2);
+void sub_815CD70(u32 id, s32 arg1);
#endif //GUARD_UNK_815C980_H
diff --git a/include/unk_815c27c.h b/include/unk_815c27c.h
index cc1cbb7ce..02c886895 100644
--- a/include/unk_815c27c.h
+++ b/include/unk_815c27c.h
@@ -1,11 +1,11 @@
#ifndef GUARD_UNK_815C27C_H
#define GUARD_UNK_815C27C_H
-void sub_815C6D4(void);
-void sub_815C6C4(void);
-void sub_815C8C8(void);
-void sub_815C960(void);
-void sub_815C91C(void);
-u16 sub_815C498(u8, size_t, const void *, u8);
+void EReaderHelper_SerialCallback(void);
+void EReaderHelper_Timer3Callback(void);
+void EReaderHelper_SaveRegsState(void);
+void EReaderHelper_ClearsSendRecvMgr(void);
+void EReaderHelper_RestoreRegsState(void);
+u16 EReaderHandleTransfer(u8, size_t, const void *, void *);
#endif //GUARD_UNK_815C27C_H
diff --git a/include/unk_text_util.h b/include/unk_text_util.h
deleted file mode 100644
index 750c0541e..000000000
--- a/include/unk_text_util.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef GUARD_UNK_TEXT_UTIL_H
-#define GUARD_UNK_TEXT_UTIL_H
-
-#include "global.h"
-
-void UnkTextUtil_Reset(void);
-void UnkTextUtil_SetPtrI(u8 idx, const u8 *ptr);
-u8 *UnkTextUtil_StringExpandPlaceholders(u8 *dest, const u8 *src);
-const u8 *UnkTextUtil_GetPtrI(u8 idx);
-
-#endif //GUARD_UNK_TEXT_UTIL_H
diff --git a/include/wild_encounter.h b/include/wild_encounter.h
index b4c42116a..bf53ed6ee 100644
--- a/include/wild_encounter.h
+++ b/include/wild_encounter.h
@@ -43,6 +43,7 @@ u16 GetLocalWildMon(bool8 *isWaterMon);
u16 GetLocalWaterMon(void);
bool8 UpdateRepelCounter(void);
void sub_8082740(u8);
-u8 GetUnownLetterByPersonality(u32 personality);
+u8 GetUnownLetterByPersonalityLoByte(u32 personality);
+bool8 SweetScentWildEncounter(void);
#endif // GUARD_WILD_ENCOUNTER_H
diff --git a/include/window.h b/include/window.h
index eb35e94d2..30e73dd32 100644
--- a/include/window.h
+++ b/include/window.h
@@ -47,6 +47,8 @@ struct Window
u8 *tileData;
};
+typedef void (*WindowFunc)(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+
bool16 InitWindows(const struct WindowTemplate *templates);
u16 AddWindow(const struct WindowTemplate *template);
int AddWindowWithoutTileMap(const struct WindowTemplate *template);
@@ -64,7 +66,7 @@ void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16
void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset);
void FillWindowPixelBuffer(u8 windowId, u8 fillValue);
void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue);
-void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8));
+void CallWindowFunction(u8 windowId, WindowFunc func);
bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value);
u32 GetWindowAttribute(u8 windowId, u8 attributeId);
u16 AddWindow8Bit(struct WindowTemplate *template);
diff --git a/json_data_rules.mk b/json_data_rules.mk
new file mode 100644
index 000000000..980e63e88
--- /dev/null
+++ b/json_data_rules.mk
@@ -0,0 +1,9 @@
+# JSON files are run through jsonproc, which is a tool that converts JSON data to an output file
+# based on an Inja template. https://github.com/pantor/inja
+
+AUTO_GEN_TARGETS += src/data/items.h
+
+src/data/items.h: src/data/items.json src/data/items.json.txt
+ $(JSONPROC) $^ $@
+
+$(C_BUILDDIR)/item.o: c_dep += src/data/items.h
diff --git a/ld_script.txt b/ld_script.txt
index 3057ccdb7..0fcc799e3 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -61,10 +61,10 @@ SECTIONS {
src/sprite.o(.text);
src/string_util.o(.text);
asm/link.o(.text);
- asm/multiboot.o(.text);
+ src/multiboot.o(.text);
asm/main_menu.o(.text);
asm/battle_controllers.o(.text);
- asm/decompress.o(.text);
+ src/decompress.o(.text);
asm/battle_1.o(.text);
asm/battle_2.o(.text);
asm/battle_util.o(.text);
@@ -76,7 +76,6 @@ SECTIONS {
asm/battle_ai_switch_items.o(.text);
asm/battle_controller_link_opponent.o(.text);
src/pokemon.o(.text);
- asm/pokemon_3.o(.text);
src/trig.o(.text);
src/random.o(.text);
src/util.o(.text);
@@ -87,7 +86,7 @@ SECTIONS {
asm/pokeball.o(.text);
src/load_save.o(.text);
asm/trade.o(.text);
- asm/play_time.o(.text);
+ src/play_time.o(.text);
asm/new_game.o(.text);
asm/overworld.o(.text);
src/fieldmap.o(.text);
@@ -112,12 +111,12 @@ SECTIONS {
asm/palette.o(.text);
src/sound.o(.text);
asm/battle_anim.o(.text);
- asm/battle_anim_8074480.o(.text);
+ asm/battle_anim_mons.o(.text);
src/task.o(.text);
asm/reshow_battle_screen.o(.text);
- asm/battle_anim_8078178.o(.text);
+ asm/battle_anim_status_effects.o(.text);
asm/title_screen.o(.text);
- asm/reset_save_heap.o(.text);
+ src/reset_save_heap.o(.text);
asm/field_weather.o(.text);
asm/field_weather_effects.o(.text);
asm/field_fadetransition.o(.text);
@@ -135,108 +134,126 @@ SECTIONS {
asm/pokemon_icon.o(.text);
asm/script_movement.o(.text);
asm/fldeff_cut.o(.text);
- asm/mail_data.o(.text);
+ src/mail_data.o(.text);
asm/map_name_popup.o(.text);
- asm/item_menu_icons.o(.text);
- asm/battle_anim_80989F8.o(.text);
- asm/item.o(.text);
+ src/item_menu_icons.o(.text);
+ src/battle_anim_mon_movement.o(.text);
+ src/item.o(.text);
asm/shop.o(.text);
src/berry.o(.text);
asm/script_menu.o(.text);
asm/naming_screen.o(.text);
src/money.o(.text);
asm/script_pokemon_util_80A0058.o(.text);
- asm/field_poison.o(.text);
+ src/field_poison.o(.text);
asm/pokemon_size_record.o(.text);
asm/pc_screen_effect.o(.text);
- asm/fldeff_poison.o(.text);
+ src/fldeff_poison.o(.text);
src/fldeff_berrytree.o(.text);
- asm/field_special_scene.o(.text);
- asm/safari_zone.o(.text);
- asm/item_use.o(.text);
- asm/battle_anim_80A22E8.o(.text);
+ src/field_special_scene.o(.text);
+ src/safari_zone.o(.text);
+ src/item_use.o(.text);
+ asm/battle_anim_effects_1.o(.text);
+ asm/battle_anim_effects_2.o(.text);
+ asm/water.o(.text);
+ asm/fire.o(.text);
+ asm/electric.o(.text);
+ asm/ice.o(.text);
+ asm/fighting.o(.text);
+ asm/poison.o(.text);
+ asm/flying.o(.text);
+ asm/psychic.o(.text);
+ asm/bug.o(.text);
+ asm/rock.o(.text);
+ asm/ghost.o(.text);
+ asm/dragon.o(.text);
+ asm/dark.o(.text);
+ asm/ground.o(.text);
+ asm/normal.o(.text);
+ asm/battle_anim_utility_funcs.o(.text);
asm/bike.o(.text);
asm/easy_chat.o(.text);
asm/mon_markings.o(.text);
asm/mail.o(.text);
- asm/menu_helpers.o(.text);
+ src/menu_helpers.o(.text);
asm/script_pokemon_util_80BF8FC.o(.text);
src/heal_location.o(.text);
asm/region_map.o(.text);
src/battle_ai_script_commands.o(.text);
- asm/rom6.o(.text);
+ src/fldeff_rocksmash.o(.text);
+ src/fldeff_dig.o(.text);
asm/fldeff_flash.o(.text);
asm/post_battle_event_funcs.o(.text);
src/prof_pc.o(.text);
- asm/hof_pc.o(.text);
+ src/hof_pc.o(.text);
asm/field_specials.o(.text);
- asm/battle_records.o(.text);
+ src/battle_records.o(.text);
asm/evolution_scene.o(.text);
src/coins.o(.text);
- asm/fldeff_strength.o(.text);
+ src/fldeff_strength.o(.text);
asm/battle_transition.o(.text);
asm/battle_controller_link_partner.o(.text);
asm/battle_message.o(.text);
src/math_util.o(.text);
src/roulette_util.o(.text);
- asm/cable_car_util.o(.text);
+ src/cable_car_util.o(.text);
src/save.o(.text);
src/mystery_event_script.o(.text);
asm/field_effect_helpers.o(.text);
asm/battle_anim_sound_tasks.o(.text);
asm/battle_controller_safari.o(.text);
- asm/fldeff_sweetscent.o(.text);
- asm/battle_anim_80DE2C0.o(.text);
+ src/fldeff_sweetscent.o(.text);
+ asm/battle_anim_effects_3.o(.text);
asm/learn_move.o(.text);
- asm/fldeff_softboiled.o(.text);
+ src/fldeff_softboiled.o(.text);
asm/battle_tower.o(.text);
asm/battle_controller_oak.o(.text);
asm/player_pc.o(.text);
- asm/intro.o(.text);
- asm/battle_anim_80EEC0C.o(.text);
+ src/intro.o(.text);
+ asm/battle_anim_special.o(.text);
asm/hall_of_fame.o(.text);
asm/credits.o(.text);
- asm/diploma.o(.text);
+ src/diploma.o(.text);
asm/save_failed_screen.o(.text);
asm/clear_save_data_screen.o(.text);
asm/evolution_graphics.o(.text);
src/fldeff_teleport.o(.text);
- asm/new_menu_helpers.o(.text);
+ src/new_menu_helpers.o(.text);
asm/box_party_pokemon_dropdown.o(.text);
asm/save_menu_util.o(.text);
asm/map_preview_screen.o(.text);
asm/link_rfu_2.o(.text);
asm/link_rfu.o(.text);
asm/pokedex_screen.o(.text);
- asm/list_menu.o(.text);
+ src/list_menu.o(.text);
asm/item_menu.o(.text);
- asm/save_location.o(.text);
+ src/save_location.o(.text);
src/bag.o(.text);
src/trainer_pokemon_sprites.o(.text);
src/vs_seeker.o(.text);
- asm/item_pc.o(.text);
+ src/item_pc.o(.text);
asm/mailbox_pc.o(.text);
- asm/menu.o(.text);
+ src/menu.o(.text);
src/quest_log.o(.text);
asm/link_rfu_3.o(.text);
asm/pokemon_special_anim.o(.text);
asm/party_menu.o(.text);
asm/union_room_chat.o(.text);
- asm/help_system_812B1E0.o(.text);
+ src/help_system_812B1E0.o(.text);
src/quest_log_battle.o(.text);
src/fame_checker.o(.text);
src/menu2.o(.text);
src/oak_speech.o(.text);
src/tm_case.o(.text);
- asm/menu_indicators.o(.text);
+ src/menu_indicators.o(.text);
asm/pokedex_area_markers.o(.text);
asm/pokemon_summary_screen.o(.text);
- asm/help_system.o(.text);
+ src/help_system.o(.text);
asm/wild_pokemon_area.o(.text);
- asm/unk_text_util.o(.text);
+ src/dynamic_placeholder_text_util.o(.text);
asm/berry_pouch.o(.text);
asm/itemfinder.o(.text);
- asm/buy_menu_helpers.o(.text);
+ src/buy_menu_helpers.o(.text);
src/slot_machine.o(.text);
asm/slot_machine.o(.text);
src/roamer.o(.text);
@@ -261,15 +278,15 @@ SECTIONS {
src/unk_8159F40.o(.text);
src/dodrio_berry_picking_2.o(.text);
asm/dodrio_berry_picking_2.o(.text);
- asm/teachy_tv.o(.text);
- asm/ereader_helpers.o(.text);
+ src/teachy_tv.o(.text);
+ src/ereader_helpers.o(.text);
src/unk_815C980.o(.text);
- asm/ss_anne.o(.text);
- asm/cereader_tool.o(.text);
+ src/ss_anne.o(.text);
+ src/cereader_tool.o(.text);
src/trainer_tower.o(.text);
- asm/unk_815EDDC.o(.text);
- asm/unk_815F138.o(.text);
- asm/berry_fix_program.o(.text);
+ src/berry_powder.o(.text);
+ src/unk_815F138.o(.text);
+ src/berry_fix_program.o(.text);
} =0
script_data :
@@ -364,6 +381,7 @@ SECTIONS {
src/bg_regs.o(.rodata);
src/string_util.o(.rodata);
data/data.o(.rodata);
+ src/pokemon.o(.rodata);
src/trig.o(.rodata);
src/util.o(.rodata);
src/daycare.o(.rodata);
@@ -391,31 +409,50 @@ SECTIONS {
data/title_screen.o(.rodata);
data/field_weather.o(.rodata);
data/data_835B488.o(.rodata);
+ src/item_menu_icons.o(.rodata);
+ src/battle_anim_mon_movement.o(.rodata);
+ src/item.o(.rodata);
+ data/data_835B488.o(.rodata.83DF09C);
src/heal_location.o(.rodata);
data/data_835B488.o(.rodata.83EEC98);
src/battle_ai_script_commands.o(.rodata);
data/data_83F5738.o(.rodata);
+ src/battle_records.o(.rodata);
+ data/data_83F5738.o(.rodata.83F6C90);
src/save.o(.rodata);
data/data_83FECCC.o(.rodata);
+ src/intro.o(.rodata);
+ data/data_83FECCC.o(.rodata.battle_anim_special);
+ src/diploma.o(.rodata);
+ data/strings.o(.rodata);
+ data/data_83FECCC.o(.rodata.841EE44);
+ src/new_menu_helpers.o(.rodata);
+ data/data_83FECCC.o(.rodata.841F4B4);
+ src/list_menu.o(.rodata);
+ data/data_83FECCC.o(.rodata.8452CF4);
+ src/save_location.o(.rodata);
src/bag.o(.rodata);
src/trainer_pokemon_sprites.o(.rodata);
src/vs_seeker.o(.rodata);
+ src/item_pc.o(.rodata);
data/data_83FECCC.o(.rodata.8453F6C);
+ src/menu.o(.rodata);
src/quest_log.o(.rodata);
data/data_83FECCC.o(.rodata.8456C74);
+ src/help_system_812B1E0.o(.rodata);
src/fame_checker.o(.rodata);
src/menu2.o(.rodata);
src/oak_speech.o(.rodata);
src/tm_case.o(.rodata);
- data/menu_indicators.o(.rodata);
+ src/menu_indicators.o(.rodata);
data/pokedex_area_markers.o(.rodata);
data/pokemon_summary_screen.o(.rodata);
- data/help_system.o(.rodata);
+ src/help_system.o(.rodata);
data/wild_pokemon_area.o(.rodata);
- data/unk_text_util.o(.rodata);
+ src/dynamic_placeholder_text_util.o(.rodata);
data/berry_pouch.o(.rodata);
data/itemfinder.o(.rodata);
- data/buy_menu_helpers.o(.rodata);
+ src/buy_menu_helpers.o(.rodata);
src/slot_machine.o(.rodata);
data/slot_machine.o(.rodata);
src/roamer.o(.rodata);
@@ -435,9 +472,14 @@ SECTIONS {
src/text_window_graphics.o(.rodata);
src/quest_log_8150454.o(.rodata);
data/data_8471F00.o(.rodata);
+ src/teachy_tv.o(.rodata);
src/unk_815C980.o(.rodata);
data/data_8471F00.o(.rodata.8479668);
+ src/ss_anne.o(.rodata);
+ src/cereader_tool.o(.rodata);
src/trainer_tower.o(.rodata);
+ src/unk_815F138.o(.rodata);
+ src/berry_fix_program.o(.rodata);
data/data_8471F00.o(.rodata.after_trainer_tower);
src/mystery_event_msg.o(.rodata);
data/mystery_event_msg.o(.rodata);
@@ -505,13 +547,7 @@ SECTIONS {
data/multiboot_pokemon_colosseum.o(.rodata);
} =0
- gap1 :
- {
- gap1_start = ABSOLUTE(.);
- BYTE(0xFF)
- . = 0x8D00000 - gap1_start;
- } =0xFF
-
+ . = 0x08D00000;
gfx_data :
ALIGN(4)
{
diff --git a/src/bag.c b/src/bag.c
index acfeddc60..a63f57702 100644
--- a/src/bag.c
+++ b/src/bag.c
@@ -6,6 +6,7 @@
#include "window.h"
#include "text_window.h"
#include "menu_helpers.h"
+#include "new_menu_helpers.h"
#include "menu.h"
#include "money.h"
#include "bag.h"
@@ -210,16 +211,16 @@ void sub_810B858(void)
else
InitWindows(gUnknown_84530E4);
DeactivateAllTextPrinters();
- sub_815001C(0, 0x64, 0xE0);
- sub_814FEAC(0, 0x6D, 0xD0);
- sub_814FF2C(0, 0x81, 0xC0);
+ TextWindow_SetUserSelectedFrame(0, 0x64, 0xE0);
+ TextWindow_LoadResourcesStdFrame0(0, 0x6D, 0xD0);
+ TextWindow_SetStdFrame0_WithPal(0, 0x81, 0xC0);
LoadPalette(gUnknown_8453098, 0xF0, 0x20);
for (i = 0; i < 3; i++)
{
FillWindowPixelBuffer(i, 0x00);
PutWindowTilemap(i);
}
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
for (i = 0; i < 11; i++)
{
gUnknown_203AD34[i] = 0xFF;
@@ -228,19 +229,19 @@ void sub_810B858(void)
void sub_810B8F0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 colorIdx)
{
- AddTextPrinterParametrized2(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_84530B8[colorIdx], speed, str);
+ AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_84530B8[colorIdx], speed, str);
}
void sub_810B958(const u8 * str)
{
u32 x = 0x48 - GetStringWidth(1, str, 0);
- box_print(2, 1, x / 2, 1, &gUnknown_84530B8[0], 0, str);
+ AddTextPrinterParameterized3(2, 1, x / 2, 1, &gUnknown_84530B8[0], 0, str);
}
void sub_810B994(void)
{
u32 x;
- SetWindowBorderStyle(2, FALSE, 0x081, 0x0C);
+ DrawStdFrameWithCustomTileAndPalette(2, FALSE, 0x081, 0x0C);
x = 0x40 - GetStringWidth(0, gText_DepositItem, 0);
AddTextPrinterParameterized(2, 0, gText_DepositItem, x / 2, 1, 0, NULL);
}
@@ -252,23 +253,23 @@ u8 sub_810B9DC(u8 a0, u8 a1)
gUnknown_203AD34[a0] = AddWindow(&gUnknown_8453104[a0 + a1]);
if (a0 != 6)
{
- SetWindowBorderStyle(gUnknown_203AD34[a0], FALSE, 0x064, 0x0E);
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_203AD34[a0], FALSE, 0x064, 0x0E);
}
else
{
- SetWindowBorderStyle(gUnknown_203AD34[a0], FALSE, 0x081, 0x0C);
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_203AD34[a0], FALSE, 0x081, 0x0C);
}
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
}
return gUnknown_203AD34[a0];
}
void sub_810BA3C(u8 a0)
{
- sub_810F4D8(gUnknown_203AD34[a0], FALSE);
+ ClearStdWindowAndFrameToTransparent(gUnknown_203AD34[a0], FALSE);
ClearWindowTilemap(gUnknown_203AD34[a0]);
RemoveWindow(gUnknown_203AD34[a0]);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
gUnknown_203AD34[a0] = 0xFF;
}
@@ -285,11 +286,11 @@ void sub_810BA9C(u8 a0)
{
if (gUnknown_203AD34[a0] != 0xFF)
{
- sub_810F260(gUnknown_203AD34[a0], FALSE);
+ ClearDialogWindowAndFrameToTransparent(gUnknown_203AD34[a0], FALSE);
ClearWindowTilemap(gUnknown_203AD34[a0]);
RemoveWindow(gUnknown_203AD34[a0]);
PutWindowTilemap(1);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
gUnknown_203AD34[a0] = 0xFF;
}
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 6343b55cd..1650f1056 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -6,6 +6,7 @@
#include "constants/abilities.h"
#include "constants/battle_ai.h"
#include "constants/battle_move_effects.h"
+#include "constants/moves.h"
extern u16 Random(void);
extern void sub_80C7164(void);
@@ -230,10 +231,7 @@ static const BattleAICmdFunc sBattleAICmdTable[] =
BattleAICmd_if_not_taunted, // 0x5D
};
-#ifdef NONMATCHING
-static
-#endif
-const u16 sDiscouragedPowerfulMoveEffects[] =
+static const u16 sDiscouragedPowerfulMoveEffects[] =
{
EFFECT_EXPLOSION,
EFFECT_DREAM_EATER,
@@ -970,331 +968,69 @@ static void BattleAICmd_get_move_power(void)
gAIScriptPtr += 1;
}
-// still a nonmatching
-#ifdef NONMATCHING
static void BattleAICmd_is_most_powerful_move(void)
{
- int i, j;
- s32 damages[MAX_MON_MOVES];
+ s32 i, checkedMove;
+ s32 moveDmgs[4];
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
+ {
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i])
break;
+ }
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power > 1
- && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF)
+ && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF)
{
gDynamicBasePower = 0;
- eDynamicMoveType = 0;
- eDmgMultiplier = 1;
+ gBattleStruct->dynamicMoveType = 0;
+ gBattleScripting.dmgMultiplier = 1;
gMoveResultFlags = 0;
gCritMultiplier = 1;
- for (i = 0; i < MAX_MON_MOVES; i++)
+ for (checkedMove = 0; checkedMove < MAX_MON_MOVES; checkedMove++)
{
- for (j = 0; sDiscouragedPowerfulMoveEffects[j] != 0xFFFF; j++)
- { // _08108276
- if (gBattleMoves[gBattleMons[gBankAttacker].moves[i]].effect == sDiscouragedPowerfulMoveEffects[j])
+ for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
+ {
+ if (gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i])
break;
}
- // _081082BA
- if (gBattleMons[gBankAttacker].moves[i]
- && sDiscouragedPowerfulMoveEffects[j] == 0xFFFF
- && gBattleMoves[gBattleMons[gBankAttacker].moves[i]].power > 1)
+ if (gBattleMons[sBattler_AI].moves[checkedMove] != MOVE_NONE
+ && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF
+ && gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].power > 1)
{
- gCurrentMove = gBattleMons[gBankAttacker].moves[i];
- AI_CalcDmg(gBankAttacker, gBankTarget);
- TypeCalc(gCurrentMove, gBankAttacker, gBankTarget);
- damages[i] = (gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[i]) / 100;
-
- if (damages[i] == 0) // moves always do at least 1 damage.
- damages[i] = 1;
+ gCurrentMove = gBattleMons[sBattler_AI].moves[checkedMove];
+ AI_CalcDmg(sBattler_AI, gBattlerTarget);
+ TypeCalc(gCurrentMove, sBattler_AI, gBattlerTarget);
+ moveDmgs[checkedMove] = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[checkedMove] / 100;
+ if (moveDmgs[checkedMove] == 0)
+ moveDmgs[checkedMove] = 1;
}
else
{
- damages[i] = 0;
+ moveDmgs[checkedMove] = 0;
}
}
- for (i = 0; i < MAX_MON_MOVES; i++)
- if (damages[i] > damages[AI_THINKING_STRUCT->movesetIndex])
+ for (checkedMove = 0; checkedMove < MAX_MON_MOVES; checkedMove++)
+ {
+ if (moveDmgs[checkedMove] > moveDmgs[AI_THINKING_STRUCT->movesetIndex])
break;
+ }
- if (i == MAX_MON_MOVES)
- AI_THINKING_STRUCT->funcResult = 2;
+ if (checkedMove == MAX_MON_MOVES)
+ AI_THINKING_STRUCT->funcResult = MOVE_MOST_POWERFUL; // Is the most powerful.
else
- AI_THINKING_STRUCT->funcResult = 1;
+ AI_THINKING_STRUCT->funcResult = MOVE_NOT_MOST_POWERFUL; // Not the most powerful.
}
else
{
- AI_THINKING_STRUCT->funcResult = 0;
+ AI_THINKING_STRUCT->funcResult = MOVE_POWER_DISCOURAGED; // Highly discouraged in terms of power.
}
- gAIScriptPtr += 1;
+ gAIScriptPtr++;
}
-#else
-NAKED
-static void BattleAICmd_is_most_powerful_move(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x14\n\
- movs r3, 0\n\
- ldr r0, _080C80A4 @ =sDiscouragedPowerfulMoveEffects\n\
- ldrh r1, [r0]\n\
- ldr r5, _080C80A8 @ =0x0000ffff\n\
- ldr r6, _080C80AC @ =gBattleMoves\n\
- ldr r2, _080C80B0 @ =gBattleResources\n\
- cmp r1, r5\n\
- beq _080C7FA2\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- ldrh r1, [r0, 0x2]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r4, [r0]\n\
- ldr r1, _080C80A4 @ =sDiscouragedPowerfulMoveEffects\n\
-_080C7F92:\n\
- ldrh r0, [r1]\n\
- cmp r4, r0\n\
- beq _080C7FA2\n\
- adds r1, 0x2\n\
- adds r3, 0x1\n\
- ldrh r0, [r1]\n\
- cmp r0, r5\n\
- bne _080C7F92\n\
-_080C7FA2:\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- ldrh r1, [r0, 0x2]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r0, [r0, 0x1]\n\
- cmp r0, 0x1\n\
- bhi _080C7FB8\n\
- b _080C8142\n\
-_080C7FB8:\n\
- lsls r0, r3, 1\n\
- ldr r1, _080C80A4 @ =sDiscouragedPowerfulMoveEffects\n\
- adds r0, r1\n\
- ldrh r3, [r0]\n\
- ldr r0, _080C80A8 @ =0x0000ffff\n\
- cmp r3, r0\n\
- beq _080C7FC8\n\
- b _080C8142\n\
-_080C7FC8:\n\
- ldr r0, _080C80B4 @ =gDynamicBasePower\n\
- movs r1, 0\n\
- strh r1, [r0]\n\
- ldr r0, _080C80B8 @ =gBattleStruct\n\
- ldr r0, [r0]\n\
- strb r1, [r0, 0x13]\n\
- ldr r0, _080C80BC @ =gBattleScripting\n\
- movs r2, 0x1\n\
- strb r2, [r0, 0xE]\n\
- ldr r0, _080C80C0 @ =gMoveResultFlags\n\
- strb r1, [r0]\n\
- ldr r0, _080C80C4 @ =gCritMultiplier\n\
- strb r2, [r0]\n\
- movs r6, 0\n\
- mov r9, r3\n\
- ldr r2, _080C80A4 @ =sDiscouragedPowerfulMoveEffects\n\
- ldrh r2, [r2]\n\
- str r2, [sp, 0x10]\n\
-_080C7FEC:\n\
- movs r3, 0\n\
- ldr r5, _080C80C8 @ =gBattleMons\n\
- lsls r4, r6, 1\n\
- ldr r7, _080C80CC @ =sBattler_AI\n\
- lsls r0, r6, 2\n\
- mov r8, r0\n\
- adds r1, r6, 0x1\n\
- mov r10, r1\n\
- ldr r2, [sp, 0x10]\n\
- cmp r2, r9\n\
- beq _080C8030\n\
- ldr r2, _080C80AC @ =gBattleMoves\n\
- ldrb r1, [r7]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r4, r0\n\
- adds r1, r5, 0\n\
- adds r1, 0xC\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r2, [r0]\n\
- ldr r1, _080C80A4 @ =sDiscouragedPowerfulMoveEffects\n\
-_080C8020:\n\
- ldrh r0, [r1]\n\
- cmp r2, r0\n\
- beq _080C8030\n\
- adds r1, 0x2\n\
- adds r3, 0x1\n\
- ldrh r0, [r1]\n\
- cmp r0, r9\n\
- bne _080C8020\n\
-_080C8030:\n\
- ldrb r1, [r7]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r4, r0\n\
- adds r1, r5, 0\n\
- adds r1, 0xC\n\
- adds r1, r0, r1\n\
- ldrh r0, [r1]\n\
- cmp r0, 0\n\
- beq _080C80DC\n\
- lsls r0, r3, 1\n\
- ldr r2, _080C80A4 @ =sDiscouragedPowerfulMoveEffects\n\
- adds r0, r2\n\
- ldrh r0, [r0]\n\
- cmp r0, r9\n\
- bne _080C80DC\n\
- ldr r0, _080C80AC @ =gBattleMoves\n\
- ldrh r2, [r1]\n\
- lsls r1, r2, 1\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0x1\n\
- bls _080C80DC\n\
- ldr r5, _080C80D0 @ =gCurrentMove\n\
- strh r2, [r5]\n\
- ldrb r0, [r7]\n\
- ldr r4, _080C80D4 @ =gBattlerTarget\n\
- ldrb r1, [r4]\n\
- bl AI_CalcDmg\n\
- ldrh r0, [r5]\n\
- ldrb r1, [r7]\n\
- ldrb r2, [r4]\n\
- bl TypeCalc\n\
- mov r4, sp\n\
- add r4, r8\n\
- ldr r2, _080C80D8 @ =gBattleMoveDamage\n\
- ldr r0, _080C80B0 @ =gBattleResources\n\
- ldr r0, [r0]\n\
- ldr r0, [r0, 0x14]\n\
- adds r0, 0x18\n\
- adds r0, r6\n\
- ldrb r1, [r0]\n\
- ldr r0, [r2]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- str r0, [r4]\n\
- cmp r0, 0\n\
- bne _080C80E4\n\
- movs r0, 0x1\n\
- str r0, [r4]\n\
- b _080C80E4\n\
- .align 2, 0\n\
-_080C80A4: .4byte sDiscouragedPowerfulMoveEffects\n\
-_080C80A8: .4byte 0x0000ffff\n\
-_080C80AC: .4byte gBattleMoves\n\
-_080C80B0: .4byte gBattleResources\n\
-_080C80B4: .4byte gDynamicBasePower\n\
-_080C80B8: .4byte gBattleStruct\n\
-_080C80BC: .4byte gBattleScripting\n\
-_080C80C0: .4byte gMoveResultFlags\n\
-_080C80C4: .4byte gCritMultiplier\n\
-_080C80C8: .4byte gBattleMons\n\
-_080C80CC: .4byte sBattler_AI\n\
-_080C80D0: .4byte gCurrentMove\n\
-_080C80D4: .4byte gBattlerTarget\n\
-_080C80D8: .4byte gBattleMoveDamage\n\
-_080C80DC:\n\
- mov r1, sp\n\
- add r1, r8\n\
- movs r0, 0\n\
- str r0, [r1]\n\
-_080C80E4:\n\
- mov r6, r10\n\
- cmp r6, 0x3\n\
- bgt _080C80EC\n\
- b _080C7FEC\n\
-_080C80EC:\n\
- movs r6, 0\n\
- ldr r2, _080C8130 @ =gBattleResources\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r1, [sp]\n\
- ldr r0, [r0]\n\
- ldr r5, _080C8134 @ =gAIScriptPtr\n\
- cmp r1, r0\n\
- bgt _080C8122\n\
- adds r4, r2, 0\n\
- mov r3, sp\n\
-_080C8108:\n\
- adds r3, 0x4\n\
- adds r6, 0x1\n\
- cmp r6, 0x3\n\
- bgt _080C8122\n\
- ldr r0, [r4]\n\
- ldr r0, [r0, 0x14]\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r1, [r3]\n\
- ldr r0, [r0]\n\
- cmp r1, r0\n\
- ble _080C8108\n\
-_080C8122:\n\
- cmp r6, 0x4\n\
- bne _080C8138\n\
- ldr r0, [r2]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0x2\n\
- str r0, [r1, 0x8]\n\
- b _080C814C\n\
- .align 2, 0\n\
-_080C8130: .4byte gBattleResources\n\
-_080C8134: .4byte gAIScriptPtr\n\
-_080C8138:\n\
- ldr r0, [r2]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0x1\n\
- str r0, [r1, 0x8]\n\
- b _080C814C\n\
-_080C8142:\n\
- ldr r0, [r2]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0\n\
- str r0, [r1, 0x8]\n\
- ldr r5, _080C8164 @ =gAIScriptPtr\n\
-_080C814C:\n\
- ldr r0, [r5]\n\
- adds r0, 0x1\n\
- str r0, [r5]\n\
- add sp, 0x14\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080C8164: .4byte gAIScriptPtr\n\
- .syntax divided\n");
-}
-#endif
static void BattleAICmd_get_move(void)
{
@@ -1434,28 +1170,28 @@ static void BattleAICmd_get_ability(void)
return;
}
- if (gBaseStats[gBattleMons[index].species].ability1 != ABILITY_NONE)
+ if (gBaseStats[gBattleMons[index].species].abilities[0] != ABILITY_NONE)
{
- if (gBaseStats[gBattleMons[index].species].ability2 != ABILITY_NONE)
+ if (gBaseStats[gBattleMons[index].species].abilities[1] != ABILITY_NONE)
{
// AI has no knowledge of opponent, so it guesses which ability.
if (Random() % 2)
{
- AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability1;
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].abilities[0];
}
else
{
- AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability2;
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].abilities[1];
}
}
else
{
- AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability1; // it's definitely ability 1.
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].abilities[0]; // it's definitely ability 1.
}
}
else
{
- AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability2; // AI cant actually reach this part since every mon has at least 1 ability.
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].abilities[1]; // AI cant actually reach this part since every mon has at least 1 ability.
}
}
else
diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c
new file mode 100644
index 000000000..27e6ef28c
--- /dev/null
+++ b/src/battle_anim_mon_movement.c
@@ -0,0 +1,809 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "task.h"
+#include "trig.h"
+
+#define abs(x) ((x) < 0 ? -(x) : (x))
+
+void sub_8098A6C(u8 taskId);
+void sub_8098C08(u8 taskId);
+void sub_8098D54(u8 taskId);
+void sub_8098EF0(u8 taskId);
+void sub_8099004(u8 taskId);
+void sub_80990AC(struct Sprite * sprite);
+void sub_8099120(struct Sprite * sprite);
+void sub_8099144(struct Sprite * sprite);
+void sub_8099190(struct Sprite * sprite);
+void sub_80991B4(struct Sprite * sprite);
+void sub_8099270(struct Sprite * sprite);
+void sub_80992E0(struct Sprite * sprite);
+void sub_8099394(struct Sprite * sprite);
+void sub_809946C(struct Sprite * sprite);
+void sub_8099530(u8 taskId);
+void sub_8099594(u8 taskId);
+void sub_80996B8(u8 taskId);
+void sub_8099788(u8 taskId);
+void sub_8099908(u8 taskId);
+void sub_8099B54(u8 taskId);
+void sub_8099CB8(u8 taskId);
+
+const struct SpriteTemplate gUnknown_83D4E4C[] = {
+ {
+ 0, 0, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80990AC
+ }, {
+ 0, 0, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8099144
+ }, {
+ 0, 0, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80991B4
+ }, {
+ 0, 0, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80992E0
+ }, {
+ 0, 0, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8099394
+ }
+};
+
+void sub_80989F8(u8 taskId)
+{
+ u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+
+ if (spriteId == 0xFF)
+ DestroyAnimVisualTask(taskId);
+ else
+ {
+ gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
+ gSprites[spriteId].pos2.y = gBattleAnimArgs[2];
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[1] = gBattleAnimArgs[3];
+ gTasks[taskId].data[2] = gBattleAnimArgs[4];
+ gTasks[taskId].data[3] = gBattleAnimArgs[4];
+ gTasks[taskId].data[4] = gBattleAnimArgs[1];
+ gTasks[taskId].data[5] = gBattleAnimArgs[2];
+ gTasks[taskId].func = sub_8098A6C;
+ gTasks[taskId].func(taskId);
+ }
+}
+
+void sub_8098A6C(u8 taskId)
+{
+ if (gTasks[taskId].data[3] == 0)
+ {
+ if (gSprites[gTasks[taskId].data[0]].pos2.x == 0)
+ gSprites[gTasks[taskId].data[0]].pos2.x = gTasks[taskId].data[4];
+ else
+ gSprites[gTasks[taskId].data[0]].pos2.x = 0;
+ if (gSprites[gTasks[taskId].data[0]].pos2.y == 0)
+ gSprites[gTasks[taskId].data[0]].pos2.y = gTasks[taskId].data[5];
+ else
+ gSprites[gTasks[taskId].data[0]].pos2.y = 0;
+ gTasks[taskId].data[3] = gTasks[taskId].data[2];
+ if (--gTasks[taskId].data[1] == 0)
+ {
+ gSprites[gTasks[taskId].data[0]].pos2.x = 0;
+ gSprites[gTasks[taskId].data[0]].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else
+ gTasks[taskId].data[3]--;
+}
+
+void sub_8098B1C(u8 taskId)
+{
+ bool8 abort = FALSE;
+ u8 spriteId;
+ u8 battlerId;
+
+ if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT)
+ {
+ spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ if (spriteId == 0xFF)
+ abort = TRUE;
+ }
+ else if (gBattleAnimArgs[0] != 8)
+ {
+ switch (gBattleAnimArgs[0])
+ {
+ case 4:
+ battlerId = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ break;
+ case 5:
+ battlerId = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
+ break;
+ case 6:
+ battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ break;
+ default:
+ battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
+ break;
+ }
+ if (!sub_8072DF0(battlerId))
+ abort = TRUE;
+ spriteId = gBattlerSpriteIds[battlerId];
+ }
+ else
+ spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
+ if (abort)
+ DestroyAnimVisualTask(taskId);
+ else
+ {
+ gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
+ gSprites[spriteId].pos2.y = gBattleAnimArgs[2];
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[1] = gBattleAnimArgs[3];
+ gTasks[taskId].data[2] = gBattleAnimArgs[4];
+ gTasks[taskId].data[3] = gBattleAnimArgs[4];
+ gTasks[taskId].data[4] = gBattleAnimArgs[1];
+ gTasks[taskId].data[5] = gBattleAnimArgs[2];
+ gTasks[taskId].func = sub_8098C08;
+ gTasks[taskId].func(taskId);
+ }
+}
+
+void sub_8098C08(u8 taskId)
+{
+ if (gTasks[taskId].data[3] == 0)
+ {
+ if (gSprites[gTasks[taskId].data[0]].pos2.x == gTasks[taskId].data[4])
+ gSprites[gTasks[taskId].data[0]].pos2.x = -gTasks[taskId].data[4];
+ else
+ gSprites[gTasks[taskId].data[0]].pos2.x = gTasks[taskId].data[4];
+ if (gSprites[gTasks[taskId].data[0]].pos2.y == gTasks[taskId].data[5])
+ gSprites[gTasks[taskId].data[0]].pos2.y = -gTasks[taskId].data[5];
+ else
+ gSprites[gTasks[taskId].data[0]].pos2.y = gTasks[taskId].data[5];
+ gTasks[taskId].data[3] = gTasks[taskId].data[2];
+ if (--gTasks[taskId].data[1] == 0)
+ {
+ gSprites[gTasks[taskId].data[0]].pos2.x = 0;
+ gSprites[gTasks[taskId].data[0]].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else
+ gTasks[taskId].data[3]--;
+}
+
+void sub_8098CD0(u8 taskId)
+{
+ u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+
+ if (spriteId == 0xFF)
+ DestroyAnimVisualTask(taskId);
+ else
+ {
+ gSprites[spriteId].pos2.x += gBattleAnimArgs[1];
+ gSprites[spriteId].pos2.y += gBattleAnimArgs[2];
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = gBattleAnimArgs[3];
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[1] * 2;
+ gTasks[taskId].data[6] = gBattleAnimArgs[2] * 2;
+ gTasks[taskId].func = sub_8098D54;
+ gTasks[taskId].func(taskId);
+ }
+}
+
+void sub_8098D54(u8 taskId)
+{
+ if (gTasks[taskId].data[3] == 0)
+ {
+ if (gTasks[taskId].data[1] & 1)
+ {
+ gSprites[gTasks[taskId].data[0]].pos2.x += gTasks[taskId].data[5];
+ gSprites[gTasks[taskId].data[0]].pos2.y += gTasks[taskId].data[6];
+ }
+ else
+ {
+ gSprites[gTasks[taskId].data[0]].pos2.x -= gTasks[taskId].data[5];
+ gSprites[gTasks[taskId].data[0]].pos2.y -= gTasks[taskId].data[6];
+ }
+ gTasks[taskId].data[3] = gTasks[taskId].data[4];
+ if (++gTasks[taskId].data[1] >= gTasks[taskId].data[2])
+ {
+ if (gTasks[taskId].data[1] & 1)
+ {
+ gSprites[gTasks[taskId].data[0]].pos2.x += gTasks[taskId].data[5] / 2;
+ gSprites[gTasks[taskId].data[0]].pos2.y += gTasks[taskId].data[6] / 2;
+ }
+ else
+ {
+ gSprites[gTasks[taskId].data[0]].pos2.x -= gTasks[taskId].data[5] / 2;
+ gSprites[gTasks[taskId].data[0]].pos2.y -= gTasks[taskId].data[6] / 2;
+ }
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else
+ gTasks[taskId].data[3]--;
+}
+
+void sub_8098E90(u8 taskId)
+{
+ u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+
+ gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].func = sub_8098EF0;
+ gTasks[taskId].func(taskId);
+}
+
+void sub_8098EF0(u8 taskId)
+{
+ u8 spriteId = gTasks[taskId].data[0];
+ s16 data1 = gTasks[taskId].data[1];
+ if (gTasks[taskId].data[2] == gTasks[taskId].data[8]++)
+ {
+ gTasks[taskId].data[8] = 0;
+ if (gSprites[spriteId].pos2.x == data1)
+ data1 = -data1;
+ gSprites[spriteId].pos2.x += data1;
+ }
+ gTasks[taskId].data[1] = data1;
+ gTasks[taskId].data[9] += gTasks[taskId].data[3];
+ gSprites[spriteId].pos2.y = gTasks[taskId].data[9] >> 8;
+ if (--gTasks[taskId].data[4] == 0)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8098F84(u8 taskId)
+{
+ u8 r6 = 1;
+ u8 i;
+ u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ if (gBattleAnimArgs[4] > 5)
+ gBattleAnimArgs[4] = 5;
+ for (i = 0; i < gBattleAnimArgs[4]; i++)
+ r6 *= 2;
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = r6;
+ gTasks[taskId].func = sub_8099004;
+ gTasks[taskId].func(taskId);
+}
+
+void sub_8099004(u8 taskId)
+{
+ u8 spriteId = gTasks[taskId].data[0];
+ gSprites[spriteId].pos2.x = Sin(gTasks[taskId].data[5], gTasks[taskId].data[1]);
+ gSprites[spriteId].pos2.y = -Cos(gTasks[taskId].data[5], gTasks[taskId].data[2]);
+ gSprites[spriteId].pos2.y += gTasks[taskId].data[2];
+ gTasks[taskId].data[5] += gTasks[taskId].data[4];
+ gTasks[taskId].data[5] &= 0xFF;
+ if (gTasks[taskId].data[5] == 0)
+ gTasks[taskId].data[3]--;
+ if (gTasks[taskId].data[3] == 0)
+ {
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_809907C(u8 taskId)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ sub_8098F84(taskId);
+}
+
+void sub_80990AC(struct Sprite * sprite)
+{
+ sprite->invisible = TRUE;
+ if (GetBattlerSide(gBattleAnimAttacker) != B_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] = gBattlerSpriteIds[gBattleAnimAttacker];
+ sprite->data[4] = gBattleAnimArgs[0];
+ StoreSpriteCallbackInData6(sprite, sub_8099120);
+ sprite->callback = sub_8074DC4;
+}
+
+void sub_8099120(struct Sprite * sprite)
+{
+ sprite->data[0] = sprite->data[4];
+ sprite->data[1] = -sprite->data[1];
+ sprite->callback = sub_8074DC4;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_8099144(struct Sprite * sprite)
+{
+ u8 spriteId;
+ sprite->invisible = TRUE;
+ spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]);
+ sprite->data[0] = gBattleAnimArgs[0];
+ sprite->data[1] = 0;
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[3] = spriteId;
+ sprite->data[4] = gBattleAnimArgs[0];
+ StoreSpriteCallbackInData6(sprite, sub_8099190);
+ sprite->callback = sub_8074DC4;
+}
+
+void sub_8099190(struct Sprite * sprite)
+{
+ sprite->data[0] = sprite->data[4];
+ sprite->data[2] = -sprite->data[2];
+ sprite->callback = sub_8074DC4;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_80991B4(struct Sprite * sprite)
+{
+ u8 spriteId;
+ if (gBattleAnimArgs[0] == 0)
+ spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
+ else
+ spriteId = gBattlerSpriteIds[gBattleAnimTarget];
+ 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;
+ sub_80754B8(sprite);
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[5] = gSprites[spriteId].pos2.x;
+ sprite->data[6] = gSprites[spriteId].pos2.y;
+ sprite->invisible = TRUE;
+ if (gBattleAnimArgs[1] == 1)
+ sprite->data[2] = 0;
+ else if (gBattleAnimArgs[1] == 2)
+ sprite->data[1] = 0;
+ sprite->data[7] = gBattleAnimArgs[1];
+ sprite->data[7] |= spriteId << 8;
+ sprite->callback = sub_8099270;
+}
+
+void sub_8099270(struct Sprite * sprite)
+{
+ u8 data7 = sprite->data[7];
+ struct Sprite *otherSprite = &gSprites[sprite->data[7] >> 8];
+ if (sprite->data[0] == 0)
+ {
+ if (data7 == 1 || data7 == 0)
+ otherSprite->pos2.x = 0;
+ if (data7 == 2 || data7 == 0)
+ otherSprite->pos2.y = 0;
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ sprite->data[0]--;
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ otherSprite->pos2.x = (sprite->data[3] >> 8) + sprite->data[5];
+ otherSprite->pos2.y = (sprite->data[4] >> 8) + sprite->data[6];
+ }
+}
+
+void sub_80992E0(struct Sprite * sprite)
+{
+ u8 battlerId;
+ u8 spriteId;
+ if (gBattleAnimArgs[0] == 0)
+ battlerId = gBattleAnimAttacker;
+ else
+ battlerId = gBattleAnimTarget;
+ spriteId = gBattlerSpriteIds[battlerId];
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ if (gBattleAnimArgs[3] == 1)
+ 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_80754B8(sprite);
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[5] = spriteId;
+ sprite->invisible = TRUE;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback = sub_8074E14;
+}
+
+void sub_8099394(struct Sprite * sprite)
+{
+ u8 battlerId;
+ u8 spriteId;
+ sprite->invisible = TRUE;
+ if (gBattleAnimArgs[0] == 0)
+ battlerId = gBattleAnimAttacker;
+ else
+ battlerId = gBattleAnimTarget;
+ spriteId = gBattlerSpriteIds[battlerId];
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ if (gBattleAnimArgs[3] == 1)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ }
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
+ 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_80754B8(sprite);
+ sprite->data[3] = gSprites[spriteId].pos2.x << 8;
+ sprite->data[4] = gSprites[spriteId].pos2.y << 8;
+ sprite->data[5] = spriteId;
+ sprite->data[6] = gBattleAnimArgs[5];
+ if (gBattleAnimArgs[5] == 0)
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ else
+ StoreSpriteCallbackInData6(sprite, sub_809946C);
+ sprite->callback = sub_8074E14;
+}
+
+void sub_809946C(struct Sprite * sprite)
+{
+ gSprites[sprite->data[5]].pos2.x = 0;
+ gSprites[sprite->data[5]].pos2.y = 0;
+ DestroyAnimSprite(sprite);
+}
+
+void sub_809949C(u8 taskId)
+{
+ u16 r7 = 0x8000 / gBattleAnimArgs[3];
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[5] = -gBattleAnimArgs[5];
+ }
+ gTasks[taskId].data[0] = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ gTasks[taskId].data[1] = gBattleAnimArgs[1] * 256 / gBattleAnimArgs[3];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5] * 256 / gBattleAnimArgs[6];
+ gTasks[taskId].data[6] = gBattleAnimArgs[6];
+ gTasks[taskId].data[7] = r7;
+ gTasks[taskId].func = sub_8099530;
+}
+
+void sub_8099530(u8 taskId)
+{
+ u8 spriteId = gTasks[taskId].data[0];
+ gTasks[taskId].data[11] += gTasks[taskId].data[1];
+ gSprites[spriteId].pos2.x = gTasks[taskId].data[11] >> 8;
+ gSprites[spriteId].pos2.y = Sin((u8)(gTasks[taskId].data[10] >> 8), gTasks[taskId].data[2]);
+ gTasks[taskId].data[10] += gTasks[taskId].data[7];
+ if (--gTasks[taskId].data[3] == 0)
+ gTasks[taskId].func = sub_8099594;
+}
+
+void sub_8099594(u8 taskId)
+{
+ u8 spriteId;
+
+ if (gTasks[taskId].data[4] > 0)
+ gTasks[taskId].data[4]--;
+ else
+ {
+ spriteId = gTasks[taskId].data[0];
+ gTasks[taskId].data[12] += gTasks[taskId].data[5];
+ gSprites[spriteId].pos2.x = (gTasks[taskId].data[12] >> 8) + (gTasks[taskId].data[11] >> 8);
+ if (--gTasks[taskId].data[6] == 0)
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_80995FC(u8 taskId)
+{
+ u8 spriteId;
+
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ case 1:
+ spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ break;
+ case 2:
+ if (!sub_8072DF0(gBattleAnimAttacker ^ BIT_FLANK))
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ spriteId = gBattlerSpriteIds[gBattleAnimAttacker ^ BIT_FLANK];
+ break;
+ case 3:
+ if (!sub_8072DF0(gBattleAnimTarget ^ BIT_FLANK))
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ spriteId = gBattlerSpriteIds[gBattleAnimTarget ^ BIT_FLANK];
+ break;
+ default:
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ gTasks[taskId].data[0] = spriteId;
+ if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ else
+ gTasks[taskId].data[1] = -gBattleAnimArgs[1];
+ gTasks[taskId].func = sub_80996B8;
+}
+
+void sub_80996B8(u8 taskId)
+{
+ u8 spriteId = gTasks[taskId].data[0];
+ gSprites[spriteId].pos2.x += gTasks[taskId].data[1];
+ if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x < -0x20 || gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x > 0x110)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8099704(u8 taskId)
+{
+ u8 spriteId;
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ spriteId = GetAnimBankSpriteId(gBattleAnimArgs[4]);
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = spriteId;
+ if (gBattleAnimArgs[4] == 0)
+ gTasks[taskId].data[5] = gBattleAnimAttacker;
+ else
+ gTasks[taskId].data[5] = gBattleAnimTarget;
+ gTasks[taskId].data[12] = 1;
+ gTasks[taskId].func = sub_8099788;
+}
+
+void sub_8099788(u8 taskId)
+{
+ u8 spriteId;
+ u32 r8;
+ s16 r5;
+ u16 tmp;
+
+ spriteId = gTasks[taskId].data[4];
+ tmp = gTasks[taskId].data[10] + gTasks[taskId].data[2];
+ gTasks[taskId].data[10] = tmp;
+ r8 = tmp >> 8;
+ r5 = Sin(r8, gTasks[taskId].data[1]);
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gSprites[spriteId].pos2.x = r5;
+ }
+ else if (GetBattlerSide(gTasks[taskId].data[5]) == B_SIDE_PLAYER)
+ {
+ gSprites[spriteId].pos2.y = abs(r5);
+ }
+ else
+ gSprites[spriteId].pos2.y = -abs(r5);
+ if ((r8 > 0x7F && gTasks[taskId].data[11] == 0 && gTasks[taskId].data[12] == 1) || (r8 < 0x7F && gTasks[taskId].data[11] == 1 && gTasks[taskId].data[12] == 0))
+ {
+ gTasks[taskId].data[11] ^= 1;
+ gTasks[taskId].data[12] ^= 1;
+ if (--gTasks[taskId].data[3] == 0)
+ {
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_80998B0(u8 taskId)
+{
+ u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[3]);
+ sub_80758E0(spriteId, gBattleAnimArgs[4]);
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ gTasks[taskId].data[4] = spriteId;
+ gTasks[taskId].data[10] = 0x100;
+ gTasks[taskId].data[11] = 0x100;
+ gTasks[taskId].func = sub_8099908;
+}
+
+void sub_8099908(u8 taskId)
+{
+ u8 spriteId;
+ gTasks[taskId].data[10] += gTasks[taskId].data[0];
+ gTasks[taskId].data[11] += gTasks[taskId].data[1];
+ spriteId = gTasks[taskId].data[4];
+ obj_id_set_rotscale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[11], 0);
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ if (gTasks[taskId].data[3] > 0)
+ {
+ gTasks[taskId].data[0] = -gTasks[taskId].data[0];
+ gTasks[taskId].data[1] = -gTasks[taskId].data[1];
+ gTasks[taskId].data[2] = gTasks[taskId].data[3];
+ gTasks[taskId].data[3] = 0;
+ }
+ else
+ {
+ sub_8075980(spriteId);
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_8099980(u8 taskId)
+{
+ u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]);
+ sub_80758E0(spriteId, 0);
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = gBattleAnimArgs[0];
+ if (gBattleAnimArgs[3] != 1)
+ gTasks[taskId].data[3] = 0;
+ else
+ gTasks[taskId].data[3] = gBattleAnimArgs[0] * gBattleAnimArgs[1];
+ gTasks[taskId].data[4] = gBattleAnimArgs[1];
+ gTasks[taskId].data[5] = spriteId;
+ gTasks[taskId].data[6] = gBattleAnimArgs[3];
+ if (sub_8073788())
+ gTasks[taskId].data[7] = 1;
+ else
+ {
+ if (gBattleAnimArgs[2] == 0)
+ gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : 0;
+ else
+ gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER ? 1 : 0;
+ }
+ if (gTasks[taskId].data[7] && !sub_8073788())
+ {
+ s16 tmp;
+ tmp = gTasks[taskId].data[3];
+ gTasks[taskId].data[3] = -tmp;
+ tmp = gTasks[taskId].data[4];
+ gTasks[taskId].data[4] = -tmp;
+ }
+ gTasks[taskId].func = sub_8099B54;
+}
+
+void sub_8099A78(u8 taskId)
+{
+ u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]);
+ sub_80758E0(spriteId, 0);
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = gBattleAnimArgs[0];
+ if (gBattleAnimArgs[2] == 0)
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ }
+ else
+ {
+ if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ }
+ if (gBattleAnimArgs[3] != 1)
+ gTasks[taskId].data[3] = 0;
+ else
+ gTasks[taskId].data[3] = gBattleAnimArgs[0] * gBattleAnimArgs[1];
+ gTasks[taskId].data[4] = gBattleAnimArgs[1];
+ gTasks[taskId].data[5] = spriteId;
+ gTasks[taskId].data[6] = gBattleAnimArgs[3];
+ gTasks[taskId].data[7] = 1;
+ if (gTasks[taskId].data[7] )
+ {
+ s16 tmp;
+ tmp = gTasks[taskId].data[3];
+ gTasks[taskId].data[3] = -tmp;
+ tmp = gTasks[taskId].data[4];
+ gTasks[taskId].data[4] = -tmp;
+ }
+ gTasks[taskId].func = sub_8099B54;
+}
+
+void sub_8099B54(u8 taskId)
+{
+ s16 tmp;
+ gTasks[taskId].data[3] += gTasks[taskId].data[4];
+ obj_id_set_rotscale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]);
+ if (gTasks[taskId].data[7])
+ sub_80759DC(gTasks[taskId].data[5]);
+ if (++gTasks[taskId].data[1] >= gTasks[taskId].data[2])
+ {
+ switch (gTasks[taskId].data[6])
+ {
+ case 1:
+ sub_8075980(gTasks[taskId].data[5]);
+ // fallthrough
+ case 0:
+ default:
+ DestroyAnimVisualTask(taskId);
+ break;
+ case 2:
+ gTasks[taskId].data[1] = 0;
+ tmp = gTasks[taskId].data[4];
+ gTasks[taskId].data[4] = -tmp;
+ gTasks[taskId].data[6] = 1;
+ break;
+ }
+ }
+}
+
+void sub_8099BD4(u8 taskId)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ gTasks[taskId].data[15] = gUnknown_2037EEC / 12;
+ if (gTasks[taskId].data[15] < 1)
+ gTasks[taskId].data[15] = 1;
+ if (gTasks[taskId].data[15] > 16)
+ gTasks[taskId].data[15] = 16;
+ }
+ else
+ {
+ gTasks[taskId].data[15] = gUnknown_2037EE8 / 12;
+ if (gTasks[taskId].data[15] < 1)
+ gTasks[taskId].data[15] = 1;
+ if (gTasks[taskId].data[15] > 16)
+ gTasks[taskId].data[15] = 16;
+ }
+ gTasks[taskId].data[14] = gTasks[taskId].data[15] / 2;
+ gTasks[taskId].data[13] = gTasks[taskId].data[14] + (gTasks[taskId].data[15] & 1);
+ gTasks[taskId].data[12] = 0;
+ gTasks[taskId].data[10] = gBattleAnimArgs[3];
+ gTasks[taskId].data[11] = gBattleAnimArgs[4];
+ gTasks[taskId].data[7] = GetAnimBankSpriteId(1);
+ gTasks[taskId].data[8] = gSprites[gTasks[taskId].data[7]].pos2.x;
+ gTasks[taskId].data[9] = gSprites[gTasks[taskId].data[7]].pos2.y;
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].func = sub_8099CB8;
+}
+
+void sub_8099CB8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ if (++task->data[0] > task->data[1])
+ {
+ task->data[0] = 0;
+ task->data[12] = (task->data[12] + 1) & 1;
+ if (task->data[10])
+ {
+ if (task->data[12])
+ {
+ gSprites[task->data[7]].pos2.x = task->data[8] + task->data[13];
+ }
+ else
+ {
+ gSprites[task->data[7]].pos2.x = task->data[8] - task->data[14];
+ }
+ }
+ if (task->data[11])
+ {
+ if (task->data[12])
+ {
+ gSprites[task->data[7]].pos2.y = task->data[15];
+ }
+ else
+ {
+ gSprites[task->data[7]].pos2.y = 0;
+ }
+ }
+ if (!--task->data[2])
+ {
+ gSprites[task->data[7]].pos2.x = 0;
+ gSprites[task->data[7]].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ }
+}
diff --git a/src/battle_records.c b/src/battle_records.c
new file mode 100644
index 000000000..79f29eb8a
--- /dev/null
+++ b/src/battle_records.c
@@ -0,0 +1,576 @@
+#include "global.h"
+#include "malloc.h"
+#include "main.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "event_data.h"
+#include "palette.h"
+#include "task.h"
+#include "text.h"
+#include "window.h"
+#include "text_window.h"
+#include "battle.h"
+#include "trainer_tower.h"
+#include "trainer_pokemon_sprites.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "string_util.h"
+#include "link.h"
+#include "menu.h"
+#include "overworld.h"
+#include "strings.h"
+#include "trainer_card.h"
+#include "constants/battle.h"
+#include "constants/songs.h"
+#include "constants/maps.h"
+
+static EWRAM_DATA u16 * sBg3TilemapBuffer_p = NULL;
+
+static void MainCB2_SetUp(void);
+static void VBlankCB(void);
+static void MainCB2(void);
+static void Task_WaitFadeIn(u8 taskId);
+static void Task_WaitButton(u8 taskId);
+static void Task_FadeOut(u8 taskId);
+static void Task_DestroyAndReturnToField(u8 taskId);
+static void ClearWindowCommitAndRemove(u8 winddowId);
+static void ResetGpu(void);
+static void StopAllRunningTasks(void);
+static void EnableDisplay(void);
+static void ResetBGPos(void);
+static void PrintBattleRecords(void);
+static void CommitWindow(u8 windowId);
+static void LoadFrameGfxOnBg(u8 bgId);
+
+static const u16 sTiles[] = INCBIN_U16("graphics/battle_records/bg_tiles.4bpp");
+static const u16 sPalette[] = INCBIN_U16("graphics/battle_records/palette.gbapal");
+static const u16 sTilemap[] = INCBIN_U16("graphics/battle_records/tilemap.bin");
+
+static const struct WindowTemplate sWindowTemplates[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 1,
+ .width = 27,
+ .height = 18,
+ .paletteNum = 0xF,
+ .baseBlock = 0x014
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const struct TextColor sTextColor = {
+ 0, 2, 3
+};
+
+static const struct BgTemplate sBgTemplates[2] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0, // 4bpp
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 3,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0, // 4bpp
+ .priority = 3,
+ .baseTile = 0x000
+ }
+};
+
+static u8 *const sStringVars[3] = {
+ gStringVar1,
+ gStringVar2,
+ gStringVar3
+};
+
+void Special_BattleRecords(void)
+{
+ SetVBlankCallback(NULL);
+ SetMainCallback2(MainCB2_SetUp);
+}
+
+static void MainCB2_SetUp(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ ResetGpu();
+ gMain.state++;
+ break;
+ case 1:
+ StopAllRunningTasks();
+ gMain.state++;
+ break;
+ case 2:
+ sBg3TilemapBuffer_p = AllocZeroed(0x800);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates));
+ SetBgTilemapBuffer(3, sBg3TilemapBuffer_p);
+ ResetBGPos();
+ gMain.state++;
+ break;
+ case 3:
+ LoadFrameGfxOnBg(3);
+ LoadPalette(stdpal_get(0), 0xF0, 0x20);
+ gMain.state++;
+ break;
+ case 4:
+ if (IsDma3ManagerBusyWithBgCopy() != TRUE)
+ {
+ ShowBg(0);
+ ShowBg(3);
+ CopyBgTilemapBufferToVram(3);
+ gMain.state++;
+ }
+ break;
+ case 5:
+ InitWindows(sWindowTemplates);
+ DeactivateAllTextPrinters();
+ gMain.state++;
+ break;
+ case 6:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ gMain.state++;
+ break;
+ case 7:
+ EnableDisplay();
+ SetVBlankCallback(VBlankCB);
+ if (gSpecialVar_0x8004)
+ PrintTrainerTowerRecords();
+ else
+ PrintBattleRecords();
+ CreateTask(Task_WaitFadeIn, 8);
+ SetMainCallback2(MainCB2);
+ gMain.state = 0;
+ break;
+ }
+}
+
+static void VBlankCB(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void MainCB2(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void Task_WaitFadeIn(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ gTasks[taskId].func = Task_WaitButton;
+}
+
+static void Task_WaitButton(u8 taskId)
+{
+ struct Task * task = &gTasks[taskId];
+
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ task->func = Task_FadeOut;
+ }
+}
+
+static void Task_FadeOut(u8 taskId)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = Task_DestroyAndReturnToField;
+}
+
+static void Task_DestroyAndReturnToField(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ Free(sBg3TilemapBuffer_p);
+ ClearWindowCommitAndRemove(0);
+ FreeAllWindowBuffers();
+ DestroyTask(taskId);
+ }
+}
+
+static void ClearWindowCommitAndRemove(u8 windowId)
+{
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
+ ClearWindowTilemap(windowId);
+ CopyWindowToVram(windowId, 2);
+ RemoveWindow(windowId);
+}
+
+static void ResetGpu(void)
+{
+ {
+ void * dest = (void *)VRAM;
+ u32 size = VRAM_SIZE;
+ DmaClearLarge16(3, dest, size, 0x1000);
+ }
+
+ {
+ void * dest = (void *)OAM;
+ u32 size = OAM_SIZE;
+ DmaClear32(3, dest, size);
+ }
+
+ {
+ void * dest = (void *)PLTT;
+ u32 size = PLTT_SIZE;
+ DmaClear16(3, dest, size);
+ }
+
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3CNT, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+}
+
+static void StopAllRunningTasks(void)
+{
+ ScanlineEffect_Stop();
+ ResetTasks();
+ ResetSpriteData();
+ ResetAllPicSprites();
+ ResetPaletteFade();
+ FreeAllSpritePalettes();
+}
+
+static void EnableDisplay(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON);
+}
+
+static void ResetBGPos(void)
+{
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+}
+
+static void InitLinkBattleRecord(struct LinkBattleRecord * record)
+{
+ CpuFill16(0, record, sizeof(*record));
+ record->name[0] = EOS;
+ record->trainerId = 0;
+ record->wins = 0;
+ record->losses = 0;
+ record->draws = 0;
+}
+
+static void InitLinkBattleRecords_(struct LinkBattleRecords * records)
+{
+ s32 i;
+
+ for (i = 0; i < LINK_B_RECORDS_COUNT; i++)
+ InitLinkBattleRecord(&records->entries[i]);
+ SetGameStat(GAME_STAT_LINK_BATTLE_WINS, 0);
+ SetGameStat(GAME_STAT_LINK_BATTLE_LOSSES, 0);
+ SetGameStat(GAME_STAT_LINK_BATTLE_DRAWS, 0);
+}
+
+static s32 GetLinkBattleRecordTotalBattles(struct LinkBattleRecord * record)
+{
+ return record->wins + record->losses + record->draws;
+}
+
+static s32 IndexOfOpponentLinkBattleRecord(struct LinkBattleRecords * records, const u8 * name, u16 trainerId)
+{
+ s32 i;
+
+ for (i = 0; i < LINK_B_RECORDS_COUNT; i++)
+ {
+ if (StringCompareN(records->entries[i].name, name, OT_NAME_LENGTH) == 0 && records->entries[i].trainerId == trainerId)
+ return i;
+ }
+
+ return LINK_B_RECORDS_COUNT;
+}
+
+static void SortLinkBattleRecords(struct LinkBattleRecords * records)
+{
+ struct LinkBattleRecord tmp;
+ s32 i;
+ s32 j;
+
+ for (i = LINK_B_RECORDS_COUNT - 1; i > 0; i--)
+ {
+ for (j = i - 1; j >= 0; j--)
+ {
+ if (GetLinkBattleRecordTotalBattles(&records->entries[i]) > GetLinkBattleRecordTotalBattles(&records->entries[j]))
+ {
+ tmp = records->entries[i];
+ records->entries[i] = records->entries[j];
+ records->entries[j] = tmp;
+ }
+ }
+ }
+}
+
+static void UpdateLinkBattleRecord(struct LinkBattleRecord * record, s32 outcome)
+{
+ switch (outcome)
+ {
+ case B_OUTCOME_WON:
+ record->wins++;
+ if (record->wins > 9999)
+ record->wins = 9999;
+ break;
+ case B_OUTCOME_LOST:
+ record->losses++;
+ if (record->losses > 9999)
+ record->losses = 9999;
+ break;
+ case B_OUTCOME_DREW:
+ record->draws++;
+ if (record->draws > 9999)
+ record->draws = 9999;
+ break;
+ }
+}
+
+static void UpdateLinkBattleGameStats(s32 outcome)
+{
+ u8 statId;
+
+ switch (outcome)
+ {
+ case B_OUTCOME_WON:
+ statId = GAME_STAT_LINK_BATTLE_WINS;
+ break;
+ case B_OUTCOME_LOST:
+ statId = GAME_STAT_LINK_BATTLE_LOSSES;
+ break;
+ case B_OUTCOME_DREW:
+ statId = GAME_STAT_LINK_BATTLE_DRAWS;
+ break;
+ default:
+ return;
+ }
+
+ if (GetGameStat(statId) < 9999)
+ IncrementGameStat(statId);
+}
+
+static void AddOpponentLinkBattleRecord(struct LinkBattleRecords * records, const u8 * name, u16 trainerId, s32 outcome, u32 language)
+{
+ u8 namebuf[OT_NAME_LENGTH + 1];
+ s32 i;
+ struct LinkBattleRecord * record;
+
+ if (language == LANGUAGE_JAPANESE)
+ {
+ namebuf[0] = EXT_CTRL_CODE_BEGIN;
+ namebuf[1] = EXT_CTRL_CODE_JPN;
+ StringCopy(&namebuf[2], name);
+ }
+ else
+ StringCopy(namebuf, name);
+ UpdateLinkBattleGameStats(outcome);
+ SortLinkBattleRecords(records);
+ i = IndexOfOpponentLinkBattleRecord(records, namebuf, trainerId);
+ if (i == LINK_B_RECORDS_COUNT)
+ {
+ i = LINK_B_RECORDS_COUNT - 1;
+ record = &records->entries[LINK_B_RECORDS_COUNT - 1];
+ InitLinkBattleRecord(record);
+ StringCopyN(record->name, namebuf, OT_NAME_LENGTH);
+ record->trainerId = trainerId;
+ }
+ UpdateLinkBattleRecord(&records->entries[i], outcome);
+ SortLinkBattleRecords(records);
+}
+
+void InitLinkBattleRecords(void)
+{
+ InitLinkBattleRecords_(&gSaveBlock2Ptr->linkBattleRecords);
+}
+
+static void IncTrainerCardWinCount(s32 battlerId)
+{
+ u16 *wins = &gTrainerCards[battlerId].linkBattleWins;
+ (*wins)++;
+ if (*wins > 9999)
+ *wins = 9999;
+}
+
+static void IncTrainerCardLossCount(s32 battlerId)
+{
+ u16 *losses = &gTrainerCards[battlerId].linkBattleLosses;
+ (*losses)++;
+ if (*losses > 9999)
+ *losses = 9999;
+}
+
+static void UpdateBattleOutcomeOnTrainerCards(s32 battlerId)
+{
+ switch (gBattleOutcome)
+ {
+ case B_OUTCOME_WON:
+ IncTrainerCardWinCount(battlerId ^ 1);
+ IncTrainerCardLossCount(battlerId);
+ break;
+ case B_OUTCOME_LOST:
+ IncTrainerCardLossCount(battlerId ^ 1);
+ IncTrainerCardWinCount(battlerId);
+ break;
+ }
+}
+
+void TryRecordLinkBattleOutcome(s32 battlerId)
+{
+ if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(UNKNOWN_MAP_00_04) || gSaveBlock1Ptr->location.mapNum != MAP_NUM(UNKNOWN_MAP_00_04))
+ {
+ UpdateBattleOutcomeOnTrainerCards(battlerId);
+ AddOpponentLinkBattleRecord(&gSaveBlock2Ptr->linkBattleRecords, gTrainerCards[battlerId].playerName, gTrainerCards[battlerId].trainerId, gBattleOutcome, gLinkPlayers[battlerId].language);
+ }
+}
+
+static void PrintTotalRecord(struct LinkBattleRecords * records)
+{
+ u32 nwins = GetGameStat(GAME_STAT_LINK_BATTLE_WINS);
+ u32 nlosses = GetGameStat(GAME_STAT_LINK_BATTLE_LOSSES);
+ u32 ndraws = GetGameStat(GAME_STAT_LINK_BATTLE_DRAWS);
+ s32 i;
+ s32 j;
+ bool32 foundEnd;
+ u8 * strvar;
+
+ if (nwins > 9999)
+ nwins = 9999;
+ if (nlosses > 9999)
+ nlosses = 9999;
+ if (ndraws > 9999)
+ ndraws = 9999;
+
+ ConvertIntToDecimalStringN(gStringVar1, nwins, STR_CONV_MODE_LEFT_ALIGN, 4);
+ ConvertIntToDecimalStringN(gStringVar2, nlosses, STR_CONV_MODE_LEFT_ALIGN, 4);
+ ConvertIntToDecimalStringN(gStringVar3, ndraws, STR_CONV_MODE_LEFT_ALIGN, 4);
+
+ for (i = 0; i < NELEMS(sStringVars); i++)
+ {
+ strvar = sStringVars[i];
+ foundEnd = FALSE;
+ for (j = 0; j < 4; j++)
+ {
+ if (!foundEnd && *strvar == EOS)
+ foundEnd = TRUE;
+ if (foundEnd)
+ *strvar = CHAR_SPACE;
+ strvar++;
+ }
+ *strvar = 0xFF;
+ }
+
+ StringExpandPlaceholders(gStringVar4, gString_BattleRecords_TotalRecord);
+ AddTextPrinterParameterized4(0, 2, 12, 24, 0, 2, &sTextColor, 0, gStringVar4);
+}
+
+static void PrintOpponentBattleRecord(struct LinkBattleRecord * record, u8 y)
+{
+ u8 i = 0;
+ s32 x;
+
+ if (record->wins == 0 && record->losses == 0 && record->draws == 0)
+ {
+ AddTextPrinterParameterized4(0, 2, 0, y, 0, 2, &sTextColor, 0, gString_BattleRecords_7Dashes);
+ for (i = 0; i < 3; i++)
+ {
+ if (i == 0)
+ x = 0x54;
+ else if (i == 1)
+ x = 0x84;
+ else
+ x = 0xB4;
+ AddTextPrinterParameterized4(0, 2, x, y, 0, 2, &sTextColor, 0, gString_BattleRecords_4Dashes);
+ }
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ {
+ if (i == 0)
+ {
+ x = 0;
+ StringFillWithTerminator(gStringVar1, OT_NAME_LENGTH + 1);
+ StringCopyN(gStringVar1, record->name, OT_NAME_LENGTH);
+ }
+ else if (i == 1)
+ {
+ x = 0x54;
+ ConvertIntToDecimalStringN(gStringVar1, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ }
+ else if (i == 2)
+ {
+ x = 0x84;
+ ConvertIntToDecimalStringN(gStringVar1, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ }
+ else
+ {
+ x = 0xB4;
+ ConvertIntToDecimalStringN(gStringVar1, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ }
+ AddTextPrinterParameterized4(0, 2, x, y, 0, 2, &sTextColor, 0, gStringVar1);
+ }
+ }
+}
+
+static void PrintBattleRecords(void)
+{
+ u32 left;
+ s32 i;
+
+ FillWindowPixelRect(0, PIXEL_FILL(0), 0, 0, 0xD8, 0x90);
+ StringExpandPlaceholders(gStringVar4, gString_BattleRecords_PlayersBattleResults);
+ left = 0xD0 - GetStringWidth(2, gStringVar4, -1);
+ AddTextPrinterParameterized4(0, 2, left / 2, 4, 0, 2, &sTextColor, 0, gStringVar4);
+ PrintTotalRecord(&gSaveBlock2Ptr->linkBattleRecords);
+ AddTextPrinterParameterized4(0, 2, 0x54, 0x30, 0, 2, &sTextColor, 0, gString_BattleRecords_ColumnHeaders);
+ for (i = 0; i < LINK_B_RECORDS_COUNT; i++)
+ PrintOpponentBattleRecord(&gSaveBlock2Ptr->linkBattleRecords.entries[i], 0x3D + 14 * i);
+ CommitWindow(0);
+}
+
+static void CommitWindow(u8 windowId)
+{
+ PutWindowTilemap(windowId);
+ CopyWindowToVram(windowId, 3);
+}
+
+static void LoadFrameGfxOnBg(u8 bg)
+{
+ LoadBgTiles(bg, sTiles, 0xC0, 0);
+ CopyToBgTilemapBufferRect(bg, sTilemap, 0, 0, 32, 32);
+ LoadPalette(sPalette, 0, 0x20);
+}
diff --git a/src/berry.c b/src/berry.c
index 5cbcd4e90..91d83f40c 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -5,7 +5,7 @@
extern const struct Berry sBerries[];
-#define ENIGMA_BERRY_STRUCT ({const struct Berry2 *berries = (const struct Berry2 *)sBerries;berries[ITEM_ENIGMA_BERRY - ITEM_CHERI_BERRY];})
+#define ENIGMA_BERRY_STRUCT ({const struct Berry2 *berries = (const struct Berry2 *)sBerries;berries[ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX];})
void sub_809C718(void)
{
@@ -136,10 +136,10 @@ bool32 IsEnigmaBerryValid(void)
const struct Berry * sub_809C8A0(u8 berryIdx)
{
- if (berryIdx == ITEM_ENIGMA_BERRY - ITEM_CHERI_BERRY + 1 && IsEnigmaBerryValid())
+ if (berryIdx == ITEM_TO_BERRY(ITEM_ENIGMA_BERRY) && IsEnigmaBerryValid())
return (struct Berry *)&gSaveBlock1Ptr->enigmaBerry.berry;
- if (berryIdx == 0 || berryIdx > ITEM_ENIGMA_BERRY - ITEM_CHERI_BERRY + 1)
+ if (berryIdx == 0 || berryIdx > ITEM_TO_BERRY(ITEM_ENIGMA_BERRY))
berryIdx = 1;
return &sBerries[berryIdx - 1];
@@ -147,18 +147,18 @@ const struct Berry * sub_809C8A0(u8 berryIdx)
u8 ItemIdToBerryType(u16 itemId)
{
- if (itemId - ITEM_CHERI_BERRY < 0 || itemId - ITEM_CHERI_BERRY > ITEM_ENIGMA_BERRY - ITEM_CHERI_BERRY)
+ if (itemId - FIRST_BERRY_INDEX < 0 || itemId - FIRST_BERRY_INDEX > ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX)
return 1;
- return itemId - ITEM_CHERI_BERRY + 1;
+ return ITEM_TO_BERRY(itemId);
}
u16 BerryTypeToItemId(u16 berryType)
{
- if (berryType - 1 < 0 || berryType - 1 > ITEM_ENIGMA_BERRY - ITEM_CHERI_BERRY)
- return ITEM_CHERI_BERRY;
+ if (berryType - 1 < 0 || berryType - 1 > ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX)
+ return FIRST_BERRY_INDEX;
- return berryType + ITEM_CHERI_BERRY - 1;
+ return berryType + FIRST_BERRY_INDEX - 1;
}
void GetBerryNameByBerryType(u8 berryType, u8 * dest)
diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c
new file mode 100644
index 000000000..f224bbc47
--- /dev/null
+++ b/src/berry_fix_program.c
@@ -0,0 +1,191 @@
+#include "global.h"
+#include "gpu_regs.h"
+#include "multiboot.h"
+#include "malloc.h"
+#include "bg.h"
+#include "graphics.h"
+#include "main.h"
+#include "sprite.h"
+#include "task.h"
+#include "scanline_effect.h"
+#include "window.h"
+#include "text.h"
+#include "help_system.h"
+#include "menu.h"
+#include "m4a.h"
+
+// Static type declarations
+
+typedef struct {
+ u8 state;
+ u8 unk1;
+ u16 unk2;
+ struct MultiBootParam mb;
+} berryfix_t;
+
+// Static RAM declarations
+
+const void * gUnknown_3005EF0;
+int gUnknown_3005EF4;
+size_t gUnknown_3005EF8;
+struct MultiBootParam gUnknown_3005F00;
+
+// Static ROM declarations
+
+static void mb_berry_fix_maincb(void);
+static void mb_berry_fix_task(u8 taskId);
+
+// .rodata
+
+static const void *const gUnknown_847A890[][3] = {
+ {
+ gBerryFixGameboy_Gfx,
+ gBerryFixGameboy_Tilemap,
+ gBerryFixGameboy_Pal
+ }, {
+ gBerryFixGameboyLogo_Gfx,
+ gBerryFixGameboyLogo_Tilemap,
+ gBerryFixGameboyLogo_Pal
+ }, {
+ gBerryFixGbaTransfer_Gfx,
+ gBerryFixGbaTransfer_Tilemap,
+ gBerryFixGbaTransfer_Pal
+ }, {
+ gBerryFixGbaTransferHighlight_Gfx,
+ gBerryFixGbaTransferHighlight_Tilemap,
+ gBerryFixGbaTransferHighlight_Pal
+ }, {
+ gBerryFixGbaTransferError_Gfx,
+ gBerryFixGbaTransferError_Tilemap,
+ gBerryFixGbaTransferError_Pal
+ }, {
+ gBerryFixWindow_Gfx,
+ gBerryFixWindow_Tilemap,
+ gBerryFixWindow_Pal
+ },
+};
+
+extern const u8 gMultiBootProgram_BerryGlitchFix_Start[0x3BF4];
+extern const u8 gMultiBootProgram_BerryGlitchFix_End[];
+
+// .text
+
+static void mb_berry_fix_print(int scene)
+{
+ REG_DISPCNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BLDCNT = 0;
+ LZ77UnCompVram(gUnknown_847A890[scene][0], (void *)BG_CHAR_ADDR(0));
+ LZ77UnCompVram(gUnknown_847A890[scene][1], (void *)BG_SCREEN_ADDR(31));
+ CpuCopy16(gUnknown_847A890[scene][2], (void *)BG_PLTT, 0x200);
+ REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(31) | BGCNT_TXT256x256;
+ REG_DISPCNT = DISPCNT_BG0_ON;
+}
+
+void mb_berry_fix_serve(void) // noreturn
+{
+ u8 taskId;
+ DisableInterrupts(0xFFFF);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ m4aSoundVSyncOff();
+ SetVBlankCallback(NULL);
+ DmaFill32(3, 0, (void *)VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *)PLTT, PLTT_SIZE);
+ ResetSpriteData();
+ ResetTasks();
+ ScanlineEffect_Stop();
+ gUnknown_3005ECC = 0;
+ taskId = CreateTask(mb_berry_fix_task, 0);
+ gTasks[taskId].data[0] = 0;
+ SetMainCallback2(mb_berry_fix_maincb);
+}
+
+static void mb_berry_fix_maincb(void)
+{
+ RunTasks();
+}
+
+static void mb_berry_fix_task(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ mb_berry_fix_print(5);
+ data[0] = 1;
+ break;
+ case 1:
+ if (JOY_NEW(A_BUTTON))
+ {
+ mb_berry_fix_print(0);
+ data[0] = 2;
+ }
+ break;
+ case 2:
+ if (JOY_NEW(A_BUTTON))
+ {
+ mb_berry_fix_print(1);
+ data[0] = 4;
+ }
+ break;
+ case 4:
+ gUnknown_3005EF0 = gMultiBootProgram_BerryGlitchFix_Start;
+ gUnknown_3005EF8 = gMultiBootProgram_BerryGlitchFix_End - gMultiBootProgram_BerryGlitchFix_Start;
+ gUnknown_3005F00.masterp = (void *)gMultiBootProgram_BerryGlitchFix_Start;
+ gUnknown_3005F00.server_type = MULTIBOOT_SERVER_TYPE_NORMAL;
+ MultiBootInit(&gUnknown_3005F00);
+ data[1] = 0;
+ data[0] = 5;
+ break;
+ case 5:
+ if (gUnknown_3005F00.probe_count == 0 && gUnknown_3005F00.response_bit & 0x2 && gUnknown_3005F00.client_bit & 0x2)
+ {
+ data[1]++;
+ if (data[1] > 180)
+ {
+ mb_berry_fix_print(2);
+ MultiBootStartMaster(&gUnknown_3005F00, gUnknown_3005EF0 + MULTIBOOT_HEADER_SIZE, gUnknown_3005EF8 - MULTIBOOT_HEADER_SIZE, 4, 1);
+ data[1] = 0;
+ data[0] = 6;
+ }
+ else
+ gUnknown_3005EF4 = MultiBootMain(&gUnknown_3005F00);
+ }
+ else
+ {
+ data[1] = 0;
+ gUnknown_3005EF4 = MultiBootMain(&gUnknown_3005F00);
+ }
+ break;
+ case 6:
+ gUnknown_3005EF4 = MultiBootMain(&gUnknown_3005F00);
+ if (MultiBootCheckComplete(&gUnknown_3005F00))
+ {
+ mb_berry_fix_print(3);
+ data[0] = 7;
+ }
+ else if (!(gUnknown_3005F00.client_bit & 2))
+ data[0] = 9;
+ break;
+ case 7:
+ data[0] = 8;
+ break;
+ case 8:
+ if (JOY_NEW(A_BUTTON))
+ {
+ DestroyTask(taskId);
+ DoSoftReset();
+ }
+ break;
+ case 9:
+ mb_berry_fix_print(4);
+ data[0] = 10;
+ break;
+ case 10:
+ if (JOY_NEW(A_BUTTON))
+ data[0] = 0;
+ break;
+ }
+}
diff --git a/src/berry_powder.c b/src/berry_powder.c
new file mode 100644
index 000000000..9b3bbc17f
--- /dev/null
+++ b/src/berry_powder.c
@@ -0,0 +1,130 @@
+#include "global.h"
+#include "event_data.h"
+#include "load_save.h"
+#include "menu.h"
+#include "quest_log.h"
+#include "script_menu.h"
+#include "string_util.h"
+#include "strings.h"
+#include "text.h"
+#include "text_window.h"
+
+EWRAM_DATA u8 gUnknown_203F464 = 0;
+
+u32 sub_815EE3C(u32 * a0)
+{
+ return *a0 ^ gSaveBlock2Ptr->encryptionKey;
+}
+
+void sub_815EE54(u32 * a0, u32 a1)
+{
+ *a0 = gSaveBlock2Ptr->encryptionKey ^ a1;
+}
+
+void sub_815EE6C(u32 a0)
+{
+ ApplyNewEncryptionKeyToWord(&gSaveBlock2Ptr->berryCrush.berryPowderAmount, a0);
+}
+
+bool8 sub_815EE88(u32 a0)
+{
+ if (sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < a0)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+bool8 sub_815EEB0(void)
+{
+ if (sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < gSpecialVar_0x8004)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+bool8 sub_815EEE0(u32 a0)
+{
+ u32 * ptr = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ u32 amount = sub_815EE3C(ptr) + a0;
+ if (amount > 99999)
+ {
+ sub_815EE54(ptr, 99999);
+ return FALSE;
+ }
+ else
+ {
+ sub_815EE54(ptr, amount);
+ return TRUE;
+ }
+}
+
+bool8 sub_815EF20(u32 a0)
+{
+ u32 * ptr = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ if (!sub_815EE88(a0))
+ return FALSE;
+ else
+ {
+ u32 amount = sub_815EE3C(ptr);
+ sub_815EE54(ptr, amount - a0);
+ return TRUE;
+ }
+}
+
+bool8 sub_815EF5C(void)
+{
+ u32 * ptr = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ if (!sub_815EE88(gSpecialVar_0x8004))
+ return FALSE;
+ else
+ {
+ u32 amount = sub_815EE3C(ptr);
+ sub_815EE54(ptr, amount - gSpecialVar_0x8004);
+ return TRUE;
+ }
+}
+
+u32 GetBerryPowder(void)
+{
+ return sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount);
+}
+
+void sub_815EFBC(u8 windowId, u32 powder, u8 x, u8 y, u8 speed)
+{
+ ConvertIntToDecimalStringN(gStringVar1, powder, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ AddTextPrinterParameterized(windowId, 0, gStringVar1, x, y, speed, NULL);
+}
+
+void sub_815F014(u8 windowId, u16 baseBlock, u8 palette, u32 powder)
+{
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, baseBlock, palette);
+ AddTextPrinterParameterized(windowId, 0, gOtherText_Powder, 0, 0, -1, NULL);
+ sub_815EFBC(windowId, powder, 39, 12, 0);
+}
+
+void sub_815F070(void)
+{
+ sub_815EFBC(gUnknown_203F464, GetBerryPowder(), 39, 12, 0);
+}
+
+void sub_815F094(void)
+{
+ struct WindowTemplate template;
+
+ if (sub_81119D4(sub_809D6D4) != TRUE)
+ {
+ template = SetWindowTemplateFields(0, 1, 1, 8, 3, 15, 32);
+ gUnknown_203F464 = AddWindow(&template);
+ FillWindowPixelBuffer(gUnknown_203F464, 0);
+ PutWindowTilemap(gUnknown_203F464);
+ TextWindow_SetStdFrame0_WithPal(gUnknown_203F464, 0x21D, 0xD0);
+ sub_815F014(gUnknown_203F464, 0x21D, 0xD, GetBerryPowder());
+ }
+}
+
+void sub_815F114(void)
+{
+ ClearWindowTilemap(gUnknown_203F464);
+ ClearStdWindowAndFrameToTransparent(gUnknown_203F464, 1);
+ RemoveWindow(gUnknown_203F464);
+}
diff --git a/src/bg.c b/src/bg.c
index 5cbd7658e..18cb4ec05 100644
--- a/src/bg.c
+++ b/src/bg.c
@@ -605,88 +605,25 @@ u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset)
return (u8)cursor;
}
-#ifdef NONMATCHING // Matches everything but r5 and r6 are flipped, rrr
bool8 IsDma3ManagerBusyWithBgCopy(void)
{
- u8 mod;
- u8 div;
- s8 reqSpace;
-
int i;
for (i = 0; i < 0x80; i++)
{
- div = i / 0x20;
- mod = i % 0x20;
+ u8 div = i / 0x20;
+ u8 mod = i % 0x20;
- if ((sDmaBusyBitfield[div] & (1 << mod)) != FALSE)
+ if ((sDmaBusyBitfield[div] & (1 << mod)))
{
- reqSpace = CheckForSpaceForDma3Request(i);
+ s8 reqSpace = CheckForSpaceForDma3Request(i);
if (reqSpace == -1)
- {
return TRUE;
- }
-
sDmaBusyBitfield[div] &= ~(1 << mod);
}
}
-
return FALSE;
}
-#else
-NAKED
-bool8 IsDma3ManagerBusyWithBgCopy(void)
-{
- asm("push {r4-r7,lr}\n\
- mov r5, #0\n\
- mov r7, #0x1\n\
- neg r7, r7\n\
-_08001ADC:\n\
- add r0, r5, #0\n\
- cmp r5, #0\n\
- bge _08001AE4\n\
- add r0, #0x1F\n\
-_08001AE4:\n\
- asr r0, #5\n\
- lsl r2, r0, #24\n\
- lsl r0, #5\n\
- sub r0, r5, r0\n\
- lsl r0, #24\n\
- lsr r0, #24\n\
- ldr r1, =sDmaBusyBitfield\n\
- lsr r2, #22\n\
- add r4, r2, r1\n\
- mov r6, #0x1\n\
- lsl r6, r0\n\
- ldr r0, [r4]\n\
- and r0, r6\n\
- cmp r0, #0\n\
- beq _08001B22\n\
- lsl r0, r5, #16\n\
- asr r0, #16\n\
- bl CheckForSpaceForDma3Request\n\
- lsl r0, #24\n\
- asr r0, #24\n\
- cmp r0, r7\n\
- bne _08001B1C\n\
- mov r0, #0x1\n\
- b _08001B2A\n\
- .pool\n\
-_08001B1C:\n\
- ldr r0, [r4]\n\
- bic r0, r6\n\
- str r0, [r4]\n\
-_08001B22:\n\
- add r5, #0x1\n\
- cmp r5, #0x7F\n\
- ble _08001ADC\n\
- mov r0, #0\n\
-_08001B2A:\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n");
-}
-#endif // NONMATCHING
void ShowBg(u8 bg)
{
@@ -928,79 +865,58 @@ void SetBgAffine(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispCenterX, s16 dis
SetBgAffineInternal(bg, srcCenterX, srcCenterY, dispCenterX, dispCenterY, scaleX, scaleY, rotationAngle);
}
-u8 Unused_AdjustBgMosaic(u8 a1, u8 a2)
+u8 AdjustBgMosaic(u8 value, u8 mode)
{
- u16 result;
- s16 test1;
- s16 test2;
-
- result = GetGpuReg(REG_OFFSET_MOSAIC);
-
- test1 = result & 0xF;
- test2 = (result >> 4) & 0xF;
- result &= 0xFF00;
+ u16 mosaicSize;
+ s16 bgMosaicH;
+ s16 bgMosaicV;
+ mosaicSize = GetGpuReg(REG_OFFSET_MOSAIC);
+ bgMosaicH = mosaicSize & 0xF;
+ bgMosaicV = (mosaicSize >> 4) & 0xF;
+ mosaicSize &= 0xFF00;
- switch (a2)
+ switch (mode)
{
- case 0:
- default:
- test1 = a1 & 0xF;
- test2 = a1 >> 0x4;
- break;
- case 1:
- test1 = a1 & 0xF;
- break;
- case 2:
- if ((test1 + a1) > 0xF)
- {
- test1 = 0xF;
- }
- else
- {
- test1 += a1;
- }
- break;
- case 3:
- if ((test1 - a1) < 0)
- {
- test1 = 0x0;
- }
- else
- {
- test1 -= a1;
- }
- break;
- case 4:
- test2 = a1 & 0xF;
- break;
- case 5:
- if ((test2 + a1) > 0xF)
- {
- test2 = 0xF;
- }
- else
- {
- test2 += a1;
- }
- break;
- case 6:
- if ((test2 - a1) < 0)
- {
- test2 = 0x0;
- }
- else
- {
- test2 -= a1;
- }
- break;
+ case BG_MOSAIC_SET:
+ default:
+ bgMosaicH = value & 0xF;
+ bgMosaicV = value >> 0x4;
+ break;
+ case BG_MOSAIC_SET_H:
+ bgMosaicH = value & 0xF;
+ break;
+ case BG_MOSAIC_INC_H:
+ if ((bgMosaicH + value) > 0xF)
+ bgMosaicH = 0xF;
+ else
+ bgMosaicH += value;
+ break;
+ case BG_MOSAIC_DEC_H:
+ if ((bgMosaicH - value) < 0)
+ bgMosaicH = 0x0;
+ else
+ bgMosaicH -= value;
+ break;
+ case BG_MOSAIC_SET_V:
+ bgMosaicV = value & 0xF;
+ break;
+ case BG_MOSAIC_INC_V:
+ if ((bgMosaicV + value) > 0xF)
+ bgMosaicV = 0xF;
+ else
+ bgMosaicV += value;
+ break;
+ case BG_MOSAIC_DEC_V:
+ if ((bgMosaicV - value) < 0)
+ bgMosaicV = 0x0;
+ else
+ bgMosaicV -= value;
+ break;
}
-
- result |= ((test2 << 0x4) & 0xF0);
- result |= (test1 & 0xF);
-
- SetGpuReg(REG_OFFSET_MOSAIC, result);
-
- return result;
+ mosaicSize |= ((bgMosaicV << 0x4) & 0xF0);
+ mosaicSize |= (bgMosaicH & 0xF);
+ SetGpuReg(REG_OFFSET_MOSAIC, mosaicSize);
+ return mosaicSize;
}
void SetBgTilemapBuffer(u8 bg, void *tilemap)
diff --git a/src/buy_menu_helpers.c b/src/buy_menu_helpers.c
new file mode 100644
index 000000000..4cdf90e4e
--- /dev/null
+++ b/src/buy_menu_helpers.c
@@ -0,0 +1,216 @@
+#include "global.h"
+#include "task.h"
+#include "text.h"
+#include "window.h"
+#include "text_window.h"
+#include "money.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "menu.h"
+#include "shop.h"
+
+static const struct WindowTemplate sShopBuyMenuWindowTemplatesNormal[] =
+{
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0x1,
+ .width = 0x8,
+ .height = 0x3,
+ .paletteNum = 0xF,
+ .baseBlock = 0x27,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0xB,
+ .width = 0xD,
+ .height = 0x2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x3F,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x2,
+ .tilemapTop = 0xF,
+ .width = 0x1A,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0x59,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x11,
+ .tilemapTop = 0x9,
+ .width = 0xC,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0xC1,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0xB,
+ .tilemapTop = 0x1,
+ .width = 0x11,
+ .height = 0xC,
+ .paletteNum = 0xE,
+ .baseBlock = 0xF1,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x5,
+ .tilemapTop = 0xE,
+ .width = 0x19,
+ .height = 0x6,
+ .paletteNum = 0xF,
+ .baseBlock = 0x1BD,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+// firered uses different layout when selling TMs
+static const struct WindowTemplate sShopBuyMenuWindowTemplatesTM[] =
+{
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0x1,
+ .width = 0x8,
+ .height = 0x3,
+ .paletteNum = 0xF,
+ .baseBlock = 0x27,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0xB,
+ .width = 0xD,
+ .height = 0x2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x3F,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x2,
+ .tilemapTop = 0xF,
+ .width = 0x1A,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0x59,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x11,
+ .tilemapTop = 0x9,
+ .width = 0xC,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0xC1,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0xB,
+ .tilemapTop = 0x1,
+ .width = 0x11,
+ .height = 0xA,
+ .paletteNum = 0xE,
+ .baseBlock = 0xF1,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0xC,
+ .tilemapTop = 0xC,
+ .width = 0x12,
+ .height = 0x8,
+ .paletteNum = 0xE,
+ .baseBlock = 0x19B,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0xE,
+ .width = 0xA,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0x22B,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+static const struct WindowTemplate sShopBuyMenuYesNoWindowTemplate =
+{
+ .bg = 0x0,
+ .tilemapLeft = 0x15,
+ .tilemapTop = 0x9,
+ .width = 0x6,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0xC1,
+};
+
+static const struct TextColor sShopBuyMenuTextColors[] =
+{
+ {
+ .fgColor = 0,
+ .bgColor = 1,
+ .shadowColor = 2,
+ },
+ {
+ .fgColor = 0,
+ .bgColor = 2,
+ .shadowColor = 3,
+ },
+ {
+ .fgColor = 0,
+ .bgColor = 3,
+ .shadowColor = 2,
+ },
+};
+
+void BuyMenuInitWindows(bool32 isSellingTM)
+{
+ if (isSellingTM != TRUE)
+ InitWindows(sShopBuyMenuWindowTemplatesNormal);
+ else
+ InitWindows(sShopBuyMenuWindowTemplatesTM);
+ DeactivateAllTextPrinters();
+ TextWindow_SetUserSelectedFrame(0, 0x1, 0xD0);
+ TextWindow_LoadResourcesStdFrame0(0, 0x13, 0xE0);
+ TextWindow_SetStdFrame0_WithPal(0, 0xA, 0xF0);
+ PutWindowTilemap(0);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ if (isSellingTM == TRUE)
+ PutWindowTilemap(6);
+}
+
+void BuyMenuDrawMoneyBox(void)
+{
+ PrintMoneyAmountInMoneyBoxWithBorder(0, 0xA, 0xF, GetMoney(&gSaveBlock1Ptr->money));
+}
+
+void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 color)
+{
+ AddTextPrinterParameterized4(windowId, font, x, y, letterSpacing, lineSpacing, &sShopBuyMenuTextColors[color], speed, text);
+}
+
+void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback)
+{
+ DisplayMessageAndContinueTask(taskId, 2, 0x13, 0xE, sub_809B56C(), GetTextSpeedSetting(), text, callback);
+ ScheduleBgCopyTilemapToVram(0);
+}
+
+void BuyMenuQuantityBoxNormalBorder(u8 windowId, bool8 copyToVram)
+{
+ DrawStdFrameWithCustomTileAndPalette(windowId, copyToVram, 0x1, 0xD);
+}
+
+void BuyMenuQuantityBoxThinBorder(u8 windowId, bool8 copyToVram)
+{
+ DrawStdFrameWithCustomTileAndPalette(windowId, copyToVram, 0xA, 0xF);
+}
+
+void BuyMenuConfirmPurchase(u8 taskId, const struct YesNoFuncTable *yesNo)
+{
+ CreateYesNoMenuWithCallbacks(taskId, &sShopBuyMenuYesNoWindowTemplate, 2, 0, 2, 1, 0xD, yesNo);
+}
diff --git a/src/cable_car_util.c b/src/cable_car_util.c
new file mode 100644
index 000000000..c57038e1c
--- /dev/null
+++ b/src/cable_car_util.c
@@ -0,0 +1,38 @@
+#include "global.h"
+
+static void CableCarUtil_FillWrapped(void *dest, u16 value, u8 left, u8 top, u8 width, u8 height)
+{
+ u8 i;
+ u8 j;
+ u8 x;
+ u8 y;
+
+ for (i = 0, y = top; i < height; i++)
+ {
+ for (x = left, j = 0; j < width; j++)
+ {
+ *(u16 *)&((u8 *)dest)[y * 64 + x * 2] = value;
+ x = (x + 1) % 32;
+ }
+ y = (y + 1) % 32;
+ }
+}
+
+static void CableCarUtil_CopyWrapped(void *dest, const u16 *src, u8 left, u8 top, u8 width, u8 height)
+{
+ u8 i;
+ u8 j;
+ u8 x;
+ u8 y;
+ const u16 *_src;
+
+ for (i = 0, _src = src, y = top; i < height; i++)
+ {
+ for (x = left, j = 0; j < width; j++)
+ {
+ *(u16 *)&((u8 *)dest)[y * 64 + x * 2] = *_src++;
+ x = (x + 1) % 32;
+ }
+ y = (y + 1) % 32;
+ }
+}
diff --git a/src/cereader_tool.c b/src/cereader_tool.c
new file mode 100644
index 000000000..1b25f4828
--- /dev/null
+++ b/src/cereader_tool.c
@@ -0,0 +1,88 @@
+#include "global.h"
+#include "util.h"
+#include "save.h"
+#include "malloc.h"
+#include "cereader_tool.h"
+
+u8 sub_815D654(void)
+{
+ return (gSaveBlock1Ptr->unkArray[0].unk9 + 1) % 256;
+}
+
+static bool32 ValidateTrainerTowerTrainer(struct TrainerTowerTrainer * trainer)
+{
+ if (trainer->unk_001 < 1 || trainer->unk_001 > 8)
+ return FALSE;
+ if (trainer->unk_002 > 2)
+ return FALSE;
+ if (CalcByteArraySum((const u8 *)trainer, offsetof(typeof(*trainer), checksum)) != trainer->checksum)
+ return FALSE;
+ return TRUE;
+}
+
+bool32 ValidateTrainerTowerData(struct TrainerTowerData * ttdata)
+{
+ u32 count = ttdata->count;
+ s32 i;
+ if (count < 1 || count > 8)
+ return FALSE;
+ for (i = 0; i < count; i++)
+ {
+ if (!ValidateTrainerTowerTrainer(&ttdata->trainers[i]))
+ return FALSE;
+ }
+ if (CalcByteArraySum((const u8 *)ttdata->trainers, count * sizeof(ttdata->trainers[0])) != ttdata->checksum)
+ return FALSE;
+ return TRUE;
+}
+
+#define SEC30_SIZE (offsetof(struct TrainerTowerData, trainers[4]))
+#define SEC31_SIZE (sizeof(struct TrainerTowerData) - SEC30_SIZE)
+
+static bool32 CEReaderTool_SaveTrainerTower_r(struct TrainerTowerData * ttdata, u8 * buffer)
+{
+ AGB_ASSERT_EX(ttdata->dummy == 0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/cereader_tool.c", 198);
+ AGB_ASSERT_EX(ttdata->id == 0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/cereader_tool.c", 199)
+
+ memset(buffer, 0, 0x1000);
+ memcpy(buffer, ttdata, SEC30_SIZE);
+ buffer[1] = sub_815D654();
+ if (TryWriteSpecialSaveSection(30, buffer) != TRUE)
+ return FALSE;
+ memset(buffer, 0, 0x1000);
+ memcpy(buffer, (u8 *)ttdata + SEC30_SIZE, SEC31_SIZE);
+ if (TryWriteSpecialSaveSection(31, buffer) != TRUE)
+ return FALSE;
+ return TRUE;
+}
+
+bool32 CEReaderTool_SaveTrainerTower(struct TrainerTowerData * ttdata)
+{
+ u8 * buffer = AllocZeroed(0x1000);
+ bool32 result = CEReaderTool_SaveTrainerTower_r(ttdata, buffer);
+ Free(buffer);
+ return result;
+}
+
+static bool32 CEReaderTool_LoadTrainerTower_r(struct TrainerTowerData * ttdata, void * buffer)
+{
+ if (TryCopySpecialSaveSection(30, buffer) != 1)
+ return FALSE;
+ memcpy(ttdata + 0x000, buffer, SEC30_SIZE);
+
+ if (TryCopySpecialSaveSection(31, buffer) != 1)
+ return FALSE;
+ memcpy((u8 *)ttdata + SEC30_SIZE, buffer, SEC31_SIZE);
+
+ if (!ValidateTrainerTowerData(ttdata))
+ return FALSE;
+ return TRUE;
+}
+
+bool32 CEReaderTool_LoadTrainerTower(struct TrainerTowerData * ttdata)
+{
+ void * buffer = AllocZeroed(0x1000);
+ bool32 success = CEReaderTool_LoadTrainerTower_r(ttdata, buffer);
+ Free(buffer);
+ return success;
+}
diff --git a/src/coins.c b/src/coins.c
index 08646e2f9..9de600e7f 100644
--- a/src/coins.c
+++ b/src/coins.c
@@ -3,8 +3,8 @@
#include "text.h"
#include "menu.h"
#include "text_window.h"
+#include "strings.h"
-extern const u8 gText_Coins[];
extern const u8 gUnknown_8417C2D[];
EWRAM_DATA static u8 sCoinsWindowId = 0;
@@ -61,7 +61,7 @@ void PrintCoinsString_Parameterized(u8 windowId, u32 coinAmount, u8 x, u8 y, u8
void sub_80D0674(u8 windowId, u16 tileStart, u8 palette, u32 coinAmount)
{
- SetWindowBorderStyle(windowId, FALSE, tileStart, palette);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, tileStart, palette);
AddTextPrinterParameterized(windowId, 2, gUnknown_8417C2D, 0, 0, 0xFF, 0);
PrintCoinsString_Parameterized(windowId, coinAmount, 0x10, 0xC, 0);
}
@@ -80,15 +80,14 @@ void PrintCoinsString(u32 coinAmount)
void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y)
{
- struct WindowTemplate template, template2;
+ struct WindowTemplate template;
- SetWindowTemplateFields(&template, 0, x + 1, y + 1, 8, 3, 0xF, 0x20);
- template2 = template; // again, why...
- sCoinsWindowId = AddWindow(&template2);
+ template = SetWindowTemplateFields(0, x + 1, y + 1, 8, 3, 0xF, 0x20);
+ sCoinsWindowId = AddWindow(&template);
FillWindowPixelBuffer(sCoinsWindowId, 0);
PutWindowTilemap(sCoinsWindowId);
- sub_814FF2C(sCoinsWindowId, 0x21D, 0xD0);
- SetWindowBorderStyle(sCoinsWindowId, FALSE, 0x21D, 0xD);
+ TextWindow_SetStdFrame0_WithPal(sCoinsWindowId, 0x21D, 0xD0);
+ DrawStdFrameWithCustomTileAndPalette(sCoinsWindowId, FALSE, 0x21D, 0xD);
AddTextPrinterParameterized(sCoinsWindowId, 2, gUnknown_8417C2D, 0, 0, 0xFF, 0);
PrintCoinsString(coinAmount);
}
@@ -96,6 +95,6 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y)
void HideCoinsWindow(void)
{
ClearWindowTilemap(sCoinsWindowId);
- sub_810F4D8(sCoinsWindowId, TRUE);
+ ClearStdWindowAndFrameToTransparent(sCoinsWindowId, TRUE);
RemoveWindow(sCoinsWindowId);
}
diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h
new file mode 100644
index 000000000..1fa7f75a9
--- /dev/null
+++ b/src/data/battle_moves.h
@@ -0,0 +1,4617 @@
+const struct BattleMove gBattleMoves[MOVES_COUNT] =
+{
+ [MOVE_NONE] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 0,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_POUND] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_KARATE_CHOP] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 50,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DOUBLE_SLAP] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_COMET_PUNCH] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 18,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MEGA_PUNCH] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_PAY_DAY] =
+ {
+ .effect = EFFECT_PAY_DAY,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FIRE_PUNCH] =
+ {
+ .effect = EFFECT_BURN_HIT,
+ .power = 75,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ICE_PUNCH] =
+ {
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 75,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_THUNDER_PUNCH] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 75,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SCRATCH] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_VICE_GRIP] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 55,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_GUILLOTINE] =
+ {
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_RAZOR_WIND] =
+ {
+ .effect = EFFECT_RAZOR_WIND,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SWORDS_DANCE] =
+ {
+ .effect = EFFECT_ATTACK_UP_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_CUT] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_GUST] =
+ {
+ .effect = EFFECT_GUST,
+ .power = 40,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_WING_ATTACK] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 60,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_WHIRLWIND] =
+ {
+ .effect = EFFECT_ROAR,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -6,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FLY] =
+ {
+ .effect = EFFECT_SEMI_INVULNERABLE,
+ .power = 70,
+ .type = TYPE_FLYING,
+ .accuracy = 95,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BIND] =
+ {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SLAM] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_VINE_WHIP] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 35,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_STOMP] =
+ {
+ .effect = EFFECT_FLINCH_MINIMIZE_HIT,
+ .power = 65,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DOUBLE_KICK] =
+ {
+ .effect = EFFECT_DOUBLE_HIT,
+ .power = 30,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MEGA_KICK] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 120,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_JUMP_KICK] =
+ {
+ .effect = EFFECT_RECOIL_IF_MISS,
+ .power = 70,
+ .type = TYPE_FIGHTING,
+ .accuracy = 95,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ROLLING_KICK] =
+ {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 60,
+ .type = TYPE_FIGHTING,
+ .accuracy = 85,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SAND_ATTACK] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HEADBUTT] =
+ {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HORN_ATTACK] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 65,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FURY_ATTACK] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_HORN_DRILL] =
+ {
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_TACKLE] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 35,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BODY_SLAM] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 85,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_WRAP] =
+ {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_TAKE_DOWN] =
+ {
+ .effect = EFFECT_RECOIL,
+ .power = 90,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_THRASH] =
+ {
+ .effect = EFFECT_RAMPAGE,
+ .power = 90,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_RANDOM,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DOUBLE_EDGE] =
+ {
+ .effect = EFFECT_DOUBLE_EDGE,
+ .power = 120,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_TAIL_WHIP] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_POISON_STING] =
+ {
+ .effect = EFFECT_POISON_HIT,
+ .power = 15,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_TWINEEDLE] =
+ {
+ .effect = EFFECT_TWINEEDLE,
+ .power = 25,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PIN_MISSILE] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 14,
+ .type = TYPE_BUG,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_LEER] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BITE] =
+ {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 60,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_GROWL] =
+ {
+ .effect = EFFECT_ATTACK_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ROAR] =
+ {
+ .effect = EFFECT_ROAR,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -6,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SING] =
+ {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 55,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SUPERSONIC] =
+ {
+ .effect = EFFECT_CONFUSE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 55,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SONIC_BOOM] =
+ {
+ .effect = EFFECT_SONICBOOM,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DISABLE] =
+ {
+ .effect = EFFECT_DISABLE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 55,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ACID] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 40,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_EMBER] =
+ {
+ .effect = EFFECT_BURN_HIT,
+ .power = 40,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FLAMETHROWER] =
+ {
+ .effect = EFFECT_BURN_HIT,
+ .power = 95,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MIST] =
+ {
+ .effect = EFFECT_MIST,
+ .power = 0,
+ .type = TYPE_ICE,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_WATER_GUN] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 40,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_HYDRO_PUMP] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 120,
+ .type = TYPE_WATER,
+ .accuracy = 80,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SURF] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 95,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ICE_BEAM] =
+ {
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 95,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BLIZZARD] =
+ {
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 120,
+ .type = TYPE_ICE,
+ .accuracy = 70,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PSYBEAM] =
+ {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 65,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BUBBLE_BEAM] =
+ {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 65,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_AURORA_BEAM] =
+ {
+ .effect = EFFECT_ATTACK_DOWN_HIT,
+ .power = 65,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HYPER_BEAM] =
+ {
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_PECK] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 35,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DRILL_PECK] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SUBMISSION] =
+ {
+ .effect = EFFECT_RECOIL,
+ .power = 80,
+ .type = TYPE_FIGHTING,
+ .accuracy = 80,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_LOW_KICK] =
+ {
+ .effect = EFFECT_LOW_KICK,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_COUNTER] =
+ {
+ .effect = EFFECT_COUNTER,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = -5,
+ .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SEISMIC_TOSS] =
+ {
+ .effect = EFFECT_LEVEL_DAMAGE,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_STRENGTH] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ABSORB] =
+ {
+ .effect = EFFECT_ABSORB,
+ .power = 20,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MEGA_DRAIN] =
+ {
+ .effect = EFFECT_ABSORB,
+ .power = 40,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_LEECH_SEED] =
+ {
+ .effect = EFFECT_LEECH_SEED,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_GROWTH] =
+ {
+ .effect = EFFECT_SPECIAL_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_RAZOR_LEAF] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 55,
+ .type = TYPE_GRASS,
+ .accuracy = 95,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SOLAR_BEAM] =
+ {
+ .effect = EFFECT_SOLARBEAM,
+ .power = 120,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_POISON_POWDER] =
+ {
+ .effect = EFFECT_POISON,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 75,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_STUN_SPORE] =
+ {
+ .effect = EFFECT_PARALYZE,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 75,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SLEEP_POWDER] =
+ {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 75,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PETAL_DANCE] =
+ {
+ .effect = EFFECT_RAMPAGE,
+ .power = 70,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_RANDOM,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_STRING_SHOT] =
+ {
+ .effect = EFFECT_SPEED_DOWN,
+ .power = 0,
+ .type = TYPE_BUG,
+ .accuracy = 95,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DRAGON_RAGE] =
+ {
+ .effect = EFFECT_DRAGON_RAGE,
+ .power = 1,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FIRE_SPIN] =
+ {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_FIRE,
+ .accuracy = 70,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_THUNDER_SHOCK] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 40,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_THUNDERBOLT] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 95,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_THUNDER_WAVE] =
+ {
+ .effect = EFFECT_PARALYZE,
+ .power = 0,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_THUNDER] =
+ {
+ .effect = EFFECT_THUNDER,
+ .power = 120,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 70,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ROCK_THROW] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 50,
+ .type = TYPE_ROCK,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_EARTHQUAKE] =
+ {
+ .effect = EFFECT_EARTHQUAKE,
+ .power = 100,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FISSURE] =
+ {
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_GROUND,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DIG] =
+ {
+ .effect = EFFECT_SEMI_INVULNERABLE,
+ .power = 60,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_TOXIC] =
+ {
+ .effect = EFFECT_TOXIC,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_CONFUSION] =
+ {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 50,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PSYCHIC] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 90,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HYPNOSIS] =
+ {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 60,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MEDITATE] =
+ {
+ .effect = EFFECT_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_AGILITY] =
+ {
+ .effect = EFFECT_SPEED_UP_2,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_QUICK_ATTACK] =
+ {
+ .effect = EFFECT_QUICK_ATTACK,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 1,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_RAGE] =
+ {
+ .effect = EFFECT_RAGE,
+ .power = 20,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_TELEPORT] =
+ {
+ .effect = EFFECT_TELEPORT,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_NIGHT_SHADE] =
+ {
+ .effect = EFFECT_LEVEL_DAMAGE,
+ .power = 1,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MIMIC] =
+ {
+ .effect = EFFECT_MIMIC,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_SCREECH] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DOUBLE_TEAM] =
+ {
+ .effect = EFFECT_EVASION_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_RECOVER] =
+ {
+ .effect = EFFECT_RESTORE_HP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_HARDEN] =
+ {
+ .effect = EFFECT_DEFENSE_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_MINIMIZE] =
+ {
+ .effect = EFFECT_MINIMIZE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_SMOKESCREEN] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_CONFUSE_RAY] =
+ {
+ .effect = EFFECT_CONFUSE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_WITHDRAW] =
+ {
+ .effect = EFFECT_DEFENSE_UP,
+ .power = 0,
+ .type = TYPE_WATER,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_DEFENSE_CURL] =
+ {
+ .effect = EFFECT_DEFENSE_CURL,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_BARRIER] =
+ {
+ .effect = EFFECT_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_LIGHT_SCREEN] =
+ {
+ .effect = EFFECT_LIGHT_SCREEN,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_HAZE] =
+ {
+ .effect = EFFECT_HAZE,
+ .power = 0,
+ .type = TYPE_ICE,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_REFLECT] =
+ {
+ .effect = EFFECT_REFLECT,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_FOCUS_ENERGY] =
+ {
+ .effect = EFFECT_FOCUS_ENERGY,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_BIDE] =
+ {
+ .effect = EFFECT_BIDE,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_METRONOME] =
+ {
+ .effect = EFFECT_METRONOME,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_MIRROR_MOVE] =
+ {
+ .effect = EFFECT_MIRROR_MOVE,
+ .power = 0,
+ .type = TYPE_FLYING,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_SELF_DESTRUCT] =
+ {
+ .effect = EFFECT_EXPLOSION,
+ .power = 200,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_EGG_BOMB] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 100,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_LICK] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 20,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SMOG] =
+ {
+ .effect = EFFECT_POISON_HIT,
+ .power = 20,
+ .type = TYPE_POISON,
+ .accuracy = 70,
+ .pp = 20,
+ .secondaryEffectChance = 40,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SLUDGE] =
+ {
+ .effect = EFFECT_POISON_HIT,
+ .power = 65,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BONE_CLUB] =
+ {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 65,
+ .type = TYPE_GROUND,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FIRE_BLAST] =
+ {
+ .effect = EFFECT_BURN_HIT,
+ .power = 120,
+ .type = TYPE_FIRE,
+ .accuracy = 85,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_WATERFALL] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_CLAMP] =
+ {
+ .effect = EFFECT_TRAP,
+ .power = 35,
+ .type = TYPE_WATER,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SWIFT] =
+ {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SKULL_BASH] =
+ {
+ .effect = EFFECT_SKULL_BASH,
+ .power = 100,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SPIKE_CANNON] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 20,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_CONSTRICT] =
+ {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 10,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_AMNESIA] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_KINESIS] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 80,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SOFT_BOILED] =
+ {
+ .effect = EFFECT_SOFTBOILED,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HI_JUMP_KICK] =
+ {
+ .effect = EFFECT_RECOIL_IF_MISS,
+ .power = 85,
+ .type = TYPE_FIGHTING,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_GLARE] =
+ {
+ .effect = EFFECT_PARALYZE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DREAM_EATER] =
+ {
+ .effect = EFFECT_DREAM_EATER,
+ .power = 100,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_POISON_GAS] =
+ {
+ .effect = EFFECT_POISON,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 55,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BARRAGE] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_LEECH_LIFE] =
+ {
+ .effect = EFFECT_ABSORB,
+ .power = 20,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_LOVELY_KISS] =
+ {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SKY_ATTACK] =
+ {
+ .effect = EFFECT_SKY_ATTACK,
+ .power = 140,
+ .type = TYPE_FLYING,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_TRANSFORM] =
+ {
+ .effect = EFFECT_TRANSFORM,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_BUBBLE] =
+ {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 20,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DIZZY_PUNCH] =
+ {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SPORE] =
+ {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FLASH] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 70,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PSYWAVE] =
+ {
+ .effect = EFFECT_PSYWAVE,
+ .power = 1,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 80,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SPLASH] =
+ {
+ .effect = EFFECT_SPLASH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ACID_ARMOR] =
+ {
+ .effect = EFFECT_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_CRABHAMMER] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 90,
+ .type = TYPE_WATER,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_EXPLOSION] =
+ {
+ .effect = EFFECT_EXPLOSION,
+ .power = 250,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FURY_SWIPES] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 18,
+ .type = TYPE_NORMAL,
+ .accuracy = 80,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BONEMERANG] =
+ {
+ .effect = EFFECT_DOUBLE_HIT,
+ .power = 50,
+ .type = TYPE_GROUND,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_REST] =
+ {
+ .effect = EFFECT_REST,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_ROCK_SLIDE] =
+ {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 75,
+ .type = TYPE_ROCK,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HYPER_FANG] =
+ {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SHARPEN] =
+ {
+ .effect = EFFECT_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_CONVERSION] =
+ {
+ .effect = EFFECT_CONVERSION,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_TRI_ATTACK] =
+ {
+ .effect = EFFECT_TRI_ATTACK,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SUPER_FANG] =
+ {
+ .effect = EFFECT_SUPER_FANG,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SLASH] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SUBSTITUTE] =
+ {
+ .effect = EFFECT_SUBSTITUTE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_STRUGGLE] =
+ {
+ .effect = EFFECT_RECOIL,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 1,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SKETCH] =
+ {
+ .effect = EFFECT_SKETCH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 1,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_TRIPLE_KICK] =
+ {
+ .effect = EFFECT_TRIPLE_KICK,
+ .power = 10,
+ .type = TYPE_FIGHTING,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_THIEF] =
+ {
+ .effect = EFFECT_THIEF,
+ .power = 40,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SPIDER_WEB] =
+ {
+ .effect = EFFECT_MEAN_LOOK,
+ .power = 0,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MIND_READER] =
+ {
+ .effect = EFFECT_LOCK_ON,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_NIGHTMARE] =
+ {
+ .effect = EFFECT_NIGHTMARE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FLAME_WHEEL] =
+ {
+ .effect = EFFECT_THAW_HIT,
+ .power = 60,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SNORE] =
+ {
+ .effect = EFFECT_SNORE,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_CURSE] =
+ {
+ .effect = EFFECT_CURSE,
+ .power = 0,
+ .type = TYPE_MYSTERY,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_FLAIL] =
+ {
+ .effect = EFFECT_FLAIL,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_CONVERSION_2] =
+ {
+ .effect = EFFECT_CONVERSION_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_AEROBLAST] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 100,
+ .type = TYPE_FLYING,
+ .accuracy = 95,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_COTTON_SPORE] =
+ {
+ .effect = EFFECT_SPEED_DOWN_2,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 85,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_REVERSAL] =
+ {
+ .effect = EFFECT_FLAIL,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SPITE] =
+ {
+ .effect = EFFECT_SPITE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_POWDER_SNOW] =
+ {
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 40,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PROTECT] =
+ {
+ .effect = EFFECT_PROTECT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 3,
+ .flags = 0,
+ },
+
+ [MOVE_MACH_PUNCH] =
+ {
+ .effect = EFFECT_QUICK_ATTACK,
+ .power = 40,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 1,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SCARY_FACE] =
+ {
+ .effect = EFFECT_SPEED_DOWN_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FAINT_ATTACK] =
+ {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_DARK,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SWEET_KISS] =
+ {
+ .effect = EFFECT_CONFUSE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BELLY_DRUM] =
+ {
+ .effect = EFFECT_BELLY_DRUM,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_SLUDGE_BOMB] =
+ {
+ .effect = EFFECT_POISON_HIT,
+ .power = 90,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MUD_SLAP] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN_HIT,
+ .power = 20,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_OCTAZOOKA] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN_HIT,
+ .power = 65,
+ .type = TYPE_WATER,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SPIKES] =
+ {
+ .effect = EFFECT_SPIKES,
+ .power = 0,
+ .type = TYPE_GROUND,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_OPPONENTS_FIELD,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ZAP_CANNON] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 100,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 50,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FORESIGHT] =
+ {
+ .effect = EFFECT_FORESIGHT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DESTINY_BOND] =
+ {
+ .effect = EFFECT_DESTINY_BOND,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_PERISH_SONG] =
+ {
+ .effect = EFFECT_PERISH_SONG,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ICY_WIND] =
+ {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 55,
+ .type = TYPE_ICE,
+ .accuracy = 95,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DETECT] =
+ {
+ .effect = EFFECT_PROTECT,
+ .power = 0,
+ .type = TYPE_FIGHTING,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 3,
+ .flags = 0,
+ },
+
+ [MOVE_BONE_RUSH] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 25,
+ .type = TYPE_GROUND,
+ .accuracy = 80,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_LOCK_ON] =
+ {
+ .effect = EFFECT_LOCK_ON,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_OUTRAGE] =
+ {
+ .effect = EFFECT_RAMPAGE,
+ .power = 90,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_RANDOM,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SANDSTORM] =
+ {
+ .effect = EFFECT_SANDSTORM,
+ .power = 0,
+ .type = TYPE_ROCK,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_GIGA_DRAIN] =
+ {
+ .effect = EFFECT_ABSORB,
+ .power = 60,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ENDURE] =
+ {
+ .effect = EFFECT_ENDURE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 3,
+ .flags = 0,
+ },
+
+ [MOVE_CHARM] =
+ {
+ .effect = EFFECT_ATTACK_DOWN_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ROLLOUT] =
+ {
+ .effect = EFFECT_ROLLOUT,
+ .power = 30,
+ .type = TYPE_ROCK,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FALSE_SWIPE] =
+ {
+ .effect = EFFECT_FALSE_SWIPE,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SWAGGER] =
+ {
+ .effect = EFFECT_SWAGGER,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MILK_DRINK] =
+ {
+ .effect = EFFECT_SOFTBOILED,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_SPARK] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 65,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FURY_CUTTER] =
+ {
+ .effect = EFFECT_FURY_CUTTER,
+ .power = 10,
+ .type = TYPE_BUG,
+ .accuracy = 95,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_STEEL_WING] =
+ {
+ .effect = EFFECT_DEFENSE_UP_HIT,
+ .power = 70,
+ .type = TYPE_STEEL,
+ .accuracy = 90,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MEAN_LOOK] =
+ {
+ .effect = EFFECT_MEAN_LOOK,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ATTRACT] =
+ {
+ .effect = EFFECT_ATTRACT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SLEEP_TALK] =
+ {
+ .effect = EFFECT_SLEEP_TALK,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_HEAL_BELL] =
+ {
+ .effect = EFFECT_HEAL_BELL,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_RETURN] =
+ {
+ .effect = EFFECT_RETURN,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_PRESENT] =
+ {
+ .effect = EFFECT_PRESENT,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FRUSTRATION] =
+ {
+ .effect = EFFECT_FRUSTRATION,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SAFEGUARD] =
+ {
+ .effect = EFFECT_SAFEGUARD,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_PAIN_SPLIT] =
+ {
+ .effect = EFFECT_PAIN_SPLIT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SACRED_FIRE] =
+ {
+ .effect = EFFECT_THAW_HIT,
+ .power = 100,
+ .type = TYPE_FIRE,
+ .accuracy = 95,
+ .pp = 5,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MAGNITUDE] =
+ {
+ .effect = EFFECT_MAGNITUDE,
+ .power = 1,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DYNAMIC_PUNCH] =
+ {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 100,
+ .type = TYPE_FIGHTING,
+ .accuracy = 50,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MEGAHORN] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 120,
+ .type = TYPE_BUG,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DRAGON_BREATH] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 60,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BATON_PASS] =
+ {
+ .effect = EFFECT_BATON_PASS,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ENCORE] =
+ {
+ .effect = EFFECT_ENCORE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PURSUIT] =
+ {
+ .effect = EFFECT_PURSUIT,
+ .power = 40,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_RAPID_SPIN] =
+ {
+ .effect = EFFECT_RAPID_SPIN,
+ .power = 20,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SWEET_SCENT] =
+ {
+ .effect = EFFECT_EVASION_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_IRON_TAIL] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 100,
+ .type = TYPE_STEEL,
+ .accuracy = 75,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_METAL_CLAW] =
+ {
+ .effect = EFFECT_ATTACK_UP_HIT,
+ .power = 50,
+ .type = TYPE_STEEL,
+ .accuracy = 95,
+ .pp = 35,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_VITAL_THROW] =
+ {
+ .effect = EFFECT_VITAL_THROW,
+ .power = 70,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -1,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MORNING_SUN] =
+ {
+ .effect = EFFECT_MORNING_SUN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_SYNTHESIS] =
+ {
+ .effect = EFFECT_SYNTHESIS,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_MOONLIGHT] =
+ {
+ .effect = EFFECT_MOONLIGHT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_HIDDEN_POWER] =
+ {
+ .effect = EFFECT_HIDDEN_POWER,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_CROSS_CHOP] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 100,
+ .type = TYPE_FIGHTING,
+ .accuracy = 80,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_TWISTER] =
+ {
+ .effect = EFFECT_TWISTER,
+ .power = 40,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_RAIN_DANCE] =
+ {
+ .effect = EFFECT_RAIN_DANCE,
+ .power = 0,
+ .type = TYPE_WATER,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_SUNNY_DAY] =
+ {
+ .effect = EFFECT_SUNNY_DAY,
+ .power = 0,
+ .type = TYPE_FIRE,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_CRUNCH] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 80,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MIRROR_COAT] =
+ {
+ .effect = EFFECT_MIRROR_COAT,
+ .power = 1,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = -5,
+ .flags = FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PSYCH_UP] =
+ {
+ .effect = EFFECT_PSYCH_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_EXTREME_SPEED] =
+ {
+ .effect = EFFECT_QUICK_ATTACK,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 1,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ANCIENT_POWER] =
+ {
+ .effect = EFFECT_ALL_STATS_UP_HIT,
+ .power = 60,
+ .type = TYPE_ROCK,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SHADOW_BALL] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 80,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FUTURE_SIGHT] =
+ {
+ .effect = EFFECT_FUTURE_SIGHT,
+ .power = 80,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ROCK_SMASH] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 20,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_WHIRLPOOL] =
+ {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_WATER,
+ .accuracy = 70,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BEAT_UP] =
+ {
+ .effect = EFFECT_BEAT_UP,
+ .power = 10,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FAKE_OUT] =
+ {
+ .effect = EFFECT_FAKE_OUT,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 1,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_UPROAR] =
+ {
+ .effect = EFFECT_UPROAR,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_RANDOM,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_STOCKPILE] =
+ {
+ .effect = EFFECT_STOCKPILE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_SPIT_UP] =
+ {
+ .effect = EFFECT_SPIT_UP,
+ .power = 100,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SWALLOW] =
+ {
+ .effect = EFFECT_SWALLOW,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_HEAT_WAVE] =
+ {
+ .effect = EFFECT_BURN_HIT,
+ .power = 100,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HAIL] =
+ {
+ .effect = EFFECT_HAIL,
+ .power = 0,
+ .type = TYPE_ICE,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_TORMENT] =
+ {
+ .effect = EFFECT_TORMENT,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FLATTER] =
+ {
+ .effect = EFFECT_FLATTER,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_WILL_O_WISP] =
+ {
+ .effect = EFFECT_WILL_O_WISP,
+ .power = 0,
+ .type = TYPE_FIRE,
+ .accuracy = 75,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MEMENTO] =
+ {
+ .effect = EFFECT_MEMENTO,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FACADE] =
+ {
+ .effect = EFFECT_FACADE,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FOCUS_PUNCH] =
+ {
+ .effect = EFFECT_FOCUS_PUNCH,
+ .power = 150,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -3,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_SMELLING_SALT] =
+ {
+ .effect = EFFECT_SMELLINGSALT,
+ .power = 60,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FOLLOW_ME] =
+ {
+ .effect = EFFECT_FOLLOW_ME,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 3,
+ .flags = 0,
+ },
+
+ [MOVE_NATURE_POWER] =
+ {
+ .effect = EFFECT_NATURE_POWER,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_CHARGE] =
+ {
+ .effect = EFFECT_CHARGE,
+ .power = 0,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_TAUNT] =
+ {
+ .effect = EFFECT_TAUNT,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_HELPING_HAND] =
+ {
+ .effect = EFFECT_HELPING_HAND,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 5,
+ .flags = 0,
+ },
+
+ [MOVE_TRICK] =
+ {
+ .effect = EFFECT_TRICK,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ROLE_PLAY] =
+ {
+ .effect = EFFECT_ROLE_PLAY,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_WISH] =
+ {
+ .effect = EFFECT_WISH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_ASSIST] =
+ {
+ .effect = EFFECT_ASSIST,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_INGRAIN] =
+ {
+ .effect = EFFECT_INGRAIN,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_SUPERPOWER] =
+ {
+ .effect = EFFECT_SUPERPOWER,
+ .power = 120,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MAGIC_COAT] =
+ {
+ .effect = EFFECT_MAGIC_COAT,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 4,
+ .flags = 0,
+ },
+
+ [MOVE_RECYCLE] =
+ {
+ .effect = EFFECT_RECYCLE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_REVENGE] =
+ {
+ .effect = EFFECT_REVENGE,
+ .power = 60,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -4,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BRICK_BREAK] =
+ {
+ .effect = EFFECT_BRICK_BREAK,
+ .power = 75,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_YAWN] =
+ {
+ .effect = EFFECT_YAWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_KNOCK_OFF] =
+ {
+ .effect = EFFECT_KNOCK_OFF,
+ .power = 20,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ENDEAVOR] =
+ {
+ .effect = EFFECT_ENDEAVOR,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ERUPTION] =
+ {
+ .effect = EFFECT_ERUPTION,
+ .power = 150,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SKILL_SWAP] =
+ {
+ .effect = EFFECT_SKILL_SWAP,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_IMPRISON] =
+ {
+ .effect = EFFECT_IMPRISON,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_REFRESH] =
+ {
+ .effect = EFFECT_REFRESH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_GRUDGE] =
+ {
+ .effect = EFFECT_GRUDGE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SNATCH] =
+ {
+ .effect = EFFECT_SNATCH,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 4,
+ .flags = 0,
+ },
+
+ [MOVE_SECRET_POWER] =
+ {
+ .effect = EFFECT_SECRET_POWER,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DIVE] =
+ {
+ .effect = EFFECT_SEMI_INVULNERABLE,
+ .power = 60,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ARM_THRUST] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_CAMOUFLAGE] =
+ {
+ .effect = EFFECT_CAMOUFLAGE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_TAIL_GLOW] =
+ {
+ .effect = EFFECT_SPECIAL_ATTACK_UP_2,
+ .power = 0,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_LUSTER_PURGE] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 70,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MIST_BALL] =
+ {
+ .effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT,
+ .power = 70,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FEATHER_DANCE] =
+ {
+ .effect = EFFECT_ATTACK_DOWN_2,
+ .power = 0,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_TEETER_DANCE] =
+ {
+ .effect = EFFECT_TEETER_DANCE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_BLAZE_KICK] =
+ {
+ .effect = EFFECT_BLAZE_KICK,
+ .power = 85,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MUD_SPORT] =
+ {
+ .effect = EFFECT_MUD_SPORT,
+ .power = 0,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ICE_BALL] =
+ {
+ .effect = EFFECT_ROLLOUT,
+ .power = 30,
+ .type = TYPE_ICE,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_NEEDLE_ARM] =
+ {
+ .effect = EFFECT_FLINCH_MINIMIZE_HIT,
+ .power = 60,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SLACK_OFF] =
+ {
+ .effect = EFFECT_RESTORE_HP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_HYPER_VOICE] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 90,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_POISON_FANG] =
+ {
+ .effect = EFFECT_POISON_FANG,
+ .power = 50,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_CRUSH_CLAW] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 75,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 10,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BLAST_BURN] =
+ {
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_HYDRO_CANNON] =
+ {
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_WATER,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_METEOR_MASH] =
+ {
+ .effect = EFFECT_ATTACK_UP_HIT,
+ .power = 100,
+ .type = TYPE_STEEL,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ASTONISH] =
+ {
+ .effect = EFFECT_FLINCH_MINIMIZE_HIT,
+ .power = 30,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_WEATHER_BALL] =
+ {
+ .effect = EFFECT_WEATHER_BALL,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_AROMATHERAPY] =
+ {
+ .effect = EFFECT_HEAL_BELL,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_FAKE_TEARS] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_AIR_CUTTER] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 55,
+ .type = TYPE_FLYING,
+ .accuracy = 95,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_OVERHEAT] =
+ {
+ .effect = EFFECT_OVERHEAT,
+ .power = 140,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ODOR_SLEUTH] =
+ {
+ .effect = EFFECT_FORESIGHT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ROCK_TOMB] =
+ {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 50,
+ .type = TYPE_ROCK,
+ .accuracy = 80,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SILVER_WIND] =
+ {
+ .effect = EFFECT_ALL_STATS_UP_HIT,
+ .power = 60,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_METAL_SOUND] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2,
+ .power = 0,
+ .type = TYPE_STEEL,
+ .accuracy = 85,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_GRASS_WHISTLE] =
+ {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 55,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_TICKLE] =
+ {
+ .effect = EFFECT_TICKLE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_COSMIC_POWER] =
+ {
+ .effect = EFFECT_COSMIC_POWER,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_WATER_SPOUT] =
+ {
+ .effect = EFFECT_ERUPTION,
+ .power = 150,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SIGNAL_BEAM] =
+ {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 75,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SHADOW_PUNCH] =
+ {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_GHOST,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_EXTRASENSORY] =
+ {
+ .effect = EFFECT_FLINCH_MINIMIZE_HIT,
+ .power = 80,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SKY_UPPERCUT] =
+ {
+ .effect = EFFECT_SKY_UPPERCUT,
+ .power = 85,
+ .type = TYPE_FIGHTING,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SAND_TOMB] =
+ {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_GROUND,
+ .accuracy = 70,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SHEER_COLD] =
+ {
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_ICE,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MUDDY_WATER] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN_HIT,
+ .power = 95,
+ .type = TYPE_WATER,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BULLET_SEED] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 10,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_AERIAL_ACE] =
+ {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_FLYING,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ICICLE_SPEAR] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 10,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_IRON_DEFENSE] =
+ {
+ .effect = EFFECT_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_STEEL,
+ .accuracy = 0,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_BLOCK] =
+ {
+ .effect = EFFECT_MEAN_LOOK,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HOWL] =
+ {
+ .effect = EFFECT_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_DRAGON_CLAW] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FRENZY_PLANT] =
+ {
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_GRASS,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BULK_UP] =
+ {
+ .effect = EFFECT_BULK_UP,
+ .power = 0,
+ .type = TYPE_FIGHTING,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_BOUNCE] =
+ {
+ .effect = EFFECT_SEMI_INVULNERABLE,
+ .power = 85,
+ .type = TYPE_FLYING,
+ .accuracy = 85,
+ .pp = 5,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MUD_SHOT] =
+ {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 55,
+ .type = TYPE_GROUND,
+ .accuracy = 95,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_POISON_TAIL] =
+ {
+ .effect = EFFECT_POISON_TAIL,
+ .power = 50,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_COVET] =
+ {
+ .effect = EFFECT_THIEF,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_VOLT_TACKLE] =
+ {
+ .effect = EFFECT_DOUBLE_EDGE,
+ .power = 120,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MAGICAL_LEAF] =
+ {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_GRASS,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_WATER_SPORT] =
+ {
+ .effect = EFFECT_WATER_SPORT,
+ .power = 0,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_CALM_MIND] =
+ {
+ .effect = EFFECT_CALM_MIND,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_LEAF_BLADE] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 70,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DRAGON_DANCE] =
+ {
+ .effect = EFFECT_DRAGON_DANCE,
+ .power = 0,
+ .type = TYPE_DRAGON,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_ROCK_BLAST] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 25,
+ .type = TYPE_ROCK,
+ .accuracy = 80,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SHOCK_WAVE] =
+ {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_WATER_PULSE] =
+ {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 60,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DOOM_DESIRE] =
+ {
+ .effect = EFFECT_FUTURE_SIGHT,
+ .power = 120,
+ .type = TYPE_STEEL,
+ .accuracy = 85,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_PSYCHO_BOOST] =
+ {
+ .effect = EFFECT_OVERHEAT,
+ .power = 140,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+};
diff --git a/src/data/items.json b/src/data/items.json
new file mode 100644
index 000000000..b976e4c3e
--- /dev/null
+++ b/src/data/items.json
@@ -0,0 +1,6062 @@
+{
+ "items": [
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "MASTER BALL",
+ "itemId": "ITEM_MASTER_BALL",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The best BALL with the ultimate\\nperformance. It will catch any wild\\nPOKéMON without fail.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_POKE_BALLS",
+ "type": 0,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
+ "secondaryId": 0
+ },
+ {
+ "english": "ULTRA BALL",
+ "itemId": "ITEM_ULTRA_BALL",
+ "price": 1200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A very high-grade BALL that offers\\na higher POKéMON catch rate than\\na GREAT BALL.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_POKE_BALLS",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
+ "secondaryId": 1
+ },
+ {
+ "english": "GREAT BALL",
+ "itemId": "ITEM_GREAT_BALL",
+ "price": 600,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A good, quality BALL that offers\\na higher POKéMON catch rate than\\na standard POKé BALL.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_POKE_BALLS",
+ "type": 2,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
+ "secondaryId": 2
+ },
+ {
+ "english": "POK\u00e9 BALL",
+ "itemId": "ITEM_POKE_BALL",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A BALL thrown to catch a wild\\nPOKéMON. It is designed in a\\ncapsule style.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_POKE_BALLS",
+ "type": 3,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
+ "secondaryId": 3
+ },
+ {
+ "english": "SAFARI BALL",
+ "itemId": "ITEM_SAFARI_BALL",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A special BALL that is used only in\\nthe SAFARI ZONE. It is finished in\\na camouflage pattern.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_POKE_BALLS",
+ "type": 4,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
+ "secondaryId": 4
+ },
+ {
+ "english": "NET BALL",
+ "itemId": "ITEM_NET_BALL",
+ "price": 1000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A somewhat different BALL that\\nworks especially well on WATER- and\\nBUG-type POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_POKE_BALLS",
+ "type": 5,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
+ "secondaryId": 5
+ },
+ {
+ "english": "DIVE BALL",
+ "itemId": "ITEM_DIVE_BALL",
+ "price": 1000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A somewhat different BALL that\\nworks especially well on POKéMON\\ndeep in the sea.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_POKE_BALLS",
+ "type": 6,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
+ "secondaryId": 6
+ },
+ {
+ "english": "NEST BALL",
+ "itemId": "ITEM_NEST_BALL",
+ "price": 1000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A somewhat different BALL that\\nworks especially well on weaker\\nPOKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_POKE_BALLS",
+ "type": 7,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
+ "secondaryId": 7
+ },
+ {
+ "english": "REPEAT BALL",
+ "itemId": "ITEM_REPEAT_BALL",
+ "price": 1000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A somewhat different BALL that\\nworks especially well on POKéMON\\ncaught before.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_POKE_BALLS",
+ "type": 8,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
+ "secondaryId": 8
+ },
+ {
+ "english": "TIMER BALL",
+ "itemId": "ITEM_TIMER_BALL",
+ "price": 1000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A somewhat different BALL that\\nbecomes progressively better the\\nmore turns there are in a battle.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_POKE_BALLS",
+ "type": 9,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
+ "secondaryId": 9
+ },
+ {
+ "english": "LUXURY BALL",
+ "itemId": "ITEM_LUXURY_BALL",
+ "price": 1000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A comfortable BALL that makes a\\ncaptured wild POKéMON quickly grow\\nfriendly.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_POKE_BALLS",
+ "type": 10,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
+ "secondaryId": 10
+ },
+ {
+ "english": "PREMIER BALL",
+ "itemId": "ITEM_PREMIER_BALL",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A rare BALL that has been\\nspecially made to commemorate an\\nevent of some sort.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_POKE_BALLS",
+ "type": 11,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeBallEtc",
+ "secondaryId": 11
+ },
+ {
+ "english": "POTION",
+ "itemId": "ITEM_POTION",
+ "price": 300,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 20,
+ "description_english": "A spray-type wound medicine.\\nIt restores the HP of one POKéMON\\nby 20 points.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "ANTIDOTE",
+ "itemId": "ITEM_ANTIDOTE",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A spray-type medicine.\\nIt heals one POKéMON from a\\npoisoning.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "BURN HEAL",
+ "itemId": "ITEM_BURN_HEAL",
+ "price": 250,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A spray-type medicine.\\nIt heals one POKéMON of a burn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "ICE HEAL",
+ "itemId": "ITEM_ICE_HEAL",
+ "price": 250,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A spray-type medicine.\\nIt defrosts a frozen POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "AWAKENING",
+ "itemId": "ITEM_AWAKENING",
+ "price": 250,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A spray-type medicine.\\nIt awakens a sleeping POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "PARLYZ HEAL",
+ "itemId": "ITEM_PARALYZE_HEAL",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A spray-type medicine.\\nIt heals one POKéMON from\\nparalysis.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "FULL RESTORE",
+ "itemId": "ITEM_FULL_RESTORE",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 255,
+ "description_english": "A medicine that fully restores the\\nHP and heals any status problems\\nof one POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "MAX POTION",
+ "itemId": "ITEM_MAX_POTION",
+ "price": 2500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 255,
+ "description_english": "A spray-type wound medicine.\\nIt fully restores the HP of one\\nPOKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "HYPER POTION",
+ "itemId": "ITEM_HYPER_POTION",
+ "price": 1200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 200,
+ "description_english": "A spray-type wound medicine.\\nIt restores the HP of one POKéMON\\nby 200 points.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "SUPER POTION",
+ "itemId": "ITEM_SUPER_POTION",
+ "price": 700,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 50,
+ "description_english": "A spray-type wound medicine.\\nIt restores the HP of one POKéMON\\nby 50 points.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "FULL HEAL",
+ "itemId": "ITEM_FULL_HEAL",
+ "price": 600,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A spray-type medicine.\\nIt heals all the status problems of\\none POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "REVIVE",
+ "itemId": "ITEM_REVIVE",
+ "price": 1500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A medicine that revives a fainted\\nPOKéMON, restoring HP by half the\\nmaximum amount.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "MAX REVIVE",
+ "itemId": "ITEM_MAX_REVIVE",
+ "price": 4000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A medicine that revives a fainted\\nPOKéMON, restoring HP fully.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "FRESH WATER",
+ "itemId": "ITEM_FRESH_WATER",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 50,
+ "description_english": "Water with a high mineral content.\\nIt restores the HP of one POKéMON\\nby 50 points.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "SODA POP",
+ "itemId": "ITEM_SODA_POP",
+ "price": 300,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 60,
+ "description_english": "A fizzy soda drink.\\nIt restores the HP of one POKéMON\\nby 60 points.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "LEMONADE",
+ "itemId": "ITEM_LEMONADE",
+ "price": 350,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 80,
+ "description_english": "A very sweet drink.\\nIt restores the HP of one POKéMON\\nby 80 points.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "MOOMOO MILK",
+ "itemId": "ITEM_MOOMOO_MILK",
+ "price": 500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 100,
+ "description_english": "Highly nutritious milk.\\nIt restores the HP of one POKéMON\\nby 100 points.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "ENERGYPOWDER",
+ "itemId": "ITEM_ENERGY_POWDER",
+ "price": 500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A very bitter medicine powder.\\nIt restores the HP of one POKéMON\\nby 50 points.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "ENERGY ROOT",
+ "itemId": "ITEM_ENERGY_ROOT",
+ "price": 800,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A very bitter root.\\nIt restores the HP of one POKéMON\\nby 200 points.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "HEAL POWDER",
+ "itemId": "ITEM_HEAL_POWDER",
+ "price": 450,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A very bitter medicine powder.\\nIt heals all the status problems of\\none POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "REVIVAL HERB",
+ "itemId": "ITEM_REVIVAL_HERB",
+ "price": 2800,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A very bitter medicinal herb.\\nIt revives a fainted POKéMON,\\nrestoring HP fully.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "ETHER",
+ "itemId": "ITEM_ETHER",
+ "price": 1200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 10,
+ "description_english": "Restores a selected move's PP by\\n10 points for one POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Ether",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Ether",
+ "secondaryId": 0
+ },
+ {
+ "english": "MAX ETHER",
+ "itemId": "ITEM_MAX_ETHER",
+ "price": 2000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 255,
+ "description_english": "Fully restores a selected move's PP\\nfor one POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Ether",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Ether",
+ "secondaryId": 0
+ },
+ {
+ "english": "ELIXIR",
+ "itemId": "ITEM_ELIXIR",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 10,
+ "description_english": "Restores the PP of all moves for\\none POKéMON by 10 points each.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Ether",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Ether",
+ "secondaryId": 0
+ },
+ {
+ "english": "MAX ELIXIR",
+ "itemId": "ITEM_MAX_ELIXIR",
+ "price": 4500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 255,
+ "description_english": "Fully restores the PP of all moves\\nfor one POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Ether",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Ether",
+ "secondaryId": 0
+ },
+ {
+ "english": "LAVA COOKIE",
+ "itemId": "ITEM_LAVA_COOKIE",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "LAVARIDGE TOWN's local specialty.\\nIt heals all the status problems of\\none POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "BLUE FLUTE",
+ "itemId": "ITEM_BLUE_FLUTE",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A blue glass flute that awakens\\na sleeping POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "YELLOW FLUTE",
+ "itemId": "ITEM_YELLOW_FLUTE",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A yellow glass flute that snaps one\\nPOKéMON out of confusion.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "RED FLUTE",
+ "itemId": "ITEM_RED_FLUTE",
+ "price": 300,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A red glass flute that snaps one\\nPOKéMON out of infatuation.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "BLACK FLUTE",
+ "itemId": "ITEM_BLACK_FLUTE",
+ "price": 400,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 50,
+ "description_english": "A black glass flute.\\nWhen blown, it makes wild POKéMON\\nless likely to appear.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_BlackFlute",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "WHITE FLUTE",
+ "itemId": "ITEM_WHITE_FLUTE",
+ "price": 500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 150,
+ "description_english": "A white glass flute.\\nWhen blown, it makes wild POKéMON\\nmore likely to appear.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_BlackFlute",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BERRY JUICE",
+ "itemId": "ITEM_BERRY_JUICE",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_RESTORE_HP",
+ "holdEffectParam": 20,
+ "description_english": "A 100% pure juice.\\nIt restores the HP of one POKéMON\\nby 20 points.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "SACRED ASH",
+ "itemId": "ITEM_SACRED_ASH",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Revives all fainted POKéMON,\\nrestoring HP fully.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_SacredAsh",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SHOAL SALT",
+ "itemId": "ITEM_SHOAL_SALT",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Pure salt obtained from deep inside\\nthe SHOAL CAVE. It is extremely\\nsalty.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SHOAL SHELL",
+ "itemId": "ITEM_SHOAL_SHELL",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A pretty seashell found deep inside\\nthe SHOAL CAVE. It is striped in\\nblue and white.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "RED SHARD",
+ "itemId": "ITEM_RED_SHARD",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A small red shard.\\nIt appears to be from some sort of\\na tool made long ago.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BLUE SHARD",
+ "itemId": "ITEM_BLUE_SHARD",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A small blue shard.\\nIt appears to be from some sort of\\na tool made long ago.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "YELLOW SHARD",
+ "itemId": "ITEM_YELLOW_SHARD",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A small yellow shard.\\nIt appears to be from some sort of\\na tool made long ago.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "GREEN SHARD",
+ "itemId": "ITEM_GREEN_SHARD",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A small green shard.\\nIt appears to be from some sort of\\na tool made long ago.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "HP UP",
+ "itemId": "ITEM_HP_UP",
+ "price": 9800,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A nutritious drink for POKéMON.\\nIt raises the base HP of one\\nPOKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "PROTEIN",
+ "itemId": "ITEM_PROTEIN",
+ "price": 9800,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A nutritious drink for POKéMON.\\nIt raises the base ATTACK stat of\\none POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "IRON",
+ "itemId": "ITEM_IRON",
+ "price": 9800,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A nutritious drink for POKéMON.\\nIt raises the base DEFENSE stat of\\none POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "CARBOS",
+ "itemId": "ITEM_CARBOS",
+ "price": 9800,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A nutritious drink for POKéMON.\\nIt raises the base SPEED stat of\\none POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "CALCIUM",
+ "itemId": "ITEM_CALCIUM",
+ "price": 9800,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A nutritious drink for POKéMON.\\nIt raises the base SP. ATK stat\\nof one POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "RARE CANDY",
+ "itemId": "ITEM_RARE_CANDY",
+ "price": 4800,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A candy that is packed with energy.\\nIt raises the level of a POKéMON\\nby one.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_RareCandy",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "PP UP",
+ "itemId": "ITEM_PP_UP",
+ "price": 9800,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Slightly raises the maximum PP of\\na selected move for one POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_PpUp",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "ZINC",
+ "itemId": "ITEM_ZINC",
+ "price": 9800,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A nutritious drink for POKéMON.\\nIt raises the base SP. DEF stat\\nof one POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "PP MAX",
+ "itemId": "ITEM_PP_MAX",
+ "price": 9800,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Raises the PP of a selected move\\nto its maximum level for one\\nPOKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_PpUp",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "GUARD SPEC.",
+ "itemId": "ITEM_GUARD_SPEC",
+ "price": 700,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An item that prevents stat reduction\\namong party POKéMON for five turns\\nafter use.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_GuardSpec",
+ "secondaryId": 0
+ },
+ {
+ "english": "DIRE HIT",
+ "itemId": "ITEM_DIRE_HIT",
+ "price": 650,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Raises the critical-hit ratio of\\nPOKéMON in battle. Wears off if the\\nPOKéMON is withdrawn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_GuardSpec",
+ "secondaryId": 0
+ },
+ {
+ "english": "X ATTACK",
+ "itemId": "ITEM_X_ATTACK",
+ "price": 500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Raises the ATTACK stat of POKéMON\\nin battle. Wears off if the POKéMON\\nis withdrawn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_GuardSpec",
+ "secondaryId": 0
+ },
+ {
+ "english": "X DEFEND",
+ "itemId": "ITEM_X_DEFEND",
+ "price": 550,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Raises the DEFENSE stat of POKéMON\\nin battle. Wears off if the POKéMON\\nis withdrawn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_GuardSpec",
+ "secondaryId": 0
+ },
+ {
+ "english": "X SPEED",
+ "itemId": "ITEM_X_SPEED",
+ "price": 350,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Raises the SPEED stat of POKéMON\\nin battle. Wears off if the POKéMON\\nis withdrawn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_GuardSpec",
+ "secondaryId": 0
+ },
+ {
+ "english": "X ACCURACY",
+ "itemId": "ITEM_X_ACCURACY",
+ "price": 950,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Raises the accuracy stat of\\nPOKéMON in battle. Wears off if the\\nPOKéMON is withdrawn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_GuardSpec",
+ "secondaryId": 0
+ },
+ {
+ "english": "X SPECIAL",
+ "itemId": "ITEM_X_SPECIAL",
+ "price": 350,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Raises the SP. ATK stat of\\nPOKéMON in battle. Wears off if the\\nPOKéMON is withdrawn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_GuardSpec",
+ "secondaryId": 0
+ },
+ {
+ "english": "POK\u00e9 DOLL",
+ "itemId": "ITEM_POKE_DOLL",
+ "price": 1000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An attractive doll.\\nUse it to flee from any battle with\\na wild POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeDoll",
+ "secondaryId": 0
+ },
+ {
+ "english": "FLUFFY TAIL",
+ "itemId": "ITEM_FLUFFY_TAIL",
+ "price": 1000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An attractive item.\\nUse it to flee from any battle with\\na wild POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeDoll",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SUPER REPEL",
+ "itemId": "ITEM_SUPER_REPEL",
+ "price": 500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 200,
+ "description_english": "Prevents weak wild POKéMON from\\nappearing for 200 steps.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_SuperRepel",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "MAX REPEL",
+ "itemId": "ITEM_MAX_REPEL",
+ "price": 700,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 250,
+ "description_english": "Prevents weak wild POKéMON from\\nappearing for 250 steps.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_SuperRepel",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "ESCAPE ROPE",
+ "itemId": "ITEM_ESCAPE_ROPE",
+ "price": 550,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A long, durable rope.\\nUse it to escape instantly from a\\ncave or a dungeon.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 2,
+ "fieldUseFunc": "ItemUseOutOfBattle_EscapeRope",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "REPEL",
+ "itemId": "ITEM_REPEL",
+ "price": 350,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 100,
+ "description_english": "Prevents weak wild POKéMON from\\nappearing for 100 steps.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_SuperRepel",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SUN STONE",
+ "itemId": "ITEM_SUN_STONE",
+ "price": 2100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A peculiar stone that makes certain\\nspecies of POKéMON evolve.\\nIt is as red as the sun.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_EvoItem",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "MOON STONE",
+ "itemId": "ITEM_MOON_STONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A peculiar stone that makes certain\\nspecies of POKéMON evolve.\\nIt is as black as the night sky.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_EvoItem",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "FIRE STONE",
+ "itemId": "ITEM_FIRE_STONE",
+ "price": 2100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A peculiar stone that makes certain\\nspecies of POKéMON evolve.\\nIt is colored orange.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_EvoItem",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "THUNDERSTONE",
+ "itemId": "ITEM_THUNDER_STONE",
+ "price": 2100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A peculiar stone that makes certain\\nspecies of POKéMON evolve.\\nIt has a thunderbolt pattern.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_EvoItem",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "WATER STONE",
+ "itemId": "ITEM_WATER_STONE",
+ "price": 2100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A peculiar stone that makes certain\\nspecies of POKéMON evolve.\\nIt is a clear light blue.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_EvoItem",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "LEAF STONE",
+ "itemId": "ITEM_LEAF_STONE",
+ "price": 2100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A peculiar stone that makes certain\\nspecies of POKéMON evolve.\\nIt has a leaf pattern.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_EvoItem",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "TINYMUSHROOM",
+ "itemId": "ITEM_TINY_MUSHROOM",
+ "price": 500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A small and rare mushroom.\\nIt is quite popular among certain\\npeople.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BIG MUSHROOM",
+ "itemId": "ITEM_BIG_MUSHROOM",
+ "price": 5000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A large and rare mushroom.\\nIt is very popular among certain\\npeople.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "PEARL",
+ "itemId": "ITEM_PEARL",
+ "price": 1400,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A relatively small pearl that\\nsparkles in a pretty silver color.\\nIt can be sold cheaply.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BIG PEARL",
+ "itemId": "ITEM_BIG_PEARL",
+ "price": 7500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A quite-large pearl that sparkles\\nin a pretty silver color.\\nIt can be sold at a high price.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "STARDUST",
+ "itemId": "ITEM_STARDUST",
+ "price": 2000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A pretty red sand with a loose,\\nsilky feel.\\nIt can be sold at a high price.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "STAR PIECE",
+ "itemId": "ITEM_STAR_PIECE",
+ "price": 9800,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A shard of a pretty gem that\\nsparkles in a red color.\\nIt can be sold at a high price.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "NUGGET",
+ "itemId": "ITEM_NUGGET",
+ "price": 10000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A nugget of pure gold that gives\\noff a lustrous gleam.\\nIt can be sold at a high price.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "HEART SCALE",
+ "itemId": "ITEM_HEART_SCALE",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A pretty, heart-shaped scale that\\nis extremely rare. It glows faintly\\nin the colors of a rainbow.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "ORANGE MAIL",
+ "itemId": "ITEM_ORANGE_MAIL",
+ "price": 50,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of MAIL featuring a cute\\nZIGZAGOON print.\\nIt is to be held by a POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 0,
+ "fieldUseFunc": "FieldUseFunc_OrangeMail",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "HARBOR MAIL",
+ "itemId": "ITEM_HARBOR_MAIL",
+ "price": 50,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of MAIL featuring a cute\\nWINGULL print.\\nIt is to be held by a POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 0,
+ "fieldUseFunc": "FieldUseFunc_OrangeMail",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 1
+ },
+ {
+ "english": "GLITTER MAIL",
+ "itemId": "ITEM_GLITTER_MAIL",
+ "price": 50,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of MAIL featuring a cute\\nPIKACHU print.\\nIt is to be held by a POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 0,
+ "fieldUseFunc": "FieldUseFunc_OrangeMail",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 2
+ },
+ {
+ "english": "MECH MAIL",
+ "itemId": "ITEM_MECH_MAIL",
+ "price": 50,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of MAIL featuring a cute\\nMAGNEMITE print.\\nIt is to be held by a POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 0,
+ "fieldUseFunc": "FieldUseFunc_OrangeMail",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 3
+ },
+ {
+ "english": "WOOD MAIL",
+ "itemId": "ITEM_WOOD_MAIL",
+ "price": 50,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of MAIL featuring a cute\\nSLAKOTH print.\\nIt is to be held by a POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 0,
+ "fieldUseFunc": "FieldUseFunc_OrangeMail",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 4
+ },
+ {
+ "english": "WAVE MAIL",
+ "itemId": "ITEM_WAVE_MAIL",
+ "price": 50,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of MAIL featuring a cute\\nWAILMER print.\\nIt is to be held by a POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 0,
+ "fieldUseFunc": "FieldUseFunc_OrangeMail",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 5
+ },
+ {
+ "english": "BEAD MAIL",
+ "itemId": "ITEM_BEAD_MAIL",
+ "price": 50,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of MAIL to be held by a\\nPOKéMON. It will bear the print of\\nthe POKéMON holding it.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 0,
+ "fieldUseFunc": "FieldUseFunc_OrangeMail",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 6
+ },
+ {
+ "english": "SHADOW MAIL",
+ "itemId": "ITEM_SHADOW_MAIL",
+ "price": 50,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of MAIL featuring a cute\\nDUSKULL print.\\nIt is to be held by a POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 0,
+ "fieldUseFunc": "FieldUseFunc_OrangeMail",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 7
+ },
+ {
+ "english": "TROPIC MAIL",
+ "itemId": "ITEM_TROPIC_MAIL",
+ "price": 50,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of MAIL featuring a cute\\nBELLOSSOM print.\\nIt is to be held by a POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 0,
+ "fieldUseFunc": "FieldUseFunc_OrangeMail",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 8
+ },
+ {
+ "english": "DREAM MAIL",
+ "itemId": "ITEM_DREAM_MAIL",
+ "price": 50,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of MAIL to be held by a\\nPOKéMON. It will bear the print of\\nthe POKéMON holding it.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 0,
+ "fieldUseFunc": "FieldUseFunc_OrangeMail",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 9
+ },
+ {
+ "english": "FAB MAIL",
+ "itemId": "ITEM_FAB_MAIL",
+ "price": 50,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of MAIL featuring a\\ngorgeous, extravagant print.\\nIt is to be held by a POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 0,
+ "fieldUseFunc": "FieldUseFunc_OrangeMail",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 10
+ },
+ {
+ "english": "RETRO MAIL",
+ "itemId": "ITEM_RETRO_MAIL",
+ "price": 50,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of MAIL featuring a print\\nof three cute POKéMON.\\nIt is to be held by a POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 0,
+ "fieldUseFunc": "FieldUseFunc_OrangeMail",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 11
+ },
+ {
+ "english": "CHERI BERRY",
+ "itemId": "ITEM_CHERI_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CURE_PAR",
+ "holdEffectParam": 0,
+ "description_english": "When held by a POKéMON, it will be\\nused in battle to heal paralysis.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "CHESTO BERRY",
+ "itemId": "ITEM_CHESTO_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CURE_SLP",
+ "holdEffectParam": 0,
+ "description_english": "When held by a POKéMON, it will be\\nused in battle to wake up.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "PECHA BERRY",
+ "itemId": "ITEM_PECHA_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CURE_PSN",
+ "holdEffectParam": 0,
+ "description_english": "When held by a POKéMON, it will be\\nused in battle to cure poison.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "RAWST BERRY",
+ "itemId": "ITEM_RAWST_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CURE_BRN",
+ "holdEffectParam": 0,
+ "description_english": "When held by a POKéMON, it will be\\nused in battle to heal a burn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "ASPEAR BERRY",
+ "itemId": "ITEM_ASPEAR_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CURE_FRZ",
+ "holdEffectParam": 0,
+ "description_english": "When held by a POKéMON, it will be\\nused in battle for defrosting.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "LEPPA BERRY",
+ "itemId": "ITEM_LEPPA_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_RESTORE_PP",
+ "holdEffectParam": 10,
+ "description_english": "When held by a POKéMON, it will be\\nused in battle to restore 10 PP.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Ether",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Ether",
+ "secondaryId": 0
+ },
+ {
+ "english": "ORAN BERRY",
+ "itemId": "ITEM_ORAN_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_RESTORE_HP",
+ "holdEffectParam": 10,
+ "description_english": "When held by a POKéMON, it will be\\nused in battle to restore 10 HP.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "PERSIM BERRY",
+ "itemId": "ITEM_PERSIM_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CURE_CONFUSION",
+ "holdEffectParam": 0,
+ "description_english": "When held by a POKéMON, it will be\\nused in battle to lift confusion.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "LUM BERRY",
+ "itemId": "ITEM_LUM_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CURE_STATUS",
+ "holdEffectParam": 0,
+ "description_english": "When held by a POKéMON, it will be\\nused in battle to heal any problem.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "SITRUS BERRY",
+ "itemId": "ITEM_SITRUS_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_RESTORE_HP",
+ "holdEffectParam": 30,
+ "description_english": "When held by a POKéMON, it will be\\nused in battle to restore 30 HP.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 1,
+ "fieldUseFunc": "FieldUseFunc_Medicine",
+ "battleUsage": 1,
+ "battleUseFunc": "BattleUseFunc_Medicine",
+ "secondaryId": 0
+ },
+ {
+ "english": "FIGY BERRY",
+ "itemId": "ITEM_FIGY_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CONFUSE_SPICY",
+ "holdEffectParam": 8,
+ "description_english": "A hold item that restores HP but\\nmay cause confusion when used.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "WIKI BERRY",
+ "itemId": "ITEM_WIKI_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CONFUSE_DRY",
+ "holdEffectParam": 8,
+ "description_english": "A hold item that restores HP but\\nmay cause confusion when used.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "MAGO BERRY",
+ "itemId": "ITEM_MAGO_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CONFUSE_SWEET",
+ "holdEffectParam": 8,
+ "description_english": "A hold item that restores HP but\\nmay cause confusion when used.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "AGUAV BERRY",
+ "itemId": "ITEM_AGUAV_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CONFUSE_BITTER",
+ "holdEffectParam": 8,
+ "description_english": "A hold item that restores HP but\\nmay cause confusion when used.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "IAPAPA BERRY",
+ "itemId": "ITEM_IAPAPA_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CONFUSE_SOUR",
+ "holdEffectParam": 8,
+ "description_english": "A hold item that restores HP but\\nmay cause confusion when used.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "RAZZ BERRY",
+ "itemId": "ITEM_RAZZ_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BLUK BERRY",
+ "itemId": "ITEM_BLUK_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "NANAB BERRY",
+ "itemId": "ITEM_NANAB_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "WEPEAR BERRY",
+ "itemId": "ITEM_WEPEAR_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "PINAP BERRY",
+ "itemId": "ITEM_PINAP_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "POMEG BERRY",
+ "itemId": "ITEM_POMEG_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "KELPSY BERRY",
+ "itemId": "ITEM_KELPSY_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "QUALOT BERRY",
+ "itemId": "ITEM_QUALOT_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "HONDEW BERRY",
+ "itemId": "ITEM_HONDEW_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "GREPA BERRY",
+ "itemId": "ITEM_GREPA_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "TAMATO BERRY",
+ "itemId": "ITEM_TAMATO_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "CORNN BERRY",
+ "itemId": "ITEM_CORNN_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "MAGOST BERRY",
+ "itemId": "ITEM_MAGOST_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "RABUTA BERRY",
+ "itemId": "ITEM_RABUTA_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "NOMEL BERRY",
+ "itemId": "ITEM_NOMEL_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SPELON BERRY",
+ "itemId": "ITEM_SPELON_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "PAMTRE BERRY",
+ "itemId": "ITEM_PAMTRE_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "WATMEL BERRY",
+ "itemId": "ITEM_WATMEL_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "DURIN BERRY",
+ "itemId": "ITEM_DURIN_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BELUE BERRY",
+ "itemId": "ITEM_BELUE_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "LIECHI BERRY",
+ "itemId": "ITEM_LIECHI_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_ATTACK_UP",
+ "holdEffectParam": 4,
+ "description_english": "When held by a POKéMON, it raises\\nthe ATTACK stat in a pinch.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "GANLON BERRY",
+ "itemId": "ITEM_GANLON_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_DEFENSE_UP",
+ "holdEffectParam": 4,
+ "description_english": "When held by a POKéMON, it raises\\nthe DEFENSE stat in a pinch.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SALAC BERRY",
+ "itemId": "ITEM_SALAC_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_SPEED_UP",
+ "holdEffectParam": 4,
+ "description_english": "When held by a POKéMON, it raises\\nthe SPEED stat in a pinch.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "PETAYA BERRY",
+ "itemId": "ITEM_PETAYA_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_SP_ATTACK_UP",
+ "holdEffectParam": 4,
+ "description_english": "When held by a POKéMON, it raises\\nthe SP. ATK stat in a pinch.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "APICOT BERRY",
+ "itemId": "ITEM_APICOT_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_SP_DEFENSE_UP",
+ "holdEffectParam": 4,
+ "description_english": "When held by a POKéMON, it raises\\nthe SP. DEF stat in a pinch.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "LANSAT BERRY",
+ "itemId": "ITEM_LANSAT_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_CRITICAL_UP",
+ "holdEffectParam": 4,
+ "description_english": "When held by a POKéMON, it raises\\nthe critical-hit ratio in a pinch.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "STARF BERRY",
+ "itemId": "ITEM_STARF_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_RANDOM_STAT_UP",
+ "holdEffectParam": 4,
+ "description_english": "When held by a POKéMON, it sharply\\nraises one stat in a pinch.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "ENIGMA BERRY",
+ "itemId": "ITEM_ENIGMA_BERRY",
+ "price": 20,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Can be ground up into a powder as\\nan ingredient for medicine.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_BERRY_POUCH",
+ "type": 4,
+ "fieldUseFunc": "ItemUseOutOfBattle_EnigmaBerry",
+ "battleUsage": 1,
+ "battleUseFunc": "ItemUseInBattle_EnigmaBerry",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BRIGHTPOWDER",
+ "itemId": "ITEM_BRIGHT_POWDER",
+ "price": 10,
+ "holdEffect": "HOLD_EFFECT_EVASION_UP",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nIt casts a tricky glare that lowers\\nthe opponent's accuracy.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "WHITE HERB",
+ "itemId": "ITEM_WHITE_HERB",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_RESTORE_STATS",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nIt restores any lowered stat in\\nbattle. It can be used only once.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "MACHO BRACE",
+ "itemId": "ITEM_MACHO_BRACE",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_MACHO_BRACE",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nIt promotes strong growth but\\nlowers SPEED while it is held.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "EXP. SHARE",
+ "itemId": "ITEM_EXP_SHARE",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_EXP_SHARE",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nThe holder gets a share of EXP.\\npoints without having to battle.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "QUICK CLAW",
+ "itemId": "ITEM_QUICK_CLAW",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_QUICK_CLAW",
+ "holdEffectParam": 20,
+ "description_english": "An item to be held by a POKéMON.\\nA light and sharp claw. The holder\\nmay be able to strike first.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SOOTHE BELL",
+ "itemId": "ITEM_SOOTHE_BELL",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_HAPPINESS_UP",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nA bell with a comforting chime that\\nmakes the holder calm and friendly.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "MENTAL HERB",
+ "itemId": "ITEM_MENTAL_HERB",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_CURE_ATTRACT",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nIt snaps the holder out of\\ninfatuation. It can be used once.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "CHOICE BAND",
+ "itemId": "ITEM_CHOICE_BAND",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_CHOICE_BAND",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nIt powers up one move, which\\nbecomes the only usable one.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "KING'S ROCK",
+ "itemId": "ITEM_KINGS_ROCK",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_FLINCH",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nIt may cause the foe to flinch\\nupon taking damage.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SILVERPOWDER",
+ "itemId": "ITEM_SILVER_POWDER",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_BUG_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA shiny silver powder that boosts\\nthe power of BUG-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "AMULET COIN",
+ "itemId": "ITEM_AMULET_COIN",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_DOUBLE_PRIZE",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nIt doubles the battle money if the\\nholding POKéMON takes part.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "CLEANSE TAG",
+ "itemId": "ITEM_CLEANSE_TAG",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_REPEL",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nIt repels wild POKéMON if the\\nholder is first in the party.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SOUL DEW",
+ "itemId": "ITEM_SOUL_DEW",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_SOUL_DEW",
+ "holdEffectParam": 0,
+ "description_english": "An orb to be held by a LATIOS or\\nLATIAS. It raises the SP. ATK\\nand SP. DEF stats.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "DEEPSEATOOTH",
+ "itemId": "ITEM_DEEP_SEA_TOOTH",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_DEEP_SEA_TOOTH",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nA fang that gleams a sharp silver.\\nIt raises the SP. ATK stat.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "DEEPSEASCALE",
+ "itemId": "ITEM_DEEP_SEA_SCALE",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_DEEP_SEA_SCALE",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nA scale that shines a faint pink.\\nIt raises the SP. DEF stat.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SMOKE BALL",
+ "itemId": "ITEM_SMOKE_BALL",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_CAN_ALWAYS_RUN",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nThe holding POKéMON can flee from\\nany wild POKéMON for sure.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "EVERSTONE",
+ "itemId": "ITEM_EVERSTONE",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_PREVENT_EVOLVE",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nThe holding POKéMON is prevented\\nfrom evolving.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "FOCUS BAND",
+ "itemId": "ITEM_FOCUS_BAND",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_FOCUS_BAND",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nThe holding POKéMON may endure an\\nattack, leaving just 1 HP.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "LUCKY EGG",
+ "itemId": "ITEM_LUCKY_EGG",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_LUCKY_EGG",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nAn egg filled with happiness that\\nearns extra EXP. points in battle.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SCOPE LENS",
+ "itemId": "ITEM_SCOPE_LENS",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_SCOPE_LENS",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nA lens that boosts the critical-hit\\nratio of the holding POKéMON.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "METAL COAT",
+ "itemId": "ITEM_METAL_COAT",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_STEEL_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA special metallic film that boosts\\nthe power of STEEL-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "LEFTOVERS",
+ "itemId": "ITEM_LEFTOVERS",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_LEFTOVERS",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nThe holding POKéMON gradually\\nregains HP during battle.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "DRAGON SCALE",
+ "itemId": "ITEM_DRAGON_SCALE",
+ "price": 2100,
+ "holdEffect": "HOLD_EFFECT_DRAGON_SCALE",
+ "holdEffectParam": 10,
+ "description_english": "A thick and tough scale.\\nA DRAGON-type POKéMON may be\\nholding it.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "LIGHT BALL",
+ "itemId": "ITEM_LIGHT_BALL",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_LIGHT_BALL",
+ "holdEffectParam": 0,
+ "description_english": "An orb to be held by a PIKACHU\\nthat raises the SP. ATK stat.\\nTouching it may cause a shock.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SOFT SAND",
+ "itemId": "ITEM_SOFT_SAND",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_GROUND_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA loose, silky sand that boosts the\\npower of GROUND-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "HARD STONE",
+ "itemId": "ITEM_HARD_STONE",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_ROCK_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nAn unbreakable stone that boosts\\nthe power of ROCK-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "MIRACLE SEED",
+ "itemId": "ITEM_MIRACLE_SEED",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_GRASS_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA seed imbued with life that boosts\\nthe power of GRASS-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BLACKGLASSES",
+ "itemId": "ITEM_BLACK_GLASSES",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_DARK_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA shady-looking pair of glasses\\nthat boosts DARK-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BLACK BELT",
+ "itemId": "ITEM_BLACK_BELT",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_FIGHTING_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA belt that boosts determination\\nand FIGHTING-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "MAGNET",
+ "itemId": "ITEM_MAGNET",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_ELECTRIC_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA powerful magnet that boosts the\\npower of ELECTRIC-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "MYSTIC WATER",
+ "itemId": "ITEM_MYSTIC_WATER",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_WATER_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA teardrop-shaped gem that boosts\\nthe power of WATER-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SHARP BEAK",
+ "itemId": "ITEM_SHARP_BEAK",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_FLYING_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA long, sharp beak that boosts the\\npower of FLYING-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "POISON BARB",
+ "itemId": "ITEM_POISON_BARB",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_POISON_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA small, poisonous barb that boosts\\nthe power of POISON-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "NEVERMELTICE",
+ "itemId": "ITEM_NEVER_MELT_ICE",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_ICE_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA piece of ice that repels heat\\nand boosts ICE-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SPELL TAG",
+ "itemId": "ITEM_SPELL_TAG",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_GHOST_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA sinister, eerie tag that boosts\\nGHOST-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "TWISTEDSPOON",
+ "itemId": "ITEM_TWISTED_SPOON",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_PSYCHIC_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA spoon imbued with telekinetic\\npower boosts PSYCHIC-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "CHARCOAL",
+ "itemId": "ITEM_CHARCOAL",
+ "price": 9800,
+ "holdEffect": "HOLD_EFFECT_FIRE_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA combustible fuel that boosts the\\npower of FIRE-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "DRAGON FANG",
+ "itemId": "ITEM_DRAGON_FANG",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_DRAGON_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA hard and sharp fang that boosts\\nthe power of DRAGON-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SILK SCARF",
+ "itemId": "ITEM_SILK_SCARF",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_NORMAL_POWER",
+ "holdEffectParam": 10,
+ "description_english": "An item to be held by a POKéMON.\\nA sumptuous scarf that boosts the\\npower of NORMAL-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "UP-GRADE",
+ "itemId": "ITEM_UP_GRADE",
+ "price": 2100,
+ "holdEffect": "HOLD_EFFECT_UP_GRADE",
+ "holdEffectParam": 0,
+ "description_english": "A transparent device filled with all\\nsorts of data.\\nIt is made by SILPH CO.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SHELL BELL",
+ "itemId": "ITEM_SHELL_BELL",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_SHELL_BELL",
+ "holdEffectParam": 8,
+ "description_english": "An item to be held by a POKéMON.\\nThe holding POKéMON regains some\\nHP upon striking the foe.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SEA INCENSE",
+ "itemId": "ITEM_SEA_INCENSE",
+ "price": 9600,
+ "holdEffect": "HOLD_EFFECT_WATER_POWER",
+ "holdEffectParam": 5,
+ "description_english": "An item to be held by a POKéMON.\\nIt slightly boosts the power of\\nWATER-type moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "LAX INCENSE",
+ "itemId": "ITEM_LAX_INCENSE",
+ "price": 9600,
+ "holdEffect": "HOLD_EFFECT_EVASION_UP",
+ "holdEffectParam": 5,
+ "description_english": "An item to be held by a POKéMON.\\nIts tricky aroma slightly reduces\\nthe foe's accuracy.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "LUCKY PUNCH",
+ "itemId": "ITEM_LUCKY_PUNCH",
+ "price": 10,
+ "holdEffect": "HOLD_EFFECT_LUCKY_PUNCH",
+ "holdEffectParam": 0,
+ "description_english": "A glove to be held by a CHANSEY.\\nIt raises CHANSEY's critical-hit\\nratio.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "METAL POWDER",
+ "itemId": "ITEM_METAL_POWDER",
+ "price": 10,
+ "holdEffect": "HOLD_EFFECT_METAL_POWDER",
+ "holdEffectParam": 0,
+ "description_english": "A fine, hard powder to be held by\\na DITTO.\\nIt raises DITTO's DEFENSE stat.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "THICK CLUB",
+ "itemId": "ITEM_THICK_CLUB",
+ "price": 500,
+ "holdEffect": "HOLD_EFFECT_THICK_CLUB",
+ "holdEffectParam": 0,
+ "description_english": "A hard bone of some sort to be\\nheld by a CUBONE or MAROWAK.\\nIt raises the ATTACK stat.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "STICK",
+ "itemId": "ITEM_STICK",
+ "price": 200,
+ "holdEffect": "HOLD_EFFECT_STICK",
+ "holdEffectParam": 0,
+ "description_english": "A stick of leek to be held by a\\nFARFETCH'D. It raises FARFETCH'D's\\ncritical-hit ratio.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "RED SCARF",
+ "itemId": "ITEM_RED_SCARF",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nIt boosts the holding POKéMON's\\nCOOL condition in CONTESTS.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BLUE SCARF",
+ "itemId": "ITEM_BLUE_SCARF",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nIt boosts the holding POKéMON's\\nBEAUTY condition in CONTESTS.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "PINK SCARF",
+ "itemId": "ITEM_PINK_SCARF",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nIt boosts the holding POKéMON's\\nCUTE condition in CONTESTS.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "GREEN SCARF",
+ "itemId": "ITEM_GREEN_SCARF",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nIt boosts the holding POKéMON's\\nSMART condition in CONTESTS.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "YELLOW SCARF",
+ "itemId": "ITEM_YELLOW_SCARF",
+ "price": 100,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An item to be held by a POKéMON.\\nIt boosts the holding POKéMON's\\nTOUGH condition in CONTESTS.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "MACH BIKE",
+ "itemId": "ITEM_MACH_BIKE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A folding bicycle that is at least\\ntwice as fast as walking.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 2,
+ "fieldUseFunc": "FieldUseFunc_MachBike",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "COIN CASE",
+ "itemId": "ITEM_COIN_CASE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A case for holding COINS obtained\\nat the GAME CORNER.\\nIt holds up to 9,999 COINS.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_CoinCase",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "ITEMFINDER",
+ "itemId": "ITEM_ITEMFINDER",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A device used for finding items.\\nIf there is a hidden item nearby\\nwhen it is used, it emits a signal.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 2,
+ "fieldUseFunc": "ItemUseOutOfBattle_Itemfinder",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "OLD ROD",
+ "itemId": "ITEM_OLD_ROD",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An old and beat-up fishing rod.\\nUse it by any body of water to \\nfish for wild POKéMON.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 2,
+ "fieldUseFunc": "FieldUseFunc_OldRod",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "GOOD ROD",
+ "itemId": "ITEM_GOOD_ROD",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A new, good-quality fishing rod.\\nUse it by any body of water to \\nfish for wild POKéMON.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 2,
+ "fieldUseFunc": "FieldUseFunc_OldRod",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 1
+ },
+ {
+ "english": "SUPER ROD",
+ "itemId": "ITEM_SUPER_ROD",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An awesome, high-tech fishing rod.\\nUse it by any body of water to fish\\nfor wild POKéMON.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 2,
+ "fieldUseFunc": "FieldUseFunc_OldRod",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 2
+ },
+ {
+ "english": "S.S. TICKET",
+ "itemId": "ITEM_SS_TICKET",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The ticket required for sailing on\\nthe ferry S.S. ANNE.\\nIt has a drawing of a ship on it.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "CONTEST PASS",
+ "itemId": "ITEM_CONTEST_PASS",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The pass required for entering\\nPOKéMON CONTESTS. It has a\\ndrawing of an award ribbon on it.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "WAILMER PAIL",
+ "itemId": "ITEM_WAILMER_PAIL",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A nifty watering pail.\\nUse it to promote strong growth in\\nBERRIES planted in soft soil.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "DEVON GOODS",
+ "itemId": "ITEM_DEVON_GOODS",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A package that contains mechanical\\nparts of some sort made by the\\nDEVON CORPORATION.",
+ "importance": 2,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SOOT SACK",
+ "itemId": "ITEM_SOOT_SACK",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A sack used to collect volcanic\\nash automatically during walks\\nover deep ash.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BASEMENT KEY",
+ "itemId": "ITEM_BASEMENT_KEY",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The key to NEW MAUVILLE, which\\nwas constructed beneath MAUVILLE\\nCITY.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "ACRO BIKE",
+ "itemId": "ITEM_ACRO_BIKE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A folding bicycle that is capable\\nof stunts like jumps and wheelies.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 2,
+ "fieldUseFunc": "FieldUseFunc_MachBike",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 1
+ },
+ {
+ "english": "{POKEBLOCK} CASE",
+ "itemId": "ITEM_POKEBLOCK_CASE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A case for holding {POKEBLOCK}S made\\nwith a BERRY BLENDER. It releases\\none {POKEBLOCK} when shaken.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "LETTER",
+ "itemId": "ITEM_LETTER",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An extremely important letter to\\nSTEVEN from the PRESIDENT of the\\nDEVON CORPORATION.",
+ "importance": 2,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "EON TICKET",
+ "itemId": "ITEM_EON_TICKET",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The ticket required for sailing on a\\nferry to a distant southern island.\\nIt features a drawing of an island.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 1
+ },
+ {
+ "english": "RED ORB",
+ "itemId": "ITEM_RED_ORB",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An orb that glows red.\\nIt is said to contain an incredible\\npower from ancient times.",
+ "importance": 2,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BLUE ORB",
+ "itemId": "ITEM_BLUE_ORB",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An orb that glows blue.\\nIt is said to contain an incredible\\npower from ancient times.",
+ "importance": 2,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SCANNER",
+ "itemId": "ITEM_SCANNER",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A device used to search for\\nlife-forms in water.\\nIt looks too difficult to use.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "GO-GOGGLES",
+ "itemId": "ITEM_GO_GOGGLES",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A pair of protective goggles.\\nThey enable a TRAINER to travel\\nthrough even desert sandstorms.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "METEORITE",
+ "itemId": "ITEM_METEORITE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A meteorite that fell from space\\nonto MT. MOON long ago.\\nIt is very lumpy and hard.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "RM. 1 KEY",
+ "itemId": "ITEM_ROOM_1_KEY",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A key that opens the door to Room\\n1 inside the ABANDONED SHIP.\\nIt is old and looks easily broken.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "RM. 2 KEY",
+ "itemId": "ITEM_ROOM_2_KEY",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A key that opens the door to Room\\n2 inside the ABANDONED SHIP.\\nIt is old and looks easily broken.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "RM. 4 KEY",
+ "itemId": "ITEM_ROOM_4_KEY",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A key that opens the door to Room\\n4 inside the ABANDONED SHIP.\\nIt is old and looks easily broken.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "RM. 6 KEY",
+ "itemId": "ITEM_ROOM_6_KEY",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A key that opens the door to Room\\n6 inside the ABANDONED SHIP.\\nIt is old and looks easily broken.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "STORAGE KEY",
+ "itemId": "ITEM_STORAGE_KEY",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A key that opens the storage hold\\ninside the ABANDONED SHIP.\\nIt is old and looks easily broken.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "ROOT FOSSIL",
+ "itemId": "ITEM_ROOT_FOSSIL",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A fossil of an ancient, seafloor-\\ndwelling POKéMON. It appears to be\\npart of a plant root.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "CLAW FOSSIL",
+ "itemId": "ITEM_CLAW_FOSSIL",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A fossil of an ancient, seafloor-\\ndwelling POKéMON. It appears to be\\npart of a claw.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "DEVON SCOPE",
+ "itemId": "ITEM_DEVON_SCOPE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A scope that signals the presence\\nof any unseeable POKéMON.\\nIt is made by the DEVON CORP.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "TM01",
+ "itemId": "ITEM_TM01",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An extremely powerful attack.\\nHowever, if the user is hit before\\nusing the move, they will flinch.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "FocusPunch"
+ },
+ {
+ "english": "TM02",
+ "itemId": "ITEM_TM02",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Sharp, huge claws hook and slash\\nthe foe quickly and with great\\npower.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "DragonClaw"
+ },
+ {
+ "english": "TM03",
+ "itemId": "ITEM_TM03",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The foe is hit with a pulsing blast\\nof water. It may also confuse the\\ntarget.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "WaterPulse"
+ },
+ {
+ "english": "TM04",
+ "itemId": "ITEM_TM04",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The user calms its spirit and\\nfocuses its mind to raise its\\nSP. ATK and SP. DEF stats.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "CalmMind"
+ },
+ {
+ "english": "TM05",
+ "itemId": "ITEM_TM05",
+ "price": 1000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A savage roar that causes the foe\\nto switch out of battle. In the\\nwild, ROAR ends the battle.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Roar"
+ },
+ {
+ "english": "TM06",
+ "itemId": "ITEM_TM06",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A move that leaves the foe badly\\npoisoned. Its poison damage worsens\\nevery turn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Toxic"
+ },
+ {
+ "english": "TM07",
+ "itemId": "ITEM_TM07",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Summons a hailstorm that lasts for\\nfive turns. The hailstorm damages\\nall types except the ICE type.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Hail"
+ },
+ {
+ "english": "TM08",
+ "itemId": "ITEM_TM08",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The user tightens all its muscles\\nand bulks up, boosting both its\\nATTACK and DEFENSE stats.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "BulkUp"
+ },
+ {
+ "english": "TM09",
+ "itemId": "ITEM_TM09",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The user shoots seeds at the foe\\nin rapid succession. Two to five\\nseeds are shot at once.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "BulletSeed"
+ },
+ {
+ "english": "TM10",
+ "itemId": "ITEM_TM10",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A variable move that changes type\\nand power depending on the POKéMON\\nusing it.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "HiddenPower"
+ },
+ {
+ "english": "TM11",
+ "itemId": "ITEM_TM11",
+ "price": 2000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The weather is turned sunny for\\nfive turns. Over that time, FIRE-\\ntype moves are powered up.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "SunnyDay"
+ },
+ {
+ "english": "TM12",
+ "itemId": "ITEM_TM12",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A taunted foe may become enraged.\\nIt will then only be able to use\\nattack moves.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Taunt"
+ },
+ {
+ "english": "TM13",
+ "itemId": "ITEM_TM13",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An icy-cold beam is shot at the\\nfoe. It may leave the target\\nfrozen.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "IceBeam"
+ },
+ {
+ "english": "TM14",
+ "itemId": "ITEM_TM14",
+ "price": 5500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A vicious snow-and-wind attack that\\nstrikes all foes in battle. It may\\ncause freezing.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Blizzard"
+ },
+ {
+ "english": "TM15",
+ "itemId": "ITEM_TM15",
+ "price": 7500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A harsh attack that inflicts severe\\ndamage on the foe. However, the\\nuser must rest the next turn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "HyperBeam"
+ },
+ {
+ "english": "TM16",
+ "itemId": "ITEM_TM16",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A wall of light is created over\\nfive turns. It reduces damage from\\nSP. ATK attacks.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "LightScreen"
+ },
+ {
+ "english": "TM17",
+ "itemId": "ITEM_TM17",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The user is completely protected\\nfrom attack in the turn it is used.\\nIt may fail if used in succession.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Protect"
+ },
+ {
+ "english": "TM18",
+ "itemId": "ITEM_TM18",
+ "price": 2000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A heavy rain is summoned for five\\nturns. Over that time, WATER-type\\nmoves are powered up.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "RainDance"
+ },
+ {
+ "english": "TM19",
+ "itemId": "ITEM_TM19",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The user strikes the foe with\\ntentacles or roots, stealing the\\ntarget's HP and healing itself.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "GigaDrain"
+ },
+ {
+ "english": "TM20",
+ "itemId": "ITEM_TM20",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Protects the party with a shield\\nagainst all status problems over\\nfive turns.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Safeguard"
+ },
+ {
+ "english": "TM21",
+ "itemId": "ITEM_TM21",
+ "price": 1000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "This attack move grows more\\npowerful the more the POKéMON\\ndislikes its TRAINER.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Frustration"
+ },
+ {
+ "english": "TM22",
+ "itemId": "ITEM_TM22",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A 2-turn attack that uses the first\\nturn for absorbing sunlight, then\\nblasting the foe in the next turn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "SolarBeam"
+ },
+ {
+ "english": "TM23",
+ "itemId": "ITEM_TM23",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The foe is slammed with a sturdy\\ntail of steel. It may lower the\\ntarget's DEFENSE stat.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "IronTail"
+ },
+ {
+ "english": "TM24",
+ "itemId": "ITEM_TM24",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A massive jolt of electricity is\\nlaunched at the foe. It may cause\\nparalysis.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Thunderbolt"
+ },
+ {
+ "english": "TM25",
+ "itemId": "ITEM_TM25",
+ "price": 5500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Strikes the foe with a huge\\nthunderbolt. It may cause\\nparalysis.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Thunder"
+ },
+ {
+ "english": "TM26",
+ "itemId": "ITEM_TM26",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Causes an earthquake that strikes\\nall POKéMON in battle, excluding\\nthe user.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Earthquake"
+ },
+ {
+ "english": "TM27",
+ "itemId": "ITEM_TM27",
+ "price": 1000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "This attack move grows more\\npowerful the more the POKéMON\\nlikes its TRAINER.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Return"
+ },
+ {
+ "english": "TM28",
+ "itemId": "ITEM_TM28",
+ "price": 2000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A 2-turn attack in which the user\\ndigs underground, then strikes.\\nIt can be used to exit dungeons.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Dig"
+ },
+ {
+ "english": "TM29",
+ "itemId": "ITEM_TM29",
+ "price": 2000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A powerful blast of telekinetic\\nenergy strikes the foe. It may\\nlower the target's SP. DEF stat.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Psychic"
+ },
+ {
+ "english": "TM30",
+ "itemId": "ITEM_TM30",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The foe is attacked with a shadowy\\nlump. It may lower the target's\\nSP. DEF stat.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "ShadowBall"
+ },
+ {
+ "english": "TM31",
+ "itemId": "ITEM_TM31",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Strikes the foe with a rock-hard\\nfist, etc. It shatters barriers such\\nas REFLECT and LIGHT SCREEN.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "BrickBreak"
+ },
+ {
+ "english": "TM32",
+ "itemId": "ITEM_TM32",
+ "price": 2000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The user begins moving so quickly\\nthat it creates illusory copies to\\nraise its evasiveness.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "DoubleTeam"
+ },
+ {
+ "english": "TM33",
+ "itemId": "ITEM_TM33",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A tough barrier is put up over five\\nturns. It reduces damage from\\nphysical attacks over that time.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Reflect"
+ },
+ {
+ "english": "TM34",
+ "itemId": "ITEM_TM34",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A rapid jolt of electricity strikes\\nthe foe. This attack is impossible\\nto evade.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "ShockWave"
+ },
+ {
+ "english": "TM35",
+ "itemId": "ITEM_TM35",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The foe is roasted with a heavy\\nblast of fire. It may leave the\\ntarget with a burn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Flamethrower"
+ },
+ {
+ "english": "TM36",
+ "itemId": "ITEM_TM36",
+ "price": 1000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Toxic sludge is hurled at the foe\\nwith great force. It may also\\npoison the target.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "SludgeBomb"
+ },
+ {
+ "english": "TM37",
+ "itemId": "ITEM_TM37",
+ "price": 2000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Summons a sandstorm that lasts for\\nfive turns. It damages all types\\nexcept ROCK, GROUND, and STEEL.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Sandstorm"
+ },
+ {
+ "english": "TM38",
+ "itemId": "ITEM_TM38",
+ "price": 5500,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The foe is incinerated with an\\nintense flame. It may leave the\\ntarget with a burn.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "FireBlast"
+ },
+ {
+ "english": "TM39",
+ "itemId": "ITEM_TM39",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Boulders are hurled at the foe.\\nIt also lowers the target's SPEED\\nstat if it hits.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "RockTomb"
+ },
+ {
+ "english": "TM40",
+ "itemId": "ITEM_TM40",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An extremely fast attack against\\none target. It is impossible to\\nevade.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "AerialAce"
+ },
+ {
+ "english": "TM41",
+ "itemId": "ITEM_TM41",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "If enraged by this move, the target\\nbecomes incapable of using the same\\nmove twice in a row.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Torment"
+ },
+ {
+ "english": "TM42",
+ "itemId": "ITEM_TM42",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An attack move that becomes very\\npowerful if the user is poisoned,\\nburned, or paralyzed.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Facade"
+ },
+ {
+ "english": "TM43",
+ "itemId": "ITEM_TM43",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An attack move that may have an\\nadditional effect depending on the\\nbattle terrain.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "SecretPower"
+ },
+ {
+ "english": "TM44",
+ "itemId": "ITEM_TM44",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A move that makes the user fall\\nasleep over two turns to restore HP\\nand heal any status problems.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Rest"
+ },
+ {
+ "english": "TM45",
+ "itemId": "ITEM_TM45",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The foe, if it is the opposite\\ngender as the user, becomes\\ninfatuated and may not attack.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Attract"
+ },
+ {
+ "english": "TM46",
+ "itemId": "ITEM_TM46",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An attack that gives the user an\\nopportunity to steal the foe's hold\\nitem.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Thief"
+ },
+ {
+ "english": "TM47",
+ "itemId": "ITEM_TM47",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The foe is struck with steel-hard\\nwings. It may also raise the user's\\nDEFENSE stat.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "SteelWing"
+ },
+ {
+ "english": "TM48",
+ "itemId": "ITEM_TM48",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A special power is transmitted to\\nthe foe, causing it to switch\\nabilities with the user.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "SkillSwap"
+ },
+ {
+ "english": "TM49",
+ "itemId": "ITEM_TM49",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A move that steals the effects of\\nany status-changing or healing move\\nthat the foe tries to use.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Snatch"
+ },
+ {
+ "english": "TM50",
+ "itemId": "ITEM_TM50",
+ "price": 3000,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A maximum-power attack of great\\nferocity, but one that also sharply\\nreduces the user's SP. ATK stat.",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Overheat"
+ },
+ {
+ "english": "HM01",
+ "itemId": "ITEM_HM01",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Attacks the foe with sharp blades\\nor claws. It can also cut down thin\\ntrees and grass outside of battle.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Cut"
+ },
+ {
+ "english": "HM02",
+ "itemId": "ITEM_HM02",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The user flies up on the first turn,\\nthen attacks next turn. It can be\\nused to fly to any known town.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Fly"
+ },
+ {
+ "english": "HM03",
+ "itemId": "ITEM_HM03",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Creates a huge wave, then crashes\\nit down on the foe. It can be used\\nfor traveling on water.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Surf"
+ },
+ {
+ "english": "HM04",
+ "itemId": "ITEM_HM04",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The user builds enormous power,\\nthen slams the foe. It can be used\\nfor moving large, round boulders.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Strength"
+ },
+ {
+ "english": "HM05",
+ "itemId": "ITEM_HM05",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Looses a powerful blast of light\\nthat reduces the foe's accuracy.\\nIt also lights up dark caves.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Flash"
+ },
+ {
+ "english": "HM06",
+ "itemId": "ITEM_HM06",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Hits the foe with a rock-crushingly\\ntough attack. It can smash cracked\\nboulders.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "RockSmash"
+ },
+ {
+ "english": "HM07",
+ "itemId": "ITEM_HM07",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A powerful charge attack. It can\\nbe used for climbing a torrential\\nwaterfall.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Waterfall"
+ },
+ {
+ "english": "HM08",
+ "itemId": "ITEM_HM08",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A 2-turn attack in which the user\\ndives underwater on the first turn,\\nthen strikes in the next turn.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_TM_CASE",
+ "type": 1,
+ "fieldUseFunc": "NULL",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0,
+ "moveId": "Dive"
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "????????",
+ "itemId": "ITEM_NONE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "?????",
+ "importance": 0,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "OAK'S PARCEL",
+ "itemId": "ITEM_OAKS_PARCEL",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A parcel to be delivered to PROF.\\nOAK from VIRIDIAN CITY's POKéMON\\nMART.",
+ "importance": 2,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "POK\u00e9 FLUTE",
+ "itemId": "ITEM_POKE_FLUTE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A flute that is said to instantly\\nawaken any POKéMON. It has a\\nlovely tone.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_PokeFlute",
+ "battleUsage": 2,
+ "battleUseFunc": "BattleUseFunc_PokeFlute",
+ "secondaryId": 0
+ },
+ {
+ "english": "SECRET KEY",
+ "itemId": "ITEM_SECRET_KEY",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "The key to CINNABAR ISLAND GYM's\\nfront door. It is colored red and\\ndecorated.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BIKE VOUCHER",
+ "itemId": "ITEM_BIKE_VOUCHER",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "Take this voucher to the BIKE SHOP\\nin CERULEAN CITY and exchange it\\nfor a bicycle.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "GOLD TEETH",
+ "itemId": "ITEM_GOLD_TEETH",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A set of false teeth lost by the\\nSAFARI ZONE'S WARDEN. It makes his\\nsmile sparkle.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "OLD AMBER",
+ "itemId": "ITEM_OLD_AMBER",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A piece of amber that contains\\nthe genes of an ancient POKéMON.\\nIt is clear with a reddish tint.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "CARD KEY",
+ "itemId": "ITEM_CARD_KEY",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A card-type key that unlocks doors\\nin SILPH CO.'s HEAD OFFICE in\\nSAFFRON CITY.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "LIFT KEY",
+ "itemId": "ITEM_LIFT_KEY",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A key that operates the elevator\\nin TEAM ROCKET's HIDEOUT.\\nIt bears the TEAM ROCKET logo.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "HELIX FOSSIL",
+ "itemId": "ITEM_HELIX_FOSSIL",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A fossil of an ancient, seafloor-\\ndwelling POKéMON. It appears to be\\npart of a seashell.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "DOME FOSSIL",
+ "itemId": "ITEM_DOME_FOSSIL",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A fossil of an ancient, seafloor-\\ndwelling POKéMON. It appears to be\\npart of a shell.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SILPH SCOPE",
+ "itemId": "ITEM_SILPH_SCOPE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A scope that makes unseeable\\nPOKéMON visible.\\nIt is made by SILPH CO.",
+ "importance": 1,
+ "exitsBagOnUse": 0,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BICYCLE",
+ "itemId": "ITEM_BICYCLE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A folding bicycle that allows\\nfaster movement than the RUNNING\\nSHOES.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 2,
+ "fieldUseFunc": "FieldUseFunc_MachBike",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "TOWN MAP",
+ "itemId": "ITEM_TOWN_MAP",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A very convenient map that can be\\nviewed anytime. It even shows your \\npresent location.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_TownMap",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "VS SEEKER",
+ "itemId": "ITEM_VS_SEEKER",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A device that indicates TRAINERS\\nwho want to battle. The battery\\ncharges while traveling.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 2,
+ "fieldUseFunc": "FieldUseFunc_VsSeeker",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "FAME CHECKER",
+ "itemId": "ITEM_FAME_CHECKER",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A device that enables you to\\nrecall what you've heard and seen\\nabout famous people.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_FameChecker",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "TM CASE",
+ "itemId": "ITEM_TM_CASE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A case that holds TMs and HMs.\\nIt is attached to the BAG's\\ncompartment for important items.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_TmCase",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "BERRY POUCH",
+ "itemId": "ITEM_BERRY_POUCH",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A pouch for carrying BERRIES.\\nIt is attached to the BAG's\\ncompartment for important items.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_BerryPouch",
+ "battleUsage": 3,
+ "battleUseFunc": "BattleUseFunc_BerryPouch",
+ "secondaryId": 0
+ },
+ {
+ "english": "TEACHY TV",
+ "itemId": "ITEM_TEACHY_TV",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A television set that is tuned to\\na program with useful tips for\\nnovice TRAINERS.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 2,
+ "fieldUseFunc": "FieldUseFunc_TeachyTv",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "TRI-PASS",
+ "itemId": "ITEM_TRI_PASS",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A pass for ferries between ONE,\\nTWO, and THREE ISLAND.\\nIt has a drawing of three islands.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "RAINBOW PASS",
+ "itemId": "ITEM_RAINBOW_PASS",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A pass for ferries between\\nVERMILION and the SEVII ISLANDS.\\nIt features a drawing of a rainbow.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "TEA",
+ "itemId": "ITEM_TEA",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An aromatic tea prepared by an old\\nlady. It will slake even the worst\\nthirst.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "MYSTICTICKET",
+ "itemId": "ITEM_MYSTIC_TICKET",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A ticket required to board the ship\\nto NAVEL ROCK.\\nIt glows with a mystic light.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "AURORATICKET",
+ "itemId": "ITEM_AURORA_TICKET",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A ticket required to board the ship\\nto BIRTH ISLAND.\\nIt glows beautifully.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "POWDER JAR",
+ "itemId": "ITEM_POWDER_JAR",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "A jar for storing BERRY POWDER\\nmade using a BERRY CRUSHER.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_PowderJar",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "RUBY",
+ "itemId": "ITEM_RUBY",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An exquisitely beautiful gem that\\nhas a red glow.\\nIt symbolizes passion.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ },
+ {
+ "english": "SAPPHIRE",
+ "itemId": "ITEM_SAPPHIRE",
+ "price": 0,
+ "holdEffect": "HOLD_EFFECT_NONE",
+ "holdEffectParam": 0,
+ "description_english": "An exquisitely beautiful gem that\\nhas a blue glow.\\nIt symbolizes honesty.",
+ "importance": 1,
+ "exitsBagOnUse": 1,
+ "pocket": "POCKET_KEY_ITEMS",
+ "type": 4,
+ "fieldUseFunc": "FieldUseFunc_OakStopsYou",
+ "battleUsage": 0,
+ "battleUseFunc": "NULL",
+ "secondaryId": 0
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/data/items.json.txt b/src/data/items.json.txt
new file mode 100644
index 000000000..0daa783aa
--- /dev/null
+++ b/src/data/items.json.txt
@@ -0,0 +1,31 @@
+{{ doNotModifyHeader }}
+## for item in items
+## if item.pocket == "POCKET_TM_CASE"
+extern const u8 gMoveDescription_{{ item.moveId }}[];
+## endif
+{% if item.itemId != "ITEM_NONE" %}const u8 gItemDescription_{{ item.itemId }}[] = _("{{ item.description_english }}");{% endif %}
+## endfor
+const u8 gItemDescription_ITEM_NONE[] = _("?????");
+
+const struct Item gItems[] = {
+ {% for item in items %}{
+ .name = _("{{ item.english }}"),
+ .itemId = {{ item.itemId }},
+ .price = {{ item.price }},
+ .holdEffect = {{ item.holdEffect }},
+ .holdEffectParam = {{ item.holdEffectParam }},
+## if item.pocket == "POCKET_TM_CASE"
+ .description = gMoveDescription_{{ item.moveId }},
+## else
+ .description = gItemDescription_{{ item.itemId }},
+## endif
+ .importance = {{ item.importance }},
+ .exitsBagOnUse = {{ item.exitsBagOnUse }},
+ .pocket = {{ item.pocket }},
+ .type = {{ item.type }},
+ .fieldUseFunc = {{ item.fieldUseFunc }},
+ .battleUsage = {{ item.battleUsage }},
+ .battleUseFunc = {{ item.battleUseFunc }},
+ .secondaryId = {{ item.secondaryId }}
+ }, {% endfor %}
+};
diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h
new file mode 100644
index 000000000..2dbde1483
--- /dev/null
+++ b/src/data/pokemon/base_stats.h
@@ -0,0 +1,12031 @@
+// Maximum value for a female Pokémon is 254 (MON_FEMALE) which is 100% female.
+// 255 (MON_GENDERLESS) is reserved for genderless Pokémon.
+#define PERCENT_FEMALE(percent) min(254, ((percent * 255) / 100))
+
+#define OLD_UNOWN_BASE_STATS \
+ { \
+ .baseHP = 50, \
+ .baseAttack = 150, \
+ .baseDefense = 50, \
+ .baseSpAttack = 150, \
+ .baseSpDefense = 50, \
+ .baseSpeed = 150, \
+ .type1 = TYPE_NORMAL, \
+ .type2 = TYPE_NORMAL, \
+ .catchRate = 3, \
+ .expYield = 1, \
+ .evYield_HP = 2, \
+ .evYield_Attack = 2, \
+ .evYield_Defense = 2, \
+ .evYield_Speed = 2, \
+ .evYield_SpAttack = 2, \
+ .evYield_SpDefense = 2, \
+ .item1 = ITEM_NONE, \
+ .item2 = ITEM_NONE, \
+ .genderRatio = MON_GENDERLESS, \
+ .eggCycles = 120, \
+ .friendship = 0, \
+ .growthRate = GROWTH_MEDIUM_FAST, \
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,\
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,\
+ .abilities = {0, 0}, \
+ .safariZoneFleeRate = 0, \
+ .bodyColor = BODY_COLOR_BLACK, \
+ .noFlip = FALSE, \
+ }
+
+const struct BaseStats gBaseStats[] =
+{
+ [SPECIES_NONE] = {0},
+ [SPECIES_BULBASAUR] =
+ {
+ .baseHP = 45,
+ .baseAttack = 49,
+ .baseDefense = 49,
+ .baseSpeed = 45,
+ .baseSpAttack = 65,
+ .baseSpDefense = 65,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_POISON,
+ .catchRate = 45,
+ .expYield = 64,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_OVERGROW, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_IVYSAUR] =
+ {
+ .baseHP = 60,
+ .baseAttack = 62,
+ .baseDefense = 63,
+ .baseSpeed = 60,
+ .baseSpAttack = 80,
+ .baseSpDefense = 80,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_POISON,
+ .catchRate = 45,
+ .expYield = 141,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_OVERGROW, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_VENUSAUR] =
+ {
+ .baseHP = 80,
+ .baseAttack = 82,
+ .baseDefense = 83,
+ .baseSpeed = 80,
+ .baseSpAttack = 100,
+ .baseSpDefense = 100,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_POISON,
+ .catchRate = 45,
+ .expYield = 208,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_OVERGROW, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CHARMANDER] =
+ {
+ .baseHP = 39,
+ .baseAttack = 52,
+ .baseDefense = 43,
+ .baseSpeed = 65,
+ .baseSpAttack = 60,
+ .baseSpDefense = 50,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 45,
+ .expYield = 65,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_BLAZE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CHARMELEON] =
+ {
+ .baseHP = 58,
+ .baseAttack = 64,
+ .baseDefense = 58,
+ .baseSpeed = 80,
+ .baseSpAttack = 80,
+ .baseSpDefense = 65,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 45,
+ .expYield = 142,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_BLAZE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CHARIZARD] =
+ {
+ .baseHP = 78,
+ .baseAttack = 84,
+ .baseDefense = 78,
+ .baseSpeed = 100,
+ .baseSpAttack = 109,
+ .baseSpDefense = 85,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 209,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_BLAZE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SQUIRTLE] =
+ {
+ .baseHP = 44,
+ .baseAttack = 48,
+ .baseDefense = 65,
+ .baseSpeed = 43,
+ .baseSpAttack = 50,
+ .baseSpDefense = 64,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 66,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_TORRENT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WARTORTLE] =
+ {
+ .baseHP = 59,
+ .baseAttack = 63,
+ .baseDefense = 80,
+ .baseSpeed = 58,
+ .baseSpAttack = 65,
+ .baseSpDefense = 80,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 143,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_TORRENT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BLASTOISE] =
+ {
+ .baseHP = 79,
+ .baseAttack = 83,
+ .baseDefense = 100,
+ .baseSpeed = 78,
+ .baseSpAttack = 85,
+ .baseSpDefense = 105,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 210,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 3,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_TORRENT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CATERPIE] =
+ {
+ .baseHP = 45,
+ .baseAttack = 30,
+ .baseDefense = 35,
+ .baseSpeed = 45,
+ .baseSpAttack = 20,
+ .baseSpDefense = 20,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_BUG,
+ .catchRate = 255,
+ .expYield = 53,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SHIELD_DUST, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_METAPOD] =
+ {
+ .baseHP = 50,
+ .baseAttack = 20,
+ .baseDefense = 55,
+ .baseSpeed = 30,
+ .baseSpAttack = 25,
+ .baseSpDefense = 25,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_BUG,
+ .catchRate = 120,
+ .expYield = 72,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BUTTERFREE] =
+ {
+ .baseHP = 60,
+ .baseAttack = 45,
+ .baseDefense = 50,
+ .baseSpeed = 70,
+ .baseSpAttack = 80,
+ .baseSpDefense = 80,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 160,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SILVER_POWDER,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_COMPOUND_EYES, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WEEDLE] =
+ {
+ .baseHP = 40,
+ .baseAttack = 35,
+ .baseDefense = 30,
+ .baseSpeed = 50,
+ .baseSpAttack = 20,
+ .baseSpDefense = 20,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_POISON,
+ .catchRate = 255,
+ .expYield = 52,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SHIELD_DUST, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_KAKUNA] =
+ {
+ .baseHP = 45,
+ .baseAttack = 25,
+ .baseDefense = 50,
+ .baseSpeed = 35,
+ .baseSpAttack = 25,
+ .baseSpDefense = 25,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_POISON,
+ .catchRate = 120,
+ .expYield = 71,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BEEDRILL] =
+ {
+ .baseHP = 65,
+ .baseAttack = 80,
+ .baseDefense = 40,
+ .baseSpeed = 75,
+ .baseSpAttack = 45,
+ .baseSpDefense = 80,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_POISON,
+ .catchRate = 45,
+ .expYield = 159,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_POISON_BARB,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SWARM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PIDGEY] =
+ {
+ .baseHP = 40,
+ .baseAttack = 45,
+ .baseDefense = 40,
+ .baseSpeed = 56,
+ .baseSpAttack = 35,
+ .baseSpDefense = 35,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 255,
+ .expYield = 55,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PIDGEOTTO] =
+ {
+ .baseHP = 63,
+ .baseAttack = 60,
+ .baseDefense = 55,
+ .baseSpeed = 71,
+ .baseSpAttack = 50,
+ .baseSpDefense = 50,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 120,
+ .expYield = 113,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PIDGEOT] =
+ {
+ .baseHP = 83,
+ .baseAttack = 80,
+ .baseDefense = 75,
+ .baseSpeed = 91,
+ .baseSpAttack = 70,
+ .baseSpDefense = 70,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 172,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 3,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_RATTATA] =
+ {
+ .baseHP = 30,
+ .baseAttack = 56,
+ .baseDefense = 35,
+ .baseSpeed = 72,
+ .baseSpAttack = 25,
+ .baseSpDefense = 35,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 255,
+ .expYield = 57,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_RUN_AWAY, ABILITY_GUTS },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_RATICATE] =
+ {
+ .baseHP = 55,
+ .baseAttack = 81,
+ .baseDefense = 60,
+ .baseSpeed = 97,
+ .baseSpAttack = 50,
+ .baseSpDefense = 70,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 127,
+ .expYield = 116,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_ORAN_BERRY,
+ .item2 = ITEM_SITRUS_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_RUN_AWAY, ABILITY_GUTS },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SPEAROW] =
+ {
+ .baseHP = 40,
+ .baseAttack = 60,
+ .baseDefense = 30,
+ .baseSpeed = 70,
+ .baseSpAttack = 31,
+ .baseSpDefense = 31,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 255,
+ .expYield = 58,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_FEAROW] =
+ {
+ .baseHP = 65,
+ .baseAttack = 90,
+ .baseDefense = 65,
+ .baseSpeed = 100,
+ .baseSpAttack = 61,
+ .baseSpDefense = 61,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 90,
+ .expYield = 162,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SHARP_BEAK,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_EKANS] =
+ {
+ .baseHP = 35,
+ .baseAttack = 60,
+ .baseDefense = 44,
+ .baseSpeed = 55,
+ .baseSpAttack = 40,
+ .baseSpDefense = 54,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 255,
+ .expYield = 62,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_SHED_SKIN },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ARBOK] =
+ {
+ .baseHP = 60,
+ .baseAttack = 85,
+ .baseDefense = 69,
+ .baseSpeed = 80,
+ .baseSpAttack = 65,
+ .baseSpDefense = 79,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 90,
+ .expYield = 147,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_POISON_BARB,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_SHED_SKIN },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PIKACHU] =
+ {
+ .baseHP = 35,
+ .baseAttack = 55,
+ .baseDefense = 30,
+ .baseSpeed = 90,
+ .baseSpAttack = 50,
+ .baseSpDefense = 40,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 190,
+ .expYield = 82,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 10,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_STATIC, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_RAICHU] =
+ {
+ .baseHP = 60,
+ .baseAttack = 90,
+ .baseDefense = 55,
+ .baseSpeed = 100,
+ .baseSpAttack = 90,
+ .baseSpDefense = 80,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 75,
+ .expYield = 122,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 3,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 10,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_STATIC, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SANDSHREW] =
+ {
+ .baseHP = 50,
+ .baseAttack = 75,
+ .baseDefense = 85,
+ .baseSpeed = 40,
+ .baseSpAttack = 20,
+ .baseSpDefense = 30,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_GROUND,
+ .catchRate = 255,
+ .expYield = 93,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SANDSLASH] =
+ {
+ .baseHP = 75,
+ .baseAttack = 100,
+ .baseDefense = 110,
+ .baseSpeed = 65,
+ .baseSpAttack = 45,
+ .baseSpDefense = 55,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_GROUND,
+ .catchRate = 90,
+ .expYield = 163,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SOFT_SAND,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NIDORAN_F] =
+ {
+ .baseHP = 55,
+ .baseAttack = 47,
+ .baseDefense = 52,
+ .baseSpeed = 41,
+ .baseSpAttack = 40,
+ .baseSpDefense = 40,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 235,
+ .expYield = 59,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_FEMALE,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_POISON_POINT, ABILITY_NONE },
+ .safariZoneFleeRate = 50,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NIDORINA] =
+ {
+ .baseHP = 70,
+ .baseAttack = 62,
+ .baseDefense = 67,
+ .baseSpeed = 56,
+ .baseSpAttack = 55,
+ .baseSpDefense = 55,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 120,
+ .expYield = 117,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_FEMALE,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_POISON_POINT, ABILITY_NONE },
+ .safariZoneFleeRate = 75,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NIDOQUEEN] =
+ {
+ .baseHP = 90,
+ .baseAttack = 82,
+ .baseDefense = 87,
+ .baseSpeed = 76,
+ .baseSpAttack = 75,
+ .baseSpDefense = 85,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_GROUND,
+ .catchRate = 45,
+ .expYield = 194,
+ .evYield_HP = 3,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_FEMALE,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_POISON_POINT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NIDORAN_M] =
+ {
+ .baseHP = 46,
+ .baseAttack = 57,
+ .baseDefense = 40,
+ .baseSpeed = 50,
+ .baseSpAttack = 40,
+ .baseSpDefense = 40,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 235,
+ .expYield = 60,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_MALE,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_POISON_POINT, ABILITY_NONE },
+ .safariZoneFleeRate = 50,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NIDORINO] =
+ {
+ .baseHP = 61,
+ .baseAttack = 72,
+ .baseDefense = 57,
+ .baseSpeed = 65,
+ .baseSpAttack = 55,
+ .baseSpDefense = 55,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 120,
+ .expYield = 118,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_MALE,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_POISON_POINT, ABILITY_NONE },
+ .safariZoneFleeRate = 75,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NIDOKING] =
+ {
+ .baseHP = 81,
+ .baseAttack = 92,
+ .baseDefense = 77,
+ .baseSpeed = 85,
+ .baseSpAttack = 85,
+ .baseSpDefense = 75,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_GROUND,
+ .catchRate = 45,
+ .expYield = 195,
+ .evYield_HP = 0,
+ .evYield_Attack = 3,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_MALE,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_POISON_POINT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CLEFAIRY] =
+ {
+ .baseHP = 70,
+ .baseAttack = 45,
+ .baseDefense = 48,
+ .baseSpeed = 35,
+ .baseSpAttack = 60,
+ .baseSpDefense = 65,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 150,
+ .expYield = 68,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_MOON_STONE,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 10,
+ .friendship = 140,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CLEFABLE] =
+ {
+ .baseHP = 95,
+ .baseAttack = 70,
+ .baseDefense = 73,
+ .baseSpeed = 60,
+ .baseSpAttack = 85,
+ .baseSpDefense = 90,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 25,
+ .expYield = 129,
+ .evYield_HP = 3,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_MOON_STONE,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 10,
+ .friendship = 140,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_VULPIX] =
+ {
+ .baseHP = 38,
+ .baseAttack = 41,
+ .baseDefense = 40,
+ .baseSpeed = 65,
+ .baseSpAttack = 50,
+ .baseSpDefense = 65,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 190,
+ .expYield = 63,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_RAWST_BERRY,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NINETALES] =
+ {
+ .baseHP = 73,
+ .baseAttack = 76,
+ .baseDefense = 75,
+ .baseSpeed = 100,
+ .baseSpAttack = 81,
+ .baseSpDefense = 100,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 75,
+ .expYield = 178,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_RAWST_BERRY,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_JIGGLYPUFF] =
+ {
+ .baseHP = 115,
+ .baseAttack = 45,
+ .baseDefense = 20,
+ .baseSpeed = 20,
+ .baseSpAttack = 45,
+ .baseSpDefense = 25,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 170,
+ .expYield = 76,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_ORAN_BERRY,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 10,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WIGGLYTUFF] =
+ {
+ .baseHP = 140,
+ .baseAttack = 70,
+ .baseDefense = 45,
+ .baseSpeed = 45,
+ .baseSpAttack = 75,
+ .baseSpDefense = 50,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 50,
+ .expYield = 109,
+ .evYield_HP = 3,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_ORAN_BERRY,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 10,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ZUBAT] =
+ {
+ .baseHP = 40,
+ .baseAttack = 45,
+ .baseDefense = 35,
+ .baseSpeed = 55,
+ .baseSpAttack = 30,
+ .baseSpDefense = 40,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_FLYING,
+ .catchRate = 255,
+ .expYield = 54,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GOLBAT] =
+ {
+ .baseHP = 75,
+ .baseAttack = 80,
+ .baseDefense = 70,
+ .baseSpeed = 90,
+ .baseSpAttack = 65,
+ .baseSpDefense = 75,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_FLYING,
+ .catchRate = 90,
+ .expYield = 171,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ODDISH] =
+ {
+ .baseHP = 45,
+ .baseAttack = 50,
+ .baseDefense = 55,
+ .baseSpeed = 30,
+ .baseSpAttack = 75,
+ .baseSpDefense = 65,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_POISON,
+ .catchRate = 255,
+ .expYield = 78,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GLOOM] =
+ {
+ .baseHP = 60,
+ .baseAttack = 65,
+ .baseDefense = 70,
+ .baseSpeed = 40,
+ .baseSpAttack = 85,
+ .baseSpDefense = 75,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_POISON,
+ .catchRate = 120,
+ .expYield = 132,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_VILEPLUME] =
+ {
+ .baseHP = 75,
+ .baseAttack = 80,
+ .baseDefense = 85,
+ .baseSpeed = 50,
+ .baseSpAttack = 100,
+ .baseSpDefense = 90,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_POISON,
+ .catchRate = 45,
+ .expYield = 184,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PARAS] =
+ {
+ .baseHP = 35,
+ .baseAttack = 70,
+ .baseDefense = 55,
+ .baseSpeed = 25,
+ .baseSpAttack = 45,
+ .baseSpDefense = 55,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_GRASS,
+ .catchRate = 190,
+ .expYield = 70,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_TINY_MUSHROOM,
+ .item2 = ITEM_BIG_MUSHROOM,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_EFFECT_SPORE, ABILITY_NONE },
+ .safariZoneFleeRate = 50,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PARASECT] =
+ {
+ .baseHP = 60,
+ .baseAttack = 95,
+ .baseDefense = 80,
+ .baseSpeed = 30,
+ .baseSpAttack = 60,
+ .baseSpDefense = 80,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_GRASS,
+ .catchRate = 75,
+ .expYield = 128,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_TINY_MUSHROOM,
+ .item2 = ITEM_BIG_MUSHROOM,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_EFFECT_SPORE, ABILITY_NONE },
+ .safariZoneFleeRate = 75,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_VENONAT] =
+ {
+ .baseHP = 60,
+ .baseAttack = 55,
+ .baseDefense = 50,
+ .baseSpeed = 45,
+ .baseSpAttack = 40,
+ .baseSpDefense = 55,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_POISON,
+ .catchRate = 190,
+ .expYield = 75,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_COMPOUND_EYES, ABILITY_NONE },
+ .safariZoneFleeRate = 50,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_VENOMOTH] =
+ {
+ .baseHP = 70,
+ .baseAttack = 65,
+ .baseDefense = 60,
+ .baseSpeed = 90,
+ .baseSpAttack = 90,
+ .baseSpDefense = 75,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_POISON,
+ .catchRate = 75,
+ .expYield = 138,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SILVER_POWDER,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SHIELD_DUST, ABILITY_NONE },
+ .safariZoneFleeRate = 75,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DIGLETT] =
+ {
+ .baseHP = 10,
+ .baseAttack = 55,
+ .baseDefense = 25,
+ .baseSpeed = 95,
+ .baseSpAttack = 35,
+ .baseSpDefense = 45,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_GROUND,
+ .catchRate = 255,
+ .expYield = 81,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DUGTRIO] =
+ {
+ .baseHP = 35,
+ .baseAttack = 80,
+ .baseDefense = 50,
+ .baseSpeed = 120,
+ .baseSpAttack = 50,
+ .baseSpDefense = 70,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_GROUND,
+ .catchRate = 50,
+ .expYield = 153,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MEOWTH] =
+ {
+ .baseHP = 40,
+ .baseAttack = 45,
+ .baseDefense = 35,
+ .baseSpeed = 90,
+ .baseSpAttack = 40,
+ .baseSpDefense = 40,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 255,
+ .expYield = 69,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NUGGET,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_PICKUP, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PERSIAN] =
+ {
+ .baseHP = 65,
+ .baseAttack = 70,
+ .baseDefense = 60,
+ .baseSpeed = 115,
+ .baseSpAttack = 65,
+ .baseSpDefense = 65,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 90,
+ .expYield = 148,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_LIMBER, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PSYDUCK] =
+ {
+ .baseHP = 50,
+ .baseAttack = 52,
+ .baseDefense = 48,
+ .baseSpeed = 55,
+ .baseSpAttack = 65,
+ .baseSpDefense = 50,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 190,
+ .expYield = 80,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_DAMP, ABILITY_CLOUD_NINE },
+ .safariZoneFleeRate = 50,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GOLDUCK] =
+ {
+ .baseHP = 80,
+ .baseAttack = 82,
+ .baseDefense = 78,
+ .baseSpeed = 85,
+ .baseSpAttack = 95,
+ .baseSpDefense = 80,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 75,
+ .expYield = 174,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_DAMP, ABILITY_CLOUD_NINE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MANKEY] =
+ {
+ .baseHP = 40,
+ .baseAttack = 80,
+ .baseDefense = 35,
+ .baseSpeed = 70,
+ .baseSpAttack = 35,
+ .baseSpDefense = 45,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 190,
+ .expYield = 74,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PRIMEAPE] =
+ {
+ .baseHP = 65,
+ .baseAttack = 105,
+ .baseDefense = 60,
+ .baseSpeed = 95,
+ .baseSpAttack = 60,
+ .baseSpDefense = 70,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 75,
+ .expYield = 149,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GROWLITHE] =
+ {
+ .baseHP = 55,
+ .baseAttack = 70,
+ .baseDefense = 45,
+ .baseSpeed = 60,
+ .baseSpAttack = 70,
+ .baseSpDefense = 50,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 190,
+ .expYield = 91,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_RAWST_BERRY,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ARCANINE] =
+ {
+ .baseHP = 90,
+ .baseAttack = 110,
+ .baseDefense = 80,
+ .baseSpeed = 95,
+ .baseSpAttack = 100,
+ .baseSpDefense = 80,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 75,
+ .expYield = 213,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_RAWST_BERRY,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_POLIWAG] =
+ {
+ .baseHP = 40,
+ .baseAttack = 50,
+ .baseDefense = 40,
+ .baseSpeed = 90,
+ .baseSpAttack = 40,
+ .baseSpDefense = 40,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 255,
+ .expYield = 77,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_WATER_ABSORB, ABILITY_DAMP },
+ .safariZoneFleeRate = 50,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = TRUE,
+ },
+ [SPECIES_POLIWHIRL] =
+ {
+ .baseHP = 65,
+ .baseAttack = 65,
+ .baseDefense = 65,
+ .baseSpeed = 90,
+ .baseSpAttack = 50,
+ .baseSpDefense = 50,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 120,
+ .expYield = 131,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_WATER_ABSORB, ABILITY_DAMP },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = TRUE,
+ },
+ [SPECIES_POLIWRATH] =
+ {
+ .baseHP = 90,
+ .baseAttack = 85,
+ .baseDefense = 95,
+ .baseSpeed = 70,
+ .baseSpAttack = 70,
+ .baseSpDefense = 90,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 45,
+ .expYield = 185,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 3,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_WATER_ABSORB, ABILITY_DAMP },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = TRUE,
+ },
+ [SPECIES_ABRA] =
+ {
+ .baseHP = 25,
+ .baseAttack = 20,
+ .baseDefense = 15,
+ .baseSpeed = 90,
+ .baseSpAttack = 105,
+ .baseSpDefense = 55,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 200,
+ .expYield = 73,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_TWISTED_SPOON,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_KADABRA] =
+ {
+ .baseHP = 40,
+ .baseAttack = 35,
+ .baseDefense = 30,
+ .baseSpeed = 105,
+ .baseSpAttack = 120,
+ .baseSpDefense = 70,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 100,
+ .expYield = 145,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_TWISTED_SPOON,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ALAKAZAM] =
+ {
+ .baseHP = 55,
+ .baseAttack = 50,
+ .baseDefense = 45,
+ .baseSpeed = 120,
+ .baseSpAttack = 135,
+ .baseSpDefense = 85,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 50,
+ .expYield = 186,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_TWISTED_SPOON,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MACHOP] =
+ {
+ .baseHP = 70,
+ .baseAttack = 80,
+ .baseDefense = 50,
+ .baseSpeed = 35,
+ .baseSpAttack = 35,
+ .baseSpDefense = 35,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 180,
+ .expYield = 88,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_GUTS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MACHOKE] =
+ {
+ .baseHP = 80,
+ .baseAttack = 100,
+ .baseDefense = 70,
+ .baseSpeed = 45,
+ .baseSpAttack = 50,
+ .baseSpDefense = 60,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 90,
+ .expYield = 146,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_FOCUS_BAND,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_GUTS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MACHAMP] =
+ {
+ .baseHP = 90,
+ .baseAttack = 130,
+ .baseDefense = 80,
+ .baseSpeed = 55,
+ .baseSpAttack = 65,
+ .baseSpDefense = 85,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 45,
+ .expYield = 193,
+ .evYield_HP = 0,
+ .evYield_Attack = 3,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_FOCUS_BAND,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_GUTS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BELLSPROUT] =
+ {
+ .baseHP = 50,
+ .baseAttack = 75,
+ .baseDefense = 35,
+ .baseSpeed = 40,
+ .baseSpAttack = 70,
+ .baseSpDefense = 30,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_POISON,
+ .catchRate = 255,
+ .expYield = 84,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WEEPINBELL] =
+ {
+ .baseHP = 65,
+ .baseAttack = 90,
+ .baseDefense = 50,
+ .baseSpeed = 55,
+ .baseSpAttack = 85,
+ .baseSpDefense = 45,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_POISON,
+ .catchRate = 120,
+ .expYield = 151,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_VICTREEBEL] =
+ {
+ .baseHP = 80,
+ .baseAttack = 105,
+ .baseDefense = 65,
+ .baseSpeed = 70,
+ .baseSpAttack = 100,
+ .baseSpDefense = 60,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_POISON,
+ .catchRate = 45,
+ .expYield = 191,
+ .evYield_HP = 0,
+ .evYield_Attack = 3,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TENTACOOL] =
+ {
+ .baseHP = 40,
+ .baseAttack = 40,
+ .baseDefense = 35,
+ .baseSpeed = 70,
+ .baseSpAttack = 50,
+ .baseSpDefense = 100,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_POISON,
+ .catchRate = 190,
+ .expYield = 105,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_3,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_CLEAR_BODY, ABILITY_LIQUID_OOZE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TENTACRUEL] =
+ {
+ .baseHP = 80,
+ .baseAttack = 70,
+ .baseDefense = 65,
+ .baseSpeed = 100,
+ .baseSpAttack = 80,
+ .baseSpDefense = 120,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_POISON,
+ .catchRate = 60,
+ .expYield = 205,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_3,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_CLEAR_BODY, ABILITY_LIQUID_OOZE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GEODUDE] =
+ {
+ .baseHP = 40,
+ .baseAttack = 80,
+ .baseDefense = 100,
+ .baseSpeed = 20,
+ .baseSpAttack = 30,
+ .baseSpDefense = 30,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_GROUND,
+ .catchRate = 255,
+ .expYield = 86,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GRAVELER] =
+ {
+ .baseHP = 55,
+ .baseAttack = 95,
+ .baseDefense = 115,
+ .baseSpeed = 35,
+ .baseSpAttack = 45,
+ .baseSpDefense = 45,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_GROUND,
+ .catchRate = 120,
+ .expYield = 134,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_HARD_STONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GOLEM] =
+ {
+ .baseHP = 80,
+ .baseAttack = 110,
+ .baseDefense = 130,
+ .baseSpeed = 45,
+ .baseSpAttack = 55,
+ .baseSpDefense = 65,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_GROUND,
+ .catchRate = 45,
+ .expYield = 177,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 3,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_HARD_STONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PONYTA] =
+ {
+ .baseHP = 50,
+ .baseAttack = 85,
+ .baseDefense = 55,
+ .baseSpeed = 90,
+ .baseSpAttack = 65,
+ .baseSpDefense = 65,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 190,
+ .expYield = 152,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_RAPIDASH] =
+ {
+ .baseHP = 65,
+ .baseAttack = 100,
+ .baseDefense = 70,
+ .baseSpeed = 105,
+ .baseSpAttack = 80,
+ .baseSpDefense = 80,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 60,
+ .expYield = 192,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SLOWPOKE] =
+ {
+ .baseHP = 90,
+ .baseAttack = 65,
+ .baseDefense = 65,
+ .baseSpeed = 15,
+ .baseSpAttack = 40,
+ .baseSpDefense = 40,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 190,
+ .expYield = 99,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO },
+ .safariZoneFleeRate = 50,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SLOWBRO] =
+ {
+ .baseHP = 95,
+ .baseAttack = 75,
+ .baseDefense = 110,
+ .baseSpeed = 30,
+ .baseSpAttack = 100,
+ .baseSpDefense = 80,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 75,
+ .expYield = 164,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MAGNEMITE] =
+ {
+ .baseHP = 25,
+ .baseAttack = 35,
+ .baseDefense = 70,
+ .baseSpeed = 45,
+ .baseSpAttack = 95,
+ .baseSpDefense = 55,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_STEEL,
+ .catchRate = 190,
+ .expYield = 89,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_MAGNET_PULL, ABILITY_STURDY },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MAGNETON] =
+ {
+ .baseHP = 50,
+ .baseAttack = 60,
+ .baseDefense = 95,
+ .baseSpeed = 70,
+ .baseSpAttack = 120,
+ .baseSpDefense = 70,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_STEEL,
+ .catchRate = 60,
+ .expYield = 161,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_MAGNET,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_MAGNET_PULL, ABILITY_STURDY },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_FARFETCHD] =
+ {
+ .baseHP = 52,
+ .baseAttack = 65,
+ .baseDefense = 55,
+ .baseSpeed = 60,
+ .baseSpAttack = 58,
+ .baseSpDefense = 62,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 94,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_STICK,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_KEEN_EYE, ABILITY_INNER_FOCUS },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DODUO] =
+ {
+ .baseHP = 35,
+ .baseAttack = 85,
+ .baseDefense = 45,
+ .baseSpeed = 75,
+ .baseSpAttack = 35,
+ .baseSpDefense = 35,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 190,
+ .expYield = 96,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_RUN_AWAY, ABILITY_EARLY_BIRD },
+ .safariZoneFleeRate = 50,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DODRIO] =
+ {
+ .baseHP = 60,
+ .baseAttack = 110,
+ .baseDefense = 70,
+ .baseSpeed = 100,
+ .baseSpAttack = 60,
+ .baseSpDefense = 60,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 158,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SHARP_BEAK,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_RUN_AWAY, ABILITY_EARLY_BIRD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SEEL] =
+ {
+ .baseHP = 65,
+ .baseAttack = 45,
+ .baseDefense = 55,
+ .baseSpeed = 45,
+ .baseSpAttack = 45,
+ .baseSpDefense = 70,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 190,
+ .expYield = 100,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_ASPEAR_BERRY,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DEWGONG] =
+ {
+ .baseHP = 90,
+ .baseAttack = 70,
+ .baseDefense = 80,
+ .baseSpeed = 70,
+ .baseSpAttack = 70,
+ .baseSpDefense = 95,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_ICE,
+ .catchRate = 75,
+ .expYield = 176,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_ASPEAR_BERRY,
+ .item2 = ITEM_NEVER_MELT_ICE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GRIMER] =
+ {
+ .baseHP = 80,
+ .baseAttack = 80,
+ .baseDefense = 50,
+ .baseSpeed = 25,
+ .baseSpAttack = 40,
+ .baseSpDefense = 50,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 190,
+ .expYield = 90,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_STENCH, ABILITY_STICKY_HOLD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MUK] =
+ {
+ .baseHP = 105,
+ .baseAttack = 105,
+ .baseDefense = 75,
+ .baseSpeed = 50,
+ .baseSpAttack = 65,
+ .baseSpDefense = 100,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 75,
+ .expYield = 157,
+ .evYield_HP = 1,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_STENCH, ABILITY_STICKY_HOLD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SHELLDER] =
+ {
+ .baseHP = 30,
+ .baseAttack = 65,
+ .baseDefense = 100,
+ .baseSpeed = 40,
+ .baseSpAttack = 45,
+ .baseSpDefense = 25,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 190,
+ .expYield = 97,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_PEARL,
+ .item2 = ITEM_BIG_PEARL,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_3,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_SHELL_ARMOR, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CLOYSTER] =
+ {
+ .baseHP = 50,
+ .baseAttack = 95,
+ .baseDefense = 180,
+ .baseSpeed = 70,
+ .baseSpAttack = 85,
+ .baseSpDefense = 45,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_ICE,
+ .catchRate = 60,
+ .expYield = 203,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_PEARL,
+ .item2 = ITEM_BIG_PEARL,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_3,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_SHELL_ARMOR, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GASTLY] =
+ {
+ .baseHP = 30,
+ .baseAttack = 35,
+ .baseDefense = 30,
+ .baseSpeed = 80,
+ .baseSpAttack = 100,
+ .baseSpDefense = 35,
+ .type1 = TYPE_GHOST,
+ .type2 = TYPE_POISON,
+ .catchRate = 190,
+ .expYield = 95,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HAUNTER] =
+ {
+ .baseHP = 45,
+ .baseAttack = 50,
+ .baseDefense = 45,
+ .baseSpeed = 95,
+ .baseSpAttack = 115,
+ .baseSpDefense = 55,
+ .type1 = TYPE_GHOST,
+ .type2 = TYPE_POISON,
+ .catchRate = 90,
+ .expYield = 126,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SPELL_TAG,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GENGAR] =
+ {
+ .baseHP = 60,
+ .baseAttack = 65,
+ .baseDefense = 60,
+ .baseSpeed = 110,
+ .baseSpAttack = 130,
+ .baseSpDefense = 75,
+ .type1 = TYPE_GHOST,
+ .type2 = TYPE_POISON,
+ .catchRate = 45,
+ .expYield = 190,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SPELL_TAG,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ONIX] =
+ {
+ .baseHP = 35,
+ .baseAttack = 45,
+ .baseDefense = 160,
+ .baseSpeed = 70,
+ .baseSpAttack = 30,
+ .baseSpDefense = 45,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_GROUND,
+ .catchRate = 45,
+ .expYield = 108,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_HARD_STONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DROWZEE] =
+ {
+ .baseHP = 60,
+ .baseAttack = 48,
+ .baseDefense = 45,
+ .baseSpeed = 42,
+ .baseSpAttack = 43,
+ .baseSpDefense = 90,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 190,
+ .expYield = 102,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_INSOMNIA, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HYPNO] =
+ {
+ .baseHP = 85,
+ .baseAttack = 73,
+ .baseDefense = 70,
+ .baseSpeed = 67,
+ .baseSpAttack = 73,
+ .baseSpDefense = 115,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 75,
+ .expYield = 165,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_INSOMNIA, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_KRABBY] =
+ {
+ .baseHP = 30,
+ .baseAttack = 105,
+ .baseDefense = 90,
+ .baseSpeed = 50,
+ .baseSpAttack = 25,
+ .baseSpDefense = 25,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 225,
+ .expYield = 115,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_3,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_KINGLER] =
+ {
+ .baseHP = 55,
+ .baseAttack = 130,
+ .baseDefense = 115,
+ .baseSpeed = 75,
+ .baseSpAttack = 50,
+ .baseSpDefense = 50,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 60,
+ .expYield = 206,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_3,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = TRUE,
+ },
+ [SPECIES_VOLTORB] =
+ {
+ .baseHP = 40,
+ .baseAttack = 30,
+ .baseDefense = 50,
+ .baseSpeed = 100,
+ .baseSpAttack = 55,
+ .baseSpDefense = 55,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 190,
+ .expYield = 103,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_SOUNDPROOF, ABILITY_STATIC },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ELECTRODE] =
+ {
+ .baseHP = 60,
+ .baseAttack = 50,
+ .baseDefense = 70,
+ .baseSpeed = 140,
+ .baseSpAttack = 80,
+ .baseSpDefense = 80,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 60,
+ .expYield = 150,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_SOUNDPROOF, ABILITY_STATIC },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_EXEGGCUTE] =
+ {
+ .baseHP = 60,
+ .baseAttack = 40,
+ .baseDefense = 80,
+ .baseSpeed = 40,
+ .baseSpAttack = 60,
+ .baseSpDefense = 45,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 90,
+ .expYield = 98,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 75,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_EXEGGUTOR] =
+ {
+ .baseHP = 95,
+ .baseAttack = 95,
+ .baseDefense = 85,
+ .baseSpeed = 55,
+ .baseSpAttack = 125,
+ .baseSpDefense = 65,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 45,
+ .expYield = 212,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CUBONE] =
+ {
+ .baseHP = 50,
+ .baseAttack = 50,
+ .baseDefense = 95,
+ .baseSpeed = 35,
+ .baseSpAttack = 40,
+ .baseSpDefense = 50,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_GROUND,
+ .catchRate = 190,
+ .expYield = 87,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_THICK_CLUB,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_MONSTER,
+ .abilities = { ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MAROWAK] =
+ {
+ .baseHP = 60,
+ .baseAttack = 80,
+ .baseDefense = 110,
+ .baseSpeed = 45,
+ .baseSpAttack = 50,
+ .baseSpDefense = 80,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_GROUND,
+ .catchRate = 75,
+ .expYield = 124,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_THICK_CLUB,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_MONSTER,
+ .abilities = { ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HITMONLEE] =
+ {
+ .baseHP = 50,
+ .baseAttack = 120,
+ .baseDefense = 53,
+ .baseSpeed = 87,
+ .baseSpAttack = 35,
+ .baseSpDefense = 110,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 45,
+ .expYield = 139,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_MALE,
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_LIMBER, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HITMONCHAN] =
+ {
+ .baseHP = 50,
+ .baseAttack = 105,
+ .baseDefense = 79,
+ .baseSpeed = 76,
+ .baseSpAttack = 35,
+ .baseSpDefense = 110,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 45,
+ .expYield = 140,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_MALE,
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LICKITUNG] =
+ {
+ .baseHP = 90,
+ .baseAttack = 55,
+ .baseDefense = 75,
+ .baseSpeed = 30,
+ .baseSpAttack = 60,
+ .baseSpDefense = 75,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 127,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_MONSTER,
+ .abilities = { ABILITY_OWN_TEMPO, ABILITY_OBLIVIOUS },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_KOFFING] =
+ {
+ .baseHP = 40,
+ .baseAttack = 65,
+ .baseDefense = 95,
+ .baseSpeed = 35,
+ .baseSpAttack = 60,
+ .baseSpDefense = 45,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 190,
+ .expYield = 114,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WEEZING] =
+ {
+ .baseHP = 65,
+ .baseAttack = 90,
+ .baseDefense = 120,
+ .baseSpeed = 60,
+ .baseSpAttack = 85,
+ .baseSpDefense = 70,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 60,
+ .expYield = 173,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_RHYHORN] =
+ {
+ .baseHP = 80,
+ .baseAttack = 85,
+ .baseDefense = 95,
+ .baseSpeed = 25,
+ .baseSpAttack = 30,
+ .baseSpDefense = 30,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_ROCK,
+ .catchRate = 120,
+ .expYield = 135,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD },
+ .safariZoneFleeRate = 75,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_RHYDON] =
+ {
+ .baseHP = 105,
+ .baseAttack = 130,
+ .baseDefense = 120,
+ .baseSpeed = 40,
+ .baseSpAttack = 45,
+ .baseSpDefense = 45,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_ROCK,
+ .catchRate = 60,
+ .expYield = 204,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CHANSEY] =
+ {
+ .baseHP = 250,
+ .baseAttack = 5,
+ .baseDefense = 5,
+ .baseSpeed = 50,
+ .baseSpAttack = 35,
+ .baseSpDefense = 105,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 30,
+ .expYield = 255,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_LUCKY_EGG,
+ .genderRatio = MON_FEMALE,
+ .eggCycles = 40,
+ .friendship = 140,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE },
+ .safariZoneFleeRate = 125,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TANGELA] =
+ {
+ .baseHP = 65,
+ .baseAttack = 55,
+ .baseDefense = 115,
+ .baseSpeed = 60,
+ .baseSpAttack = 100,
+ .baseSpDefense = 40,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 45,
+ .expYield = 166,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_KANGASKHAN] =
+ {
+ .baseHP = 105,
+ .baseAttack = 95,
+ .baseDefense = 80,
+ .baseSpeed = 90,
+ .baseSpAttack = 40,
+ .baseSpDefense = 80,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 175,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_FEMALE,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_MONSTER,
+ .abilities = { ABILITY_EARLY_BIRD, ABILITY_NONE },
+ .safariZoneFleeRate = 125,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HORSEA] =
+ {
+ .baseHP = 30,
+ .baseAttack = 40,
+ .baseDefense = 70,
+ .baseSpeed = 60,
+ .baseSpAttack = 70,
+ .baseSpDefense = 25,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 225,
+ .expYield = 83,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SEADRA] =
+ {
+ .baseHP = 55,
+ .baseAttack = 65,
+ .baseDefense = 95,
+ .baseSpeed = 85,
+ .baseSpAttack = 95,
+ .baseSpDefense = 45,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 75,
+ .expYield = 155,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_POISON_POINT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GOLDEEN] =
+ {
+ .baseHP = 45,
+ .baseAttack = 67,
+ .baseDefense = 60,
+ .baseSpeed = 63,
+ .baseSpAttack = 35,
+ .baseSpDefense = 50,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 225,
+ .expYield = 111,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_2,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_WATER_VEIL },
+ .safariZoneFleeRate = 50,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SEAKING] =
+ {
+ .baseHP = 80,
+ .baseAttack = 92,
+ .baseDefense = 65,
+ .baseSpeed = 68,
+ .baseSpAttack = 65,
+ .baseSpDefense = 80,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 60,
+ .expYield = 170,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_2,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_WATER_VEIL },
+ .safariZoneFleeRate = 75,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_STARYU] =
+ {
+ .baseHP = 30,
+ .baseAttack = 45,
+ .baseDefense = 55,
+ .baseSpeed = 85,
+ .baseSpAttack = 70,
+ .baseSpDefense = 55,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 225,
+ .expYield = 106,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_STARDUST,
+ .item2 = ITEM_STAR_PIECE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_3,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_ILLUMINATE, ABILITY_NATURAL_CURE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_STARMIE] =
+ {
+ .baseHP = 60,
+ .baseAttack = 75,
+ .baseDefense = 85,
+ .baseSpeed = 115,
+ .baseSpAttack = 100,
+ .baseSpDefense = 85,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 60,
+ .expYield = 207,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_STARDUST,
+ .item2 = ITEM_STAR_PIECE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_3,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_ILLUMINATE, ABILITY_NATURAL_CURE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MR_MIME] =
+ {
+ .baseHP = 40,
+ .baseAttack = 45,
+ .baseDefense = 65,
+ .baseSpeed = 90,
+ .baseSpAttack = 100,
+ .baseSpDefense = 120,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 45,
+ .expYield = 136,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_SOUNDPROOF, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SCYTHER] =
+ {
+ .baseHP = 70,
+ .baseAttack = 110,
+ .baseDefense = 80,
+ .baseSpeed = 105,
+ .baseSpAttack = 55,
+ .baseSpDefense = 80,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 187,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SWARM, ABILITY_NONE },
+ .safariZoneFleeRate = 125,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_JYNX] =
+ {
+ .baseHP = 65,
+ .baseAttack = 50,
+ .baseDefense = 35,
+ .baseSpeed = 95,
+ .baseSpAttack = 115,
+ .baseSpDefense = 95,
+ .type1 = TYPE_ICE,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 45,
+ .expYield = 137,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_FEMALE,
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ELECTABUZZ] =
+ {
+ .baseHP = 65,
+ .baseAttack = 83,
+ .baseDefense = 57,
+ .baseSpeed = 105,
+ .baseSpAttack = 95,
+ .baseSpDefense = 85,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 45,
+ .expYield = 156,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_STATIC, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = TRUE,
+ },
+ [SPECIES_MAGMAR] =
+ {
+ .baseHP = 65,
+ .baseAttack = 95,
+ .baseDefense = 57,
+ .baseSpeed = 93,
+ .baseSpAttack = 100,
+ .baseSpDefense = 85,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 45,
+ .expYield = 167,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_FLAME_BODY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PINSIR] =
+ {
+ .baseHP = 65,
+ .baseAttack = 125,
+ .baseDefense = 100,
+ .baseSpeed = 85,
+ .baseSpAttack = 55,
+ .baseSpDefense = 70,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_BUG,
+ .catchRate = 45,
+ .expYield = 200,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_HYPER_CUTTER, ABILITY_NONE },
+ .safariZoneFleeRate = 125,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TAUROS] =
+ {
+ .baseHP = 75,
+ .baseAttack = 100,
+ .baseDefense = 95,
+ .baseSpeed = 110,
+ .baseSpAttack = 40,
+ .baseSpDefense = 70,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 211,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_MALE,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE },
+ .safariZoneFleeRate = 125,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MAGIKARP] =
+ {
+ .baseHP = 20,
+ .baseAttack = 10,
+ .baseDefense = 55,
+ .baseSpeed = 80,
+ .baseSpAttack = 15,
+ .baseSpDefense = 20,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 255,
+ .expYield = 20,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 5,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_2,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE },
+ .safariZoneFleeRate = 25,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GYARADOS] =
+ {
+ .baseHP = 95,
+ .baseAttack = 125,
+ .baseDefense = 79,
+ .baseSpeed = 81,
+ .baseSpAttack = 60,
+ .baseSpDefense = 100,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 214,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 5,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_2,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LAPRAS] =
+ {
+ .baseHP = 130,
+ .baseAttack = 85,
+ .baseDefense = 80,
+ .baseSpeed = 60,
+ .baseSpAttack = 85,
+ .baseSpDefense = 95,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_ICE,
+ .catchRate = 45,
+ .expYield = 219,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 40,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DITTO] =
+ {
+ .baseHP = 48,
+ .baseAttack = 48,
+ .baseDefense = 48,
+ .baseSpeed = 48,
+ .baseSpAttack = 48,
+ .baseSpDefense = 48,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 35,
+ .expYield = 61,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_METAL_POWDER,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_DITTO,
+ .eggGroup2 = EGG_GROUP_DITTO,
+ .abilities = { ABILITY_LIMBER, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_EEVEE] =
+ {
+ .baseHP = 55,
+ .baseAttack = 55,
+ .baseDefense = 50,
+ .baseSpeed = 55,
+ .baseSpAttack = 45,
+ .baseSpDefense = 65,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 92,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 35,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_RUN_AWAY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_VAPOREON] =
+ {
+ .baseHP = 130,
+ .baseAttack = 65,
+ .baseDefense = 60,
+ .baseSpeed = 65,
+ .baseSpAttack = 110,
+ .baseSpDefense = 95,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 196,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 35,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_WATER_ABSORB, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_JOLTEON] =
+ {
+ .baseHP = 65,
+ .baseAttack = 65,
+ .baseDefense = 60,
+ .baseSpeed = 130,
+ .baseSpAttack = 110,
+ .baseSpDefense = 95,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 45,
+ .expYield = 197,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 35,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_VOLT_ABSORB, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_FLAREON] =
+ {
+ .baseHP = 65,
+ .baseAttack = 130,
+ .baseDefense = 60,
+ .baseSpeed = 65,
+ .baseSpAttack = 95,
+ .baseSpDefense = 110,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 45,
+ .expYield = 198,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 35,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PORYGON] =
+ {
+ .baseHP = 65,
+ .baseAttack = 60,
+ .baseDefense = 70,
+ .baseSpeed = 40,
+ .baseSpAttack = 85,
+ .baseSpDefense = 75,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 130,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_TRACE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_OMANYTE] =
+ {
+ .baseHP = 35,
+ .baseAttack = 40,
+ .baseDefense = 100,
+ .baseSpeed = 35,
+ .baseSpAttack = 90,
+ .baseSpDefense = 55,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 120,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 30,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_SHELL_ARMOR },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_OMASTAR] =
+ {
+ .baseHP = 70,
+ .baseAttack = 60,
+ .baseDefense = 125,
+ .baseSpeed = 55,
+ .baseSpAttack = 115,
+ .baseSpDefense = 70,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 199,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 30,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_SHELL_ARMOR },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_KABUTO] =
+ {
+ .baseHP = 30,
+ .baseAttack = 80,
+ .baseDefense = 90,
+ .baseSpeed = 55,
+ .baseSpAttack = 55,
+ .baseSpDefense = 45,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 119,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 30,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_BATTLE_ARMOR },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_KABUTOPS] =
+ {
+ .baseHP = 60,
+ .baseAttack = 115,
+ .baseDefense = 105,
+ .baseSpeed = 80,
+ .baseSpAttack = 65,
+ .baseSpDefense = 70,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 201,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 30,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_BATTLE_ARMOR },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_AERODACTYL] =
+ {
+ .baseHP = 80,
+ .baseAttack = 105,
+ .baseDefense = 65,
+ .baseSpeed = 130,
+ .baseSpAttack = 60,
+ .baseSpDefense = 75,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 202,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 35,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_ROCK_HEAD, ABILITY_PRESSURE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SNORLAX] =
+ {
+ .baseHP = 160,
+ .baseAttack = 110,
+ .baseDefense = 65,
+ .baseSpeed = 30,
+ .baseSpAttack = 65,
+ .baseSpDefense = 110,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 25,
+ .expYield = 154,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_CHESTO_BERRY,
+ .item2 = ITEM_CHESTO_BERRY,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 40,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_MONSTER,
+ .abilities = { ABILITY_IMMUNITY, ABILITY_THICK_FAT },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ARTICUNO] =
+ {
+ .baseHP = 90,
+ .baseAttack = 85,
+ .baseDefense = 100,
+ .baseSpeed = 85,
+ .baseSpAttack = 95,
+ .baseSpDefense = 125,
+ .type1 = TYPE_ICE,
+ .type2 = TYPE_FLYING,
+ .catchRate = 3,
+ .expYield = 215,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 3,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 80,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_PRESSURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ZAPDOS] =
+ {
+ .baseHP = 90,
+ .baseAttack = 90,
+ .baseDefense = 85,
+ .baseSpeed = 100,
+ .baseSpAttack = 125,
+ .baseSpDefense = 90,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_FLYING,
+ .catchRate = 3,
+ .expYield = 216,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 80,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_PRESSURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MOLTRES] =
+ {
+ .baseHP = 90,
+ .baseAttack = 100,
+ .baseDefense = 90,
+ .baseSpeed = 90,
+ .baseSpAttack = 125,
+ .baseSpDefense = 85,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FLYING,
+ .catchRate = 3,
+ .expYield = 217,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 80,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_PRESSURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DRATINI] =
+ {
+ .baseHP = 41,
+ .baseAttack = 64,
+ .baseDefense = 45,
+ .baseSpeed = 50,
+ .baseSpAttack = 50,
+ .baseSpDefense = 50,
+ .type1 = TYPE_DRAGON,
+ .type2 = TYPE_DRAGON,
+ .catchRate = 45,
+ .expYield = 67,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 40,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE },
+ .safariZoneFleeRate = 100,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DRAGONAIR] =
+ {
+ .baseHP = 61,
+ .baseAttack = 84,
+ .baseDefense = 65,
+ .baseSpeed = 70,
+ .baseSpAttack = 70,
+ .baseSpDefense = 70,
+ .type1 = TYPE_DRAGON,
+ .type2 = TYPE_DRAGON,
+ .catchRate = 45,
+ .expYield = 144,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_DRAGON_FANG,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 40,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE },
+ .safariZoneFleeRate = 125,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DRAGONITE] =
+ {
+ .baseHP = 91,
+ .baseAttack = 134,
+ .baseDefense = 95,
+ .baseSpeed = 80,
+ .baseSpAttack = 100,
+ .baseSpDefense = 100,
+ .type1 = TYPE_DRAGON,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 218,
+ .evYield_HP = 0,
+ .evYield_Attack = 3,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_DRAGON_FANG,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 40,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MEWTWO] =
+ {
+ .baseHP = 106,
+ .baseAttack = 110,
+ .baseDefense = 90,
+ .baseSpeed = 130,
+ .baseSpAttack = 154,
+ .baseSpDefense = 90,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 3,
+ .expYield = 220,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 120,
+ .friendship = 0,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_PRESSURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MEW] =
+ {
+ .baseHP = 100,
+ .baseAttack = 100,
+ .baseDefense = 100,
+ .baseSpeed = 100,
+ .baseSpAttack = 100,
+ .baseSpDefense = 100,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 45,
+ .expYield = 64,
+ .evYield_HP = 3,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 120,
+ .friendship = 100,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_SYNCHRONIZE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CHIKORITA] =
+ {
+ .baseHP = 45,
+ .baseAttack = 49,
+ .baseDefense = 65,
+ .baseSpeed = 45,
+ .baseSpAttack = 49,
+ .baseSpDefense = 65,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 45,
+ .expYield = 64,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_LUM_BERRY,
+ .item2 = ITEM_LUM_BERRY,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_OVERGROW, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BAYLEEF] =
+ {
+ .baseHP = 60,
+ .baseAttack = 62,
+ .baseDefense = 80,
+ .baseSpeed = 60,
+ .baseSpAttack = 63,
+ .baseSpDefense = 80,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 45,
+ .expYield = 141,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_OVERGROW, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MEGANIUM] =
+ {
+ .baseHP = 80,
+ .baseAttack = 82,
+ .baseDefense = 100,
+ .baseSpeed = 80,
+ .baseSpAttack = 83,
+ .baseSpDefense = 100,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 45,
+ .expYield = 208,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_OVERGROW, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CYNDAQUIL] =
+ {
+ .baseHP = 39,
+ .baseAttack = 52,
+ .baseDefense = 43,
+ .baseSpeed = 65,
+ .baseSpAttack = 60,
+ .baseSpDefense = 50,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 45,
+ .expYield = 65,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_BLAZE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_QUILAVA] =
+ {
+ .baseHP = 58,
+ .baseAttack = 64,
+ .baseDefense = 58,
+ .baseSpeed = 80,
+ .baseSpAttack = 80,
+ .baseSpDefense = 65,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 45,
+ .expYield = 142,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_BLAZE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TYPHLOSION] =
+ {
+ .baseHP = 78,
+ .baseAttack = 84,
+ .baseDefense = 78,
+ .baseSpeed = 100,
+ .baseSpAttack = 109,
+ .baseSpDefense = 85,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 45,
+ .expYield = 209,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_BLAZE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TOTODILE] =
+ {
+ .baseHP = 50,
+ .baseAttack = 65,
+ .baseDefense = 64,
+ .baseSpeed = 43,
+ .baseSpAttack = 44,
+ .baseSpDefense = 48,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 66,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_TORRENT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CROCONAW] =
+ {
+ .baseHP = 65,
+ .baseAttack = 80,
+ .baseDefense = 80,
+ .baseSpeed = 58,
+ .baseSpAttack = 59,
+ .baseSpDefense = 63,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 143,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_TORRENT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = TRUE,
+ },
+ [SPECIES_FERALIGATR] =
+ {
+ .baseHP = 85,
+ .baseAttack = 105,
+ .baseDefense = 100,
+ .baseSpeed = 78,
+ .baseSpAttack = 79,
+ .baseSpDefense = 83,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 210,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_TORRENT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SENTRET] =
+ {
+ .baseHP = 35,
+ .baseAttack = 46,
+ .baseDefense = 34,
+ .baseSpeed = 20,
+ .baseSpAttack = 35,
+ .baseSpDefense = 45,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 255,
+ .expYield = 57,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_ORAN_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_RUN_AWAY, ABILITY_KEEN_EYE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_FURRET] =
+ {
+ .baseHP = 85,
+ .baseAttack = 76,
+ .baseDefense = 64,
+ .baseSpeed = 90,
+ .baseSpAttack = 45,
+ .baseSpDefense = 55,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 90,
+ .expYield = 116,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_ORAN_BERRY,
+ .item2 = ITEM_SITRUS_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_RUN_AWAY, ABILITY_KEEN_EYE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HOOTHOOT] =
+ {
+ .baseHP = 60,
+ .baseAttack = 30,
+ .baseDefense = 30,
+ .baseSpeed = 50,
+ .baseSpAttack = 36,
+ .baseSpDefense = 56,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 255,
+ .expYield = 58,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_INSOMNIA, ABILITY_KEEN_EYE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NOCTOWL] =
+ {
+ .baseHP = 100,
+ .baseAttack = 50,
+ .baseDefense = 50,
+ .baseSpeed = 70,
+ .baseSpAttack = 76,
+ .baseSpDefense = 96,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 90,
+ .expYield = 162,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_INSOMNIA, ABILITY_KEEN_EYE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LEDYBA] =
+ {
+ .baseHP = 40,
+ .baseAttack = 20,
+ .baseDefense = 30,
+ .baseSpeed = 55,
+ .baseSpAttack = 40,
+ .baseSpDefense = 80,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_FLYING,
+ .catchRate = 255,
+ .expYield = 54,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SWARM, ABILITY_EARLY_BIRD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LEDIAN] =
+ {
+ .baseHP = 55,
+ .baseAttack = 35,
+ .baseDefense = 50,
+ .baseSpeed = 85,
+ .baseSpAttack = 55,
+ .baseSpDefense = 110,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_FLYING,
+ .catchRate = 90,
+ .expYield = 134,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SWARM, ABILITY_EARLY_BIRD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SPINARAK] =
+ {
+ .baseHP = 40,
+ .baseAttack = 60,
+ .baseDefense = 40,
+ .baseSpeed = 30,
+ .baseSpAttack = 40,
+ .baseSpDefense = 40,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_POISON,
+ .catchRate = 255,
+ .expYield = 54,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SWARM, ABILITY_INSOMNIA },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ARIADOS] =
+ {
+ .baseHP = 70,
+ .baseAttack = 90,
+ .baseDefense = 70,
+ .baseSpeed = 40,
+ .baseSpAttack = 60,
+ .baseSpDefense = 60,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_POISON,
+ .catchRate = 90,
+ .expYield = 134,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SWARM, ABILITY_INSOMNIA },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CROBAT] =
+ {
+ .baseHP = 85,
+ .baseAttack = 90,
+ .baseDefense = 80,
+ .baseSpeed = 130,
+ .baseSpAttack = 70,
+ .baseSpDefense = 80,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_FLYING,
+ .catchRate = 90,
+ .expYield = 204,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 3,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CHINCHOU] =
+ {
+ .baseHP = 75,
+ .baseAttack = 38,
+ .baseDefense = 38,
+ .baseSpeed = 67,
+ .baseSpAttack = 56,
+ .baseSpDefense = 56,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 190,
+ .expYield = 90,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_YELLOW_SHARD,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_2,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_VOLT_ABSORB, ABILITY_ILLUMINATE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LANTURN] =
+ {
+ .baseHP = 125,
+ .baseAttack = 58,
+ .baseDefense = 58,
+ .baseSpeed = 67,
+ .baseSpAttack = 76,
+ .baseSpDefense = 76,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 75,
+ .expYield = 156,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_YELLOW_SHARD,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_2,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_VOLT_ABSORB, ABILITY_ILLUMINATE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PICHU] =
+ {
+ .baseHP = 20,
+ .baseAttack = 40,
+ .baseDefense = 15,
+ .baseSpeed = 60,
+ .baseSpAttack = 35,
+ .baseSpDefense = 35,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 190,
+ .expYield = 42,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 10,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_STATIC, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CLEFFA] =
+ {
+ .baseHP = 50,
+ .baseAttack = 25,
+ .baseDefense = 28,
+ .baseSpeed = 15,
+ .baseSpAttack = 45,
+ .baseSpDefense = 55,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 150,
+ .expYield = 37,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_MOON_STONE,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 10,
+ .friendship = 140,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_IGGLYBUFF] =
+ {
+ .baseHP = 90,
+ .baseAttack = 30,
+ .baseDefense = 15,
+ .baseSpeed = 15,
+ .baseSpAttack = 40,
+ .baseSpDefense = 20,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 170,
+ .expYield = 39,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_ORAN_BERRY,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 10,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = TRUE,
+ },
+ [SPECIES_TOGEPI] =
+ {
+ .baseHP = 35,
+ .baseAttack = 20,
+ .baseDefense = 65,
+ .baseSpeed = 20,
+ .baseSpAttack = 40,
+ .baseSpDefense = 65,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 190,
+ .expYield = 74,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 10,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_HUSTLE, ABILITY_SERENE_GRACE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TOGETIC] =
+ {
+ .baseHP = 55,
+ .baseAttack = 40,
+ .baseDefense = 85,
+ .baseSpeed = 40,
+ .baseSpAttack = 80,
+ .baseSpDefense = 105,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 75,
+ .expYield = 114,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 10,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_HUSTLE, ABILITY_SERENE_GRACE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NATU] =
+ {
+ .baseHP = 40,
+ .baseAttack = 50,
+ .baseDefense = 45,
+ .baseSpeed = 70,
+ .baseSpAttack = 70,
+ .baseSpDefense = 45,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_FLYING,
+ .catchRate = 190,
+ .expYield = 73,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_SYNCHRONIZE, ABILITY_EARLY_BIRD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_XATU] =
+ {
+ .baseHP = 65,
+ .baseAttack = 75,
+ .baseDefense = 70,
+ .baseSpeed = 95,
+ .baseSpAttack = 95,
+ .baseSpDefense = 70,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_FLYING,
+ .catchRate = 75,
+ .expYield = 171,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_SYNCHRONIZE, ABILITY_EARLY_BIRD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MAREEP] =
+ {
+ .baseHP = 55,
+ .baseAttack = 40,
+ .baseDefense = 40,
+ .baseSpeed = 35,
+ .baseSpAttack = 65,
+ .baseSpDefense = 45,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 235,
+ .expYield = 59,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_STATIC, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_FLAAFFY] =
+ {
+ .baseHP = 70,
+ .baseAttack = 55,
+ .baseDefense = 55,
+ .baseSpeed = 45,
+ .baseSpAttack = 80,
+ .baseSpDefense = 60,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 120,
+ .expYield = 117,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_STATIC, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_AMPHAROS] =
+ {
+ .baseHP = 90,
+ .baseAttack = 75,
+ .baseDefense = 75,
+ .baseSpeed = 55,
+ .baseSpAttack = 115,
+ .baseSpDefense = 90,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 45,
+ .expYield = 194,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_STATIC, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BELLOSSOM] =
+ {
+ .baseHP = 75,
+ .baseAttack = 80,
+ .baseDefense = 85,
+ .baseSpeed = 50,
+ .baseSpAttack = 90,
+ .baseSpDefense = 100,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 45,
+ .expYield = 184,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 3,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MARILL] =
+ {
+ .baseHP = 70,
+ .baseAttack = 20,
+ .baseDefense = 50,
+ .baseSpeed = 40,
+ .baseSpAttack = 20,
+ .baseSpDefense = 50,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 190,
+ .expYield = 58,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 10,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_HUGE_POWER },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_AZUMARILL] =
+ {
+ .baseHP = 100,
+ .baseAttack = 50,
+ .baseDefense = 80,
+ .baseSpeed = 50,
+ .baseSpAttack = 50,
+ .baseSpDefense = 80,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 75,
+ .expYield = 153,
+ .evYield_HP = 3,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 10,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_HUGE_POWER },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SUDOWOODO] =
+ {
+ .baseHP = 70,
+ .baseAttack = 100,
+ .baseDefense = 115,
+ .baseSpeed = 30,
+ .baseSpAttack = 30,
+ .baseSpDefense = 65,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_ROCK,
+ .catchRate = 65,
+ .expYield = 135,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_STURDY, ABILITY_ROCK_HEAD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_POLITOED] =
+ {
+ .baseHP = 90,
+ .baseAttack = 75,
+ .baseDefense = 75,
+ .baseSpeed = 70,
+ .baseSpAttack = 90,
+ .baseSpDefense = 100,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 185,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 3,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_KINGS_ROCK,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_WATER_ABSORB, ABILITY_DAMP },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = TRUE,
+ },
+ [SPECIES_HOPPIP] =
+ {
+ .baseHP = 35,
+ .baseAttack = 35,
+ .baseDefense = 40,
+ .baseSpeed = 50,
+ .baseSpAttack = 35,
+ .baseSpDefense = 55,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_FLYING,
+ .catchRate = 255,
+ .expYield = 74,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SKIPLOOM] =
+ {
+ .baseHP = 55,
+ .baseAttack = 45,
+ .baseDefense = 50,
+ .baseSpeed = 80,
+ .baseSpAttack = 45,
+ .baseSpDefense = 65,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_FLYING,
+ .catchRate = 120,
+ .expYield = 136,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_JUMPLUFF] =
+ {
+ .baseHP = 75,
+ .baseAttack = 55,
+ .baseDefense = 70,
+ .baseSpeed = 110,
+ .baseSpAttack = 55,
+ .baseSpDefense = 85,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 176,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 3,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_AIPOM] =
+ {
+ .baseHP = 55,
+ .baseAttack = 70,
+ .baseDefense = 55,
+ .baseSpeed = 85,
+ .baseSpAttack = 40,
+ .baseSpDefense = 55,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 94,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_RUN_AWAY, ABILITY_PICKUP },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SUNKERN] =
+ {
+ .baseHP = 30,
+ .baseAttack = 30,
+ .baseDefense = 30,
+ .baseSpeed = 30,
+ .baseSpAttack = 30,
+ .baseSpDefense = 30,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 235,
+ .expYield = 52,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SUNFLORA] =
+ {
+ .baseHP = 75,
+ .baseAttack = 75,
+ .baseDefense = 55,
+ .baseSpeed = 30,
+ .baseSpAttack = 105,
+ .baseSpDefense = 85,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 120,
+ .expYield = 146,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_YANMA] =
+ {
+ .baseHP = 65,
+ .baseAttack = 65,
+ .baseDefense = 45,
+ .baseSpeed = 95,
+ .baseSpAttack = 75,
+ .baseSpDefense = 45,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_FLYING,
+ .catchRate = 75,
+ .expYield = 147,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SPEED_BOOST, ABILITY_COMPOUND_EYES },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WOOPER] =
+ {
+ .baseHP = 55,
+ .baseAttack = 45,
+ .baseDefense = 45,
+ .baseSpeed = 15,
+ .baseSpAttack = 25,
+ .baseSpDefense = 25,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_GROUND,
+ .catchRate = 255,
+ .expYield = 52,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_DAMP, ABILITY_WATER_ABSORB },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_QUAGSIRE] =
+ {
+ .baseHP = 95,
+ .baseAttack = 85,
+ .baseDefense = 85,
+ .baseSpeed = 35,
+ .baseSpAttack = 65,
+ .baseSpDefense = 65,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_GROUND,
+ .catchRate = 90,
+ .expYield = 137,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_DAMP, ABILITY_WATER_ABSORB },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ESPEON] =
+ {
+ .baseHP = 65,
+ .baseAttack = 65,
+ .baseDefense = 60,
+ .baseSpeed = 110,
+ .baseSpAttack = 130,
+ .baseSpDefense = 95,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 45,
+ .expYield = 197,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 35,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_SYNCHRONIZE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_UMBREON] =
+ {
+ .baseHP = 95,
+ .baseAttack = 65,
+ .baseDefense = 110,
+ .baseSpeed = 65,
+ .baseSpAttack = 60,
+ .baseSpDefense = 130,
+ .type1 = TYPE_DARK,
+ .type2 = TYPE_DARK,
+ .catchRate = 45,
+ .expYield = 197,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 35,
+ .friendship = 35,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_SYNCHRONIZE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MURKROW] =
+ {
+ .baseHP = 60,
+ .baseAttack = 85,
+ .baseDefense = 42,
+ .baseSpeed = 91,
+ .baseSpAttack = 85,
+ .baseSpDefense = 42,
+ .type1 = TYPE_DARK,
+ .type2 = TYPE_FLYING,
+ .catchRate = 30,
+ .expYield = 107,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 35,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_INSOMNIA, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SLOWKING] =
+ {
+ .baseHP = 95,
+ .baseAttack = 75,
+ .baseDefense = 80,
+ .baseSpeed = 30,
+ .baseSpAttack = 100,
+ .baseSpDefense = 110,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 70,
+ .expYield = 164,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 3,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_KINGS_ROCK,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MISDREAVUS] =
+ {
+ .baseHP = 60,
+ .baseAttack = 60,
+ .baseDefense = 60,
+ .baseSpeed = 85,
+ .baseSpAttack = 85,
+ .baseSpDefense = 85,
+ .type1 = TYPE_GHOST,
+ .type2 = TYPE_GHOST,
+ .catchRate = 45,
+ .expYield = 147,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SPELL_TAG,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 35,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_UNOWN] =
+ {
+ .baseHP = 48,
+ .baseAttack = 72,
+ .baseDefense = 48,
+ .baseSpeed = 48,
+ .baseSpAttack = 72,
+ .baseSpDefense = 48,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 225,
+ .expYield = 61,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 40,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = TRUE,
+ },
+ [SPECIES_WOBBUFFET] =
+ {
+ .baseHP = 190,
+ .baseAttack = 33,
+ .baseDefense = 58,
+ .baseSpeed = 33,
+ .baseSpAttack = 33,
+ .baseSpDefense = 58,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 45,
+ .expYield = 177,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_SHADOW_TAG, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GIRAFARIG] =
+ {
+ .baseHP = 70,
+ .baseAttack = 80,
+ .baseDefense = 65,
+ .baseSpeed = 85,
+ .baseSpAttack = 90,
+ .baseSpDefense = 65,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 60,
+ .expYield = 149,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_PERSIM_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_INNER_FOCUS, ABILITY_EARLY_BIRD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PINECO] =
+ {
+ .baseHP = 50,
+ .baseAttack = 65,
+ .baseDefense = 90,
+ .baseSpeed = 15,
+ .baseSpAttack = 35,
+ .baseSpDefense = 35,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_BUG,
+ .catchRate = 190,
+ .expYield = 60,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_STURDY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_FORRETRESS] =
+ {
+ .baseHP = 75,
+ .baseAttack = 90,
+ .baseDefense = 140,
+ .baseSpeed = 40,
+ .baseSpAttack = 60,
+ .baseSpDefense = 60,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_STEEL,
+ .catchRate = 75,
+ .expYield = 118,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_STURDY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DUNSPARCE] =
+ {
+ .baseHP = 100,
+ .baseAttack = 70,
+ .baseDefense = 70,
+ .baseSpeed = 45,
+ .baseSpAttack = 65,
+ .baseSpDefense = 65,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 190,
+ .expYield = 75,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_SERENE_GRACE, ABILITY_RUN_AWAY },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GLIGAR] =
+ {
+ .baseHP = 65,
+ .baseAttack = 75,
+ .baseDefense = 105,
+ .baseSpeed = 85,
+ .baseSpAttack = 35,
+ .baseSpDefense = 65,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_FLYING,
+ .catchRate = 60,
+ .expYield = 108,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SAND_VEIL },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_STEELIX] =
+ {
+ .baseHP = 75,
+ .baseAttack = 85,
+ .baseDefense = 200,
+ .baseSpeed = 30,
+ .baseSpAttack = 55,
+ .baseSpDefense = 65,
+ .type1 = TYPE_STEEL,
+ .type2 = TYPE_GROUND,
+ .catchRate = 25,
+ .expYield = 196,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_METAL_COAT,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SNUBBULL] =
+ {
+ .baseHP = 60,
+ .baseAttack = 80,
+ .baseDefense = 50,
+ .baseSpeed = 30,
+ .baseSpAttack = 40,
+ .baseSpDefense = 40,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 190,
+ .expYield = 63,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_RUN_AWAY },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GRANBULL] =
+ {
+ .baseHP = 90,
+ .baseAttack = 120,
+ .baseDefense = 75,
+ .baseSpeed = 45,
+ .baseSpAttack = 60,
+ .baseSpDefense = 60,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 75,
+ .expYield = 178,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_INTIMIDATE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_QWILFISH] =
+ {
+ .baseHP = 65,
+ .baseAttack = 95,
+ .baseDefense = 75,
+ .baseSpeed = 85,
+ .baseSpAttack = 55,
+ .baseSpDefense = 55,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_POISON,
+ .catchRate = 45,
+ .expYield = 100,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_2,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SCIZOR] =
+ {
+ .baseHP = 70,
+ .baseAttack = 130,
+ .baseDefense = 100,
+ .baseSpeed = 65,
+ .baseSpAttack = 55,
+ .baseSpDefense = 80,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_STEEL,
+ .catchRate = 25,
+ .expYield = 200,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SWARM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SHUCKLE] =
+ {
+ .baseHP = 20,
+ .baseAttack = 10,
+ .baseDefense = 230,
+ .baseSpeed = 5,
+ .baseSpAttack = 10,
+ .baseSpDefense = 230,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_ROCK,
+ .catchRate = 190,
+ .expYield = 80,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_BERRY_JUICE,
+ .item2 = ITEM_BERRY_JUICE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_STURDY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HERACROSS] =
+ {
+ .baseHP = 80,
+ .baseAttack = 125,
+ .baseDefense = 75,
+ .baseSpeed = 85,
+ .baseSpAttack = 40,
+ .baseSpDefense = 95,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 45,
+ .expYield = 200,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SWARM, ABILITY_GUTS },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SNEASEL] =
+ {
+ .baseHP = 55,
+ .baseAttack = 95,
+ .baseDefense = 55,
+ .baseSpeed = 115,
+ .baseSpAttack = 35,
+ .baseSpDefense = 75,
+ .type1 = TYPE_DARK,
+ .type2 = TYPE_ICE,
+ .catchRate = 60,
+ .expYield = 132,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 35,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = TRUE,
+ },
+ [SPECIES_TEDDIURSA] =
+ {
+ .baseHP = 60,
+ .baseAttack = 80,
+ .baseDefense = 50,
+ .baseSpeed = 40,
+ .baseSpAttack = 50,
+ .baseSpDefense = 50,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 120,
+ .expYield = 124,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_ORAN_BERRY,
+ .item2 = ITEM_SITRUS_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_PICKUP, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = TRUE,
+ },
+ [SPECIES_URSARING] =
+ {
+ .baseHP = 90,
+ .baseAttack = 130,
+ .baseDefense = 75,
+ .baseSpeed = 55,
+ .baseSpAttack = 75,
+ .baseSpDefense = 75,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 60,
+ .expYield = 189,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_ORAN_BERRY,
+ .item2 = ITEM_SITRUS_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_GUTS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SLUGMA] =
+ {
+ .baseHP = 40,
+ .baseAttack = 40,
+ .baseDefense = 40,
+ .baseSpeed = 20,
+ .baseSpAttack = 70,
+ .baseSpDefense = 40,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 190,
+ .expYield = 78,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_MAGMA_ARMOR, ABILITY_FLAME_BODY },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MAGCARGO] =
+ {
+ .baseHP = 50,
+ .baseAttack = 50,
+ .baseDefense = 120,
+ .baseSpeed = 30,
+ .baseSpAttack = 80,
+ .baseSpDefense = 80,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_ROCK,
+ .catchRate = 75,
+ .expYield = 154,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_MAGMA_ARMOR, ABILITY_FLAME_BODY },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SWINUB] =
+ {
+ .baseHP = 50,
+ .baseAttack = 50,
+ .baseDefense = 40,
+ .baseSpeed = 50,
+ .baseSpAttack = 30,
+ .baseSpDefense = 30,
+ .type1 = TYPE_ICE,
+ .type2 = TYPE_GROUND,
+ .catchRate = 225,
+ .expYield = 78,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_ASPEAR_BERRY,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PILOSWINE] =
+ {
+ .baseHP = 100,
+ .baseAttack = 100,
+ .baseDefense = 80,
+ .baseSpeed = 50,
+ .baseSpAttack = 60,
+ .baseSpDefense = 60,
+ .type1 = TYPE_ICE,
+ .type2 = TYPE_GROUND,
+ .catchRate = 75,
+ .expYield = 160,
+ .evYield_HP = 1,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_ASPEAR_BERRY,
+ .item2 = ITEM_NEVER_MELT_ICE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CORSOLA] =
+ {
+ .baseHP = 55,
+ .baseAttack = 55,
+ .baseDefense = 85,
+ .baseSpeed = 35,
+ .baseSpAttack = 65,
+ .baseSpDefense = 85,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_ROCK,
+ .catchRate = 60,
+ .expYield = 113,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_RED_SHARD,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_HUSTLE, ABILITY_NATURAL_CURE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_REMORAID] =
+ {
+ .baseHP = 35,
+ .baseAttack = 65,
+ .baseDefense = 35,
+ .baseSpeed = 65,
+ .baseSpAttack = 65,
+ .baseSpDefense = 35,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 190,
+ .expYield = 78,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_HUSTLE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_OCTILLERY] =
+ {
+ .baseHP = 75,
+ .baseAttack = 105,
+ .baseDefense = 75,
+ .baseSpeed = 45,
+ .baseSpAttack = 105,
+ .baseSpDefense = 75,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 75,
+ .expYield = 164,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_SUCTION_CUPS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DELIBIRD] =
+ {
+ .baseHP = 45,
+ .baseAttack = 55,
+ .baseDefense = 45,
+ .baseSpeed = 75,
+ .baseSpAttack = 65,
+ .baseSpDefense = 45,
+ .type1 = TYPE_ICE,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 183,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_HUSTLE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MANTINE] =
+ {
+ .baseHP = 65,
+ .baseAttack = 40,
+ .baseDefense = 70,
+ .baseSpeed = 70,
+ .baseSpAttack = 80,
+ .baseSpDefense = 140,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_FLYING,
+ .catchRate = 25,
+ .expYield = 168,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_WATER_ABSORB },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SKARMORY] =
+ {
+ .baseHP = 65,
+ .baseAttack = 80,
+ .baseDefense = 140,
+ .baseSpeed = 70,
+ .baseSpAttack = 40,
+ .baseSpDefense = 70,
+ .type1 = TYPE_STEEL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 25,
+ .expYield = 168,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SHARP_BEAK,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_KEEN_EYE, ABILITY_STURDY },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HOUNDOUR] =
+ {
+ .baseHP = 45,
+ .baseAttack = 60,
+ .baseDefense = 30,
+ .baseSpeed = 65,
+ .baseSpAttack = 80,
+ .baseSpDefense = 50,
+ .type1 = TYPE_DARK,
+ .type2 = TYPE_FIRE,
+ .catchRate = 120,
+ .expYield = 114,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_EARLY_BIRD, ABILITY_FLASH_FIRE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HOUNDOOM] =
+ {
+ .baseHP = 75,
+ .baseAttack = 90,
+ .baseDefense = 50,
+ .baseSpeed = 95,
+ .baseSpAttack = 110,
+ .baseSpDefense = 80,
+ .type1 = TYPE_DARK,
+ .type2 = TYPE_FIRE,
+ .catchRate = 45,
+ .expYield = 204,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_EARLY_BIRD, ABILITY_FLASH_FIRE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_KINGDRA] =
+ {
+ .baseHP = 75,
+ .baseAttack = 95,
+ .baseDefense = 95,
+ .baseSpeed = 85,
+ .baseSpAttack = 95,
+ .baseSpDefense = 95,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_DRAGON,
+ .catchRate = 45,
+ .expYield = 207,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_DRAGON_SCALE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PHANPY] =
+ {
+ .baseHP = 90,
+ .baseAttack = 60,
+ .baseDefense = 60,
+ .baseSpeed = 40,
+ .baseSpAttack = 40,
+ .baseSpDefense = 40,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_GROUND,
+ .catchRate = 120,
+ .expYield = 124,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_PICKUP, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DONPHAN] =
+ {
+ .baseHP = 90,
+ .baseAttack = 120,
+ .baseDefense = 120,
+ .baseSpeed = 50,
+ .baseSpAttack = 60,
+ .baseSpDefense = 60,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_GROUND,
+ .catchRate = 60,
+ .expYield = 189,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_STURDY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PORYGON2] =
+ {
+ .baseHP = 85,
+ .baseAttack = 80,
+ .baseDefense = 90,
+ .baseSpeed = 60,
+ .baseSpAttack = 105,
+ .baseSpDefense = 95,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 180,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_UP_GRADE,
+ .item2 = ITEM_UP_GRADE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_TRACE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_STANTLER] =
+ {
+ .baseHP = 73,
+ .baseAttack = 95,
+ .baseDefense = 62,
+ .baseSpeed = 85,
+ .baseSpAttack = 85,
+ .baseSpDefense = 65,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 165,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SMEARGLE] =
+ {
+ .baseHP = 55,
+ .baseAttack = 20,
+ .baseDefense = 35,
+ .baseSpeed = 75,
+ .baseSpAttack = 20,
+ .baseSpDefense = 45,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 106,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_OWN_TEMPO, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TYROGUE] =
+ {
+ .baseHP = 35,
+ .baseAttack = 35,
+ .baseDefense = 35,
+ .baseSpeed = 35,
+ .baseSpAttack = 35,
+ .baseSpDefense = 35,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 75,
+ .expYield = 91,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_MALE,
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_GUTS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HITMONTOP] =
+ {
+ .baseHP = 50,
+ .baseAttack = 95,
+ .baseDefense = 95,
+ .baseSpeed = 70,
+ .baseSpAttack = 35,
+ .baseSpDefense = 110,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 45,
+ .expYield = 138,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_MALE,
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SMOOCHUM] =
+ {
+ .baseHP = 45,
+ .baseAttack = 30,
+ .baseDefense = 15,
+ .baseSpeed = 65,
+ .baseSpAttack = 85,
+ .baseSpDefense = 65,
+ .type1 = TYPE_ICE,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 45,
+ .expYield = 87,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_FEMALE,
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ELEKID] =
+ {
+ .baseHP = 45,
+ .baseAttack = 63,
+ .baseDefense = 37,
+ .baseSpeed = 95,
+ .baseSpAttack = 65,
+ .baseSpDefense = 55,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 45,
+ .expYield = 106,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_STATIC, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = TRUE,
+ },
+ [SPECIES_MAGBY] =
+ {
+ .baseHP = 45,
+ .baseAttack = 75,
+ .baseDefense = 37,
+ .baseSpeed = 83,
+ .baseSpAttack = 70,
+ .baseSpDefense = 55,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 45,
+ .expYield = 117,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_FLAME_BODY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MILTANK] =
+ {
+ .baseHP = 95,
+ .baseAttack = 80,
+ .baseDefense = 105,
+ .baseSpeed = 100,
+ .baseSpAttack = 40,
+ .baseSpDefense = 70,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 200,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_MOOMOO_MILK,
+ .item2 = ITEM_MOOMOO_MILK,
+ .genderRatio = MON_FEMALE,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BLISSEY] =
+ {
+ .baseHP = 255,
+ .baseAttack = 10,
+ .baseDefense = 10,
+ .baseSpeed = 55,
+ .baseSpAttack = 75,
+ .baseSpDefense = 135,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 30,
+ .expYield = 255,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_LUCKY_EGG,
+ .genderRatio = MON_FEMALE,
+ .eggCycles = 40,
+ .friendship = 140,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_RAIKOU] =
+ {
+ .baseHP = 90,
+ .baseAttack = 85,
+ .baseDefense = 75,
+ .baseSpeed = 115,
+ .baseSpAttack = 115,
+ .baseSpDefense = 100,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 3,
+ .expYield = 216,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 80,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_PRESSURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ENTEI] =
+ {
+ .baseHP = 115,
+ .baseAttack = 115,
+ .baseDefense = 85,
+ .baseSpeed = 100,
+ .baseSpAttack = 90,
+ .baseSpDefense = 75,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 3,
+ .expYield = 217,
+ .evYield_HP = 1,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 80,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_PRESSURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SUICUNE] =
+ {
+ .baseHP = 100,
+ .baseAttack = 75,
+ .baseDefense = 115,
+ .baseSpeed = 85,
+ .baseSpAttack = 90,
+ .baseSpDefense = 115,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 3,
+ .expYield = 215,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 80,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_PRESSURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LARVITAR] =
+ {
+ .baseHP = 50,
+ .baseAttack = 64,
+ .baseDefense = 50,
+ .baseSpeed = 41,
+ .baseSpAttack = 45,
+ .baseSpDefense = 50,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_GROUND,
+ .catchRate = 45,
+ .expYield = 67,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 40,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_MONSTER,
+ .abilities = { ABILITY_GUTS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PUPITAR] =
+ {
+ .baseHP = 70,
+ .baseAttack = 84,
+ .baseDefense = 70,
+ .baseSpeed = 51,
+ .baseSpAttack = 65,
+ .baseSpDefense = 70,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_GROUND,
+ .catchRate = 45,
+ .expYield = 144,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 40,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_MONSTER,
+ .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TYRANITAR] =
+ {
+ .baseHP = 100,
+ .baseAttack = 134,
+ .baseDefense = 110,
+ .baseSpeed = 61,
+ .baseSpAttack = 95,
+ .baseSpDefense = 100,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_DARK,
+ .catchRate = 45,
+ .expYield = 218,
+ .evYield_HP = 0,
+ .evYield_Attack = 3,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 40,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_MONSTER,
+ .abilities = { ABILITY_SAND_STREAM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LUGIA] =
+ {
+ .baseHP = 106,
+ .baseAttack = 90,
+ .baseDefense = 130,
+ .baseSpeed = 110,
+ .baseSpAttack = 90,
+ .baseSpDefense = 154,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_FLYING,
+ .catchRate = 3,
+ .expYield = 220,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 3,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 120,
+ .friendship = 0,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_PRESSURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HO_OH] =
+ {
+ .baseHP = 106,
+ .baseAttack = 130,
+ .baseDefense = 90,
+ .baseSpeed = 90,
+ .baseSpAttack = 110,
+ .baseSpDefense = 154,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FLYING,
+ .catchRate = 3,
+ .expYield = 220,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 3,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 120,
+ .friendship = 0,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_PRESSURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CELEBI] =
+ {
+ .baseHP = 100,
+ .baseAttack = 100,
+ .baseDefense = 100,
+ .baseSpeed = 100,
+ .baseSpAttack = 100,
+ .baseSpDefense = 100,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_GRASS,
+ .catchRate = 45,
+ .expYield = 64,
+ .evYield_HP = 3,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_LUM_BERRY,
+ .item2 = ITEM_LUM_BERRY,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 120,
+ .friendship = 100,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_OLD_UNOWN_B] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_C] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_D] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_E] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_F] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_G] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_H] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_I] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_J] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_K] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_L] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_M] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_N] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_O] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_P] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_Q] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_R] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_S] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_T] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_U] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_V] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_W] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_X] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_Y] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_OLD_UNOWN_Z] = OLD_UNOWN_BASE_STATS,
+ [SPECIES_TREECKO] =
+ {
+ .baseHP = 40,
+ .baseAttack = 45,
+ .baseDefense = 35,
+ .baseSpeed = 70,
+ .baseSpAttack = 65,
+ .baseSpDefense = 55,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 45,
+ .expYield = 65,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_OVERGROW, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GROVYLE] =
+ {
+ .baseHP = 50,
+ .baseAttack = 65,
+ .baseDefense = 45,
+ .baseSpeed = 95,
+ .baseSpAttack = 85,
+ .baseSpDefense = 65,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 45,
+ .expYield = 141,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_OVERGROW, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SCEPTILE] =
+ {
+ .baseHP = 70,
+ .baseAttack = 85,
+ .baseDefense = 65,
+ .baseSpeed = 120,
+ .baseSpAttack = 105,
+ .baseSpDefense = 85,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 45,
+ .expYield = 208,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 3,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_OVERGROW, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TORCHIC] =
+ {
+ .baseHP = 45,
+ .baseAttack = 60,
+ .baseDefense = 40,
+ .baseSpeed = 45,
+ .baseSpAttack = 70,
+ .baseSpDefense = 50,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 45,
+ .expYield = 65,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_BLAZE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_COMBUSKEN] =
+ {
+ .baseHP = 60,
+ .baseAttack = 85,
+ .baseDefense = 60,
+ .baseSpeed = 55,
+ .baseSpAttack = 85,
+ .baseSpDefense = 60,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 45,
+ .expYield = 142,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_BLAZE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BLAZIKEN] =
+ {
+ .baseHP = 80,
+ .baseAttack = 120,
+ .baseDefense = 70,
+ .baseSpeed = 80,
+ .baseSpAttack = 110,
+ .baseSpDefense = 70,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 45,
+ .expYield = 209,
+ .evYield_HP = 0,
+ .evYield_Attack = 3,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_BLAZE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MUDKIP] =
+ {
+ .baseHP = 50,
+ .baseAttack = 70,
+ .baseDefense = 50,
+ .baseSpeed = 40,
+ .baseSpAttack = 50,
+ .baseSpDefense = 50,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 65,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_TORRENT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MARSHTOMP] =
+ {
+ .baseHP = 70,
+ .baseAttack = 85,
+ .baseDefense = 70,
+ .baseSpeed = 50,
+ .baseSpAttack = 60,
+ .baseSpDefense = 70,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_GROUND,
+ .catchRate = 45,
+ .expYield = 143,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_TORRENT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SWAMPERT] =
+ {
+ .baseHP = 100,
+ .baseAttack = 110,
+ .baseDefense = 90,
+ .baseSpeed = 60,
+ .baseSpAttack = 85,
+ .baseSpDefense = 90,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_GROUND,
+ .catchRate = 45,
+ .expYield = 210,
+ .evYield_HP = 0,
+ .evYield_Attack = 3,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_TORRENT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_POOCHYENA] =
+ {
+ .baseHP = 35,
+ .baseAttack = 55,
+ .baseDefense = 35,
+ .baseSpeed = 35,
+ .baseSpAttack = 30,
+ .baseSpDefense = 30,
+ .type1 = TYPE_DARK,
+ .type2 = TYPE_DARK,
+ .catchRate = 255,
+ .expYield = 55,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_PECHA_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_RUN_AWAY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MIGHTYENA] =
+ {
+ .baseHP = 70,
+ .baseAttack = 90,
+ .baseDefense = 70,
+ .baseSpeed = 70,
+ .baseSpAttack = 60,
+ .baseSpDefense = 60,
+ .type1 = TYPE_DARK,
+ .type2 = TYPE_DARK,
+ .catchRate = 127,
+ .expYield = 128,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_PECHA_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ZIGZAGOON] =
+ {
+ .baseHP = 38,
+ .baseAttack = 30,
+ .baseDefense = 41,
+ .baseSpeed = 60,
+ .baseSpAttack = 30,
+ .baseSpDefense = 41,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 255,
+ .expYield = 60,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_ORAN_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_PICKUP, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LINOONE] =
+ {
+ .baseHP = 78,
+ .baseAttack = 70,
+ .baseDefense = 61,
+ .baseSpeed = 100,
+ .baseSpAttack = 50,
+ .baseSpDefense = 61,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 90,
+ .expYield = 128,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_ORAN_BERRY,
+ .item2 = ITEM_SITRUS_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_PICKUP, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WURMPLE] =
+ {
+ .baseHP = 45,
+ .baseAttack = 45,
+ .baseDefense = 35,
+ .baseSpeed = 20,
+ .baseSpAttack = 20,
+ .baseSpDefense = 30,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_BUG,
+ .catchRate = 255,
+ .expYield = 54,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SHIELD_DUST, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SILCOON] =
+ {
+ .baseHP = 50,
+ .baseAttack = 35,
+ .baseDefense = 55,
+ .baseSpeed = 15,
+ .baseSpAttack = 25,
+ .baseSpDefense = 25,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_BUG,
+ .catchRate = 120,
+ .expYield = 71,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BEAUTIFLY] =
+ {
+ .baseHP = 60,
+ .baseAttack = 70,
+ .baseDefense = 50,
+ .baseSpeed = 65,
+ .baseSpAttack = 90,
+ .baseSpDefense = 50,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 161,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SILVER_POWDER,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SWARM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CASCOON] =
+ {
+ .baseHP = 50,
+ .baseAttack = 35,
+ .baseDefense = 55,
+ .baseSpeed = 15,
+ .baseSpAttack = 25,
+ .baseSpDefense = 25,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_BUG,
+ .catchRate = 120,
+ .expYield = 72,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DUSTOX] =
+ {
+ .baseHP = 60,
+ .baseAttack = 50,
+ .baseDefense = 70,
+ .baseSpeed = 65,
+ .baseSpAttack = 50,
+ .baseSpDefense = 90,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_POISON,
+ .catchRate = 45,
+ .expYield = 160,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 3,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SILVER_POWDER,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SHIELD_DUST, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LOTAD] =
+ {
+ .baseHP = 40,
+ .baseAttack = 30,
+ .baseDefense = 30,
+ .baseSpeed = 30,
+ .baseSpAttack = 40,
+ .baseSpDefense = 50,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_GRASS,
+ .catchRate = 255,
+ .expYield = 74,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LOMBRE] =
+ {
+ .baseHP = 60,
+ .baseAttack = 50,
+ .baseDefense = 50,
+ .baseSpeed = 50,
+ .baseSpAttack = 60,
+ .baseSpDefense = 70,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_GRASS,
+ .catchRate = 120,
+ .expYield = 141,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LUDICOLO] =
+ {
+ .baseHP = 80,
+ .baseAttack = 70,
+ .baseDefense = 70,
+ .baseSpeed = 70,
+ .baseSpAttack = 90,
+ .baseSpDefense = 100,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_GRASS,
+ .catchRate = 45,
+ .expYield = 181,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 3,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SEEDOT] =
+ {
+ .baseHP = 40,
+ .baseAttack = 40,
+ .baseDefense = 50,
+ .baseSpeed = 30,
+ .baseSpAttack = 30,
+ .baseSpDefense = 30,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 255,
+ .expYield = 74,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NUZLEAF] =
+ {
+ .baseHP = 70,
+ .baseAttack = 70,
+ .baseDefense = 40,
+ .baseSpeed = 60,
+ .baseSpAttack = 60,
+ .baseSpDefense = 40,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_DARK,
+ .catchRate = 120,
+ .expYield = 141,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SHIFTRY] =
+ {
+ .baseHP = 90,
+ .baseAttack = 100,
+ .baseDefense = 60,
+ .baseSpeed = 80,
+ .baseSpAttack = 90,
+ .baseSpDefense = 60,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_DARK,
+ .catchRate = 45,
+ .expYield = 181,
+ .evYield_HP = 0,
+ .evYield_Attack = 3,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NINCADA] =
+ {
+ .baseHP = 31,
+ .baseAttack = 45,
+ .baseDefense = 90,
+ .baseSpeed = 40,
+ .baseSpAttack = 30,
+ .baseSpDefense = 30,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_GROUND,
+ .catchRate = 255,
+ .expYield = 65,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_COMPOUND_EYES, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NINJASK] =
+ {
+ .baseHP = 61,
+ .baseAttack = 90,
+ .baseDefense = 45,
+ .baseSpeed = 160,
+ .baseSpAttack = 50,
+ .baseSpDefense = 50,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_FLYING,
+ .catchRate = 120,
+ .expYield = 155,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SPEED_BOOST, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SHEDINJA] =
+ {
+ .baseHP = 1,
+ .baseAttack = 90,
+ .baseDefense = 45,
+ .baseSpeed = 40,
+ .baseSpAttack = 30,
+ .baseSpDefense = 30,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_GHOST,
+ .catchRate = 45,
+ .expYield = 95,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_WONDER_GUARD, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TAILLOW] =
+ {
+ .baseHP = 40,
+ .baseAttack = 55,
+ .baseDefense = 30,
+ .baseSpeed = 85,
+ .baseSpAttack = 30,
+ .baseSpDefense = 30,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 200,
+ .expYield = 59,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_GUTS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SWELLOW] =
+ {
+ .baseHP = 60,
+ .baseAttack = 85,
+ .baseDefense = 60,
+ .baseSpeed = 125,
+ .baseSpAttack = 50,
+ .baseSpDefense = 50,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 162,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_GUTS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SHROOMISH] =
+ {
+ .baseHP = 60,
+ .baseAttack = 40,
+ .baseDefense = 60,
+ .baseSpeed = 35,
+ .baseSpAttack = 40,
+ .baseSpDefense = 60,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 255,
+ .expYield = 65,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_FLUCTUATING,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_EFFECT_SPORE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BRELOOM] =
+ {
+ .baseHP = 60,
+ .baseAttack = 130,
+ .baseDefense = 80,
+ .baseSpeed = 70,
+ .baseSpAttack = 60,
+ .baseSpDefense = 60,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 90,
+ .expYield = 165,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_FLUCTUATING,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_EFFECT_SPORE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SPINDA] =
+ {
+ .baseHP = 60,
+ .baseAttack = 60,
+ .baseDefense = 60,
+ .baseSpeed = 60,
+ .baseSpAttack = 60,
+ .baseSpDefense = 60,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 255,
+ .expYield = 85,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_CHESTO_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_OWN_TEMPO, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = TRUE,
+ },
+ [SPECIES_WINGULL] =
+ {
+ .baseHP = 40,
+ .baseAttack = 30,
+ .baseDefense = 30,
+ .baseSpeed = 85,
+ .baseSpAttack = 55,
+ .baseSpDefense = 30,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_FLYING,
+ .catchRate = 190,
+ .expYield = 64,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PELIPPER] =
+ {
+ .baseHP = 60,
+ .baseAttack = 50,
+ .baseDefense = 100,
+ .baseSpeed = 65,
+ .baseSpAttack = 85,
+ .baseSpDefense = 70,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 164,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FLYING,
+ .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SURSKIT] =
+ {
+ .baseHP = 40,
+ .baseAttack = 30,
+ .baseDefense = 32,
+ .baseSpeed = 65,
+ .baseSpAttack = 50,
+ .baseSpDefense = 52,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_WATER,
+ .catchRate = 200,
+ .expYield = 63,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MASQUERAIN] =
+ {
+ .baseHP = 70,
+ .baseAttack = 60,
+ .baseDefense = 62,
+ .baseSpeed = 60,
+ .baseSpAttack = 80,
+ .baseSpDefense = 82,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_FLYING,
+ .catchRate = 75,
+ .expYield = 128,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SILVER_POWDER,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WAILMER] =
+ {
+ .baseHP = 130,
+ .baseAttack = 70,
+ .baseDefense = 35,
+ .baseSpeed = 60,
+ .baseSpAttack = 70,
+ .baseSpDefense = 35,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 125,
+ .expYield = 137,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 40,
+ .friendship = 70,
+ .growthRate = GROWTH_FLUCTUATING,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_WATER_VEIL, ABILITY_OBLIVIOUS },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WAILORD] =
+ {
+ .baseHP = 170,
+ .baseAttack = 90,
+ .baseDefense = 45,
+ .baseSpeed = 60,
+ .baseSpAttack = 90,
+ .baseSpDefense = 45,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 60,
+ .expYield = 206,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 40,
+ .friendship = 70,
+ .growthRate = GROWTH_FLUCTUATING,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_WATER_VEIL, ABILITY_OBLIVIOUS },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SKITTY] =
+ {
+ .baseHP = 50,
+ .baseAttack = 45,
+ .baseDefense = 45,
+ .baseSpeed = 50,
+ .baseSpAttack = 35,
+ .baseSpDefense = 35,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 255,
+ .expYield = 65,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_LEPPA_BERRY,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DELCATTY] =
+ {
+ .baseHP = 70,
+ .baseAttack = 65,
+ .baseDefense = 65,
+ .baseSpeed = 70,
+ .baseSpAttack = 55,
+ .baseSpDefense = 55,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 60,
+ .expYield = 138,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_LEPPA_BERRY,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_KECLEON] =
+ {
+ .baseHP = 60,
+ .baseAttack = 90,
+ .baseDefense = 70,
+ .baseSpeed = 40,
+ .baseSpAttack = 60,
+ .baseSpDefense = 120,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 200,
+ .expYield = 132,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_PERSIM_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_COLOR_CHANGE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BALTOY] =
+ {
+ .baseHP = 40,
+ .baseAttack = 40,
+ .baseDefense = 55,
+ .baseSpeed = 55,
+ .baseSpAttack = 40,
+ .baseSpDefense = 70,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 255,
+ .expYield = 58,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CLAYDOL] =
+ {
+ .baseHP = 60,
+ .baseAttack = 70,
+ .baseDefense = 105,
+ .baseSpeed = 75,
+ .baseSpAttack = 70,
+ .baseSpDefense = 120,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 90,
+ .expYield = 189,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NOSEPASS] =
+ {
+ .baseHP = 30,
+ .baseAttack = 45,
+ .baseDefense = 135,
+ .baseSpeed = 30,
+ .baseSpAttack = 45,
+ .baseSpDefense = 90,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_ROCK,
+ .catchRate = 255,
+ .expYield = 108,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_STURDY, ABILITY_MAGNET_PULL },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TORKOAL] =
+ {
+ .baseHP = 70,
+ .baseAttack = 85,
+ .baseDefense = 140,
+ .baseSpeed = 20,
+ .baseSpAttack = 85,
+ .baseSpDefense = 70,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_FIRE,
+ .catchRate = 90,
+ .expYield = 161,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_WHITE_SMOKE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SABLEYE] =
+ {
+ .baseHP = 50,
+ .baseAttack = 75,
+ .baseDefense = 75,
+ .baseSpeed = 50,
+ .baseSpAttack = 65,
+ .baseSpDefense = 65,
+ .type1 = TYPE_DARK,
+ .type2 = TYPE_GHOST,
+ .catchRate = 45,
+ .expYield = 98,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 35,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BARBOACH] =
+ {
+ .baseHP = 50,
+ .baseAttack = 48,
+ .baseDefense = 43,
+ .baseSpeed = 60,
+ .baseSpAttack = 46,
+ .baseSpDefense = 41,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_GROUND,
+ .catchRate = 190,
+ .expYield = 92,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_2,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WHISCASH] =
+ {
+ .baseHP = 110,
+ .baseAttack = 78,
+ .baseDefense = 73,
+ .baseSpeed = 60,
+ .baseSpAttack = 76,
+ .baseSpDefense = 71,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_GROUND,
+ .catchRate = 75,
+ .expYield = 158,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_2,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LUVDISC] =
+ {
+ .baseHP = 43,
+ .baseAttack = 30,
+ .baseDefense = 55,
+ .baseSpeed = 97,
+ .baseSpAttack = 40,
+ .baseSpDefense = 65,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 225,
+ .expYield = 110,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_HEART_SCALE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_WATER_2,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CORPHISH] =
+ {
+ .baseHP = 43,
+ .baseAttack = 80,
+ .baseDefense = 65,
+ .baseSpeed = 35,
+ .baseSpAttack = 50,
+ .baseSpDefense = 35,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 205,
+ .expYield = 111,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_FLUCTUATING,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CRAWDAUNT] =
+ {
+ .baseHP = 63,
+ .baseAttack = 120,
+ .baseDefense = 85,
+ .baseSpeed = 55,
+ .baseSpAttack = 90,
+ .baseSpDefense = 55,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_DARK,
+ .catchRate = 155,
+ .expYield = 161,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_FLUCTUATING,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_FEEBAS] =
+ {
+ .baseHP = 20,
+ .baseAttack = 15,
+ .baseDefense = 20,
+ .baseSpeed = 80,
+ .baseSpAttack = 10,
+ .baseSpDefense = 55,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 255,
+ .expYield = 61,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MILOTIC] =
+ {
+ .baseHP = 95,
+ .baseAttack = 60,
+ .baseDefense = 79,
+ .baseSpeed = 81,
+ .baseSpAttack = 100,
+ .baseSpDefense = 125,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 60,
+ .expYield = 213,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_MARVEL_SCALE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CARVANHA] =
+ {
+ .baseHP = 45,
+ .baseAttack = 90,
+ .baseDefense = 20,
+ .baseSpeed = 65,
+ .baseSpAttack = 65,
+ .baseSpDefense = 20,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_DARK,
+ .catchRate = 225,
+ .expYield = 88,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_2,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_ROUGH_SKIN, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SHARPEDO] =
+ {
+ .baseHP = 70,
+ .baseAttack = 120,
+ .baseDefense = 40,
+ .baseSpeed = 95,
+ .baseSpAttack = 95,
+ .baseSpDefense = 40,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_DARK,
+ .catchRate = 60,
+ .expYield = 175,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_2,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_ROUGH_SKIN, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TRAPINCH] =
+ {
+ .baseHP = 45,
+ .baseAttack = 100,
+ .baseDefense = 45,
+ .baseSpeed = 10,
+ .baseSpAttack = 45,
+ .baseSpDefense = 45,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_GROUND,
+ .catchRate = 255,
+ .expYield = 73,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SOFT_SAND,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_HYPER_CUTTER, ABILITY_ARENA_TRAP },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_VIBRAVA] =
+ {
+ .baseHP = 50,
+ .baseAttack = 70,
+ .baseDefense = 50,
+ .baseSpeed = 70,
+ .baseSpAttack = 50,
+ .baseSpDefense = 50,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_DRAGON,
+ .catchRate = 120,
+ .expYield = 126,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_LEVITATE, ABILITY_LEVITATE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_FLYGON] =
+ {
+ .baseHP = 80,
+ .baseAttack = 100,
+ .baseDefense = 80,
+ .baseSpeed = 100,
+ .baseSpAttack = 80,
+ .baseSpDefense = 80,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_DRAGON,
+ .catchRate = 45,
+ .expYield = 197,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_BUG,
+ .abilities = { ABILITY_LEVITATE, ABILITY_LEVITATE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MAKUHITA] =
+ {
+ .baseHP = 72,
+ .baseAttack = 60,
+ .baseDefense = 30,
+ .baseSpeed = 25,
+ .baseSpAttack = 20,
+ .baseSpDefense = 30,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 180,
+ .expYield = 87,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FLUCTUATING,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_GUTS },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HARIYAMA] =
+ {
+ .baseHP = 144,
+ .baseAttack = 120,
+ .baseDefense = 60,
+ .baseSpeed = 50,
+ .baseSpAttack = 40,
+ .baseSpDefense = 60,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_FIGHTING,
+ .catchRate = 200,
+ .expYield = 184,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_KINGS_ROCK,
+ .genderRatio = PERCENT_FEMALE(25),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FLUCTUATING,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_GUTS },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ELECTRIKE] =
+ {
+ .baseHP = 40,
+ .baseAttack = 45,
+ .baseDefense = 40,
+ .baseSpeed = 65,
+ .baseSpAttack = 65,
+ .baseSpDefense = 40,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 120,
+ .expYield = 104,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_STATIC, ABILITY_LIGHTNING_ROD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MANECTRIC] =
+ {
+ .baseHP = 70,
+ .baseAttack = 75,
+ .baseDefense = 60,
+ .baseSpeed = 105,
+ .baseSpAttack = 105,
+ .baseSpDefense = 60,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 45,
+ .expYield = 168,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_STATIC, ABILITY_LIGHTNING_ROD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_NUMEL] =
+ {
+ .baseHP = 60,
+ .baseAttack = 60,
+ .baseDefense = 40,
+ .baseSpeed = 35,
+ .baseSpAttack = 65,
+ .baseSpDefense = 45,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_GROUND,
+ .catchRate = 255,
+ .expYield = 88,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_RAWST_BERRY,
+ .item2 = ITEM_RAWST_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CAMERUPT] =
+ {
+ .baseHP = 70,
+ .baseAttack = 100,
+ .baseDefense = 70,
+ .baseSpeed = 40,
+ .baseSpAttack = 105,
+ .baseSpDefense = 75,
+ .type1 = TYPE_FIRE,
+ .type2 = TYPE_GROUND,
+ .catchRate = 150,
+ .expYield = 175,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_RAWST_BERRY,
+ .item2 = ITEM_RAWST_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_MAGMA_ARMOR, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SPHEAL] =
+ {
+ .baseHP = 70,
+ .baseAttack = 40,
+ .baseDefense = 50,
+ .baseSpeed = 25,
+ .baseSpAttack = 55,
+ .baseSpDefense = 50,
+ .type1 = TYPE_ICE,
+ .type2 = TYPE_WATER,
+ .catchRate = 255,
+ .expYield = 75,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SEALEO] =
+ {
+ .baseHP = 90,
+ .baseAttack = 60,
+ .baseDefense = 70,
+ .baseSpeed = 45,
+ .baseSpAttack = 75,
+ .baseSpDefense = 70,
+ .type1 = TYPE_ICE,
+ .type2 = TYPE_WATER,
+ .catchRate = 120,
+ .expYield = 128,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WALREIN] =
+ {
+ .baseHP = 110,
+ .baseAttack = 80,
+ .baseDefense = 90,
+ .baseSpeed = 65,
+ .baseSpAttack = 95,
+ .baseSpDefense = 90,
+ .type1 = TYPE_ICE,
+ .type2 = TYPE_WATER,
+ .catchRate = 45,
+ .expYield = 192,
+ .evYield_HP = 3,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CACNEA] =
+ {
+ .baseHP = 50,
+ .baseAttack = 85,
+ .baseDefense = 40,
+ .baseSpeed = 35,
+ .baseSpAttack = 85,
+ .baseSpDefense = 40,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_GRASS,
+ .catchRate = 190,
+ .expYield = 97,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_POISON_BARB,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 35,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CACTURNE] =
+ {
+ .baseHP = 70,
+ .baseAttack = 115,
+ .baseDefense = 60,
+ .baseSpeed = 55,
+ .baseSpAttack = 115,
+ .baseSpDefense = 60,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_DARK,
+ .catchRate = 60,
+ .expYield = 177,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_POISON_BARB,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 35,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_GRASS,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SNORUNT] =
+ {
+ .baseHP = 50,
+ .baseAttack = 50,
+ .baseDefense = 50,
+ .baseSpeed = 50,
+ .baseSpAttack = 50,
+ .baseSpDefense = 50,
+ .type1 = TYPE_ICE,
+ .type2 = TYPE_ICE,
+ .catchRate = 190,
+ .expYield = 74,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GLALIE] =
+ {
+ .baseHP = 80,
+ .baseAttack = 80,
+ .baseDefense = 80,
+ .baseSpeed = 80,
+ .baseSpAttack = 80,
+ .baseSpDefense = 80,
+ .type1 = TYPE_ICE,
+ .type2 = TYPE_ICE,
+ .catchRate = 75,
+ .expYield = 187,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NEVER_MELT_ICE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LUNATONE] =
+ {
+ .baseHP = 70,
+ .baseAttack = 55,
+ .baseDefense = 65,
+ .baseSpeed = 70,
+ .baseSpAttack = 95,
+ .baseSpDefense = 85,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 45,
+ .expYield = 150,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_MOON_STONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SOLROCK] =
+ {
+ .baseHP = 70,
+ .baseAttack = 95,
+ .baseDefense = 85,
+ .baseSpeed = 70,
+ .baseSpAttack = 55,
+ .baseSpDefense = 65,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 45,
+ .expYield = 150,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SUN_STONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_AZURILL] =
+ {
+ .baseHP = 50,
+ .baseAttack = 20,
+ .baseDefense = 40,
+ .baseSpeed = 20,
+ .baseSpAttack = 20,
+ .baseSpDefense = 40,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 150,
+ .expYield = 33,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(75),
+ .eggCycles = 10,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_HUGE_POWER },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SPOINK] =
+ {
+ .baseHP = 60,
+ .baseAttack = 25,
+ .baseDefense = 35,
+ .baseSpeed = 60,
+ .baseSpAttack = 70,
+ .baseSpDefense = 80,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 255,
+ .expYield = 89,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_OWN_TEMPO },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GRUMPIG] =
+ {
+ .baseHP = 80,
+ .baseAttack = 45,
+ .baseDefense = 65,
+ .baseSpeed = 80,
+ .baseSpAttack = 90,
+ .baseSpDefense = 110,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 60,
+ .expYield = 164,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_THICK_FAT, ABILITY_OWN_TEMPO },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_PLUSLE] =
+ {
+ .baseHP = 60,
+ .baseAttack = 50,
+ .baseDefense = 40,
+ .baseSpeed = 95,
+ .baseSpAttack = 85,
+ .baseSpDefense = 75,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 200,
+ .expYield = 120,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_PLUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MINUN] =
+ {
+ .baseHP = 60,
+ .baseAttack = 40,
+ .baseDefense = 50,
+ .baseSpeed = 95,
+ .baseSpAttack = 75,
+ .baseSpDefense = 85,
+ .type1 = TYPE_ELECTRIC,
+ .type2 = TYPE_ELECTRIC,
+ .catchRate = 200,
+ .expYield = 120,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_MINUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MAWILE] =
+ {
+ .baseHP = 50,
+ .baseAttack = 85,
+ .baseDefense = 85,
+ .baseSpeed = 50,
+ .baseSpAttack = 55,
+ .baseSpDefense = 55,
+ .type1 = TYPE_STEEL,
+ .type2 = TYPE_STEEL,
+ .catchRate = 45,
+ .expYield = 98,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FAIRY,
+ .abilities = { ABILITY_HYPER_CUTTER, ABILITY_INTIMIDATE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MEDITITE] =
+ {
+ .baseHP = 30,
+ .baseAttack = 40,
+ .baseDefense = 55,
+ .baseSpeed = 60,
+ .baseSpAttack = 40,
+ .baseSpDefense = 55,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 180,
+ .expYield = 91,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_PURE_POWER, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_MEDICHAM] =
+ {
+ .baseHP = 60,
+ .baseAttack = 60,
+ .baseDefense = 75,
+ .baseSpeed = 80,
+ .baseSpAttack = 60,
+ .baseSpDefense = 75,
+ .type1 = TYPE_FIGHTING,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 90,
+ .expYield = 153,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_HUMAN_LIKE,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_PURE_POWER, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SWABLU] =
+ {
+ .baseHP = 45,
+ .baseAttack = 40,
+ .baseDefense = 60,
+ .baseSpeed = 50,
+ .baseSpAttack = 40,
+ .baseSpDefense = 75,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_FLYING,
+ .catchRate = 255,
+ .expYield = 74,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ALTARIA] =
+ {
+ .baseHP = 75,
+ .baseAttack = 70,
+ .baseDefense = 90,
+ .baseSpeed = 80,
+ .baseSpAttack = 70,
+ .baseSpDefense = 105,
+ .type1 = TYPE_DRAGON,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 188,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_FLYING,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WYNAUT] =
+ {
+ .baseHP = 95,
+ .baseAttack = 23,
+ .baseDefense = 48,
+ .baseSpeed = 23,
+ .baseSpAttack = 23,
+ .baseSpDefense = 48,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 125,
+ .expYield = 44,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_SHADOW_TAG, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DUSKULL] =
+ {
+ .baseHP = 20,
+ .baseAttack = 40,
+ .baseDefense = 90,
+ .baseSpeed = 25,
+ .baseSpAttack = 30,
+ .baseSpDefense = 90,
+ .type1 = TYPE_GHOST,
+ .type2 = TYPE_GHOST,
+ .catchRate = 190,
+ .expYield = 97,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SPELL_TAG,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 35,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DUSCLOPS] =
+ {
+ .baseHP = 40,
+ .baseAttack = 70,
+ .baseDefense = 130,
+ .baseSpeed = 25,
+ .baseSpAttack = 60,
+ .baseSpDefense = 130,
+ .type1 = TYPE_GHOST,
+ .type2 = TYPE_GHOST,
+ .catchRate = 90,
+ .expYield = 179,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SPELL_TAG,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 35,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_PRESSURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ROSELIA] =
+ {
+ .baseHP = 50,
+ .baseAttack = 60,
+ .baseDefense = 45,
+ .baseSpeed = 65,
+ .baseSpAttack = 100,
+ .baseSpDefense = 80,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_POISON,
+ .catchRate = 150,
+ .expYield = 152,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_POISON_BARB,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_NATURAL_CURE, ABILITY_POISON_POINT },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = TRUE,
+ },
+ [SPECIES_SLAKOTH] =
+ {
+ .baseHP = 60,
+ .baseAttack = 60,
+ .baseDefense = 60,
+ .baseSpeed = 30,
+ .baseSpAttack = 35,
+ .baseSpDefense = 35,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 255,
+ .expYield = 83,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_TRUANT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_VIGOROTH] =
+ {
+ .baseHP = 80,
+ .baseAttack = 80,
+ .baseDefense = 80,
+ .baseSpeed = 90,
+ .baseSpAttack = 55,
+ .baseSpDefense = 55,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 120,
+ .expYield = 126,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 2,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SLAKING] =
+ {
+ .baseHP = 150,
+ .baseAttack = 160,
+ .baseDefense = 100,
+ .baseSpeed = 100,
+ .baseSpAttack = 95,
+ .baseSpDefense = 65,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 210,
+ .evYield_HP = 3,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_TRUANT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GULPIN] =
+ {
+ .baseHP = 70,
+ .baseAttack = 43,
+ .baseDefense = 53,
+ .baseSpeed = 40,
+ .baseSpAttack = 43,
+ .baseSpDefense = 53,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 225,
+ .expYield = 75,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_BIG_PEARL,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FLUCTUATING,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_LIQUID_OOZE, ABILITY_STICKY_HOLD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SWALOT] =
+ {
+ .baseHP = 100,
+ .baseAttack = 73,
+ .baseDefense = 83,
+ .baseSpeed = 55,
+ .baseSpAttack = 73,
+ .baseSpDefense = 83,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 75,
+ .expYield = 168,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_BIG_PEARL,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FLUCTUATING,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_LIQUID_OOZE, ABILITY_STICKY_HOLD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_TROPIUS] =
+ {
+ .baseHP = 99,
+ .baseAttack = 68,
+ .baseDefense = 83,
+ .baseSpeed = 51,
+ .baseSpAttack = 72,
+ .baseSpDefense = 87,
+ .type1 = TYPE_GRASS,
+ .type2 = TYPE_FLYING,
+ .catchRate = 200,
+ .expYield = 169,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_GRASS,
+ .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_WHISMUR] =
+ {
+ .baseHP = 64,
+ .baseAttack = 51,
+ .baseDefense = 23,
+ .baseSpeed = 28,
+ .baseSpAttack = 51,
+ .baseSpDefense = 23,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 190,
+ .expYield = 68,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_CHESTO_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_SOUNDPROOF, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LOUDRED] =
+ {
+ .baseHP = 84,
+ .baseAttack = 71,
+ .baseDefense = 43,
+ .baseSpeed = 48,
+ .baseSpAttack = 71,
+ .baseSpDefense = 43,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 120,
+ .expYield = 126,
+ .evYield_HP = 2,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_CHESTO_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_SOUNDPROOF, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_EXPLOUD] =
+ {
+ .baseHP = 104,
+ .baseAttack = 91,
+ .baseDefense = 63,
+ .baseSpeed = 68,
+ .baseSpAttack = 91,
+ .baseSpDefense = 63,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 184,
+ .evYield_HP = 3,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_CHESTO_BERRY,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_SOUNDPROOF, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CLAMPERL] =
+ {
+ .baseHP = 35,
+ .baseAttack = 64,
+ .baseDefense = 85,
+ .baseSpeed = 32,
+ .baseSpAttack = 74,
+ .baseSpDefense = 55,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 255,
+ .expYield = 142,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_BLUE_SHARD,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_SHELL_ARMOR, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_HUNTAIL] =
+ {
+ .baseHP = 55,
+ .baseAttack = 104,
+ .baseDefense = 105,
+ .baseSpeed = 52,
+ .baseSpAttack = 94,
+ .baseSpDefense = 75,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 60,
+ .expYield = 178,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GOREBYSS] =
+ {
+ .baseHP = 55,
+ .baseAttack = 84,
+ .baseDefense = 105,
+ .baseSpeed = 52,
+ .baseSpAttack = 114,
+ .baseSpDefense = 75,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 60,
+ .expYield = 178,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_1,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PINK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ABSOL] =
+ {
+ .baseHP = 65,
+ .baseAttack = 130,
+ .baseDefense = 60,
+ .baseSpeed = 75,
+ .baseSpAttack = 75,
+ .baseSpDefense = 60,
+ .type1 = TYPE_DARK,
+ .type2 = TYPE_DARK,
+ .catchRate = 30,
+ .expYield = 174,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 35,
+ .growthRate = GROWTH_MEDIUM_SLOW,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_PRESSURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = TRUE,
+ },
+ [SPECIES_SHUPPET] =
+ {
+ .baseHP = 44,
+ .baseAttack = 75,
+ .baseDefense = 35,
+ .baseSpeed = 45,
+ .baseSpAttack = 63,
+ .baseSpDefense = 33,
+ .type1 = TYPE_GHOST,
+ .type2 = TYPE_GHOST,
+ .catchRate = 225,
+ .expYield = 97,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SPELL_TAG,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 35,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_INSOMNIA, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BANETTE] =
+ {
+ .baseHP = 64,
+ .baseAttack = 115,
+ .baseDefense = 65,
+ .baseSpeed = 65,
+ .baseSpAttack = 83,
+ .baseSpDefense = 63,
+ .type1 = TYPE_GHOST,
+ .type2 = TYPE_GHOST,
+ .catchRate = 45,
+ .expYield = 179,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_SPELL_TAG,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 35,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_INSOMNIA, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SEVIPER] =
+ {
+ .baseHP = 73,
+ .baseAttack = 100,
+ .baseDefense = 60,
+ .baseSpeed = 65,
+ .baseSpAttack = 100,
+ .baseSpDefense = 60,
+ .type1 = TYPE_POISON,
+ .type2 = TYPE_POISON,
+ .catchRate = 90,
+ .expYield = 165,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_FLUCTUATING,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLACK,
+ .noFlip = TRUE,
+ },
+ [SPECIES_ZANGOOSE] =
+ {
+ .baseHP = 73,
+ .baseAttack = 115,
+ .baseDefense = 60,
+ .baseSpeed = 90,
+ .baseSpAttack = 60,
+ .baseSpDefense = 60,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 90,
+ .expYield = 165,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_FIELD,
+ .eggGroup2 = EGG_GROUP_FIELD,
+ .abilities = { ABILITY_IMMUNITY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = TRUE,
+ },
+ [SPECIES_RELICANTH] =
+ {
+ .baseHP = 100,
+ .baseAttack = 90,
+ .baseDefense = 130,
+ .baseSpeed = 55,
+ .baseSpAttack = 45,
+ .baseSpDefense = 65,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_ROCK,
+ .catchRate = 25,
+ .expYield = 198,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_GREEN_SHARD,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 40,
+ .friendship = 70,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_WATER_1,
+ .eggGroup2 = EGG_GROUP_WATER_2,
+ .abilities = { ABILITY_SWIFT_SWIM, ABILITY_ROCK_HEAD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ARON] =
+ {
+ .baseHP = 50,
+ .baseAttack = 70,
+ .baseDefense = 100,
+ .baseSpeed = 30,
+ .baseSpAttack = 40,
+ .baseSpDefense = 40,
+ .type1 = TYPE_STEEL,
+ .type2 = TYPE_ROCK,
+ .catchRate = 180,
+ .expYield = 96,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_HARD_STONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 35,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_MONSTER,
+ .abilities = { ABILITY_STURDY, ABILITY_ROCK_HEAD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LAIRON] =
+ {
+ .baseHP = 60,
+ .baseAttack = 90,
+ .baseDefense = 140,
+ .baseSpeed = 40,
+ .baseSpAttack = 50,
+ .baseSpDefense = 50,
+ .type1 = TYPE_STEEL,
+ .type2 = TYPE_ROCK,
+ .catchRate = 90,
+ .expYield = 152,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_HARD_STONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 35,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_MONSTER,
+ .abilities = { ABILITY_STURDY, ABILITY_ROCK_HEAD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_AGGRON] =
+ {
+ .baseHP = 70,
+ .baseAttack = 110,
+ .baseDefense = 180,
+ .baseSpeed = 50,
+ .baseSpAttack = 60,
+ .baseSpDefense = 60,
+ .type1 = TYPE_STEEL,
+ .type2 = TYPE_ROCK,
+ .catchRate = 45,
+ .expYield = 205,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 3,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_HARD_STONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 35,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MONSTER,
+ .eggGroup2 = EGG_GROUP_MONSTER,
+ .abilities = { ABILITY_STURDY, ABILITY_ROCK_HEAD },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CASTFORM] =
+ {
+ .baseHP = 70,
+ .baseAttack = 70,
+ .baseDefense = 70,
+ .baseSpeed = 70,
+ .baseSpAttack = 70,
+ .baseSpDefense = 70,
+ .type1 = TYPE_NORMAL,
+ .type2 = TYPE_NORMAL,
+ .catchRate = 45,
+ .expYield = 145,
+ .evYield_HP = 1,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_MYSTIC_WATER,
+ .item2 = ITEM_MYSTIC_WATER,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_MEDIUM_FAST,
+ .eggGroup1 = EGG_GROUP_FAIRY,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_FORECAST, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_VOLBEAT] =
+ {
+ .baseHP = 65,
+ .baseAttack = 73,
+ .baseDefense = 55,
+ .baseSpeed = 85,
+ .baseSpAttack = 47,
+ .baseSpDefense = 75,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_BUG,
+ .catchRate = 150,
+ .expYield = 146,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_MALE,
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_ILLUMINATE, ABILITY_SWARM },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ILLUMISE] =
+ {
+ .baseHP = 65,
+ .baseAttack = 47,
+ .baseDefense = 55,
+ .baseSpeed = 85,
+ .baseSpAttack = 73,
+ .baseSpDefense = 75,
+ .type1 = TYPE_BUG,
+ .type2 = TYPE_BUG,
+ .catchRate = 150,
+ .expYield = 146,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_FEMALE,
+ .eggCycles = 15,
+ .friendship = 70,
+ .growthRate = GROWTH_FLUCTUATING,
+ .eggGroup1 = EGG_GROUP_BUG,
+ .eggGroup2 = EGG_GROUP_HUMAN_LIKE,
+ .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LILEEP] =
+ {
+ .baseHP = 66,
+ .baseAttack = 41,
+ .baseDefense = 77,
+ .baseSpeed = 23,
+ .baseSpAttack = 61,
+ .baseSpDefense = 87,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_GRASS,
+ .catchRate = 45,
+ .expYield = 121,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 30,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_WATER_3,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_SUCTION_CUPS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_PURPLE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_CRADILY] =
+ {
+ .baseHP = 86,
+ .baseAttack = 81,
+ .baseDefense = 97,
+ .baseSpeed = 43,
+ .baseSpAttack = 81,
+ .baseSpDefense = 107,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_GRASS,
+ .catchRate = 45,
+ .expYield = 201,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 2,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 30,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_WATER_3,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_SUCTION_CUPS, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ANORITH] =
+ {
+ .baseHP = 45,
+ .baseAttack = 95,
+ .baseDefense = 50,
+ .baseSpeed = 75,
+ .baseSpAttack = 40,
+ .baseSpDefense = 50,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_BUG,
+ .catchRate = 45,
+ .expYield = 119,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 30,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_WATER_3,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_BATTLE_ARMOR, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_ARMALDO] =
+ {
+ .baseHP = 75,
+ .baseAttack = 125,
+ .baseDefense = 100,
+ .baseSpeed = 45,
+ .baseSpAttack = 70,
+ .baseSpDefense = 80,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_BUG,
+ .catchRate = 45,
+ .expYield = 200,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(12.5),
+ .eggCycles = 30,
+ .friendship = 70,
+ .growthRate = GROWTH_ERRATIC,
+ .eggGroup1 = EGG_GROUP_WATER_3,
+ .eggGroup2 = EGG_GROUP_WATER_3,
+ .abilities = { ABILITY_BATTLE_ARMOR, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_RALTS] =
+ {
+ .baseHP = 28,
+ .baseAttack = 25,
+ .baseDefense = 25,
+ .baseSpeed = 40,
+ .baseSpAttack = 45,
+ .baseSpDefense = 35,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 235,
+ .expYield = 70,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_SYNCHRONIZE, ABILITY_TRACE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_KIRLIA] =
+ {
+ .baseHP = 38,
+ .baseAttack = 35,
+ .baseDefense = 35,
+ .baseSpeed = 50,
+ .baseSpAttack = 65,
+ .baseSpDefense = 55,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 120,
+ .expYield = 140,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 2,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_SYNCHRONIZE, ABILITY_TRACE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GARDEVOIR] =
+ {
+ .baseHP = 68,
+ .baseAttack = 65,
+ .baseDefense = 65,
+ .baseSpeed = 80,
+ .baseSpAttack = 125,
+ .baseSpDefense = 115,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 45,
+ .expYield = 208,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 20,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_SYNCHRONIZE, ABILITY_TRACE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BAGON] =
+ {
+ .baseHP = 45,
+ .baseAttack = 75,
+ .baseDefense = 60,
+ .baseSpeed = 50,
+ .baseSpAttack = 40,
+ .baseSpDefense = 30,
+ .type1 = TYPE_DRAGON,
+ .type2 = TYPE_DRAGON,
+ .catchRate = 45,
+ .expYield = 89,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_DRAGON_SCALE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 40,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_DRAGON,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_ROCK_HEAD, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SHELGON] =
+ {
+ .baseHP = 65,
+ .baseAttack = 95,
+ .baseDefense = 100,
+ .baseSpeed = 50,
+ .baseSpAttack = 60,
+ .baseSpDefense = 50,
+ .type1 = TYPE_DRAGON,
+ .type2 = TYPE_DRAGON,
+ .catchRate = 45,
+ .expYield = 144,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_DRAGON_SCALE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 40,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_DRAGON,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_ROCK_HEAD, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_WHITE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_SALAMENCE] =
+ {
+ .baseHP = 95,
+ .baseAttack = 135,
+ .baseDefense = 80,
+ .baseSpeed = 100,
+ .baseSpAttack = 110,
+ .baseSpDefense = 80,
+ .type1 = TYPE_DRAGON,
+ .type2 = TYPE_FLYING,
+ .catchRate = 45,
+ .expYield = 218,
+ .evYield_HP = 0,
+ .evYield_Attack = 3,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_DRAGON_SCALE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 40,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_DRAGON,
+ .eggGroup2 = EGG_GROUP_DRAGON,
+ .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_BELDUM] =
+ {
+ .baseHP = 40,
+ .baseAttack = 55,
+ .baseDefense = 80,
+ .baseSpeed = 30,
+ .baseSpAttack = 35,
+ .baseSpDefense = 60,
+ .type1 = TYPE_STEEL,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 3,
+ .expYield = 103,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 1,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_METAL_COAT,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 40,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_METANG] =
+ {
+ .baseHP = 60,
+ .baseAttack = 75,
+ .baseDefense = 100,
+ .baseSpeed = 50,
+ .baseSpAttack = 55,
+ .baseSpDefense = 80,
+ .type1 = TYPE_STEEL,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 3,
+ .expYield = 153,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_METAL_COAT,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 40,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_METAGROSS] =
+ {
+ .baseHP = 80,
+ .baseAttack = 135,
+ .baseDefense = 130,
+ .baseSpeed = 70,
+ .baseSpAttack = 95,
+ .baseSpDefense = 90,
+ .type1 = TYPE_STEEL,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 3,
+ .expYield = 210,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 3,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_METAL_COAT,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 40,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_MINERAL,
+ .eggGroup2 = EGG_GROUP_MINERAL,
+ .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_REGIROCK] =
+ {
+ .baseHP = 80,
+ .baseAttack = 100,
+ .baseDefense = 200,
+ .baseSpeed = 50,
+ .baseSpAttack = 50,
+ .baseSpDefense = 100,
+ .type1 = TYPE_ROCK,
+ .type2 = TYPE_ROCK,
+ .catchRate = 3,
+ .expYield = 217,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 3,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 80,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BROWN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_REGICE] =
+ {
+ .baseHP = 80,
+ .baseAttack = 50,
+ .baseDefense = 100,
+ .baseSpeed = 50,
+ .baseSpAttack = 100,
+ .baseSpDefense = 200,
+ .type1 = TYPE_ICE,
+ .type2 = TYPE_ICE,
+ .catchRate = 3,
+ .expYield = 216,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 3,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 80,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_REGISTEEL] =
+ {
+ .baseHP = 80,
+ .baseAttack = 75,
+ .baseDefense = 150,
+ .baseSpeed = 50,
+ .baseSpAttack = 75,
+ .baseSpDefense = 150,
+ .type1 = TYPE_STEEL,
+ .type2 = TYPE_STEEL,
+ .catchRate = 3,
+ .expYield = 215,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 2,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 80,
+ .friendship = 35,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GRAY,
+ .noFlip = FALSE,
+ },
+ [SPECIES_KYOGRE] =
+ {
+ .baseHP = 100,
+ .baseAttack = 100,
+ .baseDefense = 90,
+ .baseSpeed = 90,
+ .baseSpAttack = 150,
+ .baseSpDefense = 140,
+ .type1 = TYPE_WATER,
+ .type2 = TYPE_WATER,
+ .catchRate = 5,
+ .expYield = 218,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 120,
+ .friendship = 0,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_DRIZZLE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_GROUDON] =
+ {
+ .baseHP = 100,
+ .baseAttack = 150,
+ .baseDefense = 140,
+ .baseSpeed = 90,
+ .baseSpAttack = 100,
+ .baseSpDefense = 90,
+ .type1 = TYPE_GROUND,
+ .type2 = TYPE_GROUND,
+ .catchRate = 5,
+ .expYield = 218,
+ .evYield_HP = 0,
+ .evYield_Attack = 3,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 120,
+ .friendship = 0,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_DROUGHT, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_RAYQUAZA] =
+ {
+ .baseHP = 105,
+ .baseAttack = 150,
+ .baseDefense = 90,
+ .baseSpeed = 95,
+ .baseSpAttack = 150,
+ .baseSpDefense = 90,
+ .type1 = TYPE_DRAGON,
+ .type2 = TYPE_FLYING,
+ .catchRate = 3,
+ .expYield = 220,
+ .evYield_HP = 0,
+ .evYield_Attack = 2,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 120,
+ .friendship = 0,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_AIR_LOCK, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_GREEN,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LATIAS] =
+ {
+ .baseHP = 80,
+ .baseAttack = 80,
+ .baseDefense = 90,
+ .baseSpeed = 110,
+ .baseSpAttack = 110,
+ .baseSpDefense = 130,
+ .type1 = TYPE_DRAGON,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 3,
+ .expYield = 211,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 3,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_FEMALE,
+ .eggCycles = 120,
+ .friendship = 90,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = FALSE,
+ },
+ [SPECIES_LATIOS] =
+ {
+ .baseHP = 80,
+ .baseAttack = 90,
+ .baseDefense = 80,
+ .baseSpeed = 110,
+ .baseSpAttack = 130,
+ .baseSpDefense = 110,
+ .type1 = TYPE_DRAGON,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 3,
+ .expYield = 211,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 3,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_MALE,
+ .eggCycles = 120,
+ .friendship = 90,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+ [SPECIES_JIRACHI] =
+ {
+ .baseHP = 100,
+ .baseAttack = 100,
+ .baseDefense = 100,
+ .baseSpeed = 100,
+ .baseSpAttack = 100,
+ .baseSpDefense = 100,
+ .type1 = TYPE_STEEL,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 3,
+ .expYield = 215,
+ .evYield_HP = 3,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 0,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_STAR_PIECE,
+ .item2 = ITEM_STAR_PIECE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 120,
+ .friendship = 100,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_YELLOW,
+ .noFlip = FALSE,
+ },
+ [SPECIES_DEOXYS] =
+ {
+ .baseHP = 50,
+ .baseAttack = 150,
+ .baseDefense = 50,
+ .baseSpeed = 150,
+ .baseSpAttack = 150,
+ .baseSpDefense = 50,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 3,
+ .expYield = 215,
+ .evYield_HP = 0,
+ .evYield_Attack = 1,
+ .evYield_Defense = 0,
+ .evYield_Speed = 1,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 0,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = MON_GENDERLESS,
+ .eggCycles = 120,
+ .friendship = 0,
+ .growthRate = GROWTH_SLOW,
+ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
+ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
+ .abilities = { ABILITY_PRESSURE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_RED,
+ .noFlip = TRUE,
+ },
+ [SPECIES_CHIMECHO] =
+ {
+ .baseHP = 65,
+ .baseAttack = 50,
+ .baseDefense = 70,
+ .baseSpeed = 65,
+ .baseSpAttack = 95,
+ .baseSpDefense = 80,
+ .type1 = TYPE_PSYCHIC,
+ .type2 = TYPE_PSYCHIC,
+ .catchRate = 45,
+ .expYield = 147,
+ .evYield_HP = 0,
+ .evYield_Attack = 0,
+ .evYield_Defense = 0,
+ .evYield_Speed = 0,
+ .evYield_SpAttack = 1,
+ .evYield_SpDefense = 1,
+ .item1 = ITEM_NONE,
+ .item2 = ITEM_NONE,
+ .genderRatio = PERCENT_FEMALE(50),
+ .eggCycles = 25,
+ .friendship = 70,
+ .growthRate = GROWTH_FAST,
+ .eggGroup1 = EGG_GROUP_AMORPHOUS,
+ .eggGroup2 = EGG_GROUP_AMORPHOUS,
+ .abilities = { ABILITY_LEVITATE, ABILITY_NONE },
+ .safariZoneFleeRate = 0,
+ .bodyColor = BODY_COLOR_BLUE,
+ .noFlip = FALSE,
+ },
+};
diff --git a/src/data/pokemon/cry_ids.h b/src/data/pokemon/cry_ids.h
new file mode 100644
index 000000000..2eef1eb88
--- /dev/null
+++ b/src/data/pokemon/cry_ids.h
@@ -0,0 +1,140 @@
+#define HOENN_MON_SPECIES_START 277
+
+static const u16 sHoennSpeciesIdToCryId[] =
+{
+ [SPECIES_TREECKO - HOENN_MON_SPECIES_START] = CRY_TREECKO,
+ [SPECIES_GROVYLE - HOENN_MON_SPECIES_START] = CRY_GROVYLE,
+ [SPECIES_SCEPTILE - HOENN_MON_SPECIES_START] = CRY_SCEPTILE,
+ [SPECIES_TORCHIC - HOENN_MON_SPECIES_START] = CRY_TORCHIC,
+ [SPECIES_COMBUSKEN - HOENN_MON_SPECIES_START] = CRY_COMBUSKEN,
+ [SPECIES_BLAZIKEN - HOENN_MON_SPECIES_START] = CRY_BLAZIKEN,
+ [SPECIES_MUDKIP - HOENN_MON_SPECIES_START] = CRY_MUDKIP,
+ [SPECIES_MARSHTOMP - HOENN_MON_SPECIES_START] = CRY_MARSHTOMP,
+ [SPECIES_SWAMPERT - HOENN_MON_SPECIES_START] = CRY_SWAMPERT,
+ [SPECIES_POOCHYENA - HOENN_MON_SPECIES_START] = CRY_POOCHYENA,
+ [SPECIES_MIGHTYENA - HOENN_MON_SPECIES_START] = CRY_MIGHTYENA,
+ [SPECIES_ZIGZAGOON - HOENN_MON_SPECIES_START] = CRY_ZIGZAGOON,
+ [SPECIES_LINOONE - HOENN_MON_SPECIES_START] = CRY_LINOONE,
+ [SPECIES_WURMPLE - HOENN_MON_SPECIES_START] = CRY_WURMPLE,
+ [SPECIES_SILCOON - HOENN_MON_SPECIES_START] = CRY_SILCOON,
+ [SPECIES_BEAUTIFLY - HOENN_MON_SPECIES_START] = CRY_BEAUTIFLY,
+ [SPECIES_CASCOON - HOENN_MON_SPECIES_START] = CRY_CASCOON,
+ [SPECIES_DUSTOX - HOENN_MON_SPECIES_START] = CRY_DUSTOX,
+ [SPECIES_LOTAD - HOENN_MON_SPECIES_START] = CRY_LOTAD,
+ [SPECIES_LOMBRE - HOENN_MON_SPECIES_START] = CRY_LOMBRE,
+ [SPECIES_LUDICOLO - HOENN_MON_SPECIES_START] = CRY_LUDICOLO,
+ [SPECIES_SEEDOT - HOENN_MON_SPECIES_START] = CRY_SEEDOT,
+ [SPECIES_NUZLEAF - HOENN_MON_SPECIES_START] = CRY_NUZLEAF,
+ [SPECIES_SHIFTRY - HOENN_MON_SPECIES_START] = CRY_SHIFTRY,
+ [SPECIES_NINCADA - HOENN_MON_SPECIES_START] = CRY_NINCADA,
+ [SPECIES_NINJASK - HOENN_MON_SPECIES_START] = CRY_NINJASK,
+ [SPECIES_SHEDINJA - HOENN_MON_SPECIES_START] = CRY_SHEDINJA,
+ [SPECIES_TAILLOW - HOENN_MON_SPECIES_START] = CRY_TAILLOW,
+ [SPECIES_SWELLOW - HOENN_MON_SPECIES_START] = CRY_SWELLOW,
+ [SPECIES_SHROOMISH - HOENN_MON_SPECIES_START] = CRY_SHROOMISH,
+ [SPECIES_BRELOOM - HOENN_MON_SPECIES_START] = CRY_BRELOOM,
+ [SPECIES_SPINDA - HOENN_MON_SPECIES_START] = CRY_SPINDA,
+ [SPECIES_WINGULL - HOENN_MON_SPECIES_START] = CRY_WINGULL,
+ [SPECIES_PELIPPER - HOENN_MON_SPECIES_START] = CRY_PELIPPER,
+ [SPECIES_SURSKIT - HOENN_MON_SPECIES_START] = CRY_SURSKIT,
+ [SPECIES_MASQUERAIN - HOENN_MON_SPECIES_START] = CRY_MASQUERAIN,
+ [SPECIES_WAILMER - HOENN_MON_SPECIES_START] = CRY_WAILMER,
+ [SPECIES_WAILORD - HOENN_MON_SPECIES_START] = CRY_WAILORD,
+ [SPECIES_SKITTY - HOENN_MON_SPECIES_START] = CRY_SKITTY,
+ [SPECIES_DELCATTY - HOENN_MON_SPECIES_START] = CRY_DELCATTY,
+ [SPECIES_KECLEON - HOENN_MON_SPECIES_START] = CRY_KECLEON,
+ [SPECIES_BALTOY - HOENN_MON_SPECIES_START] = CRY_BALTOY,
+ [SPECIES_CLAYDOL - HOENN_MON_SPECIES_START] = CRY_CLAYDOL,
+ [SPECIES_NOSEPASS - HOENN_MON_SPECIES_START] = CRY_NOSEPASS,
+ [SPECIES_TORKOAL - HOENN_MON_SPECIES_START] = CRY_TORKOAL,
+ [SPECIES_SABLEYE - HOENN_MON_SPECIES_START] = CRY_SABLEYE,
+ [SPECIES_BARBOACH - HOENN_MON_SPECIES_START] = CRY_BARBOACH,
+ [SPECIES_WHISCASH - HOENN_MON_SPECIES_START] = CRY_WHISCASH,
+ [SPECIES_LUVDISC - HOENN_MON_SPECIES_START] = CRY_LUVDISC,
+ [SPECIES_CORPHISH - HOENN_MON_SPECIES_START] = CRY_CORPHISH,
+ [SPECIES_CRAWDAUNT - HOENN_MON_SPECIES_START] = CRY_CRAWDAUNT,
+ [SPECIES_FEEBAS - HOENN_MON_SPECIES_START] = CRY_FEEBAS,
+ [SPECIES_MILOTIC - HOENN_MON_SPECIES_START] = CRY_MILOTIC,
+ [SPECIES_CARVANHA - HOENN_MON_SPECIES_START] = CRY_CARVANHA,
+ [SPECIES_SHARPEDO - HOENN_MON_SPECIES_START] = CRY_SHARPEDO,
+ [SPECIES_TRAPINCH - HOENN_MON_SPECIES_START] = CRY_TRAPINCH,
+ [SPECIES_VIBRAVA - HOENN_MON_SPECIES_START] = CRY_VIBRAVA,
+ [SPECIES_FLYGON - HOENN_MON_SPECIES_START] = CRY_FLYGON,
+ [SPECIES_MAKUHITA - HOENN_MON_SPECIES_START] = CRY_MAKUHITA,
+ [SPECIES_HARIYAMA - HOENN_MON_SPECIES_START] = CRY_HARIYAMA,
+ [SPECIES_ELECTRIKE - HOENN_MON_SPECIES_START] = CRY_ELECTRIKE,
+ [SPECIES_MANECTRIC - HOENN_MON_SPECIES_START] = CRY_MANECTRIC,
+ [SPECIES_NUMEL - HOENN_MON_SPECIES_START] = CRY_NUMEL,
+ [SPECIES_CAMERUPT - HOENN_MON_SPECIES_START] = CRY_CAMERUPT,
+ [SPECIES_SPHEAL - HOENN_MON_SPECIES_START] = CRY_SPHEAL,
+ [SPECIES_SEALEO - HOENN_MON_SPECIES_START] = CRY_SEALEO,
+ [SPECIES_WALREIN - HOENN_MON_SPECIES_START] = CRY_WALREIN,
+ [SPECIES_CACNEA - HOENN_MON_SPECIES_START] = CRY_CACNEA,
+ [SPECIES_CACTURNE - HOENN_MON_SPECIES_START] = CRY_CACTURNE,
+ [SPECIES_SNORUNT - HOENN_MON_SPECIES_START] = CRY_SNORUNT,
+ [SPECIES_GLALIE - HOENN_MON_SPECIES_START] = CRY_GLALIE,
+ [SPECIES_LUNATONE - HOENN_MON_SPECIES_START] = CRY_LUNATONE,
+ [SPECIES_SOLROCK - HOENN_MON_SPECIES_START] = CRY_SOLROCK,
+ [SPECIES_AZURILL - HOENN_MON_SPECIES_START] = CRY_AZURILL,
+ [SPECIES_SPOINK - HOENN_MON_SPECIES_START] = CRY_SPOINK,
+ [SPECIES_GRUMPIG - HOENN_MON_SPECIES_START] = CRY_GRUMPIG,
+ [SPECIES_PLUSLE - HOENN_MON_SPECIES_START] = CRY_PLUSLE,
+ [SPECIES_MINUN - HOENN_MON_SPECIES_START] = CRY_MINUN,
+ [SPECIES_MAWILE - HOENN_MON_SPECIES_START] = CRY_MAWILE,
+ [SPECIES_MEDITITE - HOENN_MON_SPECIES_START] = CRY_MEDITITE,
+ [SPECIES_MEDICHAM - HOENN_MON_SPECIES_START] = CRY_MEDICHAM,
+ [SPECIES_SWABLU - HOENN_MON_SPECIES_START] = CRY_SWABLU,
+ [SPECIES_ALTARIA - HOENN_MON_SPECIES_START] = CRY_ALTARIA,
+ [SPECIES_WYNAUT - HOENN_MON_SPECIES_START] = CRY_WYNAUT,
+ [SPECIES_DUSKULL - HOENN_MON_SPECIES_START] = CRY_DUSKULL,
+ [SPECIES_DUSCLOPS - HOENN_MON_SPECIES_START] = CRY_DUSCLOPS,
+ [SPECIES_ROSELIA - HOENN_MON_SPECIES_START] = CRY_ROSELIA,
+ [SPECIES_SLAKOTH - HOENN_MON_SPECIES_START] = CRY_SLAKOTH,
+ [SPECIES_VIGOROTH - HOENN_MON_SPECIES_START] = CRY_VIGOROTH,
+ [SPECIES_SLAKING - HOENN_MON_SPECIES_START] = CRY_SLAKING,
+ [SPECIES_GULPIN - HOENN_MON_SPECIES_START] = CRY_GULPIN,
+ [SPECIES_SWALOT - HOENN_MON_SPECIES_START] = CRY_SWALOT,
+ [SPECIES_TROPIUS - HOENN_MON_SPECIES_START] = CRY_TROPIUS,
+ [SPECIES_WHISMUR - HOENN_MON_SPECIES_START] = CRY_WHISMUR,
+ [SPECIES_LOUDRED - HOENN_MON_SPECIES_START] = CRY_LOUDRED,
+ [SPECIES_EXPLOUD - HOENN_MON_SPECIES_START] = CRY_EXPLOUD,
+ [SPECIES_CLAMPERL - HOENN_MON_SPECIES_START] = CRY_CLAMPERL,
+ [SPECIES_HUNTAIL - HOENN_MON_SPECIES_START] = CRY_HUNTAIL,
+ [SPECIES_GOREBYSS - HOENN_MON_SPECIES_START] = CRY_GOREBYSS,
+ [SPECIES_ABSOL - HOENN_MON_SPECIES_START] = CRY_ABSOL,
+ [SPECIES_SHUPPET - HOENN_MON_SPECIES_START] = CRY_SHUPPET,
+ [SPECIES_BANETTE - HOENN_MON_SPECIES_START] = CRY_BANETTE,
+ [SPECIES_SEVIPER - HOENN_MON_SPECIES_START] = CRY_SEVIPER,
+ [SPECIES_ZANGOOSE - HOENN_MON_SPECIES_START] = CRY_ZANGOOSE,
+ [SPECIES_RELICANTH - HOENN_MON_SPECIES_START] = CRY_RELICANTH,
+ [SPECIES_ARON - HOENN_MON_SPECIES_START] = CRY_ARON,
+ [SPECIES_LAIRON - HOENN_MON_SPECIES_START] = CRY_LAIRON,
+ [SPECIES_AGGRON - HOENN_MON_SPECIES_START] = CRY_AGGRON,
+ [SPECIES_CASTFORM - HOENN_MON_SPECIES_START] = CRY_CASTFORM,
+ [SPECIES_VOLBEAT - HOENN_MON_SPECIES_START] = CRY_VOLBEAT,
+ [SPECIES_ILLUMISE - HOENN_MON_SPECIES_START] = CRY_ILLUMISE,
+ [SPECIES_LILEEP - HOENN_MON_SPECIES_START] = CRY_LILEEP,
+ [SPECIES_CRADILY - HOENN_MON_SPECIES_START] = CRY_CRADILY,
+ [SPECIES_ANORITH - HOENN_MON_SPECIES_START] = CRY_ANORITH,
+ [SPECIES_ARMALDO - HOENN_MON_SPECIES_START] = CRY_ARMALDO,
+ [SPECIES_RALTS - HOENN_MON_SPECIES_START] = CRY_RALTS,
+ [SPECIES_KIRLIA - HOENN_MON_SPECIES_START] = CRY_KIRLIA,
+ [SPECIES_GARDEVOIR - HOENN_MON_SPECIES_START] = CRY_GARDEVOIR,
+ [SPECIES_BAGON - HOENN_MON_SPECIES_START] = CRY_BAGON,
+ [SPECIES_SHELGON - HOENN_MON_SPECIES_START] = CRY_SHELGON,
+ [SPECIES_SALAMENCE - HOENN_MON_SPECIES_START] = CRY_SALAMENCE,
+ [SPECIES_BELDUM - HOENN_MON_SPECIES_START] = CRY_BELDUM,
+ [SPECIES_METANG - HOENN_MON_SPECIES_START] = CRY_METANG,
+ [SPECIES_METAGROSS - HOENN_MON_SPECIES_START] = CRY_METAGROSS,
+ [SPECIES_REGIROCK - HOENN_MON_SPECIES_START] = CRY_REGIROCK,
+ [SPECIES_REGICE - HOENN_MON_SPECIES_START] = CRY_REGICE,
+ [SPECIES_REGISTEEL - HOENN_MON_SPECIES_START] = CRY_REGISTEEL,
+ [SPECIES_KYOGRE - HOENN_MON_SPECIES_START] = CRY_KYOGRE,
+ [SPECIES_GROUDON - HOENN_MON_SPECIES_START] = CRY_GROUDON,
+ [SPECIES_RAYQUAZA - HOENN_MON_SPECIES_START] = CRY_RAYQUAZA,
+ [SPECIES_LATIAS - HOENN_MON_SPECIES_START] = CRY_LATIAS,
+ [SPECIES_LATIOS - HOENN_MON_SPECIES_START] = CRY_LATIOS,
+ [SPECIES_JIRACHI - HOENN_MON_SPECIES_START] = CRY_JIRACHI,
+ [SPECIES_DEOXYS - HOENN_MON_SPECIES_START] = CRY_DEOXYS,
+ [SPECIES_CHIMECHO - HOENN_MON_SPECIES_START] = CRY_CHIMECHO,
+};
diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h
new file mode 100644
index 000000000..c9b0cf716
--- /dev/null
+++ b/src/data/pokemon/evolution.h
@@ -0,0 +1,187 @@
+const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
+{
+ [SPECIES_BULBASAUR] = {{EVO_LEVEL, 16, SPECIES_IVYSAUR}},
+ [SPECIES_IVYSAUR] = {{EVO_LEVEL, 32, SPECIES_VENUSAUR}},
+ [SPECIES_CHARMANDER] = {{EVO_LEVEL, 16, SPECIES_CHARMELEON}},
+ [SPECIES_CHARMELEON] = {{EVO_LEVEL, 36, SPECIES_CHARIZARD}},
+ [SPECIES_SQUIRTLE] = {{EVO_LEVEL, 16, SPECIES_WARTORTLE}},
+ [SPECIES_WARTORTLE] = {{EVO_LEVEL, 36, SPECIES_BLASTOISE}},
+ [SPECIES_CATERPIE] = {{EVO_LEVEL, 7, SPECIES_METAPOD}},
+ [SPECIES_METAPOD] = {{EVO_LEVEL, 10, SPECIES_BUTTERFREE}},
+ [SPECIES_WEEDLE] = {{EVO_LEVEL, 7, SPECIES_KAKUNA}},
+ [SPECIES_KAKUNA] = {{EVO_LEVEL, 10, SPECIES_BEEDRILL}},
+ [SPECIES_PIDGEY] = {{EVO_LEVEL, 18, SPECIES_PIDGEOTTO}},
+ [SPECIES_PIDGEOTTO] = {{EVO_LEVEL, 36, SPECIES_PIDGEOT}},
+ [SPECIES_RATTATA] = {{EVO_LEVEL, 20, SPECIES_RATICATE}},
+ [SPECIES_SPEAROW] = {{EVO_LEVEL, 20, SPECIES_FEAROW}},
+ [SPECIES_EKANS] = {{EVO_LEVEL, 22, SPECIES_ARBOK}},
+ [SPECIES_PIKACHU] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}},
+ [SPECIES_SANDSHREW] = {{EVO_LEVEL, 22, SPECIES_SANDSLASH}},
+ [SPECIES_NIDORAN_F] = {{EVO_LEVEL, 16, SPECIES_NIDORINA}},
+ [SPECIES_NIDORINA] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}},
+ [SPECIES_NIDORAN_M] = {{EVO_LEVEL, 16, SPECIES_NIDORINO}},
+ [SPECIES_NIDORINO] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}},
+ [SPECIES_CLEFAIRY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}},
+ [SPECIES_VULPIX] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}},
+ [SPECIES_JIGGLYPUFF] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}},
+ [SPECIES_ZUBAT] = {{EVO_LEVEL, 22, SPECIES_GOLBAT}},
+ [SPECIES_GOLBAT] = {{EVO_FRIENDSHIP, 0, SPECIES_CROBAT}},
+ [SPECIES_ODDISH] = {{EVO_LEVEL, 21, SPECIES_GLOOM}},
+ [SPECIES_GLOOM] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME},
+ {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}},
+ [SPECIES_PARAS] = {{EVO_LEVEL, 24, SPECIES_PARASECT}},
+ [SPECIES_VENONAT] = {{EVO_LEVEL, 31, SPECIES_VENOMOTH}},
+ [SPECIES_DIGLETT] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO}},
+ [SPECIES_MEOWTH] = {{EVO_LEVEL, 28, SPECIES_PERSIAN}},
+ [SPECIES_PSYDUCK] = {{EVO_LEVEL, 33, SPECIES_GOLDUCK}},
+ [SPECIES_MANKEY] = {{EVO_LEVEL, 28, SPECIES_PRIMEAPE}},
+ [SPECIES_GROWLITHE] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}},
+ [SPECIES_POLIWAG] = {{EVO_LEVEL, 25, SPECIES_POLIWHIRL}},
+ [SPECIES_POLIWHIRL] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH},
+ {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}},
+ [SPECIES_ABRA] = {{EVO_LEVEL, 16, SPECIES_KADABRA}},
+ [SPECIES_KADABRA] = {{EVO_TRADE, 0, SPECIES_ALAKAZAM}},
+ [SPECIES_MACHOP] = {{EVO_LEVEL, 28, SPECIES_MACHOKE}},
+ [SPECIES_MACHOKE] = {{EVO_TRADE, 0, SPECIES_MACHAMP}},
+ [SPECIES_BELLSPROUT] = {{EVO_LEVEL, 21, SPECIES_WEEPINBELL}},
+ [SPECIES_WEEPINBELL] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}},
+ [SPECIES_TENTACOOL] = {{EVO_LEVEL, 30, SPECIES_TENTACRUEL}},
+ [SPECIES_GEODUDE] = {{EVO_LEVEL, 25, SPECIES_GRAVELER}},
+ [SPECIES_GRAVELER] = {{EVO_TRADE, 0, SPECIES_GOLEM}},
+ [SPECIES_PONYTA] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH}},
+ [SPECIES_SLOWPOKE] = {{EVO_LEVEL, 37, SPECIES_SLOWBRO},
+ {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}},
+ [SPECIES_MAGNEMITE] = {{EVO_LEVEL, 30, SPECIES_MAGNETON}},
+ [SPECIES_DODUO] = {{EVO_LEVEL, 31, SPECIES_DODRIO}},
+ [SPECIES_SEEL] = {{EVO_LEVEL, 34, SPECIES_DEWGONG}},
+ [SPECIES_GRIMER] = {{EVO_LEVEL, 38, SPECIES_MUK}},
+ [SPECIES_SHELLDER] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}},
+ [SPECIES_GASTLY] = {{EVO_LEVEL, 25, SPECIES_HAUNTER}},
+ [SPECIES_HAUNTER] = {{EVO_TRADE, 0, SPECIES_GENGAR}},
+ [SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}},
+ [SPECIES_DROWZEE] = {{EVO_LEVEL, 26, SPECIES_HYPNO}},
+ [SPECIES_KRABBY] = {{EVO_LEVEL, 28, SPECIES_KINGLER}},
+ [SPECIES_VOLTORB] = {{EVO_LEVEL, 30, SPECIES_ELECTRODE}},
+ [SPECIES_EXEGGCUTE] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}},
+ [SPECIES_CUBONE] = {{EVO_LEVEL, 28, SPECIES_MAROWAK}},
+ [SPECIES_KOFFING] = {{EVO_LEVEL, 35, SPECIES_WEEZING}},
+ [SPECIES_RHYHORN] = {{EVO_LEVEL, 42, SPECIES_RHYDON}},
+ [SPECIES_CHANSEY] = {{EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}},
+ [SPECIES_HORSEA] = {{EVO_LEVEL, 32, SPECIES_SEADRA}},
+ [SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}},
+ [SPECIES_GOLDEEN] = {{EVO_LEVEL, 33, SPECIES_SEAKING}},
+ [SPECIES_STARYU] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}},
+ [SPECIES_SCYTHER] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}},
+ [SPECIES_MAGIKARP] = {{EVO_LEVEL, 20, SPECIES_GYARADOS}},
+ [SPECIES_EEVEE] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON},
+ {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON},
+ {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON},
+ {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON},
+ {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}},
+ [SPECIES_PORYGON] = {{EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}},
+ [SPECIES_OMANYTE] = {{EVO_LEVEL, 40, SPECIES_OMASTAR}},
+ [SPECIES_KABUTO] = {{EVO_LEVEL, 40, SPECIES_KABUTOPS}},
+ [SPECIES_DRATINI] = {{EVO_LEVEL, 30, SPECIES_DRAGONAIR}},
+ [SPECIES_DRAGONAIR] = {{EVO_LEVEL, 55, SPECIES_DRAGONITE}},
+ [SPECIES_CHIKORITA] = {{EVO_LEVEL, 16, SPECIES_BAYLEEF}},
+ [SPECIES_BAYLEEF] = {{EVO_LEVEL, 32, SPECIES_MEGANIUM}},
+ [SPECIES_CYNDAQUIL] = {{EVO_LEVEL, 14, SPECIES_QUILAVA}},
+ [SPECIES_QUILAVA] = {{EVO_LEVEL, 36, SPECIES_TYPHLOSION}},
+ [SPECIES_TOTODILE] = {{EVO_LEVEL, 18, SPECIES_CROCONAW}},
+ [SPECIES_CROCONAW] = {{EVO_LEVEL, 30, SPECIES_FERALIGATR}},
+ [SPECIES_SENTRET] = {{EVO_LEVEL, 15, SPECIES_FURRET}},
+ [SPECIES_HOOTHOOT] = {{EVO_LEVEL, 20, SPECIES_NOCTOWL}},
+ [SPECIES_LEDYBA] = {{EVO_LEVEL, 18, SPECIES_LEDIAN}},
+ [SPECIES_SPINARAK] = {{EVO_LEVEL, 22, SPECIES_ARIADOS}},
+ [SPECIES_CHINCHOU] = {{EVO_LEVEL, 27, SPECIES_LANTURN}},
+ [SPECIES_PICHU] = {{EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}},
+ [SPECIES_CLEFFA] = {{EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}},
+ [SPECIES_IGGLYBUFF] = {{EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}},
+ [SPECIES_TOGEPI] = {{EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}},
+ [SPECIES_NATU] = {{EVO_LEVEL, 25, SPECIES_XATU}},
+ [SPECIES_MAREEP] = {{EVO_LEVEL, 15, SPECIES_FLAAFFY}},
+ [SPECIES_FLAAFFY] = {{EVO_LEVEL, 30, SPECIES_AMPHAROS}},
+ [SPECIES_MARILL] = {{EVO_LEVEL, 18, SPECIES_AZUMARILL}},
+ [SPECIES_HOPPIP] = {{EVO_LEVEL, 18, SPECIES_SKIPLOOM}},
+ [SPECIES_SKIPLOOM] = {{EVO_LEVEL, 27, SPECIES_JUMPLUFF}},
+ [SPECIES_SUNKERN] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}},
+ [SPECIES_WOOPER] = {{EVO_LEVEL, 20, SPECIES_QUAGSIRE}},
+ [SPECIES_PINECO] = {{EVO_LEVEL, 31, SPECIES_FORRETRESS}},
+ [SPECIES_SNUBBULL] = {{EVO_LEVEL, 23, SPECIES_GRANBULL}},
+ [SPECIES_TEDDIURSA] = {{EVO_LEVEL, 30, SPECIES_URSARING}},
+ [SPECIES_SLUGMA] = {{EVO_LEVEL, 38, SPECIES_MAGCARGO}},
+ [SPECIES_SWINUB] = {{EVO_LEVEL, 33, SPECIES_PILOSWINE}},
+ [SPECIES_REMORAID] = {{EVO_LEVEL, 25, SPECIES_OCTILLERY}},
+ [SPECIES_HOUNDOUR] = {{EVO_LEVEL, 24, SPECIES_HOUNDOOM}},
+ [SPECIES_PHANPY] = {{EVO_LEVEL, 25, SPECIES_DONPHAN}},
+ [SPECIES_TYROGUE] = {{EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN},
+ {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE},
+ {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}},
+ [SPECIES_SMOOCHUM] = {{EVO_LEVEL, 30, SPECIES_JYNX}},
+ [SPECIES_ELEKID] = {{EVO_LEVEL, 30, SPECIES_ELECTABUZZ}},
+ [SPECIES_MAGBY] = {{EVO_LEVEL, 30, SPECIES_MAGMAR}},
+ [SPECIES_LARVITAR] = {{EVO_LEVEL, 30, SPECIES_PUPITAR}},
+ [SPECIES_PUPITAR] = {{EVO_LEVEL, 55, SPECIES_TYRANITAR}},
+ [SPECIES_TREECKO] = {{EVO_LEVEL, 16, SPECIES_GROVYLE}},
+ [SPECIES_GROVYLE] = {{EVO_LEVEL, 36, SPECIES_SCEPTILE}},
+ [SPECIES_TORCHIC] = {{EVO_LEVEL, 16, SPECIES_COMBUSKEN}},
+ [SPECIES_COMBUSKEN] = {{EVO_LEVEL, 36, SPECIES_BLAZIKEN}},
+ [SPECIES_MUDKIP] = {{EVO_LEVEL, 16, SPECIES_MARSHTOMP}},
+ [SPECIES_MARSHTOMP] = {{EVO_LEVEL, 36, SPECIES_SWAMPERT}},
+ [SPECIES_POOCHYENA] = {{EVO_LEVEL, 18, SPECIES_MIGHTYENA}},
+ [SPECIES_ZIGZAGOON] = {{EVO_LEVEL, 20, SPECIES_LINOONE}},
+ [SPECIES_WURMPLE] = {{EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON},
+ {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}},
+ [SPECIES_SILCOON] = {{EVO_LEVEL, 10, SPECIES_BEAUTIFLY}},
+ [SPECIES_CASCOON] = {{EVO_LEVEL, 10, SPECIES_DUSTOX}},
+ [SPECIES_LOTAD] = {{EVO_LEVEL, 14, SPECIES_LOMBRE}},
+ [SPECIES_LOMBRE] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}},
+ [SPECIES_SEEDOT] = {{EVO_LEVEL, 14, SPECIES_NUZLEAF}},
+ [SPECIES_NUZLEAF] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}},
+ [SPECIES_NINCADA] = {{EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK},
+ {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}},
+ [SPECIES_TAILLOW] = {{EVO_LEVEL, 22, SPECIES_SWELLOW}},
+ [SPECIES_SHROOMISH] = {{EVO_LEVEL, 23, SPECIES_BRELOOM}},
+ [SPECIES_WINGULL] = {{EVO_LEVEL, 25, SPECIES_PELIPPER}},
+ [SPECIES_SURSKIT] = {{EVO_LEVEL, 22, SPECIES_MASQUERAIN}},
+ [SPECIES_WAILMER] = {{EVO_LEVEL, 40, SPECIES_WAILORD}},
+ [SPECIES_SKITTY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}},
+ [SPECIES_BALTOY] = {{EVO_LEVEL, 36, SPECIES_CLAYDOL}},
+ [SPECIES_BARBOACH] = {{EVO_LEVEL, 30, SPECIES_WHISCASH}},
+ [SPECIES_CORPHISH] = {{EVO_LEVEL, 30, SPECIES_CRAWDAUNT}},
+ [SPECIES_FEEBAS] = {{EVO_BEAUTY, 170, SPECIES_MILOTIC}},
+ [SPECIES_CARVANHA] = {{EVO_LEVEL, 30, SPECIES_SHARPEDO}},
+ [SPECIES_TRAPINCH] = {{EVO_LEVEL, 35, SPECIES_VIBRAVA}},
+ [SPECIES_VIBRAVA] = {{EVO_LEVEL, 45, SPECIES_FLYGON}},
+ [SPECIES_MAKUHITA] = {{EVO_LEVEL, 24, SPECIES_HARIYAMA}},
+ [SPECIES_ELECTRIKE] = {{EVO_LEVEL, 26, SPECIES_MANECTRIC}},
+ [SPECIES_NUMEL] = {{EVO_LEVEL, 33, SPECIES_CAMERUPT}},
+ [SPECIES_SPHEAL] = {{EVO_LEVEL, 32, SPECIES_SEALEO}},
+ [SPECIES_SEALEO] = {{EVO_LEVEL, 44, SPECIES_WALREIN}},
+ [SPECIES_CACNEA] = {{EVO_LEVEL, 32, SPECIES_CACTURNE}},
+ [SPECIES_SNORUNT] = {{EVO_LEVEL, 42, SPECIES_GLALIE}},
+ [SPECIES_AZURILL] = {{EVO_FRIENDSHIP, 0, SPECIES_MARILL}},
+ [SPECIES_SPOINK] = {{EVO_LEVEL, 32, SPECIES_GRUMPIG}},
+ [SPECIES_MEDITITE] = {{EVO_LEVEL, 37, SPECIES_MEDICHAM}},
+ [SPECIES_SWABLU] = {{EVO_LEVEL, 35, SPECIES_ALTARIA}},
+ [SPECIES_WYNAUT] = {{EVO_LEVEL, 15, SPECIES_WOBBUFFET}},
+ [SPECIES_DUSKULL] = {{EVO_LEVEL, 37, SPECIES_DUSCLOPS}},
+ [SPECIES_SLAKOTH] = {{EVO_LEVEL, 18, SPECIES_VIGOROTH}},
+ [SPECIES_VIGOROTH] = {{EVO_LEVEL, 36, SPECIES_SLAKING}},
+ [SPECIES_GULPIN] = {{EVO_LEVEL, 26, SPECIES_SWALOT}},
+ [SPECIES_WHISMUR] = {{EVO_LEVEL, 20, SPECIES_LOUDRED}},
+ [SPECIES_LOUDRED] = {{EVO_LEVEL, 40, SPECIES_EXPLOUD}},
+ [SPECIES_CLAMPERL] = {{EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL},
+ {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}},
+ [SPECIES_SHUPPET] = {{EVO_LEVEL, 37, SPECIES_BANETTE}},
+ [SPECIES_ARON] = {{EVO_LEVEL, 32, SPECIES_LAIRON}},
+ [SPECIES_LAIRON] = {{EVO_LEVEL, 42, SPECIES_AGGRON}},
+ [SPECIES_LILEEP] = {{EVO_LEVEL, 40, SPECIES_CRADILY}},
+ [SPECIES_ANORITH] = {{EVO_LEVEL, 40, SPECIES_ARMALDO}},
+ [SPECIES_RALTS] = {{EVO_LEVEL, 20, SPECIES_KIRLIA}},
+ [SPECIES_KIRLIA] = {{EVO_LEVEL, 30, SPECIES_GARDEVOIR}},
+ [SPECIES_BAGON] = {{EVO_LEVEL, 30, SPECIES_SHELGON}},
+ [SPECIES_SHELGON] = {{EVO_LEVEL, 50, SPECIES_SALAMENCE}},
+ [SPECIES_BELDUM] = {{EVO_LEVEL, 20, SPECIES_METANG}},
+ [SPECIES_METANG] = {{EVO_LEVEL, 45, SPECIES_METAGROSS}},
+};
diff --git a/src/data/pokemon/experience_tables.h b/src/data/pokemon/experience_tables.h
new file mode 100644
index 000000000..b2723e9d2
--- /dev/null
+++ b/src/data/pokemon/experience_tables.h
@@ -0,0 +1,844 @@
+#define SQUARE(n)(n * n)
+#define CUBE(n)(n * n * n)
+
+#define EXP_SLOW(n)((5 * CUBE(n)) / 4) // (5 * (n)^3) / 4
+#define EXP_FAST(n)((4 * CUBE(n)) / 5) // (4 * (n)^3) / 5
+#define EXP_MEDIUM_FAST(n)(CUBE(n)) // (n)^3
+#define EXP_MEDIUM_SLOW(n)((6 * CUBE(n)) / 5 - (15 * SQUARE(n)) + (100 * n) - 140) // (6 * (n)^3) / 5 - (15 * (n)^2) + (100 * n) - 140
+#define EXP_ERRATIC(n) \
+ (n <= 50) ? ((100 - n) * CUBE(n) / 50) \
+ :(n <= 68) ? ((150 - n) * CUBE(n) / 100) \
+ :(n <= 98) ? (((1911 - 10 * n) / 3) * CUBE(n) / 500) \
+ : ((160 - n) * CUBE(n) / 100)
+#define EXP_FLUCTUATING(n) \
+ (n <= 15) ? (((n + 1) / 3 + 24) * CUBE(n) / 50) \
+ :(n <= 36) ? ((n + 14) * CUBE(n) / 50) \
+ : (((n / 2) + 32) * CUBE(n) / 50)
+
+const u32 gExperienceTables[][MAX_MON_LEVEL + 1] =
+{
+ { // Medium Fast
+ 0, // 0
+ 1, // 1
+ EXP_MEDIUM_FAST(2),
+ EXP_MEDIUM_FAST(3),
+ EXP_MEDIUM_FAST(4),
+ EXP_MEDIUM_FAST(5),
+ EXP_MEDIUM_FAST(6),
+ EXP_MEDIUM_FAST(7),
+ EXP_MEDIUM_FAST(8),
+ EXP_MEDIUM_FAST(9),
+ EXP_MEDIUM_FAST(10),
+ EXP_MEDIUM_FAST(11),
+ EXP_MEDIUM_FAST(12),
+ EXP_MEDIUM_FAST(13),
+ EXP_MEDIUM_FAST(14),
+ EXP_MEDIUM_FAST(15),
+ EXP_MEDIUM_FAST(16),
+ EXP_MEDIUM_FAST(17),
+ EXP_MEDIUM_FAST(18),
+ EXP_MEDIUM_FAST(19),
+ EXP_MEDIUM_FAST(20),
+ EXP_MEDIUM_FAST(21),
+ EXP_MEDIUM_FAST(22),
+ EXP_MEDIUM_FAST(23),
+ EXP_MEDIUM_FAST(24),
+ EXP_MEDIUM_FAST(25),
+ EXP_MEDIUM_FAST(26),
+ EXP_MEDIUM_FAST(27),
+ EXP_MEDIUM_FAST(28),
+ EXP_MEDIUM_FAST(29),
+ EXP_MEDIUM_FAST(30),
+ EXP_MEDIUM_FAST(31),
+ EXP_MEDIUM_FAST(32),
+ EXP_MEDIUM_FAST(33),
+ EXP_MEDIUM_FAST(34),
+ EXP_MEDIUM_FAST(35),
+ EXP_MEDIUM_FAST(36),
+ EXP_MEDIUM_FAST(37),
+ EXP_MEDIUM_FAST(38),
+ EXP_MEDIUM_FAST(39),
+ EXP_MEDIUM_FAST(40),
+ EXP_MEDIUM_FAST(41),
+ EXP_MEDIUM_FAST(42),
+ EXP_MEDIUM_FAST(43),
+ EXP_MEDIUM_FAST(44),
+ EXP_MEDIUM_FAST(45),
+ EXP_MEDIUM_FAST(46),
+ EXP_MEDIUM_FAST(47),
+ EXP_MEDIUM_FAST(48),
+ EXP_MEDIUM_FAST(49),
+ EXP_MEDIUM_FAST(50),
+ EXP_MEDIUM_FAST(51),
+ EXP_MEDIUM_FAST(52),
+ EXP_MEDIUM_FAST(53),
+ EXP_MEDIUM_FAST(54),
+ EXP_MEDIUM_FAST(55),
+ EXP_MEDIUM_FAST(56),
+ EXP_MEDIUM_FAST(57),
+ EXP_MEDIUM_FAST(58),
+ EXP_MEDIUM_FAST(59),
+ EXP_MEDIUM_FAST(60),
+ EXP_MEDIUM_FAST(61),
+ EXP_MEDIUM_FAST(62),
+ EXP_MEDIUM_FAST(63),
+ EXP_MEDIUM_FAST(64),
+ EXP_MEDIUM_FAST(65),
+ EXP_MEDIUM_FAST(66),
+ EXP_MEDIUM_FAST(67),
+ EXP_MEDIUM_FAST(68),
+ EXP_MEDIUM_FAST(69),
+ EXP_MEDIUM_FAST(70),
+ EXP_MEDIUM_FAST(71),
+ EXP_MEDIUM_FAST(72),
+ EXP_MEDIUM_FAST(73),
+ EXP_MEDIUM_FAST(74),
+ EXP_MEDIUM_FAST(75),
+ EXP_MEDIUM_FAST(76),
+ EXP_MEDIUM_FAST(77),
+ EXP_MEDIUM_FAST(78),
+ EXP_MEDIUM_FAST(79),
+ EXP_MEDIUM_FAST(80),
+ EXP_MEDIUM_FAST(81),
+ EXP_MEDIUM_FAST(82),
+ EXP_MEDIUM_FAST(83),
+ EXP_MEDIUM_FAST(84),
+ EXP_MEDIUM_FAST(85),
+ EXP_MEDIUM_FAST(86),
+ EXP_MEDIUM_FAST(87),
+ EXP_MEDIUM_FAST(88),
+ EXP_MEDIUM_FAST(89),
+ EXP_MEDIUM_FAST(90),
+ EXP_MEDIUM_FAST(91),
+ EXP_MEDIUM_FAST(92),
+ EXP_MEDIUM_FAST(93),
+ EXP_MEDIUM_FAST(94),
+ EXP_MEDIUM_FAST(95),
+ EXP_MEDIUM_FAST(96),
+ EXP_MEDIUM_FAST(97),
+ EXP_MEDIUM_FAST(98),
+ EXP_MEDIUM_FAST(99),
+ EXP_MEDIUM_FAST(100),
+ },
+ { // Erratic
+ 0, // 0
+ 1, // 1
+ EXP_ERRATIC(2),
+ EXP_ERRATIC(3),
+ EXP_ERRATIC(4),
+ EXP_ERRATIC(5),
+ EXP_ERRATIC(6),
+ EXP_ERRATIC(7),
+ EXP_ERRATIC(8),
+ EXP_ERRATIC(9),
+ EXP_ERRATIC(10),
+ EXP_ERRATIC(11),
+ EXP_ERRATIC(12),
+ EXP_ERRATIC(13),
+ EXP_ERRATIC(14),
+ EXP_ERRATIC(15),
+ EXP_ERRATIC(16),
+ EXP_ERRATIC(17),
+ EXP_ERRATIC(18),
+ EXP_ERRATIC(19),
+ EXP_ERRATIC(20),
+ EXP_ERRATIC(21),
+ EXP_ERRATIC(22),
+ EXP_ERRATIC(23),
+ EXP_ERRATIC(24),
+ EXP_ERRATIC(25),
+ EXP_ERRATIC(26),
+ EXP_ERRATIC(27),
+ EXP_ERRATIC(28),
+ EXP_ERRATIC(29),
+ EXP_ERRATIC(30),
+ EXP_ERRATIC(31),
+ EXP_ERRATIC(32),
+ EXP_ERRATIC(33),
+ EXP_ERRATIC(34),
+ EXP_ERRATIC(35),
+ EXP_ERRATIC(36),
+ EXP_ERRATIC(37),
+ EXP_ERRATIC(38),
+ EXP_ERRATIC(39),
+ EXP_ERRATIC(40),
+ EXP_ERRATIC(41),
+ EXP_ERRATIC(42),
+ EXP_ERRATIC(43),
+ EXP_ERRATIC(44),
+ EXP_ERRATIC(45),
+ EXP_ERRATIC(46),
+ EXP_ERRATIC(47),
+ EXP_ERRATIC(48),
+ EXP_ERRATIC(49),
+ EXP_ERRATIC(50),
+ EXP_ERRATIC(51),
+ EXP_ERRATIC(52),
+ EXP_ERRATIC(53),
+ EXP_ERRATIC(54),
+ EXP_ERRATIC(55),
+ EXP_ERRATIC(56),
+ EXP_ERRATIC(57),
+ EXP_ERRATIC(58),
+ EXP_ERRATIC(59),
+ EXP_ERRATIC(60),
+ EXP_ERRATIC(61),
+ EXP_ERRATIC(62),
+ EXP_ERRATIC(63),
+ EXP_ERRATIC(64),
+ EXP_ERRATIC(65),
+ EXP_ERRATIC(66),
+ EXP_ERRATIC(67),
+ EXP_ERRATIC(68),
+ EXP_ERRATIC(69),
+ EXP_ERRATIC(70),
+ EXP_ERRATIC(71),
+ EXP_ERRATIC(72),
+ EXP_ERRATIC(73),
+ EXP_ERRATIC(74),
+ EXP_ERRATIC(75),
+ EXP_ERRATIC(76),
+ EXP_ERRATIC(77),
+ EXP_ERRATIC(78),
+ EXP_ERRATIC(79),
+ EXP_ERRATIC(80),
+ EXP_ERRATIC(81),
+ EXP_ERRATIC(82),
+ EXP_ERRATIC(83),
+ EXP_ERRATIC(84),
+ EXP_ERRATIC(85),
+ EXP_ERRATIC(86),
+ EXP_ERRATIC(87),
+ EXP_ERRATIC(88),
+ EXP_ERRATIC(89),
+ EXP_ERRATIC(90),
+ EXP_ERRATIC(91),
+ EXP_ERRATIC(92),
+ EXP_ERRATIC(93),
+ EXP_ERRATIC(94),
+ EXP_ERRATIC(95),
+ EXP_ERRATIC(96),
+ EXP_ERRATIC(97),
+ EXP_ERRATIC(98),
+ EXP_ERRATIC(99),
+ EXP_ERRATIC(100),
+ },
+ { // Fluctuating
+ 0, // 0
+ 1, // 1
+ EXP_FLUCTUATING(2),
+ EXP_FLUCTUATING(3),
+ EXP_FLUCTUATING(4),
+ EXP_FLUCTUATING(5),
+ EXP_FLUCTUATING(6),
+ EXP_FLUCTUATING(7),
+ EXP_FLUCTUATING(8),
+ EXP_FLUCTUATING(9),
+ EXP_FLUCTUATING(10),
+ EXP_FLUCTUATING(11),
+ EXP_FLUCTUATING(12),
+ EXP_FLUCTUATING(13),
+ EXP_FLUCTUATING(14),
+ EXP_FLUCTUATING(15),
+ EXP_FLUCTUATING(16),
+ EXP_FLUCTUATING(17),
+ EXP_FLUCTUATING(18),
+ EXP_FLUCTUATING(19),
+ EXP_FLUCTUATING(20),
+ EXP_FLUCTUATING(21),
+ EXP_FLUCTUATING(22),
+ EXP_FLUCTUATING(23),
+ EXP_FLUCTUATING(24),
+ EXP_FLUCTUATING(25),
+ EXP_FLUCTUATING(26),
+ EXP_FLUCTUATING(27),
+ EXP_FLUCTUATING(28),
+ EXP_FLUCTUATING(29),
+ EXP_FLUCTUATING(30),
+ EXP_FLUCTUATING(31),
+ EXP_FLUCTUATING(32),
+ EXP_FLUCTUATING(33),
+ EXP_FLUCTUATING(34),
+ EXP_FLUCTUATING(35),
+ EXP_FLUCTUATING(36),
+ EXP_FLUCTUATING(37),
+ EXP_FLUCTUATING(38),
+ EXP_FLUCTUATING(39),
+ EXP_FLUCTUATING(40),
+ EXP_FLUCTUATING(41),
+ EXP_FLUCTUATING(42),
+ EXP_FLUCTUATING(43),
+ EXP_FLUCTUATING(44),
+ EXP_FLUCTUATING(45),
+ EXP_FLUCTUATING(46),
+ EXP_FLUCTUATING(47),
+ EXP_FLUCTUATING(48),
+ EXP_FLUCTUATING(49),
+ EXP_FLUCTUATING(50),
+ EXP_FLUCTUATING(51),
+ EXP_FLUCTUATING(52),
+ EXP_FLUCTUATING(53),
+ EXP_FLUCTUATING(54),
+ EXP_FLUCTUATING(55),
+ EXP_FLUCTUATING(56),
+ EXP_FLUCTUATING(57),
+ EXP_FLUCTUATING(58),
+ EXP_FLUCTUATING(59),
+ EXP_FLUCTUATING(60),
+ EXP_FLUCTUATING(61),
+ EXP_FLUCTUATING(62),
+ EXP_FLUCTUATING(63),
+ EXP_FLUCTUATING(64),
+ EXP_FLUCTUATING(65),
+ EXP_FLUCTUATING(66),
+ EXP_FLUCTUATING(67),
+ EXP_FLUCTUATING(68),
+ EXP_FLUCTUATING(69),
+ EXP_FLUCTUATING(70),
+ EXP_FLUCTUATING(71),
+ EXP_FLUCTUATING(72),
+ EXP_FLUCTUATING(73),
+ EXP_FLUCTUATING(74),
+ EXP_FLUCTUATING(75),
+ EXP_FLUCTUATING(76),
+ EXP_FLUCTUATING(77),
+ EXP_FLUCTUATING(78),
+ EXP_FLUCTUATING(79),
+ EXP_FLUCTUATING(80),
+ EXP_FLUCTUATING(81),
+ EXP_FLUCTUATING(82),
+ EXP_FLUCTUATING(83),
+ EXP_FLUCTUATING(84),
+ EXP_FLUCTUATING(85),
+ EXP_FLUCTUATING(86),
+ EXP_FLUCTUATING(87),
+ EXP_FLUCTUATING(88),
+ EXP_FLUCTUATING(89),
+ EXP_FLUCTUATING(90),
+ EXP_FLUCTUATING(91),
+ EXP_FLUCTUATING(92),
+ EXP_FLUCTUATING(93),
+ EXP_FLUCTUATING(94),
+ EXP_FLUCTUATING(95),
+ EXP_FLUCTUATING(96),
+ EXP_FLUCTUATING(97),
+ EXP_FLUCTUATING(98),
+ EXP_FLUCTUATING(99),
+ EXP_FLUCTUATING(100),
+ },
+ { // Medium Slow
+ 0, // 0
+ 1, // 1
+ EXP_MEDIUM_SLOW(2),
+ EXP_MEDIUM_SLOW(3),
+ EXP_MEDIUM_SLOW(4),
+ EXP_MEDIUM_SLOW(5),
+ EXP_MEDIUM_SLOW(6),
+ EXP_MEDIUM_SLOW(7),
+ EXP_MEDIUM_SLOW(8),
+ EXP_MEDIUM_SLOW(9),
+ EXP_MEDIUM_SLOW(10),
+ EXP_MEDIUM_SLOW(11),
+ EXP_MEDIUM_SLOW(12),
+ EXP_MEDIUM_SLOW(13),
+ EXP_MEDIUM_SLOW(14),
+ EXP_MEDIUM_SLOW(15),
+ EXP_MEDIUM_SLOW(16),
+ EXP_MEDIUM_SLOW(17),
+ EXP_MEDIUM_SLOW(18),
+ EXP_MEDIUM_SLOW(19),
+ EXP_MEDIUM_SLOW(20),
+ EXP_MEDIUM_SLOW(21),
+ EXP_MEDIUM_SLOW(22),
+ EXP_MEDIUM_SLOW(23),
+ EXP_MEDIUM_SLOW(24),
+ EXP_MEDIUM_SLOW(25),
+ EXP_MEDIUM_SLOW(26),
+ EXP_MEDIUM_SLOW(27),
+ EXP_MEDIUM_SLOW(28),
+ EXP_MEDIUM_SLOW(29),
+ EXP_MEDIUM_SLOW(30),
+ EXP_MEDIUM_SLOW(31),
+ EXP_MEDIUM_SLOW(32),
+ EXP_MEDIUM_SLOW(33),
+ EXP_MEDIUM_SLOW(34),
+ EXP_MEDIUM_SLOW(35),
+ EXP_MEDIUM_SLOW(36),
+ EXP_MEDIUM_SLOW(37),
+ EXP_MEDIUM_SLOW(38),
+ EXP_MEDIUM_SLOW(39),
+ EXP_MEDIUM_SLOW(40),
+ EXP_MEDIUM_SLOW(41),
+ EXP_MEDIUM_SLOW(42),
+ EXP_MEDIUM_SLOW(43),
+ EXP_MEDIUM_SLOW(44),
+ EXP_MEDIUM_SLOW(45),
+ EXP_MEDIUM_SLOW(46),
+ EXP_MEDIUM_SLOW(47),
+ EXP_MEDIUM_SLOW(48),
+ EXP_MEDIUM_SLOW(49),
+ EXP_MEDIUM_SLOW(50),
+ EXP_MEDIUM_SLOW(51),
+ EXP_MEDIUM_SLOW(52),
+ EXP_MEDIUM_SLOW(53),
+ EXP_MEDIUM_SLOW(54),
+ EXP_MEDIUM_SLOW(55),
+ EXP_MEDIUM_SLOW(56),
+ EXP_MEDIUM_SLOW(57),
+ EXP_MEDIUM_SLOW(58),
+ EXP_MEDIUM_SLOW(59),
+ EXP_MEDIUM_SLOW(60),
+ EXP_MEDIUM_SLOW(61),
+ EXP_MEDIUM_SLOW(62),
+ EXP_MEDIUM_SLOW(63),
+ EXP_MEDIUM_SLOW(64),
+ EXP_MEDIUM_SLOW(65),
+ EXP_MEDIUM_SLOW(66),
+ EXP_MEDIUM_SLOW(67),
+ EXP_MEDIUM_SLOW(68),
+ EXP_MEDIUM_SLOW(69),
+ EXP_MEDIUM_SLOW(70),
+ EXP_MEDIUM_SLOW(71),
+ EXP_MEDIUM_SLOW(72),
+ EXP_MEDIUM_SLOW(73),
+ EXP_MEDIUM_SLOW(74),
+ EXP_MEDIUM_SLOW(75),
+ EXP_MEDIUM_SLOW(76),
+ EXP_MEDIUM_SLOW(77),
+ EXP_MEDIUM_SLOW(78),
+ EXP_MEDIUM_SLOW(79),
+ EXP_MEDIUM_SLOW(80),
+ EXP_MEDIUM_SLOW(81),
+ EXP_MEDIUM_SLOW(82),
+ EXP_MEDIUM_SLOW(83),
+ EXP_MEDIUM_SLOW(84),
+ EXP_MEDIUM_SLOW(85),
+ EXP_MEDIUM_SLOW(86),
+ EXP_MEDIUM_SLOW(87),
+ EXP_MEDIUM_SLOW(88),
+ EXP_MEDIUM_SLOW(89),
+ EXP_MEDIUM_SLOW(90),
+ EXP_MEDIUM_SLOW(91),
+ EXP_MEDIUM_SLOW(92),
+ EXP_MEDIUM_SLOW(93),
+ EXP_MEDIUM_SLOW(94),
+ EXP_MEDIUM_SLOW(95),
+ EXP_MEDIUM_SLOW(96),
+ EXP_MEDIUM_SLOW(97),
+ EXP_MEDIUM_SLOW(98),
+ EXP_MEDIUM_SLOW(99),
+ EXP_MEDIUM_SLOW(100),
+ },
+ { // Fast
+ 0, // 0
+ 1, // 1
+ EXP_FAST(2),
+ EXP_FAST(3),
+ EXP_FAST(4),
+ EXP_FAST(5),
+ EXP_FAST(6),
+ EXP_FAST(7),
+ EXP_FAST(8),
+ EXP_FAST(9),
+ EXP_FAST(10),
+ EXP_FAST(11),
+ EXP_FAST(12),
+ EXP_FAST(13),
+ EXP_FAST(14),
+ EXP_FAST(15),
+ EXP_FAST(16),
+ EXP_FAST(17),
+ EXP_FAST(18),
+ EXP_FAST(19),
+ EXP_FAST(20),
+ EXP_FAST(21),
+ EXP_FAST(22),
+ EXP_FAST(23),
+ EXP_FAST(24),
+ EXP_FAST(25),
+ EXP_FAST(26),
+ EXP_FAST(27),
+ EXP_FAST(28),
+ EXP_FAST(29),
+ EXP_FAST(30),
+ EXP_FAST(31),
+ EXP_FAST(32),
+ EXP_FAST(33),
+ EXP_FAST(34),
+ EXP_FAST(35),
+ EXP_FAST(36),
+ EXP_FAST(37),
+ EXP_FAST(38),
+ EXP_FAST(39),
+ EXP_FAST(40),
+ EXP_FAST(41),
+ EXP_FAST(42),
+ EXP_FAST(43),
+ EXP_FAST(44),
+ EXP_FAST(45),
+ EXP_FAST(46),
+ EXP_FAST(47),
+ EXP_FAST(48),
+ EXP_FAST(49),
+ EXP_FAST(50),
+ EXP_FAST(51),
+ EXP_FAST(52),
+ EXP_FAST(53),
+ EXP_FAST(54),
+ EXP_FAST(55),
+ EXP_FAST(56),
+ EXP_FAST(57),
+ EXP_FAST(58),
+ EXP_FAST(59),
+ EXP_FAST(60),
+ EXP_FAST(61),
+ EXP_FAST(62),
+ EXP_FAST(63),
+ EXP_FAST(64),
+ EXP_FAST(65),
+ EXP_FAST(66),
+ EXP_FAST(67),
+ EXP_FAST(68),
+ EXP_FAST(69),
+ EXP_FAST(70),
+ EXP_FAST(71),
+ EXP_FAST(72),
+ EXP_FAST(73),
+ EXP_FAST(74),
+ EXP_FAST(75),
+ EXP_FAST(76),
+ EXP_FAST(77),
+ EXP_FAST(78),
+ EXP_FAST(79),
+ EXP_FAST(80),
+ EXP_FAST(81),
+ EXP_FAST(82),
+ EXP_FAST(83),
+ EXP_FAST(84),
+ EXP_FAST(85),
+ EXP_FAST(86),
+ EXP_FAST(87),
+ EXP_FAST(88),
+ EXP_FAST(89),
+ EXP_FAST(90),
+ EXP_FAST(91),
+ EXP_FAST(92),
+ EXP_FAST(93),
+ EXP_FAST(94),
+ EXP_FAST(95),
+ EXP_FAST(96),
+ EXP_FAST(97),
+ EXP_FAST(98),
+ EXP_FAST(99),
+ EXP_FAST(100),
+ },
+ { // Slow
+ 0, // 0
+ 1, // 1
+ EXP_SLOW(2),
+ EXP_SLOW(3),
+ EXP_SLOW(4),
+ EXP_SLOW(5),
+ EXP_SLOW(6),
+ EXP_SLOW(7),
+ EXP_SLOW(8),
+ EXP_SLOW(9),
+ EXP_SLOW(10),
+ EXP_SLOW(11),
+ EXP_SLOW(12),
+ EXP_SLOW(13),
+ EXP_SLOW(14),
+ EXP_SLOW(15),
+ EXP_SLOW(16),
+ EXP_SLOW(17),
+ EXP_SLOW(18),
+ EXP_SLOW(19),
+ EXP_SLOW(20),
+ EXP_SLOW(21),
+ EXP_SLOW(22),
+ EXP_SLOW(23),
+ EXP_SLOW(24),
+ EXP_SLOW(25),
+ EXP_SLOW(26),
+ EXP_SLOW(27),
+ EXP_SLOW(28),
+ EXP_SLOW(29),
+ EXP_SLOW(30),
+ EXP_SLOW(31),
+ EXP_SLOW(32),
+ EXP_SLOW(33),
+ EXP_SLOW(34),
+ EXP_SLOW(35),
+ EXP_SLOW(36),
+ EXP_SLOW(37),
+ EXP_SLOW(38),
+ EXP_SLOW(39),
+ EXP_SLOW(40),
+ EXP_SLOW(41),
+ EXP_SLOW(42),
+ EXP_SLOW(43),
+ EXP_SLOW(44),
+ EXP_SLOW(45),
+ EXP_SLOW(46),
+ EXP_SLOW(47),
+ EXP_SLOW(48),
+ EXP_SLOW(49),
+ EXP_SLOW(50),
+ EXP_SLOW(51),
+ EXP_SLOW(52),
+ EXP_SLOW(53),
+ EXP_SLOW(54),
+ EXP_SLOW(55),
+ EXP_SLOW(56),
+ EXP_SLOW(57),
+ EXP_SLOW(58),
+ EXP_SLOW(59),
+ EXP_SLOW(60),
+ EXP_SLOW(61),
+ EXP_SLOW(62),
+ EXP_SLOW(63),
+ EXP_SLOW(64),
+ EXP_SLOW(65),
+ EXP_SLOW(66),
+ EXP_SLOW(67),
+ EXP_SLOW(68),
+ EXP_SLOW(69),
+ EXP_SLOW(70),
+ EXP_SLOW(71),
+ EXP_SLOW(72),
+ EXP_SLOW(73),
+ EXP_SLOW(74),
+ EXP_SLOW(75),
+ EXP_SLOW(76),
+ EXP_SLOW(77),
+ EXP_SLOW(78),
+ EXP_SLOW(79),
+ EXP_SLOW(80),
+ EXP_SLOW(81),
+ EXP_SLOW(82),
+ EXP_SLOW(83),
+ EXP_SLOW(84),
+ EXP_SLOW(85),
+ EXP_SLOW(86),
+ EXP_SLOW(87),
+ EXP_SLOW(88),
+ EXP_SLOW(89),
+ EXP_SLOW(90),
+ EXP_SLOW(91),
+ EXP_SLOW(92),
+ EXP_SLOW(93),
+ EXP_SLOW(94),
+ EXP_SLOW(95),
+ EXP_SLOW(96),
+ EXP_SLOW(97),
+ EXP_SLOW(98),
+ EXP_SLOW(99),
+ EXP_SLOW(100),
+ },
+ { // Medium Fast copy 2 (unused? to-do: investigate)
+ 0, // 0
+ 1, // 1
+ EXP_MEDIUM_FAST(2),
+ EXP_MEDIUM_FAST(3),
+ EXP_MEDIUM_FAST(4),
+ EXP_MEDIUM_FAST(5),
+ EXP_MEDIUM_FAST(6),
+ EXP_MEDIUM_FAST(7),
+ EXP_MEDIUM_FAST(8),
+ EXP_MEDIUM_FAST(9),
+ EXP_MEDIUM_FAST(10),
+ EXP_MEDIUM_FAST(11),
+ EXP_MEDIUM_FAST(12),
+ EXP_MEDIUM_FAST(13),
+ EXP_MEDIUM_FAST(14),
+ EXP_MEDIUM_FAST(15),
+ EXP_MEDIUM_FAST(16),
+ EXP_MEDIUM_FAST(17),
+ EXP_MEDIUM_FAST(18),
+ EXP_MEDIUM_FAST(19),
+ EXP_MEDIUM_FAST(20),
+ EXP_MEDIUM_FAST(21),
+ EXP_MEDIUM_FAST(22),
+ EXP_MEDIUM_FAST(23),
+ EXP_MEDIUM_FAST(24),
+ EXP_MEDIUM_FAST(25),
+ EXP_MEDIUM_FAST(26),
+ EXP_MEDIUM_FAST(27),
+ EXP_MEDIUM_FAST(28),
+ EXP_MEDIUM_FAST(29),
+ EXP_MEDIUM_FAST(30),
+ EXP_MEDIUM_FAST(31),
+ EXP_MEDIUM_FAST(32),
+ EXP_MEDIUM_FAST(33),
+ EXP_MEDIUM_FAST(34),
+ EXP_MEDIUM_FAST(35),
+ EXP_MEDIUM_FAST(36),
+ EXP_MEDIUM_FAST(37),
+ EXP_MEDIUM_FAST(38),
+ EXP_MEDIUM_FAST(39),
+ EXP_MEDIUM_FAST(40),
+ EXP_MEDIUM_FAST(41),
+ EXP_MEDIUM_FAST(42),
+ EXP_MEDIUM_FAST(43),
+ EXP_MEDIUM_FAST(44),
+ EXP_MEDIUM_FAST(45),
+ EXP_MEDIUM_FAST(46),
+ EXP_MEDIUM_FAST(47),
+ EXP_MEDIUM_FAST(48),
+ EXP_MEDIUM_FAST(49),
+ EXP_MEDIUM_FAST(50),
+ EXP_MEDIUM_FAST(51),
+ EXP_MEDIUM_FAST(52),
+ EXP_MEDIUM_FAST(53),
+ EXP_MEDIUM_FAST(54),
+ EXP_MEDIUM_FAST(55),
+ EXP_MEDIUM_FAST(56),
+ EXP_MEDIUM_FAST(57),
+ EXP_MEDIUM_FAST(58),
+ EXP_MEDIUM_FAST(59),
+ EXP_MEDIUM_FAST(60),
+ EXP_MEDIUM_FAST(61),
+ EXP_MEDIUM_FAST(62),
+ EXP_MEDIUM_FAST(63),
+ EXP_MEDIUM_FAST(64),
+ EXP_MEDIUM_FAST(65),
+ EXP_MEDIUM_FAST(66),
+ EXP_MEDIUM_FAST(67),
+ EXP_MEDIUM_FAST(68),
+ EXP_MEDIUM_FAST(69),
+ EXP_MEDIUM_FAST(70),
+ EXP_MEDIUM_FAST(71),
+ EXP_MEDIUM_FAST(72),
+ EXP_MEDIUM_FAST(73),
+ EXP_MEDIUM_FAST(74),
+ EXP_MEDIUM_FAST(75),
+ EXP_MEDIUM_FAST(76),
+ EXP_MEDIUM_FAST(77),
+ EXP_MEDIUM_FAST(78),
+ EXP_MEDIUM_FAST(79),
+ EXP_MEDIUM_FAST(80),
+ EXP_MEDIUM_FAST(81),
+ EXP_MEDIUM_FAST(82),
+ EXP_MEDIUM_FAST(83),
+ EXP_MEDIUM_FAST(84),
+ EXP_MEDIUM_FAST(85),
+ EXP_MEDIUM_FAST(86),
+ EXP_MEDIUM_FAST(87),
+ EXP_MEDIUM_FAST(88),
+ EXP_MEDIUM_FAST(89),
+ EXP_MEDIUM_FAST(90),
+ EXP_MEDIUM_FAST(91),
+ EXP_MEDIUM_FAST(92),
+ EXP_MEDIUM_FAST(93),
+ EXP_MEDIUM_FAST(94),
+ EXP_MEDIUM_FAST(95),
+ EXP_MEDIUM_FAST(96),
+ EXP_MEDIUM_FAST(97),
+ EXP_MEDIUM_FAST(98),
+ EXP_MEDIUM_FAST(99),
+ EXP_MEDIUM_FAST(100),
+ },
+ { // Medium Fast copy 3 (unused? to-do: investigate)
+ 0, // 0
+ 1, // 1
+ EXP_MEDIUM_FAST(2),
+ EXP_MEDIUM_FAST(3),
+ EXP_MEDIUM_FAST(4),
+ EXP_MEDIUM_FAST(5),
+ EXP_MEDIUM_FAST(6),
+ EXP_MEDIUM_FAST(7),
+ EXP_MEDIUM_FAST(8),
+ EXP_MEDIUM_FAST(9),
+ EXP_MEDIUM_FAST(10),
+ EXP_MEDIUM_FAST(11),
+ EXP_MEDIUM_FAST(12),
+ EXP_MEDIUM_FAST(13),
+ EXP_MEDIUM_FAST(14),
+ EXP_MEDIUM_FAST(15),
+ EXP_MEDIUM_FAST(16),
+ EXP_MEDIUM_FAST(17),
+ EXP_MEDIUM_FAST(18),
+ EXP_MEDIUM_FAST(19),
+ EXP_MEDIUM_FAST(20),
+ EXP_MEDIUM_FAST(21),
+ EXP_MEDIUM_FAST(22),
+ EXP_MEDIUM_FAST(23),
+ EXP_MEDIUM_FAST(24),
+ EXP_MEDIUM_FAST(25),
+ EXP_MEDIUM_FAST(26),
+ EXP_MEDIUM_FAST(27),
+ EXP_MEDIUM_FAST(28),
+ EXP_MEDIUM_FAST(29),
+ EXP_MEDIUM_FAST(30),
+ EXP_MEDIUM_FAST(31),
+ EXP_MEDIUM_FAST(32),
+ EXP_MEDIUM_FAST(33),
+ EXP_MEDIUM_FAST(34),
+ EXP_MEDIUM_FAST(35),
+ EXP_MEDIUM_FAST(36),
+ EXP_MEDIUM_FAST(37),
+ EXP_MEDIUM_FAST(38),
+ EXP_MEDIUM_FAST(39),
+ EXP_MEDIUM_FAST(40),
+ EXP_MEDIUM_FAST(41),
+ EXP_MEDIUM_FAST(42),
+ EXP_MEDIUM_FAST(43),
+ EXP_MEDIUM_FAST(44),
+ EXP_MEDIUM_FAST(45),
+ EXP_MEDIUM_FAST(46),
+ EXP_MEDIUM_FAST(47),
+ EXP_MEDIUM_FAST(48),
+ EXP_MEDIUM_FAST(49),
+ EXP_MEDIUM_FAST(50),
+ EXP_MEDIUM_FAST(51),
+ EXP_MEDIUM_FAST(52),
+ EXP_MEDIUM_FAST(53),
+ EXP_MEDIUM_FAST(54),
+ EXP_MEDIUM_FAST(55),
+ EXP_MEDIUM_FAST(56),
+ EXP_MEDIUM_FAST(57),
+ EXP_MEDIUM_FAST(58),
+ EXP_MEDIUM_FAST(59),
+ EXP_MEDIUM_FAST(60),
+ EXP_MEDIUM_FAST(61),
+ EXP_MEDIUM_FAST(62),
+ EXP_MEDIUM_FAST(63),
+ EXP_MEDIUM_FAST(64),
+ EXP_MEDIUM_FAST(65),
+ EXP_MEDIUM_FAST(66),
+ EXP_MEDIUM_FAST(67),
+ EXP_MEDIUM_FAST(68),
+ EXP_MEDIUM_FAST(69),
+ EXP_MEDIUM_FAST(70),
+ EXP_MEDIUM_FAST(71),
+ EXP_MEDIUM_FAST(72),
+ EXP_MEDIUM_FAST(73),
+ EXP_MEDIUM_FAST(74),
+ EXP_MEDIUM_FAST(75),
+ EXP_MEDIUM_FAST(76),
+ EXP_MEDIUM_FAST(77),
+ EXP_MEDIUM_FAST(78),
+ EXP_MEDIUM_FAST(79),
+ EXP_MEDIUM_FAST(80),
+ EXP_MEDIUM_FAST(81),
+ EXP_MEDIUM_FAST(82),
+ EXP_MEDIUM_FAST(83),
+ EXP_MEDIUM_FAST(84),
+ EXP_MEDIUM_FAST(85),
+ EXP_MEDIUM_FAST(86),
+ EXP_MEDIUM_FAST(87),
+ EXP_MEDIUM_FAST(88),
+ EXP_MEDIUM_FAST(89),
+ EXP_MEDIUM_FAST(90),
+ EXP_MEDIUM_FAST(91),
+ EXP_MEDIUM_FAST(92),
+ EXP_MEDIUM_FAST(93),
+ EXP_MEDIUM_FAST(94),
+ EXP_MEDIUM_FAST(95),
+ EXP_MEDIUM_FAST(96),
+ EXP_MEDIUM_FAST(97),
+ EXP_MEDIUM_FAST(98),
+ EXP_MEDIUM_FAST(99),
+ EXP_MEDIUM_FAST(100),
+ }
+};
diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h
new file mode 100644
index 000000000..31a78a748
--- /dev/null
+++ b/src/data/pokemon/item_effects.h
@@ -0,0 +1,420 @@
+static const u8 sItemEffect_Potion[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 20,
+};
+
+static const u8 sItemEffect_Antidote[6] = {
+ [3] = ITEM3_POISON,
+};
+
+static const u8 sItemEffect_BurnHeal[6] = {
+ [3] = ITEM3_BURN,
+};
+
+static const u8 sItemEffect_IceHeal[6] = {
+ [3] = ITEM3_FREEZE,
+};
+
+static const u8 sItemEffect_Awakening[6] = {
+ [3] = ITEM3_SLEEP,
+};
+
+static const u8 sItemEffect_ParalyzeHeal[6] = {
+ [3] = ITEM3_PARALYSIS,
+};
+
+static const u8 sItemEffect_FullRestore[7] = {
+ [3] = ITEM3_STATUS_ALL,
+ [4] = ITEM4_HEAL_HP,
+ [6] = -1,
+};
+
+static const u8 sItemEffect_MaxPotion[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = -1,
+};
+
+static const u8 sItemEffect_HyperPotion[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 200,
+};
+
+static const u8 sItemEffect_SuperPotion[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 50,
+};
+
+static const u8 sItemEffect_FullHeal[6] = {
+ [3] = ITEM3_STATUS_ALL,
+};
+
+static const u8 sItemEffect_Revive[7] = {
+ [4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
+ [6] = -2,
+};
+
+static const u8 sItemEffect_MaxRevive[7] = {
+ [4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
+ [6] = -1,
+};
+
+static const u8 sItemEffect_FreshWater[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 50,
+};
+
+static const u8 sItemEffect_SodaPop[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 60,
+};
+
+static const u8 sItemEffect_Lemonade[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 80,
+};
+
+static const u8 sItemEffect_MoomooMilk[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 100,
+};
+
+static const u8 sItemEffect_EnergyPowder[10] = {
+ [4] = ITEM4_HEAL_HP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = 50,
+ [7] = -5,
+ [8] = -5,
+ [9] = -10,
+};
+
+static const u8 sItemEffect_EnergyRoot[10] = {
+ [4] = ITEM4_HEAL_HP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = 200,
+ [7] = -10,
+ [8] = -10,
+ [9] = -15,
+};
+
+static const u8 sItemEffect_HealPowder[9] = {
+ [3] = ITEM3_STATUS_ALL,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = -5,
+ [7] = -5,
+ [8] = -10,
+};
+
+static const u8 sItemEffect_RevivalHerb[10] = {
+ [4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = -1,
+ [7] = -15,
+ [8] = -15,
+ [9] = -20,
+};
+
+static const u8 sItemEffect_Ether[7] = {
+ [4] = ITEM4_HEAL_PP_ONE | ITEM4_HEAL_PP_ALL,
+ [6] = 10,
+};
+
+static const u8 sItemEffect_MaxEther[7] = {
+ [4] = ITEM4_HEAL_PP_ONE | ITEM4_HEAL_PP_ALL,
+ [6] = 0x7F,
+};
+
+static const u8 sItemEffect_Elixir[7] = {
+ [4] = ITEM4_HEAL_PP_ALL,
+ [6] = 10,
+};
+
+static const u8 sItemEffect_MaxElixir[7] = {
+ [4] = ITEM4_HEAL_PP_ALL,
+ [6] = 0x7F,
+};
+
+static const u8 sItemEffect_LavaCookie[6] = {
+ [3] = ITEM3_STATUS_ALL,
+};
+
+static const u8 sItemEffect_BlueFlute[6] = {
+ [3] = ITEM3_SLEEP,
+};
+
+static const u8 sItemEffect_YellowFlute[6] = {
+ [3] = ITEM3_CONFUSION,
+};
+
+static const u8 sItemEffect_RedFlute[6] = {
+ [0] = ITEM0_INFATUATION,
+};
+
+static const u8 sItemEffect_BerryJuice[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 20,
+};
+
+static const u8 sItemEffect_SacredAsh[7] = {
+ [0] = ITEM0_SACRED_ASH,
+ [4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
+ [6] = -1,
+};
+
+static const u8 sItemEffect_HPUp[10] = {
+ [4] = ITEM4_EV_HP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = 10,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+static const u8 sItemEffect_Protein[10] = {
+ [4] = ITEM4_EV_ATK,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = 10,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+static const u8 sItemEffect_Iron[10] = {
+ [5] = ITEM5_EV_DEF | ITEM5_FRIENDSHIP_ALL,
+ [6] = 10,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+static const u8 sItemEffect_Carbos[10] = {
+ [5] = ITEM5_EV_SPEED | ITEM5_FRIENDSHIP_ALL,
+ [6] = 10,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+static const u8 sItemEffect_Calcium[10] = {
+ [5] = ITEM5_EV_SPATK | ITEM5_FRIENDSHIP_ALL,
+ [6] = 10,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+static const u8 sItemEffect_RareCandy[10] = {
+ [3] = ITEM3_LEVEL_UP,
+ [4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = 0xFD,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+static const u8 sItemEffect_PPUp[9] = {
+ [4] = ITEM4_PP_UP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = 5,
+ [7] = 3,
+ [8] = 2,
+};
+
+static const u8 sItemEffect_Zinc[10] = {
+ [5] = ITEM5_EV_SPDEF | ITEM5_FRIENDSHIP_ALL,
+ [6] = 10,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+static const u8 sItemEffect_PPMax[9] = {
+ [5] = ITEM5_PP_MAX | ITEM5_FRIENDSHIP_ALL,
+ [6] = 5,
+ [7] = 3,
+ [8] = 2,
+};
+
+static const u8 sItemEffect_GuardSpec[8] = {
+ [3] = ITEM3_MIST,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+static const u8 sItemEffect_DireHit[8] = {
+ [0] = 2 << 4,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+static const u8 sItemEffect_XAttack[8] = {
+ [0] = 1,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+static const u8 sItemEffect_XDefend[8] = {
+ [1] = 1 << 4,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+static const u8 sItemEffect_XSpeed[8] = {
+ [1] = 1,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+static const u8 sItemEffect_XAccuracy[8] = {
+ [2] = 1 << 4,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+static const u8 sItemEffect_XSpecial[8] = {
+ [2] = 1,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+static const u8 sItemEffect_SunStone[6] = {
+ [4] = ITEM4_EVO_STONE,
+};
+
+static const u8 sItemEffect_MoonStone[6] = {
+ [4] = ITEM4_EVO_STONE,
+};
+
+static const u8 sItemEffect_FireStone[6] = {
+ [4] = ITEM4_EVO_STONE,
+};
+
+static const u8 sItemEffect_ThunderStone[6] = {
+ [4] = ITEM4_EVO_STONE,
+};
+
+static const u8 sItemEffect_WaterStone[6] = {
+ [4] = ITEM4_EVO_STONE,
+};
+
+static const u8 sItemEffect_LeafStone[6] = {
+ [4] = ITEM4_EVO_STONE,
+};
+
+static const u8 sItemEffect_CheriBerry[6] = {
+ [3] = ITEM3_PARALYSIS,
+};
+
+static const u8 sItemEffect_ChestoBerry[6] = {
+ [3] = ITEM3_SLEEP,
+};
+
+static const u8 sItemEffect_PechaBerry[6] = {
+ [3] = ITEM3_POISON,
+};
+
+static const u8 sItemEffect_RawstBerry[6] = {
+ [3] = ITEM3_BURN,
+};
+
+static const u8 sItemEffect_AspearBerry[6] = {
+ [3] = ITEM3_FREEZE,
+};
+
+static const u8 sItemEffect_LeppaBerry[7] = {
+ [4] = ITEM4_HEAL_PP_ONE | ITEM4_HEAL_PP_ALL,
+ [6] = 10,
+};
+
+static const u8 sItemEffect_OranBerry[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 10,
+};
+
+static const u8 sItemEffect_PersimBerry[6] = {
+ [3] = ITEM3_CONFUSION,
+};
+
+static const u8 sItemEffect_LumBerry[6] = {
+ [3] = ITEM3_STATUS_ALL,
+};
+
+static const u8 sItemEffect_SitrusBerry[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 30,
+};
+
+const u8 *const gItemEffectTable[] =
+{
+ [ITEM_POTION - ITEM_POTION] = sItemEffect_Potion,
+ [ITEM_ANTIDOTE - ITEM_POTION] = sItemEffect_Antidote,
+ [ITEM_BURN_HEAL - ITEM_POTION] = sItemEffect_BurnHeal,
+ [ITEM_ICE_HEAL - ITEM_POTION] = sItemEffect_IceHeal,
+ [ITEM_AWAKENING - ITEM_POTION] = sItemEffect_Awakening,
+ [ITEM_PARALYZE_HEAL - ITEM_POTION] = sItemEffect_ParalyzeHeal,
+ [ITEM_FULL_RESTORE - ITEM_POTION] = sItemEffect_FullRestore,
+ [ITEM_MAX_POTION - ITEM_POTION] = sItemEffect_MaxPotion,
+ [ITEM_HYPER_POTION - ITEM_POTION] = sItemEffect_HyperPotion,
+ [ITEM_SUPER_POTION - ITEM_POTION] = sItemEffect_SuperPotion,
+ [ITEM_FULL_HEAL - ITEM_POTION] = sItemEffect_FullHeal,
+ [ITEM_REVIVE - ITEM_POTION] = sItemEffect_Revive,
+ [ITEM_MAX_REVIVE - ITEM_POTION] = sItemEffect_MaxRevive,
+ [ITEM_FRESH_WATER - ITEM_POTION] = sItemEffect_FreshWater,
+ [ITEM_SODA_POP - ITEM_POTION] = sItemEffect_SodaPop,
+ [ITEM_LEMONADE - ITEM_POTION] = sItemEffect_Lemonade,
+ [ITEM_MOOMOO_MILK - ITEM_POTION] = sItemEffect_MoomooMilk,
+ [ITEM_ENERGY_POWDER - ITEM_POTION] = sItemEffect_EnergyPowder,
+ [ITEM_ENERGY_ROOT - ITEM_POTION] = sItemEffect_EnergyRoot,
+ [ITEM_HEAL_POWDER - ITEM_POTION] = sItemEffect_HealPowder,
+ [ITEM_REVIVAL_HERB - ITEM_POTION] = sItemEffect_RevivalHerb,
+ [ITEM_ETHER - ITEM_POTION] = sItemEffect_Ether,
+ [ITEM_MAX_ETHER - ITEM_POTION] = sItemEffect_MaxEther,
+ [ITEM_ELIXIR - ITEM_POTION] = sItemEffect_Elixir,
+ [ITEM_MAX_ELIXIR - ITEM_POTION] = sItemEffect_MaxElixir,
+ [ITEM_LAVA_COOKIE - ITEM_POTION] = sItemEffect_LavaCookie,
+ [ITEM_BLUE_FLUTE - ITEM_POTION] = sItemEffect_BlueFlute,
+ [ITEM_YELLOW_FLUTE - ITEM_POTION] = sItemEffect_YellowFlute,
+ [ITEM_RED_FLUTE - ITEM_POTION] = sItemEffect_RedFlute,
+ [ITEM_BERRY_JUICE - ITEM_POTION] = sItemEffect_BerryJuice,
+ [ITEM_SACRED_ASH - ITEM_POTION] = sItemEffect_SacredAsh,
+ [ITEM_HP_UP - ITEM_POTION] = sItemEffect_HPUp,
+ [ITEM_PROTEIN - ITEM_POTION] = sItemEffect_Protein,
+ [ITEM_IRON - ITEM_POTION] = sItemEffect_Iron,
+ [ITEM_CARBOS - ITEM_POTION] = sItemEffect_Carbos,
+ [ITEM_CALCIUM - ITEM_POTION] = sItemEffect_Calcium,
+ [ITEM_RARE_CANDY - ITEM_POTION] = sItemEffect_RareCandy,
+ [ITEM_PP_UP - ITEM_POTION] = sItemEffect_PPUp,
+ [ITEM_ZINC - ITEM_POTION] = sItemEffect_Zinc,
+ [ITEM_PP_MAX - ITEM_POTION] = sItemEffect_PPMax,
+ [ITEM_GUARD_SPEC - ITEM_POTION] = sItemEffect_GuardSpec,
+ [ITEM_DIRE_HIT - ITEM_POTION] = sItemEffect_DireHit,
+ [ITEM_X_ATTACK - ITEM_POTION] = sItemEffect_XAttack,
+ [ITEM_X_DEFEND - ITEM_POTION] = sItemEffect_XDefend,
+ [ITEM_X_SPEED - ITEM_POTION] = sItemEffect_XSpeed,
+ [ITEM_X_ACCURACY - ITEM_POTION] = sItemEffect_XAccuracy,
+ [ITEM_X_SPECIAL - ITEM_POTION] = sItemEffect_XSpecial,
+ [ITEM_SUN_STONE - ITEM_POTION] = sItemEffect_SunStone,
+ [ITEM_MOON_STONE - ITEM_POTION] = sItemEffect_MoonStone,
+ [ITEM_FIRE_STONE - ITEM_POTION] = sItemEffect_FireStone,
+ [ITEM_THUNDER_STONE - ITEM_POTION] = sItemEffect_ThunderStone,
+ [ITEM_WATER_STONE - ITEM_POTION] = sItemEffect_WaterStone,
+ [ITEM_LEAF_STONE - ITEM_POTION] = sItemEffect_LeafStone,
+ [ITEM_CHERI_BERRY - ITEM_POTION] = sItemEffect_CheriBerry,
+ [ITEM_CHESTO_BERRY - ITEM_POTION] = sItemEffect_ChestoBerry,
+ [ITEM_PECHA_BERRY - ITEM_POTION] = sItemEffect_PechaBerry,
+ [ITEM_RAWST_BERRY - ITEM_POTION] = sItemEffect_RawstBerry,
+ [ITEM_ASPEAR_BERRY - ITEM_POTION] = sItemEffect_AspearBerry,
+ [ITEM_LEPPA_BERRY - ITEM_POTION] = sItemEffect_LeppaBerry,
+ [ITEM_ORAN_BERRY - ITEM_POTION] = sItemEffect_OranBerry,
+ [ITEM_PERSIM_BERRY - ITEM_POTION] = sItemEffect_PersimBerry,
+ [ITEM_LUM_BERRY - ITEM_POTION] = sItemEffect_LumBerry,
+ [ITEM_SITRUS_BERRY - ITEM_POTION] = sItemEffect_SitrusBerry,
+ [LAST_BERRY_INDEX - ITEM_POTION] = NULL,
+};
diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h
new file mode 100644
index 000000000..661458ce3
--- /dev/null
+++ b/src/data/pokemon/level_up_learnset_pointers.h
@@ -0,0 +1,415 @@
+const u16 *const gLevelUpLearnsets[NUM_SPECIES] =
+{
+ [SPECIES_NONE] = sBulbasaurLevelUpLearnset,
+ [SPECIES_BULBASAUR] = sBulbasaurLevelUpLearnset,
+ [SPECIES_IVYSAUR] = sIvysaurLevelUpLearnset,
+ [SPECIES_VENUSAUR] = sVenusaurLevelUpLearnset,
+ [SPECIES_CHARMANDER] = sCharmanderLevelUpLearnset,
+ [SPECIES_CHARMELEON] = sCharmeleonLevelUpLearnset,
+ [SPECIES_CHARIZARD] = sCharizardLevelUpLearnset,
+ [SPECIES_SQUIRTLE] = sSquirtleLevelUpLearnset,
+ [SPECIES_WARTORTLE] = sWartortleLevelUpLearnset,
+ [SPECIES_BLASTOISE] = sBlastoiseLevelUpLearnset,
+ [SPECIES_CATERPIE] = sCaterpieLevelUpLearnset,
+ [SPECIES_METAPOD] = sMetapodLevelUpLearnset,
+ [SPECIES_BUTTERFREE] = sButterfreeLevelUpLearnset,
+ [SPECIES_WEEDLE] = sWeedleLevelUpLearnset,
+ [SPECIES_KAKUNA] = sKakunaLevelUpLearnset,
+ [SPECIES_BEEDRILL] = sBeedrillLevelUpLearnset,
+ [SPECIES_PIDGEY] = sPidgeyLevelUpLearnset,
+ [SPECIES_PIDGEOTTO] = sPidgeottoLevelUpLearnset,
+ [SPECIES_PIDGEOT] = sPidgeotLevelUpLearnset,
+ [SPECIES_RATTATA] = sRattataLevelUpLearnset,
+ [SPECIES_RATICATE] = sRaticateLevelUpLearnset,
+ [SPECIES_SPEAROW] = sSpearowLevelUpLearnset,
+ [SPECIES_FEAROW] = sFearowLevelUpLearnset,
+ [SPECIES_EKANS] = sEkansLevelUpLearnset,
+ [SPECIES_ARBOK] = sArbokLevelUpLearnset,
+ [SPECIES_PIKACHU] = sPikachuLevelUpLearnset,
+ [SPECIES_RAICHU] = sRaichuLevelUpLearnset,
+ [SPECIES_SANDSHREW] = sSandshrewLevelUpLearnset,
+ [SPECIES_SANDSLASH] = sSandslashLevelUpLearnset,
+ [SPECIES_NIDORAN_F] = sNidoranFLevelUpLearnset,
+ [SPECIES_NIDORINA] = sNidorinaLevelUpLearnset,
+ [SPECIES_NIDOQUEEN] = sNidoqueenLevelUpLearnset,
+ [SPECIES_NIDORAN_M] = sNidoranMLevelUpLearnset,
+ [SPECIES_NIDORINO] = sNidorinoLevelUpLearnset,
+ [SPECIES_NIDOKING] = sNidokingLevelUpLearnset,
+ [SPECIES_CLEFAIRY] = sClefairyLevelUpLearnset,
+ [SPECIES_CLEFABLE] = sClefableLevelUpLearnset,
+ [SPECIES_VULPIX] = sVulpixLevelUpLearnset,
+ [SPECIES_NINETALES] = sNinetalesLevelUpLearnset,
+ [SPECIES_JIGGLYPUFF] = sJigglypuffLevelUpLearnset,
+ [SPECIES_WIGGLYTUFF] = sWigglytuffLevelUpLearnset,
+ [SPECIES_ZUBAT] = sZubatLevelUpLearnset,
+ [SPECIES_GOLBAT] = sGolbatLevelUpLearnset,
+ [SPECIES_ODDISH] = sOddishLevelUpLearnset,
+ [SPECIES_GLOOM] = sGloomLevelUpLearnset,
+ [SPECIES_VILEPLUME] = sVileplumeLevelUpLearnset,
+ [SPECIES_PARAS] = sParasLevelUpLearnset,
+ [SPECIES_PARASECT] = sParasectLevelUpLearnset,
+ [SPECIES_VENONAT] = sVenonatLevelUpLearnset,
+ [SPECIES_VENOMOTH] = sVenomothLevelUpLearnset,
+ [SPECIES_DIGLETT] = sDiglettLevelUpLearnset,
+ [SPECIES_DUGTRIO] = sDugtrioLevelUpLearnset,
+ [SPECIES_MEOWTH] = sMeowthLevelUpLearnset,
+ [SPECIES_PERSIAN] = sPersianLevelUpLearnset,
+ [SPECIES_PSYDUCK] = sPsyduckLevelUpLearnset,
+ [SPECIES_GOLDUCK] = sGolduckLevelUpLearnset,
+ [SPECIES_MANKEY] = sMankeyLevelUpLearnset,
+ [SPECIES_PRIMEAPE] = sPrimeapeLevelUpLearnset,
+ [SPECIES_GROWLITHE] = sGrowlitheLevelUpLearnset,
+ [SPECIES_ARCANINE] = sArcanineLevelUpLearnset,
+ [SPECIES_POLIWAG] = sPoliwagLevelUpLearnset,
+ [SPECIES_POLIWHIRL] = sPoliwhirlLevelUpLearnset,
+ [SPECIES_POLIWRATH] = sPoliwrathLevelUpLearnset,
+ [SPECIES_ABRA] = sAbraLevelUpLearnset,
+ [SPECIES_KADABRA] = sKadabraLevelUpLearnset,
+ [SPECIES_ALAKAZAM] = sAlakazamLevelUpLearnset,
+ [SPECIES_MACHOP] = sMachopLevelUpLearnset,
+ [SPECIES_MACHOKE] = sMachokeLevelUpLearnset,
+ [SPECIES_MACHAMP] = sMachampLevelUpLearnset,
+ [SPECIES_BELLSPROUT] = sBellsproutLevelUpLearnset,
+ [SPECIES_WEEPINBELL] = sWeepinbellLevelUpLearnset,
+ [SPECIES_VICTREEBEL] = sVictreebelLevelUpLearnset,
+ [SPECIES_TENTACOOL] = sTentacoolLevelUpLearnset,
+ [SPECIES_TENTACRUEL] = sTentacruelLevelUpLearnset,
+ [SPECIES_GEODUDE] = sGeodudeLevelUpLearnset,
+ [SPECIES_GRAVELER] = sGravelerLevelUpLearnset,
+ [SPECIES_GOLEM] = sGolemLevelUpLearnset,
+ [SPECIES_PONYTA] = sPonytaLevelUpLearnset,
+ [SPECIES_RAPIDASH] = sRapidashLevelUpLearnset,
+ [SPECIES_SLOWPOKE] = sSlowpokeLevelUpLearnset,
+ [SPECIES_SLOWBRO] = sSlowbroLevelUpLearnset,
+ [SPECIES_MAGNEMITE] = sMagnemiteLevelUpLearnset,
+ [SPECIES_MAGNETON] = sMagnetonLevelUpLearnset,
+ [SPECIES_FARFETCHD] = sFarfetchdLevelUpLearnset,
+ [SPECIES_DODUO] = sDoduoLevelUpLearnset,
+ [SPECIES_DODRIO] = sDodrioLevelUpLearnset,
+ [SPECIES_SEEL] = sSeelLevelUpLearnset,
+ [SPECIES_DEWGONG] = sDewgongLevelUpLearnset,
+ [SPECIES_GRIMER] = sGrimerLevelUpLearnset,
+ [SPECIES_MUK] = sMukLevelUpLearnset,
+ [SPECIES_SHELLDER] = sShellderLevelUpLearnset,
+ [SPECIES_CLOYSTER] = sCloysterLevelUpLearnset,
+ [SPECIES_GASTLY] = sGastlyLevelUpLearnset,
+ [SPECIES_HAUNTER] = sHaunterLevelUpLearnset,
+ [SPECIES_GENGAR] = sGengarLevelUpLearnset,
+ [SPECIES_ONIX] = sOnixLevelUpLearnset,
+ [SPECIES_DROWZEE] = sDrowzeeLevelUpLearnset,
+ [SPECIES_HYPNO] = sHypnoLevelUpLearnset,
+ [SPECIES_KRABBY] = sKrabbyLevelUpLearnset,
+ [SPECIES_KINGLER] = sKinglerLevelUpLearnset,
+ [SPECIES_VOLTORB] = sVoltorbLevelUpLearnset,
+ [SPECIES_ELECTRODE] = sElectrodeLevelUpLearnset,
+ [SPECIES_EXEGGCUTE] = sExeggcuteLevelUpLearnset,
+ [SPECIES_EXEGGUTOR] = sExeggutorLevelUpLearnset,
+ [SPECIES_CUBONE] = sCuboneLevelUpLearnset,
+ [SPECIES_MAROWAK] = sMarowakLevelUpLearnset,
+ [SPECIES_HITMONLEE] = sHitmonleeLevelUpLearnset,
+ [SPECIES_HITMONCHAN] = sHitmonchanLevelUpLearnset,
+ [SPECIES_LICKITUNG] = sLickitungLevelUpLearnset,
+ [SPECIES_KOFFING] = sKoffingLevelUpLearnset,
+ [SPECIES_WEEZING] = sWeezingLevelUpLearnset,
+ [SPECIES_RHYHORN] = sRhyhornLevelUpLearnset,
+ [SPECIES_RHYDON] = sRhydonLevelUpLearnset,
+ [SPECIES_CHANSEY] = sChanseyLevelUpLearnset,
+ [SPECIES_TANGELA] = sTangelaLevelUpLearnset,
+ [SPECIES_KANGASKHAN] = sKangaskhanLevelUpLearnset,
+ [SPECIES_HORSEA] = sHorseaLevelUpLearnset,
+ [SPECIES_SEADRA] = sSeadraLevelUpLearnset,
+ [SPECIES_GOLDEEN] = sGoldeenLevelUpLearnset,
+ [SPECIES_SEAKING] = sSeakingLevelUpLearnset,
+ [SPECIES_STARYU] = sStaryuLevelUpLearnset,
+ [SPECIES_STARMIE] = sStarmieLevelUpLearnset,
+ [SPECIES_MR_MIME] = sMrMimeLevelUpLearnset,
+ [SPECIES_SCYTHER] = sScytherLevelUpLearnset,
+ [SPECIES_JYNX] = sJynxLevelUpLearnset,
+ [SPECIES_ELECTABUZZ] = sElectabuzzLevelUpLearnset,
+ [SPECIES_MAGMAR] = sMagmarLevelUpLearnset,
+ [SPECIES_PINSIR] = sPinsirLevelUpLearnset,
+ [SPECIES_TAUROS] = sTaurosLevelUpLearnset,
+ [SPECIES_MAGIKARP] = sMagikarpLevelUpLearnset,
+ [SPECIES_GYARADOS] = sGyaradosLevelUpLearnset,
+ [SPECIES_LAPRAS] = sLaprasLevelUpLearnset,
+ [SPECIES_DITTO] = sDittoLevelUpLearnset,
+ [SPECIES_EEVEE] = sEeveeLevelUpLearnset,
+ [SPECIES_VAPOREON] = sVaporeonLevelUpLearnset,
+ [SPECIES_JOLTEON] = sJolteonLevelUpLearnset,
+ [SPECIES_FLAREON] = sFlareonLevelUpLearnset,
+ [SPECIES_PORYGON] = sPorygonLevelUpLearnset,
+ [SPECIES_OMANYTE] = sOmanyteLevelUpLearnset,
+ [SPECIES_OMASTAR] = sOmastarLevelUpLearnset,
+ [SPECIES_KABUTO] = sKabutoLevelUpLearnset,
+ [SPECIES_KABUTOPS] = sKabutopsLevelUpLearnset,
+ [SPECIES_AERODACTYL] = sAerodactylLevelUpLearnset,
+ [SPECIES_SNORLAX] = sSnorlaxLevelUpLearnset,
+ [SPECIES_ARTICUNO] = sArticunoLevelUpLearnset,
+ [SPECIES_ZAPDOS] = sZapdosLevelUpLearnset,
+ [SPECIES_MOLTRES] = sMoltresLevelUpLearnset,
+ [SPECIES_DRATINI] = sDratiniLevelUpLearnset,
+ [SPECIES_DRAGONAIR] = sDragonairLevelUpLearnset,
+ [SPECIES_DRAGONITE] = sDragoniteLevelUpLearnset,
+ [SPECIES_MEWTWO] = sMewtwoLevelUpLearnset,
+ [SPECIES_MEW] = sMewLevelUpLearnset,
+ [SPECIES_CHIKORITA] = sChikoritaLevelUpLearnset,
+ [SPECIES_BAYLEEF] = sBayleefLevelUpLearnset,
+ [SPECIES_MEGANIUM] = sMeganiumLevelUpLearnset,
+ [SPECIES_CYNDAQUIL] = sCyndaquilLevelUpLearnset,
+ [SPECIES_QUILAVA] = sQuilavaLevelUpLearnset,
+ [SPECIES_TYPHLOSION] = sTyphlosionLevelUpLearnset,
+ [SPECIES_TOTODILE] = sTotodileLevelUpLearnset,
+ [SPECIES_CROCONAW] = sCroconawLevelUpLearnset,
+ [SPECIES_FERALIGATR] = sFeraligatrLevelUpLearnset,
+ [SPECIES_SENTRET] = sSentretLevelUpLearnset,
+ [SPECIES_FURRET] = sFurretLevelUpLearnset,
+ [SPECIES_HOOTHOOT] = sHoothootLevelUpLearnset,
+ [SPECIES_NOCTOWL] = sNoctowlLevelUpLearnset,
+ [SPECIES_LEDYBA] = sLedybaLevelUpLearnset,
+ [SPECIES_LEDIAN] = sLedianLevelUpLearnset,
+ [SPECIES_SPINARAK] = sSpinarakLevelUpLearnset,
+ [SPECIES_ARIADOS] = sAriadosLevelUpLearnset,
+ [SPECIES_CROBAT] = sCrobatLevelUpLearnset,
+ [SPECIES_CHINCHOU] = sChinchouLevelUpLearnset,
+ [SPECIES_LANTURN] = sLanturnLevelUpLearnset,
+ [SPECIES_PICHU] = sPichuLevelUpLearnset,
+ [SPECIES_CLEFFA] = sCleffaLevelUpLearnset,
+ [SPECIES_IGGLYBUFF] = sIgglybuffLevelUpLearnset,
+ [SPECIES_TOGEPI] = sTogepiLevelUpLearnset,
+ [SPECIES_TOGETIC] = sTogeticLevelUpLearnset,
+ [SPECIES_NATU] = sNatuLevelUpLearnset,
+ [SPECIES_XATU] = sXatuLevelUpLearnset,
+ [SPECIES_MAREEP] = sMareepLevelUpLearnset,
+ [SPECIES_FLAAFFY] = sFlaaffyLevelUpLearnset,
+ [SPECIES_AMPHAROS] = sAmpharosLevelUpLearnset,
+ [SPECIES_BELLOSSOM] = sBellossomLevelUpLearnset,
+ [SPECIES_MARILL] = sMarillLevelUpLearnset,
+ [SPECIES_AZUMARILL] = sAzumarillLevelUpLearnset,
+ [SPECIES_SUDOWOODO] = sSudowoodoLevelUpLearnset,
+ [SPECIES_POLITOED] = sPolitoedLevelUpLearnset,
+ [SPECIES_HOPPIP] = sHoppipLevelUpLearnset,
+ [SPECIES_SKIPLOOM] = sSkiploomLevelUpLearnset,
+ [SPECIES_JUMPLUFF] = sJumpluffLevelUpLearnset,
+ [SPECIES_AIPOM] = sAipomLevelUpLearnset,
+ [SPECIES_SUNKERN] = sSunkernLevelUpLearnset,
+ [SPECIES_SUNFLORA] = sSunfloraLevelUpLearnset,
+ [SPECIES_YANMA] = sYanmaLevelUpLearnset,
+ [SPECIES_WOOPER] = sWooperLevelUpLearnset,
+ [SPECIES_QUAGSIRE] = sQuagsireLevelUpLearnset,
+ [SPECIES_ESPEON] = sEspeonLevelUpLearnset,
+ [SPECIES_UMBREON] = sUmbreonLevelUpLearnset,
+ [SPECIES_MURKROW] = sMurkrowLevelUpLearnset,
+ [SPECIES_SLOWKING] = sSlowkingLevelUpLearnset,
+ [SPECIES_MISDREAVUS] = sMisdreavusLevelUpLearnset,
+ [SPECIES_UNOWN] = sUnownLevelUpLearnset,
+ [SPECIES_WOBBUFFET] = sWobbuffetLevelUpLearnset,
+ [SPECIES_GIRAFARIG] = sGirafarigLevelUpLearnset,
+ [SPECIES_PINECO] = sPinecoLevelUpLearnset,
+ [SPECIES_FORRETRESS] = sForretressLevelUpLearnset,
+ [SPECIES_DUNSPARCE] = sDunsparceLevelUpLearnset,
+ [SPECIES_GLIGAR] = sGligarLevelUpLearnset,
+ [SPECIES_STEELIX] = sSteelixLevelUpLearnset,
+ [SPECIES_SNUBBULL] = sSnubbullLevelUpLearnset,
+ [SPECIES_GRANBULL] = sGranbullLevelUpLearnset,
+ [SPECIES_QWILFISH] = sQwilfishLevelUpLearnset,
+ [SPECIES_SCIZOR] = sScizorLevelUpLearnset,
+ [SPECIES_SHUCKLE] = sShuckleLevelUpLearnset,
+ [SPECIES_HERACROSS] = sHeracrossLevelUpLearnset,
+ [SPECIES_SNEASEL] = sSneaselLevelUpLearnset,
+ [SPECIES_TEDDIURSA] = sTeddiursaLevelUpLearnset,
+ [SPECIES_URSARING] = sUrsaringLevelUpLearnset,
+ [SPECIES_SLUGMA] = sSlugmaLevelUpLearnset,
+ [SPECIES_MAGCARGO] = sMagcargoLevelUpLearnset,
+ [SPECIES_SWINUB] = sSwinubLevelUpLearnset,
+ [SPECIES_PILOSWINE] = sPiloswineLevelUpLearnset,
+ [SPECIES_CORSOLA] = sCorsolaLevelUpLearnset,
+ [SPECIES_REMORAID] = sRemoraidLevelUpLearnset,
+ [SPECIES_OCTILLERY] = sOctilleryLevelUpLearnset,
+ [SPECIES_DELIBIRD] = sDelibirdLevelUpLearnset,
+ [SPECIES_MANTINE] = sMantineLevelUpLearnset,
+ [SPECIES_SKARMORY] = sSkarmoryLevelUpLearnset,
+ [SPECIES_HOUNDOUR] = sHoundourLevelUpLearnset,
+ [SPECIES_HOUNDOOM] = sHoundoomLevelUpLearnset,
+ [SPECIES_KINGDRA] = sKingdraLevelUpLearnset,
+ [SPECIES_PHANPY] = sPhanpyLevelUpLearnset,
+ [SPECIES_DONPHAN] = sDonphanLevelUpLearnset,
+ [SPECIES_PORYGON2] = sPorygon2LevelUpLearnset,
+ [SPECIES_STANTLER] = sStantlerLevelUpLearnset,
+ [SPECIES_SMEARGLE] = sSmeargleLevelUpLearnset,
+ [SPECIES_TYROGUE] = sTyrogueLevelUpLearnset,
+ [SPECIES_HITMONTOP] = sHitmontopLevelUpLearnset,
+ [SPECIES_SMOOCHUM] = sSmoochumLevelUpLearnset,
+ [SPECIES_ELEKID] = sElekidLevelUpLearnset,
+ [SPECIES_MAGBY] = sMagbyLevelUpLearnset,
+ [SPECIES_MILTANK] = sMiltankLevelUpLearnset,
+ [SPECIES_BLISSEY] = sBlisseyLevelUpLearnset,
+ [SPECIES_RAIKOU] = sRaikouLevelUpLearnset,
+ [SPECIES_ENTEI] = sEnteiLevelUpLearnset,
+ [SPECIES_SUICUNE] = sSuicuneLevelUpLearnset,
+ [SPECIES_LARVITAR] = sLarvitarLevelUpLearnset,
+ [SPECIES_PUPITAR] = sPupitarLevelUpLearnset,
+ [SPECIES_TYRANITAR] = sTyranitarLevelUpLearnset,
+ [SPECIES_LUGIA] = sLugiaLevelUpLearnset,
+ [SPECIES_HO_OH] = sHoOhLevelUpLearnset,
+ [SPECIES_CELEBI] = sCelebiLevelUpLearnset,
+ [SPECIES_OLD_UNOWN_B] = sSpecies252LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_C] = sSpecies253LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_D] = sSpecies254LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_E] = sSpecies255LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_F] = sSpecies256LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_G] = sSpecies257LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_H] = sSpecies258LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_I] = sSpecies259LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_J] = sSpecies260LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_K] = sSpecies261LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_L] = sSpecies262LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_M] = sSpecies263LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_N] = sSpecies264LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_O] = sSpecies265LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_P] = sSpecies266LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_Q] = sSpecies267LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_R] = sSpecies268LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_S] = sSpecies269LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_T] = sSpecies270LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_U] = sSpecies271LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_V] = sSpecies272LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_W] = sSpecies273LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_X] = sSpecies274LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_Y] = sSpecies275LevelUpLearnset,
+ [SPECIES_OLD_UNOWN_Z] = sSpecies276LevelUpLearnset,
+ [SPECIES_TREECKO] = sTreeckoLevelUpLearnset,
+ [SPECIES_GROVYLE] = sGrovyleLevelUpLearnset,
+ [SPECIES_SCEPTILE] = sSceptileLevelUpLearnset,
+ [SPECIES_TORCHIC] = sTorchicLevelUpLearnset,
+ [SPECIES_COMBUSKEN] = sCombuskenLevelUpLearnset,
+ [SPECIES_BLAZIKEN] = sBlazikenLevelUpLearnset,
+ [SPECIES_MUDKIP] = sMudkipLevelUpLearnset,
+ [SPECIES_MARSHTOMP] = sMarshtompLevelUpLearnset,
+ [SPECIES_SWAMPERT] = sSwampertLevelUpLearnset,
+ [SPECIES_POOCHYENA] = sPoochyenaLevelUpLearnset,
+ [SPECIES_MIGHTYENA] = sMightyenaLevelUpLearnset,
+ [SPECIES_ZIGZAGOON] = sZigzagoonLevelUpLearnset,
+ [SPECIES_LINOONE] = sLinooneLevelUpLearnset,
+ [SPECIES_WURMPLE] = sWurmpleLevelUpLearnset,
+ [SPECIES_SILCOON] = sSilcoonLevelUpLearnset,
+ [SPECIES_BEAUTIFLY] = sBeautiflyLevelUpLearnset,
+ [SPECIES_CASCOON] = sCascoonLevelUpLearnset,
+ [SPECIES_DUSTOX] = sDustoxLevelUpLearnset,
+ [SPECIES_LOTAD] = sLotadLevelUpLearnset,
+ [SPECIES_LOMBRE] = sLombreLevelUpLearnset,
+ [SPECIES_LUDICOLO] = sLudicoloLevelUpLearnset,
+ [SPECIES_SEEDOT] = sSeedotLevelUpLearnset,
+ [SPECIES_NUZLEAF] = sNuzleafLevelUpLearnset,
+ [SPECIES_SHIFTRY] = sShiftryLevelUpLearnset,
+ [SPECIES_NINCADA] = sNincadaLevelUpLearnset,
+ [SPECIES_NINJASK] = sNinjaskLevelUpLearnset,
+ [SPECIES_SHEDINJA] = sShedinjaLevelUpLearnset,
+ [SPECIES_TAILLOW] = sTaillowLevelUpLearnset,
+ [SPECIES_SWELLOW] = sSwellowLevelUpLearnset,
+ [SPECIES_SHROOMISH] = sShroomishLevelUpLearnset,
+ [SPECIES_BRELOOM] = sBreloomLevelUpLearnset,
+ [SPECIES_SPINDA] = sSpindaLevelUpLearnset,
+ [SPECIES_WINGULL] = sWingullLevelUpLearnset,
+ [SPECIES_PELIPPER] = sPelipperLevelUpLearnset,
+ [SPECIES_SURSKIT] = sSurskitLevelUpLearnset,
+ [SPECIES_MASQUERAIN] = sMasquerainLevelUpLearnset,
+ [SPECIES_WAILMER] = sWailmerLevelUpLearnset,
+ [SPECIES_WAILORD] = sWailordLevelUpLearnset,
+ [SPECIES_SKITTY] = sSkittyLevelUpLearnset,
+ [SPECIES_DELCATTY] = sDelcattyLevelUpLearnset,
+ [SPECIES_KECLEON] = sKecleonLevelUpLearnset,
+ [SPECIES_BALTOY] = sBaltoyLevelUpLearnset,
+ [SPECIES_CLAYDOL] = sClaydolLevelUpLearnset,
+ [SPECIES_NOSEPASS] = sNosepassLevelUpLearnset,
+ [SPECIES_TORKOAL] = sTorkoalLevelUpLearnset,
+ [SPECIES_SABLEYE] = sSableyeLevelUpLearnset,
+ [SPECIES_BARBOACH] = sBarboachLevelUpLearnset,
+ [SPECIES_WHISCASH] = sWhiscashLevelUpLearnset,
+ [SPECIES_LUVDISC] = sLuvdiscLevelUpLearnset,
+ [SPECIES_CORPHISH] = sCorphishLevelUpLearnset,
+ [SPECIES_CRAWDAUNT] = sCrawdauntLevelUpLearnset,
+ [SPECIES_FEEBAS] = sFeebasLevelUpLearnset,
+ [SPECIES_MILOTIC] = sMiloticLevelUpLearnset,
+ [SPECIES_CARVANHA] = sCarvanhaLevelUpLearnset,
+ [SPECIES_SHARPEDO] = sSharpedoLevelUpLearnset,
+ [SPECIES_TRAPINCH] = sTrapinchLevelUpLearnset,
+ [SPECIES_VIBRAVA] = sVibravaLevelUpLearnset,
+ [SPECIES_FLYGON] = sFlygonLevelUpLearnset,
+ [SPECIES_MAKUHITA] = sMakuhitaLevelUpLearnset,
+ [SPECIES_HARIYAMA] = sHariyamaLevelUpLearnset,
+ [SPECIES_ELECTRIKE] = sElectrikeLevelUpLearnset,
+ [SPECIES_MANECTRIC] = sManectricLevelUpLearnset,
+ [SPECIES_NUMEL] = sNumelLevelUpLearnset,
+ [SPECIES_CAMERUPT] = sCameruptLevelUpLearnset,
+ [SPECIES_SPHEAL] = sSphealLevelUpLearnset,
+ [SPECIES_SEALEO] = sSealeoLevelUpLearnset,
+ [SPECIES_WALREIN] = sWalreinLevelUpLearnset,
+ [SPECIES_CACNEA] = sCacneaLevelUpLearnset,
+ [SPECIES_CACTURNE] = sCacturneLevelUpLearnset,
+ [SPECIES_SNORUNT] = sSnoruntLevelUpLearnset,
+ [SPECIES_GLALIE] = sGlalieLevelUpLearnset,
+ [SPECIES_LUNATONE] = sLunatoneLevelUpLearnset,
+ [SPECIES_SOLROCK] = sSolrockLevelUpLearnset,
+ [SPECIES_AZURILL] = sAzurillLevelUpLearnset,
+ [SPECIES_SPOINK] = sSpoinkLevelUpLearnset,
+ [SPECIES_GRUMPIG] = sGrumpigLevelUpLearnset,
+ [SPECIES_PLUSLE] = sPlusleLevelUpLearnset,
+ [SPECIES_MINUN] = sMinunLevelUpLearnset,
+ [SPECIES_MAWILE] = sMawileLevelUpLearnset,
+ [SPECIES_MEDITITE] = sMedititeLevelUpLearnset,
+ [SPECIES_MEDICHAM] = sMedichamLevelUpLearnset,
+ [SPECIES_SWABLU] = sSwabluLevelUpLearnset,
+ [SPECIES_ALTARIA] = sAltariaLevelUpLearnset,
+ [SPECIES_WYNAUT] = sWynautLevelUpLearnset,
+ [SPECIES_DUSKULL] = sDuskullLevelUpLearnset,
+ [SPECIES_DUSCLOPS] = sDusclopsLevelUpLearnset,
+ [SPECIES_ROSELIA] = sRoseliaLevelUpLearnset,
+ [SPECIES_SLAKOTH] = sSlakothLevelUpLearnset,
+ [SPECIES_VIGOROTH] = sVigorothLevelUpLearnset,
+ [SPECIES_SLAKING] = sSlakingLevelUpLearnset,
+ [SPECIES_GULPIN] = sGulpinLevelUpLearnset,
+ [SPECIES_SWALOT] = sSwalotLevelUpLearnset,
+ [SPECIES_TROPIUS] = sTropiusLevelUpLearnset,
+ [SPECIES_WHISMUR] = sWhismurLevelUpLearnset,
+ [SPECIES_LOUDRED] = sLoudredLevelUpLearnset,
+ [SPECIES_EXPLOUD] = sExploudLevelUpLearnset,
+ [SPECIES_CLAMPERL] = sClamperlLevelUpLearnset,
+ [SPECIES_HUNTAIL] = sHuntailLevelUpLearnset,
+ [SPECIES_GOREBYSS] = sGorebyssLevelUpLearnset,
+ [SPECIES_ABSOL] = sAbsolLevelUpLearnset,
+ [SPECIES_SHUPPET] = sShuppetLevelUpLearnset,
+ [SPECIES_BANETTE] = sBanetteLevelUpLearnset,
+ [SPECIES_SEVIPER] = sSeviperLevelUpLearnset,
+ [SPECIES_ZANGOOSE] = sZangooseLevelUpLearnset,
+ [SPECIES_RELICANTH] = sRelicanthLevelUpLearnset,
+ [SPECIES_ARON] = sAronLevelUpLearnset,
+ [SPECIES_LAIRON] = sLaironLevelUpLearnset,
+ [SPECIES_AGGRON] = sAggronLevelUpLearnset,
+ [SPECIES_CASTFORM] = sCastformLevelUpLearnset,
+ [SPECIES_VOLBEAT] = sVolbeatLevelUpLearnset,
+ [SPECIES_ILLUMISE] = sIllumiseLevelUpLearnset,
+ [SPECIES_LILEEP] = sLileepLevelUpLearnset,
+ [SPECIES_CRADILY] = sCradilyLevelUpLearnset,
+ [SPECIES_ANORITH] = sAnorithLevelUpLearnset,
+ [SPECIES_ARMALDO] = sArmaldoLevelUpLearnset,
+ [SPECIES_RALTS] = sRaltsLevelUpLearnset,
+ [SPECIES_KIRLIA] = sKirliaLevelUpLearnset,
+ [SPECIES_GARDEVOIR] = sGardevoirLevelUpLearnset,
+ [SPECIES_BAGON] = sBagonLevelUpLearnset,
+ [SPECIES_SHELGON] = sShelgonLevelUpLearnset,
+ [SPECIES_SALAMENCE] = sSalamenceLevelUpLearnset,
+ [SPECIES_BELDUM] = sBeldumLevelUpLearnset,
+ [SPECIES_METANG] = sMetangLevelUpLearnset,
+ [SPECIES_METAGROSS] = sMetagrossLevelUpLearnset,
+ [SPECIES_REGIROCK] = sRegirockLevelUpLearnset,
+ [SPECIES_REGICE] = sRegiceLevelUpLearnset,
+ [SPECIES_REGISTEEL] = sRegisteelLevelUpLearnset,
+ [SPECIES_KYOGRE] = sKyogreLevelUpLearnset,
+ [SPECIES_GROUDON] = sGroudonLevelUpLearnset,
+ [SPECIES_RAYQUAZA] = sRayquazaLevelUpLearnset,
+ [SPECIES_LATIAS] = sLatiasLevelUpLearnset,
+ [SPECIES_LATIOS] = sLatiosLevelUpLearnset,
+ [SPECIES_JIRACHI] = sJirachiLevelUpLearnset,
+ [SPECIES_DEOXYS] = sDeoxysLevelUpLearnset,
+ [SPECIES_CHIMECHO] = sChimechoLevelUpLearnset,
+};
diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h
new file mode 100644
index 000000000..c6d2ec475
--- /dev/null
+++ b/src/data/pokemon/level_up_learnsets.h
@@ -0,0 +1,5682 @@
+#define LEVEL_UP_MOVE(lvl, move) ((lvl << 9) | move)
+#define LEVEL_UP_END 0xFFFF
+
+static const u16 sBulbasaurLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(4, MOVE_GROWL),
+ LEVEL_UP_MOVE(7, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(10, MOVE_VINE_WHIP),
+ LEVEL_UP_MOVE(15, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(20, MOVE_RAZOR_LEAF),
+ LEVEL_UP_MOVE(25, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(32, MOVE_GROWTH),
+ LEVEL_UP_MOVE(39, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(46, MOVE_SOLAR_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sIvysaurLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(4, MOVE_GROWL),
+ LEVEL_UP_MOVE(7, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(10, MOVE_VINE_WHIP),
+ LEVEL_UP_MOVE(15, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(22, MOVE_RAZOR_LEAF),
+ LEVEL_UP_MOVE(29, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(38, MOVE_GROWTH),
+ LEVEL_UP_MOVE(47, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(56, MOVE_SOLAR_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sVenusaurLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(1, MOVE_VINE_WHIP),
+ LEVEL_UP_MOVE(4, MOVE_GROWL),
+ LEVEL_UP_MOVE(7, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(10, MOVE_VINE_WHIP),
+ LEVEL_UP_MOVE(15, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(22, MOVE_RAZOR_LEAF),
+ LEVEL_UP_MOVE(29, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(41, MOVE_GROWTH),
+ LEVEL_UP_MOVE(53, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sCharmanderLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(7, MOVE_EMBER),
+ LEVEL_UP_MOVE(13, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(19, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(25, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(31, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(37, MOVE_SLASH),
+ LEVEL_UP_MOVE(43, MOVE_DRAGON_RAGE),
+ LEVEL_UP_MOVE(49, MOVE_FIRE_SPIN),
+ LEVEL_UP_END
+};
+
+static const u16 sCharmeleonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(7, MOVE_EMBER),
+ LEVEL_UP_MOVE(13, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(20, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(27, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(41, MOVE_SLASH),
+ LEVEL_UP_MOVE(48, MOVE_DRAGON_RAGE),
+ LEVEL_UP_MOVE(55, MOVE_FIRE_SPIN),
+ LEVEL_UP_END
+};
+
+static const u16 sCharizardLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HEAT_WAVE),
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(1, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(7, MOVE_EMBER),
+ LEVEL_UP_MOVE(13, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(20, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(27, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(36, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(44, MOVE_SLASH),
+ LEVEL_UP_MOVE(54, MOVE_DRAGON_RAGE),
+ LEVEL_UP_MOVE(64, MOVE_FIRE_SPIN),
+ LEVEL_UP_END
+};
+
+static const u16 sSquirtleLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(4, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(7, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(10, MOVE_WITHDRAW),
+ LEVEL_UP_MOVE(13, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(18, MOVE_BITE),
+ LEVEL_UP_MOVE(23, MOVE_RAPID_SPIN),
+ LEVEL_UP_MOVE(28, MOVE_PROTECT),
+ LEVEL_UP_MOVE(33, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(40, MOVE_SKULL_BASH),
+ LEVEL_UP_MOVE(47, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sWartortleLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(4, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(7, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(10, MOVE_WITHDRAW),
+ LEVEL_UP_MOVE(13, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(19, MOVE_BITE),
+ LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN),
+ LEVEL_UP_MOVE(31, MOVE_PROTECT),
+ LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(45, MOVE_SKULL_BASH),
+ LEVEL_UP_MOVE(53, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sBlastoiseLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(1, MOVE_WITHDRAW),
+ LEVEL_UP_MOVE(4, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(7, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(10, MOVE_WITHDRAW),
+ LEVEL_UP_MOVE(13, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(19, MOVE_BITE),
+ LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN),
+ LEVEL_UP_MOVE(31, MOVE_PROTECT),
+ LEVEL_UP_MOVE(42, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(55, MOVE_SKULL_BASH),
+ LEVEL_UP_MOVE(68, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sCaterpieLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_STRING_SHOT),
+ LEVEL_UP_END
+};
+
+static const u16 sMetapodLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(7, MOVE_HARDEN),
+ LEVEL_UP_END
+};
+
+static const u16 sButterfreeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(10, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(13, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(14, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(18, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(23, MOVE_WHIRLWIND),
+ LEVEL_UP_MOVE(28, MOVE_GUST),
+ LEVEL_UP_MOVE(34, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(40, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(47, MOVE_SILVER_WIND),
+ LEVEL_UP_END
+};
+
+static const u16 sWeedleLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(1, MOVE_STRING_SHOT),
+ LEVEL_UP_END
+};
+
+static const u16 sKakunaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(7, MOVE_HARDEN),
+ LEVEL_UP_END
+};
+
+static const u16 sBeedrillLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(10, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(15, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(20, MOVE_TWINEEDLE),
+ LEVEL_UP_MOVE(25, MOVE_RAGE),
+ LEVEL_UP_MOVE(30, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(35, MOVE_PIN_MISSILE),
+ LEVEL_UP_MOVE(40, MOVE_AGILITY),
+ LEVEL_UP_MOVE(45, MOVE_ENDEAVOR),
+ LEVEL_UP_END
+};
+
+static const u16 sPidgeyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(5, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(9, MOVE_GUST),
+ LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(19, MOVE_WHIRLWIND),
+ LEVEL_UP_MOVE(25, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(31, MOVE_FEATHER_DANCE),
+ LEVEL_UP_MOVE(39, MOVE_AGILITY),
+ LEVEL_UP_MOVE(47, MOVE_MIRROR_MOVE),
+ LEVEL_UP_END
+};
+
+static const u16 sPidgeottoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_GUST),
+ LEVEL_UP_MOVE(5, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(9, MOVE_GUST),
+ LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(20, MOVE_WHIRLWIND),
+ LEVEL_UP_MOVE(27, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(34, MOVE_FEATHER_DANCE),
+ LEVEL_UP_MOVE(43, MOVE_AGILITY),
+ LEVEL_UP_MOVE(52, MOVE_MIRROR_MOVE),
+ LEVEL_UP_END
+};
+
+static const u16 sPidgeotLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_GUST),
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(5, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(9, MOVE_GUST),
+ LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(20, MOVE_WHIRLWIND),
+ LEVEL_UP_MOVE(27, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(34, MOVE_FEATHER_DANCE),
+ LEVEL_UP_MOVE(48, MOVE_AGILITY),
+ LEVEL_UP_MOVE(62, MOVE_MIRROR_MOVE),
+ LEVEL_UP_END
+};
+
+static const u16 sRattataLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(7, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_HYPER_FANG),
+ LEVEL_UP_MOVE(20, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(27, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(34, MOVE_SUPER_FANG),
+ LEVEL_UP_MOVE(41, MOVE_ENDEAVOR),
+ LEVEL_UP_END
+};
+
+static const u16 sRaticateLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(7, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_HYPER_FANG),
+ LEVEL_UP_MOVE(20, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(30, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(40, MOVE_SUPER_FANG),
+ LEVEL_UP_MOVE(50, MOVE_ENDEAVOR),
+ LEVEL_UP_END
+};
+
+static const u16 sSpearowLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(7, MOVE_LEER),
+ LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(19, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(25, MOVE_AERIAL_ACE),
+ LEVEL_UP_MOVE(31, MOVE_MIRROR_MOVE),
+ LEVEL_UP_MOVE(37, MOVE_DRILL_PECK),
+ LEVEL_UP_MOVE(43, MOVE_AGILITY),
+ LEVEL_UP_END
+};
+
+static const u16 sFearowLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(7, MOVE_LEER),
+ LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(26, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(32, MOVE_MIRROR_MOVE),
+ LEVEL_UP_MOVE(40, MOVE_DRILL_PECK),
+ LEVEL_UP_MOVE(47, MOVE_AGILITY),
+ LEVEL_UP_END
+};
+
+static const u16 sEkansLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WRAP),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(8, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(13, MOVE_BITE),
+ LEVEL_UP_MOVE(20, MOVE_GLARE),
+ LEVEL_UP_MOVE(25, MOVE_SCREECH),
+ LEVEL_UP_MOVE(32, MOVE_ACID),
+ LEVEL_UP_MOVE(37, MOVE_STOCKPILE),
+ LEVEL_UP_MOVE(37, MOVE_SWALLOW),
+ LEVEL_UP_MOVE(37, MOVE_SPIT_UP),
+ LEVEL_UP_MOVE(44, MOVE_HAZE),
+ LEVEL_UP_END
+};
+
+static const u16 sArbokLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WRAP),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(8, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(13, MOVE_BITE),
+ LEVEL_UP_MOVE(20, MOVE_GLARE),
+ LEVEL_UP_MOVE(28, MOVE_SCREECH),
+ LEVEL_UP_MOVE(38, MOVE_ACID),
+ LEVEL_UP_MOVE(46, MOVE_STOCKPILE),
+ LEVEL_UP_MOVE(46, MOVE_SWALLOW),
+ LEVEL_UP_MOVE(46, MOVE_SPIT_UP),
+ LEVEL_UP_MOVE(56, MOVE_HAZE),
+ LEVEL_UP_END
+};
+
+static const u16 sPikachuLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(6, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(8, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(15, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(20, MOVE_SLAM),
+ LEVEL_UP_MOVE(26, MOVE_THUNDERBOLT),
+ LEVEL_UP_MOVE(33, MOVE_AGILITY),
+ LEVEL_UP_MOVE(41, MOVE_THUNDER),
+ LEVEL_UP_MOVE(50, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_END
+};
+
+static const u16 sRaichuLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_THUNDERBOLT),
+ LEVEL_UP_END
+};
+
+static const u16 sSandshrewLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(6, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(11, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(17, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(23, MOVE_SLASH),
+ LEVEL_UP_MOVE(30, MOVE_SWIFT),
+ LEVEL_UP_MOVE(37, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(45, MOVE_SAND_TOMB),
+ LEVEL_UP_MOVE(53, MOVE_SANDSTORM),
+ LEVEL_UP_END
+};
+
+static const u16 sSandslashLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(1, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(6, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(11, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(17, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(24, MOVE_SLASH),
+ LEVEL_UP_MOVE(33, MOVE_SWIFT),
+ LEVEL_UP_MOVE(42, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(52, MOVE_SAND_TOMB),
+ LEVEL_UP_MOVE(62, MOVE_SANDSTORM),
+ LEVEL_UP_END
+};
+
+static const u16 sNidoranFLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(8, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK),
+ LEVEL_UP_MOVE(17, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(20, MOVE_BITE),
+ LEVEL_UP_MOVE(23, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(30, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(38, MOVE_FLATTER),
+ LEVEL_UP_MOVE(47, MOVE_CRUNCH),
+ LEVEL_UP_END
+};
+
+static const u16 sNidorinaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(8, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK),
+ LEVEL_UP_MOVE(18, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(22, MOVE_BITE),
+ LEVEL_UP_MOVE(26, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(34, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(43, MOVE_FLATTER),
+ LEVEL_UP_MOVE(53, MOVE_CRUNCH),
+ LEVEL_UP_END
+};
+
+static const u16 sNidoqueenLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_DOUBLE_KICK),
+ LEVEL_UP_MOVE(1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(22, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(43, MOVE_SUPERPOWER),
+ LEVEL_UP_END
+};
+
+static const u16 sNidoranMLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(8, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK),
+ LEVEL_UP_MOVE(17, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(20, MOVE_HORN_ATTACK),
+ LEVEL_UP_MOVE(23, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(30, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(38, MOVE_FLATTER),
+ LEVEL_UP_MOVE(47, MOVE_HORN_DRILL),
+ LEVEL_UP_END
+};
+
+static const u16 sNidorinoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(8, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK),
+ LEVEL_UP_MOVE(18, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(22, MOVE_HORN_ATTACK),
+ LEVEL_UP_MOVE(26, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(34, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(43, MOVE_FLATTER),
+ LEVEL_UP_MOVE(53, MOVE_HORN_DRILL),
+ LEVEL_UP_END
+};
+
+static const u16 sNidokingLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(1, MOVE_DOUBLE_KICK),
+ LEVEL_UP_MOVE(1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(22, MOVE_THRASH),
+ LEVEL_UP_MOVE(43, MOVE_MEGAHORN),
+ LEVEL_UP_END
+};
+
+static const u16 sClefairyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(5, MOVE_ENCORE),
+ LEVEL_UP_MOVE(9, MOVE_SING),
+ LEVEL_UP_MOVE(13, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_MOVE(17, MOVE_FOLLOW_ME),
+ LEVEL_UP_MOVE(21, MOVE_MINIMIZE),
+ LEVEL_UP_MOVE(25, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(29, MOVE_METRONOME),
+ LEVEL_UP_MOVE(33, MOVE_COSMIC_POWER),
+ LEVEL_UP_MOVE(37, MOVE_MOONLIGHT),
+ LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(45, MOVE_METEOR_MASH),
+ LEVEL_UP_END
+};
+
+static const u16 sClefableLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SING),
+ LEVEL_UP_MOVE(1, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_MOVE(1, MOVE_MINIMIZE),
+ LEVEL_UP_MOVE(1, MOVE_METRONOME),
+ LEVEL_UP_END
+};
+
+static const u16 sVulpixLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(5, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(9, MOVE_ROAR),
+ LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(17, MOVE_WILL_O_WISP),
+ LEVEL_UP_MOVE(21, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(25, MOVE_IMPRISON),
+ LEVEL_UP_MOVE(29, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(33, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(37, MOVE_GRUDGE),
+ LEVEL_UP_MOVE(41, MOVE_FIRE_SPIN),
+ LEVEL_UP_END
+};
+
+static const u16 sNinetalesLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(1, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(45, MOVE_FIRE_SPIN),
+ LEVEL_UP_END
+};
+
+static const u16 sJigglypuffLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SING),
+ LEVEL_UP_MOVE(4, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(9, MOVE_POUND),
+ LEVEL_UP_MOVE(14, MOVE_DISABLE),
+ LEVEL_UP_MOVE(19, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(24, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_MOVE(29, MOVE_REST),
+ LEVEL_UP_MOVE(34, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(39, MOVE_MIMIC),
+ LEVEL_UP_MOVE(44, MOVE_HYPER_VOICE),
+ LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sWigglytuffLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SING),
+ LEVEL_UP_MOVE(1, MOVE_DISABLE),
+ LEVEL_UP_MOVE(1, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(1, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_END
+};
+
+static const u16 sZubatLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(6, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(11, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(16, MOVE_BITE),
+ LEVEL_UP_MOVE(21, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(26, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(31, MOVE_AIR_CUTTER),
+ LEVEL_UP_MOVE(36, MOVE_MEAN_LOOK),
+ LEVEL_UP_MOVE(41, MOVE_POISON_FANG),
+ LEVEL_UP_MOVE(46, MOVE_HAZE),
+ LEVEL_UP_END
+};
+
+static const u16 sGolbatLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCREECH),
+ LEVEL_UP_MOVE(1, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(1, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(1, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(6, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(11, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(16, MOVE_BITE),
+ LEVEL_UP_MOVE(21, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(35, MOVE_AIR_CUTTER),
+ LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK),
+ LEVEL_UP_MOVE(49, MOVE_POISON_FANG),
+ LEVEL_UP_MOVE(56, MOVE_HAZE),
+ LEVEL_UP_END
+};
+
+static const u16 sOddishLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(7, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(14, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(16, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(18, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(23, MOVE_ACID),
+ LEVEL_UP_MOVE(32, MOVE_MOONLIGHT),
+ LEVEL_UP_MOVE(39, MOVE_PETAL_DANCE),
+ LEVEL_UP_END
+};
+
+static const u16 sGloomLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(1, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(1, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(7, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(14, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(16, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(18, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(24, MOVE_ACID),
+ LEVEL_UP_MOVE(35, MOVE_MOONLIGHT),
+ LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE),
+ LEVEL_UP_END
+};
+
+static const u16 sVileplumeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(1, MOVE_AROMATHERAPY),
+ LEVEL_UP_MOVE(1, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(1, MOVE_MEGA_DRAIN),
+ LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE),
+ LEVEL_UP_END
+};
+
+static const u16 sParasLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(7, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(13, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(19, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(25, MOVE_SPORE),
+ LEVEL_UP_MOVE(31, MOVE_SLASH),
+ LEVEL_UP_MOVE(37, MOVE_GROWTH),
+ LEVEL_UP_MOVE(43, MOVE_GIGA_DRAIN),
+ LEVEL_UP_MOVE(49, MOVE_AROMATHERAPY),
+ LEVEL_UP_END
+};
+
+static const u16 sParasectLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(1, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(7, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(13, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(19, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(27, MOVE_SPORE),
+ LEVEL_UP_MOVE(35, MOVE_SLASH),
+ LEVEL_UP_MOVE(43, MOVE_GROWTH),
+ LEVEL_UP_MOVE(51, MOVE_GIGA_DRAIN),
+ LEVEL_UP_MOVE(59, MOVE_AROMATHERAPY),
+ LEVEL_UP_END
+};
+
+static const u16 sVenonatLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_DISABLE),
+ LEVEL_UP_MOVE(1, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(9, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(17, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(20, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(28, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(33, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(36, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(41, MOVE_PSYCHIC),
+ LEVEL_UP_END
+};
+
+static const u16 sVenomothLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SILVER_WIND),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_DISABLE),
+ LEVEL_UP_MOVE(1, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(1, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(9, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(17, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(20, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(28, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(31, MOVE_GUST),
+ LEVEL_UP_MOVE(36, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(42, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(52, MOVE_PSYCHIC),
+ LEVEL_UP_END
+};
+
+static const u16 sDiglettLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(5, MOVE_GROWL),
+ LEVEL_UP_MOVE(9, MOVE_MAGNITUDE),
+ LEVEL_UP_MOVE(17, MOVE_DIG),
+ LEVEL_UP_MOVE(21, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(25, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(33, MOVE_SLASH),
+ LEVEL_UP_MOVE(41, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(49, MOVE_FISSURE),
+ LEVEL_UP_END
+};
+
+static const u16 sDugtrioLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TRI_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(5, MOVE_GROWL),
+ LEVEL_UP_MOVE(9, MOVE_MAGNITUDE),
+ LEVEL_UP_MOVE(17, MOVE_DIG),
+ LEVEL_UP_MOVE(21, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(25, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(26, MOVE_SAND_TOMB),
+ LEVEL_UP_MOVE(38, MOVE_SLASH),
+ LEVEL_UP_MOVE(51, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(64, MOVE_FISSURE),
+ LEVEL_UP_END
+};
+
+static const u16 sMeowthLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(10, MOVE_BITE),
+ LEVEL_UP_MOVE(18, MOVE_PAY_DAY),
+ LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(31, MOVE_SCREECH),
+ LEVEL_UP_MOVE(36, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(40, MOVE_SLASH),
+ LEVEL_UP_MOVE(43, MOVE_FAKE_OUT),
+ LEVEL_UP_MOVE(45, MOVE_SWAGGER),
+ LEVEL_UP_END
+};
+
+static const u16 sPersianLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(10, MOVE_BITE),
+ LEVEL_UP_MOVE(18, MOVE_PAY_DAY),
+ LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(34, MOVE_SCREECH),
+ LEVEL_UP_MOVE(42, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(49, MOVE_SLASH),
+ LEVEL_UP_MOVE(55, MOVE_FAKE_OUT),
+ LEVEL_UP_MOVE(61, MOVE_SWAGGER),
+ LEVEL_UP_END
+};
+
+static const u16 sPsyduckLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(5, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(10, MOVE_DISABLE),
+ LEVEL_UP_MOVE(16, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(23, MOVE_SCREECH),
+ LEVEL_UP_MOVE(31, MOVE_PSYCH_UP),
+ LEVEL_UP_MOVE(40, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sGolduckLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_DISABLE),
+ LEVEL_UP_MOVE(5, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(10, MOVE_DISABLE),
+ LEVEL_UP_MOVE(16, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(23, MOVE_SCREECH),
+ LEVEL_UP_MOVE(31, MOVE_PSYCH_UP),
+ LEVEL_UP_MOVE(44, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sMankeyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(6, MOVE_LOW_KICK),
+ LEVEL_UP_MOVE(11, MOVE_KARATE_CHOP),
+ LEVEL_UP_MOVE(16, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(26, MOVE_SEISMIC_TOSS),
+ LEVEL_UP_MOVE(31, MOVE_CROSS_CHOP),
+ LEVEL_UP_MOVE(36, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(41, MOVE_SCREECH),
+ LEVEL_UP_MOVE(46, MOVE_THRASH),
+ LEVEL_UP_END
+};
+
+static const u16 sPrimeapeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_LOW_KICK),
+ LEVEL_UP_MOVE(1, MOVE_RAGE),
+ LEVEL_UP_MOVE(6, MOVE_LOW_KICK),
+ LEVEL_UP_MOVE(11, MOVE_KARATE_CHOP),
+ LEVEL_UP_MOVE(16, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(26, MOVE_SEISMIC_TOSS),
+ LEVEL_UP_MOVE(28, MOVE_RAGE),
+ LEVEL_UP_MOVE(35, MOVE_CROSS_CHOP),
+ LEVEL_UP_MOVE(44, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(53, MOVE_SCREECH),
+ LEVEL_UP_MOVE(62, MOVE_THRASH),
+ LEVEL_UP_END
+};
+
+static const u16 sGrowlitheLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_ROAR),
+ LEVEL_UP_MOVE(7, MOVE_EMBER),
+ LEVEL_UP_MOVE(13, MOVE_LEER),
+ LEVEL_UP_MOVE(19, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL),
+ LEVEL_UP_MOVE(37, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(43, MOVE_AGILITY),
+ LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER),
+ LEVEL_UP_END
+};
+
+static const u16 sArcanineLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_ROAR),
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(1, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(49, MOVE_EXTREME_SPEED),
+ LEVEL_UP_END
+};
+
+static const u16 sPoliwagLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(7, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(13, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(19, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_MOVE(25, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(31, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM),
+ LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sPoliwhirlLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(1, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(7, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(13, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(19, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_MOVE(27, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(35, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(43, MOVE_BELLY_DRUM),
+ LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sPoliwrathLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(1, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(1, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_MOVE(1, MOVE_SUBMISSION),
+ LEVEL_UP_MOVE(35, MOVE_SUBMISSION),
+ LEVEL_UP_MOVE(51, MOVE_MIND_READER),
+ LEVEL_UP_END
+};
+
+static const u16 sAbraLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TELEPORT),
+ LEVEL_UP_END
+};
+
+static const u16 sKadabraLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TELEPORT),
+ LEVEL_UP_MOVE(1, MOVE_KINESIS),
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(16, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(18, MOVE_DISABLE),
+ LEVEL_UP_MOVE(21, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(23, MOVE_REFLECT),
+ LEVEL_UP_MOVE(25, MOVE_RECOVER),
+ LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(33, MOVE_ROLE_PLAY),
+ LEVEL_UP_MOVE(36, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(43, MOVE_TRICK),
+ LEVEL_UP_END
+};
+
+static const u16 sAlakazamLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TELEPORT),
+ LEVEL_UP_MOVE(1, MOVE_KINESIS),
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(16, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(18, MOVE_DISABLE),
+ LEVEL_UP_MOVE(21, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(23, MOVE_REFLECT),
+ LEVEL_UP_MOVE(25, MOVE_RECOVER),
+ LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(33, MOVE_CALM_MIND),
+ LEVEL_UP_MOVE(36, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(43, MOVE_TRICK),
+ LEVEL_UP_END
+};
+
+static const u16 sMachopLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LOW_KICK),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(7, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP),
+ LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS),
+ LEVEL_UP_MOVE(22, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(25, MOVE_REVENGE),
+ LEVEL_UP_MOVE(31, MOVE_VITAL_THROW),
+ LEVEL_UP_MOVE(37, MOVE_SUBMISSION),
+ LEVEL_UP_MOVE(40, MOVE_CROSS_CHOP),
+ LEVEL_UP_MOVE(43, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(49, MOVE_DYNAMIC_PUNCH),
+ LEVEL_UP_END
+};
+
+static const u16 sMachokeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LOW_KICK),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(7, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP),
+ LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS),
+ LEVEL_UP_MOVE(22, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(25, MOVE_REVENGE),
+ LEVEL_UP_MOVE(33, MOVE_VITAL_THROW),
+ LEVEL_UP_MOVE(41, MOVE_SUBMISSION),
+ LEVEL_UP_MOVE(46, MOVE_CROSS_CHOP),
+ LEVEL_UP_MOVE(51, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(59, MOVE_DYNAMIC_PUNCH),
+ LEVEL_UP_END
+};
+
+static const u16 sMachampLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LOW_KICK),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(7, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP),
+ LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS),
+ LEVEL_UP_MOVE(22, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(25, MOVE_REVENGE),
+ LEVEL_UP_MOVE(33, MOVE_VITAL_THROW),
+ LEVEL_UP_MOVE(41, MOVE_SUBMISSION),
+ LEVEL_UP_MOVE(46, MOVE_CROSS_CHOP),
+ LEVEL_UP_MOVE(51, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(59, MOVE_DYNAMIC_PUNCH),
+ LEVEL_UP_END
+};
+
+static const u16 sBellsproutLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_VINE_WHIP),
+ LEVEL_UP_MOVE(6, MOVE_GROWTH),
+ LEVEL_UP_MOVE(11, MOVE_WRAP),
+ LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(17, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(19, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(23, MOVE_ACID),
+ LEVEL_UP_MOVE(30, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(37, MOVE_RAZOR_LEAF),
+ LEVEL_UP_MOVE(45, MOVE_SLAM),
+ LEVEL_UP_END
+};
+
+static const u16 sWeepinbellLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_VINE_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_GROWTH),
+ LEVEL_UP_MOVE(1, MOVE_WRAP),
+ LEVEL_UP_MOVE(6, MOVE_GROWTH),
+ LEVEL_UP_MOVE(11, MOVE_WRAP),
+ LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(17, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(19, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(24, MOVE_ACID),
+ LEVEL_UP_MOVE(33, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(42, MOVE_RAZOR_LEAF),
+ LEVEL_UP_MOVE(54, MOVE_SLAM),
+ LEVEL_UP_END
+};
+
+static const u16 sVictreebelLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_STOCKPILE),
+ LEVEL_UP_MOVE(1, MOVE_SPIT_UP),
+ LEVEL_UP_MOVE(1, MOVE_SWALLOW),
+ LEVEL_UP_MOVE(1, MOVE_VINE_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(1, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(1, MOVE_RAZOR_LEAF),
+ LEVEL_UP_END
+};
+
+static const u16 sTentacoolLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(6, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(12, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(19, MOVE_ACID),
+ LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(30, MOVE_WRAP),
+ LEVEL_UP_MOVE(36, MOVE_BARRIER),
+ LEVEL_UP_MOVE(43, MOVE_SCREECH),
+ LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sTentacruelLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(1, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(1, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(6, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(12, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(19, MOVE_ACID),
+ LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(30, MOVE_WRAP),
+ LEVEL_UP_MOVE(38, MOVE_BARRIER),
+ LEVEL_UP_MOVE(47, MOVE_SCREECH),
+ LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sGeodudeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(6, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(11, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(16, MOVE_MAGNITUDE),
+ LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(26, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(31, MOVE_ROCK_BLAST),
+ LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(41, MOVE_EXPLOSION),
+ LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sGravelerLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(1, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(1, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(6, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(11, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(16, MOVE_MAGNITUDE),
+ LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(29, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(37, MOVE_ROCK_BLAST),
+ LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(53, MOVE_EXPLOSION),
+ LEVEL_UP_MOVE(62, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sGolemLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(1, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(1, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(6, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(11, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(16, MOVE_MAGNITUDE),
+ LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(29, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(37, MOVE_ROCK_BLAST),
+ LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(53, MOVE_EXPLOSION),
+ LEVEL_UP_MOVE(62, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sPonytaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(5, MOVE_GROWL),
+ LEVEL_UP_MOVE(9, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(14, MOVE_EMBER),
+ LEVEL_UP_MOVE(19, MOVE_STOMP),
+ LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN),
+ LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(38, MOVE_AGILITY),
+ LEVEL_UP_MOVE(45, MOVE_BOUNCE),
+ LEVEL_UP_MOVE(53, MOVE_FIRE_BLAST),
+ LEVEL_UP_END
+};
+
+static const u16 sRapidashLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(5, MOVE_GROWL),
+ LEVEL_UP_MOVE(9, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(14, MOVE_EMBER),
+ LEVEL_UP_MOVE(19, MOVE_STOMP),
+ LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN),
+ LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(38, MOVE_AGILITY),
+ LEVEL_UP_MOVE(40, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(50, MOVE_BOUNCE),
+ LEVEL_UP_MOVE(63, MOVE_FIRE_BLAST),
+ LEVEL_UP_END
+};
+
+static const u16 sSlowpokeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CURSE),
+ LEVEL_UP_MOVE(1, MOVE_YAWN),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(6, MOVE_GROWL),
+ LEVEL_UP_MOVE(13, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(17, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(24, MOVE_DISABLE),
+ LEVEL_UP_MOVE(29, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(36, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(40, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(47, MOVE_PSYCH_UP),
+ LEVEL_UP_END
+};
+
+static const u16 sSlowbroLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CURSE),
+ LEVEL_UP_MOVE(1, MOVE_YAWN),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(6, MOVE_GROWL),
+ LEVEL_UP_MOVE(13, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(17, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(24, MOVE_DISABLE),
+ LEVEL_UP_MOVE(29, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(36, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(37, MOVE_WITHDRAW),
+ LEVEL_UP_MOVE(44, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(55, MOVE_PSYCH_UP),
+ LEVEL_UP_END
+};
+
+static const u16 sMagnemiteLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_METAL_SOUND),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(6, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(11, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(16, MOVE_SONIC_BOOM),
+ LEVEL_UP_MOVE(21, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(26, MOVE_SPARK),
+ LEVEL_UP_MOVE(32, MOVE_LOCK_ON),
+ LEVEL_UP_MOVE(38, MOVE_SWIFT),
+ LEVEL_UP_MOVE(44, MOVE_SCREECH),
+ LEVEL_UP_MOVE(50, MOVE_ZAP_CANNON),
+ LEVEL_UP_END
+};
+
+static const u16 sMagnetonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_METAL_SOUND),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(1, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(6, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(11, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(16, MOVE_SONIC_BOOM),
+ LEVEL_UP_MOVE(21, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(26, MOVE_SPARK),
+ LEVEL_UP_MOVE(35, MOVE_LOCK_ON),
+ LEVEL_UP_MOVE(44, MOVE_TRI_ATTACK),
+ LEVEL_UP_MOVE(53, MOVE_SCREECH),
+ LEVEL_UP_MOVE(62, MOVE_ZAP_CANNON),
+ LEVEL_UP_END
+};
+
+static const u16 sFarfetchdLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(6, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(11, MOVE_LEER),
+ LEVEL_UP_MOVE(16, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(21, MOVE_KNOCK_OFF),
+ LEVEL_UP_MOVE(26, MOVE_FURY_CUTTER),
+ LEVEL_UP_MOVE(31, MOVE_SWORDS_DANCE),
+ LEVEL_UP_MOVE(36, MOVE_AGILITY),
+ LEVEL_UP_MOVE(41, MOVE_SLASH),
+ LEVEL_UP_MOVE(46, MOVE_FALSE_SWIPE),
+ LEVEL_UP_END
+};
+
+static const u16 sDoduoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(9, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(21, MOVE_TRI_ATTACK),
+ LEVEL_UP_MOVE(25, MOVE_RAGE),
+ LEVEL_UP_MOVE(33, MOVE_UPROAR),
+ LEVEL_UP_MOVE(37, MOVE_DRILL_PECK),
+ LEVEL_UP_MOVE(45, MOVE_AGILITY),
+ LEVEL_UP_END
+};
+
+static const u16 sDodrioLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(1, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(9, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(21, MOVE_TRI_ATTACK),
+ LEVEL_UP_MOVE(25, MOVE_RAGE),
+ LEVEL_UP_MOVE(38, MOVE_UPROAR),
+ LEVEL_UP_MOVE(47, MOVE_DRILL_PECK),
+ LEVEL_UP_MOVE(60, MOVE_AGILITY),
+ LEVEL_UP_END
+};
+
+static const u16 sSeelLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(9, MOVE_GROWL),
+ LEVEL_UP_MOVE(17, MOVE_ICY_WIND),
+ LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM),
+ LEVEL_UP_MOVE(29, MOVE_REST),
+ LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(41, MOVE_ICE_BEAM),
+ LEVEL_UP_MOVE(49, MOVE_SAFEGUARD),
+ LEVEL_UP_END
+};
+
+static const u16 sDewgongLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SIGNAL_BEAM),
+ LEVEL_UP_MOVE(1, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_ICY_WIND),
+ LEVEL_UP_MOVE(1, MOVE_AURORA_BEAM),
+ LEVEL_UP_MOVE(9, MOVE_GROWL),
+ LEVEL_UP_MOVE(17, MOVE_ICY_WIND),
+ LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM),
+ LEVEL_UP_MOVE(29, MOVE_REST),
+ LEVEL_UP_MOVE(34, MOVE_SHEER_COLD),
+ LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(51, MOVE_ICE_BEAM),
+ LEVEL_UP_MOVE(64, MOVE_SAFEGUARD),
+ LEVEL_UP_END
+};
+
+static const u16 sGrimerLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POISON_GAS),
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(4, MOVE_HARDEN),
+ LEVEL_UP_MOVE(8, MOVE_DISABLE),
+ LEVEL_UP_MOVE(13, MOVE_SLUDGE),
+ LEVEL_UP_MOVE(19, MOVE_MINIMIZE),
+ LEVEL_UP_MOVE(26, MOVE_SCREECH),
+ LEVEL_UP_MOVE(34, MOVE_ACID_ARMOR),
+ LEVEL_UP_MOVE(43, MOVE_SLUDGE_BOMB),
+ LEVEL_UP_MOVE(53, MOVE_MEMENTO),
+ LEVEL_UP_END
+};
+
+static const u16 sMukLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POISON_GAS),
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(4, MOVE_HARDEN),
+ LEVEL_UP_MOVE(8, MOVE_DISABLE),
+ LEVEL_UP_MOVE(13, MOVE_SLUDGE),
+ LEVEL_UP_MOVE(19, MOVE_MINIMIZE),
+ LEVEL_UP_MOVE(26, MOVE_SCREECH),
+ LEVEL_UP_MOVE(34, MOVE_ACID_ARMOR),
+ LEVEL_UP_MOVE(47, MOVE_SLUDGE_BOMB),
+ LEVEL_UP_MOVE(61, MOVE_MEMENTO),
+ LEVEL_UP_END
+};
+
+static const u16 sShellderLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_WITHDRAW),
+ LEVEL_UP_MOVE(8, MOVE_ICICLE_SPEAR),
+ LEVEL_UP_MOVE(15, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM),
+ LEVEL_UP_MOVE(29, MOVE_PROTECT),
+ LEVEL_UP_MOVE(36, MOVE_LEER),
+ LEVEL_UP_MOVE(43, MOVE_CLAMP),
+ LEVEL_UP_MOVE(50, MOVE_ICE_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sCloysterLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WITHDRAW),
+ LEVEL_UP_MOVE(1, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(1, MOVE_AURORA_BEAM),
+ LEVEL_UP_MOVE(1, MOVE_PROTECT),
+ LEVEL_UP_MOVE(36, MOVE_SPIKES),
+ LEVEL_UP_MOVE(43, MOVE_SPIKE_CANNON),
+ LEVEL_UP_END
+};
+
+static const u16 sGastlyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(1, MOVE_LICK),
+ LEVEL_UP_MOVE(8, MOVE_SPITE),
+ LEVEL_UP_MOVE(13, MOVE_CURSE),
+ LEVEL_UP_MOVE(16, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(21, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(28, MOVE_DREAM_EATER),
+ LEVEL_UP_MOVE(33, MOVE_DESTINY_BOND),
+ LEVEL_UP_MOVE(36, MOVE_SHADOW_BALL),
+ LEVEL_UP_MOVE(41, MOVE_NIGHTMARE),
+ LEVEL_UP_MOVE(48, MOVE_MEAN_LOOK),
+ LEVEL_UP_END
+};
+
+static const u16 sHaunterLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(1, MOVE_LICK),
+ LEVEL_UP_MOVE(1, MOVE_SPITE),
+ LEVEL_UP_MOVE(8, MOVE_SPITE),
+ LEVEL_UP_MOVE(13, MOVE_CURSE),
+ LEVEL_UP_MOVE(16, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(21, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(25, MOVE_SHADOW_PUNCH),
+ LEVEL_UP_MOVE(31, MOVE_DREAM_EATER),
+ LEVEL_UP_MOVE(39, MOVE_DESTINY_BOND),
+ LEVEL_UP_MOVE(45, MOVE_SHADOW_BALL),
+ LEVEL_UP_MOVE(53, MOVE_NIGHTMARE),
+ LEVEL_UP_MOVE(64, MOVE_MEAN_LOOK),
+ LEVEL_UP_END
+};
+
+static const u16 sGengarLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(1, MOVE_LICK),
+ LEVEL_UP_MOVE(1, MOVE_SPITE),
+ LEVEL_UP_MOVE(8, MOVE_SPITE),
+ LEVEL_UP_MOVE(13, MOVE_CURSE),
+ LEVEL_UP_MOVE(16, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(21, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(25, MOVE_SHADOW_PUNCH),
+ LEVEL_UP_MOVE(31, MOVE_DREAM_EATER),
+ LEVEL_UP_MOVE(39, MOVE_DESTINY_BOND),
+ LEVEL_UP_MOVE(45, MOVE_SHADOW_BALL),
+ LEVEL_UP_MOVE(53, MOVE_NIGHTMARE),
+ LEVEL_UP_MOVE(64, MOVE_MEAN_LOOK),
+ LEVEL_UP_END
+};
+
+static const u16 sOnixLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_SCREECH),
+ LEVEL_UP_MOVE(8, MOVE_BIND),
+ LEVEL_UP_MOVE(12, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(19, MOVE_HARDEN),
+ LEVEL_UP_MOVE(23, MOVE_RAGE),
+ LEVEL_UP_MOVE(30, MOVE_DRAGON_BREATH),
+ LEVEL_UP_MOVE(34, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(41, MOVE_SLAM),
+ LEVEL_UP_MOVE(45, MOVE_IRON_TAIL),
+ LEVEL_UP_MOVE(52, MOVE_SAND_TOMB),
+ LEVEL_UP_MOVE(56, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sDrowzeeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(7, MOVE_DISABLE),
+ LEVEL_UP_MOVE(11, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(17, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(21, MOVE_POISON_GAS),
+ LEVEL_UP_MOVE(27, MOVE_MEDITATE),
+ LEVEL_UP_MOVE(31, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(37, MOVE_PSYCH_UP),
+ LEVEL_UP_MOVE(41, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(47, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_END
+};
+
+static const u16 sHypnoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_NIGHTMARE),
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(1, MOVE_DISABLE),
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(7, MOVE_DISABLE),
+ LEVEL_UP_MOVE(11, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(17, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(21, MOVE_POISON_GAS),
+ LEVEL_UP_MOVE(29, MOVE_MEDITATE),
+ LEVEL_UP_MOVE(35, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(43, MOVE_PSYCH_UP),
+ LEVEL_UP_MOVE(49, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(57, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_END
+};
+
+static const u16 sKrabbyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(5, MOVE_LEER),
+ LEVEL_UP_MOVE(12, MOVE_VICE_GRIP),
+ LEVEL_UP_MOVE(16, MOVE_HARDEN),
+ LEVEL_UP_MOVE(23, MOVE_MUD_SHOT),
+ LEVEL_UP_MOVE(27, MOVE_STOMP),
+ LEVEL_UP_MOVE(34, MOVE_GUILLOTINE),
+ LEVEL_UP_MOVE(38, MOVE_PROTECT),
+ LEVEL_UP_MOVE(45, MOVE_CRABHAMMER),
+ LEVEL_UP_MOVE(49, MOVE_FLAIL),
+ LEVEL_UP_END
+};
+
+static const u16 sKinglerLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_VICE_GRIP),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(5, MOVE_LEER),
+ LEVEL_UP_MOVE(12, MOVE_VICE_GRIP),
+ LEVEL_UP_MOVE(16, MOVE_HARDEN),
+ LEVEL_UP_MOVE(23, MOVE_MUD_SHOT),
+ LEVEL_UP_MOVE(27, MOVE_STOMP),
+ LEVEL_UP_MOVE(38, MOVE_GUILLOTINE),
+ LEVEL_UP_MOVE(42, MOVE_PROTECT),
+ LEVEL_UP_MOVE(57, MOVE_CRABHAMMER),
+ LEVEL_UP_MOVE(65, MOVE_FLAIL),
+ LEVEL_UP_END
+};
+
+static const u16 sVoltorbLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CHARGE),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(8, MOVE_SCREECH),
+ LEVEL_UP_MOVE(15, MOVE_SONIC_BOOM),
+ LEVEL_UP_MOVE(21, MOVE_SPARK),
+ LEVEL_UP_MOVE(27, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(32, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(37, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(42, MOVE_SWIFT),
+ LEVEL_UP_MOVE(46, MOVE_EXPLOSION),
+ LEVEL_UP_MOVE(49, MOVE_MIRROR_COAT),
+ LEVEL_UP_END
+};
+
+static const u16 sElectrodeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CHARGE),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_SCREECH),
+ LEVEL_UP_MOVE(1, MOVE_SONIC_BOOM),
+ LEVEL_UP_MOVE(8, MOVE_SCREECH),
+ LEVEL_UP_MOVE(15, MOVE_SONIC_BOOM),
+ LEVEL_UP_MOVE(21, MOVE_SPARK),
+ LEVEL_UP_MOVE(27, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(34, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(48, MOVE_SWIFT),
+ LEVEL_UP_MOVE(54, MOVE_EXPLOSION),
+ LEVEL_UP_MOVE(59, MOVE_MIRROR_COAT),
+ LEVEL_UP_END
+};
+
+static const u16 sExeggcuteLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BARRAGE),
+ LEVEL_UP_MOVE(1, MOVE_UPROAR),
+ LEVEL_UP_MOVE(1, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(7, MOVE_REFLECT),
+ LEVEL_UP_MOVE(13, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(19, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(25, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(31, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(37, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(43, MOVE_SOLAR_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sExeggutorLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BARRAGE),
+ LEVEL_UP_MOVE(1, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(19, MOVE_STOMP),
+ LEVEL_UP_MOVE(31, MOVE_EGG_BOMB),
+ LEVEL_UP_END
+};
+
+static const u16 sCuboneLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(5, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(9, MOVE_BONE_CLUB),
+ LEVEL_UP_MOVE(13, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(17, MOVE_LEER),
+ LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(25, MOVE_BONEMERANG),
+ LEVEL_UP_MOVE(29, MOVE_RAGE),
+ LEVEL_UP_MOVE(33, MOVE_FALSE_SWIPE),
+ LEVEL_UP_MOVE(37, MOVE_THRASH),
+ LEVEL_UP_MOVE(41, MOVE_BONE_RUSH),
+ LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sMarowakLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_BONE_CLUB),
+ LEVEL_UP_MOVE(1, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(5, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(9, MOVE_BONE_CLUB),
+ LEVEL_UP_MOVE(13, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(17, MOVE_LEER),
+ LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(25, MOVE_BONEMERANG),
+ LEVEL_UP_MOVE(32, MOVE_RAGE),
+ LEVEL_UP_MOVE(39, MOVE_FALSE_SWIPE),
+ LEVEL_UP_MOVE(46, MOVE_THRASH),
+ LEVEL_UP_MOVE(53, MOVE_BONE_RUSH),
+ LEVEL_UP_MOVE(61, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sHitmonleeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_REVENGE),
+ LEVEL_UP_MOVE(1, MOVE_DOUBLE_KICK),
+ LEVEL_UP_MOVE(6, MOVE_MEDITATE),
+ LEVEL_UP_MOVE(11, MOVE_ROLLING_KICK),
+ LEVEL_UP_MOVE(16, MOVE_JUMP_KICK),
+ LEVEL_UP_MOVE(20, MOVE_BRICK_BREAK),
+ LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(26, MOVE_HI_JUMP_KICK),
+ LEVEL_UP_MOVE(31, MOVE_MIND_READER),
+ LEVEL_UP_MOVE(36, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(41, MOVE_ENDURE),
+ LEVEL_UP_MOVE(46, MOVE_MEGA_KICK),
+ LEVEL_UP_MOVE(51, MOVE_REVERSAL),
+ LEVEL_UP_END
+};
+
+static const u16 sHitmonchanLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_REVENGE),
+ LEVEL_UP_MOVE(1, MOVE_COMET_PUNCH),
+ LEVEL_UP_MOVE(7, MOVE_AGILITY),
+ LEVEL_UP_MOVE(13, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(20, MOVE_MACH_PUNCH),
+ LEVEL_UP_MOVE(26, MOVE_THUNDER_PUNCH),
+ LEVEL_UP_MOVE(26, MOVE_ICE_PUNCH),
+ LEVEL_UP_MOVE(26, MOVE_FIRE_PUNCH),
+ LEVEL_UP_MOVE(32, MOVE_SKY_UPPERCUT),
+ LEVEL_UP_MOVE(38, MOVE_MEGA_PUNCH),
+ LEVEL_UP_MOVE(44, MOVE_DETECT),
+ LEVEL_UP_MOVE(50, MOVE_COUNTER),
+ LEVEL_UP_END
+};
+
+static const u16 sLickitungLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LICK),
+ LEVEL_UP_MOVE(7, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(12, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(18, MOVE_KNOCK_OFF),
+ LEVEL_UP_MOVE(23, MOVE_STOMP),
+ LEVEL_UP_MOVE(29, MOVE_WRAP),
+ LEVEL_UP_MOVE(34, MOVE_DISABLE),
+ LEVEL_UP_MOVE(40, MOVE_SLAM),
+ LEVEL_UP_MOVE(45, MOVE_SCREECH),
+ LEVEL_UP_MOVE(51, MOVE_REFRESH),
+ LEVEL_UP_END
+};
+
+static const u16 sKoffingLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POISON_GAS),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(9, MOVE_SMOG),
+ LEVEL_UP_MOVE(17, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(21, MOVE_SLUDGE),
+ LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(33, MOVE_HAZE),
+ LEVEL_UP_MOVE(41, MOVE_EXPLOSION),
+ LEVEL_UP_MOVE(45, MOVE_DESTINY_BOND),
+ LEVEL_UP_MOVE(49, MOVE_MEMENTO),
+ LEVEL_UP_END
+};
+
+static const u16 sWeezingLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POISON_GAS),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_SMOG),
+ LEVEL_UP_MOVE(1, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(9, MOVE_SMOG),
+ LEVEL_UP_MOVE(17, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(21, MOVE_SLUDGE),
+ LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(33, MOVE_HAZE),
+ LEVEL_UP_MOVE(44, MOVE_EXPLOSION),
+ LEVEL_UP_MOVE(51, MOVE_DESTINY_BOND),
+ LEVEL_UP_MOVE(58, MOVE_MEMENTO),
+ LEVEL_UP_END
+};
+
+static const u16 sRhyhornLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HORN_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(10, MOVE_STOMP),
+ LEVEL_UP_MOVE(15, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(24, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST),
+ LEVEL_UP_MOVE(38, MOVE_HORN_DRILL),
+ LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(57, MOVE_MEGAHORN),
+ LEVEL_UP_END
+};
+
+static const u16 sRhydonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HORN_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_STOMP),
+ LEVEL_UP_MOVE(1, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(10, MOVE_STOMP),
+ LEVEL_UP_MOVE(15, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(24, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST),
+ LEVEL_UP_MOVE(38, MOVE_HORN_DRILL),
+ LEVEL_UP_MOVE(46, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(58, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(66, MOVE_MEGAHORN),
+ LEVEL_UP_END
+};
+
+static const u16 sChanseyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(5, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(9, MOVE_REFRESH),
+ LEVEL_UP_MOVE(13, MOVE_SOFT_BOILED),
+ LEVEL_UP_MOVE(17, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_MOVE(23, MOVE_MINIMIZE),
+ LEVEL_UP_MOVE(29, MOVE_SING),
+ LEVEL_UP_MOVE(35, MOVE_EGG_BOMB),
+ LEVEL_UP_MOVE(41, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(49, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sTangelaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_INGRAIN),
+ LEVEL_UP_MOVE(1, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(4, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(10, MOVE_ABSORB),
+ LEVEL_UP_MOVE(13, MOVE_GROWTH),
+ LEVEL_UP_MOVE(19, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(22, MOVE_VINE_WHIP),
+ LEVEL_UP_MOVE(28, MOVE_BIND),
+ LEVEL_UP_MOVE(31, MOVE_MEGA_DRAIN),
+ LEVEL_UP_MOVE(37, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(40, MOVE_SLAM),
+ LEVEL_UP_MOVE(46, MOVE_TICKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sKangaskhanLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_COMET_PUNCH),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(7, MOVE_BITE),
+ LEVEL_UP_MOVE(13, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(19, MOVE_FAKE_OUT),
+ LEVEL_UP_MOVE(25, MOVE_MEGA_PUNCH),
+ LEVEL_UP_MOVE(31, MOVE_RAGE),
+ LEVEL_UP_MOVE(37, MOVE_ENDURE),
+ LEVEL_UP_MOVE(43, MOVE_DIZZY_PUNCH),
+ LEVEL_UP_MOVE(49, MOVE_REVERSAL),
+ LEVEL_UP_END
+};
+
+static const u16 sHorseaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(8, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(15, MOVE_LEER),
+ LEVEL_UP_MOVE(22, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(29, MOVE_TWISTER),
+ LEVEL_UP_MOVE(36, MOVE_AGILITY),
+ LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE),
+ LEVEL_UP_END
+};
+
+static const u16 sSeadraLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(1, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(8, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(15, MOVE_LEER),
+ LEVEL_UP_MOVE(22, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(29, MOVE_TWISTER),
+ LEVEL_UP_MOVE(40, MOVE_AGILITY),
+ LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(62, MOVE_DRAGON_DANCE),
+ LEVEL_UP_END
+};
+
+static const u16 sGoldeenLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(10, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(15, MOVE_HORN_ATTACK),
+ LEVEL_UP_MOVE(24, MOVE_FLAIL),
+ LEVEL_UP_MOVE(29, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(38, MOVE_WATERFALL),
+ LEVEL_UP_MOVE(43, MOVE_HORN_DRILL),
+ LEVEL_UP_MOVE(52, MOVE_AGILITY),
+ LEVEL_UP_MOVE(57, MOVE_MEGAHORN),
+ LEVEL_UP_END
+};
+
+static const u16 sSeakingLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(1, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(10, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(15, MOVE_HORN_ATTACK),
+ LEVEL_UP_MOVE(24, MOVE_FLAIL),
+ LEVEL_UP_MOVE(29, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(41, MOVE_WATERFALL),
+ LEVEL_UP_MOVE(49, MOVE_HORN_DRILL),
+ LEVEL_UP_MOVE(61, MOVE_AGILITY),
+ LEVEL_UP_MOVE(69, MOVE_MEGAHORN),
+ LEVEL_UP_END
+};
+
+static const u16 sStaryuLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(6, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(10, MOVE_RAPID_SPIN),
+ LEVEL_UP_MOVE(15, MOVE_RECOVER),
+ LEVEL_UP_MOVE(19, MOVE_CAMOUFLAGE),
+ LEVEL_UP_MOVE(24, MOVE_SWIFT),
+ LEVEL_UP_MOVE(28, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(33, MOVE_MINIMIZE),
+ LEVEL_UP_MOVE(37, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(42, MOVE_COSMIC_POWER),
+ LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sStarmieLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(1, MOVE_RAPID_SPIN),
+ LEVEL_UP_MOVE(1, MOVE_RECOVER),
+ LEVEL_UP_MOVE(1, MOVE_SWIFT),
+ LEVEL_UP_MOVE(33, MOVE_CONFUSE_RAY),
+ LEVEL_UP_END
+};
+
+static const u16 sMrMimeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BARRIER),
+ LEVEL_UP_MOVE(5, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(8, MOVE_SUBSTITUTE),
+ LEVEL_UP_MOVE(12, MOVE_MEDITATE),
+ LEVEL_UP_MOVE(15, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_MOVE(19, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(19, MOVE_REFLECT),
+ LEVEL_UP_MOVE(22, MOVE_MAGICAL_LEAF),
+ LEVEL_UP_MOVE(26, MOVE_ENCORE),
+ LEVEL_UP_MOVE(29, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(33, MOVE_RECYCLE),
+ LEVEL_UP_MOVE(36, MOVE_TRICK),
+ LEVEL_UP_MOVE(40, MOVE_ROLE_PLAY),
+ LEVEL_UP_MOVE(43, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(47, MOVE_BATON_PASS),
+ LEVEL_UP_MOVE(50, MOVE_SAFEGUARD),
+ LEVEL_UP_END
+};
+
+static const u16 sScytherLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(6, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(11, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(16, MOVE_FALSE_SWIPE),
+ LEVEL_UP_MOVE(21, MOVE_AGILITY),
+ LEVEL_UP_MOVE(26, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(31, MOVE_SLASH),
+ LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE),
+ LEVEL_UP_MOVE(41, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER),
+ LEVEL_UP_END
+};
+
+static const u16 sJynxLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_LICK),
+ LEVEL_UP_MOVE(1, MOVE_LOVELY_KISS),
+ LEVEL_UP_MOVE(1, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(9, MOVE_LOVELY_KISS),
+ LEVEL_UP_MOVE(13, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(21, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_MOVE(25, MOVE_ICE_PUNCH),
+ LEVEL_UP_MOVE(35, MOVE_MEAN_LOOK),
+ LEVEL_UP_MOVE(41, MOVE_FAKE_TEARS),
+ LEVEL_UP_MOVE(51, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(57, MOVE_PERISH_SONG),
+ LEVEL_UP_MOVE(67, MOVE_BLIZZARD),
+ LEVEL_UP_END
+};
+
+static const u16 sElectabuzzLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_PUNCH),
+ LEVEL_UP_MOVE(9, MOVE_THUNDER_PUNCH),
+ LEVEL_UP_MOVE(17, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(25, MOVE_SWIFT),
+ LEVEL_UP_MOVE(36, MOVE_SCREECH),
+ LEVEL_UP_MOVE(47, MOVE_THUNDERBOLT),
+ LEVEL_UP_MOVE(58, MOVE_THUNDER),
+ LEVEL_UP_END
+};
+
+static const u16 sMagmarLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_SMOG),
+ LEVEL_UP_MOVE(1, MOVE_FIRE_PUNCH),
+ LEVEL_UP_MOVE(7, MOVE_LEER),
+ LEVEL_UP_MOVE(13, MOVE_SMOG),
+ LEVEL_UP_MOVE(19, MOVE_FIRE_PUNCH),
+ LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(33, MOVE_SUNNY_DAY),
+ LEVEL_UP_MOVE(41, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(49, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(57, MOVE_FIRE_BLAST),
+ LEVEL_UP_END
+};
+
+static const u16 sPinsirLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_VICE_GRIP),
+ LEVEL_UP_MOVE(1, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(7, MOVE_BIND),
+ LEVEL_UP_MOVE(13, MOVE_SEISMIC_TOSS),
+ LEVEL_UP_MOVE(19, MOVE_HARDEN),
+ LEVEL_UP_MOVE(25, MOVE_REVENGE),
+ LEVEL_UP_MOVE(31, MOVE_BRICK_BREAK),
+ LEVEL_UP_MOVE(37, MOVE_GUILLOTINE),
+ LEVEL_UP_MOVE(43, MOVE_SUBMISSION),
+ LEVEL_UP_MOVE(49, MOVE_SWORDS_DANCE),
+ LEVEL_UP_END
+};
+
+static const u16 sTaurosLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(4, MOVE_RAGE),
+ LEVEL_UP_MOVE(8, MOVE_HORN_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(19, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(26, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(34, MOVE_REST),
+ LEVEL_UP_MOVE(43, MOVE_THRASH),
+ LEVEL_UP_MOVE(53, MOVE_TAKE_DOWN),
+ LEVEL_UP_END
+};
+
+static const u16 sMagikarpLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(15, MOVE_TACKLE),
+ LEVEL_UP_MOVE(30, MOVE_FLAIL),
+ LEVEL_UP_END
+};
+
+static const u16 sGyaradosLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_THRASH),
+ LEVEL_UP_MOVE(20, MOVE_BITE),
+ LEVEL_UP_MOVE(25, MOVE_DRAGON_RAGE),
+ LEVEL_UP_MOVE(30, MOVE_LEER),
+ LEVEL_UP_MOVE(35, MOVE_TWISTER),
+ LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE),
+ LEVEL_UP_MOVE(55, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sLaprasLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_SING),
+ LEVEL_UP_MOVE(7, MOVE_MIST),
+ LEVEL_UP_MOVE(13, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(19, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(25, MOVE_PERISH_SONG),
+ LEVEL_UP_MOVE(31, MOVE_ICE_BEAM),
+ LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(43, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(55, MOVE_SHEER_COLD),
+ LEVEL_UP_END
+};
+
+static const u16 sDittoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TRANSFORM),
+ LEVEL_UP_END
+};
+
+static const u16 sEeveeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(8, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(16, MOVE_GROWL),
+ LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(30, MOVE_BITE),
+ LEVEL_UP_MOVE(36, MOVE_BATON_PASS),
+ LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN),
+ LEVEL_UP_END
+};
+
+static const u16 sVaporeonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(8, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(16, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(30, MOVE_BITE),
+ LEVEL_UP_MOVE(36, MOVE_AURORA_BEAM),
+ LEVEL_UP_MOVE(42, MOVE_HAZE),
+ LEVEL_UP_MOVE(47, MOVE_ACID_ARMOR),
+ LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sJolteonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(8, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(16, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(30, MOVE_DOUBLE_KICK),
+ LEVEL_UP_MOVE(36, MOVE_PIN_MISSILE),
+ LEVEL_UP_MOVE(42, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(47, MOVE_AGILITY),
+ LEVEL_UP_MOVE(52, MOVE_THUNDER),
+ LEVEL_UP_END
+};
+
+static const u16 sFlareonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(8, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(16, MOVE_EMBER),
+ LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(30, MOVE_BITE),
+ LEVEL_UP_MOVE(36, MOVE_FIRE_SPIN),
+ LEVEL_UP_MOVE(42, MOVE_SMOG),
+ LEVEL_UP_MOVE(47, MOVE_LEER),
+ LEVEL_UP_MOVE(52, MOVE_FLAMETHROWER),
+ LEVEL_UP_END
+};
+
+static const u16 sPorygonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CONVERSION_2),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_CONVERSION),
+ LEVEL_UP_MOVE(9, MOVE_AGILITY),
+ LEVEL_UP_MOVE(12, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(20, MOVE_RECOVER),
+ LEVEL_UP_MOVE(24, MOVE_SHARPEN),
+ LEVEL_UP_MOVE(32, MOVE_LOCK_ON),
+ LEVEL_UP_MOVE(36, MOVE_TRI_ATTACK),
+ LEVEL_UP_MOVE(44, MOVE_RECYCLE),
+ LEVEL_UP_MOVE(48, MOVE_ZAP_CANNON),
+ LEVEL_UP_END
+};
+
+static const u16 sOmanyteLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(1, MOVE_WITHDRAW),
+ LEVEL_UP_MOVE(13, MOVE_BITE),
+ LEVEL_UP_MOVE(19, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(25, MOVE_MUD_SHOT),
+ LEVEL_UP_MOVE(31, MOVE_LEER),
+ LEVEL_UP_MOVE(37, MOVE_PROTECT),
+ LEVEL_UP_MOVE(43, MOVE_TICKLE),
+ LEVEL_UP_MOVE(49, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sOmastarLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(1, MOVE_WITHDRAW),
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(13, MOVE_BITE),
+ LEVEL_UP_MOVE(19, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(25, MOVE_MUD_SHOT),
+ LEVEL_UP_MOVE(31, MOVE_LEER),
+ LEVEL_UP_MOVE(37, MOVE_PROTECT),
+ LEVEL_UP_MOVE(40, MOVE_SPIKE_CANNON),
+ LEVEL_UP_MOVE(46, MOVE_TICKLE),
+ LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(65, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sKabutoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(13, MOVE_ABSORB),
+ LEVEL_UP_MOVE(19, MOVE_LEER),
+ LEVEL_UP_MOVE(25, MOVE_MUD_SHOT),
+ LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(37, MOVE_ENDURE),
+ LEVEL_UP_MOVE(43, MOVE_METAL_SOUND),
+ LEVEL_UP_MOVE(49, MOVE_MEGA_DRAIN),
+ LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER),
+ LEVEL_UP_END
+};
+
+static const u16 sKabutopsLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_FURY_CUTTER),
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(13, MOVE_ABSORB),
+ LEVEL_UP_MOVE(19, MOVE_LEER),
+ LEVEL_UP_MOVE(25, MOVE_MUD_SHOT),
+ LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(37, MOVE_ENDURE),
+ LEVEL_UP_MOVE(40, MOVE_SLASH),
+ LEVEL_UP_MOVE(46, MOVE_METAL_SOUND),
+ LEVEL_UP_MOVE(55, MOVE_MEGA_DRAIN),
+ LEVEL_UP_MOVE(65, MOVE_ANCIENT_POWER),
+ LEVEL_UP_END
+};
+
+static const u16 sAerodactylLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(8, MOVE_AGILITY),
+ LEVEL_UP_MOVE(15, MOVE_BITE),
+ LEVEL_UP_MOVE(22, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(29, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(36, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(50, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sSnorlaxLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(5, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(9, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(13, MOVE_BELLY_DRUM),
+ LEVEL_UP_MOVE(17, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(21, MOVE_YAWN),
+ LEVEL_UP_MOVE(25, MOVE_REST),
+ LEVEL_UP_MOVE(29, MOVE_SNORE),
+ LEVEL_UP_MOVE(33, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(37, MOVE_SLEEP_TALK),
+ LEVEL_UP_MOVE(41, MOVE_BLOCK),
+ LEVEL_UP_MOVE(45, MOVE_COVET),
+ LEVEL_UP_MOVE(49, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(53, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sArticunoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GUST),
+ LEVEL_UP_MOVE(1, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(13, MOVE_MIST),
+ LEVEL_UP_MOVE(25, MOVE_AGILITY),
+ LEVEL_UP_MOVE(37, MOVE_MIND_READER),
+ LEVEL_UP_MOVE(49, MOVE_ICE_BEAM),
+ LEVEL_UP_MOVE(61, MOVE_REFLECT),
+ LEVEL_UP_MOVE(73, MOVE_BLIZZARD),
+ LEVEL_UP_MOVE(85, MOVE_SHEER_COLD),
+ LEVEL_UP_END
+};
+
+static const u16 sZapdosLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(25, MOVE_AGILITY),
+ LEVEL_UP_MOVE(37, MOVE_DETECT),
+ LEVEL_UP_MOVE(49, MOVE_DRILL_PECK),
+ LEVEL_UP_MOVE(61, MOVE_CHARGE),
+ LEVEL_UP_MOVE(73, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(85, MOVE_THUNDER),
+ LEVEL_UP_END
+};
+
+static const u16 sMoltresLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(13, MOVE_FIRE_SPIN),
+ LEVEL_UP_MOVE(25, MOVE_AGILITY),
+ LEVEL_UP_MOVE(37, MOVE_ENDURE),
+ LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(61, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(73, MOVE_HEAT_WAVE),
+ LEVEL_UP_MOVE(85, MOVE_SKY_ATTACK),
+ LEVEL_UP_END
+};
+
+static const u16 sDratiniLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WRAP),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(8, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(15, MOVE_TWISTER),
+ LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE),
+ LEVEL_UP_MOVE(29, MOVE_SLAM),
+ LEVEL_UP_MOVE(36, MOVE_AGILITY),
+ LEVEL_UP_MOVE(43, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(50, MOVE_OUTRAGE),
+ LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sDragonairLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WRAP),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(1, MOVE_TWISTER),
+ LEVEL_UP_MOVE(8, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(15, MOVE_TWISTER),
+ LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE),
+ LEVEL_UP_MOVE(29, MOVE_SLAM),
+ LEVEL_UP_MOVE(38, MOVE_AGILITY),
+ LEVEL_UP_MOVE(47, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(56, MOVE_OUTRAGE),
+ LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sDragoniteLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WRAP),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(1, MOVE_TWISTER),
+ LEVEL_UP_MOVE(8, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(15, MOVE_TWISTER),
+ LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE),
+ LEVEL_UP_MOVE(29, MOVE_SLAM),
+ LEVEL_UP_MOVE(38, MOVE_AGILITY),
+ LEVEL_UP_MOVE(47, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(55, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(61, MOVE_OUTRAGE),
+ LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sMewtwoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(1, MOVE_DISABLE),
+ LEVEL_UP_MOVE(11, MOVE_BARRIER),
+ LEVEL_UP_MOVE(22, MOVE_MIST),
+ LEVEL_UP_MOVE(33, MOVE_SWIFT),
+ LEVEL_UP_MOVE(44, MOVE_RECOVER),
+ LEVEL_UP_MOVE(55, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(66, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(77, MOVE_PSYCH_UP),
+ LEVEL_UP_MOVE(88, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(99, MOVE_AMNESIA),
+ LEVEL_UP_END
+};
+
+static const u16 sMewLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(10, MOVE_TRANSFORM),
+ LEVEL_UP_MOVE(20, MOVE_MEGA_PUNCH),
+ LEVEL_UP_MOVE(30, MOVE_METRONOME),
+ LEVEL_UP_MOVE(40, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(50, MOVE_ANCIENT_POWER),
+ LEVEL_UP_END
+};
+
+static const u16 sChikoritaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(8, MOVE_RAZOR_LEAF),
+ LEVEL_UP_MOVE(12, MOVE_REFLECT),
+ LEVEL_UP_MOVE(15, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(22, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(29, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(36, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(43, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(50, MOVE_SOLAR_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sBayleefLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_RAZOR_LEAF),
+ LEVEL_UP_MOVE(1, MOVE_REFLECT),
+ LEVEL_UP_MOVE(8, MOVE_RAZOR_LEAF),
+ LEVEL_UP_MOVE(12, MOVE_REFLECT),
+ LEVEL_UP_MOVE(15, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(23, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(31, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(39, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(47, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(55, MOVE_SOLAR_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sMeganiumLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_RAZOR_LEAF),
+ LEVEL_UP_MOVE(1, MOVE_REFLECT),
+ LEVEL_UP_MOVE(8, MOVE_RAZOR_LEAF),
+ LEVEL_UP_MOVE(12, MOVE_REFLECT),
+ LEVEL_UP_MOVE(15, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(23, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(31, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(51, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(61, MOVE_SOLAR_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sCyndaquilLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(6, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(12, MOVE_EMBER),
+ LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(27, MOVE_FLAME_WHEEL),
+ LEVEL_UP_MOVE(36, MOVE_SWIFT),
+ LEVEL_UP_MOVE(46, MOVE_FLAMETHROWER),
+ LEVEL_UP_END
+};
+
+static const u16 sQuilavaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(6, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(12, MOVE_EMBER),
+ LEVEL_UP_MOVE(21, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL),
+ LEVEL_UP_MOVE(42, MOVE_SWIFT),
+ LEVEL_UP_MOVE(54, MOVE_FLAMETHROWER),
+ LEVEL_UP_END
+};
+
+static const u16 sTyphlosionLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(6, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(12, MOVE_EMBER),
+ LEVEL_UP_MOVE(21, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL),
+ LEVEL_UP_MOVE(45, MOVE_SWIFT),
+ LEVEL_UP_MOVE(60, MOVE_FLAMETHROWER),
+ LEVEL_UP_END
+};
+
+static const u16 sTotodileLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(7, MOVE_RAGE),
+ LEVEL_UP_MOVE(13, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(20, MOVE_BITE),
+ LEVEL_UP_MOVE(27, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(35, MOVE_SLASH),
+ LEVEL_UP_MOVE(43, MOVE_SCREECH),
+ LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sCroconawLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_RAGE),
+ LEVEL_UP_MOVE(7, MOVE_RAGE),
+ LEVEL_UP_MOVE(13, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(21, MOVE_BITE),
+ LEVEL_UP_MOVE(28, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(37, MOVE_SLASH),
+ LEVEL_UP_MOVE(45, MOVE_SCREECH),
+ LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sFeraligatrLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_RAGE),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(7, MOVE_RAGE),
+ LEVEL_UP_MOVE(13, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(21, MOVE_BITE),
+ LEVEL_UP_MOVE(28, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(38, MOVE_SLASH),
+ LEVEL_UP_MOVE(47, MOVE_SCREECH),
+ LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sSentretLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(4, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(7, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(17, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(24, MOVE_SLAM),
+ LEVEL_UP_MOVE(31, MOVE_FOLLOW_ME),
+ LEVEL_UP_MOVE(40, MOVE_REST),
+ LEVEL_UP_MOVE(49, MOVE_AMNESIA),
+ LEVEL_UP_END
+};
+
+static const u16 sFurretLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(4, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(7, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(19, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(28, MOVE_SLAM),
+ LEVEL_UP_MOVE(37, MOVE_FOLLOW_ME),
+ LEVEL_UP_MOVE(48, MOVE_REST),
+ LEVEL_UP_MOVE(59, MOVE_AMNESIA),
+ LEVEL_UP_END
+};
+
+static const u16 sHoothootLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(6, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(11, MOVE_PECK),
+ LEVEL_UP_MOVE(16, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(22, MOVE_REFLECT),
+ LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(34, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(48, MOVE_DREAM_EATER),
+ LEVEL_UP_END
+};
+
+static const u16 sNoctowlLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(6, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(11, MOVE_PECK),
+ LEVEL_UP_MOVE(16, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(25, MOVE_REFLECT),
+ LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(41, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(57, MOVE_DREAM_EATER),
+ LEVEL_UP_END
+};
+
+static const u16 sLedybaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(8, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(15, MOVE_COMET_PUNCH),
+ LEVEL_UP_MOVE(22, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(22, MOVE_REFLECT),
+ LEVEL_UP_MOVE(22, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(29, MOVE_BATON_PASS),
+ LEVEL_UP_MOVE(36, MOVE_SWIFT),
+ LEVEL_UP_MOVE(43, MOVE_AGILITY),
+ LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sLedianLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(8, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(15, MOVE_COMET_PUNCH),
+ LEVEL_UP_MOVE(24, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(24, MOVE_REFLECT),
+ LEVEL_UP_MOVE(24, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(33, MOVE_BATON_PASS),
+ LEVEL_UP_MOVE(42, MOVE_SWIFT),
+ LEVEL_UP_MOVE(51, MOVE_AGILITY),
+ LEVEL_UP_MOVE(60, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpinarakLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(1, MOVE_STRING_SHOT),
+ LEVEL_UP_MOVE(6, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(11, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(17, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(23, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(30, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(37, MOVE_SPIDER_WEB),
+ LEVEL_UP_MOVE(45, MOVE_AGILITY),
+ LEVEL_UP_MOVE(53, MOVE_PSYCHIC),
+ LEVEL_UP_END
+};
+
+static const u16 sAriadosLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(1, MOVE_STRING_SHOT),
+ LEVEL_UP_MOVE(1, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(1, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(6, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(11, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(17, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(34, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(43, MOVE_SPIDER_WEB),
+ LEVEL_UP_MOVE(53, MOVE_AGILITY),
+ LEVEL_UP_MOVE(63, MOVE_PSYCHIC),
+ LEVEL_UP_END
+};
+
+static const u16 sCrobatLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCREECH),
+ LEVEL_UP_MOVE(1, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(1, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(1, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(6, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(11, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(16, MOVE_BITE),
+ LEVEL_UP_MOVE(21, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(35, MOVE_AIR_CUTTER),
+ LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK),
+ LEVEL_UP_MOVE(49, MOVE_POISON_FANG),
+ LEVEL_UP_MOVE(56, MOVE_HAZE),
+ LEVEL_UP_END
+};
+
+static const u16 sChinchouLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(5, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(13, MOVE_FLAIL),
+ LEVEL_UP_MOVE(17, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(25, MOVE_SPARK),
+ LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(41, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(49, MOVE_CHARGE),
+ LEVEL_UP_END
+};
+
+static const u16 sLanturnLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(1, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(5, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(13, MOVE_FLAIL),
+ LEVEL_UP_MOVE(17, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(25, MOVE_SPARK),
+ LEVEL_UP_MOVE(32, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(61, MOVE_CHARGE),
+ LEVEL_UP_END
+};
+
+static const u16 sPichuLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(1, MOVE_CHARM),
+ LEVEL_UP_MOVE(6, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(8, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(11, MOVE_SWEET_KISS),
+ LEVEL_UP_END
+};
+
+static const u16 sCleffaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_CHARM),
+ LEVEL_UP_MOVE(4, MOVE_ENCORE),
+ LEVEL_UP_MOVE(8, MOVE_SING),
+ LEVEL_UP_MOVE(13, MOVE_SWEET_KISS),
+ LEVEL_UP_MOVE(17, MOVE_MAGICAL_LEAF),
+ LEVEL_UP_END
+};
+
+static const u16 sIgglybuffLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SING),
+ LEVEL_UP_MOVE(1, MOVE_CHARM),
+ LEVEL_UP_MOVE(4, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(9, MOVE_POUND),
+ LEVEL_UP_MOVE(14, MOVE_SWEET_KISS),
+ LEVEL_UP_END
+};
+
+static const u16 sTogepiLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_CHARM),
+ LEVEL_UP_MOVE(4, MOVE_METRONOME),
+ LEVEL_UP_MOVE(9, MOVE_SWEET_KISS),
+ LEVEL_UP_MOVE(13, MOVE_YAWN),
+ LEVEL_UP_MOVE(17, MOVE_ENCORE),
+ LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(25, MOVE_FOLLOW_ME),
+ LEVEL_UP_MOVE(29, MOVE_WISH),
+ LEVEL_UP_MOVE(33, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_MOVE(41, MOVE_BATON_PASS),
+ LEVEL_UP_END
+};
+
+static const u16 sTogeticLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_MAGICAL_LEAF),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_CHARM),
+ LEVEL_UP_MOVE(1, MOVE_METRONOME),
+ LEVEL_UP_MOVE(1, MOVE_SWEET_KISS),
+ LEVEL_UP_MOVE(4, MOVE_METRONOME),
+ LEVEL_UP_MOVE(9, MOVE_SWEET_KISS),
+ LEVEL_UP_MOVE(13, MOVE_YAWN),
+ LEVEL_UP_MOVE(17, MOVE_ENCORE),
+ LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(25, MOVE_FOLLOW_ME),
+ LEVEL_UP_MOVE(29, MOVE_WISH),
+ LEVEL_UP_MOVE(33, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_MOVE(41, MOVE_BATON_PASS),
+ LEVEL_UP_END
+};
+
+static const u16 sNatuLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(10, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(20, MOVE_TELEPORT),
+ LEVEL_UP_MOVE(30, MOVE_WISH),
+ LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(40, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(50, MOVE_PSYCHIC),
+ LEVEL_UP_END
+};
+
+static const u16 sXatuLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(10, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(20, MOVE_TELEPORT),
+ LEVEL_UP_MOVE(35, MOVE_WISH),
+ LEVEL_UP_MOVE(35, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(50, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(65, MOVE_PSYCHIC),
+ LEVEL_UP_END
+};
+
+static const u16 sMareepLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(9, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(16, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(23, MOVE_COTTON_SPORE),
+ LEVEL_UP_MOVE(30, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(37, MOVE_THUNDER),
+ LEVEL_UP_END
+};
+
+static const u16 sFlaaffyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(9, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(27, MOVE_COTTON_SPORE),
+ LEVEL_UP_MOVE(36, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(45, MOVE_THUNDER),
+ LEVEL_UP_END
+};
+
+static const u16 sAmpharosLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(9, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(27, MOVE_COTTON_SPORE),
+ LEVEL_UP_MOVE(30, MOVE_THUNDER_PUNCH),
+ LEVEL_UP_MOVE(42, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(57, MOVE_THUNDER),
+ LEVEL_UP_END
+};
+
+static const u16 sBellossomLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(1, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(1, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(1, MOVE_MAGICAL_LEAF),
+ LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE),
+ LEVEL_UP_MOVE(55, MOVE_SOLAR_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sMarillLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(3, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(6, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(10, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(15, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(21, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(28, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_MOVE(36, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sAzumarillLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(3, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(6, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(10, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(15, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(24, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(34, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(57, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sSudowoodoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(1, MOVE_MIMIC),
+ LEVEL_UP_MOVE(9, MOVE_FLAIL),
+ LEVEL_UP_MOVE(17, MOVE_LOW_KICK),
+ LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE),
+ LEVEL_UP_MOVE(33, MOVE_BLOCK),
+ LEVEL_UP_MOVE(41, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(49, MOVE_SLAM),
+ LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sPolitoedLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(1, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(1, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_MOVE(1, MOVE_PERISH_SONG),
+ LEVEL_UP_MOVE(35, MOVE_PERISH_SONG),
+ LEVEL_UP_MOVE(51, MOVE_SWAGGER),
+ LEVEL_UP_END
+};
+
+static const u16 sHoppipLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(5, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(5, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(10, MOVE_TACKLE),
+ LEVEL_UP_MOVE(13, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(15, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(20, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(25, MOVE_COTTON_SPORE),
+ LEVEL_UP_MOVE(30, MOVE_MEGA_DRAIN),
+ LEVEL_UP_END
+};
+
+static const u16 sSkiploomLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(1, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(5, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(5, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(10, MOVE_TACKLE),
+ LEVEL_UP_MOVE(13, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(15, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(22, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(29, MOVE_COTTON_SPORE),
+ LEVEL_UP_MOVE(36, MOVE_MEGA_DRAIN),
+ LEVEL_UP_END
+};
+
+static const u16 sJumpluffLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(1, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(5, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(5, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(10, MOVE_TACKLE),
+ LEVEL_UP_MOVE(13, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(15, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER),
+ LEVEL_UP_MOVE(22, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(33, MOVE_COTTON_SPORE),
+ LEVEL_UP_MOVE(44, MOVE_MEGA_DRAIN),
+ LEVEL_UP_END
+};
+
+static const u16 sAipomLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(6, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(18, MOVE_BATON_PASS),
+ LEVEL_UP_MOVE(25, MOVE_TICKLE),
+ LEVEL_UP_MOVE(31, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(38, MOVE_SWIFT),
+ LEVEL_UP_MOVE(43, MOVE_SCREECH),
+ LEVEL_UP_MOVE(50, MOVE_AGILITY),
+ LEVEL_UP_END
+};
+
+static const u16 sSunkernLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(6, MOVE_GROWTH),
+ LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN),
+ LEVEL_UP_MOVE(18, MOVE_INGRAIN),
+ LEVEL_UP_MOVE(25, MOVE_ENDEAVOR),
+ LEVEL_UP_MOVE(30, MOVE_SUNNY_DAY),
+ LEVEL_UP_MOVE(37, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(42, MOVE_GIGA_DRAIN),
+ LEVEL_UP_END
+};
+
+static const u16 sSunfloraLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(6, MOVE_GROWTH),
+ LEVEL_UP_MOVE(13, MOVE_RAZOR_LEAF),
+ LEVEL_UP_MOVE(18, MOVE_INGRAIN),
+ LEVEL_UP_MOVE(25, MOVE_BULLET_SEED),
+ LEVEL_UP_MOVE(30, MOVE_SUNNY_DAY),
+ LEVEL_UP_MOVE(37, MOVE_PETAL_DANCE),
+ LEVEL_UP_MOVE(42, MOVE_SOLAR_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sYanmaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(6, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(12, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(17, MOVE_SONIC_BOOM),
+ LEVEL_UP_MOVE(23, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(28, MOVE_DETECT),
+ LEVEL_UP_MOVE(34, MOVE_UPROAR),
+ LEVEL_UP_MOVE(39, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(45, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(50, MOVE_SCREECH),
+ LEVEL_UP_END
+};
+
+static const u16 sWooperLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(11, MOVE_SLAM),
+ LEVEL_UP_MOVE(16, MOVE_MUD_SHOT),
+ LEVEL_UP_MOVE(21, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(31, MOVE_YAWN),
+ LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(41, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(51, MOVE_MIST),
+ LEVEL_UP_MOVE(51, MOVE_HAZE),
+ LEVEL_UP_END
+};
+
+static const u16 sQuagsireLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(11, MOVE_SLAM),
+ LEVEL_UP_MOVE(16, MOVE_MUD_SHOT),
+ LEVEL_UP_MOVE(23, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(35, MOVE_YAWN),
+ LEVEL_UP_MOVE(42, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(49, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(61, MOVE_MIST),
+ LEVEL_UP_MOVE(61, MOVE_HAZE),
+ LEVEL_UP_END
+};
+
+static const u16 sEspeonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(8, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(16, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(30, MOVE_SWIFT),
+ LEVEL_UP_MOVE(36, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(42, MOVE_PSYCH_UP),
+ LEVEL_UP_MOVE(47, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(52, MOVE_MORNING_SUN),
+ LEVEL_UP_END
+};
+
+static const u16 sUmbreonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(8, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(16, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(36, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK),
+ LEVEL_UP_MOVE(47, MOVE_SCREECH),
+ LEVEL_UP_MOVE(52, MOVE_MOONLIGHT),
+ LEVEL_UP_END
+};
+
+static const u16 sMurkrowLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(9, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(14, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(22, MOVE_HAZE),
+ LEVEL_UP_MOVE(27, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(35, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(40, MOVE_TAUNT),
+ LEVEL_UP_MOVE(48, MOVE_MEAN_LOOK),
+ LEVEL_UP_END
+};
+
+static const u16 sSlowkingLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CURSE),
+ LEVEL_UP_MOVE(1, MOVE_YAWN),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(6, MOVE_GROWL),
+ LEVEL_UP_MOVE(13, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(17, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(24, MOVE_DISABLE),
+ LEVEL_UP_MOVE(29, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(36, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(40, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(47, MOVE_PSYCH_UP),
+ LEVEL_UP_END
+};
+
+static const u16 sMisdreavusLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_PSYWAVE),
+ LEVEL_UP_MOVE(6, MOVE_SPITE),
+ LEVEL_UP_MOVE(11, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(23, MOVE_MEAN_LOOK),
+ LEVEL_UP_MOVE(30, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(37, MOVE_PAIN_SPLIT),
+ LEVEL_UP_MOVE(45, MOVE_PERISH_SONG),
+ LEVEL_UP_MOVE(53, MOVE_GRUDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sUnownLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HIDDEN_POWER),
+ LEVEL_UP_END
+};
+
+static const u16 sWobbuffetLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_COUNTER),
+ LEVEL_UP_MOVE(1, MOVE_MIRROR_COAT),
+ LEVEL_UP_MOVE(1, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(1, MOVE_DESTINY_BOND),
+ LEVEL_UP_END
+};
+
+static const u16 sGirafarigLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(7, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(13, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(19, MOVE_STOMP),
+ LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(31, MOVE_AGILITY),
+ LEVEL_UP_MOVE(37, MOVE_BATON_PASS),
+ LEVEL_UP_MOVE(43, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(49, MOVE_CRUNCH),
+ LEVEL_UP_END
+};
+
+static const u16 sPinecoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_PROTECT),
+ LEVEL_UP_MOVE(8, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(15, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(22, MOVE_RAPID_SPIN),
+ LEVEL_UP_MOVE(29, MOVE_BIDE),
+ LEVEL_UP_MOVE(36, MOVE_EXPLOSION),
+ LEVEL_UP_MOVE(43, MOVE_SPIKES),
+ LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sForretressLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_PROTECT),
+ LEVEL_UP_MOVE(1, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(8, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(15, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(22, MOVE_RAPID_SPIN),
+ LEVEL_UP_MOVE(29, MOVE_BIDE),
+ LEVEL_UP_MOVE(31, MOVE_ZAP_CANNON),
+ LEVEL_UP_MOVE(39, MOVE_EXPLOSION),
+ LEVEL_UP_MOVE(49, MOVE_SPIKES),
+ LEVEL_UP_MOVE(59, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sDunsparceLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_RAGE),
+ LEVEL_UP_MOVE(4, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(11, MOVE_YAWN),
+ LEVEL_UP_MOVE(14, MOVE_GLARE),
+ LEVEL_UP_MOVE(21, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(24, MOVE_SPITE),
+ LEVEL_UP_MOVE(31, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(34, MOVE_SCREECH),
+ LEVEL_UP_MOVE(41, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(44, MOVE_FLAIL),
+ LEVEL_UP_MOVE(51, MOVE_ENDEAVOR),
+ LEVEL_UP_END
+};
+
+static const u16 sGligarLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(6, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_HARDEN),
+ LEVEL_UP_MOVE(20, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(28, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(36, MOVE_SLASH),
+ LEVEL_UP_MOVE(44, MOVE_SCREECH),
+ LEVEL_UP_MOVE(52, MOVE_GUILLOTINE),
+ LEVEL_UP_END
+};
+
+static const u16 sSteelixLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_SCREECH),
+ LEVEL_UP_MOVE(8, MOVE_BIND),
+ LEVEL_UP_MOVE(12, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(19, MOVE_HARDEN),
+ LEVEL_UP_MOVE(23, MOVE_RAGE),
+ LEVEL_UP_MOVE(30, MOVE_DRAGON_BREATH),
+ LEVEL_UP_MOVE(34, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(41, MOVE_SLAM),
+ LEVEL_UP_MOVE(45, MOVE_IRON_TAIL),
+ LEVEL_UP_MOVE(52, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(56, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sSnubbullLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(4, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(8, MOVE_CHARM),
+ LEVEL_UP_MOVE(13, MOVE_BITE),
+ LEVEL_UP_MOVE(19, MOVE_LICK),
+ LEVEL_UP_MOVE(26, MOVE_ROAR),
+ LEVEL_UP_MOVE(34, MOVE_RAGE),
+ LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(53, MOVE_CRUNCH),
+ LEVEL_UP_END
+};
+
+static const u16 sGranbullLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(4, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(8, MOVE_CHARM),
+ LEVEL_UP_MOVE(13, MOVE_BITE),
+ LEVEL_UP_MOVE(19, MOVE_LICK),
+ LEVEL_UP_MOVE(28, MOVE_ROAR),
+ LEVEL_UP_MOVE(38, MOVE_RAGE),
+ LEVEL_UP_MOVE(49, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(61, MOVE_CRUNCH),
+ LEVEL_UP_END
+};
+
+static const u16 sQwilfishLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SPIKES),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(9, MOVE_HARDEN),
+ LEVEL_UP_MOVE(9, MOVE_MINIMIZE),
+ LEVEL_UP_MOVE(13, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE),
+ LEVEL_UP_MOVE(25, MOVE_REVENGE),
+ LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(37, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(45, MOVE_DESTINY_BOND),
+ LEVEL_UP_END
+};
+
+static const u16 sScizorLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(6, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(11, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(16, MOVE_FALSE_SWIPE),
+ LEVEL_UP_MOVE(21, MOVE_AGILITY),
+ LEVEL_UP_MOVE(26, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(31, MOVE_SLASH),
+ LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE),
+ LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE),
+ LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER),
+ LEVEL_UP_END
+};
+
+static const u16 sShuckleLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(1, MOVE_WITHDRAW),
+ LEVEL_UP_MOVE(9, MOVE_WRAP),
+ LEVEL_UP_MOVE(14, MOVE_ENCORE),
+ LEVEL_UP_MOVE(23, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(28, MOVE_BIDE),
+ LEVEL_UP_MOVE(37, MOVE_REST),
+ LEVEL_UP_END
+};
+
+static const u16 sHeracrossLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(6, MOVE_HORN_ATTACK),
+ LEVEL_UP_MOVE(11, MOVE_ENDURE),
+ LEVEL_UP_MOVE(17, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(23, MOVE_BRICK_BREAK),
+ LEVEL_UP_MOVE(30, MOVE_COUNTER),
+ LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(45, MOVE_REVERSAL),
+ LEVEL_UP_MOVE(53, MOVE_MEGAHORN),
+ LEVEL_UP_END
+};
+
+static const u16 sSneaselLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_TAUNT),
+ LEVEL_UP_MOVE(8, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(15, MOVE_SCREECH),
+ LEVEL_UP_MOVE(22, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(36, MOVE_AGILITY),
+ LEVEL_UP_MOVE(43, MOVE_ICY_WIND),
+ LEVEL_UP_MOVE(50, MOVE_SLASH),
+ LEVEL_UP_MOVE(57, MOVE_BEAT_UP),
+ LEVEL_UP_MOVE(64, MOVE_METAL_CLAW),
+ LEVEL_UP_END
+};
+
+static const u16 sTeddiursaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(7, MOVE_LICK),
+ LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(19, MOVE_FAKE_TEARS),
+ LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(31, MOVE_REST),
+ LEVEL_UP_MOVE(37, MOVE_SLASH),
+ LEVEL_UP_MOVE(43, MOVE_SNORE),
+ LEVEL_UP_MOVE(49, MOVE_THRASH),
+ LEVEL_UP_END
+};
+
+static const u16 sUrsaringLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_LICK),
+ LEVEL_UP_MOVE(1, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(7, MOVE_LICK),
+ LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(19, MOVE_FAKE_TEARS),
+ LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(31, MOVE_REST),
+ LEVEL_UP_MOVE(37, MOVE_SLASH),
+ LEVEL_UP_MOVE(43, MOVE_SNORE),
+ LEVEL_UP_MOVE(49, MOVE_THRASH),
+ LEVEL_UP_END
+};
+
+static const u16 sSlugmaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_YAWN),
+ LEVEL_UP_MOVE(1, MOVE_SMOG),
+ LEVEL_UP_MOVE(8, MOVE_EMBER),
+ LEVEL_UP_MOVE(15, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(22, MOVE_HARDEN),
+ LEVEL_UP_MOVE(29, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(43, MOVE_ROCK_SLIDE),
+ LEVEL_UP_MOVE(50, MOVE_BODY_SLAM),
+ LEVEL_UP_END
+};
+
+static const u16 sMagcargoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_YAWN),
+ LEVEL_UP_MOVE(1, MOVE_SMOG),
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(1, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(8, MOVE_EMBER),
+ LEVEL_UP_MOVE(15, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(22, MOVE_HARDEN),
+ LEVEL_UP_MOVE(29, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(48, MOVE_ROCK_SLIDE),
+ LEVEL_UP_MOVE(60, MOVE_BODY_SLAM),
+ LEVEL_UP_END
+};
+
+static const u16 sSwinubLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(19, MOVE_ENDURE),
+ LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(37, MOVE_MIST),
+ LEVEL_UP_MOVE(46, MOVE_BLIZZARD),
+ LEVEL_UP_MOVE(55, MOVE_AMNESIA),
+ LEVEL_UP_END
+};
+
+static const u16 sPiloswineLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HORN_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(1, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(1, MOVE_ENDURE),
+ LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(19, MOVE_ENDURE),
+ LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(33, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(42, MOVE_MIST),
+ LEVEL_UP_MOVE(56, MOVE_BLIZZARD),
+ LEVEL_UP_MOVE(70, MOVE_AMNESIA),
+ LEVEL_UP_END
+};
+
+static const u16 sCorsolaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(6, MOVE_HARDEN),
+ LEVEL_UP_MOVE(12, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(17, MOVE_RECOVER),
+ LEVEL_UP_MOVE(17, MOVE_REFRESH),
+ LEVEL_UP_MOVE(23, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(28, MOVE_SPIKE_CANNON),
+ LEVEL_UP_MOVE(34, MOVE_ROCK_BLAST),
+ LEVEL_UP_MOVE(39, MOVE_MIRROR_COAT),
+ LEVEL_UP_MOVE(45, MOVE_ANCIENT_POWER),
+ LEVEL_UP_END
+};
+
+static const u16 sRemoraidLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(11, MOVE_LOCK_ON),
+ LEVEL_UP_MOVE(22, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM),
+ LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(33, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(44, MOVE_ICE_BEAM),
+ LEVEL_UP_MOVE(55, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sOctilleryLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(11, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(22, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM),
+ LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(25, MOVE_OCTAZOOKA),
+ LEVEL_UP_MOVE(38, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(54, MOVE_ICE_BEAM),
+ LEVEL_UP_MOVE(70, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sDelibirdLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PRESENT),
+ LEVEL_UP_END
+};
+
+static const u16 sMantineLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(8, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(15, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(22, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(29, MOVE_AGILITY),
+ LEVEL_UP_MOVE(36, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(43, MOVE_WATER_PULSE),
+ LEVEL_UP_MOVE(50, MOVE_CONFUSE_RAY),
+ LEVEL_UP_END
+};
+
+static const u16 sSkarmoryLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(10, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_SWIFT),
+ LEVEL_UP_MOVE(16, MOVE_AGILITY),
+ LEVEL_UP_MOVE(26, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(29, MOVE_AIR_CUTTER),
+ LEVEL_UP_MOVE(32, MOVE_STEEL_WING),
+ LEVEL_UP_MOVE(42, MOVE_SPIKES),
+ LEVEL_UP_MOVE(45, MOVE_METAL_SOUND),
+ LEVEL_UP_END
+};
+
+static const u16 sHoundourLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(7, MOVE_HOWL),
+ LEVEL_UP_MOVE(13, MOVE_SMOG),
+ LEVEL_UP_MOVE(19, MOVE_ROAR),
+ LEVEL_UP_MOVE(25, MOVE_BITE),
+ LEVEL_UP_MOVE(31, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(37, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(49, MOVE_CRUNCH),
+ LEVEL_UP_END
+};
+
+static const u16 sHoundoomLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(1, MOVE_HOWL),
+ LEVEL_UP_MOVE(7, MOVE_HOWL),
+ LEVEL_UP_MOVE(13, MOVE_SMOG),
+ LEVEL_UP_MOVE(19, MOVE_ROAR),
+ LEVEL_UP_MOVE(27, MOVE_BITE),
+ LEVEL_UP_MOVE(35, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(43, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(51, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(59, MOVE_CRUNCH),
+ LEVEL_UP_END
+};
+
+static const u16 sKingdraLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(1, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(8, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(15, MOVE_LEER),
+ LEVEL_UP_MOVE(22, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(29, MOVE_TWISTER),
+ LEVEL_UP_MOVE(40, MOVE_AGILITY),
+ LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(62, MOVE_DRAGON_DANCE),
+ LEVEL_UP_END
+};
+
+static const u16 sPhanpyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(9, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(17, MOVE_FLAIL),
+ LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(33, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(41, MOVE_ENDURE),
+ LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sDonphanLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(1, MOVE_HORN_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(9, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(17, MOVE_FLAIL),
+ LEVEL_UP_MOVE(25, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(33, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(41, MOVE_RAPID_SPIN),
+ LEVEL_UP_MOVE(49, MOVE_EARTHQUAKE),
+ LEVEL_UP_END
+};
+
+static const u16 sPorygon2LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CONVERSION_2),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_CONVERSION),
+ LEVEL_UP_MOVE(9, MOVE_AGILITY),
+ LEVEL_UP_MOVE(12, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(20, MOVE_RECOVER),
+ LEVEL_UP_MOVE(24, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(32, MOVE_LOCK_ON),
+ LEVEL_UP_MOVE(36, MOVE_TRI_ATTACK),
+ LEVEL_UP_MOVE(44, MOVE_RECYCLE),
+ LEVEL_UP_MOVE(48, MOVE_ZAP_CANNON),
+ LEVEL_UP_END
+};
+
+static const u16 sStantlerLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(7, MOVE_LEER),
+ LEVEL_UP_MOVE(11, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(17, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(21, MOVE_STOMP),
+ LEVEL_UP_MOVE(27, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(31, MOVE_ROLE_PLAY),
+ LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(41, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(47, MOVE_CALM_MIND),
+ LEVEL_UP_END
+};
+
+static const u16 sSmeargleLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SKETCH),
+ LEVEL_UP_MOVE(11, MOVE_SKETCH),
+ LEVEL_UP_MOVE(21, MOVE_SKETCH),
+ LEVEL_UP_MOVE(31, MOVE_SKETCH),
+ LEVEL_UP_MOVE(41, MOVE_SKETCH),
+ LEVEL_UP_MOVE(51, MOVE_SKETCH),
+ LEVEL_UP_MOVE(61, MOVE_SKETCH),
+ LEVEL_UP_MOVE(71, MOVE_SKETCH),
+ LEVEL_UP_MOVE(81, MOVE_SKETCH),
+ LEVEL_UP_MOVE(91, MOVE_SKETCH),
+ LEVEL_UP_END
+};
+
+static const u16 sTyrogueLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sHitmontopLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_REVENGE),
+ LEVEL_UP_MOVE(1, MOVE_ROLLING_KICK),
+ LEVEL_UP_MOVE(7, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(13, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(20, MOVE_TRIPLE_KICK),
+ LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN),
+ LEVEL_UP_MOVE(31, MOVE_COUNTER),
+ LEVEL_UP_MOVE(37, MOVE_AGILITY),
+ LEVEL_UP_MOVE(43, MOVE_DETECT),
+ LEVEL_UP_MOVE(49, MOVE_ENDEAVOR),
+ LEVEL_UP_END
+};
+
+static const u16 sSmoochumLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_LICK),
+ LEVEL_UP_MOVE(9, MOVE_SWEET_KISS),
+ LEVEL_UP_MOVE(13, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(21, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(25, MOVE_SING),
+ LEVEL_UP_MOVE(33, MOVE_MEAN_LOOK),
+ LEVEL_UP_MOVE(37, MOVE_FAKE_TEARS),
+ LEVEL_UP_MOVE(45, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(49, MOVE_PERISH_SONG),
+ LEVEL_UP_MOVE(57, MOVE_BLIZZARD),
+ LEVEL_UP_END
+};
+
+static const u16 sElekidLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(9, MOVE_THUNDER_PUNCH),
+ LEVEL_UP_MOVE(17, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(25, MOVE_SWIFT),
+ LEVEL_UP_MOVE(33, MOVE_SCREECH),
+ LEVEL_UP_MOVE(41, MOVE_THUNDERBOLT),
+ LEVEL_UP_MOVE(49, MOVE_THUNDER),
+ LEVEL_UP_END
+};
+
+static const u16 sMagbyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(7, MOVE_LEER),
+ LEVEL_UP_MOVE(13, MOVE_SMOG),
+ LEVEL_UP_MOVE(19, MOVE_FIRE_PUNCH),
+ LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY),
+ LEVEL_UP_MOVE(37, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(43, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(49, MOVE_FIRE_BLAST),
+ LEVEL_UP_END
+};
+
+static const u16 sMiltankLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(4, MOVE_GROWL),
+ LEVEL_UP_MOVE(8, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(13, MOVE_STOMP),
+ LEVEL_UP_MOVE(19, MOVE_MILK_DRINK),
+ LEVEL_UP_MOVE(26, MOVE_BIDE),
+ LEVEL_UP_MOVE(34, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(43, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(53, MOVE_HEAL_BELL),
+ LEVEL_UP_END
+};
+
+static const u16 sBlisseyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(4, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(7, MOVE_REFRESH),
+ LEVEL_UP_MOVE(10, MOVE_SOFT_BOILED),
+ LEVEL_UP_MOVE(13, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_MOVE(18, MOVE_MINIMIZE),
+ LEVEL_UP_MOVE(23, MOVE_SING),
+ LEVEL_UP_MOVE(28, MOVE_EGG_BOMB),
+ LEVEL_UP_MOVE(33, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(40, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sRaikouLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(11, MOVE_THUNDER_SHOCK),
+ LEVEL_UP_MOVE(21, MOVE_ROAR),
+ LEVEL_UP_MOVE(31, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(41, MOVE_SPARK),
+ LEVEL_UP_MOVE(51, MOVE_REFLECT),
+ LEVEL_UP_MOVE(61, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(71, MOVE_THUNDER),
+ LEVEL_UP_MOVE(81, MOVE_CALM_MIND),
+ LEVEL_UP_END
+};
+
+static const u16 sEnteiLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(11, MOVE_EMBER),
+ LEVEL_UP_MOVE(21, MOVE_ROAR),
+ LEVEL_UP_MOVE(31, MOVE_FIRE_SPIN),
+ LEVEL_UP_MOVE(41, MOVE_STOMP),
+ LEVEL_UP_MOVE(51, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(61, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(71, MOVE_FIRE_BLAST),
+ LEVEL_UP_MOVE(81, MOVE_CALM_MIND),
+ LEVEL_UP_END
+};
+
+static const u16 sSuicuneLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(11, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(21, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(31, MOVE_GUST),
+ LEVEL_UP_MOVE(41, MOVE_AURORA_BEAM),
+ LEVEL_UP_MOVE(51, MOVE_MIST),
+ LEVEL_UP_MOVE(61, MOVE_MIRROR_COAT),
+ LEVEL_UP_MOVE(71, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(81, MOVE_CALM_MIND),
+ LEVEL_UP_END
+};
+
+static const u16 sLarvitarLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(8, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(15, MOVE_SCREECH),
+ LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE),
+ LEVEL_UP_MOVE(29, MOVE_THRASH),
+ LEVEL_UP_MOVE(36, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(43, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(50, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sPupitarLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(1, MOVE_SCREECH),
+ LEVEL_UP_MOVE(8, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(15, MOVE_SCREECH),
+ LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE),
+ LEVEL_UP_MOVE(29, MOVE_THRASH),
+ LEVEL_UP_MOVE(38, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(47, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(56, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sTyranitarLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(1, MOVE_SCREECH),
+ LEVEL_UP_MOVE(8, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(15, MOVE_SCREECH),
+ LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE),
+ LEVEL_UP_MOVE(29, MOVE_THRASH),
+ LEVEL_UP_MOVE(38, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(47, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(61, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sLugiaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WHIRLWIND),
+ LEVEL_UP_MOVE(11, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(22, MOVE_GUST),
+ LEVEL_UP_MOVE(33, MOVE_RECOVER),
+ LEVEL_UP_MOVE(44, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(55, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(66, MOVE_SWIFT),
+ LEVEL_UP_MOVE(77, MOVE_AEROBLAST),
+ LEVEL_UP_MOVE(88, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(99, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_END
+};
+
+static const u16 sHoOhLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WHIRLWIND),
+ LEVEL_UP_MOVE(11, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(22, MOVE_GUST),
+ LEVEL_UP_MOVE(33, MOVE_RECOVER),
+ LEVEL_UP_MOVE(44, MOVE_FIRE_BLAST),
+ LEVEL_UP_MOVE(55, MOVE_SUNNY_DAY),
+ LEVEL_UP_MOVE(66, MOVE_SWIFT),
+ LEVEL_UP_MOVE(77, MOVE_SACRED_FIRE),
+ LEVEL_UP_MOVE(88, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(99, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_END
+};
+
+static const u16 sCelebiLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(1, MOVE_RECOVER),
+ LEVEL_UP_MOVE(1, MOVE_HEAL_BELL),
+ LEVEL_UP_MOVE(10, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(20, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(40, MOVE_BATON_PASS),
+ LEVEL_UP_MOVE(50, MOVE_PERISH_SONG),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies252LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies253LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies254LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies255LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies256LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies257LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies258LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies259LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies260LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies261LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies262LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies263LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies264LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies265LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies266LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies267LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies268LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies269LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies270LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies271LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies272LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies273LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies274LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies275LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sSpecies276LevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+static const u16 sTreeckoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(6, MOVE_ABSORB),
+ LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(16, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(21, MOVE_SCREECH),
+ LEVEL_UP_MOVE(26, MOVE_MEGA_DRAIN),
+ LEVEL_UP_MOVE(31, MOVE_AGILITY),
+ LEVEL_UP_MOVE(36, MOVE_SLAM),
+ LEVEL_UP_MOVE(41, MOVE_DETECT),
+ LEVEL_UP_MOVE(46, MOVE_GIGA_DRAIN),
+ LEVEL_UP_END
+};
+
+static const u16 sGrovyleLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(6, MOVE_ABSORB),
+ LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER),
+ LEVEL_UP_MOVE(17, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(23, MOVE_SCREECH),
+ LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE),
+ LEVEL_UP_MOVE(35, MOVE_AGILITY),
+ LEVEL_UP_MOVE(41, MOVE_SLAM),
+ LEVEL_UP_MOVE(47, MOVE_DETECT),
+ LEVEL_UP_MOVE(53, MOVE_FALSE_SWIPE),
+ LEVEL_UP_END
+};
+
+static const u16 sSceptileLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(6, MOVE_ABSORB),
+ LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER),
+ LEVEL_UP_MOVE(17, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(23, MOVE_SCREECH),
+ LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE),
+ LEVEL_UP_MOVE(35, MOVE_AGILITY),
+ LEVEL_UP_MOVE(43, MOVE_SLAM),
+ LEVEL_UP_MOVE(51, MOVE_DETECT),
+ LEVEL_UP_MOVE(59, MOVE_FALSE_SWIPE),
+ LEVEL_UP_END
+};
+
+static const u16 sTorchicLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(7, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(10, MOVE_EMBER),
+ LEVEL_UP_MOVE(16, MOVE_PECK),
+ LEVEL_UP_MOVE(19, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN),
+ LEVEL_UP_MOVE(28, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(34, MOVE_SLASH),
+ LEVEL_UP_MOVE(37, MOVE_MIRROR_MOVE),
+ LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER),
+ LEVEL_UP_END
+};
+
+static const u16 sCombuskenLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(7, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(13, MOVE_EMBER),
+ LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK),
+ LEVEL_UP_MOVE(17, MOVE_PECK),
+ LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(28, MOVE_BULK_UP),
+ LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(39, MOVE_SLASH),
+ LEVEL_UP_MOVE(43, MOVE_MIRROR_MOVE),
+ LEVEL_UP_MOVE(50, MOVE_SKY_UPPERCUT),
+ LEVEL_UP_END
+};
+
+static const u16 sBlazikenLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_FIRE_PUNCH),
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(7, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(13, MOVE_EMBER),
+ LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK),
+ LEVEL_UP_MOVE(17, MOVE_PECK),
+ LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(28, MOVE_BULK_UP),
+ LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(36, MOVE_BLAZE_KICK),
+ LEVEL_UP_MOVE(42, MOVE_SLASH),
+ LEVEL_UP_MOVE(49, MOVE_MIRROR_MOVE),
+ LEVEL_UP_MOVE(59, MOVE_SKY_UPPERCUT),
+ LEVEL_UP_END
+};
+
+static const u16 sMudkipLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(6, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(10, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(15, MOVE_BIDE),
+ LEVEL_UP_MOVE(19, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(24, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(33, MOVE_WHIRLPOOL),
+ LEVEL_UP_MOVE(37, MOVE_PROTECT),
+ LEVEL_UP_MOVE(42, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(46, MOVE_ENDEAVOR),
+ LEVEL_UP_END
+};
+
+static const u16 sMarshtompLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(6, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(10, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(15, MOVE_BIDE),
+ LEVEL_UP_MOVE(16, MOVE_MUD_SHOT),
+ LEVEL_UP_MOVE(20, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(25, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(37, MOVE_MUDDY_WATER),
+ LEVEL_UP_MOVE(42, MOVE_PROTECT),
+ LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(53, MOVE_ENDEAVOR),
+ LEVEL_UP_END
+};
+
+static const u16 sSwampertLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(6, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(10, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(15, MOVE_BIDE),
+ LEVEL_UP_MOVE(16, MOVE_MUD_SHOT),
+ LEVEL_UP_MOVE(20, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(25, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(39, MOVE_MUDDY_WATER),
+ LEVEL_UP_MOVE(46, MOVE_PROTECT),
+ LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(61, MOVE_ENDEAVOR),
+ LEVEL_UP_END
+};
+
+static const u16 sPoochyenaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(5, MOVE_HOWL),
+ LEVEL_UP_MOVE(9, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_BITE),
+ LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(21, MOVE_ROAR),
+ LEVEL_UP_MOVE(25, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(29, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(37, MOVE_TAUNT),
+ LEVEL_UP_MOVE(41, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(45, MOVE_THIEF),
+ LEVEL_UP_END
+};
+
+static const u16 sMightyenaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_HOWL),
+ LEVEL_UP_MOVE(1, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(5, MOVE_HOWL),
+ LEVEL_UP_MOVE(9, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_BITE),
+ LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(22, MOVE_ROAR),
+ LEVEL_UP_MOVE(27, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(32, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(42, MOVE_TAUNT),
+ LEVEL_UP_MOVE(47, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(52, MOVE_THIEF),
+ LEVEL_UP_END
+};
+
+static const u16 sZigzagoonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(5, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(9, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(21, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(25, MOVE_PIN_MISSILE),
+ LEVEL_UP_MOVE(29, MOVE_COVET),
+ LEVEL_UP_MOVE(33, MOVE_FLAIL),
+ LEVEL_UP_MOVE(37, MOVE_REST),
+ LEVEL_UP_MOVE(41, MOVE_BELLY_DRUM),
+ LEVEL_UP_END
+};
+
+static const u16 sLinooneLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(5, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(9, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(23, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(35, MOVE_COVET),
+ LEVEL_UP_MOVE(41, MOVE_SLASH),
+ LEVEL_UP_MOVE(47, MOVE_REST),
+ LEVEL_UP_MOVE(53, MOVE_BELLY_DRUM),
+ LEVEL_UP_END
+};
+
+static const u16 sWurmpleLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_STRING_SHOT),
+ LEVEL_UP_MOVE(5, MOVE_POISON_STING),
+ LEVEL_UP_END
+};
+
+static const u16 sSilcoonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(7, MOVE_HARDEN),
+ LEVEL_UP_END
+};
+
+static const u16 sBeautiflyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(10, MOVE_ABSORB),
+ LEVEL_UP_MOVE(13, MOVE_GUST),
+ LEVEL_UP_MOVE(17, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(20, MOVE_MORNING_SUN),
+ LEVEL_UP_MOVE(24, MOVE_MEGA_DRAIN),
+ LEVEL_UP_MOVE(27, MOVE_WHIRLWIND),
+ LEVEL_UP_MOVE(31, MOVE_ATTRACT),
+ LEVEL_UP_MOVE(34, MOVE_SILVER_WIND),
+ LEVEL_UP_MOVE(38, MOVE_GIGA_DRAIN),
+ LEVEL_UP_END
+};
+
+static const u16 sCascoonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(7, MOVE_HARDEN),
+ LEVEL_UP_END
+};
+
+static const u16 sDustoxLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(10, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(13, MOVE_GUST),
+ LEVEL_UP_MOVE(17, MOVE_PROTECT),
+ LEVEL_UP_MOVE(20, MOVE_MOONLIGHT),
+ LEVEL_UP_MOVE(24, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(27, MOVE_WHIRLWIND),
+ LEVEL_UP_MOVE(31, MOVE_LIGHT_SCREEN),
+ LEVEL_UP_MOVE(34, MOVE_SILVER_WIND),
+ LEVEL_UP_MOVE(38, MOVE_TOXIC),
+ LEVEL_UP_END
+};
+
+static const u16 sLotadLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(3, MOVE_GROWL),
+ LEVEL_UP_MOVE(7, MOVE_ABSORB),
+ LEVEL_UP_MOVE(13, MOVE_NATURE_POWER),
+ LEVEL_UP_MOVE(21, MOVE_MIST),
+ LEVEL_UP_MOVE(31, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(43, MOVE_MEGA_DRAIN),
+ LEVEL_UP_END
+};
+
+static const u16 sLombreLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(3, MOVE_GROWL),
+ LEVEL_UP_MOVE(7, MOVE_ABSORB),
+ LEVEL_UP_MOVE(13, MOVE_NATURE_POWER),
+ LEVEL_UP_MOVE(19, MOVE_FAKE_OUT),
+ LEVEL_UP_MOVE(25, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(31, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(37, MOVE_THIEF),
+ LEVEL_UP_MOVE(43, MOVE_UPROAR),
+ LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sLudicoloLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(1, MOVE_NATURE_POWER),
+ LEVEL_UP_END
+};
+
+static const u16 sSeedotLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BIDE),
+ LEVEL_UP_MOVE(3, MOVE_HARDEN),
+ LEVEL_UP_MOVE(7, MOVE_GROWTH),
+ LEVEL_UP_MOVE(13, MOVE_NATURE_POWER),
+ LEVEL_UP_MOVE(21, MOVE_SYNTHESIS),
+ LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY),
+ LEVEL_UP_MOVE(43, MOVE_EXPLOSION),
+ LEVEL_UP_END
+};
+
+static const u16 sNuzleafLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(3, MOVE_HARDEN),
+ LEVEL_UP_MOVE(7, MOVE_GROWTH),
+ LEVEL_UP_MOVE(13, MOVE_NATURE_POWER),
+ LEVEL_UP_MOVE(19, MOVE_FAKE_OUT),
+ LEVEL_UP_MOVE(25, MOVE_TORMENT),
+ LEVEL_UP_MOVE(31, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(37, MOVE_RAZOR_WIND),
+ LEVEL_UP_MOVE(43, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(49, MOVE_EXTRASENSORY),
+ LEVEL_UP_END
+};
+
+static const u16 sShiftryLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(1, MOVE_GROWTH),
+ LEVEL_UP_MOVE(1, MOVE_NATURE_POWER),
+ LEVEL_UP_END
+};
+
+static const u16 sNincadaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(5, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(9, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(19, MOVE_MIND_READER),
+ LEVEL_UP_MOVE(25, MOVE_FALSE_SWIPE),
+ LEVEL_UP_MOVE(31, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(38, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(45, MOVE_DIG),
+ LEVEL_UP_END
+};
+
+static const u16 sNinjaskLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(1, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(1, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(5, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(9, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(19, MOVE_MIND_READER),
+ LEVEL_UP_MOVE(20, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(20, MOVE_FURY_CUTTER),
+ LEVEL_UP_MOVE(20, MOVE_SCREECH),
+ LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE),
+ LEVEL_UP_MOVE(31, MOVE_SLASH),
+ LEVEL_UP_MOVE(38, MOVE_AGILITY),
+ LEVEL_UP_MOVE(45, MOVE_BATON_PASS),
+ LEVEL_UP_END
+};
+
+static const u16 sShedinjaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(5, MOVE_LEECH_LIFE),
+ LEVEL_UP_MOVE(9, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(19, MOVE_MIND_READER),
+ LEVEL_UP_MOVE(25, MOVE_SPITE),
+ LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(38, MOVE_SHADOW_BALL),
+ LEVEL_UP_MOVE(45, MOVE_GRUDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sTaillowLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(4, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(8, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(26, MOVE_ENDEAVOR),
+ LEVEL_UP_MOVE(34, MOVE_AERIAL_ACE),
+ LEVEL_UP_MOVE(43, MOVE_AGILITY),
+ LEVEL_UP_END
+};
+
+static const u16 sSwellowLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(4, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(8, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(28, MOVE_ENDEAVOR),
+ LEVEL_UP_MOVE(38, MOVE_AERIAL_ACE),
+ LEVEL_UP_MOVE(49, MOVE_AGILITY),
+ LEVEL_UP_END
+};
+
+static const u16 sShroomishLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(4, MOVE_TACKLE),
+ LEVEL_UP_MOVE(7, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(10, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN),
+ LEVEL_UP_MOVE(22, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(28, MOVE_POISON_POWDER),
+ LEVEL_UP_MOVE(36, MOVE_GROWTH),
+ LEVEL_UP_MOVE(45, MOVE_GIGA_DRAIN),
+ LEVEL_UP_MOVE(54, MOVE_SPORE),
+ LEVEL_UP_END
+};
+
+static const u16 sBreloomLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(1, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(4, MOVE_TACKLE),
+ LEVEL_UP_MOVE(7, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(10, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN),
+ LEVEL_UP_MOVE(22, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(23, MOVE_MACH_PUNCH),
+ LEVEL_UP_MOVE(28, MOVE_COUNTER),
+ LEVEL_UP_MOVE(36, MOVE_SKY_UPPERCUT),
+ LEVEL_UP_MOVE(45, MOVE_MIND_READER),
+ LEVEL_UP_MOVE(54, MOVE_DYNAMIC_PUNCH),
+ LEVEL_UP_END
+};
+
+static const u16 sSpindaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(5, MOVE_UPROAR),
+ LEVEL_UP_MOVE(12, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(16, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(23, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(27, MOVE_DIZZY_PUNCH),
+ LEVEL_UP_MOVE(34, MOVE_TEETER_DANCE),
+ LEVEL_UP_MOVE(38, MOVE_PSYCH_UP),
+ LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_MOVE(49, MOVE_FLAIL),
+ LEVEL_UP_MOVE(56, MOVE_THRASH),
+ LEVEL_UP_END
+};
+
+static const u16 sWingullLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(7, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(13, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(21, MOVE_MIST),
+ LEVEL_UP_MOVE(31, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(43, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(55, MOVE_AGILITY),
+ LEVEL_UP_END
+};
+
+static const u16 sPelipperLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(1, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(1, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(3, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(7, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(13, MOVE_WING_ATTACK),
+ LEVEL_UP_MOVE(21, MOVE_MIST),
+ LEVEL_UP_MOVE(25, MOVE_PROTECT),
+ LEVEL_UP_MOVE(33, MOVE_STOCKPILE),
+ LEVEL_UP_MOVE(33, MOVE_SWALLOW),
+ LEVEL_UP_MOVE(47, MOVE_SPIT_UP),
+ LEVEL_UP_MOVE(61, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sSurskitLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(7, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(19, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(31, MOVE_AGILITY),
+ LEVEL_UP_MOVE(37, MOVE_MIST),
+ LEVEL_UP_MOVE(37, MOVE_HAZE),
+ LEVEL_UP_END
+};
+
+static const u16 sMasquerainLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(1, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(1, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(7, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(19, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(26, MOVE_GUST),
+ LEVEL_UP_MOVE(33, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(40, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(47, MOVE_SILVER_WIND),
+ LEVEL_UP_MOVE(53, MOVE_WHIRLWIND),
+ LEVEL_UP_END
+};
+
+static const u16 sWailmerLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(5, MOVE_GROWL),
+ LEVEL_UP_MOVE(10, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(14, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(19, MOVE_WHIRLPOOL),
+ LEVEL_UP_MOVE(23, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(28, MOVE_WATER_PULSE),
+ LEVEL_UP_MOVE(32, MOVE_MIST),
+ LEVEL_UP_MOVE(37, MOVE_REST),
+ LEVEL_UP_MOVE(41, MOVE_WATER_SPOUT),
+ LEVEL_UP_MOVE(46, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sWailordLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(1, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(5, MOVE_GROWL),
+ LEVEL_UP_MOVE(10, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(14, MOVE_ROLLOUT),
+ LEVEL_UP_MOVE(19, MOVE_WHIRLPOOL),
+ LEVEL_UP_MOVE(23, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(28, MOVE_WATER_PULSE),
+ LEVEL_UP_MOVE(32, MOVE_MIST),
+ LEVEL_UP_MOVE(37, MOVE_REST),
+ LEVEL_UP_MOVE(44, MOVE_WATER_SPOUT),
+ LEVEL_UP_MOVE(52, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(59, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sSkittyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(3, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(7, MOVE_ATTRACT),
+ LEVEL_UP_MOVE(13, MOVE_SING),
+ LEVEL_UP_MOVE(15, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_MOVE(19, MOVE_ASSIST),
+ LEVEL_UP_MOVE(25, MOVE_CHARM),
+ LEVEL_UP_MOVE(27, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(31, MOVE_COVET),
+ LEVEL_UP_MOVE(37, MOVE_HEAL_BELL),
+ LEVEL_UP_MOVE(39, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sDelcattyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_ATTRACT),
+ LEVEL_UP_MOVE(1, MOVE_SING),
+ LEVEL_UP_MOVE(1, MOVE_DOUBLE_SLAP),
+ LEVEL_UP_END
+};
+
+static const u16 sKecleonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_THIEF),
+ LEVEL_UP_MOVE(1, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(1, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(1, MOVE_LICK),
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(4, MOVE_BIND),
+ LEVEL_UP_MOVE(7, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(17, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(24, MOVE_SCREECH),
+ LEVEL_UP_MOVE(31, MOVE_SLASH),
+ LEVEL_UP_MOVE(40, MOVE_SUBSTITUTE),
+ LEVEL_UP_MOVE(49, MOVE_ANCIENT_POWER),
+ LEVEL_UP_END
+};
+
+static const u16 sBaltoyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(3, MOVE_HARDEN),
+ LEVEL_UP_MOVE(5, MOVE_RAPID_SPIN),
+ LEVEL_UP_MOVE(7, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(11, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB),
+ LEVEL_UP_MOVE(19, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(31, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(37, MOVE_COSMIC_POWER),
+ LEVEL_UP_MOVE(45, MOVE_EXPLOSION),
+ LEVEL_UP_END
+};
+
+static const u16 sClaydolLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TELEPORT),
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(1, MOVE_RAPID_SPIN),
+ LEVEL_UP_MOVE(3, MOVE_HARDEN),
+ LEVEL_UP_MOVE(5, MOVE_RAPID_SPIN),
+ LEVEL_UP_MOVE(7, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(11, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB),
+ LEVEL_UP_MOVE(19, MOVE_SELF_DESTRUCT),
+ LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(31, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(36, MOVE_HYPER_BEAM),
+ LEVEL_UP_MOVE(42, MOVE_COSMIC_POWER),
+ LEVEL_UP_MOVE(55, MOVE_EXPLOSION),
+ LEVEL_UP_END
+};
+
+static const u16 sNosepassLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(7, MOVE_HARDEN),
+ LEVEL_UP_MOVE(13, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(16, MOVE_BLOCK),
+ LEVEL_UP_MOVE(22, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(28, MOVE_ROCK_SLIDE),
+ LEVEL_UP_MOVE(31, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(37, MOVE_REST),
+ LEVEL_UP_MOVE(43, MOVE_ZAP_CANNON),
+ LEVEL_UP_MOVE(46, MOVE_LOCK_ON),
+ LEVEL_UP_END
+};
+
+static const u16 sTorkoalLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(4, MOVE_SMOG),
+ LEVEL_UP_MOVE(7, MOVE_CURSE),
+ LEVEL_UP_MOVE(14, MOVE_SMOKESCREEN),
+ LEVEL_UP_MOVE(17, MOVE_FIRE_SPIN),
+ LEVEL_UP_MOVE(20, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(27, MOVE_PROTECT),
+ LEVEL_UP_MOVE(30, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(33, MOVE_IRON_DEFENSE),
+ LEVEL_UP_MOVE(40, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(43, MOVE_FLAIL),
+ LEVEL_UP_MOVE(46, MOVE_HEAT_WAVE),
+ LEVEL_UP_END
+};
+
+static const u16 sSableyeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(5, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(9, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(13, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(17, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(21, MOVE_FAKE_OUT),
+ LEVEL_UP_MOVE(25, MOVE_DETECT),
+ LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(33, MOVE_KNOCK_OFF),
+ LEVEL_UP_MOVE(37, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(41, MOVE_SHADOW_BALL),
+ LEVEL_UP_MOVE(45, MOVE_MEAN_LOOK),
+ LEVEL_UP_END
+};
+
+static const u16 sBarboachLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(6, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(6, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(11, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(16, MOVE_MAGNITUDE),
+ LEVEL_UP_MOVE(21, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(26, MOVE_REST),
+ LEVEL_UP_MOVE(26, MOVE_SNORE),
+ LEVEL_UP_MOVE(31, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(41, MOVE_FISSURE),
+ LEVEL_UP_END
+};
+
+static const u16 sWhiscashLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TICKLE),
+ LEVEL_UP_MOVE(1, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(1, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(1, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(6, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(6, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(11, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(16, MOVE_MAGNITUDE),
+ LEVEL_UP_MOVE(21, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(26, MOVE_REST),
+ LEVEL_UP_MOVE(26, MOVE_SNORE),
+ LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(46, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(56, MOVE_FISSURE),
+ LEVEL_UP_END
+};
+
+static const u16 sLuvdiscLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(4, MOVE_CHARM),
+ LEVEL_UP_MOVE(12, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(16, MOVE_AGILITY),
+ LEVEL_UP_MOVE(24, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(28, MOVE_ATTRACT),
+ LEVEL_UP_MOVE(36, MOVE_SWEET_KISS),
+ LEVEL_UP_MOVE(40, MOVE_FLAIL),
+ LEVEL_UP_MOVE(48, MOVE_SAFEGUARD),
+ LEVEL_UP_END
+};
+
+static const u16 sCorphishLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(7, MOVE_HARDEN),
+ LEVEL_UP_MOVE(10, MOVE_VICE_GRIP),
+ LEVEL_UP_MOVE(13, MOVE_LEER),
+ LEVEL_UP_MOVE(19, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(22, MOVE_PROTECT),
+ LEVEL_UP_MOVE(25, MOVE_KNOCK_OFF),
+ LEVEL_UP_MOVE(31, MOVE_TAUNT),
+ LEVEL_UP_MOVE(34, MOVE_CRABHAMMER),
+ LEVEL_UP_MOVE(37, MOVE_SWORDS_DANCE),
+ LEVEL_UP_MOVE(43, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(46, MOVE_GUILLOTINE),
+ LEVEL_UP_END
+};
+
+static const u16 sCrawdauntLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(1, MOVE_VICE_GRIP),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(7, MOVE_HARDEN),
+ LEVEL_UP_MOVE(10, MOVE_VICE_GRIP),
+ LEVEL_UP_MOVE(13, MOVE_LEER),
+ LEVEL_UP_MOVE(19, MOVE_BUBBLE_BEAM),
+ LEVEL_UP_MOVE(22, MOVE_PROTECT),
+ LEVEL_UP_MOVE(25, MOVE_KNOCK_OFF),
+ LEVEL_UP_MOVE(33, MOVE_TAUNT),
+ LEVEL_UP_MOVE(38, MOVE_CRABHAMMER),
+ LEVEL_UP_MOVE(43, MOVE_SWORDS_DANCE),
+ LEVEL_UP_MOVE(51, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(56, MOVE_GUILLOTINE),
+ LEVEL_UP_END
+};
+
+static const u16 sFeebasLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(15, MOVE_TACKLE),
+ LEVEL_UP_MOVE(30, MOVE_FLAIL),
+ LEVEL_UP_END
+};
+
+static const u16 sMiloticLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(5, MOVE_WRAP),
+ LEVEL_UP_MOVE(10, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(15, MOVE_REFRESH),
+ LEVEL_UP_MOVE(20, MOVE_WATER_PULSE),
+ LEVEL_UP_MOVE(25, MOVE_TWISTER),
+ LEVEL_UP_MOVE(30, MOVE_RECOVER),
+ LEVEL_UP_MOVE(35, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(45, MOVE_ATTRACT),
+ LEVEL_UP_MOVE(50, MOVE_SAFEGUARD),
+ LEVEL_UP_END
+};
+
+static const u16 sCarvanhaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(7, MOVE_RAGE),
+ LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(16, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(22, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(28, MOVE_SCREECH),
+ LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(37, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(43, MOVE_AGILITY),
+ LEVEL_UP_END
+};
+
+static const u16 sSharpedoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_RAGE),
+ LEVEL_UP_MOVE(1, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(7, MOVE_RAGE),
+ LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(16, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(22, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(28, MOVE_SCREECH),
+ LEVEL_UP_MOVE(33, MOVE_SLASH),
+ LEVEL_UP_MOVE(38, MOVE_TAUNT),
+ LEVEL_UP_MOVE(43, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(48, MOVE_SKULL_BASH),
+ LEVEL_UP_MOVE(53, MOVE_AGILITY),
+ LEVEL_UP_END
+};
+
+static const u16 sTrapinchLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(9, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(25, MOVE_SAND_TOMB),
+ LEVEL_UP_MOVE(33, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(41, MOVE_DIG),
+ LEVEL_UP_MOVE(49, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sVibravaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_SAND_TOMB),
+ LEVEL_UP_MOVE(9, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(25, MOVE_SAND_TOMB),
+ LEVEL_UP_MOVE(33, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH),
+ LEVEL_UP_MOVE(41, MOVE_SCREECH),
+ LEVEL_UP_MOVE(49, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sFlygonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_SAND_TOMB),
+ LEVEL_UP_MOVE(9, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(25, MOVE_SAND_TOMB),
+ LEVEL_UP_MOVE(33, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH),
+ LEVEL_UP_MOVE(41, MOVE_SCREECH),
+ LEVEL_UP_MOVE(53, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sMakuhitaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(4, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(10, MOVE_ARM_THRUST),
+ LEVEL_UP_MOVE(13, MOVE_VITAL_THROW),
+ LEVEL_UP_MOVE(19, MOVE_FAKE_OUT),
+ LEVEL_UP_MOVE(22, MOVE_WHIRLWIND),
+ LEVEL_UP_MOVE(28, MOVE_KNOCK_OFF),
+ LEVEL_UP_MOVE(31, MOVE_SMELLING_SALT),
+ LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM),
+ LEVEL_UP_MOVE(40, MOVE_ENDURE),
+ LEVEL_UP_MOVE(46, MOVE_SEISMIC_TOSS),
+ LEVEL_UP_MOVE(49, MOVE_REVERSAL),
+ LEVEL_UP_END
+};
+
+static const u16 sHariyamaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(1, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(1, MOVE_ARM_THRUST),
+ LEVEL_UP_MOVE(4, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(10, MOVE_ARM_THRUST),
+ LEVEL_UP_MOVE(13, MOVE_VITAL_THROW),
+ LEVEL_UP_MOVE(19, MOVE_FAKE_OUT),
+ LEVEL_UP_MOVE(22, MOVE_WHIRLWIND),
+ LEVEL_UP_MOVE(29, MOVE_KNOCK_OFF),
+ LEVEL_UP_MOVE(33, MOVE_SMELLING_SALT),
+ LEVEL_UP_MOVE(40, MOVE_BELLY_DRUM),
+ LEVEL_UP_MOVE(44, MOVE_ENDURE),
+ LEVEL_UP_MOVE(51, MOVE_SEISMIC_TOSS),
+ LEVEL_UP_MOVE(55, MOVE_REVERSAL),
+ LEVEL_UP_END
+};
+
+static const u16 sElectrikeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(4, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(9, MOVE_LEER),
+ LEVEL_UP_MOVE(12, MOVE_HOWL),
+ LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(20, MOVE_SPARK),
+ LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(28, MOVE_ROAR),
+ LEVEL_UP_MOVE(33, MOVE_BITE),
+ LEVEL_UP_MOVE(36, MOVE_THUNDER),
+ LEVEL_UP_MOVE(41, MOVE_CHARGE),
+ LEVEL_UP_END
+};
+
+static const u16 sManectricLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_HOWL),
+ LEVEL_UP_MOVE(4, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(9, MOVE_LEER),
+ LEVEL_UP_MOVE(12, MOVE_HOWL),
+ LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(20, MOVE_SPARK),
+ LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(31, MOVE_ROAR),
+ LEVEL_UP_MOVE(39, MOVE_BITE),
+ LEVEL_UP_MOVE(45, MOVE_THUNDER),
+ LEVEL_UP_MOVE(53, MOVE_CHARGE),
+ LEVEL_UP_END
+};
+
+static const u16 sNumelLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(11, MOVE_EMBER),
+ LEVEL_UP_MOVE(19, MOVE_MAGNITUDE),
+ LEVEL_UP_MOVE(25, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(31, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(41, MOVE_FLAMETHROWER),
+ LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sCameruptLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_EMBER),
+ LEVEL_UP_MOVE(1, MOVE_MAGNITUDE),
+ LEVEL_UP_MOVE(11, MOVE_EMBER),
+ LEVEL_UP_MOVE(19, MOVE_MAGNITUDE),
+ LEVEL_UP_MOVE(25, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(31, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(33, MOVE_ROCK_SLIDE),
+ LEVEL_UP_MOVE(37, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(45, MOVE_ERUPTION),
+ LEVEL_UP_MOVE(55, MOVE_FISSURE),
+ LEVEL_UP_END
+};
+
+static const u16 sSphealLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(7, MOVE_ENCORE),
+ LEVEL_UP_MOVE(13, MOVE_ICE_BALL),
+ LEVEL_UP_MOVE(19, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM),
+ LEVEL_UP_MOVE(31, MOVE_HAIL),
+ LEVEL_UP_MOVE(37, MOVE_REST),
+ LEVEL_UP_MOVE(37, MOVE_SNORE),
+ LEVEL_UP_MOVE(43, MOVE_BLIZZARD),
+ LEVEL_UP_MOVE(49, MOVE_SHEER_COLD),
+ LEVEL_UP_END
+};
+
+static const u16 sSealeoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(7, MOVE_ENCORE),
+ LEVEL_UP_MOVE(13, MOVE_ICE_BALL),
+ LEVEL_UP_MOVE(19, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM),
+ LEVEL_UP_MOVE(31, MOVE_HAIL),
+ LEVEL_UP_MOVE(39, MOVE_REST),
+ LEVEL_UP_MOVE(39, MOVE_SNORE),
+ LEVEL_UP_MOVE(47, MOVE_BLIZZARD),
+ LEVEL_UP_MOVE(55, MOVE_SHEER_COLD),
+ LEVEL_UP_END
+};
+
+static const u16 sWalreinLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_DEFENSE_CURL),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(7, MOVE_ENCORE),
+ LEVEL_UP_MOVE(13, MOVE_ICE_BALL),
+ LEVEL_UP_MOVE(19, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM),
+ LEVEL_UP_MOVE(31, MOVE_HAIL),
+ LEVEL_UP_MOVE(39, MOVE_REST),
+ LEVEL_UP_MOVE(39, MOVE_SNORE),
+ LEVEL_UP_MOVE(50, MOVE_BLIZZARD),
+ LEVEL_UP_MOVE(61, MOVE_SHEER_COLD),
+ LEVEL_UP_END
+};
+
+static const u16 sCacneaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(5, MOVE_ABSORB),
+ LEVEL_UP_MOVE(9, MOVE_GROWTH),
+ LEVEL_UP_MOVE(13, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE),
+ LEVEL_UP_MOVE(25, MOVE_INGRAIN),
+ LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(33, MOVE_SPIKES),
+ LEVEL_UP_MOVE(37, MOVE_NEEDLE_ARM),
+ LEVEL_UP_MOVE(41, MOVE_COTTON_SPORE),
+ LEVEL_UP_MOVE(45, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(49, MOVE_DESTINY_BOND),
+ LEVEL_UP_END
+};
+
+static const u16 sCacturneLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_REVENGE),
+ LEVEL_UP_MOVE(1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(1, MOVE_GROWTH),
+ LEVEL_UP_MOVE(5, MOVE_ABSORB),
+ LEVEL_UP_MOVE(9, MOVE_GROWTH),
+ LEVEL_UP_MOVE(13, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK),
+ LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE),
+ LEVEL_UP_MOVE(25, MOVE_INGRAIN),
+ LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(35, MOVE_SPIKES),
+ LEVEL_UP_MOVE(41, MOVE_NEEDLE_ARM),
+ LEVEL_UP_MOVE(47, MOVE_COTTON_SPORE),
+ LEVEL_UP_MOVE(53, MOVE_SANDSTORM),
+ LEVEL_UP_MOVE(59, MOVE_DESTINY_BOND),
+ LEVEL_UP_END
+};
+
+static const u16 sSnoruntLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(7, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(10, MOVE_BITE),
+ LEVEL_UP_MOVE(16, MOVE_ICY_WIND),
+ LEVEL_UP_MOVE(19, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(25, MOVE_PROTECT),
+ LEVEL_UP_MOVE(28, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(34, MOVE_ICE_BEAM),
+ LEVEL_UP_MOVE(37, MOVE_HAIL),
+ LEVEL_UP_MOVE(43, MOVE_BLIZZARD),
+ LEVEL_UP_END
+};
+
+static const u16 sGlalieLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(7, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(10, MOVE_BITE),
+ LEVEL_UP_MOVE(16, MOVE_ICY_WIND),
+ LEVEL_UP_MOVE(19, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(25, MOVE_PROTECT),
+ LEVEL_UP_MOVE(28, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(34, MOVE_ICE_BEAM),
+ LEVEL_UP_MOVE(42, MOVE_HAIL),
+ LEVEL_UP_MOVE(53, MOVE_BLIZZARD),
+ LEVEL_UP_MOVE(61, MOVE_SHEER_COLD),
+ LEVEL_UP_END
+};
+
+static const u16 sLunatoneLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(7, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(13, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(19, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(25, MOVE_PSYWAVE),
+ LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER),
+ LEVEL_UP_MOVE(37, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(43, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(49, MOVE_EXPLOSION),
+ LEVEL_UP_END
+};
+
+static const u16 sSolrockLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(7, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(13, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(19, MOVE_FIRE_SPIN),
+ LEVEL_UP_MOVE(25, MOVE_PSYWAVE),
+ LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER),
+ LEVEL_UP_MOVE(37, MOVE_ROCK_SLIDE),
+ LEVEL_UP_MOVE(43, MOVE_SOLAR_BEAM),
+ LEVEL_UP_MOVE(49, MOVE_EXPLOSION),
+ LEVEL_UP_END
+};
+
+static const u16 sAzurillLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(3, MOVE_CHARM),
+ LEVEL_UP_MOVE(6, MOVE_TAIL_WHIP),
+ LEVEL_UP_MOVE(10, MOVE_BUBBLE),
+ LEVEL_UP_MOVE(15, MOVE_SLAM),
+ LEVEL_UP_MOVE(21, MOVE_WATER_GUN),
+ LEVEL_UP_END
+};
+
+static const u16 sSpoinkLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(7, MOVE_PSYWAVE),
+ LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(16, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(19, MOVE_PSYCH_UP),
+ LEVEL_UP_MOVE(25, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(28, MOVE_MAGIC_COAT),
+ LEVEL_UP_MOVE(34, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(37, MOVE_REST),
+ LEVEL_UP_MOVE(37, MOVE_SNORE),
+ LEVEL_UP_MOVE(43, MOVE_BOUNCE),
+ LEVEL_UP_END
+};
+
+static const u16 sGrumpigLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(1, MOVE_PSYWAVE),
+ LEVEL_UP_MOVE(1, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(1, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(7, MOVE_PSYWAVE),
+ LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH),
+ LEVEL_UP_MOVE(16, MOVE_PSYBEAM),
+ LEVEL_UP_MOVE(19, MOVE_PSYCH_UP),
+ LEVEL_UP_MOVE(25, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(28, MOVE_MAGIC_COAT),
+ LEVEL_UP_MOVE(37, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(43, MOVE_REST),
+ LEVEL_UP_MOVE(43, MOVE_SNORE),
+ LEVEL_UP_MOVE(55, MOVE_BOUNCE),
+ LEVEL_UP_END
+};
+
+static const u16 sPlusleLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(4, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(19, MOVE_SPARK),
+ LEVEL_UP_MOVE(22, MOVE_ENCORE),
+ LEVEL_UP_MOVE(28, MOVE_FAKE_TEARS),
+ LEVEL_UP_MOVE(31, MOVE_CHARGE),
+ LEVEL_UP_MOVE(37, MOVE_THUNDER),
+ LEVEL_UP_MOVE(40, MOVE_BATON_PASS),
+ LEVEL_UP_MOVE(47, MOVE_AGILITY),
+ LEVEL_UP_END
+};
+
+static const u16 sMinunLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(4, MOVE_THUNDER_WAVE),
+ LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(13, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(19, MOVE_SPARK),
+ LEVEL_UP_MOVE(22, MOVE_ENCORE),
+ LEVEL_UP_MOVE(28, MOVE_CHARM),
+ LEVEL_UP_MOVE(31, MOVE_CHARGE),
+ LEVEL_UP_MOVE(37, MOVE_THUNDER),
+ LEVEL_UP_MOVE(40, MOVE_BATON_PASS),
+ LEVEL_UP_MOVE(47, MOVE_AGILITY),
+ LEVEL_UP_END
+};
+
+static const u16 sMawileLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(6, MOVE_FAKE_TEARS),
+ LEVEL_UP_MOVE(11, MOVE_BITE),
+ LEVEL_UP_MOVE(16, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(21, MOVE_VICE_GRIP),
+ LEVEL_UP_MOVE(26, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(31, MOVE_BATON_PASS),
+ LEVEL_UP_MOVE(36, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE),
+ LEVEL_UP_MOVE(46, MOVE_STOCKPILE),
+ LEVEL_UP_MOVE(46, MOVE_SWALLOW),
+ LEVEL_UP_MOVE(46, MOVE_SPIT_UP),
+ LEVEL_UP_END
+};
+
+static const u16 sMedititeLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BIDE),
+ LEVEL_UP_MOVE(4, MOVE_MEDITATE),
+ LEVEL_UP_MOVE(9, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(12, MOVE_DETECT),
+ LEVEL_UP_MOVE(17, MOVE_HIDDEN_POWER),
+ LEVEL_UP_MOVE(20, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(25, MOVE_MIND_READER),
+ LEVEL_UP_MOVE(28, MOVE_CALM_MIND),
+ LEVEL_UP_MOVE(33, MOVE_HI_JUMP_KICK),
+ LEVEL_UP_MOVE(36, MOVE_PSYCH_UP),
+ LEVEL_UP_MOVE(41, MOVE_REVERSAL),
+ LEVEL_UP_MOVE(44, MOVE_RECOVER),
+ LEVEL_UP_END
+};
+
+static const u16 sMedichamLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_FIRE_PUNCH),
+ LEVEL_UP_MOVE(1, MOVE_THUNDER_PUNCH),
+ LEVEL_UP_MOVE(1, MOVE_ICE_PUNCH),
+ LEVEL_UP_MOVE(1, MOVE_BIDE),
+ LEVEL_UP_MOVE(1, MOVE_MEDITATE),
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(1, MOVE_DETECT),
+ LEVEL_UP_MOVE(4, MOVE_MEDITATE),
+ LEVEL_UP_MOVE(9, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(12, MOVE_DETECT),
+ LEVEL_UP_MOVE(17, MOVE_HIDDEN_POWER),
+ LEVEL_UP_MOVE(20, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(25, MOVE_MIND_READER),
+ LEVEL_UP_MOVE(28, MOVE_CALM_MIND),
+ LEVEL_UP_MOVE(33, MOVE_HI_JUMP_KICK),
+ LEVEL_UP_MOVE(36, MOVE_PSYCH_UP),
+ LEVEL_UP_MOVE(47, MOVE_REVERSAL),
+ LEVEL_UP_MOVE(56, MOVE_RECOVER),
+ LEVEL_UP_END
+};
+
+static const u16 sSwabluLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(8, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(11, MOVE_SING),
+ LEVEL_UP_MOVE(18, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(21, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(28, MOVE_MIST),
+ LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(38, MOVE_MIRROR_MOVE),
+ LEVEL_UP_MOVE(41, MOVE_REFRESH),
+ LEVEL_UP_MOVE(48, MOVE_PERISH_SONG),
+ LEVEL_UP_END
+};
+
+static const u16 sAltariaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PECK),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(1, MOVE_SING),
+ LEVEL_UP_MOVE(8, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(11, MOVE_SING),
+ LEVEL_UP_MOVE(18, MOVE_FURY_ATTACK),
+ LEVEL_UP_MOVE(21, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(28, MOVE_MIST),
+ LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH),
+ LEVEL_UP_MOVE(40, MOVE_DRAGON_DANCE),
+ LEVEL_UP_MOVE(45, MOVE_REFRESH),
+ LEVEL_UP_MOVE(54, MOVE_PERISH_SONG),
+ LEVEL_UP_MOVE(59, MOVE_SKY_ATTACK),
+ LEVEL_UP_END
+};
+
+static const u16 sWynautLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(1, MOVE_CHARM),
+ LEVEL_UP_MOVE(1, MOVE_ENCORE),
+ LEVEL_UP_MOVE(15, MOVE_COUNTER),
+ LEVEL_UP_MOVE(15, MOVE_MIRROR_COAT),
+ LEVEL_UP_MOVE(15, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(15, MOVE_DESTINY_BOND),
+ LEVEL_UP_END
+};
+
+static const u16 sDuskullLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(5, MOVE_DISABLE),
+ LEVEL_UP_MOVE(12, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(16, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(27, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(34, MOVE_CURSE),
+ LEVEL_UP_MOVE(38, MOVE_WILL_O_WISP),
+ LEVEL_UP_MOVE(45, MOVE_MEAN_LOOK),
+ LEVEL_UP_MOVE(49, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_END
+};
+
+static const u16 sDusclopsLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_BIND),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(1, MOVE_DISABLE),
+ LEVEL_UP_MOVE(5, MOVE_DISABLE),
+ LEVEL_UP_MOVE(12, MOVE_FORESIGHT),
+ LEVEL_UP_MOVE(16, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(27, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(34, MOVE_CURSE),
+ LEVEL_UP_MOVE(37, MOVE_SHADOW_PUNCH),
+ LEVEL_UP_MOVE(41, MOVE_WILL_O_WISP),
+ LEVEL_UP_MOVE(51, MOVE_MEAN_LOOK),
+ LEVEL_UP_MOVE(58, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_END
+};
+
+static const u16 sRoseliaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ABSORB),
+ LEVEL_UP_MOVE(5, MOVE_GROWTH),
+ LEVEL_UP_MOVE(9, MOVE_POISON_STING),
+ LEVEL_UP_MOVE(13, MOVE_STUN_SPORE),
+ LEVEL_UP_MOVE(17, MOVE_MEGA_DRAIN),
+ LEVEL_UP_MOVE(21, MOVE_LEECH_SEED),
+ LEVEL_UP_MOVE(25, MOVE_MAGICAL_LEAF),
+ LEVEL_UP_MOVE(29, MOVE_GRASS_WHISTLE),
+ LEVEL_UP_MOVE(33, MOVE_GIGA_DRAIN),
+ LEVEL_UP_MOVE(37, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(41, MOVE_INGRAIN),
+ LEVEL_UP_MOVE(45, MOVE_TOXIC),
+ LEVEL_UP_MOVE(49, MOVE_PETAL_DANCE),
+ LEVEL_UP_MOVE(53, MOVE_AROMATHERAPY),
+ LEVEL_UP_MOVE(57, MOVE_SYNTHESIS),
+ LEVEL_UP_END
+};
+
+static const u16 sSlakothLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_YAWN),
+ LEVEL_UP_MOVE(7, MOVE_ENCORE),
+ LEVEL_UP_MOVE(13, MOVE_SLACK_OFF),
+ LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(25, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(31, MOVE_COVET),
+ LEVEL_UP_MOVE(37, MOVE_COUNTER),
+ LEVEL_UP_MOVE(43, MOVE_FLAIL),
+ LEVEL_UP_END
+};
+
+static const u16 sVigorothLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(1, MOVE_ENCORE),
+ LEVEL_UP_MOVE(1, MOVE_UPROAR),
+ LEVEL_UP_MOVE(7, MOVE_ENCORE),
+ LEVEL_UP_MOVE(13, MOVE_UPROAR),
+ LEVEL_UP_MOVE(19, MOVE_FURY_SWIPES),
+ LEVEL_UP_MOVE(25, MOVE_ENDURE),
+ LEVEL_UP_MOVE(31, MOVE_SLASH),
+ LEVEL_UP_MOVE(37, MOVE_COUNTER),
+ LEVEL_UP_MOVE(43, MOVE_FOCUS_PUNCH),
+ LEVEL_UP_MOVE(49, MOVE_REVERSAL),
+ LEVEL_UP_END
+};
+
+static const u16 sSlakingLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_YAWN),
+ LEVEL_UP_MOVE(1, MOVE_ENCORE),
+ LEVEL_UP_MOVE(1, MOVE_SLACK_OFF),
+ LEVEL_UP_MOVE(7, MOVE_ENCORE),
+ LEVEL_UP_MOVE(13, MOVE_SLACK_OFF),
+ LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(25, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(31, MOVE_COVET),
+ LEVEL_UP_MOVE(36, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(37, MOVE_COUNTER),
+ LEVEL_UP_MOVE(43, MOVE_FLAIL),
+ LEVEL_UP_END
+};
+
+static const u16 sGulpinLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(6, MOVE_YAWN),
+ LEVEL_UP_MOVE(9, MOVE_POISON_GAS),
+ LEVEL_UP_MOVE(14, MOVE_SLUDGE),
+ LEVEL_UP_MOVE(17, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(23, MOVE_ENCORE),
+ LEVEL_UP_MOVE(28, MOVE_TOXIC),
+ LEVEL_UP_MOVE(34, MOVE_STOCKPILE),
+ LEVEL_UP_MOVE(34, MOVE_SPIT_UP),
+ LEVEL_UP_MOVE(34, MOVE_SWALLOW),
+ LEVEL_UP_MOVE(39, MOVE_SLUDGE_BOMB),
+ LEVEL_UP_END
+};
+
+static const u16 sSwalotLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_YAWN),
+ LEVEL_UP_MOVE(1, MOVE_POISON_GAS),
+ LEVEL_UP_MOVE(1, MOVE_SLUDGE),
+ LEVEL_UP_MOVE(6, MOVE_YAWN),
+ LEVEL_UP_MOVE(9, MOVE_POISON_GAS),
+ LEVEL_UP_MOVE(14, MOVE_SLUDGE),
+ LEVEL_UP_MOVE(17, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(23, MOVE_ENCORE),
+ LEVEL_UP_MOVE(26, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(31, MOVE_TOXIC),
+ LEVEL_UP_MOVE(40, MOVE_STOCKPILE),
+ LEVEL_UP_MOVE(40, MOVE_SPIT_UP),
+ LEVEL_UP_MOVE(40, MOVE_SWALLOW),
+ LEVEL_UP_MOVE(48, MOVE_SLUDGE_BOMB),
+ LEVEL_UP_END
+};
+
+static const u16 sTropiusLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_GUST),
+ LEVEL_UP_MOVE(7, MOVE_GROWTH),
+ LEVEL_UP_MOVE(11, MOVE_RAZOR_LEAF),
+ LEVEL_UP_MOVE(17, MOVE_STOMP),
+ LEVEL_UP_MOVE(21, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(27, MOVE_WHIRLWIND),
+ LEVEL_UP_MOVE(31, MOVE_MAGICAL_LEAF),
+ LEVEL_UP_MOVE(37, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(41, MOVE_SOLAR_BEAM),
+ LEVEL_UP_MOVE(47, MOVE_SYNTHESIS),
+ LEVEL_UP_END
+};
+
+static const u16 sWhismurLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(5, MOVE_UPROAR),
+ LEVEL_UP_MOVE(11, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(15, MOVE_HOWL),
+ LEVEL_UP_MOVE(21, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(25, MOVE_STOMP),
+ LEVEL_UP_MOVE(31, MOVE_SCREECH),
+ LEVEL_UP_MOVE(35, MOVE_ROAR),
+ LEVEL_UP_MOVE(41, MOVE_REST),
+ LEVEL_UP_MOVE(41, MOVE_SLEEP_TALK),
+ LEVEL_UP_MOVE(45, MOVE_HYPER_VOICE),
+ LEVEL_UP_END
+};
+
+static const u16 sLoudredLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_UPROAR),
+ LEVEL_UP_MOVE(1, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(1, MOVE_HOWL),
+ LEVEL_UP_MOVE(5, MOVE_UPROAR),
+ LEVEL_UP_MOVE(11, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(15, MOVE_HOWL),
+ LEVEL_UP_MOVE(23, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(29, MOVE_STOMP),
+ LEVEL_UP_MOVE(37, MOVE_SCREECH),
+ LEVEL_UP_MOVE(43, MOVE_ROAR),
+ LEVEL_UP_MOVE(51, MOVE_REST),
+ LEVEL_UP_MOVE(51, MOVE_SLEEP_TALK),
+ LEVEL_UP_MOVE(57, MOVE_HYPER_VOICE),
+ LEVEL_UP_END
+};
+
+static const u16 sExploudLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_POUND),
+ LEVEL_UP_MOVE(1, MOVE_UPROAR),
+ LEVEL_UP_MOVE(1, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(1, MOVE_HOWL),
+ LEVEL_UP_MOVE(5, MOVE_UPROAR),
+ LEVEL_UP_MOVE(11, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(15, MOVE_HOWL),
+ LEVEL_UP_MOVE(23, MOVE_SUPERSONIC),
+ LEVEL_UP_MOVE(29, MOVE_STOMP),
+ LEVEL_UP_MOVE(37, MOVE_SCREECH),
+ LEVEL_UP_MOVE(40, MOVE_HYPER_BEAM),
+ LEVEL_UP_MOVE(45, MOVE_ROAR),
+ LEVEL_UP_MOVE(55, MOVE_REST),
+ LEVEL_UP_MOVE(55, MOVE_SLEEP_TALK),
+ LEVEL_UP_MOVE(63, MOVE_HYPER_VOICE),
+ LEVEL_UP_END
+};
+
+static const u16 sClamperlLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_CLAMP),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(1, MOVE_WHIRLPOOL),
+ LEVEL_UP_MOVE(1, MOVE_IRON_DEFENSE),
+ LEVEL_UP_END
+};
+
+static const u16 sHuntailLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WHIRLPOOL),
+ LEVEL_UP_MOVE(8, MOVE_BITE),
+ LEVEL_UP_MOVE(15, MOVE_SCREECH),
+ LEVEL_UP_MOVE(22, MOVE_WATER_PULSE),
+ LEVEL_UP_MOVE(29, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(36, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(43, MOVE_BATON_PASS),
+ LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sGorebyssLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WHIRLPOOL),
+ LEVEL_UP_MOVE(8, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(15, MOVE_AGILITY),
+ LEVEL_UP_MOVE(22, MOVE_WATER_PULSE),
+ LEVEL_UP_MOVE(29, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(36, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(43, MOVE_BATON_PASS),
+ LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sAbsolLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(5, MOVE_LEER),
+ LEVEL_UP_MOVE(9, MOVE_TAUNT),
+ LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(17, MOVE_RAZOR_WIND),
+ LEVEL_UP_MOVE(21, MOVE_BITE),
+ LEVEL_UP_MOVE(26, MOVE_SWORDS_DANCE),
+ LEVEL_UP_MOVE(31, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(36, MOVE_SLASH),
+ LEVEL_UP_MOVE(41, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(46, MOVE_PERISH_SONG),
+ LEVEL_UP_END
+};
+
+static const u16 sShuppetLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_KNOCK_OFF),
+ LEVEL_UP_MOVE(8, MOVE_SCREECH),
+ LEVEL_UP_MOVE(13, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(20, MOVE_CURSE),
+ LEVEL_UP_MOVE(25, MOVE_SPITE),
+ LEVEL_UP_MOVE(32, MOVE_WILL_O_WISP),
+ LEVEL_UP_MOVE(37, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(44, MOVE_SHADOW_BALL),
+ LEVEL_UP_MOVE(49, MOVE_SNATCH),
+ LEVEL_UP_MOVE(56, MOVE_GRUDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sBanetteLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_KNOCK_OFF),
+ LEVEL_UP_MOVE(1, MOVE_SCREECH),
+ LEVEL_UP_MOVE(1, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(1, MOVE_CURSE),
+ LEVEL_UP_MOVE(8, MOVE_SCREECH),
+ LEVEL_UP_MOVE(13, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(20, MOVE_CURSE),
+ LEVEL_UP_MOVE(25, MOVE_SPITE),
+ LEVEL_UP_MOVE(32, MOVE_WILL_O_WISP),
+ LEVEL_UP_MOVE(39, MOVE_FAINT_ATTACK),
+ LEVEL_UP_MOVE(48, MOVE_SHADOW_BALL),
+ LEVEL_UP_MOVE(55, MOVE_SNATCH),
+ LEVEL_UP_MOVE(64, MOVE_GRUDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sSeviperLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WRAP),
+ LEVEL_UP_MOVE(7, MOVE_LICK),
+ LEVEL_UP_MOVE(10, MOVE_BITE),
+ LEVEL_UP_MOVE(16, MOVE_POISON_TAIL),
+ LEVEL_UP_MOVE(19, MOVE_SCREECH),
+ LEVEL_UP_MOVE(25, MOVE_GLARE),
+ LEVEL_UP_MOVE(28, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(34, MOVE_POISON_FANG),
+ LEVEL_UP_MOVE(37, MOVE_SWAGGER),
+ LEVEL_UP_MOVE(43, MOVE_HAZE),
+ LEVEL_UP_END
+};
+
+static const u16 sZangooseLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(4, MOVE_LEER),
+ LEVEL_UP_MOVE(7, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(10, MOVE_SWORDS_DANCE),
+ LEVEL_UP_MOVE(13, MOVE_FURY_CUTTER),
+ LEVEL_UP_MOVE(19, MOVE_SLASH),
+ LEVEL_UP_MOVE(25, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(31, MOVE_CRUSH_CLAW),
+ LEVEL_UP_MOVE(37, MOVE_TAUNT),
+ LEVEL_UP_MOVE(46, MOVE_DETECT),
+ LEVEL_UP_MOVE(55, MOVE_FALSE_SWIPE),
+ LEVEL_UP_END
+};
+
+static const u16 sRelicanthLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(8, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB),
+ LEVEL_UP_MOVE(22, MOVE_YAWN),
+ LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(36, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(50, MOVE_REST),
+ LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_MOVE(64, MOVE_HYDRO_PUMP),
+ LEVEL_UP_END
+};
+
+static const u16 sAronLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(4, MOVE_HARDEN),
+ LEVEL_UP_MOVE(7, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(10, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(13, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE),
+ LEVEL_UP_MOVE(21, MOVE_ROAR),
+ LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(29, MOVE_IRON_TAIL),
+ LEVEL_UP_MOVE(34, MOVE_PROTECT),
+ LEVEL_UP_MOVE(39, MOVE_METAL_SOUND),
+ LEVEL_UP_MOVE(44, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sLaironLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(1, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(1, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(4, MOVE_HARDEN),
+ LEVEL_UP_MOVE(7, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(10, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(13, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE),
+ LEVEL_UP_MOVE(21, MOVE_ROAR),
+ LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(29, MOVE_IRON_TAIL),
+ LEVEL_UP_MOVE(37, MOVE_PROTECT),
+ LEVEL_UP_MOVE(45, MOVE_METAL_SOUND),
+ LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sAggronLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(1, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(1, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(4, MOVE_HARDEN),
+ LEVEL_UP_MOVE(7, MOVE_MUD_SLAP),
+ LEVEL_UP_MOVE(10, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(13, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE),
+ LEVEL_UP_MOVE(21, MOVE_ROAR),
+ LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(29, MOVE_IRON_TAIL),
+ LEVEL_UP_MOVE(37, MOVE_PROTECT),
+ LEVEL_UP_MOVE(50, MOVE_METAL_SOUND),
+ LEVEL_UP_MOVE(63, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sCastformLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(10, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(10, MOVE_EMBER),
+ LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW),
+ LEVEL_UP_MOVE(20, MOVE_RAIN_DANCE),
+ LEVEL_UP_MOVE(20, MOVE_SUNNY_DAY),
+ LEVEL_UP_MOVE(20, MOVE_HAIL),
+ LEVEL_UP_MOVE(30, MOVE_WEATHER_BALL),
+ LEVEL_UP_END
+};
+
+static const u16 sVolbeatLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(5, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(9, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(13, MOVE_MOONLIGHT),
+ LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(21, MOVE_TAIL_GLOW),
+ LEVEL_UP_MOVE(25, MOVE_SIGNAL_BEAM),
+ LEVEL_UP_MOVE(29, MOVE_PROTECT),
+ LEVEL_UP_MOVE(33, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sIllumiseLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TACKLE),
+ LEVEL_UP_MOVE(5, MOVE_SWEET_SCENT),
+ LEVEL_UP_MOVE(9, MOVE_CHARM),
+ LEVEL_UP_MOVE(13, MOVE_MOONLIGHT),
+ LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK),
+ LEVEL_UP_MOVE(21, MOVE_WISH),
+ LEVEL_UP_MOVE(25, MOVE_ENCORE),
+ LEVEL_UP_MOVE(29, MOVE_FLATTER),
+ LEVEL_UP_MOVE(33, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(37, MOVE_COVET),
+ LEVEL_UP_END
+};
+
+static const u16 sLileepLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(8, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(15, MOVE_ACID),
+ LEVEL_UP_MOVE(22, MOVE_INGRAIN),
+ LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(36, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(50, MOVE_STOCKPILE),
+ LEVEL_UP_MOVE(50, MOVE_SPIT_UP),
+ LEVEL_UP_MOVE(50, MOVE_SWALLOW),
+ LEVEL_UP_END
+};
+
+static const u16 sCradilyLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(1, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(1, MOVE_ACID),
+ LEVEL_UP_MOVE(1, MOVE_INGRAIN),
+ LEVEL_UP_MOVE(8, MOVE_CONSTRICT),
+ LEVEL_UP_MOVE(15, MOVE_ACID),
+ LEVEL_UP_MOVE(22, MOVE_INGRAIN),
+ LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY),
+ LEVEL_UP_MOVE(36, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(48, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(60, MOVE_STOCKPILE),
+ LEVEL_UP_MOVE(60, MOVE_SPIT_UP),
+ LEVEL_UP_MOVE(60, MOVE_SWALLOW),
+ LEVEL_UP_END
+};
+
+static const u16 sAnorithLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(7, MOVE_HARDEN),
+ LEVEL_UP_MOVE(13, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(19, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(25, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(31, MOVE_PROTECT),
+ LEVEL_UP_MOVE(37, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(43, MOVE_FURY_CUTTER),
+ LEVEL_UP_MOVE(49, MOVE_SLASH),
+ LEVEL_UP_MOVE(55, MOVE_ROCK_BLAST),
+ LEVEL_UP_END
+};
+
+static const u16 sArmaldoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_SCRATCH),
+ LEVEL_UP_MOVE(1, MOVE_HARDEN),
+ LEVEL_UP_MOVE(1, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(1, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(7, MOVE_HARDEN),
+ LEVEL_UP_MOVE(13, MOVE_MUD_SPORT),
+ LEVEL_UP_MOVE(19, MOVE_WATER_GUN),
+ LEVEL_UP_MOVE(25, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(31, MOVE_PROTECT),
+ LEVEL_UP_MOVE(37, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER),
+ LEVEL_UP_MOVE(55, MOVE_SLASH),
+ LEVEL_UP_MOVE(64, MOVE_ROCK_BLAST),
+ LEVEL_UP_END
+};
+
+static const u16 sRaltsLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(6, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(16, MOVE_TELEPORT),
+ LEVEL_UP_MOVE(21, MOVE_CALM_MIND),
+ LEVEL_UP_MOVE(26, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(31, MOVE_IMPRISON),
+ LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(41, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(46, MOVE_DREAM_EATER),
+ LEVEL_UP_END
+};
+
+static const u16 sKirliaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_MAGICAL_LEAF),
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(1, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(1, MOVE_TELEPORT),
+ LEVEL_UP_MOVE(6, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(16, MOVE_TELEPORT),
+ LEVEL_UP_MOVE(21, MOVE_CALM_MIND),
+ LEVEL_UP_MOVE(26, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(33, MOVE_IMPRISON),
+ LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(47, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(54, MOVE_DREAM_EATER),
+ LEVEL_UP_END
+};
+
+static const u16 sGardevoirLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_GROWL),
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(1, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(1, MOVE_TELEPORT),
+ LEVEL_UP_MOVE(6, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM),
+ LEVEL_UP_MOVE(16, MOVE_TELEPORT),
+ LEVEL_UP_MOVE(21, MOVE_CALM_MIND),
+ LEVEL_UP_MOVE(26, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(33, MOVE_IMPRISON),
+ LEVEL_UP_MOVE(42, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(51, MOVE_HYPNOSIS),
+ LEVEL_UP_MOVE(60, MOVE_DREAM_EATER),
+ LEVEL_UP_END
+};
+
+static const u16 sBagonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_RAGE),
+ LEVEL_UP_MOVE(5, MOVE_BITE),
+ LEVEL_UP_MOVE(9, MOVE_LEER),
+ LEVEL_UP_MOVE(17, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(25, MOVE_EMBER),
+ LEVEL_UP_MOVE(33, MOVE_DRAGON_BREATH),
+ LEVEL_UP_MOVE(37, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(41, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(49, MOVE_DRAGON_CLAW),
+ LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sShelgonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_RAGE),
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(5, MOVE_BITE),
+ LEVEL_UP_MOVE(9, MOVE_LEER),
+ LEVEL_UP_MOVE(17, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(25, MOVE_EMBER),
+ LEVEL_UP_MOVE(30, MOVE_PROTECT),
+ LEVEL_UP_MOVE(38, MOVE_DRAGON_BREATH),
+ LEVEL_UP_MOVE(47, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(56, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(69, MOVE_DRAGON_CLAW),
+ LEVEL_UP_MOVE(78, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sSalamenceLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_RAGE),
+ LEVEL_UP_MOVE(1, MOVE_BITE),
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(5, MOVE_BITE),
+ LEVEL_UP_MOVE(9, MOVE_LEER),
+ LEVEL_UP_MOVE(17, MOVE_HEADBUTT),
+ LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY),
+ LEVEL_UP_MOVE(25, MOVE_EMBER),
+ LEVEL_UP_MOVE(30, MOVE_PROTECT),
+ LEVEL_UP_MOVE(38, MOVE_DRAGON_BREATH),
+ LEVEL_UP_MOVE(47, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(50, MOVE_FLY),
+ LEVEL_UP_MOVE(61, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(79, MOVE_DRAGON_CLAW),
+ LEVEL_UP_MOVE(93, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_END
+};
+
+static const u16 sBeldumLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TAKE_DOWN),
+ LEVEL_UP_END
+};
+
+static const u16 sMetangLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(20, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(20, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(26, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(32, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(38, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE),
+ LEVEL_UP_MOVE(50, MOVE_METEOR_MASH),
+ LEVEL_UP_MOVE(56, MOVE_AGILITY),
+ LEVEL_UP_MOVE(62, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sMetagrossLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(1, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(1, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(20, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(20, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(26, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(32, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(38, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE),
+ LEVEL_UP_MOVE(55, MOVE_METEOR_MASH),
+ LEVEL_UP_MOVE(66, MOVE_AGILITY),
+ LEVEL_UP_MOVE(77, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sRegirockLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_EXPLOSION),
+ LEVEL_UP_MOVE(9, MOVE_ROCK_THROW),
+ LEVEL_UP_MOVE(17, MOVE_CURSE),
+ LEVEL_UP_MOVE(25, MOVE_SUPERPOWER),
+ LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE),
+ LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON),
+ LEVEL_UP_MOVE(57, MOVE_LOCK_ON),
+ LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sRegiceLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_EXPLOSION),
+ LEVEL_UP_MOVE(9, MOVE_ICY_WIND),
+ LEVEL_UP_MOVE(17, MOVE_CURSE),
+ LEVEL_UP_MOVE(25, MOVE_SUPERPOWER),
+ LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(41, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON),
+ LEVEL_UP_MOVE(57, MOVE_LOCK_ON),
+ LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sRegisteelLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_EXPLOSION),
+ LEVEL_UP_MOVE(9, MOVE_METAL_CLAW),
+ LEVEL_UP_MOVE(17, MOVE_CURSE),
+ LEVEL_UP_MOVE(25, MOVE_SUPERPOWER),
+ LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE),
+ LEVEL_UP_MOVE(41, MOVE_AMNESIA),
+ LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON),
+ LEVEL_UP_MOVE(57, MOVE_LOCK_ON),
+ LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sKyogreLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WATER_PULSE),
+ LEVEL_UP_MOVE(5, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(20, MOVE_BODY_SLAM),
+ LEVEL_UP_MOVE(30, MOVE_CALM_MIND),
+ LEVEL_UP_MOVE(35, MOVE_ICE_BEAM),
+ LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP),
+ LEVEL_UP_MOVE(50, MOVE_REST),
+ LEVEL_UP_MOVE(60, MOVE_SHEER_COLD),
+ LEVEL_UP_MOVE(65, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_MOVE(75, MOVE_WATER_SPOUT),
+ LEVEL_UP_END
+};
+
+static const u16 sGroudonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_MUD_SHOT),
+ LEVEL_UP_MOVE(5, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(20, MOVE_SLASH),
+ LEVEL_UP_MOVE(30, MOVE_BULK_UP),
+ LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE),
+ LEVEL_UP_MOVE(45, MOVE_FIRE_BLAST),
+ LEVEL_UP_MOVE(50, MOVE_REST),
+ LEVEL_UP_MOVE(60, MOVE_FISSURE),
+ LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM),
+ LEVEL_UP_MOVE(75, MOVE_ERUPTION),
+ LEVEL_UP_END
+};
+
+static const u16 sRayquazaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_TWISTER),
+ LEVEL_UP_MOVE(5, MOVE_SCARY_FACE),
+ LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER),
+ LEVEL_UP_MOVE(20, MOVE_DRAGON_CLAW),
+ LEVEL_UP_MOVE(30, MOVE_DRAGON_DANCE),
+ LEVEL_UP_MOVE(35, MOVE_CRUNCH),
+ LEVEL_UP_MOVE(45, MOVE_FLY),
+ LEVEL_UP_MOVE(50, MOVE_REST),
+ LEVEL_UP_MOVE(60, MOVE_EXTREME_SPEED),
+ LEVEL_UP_MOVE(65, MOVE_OUTRAGE),
+ LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sLatiasLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PSYWAVE),
+ LEVEL_UP_MOVE(5, MOVE_WISH),
+ LEVEL_UP_MOVE(10, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(15, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH),
+ LEVEL_UP_MOVE(25, MOVE_WATER_SPORT),
+ LEVEL_UP_MOVE(30, MOVE_REFRESH),
+ LEVEL_UP_MOVE(35, MOVE_MIST_BALL),
+ LEVEL_UP_MOVE(40, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(45, MOVE_RECOVER),
+ LEVEL_UP_MOVE(50, MOVE_CHARM),
+ LEVEL_UP_END
+};
+
+static const u16 sLatiosLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_PSYWAVE),
+ LEVEL_UP_MOVE(5, MOVE_MEMENTO),
+ LEVEL_UP_MOVE(10, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(15, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH),
+ LEVEL_UP_MOVE(25, MOVE_PROTECT),
+ LEVEL_UP_MOVE(30, MOVE_REFRESH),
+ LEVEL_UP_MOVE(35, MOVE_LUSTER_PURGE),
+ LEVEL_UP_MOVE(40, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(45, MOVE_RECOVER),
+ LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE),
+ LEVEL_UP_END
+};
+
+static const u16 sJirachiLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WISH),
+ LEVEL_UP_MOVE(1, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(5, MOVE_REST),
+ LEVEL_UP_MOVE(10, MOVE_SWIFT),
+ LEVEL_UP_MOVE(15, MOVE_HELPING_HAND),
+ LEVEL_UP_MOVE(20, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(25, MOVE_REFRESH),
+ LEVEL_UP_MOVE(30, MOVE_REST),
+ LEVEL_UP_MOVE(35, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT),
+ LEVEL_UP_MOVE(45, MOVE_COSMIC_POWER),
+ LEVEL_UP_MOVE(50, MOVE_DOOM_DESIRE),
+ LEVEL_UP_END
+};
+
+static const u16 sDeoxysLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_LEER),
+ LEVEL_UP_MOVE(1, MOVE_WRAP),
+ LEVEL_UP_MOVE(5, MOVE_NIGHT_SHADE),
+ LEVEL_UP_MOVE(10, MOVE_TELEPORT),
+ LEVEL_UP_MOVE(15, MOVE_TAUNT),
+ LEVEL_UP_MOVE(20, MOVE_PURSUIT),
+ LEVEL_UP_MOVE(25, MOVE_PSYCHIC),
+ LEVEL_UP_MOVE(30, MOVE_SUPERPOWER),
+ LEVEL_UP_MOVE(35, MOVE_COSMIC_POWER),
+ LEVEL_UP_MOVE(40, MOVE_ZAP_CANNON),
+ LEVEL_UP_MOVE(45, MOVE_PSYCHO_BOOST),
+ LEVEL_UP_MOVE(50, MOVE_HYPER_BEAM),
+ LEVEL_UP_END
+};
+
+static const u16 sChimechoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE(1, MOVE_WRAP),
+ LEVEL_UP_MOVE(6, MOVE_GROWL),
+ LEVEL_UP_MOVE(9, MOVE_ASTONISH),
+ LEVEL_UP_MOVE(14, MOVE_CONFUSION),
+ LEVEL_UP_MOVE(17, MOVE_TAKE_DOWN),
+ LEVEL_UP_MOVE(22, MOVE_UPROAR),
+ LEVEL_UP_MOVE(25, MOVE_YAWN),
+ LEVEL_UP_MOVE(30, MOVE_PSYWAVE),
+ LEVEL_UP_MOVE(33, MOVE_DOUBLE_EDGE),
+ LEVEL_UP_MOVE(38, MOVE_HEAL_BELL),
+ LEVEL_UP_MOVE(41, MOVE_SAFEGUARD),
+ LEVEL_UP_MOVE(46, MOVE_PSYCHIC),
+ LEVEL_UP_END
+};
diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h
new file mode 100644
index 000000000..1e3e347ca
--- /dev/null
+++ b/src/data/pokemon/tmhm_learnsets.h
@@ -0,0 +1,9388 @@
+#define TMHM_LEARNSET(moves) {(u32)(moves), ((u64)(moves) >> 32)}
+#define TMHM(tmhm) ((u64)1 << (ITEM_##tmhm - ITEM_TM01_FOCUS_PUNCH))
+
+// This table determines which TMs and HMs a species is capable of learning.
+// Each entry is a 64-bit bit array spread across two 32-bit values, with
+// each bit corresponding to a machine.
+static const u32 sTMHMLearnsets[][2] =
+{
+ [SPECIES_NONE] = TMHM_LEARNSET(0),
+
+ [SPECIES_BULBASAUR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_IVYSAUR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_VENUSAUR] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHARMANDER] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHARMELEON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHARIZARD] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SQUIRTLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_WARTORTLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_BLASTOISE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CATERPIE] = TMHM_LEARNSET(0),
+
+ [SPECIES_METAPOD] = TMHM_LEARNSET(0),
+
+ [SPECIES_BUTTERFREE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WEEDLE] = TMHM_LEARNSET(0),
+
+ [SPECIES_KAKUNA] = TMHM_LEARNSET(0),
+
+ [SPECIES_BEEDRILL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PIDGEY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_PIDGEOTTO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_PIDGEOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_RATTATA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RATICATE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SPEAROW] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_FEAROW] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_EKANS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_ARBOK] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_PIKACHU] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RAICHU] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SANDSHREW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SANDSLASH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDORAN_F] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDORINA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDOQUEEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDORAN_M] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDORINO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDOKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CLEFAIRY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CLEFABLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VULPIX] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)),
+
+ [SPECIES_NINETALES] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)),
+
+ [SPECIES_JIGGLYPUFF] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WIGGLYTUFF] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ZUBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM49_SNATCH)),
+
+ [SPECIES_GOLBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM49_SNATCH)),
+
+ [SPECIES_ODDISH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_GLOOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VILEPLUME] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_PARAS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PARASECT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_VENONAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VENOMOTH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_DIGLETT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DUGTRIO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEOWTH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_PERSIAN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_PSYDUCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GOLDUCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MANKEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PRIMEAPE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GROWLITHE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ARCANINE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_POLIWAG] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_POLIWHIRL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_POLIWRATH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_ABRA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_KADABRA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ALAKAZAM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MACHOP] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MACHOKE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MACHAMP] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BELLSPROUT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WEEPINBELL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VICTREEBEL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_TENTACOOL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_TENTACRUEL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GEODUDE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GRAVELER] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GOLEM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PONYTA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_RAPIDASH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_SLOWPOKE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SLOWBRO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MAGNEMITE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MAGNETON] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_FARFETCHD] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_DODUO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_DODRIO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_SEEL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_DEWGONG] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GRIMER] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)),
+
+ [SPECIES_MUK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHELLDER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CLOYSTER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GASTLY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)),
+
+ [SPECIES_HAUNTER] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)),
+
+ [SPECIES_GENGAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ONIX] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DROWZEE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_HYPNO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_KRABBY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_KINGLER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_VOLTORB] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ELECTRODE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_EXEGGCUTE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_EXEGGUTOR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CUBONE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAROWAK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HITMONLEE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HITMONCHAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_LICKITUNG] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KOFFING] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WEEZING] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_RHYHORN] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RHYDON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHANSEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TANGELA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KANGASKHAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HORSEA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SEADRA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GOLDEEN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SEAKING] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_STARYU] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_STARMIE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MR_MIME] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SCYTHER] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_JYNX] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ELECTABUZZ] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAGMAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PINSIR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TAUROS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAGIKARP] = TMHM_LEARNSET(0),
+
+ [SPECIES_GYARADOS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LAPRAS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_DITTO] = TMHM_LEARNSET(0),
+
+ [SPECIES_EEVEE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)),
+
+ [SPECIES_VAPOREON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_JOLTEON] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_FLAREON] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)),
+
+ [SPECIES_PORYGON] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_OMANYTE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_OMASTAR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_KABUTO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_KABUTOPS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_AERODACTYL] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SNORLAX] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_ARTICUNO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ZAPDOS] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MOLTRES] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DRATINI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_DRAGONAIR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_DRAGONITE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MEWTWO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CHIKORITA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_BAYLEEF] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEGANIUM] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CYNDAQUIL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)),
+
+ [SPECIES_QUILAVA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TYPHLOSION] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TOTODILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CROCONAW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_FERALIGATR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SENTRET] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)),
+
+ [SPECIES_FURRET] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HOOTHOOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_NOCTOWL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LEDYBA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LEDIAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SPINARAK] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ARIADOS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CROBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_CHINCHOU] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LANTURN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_PICHU] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CLEFFA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_IGGLYBUFF] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_TOGEPI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TOGETIC] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NATU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_XATU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MAREEP] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_FLAAFFY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_AMPHAROS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BELLOSSOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MARILL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_AZUMARILL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SUDOWOODO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_POLITOED] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_HOPPIP] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SKIPLOOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_JUMPLUFF] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_AIPOM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SUNKERN] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SUNFLORA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_YANMA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WOOPER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_QUAGSIRE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_ESPEON] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_UMBREON] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MURKROW] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_SLOWKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MISDREAVUS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_UNOWN] = TMHM_LEARNSET(0),
+
+ [SPECIES_WOBBUFFET] = TMHM_LEARNSET(0),
+
+ [SPECIES_GIRAFARIG] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PINECO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_FORRETRESS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DUNSPARCE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GLIGAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_STEELIX] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SNUBBULL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GRANBULL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_QWILFISH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SCIZOR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHUCKLE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HERACROSS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SNEASEL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TEDDIURSA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_URSARING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SLUGMA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAGCARGO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SWINUB] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PILOSWINE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CORSOLA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_REMORAID] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_OCTILLERY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_DELIBIRD] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_MANTINE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SKARMORY] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HOUNDOUR] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HOUNDOOM] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KINGDRA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_PHANPY] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DONPHAN] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PORYGON2] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_STANTLER] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SMEARGLE] = TMHM_LEARNSET(0),
+
+ [SPECIES_TYROGUE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HITMONTOP] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SMOOCHUM] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ELEKID] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAGBY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MILTANK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BLISSEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RAIKOU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ENTEI] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SUICUNE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LARVITAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PUPITAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TYRANITAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_LUGIA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_HO_OH] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CELEBI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_OLD_UNOWN_B] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_C] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_D] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_E] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_F] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_G] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_H] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_I] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_J] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_K] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_L] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_M] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_N] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_O] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_P] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_Q] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_R] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_S] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_T] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_U] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_V] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_W] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_X] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_Y] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_Z] = TMHM_LEARNSET(0),
+
+ [SPECIES_TREECKO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GROVYLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SCEPTILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TORCHIC] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_COMBUSKEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BLAZIKEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MUDKIP] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MARSHTOMP] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SWAMPERT] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_POOCHYENA] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MIGHTYENA] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ZIGZAGOON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_LINOONE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_WURMPLE] = TMHM_LEARNSET(0),
+
+ [SPECIES_SILCOON] = TMHM_LEARNSET(0),
+
+ [SPECIES_BEAUTIFLY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CASCOON] = TMHM_LEARNSET(0),
+
+ [SPECIES_DUSTOX] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LOTAD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LOMBRE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LUDICOLO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SEEDOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NUZLEAF] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHIFTRY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NINCADA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_NINJASK] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SHEDINJA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_TAILLOW] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_SWELLOW] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_SHROOMISH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_BRELOOM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SPINDA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_WINGULL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_PELIPPER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)),
+
+ [SPECIES_SURSKIT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MASQUERAIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WAILMER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_WAILORD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SKITTY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_DELCATTY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KECLEON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BALTOY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CLAYDOL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NOSEPASS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TORKOAL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SABLEYE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BARBOACH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_WHISCASH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LUVDISC] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CORPHISH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_CRAWDAUNT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_FEEBAS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MILOTIC] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CARVANHA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SHARPEDO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_TRAPINCH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_VIBRAVA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_FLYGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAKUHITA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HARIYAMA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ELECTRIKE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MANECTRIC] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_NUMEL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CAMERUPT] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SPHEAL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SEALEO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_WALREIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CACNEA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CACTURNE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SNORUNT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_GLALIE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LUNATONE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SOLROCK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_AZURILL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_SPOINK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_GRUMPIG] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_PLUSLE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MINUN] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MAWILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEDITITE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEDICHAM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SWABLU] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_ALTARIA] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_WYNAUT] = TMHM_LEARNSET(0),
+
+ [SPECIES_DUSKULL] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_DUSCLOPS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ROSELIA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SLAKOTH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_VIGOROTH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SLAKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GULPIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SWALOT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TROPIUS] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_WHISMUR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)),
+
+ [SPECIES_LOUDRED] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_EXPLOUD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CLAMPERL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_HUNTAIL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GOREBYSS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_ABSOL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHUPPET] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_BANETTE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SEVIPER] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ZANGOOSE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RELICANTH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_ARON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_LAIRON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_AGGRON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CASTFORM] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VOLBEAT] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ILLUMISE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LILEEP] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)),
+
+ [SPECIES_CRADILY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ANORITH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ARMALDO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RALTS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_KIRLIA] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_GARDEVOIR] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_BAGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHELGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SALAMENCE] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BELDUM] = TMHM_LEARNSET(0),
+
+ [SPECIES_METANG] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_METAGROSS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_REGIROCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_REGICE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_REGISTEEL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KYOGRE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GROUDON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RAYQUAZA] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LATIAS] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LATIOS] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_JIRACHI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_DEOXYS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHIMECHO] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+};
diff --git a/src/data/pokemon/trainer_class_lookups.h b/src/data/pokemon/trainer_class_lookups.h
new file mode 100644
index 000000000..faf23bf31
--- /dev/null
+++ b/src/data/pokemon/trainer_class_lookups.h
@@ -0,0 +1,308 @@
+// TODO: document trainer pic indices with macro
+const u8 gFacilityClassToPicIndex[] =
+{
+ [FACILITY_CLASS_AQUA_LEADER] = 0,
+ [FACILITY_CLASS_TEAM_AQUA] = 1,
+ [FACILITY_CLASS_TEAM_AQUA_2] = 2,
+ [FACILITY_CLASS_AROMA_LADY] = 3,
+ [FACILITY_CLASS_RUIN_MANIAC] = 4,
+ [FACILITY_CLASS_INTERVIEWER] = 5,
+ [FACILITY_CLASS_TUBER] = 6,
+ [FACILITY_CLASS_TUBER_2] = 7,
+ [FACILITY_CLASS_COOLTRAINER] = 8,
+ [FACILITY_CLASS_COOLTRAINER_2] = 9,
+ [FACILITY_CLASS_HEX_MANIAC] = 10,
+ [FACILITY_CLASS_LADY] = 11,
+ [FACILITY_CLASS_BEAUTY] = 12,
+ [FACILITY_CLASS_RICH_BOY] = 13,
+ [FACILITY_CLASS_POKEMANIAC] = 14,
+ [FACILITY_CLASS_SWIMMER_MALE] = 15,
+ [FACILITY_CLASS_BLACK_BELT] = 16,
+ [FACILITY_CLASS_GUITARIST] = 17,
+ [FACILITY_CLASS_KINDLER] = 18,
+ [FACILITY_CLASS_CAMPER] = 19,
+ [FACILITY_CLASS_BUG_MANIAC] = 20,
+ [FACILITY_CLASS_PSYCHIC] = 21,
+ [FACILITY_CLASS_PSYCHIC_2] = 22,
+ [FACILITY_CLASS_GENTLEMAN] = 23,
+ [FACILITY_CLASS_ELITE_FOUR] = 24,
+ [FACILITY_CLASS_ELITE_FOUR_2] = 25,
+ [FACILITY_CLASS_LEADER] = 26,
+ [FACILITY_CLASS_LEADER_2] = 27,
+ [FACILITY_CLASS_LEADER_3] = 28,
+ [FACILITY_CLASS_SCHOOL_KID] = 29,
+ [FACILITY_CLASS_SCHOOL_KID_2] = 30,
+ [FACILITY_CLASS_SR_AND_JR] = 31,
+ [FACILITY_CLASS_POKEFAN] = 32,
+ [FACILITY_CLASS_POKEFAN_2] = 33,
+ [FACILITY_CLASS_EXPERT] = 34,
+ [FACILITY_CLASS_EXPERT_2] = 35,
+ [FACILITY_CLASS_YOUNGSTER] = 36,
+ [FACILITY_CLASS_CHAMPION] = 37,
+ [FACILITY_CLASS_FISHERMAN] = 38,
+ [FACILITY_CLASS_TRIATHLETE] = 39,
+ [FACILITY_CLASS_TRIATHLETE_2] = 40,
+ [FACILITY_CLASS_TRIATHLETE_3] = 41,
+ [FACILITY_CLASS_TRIATHLETE_4] = 42,
+ [FACILITY_CLASS_TRIATHLETE_5] = 43,
+ [FACILITY_CLASS_TRIATHLETE_6] = 44,
+ [FACILITY_CLASS_DRAGON_TAMER] = 45,
+ [FACILITY_CLASS_BIRD_KEEPER] = 46,
+ [FACILITY_CLASS_NINJA_BOY] = 47,
+ [FACILITY_CLASS_BATTLE_GIRL] = 48,
+ [FACILITY_CLASS_PARASOL_LADY] = 49,
+ [FACILITY_CLASS_SWIMMER_FEMALE] = 50,
+ [FACILITY_CLASS_PICNICKER] = 51,
+ [FACILITY_CLASS_TWINS] = 52,
+ [FACILITY_CLASS_SAILOR] = 53,
+ [FACILITY_CLASS_BOARDER] = 36,
+ [FACILITY_CLASS_BOARDER_2] = 36,
+ [FACILITY_CLASS_COLLECTOR] = 54,
+ [FACILITY_CLASS_PKMN_TRAINER] = 55,
+ [FACILITY_CLASS_PKMN_TRAINER_2] = 56,
+ [FACILITY_CLASS_PKMN_TRAINER_3] = 56,
+ [FACILITY_CLASS_PKMN_TRAINER_4] = 56,
+ [FACILITY_CLASS_PKMN_TRAINER_5] = 57,
+ [FACILITY_CLASS_PKMN_TRAINER_6] = 57,
+ [FACILITY_CLASS_PKMN_TRAINER_7] = 57,
+ [FACILITY_CLASS_PKMN_BREEDER] = 58,
+ [FACILITY_CLASS_PKMN_BREEDER_2] = 59,
+ [FACILITY_CLASS_PKMN_RANGER] = 60,
+ [FACILITY_CLASS_PKMN_RANGER_2] = 61,
+ [FACILITY_CLASS_MAGMA_LEADER] = 62,
+ [FACILITY_CLASS_TEAM_MAGMA] = 63,
+ [FACILITY_CLASS_TEAM_MAGMA_2] = 64,
+ [FACILITY_CLASS_LASS] = 65,
+ [FACILITY_CLASS_BUG_CATCHER] = 66,
+ [FACILITY_CLASS_HIKER] = 67,
+ [FACILITY_CLASS_YOUNG_COUPLE] = 68,
+ [FACILITY_CLASS_OLD_COUPLE] = 69,
+ [FACILITY_CLASS_SIS_AND_BRO] = 70,
+ [FACILITY_CLASS_AQUA_ADMIN] = 71,
+ [FACILITY_CLASS_AQUA_ADMIN_2] = 72,
+ [FACILITY_CLASS_MAGMA_ADMIN] = 73,
+ [FACILITY_CLASS_MAGMA_ADMIN_2] = 74,
+ [FACILITY_CLASS_LEADER_4] = 75,
+ [FACILITY_CLASS_LEADER_5] = 76,
+ [FACILITY_CLASS_LEADER_6] = 77,
+ [FACILITY_CLASS_LEADER_7] = 78,
+ [FACILITY_CLASS_LEADER_8] = 79,
+ [FACILITY_CLASS_ELITE_FOUR_3] = 80,
+ [FACILITY_CLASS_ELITE_FOUR_4] = 81,
+ [FACILITY_CLASS_YOUNGSTER_2] = 82,
+ [FACILITY_CLASS_BUG_CATCHER_2] = 83,
+ [FACILITY_CLASS_LASS_2] = 84,
+ [FACILITY_CLASS_SAILOR_2] = 85,
+ [FACILITY_CLASS_CAMPER_2] = 86,
+ [FACILITY_CLASS_PICNICKER_2] = 87,
+ [FACILITY_CLASS_POKEMANIAC_2] = 88,
+ [FACILITY_CLASS_SUPER_NERD] = 89,
+ [FACILITY_CLASS_HIKER_2] = 90,
+ [FACILITY_CLASS_BIKER] = 91,
+ [FACILITY_CLASS_BURGLAR] = 92,
+ [FACILITY_CLASS_ENGINEER] = 93,
+ [FACILITY_CLASS_FISHERMAN_2] = 94,
+ [FACILITY_CLASS_SWIMMER_MALE_2] = 95,
+ [FACILITY_CLASS_CUE_BALL] = 96,
+ [FACILITY_CLASS_GAMER] = 97,
+ [FACILITY_CLASS_BEAUTY_2] = 98,
+ [FACILITY_CLASS_SWIMMER_FEMALE_2] = 99,
+ [FACILITY_CLASS_PSYCHIC_3] = 100,
+ [FACILITY_CLASS_ROCKER] = 101,
+ [FACILITY_CLASS_JUGGLER] = 102,
+ [FACILITY_CLASS_TAMER] = 103,
+ [FACILITY_CLASS_BIRD_KEEPER_2] = 104,
+ [FACILITY_CLASS_BLACK_BELT_2] = 105,
+ [FACILITY_CLASS_RIVAL] = 106,
+ [FACILITY_CLASS_SCIENTIST] = 107,
+ [FACILITY_CLASS_BOSS] = 108,
+ [FACILITY_CLASS_TEAM_ROCKET] = 109,
+ [FACILITY_CLASS_COOLTRAINER_3] = 110,
+ [FACILITY_CLASS_COOLTRAINER_4] = 111,
+ [FACILITY_CLASS_ELITE_FOUR_5] = 112,
+ [FACILITY_CLASS_ELITE_FOUR_6] = 113,
+ [FACILITY_CLASS_LEADER_9] = 116,
+ [FACILITY_CLASS_LEADER_10] = 117,
+ [FACILITY_CLASS_GENTLEMAN_2] = 123,
+ [FACILITY_CLASS_RIVAL_2] = 124,
+ [FACILITY_CLASS_CHAMPION_2] = 125,
+ [FACILITY_CLASS_CHANNELER] = 126,
+ [FACILITY_CLASS_TWINS_2] = 127,
+ [FACILITY_CLASS_COOL_COUPLE] = 128,
+ [FACILITY_CLASS_YOUNG_COUPLE_2] = 129,
+ [FACILITY_CLASS_CRUSH_KIN] = 130,
+ [FACILITY_CLASS_SIS_AND_BRO_2] = 131,
+ [FACILITY_CLASS_PKMN_PROF] = 132,
+ [FACILITY_CLASS_PLAYER] = 133,
+ [FACILITY_CLASS_PLAYER_2] = 134,
+ [FACILITY_CLASS_PLAYER_3] = 135,
+ [FACILITY_CLASS_PLAYER_4] = 136,
+ [FACILITY_CLASS_TEAM_ROCKET_2] = 137,
+ [FACILITY_CLASS_PSYCHIC_4] = 138,
+ [FACILITY_CLASS_CRUSH_GIRL] = 139,
+ [FACILITY_CLASS_TUBER_3] = 140,
+ [FACILITY_CLASS_PKMN_BREEDER_3] = 141,
+ [FACILITY_CLASS_PKMN_RANGER_3] = 142,
+ [FACILITY_CLASS_PKMN_RANGER_4] = 143,
+ [FACILITY_CLASS_AROMA_LADY_2] = 144,
+ [FACILITY_CLASS_RUIN_MANIAC_2] = 145,
+ [FACILITY_CLASS_LADY_2] = 146,
+ [FACILITY_CLASS_PAINTER] = 147,
+ [FACILITY_CLASS_ELITE_FOUR_7] = 112,
+ [FACILITY_CLASS_ELITE_FOUR_8] = 113,
+ [FACILITY_CLASS_CHAMPION_3] = 125,
+};
+
+const u8 gFacilityClassToTrainerClass[] =
+{
+ [FACILITY_CLASS_AQUA_LEADER] = CLASS_AQUA_LEADER,
+ [FACILITY_CLASS_TEAM_AQUA] = CLASS_TEAM_AQUA,
+ [FACILITY_CLASS_TEAM_AQUA_2] = CLASS_TEAM_AQUA,
+ [FACILITY_CLASS_AROMA_LADY] = CLASS_AROMA_LADY,
+ [FACILITY_CLASS_RUIN_MANIAC] = CLASS_RUIN_MANIAC,
+ [FACILITY_CLASS_INTERVIEWER] = CLASS_INTERVIEWER,
+ [FACILITY_CLASS_TUBER] = CLASS_TUBER,
+ [FACILITY_CLASS_TUBER_2] = CLASS_TUBER_2,
+ [FACILITY_CLASS_COOLTRAINER] = CLASS_COOLTRAINER,
+ [FACILITY_CLASS_COOLTRAINER_2] = CLASS_COOLTRAINER,
+ [FACILITY_CLASS_HEX_MANIAC] = CLASS_HEX_MANIAC,
+ [FACILITY_CLASS_LADY] = CLASS_LADY,
+ [FACILITY_CLASS_BEAUTY] = CLASS_BEAUTY,
+ [FACILITY_CLASS_RICH_BOY] = CLASS_RICH_BOY,
+ [FACILITY_CLASS_POKEMANIAC] = CLASS_POKEMANIAC,
+ [FACILITY_CLASS_SWIMMER_MALE] = CLASS_SWIMMER_MALE,
+ [FACILITY_CLASS_BLACK_BELT] = CLASS_BLACK_BELT,
+ [FACILITY_CLASS_GUITARIST] = CLASS_GUITARIST,
+ [FACILITY_CLASS_KINDLER] = CLASS_KINDLER,
+ [FACILITY_CLASS_CAMPER] = CLASS_CAMPER,
+ [FACILITY_CLASS_BUG_MANIAC] = CLASS_BUG_MANIAC,
+ [FACILITY_CLASS_PSYCHIC] = CLASS_PSYCHIC,
+ [FACILITY_CLASS_PSYCHIC_2] = CLASS_PSYCHIC,
+ [FACILITY_CLASS_GENTLEMAN] = CLASS_GENTLEMAN,
+ [FACILITY_CLASS_ELITE_FOUR] = CLASS_ELITE_FOUR,
+ [FACILITY_CLASS_ELITE_FOUR_2] = CLASS_ELITE_FOUR,
+ [FACILITY_CLASS_LEADER] = CLASS_LEADER,
+ [FACILITY_CLASS_LEADER_2] = CLASS_LEADER,
+ [FACILITY_CLASS_LEADER_3] = CLASS_LEADER,
+ [FACILITY_CLASS_SCHOOL_KID] = CLASS_SCHOOL_KID,
+ [FACILITY_CLASS_SCHOOL_KID_2] = CLASS_SCHOOL_KID,
+ [FACILITY_CLASS_SR_AND_JR] = CLASS_SR_AND_JR,
+ [FACILITY_CLASS_POKEFAN] = CLASS_POKEFAN,
+ [FACILITY_CLASS_POKEFAN_2] = CLASS_POKEFAN,
+ [FACILITY_CLASS_EXPERT] = CLASS_EXPERT,
+ [FACILITY_CLASS_EXPERT_2] = CLASS_EXPERT,
+ [FACILITY_CLASS_YOUNGSTER] = CLASS_YOUNGSTER,
+ [FACILITY_CLASS_CHAMPION] = CLASS_CHAMPION,
+ [FACILITY_CLASS_FISHERMAN] = CLASS_FISHERMAN,
+ [FACILITY_CLASS_TRIATHLETE] = CLASS_TRIATHLETE,
+ [FACILITY_CLASS_TRIATHLETE_2] = CLASS_TRIATHLETE,
+ [FACILITY_CLASS_TRIATHLETE_3] = CLASS_TRIATHLETE,
+ [FACILITY_CLASS_TRIATHLETE_4] = CLASS_TRIATHLETE,
+ [FACILITY_CLASS_TRIATHLETE_5] = CLASS_TRIATHLETE,
+ [FACILITY_CLASS_TRIATHLETE_6] = CLASS_TRIATHLETE,
+ [FACILITY_CLASS_DRAGON_TAMER] = CLASS_DRAGON_TAMER,
+ [FACILITY_CLASS_BIRD_KEEPER] = CLASS_BIRD_KEEPER,
+ [FACILITY_CLASS_NINJA_BOY] = CLASS_NINJA_BOY,
+ [FACILITY_CLASS_BATTLE_GIRL] = CLASS_BATTLE_GIRL,
+ [FACILITY_CLASS_PARASOL_LADY] = CLASS_PARASOL_LADY,
+ [FACILITY_CLASS_SWIMMER_FEMALE] = CLASS_SWIMMER_FEMALE,
+ [FACILITY_CLASS_PICNICKER] = CLASS_PICNICKER,
+ [FACILITY_CLASS_TWINS] = CLASS_TWINS,
+ [FACILITY_CLASS_SAILOR] = CLASS_SAILOR,
+ [FACILITY_CLASS_BOARDER] = CLASS_BOARDER,
+ [FACILITY_CLASS_BOARDER_2] = CLASS_BOARDER,
+ [FACILITY_CLASS_COLLECTOR] = CLASS_COLLECTOR,
+ [FACILITY_CLASS_PKMN_TRAINER] = CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_PKMN_TRAINER_2] = CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_PKMN_TRAINER_3] = CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_PKMN_TRAINER_4] = CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_PKMN_TRAINER_5] = CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_PKMN_TRAINER_6] = CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_PKMN_TRAINER_7] = CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_PKMN_BREEDER] = CLASS_PKMN_BREEDER,
+ [FACILITY_CLASS_PKMN_BREEDER_2] = CLASS_PKMN_BREEDER,
+ [FACILITY_CLASS_PKMN_RANGER] = CLASS_PKMN_RANGER,
+ [FACILITY_CLASS_PKMN_RANGER_2] = CLASS_PKMN_RANGER,
+ [FACILITY_CLASS_MAGMA_LEADER] = CLASS_MAGMA_LEADER,
+ [FACILITY_CLASS_TEAM_MAGMA] = CLASS_TEAM_MAGMA,
+ [FACILITY_CLASS_TEAM_MAGMA_2] = CLASS_TEAM_MAGMA,
+ [FACILITY_CLASS_LASS] = CLASS_LASS,
+ [FACILITY_CLASS_BUG_CATCHER] = CLASS_BUG_CATCHER,
+ [FACILITY_CLASS_HIKER] = CLASS_HIKER,
+ [FACILITY_CLASS_YOUNG_COUPLE] = CLASS_YOUNG_COUPLE,
+ [FACILITY_CLASS_OLD_COUPLE] = CLASS_OLD_COUPLE,
+ [FACILITY_CLASS_SIS_AND_BRO] = CLASS_SIS_AND_BRO,
+ [FACILITY_CLASS_AQUA_ADMIN] = CLASS_AQUA_ADMIN,
+ [FACILITY_CLASS_AQUA_ADMIN_2] = CLASS_AQUA_ADMIN,
+ [FACILITY_CLASS_MAGMA_ADMIN] = CLASS_MAGMA_ADMIN,
+ [FACILITY_CLASS_MAGMA_ADMIN_2] = CLASS_MAGMA_ADMIN,
+ [FACILITY_CLASS_LEADER_4] = CLASS_LEADER,
+ [FACILITY_CLASS_LEADER_5] = CLASS_LEADER,
+ [FACILITY_CLASS_LEADER_6] = CLASS_LEADER,
+ [FACILITY_CLASS_LEADER_7] = CLASS_LEADER,
+ [FACILITY_CLASS_LEADER_8] = CLASS_LEADER,
+ [FACILITY_CLASS_ELITE_FOUR_3] = CLASS_ELITE_FOUR,
+ [FACILITY_CLASS_ELITE_FOUR_4] = CLASS_ELITE_FOUR,
+ [FACILITY_CLASS_YOUNGSTER_2] = CLASS_YOUNGSTER_2,
+ [FACILITY_CLASS_BUG_CATCHER_2] = CLASS_BUG_CATCHER_2,
+ [FACILITY_CLASS_LASS_2] = CLASS_LASS_2,
+ [FACILITY_CLASS_SAILOR_2] = CLASS_SAILOR_2,
+ [FACILITY_CLASS_CAMPER_2] = CLASS_CAMPER_2,
+ [FACILITY_CLASS_PICNICKER_2] = CLASS_PICNICKER_2,
+ [FACILITY_CLASS_POKEMANIAC_2] = CLASS_POKEMANIAC_2,
+ [FACILITY_CLASS_SUPER_NERD] = CLASS_SUPER_NERD,
+ [FACILITY_CLASS_HIKER_2] = CLASS_HIKER_2,
+ [FACILITY_CLASS_BIKER] = CLASS_BIKER,
+ [FACILITY_CLASS_BURGLAR] = CLASS_BURGLAR,
+ [FACILITY_CLASS_ENGINEER] = CLASS_ENGINEER,
+ [FACILITY_CLASS_FISHERMAN_2] = CLASS_FISHERMAN_2,
+ [FACILITY_CLASS_SWIMMER_MALE_2] = CLASS_SWIMMER_MALE_2,
+ [FACILITY_CLASS_CUE_BALL] = CLASS_CUE_BALL,
+ [FACILITY_CLASS_GAMER] = CLASS_GAMER,
+ [FACILITY_CLASS_BEAUTY_2] = CLASS_BEAUTY_2,
+ [FACILITY_CLASS_SWIMMER_FEMALE_2] = CLASS_SWIMMER_FEMALE_2,
+ [FACILITY_CLASS_PSYCHIC_3] = CLASS_PSYCHIC_2,
+ [FACILITY_CLASS_ROCKER] = CLASS_ROCKER,
+ [FACILITY_CLASS_JUGGLER] = CLASS_JUGGLER,
+ [FACILITY_CLASS_TAMER] = CLASS_TAMER,
+ [FACILITY_CLASS_BIRD_KEEPER_2] = CLASS_BIRD_KEEPER_2,
+ [FACILITY_CLASS_BLACK_BELT_2] = CLASS_BLACK_BELT_2,
+ [FACILITY_CLASS_RIVAL] = CLASS_RIVAL,
+ [FACILITY_CLASS_SCIENTIST] = CLASS_SCIENTIST,
+ [FACILITY_CLASS_BOSS] = CLASS_BOSS,
+ [FACILITY_CLASS_TEAM_ROCKET] = CLASS_TEAM_ROCKET,
+ [FACILITY_CLASS_COOLTRAINER_3] = CLASS_COOLTRAINER_2,
+ [FACILITY_CLASS_COOLTRAINER_4] = CLASS_COOLTRAINER_2,
+ [FACILITY_CLASS_ELITE_FOUR_5] = CLASS_ELITE_FOUR_2,
+ [FACILITY_CLASS_ELITE_FOUR_6] = CLASS_ELITE_FOUR_2,
+ [FACILITY_CLASS_LEADER_9] = CLASS_LEADER_2,
+ [FACILITY_CLASS_LEADER_10] = CLASS_LEADER_2,
+ [FACILITY_CLASS_GENTLEMAN_2] = CLASS_GENTLEMAN_2,
+ [FACILITY_CLASS_RIVAL_2] = CLASS_RIVAL_2,
+ [FACILITY_CLASS_CHAMPION_2] = CLASS_CHAMPION_2,
+ [FACILITY_CLASS_CHANNELER] = CLASS_CHANNELER,
+ [FACILITY_CLASS_TWINS_2] = CLASS_TWINS_2,
+ [FACILITY_CLASS_COOL_COUPLE] = CLASS_COOL_COUPLE,
+ [FACILITY_CLASS_YOUNG_COUPLE_2] = CLASS_YOUNG_COUPLE_2,
+ [FACILITY_CLASS_CRUSH_KIN] = CLASS_CRUSH_KIN,
+ [FACILITY_CLASS_SIS_AND_BRO_2] = CLASS_SIS_AND_BRO_2,
+ [FACILITY_CLASS_PKMN_PROF] = CLASS_PKMN_PROF,
+ [FACILITY_CLASS_PLAYER] = CLASS_PLAYER,
+ [FACILITY_CLASS_PLAYER_2] = CLASS_PLAYER,
+ [FACILITY_CLASS_PLAYER_3] = CLASS_PLAYER,
+ [FACILITY_CLASS_PLAYER_4] = CLASS_PLAYER,
+ [FACILITY_CLASS_TEAM_ROCKET_2] = CLASS_TEAM_ROCKET,
+ [FACILITY_CLASS_PSYCHIC_4] = CLASS_PSYCHIC_2,
+ [FACILITY_CLASS_CRUSH_GIRL] = CLASS_CRUSH_GIRL,
+ [FACILITY_CLASS_TUBER_3] = CLASS_TUBER_3,
+ [FACILITY_CLASS_PKMN_BREEDER_3] = CLASS_PKMN_BREEDER_2,
+ [FACILITY_CLASS_PKMN_RANGER_3] = CLASS_PKMN_RANGER_2,
+ [FACILITY_CLASS_PKMN_RANGER_4] = CLASS_PKMN_RANGER_2,
+ [FACILITY_CLASS_AROMA_LADY_2] = CLASS_AROMA_LADY_2,
+ [FACILITY_CLASS_RUIN_MANIAC_2] = CLASS_RUIN_MANIAC_2,
+ [FACILITY_CLASS_LADY_2] = CLASS_LADY_2,
+ [FACILITY_CLASS_PAINTER] = CLASS_PAINTER,
+ [FACILITY_CLASS_ELITE_FOUR_7] = CLASS_ELITE_FOUR_2,
+ [FACILITY_CLASS_ELITE_FOUR_8] = CLASS_ELITE_FOUR_2,
+ [FACILITY_CLASS_CHAMPION_3] = CLASS_CHAMPION_2,
+};
diff --git a/src/daycare.c b/src/daycare.c
index 26ebedc5d..abc3b23ca 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -5,7 +5,7 @@
#include "string_util.h"
#include "constants/species.h"
#include "constants/items.h"
-#include "mail.h"
+#include "mail_data.h"
#include "pokemon_storage_system.h"
#include "event_data.h"
#include "random.h"
@@ -163,7 +163,7 @@ static const u8 *const sCompatibilityMessages[] =
static const u8 sNewLineText[] = _("\n");
static const u8 sJapaneseEggNickname[] = _("タマゴ"); // "tamago" ("egg" in Japanese)
-static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/palettes/egg_palette.gbapal");
+static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/egg/normal.gbapal");
static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp");
static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp");
@@ -1533,7 +1533,7 @@ static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
static void Task_HandleDaycareLevelMenuInput(u8 taskId)
{
- u32 input = ListMenuHandleInput(gTasks[taskId].tMenuListTaskId);
+ u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuListTaskId);
if (gMain.newKeys & A_BUTTON)
{
@@ -1547,7 +1547,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
gSpecialVar_Result = 2;
break;
}
- DestroyListMenu(gTasks[taskId].tMenuListTaskId, NULL, NULL);
+ DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
RemoveWindow(gTasks[taskId].tWindowId);
DestroyTask(taskId);
@@ -1556,7 +1556,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
else if (gMain.newKeys & B_BUTTON)
{
gSpecialVar_Result = 2;
- DestroyListMenu(gTasks[taskId].tMenuListTaskId, NULL, NULL);
+ DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
RemoveWindow(gTasks[taskId].tWindowId);
DestroyTask(taskId);
@@ -1768,8 +1768,8 @@ static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc
{
u16 species = GetMonData(mon, MON_DATA_SPECIES);
u32 pid = GetMonData(mon, MON_DATA_PERSONALITY);
- sub_800ECC4(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[(a0 * 2) + 1], species, pid);
- LoadCompressedObjectPalette(GetMonSpritePalStruct(mon));
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[(a0 * 2) + 1], species, pid);
+ LoadCompressedSpritePalette(GetMonSpritePalStruct(mon));
*speciesLoc = species;
}
break;
@@ -1824,7 +1824,7 @@ static void CB2_EggHatch_0(void)
SetVBlankCallback(VBlankCB_EggHatch);
gSpecialVar_0x8005 = GetCurrentMapMusic();
- reset_temp_tile_data_buffers();
+ ResetTempTileDataBuffers();
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sBgTemplates_EggHatch, ARRAY_COUNT(sBgTemplates_EggHatch));
@@ -2205,5 +2205,5 @@ static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed)
sEggHatchData->textColor.fgColor = 0;
sEggHatchData->textColor.bgColor = 5;
sEggHatchData->textColor.shadowColor = 6;
- AddTextPrinterParametrized2(windowId, 3, x, y, 1, 1, &sEggHatchData->textColor, speed, string);
+ AddTextPrinterParameterized4(windowId, 3, x, y, 1, 1, &sEggHatchData->textColor, speed, string);
}
diff --git a/src/decompress.c b/src/decompress.c
new file mode 100644
index 000000000..caeda738a
--- /dev/null
+++ b/src/decompress.c
@@ -0,0 +1,662 @@
+#include "global.h"
+#include "malloc.h"
+#include "decompress.h"
+#include "pokemon.h"
+#include "text.h"
+#include "constants/species.h"
+
+extern const struct CompressedSpriteSheet gMonFrontPicTable[];
+extern const struct CompressedSpriteSheet gMonBackPicTable[];
+
+static void DuplicateDeoxysTiles(void *pointer, s32 species);
+
+void LZDecompressWram(const void *src, void *dest)
+{
+ LZ77UnCompWram(src, dest);
+}
+
+void LZDecompressVram(const void *src, void *dest)
+{
+ LZ77UnCompVram(src, dest);
+}
+
+u16 LoadCompressedSpriteSheet(const struct CompressedSpriteSheet *src)
+{
+ struct SpriteSheet dest;
+
+ LZ77UnCompWram(src->data, gDecompressionBuffer);
+ dest.data = gDecompressionBuffer;
+ dest.size = src->size;
+ dest.tag = src->tag;
+ return LoadSpriteSheet(&dest);
+}
+
+void LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer)
+{
+ struct SpriteSheet dest;
+
+ LZ77UnCompWram(src->data, buffer);
+ dest.data = buffer;
+ dest.size = src->size;
+ dest.tag = src->tag;
+ LoadSpriteSheet(&dest);
+}
+
+void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src)
+{
+ struct SpritePalette dest;
+
+ LZ77UnCompWram(src->data, gDecompressionBuffer);
+ dest.data = (void*) gDecompressionBuffer;
+ dest.tag = src->tag;
+ LoadSpritePalette(&dest);
+}
+
+void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer)
+{
+ struct SpritePalette dest;
+
+ LZ77UnCompWram(a->data, buffer);
+ dest.data = buffer;
+ dest.tag = a->tag;
+ LoadSpritePalette(&dest);
+}
+
+void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species)
+{
+ if (species > NUM_SPECIES)
+ LZ77UnCompWram(gMonFrontPicTable[0].data, buffer);
+ else
+ LZ77UnCompWram(src->data, buffer);
+ DuplicateDeoxysTiles(buffer, species);
+}
+
+void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality)
+{
+ bool8 isFrontPic;
+
+ if (src == &gMonFrontPicTable[species])
+ isFrontPic = TRUE; // frontPic
+ else
+ isFrontPic = FALSE; // backPic
+ LoadSpecialPokePic(src, dest, species, personality, isFrontPic);
+}
+
+void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic)
+{
+ if (species == SPECIES_UNOWN)
+ {
+ u16 i = (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 3)) % 0x1C;
+
+ // The other Unowns are separate from Unown A.
+ if (i == 0)
+ i = SPECIES_UNOWN;
+ else
+ i += SPECIES_UNOWN_B - 1;
+ if (!isFrontPic)
+ LZ77UnCompWram(gMonBackPicTable[i].data, dest);
+ else
+ LZ77UnCompWram(gMonFrontPicTable[i].data, dest);
+ }
+ else if (species > NUM_SPECIES) // is species unknown? draw the ? icon
+ LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
+ else
+ LZ77UnCompWram(src->data, dest);
+
+ DuplicateDeoxysTiles(dest, species);
+ DrawSpindaSpots(species, personality, dest, isFrontPic);
+}
+
+static void DuplicateDeoxysTiles(void *pointer, s32 species)
+{
+ if (species == SPECIES_DEOXYS)
+ CpuCopy32(pointer + 0x800, pointer, 0x800);
+}
+
+static void Unused_LZDecompressWramIndirect(const void **src, void *dest)
+{
+ LZ77UnCompWram(*src, dest);
+}
+
+#ifdef NONMATCHING
+static void sub_800EDDC(s32 a0, s32 a1, const u8 *a2, u8 *a3)
+{
+ u8 *v1, *v2;
+ int i, j, k, l;
+
+ if (a0 & 1)
+ {
+ u8 v40 = ((a0 >> 1) + 4);
+ for (i = 0; i < a1; ++i)
+ {
+ // this nested loop failed to match
+ for (j = 0; j < 8 - a0; ++j)
+ {
+ for (k = 0; k < 8; ++k)
+ {
+
+ v1 = a3 + 0x100 * v40 + 0x100 * (j >> 1) + 0x20 * k;
+ v2 = a3 + 0x20 * k + 0x100 * (j >> 1);
+ for (l = 0; l < 0x10; ++l)
+ {
+ if (!(j & 1))
+ {
+ v2[0] = j & 1;
+ v1[16] = 0;
+// a3[0x100 * (j / 2) + 0x20 * k + l] = 0;
+// a3[0x100 * v40 + 0x100 * (j / 2) + 0x20 * k + l + 0x10] = 0;
+ }
+ else
+ {
+ v2[16] = 0;
+ v1[0x100] = 0;
+// a3[0x100 * (j / 2) + 0x20 * k + l + 0x10] = 0;
+// a3[0x100 * v40 + 0x100 * (j / 2) + 0x20 * k + l + 0x100] = 0;
+ }
+ ++v1;
+ ++v2; // this should be generated if you write stuff inside operator [] instead of declaring v1/v2
+ }
+ }
+ }
+ for (j = 0; j < 2; ++j)
+ {
+ for (k = 0; k < 8; ++k)
+ {
+ for (l = 0; l < 0x20; ++l)
+ {
+ a3[0x100 * k + 0x20 * j + l] = 0;
+ a3[0x100 * k + 0xC0 + 0x20 * j + l] = 0;
+ }
+ }
+ }
+ if (a0 == 5)
+ a3 += 0x120;
+ for (j = 0; j < a0; ++j)
+ {
+ for (k = 0; k < a0; ++k)
+ {
+ for (l = 0; l < 4; ++l)
+ {
+ a3[0x12 + 4 * l] = a2[0 + 4 * l];
+ a3[0x13 + 4 * l] = a2[1 + 4 * l];
+ a3[0x12 + 0x1E + 4 * l] = a2[2 + 4 * l];
+ a3[0x12 + 0x1F + 4 * l] = a2[3 + 4 * l];
+ a3[0x102 + 4 * l] = a2[0x10 + 4 * l];
+ a3[0x103 + 4 * l] = a2[0x11 + 4 * l];
+ a3[0x120 + 4 * l] = a2[0x12 + 4 * l];
+ a3[0x121 + 4 * l] = a2[0x13 + 4 * l];
+ }
+ a2 += 0x20;
+ a3 += 0x20;
+ }
+ if (a0 == 7)
+ a3 += 0x20;
+ else if (a0 == 5)
+ a3 += 0x60;
+ }
+ if (a0 == 7)
+ a3 += 0x100;
+ else if (a0 == 5)
+ a3 += 0x1E0;
+ }
+ }
+ else
+ {
+ for (i = 0; i < a1; ++i)
+ {
+ if (a0 == 6)
+ for (j = 0; j < 0x100; ++j)
+ *a3++ = 0;
+ for (j = 0; j < a0; ++j)
+ {
+ if (a0 == 6)
+ for (k = 0; k < 0x20; ++k)
+ *a3++ = 0;
+ for (k = 0; k < 0x20 * a0; ++k)
+ *a3++ = *a2++;
+ if (a0 == 6)
+ for (k = 0; k < 0x20; ++k)
+ *a3++ = 0;
+ }
+ if (a0 == 6)
+ for (j = 0; j < 0x100; ++j)
+ *a3++ = 0;
+ }
+ }
+}
+#else
+NAKED
+static void sub_800EDDC(s32 a0, s32 a1, const u8 *a2, u8 *a3)
+{
+ asm_unified("\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x24\n\
+ mov r9, r0\n\
+ str r1, [sp]\n\
+ str r2, [sp, 0x4]\n\
+ adds r5, r3, 0\n\
+ movs r0, 0x1\n\
+ mov r1, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0800EDFC\n\
+ b _0800EF94\n\
+ _0800EDFC:\n\
+ asrs r0, r1, 1\n\
+ adds r0, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x8]\n\
+ movs r0, 0\n\
+ ldr r2, [sp]\n\
+ cmp r0, r2\n\
+ blt _0800EE10\n\
+ b _0800F024\n\
+ _0800EE10:\n\
+ movs r4, 0x8\n\
+ subs r1, r4, r1\n\
+ str r1, [sp, 0x10]\n\
+ _0800EE16:\n\
+ movs r7, 0\n\
+ adds r0, 0x1\n\
+ str r0, [sp, 0x14]\n\
+ ldr r0, [sp, 0x10]\n\
+ cmp r7, r0\n\
+ bge _0800EE92\n\
+ ldr r1, [sp, 0x8]\n\
+ lsls r1, 8\n\
+ str r1, [sp, 0x18]\n\
+ movs r2, 0\n\
+ mov r10, r2\n\
+ mov r0, r9\n\
+ movs r4, 0x8\n\
+ subs r0, r4, r0\n\
+ str r0, [sp, 0xC]\n\
+ _0800EE34:\n\
+ movs r3, 0\n\
+ asrs r0, r7, 1\n\
+ adds r1, r7, 0\n\
+ movs r2, 0x1\n\
+ ands r1, r2\n\
+ str r1, [sp, 0x20]\n\
+ lsls r0, 8\n\
+ mov r8, r0\n\
+ mov r12, r5\n\
+ _0800EE46:\n\
+ lsls r1, r3, 5\n\
+ ldr r4, [sp, 0x18]\n\
+ adds r0, r5, r4\n\
+ adds r0, r1\n\
+ mov r1, r8\n\
+ adds r2, r0, r1\n\
+ mov r1, r12\n\
+ add r1, r8\n\
+ movs r6, 0xF\n\
+ _0800EE58:\n\
+ ldr r4, [sp, 0x20]\n\
+ cmp r4, 0\n\
+ bne _0800EE68\n\
+ strb r4, [r1]\n\
+ add r4, sp, 0x20\n\
+ ldrb r4, [r4]\n\
+ strb r4, [r2, 0x10]\n\
+ b _0800EE76\n\
+ _0800EE68:\n\
+ mov r0, r10\n\
+ strb r0, [r1, 0x10]\n\
+ movs r4, 0x80\n\
+ lsls r4, 1\n\
+ adds r4, r2, r4\n\
+ str r4, [sp, 0x1C]\n\
+ strb r0, [r4]\n\
+ _0800EE76:\n\
+ adds r2, 0x1\n\
+ adds r1, 0x1\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _0800EE58\n\
+ movs r0, 0x20\n\
+ add r12, r0\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x7\n\
+ ble _0800EE46\n\
+ adds r7, 0x1\n\
+ ldr r1, [sp, 0xC]\n\
+ cmp r7, r1\n\
+ blt _0800EE34\n\
+ _0800EE92:\n\
+ movs r7, 0\n\
+ movs r2, 0\n\
+ _0800EE96:\n\
+ movs r6, 0\n\
+ adds r4, r7, 0x1\n\
+ mov r8, r4\n\
+ lsls r4, r7, 5\n\
+ _0800EE9E:\n\
+ adds r0, r6, 0x1\n\
+ mov r10, r0\n\
+ lsls r1, r6, 8\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xC0\n\
+ adds r0, r5, r0\n\
+ adds r0, r4\n\
+ adds r1, r5, r1\n\
+ adds r1, r4\n\
+ movs r3, 0x1F\n\
+ _0800EEB2:\n\
+ strb r2, [r1]\n\
+ strb r2, [r0]\n\
+ adds r0, 0x1\n\
+ adds r1, 0x1\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _0800EEB2\n\
+ mov r6, r10\n\
+ cmp r6, 0x7\n\
+ ble _0800EE9E\n\
+ mov r7, r8\n\
+ cmp r7, 0x1\n\
+ ble _0800EE96\n\
+ mov r1, r9\n\
+ cmp r1, 0x5\n\
+ bne _0800EED8\n\
+ movs r2, 0x90\n\
+ lsls r2, 1\n\
+ adds r5, r2\n\
+ _0800EED8:\n\
+ movs r7, 0\n\
+ cmp r7, r9\n\
+ bge _0800EF6E\n\
+ _0800EEDE:\n\
+ movs r3, 0\n\
+ adds r7, 0x1\n\
+ mov r8, r7\n\
+ cmp r3, r9\n\
+ bge _0800EF4E\n\
+ _0800EEE8:\n\
+ adds r3, 0x1\n\
+ mov r10, r3\n\
+ ldr r4, [sp, 0x4]\n\
+ adds r4, 0x20\n\
+ adds r7, r5, 0\n\
+ adds r7, 0x20\n\
+ movs r0, 0x12\n\
+ adds r0, r5\n\
+ mov r12, r0\n\
+ ldr r2, [sp, 0x4]\n\
+ adds r3, r5, 0\n\
+ movs r6, 0x3\n\
+ _0800EF00:\n\
+ ldrb r0, [r2]\n\
+ mov r1, r12\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r2, 0x1]\n\
+ strb r0, [r1, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ strb r0, [r1, 0x1E]\n\
+ ldrb r0, [r2, 0x3]\n\
+ strb r0, [r1, 0x1F]\n\
+ movs r0, 0x81\n\
+ lsls r0, 1\n\
+ adds r1, r3, r0\n\
+ ldrb r0, [r2, 0x10]\n\
+ strb r0, [r1]\n\
+ ldr r0, _0800EF58 @ =0x00000103\n\
+ adds r1, r3, r0\n\
+ ldrb r0, [r2, 0x11]\n\
+ strb r0, [r1]\n\
+ movs r0, 0x90\n\
+ lsls r0, 1\n\
+ adds r1, r3, r0\n\
+ ldrb r0, [r2, 0x12]\n\
+ strb r0, [r1]\n\
+ ldr r0, _0800EF5C @ =0x00000121\n\
+ adds r1, r3, r0\n\
+ ldrb r0, [r2, 0x13]\n\
+ strb r0, [r1]\n\
+ movs r1, 0x4\n\
+ add r12, r1\n\
+ adds r2, 0x4\n\
+ adds r3, 0x4\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _0800EF00\n\
+ str r4, [sp, 0x4]\n\
+ adds r5, r7, 0\n\
+ mov r3, r10\n\
+ cmp r3, r9\n\
+ blt _0800EEE8\n\
+ _0800EF4E:\n\
+ mov r2, r9\n\
+ cmp r2, 0x7\n\
+ bne _0800EF60\n\
+ adds r5, 0x20\n\
+ b _0800EF68\n\
+ .align 2, 0\n\
+ _0800EF58: .4byte 0x00000103\n\
+ _0800EF5C: .4byte 0x00000121\n\
+ _0800EF60:\n\
+ mov r4, r9\n\
+ cmp r4, 0x5\n\
+ bne _0800EF68\n\
+ adds r5, 0x60\n\
+ _0800EF68:\n\
+ mov r7, r8\n\
+ cmp r7, r9\n\
+ blt _0800EEDE\n\
+ _0800EF6E:\n\
+ mov r0, r9\n\
+ cmp r0, 0x7\n\
+ bne _0800EF7C\n\
+ movs r1, 0x80\n\
+ lsls r1, 1\n\
+ adds r5, r1\n\
+ b _0800EF88\n\
+ _0800EF7C:\n\
+ mov r2, r9\n\
+ cmp r2, 0x5\n\
+ bne _0800EF88\n\
+ movs r4, 0xF0\n\
+ lsls r4, 1\n\
+ adds r5, r4\n\
+ _0800EF88:\n\
+ ldr r0, [sp, 0x14]\n\
+ ldr r1, [sp]\n\
+ cmp r0, r1\n\
+ bge _0800EF92\n\
+ b _0800EE16\n\
+ _0800EF92:\n\
+ b _0800F024\n\
+ _0800EF94:\n\
+ movs r6, 0\n\
+ ldr r2, [sp]\n\
+ cmp r6, r2\n\
+ bge _0800F024\n\
+ _0800EF9C:\n\
+ adds r6, 0x1\n\
+ mov r10, r6\n\
+ mov r4, r9\n\
+ cmp r4, 0x6\n\
+ bne _0800EFB4\n\
+ movs r0, 0\n\
+ movs r3, 0xFF\n\
+ _0800EFAA:\n\
+ strb r0, [r5]\n\
+ adds r5, 0x1\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _0800EFAA\n\
+ _0800EFB4:\n\
+ movs r7, 0\n\
+ cmp r7, r9\n\
+ bge _0800F008\n\
+ _0800EFBA:\n\
+ adds r7, 0x1\n\
+ mov r8, r7\n\
+ mov r1, r9\n\
+ lsls r0, r1, 5\n\
+ cmp r1, 0x6\n\
+ bne _0800EFD4\n\
+ movs r1, 0\n\
+ movs r3, 0x1F\n\
+ _0800EFCA:\n\
+ strb r1, [r5]\n\
+ adds r5, 0x1\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _0800EFCA\n\
+ _0800EFD4:\n\
+ adds r1, r0, 0\n\
+ cmp r1, 0\n\
+ ble _0800EFEE\n\
+ adds r3, r1, 0\n\
+ _0800EFDC:\n\
+ ldr r2, [sp, 0x4]\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r5]\n\
+ adds r2, 0x1\n\
+ str r2, [sp, 0x4]\n\
+ adds r5, 0x1\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bne _0800EFDC\n\
+ _0800EFEE:\n\
+ mov r4, r9\n\
+ cmp r4, 0x6\n\
+ bne _0800F002\n\
+ movs r0, 0\n\
+ movs r3, 0x1F\n\
+ _0800EFF8:\n\
+ strb r0, [r5]\n\
+ adds r5, 0x1\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _0800EFF8\n\
+ _0800F002:\n\
+ mov r7, r8\n\
+ cmp r7, r9\n\
+ blt _0800EFBA\n\
+ _0800F008:\n\
+ mov r0, r9\n\
+ cmp r0, 0x6\n\
+ bne _0800F01C\n\
+ movs r0, 0\n\
+ movs r3, 0xFF\n\
+ _0800F012:\n\
+ strb r0, [r5]\n\
+ adds r5, 0x1\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _0800F012\n\
+ _0800F01C:\n\
+ mov r6, r10\n\
+ ldr r1, [sp]\n\
+ cmp r6, r1\n\
+ blt _0800EF9C\n\
+ _0800F024:\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\
+ ");
+}
+#endif
+
+bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet* src)
+{
+ struct SpriteSheet dest;
+ void* buffer;
+
+ buffer = AllocZeroed(*((u32*)src->data) >> 8);
+ if (!buffer)
+ return TRUE;
+ LZ77UnCompWram(src->data, buffer);
+ dest.data = buffer;
+ dest.size = src->size;
+ dest.tag = src->tag;
+ LoadSpriteSheet(&dest);
+ Free(buffer);
+ return FALSE;
+}
+
+bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src)
+{
+ struct SpritePalette dest;
+ void* buffer;
+
+ buffer = AllocZeroed(*((u32*)src->data) >> 8);
+ if (!buffer)
+ return TRUE;
+ LZ77UnCompWram(src->data, buffer);
+ dest.data = buffer;
+ dest.tag = src->tag;
+ LoadSpritePalette(&dest);
+ Free(buffer);
+ return FALSE;
+}
+
+u32 GetDecompressedDataSize(const u8 *ptr)
+{
+ u32 ptr32[1];
+ u8 *ptr8 = (u8 *)ptr32;
+
+ ptr8[0] = ptr[1];
+ ptr8[1] = ptr[2];
+ ptr8[2] = ptr[3];
+ ptr8[3] = 0;
+ return ptr32[0];
+}
+
+void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void* buffer, s32 species)
+{
+ if (species > NUM_SPECIES)
+ LZ77UnCompWram(gMonFrontPicTable[0].data, buffer);
+ else
+ LZ77UnCompWram(src->data, buffer);
+}
+
+void HandleLoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality)
+{
+ bool8 isFrontPic;
+
+ if (src == &gMonFrontPicTable[species])
+ isFrontPic = TRUE; // frontPic
+ else
+ isFrontPic = FALSE; // backPic
+ LoadSpecialPokePic_DontHandleDeoxys(src, dest, species, personality, isFrontPic);
+}
+
+void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic)
+{
+ if (species == SPECIES_UNOWN)
+ {
+ u16 i = (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 3)) % 0x1C;
+
+ // The other Unowns are separate from Unown A.
+ if (i == 0)
+ i = SPECIES_UNOWN;
+ else
+ i += SPECIES_UNOWN_B - 1;
+ if (!isFrontPic)
+ LZ77UnCompWram(gMonBackPicTable[i].data, dest);
+ else
+ LZ77UnCompWram(gMonFrontPicTable[i].data, dest);
+ }
+ else if (species > NUM_SPECIES) // is species unknown? draw the ? icon
+ {
+ LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
+ }
+ else
+ {
+ LZ77UnCompWram(src->data, dest);
+ }
+ DrawSpindaSpots(species, personality, dest, isFrontPic);
+}
diff --git a/src/diploma.c b/src/diploma.c
new file mode 100644
index 000000000..517ee8aa0
--- /dev/null
+++ b/src/diploma.c
@@ -0,0 +1,285 @@
+#include "global.h"
+#include "bg.h"
+#include "constants/fanfares.h"
+#include "dynamic_placeholder_text_util.h"
+#include "gba/macro.h"
+#include "gpu_regs.h"
+#include "gpu_regs.h"
+#include "main.h"
+#include "malloc.h"
+#include "menu.h"
+#include "new_menu_helpers.h"
+#include "overworld.h"
+#include "palette.h"
+#include "pokedex.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "sprite.h"
+#include "strings.h"
+#include "task.h"
+#include "text.h"
+#include "window.h"
+#include "diploma.h"
+
+struct Diploma
+{
+ u8 state;
+ u8 gfxStep;
+ u8 callbackStep;
+ u16 tilemapBuffer[0x800];
+};
+
+static EWRAM_DATA struct Diploma *gDiploma = NULL;
+
+static void DiplomaBgInit(void);
+static void DiplomaPrintText(void);
+static u8 DiplomaLoadGfx(void);
+static void DiplomaVblankHandler(void);
+static void CB2_DiplomaInit(void);
+static void Task_WaitForExit(u8);
+static void Task_DiplomaInit(u8);
+static void Task_DiplomaReturnToOverworld(u8);
+
+static const u32 gUnknown_84147C0[] = INCBIN_U32("graphics/diploma/unk_84147C0.4bpp.lz");
+static const u32 gUnknown_84154E8[] = INCBIN_U32("graphics/diploma/unk_84154E8.bin.lz");
+static const u16 gUnknown_8415954[] = INCBIN_U16("graphics/diploma/unk_8415954.gbapal");
+
+static const u8 gUnknown_8415994[] = _("{HIGHLIGHT TRANSPARENT}プレイヤー");
+static const u8 gUnknown_841599D[] = _("{HIGHLIGHT TRANSPARENT}さま");
+static const u8 gUnknown_84159A3[] = _("{HIGHLIGHT TRANSPARENT}ホウエン");
+static const u8 gUnknown_84159AB[] = _("{HIGHLIGHT TRANSPARENT}ぜんこく");
+static const u8 gUnknown_84159B3[] = _("{HIGHLIGHT TRANSPARENT}     ポケモンずかんを\nみごと かんせい させた\nいだいなこうせきを たたえ\nここに しょうめい します");
+static const u8 gUnknown_84159ED[] = _("{COLOR RED}{HIGHLIGHT TRANSPARENT}ゲームフリーク");
+static const u8 gUnknown_84159FB[] = _("{COLOR RED}{HIGHLIGHT TRANSPARENT}");
+
+static const ALIGNED(4) struct TextColor gUnknown_8415A04 = {0, 2, 3};
+
+static const struct BgTemplate gUnknown_8415A08[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 1,
+ }, {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 29,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0,
+ }
+};
+
+static const struct WindowTemplate gUnknown_8415A10[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 2,
+ .width = 29,
+ .height = 16,
+ .paletteNum = 15,
+ .baseBlock = 0x000
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static void VCBC_DiplomaOam(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void CB2_ShowDiploma(void)
+{
+ gDiploma = AllocZeroed(sizeof(*gDiploma));
+ gDiploma->state = 0;
+ gDiploma->gfxStep = 0;
+ gDiploma->callbackStep = 0;
+ DiplomaBgInit();
+ CreateTask(Task_DiplomaInit, 0);
+ SetMainCallback2(CB2_DiplomaInit);
+}
+
+static void CB2_DiplomaInit(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void Task_DiplomaInit(u8 taskId)
+{
+ switch (gDiploma->callbackStep)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ break;
+ case 1:
+ DiplomaVblankHandler();
+ break;
+ case 2:
+ if (!DiplomaLoadGfx())
+ {
+ return;
+ }
+ break;
+ case 3:
+ CopyToBgTilemapBuffer(1, gUnknown_84154E8, 0, 0);
+ break;
+ case 4:
+ if (HasAllKantoMons())
+ {
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0x80 << 1);
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ }
+ break;
+ case 5:
+ DiplomaPrintText();
+ break;
+ case 6:
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 7:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ break;
+ case 8:
+ SetVBlankCallback(VCBC_DiplomaOam);
+ break;
+ default:
+ if (gPaletteFade.active)
+ {
+ break;
+ }
+ PlayFanfareByFanfareNum(FANFARE_05);
+ gTasks[taskId].func = Task_WaitForExit;
+ }
+ gDiploma->callbackStep++;
+}
+
+static void Task_WaitForExit(u8 taskId)
+{
+ switch (gDiploma->state)
+ {
+ case 0:
+ if (WaitFanfare(0))
+ {
+ gDiploma->state++;
+ }
+ break;
+ case 1:
+ if (JOY_NEW(A_BUTTON))
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gDiploma->state++;
+ }
+ break;
+ case 2:
+ Task_DiplomaReturnToOverworld(taskId);
+ break;
+ }
+}
+
+static void Task_DiplomaReturnToOverworld(u8 taskId)
+{
+ if (gPaletteFade.active)
+ return;
+ DestroyTask(taskId);
+ FreeAllWindowBuffers();
+ FREE_AND_SET_NULL(gDiploma);
+ SetMainCallback2(CB2_Overworld);
+}
+
+static void DiplomaBgInit(void)
+{
+ ResetSpriteData();
+ ResetPaletteFade();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ ScanlineEffect_Stop();
+}
+
+static void DiplomaVblankHandler(void)
+{
+ void *vram = (void *)VRAM;
+ DmaClearLarge16(3, vram, VRAM_SIZE, 0x1000);
+ DmaClear32(3, (void *)OAM, OAM_SIZE);
+ DmaClear16(3, (void *)PLTT, PLTT_SIZE);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_8415A08, 2);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ InitWindows(gUnknown_8415A10);
+ DeactivateAllTextPrinters();
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ SetBgTilemapBuffer(1, gDiploma->tilemapBuffer);
+ ShowBg(0);
+ ShowBg(1);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 20);
+}
+
+static u8 DiplomaLoadGfx(void)
+{
+ switch (gDiploma->gfxStep)
+ {
+ case 0:
+ ResetTempTileDataBuffers();
+ break;
+ case 1:
+ DecompressAndCopyTileDataToVram(1, gUnknown_84147C0, 0, 0, 0);
+ break;
+ case 2:
+ if (!(FreeTempTileDataBuffersIfPossible() == 1))
+ {
+ break;
+ }
+ return 0;
+ case 3:
+ LoadPalette(gUnknown_8415954, 0, 0x40);
+ default:
+ return 1;
+ }
+ gDiploma->gfxStep++;
+ return 0;
+}
+
+static void DiplomaPrintText(void)
+{
+ u8 arr[160];
+ u32 width;
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
+ if (HasAllKantoMons())
+ {
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_841B68F);
+ }
+ else
+ {
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_841B698);
+ }
+ FillWindowPixelBuffer(0, 0);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arr, gUnknown_841B60E);
+ width = GetStringWidth(2, arr, -1);
+ AddTextPrinterParameterized3(0, 2, 0x78 - (width / 2), 4, &gUnknown_8415A04, -1, arr);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arr, gUnknown_841B619);
+ width = GetStringWidth(2, arr, -1);
+ AddTextPrinterParameterized3(0, 0x2, 0x78 - (width / 2), 0x1E, &gUnknown_8415A04, -1, arr);
+ AddTextPrinterParameterized3(0, 0x2, 0x78, 0x69, &gUnknown_8415A04, 0, gUnknown_841B684);
+ PutWindowTilemap(0);
+}
diff --git a/src/dma3_manager.c b/src/dma3_manager.c
index 10049a566..ec2cb932f 100644
--- a/src/dma3_manager.c
+++ b/src/dma3_manager.c
@@ -1,6 +1,13 @@
#include "global.h"
#include "dma3.h"
+#define MAX_DMA_REQUESTS 128
+
+#define DMA_REQUEST_COPY32 1
+#define DMA_REQUEST_FILL32 2
+#define DMA_REQUEST_COPY16 3
+#define DMA_REQUEST_FILL16 4
+
static /*IWRAM_DATA*/ struct {
/* 0x00 */ const u8 *src;
/* 0x04 */ u8 *dest;
@@ -9,7 +16,7 @@ static /*IWRAM_DATA*/ struct {
/* 0x0C */ u32 value;
} gDma3Requests[128];
-static bool8 gDma3ManagerLocked;
+static volatile bool8 gDma3ManagerLocked;
static u8 gDma3RequestCursor;
void ClearDma3Requests(void)
@@ -29,78 +36,50 @@ void ClearDma3Requests(void)
gDma3ManagerLocked = FALSE;
}
-#ifdef NONMATCHING
void ProcessDma3Requests(void)
{
- // NOTE: the fillerA member of the DMA struct is actually u32 value;
- u16 total_size;
+ u16 bytesTransferred;
if (gDma3ManagerLocked)
return;
- total_size = 0;
+ bytesTransferred = 0;
// as long as there are DMA requests to process (unless size or vblank is an issue), do not exit
- while (gDma3Requests[gDma3RequestCursor].size)
+ while (gDma3Requests[gDma3RequestCursor].size != 0)
{
- total_size += gDma3Requests[gDma3RequestCursor].size;
+ bytesTransferred += gDma3Requests[gDma3RequestCursor].size;
- if (total_size > 0xA000)
- return; // don't do too much at once
-
- if (REG_VCOUNT > 224)
- return;// we're about to leave vblank, stop
+ if (bytesTransferred > 40 * 1024)
+ return; // don't transfer more than 40 KiB
+ if (*(u8 *)REG_ADDR_VCOUNT > 224)
+ return; // we're about to leave vblank, stop
switch (gDma3Requests[gDma3RequestCursor].mode)
{
- case 1: // regular 32-bit copy
- // _08000C8C
- if(gDma3Requests[gDma3RequestCursor].size <= 0x1000)
- {
- DmaCopy32(3, gDma3Requests[gDma3RequestCursor].src, gDma3Requests[gDma3RequestCursor].dest, gDma3Requests[gDma3RequestCursor].size);
- break;
- }
- while (gDma3Requests[gDma3RequestCursor].size > 0x1000)
- {
- DmaCopy32(3, gDma3Requests[gDma3RequestCursor].src, gDma3Requests[gDma3RequestCursor].dest, 0x1000);
- gDma3Requests[gDma3RequestCursor].src += 0x1000;
- gDma3Requests[gDma3RequestCursor].dest += 0x1000;
- gDma3Requests[gDma3RequestCursor].size -= 0x1000;
- }
- DmaCopy32(3, gDma3Requests[gDma3RequestCursor].src, gDma3Requests[gDma3RequestCursor].dest, gDma3Requests[gDma3RequestCursor].size);
+ case DMA_REQUEST_COPY32: // regular 32-bit copy
+ Dma3CopyLarge32_(gDma3Requests[gDma3RequestCursor].src,
+ gDma3Requests[gDma3RequestCursor].dest,
+ gDma3Requests[gDma3RequestCursor].size);
break;
- case 2: // repeat a single 32-bit value across RAM
- // _08000CD0
- while (gDma3Requests[gDma3RequestCursor].size > 0x1000)
- {
- DmaFill32(3, gDma3Requests[gDma3RequestCursor].value, gDma3Requests[gDma3RequestCursor].dest, 0x1000);
- gDma3Requests[gDma3RequestCursor].dest += 0x1000;
- gDma3Requests[gDma3RequestCursor].size -= 0x1000;
- }
- DmaFill32(3, gDma3Requests[gDma3RequestCursor].value, gDma3Requests[gDma3RequestCursor].dest, gDma3Requests[gDma3RequestCursor].size);
+ case DMA_REQUEST_FILL32: // repeat a single 32-bit value across RAM
+ Dma3FillLarge32_(gDma3Requests[gDma3RequestCursor].value,
+ gDma3Requests[gDma3RequestCursor].dest,
+ gDma3Requests[gDma3RequestCursor].size);
break;
- case 3: // regular 16-bit copy
- // _08000D3C
- while (gDma3Requests[gDma3RequestCursor].size > 0x1000)
- {
- DmaCopy16(3, gDma3Requests[gDma3RequestCursor].src, gDma3Requests[gDma3RequestCursor].dest, 0x1000);
- gDma3Requests[gDma3RequestCursor].src += 0x1000;
- gDma3Requests[gDma3RequestCursor].dest += 0x1000;
- gDma3Requests[gDma3RequestCursor].size -= 0x1000;
- }
- DmaCopy16(3, gDma3Requests[gDma3RequestCursor].src, gDma3Requests[gDma3RequestCursor].dest, gDma3Requests[gDma3RequestCursor].size);
+ case DMA_REQUEST_COPY16: // regular 16-bit copy
+ Dma3CopyLarge16_(gDma3Requests[gDma3RequestCursor].src,
+ gDma3Requests[gDma3RequestCursor].dest,
+ gDma3Requests[gDma3RequestCursor].size);
break;
- case 4: // repeat a single 16-bit value across RAM
- // _08000D88
- while (gDma3Requests[gDma3RequestCursor].size > 0x1000)
- {
- DmaFill16(3, gDma3Requests[gDma3RequestCursor].value, gDma3Requests[gDma3RequestCursor].dest, 0x1000);
- gDma3Requests[gDma3RequestCursor].dest += 0x1000;
- gDma3Requests[gDma3RequestCursor].size -= 0x1000;
- }
- DmaFill16(3, gDma3Requests[gDma3RequestCursor].value, gDma3Requests[gDma3RequestCursor].dest, gDma3Requests[gDma3RequestCursor].size);
+ case DMA_REQUEST_FILL16: // repeat a single 16-bit value across RAM
+ Dma3FillLarge16_(gDma3Requests[gDma3RequestCursor].value,
+ gDma3Requests[gDma3RequestCursor].dest,
+ gDma3Requests[gDma3RequestCursor].size);
break;
}
+
+ // Free the request
gDma3Requests[gDma3RequestCursor].src = NULL;
gDma3Requests[gDma3RequestCursor].dest = NULL;
gDma3Requests[gDma3RequestCursor].size = 0;
@@ -108,328 +87,12 @@ void ProcessDma3Requests(void)
gDma3Requests[gDma3RequestCursor].value = 0;
gDma3RequestCursor++;
- if (gDma3RequestCursor >= 128) // loop back to the first DMA request
+ if (gDma3RequestCursor >= MAX_DMA_REQUESTS) // loop back to the first DMA request
gDma3RequestCursor = 0;
}
}
-#else
-__attribute__((naked))
-void ProcessDma3Requests(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0xC\n\
- ldr r0, =gDma3ManagerLocked\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08000C06\n\
- b _08000E46\n\
-_08000C06:\n\
- movs r0, 0\n\
- str r0, [sp, 0x8]\n\
- ldr r1, =gDma3Requests\n\
- ldr r2, =gDma3RequestCursor\n\
- ldrb r0, [r2]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x8]\n\
- mov r12, r2\n\
- cmp r0, 0\n\
- bne _08000C1E\n\
- b _08000E46\n\
-_08000C1E:\n\
- mov r8, r1\n\
- adds r1, 0x4\n\
- mov r10, r1\n\
- movs r6, 0x80\n\
- lsls r6, 5\n\
- ldr r7, =0x040000D4 @REG_DMA3\n\
- movs r2, 0\n\
- mov r9, r2\n\
-_08000C2E:\n\
- mov r3, r12 @ gDma3RequestCursor\n\
- ldrb r0, [r3]\n\
- lsls r5, r0, 4\n\
- mov r0, r8 @ gDma3Requests\n\
- adds r1, r5, r0 @ gDma3Requests[gDma3RequestCursor]\n\
- ldrh r0, [r1, 0x8] @ gDma3Requests[gDma3RequestCursor].size\n\
- ldr r2, [sp, 0x8]\n\
- adds r0, r2, r0\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x8]\n\
- movs r0, 0xA0\n\
- lsls r0, 8\n\
- ldr r3, [sp, 0x8]\n\
- cmp r3, r0\n\
- bls _08000C50\n\
- b _08000E46\n\
-_08000C50:\n\
- ldr r0, =0x04000006 @REG_VCOUNT\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xE0\n\
- bls _08000C5A\n\
- b _08000E46\n\
-_08000C5A:\n\
- ldrh r0, [r1, 0xA]\n\
- cmp r0, 0x2\n\
- beq _08000CD0\n\
- cmp r0, 0x2\n\
- bgt _08000C80\n\
- cmp r0, 0x1\n\
- beq _08000C8C\n\
- b _08000DF0\n\
- .pool\n\
-_08000C80:\n\
- cmp r0, 0x3\n\
- beq _08000D3C\n\
- cmp r0, 0x4\n\
- bne _08000C8A\n\
- b _08000D88\n\
-_08000C8A:\n\
- b _08000DF0\n\
-_08000C8C:\n\
- ldr r3, [r1]\n\
- mov r2, r10\n\
- adds r0, r5, r2\n\
- ldr r2, [r0]\n\
- ldrh r1, [r1, 0x8]\n\
- cmp r1, r6\n\
- bhi _08000CA6\n\
- str r3, [r7]\n\
- str r2, [r7, 0x4]\n\
- lsrs r0, r1, 2\n\
- movs r1, 0x84\n\
- lsls r1, 24\n\
- b _08000DAA\n\
-_08000CA6:\n\
- ldr r4, =0x040000D4 @REG_DMA3\n\
- str r3, [r4]\n\
- str r2, [r4, 0x4]\n\
- ldr r0, =0x84000400\n\
- str r0, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- adds r3, r6\n\
- adds r2, r6\n\
- subs r1, r6\n\
- cmp r1, r6\n\
- bhi _08000CA6\n\
- str r3, [r4]\n\
- str r2, [r4, 0x4]\n\
- lsrs r0, r1, 2\n\
- movs r1, 0x84\n\
- lsls r1, 24\n\
- b _08000D76\n\
- .pool\n\
-_08000CD0:\n\
- mov r3, r10\n\
- adds r0, r5, r3\n\
- ldr r4, [r0]\n\
- ldrh r1, [r1, 0x8]\n\
- cmp r1, r6\n\
- bhi _08000CF4\n\
- mov r0, r8\n\
- adds r0, 0xC\n\
- adds r0, r5, r0\n\
- ldr r0, [r0]\n\
- str r0, [sp]\n\
- mov r5, sp\n\
- str r5, [r7]\n\
- str r4, [r7, 0x4]\n\
- lsrs r0, r1, 2\n\
- movs r1, 0x85\n\
- lsls r1, 24\n\
- b _08000DAA\n\
-_08000CF4:\n\
- mov r2, r12\n\
- ldrb r0, [r2]\n\
- lsls r0, 4\n\
- mov r5, r8\n\
- adds r5, 0xC\n\
- adds r0, r5\n\
- ldr r0, [r0]\n\
- str r0, [sp]\n\
- ldr r3, =0x040000D4 @REG_DMA3\n\
- mov r0, sp\n\
- str r0, [r3]\n\
- str r4, [r3, 0x4]\n\
- ldr r0, =0x85000400\n\
- str r0, [r3, 0x8]\n\
- ldr r0, [r3, 0x8]\n\
- adds r4, r6\n\
- subs r1, r6\n\
- cmp r1, r6\n\
- bhi _08000CF4\n\
- ldrb r0, [r2]\n\
- lsls r0, 4\n\
- adds r0, r5\n\
- ldr r0, [r0]\n\
- str r0, [sp]\n\
- mov r2, sp\n\
- str r2, [r3]\n\
- str r4, [r3, 0x4]\n\
- lsrs r0, r1, 2\n\
- movs r1, 0x85\n\
- lsls r1, 24\n\
- b _08000DEA\n\
- .pool\n\
-_08000D3C:\n\
- ldr r3, [r1]\n\
- mov r2, r10\n\
- adds r0, r5, r2\n\
- ldr r2, [r0]\n\
- ldrh r1, [r1, 0x8]\n\
- cmp r1, r6\n\
- bhi _08000D56\n\
- str r3, [r7]\n\
- str r2, [r7, 0x4]\n\
- lsrs r0, r1, 1\n\
- movs r1, 0x80\n\
- lsls r1, 24\n\
- b _08000DAA\n\
-_08000D56:\n\
- ldr r4, =0x040000D4 @REG_DMA3\n\
- str r3, [r4]\n\
- str r2, [r4, 0x4]\n\
- ldr r0, =0x80000800\n\
- str r0, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- adds r3, r6\n\
- adds r2, r6\n\
- subs r1, r6\n\
- cmp r1, r6\n\
- bhi _08000D56\n\
- str r3, [r4]\n\
- str r2, [r4, 0x4]\n\
- lsrs r0, r1, 1\n\
- movs r1, 0x80\n\
- lsls r1, 24\n\
-_08000D76:\n\
- orrs r0, r1\n\
- str r0, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- b _08000DF0\n\
- .pool\n\
-_08000D88:\n\
- mov r3, r10\n\
- adds r0, r5, r3\n\
- ldr r2, [r0]\n\
- ldrh r4, [r1, 0x8]\n\
- add r1, sp, 0x4\n\
- cmp r4, r6\n\
- bhi _08000DB2\n\
- mov r0, r8\n\
- adds r0, 0xC\n\
- adds r0, r5, r0\n\
- ldr r0, [r0]\n\
- strh r0, [r1]\n\
- str r1, [r7]\n\
- str r2, [r7, 0x4]\n\
- lsrs r0, r4, 1\n\
- movs r1, 0x81\n\
- lsls r1, 24\n\
-_08000DAA:\n\
- orrs r0, r1\n\
- str r0, [r7, 0x8]\n\
- ldr r0, [r7, 0x8]\n\
- b _08000DF0\n\
-_08000DB2:\n\
- mov r5, r12\n\
- ldrb r0, [r5]\n\
- lsls r0, 4\n\
- ldr r3, =gDma3Requests + 0x0C\n\
- adds r0, r3\n\
- ldr r0, [r0]\n\
- strh r0, [r1]\n\
- ldr r3, =0x040000D4 @REG_DMA3\n\
- str r1, [r3]\n\
- str r2, [r3, 0x4]\n\
- ldr r0, =0x81000800\n\
- str r0, [r3, 0x8]\n\
- ldr r0, [r3, 0x8]\n\
- adds r2, r6\n\
- subs r4, r6\n\
- cmp r4, r6\n\
- bhi _08000DB2\n\
- ldrb r0, [r5]\n\
- lsls r0, 4\n\
- ldr r5, =gDma3Requests + 0x0C\n\
- adds r0, r5\n\
- ldr r0, [r0]\n\
- strh r0, [r1]\n\
- str r1, [r3]\n\
- str r2, [r3, 0x4]\n\
- lsrs r0, r4, 1\n\
- movs r1, 0x81\n\
- lsls r1, 24\n\
-_08000DEA:\n\
- orrs r0, r1\n\
- str r0, [r3, 0x8]\n\
- ldr r0, [r3, 0x8]\n\
-_08000DF0:\n\
- ldr r1, =gDma3Requests\n\
- mov r3, r12\n\
- ldrb r0, [r3]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- mov r2, r9\n\
- str r2, [r0]\n\
- ldrb r0, [r3]\n\
- lsls r0, 4\n\
- add r0, r10\n\
- str r2, [r0]\n\
- ldrb r0, [r3]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- movs r4, 0\n\
- strh r2, [r0, 0x8]\n\
- ldrb r0, [r3]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- mov r5, r9\n\
- strh r5, [r0, 0xA]\n\
- ldrb r0, [r3]\n\
- lsls r0, 4\n\
- adds r1, 0xC\n\
- adds r0, r1\n\
- mov r1, r9\n\
- str r1, [r0]\n\
- ldrb r0, [r3]\n\
- adds r0, 0x1\n\
- strb r0, [r3]\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bge _08000E34\n\
- strb r4, [r3]\n\
-_08000E34:\n\
- mov r2, r12\n\
- ldrb r0, [r2]\n\
- lsls r0, 4\n\
- ldr r3, =gDma3Requests\n\
- adds r0, r3\n\
- ldrh r0, [r0, 0x8]\n\
- cmp r0, 0\n\
- beq _08000E46\n\
- b _08000C2E\n\
-_08000E46:\n\
- add sp, 0xC\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided");
-}
-#endif
-int RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode)
+s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode)
{
int cursor;
int var = 0;
@@ -466,7 +129,7 @@ int RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode)
return -1;
}
-int RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode)
+s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode)
{
int cursor;
int var = 0;
@@ -504,7 +167,7 @@ int RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode)
return -1;
}
-int CheckForSpaceForDma3Request(s16 index)
+s16 CheckForSpaceForDma3Request(s16 index)
{
int current = 0;
diff --git a/src/dynamic_placeholder_text_util.c b/src/dynamic_placeholder_text_util.c
new file mode 100644
index 000000000..6909fea30
--- /dev/null
+++ b/src/dynamic_placeholder_text_util.c
@@ -0,0 +1,70 @@
+#include "global.h"
+#include "text.h"
+#include "dynamic_placeholder_text_util.h"
+#include "string_util.h"
+
+static EWRAM_DATA const u8 *sStringPointers[8] = {0};
+
+static const u8 sTextColorTable[] =
+{
+ 0, 0, 0, 16, 17, 17, 17, 16, 16, 0, 0, 17, 1, 0, 17, 16,
+ 0, 16, 16, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0,
+ 17, 1, 0, 0, 0, 16, 17, 0, 16, 16, 16, 0, 1, 0, 51, 51,
+ 51, 51, 51, 51, 51, 51, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 50,
+};
+
+void DynamicPlaceholderTextUtil_Reset(void)
+{
+ const u8 **ptr = sStringPointers;
+ u8 *fillval = NULL;
+ const u8 **ptr2 = ptr + (NELEMS(sStringPointers) - 1);
+
+ do
+ {
+ *ptr2-- = fillval;
+ }
+ while ((intptr_t)ptr2 >= (intptr_t)ptr);
+}
+
+void DynamicPlaceholderTextUtil_SetPlaceholderPtr(u8 idx, const u8 *ptr)
+{
+ if (idx < NELEMS(sStringPointers))
+ sStringPointers[idx] = ptr;
+}
+
+u8 *DynamicPlaceholderTextUtil_ExpandPlaceholders(u8 *dest, const u8 *src)
+{
+ while (*src != EOS)
+ {
+ if (*src != CHAR_SPECIAL_F7)
+ {
+ *dest++ = *src++;
+ }
+ else
+ {
+ src++;
+ if (sStringPointers[*src] != NULL)
+ dest = StringCopy(dest, sStringPointers[*src]);
+ src++;
+ }
+ }
+ *dest = EOS;
+ return dest;
+}
+
+const u8 *DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 idx)
+{
+ return sStringPointers[idx];
+}
+
+u8 GetColorFromTextColorTable(u16 graphicId)
+{
+ u32 test = graphicId >> 1;
+ u32 shift = (graphicId & 1) << 2;
+
+ if (test > 0x4B)
+ return 3;
+ else
+ return (sTextColorTable[graphicId >> 1] >> shift) & 0xF;
+}
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
deleted file mode 100644
index d8e1a4d55..000000000
--- a/src/egg_hatch.c
+++ /dev/null
@@ -1,878 +0,0 @@
-#include "global.h"
-#include "pokemon.h"
-#include "egg_hatch.h"
-#include "pokedex.h"
-#include "constants/items.h"
-#include "script.h"
-#include "decompress.h"
-#include "task.h"
-#include "palette.h"
-#include "main.h"
-#include "event_data.h"
-#include "sound.h"
-#include "constants/songs.h"
-#include "text.h"
-#include "text_window.h"
-#include "string_util.h"
-#include "menu.h"
-#include "trig.h"
-#include "random.h"
-#include "malloc.h"
-#include "dma3.h"
-#include "gpu_regs.h"
-#include "bg.h"
-#include "m4a.h"
-#include "window.h"
-#include "graphics.h"
-#include "constants/abilities.h"
-#include "constants/species.h"
-#include "daycare.h"
-#include "overworld.h"
-#include "scanline_effect.h"
-#include "field_weather.h"
-#include "international_string_util.h"
-#include "naming_screen.h"
-#include "pokemon_storage_system.h"
-#include "field_screen_effect.h"
-#include "battle.h" // to get rid of later
-#include "help_system.h"
-#include "field_fadetransition.h"
-#include "new_menu_helpers.h"
-
-struct EggHatchData
-{
- u8 eggSpriteID;
- u8 pokeSpriteID;
- u8 CB2_state;
- u8 CB2_PalCounter;
- u8 eggPartyID;
- u8 unused_5;
- u8 unused_6;
- u8 eggShardVelocityID;
- u8 windowId;
- u8 unused_9;
- u8 unused_A;
- u16 species;
- struct TextColor textColor;
-};
-
-extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle
-extern const u8 gText_HatchedFromEgg[];
-extern const u8 gText_NickHatchPrompt[];
-
-static void Task_EggHatch(u8 taskID);
-static void CB2_EggHatch_0(void);
-static void CB2_EggHatch_1(void);
-static void SpriteCB_Egg_0(struct Sprite* sprite);
-static void SpriteCB_Egg_1(struct Sprite* sprite);
-static void SpriteCB_Egg_2(struct Sprite* sprite);
-static void SpriteCB_Egg_3(struct Sprite* sprite);
-static void SpriteCB_Egg_4(struct Sprite* sprite);
-static void SpriteCB_Egg_5(struct Sprite* sprite);
-static void SpriteCB_EggShard(struct Sprite* sprite);
-static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed);
-static void CreateRandomEggShardSprite(void);
-static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex);
-
-// IWRAM bss
-static IWRAM_DATA struct EggHatchData *sEggHatchData;
-
-// rom data
-static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/palettes/egg_palette.gbapal");
-static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp");
-static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp");
-
-static const struct OamData sOamData_EggHatch =
- {
- .y = 0,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = SPRITE_SHAPE(32x32),
- .x = 0,
- .matrixNum = 0,
- .size = SPRITE_SIZE(32x32),
- .tileNum = 0,
- .priority = 1,
- .paletteNum = 0,
- .affineParam = 0,
- };
-
-static const union AnimCmd sSpriteAnim_EggHatch0[] =
- {
- ANIMCMD_FRAME(0, 5),
- ANIMCMD_END
- };
-
-static const union AnimCmd sSpriteAnim_EggHatch1[] =
- {
- ANIMCMD_FRAME(16, 5),
- ANIMCMD_END
- };
-
-static const union AnimCmd sSpriteAnim_EggHatch2[] =
- {
- ANIMCMD_FRAME(32, 5),
- ANIMCMD_END
- };
-
-static const union AnimCmd sSpriteAnim_EggHatch3[] =
- {
- ANIMCMD_FRAME(48, 5),
- ANIMCMD_END
- };
-
-static const union AnimCmd *const sSpriteAnimTable_EggHatch[] =
- {
- sSpriteAnim_EggHatch0,
- sSpriteAnim_EggHatch1,
- sSpriteAnim_EggHatch2,
- sSpriteAnim_EggHatch3,
- };
-
-static const struct SpriteSheet sEggHatch_Sheet =
- {
- .data = sEggHatchTiles,
- .size = 2048,
- .tag = 12345,
- };
-
-static const struct SpriteSheet sEggShards_Sheet =
- {
- .data = sEggShardTiles,
- .size = 128,
- .tag = 23456,
- };
-
-static const struct SpritePalette sEgg_SpritePalette =
- {
- .data = sEggPalette,
- .tag = 54321
- };
-
-static const struct SpriteTemplate sSpriteTemplate_EggHatch =
- {
- .tileTag = 12345,
- .paletteTag = 54321,
- .oam = &sOamData_EggHatch,
- .anims = sSpriteAnimTable_EggHatch,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCallbackDummy
- };
-
-static const struct OamData sOamData_EggShard =
- {
- .y = 0,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = SPRITE_SHAPE(8x8),
- .x = 0,
- .matrixNum = 0,
- .size = SPRITE_SIZE(8x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
- .affineParam = 0,
- };
-
-static const union AnimCmd sSpriteAnim_EggShard0[] =
- {
- ANIMCMD_FRAME(0, 5),
- ANIMCMD_END
- };
-
-static const union AnimCmd sSpriteAnim_EggShard1[] =
- {
- ANIMCMD_FRAME(1, 5),
- ANIMCMD_END
- };
-
-static const union AnimCmd sSpriteAnim_EggShard2[] =
- {
- ANIMCMD_FRAME(2, 5),
- ANIMCMD_END
- };
-
-static const union AnimCmd sSpriteAnim_EggShard3[] =
- {
- ANIMCMD_FRAME(3, 5),
- ANIMCMD_END
- };
-
-static const union AnimCmd *const sSpriteAnimTable_EggShard[] =
- {
- sSpriteAnim_EggShard0,
- sSpriteAnim_EggShard1,
- sSpriteAnim_EggShard2,
- sSpriteAnim_EggShard3,
- };
-
-static const struct SpriteTemplate sSpriteTemplate_EggShard =
- {
- .tileTag = 23456,
- .paletteTag = 54321,
- .oam = &sOamData_EggShard,
- .anims = sSpriteAnimTable_EggShard,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_EggShard
- };
-
-static const struct BgTemplate sBgTemplates_EggHatch[2] =
- {
- {
- .bg = 0,
- .charBaseIndex = 2,
- .mapBaseIndex = 24,
- .screenSize = 3,
- .paletteMode = 0,
- .priority = 0,
- .baseTile = 0
- },
-
- {
- .bg = 1,
- .charBaseIndex = 0,
- .mapBaseIndex = 8,
- .screenSize = 1,
- .paletteMode = 0,
- .priority = 2,
- .baseTile = 0
- },
- };
-
-static const struct WindowTemplate sWinTemplates_EggHatch[2] =
- {
- {
- .bg = 0,
- .tilemapLeft = 2,
- .tilemapTop = 15,
- .width = 26,
- .height = 4,
- .paletteNum = 0,
- .baseBlock = 64
- },
- DUMMY_WIN_TEMPLATE
- };
-
-static const struct WindowTemplate sYesNoWinTemplate =
- {
- .bg = 0,
- .tilemapLeft = 21,
- .tilemapTop = 9,
- .width = 5,
- .height = 4,
- .paletteNum = 15,
- .baseBlock = 424
- };
-
-static const s16 sEggShardVelocities[][2] =
- {
- {Q_8_8(-1.5), Q_8_8(-3.75)},
- {Q_8_8(-5), Q_8_8(-3)},
- {Q_8_8(3.5), Q_8_8(-3)},
- {Q_8_8(-4), Q_8_8(-3.75)},
- {Q_8_8(2), Q_8_8(-1.5)},
- {Q_8_8(-0.5), Q_8_8(-6.75)},
- {Q_8_8(5), Q_8_8(-2.25)},
- {Q_8_8(-1.5), Q_8_8(-3.75)},
- {Q_8_8(4.5), Q_8_8(-1.5)},
- {Q_8_8(-1), Q_8_8(-6.75)},
- {Q_8_8(4), Q_8_8(-2.25)},
- {Q_8_8(-3.5), Q_8_8(-3.75)},
- {Q_8_8(1), Q_8_8(-1.5)},
- {Q_8_8(-3.515625), Q_8_8(-6.75)},
- {Q_8_8(4.5), Q_8_8(-2.25)},
- {Q_8_8(-0.5), Q_8_8(-7.5)},
- {Q_8_8(1), Q_8_8(-4.5)},
- {Q_8_8(-2.5), Q_8_8(-2.25)},
- {Q_8_8(2.5), Q_8_8(-7.5)},
- };
-
-// code
-
-static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
-{
- u16 species;
- u32 personality, pokerus;
- u8 i, friendship, language, gameMet, markings, obedience;
- u16 moves[4];
- u32 ivs[NUM_STATS];
-
-
- species = GetMonData(egg, MON_DATA_SPECIES);
-
- for (i = 0; i < 4; i++)
- {
- moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i);
- }
-
- personality = GetMonData(egg, MON_DATA_PERSONALITY);
-
- for (i = 0; i < NUM_STATS; i++)
- {
- ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i);
- }
-
-// language = GetMonData(egg, MON_DATA_LANGUAGE);
- gameMet = GetMonData(egg, MON_DATA_MET_GAME);
- markings = GetMonData(egg, MON_DATA_MARKINGS);
- pokerus = GetMonData(egg, MON_DATA_POKERUS);
- obedience = GetMonData(egg, MON_DATA_OBEDIENCE);
-
- CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, 0, 0);
-
- for (i = 0; i < 4; i++)
- {
- SetMonData(temp, MON_DATA_MOVE1 + i, &moves[i]);
- }
-
- for (i = 0; i < NUM_STATS; i++)
- {
- SetMonData(temp, MON_DATA_HP_IV + i, &ivs[i]);
- }
-
- language = GAME_LANGUAGE;
- SetMonData(temp, MON_DATA_LANGUAGE, &language);
- SetMonData(temp, MON_DATA_MET_GAME, &gameMet);
- SetMonData(temp, MON_DATA_MARKINGS, &markings);
-
- friendship = 120;
- SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship);
- SetMonData(temp, MON_DATA_POKERUS, &pokerus);
- SetMonData(temp, MON_DATA_OBEDIENCE, &obedience);
-
- *egg = *temp;
-}
-
-static void AddHatchedMonToParty(u8 id)
-{
- u8 isEgg = 0x46; // ?
- u16 pokeNum;
- u8 name[12];
- u16 ball;
- u16 caughtLvl;
- u8 mapNameID;
- struct Pokemon* mon = &gPlayerParty[id];
-
- CreatedHatchedMon(mon, &gEnemyParty[0]);
- SetMonData(mon, MON_DATA_IS_EGG, &isEgg);
-
- pokeNum = GetMonData(mon, MON_DATA_SPECIES);
- GetSpeciesName(name, pokeNum);
- SetMonData(mon, MON_DATA_NICKNAME, name);
-
- pokeNum = SpeciesToNationalPokedexNum(pokeNum);
- GetSetPokedexFlag(pokeNum, FLAG_SET_SEEN);
- GetSetPokedexFlag(pokeNum, FLAG_SET_CAUGHT);
-
- GetMonNick(mon, gStringVar1);
-
- ball = ITEM_POKE_BALL;
- SetMonData(mon, MON_DATA_POKEBALL, &ball);
-
- caughtLvl = 0;
- SetMonData(mon, MON_DATA_MET_LEVEL, &caughtLvl);
-
- mapNameID = GetCurrentRegionMapSectionId();
- SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID);
-
- MonRestorePP(mon);
- CalculateMonStats(mon);
-}
-
-void ScriptHatchMon(void)
-{
- AddHatchedMonToParty(gSpecialVar_0x8004);
-}
-
-static bool8 sub_8046E34(struct DayCare *daycare, u8 daycareId)
-{
- u8 nick[0x20];
- struct DaycareMon *daycareMon = &daycare->mons[daycareId];
-
- GetBoxMonNick(&daycareMon->mon, nick);
- if (daycareMon->mail.message.itemId != 0
- && (StringCompare(nick, daycareMon->mail.monName) != 0
- || StringCompare(gSaveBlock2Ptr->playerName, daycareMon->mail.OT_name) != 0))
- {
- StringCopy(gStringVar1, nick);
- StringCopy(gStringVar2, daycareMon->mail.OT_name);
- StringCopy(gStringVar3, daycareMon->mail.monName);
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_8046EAC(void)
-{
- return sub_8046E34(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
-}
-
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
-
-static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc)
-{
- u8 r4 = 0;
- u8 spriteID = 0; // r7
- struct Pokemon* mon = NULL; // r5
-
- if (a0 == 0)
- {
- mon = &gPlayerParty[pokeID];
- r4 = 1;
- }
- if (a0 == 1)
- {
- mon = &gPlayerParty[pokeID];
- r4 = 3;
- }
- switch (switchID)
- {
- case 0:
- {
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
- u32 pid = GetMonData(mon, MON_DATA_PERSONALITY);
- sub_800ECC4(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[(a0 * 2) + 1], species, pid);
- LoadCompressedObjectPalette(GetMonSpritePalStruct(mon));
- *speciesLoc = species;
- }
- break;
- case 1:
- SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, r4);
- spriteID = CreateSprite(&gMultiuseSpriteTemplate, 120, 70, 6);
- gSprites[spriteID].invisible = TRUE;
- gSprites[spriteID].callback = SpriteCallbackDummy;
- break;
- }
- return spriteID;
-}
-
-static void VBlankCB_EggHatch(void)
-{
- LoadOam();
- ProcessSpriteCopyRequests();
- TransferPlttBuffer();
-}
-
-void EggHatch(void)
-{
- ScriptContext2_Enable();
- CreateTask(Task_EggHatch, 10);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- sub_812B478();
-}
-
-static void Task_EggHatch(u8 taskID)
-{
- if (!gPaletteFade.active)
- {
- CleanupOverworldWindowsAndTilemaps();
- SetMainCallback2(CB2_EggHatch_0);
- gFieldCallback = FieldCallback_ReturnToEventScript2;
- DestroyTask(taskID);
- }
-}
-
-static void CB2_EggHatch_0(void)
-{
- switch (gMain.state)
- {
- case 0:
- SetGpuReg(REG_OFFSET_DISPCNT, 0);
-
- sEggHatchData = Alloc(sizeof(struct EggHatchData));
- AllocateMonSpritesGfx();
- sEggHatchData->eggPartyID = gSpecialVar_0x8004;
- sEggHatchData->eggShardVelocityID = 0;
-
- SetVBlankCallback(VBlankCB_EggHatch);
- gSpecialVar_0x8005 = GetCurrentMapMusic();
-
- reset_temp_tile_data_buffers();
- ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sBgTemplates_EggHatch, ARRAY_COUNT(sBgTemplates_EggHatch));
-
- ChangeBgX(1, 0, 0);
- ChangeBgY(1, 0, 0);
- ChangeBgX(0, 0, 0);
- ChangeBgY(0, 0, 0);
-
- SetBgAttribute(1, 7, 2);
- SetBgTilemapBuffer(1, Alloc(0x1000));
- SetBgTilemapBuffer(0, Alloc(0x2000));
-
- DeactivateAllTextPrinters();
- ResetPaletteFade();
- FreeAllSpritePalettes();
- ResetSpriteData();
- ResetTasks();
- ScanlineEffect_Stop();
- m4aSoundVSyncOn();
- gMain.state++;
- break;
- case 1:
- InitWindows(sWinTemplates_EggHatch);
- sEggHatchData->windowId = 0;
- gMain.state++;
- break;
- case 2:
- DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0);
- CopyToBgTilemapBuffer(0, gFile_graphics_interface_menu_map_tilemap, 0, 0);
- LoadCompressedPalette(gBattleTextboxPalette, 0, 0x20);
- gMain.state++;
- break;
- case 3:
- LoadSpriteSheet(&sEggHatch_Sheet);
- LoadSpriteSheet(&sEggShards_Sheet);
- LoadSpritePalette(&sEgg_SpritePalette);
- gMain.state++;
- break;
- case 4:
- CopyBgTilemapBufferToVram(0);
- AddHatchedMonToParty(sEggHatchData->eggPartyID);
- gMain.state++;
- break;
- case 5:
- EggHatchCreateMonSprite(0, 0, sEggHatchData->eggPartyID, &sEggHatchData->species);
- gMain.state++;
- break;
- case 6:
- sEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, sEggHatchData->eggPartyID, &sEggHatchData->species);
- gMain.state++;
- break;
- case 7:
- SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
- LoadPalette(gTradeGba2_Pal, 0x10, 0xA0);
- LoadBgTiles(1, gTradeGba_Gfx, 0x1420, 0);
- CopyToBgTilemapBuffer(1, gUnknown_08331F60, 0x1000, 0);
- CopyBgTilemapBufferToVram(1);
- gMain.state++;
- break;
- case 8:
- SetMainCallback2(CB2_EggHatch_1);
- sEggHatchData->CB2_state = 0;
- break;
- }
- RunTasks();
- RunTextPrinters();
- AnimateSprites();
- BuildOamBuffer();
- UpdatePaletteFade();
-}
-
-static void EggHatchSetMonNickname(void)
-{
- SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3);
- FreeMonSpritesGfx();
- Free(sEggHatchData);
- sub_812B484();
- SetMainCallback2(CB2_ReturnToField);
-}
-
-static void Task_EggHatchPlayBGM(u8 taskID)
-{
- if (gTasks[taskID].data[0] == 0)
- {
- StopMapMusic();
- }
- if (gTasks[taskID].data[0] == 1)
- PlayBGM(MUS_ME_SHINKA);
- if (gTasks[taskID].data[0] > 60)
- {
- PlayBGM(MUS_SHINKA);
- DestroyTask(taskID);
- // UB: task is destroyed, yet the value is incremented
- }
- gTasks[taskID].data[0]++;
-}
-
-static void CB2_EggHatch_1(void)
-{
- u16 species;
- u8 gender;
- u32 personality;
-
- switch (sEggHatchData->CB2_state)
- {
- case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
- sEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_EggHatch, 120, 75, 5);
- ShowBg(0);
- ShowBg(1);
- sEggHatchData->CB2_state++;
- CreateTask(Task_EggHatchPlayBGM, 5);
- break;
- case 1:
- if (!gPaletteFade.active)
- {
- FillWindowPixelBuffer(sEggHatchData->windowId, 0x00);
- sEggHatchData->CB2_PalCounter = 0;
- sEggHatchData->CB2_state++;
- }
- break;
- case 2:
- if (++sEggHatchData->CB2_PalCounter > 30)
- {
- sEggHatchData->CB2_state++;
- gSprites[sEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0;
- }
- break;
- case 3:
- if (gSprites[sEggHatchData->eggSpriteID].callback == SpriteCallbackDummy)
- {
- PlayCry1(sEggHatchData->species, 0);
- sEggHatchData->CB2_state++;
- }
- break;
- case 4:
- if (IsCryFinished())
- {
- sEggHatchData->CB2_state++;
- }
- break;
- case 5:
- GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
- StringExpandPlaceholders(gStringVar4, gText_HatchedFromEgg);
- EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 3, 0xFF);
- PlayFanfare(MUS_FANFA5);
- sEggHatchData->CB2_state++;
- PutWindowTilemap(sEggHatchData->windowId);
- CopyWindowToVram(sEggHatchData->windowId, 3);
- break;
- case 6:
- if (IsFanfareTaskInactive())
- sEggHatchData->CB2_state++;
- break;
- case 7:
- if (IsFanfareTaskInactive())
- sEggHatchData->CB2_state++;
- break;
- case 8:
- GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
- StringExpandPlaceholders(gStringVar4, gText_NickHatchPrompt);
- EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 2, 1);
- sEggHatchData->CB2_state++;
- break;
- case 9:
- if (!IsTextPrinterActive(sEggHatchData->windowId))
- {
- LoadUserWindowBorderGfx(sEggHatchData->windowId, 0x140, 0xE0);
- CreateYesNoMenu(&sYesNoWinTemplate, 3, 0, 2, 0x140, 0xE, 0);
- sEggHatchData->CB2_state++;
- }
- break;
- case 10:
- switch (Menu_ProcessInputNoWrapClearOnChoose())
- {
- case 0:
- GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
- species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
- gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]);
- personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0);
- DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname);
- break;
- case 1:
- case -1:
- sEggHatchData->CB2_state++;
- }
- break;
- case 11:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
- sEggHatchData->CB2_state++;
- break;
- case 12:
- if (!gPaletteFade.active)
- {
- RemoveWindow(sEggHatchData->windowId);
- UnsetBgTilemapBuffer(0);
- UnsetBgTilemapBuffer(1);
- Free(sEggHatchData);
- SetMainCallback2(CB2_ReturnToField);
- sub_812B484();
- }
- break;
- }
-
- RunTasks();
- RunTextPrinters();
- AnimateSprites();
- BuildOamBuffer();
- UpdatePaletteFade();
-}
-
-static void SpriteCB_Egg_0(struct Sprite* sprite)
-{
- if (++sprite->data[0] > 20)
- {
- sprite->callback = SpriteCB_Egg_1;
- sprite->data[0] = 0;
- }
- else
- {
- sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], 1);
- if (sprite->data[0] == 15)
- {
- PlaySE(SE_BOWA);
- StartSpriteAnim(sprite, 1);
- CreateRandomEggShardSprite();
- }
- }
-}
-
-static void SpriteCB_Egg_1(struct Sprite* sprite)
-{
- if (++sprite->data[2] > 30)
- {
- if (++sprite->data[0] > 20)
- {
- sprite->callback = SpriteCB_Egg_2;
- sprite->data[0] = 0;
- sprite->data[2] = 0;
- }
- else
- {
- sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], 2);
- if (sprite->data[0] == 15)
- {
- PlaySE(SE_BOWA);
- StartSpriteAnim(sprite, 2);
- }
- }
- }
-}
-
-struct UnkStruct_82349CC
-{
- u8 field_0;
- u8 field_1;
- u8 field_2;
- u8 field_3;
-};
-
-extern const struct UnkStruct_82349CC gUnknown_82349CC[NUM_SPECIES];
-
-static void SpriteCB_Egg_2(struct Sprite* sprite)
-{
- if (++sprite->data[2] > 30)
- {
- if (++sprite->data[0] > 38)
- {
- u16 species;
-
- sprite->callback = SpriteCB_Egg_3;
- sprite->data[0] = 0;
- species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
- gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0;
- gSprites[sEggHatchData->pokeSpriteID].pos2.y = gUnknown_82349CC[species].field_1;
- }
- else
- {
- sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], 2);
- if (sprite->data[0] == 15)
- {
- PlaySE(SE_BOWA);
- StartSpriteAnim(sprite, 2);
- CreateRandomEggShardSprite();
- CreateRandomEggShardSprite();
- }
- if (sprite->data[0] == 30)
- PlaySE(SE_BOWA);
- }
- }
-}
-
-static void SpriteCB_Egg_3(struct Sprite* sprite)
-{
- if (++sprite->data[0] > 50)
- {
- sprite->callback = SpriteCB_Egg_4;
- sprite->data[0] = 0;
- }
-}
-
-static void SpriteCB_Egg_4(struct Sprite* sprite)
-{
- s16 i;
- if (sprite->data[0] == 0)
- BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, 0xFFFF);
- if (sprite->data[0] < 4u)
- {
- for (i = 0; i <= 3; i++)
- CreateRandomEggShardSprite();
- }
- sprite->data[0]++;
- if (!gPaletteFade.active)
- {
- PlaySE(SE_JIHANKI);
- sprite->invisible = TRUE;
- sprite->callback = SpriteCB_Egg_5;
- sprite->data[0] = 0;
- }
-}
-
-static void SpriteCB_Egg_5(struct Sprite* sprite)
-{
- if (sprite->data[0] == 0)
- {
- gSprites[sEggHatchData->pokeSpriteID].invisible = FALSE;
- StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1);
- }
- if (sprite->data[0] == 8)
- BeginNormalPaletteFade(0xFFFFFFFF, -1, 0x10, 0, 0xFFFF);
- if (sprite->data[0] <= 9)
- gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1;
- if (sprite->data[0] > 40)
- sprite->callback = SpriteCallbackDummy;
- sprite->data[0]++;
-}
-
-static void SpriteCB_EggShard(struct Sprite* sprite)
-{
- sprite->data[4] += sprite->data[1];
- sprite->data[5] += sprite->data[2];
-
- sprite->pos2.x = sprite->data[4] / 256;
- sprite->pos2.y = sprite->data[5] / 256;
-
- sprite->data[2] += sprite->data[3];
-
- if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data[2] > 0)
- DestroySprite(sprite);
-}
-
-static void CreateRandomEggShardSprite(void)
-{
- u16 spriteAnimIndex;
-
- s16 velocity1 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][0];
- s16 velocity2 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][1];
- sEggHatchData->eggShardVelocityID++;
- spriteAnimIndex = Random() % 4;
- CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex);
-}
-
-static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex)
-{
- u8 spriteID = CreateSprite(&sSpriteTemplate_EggShard, x, y, 4);
- gSprites[spriteID].data[1] = data1;
- gSprites[spriteID].data[2] = data2;
- gSprites[spriteID].data[3] = data3;
- StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex);
-}
-
-static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed)
-{
- FillWindowPixelBuffer(windowId, 0xFF);
- sEggHatchData->textColor.fgColor = 0;
- sEggHatchData->textColor.bgColor = 5;
- sEggHatchData->textColor.shadowColor = 6;
- AddTextPrinterParametrized2(windowId, 3, x, y, 1, 1, &sEggHatchData->textColor, speed, string);
-}
diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c
new file mode 100644
index 000000000..2a9b9ea71
--- /dev/null
+++ b/src/ereader_helpers.c
@@ -0,0 +1,397 @@
+#include "global.h"
+#include "link.h"
+#include "unk_815c27c.h"
+
+enum {
+ EREADER_XFR_STATE_INIT,
+ EREADER_XFR_STATE_HANDSHAKE,
+ EREADER_XFR_STATE_START,
+ EREADER_XFR_STATE_TRANSFER,
+};
+
+struct SendRecvMgr
+{
+ u8 sendOrRecv;
+ u8 state;
+ u8 field_02;
+ u8 field_03;
+ u8 field_04;
+ u32 * dataptr;
+ int cursor;
+ int size;
+ u32 checksum;
+};
+
+static bool16 DetermineSendRecvState(u8);
+static void SetUpTransferManager(size_t, const void *, void *);
+static void StartTm3(void);
+static void EnableSio(void);
+static void DisableTm3(void);
+static void GetKeyInput(void);
+
+static struct SendRecvMgr sSendRecvMgr;
+static u16 sJoyNewOrRepeated;
+static u16 sJoyNew;
+static u16 sSendRecvStatus;
+static u16 sCounter1;
+static u32 sCounter2;
+static u16 sSavedIme;
+static u16 sSavedIe;
+static u16 sSavedTm3Cnt;
+static u16 sSavedSioCnt;
+static u16 sSavedSioCnt;
+static u16 sSavedRCnt;
+
+int EReader_Send(size_t r6, const void * r5)
+{
+ int result;
+ EReaderHelper_SaveRegsState();
+
+ while (1)
+ {
+ GetKeyInput();
+ if (TEST_BUTTON(sJoyNew, B_BUTTON))
+ gUnknown_3003F84 = 2;
+
+ sSendRecvStatus = EReaderHandleTransfer(1, r6, r5, NULL);
+ if ((sSendRecvStatus & 0x13) == 0x10)
+ {
+ result = 0;
+ break;
+ }
+ else if (sSendRecvStatus & 8)
+ {
+ result = 1;
+ break;
+ }
+ else if (sSendRecvStatus & 4)
+ {
+ result = 2;
+ break;
+ }
+ else
+ {
+ gUnknown_3003F84 = 0;
+ VBlankIntrWait();
+ }
+ }
+
+ CpuFill32(0, &sSendRecvMgr, sizeof(sSendRecvMgr));
+ EReaderHelper_RestoreRegsState();
+ return result;
+}
+
+int EReader_Recv(void * r5)
+{
+ int result;
+ EReaderHelper_SaveRegsState();
+
+ while (1)
+ {
+ GetKeyInput();
+ if (TEST_BUTTON(sJoyNew, B_BUTTON))
+ gUnknown_3003F84 = 2;
+
+ sSendRecvStatus = EReaderHandleTransfer(0, 0, NULL, r5);
+ if ((sSendRecvStatus & 0x13) == 0x10)
+ {
+ result = 0;
+ break;
+ }
+ else if (sSendRecvStatus & 8)
+ {
+ result = 1;
+ break;
+ }
+ else if (sSendRecvStatus & 4)
+ {
+ result = 2;
+ break;
+ }
+ else
+ {
+ gUnknown_3003F84 = 0;
+ VBlankIntrWait();
+ }
+ }
+
+ CpuFill32(0, &sSendRecvMgr, sizeof(sSendRecvMgr));
+ EReaderHelper_RestoreRegsState();
+ return result;
+}
+
+static void CloseSerial(void)
+{
+ REG_IME = 0;
+ REG_IE &= ~(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
+ REG_IME = 1;
+ REG_SIOCNT = 0;
+ REG_TM3CNT_H = 0;
+ REG_IF = INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL;
+}
+
+static void OpenSerialMulti(void)
+{
+ REG_IME = 0;
+ REG_IE &= ~(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
+ REG_IME = 1;
+ REG_RCNT = 0;
+ REG_SIOCNT = SIO_MULTI_MODE;
+ REG_SIOCNT |= SIO_INTR_ENABLE | SIO_115200_BPS;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_SERIAL;
+ REG_IME = 1;
+ if (sSendRecvMgr.state == 0)
+ CpuFill32(0, &sSendRecvMgr, sizeof(sSendRecvMgr));
+}
+
+static void OpenSerial32(void)
+{
+ REG_RCNT = 0;
+ REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE;
+ REG_SIOCNT |= SIO_MULTI_SD;
+ gUnknown_3003F84 = 0;
+ sCounter1 = 0;
+ sCounter2 = 0;
+}
+
+u16 EReaderHandleTransfer(u8 mode, size_t size, const void * data, void * recvBuffer)
+{
+ switch (sSendRecvMgr.state)
+ {
+ case 0:
+ OpenSerialMulti();
+ sSendRecvMgr.field_02 = 1;
+ sSendRecvMgr.state = 1;
+ break;
+ case 1:
+ if (DetermineSendRecvState(mode))
+ EnableSio();
+ if (gUnknown_3003F84 == 2)
+ {
+ sSendRecvMgr.field_04 = 2;
+ sSendRecvMgr.state = 6;
+ }
+ break;
+ case 2:
+ OpenSerial32();
+ SetUpTransferManager(size, data, recvBuffer);
+ sSendRecvMgr.state = 3;
+ // fallthrough
+ case 3:
+ if (gUnknown_3003F84 == 2)
+ {
+ sSendRecvMgr.field_04 = 2;
+ sSendRecvMgr.state = 6;
+ }
+ else
+ {
+ sCounter1++;
+ sCounter2++;
+ if (sSendRecvMgr.sendOrRecv == 0 && sCounter2 > 60)
+ {
+ sSendRecvMgr.field_04 = 1;
+ sSendRecvMgr.state = 6;
+ }
+ if (sSendRecvMgr.field_02 != 2)
+ {
+ if (sSendRecvMgr.sendOrRecv != 0 && sCounter1 > 2)
+ {
+ EnableSio();
+ sSendRecvMgr.field_02 = 2;
+ }
+ else
+ {
+ EnableSio();
+ sSendRecvMgr.field_02 = 2;
+ }
+ }
+ }
+ break;
+ case 4:
+ OpenSerialMulti();
+ sSendRecvMgr.state = 5;
+ break;
+ case 5:
+ if (sSendRecvMgr.sendOrRecv == 1 && sCounter1 > 2)
+ EnableSio();
+ if (++sCounter1 > 60)
+ {
+ sSendRecvMgr.field_04 = 1;
+ sSendRecvMgr.state = 6;
+ }
+ break;
+ case 6:
+ if (sSendRecvMgr.field_02 != 0)
+ {
+ CloseSerial();
+ sSendRecvMgr.field_02 = 0;
+ }
+ break;
+ }
+ return sSendRecvMgr.field_02 | (sSendRecvMgr.field_04 << 2) | (sSendRecvMgr.field_03 << 4);
+}
+
+static bool16 DetermineSendRecvState(u8 mode)
+{
+ bool16 resp;
+ if ((*(vu32 *)REG_ADDR_SIOCNT & (SIO_MULTI_SI | SIO_MULTI_SD)) == SIO_MULTI_SD && mode)
+ resp = sSendRecvMgr.sendOrRecv = TRUE;
+ else
+ resp = sSendRecvMgr.sendOrRecv = FALSE;
+ return resp;
+}
+
+static void SetUpTransferManager(size_t size, const void * data, void * recvBuffer)
+{
+ if (sSendRecvMgr.sendOrRecv)
+ {
+ REG_SIOCNT |= SIO_38400_BPS;
+ sSendRecvMgr.dataptr = (void *)data;
+ REG_SIODATA32 = size;
+ sSendRecvMgr.size = size / 4 + 1;
+ StartTm3();
+ }
+ else
+ {
+ REG_SIOCNT |= SIO_9600_BPS;
+ sSendRecvMgr.dataptr = recvBuffer;
+ }
+}
+
+static void StartTm3(void)
+{
+ REG_TM3CNT_L = -601;
+ REG_TM3CNT_H = TIMER_INTR_ENABLE;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_TIMER3;
+ REG_IME = 1;
+}
+
+void EReaderHelper_Timer3Callback(void)
+{
+ DisableTm3();
+ EnableSio();
+}
+
+void EReaderHelper_SerialCallback(void)
+{
+ u16 recv[4];
+ u16 i;
+ u16 cnt1;
+ u16 cnt2;
+ u32 recv32;
+
+ switch (sSendRecvMgr.state)
+ {
+ case 1:
+ REG_SIOMLT_SEND = 0xCCD0;
+ *(u64 *)recv = REG_SIOMLT_RECV;
+ for (i = 0, cnt1 = 0, cnt2 = 0; i < 4; i++)
+ {
+ if (recv[i] == 0xCCD0)
+ cnt1++;
+ else if (recv[i] != 0xFFFF)
+ cnt2++;
+ }
+ if (cnt1 == 2 && cnt2 == 0)
+ sSendRecvMgr.state = 2;
+ break;
+ case 3:
+ recv32 = REG_SIODATA32;
+ if (sSendRecvMgr.cursor == 0 && sSendRecvMgr.sendOrRecv == 0)
+ sSendRecvMgr.size = recv32 / 4 + 1;
+ if (sSendRecvMgr.sendOrRecv == 1)
+ {
+ if (sSendRecvMgr.cursor < sSendRecvMgr.size)
+ {
+ REG_SIODATA32 = sSendRecvMgr.dataptr[sSendRecvMgr.cursor];
+ sSendRecvMgr.checksum += sSendRecvMgr.dataptr[sSendRecvMgr.cursor];
+ }
+ else
+ REG_SIODATA32 = sSendRecvMgr.checksum;
+ }
+ else
+ {
+ if (sSendRecvMgr.cursor > 0 && sSendRecvMgr.cursor < sSendRecvMgr.size + 1)
+ {
+ sSendRecvMgr.dataptr[sSendRecvMgr.cursor - 1] = recv32;
+ sSendRecvMgr.checksum += recv32;
+ }
+ else if (sSendRecvMgr.cursor != 0)
+ {
+ if (sSendRecvMgr.checksum == recv32)
+ sSendRecvMgr.field_03 = 1;
+ else
+ sSendRecvMgr.field_03 = 2;
+ }
+ sCounter2 = 0;
+ }
+ sSendRecvMgr.cursor++;
+ if (sSendRecvMgr.cursor < sSendRecvMgr.size + 2)
+ {
+ if (sSendRecvMgr.sendOrRecv != 0)
+ REG_TM3CNT_H |= TIMER_ENABLE;
+ else
+ EnableSio();
+ }
+ else
+ {
+ sSendRecvMgr.state = 4;
+ sCounter1 = 0;
+ }
+ break;
+ case 5:
+ if (sSendRecvMgr.sendOrRecv == 0)
+ REG_SIODATA8 = sSendRecvMgr.field_03;
+ *(vu64 *)recv = REG_SIOMLT_RECV;
+ if (recv[1] == 1 || recv[1] == 2)
+ {
+ if (sSendRecvMgr.sendOrRecv == 1)
+ sSendRecvMgr.field_03 = recv[1];
+ sSendRecvMgr.state = 6;
+ }
+ break;
+ }
+}
+
+static void EnableSio(void)
+{
+ REG_SIOCNT |= SIO_ENABLE;
+}
+
+static void DisableTm3(void)
+{
+ REG_TM3CNT_H &= ~TIMER_ENABLE;
+ REG_TM3CNT_L = -601;
+}
+
+static void GetKeyInput(void)
+{
+ u16 rawKeys = REG_KEYINPUT ^ 0x3FF;
+ sJoyNew = rawKeys & ~sJoyNewOrRepeated;
+ sJoyNewOrRepeated = rawKeys;
+}
+
+void EReaderHelper_SaveRegsState(void)
+{
+ sSavedIme = REG_IME;
+ sSavedIe = REG_IE;
+ sSavedTm3Cnt = REG_TM3CNT_H;
+ sSavedSioCnt = REG_SIOCNT;
+ sSavedRCnt = REG_RCNT;
+}
+
+void EReaderHelper_RestoreRegsState(void)
+{
+ REG_IME = sSavedIme;
+ REG_IE = sSavedIe;
+ REG_TM3CNT_H = sSavedTm3Cnt;
+ REG_SIOCNT = sSavedSioCnt;
+ REG_RCNT = sSavedRCnt;
+}
+
+void EReaderHelper_ClearsSendRecvMgr(void)
+{
+ CpuFill32(0, &sSendRecvMgr, sizeof(sSendRecvMgr));
+}
diff --git a/src/fame_checker.c b/src/fame_checker.c
index 795863aca..aa1684981 100644
--- a/src/fame_checker.c
+++ b/src/fame_checker.c
@@ -127,9 +127,9 @@ extern const u8 gFameCheckerText_Cancel[];
extern const u8 gFameCheckerText_ListMenuCursor[];
extern const u8 gFameCheckerText_FameCheckerWillBeClosed[];
extern const u8 gFameCheckerText_ClearTextbox[];
-extern const u8 gFameCheckerText_MainScreenUI[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$"
-extern const u8 gFameCheckerText_PickScreenUI[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$"
-extern const u8 gFameCheckerText_FlavorTextUI[]; // "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {KEYGFX_B_BUTTON}CANCEL$"
+extern const u8 gFameCheckerText_MainScreenUI[]; // "{KEYGFX_DPAD_ANY}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$"
+extern const u8 gFameCheckerText_PickScreenUI[]; // "{KEYGFX_DPAD_ANY}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$"
+extern const u8 gFameCheckerText_FlavorTextUI[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_A_BUTTON}READ {KEYGFX_B_BUTTON}CANCEL$"
extern const u8 gFameCheckerOakName[]; // "OAK$"
extern const u8 gFameCheckerDaisyName[]; // "DAISY$"
extern const u8 gFameCheckerBillName[]; // "BILL$"
@@ -552,7 +552,7 @@ static void Task_TopMenuHandleInput(u8 taskId)
if (FindTaskIdByFunc(Task_FCOpenOrCloseInfoBox) == 0xFF)
{
RunTextPrinters();
- if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != UseFameCheckerFromMenu)
+ if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != ReturnToBagFromKeyItem)
task->func = Task_StartToCloseFameChecker;
else if (JOY_NEW(START_BUTTON))
{
@@ -580,7 +580,7 @@ static void Task_TopMenuHandleInput(u8 taskId)
}
else if (JOY_NEW(A_BUTTON))
{
- cursorPos = ListMenuHandleInput(0);
+ cursorPos = ListMenu_ProcessInput(0);
if (cursorPos == sFameCheckerData->numUnlockedPersons - 1) // CANCEL
task->func = Task_StartToCloseFameChecker;
else if (sFameCheckerData->inPickMode)
@@ -615,7 +615,7 @@ static void Task_TopMenuHandleInput(u8 taskId)
task->func = Task_StartToCloseFameChecker;
}
else
- ListMenuHandleInput(0);
+ ListMenu_ProcessInput(0);
}
}
@@ -639,7 +639,7 @@ static bool8 TryExitPickMode(u8 taskId)
static void MessageBoxPrintEmptyText(void)
{
- AddTextPrinterParametrized(2, 2, gFameCheckerText_ClearTextbox, 0, NULL, 2, 1, 3);
+ AddTextPrinterParameterized2(2, 2, gFameCheckerText_ClearTextbox, 0, NULL, 2, 1, 3);
}
static void Task_EnterPickMode(u8 taskId)
@@ -779,7 +779,7 @@ static void GetPickModeText(void)
if (HasUnlockedAllFlavorTextsForCurrentPerson() == TRUE)
offset = NUM_FAMECHECKER_PERSONS;
StringExpandPlaceholders(gStringVar4, sFameCheckerNameAndQuotesPointers[sFameCheckerData->unlockedPersons[who] + offset]);
- AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, GetTextSpeedSetting(), NULL, 2, 1, 3);
+ AddTextPrinterParameterized2(FCWINDOWID_MSGBOX, 2, gStringVar4, GetTextSpeedSetting(), NULL, 2, 1, 3);
FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
}
}
@@ -790,7 +790,7 @@ static void PrintSelectedNameInBrightGreen(u8 taskId)
u16 cursorPos = FameCheckerGetCursorY();
FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20);
StringExpandPlaceholders(gStringVar4, sFameCheckerFlavorTextPointers[sFameCheckerData->unlockedPersons[cursorPos] * 6 + data[1]]);
- AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, GetTextSpeedSetting(), NULL, 2, 1, 3);
+ AddTextPrinterParameterized2(FCWINDOWID_MSGBOX, 2, gStringVar4, GetTextSpeedSetting(), NULL, 2, 1, 3);
FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
}
@@ -853,7 +853,7 @@ static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId)
FreeQuestionMarkSpriteResources();
FreeListMenuSelectorArrowPairResources();
SetMainCallback2(sFameCheckerData->savedCallback);
- DestroyListMenu(sFameCheckerData->listMenuTaskId, NULL, NULL);
+ DestroyListMenuTask(sFameCheckerData->listMenuTaskId, NULL, NULL);
Free(sBg3TilemapBuffer);
Free(sBg1TilemapBuffer);
Free(sBg2TilemapBuffer);
@@ -900,7 +900,7 @@ static void PrintUIHelp(u8 state)
}
width = GetStringWidth(0, src, 0);
FillWindowPixelRect(FCWINDOWID_UIHELP, 0x00, 0, 0, 0xc0, 0x10);
- AddTextPrinterParametrized2(FCWINDOWID_UIHELP, 0, 188 - width, 0, 0, 2, &sTextColor_White, -1, src);
+ AddTextPrinterParameterized4(FCWINDOWID_UIHELP, 0, 188 - width, 0, 0, 2, &sTextColor_White, -1, src);
FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_UIHELP);
}
@@ -1213,10 +1213,10 @@ static void UpdateIconDescriptionBox(u8 whichText)
gIconDescriptionBoxIsOpen = 1;
FillWindowPixelRect(FCWINDOWID_ICONDESC, 0x00, 0, 0, 0x58, 0x20);
width = (0x54 - GetStringWidth(0, sFlavorTextOriginLocationTexts[idx], 0)) / 2;
- AddTextPrinterParametrized2(FCWINDOWID_ICONDESC, 0, width, 0, 0, 2, &sTextColor_DkGrey, -1, sFlavorTextOriginLocationTexts[idx]);
+ AddTextPrinterParameterized4(FCWINDOWID_ICONDESC, 0, width, 0, 0, 2, &sTextColor_DkGrey, -1, sFlavorTextOriginLocationTexts[idx]);
StringExpandPlaceholders(gStringVar1, sFlavorTextOriginObjectNameTexts[idx]);
width = (0x54 - GetStringWidth(0, gStringVar1, 0)) / 2;
- AddTextPrinterParametrized2(FCWINDOWID_ICONDESC, 0, width, 10, 0, 2, &sTextColor_DkGrey, -1, gStringVar1);
+ AddTextPrinterParameterized4(FCWINDOWID_ICONDESC, 0, width, 10, 0, 2, &sTextColor_DkGrey, -1, gStringVar1);
FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_ICONDESC);
}
@@ -1270,7 +1270,7 @@ static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list
struct Task *task = &gTasks[taskId];
PlaySE(SE_SELECT);
task->data[1] = 0;
- get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listMenuTopIdx, NULL);
+ ListMenuGetScrollAndRow(sFameCheckerData->listMenuTaskId, &listMenuTopIdx, NULL);
sFameCheckerData->listMenuTopIdx = listMenuTopIdx;
if (itemIndex != sFameCheckerData->numUnlockedPersons - 1)
{
@@ -1330,7 +1330,7 @@ static void Task_SwitchToPickMode(u8 taskId)
static void PrintCancelDescription(void)
{
FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20);
- AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gFameCheckerText_FameCheckerWillBeClosed, 0, NULL, 2, 1, 3);
+ AddTextPrinterParameterized2(FCWINDOWID_MSGBOX, 2, gFameCheckerText_FameCheckerWillBeClosed, 0, NULL, 2, 1, 3);
FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
}
@@ -1339,16 +1339,16 @@ static void FC_DoMoveCursor(s32 itemIndex, bool8 onInit)
u16 listY;
u16 cursorY;
u16 who;
- get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listY, &cursorY);
+ ListMenuGetScrollAndRow(sFameCheckerData->listMenuTaskId, &listY, &cursorY);
who = listY + cursorY;
- AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * cursorY + 4, 0, 0, &sTextColor_Green, 0, sListMenuItems[itemIndex].unk_00);
+ AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 8, 14 * cursorY + 4, 0, 0, &sTextColor_Green, 0, sListMenuItems[itemIndex].label);
if (!onInit)
{
if (listY < sFameCheckerData->listMenuTopIdx2)
sFameCheckerData->listMenuDrawnSelIdx++;
else if (listY > sFameCheckerData->listMenuTopIdx2 && who != sFameCheckerData->numUnlockedPersons - 1)
sFameCheckerData->listMenuDrawnSelIdx--;
- AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * sFameCheckerData->listMenuDrawnSelIdx + 4, 0, 0, &sTextColor_DkGrey, 0, sListMenuItems[sFameCheckerData->listMenuCurIdx].unk_00);
+ AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 8, 14 * sFameCheckerData->listMenuDrawnSelIdx + 4, 0, 0, &sTextColor_DkGrey, 0, sListMenuItems[sFameCheckerData->listMenuCurIdx].label);
}
sFameCheckerData->listMenuCurIdx = itemIndex;
@@ -1368,20 +1368,20 @@ static u8 FC_PopulateListMenu(void)
{
if (sTrainerIdxs[fameCheckerIdx] < FC_NONTRAINER_START)
{
- sListMenuItems[nitems].unk_00 = gTrainers[sTrainerIdxs[fameCheckerIdx]].trainerName;
- sListMenuItems[nitems].unk_04 = nitems;
+ sListMenuItems[nitems].label = gTrainers[sTrainerIdxs[fameCheckerIdx]].trainerName;
+ sListMenuItems[nitems].index = nitems;
}
else
{
- sListMenuItems[nitems].unk_00 = sNonTrainerNamePointers[sTrainerIdxs[fameCheckerIdx] - FC_NONTRAINER_START];
- sListMenuItems[nitems].unk_04 = nitems;
+ sListMenuItems[nitems].label = sNonTrainerNamePointers[sTrainerIdxs[fameCheckerIdx] - FC_NONTRAINER_START];
+ sListMenuItems[nitems].index = nitems;
}
sFameCheckerData->unlockedPersons[nitems] = fameCheckerIdx;
nitems++;
}
}
- sListMenuItems[nitems].unk_00 = gFameCheckerText_Cancel;
- sListMenuItems[nitems].unk_04 = nitems;
+ sListMenuItems[nitems].label = gFameCheckerText_Cancel;
+ sListMenuItems[nitems].index = nitems;
sFameCheckerData->unlockedPersons[nitems] = 0xFF;
nitems++;
gFameChecker_ListMenuTemplate.totalItems = nitems;
@@ -1400,7 +1400,7 @@ static void FC_PutWindowTilemapAndCopyWindowToVramMode3_2(u8 windowId)
static void FC_CreateScrollIndicatorArrowPair(void)
{
- struct ScrollIndicatorArrowPairTemplate template = {
+ struct ScrollArrowsTemplate template = {
2,
40,
26,
@@ -1412,13 +1412,12 @@ static void FC_CreateScrollIndicatorArrowPair(void)
SPRITETAG_SCROLL_INDICATORS,
0xFFFF,
1,
- 0
};
if (sFameCheckerData->numUnlockedPersons > 5)
{
- template.unk_06 = 0;
- template.unk_08 = sFameCheckerData->numUnlockedPersons - 5;
+ template.fullyUpThreshold = 0;
+ template.fullyDownThreshold = sFameCheckerData->numUnlockedPersons - 5;
sFameCheckerData->scrollIndicatorPairTaskId = AddScrollIndicatorArrowPair(&template, &sFameCheckerData->listMenuTopIdx);
}
}
@@ -1432,7 +1431,7 @@ static void FreeListMenuSelectorArrowPairResources(void)
static u16 FameCheckerGetCursorY(void)
{
u16 listY, cursorY;
- get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listY, &cursorY);
+ ListMenuGetScrollAndRow(sFameCheckerData->listMenuTaskId, &listY, &cursorY);
return listY + cursorY;
}
@@ -1547,7 +1546,7 @@ static void PlaceListMenuCursor(bool8 isActive)
{
u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(sFameCheckerData->listMenuTaskId);
if (isActive == TRUE)
- AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &sTextColor_DkGrey, 0, gFameCheckerText_ListMenuCursor);
+ AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &sTextColor_DkGrey, 0, gFameCheckerText_ListMenuCursor);
else
- AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &sTextColor_White, 0, gFameCheckerText_ListMenuCursor);
+ AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &sTextColor_White, 0, gFameCheckerText_ListMenuCursor);
}
diff --git a/src/field_poison.c b/src/field_poison.c
new file mode 100644
index 000000000..474fbcd69
--- /dev/null
+++ b/src/field_poison.c
@@ -0,0 +1,117 @@
+#include "global.h"
+#include "strings.h"
+#include "task.h"
+#include "field_message_box.h"
+#include "script.h"
+#include "string_util.h"
+#include "event_data.h"
+#include "fldeff.h"
+#include "party_menu.h"
+#include "field_poison.h"
+#include "constants/species.h"
+#include "constants/battle.h"
+
+static bool32 IsMonValidSpecies(struct Pokemon *pokemon)
+{
+ u16 species = GetMonData(pokemon, MON_DATA_SPECIES2);
+ if (species == SPECIES_NONE || species == SPECIES_EGG)
+ return FALSE;
+ return TRUE;
+}
+
+static bool32 AllMonsFainted(void)
+{
+ int i;
+
+ struct Pokemon *pokemon = gPlayerParty;
+ for (i = 0; i < PARTY_SIZE; i++, pokemon++)
+ if (IsMonValidSpecies(pokemon) && GetMonData(pokemon, MON_DATA_HP))
+ return FALSE;
+ return TRUE;
+}
+
+static void FaintFromFieldPoison(u8 partyIdx)
+{
+ struct Pokemon *pokemon = gPlayerParty + partyIdx;
+ u32 status = STATUS1_NONE;
+ AdjustFriendship(pokemon, 8);
+ SetMonData(pokemon, MON_DATA_STATUS, &status);
+ GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1);
+ StringGetEnd10(gStringVar1);
+}
+
+static bool32 MonFaintedFromPoison(u8 partyIdx)
+{
+ struct Pokemon *pokemon = gPlayerParty + partyIdx;
+ if (IsMonValidSpecies(pokemon) && !GetMonData(pokemon, MON_DATA_HP) && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
+ return TRUE;
+ return FALSE;
+}
+
+static void Task_WhiteOut(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ switch (data[0])
+ {
+ case 0:
+ for (; data[1] < PARTY_SIZE; data[1]++)
+ {
+ if (MonFaintedFromPoison(data[1]))
+ {
+ FaintFromFieldPoison(data[1]);
+ ShowFieldMessage(gText_PkmnFainted3);
+ data[0]++;
+ return;
+ }
+ }
+ data[0] = 2;
+ break;
+ case 1:
+ if (IsFieldMessageBoxHidden())
+ data[0]--;
+ break;
+ case 2:
+ if (AllMonsFainted())
+ gSpecialVar_Result = 1;
+ else
+ gSpecialVar_Result = 0;
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void ExecuteWhiteOut(void)
+{
+ CreateTask(Task_WhiteOut, 80);
+ ScriptContext1_Stop();
+}
+
+s32 DoPoisonFieldEffect(void)
+{
+ int i;
+ u32 hp;
+
+ struct Pokemon *pokemon = gPlayerParty;
+ u32 numPoisoned = 0;
+ u32 numFainted = 0;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(pokemon, MON_DATA_SANITY_HAS_SPECIES) && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
+ {
+ hp = GetMonData(pokemon, MON_DATA_HP);
+ if (hp == 0 || --hp == 0)
+ numFainted++;
+ SetMonData(pokemon, MON_DATA_HP, &hp);
+ numPoisoned++;
+ }
+ pokemon++;
+ }
+ if (numFainted || numPoisoned)
+ FldEffPoison_Start();
+ if (numFainted)
+ return FLDPSN_FNT;
+ if (numPoisoned)
+ return FLDPSN_PSN;
+ return FLDPSN_NONE;
+}
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
new file mode 100644
index 000000000..4f9446942
--- /dev/null
+++ b/src/field_special_scene.c
@@ -0,0 +1,26 @@
+#include "global.h"
+
+static u32 sub_80A0E78(void)
+{
+ return 0;
+}
+
+static void nullsub_57(void)
+{
+}
+
+static void nullsub_58(void)
+{
+}
+
+static void nullsub_59(void)
+{
+}
+
+void nullsub_60(void)
+{
+}
+
+void nullsub_61(void)
+{
+}
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 5d11c7d99..2683eaf62 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -897,7 +897,7 @@ void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles,
if (!tileset->isCompressed)
LoadBgTiles(2, tileset->tiles, numTiles * 32, offset);
else
- sub_80F68F0(2, tileset->tiles, numTiles * 32, offset, 0);
+ DecompressAndCopyTileDataToVram2(2, tileset->tiles, numTiles * 32, offset, 0);
}
}
@@ -908,7 +908,7 @@ void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles,
if (!tileset->isCompressed)
LoadBgTiles(2, tileset->tiles, numTiles * 32, offset);
else
- sub_80F69E8(2, tileset->tiles, numTiles * 32, offset, 0);
+ DecompressAndLoadBgGfxUsingHeap2(2, tileset->tiles, numTiles * 32, offset, 0);
}
}
diff --git a/src/fldeff_dig.c b/src/fldeff_dig.c
new file mode 100644
index 000000000..3a28c1adc
--- /dev/null
+++ b/src/fldeff_dig.c
@@ -0,0 +1,48 @@
+#include "global.h"
+#include "field_effect.h"
+#include "field_player_avatar.h"
+#include "fldeff.h"
+#include "item_use.h"
+#include "overworld.h"
+#include "party_menu.h"
+#include "sprite.h"
+#include "constants/map_objects.h"
+
+static void FieldCallback_Dig(void);
+static void sub_80C9AFC(void);
+
+bool8 SetUpFieldMove_Dig(void)
+{
+ if (CanUseEscapeRopeOnCurrMap() == TRUE)
+ {
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_Dig;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void FieldCallback_Dig(void)
+{
+ Overworld_ResetStateAfterDigEscRope();
+ FieldEffectStart(FLDEFF_USE_DIG);
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+}
+
+bool8 FldEff_UseDig(void)
+{
+ u8 taskId = oei_task_add();
+
+ FLDEFF_SET_FUNC_TO_DATA(sub_80C9AFC);
+ SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
+ return FALSE;
+}
+
+static void sub_80C9AFC(void)
+{
+ u8 taskId;
+
+ FieldEffectActiveListRemove(FLDEFF_USE_DIG);
+ taskId = CreateTask(sub_80A1C44, 8);
+ gTasks[taskId].data[0] = 0;
+}
diff --git a/src/fldeff_poison.c b/src/fldeff_poison.c
new file mode 100644
index 000000000..98f54b4d4
--- /dev/null
+++ b/src/fldeff_poison.c
@@ -0,0 +1,39 @@
+#include "global.h"
+#include "task.h"
+#include "bg.h"
+#include "sound.h"
+#include "constants/songs.h"
+
+static void Task_FieldPoisonEffect(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ data[1] += 1;
+ if (data[1] > 4)
+ data[0]++;
+ break;
+ case 1:
+ data[1] -= 1;
+ if (data[1] == 0)
+ data[0]++;
+ break;
+ case 2:
+ DestroyTask(taskId);
+ return;
+ }
+ AdjustBgMosaic((u8)(((u8)data[1] << 4) | (u8)data[1]), BG_MOSAIC_SET);
+}
+
+void FldEffPoison_Start(void)
+{
+ PlaySE(SE_DAUGI);
+ CreateTask(Task_FieldPoisonEffect, 80);
+}
+
+bool32 FldEffPoison_IsActive(void)
+{
+ return FuncIsActiveTask(Task_FieldPoisonEffect);
+}
diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c
new file mode 100644
index 000000000..517f3479a
--- /dev/null
+++ b/src/fldeff_rocksmash.c
@@ -0,0 +1,137 @@
+#include "global.h"
+#include "global.fieldmap.h"
+#include "field_player_avatar.h"
+#include "field_effect.h"
+#include "party_menu.h"
+#include "malloc.h"
+#include "event_data.h"
+#include "script.h"
+#include "fldeff.h"
+#include "event_scripts.h"
+#include "field_weather.h"
+#include "sound.h"
+#include "palette.h"
+#include "overworld.h"
+#include "wild_encounter.h"
+#include "field_map_obj.h"
+#include "constants/songs.h"
+#include "constants/map_objects.h"
+
+static void task08_080C9820(u8 taskId);
+static void sub_80C98FC(u8 taskId);
+static void sub_80C98B0(u8 taskId);
+static void sub_80C99A0(u8 taskId);
+static void sub_80C9A10(void);
+static void sub_80C9A60(void);
+
+bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId)
+{
+ u8 mapObjId;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
+ gPlayerFacingPosition.height = PlayerGetZCoord();
+ mapObjId = GetFieldObjectIdByXYZ(gPlayerFacingPosition.x, gPlayerFacingPosition.y, gPlayerFacingPosition.height);
+ if (gMapObjects[mapObjId].graphicsId != graphicsId)
+ return FALSE;
+ gSpecialVar_LastTalked = gMapObjects[mapObjId].localId;
+ return TRUE;
+}
+
+u8 oei_task_add(void)
+{
+ GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
+ return CreateTask(task08_080C9820, 8);
+}
+
+static void task08_080C9820(u8 taskId)
+{
+ u8 mapObjId;
+
+ ScriptContext2_Enable();
+ gPlayerAvatar.unk6 = TRUE;
+ mapObjId = gPlayerAvatar.mapObjectId;
+ if (!FieldObjectIsMovementOverridden(&gMapObjects[mapObjId])
+ || FieldObjectClearHeldMovementIfFinished(&gMapObjects[mapObjId]))
+ {
+ if (gMapHeader.mapType == MAP_TYPE_UNDERWATER)
+ {
+ FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
+ gTasks[taskId].func = sub_80C98FC;
+ }
+ else
+ {
+ sub_805CB70();
+ FieldObjectSetHeldMovement(&gMapObjects[mapObjId], 0x45);
+ gTasks[taskId].func = sub_80C98B0;
+ }
+ }
+}
+
+static void sub_80C98B0(u8 taskId)
+{
+ if (FieldObjectCheckHeldMovementStatus(&gMapObjects[gPlayerAvatar.mapObjectId]) == TRUE)
+ {
+ FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
+ gTasks[taskId].func = sub_80C98FC;
+ }
+}
+
+static void sub_80C98FC(u8 taskId)
+{
+ if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
+ {
+ gFieldEffectArguments[1] = GetPlayerFacingDirection();
+ if (gFieldEffectArguments[1] == 1)
+ gFieldEffectArguments[2] = 0;
+ if (gFieldEffectArguments[1] == 2)
+ gFieldEffectArguments[2] = 1;
+ if (gFieldEffectArguments[1] == 3)
+ gFieldEffectArguments[2] = 2;
+ if (gFieldEffectArguments[1] == 4)
+ gFieldEffectArguments[2] = 3;
+ EventObjectSetGraphicsId(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByCurrentState());
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectArguments[2]);
+ FieldEffectActiveListRemove(6);
+ gTasks[taskId].func = sub_80C99A0;
+ }
+}
+
+static void sub_80C99A0(u8 taskId)
+{
+ FLDEFF_CALL_FUNC_IN_DATA();
+ gPlayerAvatar.unk6 = FALSE;
+ DestroyTask(taskId);
+}
+
+bool8 SetUpFieldMove_RockSmash(void)
+{
+ if (CheckObjectGraphicsInFrontOfPlayer(/*MAP_OBJ_GFX_BREAKABLE_ROCK*/0x60) == TRUE)
+ {
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = sub_80C9A10;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_80C9A10(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ ScriptContext1_SetupScript(EventScript_FldEffRockSmash);
+}
+
+bool8 FldEff_UseRockSmash(void)
+{
+ u8 taskId = oei_task_add();
+
+ FLDEFF_SET_FUNC_TO_DATA(sub_80C9A60);
+ IncrementGameStat(GAME_STAT_USED_ROCK_SMASH);
+ return FALSE;
+}
+
+static void sub_80C9A60(void)
+{
+ PlaySE(SE_W145);
+ FieldEffectActiveListRemove(FLDEFF_USE_ROCK_SMASH);
+ EnableBothScriptContexts();
+}
diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c
new file mode 100644
index 000000000..400a1d382
--- /dev/null
+++ b/src/fldeff_softboiled.c
@@ -0,0 +1,111 @@
+#include "global.h"
+#include "party_menu.h"
+#include "sound.h"
+#include "string_util.h"
+#include "menu.h"
+#include "new_menu_helpers.h"
+#include "constants/songs.h"
+#include "fldeff.h"
+
+static void sub_80E57E8(u8 taskId);
+static void sub_80E583C(u8 taskId);
+static void sub_80E58A0(u8 taskId);
+static void sub_80E5934(u8 taskId);
+
+extern const u8 gUnknown_84169F8[];
+extern const u8 gUnknown_8416F27[];
+
+bool8 hm_prepare_dive_probably(void)
+{
+ u16 maxHp = GetMonData(&gPlayerParty[GetCursorSelectionMonId()], MON_DATA_MAX_HP);
+ u16 curHp = GetMonData(&gPlayerParty[GetCursorSelectionMonId()], MON_DATA_HP);
+
+ if (curHp > maxHp / 5)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_80E56DC(u8 taskId)
+{
+ gUnknown_203B0A0.unkB = 10;
+ gUnknown_203B0A0.unkA = gUnknown_203B0A0.unk9;
+ sub_811F818(GetCursorSelectionMonId(), 1);
+ sub_8121D0C(5);
+ gTasks[taskId].func = sub_811FB28;
+}
+
+void sub_80E5724(u8 taskId)
+{
+ u8 r8 = gUnknown_203B0A0.unk9;
+ u8 r5 = gUnknown_203B0A0.unkA;
+ u16 curHp;
+ s16 delta;
+
+ if (r5 > 6)
+ {
+ gUnknown_203B0A0.unkB = 0;
+ sub_8121D0C(0);
+ gTasks[taskId].func = sub_811FB28;
+ }
+ else
+ {
+ curHp = GetMonData(&gPlayerParty[r5], MON_DATA_HP);
+ if (curHp == 0 || r8 == r5 || GetMonData(&gPlayerParty[r5], MON_DATA_MAX_HP) == curHp)
+ {
+ sub_80E5934(taskId);
+ }
+ else
+ {
+ PlaySE(SE_KAIFUKU);
+ sub_8120760(taskId, r8, -1, GetMonData(&gPlayerParty[r8], MON_DATA_MAX_HP) / 5, sub_80E57E8);
+ }
+ }
+}
+
+static void sub_80E57E8(u8 taskId)
+{
+ PlaySE(SE_KAIFUKU);
+ sub_8120760(taskId, gUnknown_203B0A0.unkA, 1, GetMonData(&gPlayerParty[gUnknown_203B0A0.unk9], MON_DATA_MAX_HP) / 5, sub_80E583C);
+}
+
+static void sub_80E583C(u8 taskId)
+{
+ GetMonNickname(&gPlayerParty[gUnknown_203B0A0.unkA], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416F27);
+ sub_81202F8(gStringVar4, 0);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = sub_80E58A0;
+}
+
+static void sub_80E58A0(u8 taskId)
+{
+ if (sub_8120370() != TRUE)
+ {
+ gUnknown_203B0A0.unkB = 0;
+ sub_811F818(gUnknown_203B0A0.unk9, 0);
+ gUnknown_203B0A0.unk9 = gUnknown_203B0A0.unkA;
+ sub_811F818(gUnknown_203B0A0.unkA, 1);
+ ClearStdWindowAndFrameToTransparent(6, 0);
+ ClearWindowTilemap(6);
+ sub_8121D0C(0);
+ gTasks[taskId].func = sub_811FB28;
+ }
+}
+
+static void sub_80E5900(u8 taskId)
+{
+ if (sub_8120370() != TRUE)
+ {
+ sub_8121D0C(5);
+ gTasks[taskId].func = sub_811FB28;
+ }
+}
+
+static void sub_80E5934(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ sub_81202F8(gUnknown_84169F8, 0);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = sub_80E5900;
+}
diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c
new file mode 100644
index 000000000..3f3254ade
--- /dev/null
+++ b/src/fldeff_strength.c
@@ -0,0 +1,47 @@
+#include "global.h"
+#include "field_player_avatar.h"
+#include "field_effect.h"
+#include "party_menu.h"
+#include "event_data.h"
+#include "script.h"
+#include "fldeff.h"
+#include "event_scripts.h"
+#include "constants/songs.h"
+#include "constants/map_objects.h"
+
+static void FldEff_UseStrength(void);
+static void sub_80D08A8(void);
+
+bool8 SetUpFieldMove_Strength(void)
+{
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) || CheckObjectGraphicsInFrontOfPlayer(/*MAP_OBJ_GFX_PUSHABLE_BOULDER*/0x61) != TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gSpecialVar_Result = GetCursorSelectionMonId();
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FldEff_UseStrength;
+ return TRUE;
+ }
+}
+static void FldEff_UseStrength(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ ScriptContext1_SetupScript(EventScript_FldEffStrength);
+}
+
+bool8 sub_80D0860(void)
+{
+ u8 taskId = oei_task_add();
+ FLDEFF_SET_FUNC_TO_DATA(sub_80D08A8);
+ GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1);
+ return FALSE;
+}
+
+static void sub_80D08A8(void)
+{
+ FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
+ EnableBothScriptContexts();
+}
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
new file mode 100644
index 000000000..aca56ef4c
--- /dev/null
+++ b/src/fldeff_sweetscent.c
@@ -0,0 +1,101 @@
+#include "global.h"
+#include "field_player_avatar.h"
+#include "field_effect.h"
+#include "party_menu.h"
+#include "malloc.h"
+#include "event_data.h"
+#include "script.h"
+#include "fldeff.h"
+#include "event_scripts.h"
+#include "field_weather.h"
+#include "sound.h"
+#include "palette.h"
+#include "wild_encounter.h"
+#include "constants/songs.h"
+
+static void FieldCallback_SweetScent(void);
+static void StartSweetScentFieldEffect(void);
+static void TrySweetScentEncounter(u8 taskId);
+static void FailSweetScentEncounter(u8 taskId);
+
+static void Unused_StartSweetscentFldeff(void)
+{
+ gUnknown_203B0A0.unk9 = 0;
+ FieldCallback_SweetScent();
+}
+
+bool8 SetUpFieldMove_SweetScent(void)
+{
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_SweetScent;
+ return TRUE;
+}
+
+static void FieldCallback_SweetScent(void)
+{
+ FieldEffectStart(FLDEFF_SWEET_SCENT);
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+}
+
+bool8 FldEff_SweetScent(void)
+{
+ u8 taskId;
+
+ SetWeatherScreenFadeOut();
+ taskId = oei_task_add();
+ FLDEFF_SET_FUNC_TO_DATA(StartSweetScentFieldEffect);
+ return FALSE;
+}
+
+static void StartSweetScentFieldEffect(void)
+{
+ u8 taskId;
+
+ PlaySE(SE_W260);
+ gUnknown_203AAB0 = (u8 *)Alloc(0x400);
+ CpuFastSet(gPlttBufferUnfaded, gUnknown_203AAB0, 0x100);
+ CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100);
+ BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, RGB(31, 0, 0));
+ taskId = CreateTask(TrySweetScentEncounter, 0);
+ gTasks[taskId].data[0] = 0;
+ FieldEffectActiveListRemove(FLDEFF_SWEET_SCENT);
+}
+
+static void TrySweetScentEncounter(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (!gPaletteFade.active)
+ {
+ if (data[0] == 64)
+ {
+ data[0] = 0;
+ if (SweetScentWildEncounter() == TRUE)
+ {
+ Free(gUnknown_203AAB0);
+ DestroyTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].func = FailSweetScentEncounter;
+ BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 8, 0, RGB(31, 0, 0));
+ }
+ }
+ else
+ {
+ data[0]++;
+ }
+ }
+}
+
+static void FailSweetScentEncounter(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CpuFastSet(gUnknown_203AAB0, gPlttBufferUnfaded, 0x100);
+ sub_807B070();
+ Free(gUnknown_203AAB0);
+ ScriptContext1_SetupScript(EventScript_FailSweetScent);
+ DestroyTask(taskId);
+ }
+}
diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c
index 74fad1110..a66a332bf 100644
--- a/src/fldeff_teleport.c
+++ b/src/fldeff_teleport.c
@@ -29,8 +29,7 @@ static void FieldCallback_Teleport(void)
bool8 FldEff_UseTeleport(void)
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (u32)StartTeleportFieldEffect >> 16;
- gTasks[taskId].data[9] = (u32)StartTeleportFieldEffect;
+ FLDEFF_SET_FUNC_TO_DATA(StartTeleportFieldEffect);
SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
return FALSE;
}
diff --git a/src/gpu_regs.c b/src/gpu_regs.c
index a7030732b..c1909ff32 100644
--- a/src/gpu_regs.c
+++ b/src/gpu_regs.c
@@ -10,9 +10,9 @@
static u8 sGpuRegBuffer[GPU_REG_BUF_SIZE];
static u8 sGpuRegWaitingList[GPU_REG_BUF_SIZE];
-static bool8 sGpuRegBufferLocked;
-static bool8 sShouldSyncRegIE;
-static u16 sRegIE;
+static volatile bool8 sGpuRegBufferLocked;
+static volatile bool8 sShouldSyncRegIE;
+static vu16 sRegIE;
static void CopyBufferedValueToGpuReg(u8 regOffset);
static void SyncRegIE(void);
diff --git a/src/help_system.c b/src/help_system.c
new file mode 100644
index 000000000..1fd43fffa
--- /dev/null
+++ b/src/help_system.c
@@ -0,0 +1,1202 @@
+#include "global.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "main.h"
+#include "m4a.h"
+#include "dma3.h"
+#include "help_system.h"
+#include "list_menu.h"
+#include "sound.h"
+#include "strings.h"
+#include "text.h"
+#include "blit.h"
+#include "event_data.h"
+#include "constants/songs.h"
+#include "constants/flags.h"
+
+extern u8 gGlyphInfo[];
+
+struct HelpSystemVideoState
+{
+ /*0x00*/ MainCallback savedVblankCb;
+ /*0x04*/ MainCallback savedHblankCb;
+ /*0x08*/ u16 savedDispCnt;
+ /*0x0a*/ u16 savedBg0Cnt;
+ /*0x0c*/ u16 savedBg0Hofs;
+ /*0x0e*/ u16 savedBg0Vofs;
+ /*0x10*/ u16 savedBldCnt;
+ /*0x12*/ struct TextColor savedTextColor;
+ /*0x15*/ u8 state;
+};
+
+static EWRAM_DATA u8 sMapTilesBackup[BG_CHAR_SIZE] = {0};
+EWRAM_DATA u8 gUnknown_203F174 = 0;
+EWRAM_DATA u8 gUnknown_203F175 = 0;
+static EWRAM_DATA u8 sDelayTimer = 0;
+static EWRAM_DATA u8 sInHelpSystem = 0;
+static EWRAM_DATA struct HelpSystemVideoState sVideoState = {0};
+EWRAM_DATA struct HelpSystemListMenu gHelpSystemListMenu = {0};
+EWRAM_DATA struct ListMenuItem gHelpSystemListMenuItems[52] = {0};
+
+static const u16 sTiles[] = INCBIN_U16("graphics/help_system/unk_8464008.4bpp");
+static const u16 sPals[] = INCBIN_U16("graphics/help_system/unk_8464008.gbapal");
+
+u8 RunHelpSystemCallback(void)
+{
+ s32 i;
+
+ switch (sVideoState.state)
+ {
+ case 0:
+ sInHelpSystem = 0;
+ if (gSaveBlock2Ptr->optionsButtonMode != OPTIONS_BUTTON_MODE_NORMAL)
+ return 0;
+ if (JOY_NEW(R_BUTTON) && gUnknown_203F175 == 1)
+ return 0;
+ if (JOY_NEW(L_BUTTON | R_BUTTON))
+ {
+ if (!sub_812B45C() || !gUnknown_3005ECC)
+ {
+ PlaySE(SE_HELP_PAGE);
+ return 0;
+ }
+ m4aMPlayStop(&gMPlayInfo_SE1);
+ m4aMPlayStop(&gMPlayInfo_SE2);
+ PlaySE(SE_HELP_OPEN);
+ if (!gUnknown_203F174)
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x80);
+ SaveCallbacks();
+ sInHelpSystem = 1;
+ sVideoState.state = 1;
+ }
+ break;
+ case 1:
+ SaveMapTiles();
+ SaveMapGPURegs();
+ SaveMapTextColors();
+ (*(vu16 *)PLTT) = sPals[15];
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ sVideoState.state = 2;
+ break;
+ case 2:
+ RequestDma3Fill(0, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0);
+ RequestDma3Copy(sPals, (void *)PLTT, sizeof(sPals), 0);
+ RequestDma3Copy(sTiles, gDecompressionBuffer + 0x3EE0, sizeof(sTiles), 0);
+ sVideoState.state = 3;
+ break;
+ case 3:
+ sub_813BCF4();
+ HelpSystem_FillPanel3();
+ HelpSystem_FillPanel2();
+ HelpSystem_PrintText_Row61(gString_Help);
+ sub_813BD14(1);
+ if (sub_812B40C() == TRUE)
+ sub_812BC54(&gHelpSystemListMenu, gHelpSystemListMenuItems);
+ else
+ sub_812BCA8(&gHelpSystemListMenu, gHelpSystemListMenuItems);
+ sub_813BE78(1);
+ sub_813BF50(1);
+ CommitTilemap();
+ sVideoState.state = 4;
+ break;
+ case 4:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(31));
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_BG0_ON);
+ sVideoState.state = 5;
+ break;
+ case 5:
+ if (!sub_812BB9C(&gHelpSystemListMenu, gHelpSystemListMenuItems))
+ {
+ PlaySE(SE_HELP_CLOSE);
+ sVideoState.state = 6;
+ }
+ break;
+ case 6:
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ RestoreMapTiles();
+ for (i = 0; i < 0x200; i += 2)
+ {
+ *((vu16 *)(PLTT + 0x000 + i)) = sPals[15];
+ *((vu16 *)(PLTT + 0x200 + i)) = sPals[15];
+ }
+ sVideoState.state = 7;
+ break;
+ case 7:
+ if (!gUnknown_203F174)
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
+ RestoreMapTextColors();
+ RestoreGPURegs();
+ sVideoState.state = 8;
+ break;
+ case 8:
+ RestoreCallbacks();
+ sInHelpSystem = 0;
+ sVideoState.state = 0;
+ break;
+ }
+ return sVideoState.state;
+}
+
+void SaveCallbacks(void)
+{
+ vu16 * dma;
+ sVideoState.savedVblankCb = gMain.vblankCallback;
+ sVideoState.savedHblankCb = gMain.hblankCallback;
+ gMain.vblankCallback = NULL;
+ gMain.hblankCallback = NULL;
+
+ dma = (void *)REG_ADDR_DMA0;
+ dma[5] &= ~(DMA_START_MASK | DMA_DREQ_ON | DMA_REPEAT);
+ dma[5] &= ~DMA_ENABLE;
+ dma[5];
+}
+
+void SaveMapGPURegs(void)
+{
+ sVideoState.savedDispCnt = GetGpuReg(REG_OFFSET_DISPCNT);
+ sVideoState.savedBg0Cnt = GetGpuReg(REG_OFFSET_BG0CNT);
+ sVideoState.savedBg0Hofs = GetGpuReg(REG_OFFSET_BG0HOFS);
+ sVideoState.savedBg0Vofs = GetGpuReg(REG_OFFSET_BG0VOFS);
+ sVideoState.savedBldCnt = GetGpuReg(REG_OFFSET_BLDCNT);
+}
+
+void SaveMapTiles(void)
+{
+ RequestDma3Copy((void *)BG_CHAR_ADDR(3), sMapTilesBackup, BG_CHAR_SIZE, 0);
+}
+
+void SaveMapTextColors(void)
+{
+ SaveTextColors(
+ &sVideoState.savedTextColor.fgColor,
+ &sVideoState.savedTextColor.bgColor,
+ &sVideoState.savedTextColor.shadowColor
+ );
+}
+
+void RestoreCallbacks(void)
+{
+ gMain.vblankCallback = sVideoState.savedVblankCb;
+ gMain.hblankCallback = sVideoState.savedHblankCb;
+}
+
+void RestoreGPURegs(void)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, sVideoState.savedBldCnt);
+ SetGpuReg(REG_OFFSET_BG0HOFS, sVideoState.savedBg0Hofs);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sVideoState.savedBg0Vofs);
+ SetGpuReg(REG_OFFSET_BG0CNT, sVideoState.savedBg0Cnt);
+ SetGpuReg(REG_OFFSET_DISPCNT, sVideoState.savedDispCnt);
+}
+
+void RestoreMapTiles(void)
+{
+ RequestDma3Copy(sMapTilesBackup, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0);
+}
+
+void RestoreMapTextColors(void)
+{
+ RestoreTextColors(
+ &sVideoState.savedTextColor.fgColor,
+ &sVideoState.savedTextColor.bgColor,
+ &sVideoState.savedTextColor.shadowColor
+ );
+}
+
+void CommitTilemap(void)
+{
+ RequestDma3Copy(gDecompressionBuffer, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0);
+}
+
+void HS_DrawBgTilemapRect(u16 baseTile, u8 left, u8 top, u8 width, u8 height, u16 increment)
+{
+ u16 i, j;
+
+ for (i = top; i < top + height; i++)
+ {
+ for (j = left; j < left + width; j++)
+ {
+ *((u16 *)(gDecompressionBuffer + 0x3800 + 64 * i + 2 * j)) = baseTile;
+ baseTile += increment;
+ }
+ }
+
+ CommitTilemap();
+}
+
+void sub_813BCF4(void)
+{
+ HS_DrawBgTilemapRect(0x1FF, 0, 0, 30, 20, 0);
+}
+
+void sub_813BD14(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ HS_DrawBgTilemapRect(0x1FF, 1, 0, 7, 2, 0);
+ break;
+ case 1:
+ HS_DrawBgTilemapRect(0x1E8, 1, 0, 7, 2, 1);
+ break;
+ }
+}
+
+void sub_813BD5C(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ HS_DrawBgTilemapRect(0x1FF, 13, 0, 16, 2, 0);
+ break;
+ case 1:
+ HS_DrawBgTilemapRect(0x1A0, 13, 0, 16, 2, 1);
+ break;
+ }
+}
+
+void sub_813BDA4(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ HS_DrawBgTilemapRect(0x1FF, 2, 3, 26, 16, 0);
+ break;
+ case 1:
+ HS_DrawBgTilemapRect(0x000, 2, 3, 26, 16, 1);
+ break;
+ }
+}
+
+void sub_813BDE8(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ HS_DrawBgTilemapRect(0x1FF, 1, 3, 28, 16, 0);
+ break;
+ case 1:
+ HS_DrawBgTilemapRect(0x1FA, 1, 3, 28, 17, 0);
+ break;
+ }
+}
+
+void sub_813BE30(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ HS_DrawBgTilemapRect(0x1FF, 2, 14, 26, 5, 0);
+ break;
+ case 1:
+ HS_DrawBgTilemapRect(0x11E, 2, 14, 26, 5, 1);
+ break;
+ }
+}
+
+void sub_813BE78(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ HS_DrawBgTilemapRect(0x1FF, 1, 2, 28, 1, 0);
+ HS_DrawBgTilemapRect(0x1FF, 1, 19, 28, 1, 0);
+ break;
+ case 1:
+ HS_DrawBgTilemapRect(0x1F7, 1, 2, 28, 1, 0);
+ HS_DrawBgTilemapRect(0x1F8, 1, 19, 28, 1, 0);
+ break;
+ }
+}
+
+void sub_813BEE4(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ HS_DrawBgTilemapRect(0x1FF, 1, 2, 28, 1, 0);
+ HS_DrawBgTilemapRect(0x1FF, 1, 19, 28, 1, 0);
+ break;
+ case 1:
+ HS_DrawBgTilemapRect(0x1FB, 1, 2, 28, 1, 0);
+ HS_DrawBgTilemapRect(0x1FC, 1, 19, 28, 1, 0);
+ break;
+ }
+}
+
+void sub_813BF50(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ HS_DrawBgTilemapRect(0x1FF, 0, 0, 1, 20, 0);
+ HS_DrawBgTilemapRect(0x1FF, 29, 0, 1, 20, 0);
+ break;
+ case 1:
+ HS_DrawBgTilemapRect(0x1F9, 0, 0, 1, 20, 0);
+ HS_DrawBgTilemapRect(0x1F9, 29, 0, 1, 20, 0);
+ break;
+ }
+}
+
+void sub_813BFC0(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ HS_DrawBgTilemapRect(0x1FF, 1, 5, 28, 1, 0);
+ break;
+ case 1:
+ HS_DrawBgTilemapRect(0x1FC, 1, 5, 28, 1, 0);
+ break;
+ }
+}
+
+void sub_813C004(u8 a0, u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ HS_DrawBgTilemapRect(0x1FF, 28, 3, 1, 1, 0);
+ HS_DrawBgTilemapRect(0x1FF, 28, 18, 1, 1, 0);
+ break;
+ case 1:
+ if (a0 == 0)
+ HS_DrawBgTilemapRect(0x1FE, 28, 3, 1, 1, 0);
+ else
+ HS_DrawBgTilemapRect(0x1FD, 28, 18, 1, 1, 0);
+ break;
+ }
+}
+
+#define HelpSystemHandleRenderGlyph(character) ({\
+ do {DecompressAndRenderGlyph(font, character, &srcBlit, &destBlit, dest, x, y, width, height);} while (0); font;\
+})
+
+#ifdef NONMATCHING
+void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 width, u8 height)
+{
+ // font -> sp+24
+ // dest -> sp+28
+ // src -> r9
+ // x -> sp+34
+ // y -> r10
+ // width -> sp+2C
+ // height -> sp+30
+ struct Bitmap srcBlit;
+ struct Bitmap destBlit;
+ u8 i;
+ u8 orig_x = x;
+ s32 clearPixels;
+
+ while (1)
+ {
+ u16 curChar = *src++;
+ switch (curChar)
+ {
+ case EOS:
+ return;
+ case PLACEHOLDER_BEGIN:
+ curChar = *src++;
+ if (curChar == 1) {
+ for (i = 0; i < 10; i++)
+ {
+ if (gSaveBlock2Ptr->playerName[i] == EOS)
+ break;
+ HelpSystemHandleRenderGlyph(gSaveBlock2Ptr->playerName[i]);
+ x += gGlyphInfo[0x80];
+ }
+ }
+ else if (curChar == 2)
+ {
+ for (i = 0; ; i++)
+ {
+ if (FlagGet(FLAG_SYS_NOT_SOMEONES_PC) == TRUE)
+ {
+ if (gString_Bill[i] == EOS)
+ break;
+ HelpSystemHandleRenderGlyph(gString_Bill[i]);
+ }
+ else
+ {
+ if (gString_Someone[i] == EOS)
+ break;
+ HelpSystemHandleRenderGlyph(gString_Someone[i]);
+ }
+ x += gGlyphInfo[0x80];
+ }
+ }
+ break;
+ case CHAR_PROMPT_SCROLL:
+ case CHAR_PROMPT_CLEAR:
+ case CHAR_NEWLINE:
+ x = orig_x;
+ y += gGlyphInfo[0x81] + 1;
+ break;
+ case EXT_CTRL_CODE_BEGIN:
+ curChar = *src++;
+ switch (curChar)
+ {
+ case 4:
+ src++;
+ //fallthrough
+ case 11:
+ case 16:
+ src++;
+ //fallthrough
+ case 1:
+ case 2:
+ case 3:
+ case 5:
+ case 6:
+ case 8:
+ case 12:
+ case 13:
+ case 14:
+ src++;
+ break;
+ case 19:
+ clearPixels = *src + orig_x - x;
+ if (clearPixels > 0)
+ {
+ destBlit.pixels = dest;
+ destBlit.width = width * 8;
+ destBlit.height = height * 8;
+ FillBitmapRect4Bit(&destBlit, x, y, clearPixels, GetFontAttribute(font, 1), 0);
+ x += clearPixels;
+ }
+ src++;
+ break;
+ case 17:
+ case 18:
+ case 20:
+ src++;
+ break;
+ case 7:
+ case 9:
+ case 10:
+ case 15:
+ case 21:
+ case 22:
+ break;
+ }
+ break;
+ case CHAR_KEYPAD_ICON:
+ curChar = *src++;
+ srcBlit.pixels = (u8 *)gKeypadIconTiles + 0x20 * GetKeypadIconTileOffset(curChar);
+ srcBlit.width = 0x80;
+ srcBlit.height = 0x80;
+ destBlit.pixels = dest;
+ destBlit.width = width * 8;
+ destBlit.height = height * 8;
+ BlitBitmapRect4Bit(&srcBlit, &destBlit, 0, 0, x, y, GetKeypadIconWidth(curChar), GetKeypadIconHeight(curChar), 0);
+ x += GetKeypadIconWidth(curChar);
+ break;
+ case CHAR_EXTRA_EMOJI:
+ curChar = 0x100 | *src++;
+ //fallthrough
+ default:
+ if (curChar == CHAR_SPACE)
+ {
+ if (font == 0)
+ x += 5;
+ else
+ x += 4;
+ }
+ else
+ {
+ HelpSystemHandleRenderGlyph(curChar);
+ x += gGlyphInfo[0x80];
+ }
+ break;
+ }
+ }
+}
+#else
+NAKED
+void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 width, u8 height)
+{
+ 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, 0x38\n"
+ "\tstr r1, [sp, 0x28]\n"
+ "\tmov r9, r2\n"
+ "\tldr r1, [sp, 0x58]\n"
+ "\tldr r2, [sp, 0x5C]\n"
+ "\tldr r4, [sp, 0x60]\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tstr r0, [sp, 0x24]\n"
+ "\tlsls r3, 24\n"
+ "\tlsrs r7, r3, 24\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tmov r10, r1\n"
+ "\tlsls r2, 24\n"
+ "\tlsrs r2, 24\n"
+ "\tstr r2, [sp, 0x2C]\n"
+ "\tlsls r4, 24\n"
+ "\tlsrs r4, 24\n"
+ "\tstr r4, [sp, 0x30]\n"
+ "\tstr r7, [sp, 0x34]\n"
+ "_0813C0AC_masterLoop:\n"
+ "\tmov r0, r9\n"
+ "\tldrb r1, [r0]\n"
+ "\tmovs r2, 0x1\n"
+ "\tadd r9, r2\n"
+ "\tadds r0, r1, 0\n"
+ "\tsubs r0, 0xF8\n"
+ "\tcmp r0, 0x7\n"
+ "\tbls _0813C0BE\n"
+ "\tb _0813C358\n"
+ "_0813C0BE:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0813C0C8 @ =_0813C0CC\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_0813C0C8: .4byte _0813C0CC\n"
+ "\t.align 2, 0\n"
+ "_0813C0CC:\n"
+ "\t.4byte _0813C2D4\n"
+ "\t.4byte _0813C348\n"
+ "\t.4byte _0813C1E4\n"
+ "\t.4byte _0813C1E4\n"
+ "\t.4byte _0813C200\n"
+ "\t.4byte _0813C0EC\n"
+ "\t.4byte _0813C1E4\n"
+ "\t.4byte _0813C39C\n"
+ "_0813C0EC:\n"
+ "\tmov r0, r9\n"
+ "\tldrb r1, [r0]\n"
+ "\tmovs r2, 0x1\n"
+ "\tadd r9, r2\n"
+ "\tcmp r1, 0x1\n"
+ "\tbne _0813C154\n"
+ "\tmovs r4, 0\n"
+ "\tldr r0, _0813C14C @ =gSaveBlock2Ptr\n"
+ "\tldr r1, [r0]\n"
+ "\tldrb r1, [r1]\n"
+ "\tcmp r1, 0xFF\n"
+ "\tbeq _0813C0AC_masterLoop\n"
+ "\tldr r5, _0813C150 @ =gGlyphInfo + 0x80\n"
+ "_0813C106:\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, r4\n"
+ "\tldrb r1, [r0]\n"
+ "\tldr r0, [sp, 0x28]\n"
+ "\tstr r0, [sp]\n"
+ "\tstr r7, [sp, 0x4]\n"
+ "\tmov r2, r10\n"
+ "\tstr r2, [sp, 0x8]\n"
+ "\tldr r0, [sp, 0x2C]\n"
+ "\tstr r0, [sp, 0xC]\n"
+ "\tldr r2, [sp, 0x30]\n"
+ "\tstr r2, [sp, 0x10]\n"
+ "\tldr r0, [sp, 0x24]\n"
+ "\tadd r2, sp, 0x14\n"
+ "\tadd r3, sp, 0x1C\n"
+ "\tbl DecompressAndRenderGlyph\n"
+ "\tldr r0, [sp, 0x24]\n"
+ "\tldrb r0, [r5]\n"
+ "\tadds r0, r7, r0\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r7, r0, 24\n"
+ "\tadds r0, r4, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tcmp r4, 0x9\n"
+ "\tbhi _0813C0AC_masterLoop\n"
+ "\tldr r0, _0813C14C @ =gSaveBlock2Ptr\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r1, r4\n"
+ "\tldrb r1, [r1]\n"
+ "\tcmp r1, 0xFF\n"
+ "\tbne _0813C106\n"
+ "\tb _0813C0AC_masterLoop\n"
+ "\t.align 2, 0\n"
+ "_0813C14C: .4byte gSaveBlock2Ptr\n"
+ "_0813C150: .4byte gGlyphInfo + 0x80\n"
+ "_0813C154:\n"
+ "\tcmp r1, 0x2\n"
+ "\tbne _0813C0AC_masterLoop\n"
+ "\tmovs r4, 0\n"
+ "\tldr r5, _0813C160 @ =gGlyphInfo + 0x80\n"
+ "\tb _0813C1BC\n"
+ "\t.align 2, 0\n"
+ "_0813C160: .4byte gGlyphInfo + 0x80\n"
+ "_0813C164:\n"
+ "\tldrb r1, [r1]\n"
+ "\tldr r2, [sp, 0x28]\n"
+ "\tstr r2, [sp]\n"
+ "\tstr r7, [sp, 0x4]\n"
+ "\tmov r0, r10\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "\tldr r2, [sp, 0x2C]\n"
+ "\tstr r2, [sp, 0xC]\n"
+ "\tldr r0, [sp, 0x30]\n"
+ "\tstr r0, [sp, 0x10]\n"
+ "\tldr r0, [sp, 0x24]\n"
+ "\tadd r2, sp, 0x14\n"
+ "\tadd r3, sp, 0x1C\n"
+ "\tbl DecompressAndRenderGlyph\n"
+ "\tb _0813C1AC\n"
+ "_0813C184:\n"
+ "\tldr r0, _0813C1D8 @ =gString_Someone\n"
+ "\tadds r1, r4, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbeq _0813C0AC_masterLoop\n"
+ "\tadds r1, r0, 0\n"
+ "\tldr r2, [sp, 0x28]\n"
+ "\tstr r2, [sp]\n"
+ "\tstr r7, [sp, 0x4]\n"
+ "\tmov r0, r10\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "\tldr r2, [sp, 0x2C]\n"
+ "\tstr r2, [sp, 0xC]\n"
+ "\tldr r0, [sp, 0x30]\n"
+ "\tstr r0, [sp, 0x10]\n"
+ "\tldr r0, [sp, 0x24]\n"
+ "\tadd r2, sp, 0x14\n"
+ "\tadd r3, sp, 0x1C\n"
+ "\tbl DecompressAndRenderGlyph\n"
+ "_0813C1AC:\n"
+ "\tldr r1, [sp, 0x24]\n"
+ "\tldrb r0, [r5]\n"
+ "\tadds r0, r7, r0\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r7, r0, 24\n"
+ "\tadds r0, r4, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "_0813C1BC:\n"
+ "\tldr r0, _0813C1DC @ =0x00000834\n"
+ "\tbl FlagGet\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _0813C184\n"
+ "\tldr r0, _0813C1E0 @ =gString_Bill\n"
+ "\tadds r1, r4, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbne _0813C164\n"
+ "\tb _0813C0AC_masterLoop\n"
+ "\t.align 2, 0\n"
+ "_0813C1D8: .4byte gString_Someone\n"
+ "_0813C1DC: .4byte 0x00000834\n"
+ "_0813C1E0: .4byte gString_Bill\n"
+ "_0813C1E4:\n"
+ "\tldr r7, [sp, 0x34]\n"
+ "\tldr r1, _0813C1FC @ =gGlyphInfo\n"
+ "\tadds r1, 0x81\n"
+ "\tmov r0, r10\n"
+ "\tadds r0, 0x1\n"
+ "\tldrb r1, [r1]\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tmov r10, r0\n"
+ "\tb _0813C0AC_masterLoop\n"
+ "\t.align 2, 0\n"
+ "_0813C1FC: .4byte gGlyphInfo\n"
+ "_0813C200:\n"
+ "\tmov r2, r9\n"
+ "\tldrb r1, [r2]\n"
+ "\tmovs r0, 0x1\n"
+ "\tadd r9, r0\n"
+ "\tsubs r0, r1, 0x1\n"
+ "\tcmp r0, 0x15\n"
+ "\tbls _0813C210\n"
+ "\tb _0813C0AC_masterLoop\n"
+ "_0813C210:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0813C21C @ =_0813C220\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_0813C21C: .4byte _0813C220\n"
+ "\t.align 2, 0\n"
+ "_0813C220:\n"
+ "\t.4byte _0813C2C8\n"
+ "\t.4byte _0813C2C8\n"
+ "\t.4byte _0813C2C8\n"
+ "\t.4byte _0813C278\n"
+ "\t.4byte _0813C2C8\n"
+ "\t.4byte _0813C2C8\n"
+ "\t.4byte _0813C0AC_masterLoop\n"
+ "\t.4byte _0813C2C8\n"
+ "\t.4byte _0813C0AC_masterLoop\n"
+ "\t.4byte _0813C0AC_masterLoop\n"
+ "\t.4byte _0813C27C\n"
+ "\t.4byte _0813C2C8\n"
+ "\t.4byte _0813C2C8\n"
+ "\t.4byte _0813C2C8\n"
+ "\t.4byte _0813C0AC_masterLoop\n"
+ "\t.4byte _0813C27C\n"
+ "\t.4byte _0813C2CE\n"
+ "\t.4byte _0813C2CE\n"
+ "\t.4byte _0813C282\n"
+ "\t.4byte _0813C2CE\n"
+ "\t.4byte _0813C0AC_masterLoop\n"
+ "\t.4byte _0813C0AC_masterLoop\n"
+ "_0813C278:\n"
+ "\tmovs r1, 0x1\n"
+ "\tadd r9, r1\n"
+ "_0813C27C:\n"
+ "\tmovs r2, 0x1\n"
+ "\tadd r9, r2\n"
+ "\tb _0813C2C8\n"
+ "_0813C282:\n"
+ "\tmov r2, r9\n"
+ "\tldrb r0, [r2]\n"
+ "\tldr r1, [sp, 0x34]\n"
+ "\tadds r0, r1\n"
+ "\tsubs r6, r0, r7\n"
+ "\tcmp r6, 0\n"
+ "\tble _0813C2C8\n"
+ "\tldr r2, [sp, 0x28]\n"
+ "\tstr r2, [sp, 0x1C]\n"
+ "\tldr r1, [sp, 0x2C]\n"
+ "\tlsls r0, r1, 3\n"
+ "\tadd r4, sp, 0x1C\n"
+ "\tmovs r5, 0\n"
+ "\tstrh r0, [r4, 0x4]\n"
+ "\tldr r2, [sp, 0x30]\n"
+ "\tlsls r0, r2, 3\n"
+ "\tstrh r0, [r4, 0x6]\n"
+ "\tldr r0, [sp, 0x24]\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl GetFontAttribute\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tlsls r3, r6, 16\n"
+ "\tlsrs r3, 16\n"
+ "\tstr r0, [sp]\n"
+ "\tstr r5, [sp, 0x4]\n"
+ "\tadds r0, r4, 0\n"
+ "\tadds r1, r7, 0\n"
+ "\tmov r2, r10\n"
+ "\tbl FillBitmapRect4Bit\n"
+ "\tadds r0, r7, r6\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r7, r0, 24\n"
+ "_0813C2C8:\n"
+ "\tmovs r0, 0x1\n"
+ "\tadd r9, r0\n"
+ "\tb _0813C0AC_masterLoop\n"
+ "_0813C2CE:\n"
+ "\tmovs r1, 0x1\n"
+ "\tadd r9, r1\n"
+ "\tb _0813C0AC_masterLoop\n"
+ "_0813C2D4:\n"
+ "\tmov r2, r9\n"
+ "\tldrb r1, [r2]\n"
+ "\tmovs r0, 0x1\n"
+ "\tadd r9, r0\n"
+ "\tadds r6, r1, 0\n"
+ "\tadds r0, r6, 0\n"
+ "\tbl GetKeypadIconTileOffset\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 19\n"
+ "\tldr r1, _0813C344 @ =gKeypadIconTiles\n"
+ "\tadds r0, r1\n"
+ "\tstr r0, [sp, 0x14]\n"
+ "\tadd r1, sp, 0x14\n"
+ "\tmovs r2, 0\n"
+ "\tmov r8, r2\n"
+ "\tmovs r0, 0x80\n"
+ "\tstrh r0, [r1, 0x4]\n"
+ "\tstrh r0, [r1, 0x6]\n"
+ "\tldr r0, [sp, 0x28]\n"
+ "\tstr r0, [sp, 0x1C]\n"
+ "\tldr r1, [sp, 0x2C]\n"
+ "\tlsls r0, r1, 3\n"
+ "\tadd r5, sp, 0x1C\n"
+ "\tstrh r0, [r5, 0x4]\n"
+ "\tldr r2, [sp, 0x30]\n"
+ "\tlsls r0, r2, 3\n"
+ "\tstrh r0, [r5, 0x6]\n"
+ "\tadds r0, r6, 0\n"
+ "\tbl GetKeypadIconWidth\n"
+ "\tadds r4, r0, 0\n"
+ "\tlsls r4, 24\n"
+ "\tlsrs r4, 24\n"
+ "\tadds r0, r6, 0\n"
+ "\tbl GetKeypadIconHeight\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tstr r7, [sp]\n"
+ "\tmov r1, r10\n"
+ "\tstr r1, [sp, 0x4]\n"
+ "\tstr r4, [sp, 0x8]\n"
+ "\tstr r0, [sp, 0xC]\n"
+ "\tmov r2, r8\n"
+ "\tstr r2, [sp, 0x10]\n"
+ "\tadd r0, sp, 0x14\n"
+ "\tadds r1, r5, 0\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl BlitBitmapRect4Bit\n"
+ "\tadds r0, r6, 0\n"
+ "\tbl GetKeypadIconWidth\n"
+ "\tb _0813C38E\n"
+ "\t.align 2, 0\n"
+ "_0813C344: .4byte gKeypadIconTiles\n"
+ "_0813C348:\n"
+ "\tmov r0, r9\n"
+ "\tldrb r1, [r0]\n"
+ "\tmovs r2, 0x80\n"
+ "\tlsls r2, 1\n"
+ "\tadds r0, r2, 0\n"
+ "\torrs r1, r0\n"
+ "\tmovs r0, 0x1\n"
+ "\tadd r9, r0\n"
+ "_0813C358:\n"
+ "\tcmp r1, 0\n"
+ "\tbne _0813C36A\n"
+ "\tldr r1, [sp, 0x24]\n"
+ "\tcmp r1, 0\n"
+ "\tbne _0813C366\n"
+ "\tadds r0, r7, 0x5\n"
+ "\tb _0813C390\n"
+ "_0813C366:\n"
+ "\tadds r0, r7, 0x4\n"
+ "\tb _0813C390\n"
+ "_0813C36A:\n"
+ "\tadd r3, sp, 0x1C\n"
+ "\tldr r2, [sp, 0x28]\n"
+ "\tstr r2, [sp]\n"
+ "\tstr r7, [sp, 0x4]\n"
+ "\tmov r0, r10\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "\tldr r2, [sp, 0x2C]\n"
+ "\tstr r2, [sp, 0xC]\n"
+ "\tldr r0, [sp, 0x30]\n"
+ "\tstr r0, [sp, 0x10]\n"
+ "\tldr r0, [sp, 0x24]\n"
+ "\tadd r2, sp, 0x14\n"
+ "\tbl DecompressAndRenderGlyph\n"
+ "\tldr r1, [sp, 0x24]\n"
+ "\tldr r0, _0813C398 @ =gGlyphInfo\n"
+ "\tadds r0, 0x80\n"
+ "\tldrb r0, [r0]\n"
+ "_0813C38E:\n"
+ "\tadds r0, r7, r0\n"
+ "_0813C390:\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r7, r0, 24\n"
+ "\tb _0813C0AC_masterLoop\n"
+ "\t.align 2, 0\n"
+ "_0813C398: .4byte gGlyphInfo\n"
+ "_0813C39C:\n"
+ "\tadd sp, 0x38\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 //NONMATCHING
+
+void DecompressAndRenderGlyph(u8 font, u16 glyph, struct Bitmap *srcBlit, struct Bitmap *destBlit, u8 *destBuffer, u8 x, u8 y, u8 width, u8 height)
+{
+ if (font == 0)
+ DecompressGlyphFont0(glyph, FALSE);
+ else if (font == 5)
+ DecompressGlyphFont5(glyph, FALSE);
+ else
+ DecompressGlyphFont2(glyph, FALSE);
+ srcBlit->pixels = gGlyphInfo;
+ srcBlit->width = 16;
+ srcBlit->height = 16;
+ destBlit->pixels = destBuffer;
+ destBlit->width = width * 8;
+ destBlit->height = height * 8;
+ BlitBitmapRect4Bit(srcBlit, destBlit, 0, 0, x, y, gGlyphInfo[0x80], gGlyphInfo[0x81], 0);
+}
+
+void HelpSystem_PrintText_Row61(const u8 * str)
+{
+ GenerateFontHalfRowLookupTable(1, 15, 2);
+ HelpSystemRenderText(5, gDecompressionBuffer + 0x3D00, str, 6, 2, 7, 2);
+}
+
+void HelpSystem_PrintTextRightAlign_Row52(const u8 * str)
+{
+ s32 left = 0x7C - GetStringWidth(0, str, 0);
+ GenerateFontHalfRowLookupTable(1, 15, 2);
+ HelpSystemRenderText(0, gDecompressionBuffer + 0x3400, str, left, 2, 16, 2);
+}
+
+void HelpSystem_PrintTextAt(const u8 * str, u8 x, u8 y)
+{
+ GenerateFontHalfRowLookupTable(1, 15, 2);
+ HelpSystemRenderText(2, gDecompressionBuffer + 0x0000, str, x, y, 26, 16);
+}
+
+void HelpSystem_PrintTwoStrings(const u8 * str1, const u8 * str2)
+{
+ CpuFill16(0xEEEE, gDecompressionBuffer + 0x0000, 0x3400);
+ GenerateFontHalfRowLookupTable(1, 14, 2);
+ HelpSystemRenderText(2, gDecompressionBuffer + 0x0000, str1, 0, 0, 26, 16);
+ HelpSystemRenderText(2, gDecompressionBuffer + 0x09C0, str2, 0, 0, 26, 13);
+}
+
+void HelpSystem_PrintText_813C584(const u8 * str)
+{
+ CpuFill16(0x1111, gDecompressionBuffer + 0x23C0, 0x1040);
+ GenerateFontHalfRowLookupTable(2, 1, 3);
+ HelpSystemRenderText(2, gDecompressionBuffer + 0x23C0, str, 2, 6, 26, 5);
+}
+
+void HelpSystem_FillPanel3(void)
+{
+ CpuFill16(0xFFFF, gDecompressionBuffer + 0x3D00, 0x1C0);
+}
+
+void HelpSystem_FillPanel2(void)
+{
+ CpuFill16(0xFFFF, gDecompressionBuffer + 0x3400, 0x400);
+}
+
+void HelpSystem_FillPanel1(void)
+{
+ CpuFill16(0xFFFF, gDecompressionBuffer + 0x0000, 0x3400);
+}
+
+void HelpSystem_InitListMenuController(struct HelpSystemListMenu * a0, u8 a1, u8 a2)
+{
+ gHelpSystemListMenu.sub = a0->sub;
+ gHelpSystemListMenu.field_0C = a1;
+ gHelpSystemListMenu.field_0D = a2;
+ gHelpSystemListMenu.field_0E = 0;
+ if (gHelpSystemListMenu.sub.totalItems < gHelpSystemListMenu.sub.maxShowed)
+ gHelpSystemListMenu.sub.maxShowed = gHelpSystemListMenu.sub.totalItems;
+ sub_813BDA4(0);
+ HelpSystem_FillPanel1();
+ PrintListMenuItems();
+ PlaceListMenuCursor();
+}
+
+void HelpSystem_SetInputDelay(u8 a0)
+{
+ sDelayTimer = a0;
+}
+
+s32 HelpSystem_GetMenuInput(void)
+{
+ if (sDelayTimer != 0)
+ {
+ sDelayTimer--;
+ return -1;
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return gHelpSystemListMenu.sub.items[gHelpSystemListMenu.field_0C + gHelpSystemListMenu.field_0D].index;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return -2;
+ }
+ else if (JOY_NEW(L_BUTTON | R_BUTTON))
+ {
+ return -6;
+ }
+ else if (JOY_REPT(DPAD_UP))
+ {
+ if (!MoveCursor(1, 0))
+ PlaySE(SE_SELECT);
+ return -4;
+ }
+ else if (JOY_REPT(DPAD_DOWN))
+ {
+ if (!MoveCursor(1, 1))
+ PlaySE(SE_SELECT);
+ return -5;
+ }
+ else if (JOY_REPT(DPAD_LEFT))
+ {
+ if (!MoveCursor(7, 0))
+ PlaySE(SE_SELECT);
+ return -4;
+ }
+ else if (JOY_REPT(DPAD_RIGHT))
+ {
+ if (!MoveCursor(7, 1))
+ PlaySE(SE_SELECT);
+ return -5;
+ }
+ else
+ return -1;
+}
+
+void sub_813C75C(void)
+{
+ u8 r6 = gHelpSystemListMenu.sub.totalItems - 7;
+ if (gHelpSystemListMenu.sub.totalItems > 7)
+ {
+ s32 r4 = gHelpSystemListMenu.field_0C + gHelpSystemListMenu.field_0D;
+ sub_813C004(0, 0);
+ if (r4 == 0)
+ sub_813C004(1, 1);
+ else if (gHelpSystemListMenu.field_0C == 0 && gHelpSystemListMenu.field_0D != 0)
+ sub_813C004(1, 1);
+ else if (gHelpSystemListMenu.field_0C == r6)
+ sub_813C004(0, 1);
+ else if (gHelpSystemListMenu.field_0C != 0)
+ {
+ sub_813C004(0, 1);
+ sub_813C004(1, 1);
+ }
+ }
+}
+
+void PrintListMenuItems(void)
+{
+ u8 glyphHeight = GetFontAttribute(2, 1) + 1;
+ s32 i;
+ s32 r5 = gHelpSystemListMenu.field_0C;
+
+ for (i = 0; i < gHelpSystemListMenu.sub.maxShowed; i++)
+ {
+ u8 x = gHelpSystemListMenu.sub.left + 8;
+ u8 y = gHelpSystemListMenu.sub.top + glyphHeight * i;
+ HelpSystem_PrintTextAt(gHelpSystemListMenu.sub.items[r5].label, x, y);
+ r5++;
+ }
+}
+
+void PlaceListMenuCursor(void)
+{
+ u8 glyphHeight = GetFontAttribute(2, 1) + 1;
+ u8 x = gHelpSystemListMenu.sub.left;
+ u8 y = gHelpSystemListMenu.sub.top + glyphHeight * gHelpSystemListMenu.field_0D;
+ HelpSystem_PrintTextAt(gFameCheckerText_ListMenuCursor, x, y);
+}
+
+void sub_813C860(u8 i)
+{
+ u8 glyphHeight = GetFontAttribute(2, 1) + 1;
+ u8 x = gHelpSystemListMenu.sub.left;
+ u8 y = gHelpSystemListMenu.sub.top + i * glyphHeight;
+ HelpSystem_PrintTextAt(gString_HelpSystem_ClearTo8, x, y);
+}
+
+u8 TryMoveCursor1(u8 dirn)
+{
+ u16 r4;
+ if (dirn == 0)
+ {
+ if (gHelpSystemListMenu.sub.maxShowed == 1)
+ r4 = 0;
+ else
+ r4 = gHelpSystemListMenu.sub.maxShowed - (gHelpSystemListMenu.sub.maxShowed / 2 + (gHelpSystemListMenu.sub.maxShowed & 1)) - 1;
+ if (gHelpSystemListMenu.field_0C == 0)
+ {
+ if (gHelpSystemListMenu.field_0D != 0)
+ {
+ gHelpSystemListMenu.field_0D--;
+ return 1;
+ }
+ else
+ return 0;
+ }
+ if (gHelpSystemListMenu.field_0D > r4)
+ {
+ gHelpSystemListMenu.field_0D--;
+ return 1;
+ }
+ else
+ {
+ gHelpSystemListMenu.field_0C--;
+ return 2;
+ }
+ }
+ else
+ {
+ if (gHelpSystemListMenu.sub.maxShowed == 1)
+ r4 = 0;
+ else
+ r4 = gHelpSystemListMenu.sub.maxShowed / 2 + (gHelpSystemListMenu.sub.maxShowed & 1);
+ if (gHelpSystemListMenu.field_0C == gHelpSystemListMenu.sub.totalItems - gHelpSystemListMenu.sub.maxShowed)
+ {
+ if (gHelpSystemListMenu.field_0D < gHelpSystemListMenu.sub.maxShowed - 1)
+ {
+ gHelpSystemListMenu.field_0D++;
+ return 1;
+ }
+ else
+ return 0;
+ }
+ else if (gHelpSystemListMenu.field_0D < r4)
+ {
+ gHelpSystemListMenu.field_0D++;
+ return 1;
+ }
+ else
+ {
+ gHelpSystemListMenu.field_0C++;
+ return 2;
+ }
+ }
+}
+
+bool8 MoveCursor(u8 by, u8 dirn)
+{
+ u8 r7 = gHelpSystemListMenu.field_0D;
+ u8 flags = 0;
+ s32 i;
+ for (i = 0; i < by; i++)
+ flags |= TryMoveCursor1(dirn);
+
+ switch (flags)
+ {
+ case 0:
+ default:
+ // neither changed
+ return TRUE;
+ case 1:
+ // changed field_0D only
+ sub_813C860(r7);
+ PlaceListMenuCursor();
+ CommitTilemap();
+ break;
+ case 2:
+ case 3:
+ // changed field_0C
+ if (sub_812BF88() == TRUE)
+ {
+ HelpSystem_SetInputDelay(2);
+ HelpSystem_FillPanel1();
+ PrintListMenuItems();
+ PlaceListMenuCursor();
+ sub_812BDEC();
+ sub_813C75C();
+ }
+ else
+ {
+ sub_813BDA4(0);
+ HelpSystem_FillPanel1();
+ PrintListMenuItems();
+ PlaceListMenuCursor();
+ sub_813BDA4(1);
+ }
+ CommitTilemap();
+ break;
+ }
+ return FALSE;
+}
diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c
new file mode 100644
index 000000000..98d6ce8be
--- /dev/null
+++ b/src/help_system_812B1E0.c
@@ -0,0 +1,1580 @@
+#include "global.h"
+#include "event_data.h"
+#include "event_scripts.h"
+#include "field_player_avatar.h"
+#include "help_system.h"
+#include "item.h"
+#include "link.h"
+#include "overworld.h"
+#include "pokedex.h"
+#include "quest_log.h"
+#include "save.h"
+#include "save_location.h"
+#include "sound.h"
+#include "strings.h"
+#include "constants/items.h"
+#include "constants/maps.h"
+#include "constants/songs.h"
+
+static EWRAM_DATA u16 gUnknown_203B0EC = 0;
+static EWRAM_DATA u8 gUnknown_203B0EE = 0;
+
+u8 gUnknown_3005E9C[4];
+u16 gUnknown_3005EA0;
+
+static bool32 sub_812B27C(const u16 * mapIdxs);
+static void sub_812B520(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+static void sub_812B614(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+static bool8 sub_812B754(void);
+static bool8 sub_812B780(u8);
+static bool8 sub_812BB10(void);
+
+static void sub_812BF5C(void);
+static void sub_812BF74(const u8 *);
+static void sub_812BF94(struct HelpSystemListMenu * a0);
+static void sub_812BF9C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+
+static const u8 *const gUnknown_845B080[] = {
+ gUnknown_81B2DF8,
+ gUnknown_81B2E1C,
+ gUnknown_81B2E2E,
+ gUnknown_81B2E48,
+ gUnknown_81B2E58,
+ gUnknown_81B2E6A
+};
+
+static const u8 *const gUnknown_845B098[] = {
+ gUnknown_81B2E88,
+ gUnknown_81B2EC8,
+ gUnknown_81B2F00,
+ gUnknown_81B2F43,
+ gUnknown_81B2F74,
+ gUnknown_81B2FA9
+};
+
+static const u8 *const gUnknown_845B0B0[] = {
+ NULL,
+ gUnknown_81B3083,
+ gUnknown_81B30A9,
+ gUnknown_81B30C1,
+ gUnknown_81B30DC,
+ gUnknown_81B30FC,
+ gUnknown_81B311F,
+ gUnknown_81B3140,
+ gUnknown_81B314F,
+ gUnknown_81B3168,
+ gUnknown_81B3189,
+ gUnknown_81B31AE,
+ gUnknown_81B31D3,
+ gUnknown_81B31EC,
+ gUnknown_81B31FF,
+ gUnknown_81B3215,
+ gUnknown_81B3226,
+ gUnknown_81B3243,
+ gUnknown_81B3261,
+ gUnknown_81B3276,
+ gUnknown_81B3290,
+ gUnknown_81B32B6,
+ gUnknown_81B32CD,
+ gUnknown_81B32E3,
+ gUnknown_81B32F9,
+ gUnknown_81B330B,
+ gUnknown_81B332B,
+ gUnknown_81B3344,
+ gUnknown_81B335C,
+ gUnknown_81B3373,
+ gUnknown_81B338C,
+ gUnknown_81B33A6,
+ gUnknown_81B33CA,
+ gUnknown_81B33EA,
+ gUnknown_81B3402,
+ gUnknown_81B3427,
+ gUnknown_81B3440,
+ gUnknown_81B3457,
+ gUnknown_81B346F,
+ gUnknown_81B3481,
+ gUnknown_81B349B,
+ gUnknown_81B34B7,
+ gUnknown_81B34D6,
+ gUnknown_81B34F6,
+ gUnknown_81B3516
+};
+
+static const u8 *const gUnknown_845B164[] = {
+ NULL,
+ gUnknown_81B3525,
+ gUnknown_81B35E6,
+ gUnknown_81B36EB,
+ gUnknown_81B379A,
+ gUnknown_81B3849,
+ gUnknown_81B3876,
+ gUnknown_81B3972,
+ gUnknown_81B3A51,
+ gUnknown_81B3ACC,
+ gUnknown_81B3BB6,
+ gUnknown_81B3C99,
+ gUnknown_81B3D1B,
+ gUnknown_81B3DE3,
+ gUnknown_81B3EBC,
+ gUnknown_81B3F7F,
+ gUnknown_81B406C,
+ gUnknown_81B410B,
+ gUnknown_81B41D7,
+ gUnknown_81B42B3,
+ gUnknown_81B439D,
+ gUnknown_81B4483,
+ gUnknown_81B457C,
+ gUnknown_81B4645,
+ gUnknown_81B470A,
+ gUnknown_81B47F0,
+ gUnknown_81B48C6,
+ gUnknown_81B497A,
+ gUnknown_81B4A72,
+ gUnknown_81B4B65,
+ gUnknown_81B4C54,
+ gUnknown_81B4D26,
+ gUnknown_81B4E0B,
+ gUnknown_81B4ED8,
+ gUnknown_81B4FB2,
+ gUnknown_81B4FFD,
+ gUnknown_81B50FF,
+ gUnknown_81B51B1,
+ gUnknown_81B5272,
+ gUnknown_81B5325,
+ gUnknown_81B5382,
+ gUnknown_81B547C,
+ gUnknown_81B54E1,
+ gUnknown_81B5589,
+ gUnknown_81B55F4
+};
+
+static const u8 *const gUnknown_845B218[] = {
+ NULL,
+ gUnknown_81B56E3,
+ gUnknown_81B56F4,
+ gUnknown_81B5705,
+ gUnknown_81B5717,
+ gUnknown_81B5728,
+ gUnknown_81B5737,
+ gUnknown_81B5744,
+ gUnknown_81B5754,
+ gUnknown_81B5767,
+ gUnknown_81B577B,
+ gUnknown_81B5787,
+ gUnknown_81B5795,
+ gUnknown_81B57A5,
+ gUnknown_81B57B8,
+ gUnknown_81B57CF,
+ gUnknown_81B57DE,
+ gUnknown_81B57EE,
+ gUnknown_81B580D,
+ gUnknown_81B5824,
+ gUnknown_81B5834,
+ gUnknown_81B583F,
+ gUnknown_81B5850,
+ gUnknown_81B5863,
+ gUnknown_81B5875,
+ gUnknown_81B5884,
+ gUnknown_81B5893,
+ gUnknown_81B58A4,
+ gUnknown_81B58BC,
+ gUnknown_81B58D3,
+ gUnknown_81B58E5,
+ gUnknown_81B58FD,
+ gUnknown_81B590E,
+ gUnknown_81B591D,
+ gUnknown_81B592E,
+ gUnknown_81B593E,
+ gUnknown_81B5950,
+ gUnknown_81B595D,
+ gUnknown_81B5974,
+ gUnknown_81B5989,
+ gUnknown_81B59A7,
+ gUnknown_81B59BF,
+ gUnknown_81B59D6,
+ gUnknown_81B59E8,
+ gUnknown_81B59F5,
+ gUnknown_81B5A0D,
+ gUnknown_81B5A1B,
+ gUnknown_81B5A29,
+ gUnknown_81B5A37
+};
+
+static const u8 *const gUnknown_845B2DC[] = {
+ NULL,
+ gUnknown_81B5A4D,
+ gUnknown_81B5B0C,
+ gUnknown_81B5B7D,
+ gUnknown_81B5C13,
+ gUnknown_81B5CDF,
+ gUnknown_81B5D87,
+ gUnknown_81B5E41,
+ gUnknown_81B5F10,
+ gUnknown_81B5FA6,
+ gUnknown_81B606C,
+ gUnknown_81B6140,
+ gUnknown_81B6203,
+ gUnknown_81B62E4,
+ gUnknown_81B6397,
+ gUnknown_81B6478,
+ gUnknown_81B6525,
+ gUnknown_81B65E7,
+ gUnknown_81B66BA,
+ gUnknown_81B678E,
+ gUnknown_81B6883,
+ gUnknown_81B68CD,
+ gUnknown_81B69B9,
+ gUnknown_81B6A9A,
+ gUnknown_81B6B6E,
+ gUnknown_81B6C4F,
+ gUnknown_81B6D4A,
+ gUnknown_81B6E02,
+ gUnknown_81B6EC1,
+ gUnknown_81B6FA8,
+ gUnknown_81B7075,
+ gUnknown_81B7108,
+ gUnknown_81B71EA,
+ gUnknown_81B723B,
+ gUnknown_81B7319,
+ gUnknown_81B73E8,
+ gUnknown_81B747E,
+ gUnknown_81B752C,
+ gUnknown_81B7611,
+ gUnknown_81B7692,
+ gUnknown_81B771E,
+ gUnknown_81B77DD,
+ gUnknown_81B7884,
+ gUnknown_81B7931,
+ gUnknown_81B79CB,
+ gUnknown_81B7A60,
+ gUnknown_81B7AEE,
+ gUnknown_81B7BBE,
+ gUnknown_81B7C57
+};
+
+static const u8 *const gUnknown_845B3A0[] = {
+ NULL,
+ gUnknown_81B7CC1,
+ gUnknown_81B7CC4,
+ gUnknown_81B7CD9,
+ gUnknown_81B7CDF,
+ gUnknown_81B7CE6,
+ gUnknown_81B7CEE,
+ gUnknown_81B7CF6,
+ gUnknown_81B7CFE,
+ gUnknown_81B7D04,
+ gUnknown_81B7D12,
+ gUnknown_81B7D17,
+ gUnknown_81B7D1A,
+ gUnknown_81B7D1F,
+ gUnknown_81B7D27,
+ gUnknown_81B7D2D,
+ gUnknown_81B7D37,
+ gUnknown_81B7D3E,
+ gUnknown_81B7D45,
+ gUnknown_81B7D48,
+ gUnknown_81B7D4E,
+ gUnknown_81B7D57,
+ gUnknown_81B7D5B,
+ gUnknown_81B7D61,
+ gUnknown_81B7D6B,
+ gUnknown_81B7D76,
+ gUnknown_81B7D7E,
+ gUnknown_81B7D88,
+ gUnknown_81B7D8F,
+ gUnknown_81B7D9A,
+ gUnknown_81B7DA7,
+ gUnknown_81B7DB4,
+ gUnknown_81B7DBA,
+ gUnknown_81B7DC6,
+ gUnknown_81B7DCC,
+ gUnknown_81B7DD3,
+ gUnknown_81B7DD6,
+ gUnknown_81B7DD9,
+ gUnknown_81B7DE1,
+ gUnknown_81B7DEB,
+ gUnknown_81B7DFA,
+ gUnknown_81B7E02,
+ gUnknown_81B7E09,
+ gUnknown_81B7E0F
+};
+
+static const u8 *const gUnknown_845B450[] = {
+ NULL,
+ gUnknown_81B7E16,
+ gUnknown_81B7F0A,
+ gUnknown_81B800A,
+ gUnknown_81B80EC,
+ gUnknown_81B81C2,
+ gUnknown_81B8256,
+ gUnknown_81B8348,
+ gUnknown_81B83EF,
+ gUnknown_81B847B,
+ gUnknown_81B8550,
+ gUnknown_81B8647,
+ gUnknown_81B86E2,
+ gUnknown_81B87B8,
+ gUnknown_81B8897,
+ gUnknown_81B8924,
+ gUnknown_81B8A04,
+ gUnknown_81B8A84,
+ gUnknown_81B8B62,
+ gUnknown_81B8C18,
+ gUnknown_81B8C94,
+ gUnknown_81B8D1D,
+ gUnknown_81B8DD4,
+ gUnknown_81B8E67,
+ gUnknown_81B8F4D,
+ gUnknown_81B901B,
+ gUnknown_81B90A7,
+ gUnknown_81B90E8,
+ gUnknown_81B9170,
+ gUnknown_81B91C2,
+ gUnknown_81B91F9,
+ gUnknown_81B92B8,
+ gUnknown_81B92ED,
+ gUnknown_81B93D8,
+ gUnknown_81B9439,
+ gUnknown_81B9497,
+ gUnknown_81B9560,
+ gUnknown_81B9656,
+ gUnknown_81B9749,
+ gUnknown_81B984F,
+ gUnknown_81B991C,
+ gUnknown_81B99C4,
+ gUnknown_81B9AA2,
+ gUnknown_81B9B2F
+};
+
+static const u8 *const gUnknown_845B500[] = {
+ NULL,
+ gUnknown_81B9BB7,
+ gUnknown_81B9BC7,
+ gUnknown_81B9BD0,
+ gUnknown_81B9BE1,
+ gUnknown_81B9BF5,
+ gUnknown_81B9C09,
+ gUnknown_81B9C1D
+};
+
+static const u8 *const gUnknown_845B520[] = {
+ NULL,
+ gUnknown_81B9C2F,
+ gUnknown_81B9D04,
+ gUnknown_81B9DC5,
+ gUnknown_81B9E75,
+ gUnknown_81B9F09,
+ gUnknown_81B9FCE,
+ gUnknown_81BA027
+};
+
+static const u8 *const gUnknown_845B540[] = {
+ NULL,
+ gUnknown_81BA0F1,
+ gUnknown_81BA10D,
+ gUnknown_81BA121,
+ gUnknown_81BA138,
+ gUnknown_81BA14C,
+ gUnknown_81BA163,
+ gUnknown_81BA17A,
+ gUnknown_81BA194,
+ gUnknown_81BA1AC,
+ gUnknown_81BA1C7,
+ gUnknown_81BA1DC,
+ gUnknown_81BA1F4,
+ gUnknown_81BA209,
+ gUnknown_81BA221,
+ gUnknown_81BA234,
+ gUnknown_81BA24A,
+ gUnknown_81BA260,
+ gUnknown_81BA279,
+ gUnknown_81BA291,
+ gUnknown_81BA2AC,
+ gUnknown_81BA2C2,
+ gUnknown_81BA2DB,
+ gUnknown_81BA2F1,
+ gUnknown_81BA30A,
+ gUnknown_81BA320,
+ gUnknown_81BA339,
+ gUnknown_81BA34E,
+ gUnknown_81BA366,
+ gUnknown_81BA37C,
+ gUnknown_81BA395,
+ gUnknown_81BA3A9,
+ gUnknown_81BA3C0,
+ gUnknown_81BA3D5,
+ gUnknown_81BA3ED,
+ gUnknown_81BA400
+};
+
+static const u8 *const gUnknown_845B5D0[] = {
+ NULL,
+ gUnknown_81BA416,
+ gUnknown_81BA4E6,
+ gUnknown_81BA539,
+ gUnknown_81BA595,
+ gUnknown_81BA5F2,
+ gUnknown_81BA66F,
+ gUnknown_81BA6C9,
+ gUnknown_81BA71F,
+ gUnknown_81BA796,
+ gUnknown_81BA7E9,
+ gUnknown_81BA862,
+ gUnknown_81BA8D3,
+ gUnknown_81BA92A,
+ gUnknown_81BA98D,
+ gUnknown_81BA9F1,
+ gUnknown_81BAA44,
+ gUnknown_81BAAB6,
+ gUnknown_81BAB18,
+ gUnknown_81BAB7A,
+ gUnknown_81BABCC,
+ gUnknown_81BAC29,
+ gUnknown_81BAC89,
+ gUnknown_81BACC4,
+ gUnknown_81BAD20,
+ gUnknown_81BAD60,
+ gUnknown_81BADA2,
+ gUnknown_81BADF7,
+ gUnknown_81BAEA8,
+ gUnknown_81BAF01,
+ gUnknown_81BAF6B,
+ gUnknown_81BAFCA,
+ gUnknown_81BB02E,
+ gUnknown_81BB084,
+ gUnknown_81BB0DF,
+ gUnknown_81BB156
+};
+
+
+static const u8 gUnknown_845B660[] = {
+ 0x01, 0x02, 0x03, 0xff
+};
+
+static const u8 gUnknown_845B664[] = {
+ 0x01, 0x02, 0x03, 0xff
+};
+
+static const u8 gUnknown_845B668[] = {
+ 0x13, 0xff
+};
+
+static const u8 gUnknown_845B66A[] = {
+ 0x01, 0x02, 0x03, 0xff
+};
+
+static const u8 gUnknown_845B66E[] = {
+ 0x01, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B671[] = {
+ 0x02, 0x03, 0x04, 0x05, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B677[] = {
+ 0x09, 0x01, 0xff
+};
+
+static const u8 gUnknown_845B67A[] = {
+ 0x02, 0x03, 0xff
+};
+
+static const u8 gUnknown_845B67D[] = {
+ 0x09, 0x0a, 0x0b, 0x11, 0x0c, 0x10, 0xff
+};
+
+static const u8 gUnknown_845B684[] = {
+ 0x09, 0x01, 0x04, 0x05, 0x06, 0x07, 0x08, 0x02, 0x0d, 0xff
+};
+
+static const u8 gUnknown_845B68E[] = {
+ 0x09, 0x03, 0x0a, 0x0f, 0x12, 0x13, 0x14, 0xff
+};
+
+static const u8 gUnknown_845B696[] = {
+ 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x12, 0xff
+};
+
+static const u8 gUnknown_845B6A1[] = {
+ 0x16, 0x17, 0x18, 0xff
+};
+
+static const u8 gUnknown_845B6A5[] = {
+ 0x0a, 0xff
+};
+
+static const u8 gUnknown_845B6A7[] = {
+ 0x11, 0x0e, 0x19, 0x1a, 0x1b, 0xff
+};
+
+static const u8 gUnknown_845B6AD[] = {
+ 0x0a, 0xff
+};
+
+static const u8 gUnknown_845B6AF[] = {
+ 0x0b, 0xff
+};
+
+static const u8 gUnknown_845B6B1[] = {
+ 0x2b, 0x19, 0x1a, 0xff
+};
+
+static const u8 gUnknown_845B6B5[] = {
+ 0x0c, 0xff
+};
+
+static const u8 gUnknown_845B6B7[] = {
+ 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0xff
+};
+
+static const u8 gUnknown_845B6BF[] = {
+ 0x02, 0x03, 0x04, 0xff
+};
+
+static const u8 gUnknown_845B6C3[] = {
+ 0x01, 0x02, 0x03, 0x07, 0xff
+};
+
+static const u8 gUnknown_845B6C8[] = {
+ 0x02, 0x04, 0x05, 0x09, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B6CE[] = {
+ 0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B6E2[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x0a, 0x28, 0xff
+};
+
+static const u8 gUnknown_845B6E9[] = {
+ 0x02, 0x05, 0x06, 0x0a, 0x23, 0x24, 0x09, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B6F2[] = {
+ 0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0x14, 0xff
+};
+
+static const u8 gUnknown_845B707[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x0a, 0x28, 0xff
+};
+
+static const u8 gUnknown_845B70E[] = {
+ 0x03, 0x07, 0x04, 0x05, 0x06, 0xff
+};
+
+static const u8 gUnknown_845B714[] = {
+ 0x02, 0x05, 0x06, 0x0a, 0x23, 0x24, 0x09, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B71D[] = {
+ 0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B731[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x0a, 0x0c, 0x0e, 0x16, 0x17, 0x18, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B73D[] = {
+ 0x06, 0x0a, 0x23, 0x24, 0x09, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B744[] = {
+ 0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B758[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x0a, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B75F[] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
+};
+
+static const u8 gUnknown_845B783[] = {
+ 0x02, 0x0a, 0x04, 0x05, 0x06, 0x07, 0x0d, 0x27, 0x08, 0x0b, 0x21, 0x23, 0x24, 0x2c, 0x09, 0x0e, 0x16, 0x17, 0x0f, 0x10, 0x11, 0x1a, 0x15, 0x1f, 0x20, 0x12, 0x13, 0x14, 0x18, 0x19, 0x1b, 0x1e, 0x1c, 0x28, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B7A7[] = {
+ 0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B7BB[] = {
+ 0x09, 0x01, 0x02, 0x0a, 0x0b, 0x0c, 0x0d, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B7C4[] = {
+ 0x02, 0x0a, 0x04, 0x05, 0x06, 0x07, 0x0d, 0x27, 0x08, 0x0b, 0x21, 0x23, 0x24, 0x2c, 0x09, 0x0e, 0x16, 0x17, 0x0f, 0x10, 0x11, 0x1a, 0x15, 0x1f, 0x20, 0x12, 0x13, 0x14, 0x18, 0x19, 0x1b, 0x1e, 0x1c, 0x28, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B7E8[] = {
+ 0x1f, 0x01, 0x02, 0x06, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B7F1[] = {
+ 0x09, 0x01, 0x02, 0x0a, 0x0b, 0x0c, 0x0d, 0x15, 0x28, 0xff
+};
+
+static const u8 gUnknown_845B7FB[] = {
+ 0x0a, 0x07, 0x0d, 0x27, 0x08, 0x0b, 0x21, 0x23, 0x24, 0x2c, 0x09, 0x0e, 0x16, 0x0f, 0x10, 0x11, 0x1a, 0x15, 0x1f, 0x20, 0x12, 0x13, 0x14, 0x18, 0x19, 0x1b, 0x1e, 0x1c, 0x28, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B81A[] = {
+ 0x1f, 0x01, 0x02, 0x06, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B823[] = {
+ 0x09, 0x01, 0x02, 0x0a, 0x0b, 0x0c, 0x0d, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B82C[] = {
+ 0x07, 0x27, 0x08, 0x2c, 0x15, 0x1f, 0x20, 0x12, 0x13, 0x14, 0x18, 0x19, 0x1b, 0x1e, 0x1c, 0x28, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B83E[] = {
+ 0x1f, 0x01, 0x02, 0x06, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B847[] = {
+ 0x09, 0x01, 0x02, 0x0a, 0x0b, 0x0c, 0x0d, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B850[] = {
+ 0x0f, 0x1b, 0x1d, 0x11, 0x12, 0x15, 0x17, 0x16, 0x1f, 0x20, 0x13, 0x14, 0xff
+};
+
+static const u8 gUnknown_845B85D[] = {
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x07, 0x09, 0x2b, 0xff
+};
+
+static const u8 gUnknown_845B866[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0d, 0x0f, 0x12, 0x13, 0x14, 0x27, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B878[] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
+};
+
+static const u8 gUnknown_845B89C[] = {
+ 0x0f, 0x1b, 0x1d, 0x11, 0x12, 0x16, 0x1f, 0x20, 0x13, 0x14, 0xff
+};
+
+static const u8 gUnknown_845B8A7[] = {
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x07, 0x2b, 0xff
+};
+
+static const u8 gUnknown_845B8AF[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0d, 0x0f, 0x12, 0x13, 0x14, 0x27, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B8C1[] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
+};
+
+static const u8 gUnknown_845B8E5[] = {
+ 0x0f, 0x1b, 0x1d, 0x11, 0x12, 0x16, 0x1f, 0x20, 0x13, 0x14, 0xff
+};
+
+static const u8 gUnknown_845B8F0[] = {
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x07, 0x2b, 0xff
+};
+
+static const u8 gUnknown_845B8F8[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0d, 0x0f, 0x12, 0x13, 0x14, 0x27, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B90A[] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
+};
+
+static const u8 gUnknown_845B92E[] = {
+ 0x29, 0x2a, 0x2b, 0xff
+};
+
+static const u8 gUnknown_845B932[] = {
+ 0x2d, 0x2e, 0x2f, 0x2b, 0xff
+};
+
+static const u8 gUnknown_845B937[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0d, 0x0f, 0x12, 0x13, 0x14, 0xff
+};
+
+static const u8 gUnknown_845B947[] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
+};
+
+static const u8 gUnknown_845B96B[] = {
+ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
+};
+
+static const u8 gUnknown_845B978[] = {
+ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
+};
+
+static const u8 gUnknown_845B985[] = {
+ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
+};
+
+static const u8 gUnknown_845B992[] = {
+ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
+};
+
+static const u8 gUnknown_845B99F[] = {
+ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
+};
+
+static const u8 gUnknown_845B9AC[] = {
+ 0x26, 0x27, 0x28, 0x29, 0x2a, 0xff
+};
+
+static const u8 gUnknown_845B9B2[] = {
+ 0x26, 0x27, 0x28, 0x29, 0x2a, 0xff
+};
+
+static const u8 gUnknown_845B9B8[] = {
+ 0x26, 0x27, 0x28, 0x29, 0x2a, 0xff
+};
+
+static const u8 gUnknown_845B9BE[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x23, 0x25, 0x24, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x27, 0x15, 0x26, 0x16, 0x17, 0x18, 0x1a, 0x0e, 0x1b, 0xff
+};
+
+static const u8 *const gUnknown_845B9E0[] = {
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, gUnknown_845B660, NULL,
+ NULL, NULL, NULL, gUnknown_845B664, NULL,
+ NULL, gUnknown_845B668, NULL, gUnknown_845B66A, NULL,
+ NULL, gUnknown_845B66E, NULL, NULL, NULL,
+ NULL, gUnknown_845B671, gUnknown_845B677, NULL, NULL,
+ NULL, gUnknown_845B67A, gUnknown_845B67D, NULL, NULL,
+ NULL, NULL, gUnknown_845B684, NULL, NULL,
+ NULL, NULL, gUnknown_845B68E, NULL, NULL,
+ NULL, gUnknown_845B696, gUnknown_845B6A1, NULL, NULL,
+ NULL, gUnknown_845B6A5, gUnknown_845B6A7, NULL, NULL,
+ NULL, gUnknown_845B6AD, NULL, NULL, NULL,
+ NULL, gUnknown_845B6AF, gUnknown_845B6B1, NULL, NULL,
+ NULL, gUnknown_845B6B5, gUnknown_845B6B7, NULL, NULL,
+ gUnknown_845B6BF, NULL, NULL, gUnknown_845B6C3, NULL,
+ gUnknown_845B6C8, gUnknown_845B6CE, gUnknown_845B6E2, NULL, NULL,
+ gUnknown_845B6E9, gUnknown_845B6F2, gUnknown_845B707, gUnknown_845B70E, NULL,
+ gUnknown_845B714, gUnknown_845B71D, gUnknown_845B731, NULL, NULL,
+ gUnknown_845B73D, gUnknown_845B744, gUnknown_845B758, NULL, gUnknown_845B75F,
+ gUnknown_845B783, gUnknown_845B7A7, gUnknown_845B7BB, NULL, NULL,
+ gUnknown_845B7C4, gUnknown_845B7E8, gUnknown_845B7F1, NULL, NULL,
+ gUnknown_845B7FB, gUnknown_845B81A, gUnknown_845B823, NULL, NULL,
+ gUnknown_845B82C, gUnknown_845B83E, gUnknown_845B847, NULL, NULL,
+ gUnknown_845B850, gUnknown_845B85D, gUnknown_845B866, NULL, gUnknown_845B878,
+ gUnknown_845B89C, gUnknown_845B8A7, gUnknown_845B8AF, NULL, gUnknown_845B8C1,
+ gUnknown_845B8E5, gUnknown_845B8F0, gUnknown_845B8F8, NULL, gUnknown_845B90A,
+ gUnknown_845B92E, gUnknown_845B932, gUnknown_845B937, NULL, gUnknown_845B947,
+ NULL, gUnknown_845B96B, NULL, NULL, NULL,
+ NULL, gUnknown_845B978, NULL, NULL, NULL,
+ NULL, gUnknown_845B985, NULL, NULL, NULL,
+ NULL, gUnknown_845B992, NULL, NULL, NULL,
+ NULL, gUnknown_845B99F, NULL, NULL, NULL,
+ NULL, gUnknown_845B9AC, NULL, NULL, NULL,
+ NULL, gUnknown_845B9B2, NULL, NULL, NULL,
+ NULL, gUnknown_845B9B8, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL
+};
+
+static const u16 unref_845BCB0[] = INCBIN_U16("graphics/help_system/unk_845BCB0.bin");
+
+static const u8 gUnknown_845C4B0[] = {
+ 3, 0, 1, 2, 4, 5
+};
+
+static const u8 gUnknown_845C4B6[][6] = {
+ {0, 0, 0, 0, 0, 1},
+ {0, 0, 0, 1, 0, 1},
+ {0, 0, 0, 1, 0, 1},
+ {0, 1, 0, 1, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 1, 0, 0, 1},
+ {0, 1, 1, 0, 0, 1},
+ {0, 0, 1, 0, 0, 1},
+ {0, 0, 1, 0, 0, 1},
+ {0, 1, 1, 0, 0, 1},
+ {0, 1, 1, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 1, 0, 0, 1},
+ {0, 1, 1, 0, 0, 1},
+ {1, 0, 0, 1, 0, 1},
+ {1, 1, 1, 0, 0, 1},
+ {1, 1, 1, 1, 0, 1},
+ {1, 1, 1, 0, 0, 1},
+ {1, 1, 1, 0, 1, 1},
+ {1, 1, 1, 0, 0, 1},
+ {1, 1, 1, 0, 0, 1},
+ {1, 1, 1, 0, 0, 1},
+ {1, 1, 1, 0, 0, 1},
+ {1, 1, 1, 0, 1, 1},
+ {1, 1, 1, 0, 1, 1},
+ {1, 1, 1, 0, 1, 1},
+ {1, 1, 1, 0, 1, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0, 0}
+};
+
+static const u16 gUnknown_845C594[] = {
+ MAP_VIRIDIAN_CITY_MART,
+ MAP_PEWTER_CITY_MART,
+ MAP_CERULEAN_CITY_MART,
+ MAP_LAVENDER_TOWN_MART,
+ MAP_VERMILION_CITY_MART,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_1F,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_2F,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_3F,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_4F,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_5F,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_ROOF,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_ELEVATOR,
+ MAP_FUCHSIA_CITY_MART,
+ MAP_CINNABAR_ISLAND_MART,
+ MAP_SAFFRON_CITY_MART,
+ MAP_THREE_ISLAND_MART,
+ MAP_FOUR_ISLAND_MART,
+ MAP_SEVEN_ISLAND_MART,
+ MAP_SIX_ISLAND_MART,
+ MAP_UNDEFINED
+};
+
+static const u16 gUnknown_845C5BC[] = {
+ MAP_PEWTER_CITY_GYM,
+ MAP_CERULEAN_CITY_GYM,
+ MAP_VERMILION_CITY_GYM,
+ MAP_CELADON_CITY_GYM,
+ MAP_FUCHSIA_CITY_GYM,
+ MAP_SAFFRON_CITY_GYM,
+ MAP_CINNABAR_ISLAND_GYM,
+ MAP_VIRIDIAN_CITY_GYM,
+ MAP_UNDEFINED
+};
+
+static const u8 gUnknown_845C5CE[][3] = {
+ { MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), 1 },
+ { MAP_GROUP(MT_MOON_1F), MAP_NUM(MT_MOON_1F), 3 },
+ { MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), 2 },
+ { MAP_GROUP(DIGLETTS_CAVE_NORTH_ENTRANCE), MAP_NUM(DIGLETTS_CAVE_NORTH_ENTRANCE), 3 },
+ { MAP_GROUP(SEAFOAM_ISLANDS_1F), MAP_NUM(SEAFOAM_ISLANDS_1F), 5 },
+ { MAP_GROUP(VICTORY_ROAD_1F), MAP_NUM(VICTORY_ROAD_1F), 3 },
+ { MAP_GROUP(CERULEAN_CAVE_1F), MAP_NUM(CERULEAN_CAVE_1F), 3 },
+ { MAP_GROUP(MT_EMBER_RUBY_PATH_B4F), MAP_NUM(MT_EMBER_RUBY_PATH_B4F), 1 },
+ { MAP_GROUP(MT_EMBER_SUMMIT_PATH_1F), MAP_NUM(MT_EMBER_SUMMIT_PATH_1F), 3 },
+ { MAP_GROUP(MT_EMBER_RUBY_PATH_B5F), MAP_NUM(MT_EMBER_RUBY_PATH_B5F), 7 },
+ { MAP_GROUP(THREE_ISLAND_BERRY_FOREST), MAP_NUM(THREE_ISLAND_BERRY_FOREST), 1 },
+ { MAP_GROUP(SIX_ISLAND_PATTERN_BUSH), MAP_NUM(SIX_ISLAND_PATTERN_BUSH), 1 },
+ { MAP_GROUP(FIVE_ISLAND_LOST_CAVE_ENTRANCE), MAP_NUM(FIVE_ISLAND_LOST_CAVE_ENTRANCE), 15 },
+ { MAP_GROUP(FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE), MAP_NUM(FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE), 4 },
+ { MAP_GROUP(SIX_ISLAND_ALTERING_CAVE), MAP_NUM(SIX_ISLAND_ALTERING_CAVE), 1 },
+ { MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER), 7 }
+};
+
+void sub_812B1E0(u8 a0)
+{
+ gUnknown_203B0EC = a0;
+}
+
+void HelpSystem_SetSomeVariable2(u8 a0)
+{
+ switch (gUnknown_203B0EC)
+ {
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ if (a0 == 9 || a0 == 5 || a0 == 6 || a0 == 7 || a0 == 8)
+ break;
+ // fallthrough
+ default:
+ gUnknown_203B0EC = a0;
+ break;
+ }
+}
+
+void sub_812B220(void)
+{
+ gUnknown_203B0EC = gSpecialVar_0x8004;
+}
+
+void sub_812B234(void)
+{
+ gUnknown_3005EA0 = gUnknown_203B0EC;
+}
+
+void sub_812B248(void)
+{
+ gUnknown_203B0EC = gUnknown_3005EA0;
+}
+
+static bool32 sub_812B25C(void)
+{
+ return sub_812B27C(gUnknown_845C594);
+}
+
+static bool32 sub_812B26C(void)
+{
+ return sub_812B27C(gUnknown_845C5BC);
+}
+
+static bool32 sub_812B27C(const u16 * mapIdxs)
+{
+ u16 mapIdx = (gSaveBlock1Ptr->location.mapGroup << 8) + gSaveBlock1Ptr->location.mapNum;
+ s32 i;
+
+ for (i = 0; mapIdxs[i] != MAP_UNDEFINED; i++)
+ {
+ if (mapIdxs[i] == mapIdx)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 sub_812B2C4(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < 16; i++)
+ {
+ for (j = 0; j < gUnknown_845C5CE[i][2]; j++)
+ {
+ if (
+ gUnknown_845C5CE[i][0] == gSaveBlock1Ptr->location.mapGroup
+ && gUnknown_845C5CE[i][1] + j == gSaveBlock1Ptr->location.mapNum
+ && (i != 15 || FlagGet(FLAG_0x849) == TRUE)
+ )
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+void sub_812B35C(void)
+{
+ sub_812B4B8();
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ HelpSystem_SetSomeVariable2(0x16);
+ else if (sub_812B2C4())
+ HelpSystem_SetSomeVariable2(0x15);
+ else if (is_light_level_8_or_9(gMapHeader.mapType))
+ {
+ if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_1F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_1F)) || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_2F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_2F)))
+ HelpSystem_SetSomeVariable2(0x0E);
+ else if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_PROFESSOR_OAKS_LAB) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_PROFESSOR_OAKS_LAB))
+ HelpSystem_SetSomeVariable2(0x0F);
+ else if (IsCurMapPokeCenter() == TRUE)
+ HelpSystem_SetSomeVariable2(0x10);
+ else if (sub_812B25C() == TRUE)
+ HelpSystem_SetSomeVariable2(0x11);
+ else if (sub_812B26C() == TRUE)
+ HelpSystem_SetSomeVariable2(0x12);
+ else
+ HelpSystem_SetSomeVariable2(0x13);
+ }
+ else
+ HelpSystem_SetSomeVariable2(0x14);
+}
+
+bool8 sub_812B40C(void)
+{
+ if (gUnknown_203B0EE == 1)
+ return FALSE;
+
+ if (gSaveFileStatus != SAVE_STATUS_EMPTY && gSaveFileStatus != SAVE_STATUS_INVALID && FlagGet(FLAG_0x83C))
+ return FALSE;
+
+ FlagSet(FLAG_0x83C);
+ gUnknown_203B0EE = 1;
+ return TRUE;
+}
+
+bool8 sub_812B45C(void)
+{
+ if (gReceivedRemoteLinkPlayers == 1)
+ return FALSE;
+ return TRUE;
+}
+
+void sub_812B478(void)
+{
+ gUnknown_3005ECC = 0;
+}
+
+void sub_812B484(void)
+{
+ if (gUnknown_203ADFA != 2 && gUnknown_203ADFA != 3)
+ {
+ gUnknown_3005ECC = 1;
+ sub_812B4B8();
+ }
+}
+
+void sub_812B4AC(void)
+{
+ gUnknown_203F175 = 1;
+}
+
+void sub_812B4B8(void)
+{
+ gUnknown_203F175 = 0;
+}
+
+static void sub_812B4C4(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ a0->sub.items = a1;
+ a0->sub.totalItems = 1;
+ a0->sub.maxShowed = 1;
+ a0->sub.left = 1;
+ a0->sub.top = 4;
+}
+
+static void sub_812B4D8(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ sub_812B4C4(a0, a1);
+ sub_812B520(a0, a1);
+ sub_812BF74(gUnknown_841DFAC);
+ HelpSystem_InitListMenuController(a0, 0, gUnknown_3005E9C[2]);
+ sub_812BF9C(a0, a1);
+ sub_813BDA4(1);
+ sub_813BD5C(1);
+}
+
+static void sub_812B520(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ u8 i;
+ u8 r4 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ if (gUnknown_845C4B6[gUnknown_203B0EC][gUnknown_845C4B0[i]] == 1)
+ {
+ a1[r4].label = gUnknown_845B080[gUnknown_845C4B0[i]];
+ a1[r4].index = gUnknown_845C4B0[i];
+ r4++;
+ }
+ }
+ a1[r4 - 1].index = -2;
+ a0->sub.totalItems = r4;
+ a0->sub.maxShowed = r4;
+ a0->sub.left = 0;
+}
+
+static void sub_812B5A8(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ sub_813BDE8(0);
+ sub_813BFC0(0);
+ sub_813BE78(1);
+ sub_812B4C4(a0, a1);
+ sub_812B614(a0, a1);
+ sub_812BF74(gUnknown_841DFC9);
+ HelpSystem_InitListMenuController(a0, a0->field_0C, a0->field_0D);
+ HelpSystem_PrintTextAt(gUnknown_845B080[gUnknown_3005E9C[1]], 0, 0);
+ sub_813BDA4(1);
+ sub_813BD5C(1);
+}
+
+static void sub_812B614(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ u8 r6 = 0;
+ const u8 * r3 = gUnknown_845B9E0[gUnknown_203B0EC * 5 + gUnknown_3005E9C[1]];
+ u8 i;
+ for (i = 0; r3[i] != 0xFF; i++)
+ {
+ if (sub_812B780(r3[i]) == TRUE)
+ {
+ if (gUnknown_3005E9C[1] == 0)
+ a1[r6].label = gUnknown_845B0B0[r3[i]];
+ else if (gUnknown_3005E9C[1] == 1)
+ a1[r6].label = gUnknown_845B218[r3[i]];
+ else if (gUnknown_3005E9C[1] == 2)
+ a1[r6].label = gUnknown_845B3A0[r3[i]];
+ else if (gUnknown_3005E9C[1] == 3)
+ a1[r6].label = gUnknown_845B500[r3[i]];
+ else
+ a1[r6].label = gUnknown_845B540[r3[i]];
+ a1[r6].index = r3[i];
+ r6++;
+ }
+ }
+ if (sub_812B754() == TRUE)
+ {
+ for (i = 0, r3 = gUnknown_845B9BE; r3[i] != 0xFF; i++)
+ {
+ a1[r6].label = gUnknown_845B3A0[r3[i]];
+ a1[r6].index = r3[i];
+ r6++;
+ }
+ }
+ a1[r6].label = gUnknown_81B2E6F;
+ a1[r6].index = -2;
+ r6++;
+ a0->sub.totalItems = r6;
+ a0->sub.maxShowed = 7;
+ a0->sub.left = 0;
+ a0->sub.top = 21;
+}
+
+static bool8 sub_812B754(void)
+{
+ if (FlagGet(FLAG_0x4B0) == TRUE && gUnknown_3005E9C[1] == 2)
+ return TRUE;
+ return FALSE;
+}
+
+static bool8 sub_812B780(u8 id)
+{
+ u8 i = 0;
+
+ if (gUnknown_3005E9C[1] == 0)
+ {
+ switch (id)
+ {
+ case 1:
+ case 2:
+ case 3:
+ case 5:
+ case 8:
+ case 34:
+ case 38:
+ case 41:
+ case 42:
+ case 43:
+ return TRUE;
+ case 4:
+ return FlagGet(FLAG_0x2CF);
+ case 6:
+ case 10:
+ case 16:
+ case 19:
+ case 22:
+ case 35:
+ case 36:
+ return FlagGet(FLAG_WORLD_MAP_VIRIDIAN_CITY);
+ case 7:
+ return FlagGet(FLAG_WORLD_MAP_VERMILION_CITY);
+ case 11:
+ case 24:
+ return FlagGet(FLAG_0x8A4);
+ case 9:
+ case 13:
+ case 14:
+ case 15:
+ case 17:
+ case 18:
+ case 20:
+ case 26:
+ case 29:
+ case 31:
+ case 37:
+ return FlagGet(FLAG_0x828);
+ case 21:
+ case 23:
+ return FlagGet(FLAG_0x829);
+ case 12:
+ case 25:
+ case 27:
+ case 30:
+ case 32:
+ case 33:
+ return FlagGet(FLAG_UNK820);
+ case 28:
+ case 40:
+ return sub_812BB10();
+ case 39:
+ return FlagGet(FLAG_0x29B);
+ case 44:
+ return FlagGet(FLAG_WORLD_MAP_PEWTER_CITY);
+ }
+ return FALSE;
+ }
+ if (gUnknown_3005E9C[1] == 1)
+ {
+ switch (id)
+ {
+ case 06:
+ case 10:
+ case 11:
+ case 12:
+ case 19:
+ case 20:
+ case 21:
+ case 22:
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 31:
+ case 36:
+ case 38:
+ case 39:
+ case 40:
+ case 41:
+ case 42:
+ case 45:
+ case 46:
+ case 47:
+ return TRUE;
+ case 1:
+ case 30:
+ case 37:
+ return FlagGet(FLAG_0x829);
+ case 14:
+ return CheckBagHasItem(ITEM_TOWN_MAP, 1);
+ case 2:
+ case 3:
+ case 5:
+ case 7:
+ case 8:
+ case 9:
+ case 13:
+ case 32:
+ case 33:
+ case 35:
+ case 43:
+ case 44:
+ return FlagGet(FLAG_0x828);
+ case 4:
+ case 34:
+ if (sub_8088EDC(1) > 1)
+ return TRUE;
+ return FALSE;
+ case 15:
+ return FlagGet(FLAG_UNK820);
+ case 16:
+ case 17:
+ return sub_812BB10();
+ case 18:
+ return FlagGet(FLAG_0x271);
+ case 48:
+ return FlagGet(FLAG_0x82C);
+ }
+ return FALSE;
+ }
+ if (gUnknown_3005E9C[1] == 2)
+ {
+ if (sub_812B754() == TRUE)
+ {
+ for (i = 0; gUnknown_845B9BE[i] != 0xFF; i++)
+ {
+ if (gUnknown_845B9BE[i] == id)
+ return FALSE;
+ }
+ }
+ switch (id)
+ {
+ case 14:
+ case 17:
+ case 22:
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 30:
+ case 31:
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ case 38:
+ return TRUE;
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 16:
+ case 19:
+ case 20:
+ case 21:
+ return FlagGet(FLAG_0x828);
+ case 36:
+ case 37:
+ return sub_812BB10();
+ case 3:
+ case 15:
+ case 18:
+ case 39:
+ return FlagGet(FLAG_0x8A4);
+ }
+ return TRUE;
+ }
+ if (gUnknown_3005E9C[1] == 3)
+ {
+ switch (id)
+ {
+ case 5:
+ return FlagGet(FLAG_UNK820);
+ case 6:
+ return FlagGet(FLAG_0x821);
+ }
+ return TRUE;
+ }
+ if (gUnknown_3005E9C[1] == 4)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 sub_812BB10(void)
+{
+ if (FlagGet(FLAG_0x237) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x238) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x239) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x23A) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x23B) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x2EF) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x1F1) == TRUE)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 sub_812BB9C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ switch (a0->field_0E)
+ {
+ case 8:
+ return sub_812BC54(a0, a1);
+ case 9:
+ return sub_812BC80(a0, a1);
+ case 10:
+ return sub_812BCA8(a0, a1);
+ case 0:
+ return sub_812BCD0(a0, a1);
+ case 1:
+ return sub_812BD2C(a0, a1);
+ case 2:
+ return sub_812BD64(a0, a1);
+ case 3:
+ return sub_812BD98(a0, a1);
+ case 4:
+ return sub_812BE10(a0, a1);
+ case 5:
+ return sub_812BEEC(a0, a1);
+ case 6:
+ return sub_812BF18(a0, a1);
+ }
+ return FALSE;
+}
+
+bool8 sub_812BC54(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ sub_812BF74(gUnknown_841DFA5);
+ sub_812BF5C();
+ sub_813BDA4(1);
+ sub_813BD5C(1);
+ a0->field_0E = 9;
+ return TRUE;
+}
+
+bool8 sub_812BC80(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ a0->field_0E = 10;
+ }
+ return TRUE;
+}
+
+bool8 sub_812BCA8(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ gUnknown_3005E9C[2] = 0;
+ sub_812BF94(a0);
+ sub_812B4D8(a0, a1);
+ a0->field_0E = 0;
+ return TRUE;
+}
+
+bool8 sub_812BCD0(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ s32 v0 = HelpSystem_GetMenuInput();
+ switch (v0)
+ {
+ case -6:
+ case -2:
+ return FALSE;
+ case -5:
+ case -4:
+ sub_812BF9C(a0, a1);
+ break;
+ case -3:
+ case -1:
+ break;
+ default:
+ gUnknown_3005E9C[1] = v0;
+ a0->field_0E = 1;
+ break;
+ }
+ return TRUE;
+}
+
+bool8 sub_812BD2C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ gUnknown_3005E9C[0] = 1;
+ gUnknown_3005E9C[2] = a0->field_0D;
+ sub_812BF94(a0);
+ sub_812B5A8(a0, a1);
+ sub_813C75C();
+ HelpSystem_SetInputDelay(2);
+ a0->field_0E = 3;
+ return TRUE;
+}
+
+bool8 sub_812BD64(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ sub_813C004(0, 0);
+ sub_813C004(1, 0);
+ gUnknown_3005E9C[0] = 0;
+ sub_812B4D8(a0, a1);
+ a0->field_0E = 0;
+ return TRUE;
+}
+
+bool8 sub_812BD98(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ s32 v0 = HelpSystem_GetMenuInput();
+ switch (v0)
+ {
+ case -6:
+ return FALSE;
+ case -2:
+ a0->field_0E = 2;
+ break;
+ case -5:
+ case -4:
+ case -3:
+ case -1:
+ break;
+ default:
+ gUnknown_3005E9C[3] = v0;
+ a0->field_0E = 4;
+ break;
+ }
+ return TRUE;
+}
+
+void sub_812BDEC(void)
+{
+ HelpSystem_PrintTextAt(gUnknown_845B080[gUnknown_3005E9C[1]], 0, 0);
+}
+
+bool8 sub_812BE10(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ gUnknown_3005E9C[0] = 2;
+ sub_813BDA4(0);
+ HelpSystem_FillPanel1();
+ sub_812BF74(gUnknown_841DFBE);
+ sub_813BDE8(1);
+ sub_813BEE4(1);
+
+ if (gUnknown_3005E9C[1] == 0)
+ {
+ HelpSystem_PrintTwoStrings(gUnknown_845B0B0[gUnknown_3005E9C[3]], gUnknown_845B164[gUnknown_3005E9C[3]]);
+ }
+ else if (gUnknown_3005E9C[1] == 1)
+ {
+ HelpSystem_PrintTwoStrings(gUnknown_845B218[gUnknown_3005E9C[3]], gUnknown_845B2DC[gUnknown_3005E9C[3]]);
+ }
+ else if (gUnknown_3005E9C[1] == 2)
+ {
+ HelpSystem_PrintTwoStrings(gUnknown_845B3A0[gUnknown_3005E9C[3]], gUnknown_845B450[gUnknown_3005E9C[3]]);
+ }
+ else if (gUnknown_3005E9C[1] == 3)
+ {
+ HelpSystem_PrintTwoStrings(gUnknown_845B500[gUnknown_3005E9C[3]], gUnknown_845B520[gUnknown_3005E9C[3]]);
+ }
+ else
+ {
+ HelpSystem_PrintTwoStrings(gUnknown_845B540[gUnknown_3005E9C[3]], gUnknown_845B5D0[gUnknown_3005E9C[3]]);
+ }
+ sub_813BDA4(1);
+ sub_813BD5C(1);
+ a0->field_0E = 6;
+ return TRUE;
+}
+
+bool8 sub_812BEEC(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ gUnknown_3005E9C[0] = 1;
+ sub_812B5A8(a0, a1);
+ sub_813C75C();
+ HelpSystem_SetInputDelay(2);
+ a0->field_0E = 3;
+ return TRUE;
+}
+
+bool8 sub_812BF18(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ if (JOY_NEW(B_BUTTON) || JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ a0->field_0E = 5;
+ return TRUE;
+ }
+ if (JOY_NEW(L_BUTTON | R_BUTTON))
+ return FALSE;
+ return TRUE;
+}
+
+static void sub_812BF5C(void)
+{
+ HelpSystem_FillPanel1();
+ HelpSystem_PrintTextAt(gUnknown_81B2FC9, 0, 0);
+}
+
+static void sub_812BF74(const u8 * str)
+{
+ HelpSystem_FillPanel2();
+ HelpSystem_PrintTextRightAlign_Row52(str);
+}
+
+u8 sub_812BF88(void)
+{
+ return gUnknown_3005E9C[0];
+}
+
+static void sub_812BF94(struct HelpSystemListMenu * a0)
+{
+ a0->field_0C = 0;
+ a0->field_0D = 0;
+}
+
+static void sub_812BF9C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
+{
+ s32 index = a1[a0->field_0C + a0->field_0D].index;
+ if (index == -2)
+ HelpSystem_PrintText_813C584(gUnknown_845B098[5]);
+ else
+ HelpSystem_PrintText_813C584(gUnknown_845B098[index]);
+ sub_813BE30(1);
+}
diff --git a/src/hof_pc.c b/src/hof_pc.c
new file mode 100644
index 000000000..241fbc4f3
--- /dev/null
+++ b/src/hof_pc.c
@@ -0,0 +1,53 @@
+#include "global.h"
+#include "hall_of_fame.h"
+#include "palette.h"
+#include "overworld.h"
+#include "script.h"
+#include "script_menu.h"
+#include "task.h"
+#include "hall_of_fame.h"
+#include "bg.h"
+#include "window.h"
+
+static void ReshowPCMenuAfterHallOfFamePC(void);
+static void Task_WaitForPaletteFade(u8 taskId);
+
+static void Task_WaitFadeAndSetCallback(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ ResetBgsAndClearDma3BusyFlags(0);
+ DestroyTask(taskId);
+ SetMainCallback2(sub_80F2978);
+ }
+}
+
+void HallOfFamePCBeginFade(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
+ ScriptContext2_Enable();
+ CreateTask(Task_WaitFadeAndSetCallback, 0);
+}
+
+void ReturnFromHallOfFamePC(void)
+{
+ SetMainCallback2(CB2_ReturnToField);
+ gFieldCallback = ReshowPCMenuAfterHallOfFamePC;
+}
+
+static void ReshowPCMenuAfterHallOfFamePC(void)
+{
+ ScriptContext2_Enable();
+ Overworld_PlaySpecialMapMusic();
+ ScrSpecial_CreatePCMenu();
+ ScriptMenu_DisplayPCStartupPrompt();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
+ CreateTask(Task_WaitForPaletteFade, 10);
+}
+
+static void Task_WaitForPaletteFade(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ DestroyTask(taskId);
+}
diff --git a/src/intro.c b/src/intro.c
new file mode 100644
index 000000000..bb7242f2f
--- /dev/null
+++ b/src/intro.c
@@ -0,0 +1,2175 @@
+#include "global.h"
+#include "m4a.h"
+#include "malloc.h"
+#include "bg.h"
+#include "palette.h"
+#include "main.h"
+#include "gpu_regs.h"
+#include "task.h"
+#include "scanline_effect.h"
+#include "libgcnmultiboot.h"
+#include "new_menu_helpers.h"
+#include "link.h"
+#include "menu.h"
+#include "save.h"
+#include "sound.h"
+#include "new_game.h"
+#include "title_screen.h"
+#include "decompress.h"
+#include "util.h"
+#include "trig.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+
+struct IntroSequenceData
+{
+ void (*field_0000)(struct IntroSequenceData *);
+ u8 field_0004;
+ u8 field_0005;
+ u8 field_0006;
+ u16 field_0008;
+ u16 field_000A;
+ u8 filler_000C[6];
+ u16 field_0012;
+ struct Sprite * field_0014;
+ struct Sprite * field_0018;
+ struct Sprite * field_001C;
+ struct Sprite * field_0020;
+ struct Sprite * field_0024;
+ struct Sprite * field_0028[4];
+ u8 filler_0038[0x4];
+ u8 field_003C[0x400];
+ u8 field_043C[0x400];
+ u8 filler_083C[0x2080];
+}; // size: 0x28BC
+
+static EWRAM_DATA struct GcmbStruct gUnknown_203AAD4 = {0};
+static EWRAM_DATA u16 gUnknown_203AB00 = 0;
+static EWRAM_DATA u16 gUnknown_203AB02 = 0;
+static EWRAM_DATA u16 gUnknown_203AB04 = 0;
+static EWRAM_DATA u16 gUnknown_203AB06 = 0;
+static EWRAM_DATA u16 gUnknown_203AB08 = 0;
+static EWRAM_DATA u16 gUnknown_203AB0A = 0;
+static EWRAM_DATA u16 gUnknown_203AB0C = 0;
+static EWRAM_DATA u16 gUnknown_203AB0E = 0;
+static EWRAM_DATA u16 gUnknown_203AB10 = 0;
+static EWRAM_DATA u16 gUnknown_203AB12 = 0;
+static EWRAM_DATA u16 gUnknown_203AB14 = 0;
+static EWRAM_DATA u16 gUnknown_203AB16 = 0;
+static EWRAM_DATA u16 gUnknown_203AB18 = 0;
+static EWRAM_DATA u16 gUnknown_203AB1A = 0;
+static EWRAM_DATA u16 gUnknown_203AB1C = 0;
+static EWRAM_DATA u16 gUnknown_203AB1E = 0;
+static EWRAM_DATA u16 gUnknown_203AB20 = 0;
+static EWRAM_DATA u16 gUnknown_203AB22 = 0;
+static EWRAM_DATA u16 gUnknown_203AB24 = 0;
+static EWRAM_DATA u16 gUnknown_203AB26 = 0;
+static EWRAM_DATA u32 gUnknown_203AB28 = 0;
+static EWRAM_DATA s16 gUnknown_203AB2C = 0;
+static EWRAM_DATA u16 gUnknown_203AB2E = 0;
+static EWRAM_DATA u32 gUnknown_203AB30 = 0;
+
+static void sub_80EC870(void);
+static void sub_80EC9D4(void);
+static void sub_80EC9EC(void);
+static void sub_80ECA00(void);
+static void sub_80ECA70(void);
+static void sub_80ECAB0(u8 taskId);
+static void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *));
+static void sub_80ECAF0(struct IntroSequenceData * ptr);
+static void sub_80ECB98(struct IntroSequenceData * ptr);
+static void sub_80ECC3C(struct IntroSequenceData * ptr);
+static void sub_80ECCA8(struct IntroSequenceData * ptr);
+static void sub_80ECD60(struct IntroSequenceData * ptr);
+static void sub_80ECEA4(struct IntroSequenceData * ptr);
+static void sub_80ED0AC(u8 taskId);
+static void sub_80ED118(void);
+static void sub_80ED140(u8 taskId);
+static void sub_80ED188(struct IntroSequenceData * ptr);
+static void sub_80ED40C(u8 taskId);
+static void sub_80ED428(u8 taskId);
+static void sub_80ED444(struct IntroSequenceData * ptr);
+static void sub_80ED4A0(struct IntroSequenceData * ptr);
+static void sub_80ED4C0(struct IntroSequenceData * ptr);
+static void sub_80ED6D8(void);
+static void sub_80ED714(u8 taskId);
+static void sub_80ED7D4(struct IntroSequenceData * ptr);
+static void sub_80ED818(struct Sprite * sprite);
+static void sub_80ED898(struct IntroSequenceData * ptr);
+static void sub_80EDAF0(struct IntroSequenceData * ptr);
+static void sub_80EDB70(struct IntroSequenceData * ptr);
+static void sub_80EDBAC(struct IntroSequenceData * ptr);
+static void sub_80EDBE8(struct IntroSequenceData * ptr);
+static void sub_80EDC40(void);
+static void sub_80EDDF0(void);
+static void sub_80EDE04(u8 taskId);
+static void sub_80EDED8(void);
+static void sub_80EDEEC(u8 taskId);
+static struct Sprite * sub_80EDF68(void);
+static void sub_80EDF94(struct IntroSequenceData * ptr);
+static void sub_80EE024(u8 taskId);
+static void sub_80EE160(void);
+static void sub_80EE1C4(struct Sprite * sprite);
+static void sub_80EE200(u8 taskId);
+static void sub_80EE29C(struct Sprite * sprite);
+static void sub_80EE350(struct Sprite * sprite);
+static void sub_80EE40C(struct Sprite * sprite);
+static void sub_80EE4DC(struct Sprite * sprite);
+static void sub_80EE4F8(struct IntroSequenceData * ptr);
+static void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3);
+static void sub_80EE580(struct Sprite * sprite);
+static bool32 sub_80EE5C8(struct IntroSequenceData * ptr);
+static void sub_80EE5E4(struct IntroSequenceData * ptr);
+static void sub_80EE610(struct Sprite * sprite);
+static void sub_80EE6A4(struct IntroSequenceData * ptr);
+static void sub_80EE704(struct Sprite * sprite);
+static bool8 sub_80EE850(struct IntroSequenceData * ptr);
+static void sub_80EE864(s16 a1, s16 a2, s16 a3);
+static void sub_80EE8E4(struct Sprite * sprite);
+static void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3);
+static void sub_80EE9D4(struct Sprite * sprite);
+static void sub_80EEA94(struct IntroSequenceData * ptr);
+static void sub_80EEB08(struct Sprite * sprite);
+static void sub_80EEBE4(void);
+
+extern const u32 gMultiBootProgram_PokemonColosseum_Start[];
+
+static const u16 gUnknown_8402260[] = INCBIN_U16("graphics/intro/unk_8402260.gbapal");
+static const u8 gUnknown_8402280[] = INCBIN_U8("graphics/intro/unk_8402280.4bpp.lz");
+static const u8 gUnknown_84024E4[] = INCBIN_U8("graphics/intro/unk_84024E4.bin.lz");
+static const u16 gUnknown_8402630[] = INCBIN_U16("graphics/intro/unk_8402630.gbapal");
+static const u8 gUnknown_8402650[] = INCBIN_U8("graphics/intro/unk_8402650.4bpp.lz");
+static const u8 gUnknown_8402668[] = INCBIN_U8("graphics/intro/unk_8402668.bin.lz");
+static const u16 gUnknown_840270C[] = INCBIN_U16("graphics/intro/unk_840270C.gbapal");
+static const u8 gUnknown_840272C[] = INCBIN_U8("graphics/intro/unk_840272C.4bpp.lz");
+static const u32 gUnknown_84028F8[] = INCBIN_U32("graphics/intro/unk_84028F8.bin.lz");
+static const u16 gUnknown_8402A44[] = INCBIN_U16("graphics/intro/unk_8402A64.gbapal");
+static const u32 gUnknown_8402A64[] = INCBIN_U32("graphics/intro/unk_8402A64.4bpp.lz");
+static const u16 gUnknown_8402ABC[] = INCBIN_U16("graphics/intro/unk_8402ADC.gbapal");
+static const u32 gUnknown_8402ADC[] = INCBIN_U32("graphics/intro/unk_8402ADC.4bpp.lz");
+static const u32 gUnknown_8402B2C[] = INCBIN_U32("graphics/intro/unk_8402B2C.4bpp.lz");
+static const u32 gUnknown_8402CD4[] = INCBIN_U32("graphics/intro/unk_8402CD4.4bpp.lz");
+static const u16 gUnknown_8402D34[] = INCBIN_U16("graphics/intro/unk_8402D34.gbapal");
+static const u8 gUnknown_8402D54[] = INCBIN_U8("graphics/intro/unk_8402D54.4bpp.lz");
+static const u8 gUnknown_8403FE8[] = INCBIN_U8("graphics/intro/unk_8403FE8.bin.lz");
+static const u16 gUnknown_84048CC[] = INCBIN_U16("graphics/intro/unk_84048CC.gbapal");
+static const u8 gUnknown_84048EC[] = INCBIN_U8("graphics/intro/unk_84048EC.4bpp.lz");
+static const u8 gUnknown_8404F7C[] = INCBIN_U8("graphics/intro/unk_8404F7C.bin.lz");
+static const u16 gUnknown_84053B4[] = INCBIN_U16("graphics/intro/unk_84053B4.gbapal");
+static const u8 gUnknown_8405414[] = INCBIN_U8("graphics/intro/unk_8405414.4bpp.lz");
+static const u8 gUnknown_8405890[] = INCBIN_U8("graphics/intro/unk_8405890.bin.lz");
+static const u16 gUnknown_8405B08[] = INCBIN_U16("graphics/intro/unk_8405B08.gbapal");
+static const u8 gUnknown_8405B28[] = INCBIN_U8("graphics/intro/unk_8405B28.4bpp.lz");
+static const u8 gUnknown_8405CDC[] = INCBIN_U8("graphics/intro/unk_8405CDC.bin.lz");
+static const u16 gUnknown_8405DA4[] = INCBIN_U16("graphics/intro/unk_8405DA4.gbapal");
+static const u8 gUnknown_8405DC4[] = INCBIN_U8("graphics/intro/unk_8405DC4.4bpp.lz");
+static const u8 gUnknown_840644C[] = INCBIN_U8("graphics/intro/unk_840644C.bin.lz");
+static const u16 gUnknown_8406634[] = INCBIN_U16("graphics/intro/unk_8406634.gbapal");
+static const u8 gUnknown_8406654[] = INCBIN_U8("graphics/intro/unk_8406654.4bpp.lz");
+static const u8 gUnknown_84071D0[] = INCBIN_U8("graphics/intro/unk_84071D0.bin.lz");
+static const u16 gUnknown_8407430[] = INCBIN_U16("graphics/intro/unk_8407430.gbapal");
+static const u8 gUnknown_8407470[] = INCBIN_U8("graphics/intro/unk_8407470.4bpp.lz");
+static const u8 gUnknown_8407A50[] = INCBIN_U8("graphics/intro/unk_8407A50.bin.lz");
+static const u8 gUnknown_8407B9C[] = INCBIN_U8("graphics/intro/unk_8407B9C.4bpp.lz");
+static const u8 gUnknown_8408D98[] = INCBIN_U8("graphics/intro/unk_8408D98.bin.lz");
+static const u32 gUnknown_840926C[] = INCBIN_U32("graphics/intro/unk_840926C.4bpp.lz");
+static const u16 gUnknown_84096AC[] = INCBIN_U16("graphics/intro/unk_84096AC.gbapal");
+static const u32 gUnknown_84096CC[] = INCBIN_U32("graphics/intro/unk_84096CC.4bpp.lz");
+static const u16 gUnknown_8409A1C[] = INCBIN_U16("graphics/intro/unk_8409A1C.gbapal");
+static const u32 gUnknown_8409A3C[] = INCBIN_U32("graphics/intro/unk_8409A3C.4bpp.lz");
+static const u32 gUnknown_8409D20[] = INCBIN_U32("graphics/intro/unk_8409D20.4bpp.lz");
+static const u32 gUnknown_840A3E4[] = INCBIN_U32("graphics/intro/unk_840A3E4.4bpp.lz");
+static const u16 gUnknown_840B834[] = INCBIN_U16("graphics/intro/unk_840B834.gbapal");
+static const u16 gUnknown_840B854[] = INCBIN_U16("graphics/intro/unk_840B854.gbapal");
+static const u32 gUnknown_840B874[] = INCBIN_U32("graphics/intro/unk_840B874.4bpp.lz");
+static const u32 gUnknown_840BAE0[] = INCBIN_U32("graphics/intro/unk_840BAE0.4bpp.lz");
+
+static const struct BgTemplate gUnknown_840BB80[] = {
+ { 3, 3, 31, 0, 0, 3, 0x000 },
+ { 2, 3, 30, 0, 0, 2, 0x010 }
+};
+
+static const struct BgTemplate gUnknown_840BB88[] = {
+ { 0, 0, 28, 2, 0, 0, 0x000 },
+ { 1, 1, 30, 2, 0, 0, 0x000 }
+};
+
+static const struct BgTemplate gUnknown_840BB90[] = {
+ { 3, 1, 30, 2, 0, 3, 0x000 },
+ { 0, 0, 29, 0, 0, 0, 0x000 },
+ { 2, 3, 27, 0, 0, 2, 0x000 },
+ { 1, 2, 28, 0, 0, 1, 0x000 }
+};
+
+static const struct BgTemplate gUnknown_840BBA0[] = {
+ { 1, 0, 29, 0, 0, 1, 0x000 },
+ { 0, 1, 30, 2, 0, 0, 0x000 }
+};
+
+static const struct WindowTemplate gUnknown_840BBA8[] = {
+ { 2, 6, 4, 18, 9, 0xD, 0x000 },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const u8 gUnknown_840BBB8[][2] = {
+ {0x3f, 0x3f},
+ {0x00, 0x3f},
+ {0x3f, 0x00},
+ {0x00, 0x00}
+};
+
+static const struct CompressedSpriteSheet gUnknown_840BBC0[] = {
+ {gUnknown_8402A64, 0x0080, 0},
+ {gUnknown_8402ADC, 0x0080, 1},
+ {gUnknown_8402B2C, 0x0800, 2},
+ {gUnknown_84028F8, 0x0400, 3},
+ {gUnknown_8402CD4, 0x0100, 4}
+};
+
+static const struct SpritePalette gUnknown_840BBE8[] = {
+ {gUnknown_8402A44, 0},
+ {gUnknown_8402ABC, 1},
+ {gUnknown_840270C, 3},
+ {0}
+};
+
+static const struct Coords16 gUnknown_840BC08[] = {
+ {0x0048, 0x0050},
+ {0x0088, 0x004a},
+ {0x00a8, 0x0050},
+ {0x0078, 0x0050},
+ {0x0068, 0x0056},
+ {0x0058, 0x004a},
+ {0x00b8, 0x004a},
+ {0x0038, 0x0056},
+ {0x0098, 0x0056}
+};
+
+static const struct OamData gOamData_840BC2C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 2, .paletteNum = 0 };
+
+static const struct OamData gOamData_840BC34 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_0, .tileNum = 0x000, .priority = 2, .paletteNum = 0 };
+
+static const union AnimCmd gAnimCmd_840BC3C[] = {
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gAnimCmd_840BC50[] = {
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gAnimCmdTable_840BC64[] = {
+ gAnimCmd_840BC3C,
+ gAnimCmd_840BC50
+};
+
+static const struct SpriteTemplate gUnknown_840BC6C = {0, 0, &gOamData_840BC2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80EE29C};
+
+static const struct SpriteTemplate gUnknown_840BC84 = {1, 1, &gOamData_840BC34, gAnimCmdTable_840BC64, NULL, gDummySpriteAffineAnimTable, sub_80EE350};
+
+static const struct OamData gOamData_840BC9C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_2, .tileNum = 0x000, .priority = 2, .paletteNum = 0 };
+
+static const union AnimCmd gAnimCmd_840BCA4[] = {
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(48, 8),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gAnimCmdTable_840BCB8[] = {
+ gAnimCmd_840BCA4
+};
+
+static const struct SpriteTemplate gUnknown_840BCBC = {2, 1, &gOamData_840BC9C, gAnimCmdTable_840BCB8, NULL, gDummySpriteAffineAnimTable, sub_80EE4DC};
+
+static const struct OamData gOamData_840BCD4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 3, .paletteNum = 0 };
+
+static const struct SpriteTemplate gUnknown_840BCDC = {3, 3, &gOamData_840BCD4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
+
+static const struct OamData gOamData_840BCF4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 3, .paletteNum = 0 };
+
+static const struct SpriteTemplate gUnknown_840BCFC = {4, 3, &gOamData_840BCF4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
+
+static const struct OamData gOamData_840BD14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 };
+
+static const union AnimCmd gAnimCmd_840BD1C[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_840BD24[] = {
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_840BD2C[] = {
+ ANIMCMD_FRAME(128, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_840BD34[] = {
+ ANIMCMD_FRAME(192, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_840BD3C[] = {
+ ANIMCMD_FRAME(256, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gAnimCmdTable_840BD44[] = {
+ gAnimCmd_840BD1C,
+ gAnimCmd_840BD24,
+ gAnimCmd_840BD2C,
+ gAnimCmd_840BD34,
+ gAnimCmd_840BD3C
+};
+
+static const union AffineAnimCmd gAffineAnimCmd_840BD58[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd gAffineAnimCmd_840BD68[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(32, 32, 0, 8),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const gAffineAnimCmdTable_840BD80[] = {
+ gAffineAnimCmd_840BD58,
+ gAffineAnimCmd_840BD68
+};
+
+static const struct SpriteTemplate gUnknown_840BD88 = {5, 7, &gOamData_840BD14, gAnimCmdTable_840BD44, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy};
+
+static const struct OamData gOamData_840BDA0 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 };
+
+static const struct SpriteTemplate gUnknown_840BDA8 = {7, 7, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
+
+static const struct SpriteTemplate gUnknown_840BDC0 = {6, 6, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
+
+static const struct OamData gOamData_840BDD8 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 0, .paletteNum = 0 };
+
+static const union AnimCmd gAnimCmds_840BDE0[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmds_840BDE8[] = {
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gAnimCmdTable_840BDF4[] = {
+ gAnimCmds_840BDE0,
+ gAnimCmds_840BDE8
+};
+
+static const struct SpriteTemplate gUnknown_840BDFC = {8, 8, &gOamData_840BDD8, gAnimCmdTable_840BDF4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
+
+static const struct OamData gOamData_840BE14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 };
+
+static const union AnimCmd gAnimCmd_840BE1C[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_840BE24[] = {
+ ANIMCMD_FRAME(64, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_840BE2C[] = {
+ ANIMCMD_FRAME(96, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_840BE34[] = {
+ ANIMCMD_FRAME(160, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gAnimCmdTable_840BE3C[] = {
+ gAnimCmd_840BE1C,
+ gAnimCmd_840BE24,
+ gAnimCmd_840BE2C,
+ gAnimCmd_840BE34
+};
+
+static const struct SpriteTemplate gUnknown_840BE4C = {9, 6, &gOamData_840BE14, gAnimCmdTable_840BE3C, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy};
+
+static const struct OamData gOamData_840BE64 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 };
+
+static const union AnimCmd gAnimCmd_840BE6C[] = {
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_840BE78[] = {
+ ANIMCMD_FRAME(64, 8),
+ ANIMCMD_FRAME(72, 4),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gAnimCmdTable_840BE84[] = {
+ gAnimCmd_840BE6C,
+ gAnimCmd_840BE78
+};
+
+static const struct SpriteTemplate gUnknown_840BE8C = {10, 10, &gOamData_840BE64, gAnimCmdTable_840BE84, NULL, gDummySpriteAffineAnimTable, sub_80EE1C4};
+
+static const struct OamData gOamData_840BEA4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 1, .paletteNum = 0 };
+
+static const union AnimCmd gAnimCmd_840BEAC[] = {
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_FRAME(4, 10),
+ ANIMCMD_FRAME(8, 10),
+ ANIMCMD_FRAME(12, 8),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gAnimCmdTable_840BEC0[] = {
+ gAnimCmd_840BEAC
+};
+
+static const struct SpriteTemplate gUnknown_840BEC4 = {11, 11, &gOamData_840BEA4, gAnimCmdTable_840BEC0, NULL, gDummySpriteAffineAnimTable, sub_80EE8E4};
+
+static const struct CompressedSpriteSheet gUnknown_840BEDC[] = {
+ {gUnknown_840926C, 0x0800, 6},
+ {gUnknown_84096CC, 0x0800, 7},
+ {gUnknown_840A3E4, 0x2800, 5},
+ {gUnknown_8409A3C, 0x0800, 8},
+ {gUnknown_8409D20, 0x1800, 9},
+ {gUnknown_840B874, 0x0a00, 10},
+ {gUnknown_840BAE0, 0x0200, 11}
+};
+
+// POTENTIAL UB
+// This array is passed to LoadSpritePalettes in sub_80EEBE4.
+// LoadSpritePalettes uses a {0} entry to signal end of array.
+// Because such an entry is absent in this case, the function
+// continues reading into the next .rodata section.
+static const struct SpritePalette gUnknown_840BF14[] = {
+ {gUnknown_8405DA4, 6},
+ {gUnknown_84096AC, 7},
+ {gUnknown_8409A1C, 8},
+ {gUnknown_840B834, 10},
+ {gUnknown_840B854, 11},
+ // {0}
+};
+
+static void sub_80EC5A4(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void sub_80EC5B8(void)
+{
+ if (!UpdatePaletteFade())
+ SetMainCallback2(sub_80EC870);
+}
+
+static void load_copyright_graphics(u16 a, u16 b, u16 c)
+{
+ LZ77UnCompVram(gUnknown_8402280, (void *)BG_VRAM + a);
+ LZ77UnCompVram(gUnknown_84024E4, (void *)BG_VRAM + b);
+ LoadPalette(gUnknown_8402260, c, 0x20);
+}
+
+static void SerialCb_CopyrightScreen(void)
+{
+ GameCubeMultiBoot_HandleSerialInterrupt(&gUnknown_203AAD4);
+}
+
+static bool8 sub_80EC62C(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ ((vu16*)PLTT)[0] = RGB_WHITE;
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ DmaFill16(3, 0, VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, OAM, OAM_SIZE);
+ DmaFill16(3, 0, PLTT + sizeof(vu16), PLTT_SIZE - sizeof(vu16));
+ ResetPaletteFade();
+ load_copyright_graphics(0, 0x3800, 0);
+ ScanlineEffect_Stop();
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0xFFFF);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0x700);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ SetVBlankCallback(sub_80EC5A4);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON);
+ SetSerialCallback(SerialCb_CopyrightScreen);
+ GameCubeMultiBoot_Init(&gUnknown_203AAD4);
+ // fallthrough
+ default:
+ UpdatePaletteFade();
+ gMain.state++;
+ GameCubeMultiBoot_Main(&gUnknown_203AAD4);
+ break;
+ case 140:
+ GameCubeMultiBoot_Main(&gUnknown_203AAD4);
+ if (gUnknown_203AAD4.gcmb_field_2 != 1)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gMain.state++;
+ }
+ break;
+ case 141:
+ if (!UpdatePaletteFade())
+ {
+ gMain.state++;
+ if (gUnknown_203AAD4.gcmb_field_2 != 0)
+ {
+ if (gUnknown_203AAD4.gcmb_field_2 == 2)
+ {
+ if (*((u32 *)0x020000AC) == 0x65366347)
+ {
+ CpuCopy16(gMultiBootProgram_PokemonColosseum_Start, (void *)EWRAM_START, 0x28000);
+ *((u32 *)0x020000AC) = 0x65366347;
+ }
+ GameCubeMultiBoot_ExecuteProgram(&gUnknown_203AAD4);
+ }
+ }
+ else
+ {
+ GameCubeMultiBoot_Quit();
+ SetSerialCallback(SerialCB);
+ }
+ return FALSE;
+ }
+ break;
+ case 142:
+ sub_800B388();
+ SetMainCallback2(sub_80EC5B8);
+ break;
+ }
+ return TRUE;
+}
+
+void c2_copyright_1(void)
+{
+ if (!sub_80EC62C())
+ {
+ ResetMenuAndMonGlobals();
+ Save_ResetSaveCounters();
+ Save_LoadGameData(0);
+ if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_INVALID)
+ Sav2_ClearSetDefault();
+ SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
+ }
+}
+
+void sub_80EC864(void)
+{
+ sub_80EC62C();
+}
+
+static void sub_80EC870(void)
+{
+ switch (gMain.state)
+ {
+ default:
+ gMain.state = 0;
+ // fallthrough
+ case 0:
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ InitHeap(gHeap, HEAP_SIZE);
+ ResetTasks();
+ ResetSpriteData();
+ ResetPaletteFade();
+ ResetTempTileDataBuffers();
+ sub_80ECA00();
+ DmaFill16(3, 0, VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, OAM, OAM_SIZE);
+ DmaFill16(3, 0, PLTT, PLTT_SIZE);
+ FillPalette(0, 0, 0x400);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_840BB80, NELEMS(gUnknown_840BB80));
+ break;
+ case 1:
+ LoadPalette(gUnknown_8402630, 0x00, 0x20);
+ DecompressAndCopyTileDataToVram(3, gUnknown_8402650, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(3, gUnknown_8402668, 0, 0, 1);
+ LoadPalette(gUnknown_840270C, 0xD0, 0x20);
+ break;
+ case 2:
+ if (!FreeTempTileDataBuffersIfPossible())
+ {
+ sub_80ECA70();
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ SetMainCallback2(sub_80EC9D4);
+ SetVBlankCallback(sub_80EC9EC);
+ }
+ return;
+ }
+ gMain.state++;
+}
+
+static void sub_80EC9D4(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_80EC9EC(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void sub_80ECA00(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+}
+
+static void sub_80ECA70(void)
+{
+ struct IntroSequenceData * ptr = Alloc(sizeof(struct IntroSequenceData));
+ sub_80ECAA8(ptr, sub_80ECAF0);
+ ptr->field_0005 = CreateTask(sub_80ECAB0, 3);
+ SetWordTaskArg(ptr->field_0005, 0, (uintptr_t)ptr);
+}
+
+static void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *))
+{
+ ptr->field_0000 = cb;
+ ptr->field_0004 = 0;
+}
+
+static void sub_80ECAB0(u8 taskId)
+{
+ struct IntroSequenceData * ptr = (void *)GetWordTaskArg(taskId, 0);
+ if (JOY_NEW(A_BUTTON | START_BUTTON | SELECT_BUTTON) && ptr->field_0000 != sub_80EDBE8)
+ sub_80ECAA8(ptr, sub_80EDBE8);
+ ptr->field_0000(ptr);
+}
+
+static void sub_80ECAF0(struct IntroSequenceData * this)
+{
+ switch (this->field_0004)
+ {
+ case 0:
+ InitWindows(gUnknown_840BBA8);
+ LZ77UnCompWram(gUnknown_840272C, this->field_043C);
+ LZ77UnCompWram(gUnknown_84028F8, this->field_003C);
+ FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11);
+ FillWindowPixelBuffer(0, 0x00);
+ BlitBitmapToWindow(0, this->field_043C, 0, 40, 144, 16);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+ this->field_0004++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ sub_80ECAA8(this, sub_80ECB98);
+ break;
+ }
+}
+
+static void sub_80ECB98(struct IntroSequenceData * this)
+{
+ switch (this->field_0004)
+ {
+ case 0:
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON);
+ SetGpuReg(REG_OFFSET_WININ, 0x3F00);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x0000);
+ SetGpuReg(REG_OFFSET_WIN1H, 0x00F0);
+ SetGpuReg(REG_OFFSET_WIN1V, 0x0000);
+ this->field_0012 = 0;
+ this->field_0004++;
+ break;
+ case 1:
+ ShowBg(3);
+ BlendPalettes(0xFFFFFFFF, 0x00, RGB_BLACK);
+ this->field_0004++;
+ break;
+ case 2:
+ this->field_0012 += 8;
+ if (this->field_0012 >= 0x30)
+ this->field_0012 = 0x30;
+ SetGpuReg(REG_OFFSET_WIN1V, ((0x50 - this->field_0012) << 8) | (0x50 + this->field_0012));
+ if (this->field_0012 == 0x30)
+ sub_80ECAA8(this, sub_80ECC3C);
+ break;
+ }
+}
+
+static void sub_80ECC3C(struct IntroSequenceData * this)
+{
+ switch (this->field_0004)
+ {
+ case 0:
+ PlaySE(BGM_FRLG_GAMEFREAK_LOGO);
+ sub_80EDC40();
+ this->field_0012 = 0;
+ this->field_0004++;
+ break;
+ case 1:
+ this->field_0012++;
+ if (this->field_0012 == 30)
+ {
+ sub_80EDDF0();
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 2:
+ this->field_0012++;
+ if (this->field_0012 == 90)
+ sub_80ECAA8(this, sub_80ECCA8);
+ break;
+ }
+}
+
+static void sub_80ECCA8(struct IntroSequenceData * this)
+{
+ switch (this->field_0004)
+ {
+ case 0:
+ sub_80EDED8();
+ this->field_0012 = 0;
+ this->field_0004++;
+ break;
+ case 1:
+ this->field_0012++;
+ if (this->field_0012 >= 40)
+ this->field_0004++;
+ break;
+ case 2:
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
+ StartBlendTask(0, 16, 16, 0, 48, 0);
+ this->field_0004++;
+ break;
+ case 3:
+ ShowBg(2);
+ this->field_0004++;
+ break;
+ case 4:
+ if (!IsBlendTaskActive())
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 5:
+ this->field_0012++;
+ if (this->field_0012 > 50)
+ sub_80ECAA8(this, sub_80ECD60);
+ break;
+ }
+}
+
+static void sub_80ECD60(struct IntroSequenceData * this)
+{
+ switch (this->field_0004)
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
+ StartBlendTask(0, 16, 16, 0, 16, 0);
+ this->field_0008 = 0;
+ this->field_000A = 16;
+ this->field_0012 = 0;
+ this->field_0004++;
+ break;
+ case 1:
+ this->field_0014 = sub_80EDF68();
+ this->field_0004++;
+ break;
+ case 2:
+ if (!IsBlendTaskActive())
+ {
+ BlitBitmapToWindow(0, this->field_003C, 0x38, 0x06, 0x20, 0x40);
+ BlitBitmapToWindow(0, this->field_043C, 0x00, 0x28, 0x90, 0x10);
+ CopyWindowToVram(0, 2);
+ this->field_0004++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ DestroySprite(this->field_0014);
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 4:
+ this->field_0012++;
+ if (this->field_0012 > 90)
+ {
+ SetGpuRegBits(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2);
+ StartBlendTask(16, 0, 0, 16, 20, 0);
+ this->field_0004++;
+ }
+ break;
+ case 5:
+ if (!IsBlendTaskActive())
+ {
+ HideBg(2);
+ this->field_0004++;
+ }
+ break;
+ case 6:
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ this->field_0012 = 0;
+ this->field_0004++;
+ break;
+ case 7:
+ this->field_0012++;
+ if (this->field_0012 > 20)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ sub_80ECAA8(this, sub_80ECEA4);
+ }
+ break;
+ }
+}
+
+static void sub_80ECEA4(struct IntroSequenceData * this)
+{
+ switch (this->field_0004)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ LoadPalette(gUnknown_8402D34, 0x10, 0x20);
+ LoadPalette(gUnknown_84048CC, 0x20, 0x20);
+ BlendPalettes(0x06, 0x10, RGB_WHITE);
+ InitBgsFromTemplates(0, gUnknown_840BB88, NELEMS(gUnknown_840BB88));
+ DecompressAndCopyTileDataToVram(1, gUnknown_84048EC, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, gUnknown_8404F7C, 0, 0, 1);
+ ShowBg(1);
+ HideBg(0);
+ HideBg(2);
+ HideBg(3);
+ sub_80EEBE4();
+ SetVBlankCallback(sub_80EC9EC);
+ this->field_0004++;
+ break;
+ case 1:
+ if (!FreeTempTileDataBuffersIfPossible())
+ {
+ DecompressAndCopyTileDataToVram(0, gUnknown_8402D54, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(0, gUnknown_8403FE8, 0, 0, 1);
+ ResetBgPositions();
+ ShowBg(1);
+ this->field_0004++;
+ }
+ break;
+ case 2:
+ if (!FreeTempTileDataBuffersIfPossible())
+ {
+ ShowBg(0);
+ CreateTask(sub_80ED0AC, 0);
+ BeginNormalPaletteFade(0x00000006, -2, 16, 0, RGB_WHITE);
+ this->field_0004++;
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ m4aSongNumStart(BGM_FRLG_OPENING);
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 4:
+ this->field_0012++;
+ if (this->field_0012 == 20)
+ {
+ CreateTask(sub_80ED140, 0);
+ sub_80ED118();
+ }
+ if (this->field_0012 >= 30)
+ {
+ BlendPalettes(-2, 16, RGB_WHITE);
+ DestroyTask(FindTaskIdByFunc(sub_80ED0AC));
+ DestroyTask(FindTaskIdByFunc(sub_80ED140));
+ sub_80ECAA8(this, sub_80ED188);
+ }
+ break;
+ case 5:
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(FindTaskIdByFunc(sub_80ED0AC));
+ DestroyTask(FindTaskIdByFunc(sub_80ED140));
+ sub_80ECAA8(this, sub_80ED188);
+ }
+ break;
+ }
+}
+
+static void sub_80ED0AC(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ data[0]++;
+ if (data[0] > 5)
+ {
+ data[0] = 0;
+ data[1]++;
+ if (data[1] > 2)
+ data[1] = 0;
+ ChangeBgY(0, data[1] << 15, 0);
+ }
+ if (data[2])
+ {
+ data[3] += 0x120;
+ ChangeBgY(0, data[3], 2);
+ }
+}
+
+static void sub_80ED118(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_80ED0AC);
+ gTasks[taskId].data[2] = TRUE;
+}
+
+static void sub_80ED140(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ data[0]++;
+ if (data[0] > 3)
+ {
+ data[0] = 0;
+ if (data[1] < 2)
+ data[1]++;
+ ChangeBgY(1, data[1] << 15, 0);
+ }
+}
+
+static void sub_80ED188(struct IntroSequenceData * this)
+{
+ switch (this->field_0004)
+ {
+ case 0:
+ BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE);
+ InitBgsFromTemplates(0, gUnknown_840BB90, NELEMS(gUnknown_840BB90));
+ DecompressAndCopyTileDataToVram(3, gUnknown_8405414, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(3, gUnknown_8405890, 0, 0, 1);
+ ShowBg(3);
+ this->field_0004++;
+ break;
+ case 1:
+ if (!FreeTempTileDataBuffersIfPossible())
+ {
+ SetVBlankCallback(NULL);
+ LoadPalette(gUnknown_84053B4, 0x10, 0x60);
+ LoadPalette(gUnknown_8405DA4, 0x50, 0x20);
+ LoadPalette(gUnknown_8406634, 0x60, 0x20);
+ BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE);
+ DecompressAndCopyTileDataToVram(0, gUnknown_8405B28, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(0, gUnknown_8405CDC, 0, 0, 1);
+ DecompressAndCopyTileDataToVram(1, gUnknown_8406654, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, gUnknown_84071D0, 0, 0, 1);
+ DecompressAndCopyTileDataToVram(2, gUnknown_8405DC4, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(2, gUnknown_840644C, 0, 0, 1);
+ ResetBgPositions();
+ ShowBg(0);
+ HideBg(1);
+ HideBg(2);
+ ChangeBgY(2, 0x0001CE00, 0);
+ ChangeBgY(1, 0x00002800, 0);
+ CreateTask(sub_80ED40C, 0);
+ sub_80ED444(this);
+ BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE);
+ SetVBlankCallback(sub_80EC9EC);
+ this->field_0004++;
+ }
+ break;
+ case 2:
+ if (!FreeTempTileDataBuffersIfPossible())
+ {
+ BeginNormalPaletteFade(0xFFFFFFFE, -2, 16, 0, RGB_WHITE);
+ this->field_0004++;
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 4:
+ this->field_0012++;
+ if (this->field_0012 >= 60)
+ {
+ this->field_0012 = 0;
+ DestroyTask(FindTaskIdByFunc(sub_80ED40C));
+ sub_80ED4A0(this);
+ CreateTask(sub_80ED428, 0);
+ ChangeBgY(3, 0x00010000, 0);
+ HideBg(0);
+ ShowBg(3);
+ ShowBg(1);
+ ShowBg(2);
+ this->field_0004++;
+ }
+ break;
+ case 5:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 6:
+ this->field_0012++;
+ if (this->field_0012 >= 60)
+ {
+ DestroyTask(FindTaskIdByFunc(sub_80ED428));
+ sub_80ECAA8(this, sub_80ED4C0);
+ }
+ break;
+ }
+}
+
+static void sub_80ED40C(u8 taskId)
+{
+ ChangeBgX(3, 0x0E0, 2);
+ ChangeBgX(0, 0x110, 1);
+}
+
+static void sub_80ED428(u8 taskId)
+{
+ ChangeBgY(2, 0x020, 1);
+ ChangeBgY(1, 0x024, 2);
+}
+
+static void sub_80ED444(struct IntroSequenceData * this)
+{
+ u8 spriteId;
+
+ this->field_001C = NULL;
+ this->field_0020 = NULL;
+
+ spriteId = CreateSprite(&gUnknown_840BDA8, 168, 80, 11);
+ if (spriteId != MAX_SPRITES)
+ this->field_0020 = &gSprites[spriteId];
+
+ spriteId = CreateSprite(&gUnknown_840BDC0, 72, 80, 12);
+ if (spriteId != MAX_SPRITES)
+ this->field_001C = &gSprites[spriteId];
+}
+
+static void sub_80ED4A0(struct IntroSequenceData * this)
+{
+ if (this->field_001C != NULL)
+ DestroySprite(this->field_001C);
+ if (this->field_0020 != NULL)
+ DestroySprite(this->field_0020);
+}
+
+static void sub_80ED4C0(struct IntroSequenceData * this)
+{
+ switch (this->field_0004)
+ {
+ case 0:
+ LoadPalette(gUnknown_8407430, 0x10, 0x40);
+ LoadPalette(gUnknown_8405DA4, 0x50, 0x20);
+ BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE);
+ InitBgsFromTemplates(0, gUnknown_840BBA0, NELEMS(gUnknown_840BBA0));
+ DecompressAndCopyTileDataToVram(1, gUnknown_8407470, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, gUnknown_8407A50, 0, 0, 1);
+ ShowBg(1);
+ HideBg(0);
+ HideBg(2);
+ HideBg(3);
+ ResetBgPositions();
+ this->field_0004++;
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuRegBits(REG_OFFSET_WININ, 0x12);
+ ClearGpuRegBits(REG_OFFSET_WININ, 0x01);
+ SetGpuRegBits(REG_OFFSET_WINOUT, 0x00);
+ SetGpuReg(REG_OFFSET_WIN0V, 0x2080);
+ SetGpuReg(REG_OFFSET_WIN0H, 0x0078);
+ break;
+ case 1:
+ if (!FreeTempTileDataBuffersIfPossible())
+ {
+ DecompressAndCopyTileDataToVram(0, gUnknown_8407B9C, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(0, gUnknown_8408D98, 0, 0, 1);
+ gUnknown_203AB00 = 4;
+ gUnknown_203AB02 = 52;
+ ChangeBgX(0, 0x00001800, 0);
+ ChangeBgY(0, 0x0001F000, 0);
+ this->field_0004++;
+ }
+ break;
+ case 2:
+ if (!FreeTempTileDataBuffersIfPossible())
+ {
+ BlendPalettes(0xFFFFFFFE, 0, RGB_WHITE);
+ ShowBg(0);
+ CreateTask(sub_80ED714, 0);
+ sub_80EE4F8(this);
+ sub_80EE528(this->field_0018, 0, 0xB4, 0x34);
+ CreateTask(sub_80EE200, 0);
+ sub_80ED6D8();
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 3:
+ this->field_0012++;
+ if (this->field_0012 == 16)
+ sub_80ED7D4(this);
+ if (!sub_80EE5C8(this) && !FuncIsActiveTask(sub_80EE200))
+ sub_80ECAA8(this, sub_80ED898);
+ break;
+ }
+}
+
+static void sub_80ED69C(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ ChangeBgX(1, 0x400, 2);
+ else
+ ChangeBgX(1, 0x020, 2);
+}
+
+static void sub_80ED6D8(void)
+{
+ CreateTask(sub_80ED69C, 0);
+}
+
+static void sub_80ED6EC(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_80ED69C);
+ gTasks[taskId].data[0] = 1;
+}
+
+static void sub_80ED714(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ if (data[0] == 0)
+ {
+ data[1]++;
+ if (data[1] >= 30)
+ {
+ data[1] = 0;
+ data[2] ^= 1;
+ ChangeBgY(0, (data[2] << 15) + 0x1F000, 0);
+ }
+ }
+}
+
+static void sub_80ED760(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_80ED714);
+ gTasks[taskId].data[0] = 1;
+}
+
+static void sub_80ED788(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_80ED714);
+ gTasks[taskId].data[0] = 0;
+}
+
+static u8 sub_80ED7B0(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_80ED714);
+ return gTasks[taskId].data[2];
+}
+
+static void sub_80ED7D4(struct IntroSequenceData * this)
+{
+ u8 spriteId = CreateSprite(&gUnknown_840BDFC, 296, 112, 7);
+ if (spriteId != MAX_SPRITES)
+ {
+ this->field_0024 = &gSprites[spriteId];
+ this->field_0024->callback = sub_80ED818;
+ }
+ else
+ this->field_0024 = NULL;
+}
+
+static void sub_80ED818(struct Sprite * sprite)
+{
+ s16 * data = sprite->data;
+
+ switch (data[0])
+ {
+ case 0:
+ data[1] = sprite->pos1.x << 5;
+ data[2] = 160;
+ data[0]++;
+ // fallthrough
+ case 1:
+ data[1] -= data[2];
+ sprite->pos1.x = data[1] >> 5;
+ if (sprite->pos1.x <= 52)
+ {
+ sub_80ED6EC();
+ data[0]++;
+ }
+ break;
+ case 2:
+ data[1] -= 32;
+ sprite->pos1.x = data[1] >> 5;
+ if (sprite->pos1.x <= -32)
+ {
+ sprite->invisible = TRUE;
+ sprite->data[0]++;
+ DestroySprite(sprite);
+ }
+ break;
+ }
+}
+
+static void sub_80ED898(struct IntroSequenceData * this)
+{
+ switch (this->field_0004)
+ {
+ case 0:
+ this->field_0012 = 0;
+ this->field_0004++;
+ break;
+ case 1:
+ this->field_0012++;
+ if (this->field_0012 > 30)
+ {
+ sub_80EE5E4(this);
+ this->field_0004++;
+ }
+ break;
+ case 2:
+ if (!sub_80EE850(this))
+ {
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 3:
+ this->field_0012++;
+ if (this->field_0012 > 30)
+ {
+ sub_80ED760();
+ sub_80EDF94(this);
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 4:
+ if (this->field_0006)
+ {
+ sub_80EE6A4(this);
+ this->field_0004++;
+ }
+ break;
+ case 5:
+ if (!sub_80EE850(this))
+ {
+ sub_80ED788();
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 6:
+ this->field_0012++;
+ if (this->field_0012 > 16)
+ {
+ sub_80EE970(this->field_0018, 8, 12, 5);
+ this->field_0004++;
+ }
+ break;
+ case 7:
+ if (!sub_80EE850(this))
+ {
+ sub_80EE970(this->field_0018, 8, 12, 5);
+ this->field_0004++;
+ }
+ break;
+ case 8:
+ if (!sub_80EE850(this))
+ {
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 9:
+ this->field_0012++;
+ if (this->field_0012 > 20)
+ {
+ sub_80EEA94(this);
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 10:
+ if (!sub_80ED7B0())
+ {
+ sub_80ED760();
+ sub_80EDAF0(this);
+ this->field_0004++;
+ }
+ break;
+ case 11:
+ HideBg(0);
+ this->field_0012 = 0;
+ this->field_0004++;
+ break;
+ case 12:
+ this->field_0012++;
+ if (this->field_0012 == 48)
+ BeginNormalPaletteFade(0x00000006, 2, 0, 16, RGB_WHITE);
+ if (this->field_0012 > 120)
+ {
+ sub_80EDB70(this);
+ sub_80EDBAC(this);
+ this->field_0004++;
+ this->field_0012 = 0;
+ }
+ break;
+ case 13:
+ this->field_0012++;
+ if (this->field_0012 > 8)
+ {
+ CpuFill16(RGB_WHITE, gPlttBufferUnfaded + 16, 64);
+ BeginNormalPaletteFade(0xFFFFFFFE, -2, 0, 16, RGB_BLACK);
+ this->field_0004++;
+ }
+ break;
+ case 14:
+ if (!gPaletteFade.active)
+ {
+ this->field_0012 = 0;
+ this->field_0004++;
+ }
+ break;
+ case 15:
+ this->field_0012++;
+ if (this->field_0012 > 60)
+ sub_80ECAA8(this, sub_80EDBE8);
+ break;
+ default:
+ if (JOY_NEW(R_BUTTON))
+ {
+ BlendPalettes(0xFFFF0064, 0, RGB_WHITE);
+ this->field_0018->pos2.x = 0;
+ this->field_0018->pos1.x = 0xB4;
+ this->field_0004 = 1;
+ this->field_0012 = 30;
+ }
+ break;
+ }
+}
+
+static void sub_80EDAD8(struct Sprite * sprite)
+{
+ CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
+}
+
+static void sub_80EDAF0(struct IntroSequenceData * this)
+{
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ int x = (i & 1) * 48 + 49;
+ int y = (i / 2) * 64 + 72;
+ u8 spriteId = CreateSprite(&gUnknown_840BE4C, x, y, 8);
+ if (spriteId != MAX_SPRITES)
+ {
+ StartSpriteAnim(&gSprites[spriteId], i);
+ this->field_0028[i] = &gSprites[spriteId];
+ if (i & 1)
+ this->field_0028[i]->oam.shape = ST_OAM_V_RECTANGLE;
+ sub_80EDAD8(this->field_0028[i]);
+ }
+ }
+}
+
+static void sub_80EDB70(struct IntroSequenceData * this)
+{
+ this->field_0018->pos1.x += this->field_0018->pos2.x;
+ this->field_0018->pos1.y += this->field_0018->pos2.y;
+ sub_8007FFC(this->field_0018, 0, 0x2A);
+ this->field_0018->callback = SpriteCallbackDummy;
+ StartSpriteAffineAnim(this->field_0018, 1);
+}
+
+static void nullsub_83(struct Sprite * sprite)
+{
+}
+
+static void sub_80EDBAC(struct IntroSequenceData * this)
+{
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ StartSpriteAffineAnim(this->field_0028[i], 1);
+ this->field_0028[i]->callback = nullsub_83;
+ sub_8007FFC(this->field_0028[i], gUnknown_840BBB8[i][0], gUnknown_840BBB8[i][1]);
+ }
+}
+
+static void sub_80EDBE8(struct IntroSequenceData * this)
+{
+ switch (this->field_0004)
+ {
+ case 0:
+ FillPalette(RGB_BLACK, 0, 0x400);
+ this->field_0004++;
+ break;
+ case 1:
+ if (!FreeTempTileDataBuffersIfPossible())
+ {
+ DestroyTask(this->field_0005);
+ Free(this);
+ DisableInterrupts(INTR_FLAG_HBLANK);
+ SetHBlankCallback(NULL);
+ SetMainCallback2(CB2_InitTitleScreen);
+ }
+ break;
+ }
+}
+
+static void sub_80EDC40(void)
+{
+ int i;
+ u8 spriteId;
+
+ for (i = 0; i < NELEMS(gUnknown_840BBC0); i++)
+ {
+ LoadCompressedSpriteSheet(&gUnknown_840BBC0[i]);
+ }
+ LoadSpritePalettes(gUnknown_840BBE8);
+ gUnknown_203AB0E = 0x60;
+ gUnknown_203AB10 = 0x10;
+ gUnknown_203AB12 = 0x07;
+ gUnknown_203AB14 = 0x05;
+ gUnknown_203AB16 = 0x08;
+ gUnknown_203AB18 = 0x5A;
+ gUnknown_203AB1A = 0x78;
+ gUnknown_203AB1E = 0x01;
+ gUnknown_203AB20 = 0x01;
+ gUnknown_203AB22 = 0x05;
+ gUnknown_203AB24 = 0x05;
+ if (gUnknown_203AB28 == 0)
+ gUnknown_203AB28 = 354128453;
+ spriteId = CreateSprite(&gUnknown_840BC6C, 0xF8, 0x37, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = 0xF80;
+ gSprites[spriteId].data[1] = 0x370;
+ gSprites[spriteId].data[2] = gUnknown_203AB0E;
+ gSprites[spriteId].data[3] = gUnknown_203AB10;
+ StoreWordInTwoHalfwords(&gSprites[spriteId].data[6], gUnknown_203AB28);
+ }
+}
+
+static void sub_80EDD28(s16 x, s16 y, u16 a2)
+{
+ u8 spriteId;
+ s16 r4 = (a2 & gUnknown_203AB12) + 2;
+ s16 r2 = gUnknown_203AB2C;
+ gUnknown_203AB2C++;
+ if (gUnknown_203AB2C > 3)
+ gUnknown_203AB2C = -3;
+ x += r4;
+ y += r2;
+ if (x >= 1 && x <= 0xEF)
+ {
+ spriteId = CreateSprite(&gUnknown_840BC84, x, y, 1);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = x << gUnknown_203AB22;
+ gSprites[spriteId].data[1] = y << gUnknown_203AB24;
+ gSprites[spriteId].data[2] = gUnknown_203AB1E * r4;
+ gSprites[spriteId].data[3] = gUnknown_203AB20 * r2;
+ }
+ }
+}
+
+static void sub_80EDDF0(void)
+{
+ CreateTask(sub_80EDE04, 1);
+}
+
+static void sub_80EDE04(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 r6;
+ u8 spriteId;
+
+ data[2]++, data[3]++;
+ if (data[2] > 6)
+ {
+ data[2] = 0;
+ r6 = data[0];
+ spriteId = CreateSprite(&gUnknown_840BC84, gUnknown_840BC08[r6].x, gUnknown_840BC08[r6].y, 2);
+ StartSpriteAnim(&gSprites[spriteId], 1);
+ gSprites[spriteId].callback = sub_80EE40C;
+ gSprites[spriteId].data[1] = gUnknown_840BC08[r6].y << 4;
+ gSprites[spriteId].data[2] = 120;
+ gSprites[spriteId].data[3] = data[1];
+ if (gSprites[spriteId].data[3] < 0)
+ gSprites[spriteId].data[3] = 1;
+ data[0]++;
+ if (data[0] < 0 || data[0] > 8)
+ {
+ data[1]++;
+ if (data[1] > 1)
+ DestroyTask(taskId);
+ else
+ data[0] = 0;
+ }
+ }
+}
+
+static void sub_80EDED8(void)
+{
+ CreateTask(sub_80EDEEC, 2);
+}
+
+static void sub_80EDEEC(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 r2;
+
+ if (data[0] == 0)
+ {
+ r2 = data[1];
+ data[1] += 4;
+ if (data[1] < 0 || data[1] > 8)
+ data[1] -= 9;
+ CreateSprite(&gUnknown_840BCBC, gUnknown_840BC08[r2].x, gUnknown_840BC08[r2].y, 3);
+ data[2]++;
+ if (data[2] > 8)
+ DestroyTask(taskId);
+ }
+ data[0]++;
+ if (data[0] > 9)
+ data[0] = 0;
+}
+
+static struct Sprite * sub_80EDF68(void)
+{
+ u8 spriteId = CreateSprite(&gUnknown_840BCDC, 120, 70, 4);
+ return &gSprites[spriteId];
+}
+
+static void sub_80EDF94(struct IntroSequenceData * this)
+{
+ u8 taskId;
+ this->field_0006 = 0;
+ taskId = CreateTask(sub_80EE024, 4);
+ SetWordTaskArg(taskId, 5, (uintptr_t)this);
+ gTasks[taskId].data[3] = 64;
+ gTasks[taskId].data[4] = GetBgX(0);
+}
+
+static void sub_80EDFD8(int a, int b, int c, int d)
+{
+ ChangeBgY(0, (a << 15) + 0x1F000, 0);
+ ChangeBgX(0, d, 0);
+ ChangeBgX(0, b << 8, 2);
+ ChangeBgY(0, c << 8, 2);
+}
+
+static void sub_80EE024(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ int b, c;
+ int angle;
+ switch (data[0])
+ {
+ case 0:
+ data[7] = 2;
+ data[1] = 0;
+ data[8] = 6;
+ data[9] = 32;
+ data[0]++;
+ break;
+ case 1:
+ data[3] -= 2;
+ data[1]++;
+ if (data[1] > 15)
+ {
+ data[1] = 0;
+ data[0]++;
+ }
+ break;
+ case 2:
+ data[1]++;
+ if (data[1] == 14)
+ ((struct IntroSequenceData *)GetWordTaskArg(taskId, 5))->field_0006 = 1;
+ if (data[1] > 15)
+ {
+ data[1] = 0;
+ data[0]++;
+ }
+ break;
+ case 3:
+ data[3] += 8;
+ data[1]++;
+ if (data[1] == 4)
+ {
+ sub_80EE160();
+ data[8] = 32;
+ data[9] = 48;
+ data[7] = 3;
+ }
+ if (data[1] > 7)
+ {
+ data[1] = 0;
+ data[0]++;
+ }
+ break;
+ case 4:
+ data[3] -= 8;
+ data[1]++;
+ if (data[1] > 3)
+ {
+ data[7] = 0;
+ data[3] = 64;
+ data[1] = 0;
+ data[0]++;
+ }
+ break;
+ case 5:
+ DestroyTask(taskId);
+ return;
+ }
+ angle = data[3];
+ b = -((gSineTable[angle + 0x40] * data[9]) >> 8);
+ c = data[8] - ((gSineTable[angle] * data[8]) >> 8);
+ sub_80EDFD8(data[7], b, c, data[4]);
+}
+
+static void sub_80EE160(void)
+{
+ u8 spriteId;
+
+ spriteId = CreateSprite(&gUnknown_840BE8C, 132, 78, 6);
+ spriteId = CreateSprite(&gUnknown_840BE8C, 132, 118, 6);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.shape = ST_OAM_H_RECTANGLE;
+ gSprites[spriteId].oam.size = ST_OAM_SIZE_2;
+ sub_80EDAD8(&gSprites[spriteId]);
+ StartSpriteAnim(&gSprites[spriteId], 1);
+ }
+}
+
+static void sub_80EE1C4(struct Sprite * sprite)
+{
+ sprite->invisible ^= TRUE;
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
+
+static void sub_80EE200(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ data[1] = 0x400;
+ data[0]++;
+ // fallthrough
+ case 1:
+ data[2]++;
+ if (data[2] > 39 && data[1] > 16)
+ data[1] -= 16;
+ gUnknown_203AB30 = ChangeBgX(0, data[1], 1);
+ if (gUnknown_203AB30 >= 0x8000)
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ if (gUnknown_203AB30 >= 0xEF00)
+ {
+ ChangeBgX(0, 0xEF00, 0);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_80EE29C(struct Sprite * sprite)
+{
+ u32 v;
+ sprite->data[0] -= sprite->data[2];
+ sprite->data[1] += sprite->data[3];
+ sprite->data[4] += 48;
+ sprite->pos1.x = sprite->data[0] >> 4;
+ sprite->pos1.y = sprite->data[1] >> 4;
+ sprite->pos2.y = gSineTable[(sprite->data[4] >> 4) + 0x40] >> 5;
+ sprite->data[5]++;
+ if (sprite->data[5] % gUnknown_203AB16)
+ {
+ LoadWordFromTwoHalfwords(&sprite->data[6], &v);
+ v = v * 1103515245 + 24691;
+ StoreWordInTwoHalfwords(&sprite->data[6], v);
+ v >>= 16;
+ sub_80EDD28(sprite->pos1.x, sprite->pos1.y + sprite->pos2.y, v);
+ }
+ if (sprite->pos1.x < -8)
+ DestroySprite(sprite);
+}
+
+static void sub_80EE350(struct Sprite * sprite)
+{
+ u32 v;
+
+ sprite->data[0] += sprite->data[2];
+ sprite->data[1] += sprite->data[3];
+ sprite->data[4]++;
+ sprite->data[5] += sprite->data[4];
+ sprite->data[7]++;
+ sprite->pos1.x = (u16)sprite->data[0] >> gUnknown_203AB22;
+ sprite->pos1.y = sprite->data[1] >> gUnknown_203AB24;
+ if (gUnknown_203AB1C && sprite->data[3] < 0)
+ sprite->pos2.y = sprite->data[5] >> gUnknown_203AB1C;
+ if (sprite->data[7] > gUnknown_203AB18)
+ {
+ sprite->invisible = !sprite->invisible;
+ if (sprite->data[7] > gUnknown_203AB1A)
+ DestroySprite(sprite);
+ }
+ if (sprite->pos1.y + sprite->pos2.y < 0 || sprite->pos1.y + sprite->pos2.y > 160)
+ DestroySprite(sprite);
+}
+
+static void sub_80EE40C(struct Sprite * sprite)
+{
+ if (sprite->data[2])
+ {
+ sprite->data[2]--;
+ sprite->data[1]++;
+ sprite->pos1.y = sprite->data[1] >> 4;
+ if (sprite->pos1.y > 0x56)
+ {
+ sprite->pos1.y = 0x4A;
+ sprite->data[1] = 0x4A0;
+ }
+ if (sprite->animEnded)
+ {
+ if (sprite->data[0] == 0)
+ {
+ sprite->pos1.x += 26;
+ if (sprite->pos1.x > 188)
+ {
+ sprite->pos1.x = 376 - sprite->pos1.x;
+ sprite->data[0] = 1;
+ }
+ }
+ else
+ {
+ sprite->pos1.x -= 26;
+ if (sprite->pos1.x < 52)
+ {
+ sprite->pos1.x = 104 - sprite->pos1.x;
+ sprite->data[0] = 0;
+ }
+ }
+ StartSpriteAnim(sprite, 1);
+ }
+ }
+ else
+ {
+ if (sprite->data[3])
+ DestroySprite(sprite);
+ if (sprite->animEnded)
+ StartSpriteAnim(sprite, 0);
+ sprite->data[1] += 4;
+ sprite->pos1.y = sprite->data[1] >> 4;
+ sprite->data[4]++;
+ if (sprite->data[4] > 50)
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_80EE4DC(struct Sprite * sprite)
+{
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
+
+static void sub_80EE4F8(struct IntroSequenceData * this)
+{
+ u8 spriteId = CreateSprite(&gUnknown_840BD88, 0, 0, 9);
+ this->field_0018 = &gSprites[spriteId];
+}
+
+static void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3)
+{
+ sprite->data[0] = a1 << 4;
+ sprite->data[1] = ((a2 - a1) << 4) / a3;
+ sprite->data[2] = a3;
+ sprite->data[3] = a2;
+ sprite->data[4] = 0;
+ sprite->pos1.x = a1;
+ sprite->pos1.y = 100;
+ sprite->callback = sub_80EE580;
+}
+
+static void sub_80EE580(struct Sprite * sprite)
+{
+ sprite->data[4]++;
+ if (sprite->data[4] >= 40)
+ {
+ if (sprite->data[1] > 1)
+ sprite->data[1]--;
+ }
+ sprite->data[0] += sprite->data[1];
+ sprite->pos1.x = sprite->data[0] >> 4;
+ if (sprite->pos1.x >= sprite->data[3])
+ {
+ sprite->pos1.x = sprite->data[3];
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static bool32 sub_80EE5C8(struct IntroSequenceData * ptr)
+{
+ return ptr->field_0018->callback == sub_80EE580 ? TRUE : FALSE;
+}
+
+static void sub_80EE5E4(struct IntroSequenceData * ptr)
+{
+ StartSpriteAnim(ptr->field_0018, 2);
+ ptr->field_0018->data[0] = 0;
+ ptr->field_0018->data[1] = 0;
+ ptr->field_0018->pos2.y = 3;
+ ptr->field_0018->callback = sub_80EE610;
+}
+
+static void sub_80EE610(struct Sprite * sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1]++;
+ if (sprite->data[1] > 8)
+ {
+ StartSpriteAnim(sprite, 1);
+ sprite->pos2.y = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ PlayCry3(SPECIES_NIDORINO, 0x3F, 1);
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ break;
+ case 2:
+ sprite->data[2]++;
+ if (sprite->data[2] > 1)
+ {
+ sprite->data[2] = 0;
+ sprite->pos2.y = sprite->pos2.y == 0 ? 1 : 0;
+ }
+ sprite->data[1]++;
+ if (sprite->data[1] > 48)
+ {
+ StartSpriteAnim(sprite, 0);
+ sprite->pos2.y = 0;
+ sprite->callback = SpriteCallbackDummy;
+ }
+ break;
+ }
+}
+
+static void sub_80EE6A4(struct IntroSequenceData * ptr)
+{
+ gUnknown_203AB0A = 16;
+ gUnknown_203AB04 = 3;
+ gUnknown_203AB08 = 5;
+ gUnknown_203AB06 = 0;
+ StartSpriteAnim(ptr->field_0018, 2);
+ ptr->field_0018->data[0] = 0;
+ ptr->field_0018->data[1] = 0;
+ ptr->field_0018->data[2] = 0;
+ ptr->field_0018->data[3] = 0;
+ ptr->field_0018->data[4] = 0;
+ ptr->field_0018->data[7] = 40;
+ ptr->field_0018->callback = sub_80EE704;
+}
+
+static void sub_80EE704(struct Sprite * sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1]++;
+ if (sprite->data[1] > 4)
+ {
+ StartSpriteAnim(sprite, 3);
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ sprite->data[2] += sprite->data[7];
+ sprite->data[3] += 8;
+ sprite->pos2.x = sprite->data[2] >> 4;
+ sprite->pos2.y = -((gSineTable[sprite->data[3]] * gUnknown_203AB04) >> gUnknown_203AB08);
+ sprite->data[5]++;
+ if (sprite->data[5] > gUnknown_203AB06)
+ {
+ sprite->data[5] = 0;
+ sprite->data[7]--;
+ }
+ sprite->data[4]++;
+ if (sprite->data[4] > 15)
+ {
+ StartSpriteAnim(sprite, 2);
+ sprite->data[1] = 0;
+ sprite->data[6] = 0x4757;
+ sprite->data[7] = 28;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->data[2] += sprite->data[7];
+ sprite->pos2.x = sprite->data[2] >> 4;
+ sprite->data[1]++;
+ if (sprite->data[1] > 6)
+ {
+ sub_80EE864(sprite->pos1.x + sprite->pos2.x, sprite->pos1.y + sprite->pos2.y, sprite->data[6]);
+ sprite->data[6] *= 1103515245;
+ }
+ if (sprite->data[1] > 12)
+ {
+ StartSpriteAnim(sprite, 0);
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ sprite->data[1]++;
+ if (sprite->data[1] > 16)
+ {
+ sub_80EE970(sprite, gUnknown_203AB0A, -sprite->pos2.x, 4);
+ }
+ break;
+ }
+}
+
+static bool8 sub_80EE850(struct IntroSequenceData * ptr)
+{
+ return ptr->field_0018->callback == SpriteCallbackDummy ? FALSE : TRUE;
+}
+
+static void sub_80EE864(s16 a1, s16 a2, s16 a3)
+{
+ int i;
+ u8 spriteId;
+
+ for (i = 0; i < 2; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_840BEC4, a1 - 22, a2 + 24, 10);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[3] = (a3 % 13) + 8;
+ gSprites[spriteId].data[4] = a3 % 3;
+ gSprites[spriteId].data[7] = i;
+ a3 *= 1103515245;
+ }
+ }
+}
+
+static void sub_80EE8E4(struct Sprite * sprite)
+{
+ s16 * data = sprite->data;
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ data[1] = sprite->pos1.x << 4;
+ data[2] = sprite->pos1.y << 4;
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ data[1] -= data[3];
+ data[2] += data[4];
+ sprite->pos1.x = data[1] >> 4;
+ sprite->pos1.y = data[2] >> 4;
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+ break;
+ }
+ data[7]++;
+ if (data[7] > 1)
+ {
+ data[7] = 0;
+ sprite->invisible ^= TRUE;
+ }
+}
+
+static void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3)
+{
+ sprite->data[0] = 0;
+ sprite->data[1] = a1;
+ sprite->data[2] = sprite->pos2.x << 4;
+ sprite->data[3] = (a2 << 4) / a1;
+ sprite->data[4] = 0;
+ sprite->data[5] = 0x800 / a1;
+ sprite->data[6] = 0;
+ sprite->data[7] = a3;
+ StartSpriteAnim(sprite, 2);
+ sprite->callback = sub_80EE9D4;
+}
+
+static void sub_80EE9D4(struct Sprite * sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[6]++;
+ if (sprite->data[6] > 4)
+ {
+ StartSpriteAnim(sprite, 3);
+ sprite->data[6] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ sprite->data[1]--;
+ if (sprite->data[1])
+ {
+ sprite->data[2] += sprite->data[3];
+ sprite->data[4] += sprite->data[5];
+ sprite->pos2.x = sprite->data[2] >> 4;
+ sprite->pos2.y = -(gSineTable[sprite->data[4] >> 4] >> sprite->data[7]);
+ }
+ else
+ {
+ sprite->pos2.x = (u16)sprite->data[2] >> 4;
+ sprite->pos2.y = 0;
+ StartSpriteAnim(sprite, 2);
+ if (sprite->data[7] == 5)
+ sprite->callback = SpriteCallbackDummy;
+ else
+ {
+ sprite->data[6] = 0;
+ sprite->data[0]++;
+ }
+ }
+ break;
+ case 2:
+ sprite->data[6]++;
+ if (sprite->data[6] > 4)
+ {
+ StartSpriteAnim(sprite, 0);
+ sprite->callback = SpriteCallbackDummy;
+ }
+ break;
+ }
+}
+
+static void sub_80EEA94(struct IntroSequenceData * ptr)
+{
+ ptr->field_0018->data[0] = 0;
+ ptr->field_0018->data[1] = 0;
+ ptr->field_0018->data[2] = 0;
+ ptr->field_0018->data[3] = 0;
+ ptr->field_0018->data[4] = 0;
+ ptr->field_0018->data[5] = 0;
+ ptr->field_0018->pos1.x += ptr->field_0018->pos2.x;
+ ptr->field_0018->pos2.x = 0;
+ gUnknown_203AB0C = 0x24;
+ gUnknown_203AB06 = 0x28;
+ gUnknown_203AB04 = 0x03;
+ gUnknown_203AB08 = 0x04;
+ ptr->field_0018->data[7] = 36;
+ StartSpriteAnim(ptr->field_0018, 2);
+ ptr->field_0018->callback = sub_80EEB08;
+}
+
+static void sub_80EEB08(struct Sprite * sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1]++;
+ if (sprite->data[1] & 1)
+ {
+ sprite->data[2]++;
+ if (sprite->data[2] & 1)
+ sprite->pos2.x++;
+ else
+ sprite->pos2.x--;
+ }
+ if (sprite->data[1] > 17)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] >= gUnknown_203AB06)
+ {
+ StartSpriteAnim(sprite, 4);
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->data[1] += sprite->data[7];
+ sprite->pos2.x = -(sprite->data[1] >> 4);
+ sprite->pos2.y = -((gSineTable[sprite->data[1] >> 4] * gUnknown_203AB04) >> gUnknown_203AB08);
+ sprite->data[2]++;
+ if (sprite->data[7] > 12)
+ sprite->data[7]--;
+ if ((sprite->data[1] >> 4) > 0x3F)
+ sprite->callback = SpriteCallbackDummy;
+ break;
+ }
+}
+
+static void sub_80EEBE4(void)
+{
+ int i;
+
+ for (i = 0; i < NELEMS(gUnknown_840BEDC); i++)
+ {
+ LoadCompressedSpriteSheet(&gUnknown_840BEDC[i]);
+ }
+ // gUnknown_840BF14 is not properly terminated, so this
+ // call exhibits undefined behavior.
+ LoadSpritePalettes(gUnknown_840BF14);
+}
diff --git a/src/item.c b/src/item.c
new file mode 100644
index 000000000..3f33f464d
--- /dev/null
+++ b/src/item.c
@@ -0,0 +1,684 @@
+#include "global.h"
+#include "berry.h"
+#include "event_data.h"
+#include "item.h"
+#include "item_use.h"
+#include "load_save.h"
+#include "malloc.h"
+#include "quest_log.h"
+#include "string_util.h"
+#include "strings.h"
+#include "constants/hold_effects.h"
+#include "constants/items.h"
+#include "constants/maps.h"
+
+void SortAndCompactBagPocket(struct BagPocket * pocket);
+
+// Item descriptions and data
+#include "data/items.h"
+
+u16 GetBagItemQuantity(u16 * ptr)
+{
+ return gSaveBlock2Ptr->encryptionKey ^ *ptr;
+}
+
+void SetBagItemQuantity(u16 * ptr, u16 value)
+{
+ *ptr = value ^ gSaveBlock2Ptr->encryptionKey;
+}
+
+u16 GetPcItemQuantity(u16 * ptr)
+{
+ return 0 ^ *ptr;
+}
+
+void SetPcItemQuantity(u16 * ptr, u16 value)
+{
+ *ptr = value ^ 0;
+}
+
+void ApplyNewEncryptionKeyToBagItems(u32 key)
+{
+ u32 i, j;
+
+ for (i = 0; i < NUM_BAG_POCKETS; i++)
+ {
+ for (j = 0; j < gBagPockets[i].capacity; j++)
+ {
+ ApplyNewEncryptionKeyToHword(&gBagPockets[i].itemSlots[j].quantity, key);
+ }
+ }
+}
+
+void ApplyNewEncryptionKeyToBagItems_(u32 key)
+{
+ ApplyNewEncryptionKeyToBagItems(key);
+}
+
+void SetBagPocketsPointers(void)
+{
+ gBagPockets[POCKET_ITEMS - 1].itemSlots = gSaveBlock1Ptr->bagPocket_Items;
+ gBagPockets[POCKET_ITEMS - 1].capacity = BAG_ITEMS_COUNT;
+ gBagPockets[POCKET_KEY_ITEMS - 1].itemSlots = gSaveBlock1Ptr->bagPocket_KeyItems;
+ gBagPockets[POCKET_KEY_ITEMS - 1].capacity = BAG_KEYITEMS_COUNT;
+ gBagPockets[POCKET_POKE_BALLS - 1].itemSlots = gSaveBlock1Ptr->bagPocket_PokeBalls;
+ gBagPockets[POCKET_POKE_BALLS - 1].capacity = BAG_POKEBALLS_COUNT;
+ gBagPockets[POCKET_TM_CASE - 1].itemSlots = gSaveBlock1Ptr->bagPocket_TMHM;
+ gBagPockets[POCKET_TM_CASE - 1].capacity = BAG_TMHM_COUNT;
+ gBagPockets[POCKET_BERRY_POUCH - 1].itemSlots = gSaveBlock1Ptr->bagPocket_Berries;
+ gBagPockets[POCKET_BERRY_POUCH - 1].capacity = BAG_BERRIES_COUNT;
+}
+
+void CopyItemName(u16 itemId, u8 * dest)
+{
+ if (itemId == ITEM_ENIGMA_BERRY)
+ {
+ StringCopy(dest, sub_809C8A0(43)->name);
+ StringAppend(dest, gUnknown_84162BD);
+ }
+ else
+ {
+ StringCopy(dest, ItemId_GetName(itemId));
+ }
+}
+
+s8 BagPocketGetFirstEmptySlot(u8 pocketId)
+{
+ u16 i;
+
+ for (i = 0; i < gBagPockets[pocketId].capacity; i++)
+ {
+ if (gBagPockets[pocketId].itemSlots[i].itemId == ITEM_NONE)
+ return i;
+ }
+
+ return -1;
+}
+
+bool8 IsPocketNotEmpty(u8 pocketId)
+{
+ u8 i;
+
+ for (i = 0; i < gBagPockets[pocketId - 1].capacity; i++)
+ {
+ if (gBagPockets[pocketId - 1].itemSlots[i].itemId != ITEM_NONE)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 CheckBagHasItem(u16 itemId, u16 count)
+{
+ u8 i;
+ u8 pocket;
+
+ if (ItemId_GetPocket(itemId) == 0)
+ return FALSE;
+
+ pocket = ItemId_GetPocket(itemId) - 1;
+ // Check for item slots that contain the item
+ for (i = 0; i < gBagPockets[pocket].capacity; i++)
+ {
+ if (gBagPockets[pocket].itemSlots[i].itemId == itemId)
+ {
+ u16 quantity;
+ // Does this item slot contain enough of the item?
+ quantity = GetBagItemQuantity(&gBagPockets[pocket].itemSlots[i].quantity);
+ if (quantity >= count)
+ return TRUE;
+ // RS and Emerald check whether there is enough of the
+ // item across all stacks.
+ // For whatever reason, FR/LG assume there's only one
+ // stack of the item.
+ else
+ return FALSE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 CheckHasAtLeastOneBerry(void)
+{
+ u8 itemId;
+ bool8 exists;
+
+ exists = CheckBagHasItem(ITEM_BERRY_POUCH, 1);
+ if (!exists)
+ {
+ gSpecialVar_Result = FALSE;
+ return FALSE;
+ }
+ for (itemId = FIRST_BERRY_INDEX; itemId <= LAST_BERRY_INDEX; itemId++)
+ {
+ exists = CheckBagHasItem(itemId, 1);
+ if (exists)
+ {
+ gSpecialVar_Result = TRUE;
+ return TRUE;
+ }
+ }
+
+ gSpecialVar_Result = FALSE;
+ return FALSE;
+}
+
+bool8 CheckBagHasSpace(u16 itemId, u16 count)
+{
+ u8 i;
+ u8 pocket;
+
+ if (ItemId_GetPocket(itemId) == 0)
+ return FALSE;
+
+ pocket = ItemId_GetPocket(itemId) - 1;
+ // Check for item slots that contain the item
+ for (i = 0; i < gBagPockets[pocket].capacity; i++)
+ {
+ if (gBagPockets[pocket].itemSlots[i].itemId == itemId)
+ {
+ u16 quantity;
+ // Does this stack have room for more??
+ quantity = GetBagItemQuantity(&gBagPockets[pocket].itemSlots[i].quantity);
+ if (quantity + count <= 999)
+ return TRUE;
+ // RS and Emerald check whether there is enough of the
+ // item across all stacks.
+ // For whatever reason, FR/LG assume there's only one
+ // stack of the item.
+ else
+ return FALSE;
+ }
+ }
+
+ if (BagPocketGetFirstEmptySlot(pocket) != -1)
+ return TRUE;
+
+ return FALSE;
+}
+
+bool8 AddBagItem(u16 itemId, u16 count)
+{
+ u8 i;
+ u8 pocket;
+ s8 idx;
+
+ if (ItemId_GetPocket(itemId) == 0)
+ return FALSE;
+
+ pocket = ItemId_GetPocket(itemId) - 1;
+ for (i = 0; i < gBagPockets[pocket].capacity; i++)
+ {
+ if (gBagPockets[pocket].itemSlots[i].itemId == itemId)
+ {
+ u16 quantity;
+ // Does this stack have room for more??
+ quantity = GetBagItemQuantity(&gBagPockets[pocket].itemSlots[i].quantity);
+ if (quantity + count <= 999)
+ {
+ quantity += count;
+ SetBagItemQuantity(&gBagPockets[pocket].itemSlots[i].quantity, quantity);
+ return TRUE;
+ }
+ // RS and Emerald check whether there is enough of the
+ // item across all stacks.
+ // For whatever reason, FR/LG assume there's only one
+ // stack of the item.
+ else
+ return FALSE;
+ }
+ }
+
+ if (pocket == POCKET_TM_CASE - 1 && !CheckBagHasItem(ITEM_TM_CASE, 1))
+ {
+ idx = BagPocketGetFirstEmptySlot(POCKET_KEY_ITEMS - 1);
+ if (idx == -1)
+ return FALSE;
+ gBagPockets[POCKET_KEY_ITEMS - 1].itemSlots[idx].itemId = ITEM_TM_CASE;
+ SetBagItemQuantity(&gBagPockets[POCKET_KEY_ITEMS - 1].itemSlots[idx].quantity, 1);
+ }
+
+ if (pocket == POCKET_BERRY_POUCH - 1 && !CheckBagHasItem(ITEM_BERRY_POUCH, 1))
+ {
+ idx = BagPocketGetFirstEmptySlot(POCKET_KEY_ITEMS - 1);
+ if (idx == -1)
+ return FALSE;
+ gBagPockets[POCKET_KEY_ITEMS - 1].itemSlots[idx].itemId = ITEM_BERRY_POUCH;
+ SetBagItemQuantity(&gBagPockets[POCKET_KEY_ITEMS - 1].itemSlots[idx].quantity, 1);
+ FlagSet(FLAG_0x847);
+ }
+
+ if (itemId == ITEM_BERRY_POUCH)
+ FlagSet(FLAG_0x847);
+
+ idx = BagPocketGetFirstEmptySlot(pocket);
+ if (idx == -1)
+ return FALSE;
+
+ gBagPockets[pocket].itemSlots[idx].itemId = itemId;
+ SetBagItemQuantity(&gBagPockets[pocket].itemSlots[idx].quantity, count);
+ return TRUE;
+}
+
+bool8 RemoveBagItem(u16 itemId, u16 count)
+{
+ u8 i;
+ u8 pocket;
+
+ if (ItemId_GetPocket(itemId) == 0)
+ return FALSE;
+
+ if (itemId == ITEM_NONE)
+ return FALSE;
+
+ pocket = ItemId_GetPocket(itemId) - 1;
+ // Check for item slots that contain the item
+ for (i = 0; i < gBagPockets[pocket].capacity; i++)
+ {
+ if (gBagPockets[pocket].itemSlots[i].itemId == itemId)
+ {
+ u16 quantity;
+ // Does this item slot contain enough of the item?
+ quantity = GetBagItemQuantity(&gBagPockets[pocket].itemSlots[i].quantity);
+ if (quantity >= count)
+ {
+ quantity -= count;
+ SetBagItemQuantity(&gBagPockets[pocket].itemSlots[i].quantity, quantity);
+ if (quantity == 0)
+ gBagPockets[pocket].itemSlots[i].itemId = ITEM_NONE;
+ return TRUE;
+ }
+ // RS and Emerald check whether there is enough of the
+ // item across all stacks.
+ // For whatever reason, FR/LG assume there's only one
+ // stack of the item.
+ else
+ return FALSE;
+ }
+ }
+ return FALSE;
+}
+
+u8 GetPocketByItemId(u16 itemId)
+{
+ return ItemId_GetPocket(itemId); // wow such important
+}
+
+void ClearItemSlots(struct ItemSlot * slots, u8 capacity)
+{
+ u16 i;
+
+ for (i = 0; i < capacity; i++)
+ {
+ slots[i].itemId = ITEM_NONE;
+ SetBagItemQuantity(&slots[i].quantity, 0);
+ }
+}
+
+void ClearPCItemSlots(void)
+{
+ u16 i;
+
+ for (i = 0; i < PC_ITEMS_COUNT; i++)
+ {
+ gSaveBlock1Ptr->pcItems[i].itemId = ITEM_NONE;
+ SetPcItemQuantity(&gSaveBlock1Ptr->pcItems[i].quantity, 0);
+ }
+}
+
+void ClearItemSlotsInAllBagPockets(void)
+{
+ u16 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ ClearItemSlots(gBagPockets[i].itemSlots, gBagPockets[i].capacity);
+ }
+}
+
+s8 PCItemsGetFirstEmptySlot(void)
+{
+ s8 i;
+
+ for (i = 0; i < PC_ITEMS_COUNT; i++)
+ {
+ if (gSaveBlock1Ptr->pcItems[i].itemId == ITEM_NONE)
+ return i;
+ }
+
+ return -1;
+}
+
+u8 CountItemsInPC(void)
+{
+ u8 count = 0;
+ u8 i;
+
+ for (i = 0; i < PC_ITEMS_COUNT; i++)
+ {
+ if (gSaveBlock1Ptr->pcItems[i].itemId != ITEM_NONE)
+ count++;
+ }
+
+ return count;
+}
+
+bool8 CheckPCHasItem(u16 itemId, u16 count)
+{
+ u8 i;
+ u16 quantity;
+
+ for (i = 0; i < PC_ITEMS_COUNT; i++)
+ {
+ if (gSaveBlock1Ptr->pcItems[i].itemId == itemId)
+ {
+ quantity = GetPcItemQuantity(&gSaveBlock1Ptr->pcItems[i].quantity);
+ if (quantity >= count)
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+bool8 AddPCItem(u16 itemId, u16 count)
+{
+ u8 i;
+ u16 quantity;
+ s8 idx;
+
+ for (i = 0; i < PC_ITEMS_COUNT; i++)
+ {
+ if (gSaveBlock1Ptr->pcItems[i].itemId == itemId)
+ {
+ quantity = GetPcItemQuantity(&gSaveBlock1Ptr->pcItems[i].quantity);
+ if (quantity + count <= 999)
+ {
+ quantity += count;
+ SetPcItemQuantity(&gSaveBlock1Ptr->pcItems[i].quantity, quantity);
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+ }
+
+ idx = PCItemsGetFirstEmptySlot();
+ if (idx == -1)
+ return FALSE;
+
+ gSaveBlock1Ptr->pcItems[idx].itemId = itemId;
+ SetPcItemQuantity(&gSaveBlock1Ptr->pcItems[idx].quantity, count);
+ return TRUE;
+}
+
+void RemoveItemFromPC(u16 itemId, u16 count)
+{
+ u32 i;
+ u16 quantity;
+
+ if (itemId == ITEM_NONE)
+ return;
+
+ for (i = 0; i < PC_ITEMS_COUNT; i++)
+ {
+ if (gSaveBlock1Ptr->pcItems[i].itemId == itemId)
+ break;
+ }
+
+ if (i != PC_ITEMS_COUNT)
+ {
+ quantity = GetPcItemQuantity(&gSaveBlock1Ptr->pcItems[i].quantity) - count;
+ SetPcItemQuantity(&gSaveBlock1Ptr->pcItems[i].quantity, quantity);
+ if (quantity == 0)
+ gSaveBlock1Ptr->pcItems[i].itemId = ITEM_NONE;
+ }
+}
+
+void ItemPcCompaction(void)
+{
+ u16 i, j;
+ struct ItemSlot tmp;
+
+ for (i = 0; i < PC_ITEMS_COUNT - 1; i++)
+ {
+ for (j = i + 1; j < PC_ITEMS_COUNT; j++)
+ {
+ if (gSaveBlock1Ptr->pcItems[i].itemId == ITEM_NONE)
+ {
+ tmp = gSaveBlock1Ptr->pcItems[i];
+ gSaveBlock1Ptr->pcItems[i] = gSaveBlock1Ptr->pcItems[j];
+ gSaveBlock1Ptr->pcItems[j] = tmp;
+ }
+ }
+ }
+}
+
+void RegisteredItemHandleBikeSwap(void)
+{
+ switch (gSaveBlock1Ptr->registeredItem)
+ {
+ case ITEM_MACH_BIKE:
+ gSaveBlock1Ptr->registeredItem = ITEM_ACRO_BIKE;
+ break;
+ case ITEM_ACRO_BIKE:
+ gSaveBlock1Ptr->registeredItem = ITEM_MACH_BIKE;
+ break;
+ }
+}
+
+void SwapItemSlots(struct ItemSlot * a, struct ItemSlot * b)
+{
+ struct ItemSlot c;
+ c = *a;
+ *a = *b;
+ *b = c;
+}
+
+void BagPocketCompaction(struct ItemSlot * slots, u8 capacity)
+{
+ u16 i, j;
+
+ for (i = 0; i < capacity - 1; i++)
+ {
+ for (j = i + 1; j < capacity; j++)
+ {
+ if (GetBagItemQuantity(&slots[i].quantity) == 0)
+ {
+ SwapItemSlots(&slots[i], &slots[j]);
+ }
+ }
+ }
+}
+
+void SortPocketAndPlaceHMsFirst(struct BagPocket * pocket)
+{
+ u16 i;
+ u16 j = 0;
+ u16 k;
+ struct ItemSlot * buff;
+
+ SortAndCompactBagPocket(pocket);
+
+ for (i = 0; i < pocket->capacity; i++)
+ {
+ if (pocket->itemSlots[i].itemId == ITEM_NONE && GetBagItemQuantity(&pocket->itemSlots[i].quantity) == 0)
+ return;
+ if (pocket->itemSlots[i].itemId >= ITEM_HM01 && GetBagItemQuantity(&pocket->itemSlots[i].quantity) != 0)
+ {
+ for (j = i + 1; j < pocket->capacity; j++)
+ {
+ if (pocket->itemSlots[j].itemId == ITEM_NONE && GetBagItemQuantity(&pocket->itemSlots[j].quantity) == 0)
+ break;
+ }
+ break;
+ }
+ }
+
+ for (k = 0; k < pocket->capacity; k++)
+ pocket->itemSlots[k].quantity = GetBagItemQuantity(&pocket->itemSlots[k].quantity);
+ buff = AllocZeroed(pocket->capacity * sizeof(struct ItemSlot));
+ CpuCopy16(pocket->itemSlots + i, buff, (j - i) * sizeof(struct ItemSlot));
+ CpuCopy16(pocket->itemSlots, buff + (j - i), i * sizeof(struct ItemSlot));
+ CpuCopy16(buff, pocket->itemSlots, pocket->capacity * sizeof(struct ItemSlot));
+ for (k = 0; k < pocket->capacity; k++)
+ SetBagItemQuantity(&pocket->itemSlots[k].quantity, pocket->itemSlots[k].quantity);
+ Free(buff);
+}
+
+void SortAndCompactBagPocket(struct BagPocket * pocket)
+{
+ u16 i, j;
+
+ for (i = 0; i < pocket->capacity; i++)
+ {
+ for (j = i + 1; j < pocket->capacity; j++)
+ {
+ if (GetBagItemQuantity(&pocket->itemSlots[i].quantity) == 0 || (GetBagItemQuantity(&pocket->itemSlots[j].quantity) != 0 && pocket->itemSlots[i].itemId > pocket->itemSlots[j].itemId))
+ SwapItemSlots(&pocket->itemSlots[i], &pocket->itemSlots[j]);
+ }
+ }
+}
+
+u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 slotId)
+{
+ return gBagPockets[pocketId - 1].itemSlots[slotId].itemId;
+}
+
+u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 slotId)
+{
+ return GetBagItemQuantity(&gBagPockets[pocketId - 1].itemSlots[slotId].quantity);
+}
+
+u16 BagGetQuantityByItemId(u16 itemId)
+{
+ u16 i;
+ struct BagPocket * pocket = &gBagPockets[ItemId_GetPocket(itemId) - 1];
+
+ for (i = 0; i < pocket->capacity; i++)
+ {
+ if (pocket->itemSlots[i].itemId == itemId)
+ return GetBagItemQuantity(&pocket->itemSlots[i].quantity);
+ }
+
+ return 0;
+}
+
+void sub_809A824(u16 itemId)
+{
+ struct QuestLogStruct_809A824
+ {
+ u16 itemId;
+ u8 mapSectionId;
+ } * ptr;
+ if
+ (
+ itemId == ITEM_OAKS_PARCEL
+ || itemId == ITEM_POKE_FLUTE
+ || itemId == ITEM_SECRET_KEY
+ || itemId == ITEM_BIKE_VOUCHER
+ || itemId == ITEM_GOLD_TEETH
+ || itemId == ITEM_OLD_AMBER
+ || itemId == ITEM_CARD_KEY
+ || itemId == ITEM_LIFT_KEY
+ || itemId == ITEM_HELIX_FOSSIL
+ || itemId == ITEM_DOME_FOSSIL
+ || itemId == ITEM_SILPH_SCOPE
+ || itemId == ITEM_BICYCLE
+ || itemId == ITEM_TOWN_MAP
+ || itemId == ITEM_VS_SEEKER
+ || itemId == ITEM_TEACHY_TV
+ || itemId == ITEM_RAINBOW_PASS
+ || itemId == ITEM_TEA
+ || itemId == ITEM_POWDER_JAR
+ || itemId == ITEM_RUBY
+ || itemId == ITEM_SAPPHIRE
+ )
+ {
+ if (itemId != ITEM_TOWN_MAP || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_GARYS_HOUSE) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_GARYS_HOUSE)))
+ {
+ ptr = malloc(sizeof(*ptr));
+ ptr->itemId = itemId;
+ ptr->mapSectionId = gMapHeader.regionMapSectionId;
+ sub_8113550(40, (void *)ptr);
+ free(ptr);
+ }
+ }
+}
+
+u16 SanitizeItemId(u16 itemId)
+{
+ if (itemId >= ITEM_N_A)
+ return ITEM_NONE;
+ return itemId;
+}
+
+const u8 * ItemId_GetName(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].name;
+}
+
+u16 itemid_get_number(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].itemId;
+}
+
+u16 itemid_get_market_price(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].price;
+}
+
+u8 ItemId_GetHoldEffect(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].holdEffect;
+}
+
+u8 ItemId_GetHoldEffectParam(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].holdEffectParam;
+}
+
+const u8 * ItemId_GetDescription(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].description;
+}
+
+bool8 itemid_is_unique(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].importance;
+}
+
+u8 itemid_get_x19(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].exitsBagOnUse;
+}
+
+u8 ItemId_GetPocket(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].pocket;
+}
+
+u8 ItemId_GetType(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].type;
+}
+
+ItemUseFunc ItemId_GetFieldFunc(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].fieldUseFunc;
+}
+
+bool8 ItemId_GetBattleUsage(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].battleUsage;
+}
+
+ItemUseFunc ItemId_GetBattleFunc(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].battleUseFunc;
+}
+
+u8 ItemId_GetSecondaryId(u16 itemId)
+{
+ return gItems[SanitizeItemId(itemId)].secondaryId;
+}
diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c
new file mode 100644
index 000000000..0c2c60437
--- /dev/null
+++ b/src/item_menu_icons.c
@@ -0,0 +1,783 @@
+#include "global.h"
+#include "decompress.h"
+#include "graphics.h"
+#include "item_menu_icons.h"
+#include "malloc.h"
+#include "constants/items.h"
+
+static EWRAM_DATA u8 gUnknown_2039878[12] = {0};
+EWRAM_DATA void * gUnknown_2039884 = NULL;
+static EWRAM_DATA void * gUnknown_2039888 = NULL;
+
+static void sub_8098560(struct Sprite * sprite);
+static void sub_80985BC(struct Sprite * sprite);
+
+static const struct OamData gUnknown_83D416C = {
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 3,
+ .priority = 1,
+ .paletteNum = 0
+};
+
+static const union AnimCmd gUnknown_83D4174[] = {
+ ANIMCMD_FRAME( 0, 5),
+ ANIMCMD_FRAME(0x40, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_83D4180[] = {
+ ANIMCMD_FRAME( 0, 5),
+ ANIMCMD_FRAME(0x80, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_83D418C[] = {
+ ANIMCMD_FRAME( 0, 5),
+ ANIMCMD_FRAME(0xc0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gUnknown_83D4198[] = {
+ gUnknown_83D4180,
+ gUnknown_83D418C,
+ gUnknown_83D4174
+};
+
+static const union AffineAnimCmd gUnknown_83D41A4[] = {
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd gUnknown_83D41B4[] = {
+ AFFINEANIMCMD_FRAME(0, 0, -2, 2),
+ AFFINEANIMCMD_FRAME(0, 0, 2, 4),
+ AFFINEANIMCMD_FRAME(0, 0, -2, 4),
+ AFFINEANIMCMD_FRAME(0, 0, 2, 2),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const gUnknown_83D41DC[] = {
+ gUnknown_83D41A4,
+ gUnknown_83D41B4
+};
+
+const struct CompressedSpriteSheet gUnknown_83D41E4 = {
+ gUnknown_8E8362C,
+ 0x2000,
+ 100
+};
+
+const struct CompressedSpriteSheet gUnknown_83D41EC = {
+ gUnknown_8E83DBC,
+ 0x2000,
+ 100
+};
+
+const struct CompressedSpritePalette gUnknown_83D41F4 = {
+ gUnknown_8E84560,
+ 100
+};
+
+static const struct SpriteTemplate gUnknown_83D41FC = {
+ 100,
+ 100,
+ &gUnknown_83D416C,
+ gUnknown_83D4198,
+ NULL,
+ gUnknown_83D41DC,
+ SpriteCallbackDummy
+};
+
+static const struct OamData gUnknown_83D4214 = {
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .shape = ST_OAM_SQUARE,
+ .size = 1,
+ .priority = 1,
+ .paletteNum = 1
+};
+
+static const union AnimCmd gUnknown_83D421C[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_83D4224[] = {
+ ANIMCMD_FRAME(4, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_83D422C[] = {
+ ANIMCMD_FRAME(0, 0, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gUnknown_83D4234[] = {
+ gUnknown_83D421C,
+ gUnknown_83D4224,
+ gUnknown_83D422C
+};
+
+const struct CompressedSpriteSheet gBagSwapSpriteSheet = {
+ gFile_graphics_interface_bag_swap_sheet,
+ 0x100,
+ 101
+};
+
+const struct CompressedSpritePalette gBagSwapSpritePalette = {
+ gFile_graphics_interface_bag_swap_palette,
+ 101
+};
+
+static const struct SpriteTemplate gUnknown_83D4250 = {
+ 101,
+ 101,
+ &gUnknown_83D4214,
+ gUnknown_83D4234,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+static const struct OamData gUnknown_83D4268 = {
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .shape = ST_OAM_SQUARE,
+ .size = 2,
+ .priority = 1,
+ .paletteNum = 2
+};
+
+static const union AnimCmd gUnknown_83D4270[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gUnknown_83D4278[] = {
+ gUnknown_83D4270
+};
+
+static const struct SpriteTemplate gUnknown_83D427C = {
+ 102,
+ 102,
+ &gUnknown_83D4268,
+ gUnknown_83D4278,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+static const void *const gUnknown_83D4294[][2] = {
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_master_ball_sheet, gFile_graphics_items_icon_palettes_master_ball_palette},
+ {gFile_graphics_items_icons_ultra_ball_sheet, gFile_graphics_items_icon_palettes_ultra_ball_palette},
+ {gFile_graphics_items_icons_great_ball_sheet, gFile_graphics_items_icon_palettes_great_ball_palette},
+ {gFile_graphics_items_icons_poke_ball_sheet, gFile_graphics_items_icon_palettes_poke_ball_palette},
+ {gFile_graphics_items_icons_safari_ball_sheet, gFile_graphics_items_icon_palettes_safari_ball_palette},
+ {gFile_graphics_items_icons_net_ball_sheet, gFile_graphics_items_icon_palettes_net_ball_palette},
+ {gFile_graphics_items_icons_dive_ball_sheet, gFile_graphics_items_icon_palettes_dive_ball_palette},
+ {gFile_graphics_items_icons_nest_ball_sheet, gFile_graphics_items_icon_palettes_nest_ball_palette},
+ {gFile_graphics_items_icons_repeat_ball_sheet, gFile_graphics_items_icon_palettes_repeat_ball_palette},
+ {gFile_graphics_items_icons_timer_ball_sheet, gFile_graphics_items_icon_palettes_repeat_ball_palette},
+ {gFile_graphics_items_icons_luxury_ball_sheet, gFile_graphics_items_icon_palettes_luxury_ball_palette},
+ {gFile_graphics_items_icons_premier_ball_sheet, gFile_graphics_items_icon_palettes_luxury_ball_palette},
+ {gFile_graphics_items_icons_potion_sheet, gFile_graphics_items_icon_palettes_potion_palette},
+ {gFile_graphics_items_icons_antidote_sheet, gFile_graphics_items_icon_palettes_antidote_palette},
+ {gFile_graphics_items_icons_status_heal_sheet, gFile_graphics_items_icon_palettes_burn_heal_palette},
+ {gFile_graphics_items_icons_status_heal_sheet, gFile_graphics_items_icon_palettes_ice_heal_palette},
+ {gFile_graphics_items_icons_status_heal_sheet, gFile_graphics_items_icon_palettes_awakening_palette},
+ {gFile_graphics_items_icons_status_heal_sheet, gFile_graphics_items_icon_palettes_paralyze_heal_palette},
+ {gFile_graphics_items_icons_large_potion_sheet, gFile_graphics_items_icon_palettes_full_restore_palette},
+ {gFile_graphics_items_icons_large_potion_sheet, gFile_graphics_items_icon_palettes_max_potion_palette},
+ {gFile_graphics_items_icons_potion_sheet, gFile_graphics_items_icon_palettes_hyper_potion_palette},
+ {gFile_graphics_items_icons_potion_sheet, gFile_graphics_items_icon_palettes_super_potion_palette},
+ {gFile_graphics_items_icons_full_heal_sheet, gFile_graphics_items_icon_palettes_full_heal_palette},
+ {gFile_graphics_items_icons_revive_sheet, gFile_graphics_items_icon_palettes_revive_palette},
+ {gFile_graphics_items_icons_max_revive_sheet, gFile_graphics_items_icon_palettes_revive_palette},
+ {gFile_graphics_items_icons_fresh_water_sheet, gFile_graphics_items_icon_palettes_fresh_water_palette},
+ {gFile_graphics_items_icons_soda_pop_sheet, gFile_graphics_items_icon_palettes_soda_pop_palette},
+ {gFile_graphics_items_icons_lemonade_sheet, gFile_graphics_items_icon_palettes_lemonade_palette},
+ {gFile_graphics_items_icons_moomoo_milk_sheet, gFile_graphics_items_icon_palettes_moomoo_milk_palette},
+ {gFile_graphics_items_icons_powder_sheet, gFile_graphics_items_icon_palettes_energy_powder_palette},
+ {gFile_graphics_items_icons_energy_root_sheet, gFile_graphics_items_icon_palettes_energy_root_palette},
+ {gFile_graphics_items_icons_powder_sheet, gFile_graphics_items_icon_palettes_heal_powder_palette},
+ {gFile_graphics_items_icons_revival_herb_sheet, gFile_graphics_items_icon_palettes_revival_herb_palette},
+ {gFile_graphics_items_icons_ether_sheet, gFile_graphics_items_icon_palettes_ether_palette},
+ {gFile_graphics_items_icons_ether_sheet, gFile_graphics_items_icon_palettes_max_ether_palette},
+ {gFile_graphics_items_icons_ether_sheet, gFile_graphics_items_icon_palettes_elixir_palette},
+ {gFile_graphics_items_icons_ether_sheet, gFile_graphics_items_icon_palettes_max_elixir_palette},
+ {gFile_graphics_items_icons_lava_cookie_sheet, gFile_graphics_items_icon_palettes_lava_cookie_and_letter_palette},
+ {gFile_graphics_items_icons_flute_sheet, gFile_graphics_items_icon_palettes_blue_flute_palette},
+ {gFile_graphics_items_icons_flute_sheet, gFile_graphics_items_icon_palettes_yellow_flute_palette},
+ {gFile_graphics_items_icons_flute_sheet, gFile_graphics_items_icon_palettes_red_flute_palette},
+ {gFile_graphics_items_icons_flute_sheet, gFile_graphics_items_icon_palettes_black_flute_palette},
+ {gFile_graphics_items_icons_flute_sheet, gFile_graphics_items_icon_palettes_white_flute_palette},
+ {gFile_graphics_items_icons_berry_juice_sheet, gFile_graphics_items_icon_palettes_berry_juice_palette},
+ {gFile_graphics_items_icons_sacred_ash_sheet, gFile_graphics_items_icon_palettes_sacred_ash_palette},
+ {gFile_graphics_items_icons_powder_sheet, gFile_graphics_items_icon_palettes_shoal_salt_palette},
+ {gFile_graphics_items_icons_shoal_shell_sheet, gFile_graphics_items_icon_palettes_shell_palette},
+ {gFile_graphics_items_icons_shard_sheet, gFile_graphics_items_icon_palettes_red_shard_palette},
+ {gFile_graphics_items_icons_shard_sheet, gFile_graphics_items_icon_palettes_blue_shard_palette},
+ {gFile_graphics_items_icons_shard_sheet, gFile_graphics_items_icon_palettes_yellow_shard_palette},
+ {gFile_graphics_items_icons_shard_sheet, gFile_graphics_items_icon_palettes_green_shard_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_hp_up_sheet, gFile_graphics_items_icon_palettes_hp_up_palette},
+ {gFile_graphics_items_icons_vitamin_sheet, gFile_graphics_items_icon_palettes_protein_palette},
+ {gFile_graphics_items_icons_vitamin_sheet, gFile_graphics_items_icon_palettes_iron_palette},
+ {gFile_graphics_items_icons_vitamin_sheet, gFile_graphics_items_icon_palettes_carbos_palette},
+ {gFile_graphics_items_icons_vitamin_sheet, gFile_graphics_items_icon_palettes_calcium_palette},
+ {gFile_graphics_items_icons_rare_candy_sheet, gFile_graphics_items_icon_palettes_rare_candy_palette},
+ {gFile_graphics_items_icons_pp_up_sheet, gFile_graphics_items_icon_palettes_pp_up_palette},
+ {gFile_graphics_items_icons_vitamin_sheet, gFile_graphics_items_icon_palettes_zinc_palette},
+ {gFile_graphics_items_icons_pp_max_sheet, gFile_graphics_items_icon_palettes_pp_max_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_guard_spec_palette},
+ {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_dire_hit_palette},
+ {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_x_attack_palette},
+ {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_x_defend_palette},
+ {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_x_speed_palette},
+ {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_x_accuracy_palette},
+ {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_x_special_palette},
+ {gFile_graphics_items_icons_poke_doll_sheet, gFile_graphics_items_icon_palettes_poke_doll_palette},
+ {gFile_graphics_items_icons_fluffy_tail_sheet, gFile_graphics_items_icon_palettes_fluffy_tail_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_repel_sheet, gFile_graphics_items_icon_palettes_super_repel_palette},
+ {gFile_graphics_items_icons_repel_sheet, gFile_graphics_items_icon_palettes_max_repel_palette},
+ {gFile_graphics_items_icons_escape_rope_sheet, gFile_graphics_items_icon_palettes_escape_rope_palette},
+ {gFile_graphics_items_icons_repel_sheet, gFile_graphics_items_icon_palettes_repel_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_sun_stone_sheet, gFile_graphics_items_icon_palettes_sun_stone_palette},
+ {gFile_graphics_items_icons_moon_stone_sheet, gFile_graphics_items_icon_palettes_moon_stone_palette},
+ {gFile_graphics_items_icons_fire_stone_sheet, gFile_graphics_items_icon_palettes_fire_stone_palette},
+ {gFile_graphics_items_icons_thunder_stone_sheet, gFile_graphics_items_icon_palettes_thunder_stone_palette},
+ {gFile_graphics_items_icons_water_stone_sheet, gFile_graphics_items_icon_palettes_water_stone_palette},
+ {gFile_graphics_items_icons_leaf_stone_sheet, gFile_graphics_items_icon_palettes_leaf_stone_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_tiny_mushroom_sheet, gFile_graphics_items_icon_palettes_mushroom_palette},
+ {gFile_graphics_items_icons_big_mushroom_sheet, gFile_graphics_items_icon_palettes_mushroom_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_pearl_sheet, gFile_graphics_items_icon_palettes_pearl_palette},
+ {gFile_graphics_items_icons_big_pearl_sheet, gFile_graphics_items_icon_palettes_pearl_palette},
+ {gFile_graphics_items_icons_stardust_sheet, gFile_graphics_items_icon_palettes_star_palette},
+ {gFile_graphics_items_icons_star_piece_sheet, gFile_graphics_items_icon_palettes_star_palette},
+ {gFile_graphics_items_icons_nugget_sheet, gFile_graphics_items_icon_palettes_nugget_palette},
+ {gFile_graphics_items_icons_heart_scale_sheet, gFile_graphics_items_icon_palettes_heart_scale_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_orange_mail_sheet, gFile_graphics_items_icon_palettes_orange_mail_palette},
+ {gFile_graphics_items_icons_harbor_mail_sheet, gFile_graphics_items_icon_palettes_harbor_mail_palette},
+ {gFile_graphics_items_icons_glitter_mail_sheet, gFile_graphics_items_icon_palettes_glitter_mail_palette},
+ {gFile_graphics_items_icons_mech_mail_sheet, gFile_graphics_items_icon_palettes_mech_mail_palette},
+ {gFile_graphics_items_icons_wood_mail_sheet, gFile_graphics_items_icon_palettes_wood_mail_palette},
+ {gFile_graphics_items_icons_wave_mail_sheet, gFile_graphics_items_icon_palettes_wave_mail_palette},
+ {gFile_graphics_items_icons_bead_mail_sheet, gFile_graphics_items_icon_palettes_bead_mail_palette},
+ {gFile_graphics_items_icons_shadow_mail_sheet, gFile_graphics_items_icon_palettes_shadow_mail_palette},
+ {gFile_graphics_items_icons_tropic_mail_sheet, gFile_graphics_items_icon_palettes_tropic_mail_palette},
+ {gFile_graphics_items_icons_dream_mail_sheet, gFile_graphics_items_icon_palettes_dream_mail_palette},
+ {gFile_graphics_items_icons_fab_mail_sheet, gFile_graphics_items_icon_palettes_fab_mail_palette},
+ {gFile_graphics_items_icons_retro_mail_sheet, gFile_graphics_items_icon_palettes_retro_mail_palette},
+ {gFile_graphics_items_icons_cheri_berry_sheet, gFile_graphics_items_icon_palettes_cheri_berry_palette},
+ {gFile_graphics_items_icons_chesto_berry_sheet, gFile_graphics_items_icon_palettes_chesto_berry_palette},
+ {gFile_graphics_items_icons_pecha_berry_sheet, gFile_graphics_items_icon_palettes_pecha_berry_palette},
+ {gFile_graphics_items_icons_rawst_berry_sheet, gFile_graphics_items_icon_palettes_rawst_berry_palette},
+ {gFile_graphics_items_icons_aspear_berry_sheet, gFile_graphics_items_icon_palettes_aspear_berry_palette},
+ {gFile_graphics_items_icons_leppa_berry_sheet, gFile_graphics_items_icon_palettes_leppa_berry_palette},
+ {gFile_graphics_items_icons_oran_berry_sheet, gFile_graphics_items_icon_palettes_oran_berry_palette},
+ {gFile_graphics_items_icons_persim_berry_sheet, gFile_graphics_items_icon_palettes_persim_berry_palette},
+ {gFile_graphics_items_icons_lum_berry_sheet, gFile_graphics_items_icon_palettes_lum_berry_palette},
+ {gFile_graphics_items_icons_sitrus_berry_sheet, gFile_graphics_items_icon_palettes_sitrus_berry_palette},
+ {gFile_graphics_items_icons_figy_berry_sheet, gFile_graphics_items_icon_palettes_figy_berry_palette},
+ {gFile_graphics_items_icons_wiki_berry_sheet, gFile_graphics_items_icon_palettes_wiki_berry_palette},
+ {gFile_graphics_items_icons_mago_berry_sheet, gFile_graphics_items_icon_palettes_mago_berry_palette},
+ {gFile_graphics_items_icons_aguav_berry_sheet, gFile_graphics_items_icon_palettes_aguav_berry_palette},
+ {gFile_graphics_items_icons_iapapa_berry_sheet, gFile_graphics_items_icon_palettes_iapapa_berry_palette},
+ {gFile_graphics_items_icons_razz_berry_sheet, gFile_graphics_items_icon_palettes_razz_berry_palette},
+ {gFile_graphics_items_icons_bluk_berry_sheet, gFile_graphics_items_icon_palettes_bluk_berry_palette},
+ {gFile_graphics_items_icons_nanab_berry_sheet, gFile_graphics_items_icon_palettes_nanab_berry_palette},
+ {gFile_graphics_items_icons_wepear_berry_sheet, gFile_graphics_items_icon_palettes_wepear_berry_palette},
+ {gFile_graphics_items_icons_pinap_berry_sheet, gFile_graphics_items_icon_palettes_pinap_berry_palette},
+ {gFile_graphics_items_icons_pomeg_berry_sheet, gFile_graphics_items_icon_palettes_pomeg_berry_palette},
+ {gFile_graphics_items_icons_kelpsy_berry_sheet, gFile_graphics_items_icon_palettes_kelpsy_berry_palette},
+ {gFile_graphics_items_icons_qualot_berry_sheet, gFile_graphics_items_icon_palettes_qualot_berry_palette},
+ {gFile_graphics_items_icons_hondew_berry_sheet, gFile_graphics_items_icon_palettes_hondew_berry_palette},
+ {gFile_graphics_items_icons_grepa_berry_sheet, gFile_graphics_items_icon_palettes_grepa_berry_palette},
+ {gFile_graphics_items_icons_tamato_berry_sheet, gFile_graphics_items_icon_palettes_tamato_berry_palette},
+ {gFile_graphics_items_icons_cornn_berry_sheet, gFile_graphics_items_icon_palettes_cornn_berry_palette},
+ {gFile_graphics_items_icons_magost_berry_sheet, gFile_graphics_items_icon_palettes_magost_berry_palette},
+ {gFile_graphics_items_icons_rabuta_berry_sheet, gFile_graphics_items_icon_palettes_rabuta_berry_palette},
+ {gFile_graphics_items_icons_nomel_berry_sheet, gFile_graphics_items_icon_palettes_nomel_berry_palette},
+ {gFile_graphics_items_icons_spelon_berry_sheet, gFile_graphics_items_icon_palettes_spelon_berry_palette},
+ {gFile_graphics_items_icons_pamtre_berry_sheet, gFile_graphics_items_icon_palettes_pamtre_berry_palette},
+ {gFile_graphics_items_icons_watmel_berry_sheet, gFile_graphics_items_icon_palettes_watmel_berry_palette},
+ {gFile_graphics_items_icons_durin_berry_sheet, gFile_graphics_items_icon_palettes_durin_berry_palette},
+ {gFile_graphics_items_icons_belue_berry_sheet, gFile_graphics_items_icon_palettes_belue_berry_palette},
+ {gFile_graphics_items_icons_liechi_berry_sheet, gFile_graphics_items_icon_palettes_liechi_berry_palette},
+ {gFile_graphics_items_icons_ganlon_berry_sheet, gFile_graphics_items_icon_palettes_ganlon_berry_palette},
+ {gFile_graphics_items_icons_salac_berry_sheet, gFile_graphics_items_icon_palettes_salac_berry_palette},
+ {gFile_graphics_items_icons_petaya_berry_sheet, gFile_graphics_items_icon_palettes_petaya_berry_palette},
+ {gFile_graphics_items_icons_apicot_berry_sheet, gFile_graphics_items_icon_palettes_apicot_berry_palette},
+ {gFile_graphics_items_icons_lansat_berry_sheet, gFile_graphics_items_icon_palettes_lansat_berry_palette},
+ {gFile_graphics_items_icons_starf_berry_sheet, gFile_graphics_items_icon_palettes_starf_berry_palette},
+ {gFile_graphics_items_icons_enigma_berry_sheet, gFile_graphics_items_icon_palettes_enigma_berry_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_bright_powder_sheet, gFile_graphics_items_icon_palettes_bright_powder_palette},
+ {gFile_graphics_items_icons_in_battle_herb_sheet, gFile_graphics_items_icon_palettes_white_herb_palette},
+ {gFile_graphics_items_icons_macho_brace_sheet, gFile_graphics_items_icon_palettes_macho_brace_palette},
+ {gFile_graphics_items_icons_exp_share_sheet, gFile_graphics_items_icon_palettes_exp_share_palette},
+ {gFile_graphics_items_icons_quick_claw_sheet, gFile_graphics_items_icon_palettes_quick_claw_palette},
+ {gFile_graphics_items_icons_soothe_bell_sheet, gFile_graphics_items_icon_palettes_soothe_bell_palette},
+ {gFile_graphics_items_icons_in_battle_herb_sheet, gFile_graphics_items_icon_palettes_mental_herb_palette},
+ {gFile_graphics_items_icons_choice_band_sheet, gFile_graphics_items_icon_palettes_choice_band_palette},
+ {gFile_graphics_items_icons_kings_rock_sheet, gFile_graphics_items_icon_palettes_kings_rock_palette},
+ {gFile_graphics_items_icons_silver_powder_sheet, gFile_graphics_items_icon_palettes_silver_powder_palette},
+ {gFile_graphics_items_icons_amulet_coin_sheet, gFile_graphics_items_icon_palettes_amulet_coin_palette},
+ {gFile_graphics_items_icons_cleanse_tag_sheet, gFile_graphics_items_icon_palettes_cleanse_tag_palette},
+ {gFile_graphics_items_icons_soul_dew_sheet, gFile_graphics_items_icon_palettes_soul_dew_palette},
+ {gFile_graphics_items_icons_deep_sea_tooth_sheet, gFile_graphics_items_icon_palettes_deep_sea_tooth_palette},
+ {gFile_graphics_items_icons_deep_sea_scale_sheet, gFile_graphics_items_icon_palettes_deep_sea_scale_palette},
+ {gFile_graphics_items_icons_smoke_ball_sheet, gFile_graphics_items_icon_palettes_smoke_ball_palette},
+ {gFile_graphics_items_icons_everstone_sheet, gFile_graphics_items_icon_palettes_everstone_palette},
+ {gFile_graphics_items_icons_focus_band_sheet, gFile_graphics_items_icon_palettes_focus_band_palette},
+ {gFile_graphics_items_icons_lucky_egg_sheet, gFile_graphics_items_icon_palettes_lucky_egg_palette},
+ {gFile_graphics_items_icons_scope_lens_sheet, gFile_graphics_items_icon_palettes_scope_lens_palette},
+ {gFile_graphics_items_icons_metal_coat_sheet, gFile_graphics_items_icon_palettes_metal_coat_palette},
+ {gFile_graphics_items_icons_leftovers_sheet, gFile_graphics_items_icon_palettes_leftovers_palette},
+ {gFile_graphics_items_icons_dragon_scale_sheet, gFile_graphics_items_icon_palettes_dragon_scale_palette},
+ {gFile_graphics_items_icons_light_ball_sheet, gFile_graphics_items_icon_palettes_light_ball_palette},
+ {gFile_graphics_items_icons_soft_sand_sheet, gFile_graphics_items_icon_palettes_soft_sand_palette},
+ {gFile_graphics_items_icons_hard_stone_sheet, gFile_graphics_items_icon_palettes_hard_stone_palette},
+ {gFile_graphics_items_icons_miracle_seed_sheet, gFile_graphics_items_icon_palettes_miracle_seed_palette},
+ {gFile_graphics_items_icons_black_glasses_sheet, gFile_graphics_items_icon_palettes_black_type_enhancing_item_palette},
+ {gFile_graphics_items_icons_black_belt_sheet, gFile_graphics_items_icon_palettes_black_type_enhancing_item_palette},
+ {gFile_graphics_items_icons_magnet_sheet, gFile_graphics_items_icon_palettes_magnet_palette},
+ {gFile_graphics_items_icons_mystic_water_sheet, gFile_graphics_items_icon_palettes_mystic_water_palette},
+ {gFile_graphics_items_icons_sharp_beak_sheet, gFile_graphics_items_icon_palettes_sharp_beak_palette},
+ {gFile_graphics_items_icons_poison_barb_sheet, gFile_graphics_items_icon_palettes_poison_barb_palette},
+ {gFile_graphics_items_icons_never_melt_ice_sheet, gFile_graphics_items_icon_palettes_never_melt_ice_palette},
+ {gFile_graphics_items_icons_spell_tag_sheet, gFile_graphics_items_icon_palettes_spell_tag_palette},
+ {gFile_graphics_items_icons_twisted_spoon_sheet, gFile_graphics_items_icon_palettes_twisted_spoon_palette},
+ {gFile_graphics_items_icons_charcoal_sheet, gFile_graphics_items_icon_palettes_charcoal_palette},
+ {gFile_graphics_items_icons_dragon_fang_sheet, gFile_graphics_items_icon_palettes_dragon_fang_palette},
+ {gFile_graphics_items_icons_silk_scarf_sheet, gFile_graphics_items_icon_palettes_silk_scarf_palette},
+ {gFile_graphics_items_icons_up_grade_sheet, gFile_graphics_items_icon_palettes_up_grade_palette},
+ {gFile_graphics_items_icons_shell_bell_sheet, gFile_graphics_items_icon_palettes_shell_palette},
+ {gFile_graphics_items_icons_sea_incense_sheet, gFile_graphics_items_icon_palettes_sea_incense_palette},
+ {gFile_graphics_items_icons_lax_incense_sheet, gFile_graphics_items_icon_palettes_lax_incense_palette},
+ {gFile_graphics_items_icons_lucky_punch_sheet, gFile_graphics_items_icon_palettes_lucky_punch_palette},
+ {gFile_graphics_items_icons_metal_powder_sheet, gFile_graphics_items_icon_palettes_metal_powder_palette},
+ {gFile_graphics_items_icons_thick_club_sheet, gFile_graphics_items_icon_palettes_thick_club_palette},
+ {gFile_graphics_items_icons_stick_sheet, gFile_graphics_items_icon_palettes_stick_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_scarf_sheet, gFile_graphics_items_icon_palettes_red_scarf_palette},
+ {gFile_graphics_items_icons_scarf_sheet, gFile_graphics_items_icon_palettes_blue_scarf_palette},
+ {gFile_graphics_items_icons_scarf_sheet, gFile_graphics_items_icon_palettes_pink_scarf_palette},
+ {gFile_graphics_items_icons_scarf_sheet, gFile_graphics_items_icon_palettes_green_scarf_palette},
+ {gFile_graphics_items_icons_scarf_sheet, gFile_graphics_items_icon_palettes_yellow_scarf_palette},
+ {gFile_graphics_items_icons_mach_bike_sheet, gFile_graphics_items_icon_palettes_mach_bike_palette},
+ {gFile_graphics_items_icons_coin_case_sheet, gFile_graphics_items_icon_palettes_coin_case_palette},
+ {gFile_graphics_items_icons_itemfinder_sheet, gFile_graphics_items_icon_palettes_itemfinder_palette},
+ {gFile_graphics_items_icons_old_rod_sheet, gFile_graphics_items_icon_palettes_old_rod_palette},
+ {gFile_graphics_items_icons_good_rod_sheet, gFile_graphics_items_icon_palettes_good_rod_palette},
+ {gFile_graphics_items_icons_super_rod_sheet, gFile_graphics_items_icon_palettes_super_rod_palette},
+ {gFile_graphics_items_icons_ss_ticket_sheet, gFile_graphics_items_icon_palettes_ss_ticket_palette},
+ {gFile_graphics_items_icons_contest_pass_sheet, gFile_graphics_items_icon_palettes_contest_pass_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_wailmer_pail_sheet, gFile_graphics_items_icon_palettes_wailmer_pail_palette},
+ {gFile_graphics_items_icons_devon_goods_sheet, gFile_graphics_items_icon_palettes_devon_goods_palette},
+ {gFile_graphics_items_icons_soot_sack_sheet, gFile_graphics_items_icon_palettes_soot_sack_palette},
+ {gFile_graphics_items_icons_basement_key_sheet, gFile_graphics_items_icon_palettes_old_key_palette},
+ {gFile_graphics_items_icons_acro_bike_sheet, gFile_graphics_items_icon_palettes_acro_bike_palette},
+ {gFile_graphics_items_icons_pokeblock_case_sheet, gFile_graphics_items_icon_palettes_pokeblock_case_palette},
+ {gFile_graphics_items_icons_letter_sheet, gFile_graphics_items_icon_palettes_lava_cookie_and_letter_palette},
+ {gFile_graphics_items_icons_eon_ticket_sheet, gFile_graphics_items_icon_palettes_eon_ticket_palette},
+ {gFile_graphics_items_icons_orb_sheet, gFile_graphics_items_icon_palettes_red_orb_palette},
+ {gFile_graphics_items_icons_orb_sheet, gFile_graphics_items_icon_palettes_blue_orb_palette},
+ {gFile_graphics_items_icons_scanner_sheet, gFile_graphics_items_icon_palettes_scanner_palette},
+ {gFile_graphics_items_icons_go_goggles_sheet, gFile_graphics_items_icon_palettes_go_goggles_palette},
+ {gFile_graphics_items_icons_meteorite_sheet, gFile_graphics_items_icon_palettes_meteorite_palette},
+ {gFile_graphics_items_icons_room1_key_sheet, gFile_graphics_items_icon_palettes_key_palette},
+ {gFile_graphics_items_icons_room2_key_sheet, gFile_graphics_items_icon_palettes_key_palette},
+ {gFile_graphics_items_icons_room4_key_sheet, gFile_graphics_items_icon_palettes_key_palette},
+ {gFile_graphics_items_icons_room6_key_sheet, gFile_graphics_items_icon_palettes_key_palette},
+ {gFile_graphics_items_icons_storage_key_sheet, gFile_graphics_items_icon_palettes_old_key_palette},
+ {gFile_graphics_items_icons_root_fossil_sheet, gFile_graphics_items_icon_palettes_hoenn_fossil_palette},
+ {gFile_graphics_items_icons_claw_fossil_sheet, gFile_graphics_items_icon_palettes_hoenn_fossil_palette},
+ {gFile_graphics_items_icons_devon_scope_sheet, gFile_graphics_items_icon_palettes_devon_scope_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fighting_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_dragon_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_water_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_psychic_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_poison_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_ice_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fighting_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_grass_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fire_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_dark_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_ice_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_ice_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_psychic_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_water_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_grass_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_grass_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_steel_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_electric_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_electric_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_ground_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_ground_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_psychic_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_ghost_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fighting_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_psychic_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_electric_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fire_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_poison_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_rock_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fire_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_rock_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_flying_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_dark_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_psychic_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_dark_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_steel_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_psychic_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_dark_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fire_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_flying_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_water_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fighting_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_water_tm_hm_palette},
+ {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_water_tm_hm_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
+ {gFile_graphics_items_icons_oaks_parcel_sheet, gFile_graphics_items_icon_palettes_oaks_parcel_palette},
+ {gFile_graphics_items_icons_poke_flute_sheet, gFile_graphics_items_icon_palettes_poke_flute_palette},
+ {gFile_graphics_items_icons_secret_key_sheet, gFile_graphics_items_icon_palettes_secret_key_palette},
+ {gFile_graphics_items_icons_bike_voucher_sheet, gFile_graphics_items_icon_palettes_bike_voucher_palette},
+ {gFile_graphics_items_icons_gold_teeth_sheet, gFile_graphics_items_icon_palettes_gold_teeth_palette},
+ {gFile_graphics_items_icons_old_amber_sheet, gFile_graphics_items_icon_palettes_old_amber_palette},
+ {gFile_graphics_items_icons_card_key_sheet, gFile_graphics_items_icon_palettes_card_key_palette},
+ {gFile_graphics_items_icons_lift_key_sheet, gFile_graphics_items_icon_palettes_key_palette},
+ {gFile_graphics_items_icons_helix_fossil_sheet, gFile_graphics_items_icon_palettes_kanto_fossil_palette},
+ {gFile_graphics_items_icons_dome_fossil_sheet, gFile_graphics_items_icon_palettes_kanto_fossil_palette},
+ {gFile_graphics_items_icons_silph_scope_sheet, gFile_graphics_items_icon_palettes_silph_scope_palette},
+ {gFile_graphics_items_icons_bicycle_sheet, gFile_graphics_items_icon_palettes_bicycle_palette},
+ {gFile_graphics_items_icons_town_map_sheet, gFile_graphics_items_icon_palettes_town_map_palette},
+ {gFile_graphics_items_icons_vs_seeker_sheet, gFile_graphics_items_icon_palettes_vs_seeker_palette},
+ {gFile_graphics_items_icons_fame_checker_sheet, gFile_graphics_items_icon_palettes_fame_checker_palette},
+ {gFile_graphics_items_icons_tm_case_sheet, gFile_graphics_items_icon_palettes_tm_case_palette},
+ {gFile_graphics_items_icons_berry_pouch_sheet, gFile_graphics_items_icon_palettes_berry_pouch_palette},
+ {gFile_graphics_items_icons_teachy_tv_sheet, gFile_graphics_items_icon_palettes_teachy_tv_palette},
+ {gFile_graphics_items_icons_tri_pass_sheet, gFile_graphics_items_icon_palettes_tri_pass_palette},
+ {gFile_graphics_items_icons_rainbow_pass_sheet, gFile_graphics_items_icon_palettes_rainbow_pass_palette},
+ {gFile_graphics_items_icons_tea_sheet, gFile_graphics_items_icon_palettes_tea_palette},
+ {gFile_graphics_items_icons_mystic_ticket_sheet, gFile_graphics_items_icon_palettes_mystic_ticket_palette},
+ {gFile_graphics_items_icons_aurora_ticket_sheet, gFile_graphics_items_icon_palettes_aurora_ticket_palette},
+ {gFile_graphics_items_icons_powder_jar_sheet, gFile_graphics_items_icon_palettes_powder_jar_palette},
+ {gFile_graphics_items_icons_gem_sheet, gFile_graphics_items_icon_palettes_ruby_palette},
+ {gFile_graphics_items_icons_gem_sheet, gFile_graphics_items_icon_palettes_sapphire_palette},
+ {gFile_graphics_items_icons_return_to_field_arrow_sheet, gFile_graphics_items_icon_palettes_return_to_field_arrow_palette}
+};
+
+void ResetItemMenuIconState(void)
+{
+ u16 i;
+
+ for (i = 0; i < NELEMS(gUnknown_2039878); i++)
+ gUnknown_2039878[i] = 0xFF;
+}
+
+void sub_80984FC(u8 animNum)
+{
+ gUnknown_2039878[0] = CreateSprite(&gUnknown_83D41FC, 40, 68, 0);
+ sub_8098528(animNum);
+}
+
+void sub_8098528(u8 animNum)
+{
+ struct Sprite * sprite = &gSprites[gUnknown_2039878[0]];
+ sprite->pos2.y = -5;
+ sprite->callback = sub_8098560;
+ StartSpriteAnim(sprite, animNum);
+}
+
+static void sub_8098560(struct Sprite * sprite)
+{
+ if (sprite->pos2.y != 0)
+ sprite->pos2.y++;
+ else
+ sprite->callback = SpriteCallbackDummy;
+}
+
+void sub_8098580(void)
+{
+ struct Sprite * sprite = &gSprites[gUnknown_2039878[0]];
+ if (sprite->affineAnimEnded)
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = sub_80985BC;
+ }
+}
+
+static void sub_80985BC(struct Sprite * sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ StartSpriteAffineAnim(sprite, 0);
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+void sub_80985E4(void)
+{
+ u8 i;
+ u8 * ptr = &gUnknown_2039878[1];
+
+ for (i = 0; i < 9; i++)
+ {
+ ptr[i] = CreateSprite(&gUnknown_83D4250, i * 16 + 0x60, 7, 0);
+ if (i != 0)
+ {
+ if (i == 8)
+ StartSpriteAnim(&gSprites[ptr[i]], 2);
+ else
+ StartSpriteAnim(&gSprites[ptr[i]], 1);
+ }
+ gSprites[ptr[i]].invisible = TRUE;
+ }
+}
+
+void sub_8098660(u8 flag)
+{
+ u8 i;
+ u8 * ptr = &gUnknown_2039878[1];
+
+ for (i = 0; i < 9; i++)
+ {
+ gSprites[ptr[i]].invisible = flag;
+ }
+}
+
+void sub_80986A8(s16 x, u16 y)
+{
+ u8 i;
+ u8 * ptr = &gUnknown_2039878[1];
+
+ for (i = 0; i < 9; i++)
+ {
+ gSprites[ptr[i]].pos2.x = x;
+ gSprites[ptr[i]].pos1.y = y + 7;
+ }
+}
+
+static bool8 sub_80986EC(void)
+{
+ void ** ptr1, ** ptr2;
+
+ ptr1 = &gUnknown_2039884;
+ *ptr1 = Alloc(0x120);
+ if (*ptr1 == NULL)
+ return FALSE;
+ ptr2 = &gUnknown_2039888;
+ *ptr2 = AllocZeroed(0x200);
+ if (*ptr2 == NULL)
+ {
+ Free(*ptr1);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void CopyItemIconPicTo4x4Buffer(const void * src, void * dest)
+{
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ CpuCopy16(src + 0x60 * i, dest + 0x80 * i, 0x60);
+ }
+}
+
+u8 AddItemIconObject(u16 tilesTag, u16 paletteTag, u16 itemId)
+{
+ struct SpriteTemplate template;
+ struct SpriteSheet spriteSheet;
+ struct CompressedSpritePalette spritePalette;
+ u8 spriteId;
+
+ if (!sub_80986EC())
+ return MAX_SPRITES;
+
+ LZDecompressWram(sub_8098974(itemId, 0), gUnknown_2039884);
+ CopyItemIconPicTo4x4Buffer(gUnknown_2039884, gUnknown_2039888);
+ spriteSheet.data = gUnknown_2039888;
+ spriteSheet.size = 0x200;
+ spriteSheet.tag = tilesTag;
+ LoadSpriteSheet(&spriteSheet);
+
+ spritePalette.data = sub_8098974(itemId, 1);
+ spritePalette.tag = paletteTag;
+ LoadCompressedSpritePalette(&spritePalette);
+
+ CpuCopy16(&gUnknown_83D427C, &template, sizeof(struct SpriteTemplate));
+ template.tileTag = tilesTag;
+ template.paletteTag = paletteTag;
+ spriteId = CreateSprite(&template, 0, 0, 0);
+
+ Free(gUnknown_2039884);
+ Free(gUnknown_2039888);
+ return spriteId;
+}
+
+u8 AddItemIconObjectWithCustomObjectTemplate(const struct SpriteTemplate * origTemplate, u16 tilesTag, u16 paletteTag, u16 itemId)
+{
+ struct SpriteTemplate template;
+ struct SpriteSheet spriteSheet;
+ struct CompressedSpritePalette spritePalette;
+ u8 spriteId;
+
+ if (!sub_80986EC())
+ return MAX_SPRITES;
+
+ LZDecompressWram(sub_8098974(itemId, 0), gUnknown_2039884);
+ CopyItemIconPicTo4x4Buffer(gUnknown_2039884, gUnknown_2039888);
+ spriteSheet.data = gUnknown_2039888;
+ spriteSheet.size = 0x200;
+ spriteSheet.tag = tilesTag;
+ LoadSpriteSheet(&spriteSheet);
+
+ spritePalette.data = sub_8098974(itemId, 1);
+ spritePalette.tag = paletteTag;
+ LoadCompressedSpritePalette(&spritePalette);
+
+ CpuCopy16(origTemplate, &template, sizeof(struct SpriteTemplate));
+ template.tileTag = tilesTag;
+ template.paletteTag = paletteTag;
+ spriteId = CreateSprite(&template, 0, 0, 0);
+
+ Free(gUnknown_2039884);
+ Free(gUnknown_2039888);
+ return spriteId;
+}
+
+void CreateItemMenuIcon(u16 itemId, u8 idx)
+{
+ u8 * ptr = &gUnknown_2039878[10];
+ u8 spriteId;
+
+ if (ptr[idx] == 0xFF)
+ {
+ FreeSpriteTilesByTag(102 + idx);
+ FreeSpritePaletteByTag(102 + idx);
+ spriteId = AddItemIconObject(102 + idx, 102 + idx, itemId);
+ if (spriteId != MAX_SPRITES)
+ {
+ ptr[idx] = spriteId;
+ gSprites[spriteId].pos2.x = 24;
+ gSprites[spriteId].pos2.y = 140;
+ }
+ }
+}
+
+void DestroyItemMenuIcon(u8 idx)
+{
+ u8 * ptr = &gUnknown_2039878[10];
+
+ if (ptr[idx] != 0xFF)
+ {
+ DestroySpriteAndFreeResources(&gSprites[ptr[idx]]);
+ ptr[idx] = 0xFF;
+ }
+}
+
+const void * sub_8098974(u16 itemId, u8 attrId)
+{
+ if (itemId > ITEM_N_A)
+ itemId = ITEM_NONE;
+ return gUnknown_83D4294[itemId][attrId];
+}
+
+void sub_80989A0(u16 itemId, u8 idx)
+{
+ u8 * ptr = &gUnknown_2039878[10];
+ u8 spriteId;
+
+ if (ptr[idx] == 0xFF)
+ {
+ FreeSpriteTilesByTag(102 + idx);
+ FreeSpritePaletteByTag(102 + idx);
+ spriteId = AddItemIconObject(102 + idx, 102 + idx, itemId);
+ if (spriteId != MAX_SPRITES)
+ {
+ ptr[idx] = spriteId;
+ gSprites[spriteId].pos2.x = 24;
+ gSprites[spriteId].pos2.y = 147;
+ }
+ }
+}
diff --git a/src/item_pc.c b/src/item_pc.c
new file mode 100644
index 000000000..8f1fd1cbf
--- /dev/null
+++ b/src/item_pc.c
@@ -0,0 +1,1150 @@
+#include "global.h"
+#include "bg.h"
+#include "data2.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "help_system.h"
+#include "item.h"
+#include "item_menu.h"
+#include "item_menu_icons.h"
+#include "list_menu.h"
+#include "item_pc.h"
+#include "item_use.h"
+#include "main.h"
+#include "malloc.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "menu_indicators.h"
+#include "new_menu_helpers.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "pc_screen_effect.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "text_window.h"
+#include "constants/items.h"
+#include "constants/songs.h"
+
+struct ItemPcResources
+{
+ MainCallback savedCallback;
+ u8 moveModeOrigPos;
+ u8 itemMenuIconSlot;
+ u8 maxShowed;
+ u8 nItems;
+ u8 scrollIndicatorArrowPairId;
+ u16 withdrawQuantitySubmenuCursorPos;
+ s16 data[3];
+};
+
+struct ItemPcStaticResources
+{
+ MainCallback savedCallback;
+ u16 scroll;
+ u16 row;
+ u8 initialized;
+};
+
+static EWRAM_DATA struct ItemPcResources * sStateDataPtr = NULL;
+static EWRAM_DATA u8 * sBg1TilemapBuffer = NULL;
+static EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL;
+static EWRAM_DATA u8 * sUnusedStringAllocation = NULL;
+static EWRAM_DATA struct ItemPcStaticResources sListMenuState = {};
+static EWRAM_DATA u8 sSubmenuWindowIds[3] = {};
+
+extern const struct CompressedSpriteSheet gBagSwapSpriteSheet;
+extern const struct CompressedSpritePalette gBagSwapSpritePalette;
+
+static void ItemPc_RunSetup(void);
+static bool8 ItemPc_DoGfxSetup(void);
+static void ItemPc_FadeAndBail(void);
+static void Task_ItemPcWaitFadeAndBail(u8 taskId);
+static bool8 ItemPc_InitBgs(void);
+static bool8 ItemPc_LoadGraphics(void);
+static bool8 ItemPc_AllocateResourcesForListMenu(void);
+static void ItemPc_BuildListMenuTemplate(void);
+static void ItemPc_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list);
+static void ItemPc_ItemPrintFunc(u8 windowId, s32 itemId, u8 y);
+static void ItemPc_PrintOrRemoveCursorAt(u8 y, u8 state);
+static void ItemPc_PrintWithdrawItem(void);
+static void ItemPc_PlaceTopMenuScrollIndicatorArrows(void);
+static void ItemPc_SetCursorPosition(void);
+static void ItemPc_FreeResources(void);
+static void Task_ItemPcTurnOff2(u8 taskId);
+static u16 ItemPc_GetItemIdBySlotId(u16 itemIndex);
+static u16 ItemPc_GetItemQuantityBySlotId(u16 itemIndex);
+static void ItemPc_CountPcItems(void);
+static void ItemPc_SetScrollPosition(void);
+static void Task_ItemPcMain(u8 taskId);
+static void ItemPc_MoveItemModeInit(u8 taskId, s16 pos);
+static void Task_ItemPcMoveItemModeRun(u8 taskId);
+static void ItemPc_InsertItemIntoNewSlot(u8 taskId, u32 pos);
+static void ItemPc_MoveItemModeCancel(u8 taskId, u32 pos);
+static void Task_ItemPcSubmenuInit(u8 taskId);
+static void Task_ItemPcSubmenuRun(u8 taskId);
+static void Task_ItemPcWithdraw(u8 taskId);
+static void ItemPc_DoWithdraw(u8 taskId);
+static void Task_ItemPcWaitButtonAndFinishWithdrawMultiple(u8 taskId);
+static void Task_ItemPcWaitButtonWithdrawMultipleFailed(u8 taskId);
+static void Task_ItemPcCleanUpWithdraw(u8 taskId);
+static void ItemPc_WithdrawMultipleInitWindow(u16 slotId);
+static void Task_ItemPcHandleWithdrawMultiple(u8 taskId);
+static void Task_ItemPcGive(u8 taskId);
+static void ItemPc_CB2_SwitchToPartyMenu(void);
+static void ItemPc_CB2_ReturnFromPartyMenu(void);
+static void gTask_ItemPcWaitButtonAndExitSubmenu(u8 taskId);
+static void Task_ItemPcCancel(u8 taskId);
+static void ItemPc_InitWindows(void);
+static void ItemPc_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx);
+static void ItemPc_SetBorderStyleOnWindow(u8 windowId);
+static u8 ItemPc_GetOrCreateSubwindow(u8 idx);
+static void ItemPc_DestroySubwindow(u8 idx);
+static void ItemPc_PrintOnWindow5WithContinueTask(u8 taskId, const u8 * str, TaskFunc taskFunc);
+
+static const struct BgTemplate sBgTemplates[2] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .priority = 0
+ }, {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 30,
+ .priority = 1
+ }
+};
+
+static const struct MenuAction sItemPcSubmenuOptions[] = {
+ {gText_Withdraw, {.void_u8 = Task_ItemPcWithdraw}},
+ {gOtherText_Give, {.void_u8 = Task_ItemPcGive}},
+ {gFameCheckerText_Cancel, {.void_u8 = Task_ItemPcCancel}}
+};
+
+static const struct TextColor gUnknown_8453F8C[] = {
+ {0, 1, 2},
+ {0, 2, 3},
+ {0, 3, 2},
+ {0, 10, 2}
+};
+
+static const struct WindowTemplate gUnknown_8453F98[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 0x07,
+ .tilemapTop = 0x01,
+ .width = 0x13,
+ .height = 0x0c,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x02bf
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0x05,
+ .tilemapTop = 0x0e,
+ .width = 0x19,
+ .height = 0x06,
+ .paletteNum = 0x0d,
+ .baseBlock = 0x0229
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x01,
+ .width = 0x05,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0215
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0x18,
+ .tilemapTop = 0x0f,
+ .width = 0x05,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0201
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0x16,
+ .tilemapTop = 0x0d,
+ .width = 0x07,
+ .height = 0x06,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x01d7
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0x02,
+ .tilemapTop = 0x0f,
+ .width = 0x1a,
+ .height = 0x04,
+ .paletteNum = 0x0b,
+ .baseBlock = 0x016f
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate gUnknown_8453FD0[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0f,
+ .width = 0x0e,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x0137
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0f,
+ .width = 0x10,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x0137
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0f,
+ .width = 0x17,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x009b
+ }
+};
+
+void ItemPc_Init(u8 a0, MainCallback callback)
+{
+ u8 i;
+
+ if (a0 >= 2)
+ {
+ SetMainCallback2(callback);
+ return;
+ }
+ if ((sStateDataPtr = Alloc(sizeof(struct ItemPcResources))) == NULL)
+ {
+ SetMainCallback2(callback);
+ return;
+ }
+ if (a0 != 1)
+ {
+ sListMenuState.savedCallback = callback;
+ sListMenuState.scroll = sListMenuState.row = 0;
+ }
+ sStateDataPtr->moveModeOrigPos = 0xFF;
+ sStateDataPtr->itemMenuIconSlot = 0;
+ sStateDataPtr->scrollIndicatorArrowPairId = 0xFF;
+ sStateDataPtr->savedCallback = 0;
+ for (i = 0; i < 3; i++)
+ {
+ sStateDataPtr->data[i] = 0;
+ }
+ SetMainCallback2(ItemPc_RunSetup);
+}
+
+static void ItemPc_MainCB(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ DoScheduledBgTilemapCopiesToVram();
+ UpdatePaletteFade();
+}
+
+static void ItemPc_VBlankCB(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void ItemPc_RunSetup(void)
+{
+ while (1)
+ {
+ if (ItemPc_DoGfxSetup() == TRUE)
+ break;
+ if (MenuHelpers_LinkSomething() == TRUE)
+ break;
+ }
+}
+
+static bool8 ItemPc_DoGfxSetup(void)
+{
+ u8 taskId;
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankHBlankCallbacksToNull();
+ ClearScheduledBgCopiesToVram();
+ gMain.state++;
+ break;
+ case 1:
+ ScanlineEffect_Stop();
+ gMain.state++;
+ break;
+ case 2:
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 3:
+ ResetPaletteFade();
+ gMain.state++;
+ break;
+ case 4:
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 5:
+ ResetItemMenuIconState();
+ gMain.state++;
+ break;
+ case 6:
+ ResetTasks();
+ gMain.state++;
+ break;
+ case 7:
+ if (ItemPc_InitBgs())
+ {
+ sStateDataPtr->data[0] = 0;
+ gMain.state++;
+ }
+ else
+ {
+ ItemPc_FadeAndBail();
+ return TRUE;
+ }
+ break;
+ case 8:
+ if (ItemPc_LoadGraphics() == TRUE)
+ gMain.state++;
+ break;
+ case 9:
+ ItemPc_InitWindows();
+ gMain.state++;
+ break;
+ case 10:
+ ItemPc_CountPcItems();
+ ItemPc_SetCursorPosition();
+ ItemPc_SetScrollPosition();
+ gMain.state++;
+ break;
+ case 11:
+ if (ItemPc_AllocateResourcesForListMenu())
+ gMain.state++;
+ else
+ {
+ ItemPc_FadeAndBail();
+ return TRUE;
+ }
+ break;
+ case 12:
+ ItemPc_BuildListMenuTemplate();
+ gMain.state++;
+ break;
+ case 13:
+ ItemPc_PrintWithdrawItem();
+ gMain.state++;
+ break;
+ case 14:
+ sub_80985E4();
+ gMain.state++;
+ break;
+ case 15:
+ taskId = CreateTask(Task_ItemPcMain, 0);
+ gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sListMenuState.scroll, sListMenuState.row);
+ gMain.state++;
+ break;
+ case 16:
+ ItemPc_PlaceTopMenuScrollIndicatorArrows();
+ gMain.state++;
+ break;
+ case 17:
+ HelpSystem_SetSomeVariable2(29);
+ gMain.state++;
+ break;
+ case 18:
+ if (sListMenuState.initialized == 1)
+ {
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ }
+ gMain.state++;
+ break;
+ case 19:
+ if (sListMenuState.initialized == 1)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ }
+ else
+ {
+ sub_80A0A48(0, 0, 0);
+ ItemPc_SetInitializedFlag(1);
+ PlaySE(SE_PC_LOGON);
+ }
+ gMain.state++;
+ break;
+ case 20:
+ if (sub_80BF72C() != TRUE)
+ gMain.state++;
+ break;
+ default:
+ SetVBlankCallback(ItemPc_VBlankCB);
+ SetMainCallback2(ItemPc_MainCB);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void ItemPc_FadeAndBail(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ CreateTask(Task_ItemPcWaitFadeAndBail, 0);
+ SetVBlankCallback(ItemPc_VBlankCB);
+ SetMainCallback2(ItemPc_MainCB);
+}
+
+static void Task_ItemPcWaitFadeAndBail(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sListMenuState.savedCallback);
+ ItemPc_FreeResources();
+ DestroyTask(taskId);
+ }
+}
+
+static bool8 ItemPc_InitBgs(void)
+{
+ ResetAllBgsCoordinatesAndBgCntRegs();
+ sBg1TilemapBuffer = Alloc(0x800);
+ if (sBg1TilemapBuffer == NULL)
+ return FALSE;
+ memset(sBg1TilemapBuffer, 0, 0x800);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates));
+ SetBgTilemapBuffer(1, sBg1TilemapBuffer);
+ ScheduleBgCopyTilemapToVram(1);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT , 0);
+ ShowBg(0);
+ ShowBg(1);
+ return TRUE;
+}
+
+static bool8 ItemPc_LoadGraphics(void)
+{
+ switch (sStateDataPtr->data[0])
+ {
+ case 0:
+ ResetTempTileDataBuffers();
+ DecompressAndCopyTileDataToVram(1, gItemPcTiles, 0, 0, 0);
+ sStateDataPtr->data[0]++;
+ break;
+ case 1:
+ if (FreeTempTileDataBuffersIfPossible() != TRUE)
+ {
+ LZDecompressWram(gItemPcTilemap, sBg1TilemapBuffer);
+ sStateDataPtr->data[0]++;
+ }
+ break;
+ case 2:
+ LoadCompressedPalette(gItemPcBgPals, 0x00, 0x60);
+ sStateDataPtr->data[0]++;
+ break;
+ case 3:
+ LoadCompressedSpriteSheet(&gBagSwapSpriteSheet);
+ sStateDataPtr->data[0]++;
+ break;
+ default:
+ LoadCompressedSpritePalette(&gBagSwapSpritePalette);
+ sStateDataPtr->data[0] = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+#define try_alloc(ptr__, size) ({ \
+ void ** ptr = (void **)&(ptr__); \
+ *ptr = Alloc(size); \
+ if (*ptr == NULL) \
+ { \
+ ItemPc_FreeResources(); \
+ ItemPc_FadeAndBail(); \
+ return FALSE; \
+ } \
+})
+
+static bool8 ItemPc_AllocateResourcesForListMenu(void)
+{
+ try_alloc(sListMenuItems, sizeof(struct ListMenuItem) * (PC_ITEMS_COUNT + 1));
+ try_alloc(sUnusedStringAllocation, 14 * (PC_ITEMS_COUNT + 1));
+ return TRUE;
+}
+
+static void ItemPc_BuildListMenuTemplate(void)
+{
+ u16 i;
+
+ for (i = 0; i < sStateDataPtr->nItems; i++)
+ {
+ sListMenuItems[i].label = ItemId_GetName(gSaveBlock1Ptr->pcItems[i].itemId);
+ sListMenuItems[i].index = i;
+ }
+ sListMenuItems[i].label = gFameCheckerText_Cancel;
+ sListMenuItems[i].index = -2;
+
+ gMultiuseListMenuTemplate.items = sListMenuItems;
+ gMultiuseListMenuTemplate.totalItems = sStateDataPtr->nItems + 1;
+ gMultiuseListMenuTemplate.windowId = 0;
+ gMultiuseListMenuTemplate.header_X = 0;
+ gMultiuseListMenuTemplate.item_X = 9;
+ gMultiuseListMenuTemplate.cursor_X = 1;
+ gMultiuseListMenuTemplate.lettersSpacing = 1;
+ gMultiuseListMenuTemplate.itemVerticalPadding = 2;
+ gMultiuseListMenuTemplate.upText_Y = 2;
+ gMultiuseListMenuTemplate.maxShowed = sStateDataPtr->maxShowed;
+ gMultiuseListMenuTemplate.fontId = 2;
+ gMultiuseListMenuTemplate.cursorPal = 2;
+ gMultiuseListMenuTemplate.fillValue = 0;
+ gMultiuseListMenuTemplate.cursorShadowPal = 3;
+ gMultiuseListMenuTemplate.moveCursorFunc = ItemPc_MoveCursorFunc;
+ gMultiuseListMenuTemplate.itemPrintFunc = ItemPc_ItemPrintFunc;
+ gMultiuseListMenuTemplate.scrollMultiple = 0;
+ gMultiuseListMenuTemplate.cursorKind = 0;
+}
+
+static void ItemPc_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list)
+{
+ u16 itemId;
+ const u8 * desc;
+ if (onInit != TRUE)
+ PlaySE(SE_SELECT);
+
+ if (sStateDataPtr->moveModeOrigPos == 0xFF)
+ {
+ DestroyItemMenuIcon(sStateDataPtr->itemMenuIconSlot ^ 1);
+ if (itemIndex != -2)
+ {
+ itemId = ItemPc_GetItemIdBySlotId(itemIndex);
+ CreateItemMenuIcon(itemId, sStateDataPtr->itemMenuIconSlot);
+ if (ItemId_GetPocket(itemId) == POCKET_TM_CASE)
+ desc = gMoveNames[ItemIdToBattleMoveId(itemId)];
+ else
+ desc = ItemId_GetDescription(itemId);
+ }
+ else
+ {
+ CreateItemMenuIcon(ITEM_N_A, sStateDataPtr->itemMenuIconSlot);
+ desc = gText_ReturnToPC;
+ }
+ sStateDataPtr->itemMenuIconSlot ^= 1;
+ FillWindowPixelBuffer(1, 0);
+ ItemPc_AddTextPrinterParameterized(1, 2, desc, 0, 3, 2, 0, 0, 3);
+ }
+}
+
+static void ItemPc_ItemPrintFunc(u8 windowId, s32 itemId, u8 y)
+{
+ if (sStateDataPtr->moveModeOrigPos != 0xFF)
+ {
+ if (sStateDataPtr->moveModeOrigPos == (u8)itemId)
+ ItemPc_PrintOrRemoveCursorAt(y, 2);
+ else
+ ItemPc_PrintOrRemoveCursorAt(y, 0xFF);
+ }
+ if (itemId != -2)
+ {
+ u16 quantity = ItemPc_GetItemQuantityBySlotId(itemId);
+ ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ ItemPc_AddTextPrinterParameterized(windowId, 0, gStringVar4, 110, y, 0, 0, 0xFF, 1);
+ }
+}
+
+static void ItemPc_PrintOrRemoveCursor(u8 listMenuId, u8 colorIdx)
+{
+ ItemPc_PrintOrRemoveCursorAt(ListMenuGetYCoordForPrintingArrowCursor(listMenuId), colorIdx);
+}
+
+static void ItemPc_PrintOrRemoveCursorAt(u8 y, u8 colorIdx)
+{
+ if (colorIdx == 0xFF)
+ {
+ u8 maxWidth = GetFontAttribute(2, FONTATTR_MAX_LETTER_WIDTH);
+ u8 maxHeight = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT);
+ FillWindowPixelRect(0, 0, 0, y, maxWidth, maxHeight);
+ }
+ else
+ {
+ ItemPc_AddTextPrinterParameterized(0, 2, gFameCheckerText_ListMenuCursor, 0, y, 0, 0, 0, colorIdx);
+ }
+}
+
+static void ItemPc_PrintWithdrawItem(void)
+{
+ ItemPc_AddTextPrinterParameterized(2, 0, gText_WithdrawItem, 0, 1, 0, 1, 0, 0);
+}
+
+static void ItemPc_PlaceTopMenuScrollIndicatorArrows(void)
+{
+ sStateDataPtr->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParameterized(2, 128, 8, 104, sStateDataPtr->nItems - sStateDataPtr->maxShowed + 1, 110, 110, &sListMenuState.scroll);
+}
+
+static void ItemPc_PlaceWithdrawQuantityScrollIndicatorArrows(void)
+{
+ sStateDataPtr->withdrawQuantitySubmenuCursorPos = 1;
+ sStateDataPtr->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParameterized(2, 212, 120, 152, 2, 110, 110, &sStateDataPtr->withdrawQuantitySubmenuCursorPos);
+}
+
+static void ItemPc_RemoveScrollIndicatorArrowPair(void)
+{
+ if (sStateDataPtr->scrollIndicatorArrowPairId != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(sStateDataPtr->scrollIndicatorArrowPairId);
+ sStateDataPtr->scrollIndicatorArrowPairId = 0xFF;
+ }
+}
+
+static void ItemPc_SetCursorPosition(void)
+{
+ if (sListMenuState.scroll != 0 && sListMenuState.scroll + sStateDataPtr->maxShowed > sStateDataPtr->nItems + 1)
+ sListMenuState.scroll = (sStateDataPtr->nItems + 1) - sStateDataPtr->maxShowed;
+ if (sListMenuState.scroll + sListMenuState.row >= sStateDataPtr->nItems + 1)
+ {
+ if (sStateDataPtr->nItems + 1 < 2)
+ sListMenuState.row = 0;
+ else
+ sListMenuState.row = sStateDataPtr->nItems;
+ }
+}
+
+#define try_free(ptr) ({ \
+ void ** ptr__ = (void **)&(ptr); \
+ if (*ptr__ != NULL) \
+ Free(*ptr__); \
+})
+
+static void ItemPc_FreeResources(void)
+{
+ try_free(sStateDataPtr);
+ try_free(sBg1TilemapBuffer);
+ try_free(sListMenuItems);
+ try_free(sUnusedStringAllocation);
+ FreeAllWindowBuffers();
+}
+
+static void Task_ItemPcTurnOff1(u8 taskId)
+{
+ if (sListMenuState.initialized == 1)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ }
+ else
+ {
+ sub_80A0A70(0, 0, 0);
+ PlaySE(SE_PC_OFF);
+ }
+ gTasks[taskId].func = Task_ItemPcTurnOff2;
+}
+
+static void Task_ItemPcTurnOff2(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (!gPaletteFade.active && !sub_80A0AAC())
+ {
+ DestroyListMenuTask(data[0], &sListMenuState.scroll, &sListMenuState.row);
+ if (sStateDataPtr->savedCallback != NULL)
+ SetMainCallback2(sStateDataPtr->savedCallback);
+ else
+ SetMainCallback2(sListMenuState.savedCallback);
+ ItemPc_RemoveScrollIndicatorArrowPair();
+ ItemPc_FreeResources();
+ DestroyTask(taskId);
+ }
+}
+
+static u8 ItemPc_GetCursorPosition(void)
+{
+ return sListMenuState.scroll + sListMenuState.row;
+}
+
+static u16 ItemPc_GetItemIdBySlotId(u16 idx)
+{
+ return gSaveBlock1Ptr->pcItems[idx].itemId;
+}
+
+static u16 ItemPc_GetItemQuantityBySlotId(u16 idx)
+{
+ return GetPcItemQuantity(&gSaveBlock1Ptr->pcItems[idx].quantity);
+}
+
+static void ItemPc_CountPcItems(void)
+{
+ u16 i;
+
+ ItemPcCompaction();
+ sStateDataPtr->nItems = 0;
+ for (i = 0; i < PC_ITEMS_COUNT; sStateDataPtr->nItems++, i++)
+ {
+ if (gSaveBlock1Ptr->pcItems[i].itemId == ITEM_NONE)
+ break;
+ }
+ sStateDataPtr->maxShowed = sStateDataPtr->nItems + 1 <= 6 ? sStateDataPtr->nItems + 1 : 6;
+}
+
+static void ItemPc_SetScrollPosition(void)
+{
+ u8 i;
+
+ if (sListMenuState.row > 3)
+ {
+ for (i = 0; i <= sListMenuState.row - 3; sListMenuState.row--, sListMenuState.scroll++, i++)
+ {
+ if (sListMenuState.scroll + sStateDataPtr->maxShowed == sStateDataPtr->nItems + 1)
+ break;
+ }
+ }
+}
+
+static void ItemPc_SetMessageWindowPalette(int a0)
+{
+ SetBgRectPal(1, 0, 14, 30, 6, a0 + 1);
+ ScheduleBgCopyTilemapToVram(1);
+}
+
+void ItemPc_SetInitializedFlag(u8 a0)
+{
+ sListMenuState.initialized = a0;
+}
+
+static void Task_ItemPcMain(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u16 scroll;
+ u16 row;
+ s32 input;
+
+ if (!gPaletteFade.active && !sub_80A0A98())
+ {
+ if (JOY_NEW(SELECT_BUTTON))
+ {
+ ListMenuGetScrollAndRow(data[0], &scroll, &row);
+ if (scroll + row != sStateDataPtr->nItems)
+ {
+ PlaySE(SE_SELECT);
+ ItemPc_MoveItemModeInit(taskId, scroll + row);
+ return;
+ }
+ }
+ input = ListMenu_ProcessInput(data[0]);
+ ListMenuGetScrollAndRow(data[0], &sListMenuState.scroll, &sListMenuState.row);
+ switch (input)
+ {
+ case -1:
+ break;
+ case -2:
+ PlaySE(SE_SELECT);
+ ItemPc_SetInitializedFlag(0);
+ gTasks[taskId].func = Task_ItemPcTurnOff1;
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ ItemPc_SetMessageWindowPalette(1);
+ ItemPc_RemoveScrollIndicatorArrowPair();
+ data[1] = input;
+ data[2] = ItemPc_GetItemQuantityBySlotId(input);
+ ItemPc_PrintOrRemoveCursor(data[0], 2);
+ gTasks[taskId].func = Task_ItemPcSubmenuInit;
+ break;
+ }
+ }
+}
+
+static void ItemPc_ReturnFromSubmenu(u8 taskId)
+{
+ ItemPc_SetMessageWindowPalette(0);
+ ItemPc_PlaceTopMenuScrollIndicatorArrows();
+ gTasks[taskId].func = Task_ItemPcMain;
+}
+
+static void ItemPc_MoveItemModeInit(u8 taskId, s16 pos)
+{
+ s16 * data = gTasks[taskId].data;
+
+ ListMenuSetUnkIndicatorsStructField(data[0], 16, 1);
+ data[1] = pos;
+ sStateDataPtr->moveModeOrigPos = pos;
+ StringCopy(gStringVar1, ItemId_GetName(ItemPc_GetItemIdBySlotId(data[1])));
+ StringExpandPlaceholders(gStringVar4, gOtherText_WhereShouldTheStrVar1BePlaced);
+ FillWindowPixelBuffer(1, 0x00);
+ ItemPc_AddTextPrinterParameterized(1, 2, gStringVar4, 0, 3, 2, 3, 0, 0);
+ sub_80986A8(-32, ListMenuGetYCoordForPrintingArrowCursor(data[0]));
+ sub_8098660(0);
+ ItemPc_PrintOrRemoveCursor(data[0], 2);
+ gTasks[taskId].func = Task_ItemPcMoveItemModeRun;
+}
+
+static void Task_ItemPcMoveItemModeRun(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ ListMenu_ProcessInput(data[0]);
+ ListMenuGetScrollAndRow(data[0], &sListMenuState.scroll, &sListMenuState.row);
+ sub_80986A8(-32, ListMenuGetYCoordForPrintingArrowCursor(data[0]));
+ if (JOY_NEW(A_BUTTON | SELECT_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sStateDataPtr->moveModeOrigPos = 0xFF;
+ ItemPc_InsertItemIntoNewSlot(taskId, sListMenuState.scroll + sListMenuState.row);
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sStateDataPtr->moveModeOrigPos = 0xFF;
+ ItemPc_MoveItemModeCancel(taskId, sListMenuState.scroll + sListMenuState.row);
+ }
+}
+
+static void ItemPc_InsertItemIntoNewSlot(u8 taskId, u32 pos)
+{
+ s16 * data = gTasks[taskId].data;
+ if (data[1] == pos || data[1] == pos - 1)
+ ItemPc_MoveItemModeCancel(taskId, pos);
+ else
+ {
+ ItemMenu_MoveItemSlotToNewPositionInArray(gSaveBlock1Ptr->pcItems, data[1], pos);
+ DestroyListMenuTask(data[0], &sListMenuState.scroll, &sListMenuState.row);
+ if (data[1] < pos)
+ sListMenuState.row--;
+ ItemPc_BuildListMenuTemplate();
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sListMenuState.scroll, sListMenuState.row);
+ sub_8098660(1);
+ gTasks[taskId].func = Task_ItemPcMain;
+ }
+}
+
+static void ItemPc_MoveItemModeCancel(u8 taskId, u32 pos)
+{
+ s16 * data = gTasks[taskId].data;
+
+ DestroyListMenuTask(data[0], &sListMenuState.scroll, &sListMenuState.row);
+ if (data[1] < pos)
+ sListMenuState.row--;
+ ItemPc_BuildListMenuTemplate();
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sListMenuState.scroll, sListMenuState.row);
+ sub_8098660(1);
+ gTasks[taskId].func = Task_ItemPcMain;
+}
+
+static void Task_ItemPcSubmenuInit(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 windowId;
+
+ ItemPc_SetBorderStyleOnWindow(4);
+ windowId = ItemPc_GetOrCreateSubwindow(0);
+ PrintTextArray(4, 2, 8, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, sItemPcSubmenuOptions);
+ Menu_InitCursor(4, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, 0);
+ CopyItemName(ItemPc_GetItemIdBySlotId(data[1]), gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1);
+ ItemPc_AddTextPrinterParameterized(windowId, 2, gStringVar4, 0, 2, 1, 0, 0, 1);
+ ScheduleBgCopyTilemapToVram(0);
+ gTasks[taskId].func = Task_ItemPcSubmenuRun;
+}
+
+static void Task_ItemPcSubmenuRun(u8 taskId)
+{
+ s8 input = Menu_ProcessInputNoWrapAround();
+ switch (input)
+ {
+ case -1:
+ PlaySE(SE_SELECT);
+ Task_ItemPcCancel(taskId);
+ break;
+ case -2:
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sItemPcSubmenuOptions[input].func.void_u8(taskId);
+ }
+}
+
+static void Task_ItemPcWithdraw(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ ClearStdWindowAndFrameToTransparent(4, FALSE);
+ ItemPc_DestroySubwindow(0);
+ ClearWindowTilemap(4);
+ data[8] = 1;
+ if (ItemPc_GetItemQuantityBySlotId(data[1]) == 1)
+ {
+ PutWindowTilemap(0);
+ ScheduleBgCopyTilemapToVram(0);
+ ItemPc_DoWithdraw(taskId);
+ }
+ else
+ {
+ PutWindowTilemap(0);
+ ItemPc_WithdrawMultipleInitWindow(data[1]);
+ ItemPc_PlaceWithdrawQuantityScrollIndicatorArrows();
+ gTasks[taskId].func = Task_ItemPcHandleWithdrawMultiple;
+ }
+}
+
+static void ItemPc_DoWithdraw(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u16 itemId = ItemPc_GetItemIdBySlotId(data[1]);
+ u8 windowId;
+
+ if (AddBagItem(itemId, data[8]) == TRUE)
+ {
+ ItemUse_SetQuestLogEvent(29, NULL, itemId, 0xFFFF);
+ CopyItemName(itemId, gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gText_WithdrewQuantItem);
+ windowId = ItemPc_GetOrCreateSubwindow(2);
+ AddTextPrinterParameterized(windowId, 2, gStringVar4, 0, 2, 0, NULL);
+ gTasks[taskId].func = Task_ItemPcWaitButtonAndFinishWithdrawMultiple;
+ }
+ else
+ {
+ windowId = ItemPc_GetOrCreateSubwindow(2);
+ AddTextPrinterParameterized(windowId, 2, gText_NoMoreRoomInBag, 0, 2, 0, NULL);
+ gTasks[taskId].func = Task_ItemPcWaitButtonWithdrawMultipleFailed;
+ }
+}
+
+static void Task_ItemPcWaitButtonAndFinishWithdrawMultiple(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u16 itemId;
+
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ itemId = ItemPc_GetItemIdBySlotId(data[1]);
+ RemoveItemFromPC(itemId, data[8]);
+ ItemPcCompaction();
+ Task_ItemPcCleanUpWithdraw(taskId);
+ }
+}
+
+static void Task_ItemPcWaitButtonWithdrawMultipleFailed(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ Task_ItemPcCleanUpWithdraw(taskId);
+ }
+}
+
+static void Task_ItemPcCleanUpWithdraw(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ ItemPc_DestroySubwindow(2);
+ PutWindowTilemap(1);
+ DestroyListMenuTask(data[0], &sListMenuState.scroll, &sListMenuState.row);
+ ItemPc_CountPcItems();
+ ItemPc_SetCursorPosition();
+ ItemPc_BuildListMenuTemplate();
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sListMenuState.scroll, sListMenuState.row);
+ ScheduleBgCopyTilemapToVram(0);
+ ItemPc_ReturnFromSubmenu(taskId);
+}
+
+static void ItemPc_WithdrawMultipleInitWindow(u16 slotId)
+{
+ u16 itemId = ItemPc_GetItemIdBySlotId(slotId);
+
+ CopyItemName(itemId, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_WithdrawHowMany);
+ AddTextPrinterParameterized(ItemPc_GetOrCreateSubwindow(1), 2, gStringVar4, 0, 2, 0, NULL);
+ ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 3);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ ItemPc_SetBorderStyleOnWindow(3);
+ ItemPc_AddTextPrinterParameterized(3, 0, gStringVar4, 8, 10, 1, 0, 0, 1);
+ ScheduleBgCopyTilemapToVram(0);
+}
+
+static void sub_810E670(s16 quantity)
+{
+ FillWindowPixelRect(3, 0x11, 10, 10, 28, 12);
+ ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 3);
+ StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
+ ItemPc_AddTextPrinterParameterized(3, 0, gStringVar4, 8, 10, 1, 0, 0, 1);
+}
+
+static void Task_ItemPcHandleWithdrawMultiple(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
+ sub_810E670(data[8]);
+ else if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ ItemPc_DestroySubwindow(1);
+ ClearWindowTilemap(3);
+ PutWindowTilemap(0);
+ ItemPc_PrintOrRemoveCursor(data[0], 1);
+ ScheduleBgCopyTilemapToVram(0);
+ ItemPc_RemoveScrollIndicatorArrowPair();
+ ItemPc_DoWithdraw(taskId);
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ ClearStdWindowAndFrameToTransparent(3, FALSE);
+ ItemPc_DestroySubwindow(1);
+ ClearWindowTilemap(3);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ItemPc_PrintOrRemoveCursor(data[0], 1);
+ ScheduleBgCopyTilemapToVram(0);
+ ItemPc_RemoveScrollIndicatorArrowPair();
+ ItemPc_ReturnFromSubmenu(taskId);
+ }
+}
+
+static void Task_ItemPcGive(u8 taskId)
+{
+ if (CalculatePlayerPartyCount() == 0)
+ {
+ ClearStdWindowAndFrameToTransparent(4, FALSE);
+ ItemPc_DestroySubwindow(0);
+ ClearWindowTilemap(4);
+ PutWindowTilemap(0);
+ ItemPc_PrintOnWindow5WithContinueTask(taskId, gText_ThereIsNoPokemon, gTask_ItemPcWaitButtonAndExitSubmenu);
+ }
+ else
+ {
+ sStateDataPtr->savedCallback = ItemPc_CB2_SwitchToPartyMenu;
+ Task_ItemPcTurnOff1(taskId);
+ }
+}
+
+static void ItemPc_CB2_SwitchToPartyMenu(void)
+{
+ PartyMenuInit(0, 0, 6, 0, 6, sub_811FB28, ItemPc_CB2_ReturnFromPartyMenu);
+ gUnknown_203B0A0.unkC = ItemPc_GetItemIdBySlotId(ItemPc_GetCursorPosition());
+}
+
+static void ItemPc_CB2_ReturnFromPartyMenu(void)
+{
+ ItemPc_Init(1, NULL);
+}
+
+static void gTask_ItemPcWaitButtonAndExitSubmenu(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ ClearDialogWindowAndFrameToTransparent(5, 0);
+ ClearWindowTilemap(5);
+ PutWindowTilemap(1);
+ ItemPc_PrintOrRemoveCursor(data[0], 1);
+ ScheduleBgCopyTilemapToVram(0);
+ ItemPc_ReturnFromSubmenu(taskId);
+ }
+}
+
+static void Task_ItemPcCancel(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ ClearStdWindowAndFrameToTransparent(4, FALSE);
+ ItemPc_DestroySubwindow(0);
+ ClearWindowTilemap(4);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ ItemPc_PrintOrRemoveCursor(data[0], 1);
+ ScheduleBgCopyTilemapToVram(0);
+ ItemPc_ReturnFromSubmenu(taskId);
+}
+
+static void ItemPc_InitWindows(void)
+{
+ u8 i;
+
+ InitWindows(gUnknown_8453F98);
+ DeactivateAllTextPrinters();
+ TextWindow_SetUserSelectedFrame(0, 0x3C0, 0xE0);
+ TextWindow_SetStdFrame0_WithPal(0, 0x3A3, 0xC0);
+ TextWindow_LoadResourcesStdFrame0(0, 0x3AC, 0xB0);
+ LoadPalette(stdpal_get(2), 0xD0, 0x20);
+ LoadPalette(gTMCaseMainWindowPalette, 0xF0, 0x20);
+ for (i = 0; i < 3; i++)
+ {
+ FillWindowPixelBuffer(i, 0x00);
+ PutWindowTilemap(i);
+ }
+ ScheduleBgCopyTilemapToVram(0);
+ for (i = 0; i < 3; i++)
+ sSubmenuWindowIds[i] = 0xFF;
+}
+
+static void unused_ItemPc_AddTextPrinterParameterized(u8 windowId, const u8 * string, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed)
+{
+ struct TextPrinterTemplate template;
+
+ template.currentChar = string;
+ template.windowId = windowId;
+ template.fontId = 3;
+ template.x = x;
+ template.y = y;
+ template.currentX = x;
+ template.currentY = y;
+ template.fgColor = 2;
+ template.bgColor = 0;
+ template.shadowColor = 3;
+ template.unk = GetFontAttribute(3, FONTATTR_UNKNOWN);
+ template.letterSpacing = letterSpacing + GetFontAttribute(3, FONTATTR_LETTER_SPACING);
+ template.lineSpacing = lineSpacing + GetFontAttribute(3, FONTATTR_LINE_SPACING);
+ AddTextPrinter(&template, speed, NULL);
+}
+
+static void ItemPc_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx)
+{
+ AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_8453F8C[colorIdx], speed, str);
+}
+
+static void ItemPc_SetBorderStyleOnWindow(u8 windowId)
+{
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, 0x3C0, 0x0E);
+}
+
+static u8 ItemPc_GetOrCreateSubwindow(u8 idx)
+{
+ if (sSubmenuWindowIds[idx] == 0xFF)
+ {
+ sSubmenuWindowIds[idx] = AddWindow(&gUnknown_8453FD0[idx]);
+ DrawStdFrameWithCustomTileAndPalette(sSubmenuWindowIds[idx], TRUE, 0x3A3, 0x0C);
+ }
+
+ return sSubmenuWindowIds[idx];
+}
+
+static void ItemPc_DestroySubwindow(u8 idx)
+{
+ ClearStdWindowAndFrameToTransparent(sSubmenuWindowIds[idx], FALSE);
+ ClearWindowTilemap(sSubmenuWindowIds[idx]); // redundant
+ RemoveWindow(sSubmenuWindowIds[idx]);
+ sSubmenuWindowIds[idx] = 0xFF;
+}
+
+static u8 ItemPc_GetSubwindow(u8 idx)
+{
+ return sSubmenuWindowIds[idx];
+}
+
+static void ItemPc_PrintOnWindow5WithContinueTask(u8 taskId, const u8 * str, TaskFunc taskFunc)
+{
+ DisplayMessageAndContinueTask(taskId, 5, 0x3AC, 0x0B, 2, GetTextSpeedSetting(), str, taskFunc);
+ ScheduleBgCopyTilemapToVram(0);
+}
diff --git a/src/item_use.c b/src/item_use.c
new file mode 100644
index 000000000..3653a1699
--- /dev/null
+++ b/src/item_use.c
@@ -0,0 +1,879 @@
+#include "global.h"
+#include "battle.h"
+#include "berry_pouch.h"
+#include "berry_powder.h"
+#include "bike.h"
+#include "coins.h"
+#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_specials.h"
+#include "field_weather.h"
+#include "fieldmap.h"
+#include "item.h"
+#include "item_menu.h"
+#include "item_use.h"
+#include "itemfinder.h"
+#include "mail.h"
+#include "main.h"
+#include "malloc.h"
+#include "map_obj_80688E4.h"
+#include "map_obj_lock.h"
+#include "metatile_behavior.h"
+#include "new_menu_helpers.h"
+#include "overworld.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "quest_log.h"
+#include "region_map.h"
+#include "script.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "teachy_tv.h"
+#include "tm_case.h"
+#include "vs_seeker.h"
+#include "constants/fanfares.h"
+#include "constants/flags.h"
+#include "constants/items.h"
+#include "constants/maps.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+
+EWRAM_DATA void (*sItemUseOnFieldCB)(u8 taskId) = NULL;
+
+void sub_80A1084(void);
+void sub_80A109C(u8 taskId);
+void sub_80A112C(u8 taskId);
+void sub_80A11C0(u8 taskId);
+bool8 sub_80A1194(void);
+void sub_80A1208(void);
+void ItemUseOnFieldCB_Bicycle(u8 taskId);
+bool8 ItemUseCheckFunc_Rod(void);
+void ItemUseOnFieldCB_Rod(u8 taskId);
+void FieldUseFunc_EvoItem(u8 taskId);
+void sub_80A1648(u8 taskId);
+void sub_80A1674(u8 taskId);
+void InitTMCaseFromBag(void);
+void Task_InitTMCaseFromField(u8 taskId);
+void InitBerryPouchFromBag(void);
+void Task_InitBerryPouchFromField(u8 taskId);
+void InitBerryPouchFromBattle(void);
+void InitTeachyTvFromBag(void);
+void Task_InitTeachyTvFromField(u8 taskId);
+void sub_80A19E8(u8 taskId);
+void sub_80A1A44(void);
+void sub_80A1B48(u8 taskId);
+void sub_80A1C08(u8 taskId);
+void sub_80A1CAC(void);
+void sub_80A1CC0(u8 taskId);
+void sub_80A1D58(void);
+void sub_80A1D68(u8 taskId);
+void Task_BattleUse_StatBooster_DelayAndPrint(u8 taskId);
+void Task_BattleUse_StatBooster_WaitButton_ReturnToBattle(u8 taskId);
+
+extern void (*const gUnknown_83E2954[])(void);
+
+void sub_80A0FBC(u8 taskId)
+{
+ u8 itemType;
+ if (gSpecialVar_ItemId == ITEM_ENIGMA_BERRY)
+ itemType = gTasks[taskId].data[4] - 1;
+ else
+ itemType = ItemId_GetType(gSpecialVar_ItemId) - 1;
+ if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH)
+ {
+ BerryPouch_SetExitCallback(gUnknown_83E2954[itemType]);
+ BerryPouch_StartFadeToExitCallback(taskId);
+ }
+ else
+ {
+ ItemMenu_SetExitCallback(gUnknown_83E2954[itemType]);
+ if (itemType == 1)
+ sub_8108CB4();
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+}
+
+void sub_80A103C(u8 taskId)
+{
+ if (gTasks[taskId].data[3] != 1)
+ {
+ gFieldCallback = sub_80A1084;
+ sub_80A0FBC(taskId);
+ }
+ else
+ sItemUseOnFieldCB(taskId);
+}
+
+void sub_80A1084(void)
+{
+ sub_807DC00();
+ CreateTask(sub_80A109C, 8);
+}
+
+void sub_80A109C(u8 taskId)
+{
+ if (sub_807AA70() == TRUE)
+ {
+ sItemUseOnFieldCB(taskId);
+ }
+}
+
+void sub_80A10C4(u8 taskId, bool8 a1, u8 a2, const u8 * str)
+{
+ StringExpandPlaceholders(gStringVar4, str);
+ if (a1 == FALSE)
+ DisplayItemMessageInBag(taskId, a2, gStringVar4, sub_810A1F8);
+ else
+ DisplayItemMessageOnField(taskId, a2, gStringVar4, sub_80A112C);
+}
+
+void sub_80A1110(u8 taskId, bool8 a1)
+{
+ sub_80A10C4(taskId, a1, 4, gUnknown_8416425);
+}
+
+void sub_80A112C(u8 taskId)
+{
+ ClearDialogWindowAndFrame(0, 1);
+ DestroyTask(taskId);
+ sub_80696C0();
+ ScriptContext2_Disable();
+}
+
+u8 GetItemCompatibilityRule(u16 itemId)
+{
+ if (ItemId_GetPocket(itemId) == POCKET_TM_CASE)
+ return 1;
+ else if (ItemId_GetFieldFunc(itemId) == FieldUseFunc_EvoItem)
+ return 2;
+ else
+ return 0;
+}
+
+void sub_80A1184(void)
+{
+ gFieldCallback2 = sub_80A1194;
+}
+
+bool8 sub_80A1194(void)
+{
+ player_bitmagic();
+ ScriptContext2_Enable();
+ sub_807DC00();
+ CreateTask(sub_80A11C0, 10);
+ gUnknown_2031DE0 = 0;
+ return TRUE;
+}
+
+void sub_80A11C0(u8 taskId)
+{
+ if (sub_807AA70() == TRUE)
+ {
+ UnfreezeMapObjects();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+}
+
+void FieldUseFunc_OrangeMail(u8 taskId)
+{
+ ItemMenu_SetExitCallback(sub_80A1208);
+ ItemMenu_StartFadeToExitCallback(taskId);
+}
+
+void sub_80A1208(void)
+{
+ struct MailStruct mail;
+
+ mail.itemId = gSpecialVar_ItemId;
+ sub_80BEBEC(&mail, ReturnToBagFromKeyItem, 0);
+}
+
+void FieldUseFunc_MachBike(u8 taskId)
+{
+ s16 x, y;
+ u8 behavior;
+
+ PlayerGetDestCoords(&x, &y);
+ behavior = MapGridGetMetatileBehaviorAt(x, y);
+
+ if (FlagGet(FLAG_0x830) == TRUE
+ || MetatileBehavior_ReturnFalse_17(behavior) == TRUE
+ || MetatileBehavior_ReturnFalse_18(behavior) == TRUE
+ || MetatileBehavior_ReturnFalse_15(behavior) == TRUE
+ || MetatileBehavior_ReturnFalse_16(behavior) == TRUE)
+ sub_80A10C4(taskId, gTasks[taskId].data[3], 2, gUnknown_8416451);
+ else if (sub_8055C9C() == TRUE && !sub_80BD540())
+ {
+ sItemUseOnFieldCB = ItemUseOnFieldCB_Bicycle;
+ sub_80A103C(taskId);
+ }
+ else
+ sub_80A1110(taskId, gTasks[taskId].data[3]);
+}
+
+void ItemUseOnFieldCB_Bicycle(u8 taskId)
+{
+ if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
+ PlaySE(SE_JITENSYA);
+ StartTransitionToFlipBikeState(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE);
+ sub_80696C0();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+}
+
+void FieldUseFunc_OldRod(u8 taskId)
+{
+ if (ItemUseCheckFunc_Rod() == TRUE)
+ {
+ sItemUseOnFieldCB = ItemUseOnFieldCB_Rod;
+ sub_80A103C(taskId);
+ }
+ else
+ sub_80A1110(taskId, gTasks[taskId].data[3]);
+}
+
+bool8 ItemUseCheckFunc_Rod(void)
+{
+ s16 x, y;
+ u16 behavior;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ behavior = MapGridGetMetatileBehaviorAt(x, y);
+
+ if (MetatileBehavior_IsWaterfall(behavior))
+ return FALSE;
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_4))
+ return FALSE;
+ if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ {
+ if (IsPlayerFacingSurfableFishableWater())
+ return TRUE;
+ }
+ else
+ {
+ if (MetatileBehavior_IsSurfable(behavior) && !MapGridIsImpassableAt(x, y))
+ return TRUE;
+ if (MetatileBehavior_ReturnFalse_6(behavior) == TRUE)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void ItemUseOnFieldCB_Rod(u8 taskId)
+{
+ sub_805D2C0(ItemId_GetSecondaryId(gSpecialVar_ItemId));
+ DestroyTask(taskId);
+}
+
+void ItemUseOutOfBattle_Itemfinder(u8 taskId)
+{
+ IncrementGameStat(GAME_STAT_USED_ITEMFINDER);
+ sItemUseOnFieldCB = sub_813EC8C;
+ sub_80A103C(taskId);
+}
+
+void FieldUseFunc_CoinCase(u8 taskId)
+{
+ ConvertIntToDecimalStringN(gStringVar1, GetCoins(), STR_CONV_MODE_LEFT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416537);
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ if (gTasks[taskId].data[3] == 0)
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
+ else
+ DisplayItemMessageOnField(taskId, 2, gStringVar4, sub_80A112C);
+}
+
+void FieldUseFunc_PowderJar(u8 taskId)
+{
+ ConvertIntToDecimalStringN(gStringVar1, GetBerryPowder(), STR_CONV_MODE_LEFT_ALIGN, 5);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416644);
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ if (gTasks[taskId].data[3] == 0)
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
+ else
+ DisplayItemMessageOnField(taskId, 2, gStringVar4, sub_80A112C);
+}
+
+void FieldUseFunc_PokeFlute(u8 taskId)
+{
+ bool8 wokeSomeoneUp = FALSE;
+ u8 i;
+
+ for (i = 0; i < CalculatePlayerPartyCount(); i++)
+ {
+ if (!ExecuteTableBasedItemEffect(&gPlayerParty[i], ITEM_AWAKENING, i, MOVE_NONE))
+ wokeSomeoneUp = TRUE;
+ }
+
+ if (wokeSomeoneUp)
+ {
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ if (gTasks[taskId].data[3] == 0)
+ DisplayItemMessageInBag(taskId, 2, gUnknown_8416690, sub_80A1648);
+ else
+ DisplayItemMessageOnField(taskId, 2, gUnknown_8416690, sub_80A1648);
+ }
+ else
+ {
+ // Now that's a catchy tune!
+ if (gTasks[taskId].data[3] == 0)
+ DisplayItemMessageInBag(taskId, 2, gUnknown_841665C, sub_810A1F8);
+ else
+ DisplayItemMessageOnField(taskId, 2, gUnknown_841665C, sub_80A112C);
+ }
+}
+
+void sub_80A1648(u8 taskId)
+{
+ PlayFanfareByFanfareNum(FANFARE_POKEFLUTE);
+ gTasks[taskId].func = sub_80A1674;
+}
+
+void sub_80A1674(u8 taskId)
+{
+ if (WaitFanfare(FALSE))
+ {
+ if (gTasks[taskId].data[3] == 0)
+ DisplayItemMessageInBag(taskId, 2, gUnknown_84166A7, sub_810A1F8);
+ else
+ DisplayItemMessageOnField(taskId, 2, gUnknown_84166A7, sub_80A112C);
+ }
+}
+
+void sub_80A16D0(u8 taskId)
+{
+ sub_80A0FBC(taskId);
+}
+
+void FieldUseFunc_Medicine(u8 taskId)
+{
+ gUnknown_3005E98 = sub_81252D0;
+ sub_80A16D0(taskId);
+}
+
+void FieldUseFunc_Ether(u8 taskId)
+{
+ gUnknown_3005E98 = ItemUseCB_PpRestore;
+ sub_80A16D0(taskId);
+}
+
+void FieldUseFunc_PpUp(u8 taskId)
+{
+ gUnknown_3005E98 = dp05_pp_up;
+ sub_80A16D0(taskId);
+}
+
+void FieldUseFunc_RareCandy(u8 taskId)
+{
+ gUnknown_3005E98 = dp05_rare_candy;
+ sub_80A16D0(taskId);
+}
+
+void FieldUseFunc_EvoItem(u8 taskId)
+{
+ gUnknown_3005E98 = sub_8126B60;
+ sub_80A16D0(taskId);
+}
+
+void FieldUseFunc_SacredAsh(u8 taskId)
+{
+ gUnknown_3005E98 = sub_8126894;
+ sub_80A0FBC(taskId);
+}
+
+void FieldUseFunc_TmCase(u8 taskId)
+{
+ if (gTasks[taskId].data[3] == 0)
+ {
+ ItemMenu_SetExitCallback(InitTMCaseFromBag);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else
+ {
+ sub_80CCB68();
+ fade_screen(1, 0);
+ gTasks[taskId].func = Task_InitTMCaseFromField;
+ }
+}
+
+void InitTMCaseFromBag(void)
+{
+ InitTMCase(0, ReturnToBagFromKeyItem, 0);
+}
+
+void Task_InitTMCaseFromField(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ sub_80A1184();
+ InitTMCase(0, CB2_ReturnToField, 1);
+ DestroyTask(taskId);
+ }
+}
+
+void FieldUseFunc_BerryPouch(u8 taskId)
+{
+ if (gTasks[taskId].data[3] == 0)
+ {
+ ItemMenu_SetExitCallback(InitBerryPouchFromBag);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else
+ {
+ sub_80CCB68();
+ fade_screen(1, 0);
+ gTasks[taskId].func = Task_InitBerryPouchFromField;
+ }
+}
+
+void InitBerryPouchFromBag(void)
+{
+ InitBerryPouch(0, ReturnToBagFromKeyItem, 0);
+}
+
+void Task_InitBerryPouchFromField(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ sub_80A1184();
+ InitBerryPouch(0, CB2_ReturnToField, 1);
+ DestroyTask(taskId);
+ }
+}
+
+void BattleUseFunc_BerryPouch(u8 taskId)
+{
+ ItemMenu_SetExitCallback(InitBerryPouchFromBattle);
+ ItemMenu_StartFadeToExitCallback(taskId);
+}
+
+void InitBerryPouchFromBattle(void)
+{
+ InitBerryPouch(4, sub_8107ECC, 0);
+}
+
+void FieldUseFunc_TeachyTv(u8 taskId)
+{
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ if (gTasks[taskId].data[3] == 0)
+ {
+ ItemMenu_SetExitCallback(InitTeachyTvFromBag);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else
+ {
+ sub_80CCB68();
+ fade_screen(1, 0);
+ gTasks[taskId].func = Task_InitTeachyTvFromField;
+ }
+}
+
+void InitTeachyTvFromBag(void)
+{
+ InitTeachyTvController(0, ReturnToBagFromKeyItem);
+}
+
+void Task_InitTeachyTvFromField(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ sub_80A1184();
+ InitTeachyTvController(0, CB2_ReturnToField);
+ DestroyTask(taskId);
+ }
+}
+
+void FieldUseFunc_SuperRepel(u8 taskId)
+{
+ if (VarGet(VAR_REPEL_STEP_COUNT) == 0)
+ {
+ PlaySE(SE_RU_GASYAN);
+ gTasks[taskId].func = sub_80A19E8;
+ }
+ else
+ // An earlier repel is still in effect
+ DisplayItemMessageInBag(taskId, 2, gUnknown_841659E, sub_810A1F8);
+}
+
+void sub_80A19E8(u8 taskId)
+{
+ if (!IsSEPlaying())
+ {
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId));
+ sub_80A1A44();
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
+ }
+}
+
+void sub_80A1A44(void)
+{
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ sub_8108DC8(ItemId_GetPocket(gSpecialVar_ItemId));
+ sub_81089F4(ItemId_GetPocket(gSpecialVar_ItemId));
+ CopyItemName(gSpecialVar_ItemId, gStringVar2);
+ StringExpandPlaceholders(gStringVar4, gUnknown_841658C);
+}
+
+void FieldUseFunc_BlackFlute(u8 taskId)
+{
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ if (gSpecialVar_ItemId == ITEM_WHITE_FLUTE)
+ {
+ FlagSet(FLAG_WHITE_FLUTE_ACTIVE);
+ FlagClear(FLAG_BLACK_FLUTE_ACTIVE);
+ CopyItemName(gSpecialVar_ItemId, gStringVar2);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84165D2);
+ gTasks[taskId].func = sub_80A1B48;
+ gTasks[taskId].data[8] = 0;
+ }
+ else if (gSpecialVar_ItemId == ITEM_BLACK_FLUTE)
+ {
+ FlagSet(FLAG_BLACK_FLUTE_ACTIVE);
+ FlagClear(FLAG_WHITE_FLUTE_ACTIVE);
+ CopyItemName(gSpecialVar_ItemId, gStringVar2);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416600);
+ gTasks[taskId].func = sub_80A1B48;
+ gTasks[taskId].data[8] = 0;
+ }
+}
+
+void sub_80A1B48(u8 taskId)
+{
+ if (++gTasks[taskId].data[8] > 7)
+ {
+ PlaySE(SE_PN_ON);
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
+ }
+}
+
+bool8 CanUseEscapeRopeOnCurrMap(void)
+{
+ if (gMapHeader.escapeRope & 1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void ItemUseOutOfBattle_EscapeRope(u8 taskId)
+{
+ if (CanUseEscapeRopeOnCurrMap() == TRUE)
+ {
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, gMapHeader.regionMapSectionId);
+ sItemUseOnFieldCB = sub_80A1C08;
+ sub_80A103C(taskId);
+ }
+ else
+ sub_80A1110(taskId, gTasks[taskId].data[3]);
+}
+
+void sub_80A1C08(u8 taskId)
+{
+ Overworld_ResetStateAfterDigEscRope();
+ sub_80A1A44();
+ gTasks[taskId].data[0] = 0;
+ DisplayItemMessageOnField(taskId, 2, gStringVar4, sub_80A1C44);
+}
+
+void sub_80A1C44(u8 taskId)
+{
+ ResetInitialPlayerAvatarState();
+ sub_8085620();
+ DestroyTask(taskId);
+}
+
+void FieldUseFunc_TownMap(u8 taskId)
+{
+ if (gTasks[taskId].data[3] == 0)
+ {
+ ItemMenu_SetExitCallback(sub_80A1CAC);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else
+ {
+ sub_80CCB68();
+ fade_screen(1, 0);
+ gTasks[taskId].func = sub_80A1CC0;
+ }
+}
+
+void sub_80A1CAC(void)
+{
+ sub_80BFF50(0, ReturnToBagFromKeyItem);
+}
+
+void sub_80A1CC0(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ sub_80A1184();
+ sub_80BFF50(0, CB2_ReturnToField);
+ DestroyTask(taskId);
+ }
+}
+
+void FieldUseFunc_FameChecker(u8 taskId)
+{
+ ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
+ if (gTasks[taskId].data[3] == 0)
+ {
+ ItemMenu_SetExitCallback(sub_80A1D58);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else
+ {
+ sub_80CCB68();
+ fade_screen(1, 0);
+ gTasks[taskId].func = sub_80A1D68;
+ }
+}
+
+void sub_80A1D58(void)
+{
+ UseFameChecker(ReturnToBagFromKeyItem);
+}
+
+void sub_80A1D68(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ sub_80A1184();
+ UseFameChecker(CB2_ReturnToField);
+ DestroyTask(taskId);
+ }
+}
+
+void FieldUseFunc_VsSeeker(u8 taskId)
+{
+ if ((gMapHeader.mapType != MAP_TYPE_ROUTE
+ && gMapHeader.mapType != MAP_TYPE_TOWN
+ && gMapHeader.mapType != MAP_TYPE_CITY)
+ || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(VIRIDIAN_FOREST)
+ && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(VIRIDIAN_FOREST)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(MT_EMBER_EXTERIOR)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(THREE_ISLAND_BERRY_FOREST)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SIX_ISLAND_PATTERN_BUSH))))
+ {
+ sub_80A1110(taskId, gTasks[taskId].data[3]);
+ }
+ else
+ {
+ sItemUseOnFieldCB = Task_VsSeeker_0;
+ sub_80A103C(taskId);
+ }
+}
+
+void sub_80A1E0C(u8 taskId)
+{
+ sub_80A112C(taskId);
+}
+
+void BattleUseFunc_PokeBallEtc(u8 taskId)
+{
+ if (!IsPlayerPartyAndPokemonStorageFull())
+ {
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ sub_8108CB4();
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+ else
+ {
+ DisplayItemMessageInBag(taskId, 2, gUnknown_8416631, sub_810A1F8);
+ }
+}
+
+void BattleUseFunc_PokeFlute(u8 taskId)
+{
+ sub_8108CB4();
+ ItemMenu_StartFadeToExitCallback(taskId);
+}
+
+void BattleUseFunc_GuardSpec(u8 taskId)
+{
+ if (ExecuteTableBasedItemEffect(&gPlayerParty[gBattlerPartyIndexes[gBattlerInMenuId]], gSpecialVar_ItemId, gBattlerPartyIndexes[gBattlerInMenuId], 0))
+ {
+ DisplayItemMessageInBag(taskId, 2, gUnknown_84169DC, sub_810A1F8);
+ }
+ else
+ {
+ gTasks[taskId].data[8] = 0;
+ gTasks[taskId].func = Task_BattleUse_StatBooster_DelayAndPrint;
+ }
+}
+
+void Task_BattleUse_StatBooster_DelayAndPrint(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (++data[8] > 7)
+ {
+ u16 itemId = gSpecialVar_ItemId;
+ PlaySE(SE_KAIFUKU);
+ RemoveBagItem(itemId, 1);
+ DisplayItemMessageInBag(taskId, 2, Battle_PrintStatBoosterEffectMessage(itemId), Task_BattleUse_StatBooster_WaitButton_ReturnToBattle);
+ }
+}
+
+void Task_BattleUse_StatBooster_WaitButton_ReturnToBattle(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ sub_8108CB4();
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+}
+
+void ItemUse_SwitchToPartyMenuInBattle(u8 taskId)
+{
+ if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH)
+ {
+ BerryPouch_SetExitCallback(sub_81279E0);
+ BerryPouch_StartFadeToExitCallback(taskId);
+ }
+ else
+ {
+ ItemMenu_SetExitCallback(sub_81279E0);
+ ItemMenu_StartFadeToExitCallback(taskId);
+ }
+}
+
+void BattleUseFunc_Medicine(u8 taskId)
+{
+ gUnknown_3005E98 = ItemUseCB_Medicine;
+ ItemUse_SwitchToPartyMenuInBattle(taskId);
+}
+
+void sub_80A1FD8(u8 taskId)
+{
+ gUnknown_3005E98 = sub_8126894;
+ ItemUse_SwitchToPartyMenuInBattle(taskId);
+}
+
+void BattleUseFunc_Ether(u8 taskId)
+{
+ gUnknown_3005E98 = ItemUseCB_PpRestore;
+ ItemUse_SwitchToPartyMenuInBattle(taskId);
+}
+
+void BattleUseFunc_PokeDoll(u8 taskId)
+{
+ if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER))
+ {
+ sub_80A1A44();
+ ItemUse_SetQuestLogEvent(4, 0, gSpecialVar_ItemId, 0xFFFF);
+ DisplayItemMessageInBag(taskId, 2, gStringVar4, ItemMenu_StartFadeToExitCallback);
+ }
+ else
+ sub_80A1110(taskId, 0);
+}
+
+void ItemUseOutOfBattle_EnigmaBerry(u8 taskId)
+{
+ switch (GetItemEffectType(gSpecialVar_ItemId) - 1)
+ {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ gTasks[taskId].data[4] = 1;
+ FieldUseFunc_Medicine(taskId);
+ break;
+ case 9:
+ gTasks[taskId].data[4] = 1;
+ FieldUseFunc_SacredAsh(taskId);
+ break;
+ case 0:
+ gTasks[taskId].data[4] = 1;
+ FieldUseFunc_RareCandy(taskId);
+ break;
+ case 18:
+ case 19:
+ gTasks[taskId].data[4] = 1;
+ FieldUseFunc_PpUp(taskId);
+ break;
+ case 20:
+ gTasks[taskId].data[4] = 1;
+ FieldUseFunc_Ether(taskId);
+ break;
+ default:
+ gTasks[taskId].data[4] = 4;
+ FieldUseFunc_OakStopsYou(taskId);
+ }
+}
+
+void ItemUseInBattle_EnigmaBerry(u8 taskId)
+{
+ switch (GetItemEffectType(gSpecialVar_ItemId))
+ {
+ case 0:
+ BattleUseFunc_GuardSpec(taskId);
+ break;
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 11:
+ BattleUseFunc_Medicine(taskId);
+ break;
+ case 21:
+ BattleUseFunc_Ether(taskId);
+ break;
+ default:
+ FieldUseFunc_OakStopsYou(taskId);
+ }
+}
+
+void FieldUseFunc_OakStopsYou(u8 taskId)
+{
+ if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_8416425);
+ DisplayItemMessageInBerryPouch(taskId, 4, gStringVar4, sub_813E2B8);
+ }
+ else
+ sub_80A1110(taskId, gTasks[taskId].data[3]);
+}
+
+void ItemUse_SetQuestLogEvent(u8 eventId, struct Pokemon * pokemon, u16 itemId, u16 param)
+{
+ struct UnkStruct_ItemUseQuestLog
+ {
+ u16 itemId;
+ u16 unk2;
+ u16 species;
+ u16 param;
+ } * questLog = Alloc(sizeof(*questLog));
+
+ questLog->itemId = itemId;
+ questLog->param = param;
+ if (pokemon != NULL)
+ questLog->species = GetMonData(pokemon, MON_DATA_SPECIES2);
+ else
+ questLog->species = 0xFFFF;
+ sub_8113550(eventId, (void *)questLog);
+ Free(questLog);
+}
diff --git a/src/list_menu.c b/src/list_menu.c
new file mode 100644
index 000000000..5f2bd02b3
--- /dev/null
+++ b/src/list_menu.c
@@ -0,0 +1,786 @@
+#include "global.h"
+#include "menu.h"
+#include "list_menu.h"
+#include "menu_indicators.h"
+#include "new_menu_helpers.h"
+#include "window.h"
+#include "text_window.h"
+#include "main.h"
+#include "task.h"
+#include "graphics.h"
+#include "decompress.h"
+#include "palette.h"
+#include "malloc.h"
+#include "strings.h"
+#include "sound.h"
+#include "pokemon_icon.h"
+#include "constants/songs.h"
+
+struct UnkIndicatorsStruct
+{
+ u8 field_0;
+ u16 *field_4;
+ u16 field_8;
+ u16 field_A;
+ u16 field_C;
+ u16 field_E;
+ u8 field_10;
+ u8 field_11;
+ u8 field_12;
+ u8 field_13;
+ u8 field_14_0:4;
+ u8 field_14_1:4;
+ u8 field_15_0:4;
+ u8 field_15_1:4;
+ u8 field_16_0:3;
+ u8 field_16_1:3;
+ u8 field_16_2:2;
+ u8 field_17_0:6;
+ u8 field_17_1:2;
+};
+
+struct MysteryGiftLinkMenuStruct
+{
+ s32 currItemId;
+ u8 state;
+ u8 windowId;
+ u8 listTaskId;
+};
+
+struct ListMenuOverride
+{
+ u8 cursorPal:4;
+ u8 fillValue:4;
+ u8 cursorShadowPal:4;
+ u8 lettersSpacing:6;
+ u8 field_2_2:6; // unused
+ u8 fontId:7;
+ bool8 enabled:1;
+};
+
+struct MoveMenuInfoIcon
+{
+ u8 width;
+ u8 height;
+ u16 offset;
+};
+
+static EWRAM_DATA struct MysteryGiftLinkMenuStruct sMysteryGiftLinkMenu = {0};
+
+struct ListMenuOverride gListMenuOverride;
+struct ListMenuTemplate gMultiuseListMenuTemplate;
+
+static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
+static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown);
+static void ListMenuPrintEntries(struct ListMenu *list, u16 startIndex, u16 yOffset, u16 count);
+static void ListMenuDrawCursor(struct ListMenu *list);
+static void ListMenuCallSelectionChangedCallback(struct ListMenu *list, u8 onInit);
+static u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorKind);
+
+const struct MoveMenuInfoIcon gMoveMenuInfoIcons[] =
+{
+ { 12, 12, 0x00 }, // Unused
+ { 32, 12, 0x20 }, // Normal icon
+ { 32, 12, 0x64 }, // Fight icon
+ { 32, 12, 0x60 }, // Flying icon
+ { 32, 12, 0x80 }, // Poison icon
+ { 32, 12, 0x48 }, // Ground icon
+ { 32, 12, 0x44 }, // Rock icon
+ { 32, 12, 0x6C }, // Bug icon
+ { 32, 12, 0x68 }, // Ghost icon
+ { 32, 12, 0x88 }, // Steel icon
+ { 32, 12, 0xA4 }, // ??? (Mystery) icon
+ { 32, 12, 0x24 }, // Fire icon
+ { 32, 12, 0x28 }, // Water icon
+ { 32, 12, 0x2C }, // Grass icon
+ { 32, 12, 0x40 }, // Electric icon
+ { 32, 12, 0x84 }, // Psychic icon
+ { 32, 12, 0x4C }, // Ice icon
+ { 32, 12, 0xA0 }, // Dragon icon
+ { 32, 12, 0x8C }, // Dark icon
+ { 40, 12, 0xA8 }, // -Type- icon
+ { 40, 12, 0xC0 }, // -Power- icon
+ { 40, 12, 0xC8 }, // -Accuracy- icon
+ { 40, 12, 0xE0 }, // -PP- icon
+ { 40, 12, 0xE8 }, // -Effect- icon
+};
+
+static void ListMenuDummyTask(u8 taskId)
+{
+}
+
+s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum)
+{
+ switch (sMysteryGiftLinkMenu.state)
+ {
+ case 0:
+ default:
+ sMysteryGiftLinkMenu.windowId = AddWindow(windowTemplate);
+ switch (arg2)
+ {
+ case 2:
+ TextWindow_SetUserSelectedFrame(sMysteryGiftLinkMenu.windowId, tileNum, palNum);
+ case 1:
+ DrawTextBorderOuter(sMysteryGiftLinkMenu.windowId, tileNum, palNum / 16);
+ break;
+ }
+ gMultiuseListMenuTemplate = *listMenuTemplate;
+ gMultiuseListMenuTemplate.windowId = sMysteryGiftLinkMenu.windowId;
+ sMysteryGiftLinkMenu.listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+ CopyWindowToVram(sMysteryGiftLinkMenu.windowId, 1);
+ sMysteryGiftLinkMenu.state = 1;
+ break;
+ case 1:
+ sMysteryGiftLinkMenu.currItemId = ListMenu_ProcessInput(sMysteryGiftLinkMenu.listTaskId);
+ if (JOY_NEW(A_BUTTON))
+ {
+ sMysteryGiftLinkMenu.state = 2;
+ }
+ if (JOY_NEW(B_BUTTON))
+ {
+ sMysteryGiftLinkMenu.currItemId = LIST_CANCEL;
+ sMysteryGiftLinkMenu.state = 2;
+ }
+ if (sMysteryGiftLinkMenu.state == 2)
+ {
+ if (!arg2)
+ {
+ ClearWindowTilemap(sMysteryGiftLinkMenu.windowId);
+ }
+ else
+ {
+ switch (arg2)
+ {
+ case 0: // can never be reached, because of the if statement above
+ ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE);
+ break;
+ case 2:
+ case 1:
+ ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE);
+ break;
+ }
+ }
+ CopyWindowToVram(sMysteryGiftLinkMenu.windowId, 1);
+ }
+ break;
+ case 2:
+ DestroyListMenuTask(sMysteryGiftLinkMenu.listTaskId, NULL, NULL);
+ RemoveWindow(sMysteryGiftLinkMenu.windowId);
+ sMysteryGiftLinkMenu.state = 0;
+ return sMysteryGiftLinkMenu.currItemId;
+ }
+ return LIST_NOTHING_CHOSEN;
+}
+
+u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow)
+{
+ u8 taskId = ListMenuInitInternal(listMenuTemplate, scrollOffset, selectedRow);
+ PutWindowTilemap(listMenuTemplate->windowId);
+ CopyWindowToVram(listMenuTemplate->windowId, 2);
+ return taskId;
+}
+
+u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 scrollOffset, u16 selectedRow)
+{
+ s32 i;
+ u8 taskId = ListMenuInitInternal(listMenuTemplate, scrollOffset, selectedRow);
+
+ for (i = 0; rect[i].palNum != 0xFF; i++)
+ PutWindowRectTilemapOverridePalette(listMenuTemplate->windowId, rect[i].x, rect[i].y, rect[i].width, rect[i].height, rect[i].palNum);
+ CopyWindowToVram(listMenuTemplate->windowId, 2);
+ return taskId;
+}
+
+s32 ListMenu_ProcessInput(u8 listTaskId)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ return list->template.items[list->scrollOffset + list->selectedRow].index;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return LIST_CANCEL;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ ListMenuChangeSelection(list, TRUE, 1, FALSE);
+ return LIST_NOTHING_CHOSEN;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ ListMenuChangeSelection(list, TRUE, 1, TRUE);
+ return LIST_NOTHING_CHOSEN;
+ }
+ else // try to move by one window scroll
+ {
+ bool16 rightButton, leftButton;
+ switch (list->template.scrollMultiple)
+ {
+ case LIST_NO_MULTIPLE_SCROLL:
+ default:
+ leftButton = FALSE;
+ rightButton = FALSE;
+ break;
+ case LIST_MULTIPLE_SCROLL_DPAD:
+ leftButton = gMain.newAndRepeatedKeys & DPAD_LEFT;
+ rightButton = gMain.newAndRepeatedKeys & DPAD_RIGHT;
+ break;
+ case LIST_MULTIPLE_SCROLL_L_R:
+ leftButton = gMain.newAndRepeatedKeys & L_BUTTON;
+ rightButton = gMain.newAndRepeatedKeys & R_BUTTON;
+ break;
+ }
+ if (leftButton)
+ {
+ ListMenuChangeSelection(list, TRUE, list->template.maxShowed, FALSE);
+ return LIST_NOTHING_CHOSEN;
+ }
+ else if (rightButton)
+ {
+ ListMenuChangeSelection(list, TRUE, list->template.maxShowed, TRUE);
+ return LIST_NOTHING_CHOSEN;
+ }
+ else
+ {
+ return LIST_NOTHING_CHOSEN;
+ }
+ }
+}
+
+void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ if (scrollOffset != NULL)
+ *scrollOffset = list->scrollOffset;
+ if (selectedRow != NULL)
+ *selectedRow = list->selectedRow;
+
+ if (list->taskId != TASK_NONE)
+ ListMenuRemoveCursorObject(list->taskId, list->template.cursorKind - 2);
+
+ DestroyTask(listTaskId);
+}
+
+void RedrawListMenu(u8 listTaskId)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue));
+ ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed);
+ ListMenuDrawCursor(list);
+ CopyWindowToVram(list->template.windowId, 2);
+}
+
+static void ChangeListMenuPals(u8 listTaskId, u8 cursorPal, u8 fillValue, u8 cursorShadowPal)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ list->template.cursorPal = cursorPal;
+ list->template.fillValue = fillValue;
+ list->template.cursorShadowPal = cursorShadowPal;
+}
+
+static void ChangeListMenuCoords(u8 listTaskId, u8 x, u8 y)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ SetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_LEFT, x);
+ SetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP, y);
+}
+
+static s32 ListMenuTestInput(struct ListMenuTemplate *template, u32 scrollOffset, u32 selectedRow, u16 keys, u16 *newScrollOffset, u16 *newSelectedRow)
+{
+ struct ListMenu list;
+
+ list.template = *template;
+ list.scrollOffset = scrollOffset;
+ list.selectedRow = selectedRow;
+ list.unk_1C = 0;
+ list.unk_1D = 0;
+ if (keys == DPAD_UP)
+ ListMenuChangeSelection(&list, FALSE, 1, FALSE);
+ if (keys == DPAD_DOWN)
+ ListMenuChangeSelection(&list, FALSE, 1, TRUE);
+
+ if (newScrollOffset != NULL)
+ *newScrollOffset = list.scrollOffset;
+ if (newSelectedRow != NULL)
+ *newSelectedRow = list.selectedRow;
+ return LIST_NOTHING_CHOSEN;
+}
+
+static void ListMenuGetCurrentItemArrayId(u8 listTaskId, u16 *arrayId)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ if (arrayId != NULL)
+ *arrayId = list->scrollOffset + list->selectedRow;
+}
+
+void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ if (scrollOffset != NULL)
+ *scrollOffset = list->scrollOffset;
+ if (selectedRow != NULL)
+ *selectedRow = list->selectedRow;
+}
+
+u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+ u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding;
+
+ return list->selectedRow * yMultiplier + list->template.upText_Y;
+}
+
+static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow)
+{
+ u8 listTaskId = CreateTask(ListMenuDummyTask, 0);
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ list->template = *listMenuTemplate;
+ list->scrollOffset = scrollOffset;
+ list->selectedRow = selectedRow;
+ list->unk_1C = 0;
+ list->unk_1D = 0;
+ list->taskId = TASK_NONE;
+ list->unk_1F = 0;
+ gListMenuOverride.cursorPal = list->template.cursorPal;
+ gListMenuOverride.fillValue = list->template.fillValue;
+ gListMenuOverride.cursorShadowPal = list->template.cursorShadowPal;
+ gListMenuOverride.lettersSpacing = list->template.lettersSpacing;
+ gListMenuOverride.fontId = list->template.fontId;
+ gListMenuOverride.enabled = FALSE;
+ if (list->template.totalItems < list->template.maxShowed)
+ list->template.maxShowed = list->template.totalItems;
+ FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue));
+ ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed);
+ ListMenuDrawCursor(list);
+ ListMenuCallSelectionChangedCallback(list, TRUE);
+
+ return listTaskId;
+}
+
+static void ListMenuPrint(struct ListMenu *list, const u8 *str, u8 x, u8 y)
+{
+ struct TextColor colors;
+ if (gListMenuOverride.enabled)
+ {
+ colors.fgColor = gListMenuOverride.fillValue;
+ colors.bgColor = gListMenuOverride.cursorPal;
+ colors.shadowColor = gListMenuOverride.cursorShadowPal;
+ AddTextPrinterParameterized4(list->template.windowId, gListMenuOverride.fontId, x, y, gListMenuOverride.lettersSpacing, 0, &colors, TEXT_SPEED_FF, str);
+ gListMenuOverride.enabled = FALSE;
+ }
+ else
+ {
+ colors.fgColor = list->template.fillValue;
+ colors.bgColor = list->template.cursorPal;
+ colors.shadowColor = list->template.cursorShadowPal;
+ AddTextPrinterParameterized4(list->template.windowId, list->template.fontId, x, y, list->template.lettersSpacing, 0, &colors, TEXT_SPEED_FF, str);
+ }
+}
+
+static void ListMenuPrintEntries(struct ListMenu *list, u16 startIndex, u16 yOffset, u16 count)
+{
+ s32 i;
+ u8 x, y;
+ u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding;
+
+ for (i = 0; i < count; i++)
+ {
+ if (list->template.items[startIndex].index != LIST_HEADER)
+ x = list->template.item_X;
+ else
+ x = list->template.header_X;
+ y = (yOffset + i) * yMultiplier + list->template.upText_Y;
+ if (list->template.itemPrintFunc != NULL)
+ list->template.itemPrintFunc(list->template.windowId, list->template.items[startIndex].index, y);
+ ListMenuPrint(list, list->template.items[startIndex].label, x, y);
+ startIndex++;
+ }
+}
+
+static void ListMenuDrawCursor(struct ListMenu *list)
+{
+ u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding;
+ u8 x = list->template.cursor_X;
+ u8 y = list->selectedRow * yMultiplier + list->template.upText_Y;
+
+ switch (list->template.cursorKind)
+ {
+ case 0:
+ ListMenuPrint(list, gFameCheckerText_ListMenuCursor, x, y);
+ break;
+ case 1:
+ break;
+ case 2:
+ if (list->taskId == TASK_NONE)
+ list->taskId = ListMenuAddCursorObject(list, 0);
+ ListMenuUpdateCursorObject(list->taskId, GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_LEFT) * 8 - 1, GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP) * 8 + y - 1, 0);
+ break;
+ case 3:
+ if (list->taskId == TASK_NONE)
+ list->taskId = ListMenuAddCursorObject(list, 1);
+ ListMenuUpdateCursorObject(list->taskId, GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_LEFT) * 8 + x, GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP) * 8 + y, 1);
+ break;
+ }
+}
+
+static u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorKind)
+{
+ struct CursorStruct cursor;
+
+ cursor.left = 0;
+ cursor.top = 160;
+ cursor.rowWidth = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8 + 2;
+ cursor.rowHeight = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + 2;
+ cursor.tileTag = 0x4000;
+ cursor.palTag = SPRITE_INVALID_TAG;
+ cursor.palNum = 15;
+ return ListMenuAddCursorObjectInternal(&cursor, cursorKind);
+}
+
+static void ListMenuErasePrintedCursor(struct ListMenu *list, u16 selectedRow)
+{
+ u8 cursorKind = list->template.cursorKind;
+ if (cursorKind == 0)
+ {
+ u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding;
+ u8 width = GetMenuCursorDimensionByFont(list->template.fontId, 0);
+ u8 height = GetMenuCursorDimensionByFont(list->template.fontId, 1);
+ FillWindowPixelRect(list->template.windowId,
+ PIXEL_FILL(list->template.fillValue),
+ list->template.cursor_X,
+ selectedRow * yMultiplier + list->template.upText_Y,
+ width,
+ height);
+ }
+}
+
+static u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, bool8 movingDown)
+{
+ u16 selectedRow = list->selectedRow;
+ u16 scrollOffset = list->scrollOffset;
+ u16 newRow;
+ u32 newScroll;
+
+ if (!movingDown)
+ {
+ if (list->template.maxShowed == 1)
+ newRow = 0;
+ else
+ newRow = list->template.maxShowed - ((list->template.maxShowed / 2) + (list->template.maxShowed % 2)) - 1;
+
+ if (scrollOffset == 0)
+ {
+ while (selectedRow != 0)
+ {
+ selectedRow--;
+ if (list->template.items[scrollOffset + selectedRow].index != LIST_HEADER)
+ {
+ list->selectedRow = selectedRow;
+ return 1;
+ }
+ }
+ return 0;
+ }
+ else
+ {
+ while (selectedRow > newRow)
+ {
+ selectedRow--;
+ if (list->template.items[scrollOffset + selectedRow].index != LIST_HEADER)
+ {
+ list->selectedRow = selectedRow;
+ return 1;
+ }
+ }
+ newScroll = scrollOffset - 1;
+ }
+ }
+ else
+ {
+ if (list->template.maxShowed == 1)
+ newRow = 0;
+ else
+ newRow = ((list->template.maxShowed / 2) + (list->template.maxShowed % 2));
+
+ if (scrollOffset == list->template.totalItems - list->template.maxShowed)
+ {
+ while (selectedRow < list->template.maxShowed - 1)
+ {
+ selectedRow++;
+ if (list->template.items[scrollOffset + selectedRow].index != LIST_HEADER)
+ {
+ list->selectedRow = selectedRow;
+ return 1;
+ }
+ }
+ return 0;
+ }
+ else
+ {
+ while (selectedRow < newRow)
+ {
+ selectedRow++;
+ if (list->template.items[scrollOffset + selectedRow].index != LIST_HEADER)
+ {
+ list->selectedRow = selectedRow;
+ return 1;
+ }
+ }
+ newScroll = scrollOffset + 1;
+ }
+ }
+ list->selectedRow = newRow;
+ list->scrollOffset = newScroll;
+ return 2;
+}
+
+static void ListMenuScroll(struct ListMenu *list, u8 count, bool8 movingDown)
+{
+ if (count >= list->template.maxShowed)
+ {
+ FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue));
+ ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed);
+ }
+ else
+ {
+ u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding;
+
+ if (!movingDown)
+ {
+ u16 y, width, height;
+
+ ScrollWindow(list->template.windowId, 1, count * yMultiplier, PIXEL_FILL(list->template.fillValue));
+ ListMenuPrintEntries(list, list->scrollOffset, 0, count);
+
+ y = (list->template.maxShowed * yMultiplier) + list->template.upText_Y;
+ width = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8;
+ height = (GetWindowAttribute(list->template.windowId, WINDOW_HEIGHT) * 8) - y;
+ FillWindowPixelRect(list->template.windowId,
+ PIXEL_FILL(list->template.fillValue),
+ 0, y, width, height);
+ }
+ else
+ {
+ u16 width;
+
+ ScrollWindow(list->template.windowId, 0, count * yMultiplier, PIXEL_FILL(list->template.fillValue));
+ ListMenuPrintEntries(list, list->scrollOffset + (list->template.maxShowed - count), list->template.maxShowed - count, count);
+
+ width = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8;
+ FillWindowPixelRect(list->template.windowId,
+ PIXEL_FILL(list->template.fillValue),
+ 0, 0, width, list->template.upText_Y);
+ }
+ }
+}
+
+static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown)
+{
+ u16 oldSelectedRow;
+ u8 selectionChange, i, cursorCount;
+
+ oldSelectedRow = list->selectedRow;
+ cursorCount = 0;
+ selectionChange = 0;
+ for (i = 0; i < count; i++)
+ {
+ do
+ {
+ u8 ret = ListMenuUpdateSelectedRowIndexAndScrollOffset(list, movingDown);
+
+ selectionChange |= ret;
+ if (ret != 2)
+ break;
+ cursorCount++;
+ }
+ while (list->template.items[list->scrollOffset + list->selectedRow].index == LIST_HEADER);
+ }
+
+ if (updateCursorAndCallCallback)
+ {
+ switch (selectionChange)
+ {
+ case 0:
+ default:
+ return TRUE;
+ case 1:
+ ListMenuErasePrintedCursor(list, oldSelectedRow);
+ ListMenuDrawCursor(list);
+ ListMenuCallSelectionChangedCallback(list, FALSE);
+ CopyWindowToVram(list->template.windowId, 2);
+ break;
+ case 2:
+ case 3:
+ ListMenuErasePrintedCursor(list, oldSelectedRow);
+ ListMenuScroll(list, cursorCount, movingDown);
+ ListMenuDrawCursor(list);
+ ListMenuCallSelectionChangedCallback(list, FALSE);
+ CopyWindowToVram(list->template.windowId, 2);
+ break;
+ }
+ }
+ return FALSE;
+}
+
+static void ListMenuCallSelectionChangedCallback(struct ListMenu *list, u8 onInit)
+{
+ if (list->template.moveCursorFunc != NULL)
+ list->template.moveCursorFunc(list->template.items[list->scrollOffset + list->selectedRow].index, onInit, list);
+}
+
+void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal)
+{
+ gListMenuOverride.cursorPal = cursorPal;
+ gListMenuOverride.fillValue = fillValue;
+ gListMenuOverride.cursorShadowPal = cursorShadowPal;
+ gListMenuOverride.enabled = TRUE;
+}
+
+void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+{
+ if (!onInit)
+ PlaySE(SE_SELECT);
+}
+
+static s32 ListMenuGetUnkIndicatorsStructFields(u8 taskId, u8 field)
+{
+ struct UnkIndicatorsStruct *data = (struct UnkIndicatorsStruct *)gTasks[taskId].data;
+
+ switch (field)
+ {
+ case 0:
+ case 1:
+ return (s32)(data->field_4);
+ case 2:
+ return data->field_C;
+ case 3:
+ return data->field_E;
+ case 4:
+ return data->field_10;
+ case 5:
+ return data->field_11;
+ case 6:
+ return data->field_12;
+ case 7:
+ return data->field_13;
+ case 8:
+ return data->field_14_0;
+ case 9:
+ return data->field_14_1;
+ case 10:
+ return data->field_15_0;
+ case 11:
+ return data->field_15_1;
+ case 12:
+ return data->field_16_0;
+ case 13:
+ return data->field_16_1;
+ case 14:
+ return data->field_16_2;
+ case 15:
+ return data->field_17_0;
+ case 16:
+ return data->field_17_1;
+ default:
+ return -1;
+ }
+}
+
+void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value)
+{
+ struct UnkIndicatorsStruct *data = (struct UnkIndicatorsStruct *)gTasks[taskId].data;
+
+ switch (field)
+ {
+ case 0:
+ case 1:
+ data->field_4 = (void *)value;
+ break;
+ case 2:
+ data->field_C = value;
+ break;
+ case 3:
+ data->field_E = value;
+ break;
+ case 4:
+ data->field_10 = value;
+ break;
+ case 5:
+ data->field_11 = value;
+ break;
+ case 6:
+ data->field_12 = value;
+ break;
+ case 7:
+ data->field_13 = value;
+ break;
+ case 8:
+ data->field_14_0 = value;
+ break;
+ case 9:
+ data->field_14_1 = value;
+ break;
+ case 10:
+ data->field_15_0 = value;
+ break;
+ case 11:
+ data->field_15_1 = value;
+ break;
+ case 12:
+ data->field_16_0 = value;
+ break;
+ case 13:
+ data->field_16_1 = value;
+ break;
+ case 14:
+ data->field_16_2 = value;
+ break;
+ case 15:
+ data->field_17_0 = value;
+ break;
+ case 16:
+ data->field_17_1 = value;
+ break;
+ }
+}
+
+void sub_8107CD8(u8 palOffset, u16 speciesId)
+{
+ LoadPalette(GetValidMonIconPalettePtr(speciesId), palOffset, 0x20);
+}
+
+void sub_8107CF8(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y)
+{
+ BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality, 1), x, y, 32, 32);
+}
+
+void sub_8107D38(u8 palOffset, u8 palId)
+{
+ const u16 *palette;
+
+ switch (palId)
+ {
+ case 0:
+ default:
+ palette = gFireRedMenuElements1_Pal;
+ break;
+ case 1:
+ palette = gFireRedMenuElements2_Pal;
+ break;
+ }
+ LoadPalette(palette, palOffset, 0x20);
+}
+
+void BlitMoveInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y)
+{
+ BlitBitmapRectToWindow(windowId, gFireRedMenuElements_Gfx + gMoveMenuInfoIcons[iconId].offset * 32, 0, 0, 128, 128, x, y, gMoveMenuInfoIcons[iconId].width, gMoveMenuInfoIcons[iconId].height);
+}
diff --git a/src/load_save.c b/src/load_save.c
index 6f388e451..0a7bbbfc5 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -6,8 +6,9 @@
#include "random.h"
#include "malloc.h"
#include "item.h"
+#include "save_location.h"
-extern void sub_8099E44(void);
+extern void SetBagPocketsPointers(void);
extern void sub_8110840(void *oldSave);
extern void sub_8055778(int);
extern void sub_8054F38(u32 newKey);
@@ -80,7 +81,7 @@ void SetSaveBlocksPointers(void)
*sav1_LocalVar = (void*)(&gSaveBlock1) + offset;
gPokemonStoragePtr = (void*)(&gPokemonStorage) + offset;
- sub_8099E44();
+ SetBagPocketsPointers();
sub_8110840(oldSave);
}
@@ -132,28 +133,28 @@ void MoveSaveBlocks_ResetHeap(void)
u32 sav2_x1_query_bit1(void)
{
- return gSaveBlock2Ptr->specialSaveWarp & 1;
+ return gSaveBlock2Ptr->specialSaveWarpFlags & CONTINUE_GAME_WARP;
}
void sav2_x9_clear_bit1(void)
{
- gSaveBlock2Ptr->specialSaveWarp &= ~1;
+ gSaveBlock2Ptr->specialSaveWarpFlags &= ~CONTINUE_GAME_WARP;
}
void sub_804C1AC(void)
{
- gSaveBlock2Ptr->specialSaveWarp |= 1;
+ gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP;
}
void sub_804C1C0(void)
{
sub_8055778(0);
- gSaveBlock2Ptr->specialSaveWarp |= 1;
+ gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP;
}
void sav2_gender2_inplace_and_xFE(void)
{
- gSaveBlock2Ptr->specialSaveWarp &= ~1;
+ gSaveBlock2Ptr->specialSaveWarpFlags &= ~CONTINUE_GAME_WARP;
}
void SavePlayerParty(void)
diff --git a/src/mail_data.c b/src/mail_data.c
new file mode 100644
index 000000000..d4fa649e1
--- /dev/null
+++ b/src/mail_data.c
@@ -0,0 +1,186 @@
+#include "global.h"
+#include "text.h"
+#include "mail.h"
+#include "mail_data.h"
+#include "constants/species.h"
+#include "constants/items.h"
+#include "pokemon_icon.h"
+
+void ClearMailData(void)
+{
+ u8 i;
+
+ for (i = 0; i < MAIL_COUNT; i++)
+ ClearMailStruct(&gSaveBlock1Ptr->mail[i]);
+}
+
+void ClearMailStruct(struct MailStruct *mail)
+{
+ s32 i;
+
+ for (i = 0; i < MAIL_WORDS_COUNT; i++)
+ mail->words[i] = 0xFFFF;
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ mail->playerName[i] = EOS;
+ for (i = 0; i < 4; i++)
+ mail->trainerId[i] = 0;
+ mail->species = SPECIES_BULBASAUR;
+ mail->itemId = ITEM_NONE;
+}
+
+bool8 MonHasMail(struct Pokemon *mon)
+{
+ u16 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM);
+ if (ItemIsMail(heldItem) && GetMonData(mon, MON_DATA_MAIL) != 0xFF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u8 GiveMailToMon(struct Pokemon *mon, u16 itemId)
+{
+ u8 heldItem[2];
+ u8 id, i;
+ u16 species;
+ u32 personality;
+
+ heldItem[0] = itemId;
+ heldItem[1] = itemId >> 8;
+ for (id = 0; id < PARTY_SIZE; id++)
+ {
+ if (gSaveBlock1Ptr->mail[id].itemId == 0)
+ {
+ for (i = 0; i < MAIL_WORDS_COUNT; i++)
+ gSaveBlock1Ptr->mail[id].words[i] = 0xFFFF;
+ for (i = 0; i < PLAYER_NAME_LENGTH - 1 && gSaveBlock2Ptr->playerName[i] != EOS; i++)
+ gSaveBlock1Ptr->mail[id].playerName[i] = gSaveBlock2Ptr->playerName[i];
+ for (; i <= 5; i++)
+ gSaveBlock1Ptr->mail[id].playerName[i] = CHAR_SPACE;
+ gSaveBlock1Ptr->mail[id].playerName[i] = EOS;
+ for (i = 0; i < 4; i++)
+ gSaveBlock1Ptr->mail[id].trainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
+ species = GetBoxMonData(&mon->box, MON_DATA_SPECIES);
+ personality = GetBoxMonData(&mon->box, MON_DATA_PERSONALITY);
+ gSaveBlock1Ptr->mail[id].species = SpeciesToMailSpecies(species, personality);
+ gSaveBlock1Ptr->mail[id].itemId = itemId;
+ SetMonData(mon, MON_DATA_MAIL, &id);
+ SetMonData(mon, MON_DATA_HELD_ITEM, heldItem);
+ return id;
+ }
+ }
+ return 0xFF;
+}
+
+u16 SpeciesToMailSpecies(u16 species, u32 personality)
+{
+ if (species == SPECIES_UNOWN) {
+ u32 mailSpecies = GetUnownLetterByPersonality(personality) + 30000;
+ return mailSpecies;
+ }
+ return species;
+}
+
+u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *unownLetter)
+{
+ u16 result;
+
+ if (mailSpecies >= 30000 && mailSpecies < (30000 + UNOWN_FORM_COUNT))
+ {
+ result = SPECIES_UNOWN;
+ *unownLetter = mailSpecies - 30000;
+ }
+ else
+ {
+ result = mailSpecies;
+ }
+ return result;
+}
+
+u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail)
+{
+ u8 heldItem[2];
+ u16 itemId = mail->itemId;
+ u8 mailId = GiveMailToMon(mon, itemId);
+
+ if (mailId == 0xFF)
+ return 0xFF;
+ gSaveBlock1Ptr->mail[mailId] = *mail;
+ SetMonData(mon, MON_DATA_MAIL, &mailId);
+ heldItem[0] = itemId;
+ heldItem[1] = itemId >> 8;
+
+ SetMonData(mon, MON_DATA_HELD_ITEM, heldItem);
+
+ return mailId;
+}
+
+static bool32 DummyMailFunc(void)
+{
+ return FALSE;
+}
+
+void TakeMailFromMon(struct Pokemon *mon)
+{
+ u8 heldItem[2];
+ u8 mailId;
+
+ if (MonHasMail(mon))
+ {
+ mailId = GetMonData(mon, MON_DATA_MAIL);
+ gSaveBlock1Ptr->mail[mailId].itemId = ITEM_NONE;
+ mailId = 0xFF;
+ heldItem[0] = ITEM_NONE;
+ heldItem[1] = ITEM_NONE << 8;
+ SetMonData(mon, MON_DATA_MAIL, &mailId);
+ SetMonData(mon, MON_DATA_HELD_ITEM, heldItem);
+ }
+}
+
+void ClearMailItemId(u8 mailId)
+{
+ gSaveBlock1Ptr->mail[mailId].itemId = ITEM_NONE;
+}
+
+u8 TakeMailFromMon2(struct Pokemon *mon)
+{
+ u8 i, newMailId;
+ u8 newHeldItem[2];
+
+ newHeldItem[0] = ITEM_NONE;
+ newHeldItem[1] = ITEM_NONE << 8;
+ newMailId = 0xFF;
+ for (i = PARTY_SIZE; i < MAIL_COUNT; i++)
+ {
+ if (gSaveBlock1Ptr->mail[i].itemId == ITEM_NONE)
+ {
+ memcpy(&gSaveBlock1Ptr->mail[i], &gSaveBlock1Ptr->mail[GetMonData(mon, MON_DATA_MAIL)], sizeof(struct MailStruct));
+ gSaveBlock1Ptr->mail[GetMonData(mon, MON_DATA_MAIL)].itemId = ITEM_NONE;
+ SetMonData(mon, MON_DATA_MAIL, &newMailId);
+ SetMonData(mon, MON_DATA_HELD_ITEM, newHeldItem);
+ return i;
+ }
+ }
+ return 0xFF;
+}
+
+bool8 ItemIsMail(u16 itemId)
+{
+ switch (itemId)
+ {
+ case ITEM_ORANGE_MAIL:
+ case ITEM_HARBOR_MAIL:
+ case ITEM_GLITTER_MAIL:
+ case ITEM_MECH_MAIL:
+ case ITEM_WOOD_MAIL:
+ case ITEM_WAVE_MAIL:
+ case ITEM_BEAD_MAIL:
+ case ITEM_SHADOW_MAIL:
+ case ITEM_TROPIC_MAIL:
+ case ITEM_DREAM_MAIL:
+ case ITEM_FAB_MAIL:
+ case ITEM_RETRO_MAIL:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
diff --git a/src/main.c b/src/main.c
index bfab49c49..0d4e2ee1e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -5,6 +5,7 @@
#include "dma3.h"
#include "gba/flash_internal.h"
#include "battle.h"
+#include "help_system.h"
extern u16 GetGpuReg(u8);
extern void SetGpuReg(u8, u16);
@@ -32,7 +33,6 @@ extern u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void));
extern void ScanlineEffect_Stop(void);
extern void sub_80F50F4(void);
extern bool32 sub_80F5118(void);
-extern bool8 sub_813B870(void);
extern struct SoundInfo gSoundInfo;
extern u32 gFlashMemoryPresent;
@@ -55,7 +55,12 @@ static void VCountIntr(void);
static void SerialIntr(void);
static void IntrDummy(void);
-const u8 gGameVersion = VERSION_FIRE_RED;
+#if defined(FIRERED)
+#define GAME_VERSION VERSION_FIRE_RED
+#elif defined(LEAF_GREEN)
+#define GAME_VERSION VERSION_LEAF_GREEN
+#endif
+const u8 gGameVersion = GAME_VERSION;
const u8 gGameLanguage = GAME_LANGUAGE;
@@ -96,13 +101,13 @@ u8 gUnknown_3003D84;
static IntrFunc * const sTimerIntrFunc = gIntrTable + 0x7;
-extern u16 gTrainerId;
+EWRAM_DATA u8 gDecompressionBuffer[0x4000] = {0};
+EWRAM_DATA u16 gTrainerId = 0;
+
extern bool8 gUnknown_3005ECC;
extern bool8 gWirelessCommType;
extern bool8 gUnknown_3005E88;
-EWRAM_DATA void (**gFlashTimerIntrFunc)(void) = NULL;
-
static void UpdateLinkAndCallCallbacks(void);
static void InitMainCallbacks(void);
static void CallCallbacks(void);
@@ -116,7 +121,7 @@ void EnableVCountIntrAtLine150(void);
void AgbMain()
{
RegisterRamReset(RESET_ALL);
- *(vu16 *)BG_PLTT = 0x7FFF;
+ *(vu16 *)BG_PLTT = RGB_WHITE;
InitGpuRegManager();
REG_WAITCNT = WAITCNT_PREFETCH_ENABLE | WAITCNT_WS0_S_1 | WAITCNT_WS0_N_3;
InitKeys();
@@ -206,7 +211,7 @@ static void InitMainCallbacks(void)
static void CallCallbacks(void)
{
- if (!sub_80F5118() && !sub_813B870())
+ if (!sub_80F5118() && !RunHelpSystemCallback())
{
if (gMain.callback1)
gMain.callback1();
diff --git a/src/map_obj_lock.c b/src/map_obj_lock.c
index cdd74a5b9..f89819647 100644
--- a/src/map_obj_lock.c
+++ b/src/map_obj_lock.c
@@ -89,7 +89,7 @@ void LockSelectedMapObject(void)
void sub_80696C0(void)
{
u8 fieldObjectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[fieldObjectId]);
+ FieldObjectClearHeldMovementIfFinished(&gMapObjects[fieldObjectId]);
sub_80974D8();
UnfreezeMapObjects();
}
@@ -98,9 +98,9 @@ void sub_80696F0(void)
{
u8 fieldObjectId;
if (gMapObjects[gSelectedEventObject].active)
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedEventObject]);
+ FieldObjectClearHeldMovementIfFinished(&gMapObjects[gSelectedEventObject]);
fieldObjectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[fieldObjectId]);
+ FieldObjectClearHeldMovementIfFinished(&gMapObjects[fieldObjectId]);
sub_80974D8();
UnfreezeMapObjects();
}
diff --git a/src/menu.c b/src/menu.c
new file mode 100644
index 000000000..bef442d84
--- /dev/null
+++ b/src/menu.c
@@ -0,0 +1,878 @@
+#include "global.h"
+#include "bg.h"
+#include "malloc.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "text_window.h"
+#include "window.h"
+#include "sound.h"
+#include "palette.h"
+#include "constants/songs.h"
+
+struct Menu
+{
+ u8 left;
+ u8 top;
+ s8 cursorPos;
+ s8 minCursorPos;
+ s8 maxCursorPos;
+ u8 windowId;
+ u8 fontId;
+ u8 optionWidth;
+ u8 optionHeight;
+ u8 columns;
+ u8 rows;
+ bool8 APressMuted;
+};
+
+static EWRAM_DATA struct Menu sMenu = {0};
+static EWRAM_DATA u16 sTileNum = 0;
+static EWRAM_DATA u8 sPaletteNum = 0;
+static EWRAM_DATA u8 sYesNoWindowId = 0;
+static EWRAM_DATA u8 sTopBarWindowId = 0;
+
+static void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void WindowFunc_ClearStdWindowAndFrameToTransparent(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static u8 MultichoiceGrid_MoveCursor(s8 deltaX, s8 deltaY);
+
+static const struct TextColor gUnknown_8456618 =
+{
+ .fgColor = 15,
+ .bgColor = 1,
+ .shadowColor = 2,
+};
+
+void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum)
+{
+ sTileNum = tileNum;
+ sPaletteNum = paletteNum;
+ CallWindowFunction(windowId, WindowFunc_DrawDialogFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+// not used
+static void DrawDialogFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 tileNum)
+{
+ sTileNum = tileNum;
+ sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
+ CallWindowFunction(windowId, WindowFunc_DrawDialogFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, sTileNum, tilemapLeft - 2, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 1, tilemapLeft - 1, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 2, tilemapLeft, tilemapTop - 1, width, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 3, tilemapLeft + width, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 4, tilemapLeft + width + 1, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 5, tilemapLeft - 2, tilemapTop, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 6, tilemapLeft - 1, tilemapTop, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 8, tilemapLeft + width, tilemapTop, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 9, tilemapLeft + width + 1, tilemapTop, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 10, tilemapLeft - 2, tilemapTop + 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 11, tilemapLeft - 1, tilemapTop + 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 12, tilemapLeft + width, tilemapTop + 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 13, tilemapLeft + width + 1, tilemapTop + 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 10), tilemapLeft - 2, tilemapTop + 2, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 11), tilemapLeft - 1, tilemapTop + 2, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 12), tilemapLeft + width, tilemapTop + 2, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 13), tilemapLeft + width + 1, tilemapTop + 2, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 5), tilemapLeft - 2, tilemapTop + 3, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 6), tilemapLeft - 1, tilemapTop + 3, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 8), tilemapLeft + width, tilemapTop + 3, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 9), tilemapLeft + width + 1, tilemapTop + 3, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum), tilemapLeft - 2, tilemapTop + 4, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 1), tilemapLeft - 1, tilemapTop + 4, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 2), tilemapLeft, tilemapTop + 4, width, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 3), tilemapLeft + width, tilemapTop + 4, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 4), tilemapLeft + width + 1, tilemapTop + 4, 1, 1, sPaletteNum);
+}
+
+void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram)
+{
+ // The palette slot doesn't matter, since the tiles are transparent.
+ CallWindowFunction(windowId, WindowFunc_ClearDialogWindowAndFrameNullPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
+ ClearWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, 0, tilemapLeft - 2, tilemapTop - 1, width + 4, height + 2, 0);
+}
+
+void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum)
+{
+ sTileNum = baseTileNum;
+ sPaletteNum = paletteNum;
+ CallWindowFunction(windowId, WindowFunc_DrawStdFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+// not used
+static void DrawStdFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 baseTileNum)
+{
+ sTileNum = baseTileNum;
+ sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
+ CallWindowFunction(windowId, WindowFunc_DrawStdFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, sTileNum, tilemapLeft - 1, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 1, tilemapLeft, tilemapTop - 1, width, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 2, tilemapLeft + width, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 3, tilemapLeft - 1, tilemapTop, 1, height, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 5, tilemapLeft + width, tilemapTop, 1, height, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 6, tilemapLeft - 1, tilemapTop + height, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 7, tilemapLeft, tilemapTop + height, width, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 8, tilemapLeft + width, tilemapTop + height, 1, 1, sPaletteNum);
+}
+
+void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, WindowFunc_ClearStdWindowAndFrameToTransparent);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
+ ClearWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_ClearStdWindowAndFrameToTransparent(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, 0);
+}
+
+/*
+ The following functions are used for handling top bar window
+ in hall of fame screen and story mode screen before oak intro.
+ However, you can still designate a yPos value to place that bar
+ as well as the bar width.
+ The xPos is simply computed according to width (always right aligned).
+*/
+u8 CreateTopBarWindowLoadPalette(u8 bg, u8 width, u8 yPos, u8 palette, u16 baseTile)
+{
+ struct WindowTemplate window;
+
+ memset(&window, 0, sizeof(window));
+ if (bg > 3)
+ window.bg = 0;
+ else
+ window.bg = bg;
+ window.tilemapTop = yPos;
+ window.height = 2;
+ window.tilemapLeft = 0x1E - width;
+ window.width = width;
+ window.paletteNum = palette;
+ window.baseBlock = baseTile;
+ sTopBarWindowId = AddWindow(&window);
+ if (palette > 15)
+ palette = 15 * 16;
+ else
+ palette *= 16;
+ LoadPalette(stdpal_get(2), palette, 0x20);
+ return sTopBarWindowId;
+}
+
+void TopBarWindowPrintString(const u8 *string, u8 unused, bool8 copyToVram)
+{
+ s32 width;
+
+ if (sTopBarWindowId != 0xFF)
+ {
+ PutWindowTilemap(sTopBarWindowId);
+ FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(15));
+ width = GetStringWidth(0, string, 0);
+ AddTextPrinterParameterized3(sTopBarWindowId, 0, -20 - width, 1, &gUnknown_8456618, 0, string);
+ if (copyToVram)
+ CopyWindowToVram(sTopBarWindowId, 3);
+ }
+}
+
+void TopBarWindowPrintTwoStrings(const u8 *string, const u8 *string2, bool8 fgColorChooser, u8 unused, bool8 copyToVram)
+{
+ struct TextColor color;
+ s32 fgColor, width;
+
+ if ( sTopBarWindowId != 0xFF )
+ {
+ if (fgColorChooser)
+ {
+ color.fgColor = 0;
+ color.bgColor = 1;
+ color.shadowColor = 2;
+ }
+ else
+ {
+ color.fgColor = 15;
+ color.bgColor = 1;
+ color.shadowColor = 2;
+ }
+
+ PutWindowTilemap(sTopBarWindowId);
+ FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(15));
+ if (string2)
+ {
+ width = GetStringWidth(0, string2, 0);
+ AddTextPrinterParameterized3(sTopBarWindowId, 0, -20 - width, 1, &color, 0, string2);
+ }
+ AddTextPrinterParameterized4(sTopBarWindowId, 1, 4, 1, 0, 0, &color, 0, string);
+ if (copyToVram)
+ CopyWindowToVram(sTopBarWindowId, 3);
+ }
+}
+
+// not used
+static void CopyTopBarWindowToVram(void)
+{
+ if (sTopBarWindowId != 0xFF)
+ CopyWindowToVram(sTopBarWindowId, 3);
+}
+
+void ClearTopBarWindow(void)
+{
+ if (sTopBarWindowId != 0xFF)
+ {
+ FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(15));
+ CopyWindowToVram(sTopBarWindowId, 3);
+ }
+}
+
+void DestroyTopBarWindow(void)
+{
+ if (sTopBarWindowId != 0xFF)
+ {
+ FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(0));
+ ClearWindowTilemap(sTopBarWindowId);
+ CopyWindowToVram(sTopBarWindowId, 3);
+ RemoveWindow(sTopBarWindowId);
+ sTopBarWindowId = 0xFF;
+ }
+}
+
+u8 Menu_InitCursorInternal(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos, bool8 APressMuted)
+{
+ s32 pos;
+
+ sMenu.left = left;
+ sMenu.top = top;
+ sMenu.minCursorPos = 0;
+ sMenu.maxCursorPos = numChoices - 1;
+ sMenu.windowId = windowId;
+ sMenu.fontId = fontId;
+ sMenu.optionHeight = cursorHeight;
+ sMenu.APressMuted = APressMuted;
+ pos = initialCursorPos;
+ if (pos < 0 || pos > sMenu.maxCursorPos)
+ sMenu.cursorPos = 0;
+ else
+ sMenu.cursorPos = pos;
+
+ Menu_MoveCursor(0);
+ return sMenu.cursorPos;
+}
+
+u8 Menu_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos)
+{
+ return Menu_InitCursorInternal(windowId, fontId, left, top, cursorHeight, numChoices, initialCursorPos, 0);
+}
+
+// not used
+static u8 sub_810F818(u8 windowId, u8 fontId, u8 left, u8 top, u8 numChoices, u8 initialCursorPos)
+{
+ return Menu_InitCursor(windowId, fontId, left, top, GetMenuCursorDimensionByFont(fontId, 1), numChoices, initialCursorPos);
+}
+
+static void Menu_RedrawCursor(u8 oldPos, u8 newPos)
+{
+ u8 width, height;
+
+ width = GetMenuCursorDimensionByFont(sMenu.fontId, 0);
+ height = GetMenuCursorDimensionByFont(sMenu.fontId, 1);
+ FillWindowPixelRect(sMenu.windowId, 1, sMenu.left, sMenu.optionHeight * oldPos + sMenu.top, width, height);
+ AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gFameCheckerText_ListMenuCursor, sMenu.left, sMenu.optionHeight * newPos + sMenu.top, 0, 0);
+}
+
+u8 Menu_MoveCursor(s8 cursorDelta)
+{
+ u8 oldPos = sMenu.cursorPos;
+ s32 newPos = sMenu.cursorPos + cursorDelta;
+
+ if (newPos < sMenu.minCursorPos)
+ sMenu.cursorPos = sMenu.maxCursorPos;
+ else if (newPos > sMenu.maxCursorPos)
+ sMenu.cursorPos = sMenu.minCursorPos;
+ else
+ sMenu.cursorPos += cursorDelta;
+ Menu_RedrawCursor(oldPos, sMenu.cursorPos);
+ return sMenu.cursorPos;
+}
+
+u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta)
+{
+ u8 oldPos = sMenu.cursorPos;
+ s32 newPos = sMenu.cursorPos + cursorDelta;
+
+ if (newPos < sMenu.minCursorPos)
+ sMenu.cursorPos = sMenu.minCursorPos;
+ else if (newPos > sMenu.maxCursorPos)
+ sMenu.cursorPos = sMenu.maxCursorPos;
+ else
+ sMenu.cursorPos += cursorDelta;
+
+ Menu_RedrawCursor(oldPos, sMenu.cursorPos);
+ return sMenu.cursorPos;
+}
+
+u8 Menu_GetCursorPos(void)
+{
+ return sMenu.cursorPos;
+}
+
+s8 Menu_ProcessInput(void)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (!sMenu.APressMuted)
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(-1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 Menu_ProcessInputNoWrapAround(void)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (!sMenu.APressMuted)
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ if (oldPos != Menu_MoveCursorNoWrapAround(-1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ if (oldPos != Menu_MoveCursorNoWrapAround(1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 Menu_ProcessInput_other(void)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (!sMenu.APressMuted)
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(-1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 Menu_ProcessInputNoWrapAround_other(void)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (!sMenu.APressMuted)
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ if (oldPos != Menu_MoveCursorNoWrapAround(-1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ if (oldPos != Menu_MoveCursorNoWrapAround(1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs)
+{
+ u8 i;
+
+ for (i = 0; i < itemCount; i++)
+ AddTextPrinterParameterized(windowId, fontId, strs[i].text, left, (lineHeight * i) + top, 0xFF, NULL);
+ CopyWindowToVram(windowId, 2);
+}
+
+void MultichoiceList_PrintItems(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, u8 letterSpacing, u8 lineSpacing)
+{
+ u8 i;
+
+ for (i = 0; i < itemCount; i++)
+ AddTextPrinterParameterized5(windowId, fontId, strs[i].text, left, (lineHeight * i) + top, 0xFF, NULL, letterSpacing, lineSpacing);
+ CopyWindowToVram(windowId, 2);
+}
+
+void UnionRoomAndTradeMenuPrintOptions(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs)
+{
+ u8 left = GetMenuCursorDimensionByFont(fontId, 0);
+
+ PrintTextArray(windowId, fontId, left, 0, lineHeight, itemCount, strs);
+}
+
+void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *orderArray)
+{
+ u8 i;
+ struct TextPrinterTemplate printer;
+
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.fgColor = GetFontAttribute(fontId, FONTATTR_COLOR_FOREGROUND);
+ printer.bgColor = GetFontAttribute(fontId, FONTATTR_COLOR_BACKGROUND);
+ printer.shadowColor = GetFontAttribute(fontId, FONTATTR_COLOR_SHADOW);
+ printer.unk = GetFontAttribute(fontId, FONTATTR_UNKNOWN);
+ printer.letterSpacing = letterSpacing;
+ printer.lineSpacing = GetFontAttribute(fontId, FONTATTR_LINE_SPACING);
+ printer.x = left;
+ printer.currentX = left;
+ for (i = 0; i < itemCount; i++)
+ {
+ printer.currentChar = strs[orderArray[i]].text;
+ printer.y = (lineHeight * i) + top;
+ printer.currentY = printer.y;
+ AddTextPrinter(&printer, 0xFF, NULL);
+ }
+ CopyWindowToVram(windowId, 2);
+}
+
+// not used
+static void sub_810FDE4(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *orderArray)
+{
+ AddItemMenuActionTextPrinters(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 0, GetFontAttribute(fontId, FONTATTR_LETTER_SPACING), lineHeight, itemCount, strs, orderArray);
+}
+
+struct WindowTemplate SetWindowTemplateFields(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock)
+{
+ struct WindowTemplate template;
+
+ template.bg = bg;
+ template.tilemapLeft = left;
+ template.tilemapTop = top;
+ template.width = width;
+ template.height = height;
+ template.paletteNum = paletteNum;
+ template.baseBlock = baseBlock;
+ return template;
+}
+
+// not used
+static u16 CreateWindowTemplate(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock)
+{
+ struct WindowTemplate template = SetWindowTemplateFields(bg, left, top, width, height, paletteNum, baseBlock);
+ return AddWindow(&template);
+}
+
+void CreateYesNoMenu(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos)
+{
+ struct TextPrinterTemplate textSubPrinter;
+
+ sYesNoWindowId = AddWindow(window);
+ DrawStdFrameWithCustomTileAndPalette(sYesNoWindowId, 1, baseTileNum, paletteNum);
+ textSubPrinter.currentChar = gUnknown_841623D;
+ textSubPrinter.windowId = sYesNoWindowId;
+ textSubPrinter.fontId = fontId;
+ textSubPrinter.x = GetMenuCursorDimensionByFont(fontId, 0) + left;
+ textSubPrinter.y = top;
+ textSubPrinter.currentX = textSubPrinter.x;
+ textSubPrinter.currentY = textSubPrinter.y;
+ textSubPrinter.fgColor = GetFontAttribute(fontId, FONTATTR_COLOR_FOREGROUND);
+ textSubPrinter.bgColor = GetFontAttribute(fontId, FONTATTR_COLOR_BACKGROUND);
+ textSubPrinter.shadowColor = GetFontAttribute(fontId, FONTATTR_COLOR_SHADOW);
+ textSubPrinter.unk = GetFontAttribute(fontId, FONTATTR_UNKNOWN);
+ textSubPrinter.letterSpacing = GetFontAttribute(fontId, FONTATTR_LETTER_SPACING);
+ textSubPrinter.lineSpacing = GetFontAttribute(fontId, FONTATTR_LINE_SPACING);
+ AddTextPrinter(&textSubPrinter, 0xFF, NULL);
+ Menu_InitCursor(sYesNoWindowId, fontId, left, top, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT) + textSubPrinter.lineSpacing, 2, initialCursorPos);
+}
+
+// not used
+static void CreateYesNoMenu2(const struct WindowTemplate *window, u8 paletteNum, u16 baseTileNum, u8 initialCursorPos)
+{
+ CreateYesNoMenu(window, paletteNum, 0, 0, baseTileNum, initialCursorPos, 0);
+}
+
+s8 Menu_ProcessInputNoWrapClearOnChoose(void)
+{
+ s8 result = Menu_ProcessInputNoWrapAround();
+ if (result != MENU_NOTHING_CHOSEN)
+ DestroyYesNoMenu();
+ return result;
+}
+
+void DestroyYesNoMenu(void)
+{
+ ClearStdWindowAndFrameToTransparent(sYesNoWindowId, TRUE);
+ RemoveWindow(sYesNoWindowId);
+}
+
+void MultichoiceGrid_PrintItems(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHeight, u8 cols, u8 rows, const struct MenuAction *strs)
+{
+ u8 width, i, j, yOffset;
+
+ fontId = fontId;
+ itemWidth = itemWidth;
+ itemHeight = itemHeight;
+ width = GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH);
+ yOffset = (16 - GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT)) / 2;
+ for (i = 0; i < rows; ++i)
+ for (j = 0; j < cols; ++j)
+ AddTextPrinterParameterized(windowId, fontId, strs[i * cols + j].text, itemWidth * j + width, yOffset + itemHeight * i, 0xFF, 0);
+ CopyWindowToVram(windowId, 2);
+}
+
+//not used
+static void MultichoiceGrid_PrintItemsCustomOrder(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHeight, u8 cols, u8 rows, const struct MenuAction *strs, const u8 *orderArray)
+{
+ u8 width, i, j;
+
+ fontId = fontId;
+ itemWidth = itemWidth;
+ itemHeight = itemHeight;
+ width = GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH);
+ for (i = 0; i < rows; ++i)
+ for (j = 0; j < cols; ++j)
+ AddTextPrinterParameterized(windowId, fontId, strs[orderArray[i * cols + j]].text, itemWidth * j + width, itemHeight * i, 0xFF, 0);
+ CopyWindowToVram(windowId, 2);
+}
+
+static u8 MultichoiceGrid_InitCursorInternal(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cursorHeight, u8 cols, u8 rows, u8 numChoices, u8 cursorPos)
+{
+ s32 pos;
+
+ sMenu.left = left;
+ sMenu.top = top;
+ sMenu.minCursorPos = 0;
+ sMenu.maxCursorPos = numChoices - 1;
+ sMenu.windowId = windowId;
+ sMenu.fontId = fontId;
+ sMenu.optionWidth = optionWidth;
+ sMenu.optionHeight = cursorHeight;
+ sMenu.columns = cols;
+ sMenu.rows = rows;
+ pos = cursorPos;
+ if (pos < 0 || pos > sMenu.maxCursorPos)
+ sMenu.cursorPos = 0;
+ else
+ sMenu.cursorPos = pos;
+ MultichoiceGrid_MoveCursor(0, 0);
+ return sMenu.cursorPos;
+}
+
+u8 MultichoiceGrid_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cols, u8 rows, u8 cursorPos)
+{
+ s32 cursorHeight = 16;
+ u8 numChoices = cols * rows;
+
+ return MultichoiceGrid_InitCursorInternal(windowId, fontId, left, top, optionWidth, cursorHeight, cols, rows, numChoices, cursorPos);
+}
+
+static void MultichoiceGrid_RedrawCursor(u8 oldCursorPos, u8 newCursorPos)
+{
+ u8 cursorWidth = GetMenuCursorDimensionByFont(sMenu.fontId, 0);
+ u8 cursorHeight = GetMenuCursorDimensionByFont(sMenu.fontId, 1);
+ u8 xPos = (oldCursorPos % sMenu.columns) * sMenu.optionWidth + sMenu.left;
+ u8 yPos = (oldCursorPos / sMenu.columns) * sMenu.optionHeight + sMenu.top;
+
+ FillWindowPixelRect(sMenu.windowId, PIXEL_FILL(1), xPos, yPos, cursorWidth, cursorHeight);
+ xPos = (newCursorPos % sMenu.columns) * sMenu.optionWidth + sMenu.left;
+ yPos = (newCursorPos / sMenu.columns) * sMenu.optionHeight + sMenu.top;
+ AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gFameCheckerText_ListMenuCursor, xPos, yPos, 0, 0);
+}
+
+static u8 MultichoiceGrid_MoveCursor(s8 deltaX, s8 deltaY)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (deltaX)
+ {
+ if ((sMenu.cursorPos % sMenu.columns) + deltaX < 0)
+ sMenu.cursorPos += sMenu.columns - 1;
+ else if ((sMenu.cursorPos % sMenu.columns) + deltaX >= sMenu.columns)
+ sMenu.cursorPos = (sMenu.cursorPos / sMenu.columns) * sMenu.columns;
+ else
+ sMenu.cursorPos += deltaX;
+ }
+ if (deltaY)
+ {
+ if ((sMenu.cursorPos / sMenu.columns) + deltaY < 0)
+ sMenu.cursorPos += sMenu.columns * (sMenu.rows - 1);
+ else if ((sMenu.cursorPos / sMenu.columns) + deltaY >= sMenu.rows)
+ sMenu.cursorPos -= sMenu.columns * (sMenu.rows - 1);
+ else
+ sMenu.cursorPos += (sMenu.columns * deltaY);
+ }
+ if (sMenu.cursorPos > sMenu.maxCursorPos)
+ {
+ sMenu.cursorPos = oldPos;
+ return sMenu.cursorPos;
+ }
+ else
+ {
+ MultichoiceGrid_RedrawCursor(oldPos, sMenu.cursorPos);
+ return sMenu.cursorPos;
+ }
+}
+
+static u8 MultichoiceGrid_MoveCursorIfValid(s8 deltaX, s8 deltaY)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (deltaX)
+ {
+ if (((sMenu.cursorPos % sMenu.columns) + deltaX >= 0) && ((sMenu.cursorPos % sMenu.columns) + deltaX < sMenu.columns))
+ sMenu.cursorPos += deltaX;
+ }
+ if (deltaY)
+ {
+ if (((sMenu.cursorPos / sMenu.columns) + deltaY >= 0) && ((sMenu.cursorPos / sMenu.columns) + deltaY < sMenu.rows))
+ sMenu.cursorPos += (sMenu.columns * deltaY);
+ }
+ if (sMenu.cursorPos > sMenu.maxCursorPos)
+ {
+ sMenu.cursorPos = oldPos;
+ return sMenu.cursorPos;
+ }
+ else
+ {
+ MultichoiceGrid_RedrawCursor(oldPos, sMenu.cursorPos);
+ return sMenu.cursorPos;
+ }
+}
+
+// not used
+static s8 sub_81105A0(void)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(0, -1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(0, 1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_LEFT) || GetLRKeysState() == 1)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(-1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysState() == 2)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 Menu_ProcessInputGridLayout(void)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(0, -1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(0, 1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_LEFT) || GetLRKeysState() == 1)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(-1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysState() == 2)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+// not used
+static s8 sub_81106F4(void)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(0, -1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(0, 1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || sub_80BF66C() == 1)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(-1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || sub_80BF66C() == 2)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+
+ return MENU_NOTHING_CHOSEN;
+}
+
+// not used
+static s8 sub_81107A0(void)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(0, -1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(0, 1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || sub_80BF66C() == 1)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(-1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || sub_80BF66C() == 2)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
diff --git a/src/menu2.c b/src/menu2.c
index 0676fc75e..6a3668cfa 100644
--- a/src/menu2.c
+++ b/src/menu2.c
@@ -424,7 +424,7 @@ static const u8 gUnknown_845FD54[][5] = {
[SPECIES_OLD_UNOWN_QMARK - 1] = {0x20, 0x23, 0x08, 0x20, 0x2d}
};
-void box_print(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * color, s8 speed, const u8 * str)
+void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * color, s8 speed, const u8 * str)
{
struct TextPrinterTemplate printer;
@@ -444,7 +444,7 @@ void box_print(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * colo
AddTextPrinter(&printer, speed, NULL);
}
-void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str)
+void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str)
{
struct TextPrinterTemplate printer;
@@ -464,7 +464,7 @@ void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSp
AddTextPrinter(&printer, speed, NULL);
}
-void sub_812E62C(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing)
+void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing)
{
struct TextPrinterTemplate printer;
@@ -498,13 +498,13 @@ void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y)
}
else
{
- sub_812E62C(windowId, 2, gStringVar4, x, y, 0xFF, NULL, 0, 0);
+ AddTextPrinterParameterized5(windowId, 2, gStringVar4, x, y, 0xFF, NULL, 0, 0);
}
}
// Yeah, no, I'm not bothering with this
NAKED
-void sub_819A080(void * a0, void * a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
+static void sub_812E768(void * a0, void * a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r10\n"
@@ -820,7 +820,7 @@ u8 sub_812EA78(u16 species, u32 personality, u8 a2)
{
if (species == SPECIES_UNOWN)
{
- u8 unownLetter = GetUnownLetterByPersonality(personality);
+ u8 unownLetter = GetUnownLetterByPersonalityLoByte(personality);
switch (unownLetter)
{
case 0:
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
new file mode 100644
index 000000000..fdcb9a56e
--- /dev/null
+++ b/src/menu_helpers.c
@@ -0,0 +1,251 @@
+#include "global.h"
+#include "task.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "window.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "string_util.h"
+#include "text.h"
+#include "sound.h"
+#include "link.h"
+#include "overworld.h"
+#include "mail_data.h"
+#include "field_specials.h"
+#include "constants/songs.h"
+#include "constants/items.h"
+
+static EWRAM_DATA const struct YesNoFuncTable *gUnknown_20399C8 = NULL;
+static EWRAM_DATA TaskFunc gUnknown_20399CC = NULL;
+static EWRAM_DATA u8 gUnknown_20399D0 = {0};
+
+static void Task_ContinueTaskAfterMessagePrints(u8 taskId);
+
+void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc)
+{
+ gUnknown_20399D0 = windowId;
+ DrawDialogFrameWithCustomTileAndPalette(windowId, TRUE, tileNum, paletteNum);
+
+ if (string != gStringVar4)
+ StringExpandPlaceholders(gStringVar4, string);
+
+ gTextFlags.canABSpeedUpPrint = 1;
+ AddTextPrinterParameterized2(windowId, fontId, gStringVar4, textSpeed, NULL, 2, 1, 3);
+ gUnknown_20399CC = taskFunc;
+ gTasks[taskId].func = Task_ContinueTaskAfterMessagePrints;
+}
+
+bool16 RunTextPrinters_CheckActive(u8 textPrinterId)
+{
+ RunTextPrinters();
+ return IsTextPrinterActive(textPrinterId);
+}
+
+static void Task_ContinueTaskAfterMessagePrints(u8 taskId)
+{
+ if (!RunTextPrinters_CheckActive(gUnknown_20399D0))
+ gUnknown_20399CC(taskId);
+}
+
+static void Task_CallYesOrNoCallback(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ gTasks[taskId].func = gUnknown_20399C8->yesFunc;
+ break;
+ case 1:
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ gTasks[taskId].func = gUnknown_20399C8->noFunc;
+ break;
+ }
+}
+
+void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo)
+{
+ CreateYesNoMenu(template, fontId, left, top, tileStart, palette, 0);
+ gUnknown_20399C8 = yesNo;
+ gTasks[taskId].func = Task_CallYesOrNoCallback;
+}
+
+u8 GetLRKeysState(void)
+{
+ if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
+ {
+ if (JOY_NEW(L_BUTTON))
+ return 1;
+ if (JOY_NEW(R_BUTTON))
+ return 2;
+ }
+ return 0;
+}
+
+u8 sub_80BF66C(void)
+{
+ if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
+ {
+ if (JOY_REPT(L_BUTTON))
+ return 1;
+ if (JOY_REPT(R_BUTTON))
+ return 2;
+ }
+ return 0;
+}
+
+bool8 sub_80BF6A8(u16 itemId)
+{
+ if (itemId != ITEM_ENIGMA_BERRY)
+ return TRUE;
+ else if (!gSaveBlock1Ptr->location.mapGroup && gSaveBlock1Ptr->location.mapNum == 1)
+ return FALSE;
+ else if (InUnionRoom() != TRUE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 itemid_80BF6D8_mail_related(u16 itemId)
+{
+ if (IsUpdateLinkStateCBActive() != TRUE && InUnionRoom() != TRUE)
+ return TRUE;
+ else if (ItemIsMail(itemId) != TRUE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MenuHelpers_LinkSomething(void)
+{
+ if (IsUpdateLinkStateCBActive() == TRUE || gReceivedRemoteLinkPlayers == 1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 sub_80BF72C(void)
+{
+ if (!MenuHelpers_LinkSomething())
+ return FALSE;
+ else
+ return sub_8058244();
+}
+
+bool8 sub_80BF748(void)
+{
+ if (sub_80BF72C() == TRUE)
+ return TRUE;
+ else if (sub_800B270() != TRUE)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+void SetVBlankHBlankCallbacksToNull(void)
+{
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+}
+
+void ClearVramOamPltt(void)
+{
+ ResetAllBgsCoordinatesAndBgCntRegs();
+ CpuFill16(0, (void*) VRAM, VRAM_SIZE);
+ CpuFill32(0, (void*) OAM, OAM_SIZE);
+ CpuFill16(0, (void*) PLTT, PLTT_SIZE);
+}
+
+void ResetAllBgsCoordinatesAndBgCntRegs(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG3CNT, 0);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+}
+
+bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1)
+{
+ s16 valBefore = (*arg0);
+
+ if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ (*arg0)++;
+ if ((*arg0) > arg1)
+ (*arg0) = 1;
+
+ if ((*arg0) == valBefore)
+ {
+ return FALSE;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ return TRUE;
+ }
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ (*arg0)--;
+ if ((*arg0) <= 0)
+ (*arg0) = arg1;
+ if ((*arg0) == valBefore)
+ {
+ return FALSE;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ return TRUE;
+ }
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT)
+ {
+ (*arg0) += 10;
+ if ((*arg0) > arg1)
+ (*arg0) = arg1;
+ if ((*arg0) == valBefore)
+ {
+ return FALSE;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ return TRUE;
+ }
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT)
+ {
+ (*arg0) -= 10;
+ if ((*arg0) <= 0)
+ (*arg0) = 1;
+ if ((*arg0) == valBefore)
+ {
+ return FALSE;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+u8 sub_80BF8E4(void)
+{
+ if (!ContextNpcGetTextColor())
+ return 4;
+ else
+ return 5;
+}
diff --git a/src/menu_indicators.c b/src/menu_indicators.c
new file mode 100644
index 000000000..1d6589fb0
--- /dev/null
+++ b/src/menu_indicators.c
@@ -0,0 +1,659 @@
+#include "global.h"
+#include "malloc.h"
+#include "task.h"
+#include "decompress.h"
+#include "palette.h"
+#include "strings.h"
+#include "sprite.h"
+#include "trig.h"
+#include "list_menu.h"
+#include "menu_indicators.h"
+
+struct ScrollIndicatorPair
+{
+ u8 field_0;
+ u16 *scrollOffset;
+ u16 fullyUpThreshold;
+ u16 fullyDownThreshold;
+ u8 topSpriteId;
+ u8 bottomSpriteId;
+ u16 tileTag;
+ u16 palTag;
+};
+
+struct RedOutlineCursor
+{
+ struct SubspriteTable subspriteTable;
+ struct Subsprite *subspritesPtr;
+ u8 spriteId;
+ u16 tileTag;
+ u16 palTag;
+};
+
+struct RedArrowCursor
+{
+ u8 spriteId;
+ u16 tileTag;
+ u16 palTag;
+};
+
+struct ScrollIndicatorTemplate
+{
+ u8 animNum:4;
+ u8 bounceDir:4;
+ u8 multiplier;
+ s16 frequency;
+};
+
+static EWRAM_DATA struct ScrollArrowsTemplate sTempScrollArrowTemplate = {0};
+
+static void SpriteCallback_ScrollIndicatorArrow(struct Sprite *sprite);
+static void SpriteCallback_RedArrowCursor(struct Sprite *sprite);
+static void Task_ScrollIndicatorArrowPair(u8 taskId);
+static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor);
+static void ListMenuUpdateRedArrowCursorObject(u8 taskId, u16 x, u16 y);
+static void ListMenuRemoveRedArrowCursorObject(u8 taskId);
+
+static const struct ScrollIndicatorTemplate sScrollIndicatorTemplates[] =
+{
+ {
+ .animNum = 0,
+ .bounceDir = 0,
+ .multiplier = 2,
+ .frequency = 8,
+ },
+ {
+ .animNum = 1,
+ .bounceDir = 0,
+ .multiplier = 2,
+ .frequency = -8,
+ },
+ {
+ .animNum = 2,
+ .bounceDir = 1,
+ .multiplier = 2,
+ .frequency = 8,
+ },
+ {
+ .animNum = 3,
+ .bounceDir = 1,
+ .multiplier = 2,
+ .frequency = -8,
+ },
+};
+
+static const struct OamData sOamData_ScrollArrowIndicator =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_ScrollArrowIndicator0[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_ScrollArrowIndicator1[] =
+{
+ ANIMCMD_FRAME(0, 30, 1, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_ScrollArrowIndicator2[] =
+{
+ ANIMCMD_FRAME(4, 30),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_ScrollArrowIndicator3[] =
+{
+ ANIMCMD_FRAME(4, 30, 0, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sSpriteAnimTable_ScrollArrowIndicator[] =
+{
+ sSpriteAnim_ScrollArrowIndicator0,
+ sSpriteAnim_ScrollArrowIndicator1,
+ sSpriteAnim_ScrollArrowIndicator2,
+ sSpriteAnim_ScrollArrowIndicator3,
+};
+
+static const struct SpriteTemplate sSpriteTemplate_ScrollArrowIndicator =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &sOamData_ScrollArrowIndicator,
+ .anims = sSpriteAnimTable_ScrollArrowIndicator,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_ScrollIndicatorArrow,
+};
+
+static const struct Subsprite sSubsprite_RedOutline1 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 0,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline2 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 1,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline3 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 2,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline4 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 3,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline5 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 4,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline6 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 5,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline7 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 6,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline8 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 7,
+ .priority = 0,
+};
+
+static const struct OamData sOamData_RedArrowCursor =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_RedArrowCursor[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sSpriteAnimTable_RedArrowCursor[] = { sSpriteAnim_RedArrowCursor };
+
+static const struct SpriteTemplate sSpriteTemplate_RedArrowCursor =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &sOamData_RedArrowCursor,
+ .anims = sSpriteAnimTable_RedArrowCursor,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_RedArrowCursor,
+};
+
+static const u16 sRedArrowPal[] = INCBIN_U16("graphics/interface/red_arrow.gbapal");
+static const u32 sRedArrowOtherGfx[] = INCBIN_U32("graphics/interface/red_arrow_other.4bpp.lz");
+static const u32 sSelectorOutlineGfx[] = INCBIN_U32("graphics/interface/selector_outline.4bpp.lz");
+static const u32 sRedArrowGfx[] = INCBIN_U32("graphics/interface/red_arrow.4bpp.lz");
+
+#define tState data[0]
+#define tAnimNum data[1]
+#define tBounceDir data[2]
+#define tMultiplier data[3]
+#define tFrequency data[4]
+#define tSinePos data[5]
+
+static void SpriteCallback_ScrollIndicatorArrow(struct Sprite *sprite)
+{
+ s32 multiplier;
+
+ switch (sprite->tState)
+ {
+ case 0:
+ StartSpriteAnim(sprite, sprite->tAnimNum);
+ sprite->tState++;
+ break;
+ case 1:
+ switch (sprite->tBounceDir)
+ {
+ case 0:
+ multiplier = sprite->tMultiplier;
+ sprite->pos2.x = (gSineTable[(u8)(sprite->tSinePos)] * multiplier) / 256;
+ break;
+ case 1:
+ multiplier = sprite->tMultiplier;
+ sprite->pos2.y = (gSineTable[(u8)(sprite->tSinePos)] * multiplier) / 256;
+ break;
+ }
+ sprite->tSinePos += sprite->tFrequency;
+ break;
+ }
+}
+
+static u8 AddScrollIndicatorArrowObject(u8 arrowDir, u8 x, u8 y, u16 tileTag, u16 palTag)
+{
+ u8 spriteId;
+ struct SpriteTemplate spriteTemplate;
+
+ spriteTemplate = sSpriteTemplate_ScrollArrowIndicator;
+ spriteTemplate.tileTag = tileTag;
+ spriteTemplate.paletteTag = palTag;
+ spriteId = CreateSprite(&spriteTemplate, x, y, 0);
+ gSprites[spriteId].invisible = TRUE;
+ gSprites[spriteId].tState = 0;
+ gSprites[spriteId].tAnimNum = sScrollIndicatorTemplates[arrowDir].animNum;
+ gSprites[spriteId].tBounceDir = sScrollIndicatorTemplates[arrowDir].bounceDir;
+ gSprites[spriteId].tMultiplier = sScrollIndicatorTemplates[arrowDir].multiplier;
+ gSprites[spriteId].tFrequency = sScrollIndicatorTemplates[arrowDir].frequency;
+ gSprites[spriteId].tSinePos = 0;
+ return spriteId;
+}
+
+#undef tState
+#undef tAnimNum
+#undef tBounceDir
+#undef tMultiplier
+#undef tFrequency
+#undef tSinePos
+
+u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate *arrowInfo, u16 *scrollOffset)
+{
+ struct CompressedSpriteSheet spriteSheet;
+ struct SpritePalette spritePal;
+ struct ScrollIndicatorPair *data;
+ u8 taskId;
+
+ spriteSheet.data = sRedArrowOtherGfx;
+ spriteSheet.size = 0x100;
+ spriteSheet.tag = arrowInfo->tileTag;
+ LoadCompressedSpriteSheet(&spriteSheet);
+ if (arrowInfo->palTag == SPRITE_INVALID_TAG)
+ {
+ LoadPalette(sRedArrowPal, (16 * arrowInfo->palNum) + 0x100, 0x20);
+ }
+ else
+ {
+ spritePal.data = sRedArrowPal;
+ spritePal.tag = arrowInfo->palTag;
+ LoadSpritePalette(&spritePal);
+ }
+ taskId = CreateTask(Task_ScrollIndicatorArrowPair, 0);
+ data = (struct ScrollIndicatorPair *)gTasks[taskId].data;
+
+ data->field_0 = 0;
+ data->scrollOffset = scrollOffset;
+ data->fullyUpThreshold = arrowInfo->fullyUpThreshold;
+ data->fullyDownThreshold = arrowInfo->fullyDownThreshold;
+ data->tileTag = arrowInfo->tileTag;
+ data->palTag = arrowInfo->palTag;
+ data->topSpriteId = AddScrollIndicatorArrowObject(arrowInfo->firstArrowType, arrowInfo->firstX, arrowInfo->firstY, arrowInfo->tileTag, arrowInfo->palTag);
+ data->bottomSpriteId = AddScrollIndicatorArrowObject(arrowInfo->secondArrowType, arrowInfo->secondX, arrowInfo->secondY, arrowInfo->tileTag, arrowInfo->palTag);
+
+ if (arrowInfo->palTag == SPRITE_INVALID_TAG)
+ {
+ gSprites[data->topSpriteId].oam.paletteNum = arrowInfo->palNum;
+ gSprites[data->bottomSpriteId].oam.paletteNum = arrowInfo->palNum;
+ }
+ return taskId;
+}
+
+u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *scrollOffset)
+{
+ if (arrowType == SCROLL_ARROW_UP || arrowType == SCROLL_ARROW_DOWN)
+ {
+ sTempScrollArrowTemplate.firstArrowType = SCROLL_ARROW_UP;
+ sTempScrollArrowTemplate.firstX = commonPos;
+ sTempScrollArrowTemplate.firstY = firstPos;
+ sTempScrollArrowTemplate.secondArrowType = SCROLL_ARROW_DOWN;
+ sTempScrollArrowTemplate.secondX = commonPos;
+ sTempScrollArrowTemplate.secondY = secondPos;
+ }
+ else
+ {
+ sTempScrollArrowTemplate.firstArrowType = SCROLL_ARROW_LEFT;
+ sTempScrollArrowTemplate.firstX = firstPos;
+ sTempScrollArrowTemplate.firstY = commonPos;
+ sTempScrollArrowTemplate.secondArrowType = SCROLL_ARROW_RIGHT;
+ sTempScrollArrowTemplate.secondX = secondPos;
+ sTempScrollArrowTemplate.secondY = commonPos;
+ }
+ sTempScrollArrowTemplate.fullyUpThreshold = 0;
+ sTempScrollArrowTemplate.fullyDownThreshold = fullyDownThreshold;
+ sTempScrollArrowTemplate.tileTag = tileTag;
+ sTempScrollArrowTemplate.palTag = palTag;
+ sTempScrollArrowTemplate.palNum = 0;
+
+ return AddScrollIndicatorArrowPair(&sTempScrollArrowTemplate, scrollOffset);
+}
+
+static void Task_ScrollIndicatorArrowPair(u8 taskId)
+{
+ struct ScrollIndicatorPair *data = (struct ScrollIndicatorPair *)gTasks[taskId].data;
+ u16 currItem = (*data->scrollOffset);
+
+ if (currItem == data->fullyUpThreshold)
+ gSprites[data->topSpriteId].invisible = TRUE;
+ else
+ gSprites[data->topSpriteId].invisible = FALSE;
+
+ if (currItem == data->fullyDownThreshold)
+ gSprites[data->bottomSpriteId].invisible = TRUE;
+ else
+ gSprites[data->bottomSpriteId].invisible = FALSE;
+}
+
+void RemoveScrollIndicatorArrowPair(u8 taskId)
+{
+ struct ScrollIndicatorPair *data = (struct ScrollIndicatorPair *)gTasks[taskId].data;
+
+ if (data->tileTag != SPRITE_INVALID_TAG)
+ FreeSpriteTilesByTag(data->tileTag);
+ if (data->palTag != SPRITE_INVALID_TAG)
+ FreeSpritePaletteByTag(data->palTag);
+ DestroySprite(&gSprites[data->topSpriteId]);
+ DestroySprite(&gSprites[data->bottomSpriteId]);
+ DestroyTask(taskId);
+}
+
+u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind)
+{
+ switch (cursorKind)
+ {
+ case 0:
+ default:
+ return ListMenuAddRedOutlineCursorObject(cursor);
+ case 1:
+ return ListMenuAddRedArrowCursorObject(cursor);
+ }
+}
+
+void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorKind)
+{
+ switch (cursorKind)
+ {
+ case 0:
+ ListMenuUpdateRedOutlineCursorObject(taskId, x, y);
+ break;
+ case 1:
+ ListMenuUpdateRedArrowCursorObject(taskId, x, y);
+ break;
+ }
+}
+
+void ListMenuRemoveCursorObject(u8 taskId, u32 cursorKind)
+{
+ switch (cursorKind)
+ {
+ case 0:
+ ListMenuRemoveRedOutlineCursorObject(taskId);
+ break;
+ case 1:
+ ListMenuRemoveRedArrowCursorObject(taskId);
+ break;
+ }
+}
+
+void Task_RedOutlineCursor(u8 taskId)
+{
+}
+
+u8 ListMenuGetRedOutlineCursorSpriteCount(u16 rowWidth, u16 rowHeight)
+{
+ s32 i, count = 4;
+
+ if (rowWidth > 16)
+ for (i = 8; i < (rowWidth - 8); i += 8)
+ count += 2;
+ if (rowHeight > 16)
+ for (i = 8; i < (rowHeight - 8); i += 8)
+ count += 2;
+ return count;
+}
+
+void ListMenuSetUpRedOutlineCursorSpriteOamTable(u16 rowWidth, u16 rowHeight, struct Subsprite *subsprites)
+{
+ s32 i, j, id = 0;
+
+ subsprites[id] = sSubsprite_RedOutline1;
+ subsprites[id].x = 136;
+ subsprites[id].y = 136;
+ id++;
+ subsprites[id] = sSubsprite_RedOutline2;
+ subsprites[id].x = rowWidth + 128;
+ subsprites[id].y = 136;
+ id++;
+ subsprites[id] = sSubsprite_RedOutline7;
+ subsprites[id].x = 136;
+ subsprites[id].y = rowHeight + 128;
+ id++;
+ subsprites[id] = sSubsprite_RedOutline8;
+ subsprites[id].x = rowWidth + 128;
+ subsprites[id].y = rowHeight + 128;
+ id++;
+ if (rowWidth > 16)
+ {
+ for (i = 8; i < rowWidth - 8; i += 8)
+ {
+ subsprites[id] = sSubsprite_RedOutline3;
+ subsprites[id].x = i - 120;
+ subsprites[id].y = 136;
+ id++;
+
+ subsprites[id] = sSubsprite_RedOutline6;
+ subsprites[id].x = i - 120;
+ subsprites[id].y = rowHeight + 128;
+ id++;
+ }
+ }
+ if (rowHeight > 16)
+ {
+ for (j = 8; j < rowHeight - 8; j += 8)
+ {
+ subsprites[id] = sSubsprite_RedOutline4;
+ subsprites[id].x = 136;
+ subsprites[id].y = j - 120;
+ id++;
+ subsprites[id] = sSubsprite_RedOutline5;
+ subsprites[id].x = rowWidth + 128;
+ subsprites[id].y = j - 120;
+ id++;
+ }
+ }
+}
+
+u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor)
+{
+ struct CompressedSpriteSheet spriteSheet;
+ struct SpritePalette spritePal;
+ struct RedOutlineCursor *data;
+ struct SpriteTemplate spriteTemplate;
+ u8 taskId;
+
+ spriteSheet.data = sSelectorOutlineGfx;
+ spriteSheet.size = 0x100;
+ spriteSheet.tag = cursor->tileTag;
+ LoadCompressedSpriteSheet(&spriteSheet);
+ if (cursor->palTag == SPRITE_INVALID_TAG)
+ {
+ LoadPalette(sRedArrowPal, (16 * cursor->palNum) + 0x100, 0x20);
+ }
+ else
+ {
+ spritePal.data = sRedArrowPal;
+ spritePal.tag = cursor->palTag;
+ LoadSpritePalette(&spritePal);
+ }
+ taskId = CreateTask(Task_RedOutlineCursor, 0);
+ data = (struct RedOutlineCursor *)gTasks[taskId].data;
+ data->tileTag = cursor->tileTag;
+ data->palTag = cursor->palTag;
+ data->subspriteTable.subspriteCount = ListMenuGetRedOutlineCursorSpriteCount(cursor->rowWidth, cursor->rowHeight);
+ data->subspriteTable.subsprites = data->subspritesPtr = Alloc(data->subspriteTable.subspriteCount * 4);
+ ListMenuSetUpRedOutlineCursorSpriteOamTable(cursor->rowWidth, cursor->rowHeight, data->subspritesPtr);
+ spriteTemplate = gDummySpriteTemplate;
+ spriteTemplate.tileTag = cursor->tileTag;
+ spriteTemplate.paletteTag = cursor->palTag;
+ data->spriteId = CreateSprite(&spriteTemplate, cursor->left + 120, cursor->top + 120, 0);
+ SetSubspriteTables(&gSprites[data->spriteId], &data->subspriteTable);
+ gSprites[data->spriteId].oam.priority = 0;
+ gSprites[data->spriteId].subpriority = 0;
+ gSprites[data->spriteId].subspriteTableNum = 0;
+ if (cursor->palTag == SPRITE_INVALID_TAG)
+ gSprites[data->spriteId].oam.paletteNum = cursor->palNum;
+ return taskId;
+}
+
+void ListMenuUpdateRedOutlineCursorObject(u8 taskId, u16 x, u16 y)
+{
+ struct RedOutlineCursor *data = (struct RedOutlineCursor *)gTasks[taskId].data;
+
+ gSprites[data->spriteId].pos1.x = x + 120;
+ gSprites[data->spriteId].pos1.y = y + 120;
+}
+
+void ListMenuRemoveRedOutlineCursorObject(u8 taskId)
+{
+ struct RedOutlineCursor *data = (struct RedOutlineCursor *)gTasks[taskId].data;
+
+ Free(data->subspritesPtr);
+ if (data->tileTag != SPRITE_INVALID_TAG)
+ FreeSpriteTilesByTag(data->tileTag);
+ if (data->palTag != SPRITE_INVALID_TAG)
+ FreeSpritePaletteByTag(data->palTag);
+ DestroySprite(&gSprites[data->spriteId]);
+ DestroyTask(taskId);
+}
+
+static void SpriteCallback_RedArrowCursor(struct Sprite *sprite)
+{
+ sprite->pos2.x = gSineTable[(u8)(sprite->data[0])] / 64;
+ sprite->data[0] += 8;
+}
+
+static void Task_RedArrowCursor(u8 taskId)
+{
+}
+
+static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor)
+{
+ struct CompressedSpriteSheet spriteSheet;
+ struct SpritePalette spritePal;
+ struct RedArrowCursor *data;
+ struct SpriteTemplate spriteTemplate;
+ u8 taskId;
+
+ spriteSheet.data = sRedArrowGfx;
+ spriteSheet.size = 0x80;
+ spriteSheet.tag = cursor->tileTag;
+ LoadCompressedSpriteSheet(&spriteSheet);
+ if (cursor->palTag == SPRITE_INVALID_TAG)
+ {
+ LoadPalette(sRedArrowPal, (16 * cursor->palNum) + 0x100, 0x20);
+ }
+ else
+ {
+ spritePal.data = sRedArrowPal;
+ spritePal.tag = cursor->palTag;
+ LoadSpritePalette(&spritePal);
+ }
+ taskId = CreateTask(Task_RedArrowCursor, 0);
+ data = (struct RedArrowCursor *)gTasks[taskId].data;
+ data->tileTag = cursor->tileTag;
+ data->palTag = cursor->palTag;
+ spriteTemplate = sSpriteTemplate_RedArrowCursor;
+ spriteTemplate.tileTag = cursor->tileTag;
+ spriteTemplate.paletteTag = cursor->palTag;
+ data->spriteId = CreateSprite(&spriteTemplate, cursor->left, cursor->top, 0);
+ gSprites[data->spriteId].pos2.x = 8;
+ gSprites[data->spriteId].pos2.y = 8;
+ if (cursor->palTag == SPRITE_INVALID_TAG)
+ gSprites[data->spriteId].oam.paletteNum = cursor->palNum;
+ return taskId;
+}
+
+static void ListMenuUpdateRedArrowCursorObject(u8 taskId, u16 x, u16 y)
+{
+ struct RedArrowCursor *data = (struct RedArrowCursor *)gTasks[taskId].data;
+
+ gSprites[data->spriteId].pos1.x = x;
+ gSprites[data->spriteId].pos1.y = y;
+}
+
+static void ListMenuRemoveRedArrowCursorObject(u8 taskId)
+{
+ struct RedArrowCursor *data = (struct RedArrowCursor *)gTasks[taskId].data;
+
+ if (data->tileTag != SPRITE_INVALID_TAG)
+ FreeSpriteTilesByTag(data->tileTag);
+ if (data->palTag != SPRITE_INVALID_TAG)
+ FreeSpritePaletteByTag(data->palTag);
+ DestroySprite(&gSprites[data->spriteId]);
+ DestroyTask(taskId);
+}
diff --git a/src/mevent.c b/src/mevent.c
index 4d625987e..fc0c1f2d4 100644
--- a/src/mevent.c
+++ b/src/mevent.c
@@ -28,7 +28,7 @@ struct MEventTaskData1
u16 t02;
u16 t04;
u16 t06;
- u8 t08;
+ u8 state;
u8 t09;
u8 t0A;
u8 t0B;
@@ -91,46 +91,46 @@ struct MEvent_Str_1 gUnknown_3005ED0;
static EWRAM_DATA bool32 gUnknown_203F3BC = FALSE;
-void sub_81435DC(struct MEvent_Str_1 *a0, size_t a1, const void * a2)
+void sub_81435DC(struct MEvent_Str_1 *mgr, size_t size, const void * data)
{
vu16 imeBak = REG_IME;
REG_IME = 0;
- gIntrTable[1] = sub_815C6D4;
- gIntrTable[2] = sub_815C6C4;
- sub_815C8C8();
- sub_815C960();
+ gIntrTable[1] = EReaderHelper_SerialCallback;
+ gIntrTable[2] = EReaderHelper_Timer3Callback;
+ EReaderHelper_SaveRegsState();
+ EReaderHelper_ClearsSendRecvMgr();
REG_IE |= INTR_FLAG_VCOUNT;
REG_IME = imeBak;
- a0->unk_000 = 0;
- a0->unk_004 = a1;
- a0->unk_008 = a2;
+ mgr->status = 0;
+ mgr->size = size;
+ mgr->data = data;
}
void sub_8143644(struct MEvent_Str_1 *unused)
{
vu16 imeBak = REG_IME;
REG_IME = 0;
- sub_815C960();
- sub_815C91C();
+ EReaderHelper_ClearsSendRecvMgr();
+ EReaderHelper_RestoreRegsState();
RestoreSerialTimer3IntrHandlers();
REG_IME = imeBak;
}
-u8 sub_8143674(struct MEvent_Str_1 *a0)
+u8 sub_8143674(struct MEvent_Str_1 *mgr)
{
u8 resp = 0;
- a0->unk_000 = sub_815C498(1, a0->unk_004, a0->unk_008, 0);
- if ((a0->unk_000 & 0x13) == 0x10)
+ mgr->status = EReaderHandleTransfer(1, mgr->size, mgr->data, 0);
+ if ((mgr->status & 0x13) == 0x10)
resp = 1;
- if (a0->unk_000 & 8)
+ if (mgr->status & 8)
resp = 2;
- if (a0->unk_000 & 4)
+ if (mgr->status & 4)
resp = 3;
gUnknown_3003F84 = 0;
return resp;
}
-void sub_81436BC(void)
+static void ResetTTDataBuffer(void)
{
memset(gDecompressionBuffer, 0, 0x2000);
gLinkType = 0x5502;
@@ -143,7 +143,7 @@ bool32 sub_81436EC(void)
vu16 imeBak = REG_IME;
u16 data[4];
REG_IME = 0;
- *(u64 *)data = gUnknown_3003FB4;
+ *(u64 *)data = gSioMlt_Recv;
REG_IME = imeBak;
if ( data[0] == 0xB9A0
&& data[1] == 0xCCD0
@@ -154,7 +154,7 @@ bool32 sub_81436EC(void)
return FALSE;
}
-bool32 sub_814374C(void)
+static bool32 IsEReaderConnectionSane(void)
{
if (sub_800AA48() && GetLinkPlayerCount_2() == 2)
return TRUE;
@@ -244,7 +244,7 @@ void task_add_00_ereader(void)
{
u8 taskId = CreateTask(sub_8143910, 0);
struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data;
- data->t08 = 0;
+ data->state = 0;
data->t09 = 0;
data->t0A = 0;
data->t0B = 0;
@@ -258,12 +258,12 @@ void task_add_00_ereader(void)
data->t10 = AllocZeroed(sizeof(struct MEvent_Str_2));
}
-void sub_81438E8(u16 *a0)
+static void ResetDelayTimer(u16 *a0)
{
*a0 = 0;
}
-bool32 sub_81438F0(u16 * a0, u16 a1)
+static bool32 AdvanceDelayTimerCheckTimeout(u16 * a0, u16 a1)
{
if (++(*a0) > a1)
{
@@ -276,49 +276,49 @@ bool32 sub_81438F0(u16 * a0, u16 a1)
void sub_8143910(u8 taskId)
{
struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data;
- switch (data->t08)
+ switch (data->state)
{
case 0:
if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE52))
- data->t08 = 1;
+ data->state = 1;
break;
case 1:
- sub_81436BC();
- sub_81438E8(&data->t00);
- data->t08 = 2;
+ ResetTTDataBuffer();
+ ResetDelayTimer(&data->t00);
+ data->state = 2;
break;
case 2:
- if (sub_81438F0(&data->t00, 10))
- data->t08 = 3;
+ if (AdvanceDelayTimerCheckTimeout(&data->t00, 10))
+ data->state = 3;
break;
case 3:
- if (!sub_814374C())
+ if (!IsEReaderConnectionSane())
{
CloseLink();
- data->t08 = 4;
+ data->state = 4;
}
else
- data->t08 = 13;
+ data->state = 13;
break;
case 4:
if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE53))
{
AddTextPrinterToWindow1(gUnknown_841DE54);
- sub_81438E8(&data->t00);
- data->t08 = 5;
+ ResetDelayTimer(&data->t00);
+ data->state = 5;
}
break;
case 5:
- if (sub_81438F0(&data->t00, 90))
+ if (AdvanceDelayTimerCheckTimeout(&data->t00, 90))
{
- sub_81436BC();
- data->t08 = 6;
+ ResetTTDataBuffer();
+ data->state = 6;
}
else if (JOY_NEW(B_BUTTON))
{
- sub_81438E8(&data->t00);
+ ResetDelayTimer(&data->t00);
PlaySE(SE_SELECT);
- data->t08 = 23;
+ data->state = 23;
}
break;
case 6:
@@ -326,64 +326,64 @@ void sub_8143910(u8 taskId)
{
PlaySE(SE_SELECT);
CloseLink();
- sub_81438E8(&data->t00);
- data->t08 = 23;
+ ResetDelayTimer(&data->t00);
+ data->state = 23;
}
else if (GetLinkPlayerCount_2() > 1)
{
- sub_81438E8(&data->t00);
+ ResetDelayTimer(&data->t00);
CloseLink();
- data->t08 = 7;
+ data->state = 7;
}
else if (sub_81436EC())
{
PlaySE(SE_SELECT);
CloseLink();
- sub_81438E8(&data->t00);
- data->t08 = 8;
+ ResetDelayTimer(&data->t00);
+ data->state = 8;
}
- else if (sub_81438F0(&data->t00, 10))
+ else if (AdvanceDelayTimerCheckTimeout(&data->t00, 10))
{
CloseLink();
- sub_81436BC();
- sub_81438E8(&data->t00);
+ ResetTTDataBuffer();
+ ResetDelayTimer(&data->t00);
}
break;
case 7:
if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE7C))
- data->t08 = 4;
+ data->state = 4;
break;
case 8:
AddTextPrinterToWindow1(gUnknown_841DE95);
sub_81435DC(&gUnknown_3005ED0, gUnknownSerialData_End - gUnknownSerialData_Start, gUnknownSerialData_Start);
- data->t08 = 9;
+ data->state = 9;
break;
case 9:
data->t0E = sub_8143674(&gUnknown_3005ED0);
if (data->t0E != 0)
- data->t08 = 10;
+ data->state = 10;
break;
case 10:
sub_8143644(&gUnknown_3005ED0);
if (data->t0E == 3)
- data->t08 = 20;
+ data->state = 20;
else if (data->t0E == 1)
{
- sub_81438E8(&data->t00);
+ ResetDelayTimer(&data->t00);
AddTextPrinterToWindow1(gUnknown_841DE9B);
- data->t08 = 11;
+ data->state = 11;
}
else
- data->t08 = 0;
+ data->state = 0;
break;
case 11:
- if (sub_81438F0(&data->t00, 840))
- data->t08 = 12;
+ if (AdvanceDelayTimerCheckTimeout(&data->t00, 840))
+ data->state = 12;
break;
case 12:
- sub_81436BC();
+ ResetTTDataBuffer();
AddTextPrinterToWindow1(gUnknown_841DE98);
- data->t08 = 13;
+ data->state = 13;
break;
case 13:
switch (sub_8143770(&data->t09, &data->t00))
@@ -392,21 +392,21 @@ void sub_8143910(u8 taskId)
break;
case 2:
AddTextPrinterToWindow1(gUnknown_841DE95);
- data->t08 = 14;
+ data->state = 14;
break;
case 1:
PlaySE(SE_SELECT);
CloseLink();
- data->t08 = 23;
+ data->state = 23;
break;
case 5:
CloseLink();
- data->t08 = 21;
+ data->state = 21;
break;
case 3:
case 4:
CloseLink();
- data->t08 = 20;
+ data->state = 20;
break;
}
break;
@@ -414,65 +414,65 @@ void sub_8143910(u8 taskId)
if (HasLinkErrorOccurred())
{
CloseLink();
- data->t08 = 20;
+ data->state = 20;
}
else if (GetBlockReceivedStatus())
{
ResetBlockReceivedFlags();
- data->t08 = 15;
+ data->state = 15;
}
break;
case 15:
- data->t0E = sub_815D6B4(gDecompressionBuffer);
+ data->t0E = ValidateTrainerTowerData((struct TrainerTowerData *)gDecompressionBuffer);
sub_800AA80(data->t0E);
- data->t08 = 16;
+ data->state = 16;
break;
case 16:
if (!gReceivedRemoteLinkPlayers)
{
if (data->t0E == 1)
- data->t08 = 17;
+ data->state = 17;
else
- data->t08 = 20;
+ data->state = 20;
}
break;
case 17:
- if (sub_815D794(gDecompressionBuffer))
+ if (CEReaderTool_SaveTrainerTower((struct TrainerTowerData *)gDecompressionBuffer))
{
AddTextPrinterToWindow1(gUnknown_841DE99);
- sub_81438E8(&data->t00);
- data->t08 = 18;
+ ResetDelayTimer(&data->t00);
+ data->state = 18;
}
else
- data->t08 = 22;
+ data->state = 22;
break;
case 18:
- if (sub_81438F0(&data->t00, 120))
+ if (AdvanceDelayTimerCheckTimeout(&data->t00, 120))
{
AddTextPrinterToWindow1(gUnknown_841DE9A);
PlayFanfare(258);
- data->t08 = 19;
+ data->state = 19;
}
break;
case 19:
if (IsFanfareTaskInactive() &&JOY_NEW(A_BUTTON | B_BUTTON))
- data->t08 = 26;
+ data->state = 26;
break;
case 23:
if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE7D))
- data->t08 = 26;
+ data->state = 26;
break;
case 20:
if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE96))
- data->t08 = 0;
+ data->state = 0;
break;
case 21:
if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE97))
- data->t08 = 0;
+ data->state = 0;
break;
case 22:
if (MG_PrintTextOnWindow1AndWaitButton(&data->t09, gUnknown_841DE9C))
- data->t08 = 0;
+ data->state = 0;
break;
case 26:
sub_812B484();
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
index af3024bff..c67cd1358 100644
--- a/src/mevent_8145654.c
+++ b/src/mevent_8145654.c
@@ -6,6 +6,7 @@
#include "decompress.h"
#include "malloc.h"
#include "menu.h"
+#include "new_menu_helpers.h"
#include "pokemon_icon.h"
#include "mystery_gift_menu.h"
#include "menu_indicators.h"
@@ -97,7 +98,7 @@ const u16 gUnknown_8467E74[] = INCBIN_U16("data/graphics/mevent/pal_467E74.gbapa
const u16 gUnknown_8467E94[] = INCBIN_U16("data/graphics/mevent/pal_467E94.gbapal");
const u16 gUnknown_8467EB4[] = INCBIN_U16("data/graphics/mevent/pal_467EB4.gbapal");
const u16 gUnknown_8467ED4[] = INCBIN_U16("data/graphics/mevent/pal_467ED4.gbapal");
-const u8 gUnknown_8467EF4[] = INCBIN_U8("data/graphics/mevent/gfx_467EF4.4bpp.lz");
+const u32 gUnknown_8467EF4[] = INCBIN_U32("data/graphics/mevent/gfx_467EF4.4bpp.lz");
const struct CompressedSpriteSheet gUnknown_8467F58 = {
gUnknown_8467EF4, 0x100, 0x8000
@@ -175,13 +176,13 @@ s32 FadeToWonderCardMenu(void)
CopyBgTilemapBufferToVram(0);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
- decompress_and_copy_tile_data_to_vram(2, gUnknown_203F3C8->unk_0170->tiles, 0, 0x008, 0);
+ DecompressAndCopyTileDataToVram(2, gUnknown_203F3C8->unk_0170->tiles, 0, 0x008, 0);
gUnknown_203F3C8->unk_0176[0] = AddWindow(&gUnknown_8467074[0]);
gUnknown_203F3C8->unk_0176[1] = AddWindow(&gUnknown_8467074[1]);
gUnknown_203F3C8->unk_0176[2] = AddWindow(&gUnknown_8467074[2]);
break;
case 3:
- if (free_temp_tile_data_buffers_if_possible())
+ if (FreeTempTileDataBuffersIfPossible())
return 0;
gPaletteFade.bufferTransferDisabled = TRUE;
LoadPalette(gUnknown_203F3C8->unk_0170->pal, 0x10, 0x20);
@@ -347,28 +348,28 @@ void sub_8145D18(u8 whichWindow)
case 0:
{
s32 x;
- box_print(windowId, 3, 0, 1, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_018B);
+ AddTextPrinterParameterized3(windowId, 3, 0, 1, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_018B);
x = 160 - GetStringWidth(3, gUnknown_203F3C8->unk_01B4, GetFontAttribute(3, 2));
if (x < 0)
x = 0;
- box_print(windowId, 3, x, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01B4);
+ AddTextPrinterParameterized3(windowId, 3, x, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01B4);
if (gUnknown_203F3C8->unk_0000.unk_04 != 0)
{
- box_print(windowId, 2, 166, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01DD);
+ AddTextPrinterParameterized3(windowId, 2, 166, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01DD);
}
break;
}
case 1:
for (; sp0C < 4; sp0C++)
{
- box_print(windowId, 3, 0, 16 * sp0C + 2, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal2], 0, gUnknown_203F3C8->unk_01E4[sp0C]);
+ AddTextPrinterParameterized3(windowId, 3, 0, 16 * sp0C + 2, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal2], 0, gUnknown_203F3C8->unk_01E4[sp0C]);
}
break;
case 2:
- box_print(windowId, 3, 0, gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_0288);
+ AddTextPrinterParameterized3(windowId, 3, 0, gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_0288);
if (gUnknown_203F3C8->unk_0000.unk_08_0 != 2)
{
- box_print(windowId, 3, 0, 16 + gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02B1);
+ AddTextPrinterParameterized3(windowId, 3, 0, 16 + gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02B1);
}
else
{
@@ -377,11 +378,11 @@ void sub_8145D18(u8 whichWindow)
s32 spacing = GetFontAttribute(3, 2);
for (; sp0C < gUnknown_203F3C8->unk_0175; sp0C++)
{
- box_print(windowId, 3, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_01);
+ AddTextPrinterParameterized3(windowId, 3, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_01);
if (gUnknown_203F3C8->unk_02DC[sp0C].unk_42[0] != EOS)
{
x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_01, spacing);
- box_print(windowId, 2, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_42);
+ AddTextPrinterParameterized3(windowId, 2, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_42);
x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_42, spacing) + gUnknown_203F3C8->unk_02DC[sp0C].unk_00;
}
}
@@ -402,7 +403,7 @@ void sub_8146060(void)
}
if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1)
{
- sub_800F034(&gUnknown_8467F58);
+ LoadCompressedSpriteSheetUsingHeap(&gUnknown_8467F58);
LoadSpritePalette(&gUnknown_8467F60[gUnknown_203F3C8->unk_0170->textPal4]);
for (; r7 < gUnknown_203F3C8->unk_0000.unk_09; r7++)
{
@@ -460,7 +461,7 @@ struct UnkStruct_203F3CC
/*01cc*/ u8 filler_01CC[2];
/*01ce*/ u8 unk_01CE[41];
/*01f7*/ u8 unk_01F7[10][41];
- /*0394*/ struct ScrollIndicatorArrowPairTemplate unk_0394;
+ /*0394*/ struct ScrollArrowsTemplate unk_0394;
/*03a4*/ u8 buffer_03A4[0x1000];
};
@@ -478,9 +479,9 @@ const struct WindowTemplate gUnknown_8468040[] = {
{0, 1, 0, 28, 3, 15, 0x000},
{2, 1, 3, 28, 20, 15, 0x000}
};
-const struct ScrollIndicatorArrowPairTemplate gUnknown_8468050 = {
+const struct ScrollArrowsTemplate gUnknown_8468050 = {
0x02, 0xe8, 0x18, 0x03, 0xe8, 0x98,
- 0x0000, 0x0002, 0x1000, 0x1000, 0x0, 0x000
+ 0x0000, 0x0002, 0x1000, 0x1000, 0x0,
};
const u16 gUnknown_8468060[] = INCBIN_U16("data/graphics/mevent/pal_468060.gbapal");
@@ -565,12 +566,12 @@ s32 FadeToWonderNewsMenu(void)
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(3);
- decompress_and_copy_tile_data_to_vram(3, gUnknown_203F3CC->unk_01BC->tiles, 0, 8, 0);
+ DecompressAndCopyTileDataToVram(3, gUnknown_203F3CC->unk_01BC->tiles, 0, 8, 0);
gUnknown_203F3CC->unk_01C8[0] = AddWindow(&gUnknown_8468040[0]);
gUnknown_203F3CC->unk_01C8[1] = AddWindow(&gUnknown_8468040[1]);
break;
case 3:
- if (free_temp_tile_data_buffers_if_possible())
+ if (FreeTempTileDataBuffersIfPossible())
return 0;
gPaletteFade.bufferTransferDisabled = TRUE;
LoadPalette(gUnknown_203F3CC->unk_01BC->pal, 0x10, 0x20);
@@ -743,7 +744,7 @@ void sub_8146980(void)
++gUnknown_203F3CC->unk_01C4;
}
gUnknown_203F3CC->unk_0394 = gUnknown_8468050;
- gUnknown_203F3CC->unk_0394.unk_08 = gUnknown_203F3CC->unk_01C4;
+ gUnknown_203F3CC->unk_0394.fullyDownThreshold = gUnknown_203F3CC->unk_01C4;
}
void sub_8146A30(void)
@@ -757,10 +758,10 @@ void sub_8146A30(void)
x = (0xe0 - GetStringWidth(3, gUnknown_203F3CC->unk_01CE, GetFontAttribute(3, 2))) / 2;
if (x < 0)
x = 0;
- box_print(gUnknown_203F3CC->unk_01C8[0], 3, x, 6, &gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal1], 0, gUnknown_203F3CC->unk_01CE);
+ AddTextPrinterParameterized3(gUnknown_203F3CC->unk_01C8[0], 3, x, 6, &gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal1], 0, gUnknown_203F3CC->unk_01CE);
for (; i < 10; ++i)
{
- box_print(gUnknown_203F3CC->unk_01C8[1], 3, 0, 16 * i + 2, &gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal2], 0, gUnknown_203F3CC->unk_01F7[i]);
+ AddTextPrinterParameterized3(gUnknown_203F3CC->unk_01C8[1], 3, 0, 16 * i + 2, &gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal2], 0, gUnknown_203F3CC->unk_01F7[i]);
}
CopyWindowToVram(gUnknown_203F3CC->unk_01C8[0], 3);
CopyWindowToVram(gUnknown_203F3CC->unk_01C8[1], 3);
diff --git a/src/money.c b/src/money.c
index 6d9a0fce9..39e5aaa32 100644
--- a/src/money.c
+++ b/src/money.c
@@ -109,7 +109,7 @@ void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed)
void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount)
{
- SetWindowBorderStyle(windowId, FALSE, tileStart, pallete);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, tileStart, pallete);
AddTextPrinterParameterized(windowId, 2, gUnknown_8419CE7, 0, 0, 0xFF, 0);
PrintMoneyAmountInMoneyBox(windowId, amount, 0);
}
@@ -121,20 +121,19 @@ void ChangeAmountInMoneyBox(int amount)
void DrawMoneyBox(int amount, u8 x, u8 y)
{
- struct WindowTemplate template, template2;
+ struct WindowTemplate template;
- SetWindowTemplateFields(&template, 0, x + 1, y + 1, 8, 3, 15, 8);
- template2 = template;
- sMoneyBoxWindowId = AddWindow(&template2);
+ template = SetWindowTemplateFields(0, x + 1, y + 1, 8, 3, 15, 8);
+ sMoneyBoxWindowId = AddWindow(&template);
FillWindowPixelBuffer(sMoneyBoxWindowId, 0);
PutWindowTilemap(sMoneyBoxWindowId);
- sub_814FF2C(sMoneyBoxWindowId, 0x21D, 0xD0);
+ TextWindow_SetStdFrame0_WithPal(sMoneyBoxWindowId, 0x21D, 0xD0);
PrintMoneyAmountInMoneyBoxWithBorder(sMoneyBoxWindowId, 0x21D, 13, amount);
}
void HideMoneyBox(void)
{
- sub_810F4D8(sMoneyBoxWindowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(sMoneyBoxWindowId, FALSE);
CopyWindowToVram(sMoneyBoxWindowId, 2);
RemoveWindow(sMoneyBoxWindowId);
}
diff --git a/src/multiboot.c b/src/multiboot.c
new file mode 100644
index 000000000..cfc9821d2
--- /dev/null
+++ b/src/multiboot.c
@@ -0,0 +1,416 @@
+#include "global.h"
+#include "multiboot.h"
+
+static IWRAM_DATA u16 MultiBoot_required_data[MULTIBOOT_NCHILD];
+
+static int MultiBootSend(struct MultiBootParam *mp, u16 data);
+static int MultiBootHandShake(struct MultiBootParam *mp);
+static void MultiBootWaitCycles(u32 cycles);
+static void MultiBootWaitSendDone(void);
+
+void MultiBootInit(struct MultiBootParam *mp)
+{
+ mp->client_bit = 0;
+ mp->probe_count = 0;
+ mp->response_bit = 0;
+ mp->check_wait = MULTIBOOT_CONNECTION_CHECK_WAIT;
+ mp->sendflag = 0;
+ mp->handshake_timeout = 0;
+ REG_RCNT = 0;
+ REG_SIOCNT = SIO_MULTI_MODE | SIO_115200_BPS;
+ REG_SIODATA8 = 0;
+}
+
+int MultiBootMain(struct MultiBootParam *mp)
+{
+ int i, j, k;
+
+ if (MultiBootCheckComplete(mp))
+ {
+ return 0;
+ }
+ if (mp->check_wait > MULTIBOOT_CONNECTION_CHECK_WAIT)
+ {
+ mp->check_wait--;
+ return 0;
+ }
+output_burst:
+ if (mp->sendflag)
+ {
+ mp->sendflag = 0;
+
+ i = REG_SIOCNT & (SIO_MULTI_BUSY | SIO_ERROR | SIO_ID | SIO_MULTI_SD | SIO_MULTI_SI);
+ if (i != SIO_MULTI_SD)
+ {
+ MultiBootInit(mp);
+ return i ^ SIO_MULTI_SD;
+ }
+ }
+ if (mp->probe_count >= 0xe0)
+ {
+ i = MultiBootHandShake(mp);
+ if (i)
+ {
+ return i;
+ }
+
+ if (mp->server_type == MULTIBOOT_SERVER_TYPE_QUICK
+ && mp->probe_count > 0xe1
+ && MultiBootCheckComplete(mp) == 0)
+ {
+ MultiBootWaitSendDone();
+ goto output_burst;
+ }
+
+ if (MultiBootCheckComplete(mp) == 0)
+ {
+ if (mp->handshake_timeout == 0)
+ {
+ MultiBootInit(mp);
+ return MULTIBOOT_ERROR_HANDSHAKE_FAILURE;
+ }
+ mp->handshake_timeout--;
+ }
+
+ return 0;
+ }
+ switch (mp->probe_count)
+ {
+ case 0:
+ k = 0x0e;
+ for (i = MULTIBOOT_NCHILD; i != 0; i--)
+ {
+ if (*(vu16 *)(REG_ADDR_SIOMULTI0 + i * 2) != 0xffff)
+ {
+ break;
+ }
+ k >>= 1;
+ }
+ k &= 0x0e;
+ mp->response_bit = k;
+ for (i = MULTIBOOT_NCHILD; i != 0; i--)
+ {
+ j = *(vu16 *)(REG_ADDR_SIOMULTI0 + i * 2);
+ if (mp->client_bit & (1 << i))
+ {
+ if (j != ((MULTIBOOT_CLIENT_INFO << 8) | (1 << i)))
+ {
+ k = 0;
+ break;
+ }
+ }
+ }
+ mp->client_bit &= k;
+ if (k == 0)
+ {
+ mp->check_wait = MULTIBOOT_CONNECTION_CHECK_WAIT;
+ }
+
+ if (mp->check_wait)
+ {
+ mp->check_wait--;
+ }
+ else
+ {
+ if (mp->response_bit != mp->client_bit)
+ {
+ MultiBootStartProbe(mp);
+ goto case_1;
+ }
+ }
+ output_master_info:
+ return MultiBootSend(mp, (MULTIBOOT_MASTER_INFO << 8) | mp->client_bit);
+ case_1:
+ case 1:
+ mp->probe_target_bit = 0;
+ for (i = MULTIBOOT_NCHILD; i != 0; i--)
+ {
+ j = *(vu16 *)(REG_ADDR_SIOMULTI0 + i * 2);
+ if ((j >> 8) == MULTIBOOT_CLIENT_INFO)
+ {
+ MultiBoot_required_data[i - 1] = j;
+ j &= 0xff;
+ if (j == (1 << i))
+ {
+ mp->probe_target_bit |= j;
+ }
+ }
+ }
+ if (mp->response_bit != mp->probe_target_bit)
+ {
+ goto output_master_info;
+ }
+ mp->probe_count = 2;
+ return MultiBootSend(mp, (MULTIBOOT_MASTER_START_PROBE << 8) | mp->probe_target_bit);
+ case 2:
+ for (i = MULTIBOOT_NCHILD; i != 0; i--)
+ {
+ if (mp->probe_target_bit & (1 << i))
+ {
+ j = *(vu16 *)(REG_ADDR_SIOMULTI0 + i * 2);
+ if (j != MultiBoot_required_data[i - 1])
+ {
+ mp->probe_target_bit ^= 1 << i;
+ }
+ }
+ }
+ goto output_header;
+ case 0xd0:
+ k = 1;
+ for (i = MULTIBOOT_NCHILD; i != 0; i--)
+ {
+ j = *(vu16 *)(REG_ADDR_SIOMULTI0 + i * 2);
+ mp->client_data[i - 1] = j;
+ if (mp->probe_target_bit & (1 << i))
+ {
+ if ((j >> 8) != MULTIBOOT_CLIENT_INFO
+ && (j >> 8) != MULTIBOOT_CLIENT_DLREADY)
+ {
+ MultiBootInit(mp);
+ return MULTIBOOT_ERROR_NO_DLREADY;
+ }
+ if (j == MultiBoot_required_data[i - 1])
+ {
+ k = 0;
+ }
+ }
+ }
+ if (k == 0)
+ {
+ return MultiBootSend(mp, (MULTIBOOT_MASTER_REQUEST_DLREADY << 8) | mp->palette_data);
+ }
+ mp->probe_count = 0xd1;
+ k = 0x11;
+ for (i = MULTIBOOT_NCHILD; i != 0; i--)
+ {
+ k += mp->client_data[i - 1];
+ }
+ mp->handshake_data = k;
+ return MultiBootSend(mp, (MULTIBOOT_MASTER_START_DL << 8) | (k & 0xff));
+ case 0xd1:
+ for (i = MULTIBOOT_NCHILD; i != 0; i--)
+ {
+ j = *(vu16 *)(REG_ADDR_SIOMULTI0 + i * 2);
+ if (mp->probe_target_bit & (1 << i))
+ {
+ if ((j >> 8) != MULTIBOOT_CLIENT_DLREADY)
+ {
+ MultiBootInit(mp);
+ return MULTIBOOT_ERROR_NO_DLREADY;
+ }
+ }
+ }
+ i = MultiBoot(mp);
+ if (i == 0)
+ {
+ mp->probe_count = 0xe0;
+ mp->handshake_timeout = MULTIBOOT_HANDSHAKE_TIMEOUT;
+ return 0;
+ }
+ MultiBootInit(mp);
+ mp->check_wait = MULTIBOOT_CONNECTION_CHECK_WAIT * 2;
+ return MULTIBOOT_ERROR_BOOT_FAILURE;
+ default:
+ for (i = MULTIBOOT_NCHILD; i != 0; i--)
+ {
+ if (mp->probe_target_bit & (1 << i))
+ {
+ j = *(vu16 *)(REG_ADDR_SIOMULTI0 + i * 2);
+ if ((j >> 8) != (MULTIBOOT_MASTER_START_PROBE + 1 - (mp->probe_count >> 1))
+ || ((j & 0xff) != (1 << i)))
+ {
+ mp->probe_target_bit ^= 1 << i;
+ }
+ }
+ }
+ if (mp->probe_count == 0xc4)
+ {
+ mp->client_bit = mp->probe_target_bit & 0x0e;
+ mp->probe_count = 0;
+ goto output_master_info;
+ }
+ output_header:
+ if (mp->probe_target_bit == 0)
+ {
+ MultiBootInit(mp);
+ return MULTIBOOT_ERROR_NO_PROBE_TARGET;
+ }
+ mp->probe_count += 2;
+ if (mp->probe_count == 0xc4)
+ {
+ goto output_master_info;
+ }
+ i = MultiBootSend(mp,
+ (mp->masterp[mp->probe_count - 4 + 1] << 8)
+ | mp->masterp[mp->probe_count - 4]);
+ if (i)
+ {
+ return i;
+ }
+ if (mp->server_type == MULTIBOOT_SERVER_TYPE_QUICK)
+ {
+ MultiBootWaitSendDone();
+ goto output_burst;
+ }
+ return 0;
+ }
+}
+
+static int MultiBootSend(struct MultiBootParam *mp, u16 data)
+{
+ int i = REG_SIOCNT & (SIO_MULTI_BUSY | SIO_MULTI_SD | SIO_MULTI_SI);
+ if (i != SIO_MULTI_SD)
+ {
+ MultiBootInit(mp);
+ return i ^ SIO_MULTI_SD;
+ }
+ REG_SIODATA8 = data;
+ REG_SIOCNT = SIO_MULTI_MODE | SIO_START | SIO_115200_BPS;
+ mp->sendflag = 1;
+ return 0;
+}
+
+void MultiBootStartProbe(struct MultiBootParam *mp)
+{
+ if (mp->probe_count != 0)
+ {
+ MultiBootInit(mp);
+ return;
+ }
+ mp->check_wait = 0;
+ mp->client_bit = 0;
+ mp->probe_count = 1;
+}
+
+void MultiBootStartMaster(struct MultiBootParam *mp, const u8 *srcp, int length, u8 palette_color, s8 palette_speed)
+{
+ int i = 0;
+
+ if (mp->probe_count != 0
+ || mp->client_bit == 0
+ || mp->check_wait != 0)
+ {
+ MultiBootInit(mp);
+ return;
+ }
+ mp->boot_srcp = srcp;
+ length = (length + 15) & ~15;
+ if (length < MULTIBOOT_SEND_SIZE_MIN || length > MULTIBOOT_SEND_SIZE_MAX)
+ {
+ MultiBootInit(mp);
+ return;
+ }
+ mp->boot_endp = srcp + length;
+ switch (palette_speed)
+ {
+ case -4:
+ case -3:
+ case -2:
+ case -1:
+ i = (palette_color << 3) | (3 - palette_speed);
+ break;
+ case 0:
+ i = 0x38 | palette_color;
+ break;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ i = (palette_color << 3) | (palette_speed - 1);
+ break;
+ }
+ mp->palette_data = ((i & 0x3f) << 1) | 0x81;
+ mp->probe_count = 0xd0;
+}
+
+bool32 MultiBootCheckComplete(struct MultiBootParam *mp)
+{
+ if (mp->probe_count == 0xe9)
+ return 1;
+ else
+ return 0;
+}
+
+static int MultiBootHandShake(struct MultiBootParam *mp)
+{
+ int i, j;
+
+#define send_data (mp->system_work[0])
+#define must_data (mp->system_work[1])
+ switch (mp->probe_count)
+ {
+ case_0xe0:
+ case 0xe0:
+ mp->probe_count = 0xe1;
+ must_data = 0x0000;
+ send_data = 0x100000;
+ return MultiBootSend(mp, 0x0000);
+ default:
+ for (i = MULTIBOOT_NCHILD; i != 0; i--)
+ {
+ j = *(vu16 *)(REG_ADDR_SIOMULTI0 + i * 2);
+ if ((mp->client_bit & (1 << i))
+ && j != must_data)
+ {
+ goto case_0xe0;
+ }
+ }
+ mp->probe_count++;
+ must_data = send_data & 0xffff;
+ if (send_data == 0x0000)
+ {
+ must_data = mp->masterp[0xac] | (mp->masterp[0xad] << 8);
+ send_data = must_data << 5;
+ }
+ send_data >>= 5;
+ output_common:
+ return MultiBootSend(mp, send_data);
+ case 0xe7:
+ case 0xe8:
+ for (i = MULTIBOOT_NCHILD; i != 0; i--)
+ {
+ j = *(vu16 *)(REG_ADDR_SIOMULTI0 + i * 2);
+ if ((mp->client_bit & (1 << i)) && j != must_data)
+ {
+ MultiBootInit(mp);
+ return MULTIBOOT_ERROR_HANDSHAKE_FAILURE;
+ }
+ }
+
+ mp->probe_count++;
+ if (mp->probe_count == 0xe9)
+ {
+ return 0;
+ }
+ send_data = mp->masterp[0xae] | (mp->masterp[0xaf] << 8);
+ must_data = send_data;
+ goto output_common;
+ }
+#undef send_data
+#undef must_data
+}
+
+static void MultiBootWaitCycles(u32 cycles)
+{
+ asm("mov r2, pc");
+ asm("lsr r2, #24");
+ asm("mov r1, #12");
+ asm("cmp r2, #0x02");
+ asm("beq MultiBootWaitCyclesLoop");
+ asm("mov r1, #13");
+ asm("cmp r2, #0x08");
+ asm("beq MultiBootWaitCyclesLoop");
+ asm("mov r1, #4");
+
+ asm("MultiBootWaitCyclesLoop:");
+ asm("sub r0, r1");
+ asm("bgt MultiBootWaitCyclesLoop");
+}
+
+static void MultiBootWaitSendDone(void)
+{
+ int i;
+
+ for (i = 0; (i < 31069) && (REG_SIOCNT & SIO_START); i++);
+ MultiBootWaitCycles(600);
+}
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index c9dc6ae81..70566ca58 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -267,7 +267,7 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx)
}
heldItem = GetMonData(&gPlayerParty[5], MON_DATA_HELD_ITEM);
- if (itemid_is_mail(heldItem))
+ if (ItemIsMail(heldItem))
GiveMailToMon2(&gPlayerParty[5], &mail);
CompactPartySlots();
CalculatePlayerPartyCount();
diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c
index 1ec4e6157..9ff96eb23 100644
--- a/src/mystery_gift_menu.c
+++ b/src/mystery_gift_menu.c
@@ -538,14 +538,14 @@ void PrintMysteryGiftOrEReaderTopMenu(bool8 mg_or_ereader, bool32 usePickOkCance
if (!mg_or_ereader)
{
src = usePickOkCancel == TRUE ? gText_PickOKExit : gText_PickOKCancel;
- AddTextPrinterParametrized2(0, 2, 2, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, gText_MysteryGift);
+ AddTextPrinterParameterized4(0, 2, 2, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, gText_MysteryGift);
width = 222 - GetStringWidth(0, src, 0);
- AddTextPrinterParametrized2(0, 0, width, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, src);
+ AddTextPrinterParameterized4(0, 0, width, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, src);
}
else
{
- AddTextPrinterParametrized2(0, 2, 2, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, gJPText_MysteryGift);
- AddTextPrinterParametrized2(0, 0, 0x78, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, gJPText_DecideStop);
+ AddTextPrinterParameterized4(0, 2, 2, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, gJPText_MysteryGift);
+ AddTextPrinterParameterized4(0, 0, 0x78, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, gJPText_DecideStop);
}
CopyWindowToVram(0, 2);
PutWindowTilemap(0);
@@ -596,7 +596,7 @@ void AddTextPrinterToWindow1(const u8 *str)
{
StringExpandPlaceholders(gStringVar4, str);
FillWindowPixelBuffer(1, 0x11);
- AddTextPrinterParametrized2(1, 2, 0, 2, 0, 2, &sMG_Ereader_TextColor_2, 0, gStringVar4);
+ AddTextPrinterParameterized4(1, 2, 0, 2, 0, 2, &sMG_Ereader_TextColor_2, 0, gStringVar4);
DrawTextBorderOuter(1, 0x001, 0xF);
PutWindowTilemap(1);
CopyWindowToVram(1, 3);
@@ -703,7 +703,7 @@ u32 MysteryGift_HandleThreeOptionMenu(u8 * unused0, u16 * unused1, u8 whichMenu)
width = 0;
for (i = 0; i < listMenuTemplate.totalItems; i++)
{
- u32 curWidth = GetStringWidth(2, listMenuTemplate.items[i].unk_00, listMenuTemplate.lettersSpacing);
+ u32 curWidth = GetStringWidth(2, listMenuTemplate.items[i].label, listMenuTemplate.lettersSpacing);
if (curWidth > width)
width = curWidth;
}
@@ -737,7 +737,7 @@ s8 mevent_message_print_and_prompt_yes_no(u8 * textState, u16 * windowId, bool8
*windowId = AddWindow(&sWindowTemplate_PromptYesOrNo_Width20);
}
FillWindowPixelBuffer(*windowId, 0x11);
- AddTextPrinterParametrized2(*windowId, 2, 0, 2, 0, 2, &sMG_Ereader_TextColor_2, 0, gStringVar4);
+ AddTextPrinterParameterized4(*windowId, 2, 0, 2, 0, 2, &sMG_Ereader_TextColor_2, 0, gStringVar4);
DrawTextBorderOuter(*windowId, 0x001, 0x0F);
CopyWindowToVram(*windowId, 2);
PutWindowTilemap(*windowId);
@@ -798,7 +798,7 @@ s32 HandleMysteryGiftListMenu(u8 * textState, u16 * windowId, bool32 cannotToss,
}
*windowId = AddWindow(&sMysteryGiftMenuWindowTemplate);
FillWindowPixelBuffer(*windowId, 0x11);
- AddTextPrinterParametrized2(*windowId, 2, 0, 2, 0, 2, &sMG_Ereader_TextColor_2, 0, gStringVar4);
+ AddTextPrinterParameterized4(*windowId, 2, 0, 2, 0, 2, &sMG_Ereader_TextColor_2, 0, gStringVar4);
DrawTextBorderOuter(*windowId, 0x001, 0x0F);
CopyWindowToVram(*windowId, 2);
PutWindowTilemap(*windowId);
diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c
new file mode 100644
index 000000000..9d2a5c883
--- /dev/null
+++ b/src/new_menu_helpers.c
@@ -0,0 +1,765 @@
+#include "global.h"
+#include "malloc.h"
+#include "dma3.h"
+#include "task.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "window.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "quest_log.h"
+#include "text.h"
+#include "field_specials.h"
+#include "text_window.h"
+#include "script.h"
+#include "graphics.h"
+#include "palette.h"
+
+#define DLG_WINDOW_PALETTE_NUM 15
+#define DLG_WINDOW_BASE_TILE_NUM 0x200
+#define STD_WINDOW_PALETTE_NUM 14
+#define STD_WINDOW_BASE_TILE_NUM 0x214
+
+static EWRAM_DATA bool8 gUnknown_203AB58[4] = {FALSE}; // knizz: bgmaps_that_need_syncing
+static EWRAM_DATA u16 gUnknown_203AB5C = {0};
+static EWRAM_DATA void *gUnknown_203AB60[0x20] = {NULL};
+static EWRAM_DATA u8 sStartMenuWindowId = {0};
+
+static const u8 gUnknown_841F428[] = { 8, 4, 1 };
+
+static const struct WindowTemplate sStandardTextBox_WindowTemplates[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 0x2,
+ .tilemapTop = 0xF,
+ .width = 0x1A,
+ .height = 0x4,
+ .paletteNum = DLG_WINDOW_PALETTE_NUM,
+ .baseBlock = 0x198,
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate sYesNo_WindowTemplate =
+{
+ .bg = 0,
+ .tilemapLeft = 0x15,
+ .tilemapTop = 0x9,
+ .width = 0x6,
+ .height = 0x4,
+ .paletteNum = DLG_WINDOW_PALETTE_NUM,
+ .baseBlock = 0x125,
+};
+
+static const struct FontInfo gFontInfos[] =
+{
+ {
+ .fontFunction = Font0Func,
+ .maxLetterWidth = 0x8,
+ .maxLetterHeight = 0xD,
+ .letterSpacing = 0x0,
+ .lineSpacing = 0x0,
+ .unk = 0x0,
+ .fgColor = 0x2,
+ .bgColor = 0x1,
+ .shadowColor = 0x3,
+ },
+ {
+ .fontFunction = Font1Func,
+ .maxLetterWidth = 0x8,
+ .maxLetterHeight = 0xE,
+ .letterSpacing = 0x0,
+ .lineSpacing = 0x0,
+ .unk = 0x0,
+ .fgColor = 0x2,
+ .bgColor = 0x1,
+ .shadowColor = 0x3,
+ },
+ {
+ .fontFunction = Font2Func,
+ .maxLetterWidth = 0xA,
+ .maxLetterHeight = 0xE,
+ .letterSpacing = 0x1,
+ .lineSpacing = 0x0,
+ .unk = 0x0,
+ .fgColor = 0x2,
+ .bgColor = 0x1,
+ .shadowColor = 0x3,
+ },
+ {
+ .fontFunction = Font3Func,
+ .maxLetterWidth = 0xA,
+ .maxLetterHeight = 0xE,
+ .letterSpacing = 0x1,
+ .lineSpacing = 0x0,
+ .unk = 0x0,
+ .fgColor = 0x2,
+ .bgColor = 0x1,
+ .shadowColor = 0x3,
+ },
+ {
+ .fontFunction = Font4Func,
+ .maxLetterWidth = 0xA,
+ .maxLetterHeight = 0xE,
+ .letterSpacing = 0x0,
+ .lineSpacing = 0x0,
+ .unk = 0x0,
+ .fgColor = 0x2,
+ .bgColor = 0x1,
+ .shadowColor = 0x3,
+ },
+ {
+ .fontFunction = Font5Func,
+ .maxLetterWidth = 0xA,
+ .maxLetterHeight = 0xE,
+ .letterSpacing = 0x0,
+ .lineSpacing = 0x0,
+ .unk = 0x0,
+ .fgColor = 0x2,
+ .bgColor = 0x1,
+ .shadowColor = 0x3,
+ },
+ {
+ .fontFunction = Font6Func,
+ .maxLetterWidth = 0x8,
+ .maxLetterHeight = 0x10,
+ .letterSpacing = 0x0,
+ .lineSpacing = 0x2,
+ .unk = 0x0,
+ .fgColor = 0x2,
+ .bgColor = 0x1,
+ .shadowColor = 0x3,
+ },
+ {
+ .fontFunction = NULL,
+ .maxLetterWidth = 0x8,
+ .maxLetterHeight = 0x8,
+ .letterSpacing = 0x0,
+ .lineSpacing = 0x0,
+ .unk = 0x0,
+ .fgColor = 0x1,
+ .bgColor = 0x2,
+ .shadowColor = 0xF,
+ }
+};
+
+static const u8 gMenuCursorDimensions[][2] =
+{
+ { 0x8, 0xD },
+ { 0x8, 0xE },
+ { 0x8, 0xE },
+ { 0x8, 0xE },
+ { 0x8, 0xE },
+ { 0x8, 0xE },
+ { 0x8, 0x10 },
+ { 0x0, 0x0 }
+};
+
+static u16 CopyDecompressedTileDataToVram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode);
+static void WindowFunc_DrawDialogueFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void WindowFunc_DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void WindowFunc_ClearDialogWindowAndFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void WindowFunc_ClearStdWindowAndFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void TaskFreeBufAfterCopyingTileDataToVram(u8 taskId);
+
+void ClearScheduledBgCopiesToVram(void)
+{
+ memset(gUnknown_203AB58, 0, sizeof(gUnknown_203AB58));
+}
+
+void ScheduleBgCopyTilemapToVram(u8 bgId)
+{
+ gUnknown_203AB58[bgId] = TRUE;
+}
+
+void DoScheduledBgTilemapCopiesToVram(void)
+{
+ if (gUnknown_203AB58[0] == TRUE)
+ {
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203AB58[0] = FALSE;
+ }
+ if (gUnknown_203AB58[1] == TRUE)
+ {
+ CopyBgTilemapBufferToVram(1);
+ gUnknown_203AB58[1] = FALSE;
+ }
+ if (gUnknown_203AB58[2] == TRUE)
+ {
+ CopyBgTilemapBufferToVram(2);
+ gUnknown_203AB58[2] = FALSE;
+ }
+ if (gUnknown_203AB58[3] == TRUE)
+ {
+ CopyBgTilemapBufferToVram(3);
+ gUnknown_203AB58[3] = FALSE;
+ }
+}
+
+void ResetTempTileDataBuffers(void)
+{
+ int i;
+
+ for (i = 0; i < (s32)NELEMS(gUnknown_203AB60); i++)
+ {
+ gUnknown_203AB60[i] = NULL;
+ }
+ gUnknown_203AB5C = 0;
+}
+
+bool8 FreeTempTileDataBuffersIfPossible(void)
+{
+ int i;
+
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ if (gUnknown_203AB5C)
+ {
+ for (i = 0; i < gUnknown_203AB5C; i++)
+ {
+ FREE_AND_SET_NULL(gUnknown_203AB60[i]);
+ }
+ gUnknown_203AB5C = 0;
+ }
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 offset, u8 mode)
+{
+ u32 sizeOut;
+
+ if (gUnknown_203AB5C < NELEMS(gUnknown_203AB60))
+ {
+ void *ptr = MallocAndDecompress(src, &sizeOut);
+ if (!size)
+ size = sizeOut;
+ if (ptr)
+ {
+ CopyDecompressedTileDataToVram(bgId, ptr, size, offset, mode);
+ gUnknown_203AB60[gUnknown_203AB5C++] = ptr;
+ }
+ return ptr;
+ }
+ return NULL;
+}
+
+void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode)
+{
+ u32 sizeOut;
+
+ if (gUnknown_203AB5C < NELEMS(gUnknown_203AB60))
+ {
+ void *ptr = MallocAndDecompress(src, &sizeOut);
+ if (sizeOut > size)
+ sizeOut = size;
+ if (ptr)
+ {
+ CopyDecompressedTileDataToVram(bgId, ptr, sizeOut, offset, mode);
+ gUnknown_203AB60[gUnknown_203AB5C++] = ptr;
+ }
+ return ptr;
+ }
+ return NULL;
+}
+
+void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode)
+{
+ u32 sizeOut;
+
+ void *ptr = MallocAndDecompress(src, &sizeOut);
+ if (!size)
+ size = sizeOut;
+ if (ptr)
+ {
+ u8 taskId = CreateTask(TaskFreeBufAfterCopyingTileDataToVram, 0);
+ gTasks[taskId].data[0] = CopyDecompressedTileDataToVram(bgId, ptr, size, offset, mode);
+ SetWordTaskArg(taskId, 1, (u32)ptr);
+ }
+}
+
+void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode)
+{
+ u32 sizeOut;
+
+ void *ptr = MallocAndDecompress(src, &sizeOut);
+ if (sizeOut > size)
+ sizeOut = size;
+ if (ptr)
+ {
+ u8 taskId = CreateTask(TaskFreeBufAfterCopyingTileDataToVram, 0);
+ gTasks[taskId].data[0] = CopyDecompressedTileDataToVram(bgId, ptr, sizeOut, offset, mode);
+ SetWordTaskArg(taskId, 1, (u32)ptr);
+ }
+}
+
+static void TaskFreeBufAfterCopyingTileDataToVram(u8 taskId)
+{
+ if (!CheckForSpaceForDma3Request(gTasks[taskId].data[0]))
+ {
+ Free((void *)GetWordTaskArg(taskId, 1));
+ DestroyTask(taskId);
+ }
+}
+
+void *MallocAndDecompress(const void *src, u32 *size)
+{
+ void *ptr;
+ u8 *sizeAsBytes = (u8 *)size;
+ const u8 *srcAsBytes = src;
+
+ sizeAsBytes[0] = srcAsBytes[1];
+ sizeAsBytes[1] = srcAsBytes[2];
+ sizeAsBytes[2] = srcAsBytes[3];
+ sizeAsBytes[3] = 0;
+
+ ptr = Alloc(*size);
+ if (ptr)
+ LZ77UnCompWram(src, ptr);
+ return ptr;
+}
+
+static u16 CopyDecompressedTileDataToVram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode)
+{
+ switch (mode)
+ {
+ case 1:
+ break;
+ case 0:
+ default:
+ return LoadBgTiles(bgId, src, size, offset);
+ }
+ return LoadBgTilemap(bgId, src, size, offset);
+}
+
+void SetBgRectPal(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette)
+{
+ u8 i, j;
+ u16 *ptr = GetBgTilemapBuffer(bgId);
+
+ for (i = top; i < top + height; i++)
+ {
+ for (j = left; j < left + width; j++)
+ {
+ ptr[(i * 32) + j] = (ptr[(i * 32) + j] & 0xFFF) | (palette << 12);
+ }
+ }
+}
+
+void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height)
+{
+ u8 i,j;
+ const u16 *src = GetBgTilemapBuffer(bgId);
+
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ dest[(i * width) + j] = src[(i + top) * 32 + j + left];
+ }
+ }
+}
+
+void ResetBgPositions(void)
+{
+ ChangeBgX(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgY(3, 0, 0);
+}
+
+void InitStandardTextBoxWindows(void)
+{
+ InitWindows(sStandardTextBox_WindowTemplates);
+ sStartMenuWindowId = 0xFF;
+ MapNamePopupWindowIdSetDummy();
+}
+
+void FreeAllOverworldWindowBuffers(void)
+{
+ FreeAllWindowBuffers();
+}
+
+void ResetBg0(void)
+{
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ DeactivateAllTextPrinters();
+ sub_80F6E9C();
+}
+
+u16 RunTextPrinters_CheckPrinter0Active(void)
+{
+ RunTextPrinters();
+ return IsTextPrinterActive(0);
+}
+
+u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor)
+{
+ struct TextPrinterTemplate printer;
+
+ printer.currentChar = str;
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.x = 0;
+ printer.y = 1;
+ printer.currentX = 0;
+ printer.currentY = 1;
+ printer.letterSpacing = 1;
+ printer.lineSpacing = 1;
+ printer.unk = 0;
+ printer.fgColor = fgColor;
+ printer.bgColor = bgColor;
+ printer.shadowColor = shadowColor;
+ gTextFlags.useAlternateDownArrow = 0;
+ return AddTextPrinter(&printer, speed, callback);
+}
+
+void AddTextPrinterDiffStyle(bool8 allowSkippingDelayWithButtonPress)
+{
+ u8 result;
+ void *nptr = NULL;
+
+ gTextFlags.canABSpeedUpPrint = allowSkippingDelayWithButtonPress;
+ result = ContextNpcGetTextColor();
+ if (result == 0)
+ AddTextPrinterParameterized2(0, 4, gStringVar4, GetTextSpeedSetting(), nptr, 8, 1, 3);
+ else if (result == 1)
+ AddTextPrinterParameterized2(0, 5, gStringVar4, GetTextSpeedSetting(), nptr, 4, 1, 3);
+ else
+ AddTextPrinterParameterized2(0, 2, gStringVar4, GetTextSpeedSetting(), nptr, 2, 1, 3);
+}
+
+void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress)
+{
+ gTextFlags.canABSpeedUpPrint = allowSkippingDelayWithButtonPress;
+ AddTextPrinterParameterized2(0, 2, gStringVar4, GetTextSpeedSetting(), NULL, 2, 1, 3);
+}
+
+void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed)
+{
+ gTextFlags.canABSpeedUpPrint = allowSkippingDelayWithButtonPress;
+ AddTextPrinterParameterized2(0, 2, gStringVar4, speed, NULL, 2, 1, 3);
+}
+
+void sub_80F6E9C(void)
+{
+ if (gUnknown_203ADFA == 2)
+ {
+ gTextFlags.autoScroll = 1;
+ TextWindow_LoadTilesStdFrame1(0, DLG_WINDOW_BASE_TILE_NUM);
+ }
+ else
+ {
+ Menu_LoadStdPal();
+ TextWindow_LoadResourcesStdFrame0(0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10);
+ }
+ TextWindow_SetUserSelectedFrame(0, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM * 0x10);
+}
+
+void DrawDialogueFrame(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, WindowFunc_DrawDialogueFrame);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+void DrawStdWindowFrame(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, WindowFunc_DrawStandardFrame);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, WindowFunc_ClearDialogWindowAndFrame);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ ClearWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+ if (gUnknown_203ADFA == 2)
+ sub_8111134();
+}
+
+void ClearStdWindowAndFrame(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, WindowFunc_ClearStdWindowAndFrame);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ ClearWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ int i;
+
+ FillBgTilemapBufferRect(bg, STD_WINDOW_BASE_TILE_NUM + 0, tilemapLeft - 1, tilemapTop - 1, 1, 1, STD_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, STD_WINDOW_BASE_TILE_NUM + 1, tilemapLeft, tilemapTop - 1, width, 1, STD_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, STD_WINDOW_BASE_TILE_NUM + 2, tilemapLeft + width, tilemapTop - 1, 1, 1, STD_WINDOW_PALETTE_NUM);
+ for (i = tilemapTop; i < tilemapTop + height; i++)
+ {
+ FillBgTilemapBufferRect(bg, STD_WINDOW_BASE_TILE_NUM + 3, tilemapLeft - 1, i, 1, 1, STD_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, STD_WINDOW_BASE_TILE_NUM + 5, tilemapLeft + width, i, 1, 1, STD_WINDOW_PALETTE_NUM);
+ }
+ FillBgTilemapBufferRect(bg, STD_WINDOW_BASE_TILE_NUM + 6, tilemapLeft - 1, tilemapTop + height, 1, 1, STD_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, STD_WINDOW_BASE_TILE_NUM + 7, tilemapLeft, tilemapTop + height, width, 1, STD_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, STD_WINDOW_BASE_TILE_NUM + 8, tilemapLeft + width, tilemapTop + height, 1, 1, STD_WINDOW_PALETTE_NUM);
+}
+
+static void WindowFunc_DrawDialogueFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ if (!IsMsgSignPost() || gUnknown_203ADFA == 2)
+ {
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 0, tilemapLeft - 2, tilemapTop - 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 1, tilemapLeft - 1, tilemapTop - 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 2, tilemapLeft, tilemapTop - 1, width, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 3, tilemapLeft + width, tilemapTop - 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 4, tilemapLeft + width + 1, tilemapTop - 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 5, tilemapLeft - 2, tilemapTop, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 6, tilemapLeft - 1, tilemapTop, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 8, tilemapLeft + width, tilemapTop, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 9, tilemapLeft + width + 1, tilemapTop, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 10, tilemapLeft - 2, tilemapTop + 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 11, tilemapLeft - 1, tilemapTop + 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 12, tilemapLeft + width, tilemapTop + 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 13, tilemapLeft + width + 1, tilemapTop + 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 10), tilemapLeft - 2, tilemapTop + 2, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 11), tilemapLeft - 1, tilemapTop + 2, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 12), tilemapLeft + width, tilemapTop + 2, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 13), tilemapLeft + width + 1, tilemapTop + 2, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 5), tilemapLeft - 2, tilemapTop + 3, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 6), tilemapLeft - 1, tilemapTop + 3, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 8), tilemapLeft + width, tilemapTop + 3, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 9), tilemapLeft + width + 1, tilemapTop + 3, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 0), tilemapLeft - 2, tilemapTop + 4, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 1), tilemapLeft - 1, tilemapTop + 4, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 2), tilemapLeft, tilemapTop + 4, width, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 3), tilemapLeft + width, tilemapTop + 4, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 4), tilemapLeft + width + 1, tilemapTop + 4, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ }
+ else
+ {
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 0, tilemapLeft - 2, tilemapTop - 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 1, tilemapLeft - 1, tilemapTop - 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 2, tilemapLeft, tilemapTop - 1, width, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 3, tilemapLeft + width, tilemapTop - 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 4, tilemapLeft + width + 1, tilemapTop - 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 5, tilemapLeft - 2, tilemapTop, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 6, tilemapLeft - 1, tilemapTop, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 8, tilemapLeft + width, tilemapTop, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 9, tilemapLeft + width + 1, tilemapTop, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 10, tilemapLeft - 2, tilemapTop + 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 11, tilemapLeft - 1, tilemapTop + 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 12, tilemapLeft + width, tilemapTop + 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 13, tilemapLeft + width + 1, tilemapTop + 1, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 5), tilemapLeft - 2, tilemapTop + 2, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 6), tilemapLeft - 1, tilemapTop + 2, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 8), tilemapLeft + width, tilemapTop + 2, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 9), tilemapLeft + width + 1, tilemapTop + 2, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 10), tilemapLeft - 2, tilemapTop + 3, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 11), tilemapLeft - 1, tilemapTop + 3, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 12), tilemapLeft + width, tilemapTop + 3, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 13), tilemapLeft + width + 1, tilemapTop + 3, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 0), tilemapLeft - 2, tilemapTop + 4, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 1), tilemapLeft - 1, tilemapTop + 4, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 2), tilemapLeft, tilemapTop + 4, width, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 3), tilemapLeft + width, tilemapTop + 4, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 4), tilemapLeft + width + 1, tilemapTop + 4, 1, 1, DLG_WINDOW_PALETTE_NUM);
+ }
+}
+
+static void WindowFunc_ClearStdWindowAndFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, STD_WINDOW_PALETTE_NUM);
+}
+
+static void WindowFunc_ClearDialogWindowAndFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, 0, tilemapLeft - 2, tilemapTop - 1, width + 4, height + 2, STD_WINDOW_PALETTE_NUM);
+}
+
+void sub_80F771C(bool8 copyToVram)
+{
+ FillBgTilemapBufferRect(0, 0, 0, 0, 0x20, 0x20, 0x11);
+ if (copyToVram == TRUE)
+ CopyBgTilemapBufferToVram(0);
+}
+
+void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram)
+{
+ DrawStdFrameWithCustomTileAndPalette(windowId, copyToVram, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM);
+}
+
+void sub_80F7768(u8 windowId, bool8 copyToVram)
+{
+ if (gUnknown_203ADFA == 2)
+ {
+ gTextFlags.autoScroll = 1;
+ TextWindow_LoadTilesStdFrame1(0, DLG_WINDOW_BASE_TILE_NUM);
+ }
+ else
+ {
+ TextWindow_LoadResourcesStdFrame0(windowId, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10);
+ }
+ DrawDialogFrameWithCustomTileAndPalette(windowId, copyToVram, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM);
+}
+
+void Menu_LoadStdPal(void)
+{
+ LoadPalette(gTMCaseMainWindowPalette, STD_WINDOW_PALETTE_NUM * 0x10, 0x14);
+}
+
+void Menu_LoadStdPalAt(u16 offset)
+{
+ LoadPalette(gTMCaseMainWindowPalette, offset, 0x14);
+}
+
+static const u16 *GetTmCaseMainWindowPalette(void)
+{
+ return gTMCaseMainWindowPalette;
+}
+
+static u16 GetStdPalColor(u8 colorNum)
+{
+ if (colorNum > 0xF)
+ colorNum = 0;
+ return gTMCaseMainWindowPalette[colorNum];
+}
+
+void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *string, TaskFunc callback)
+{
+ sub_80F6E9C();
+ DisplayMessageAndContinueTask(taskId, 0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM, bgId, GetTextSpeedSetting(), string, callback);
+ CopyWindowToVram(0, 3);
+}
+
+void DisplayYesNoMenuDefaultYes(void)
+{
+ CreateYesNoMenu(&sYesNo_WindowTemplate, 2, 0, 2, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, 0);
+}
+
+void DisplayYesNoMenuDefaultNo(void)
+{
+ CreateYesNoMenu(&sYesNo_WindowTemplate, 2, 0, 2, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, 1);
+}
+
+u8 GetTextSpeedSetting(void)
+{
+ u32 speed;
+ if (gSaveBlock2Ptr->optionsTextSpeed > OPTIONS_TEXT_SPEED_FAST)
+ gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_MID;
+ return gUnknown_841F428[gSaveBlock2Ptr->optionsTextSpeed];
+}
+
+u8 sub_80F78E0(u8 height)
+{
+ if (sStartMenuWindowId == 0xFF)
+ {
+ struct WindowTemplate template = SetWindowTemplateFields(0, 0x16, 1, 7, height * 2 - 1, DLG_WINDOW_PALETTE_NUM, 0x13D);
+ sStartMenuWindowId = AddWindow(&template);
+ PutWindowTilemap(sStartMenuWindowId);
+ }
+ return sStartMenuWindowId;
+}
+
+u8 GetStartMenuWindowId(void)
+{
+ return sStartMenuWindowId;
+}
+
+void RemoveStartMenuWindow(void)
+{
+ if (sStartMenuWindowId != 0xFF)
+ {
+ RemoveWindow(sStartMenuWindowId);
+ sStartMenuWindowId = 0xFF;
+ }
+}
+
+static u16 GetDlgWindowBaseTileNum(void)
+{
+ return DLG_WINDOW_BASE_TILE_NUM;
+}
+
+u16 GetStdWindowBaseTileNum(void)
+{
+ return STD_WINDOW_BASE_TILE_NUM;
+}
+
+void sub_80F7974(const u8 * text)
+{
+ sub_814FE6C(sub_8112EB4(), DLG_WINDOW_BASE_TILE_NUM, 0x10 * DLG_WINDOW_PALETTE_NUM);
+ sub_8113018(text, 2);
+}
+
+void sub_80F7998(void)
+{
+ sub_8112EDC(2);
+}
+
+void sub_80F79A4(void)
+{
+ Menu_LoadStdPal();
+ sub_814FEEC(0, DLG_WINDOW_BASE_TILE_NUM, 0x10 * DLG_WINDOW_PALETTE_NUM);
+ TextWindow_SetUserSelectedFrame(0, STD_WINDOW_BASE_TILE_NUM, 0x10 * STD_WINDOW_PALETTE_NUM);
+}
+
+void SetDefaultFontsPointer(void)
+{
+ SetFontsPointer(&gFontInfos[0]);
+}
+
+u8 GetFontAttribute(u8 fontId, u8 attributeId)
+{
+ int result = 0;
+
+ switch (attributeId)
+ {
+ case FONTATTR_MAX_LETTER_WIDTH:
+ result = gFontInfos[fontId].maxLetterWidth;
+ break;
+ case FONTATTR_MAX_LETTER_HEIGHT:
+ result = gFontInfos[fontId].maxLetterHeight;
+ break;
+ case FONTATTR_LETTER_SPACING:
+ result = gFontInfos[fontId].letterSpacing;
+ break;
+ case FONTATTR_LINE_SPACING:
+ result = gFontInfos[fontId].lineSpacing;
+ break;
+ case FONTATTR_UNKNOWN:
+ result = gFontInfos[fontId].unk;
+ break;
+ case FONTATTR_COLOR_FOREGROUND:
+ result = gFontInfos[fontId].fgColor;
+ break;
+ case FONTATTR_COLOR_BACKGROUND:
+ result = gFontInfos[fontId].bgColor;
+ break;
+ case FONTATTR_COLOR_SHADOW:
+ result = gFontInfos[fontId].shadowColor;
+ break;
+ }
+ return result;
+}
+
+u8 GetMenuCursorDimensionByFont(u8 fontId, u8 whichDimension)
+{
+ return gMenuCursorDimensions[fontId][whichDimension];
+}
diff --git a/src/oak_speech.c b/src/oak_speech.c
index 75f636041..c00335136 100644
--- a/src/oak_speech.c
+++ b/src/oak_speech.c
@@ -14,7 +14,7 @@
#include "menu.h"
#include "help_system.h"
#include "new_menu_helpers.h"
-#include "pokemon_3.h"
+#include "pokemon.h"
#include "sound.h"
#include "event_scripts.h"
#include "scanline_effect.h"
@@ -37,7 +37,7 @@ struct OakSpeechResources
u16 unk_0010;
u16 unk_0012;
u16 unk_0014[4];
- u8 unk_001C[3];
+ struct TextColor textColor;
u8 textSpeed;
u8 filler_0020[0x1800];
u8 bg2TilemapBuffer[0x400];
@@ -495,12 +495,12 @@ static void Task_OaksSpeech1(u8 taskId)
ScanlineEffect_Stop();
ResetSpriteData();
FreeAllSpritePalettes();
- reset_temp_tile_data_buffers();
+ ResetTempTileDataBuffers();
HelpSystem_SetSomeVariable2(2);
break;
case 1:
sOakSpeechResources = AllocZeroed(sizeof(*sOakSpeechResources));
- SetUpMonSpriteManagerMaybe(1, 1);
+ OakSpeechNidoranFSetup(1, 1);
break;
case 2:
SetGpuReg(REG_OFFSET_WIN0H, 0);
@@ -536,17 +536,17 @@ static void Task_OaksSpeech1(u8 taskId)
case 5:
sOakSpeechResources->textSpeed = GetTextSpeedSetting();
gTextFlags.canABSpeedUpPrint = TRUE;
- decompress_and_copy_tile_data_to_vram(1, sOakSpeechGfx_GameStartHelpUI, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, sOakSpeechGfx_GameStartHelpUI, 0, 0, 0);
break;
case 6:
- if (free_temp_tile_data_buffers_if_possible())
+ if (FreeTempTileDataBuffersIfPossible())
return;
ClearDialogWindowAndFrame(0, 1);
FillBgTilemapBufferRect_Palette0(1, 0x0000, 0, 0, 32, 32);
CopyBgTilemapBufferToVram(1);
break;
case 7:
- CreateWindow_SnapRight_StdPal(0, 30, 0, 13, 0x1C4);
+ CreateTopBarWindowLoadPalette(0, 30, 0, 13, 0x1C4);
FillBgTilemapBufferRect_Palette0(1, 0xD00F, 0, 0, 30, 2);
FillBgTilemapBufferRect_Palette0(1, 0xD002, 0, 2, 30, 1);
FillBgTilemapBufferRect_Palette0(1, 0xD00E, 0, 19, 30, 1);
@@ -572,11 +572,11 @@ static void Task_OaksSpeech1(u8 taskId)
static void CreateHelpDocsPage1(void)
{
- Menu_PrintHelpSystemUIHeader(gText_Controls, gText_ABUTTONNext, 0, 0, 1);
+ TopBarWindowPrintTwoStrings(gText_Controls, gText_ABUTTONNext, 0, 0, 1);
sOakSpeechResources->unk_0014[0] = AddWindow(sHelpDocsWindowTemplatePtrs[sOakSpeechResources->unk_0012]);
PutWindowTilemap(sOakSpeechResources->unk_0014[0]);
FillWindowPixelBuffer(sOakSpeechResources->unk_0014[0], 0x00);
- AddTextPrinterParametrized2(sOakSpeechResources->unk_0014[0], 2, 2, 0, 1, 1, &sTextColor_HelpSystem, 0, gNewGame_HelpDocs1);
+ AddTextPrinterParameterized4(sOakSpeechResources->unk_0014[0], 2, 2, 0, 1, 1, &sTextColor_HelpSystem, 0, gNewGame_HelpDocs1);
CopyWindowToVram(sOakSpeechResources->unk_0014[0], 3);
FillBgTilemapBufferRect_Palette0(1, 0x3000, 1, 3, 5, 16);
CopyBgTilemapBufferToVram(1);
@@ -592,13 +592,13 @@ static void Task_OakSpeech4(u8 taskId)
}
else
{
- PrintTextOnRightSnappedWindow(gText_ABUTTONNext_BBUTTONBack, 0, 1);
+ TopBarWindowPrintString(gText_ABUTTONNext_BBUTTONBack, 0, 1);
for (i = 0; i < 3; i++)
{
sOakSpeechResources->unk_0014[i] = AddWindow(&sHelpDocsWindowTemplatePtrs[sOakSpeechResources->unk_0012][i]);
PutWindowTilemap(sOakSpeechResources->unk_0014[i]);
FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00);
- AddTextPrinterParametrized2(sOakSpeechResources->unk_0014[i], 2, 6, 0, 1, 1, &sTextColor_HelpSystem, 0, sHelpDocsPtrs[i + r7 * 3]);
+ AddTextPrinterParameterized4(sOakSpeechResources->unk_0014[i], 2, 6, 0, 1, 1, &sTextColor_HelpSystem, 0, sHelpDocsPtrs[i + r7 * 3]);
CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3);
}
@@ -716,9 +716,9 @@ static void Task_OakSpeech6(u8 taskId)
else
{
PlayBGM(BGM_FRLG_GAME_EXPLANATION_MIDDLE);
- sub_810F71C();
- PrintTextOnRightSnappedWindow(gText_ABUTTONNext, 0, 1);
- sOakSpeechResources->unk_0008 = malloc_and_decompress(sNewGameAdventureIntroTilemap, &sp14);
+ ClearTopBarWindow();
+ TopBarWindowPrintString(gText_ABUTTONNext, 0, 1);
+ sOakSpeechResources->unk_0008 = MallocAndDecompress(sNewGameAdventureIntroTilemap, &sp14);
CopyToBgTilemapBufferRect(1, sOakSpeechResources->unk_0008, 0, 2, 30, 19);
CopyBgTilemapBufferToVram(1);
Free(sOakSpeechResources->unk_0008);
@@ -730,7 +730,7 @@ static void Task_OakSpeech6(u8 taskId)
sOakSpeechResources->unk_0012 = 0;
gMain.state = 0;
data[15] = 16;
- AddTextPrinterParametrized2(data[14], 2, 3, 5, 1, 0, &sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[0]);
+ AddTextPrinterParameterized4(data[14], 2, 3, 5, 1, 0, &sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[0]);
data[5] = CreateTextCursorSpriteForOakSpeech(0, 0xe2, 0x91, 0, 0);
gSprites[data[5]].oam.objMode = ST_OAM_OBJ_BLEND;
gSprites[data[5]].oam.priority = 0;
@@ -790,16 +790,16 @@ static void Task_OakSpeech7(u8 taskId)
if (data[15] <= 0)
{
FillWindowPixelBuffer(data[14], 0x00);
- AddTextPrinterParametrized2(data[14], 2, 3, 5, 1, 0, &sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[sOakSpeechResources->unk_0012]);
+ AddTextPrinterParameterized4(data[14], 2, 3, 5, 1, 0, &sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[sOakSpeechResources->unk_0012]);
if (sOakSpeechResources->unk_0012 == 0)
{
- sub_810F71C();
- PrintTextOnRightSnappedWindow(gText_ABUTTONNext, 0, 1);
+ ClearTopBarWindow();
+ TopBarWindowPrintString(gText_ABUTTONNext, 0, 1);
}
else
{
- sub_810F71C();
- PrintTextOnRightSnappedWindow(gText_ABUTTONNext_BBUTTONBack, 0, 1);
+ ClearTopBarWindow();
+ TopBarWindowPrintString(gText_ABUTTONNext_BBUTTONBack, 0, 1);
}
gMain.state++;
}
@@ -846,7 +846,7 @@ static void Task_OakSpeech8(u8 taskId)
if (!gPaletteFade.active)
{
- sub_810F740();
+ DestroyTopBarWindow();
FillWindowPixelBuffer(data[14], 0x00);
ClearWindowTilemap(data[14]);
CopyWindowToVram(data[14], 3);
@@ -869,7 +869,7 @@ static void Task_OakSpeech9(u8 taskId)
data[3]--;
else
{
- sOakSpeechResources->solidColorsGfx = malloc_and_decompress(sOakSpeechGfx_SolidColors, &size);
+ sOakSpeechResources->solidColorsGfx = MallocAndDecompress(sOakSpeechGfx_SolidColors, &size);
LoadBgTiles(1, sOakSpeechResources->solidColorsGfx, size, 0);
CopyToBgTilemapBuffer(1, sOakSpeech_BackgroundTilemap, 0, 0);
CopyBgTilemapBufferToVram(1);
@@ -889,11 +889,11 @@ static void Task_OakSpeech9(u8 taskId)
if (str != gStringVar4) \
{ \
StringExpandPlaceholders(gStringVar4, str); \
- AddTextPrinterParametrized(0, 4, gStringVar4, speed, NULL, 2, 1, 3); \
+ AddTextPrinterParameterized2(0, 4, gStringVar4, speed, NULL, 2, 1, 3); \
} \
else \
{ \
- AddTextPrinterParametrized(0, 4, str, speed, NULL, 2, 1, 3); \
+ AddTextPrinterParameterized2(0, 4, str, speed, NULL, 2, 1, 3); \
} \
CopyWindowToVram(0, 3); \
})
@@ -1054,17 +1054,17 @@ static void Task_OakSpeech19(u8 taskId)
{
gTasks[taskId].data[13] = AddWindow(&sNewGameAdventureIntroWindowTemplates[1]);
PutWindowTilemap(gTasks[taskId].data[13]);
- SetWindowBorderStyle(gTasks[taskId].data[13], 1, sub_80F796C(), 14);
+ DrawStdFrameWithCustomTileAndPalette(gTasks[taskId].data[13], 1, GetStdWindowBaseTileNum(), 14);
FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11);
- sOakSpeechResources->unk_001C[0] = 1;
- sOakSpeechResources->unk_001C[1] = 2;
- sOakSpeechResources->unk_001C[2] = 3;
- box_print(gTasks[taskId].data[13], 2, 8, 1, sOakSpeechResources->unk_001C, 0, gText_Boy);
- sOakSpeechResources->unk_001C[0] = 1;
- sOakSpeechResources->unk_001C[1] = 2;
- sOakSpeechResources->unk_001C[2] = 3;
- box_print(gTasks[taskId].data[13], 2, 8, 17, sOakSpeechResources->unk_001C, 0, gText_Girl);
- ProgramAndPlaceMenuCursorOnWindow(gTasks[taskId].data[13], 2, 0, 1, GetFontAttribute(2, 1) + 2, 2, 0);
+ sOakSpeechResources->textColor.fgColor = 1;
+ sOakSpeechResources->textColor.bgColor = 2;
+ sOakSpeechResources->textColor.shadowColor = 3;
+ AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 1, &sOakSpeechResources->textColor, 0, gText_Boy);
+ sOakSpeechResources->textColor.fgColor = 1;
+ sOakSpeechResources->textColor.bgColor = 2;
+ sOakSpeechResources->textColor.shadowColor = 3;
+ AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 17, &sOakSpeechResources->textColor, 0, gText_Girl);
+ Menu_InitCursor(gTasks[taskId].data[13], 2, 0, 1, GetFontAttribute(2, 1) + 2, 2, 0);
CopyWindowToVram(gTasks[taskId].data[13], 3);
gTasks[taskId].func = Task_OakSpeech20;
}
@@ -1072,7 +1072,7 @@ static void Task_OakSpeech19(u8 taskId)
static void Task_OakSpeech20(u8 taskId)
{
- s8 input = ProcessMenuInputNoWrapAround();
+ s8 input = Menu_ProcessInputNoWrapAround();
switch (input)
{
case 0:
@@ -1092,7 +1092,7 @@ static void Task_OakSpeech20(u8 taskId)
static void Task_OakSpeech21(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- sub_810F4D8(data[13], 1);
+ ClearStdWindowAndFrameToTransparent(data[13], 1);
RemoveWindow(data[13]);
data[13] = 0;
ClearDialogWindowAndFrame(0, 1);
@@ -1176,7 +1176,7 @@ static void Task_OakSpeech28(u8 taskId)
static void Task_OakSpeech29(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- s8 input = ProcessMenuInput();
+ s8 input = Menu_ProcessInput();
switch (input)
{
case 1:
@@ -1184,7 +1184,7 @@ static void Task_OakSpeech29(u8 taskId)
case 3:
case 4:
PlaySE(SE_SELECT);
- sub_810F4D8(data[13], TRUE);
+ ClearStdWindowAndFrameToTransparent(data[13], TRUE);
RemoveWindow(data[13]);
GetDefaultName(sOakSpeechResources->unk_0010, input - 1);
data[15] = 1;
@@ -1211,7 +1211,7 @@ static void Task_OakSpeech25(u8 taskId)
}
else
{
- sub_810F4D8(gTasks[taskId].data[13], 1);
+ ClearStdWindowAndFrameToTransparent(gTasks[taskId].data[13], 1);
RemoveWindow(gTasks[taskId].data[13]);
DoNamingScreen(4, gSaveBlock1Ptr->rivalName, 0, 0, 0, CB2_ReturnFromNamingScreen);
}
@@ -1246,7 +1246,7 @@ static void Task_OakSpeech26(u8 taskId)
data[3]--;
else
{
- CreateYesNoMenu(&sNewGameAdventureIntroWindowTemplates[2], 2, 0, 2, sub_80F796C(), 14, 0);
+ CreateYesNoMenu(&sNewGameAdventureIntroWindowTemplates[2], 2, 0, 2, GetStdWindowBaseTileNum(), 14, 0);
gTasks[taskId].func = Task_OakSpeech27;
}
}
@@ -1513,7 +1513,7 @@ static void Task_OakSpeech41(u8 taskId)
static void Task_OakSpeech42(u8 taskId)
{
FreeAllWindowBuffers();
- sub_8044D80();
+ OakSpeechNidoranFFreeResources();
Free(sOakSpeechResources);
sOakSpeechResources = NULL;
gTextFlags.canABSpeedUpPrint = FALSE;
@@ -1536,7 +1536,7 @@ static void CB2_ReturnFromNamingScreen(void)
ScanlineEffect_Stop();
ResetSpriteData();
FreeAllSpritePalettes();
- reset_temp_tile_data_buffers();
+ ResetTempTileDataBuffers();
break;
case 1:
ResetBgsAndClearDma3BusyFlags(0);
@@ -1564,10 +1564,10 @@ static void CB2_ReturnFromNamingScreen(void)
LoadPalette(sHelpDocsPalette, 0, 0xe0);
break;
case 4:
- decompress_and_copy_tile_data_to_vram(1, sOakSpeechGfx_SolidColors, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, sOakSpeechGfx_SolidColors, 0, 0, 0);
break;
case 5:
- if (free_temp_tile_data_buffers_if_possible())
+ if (FreeTempTileDataBuffersIfPossible())
return;
FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
CopyToBgTilemapBuffer(1, sOakSpeech_BackgroundTilemap, 0, 0);
@@ -1612,8 +1612,8 @@ static void CreateNidoranFSprite(u8 taskId)
{
u8 spriteId;
- DecompressPicFromTable(gUnknown_8235194, sub_8044E00(0), SPECIES_NIDORAN_F);
- sub_800F078(&gUnknown_82373F4);
+ DecompressPicFromTable(gUnknown_8235194, OakSpeechNidoranFGetBuffer(0), SPECIES_NIDORAN_F);
+ LoadCompressedSpritePaletteUsingHeap(&gUnknown_82373F4);
SetMultiuseSpriteTemplateToPokemon(SPECIES_NIDORAN_F, 0);
spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x60, 0x60, 1);
gSprites[spriteId].callback = SpriteCallbackDummy;
@@ -1635,9 +1635,9 @@ static void CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(u8 taskId, u8 st
switch (state)
{
case 0:
- LoadCompressedObjectPic(&sOakSpeech_PikaSpriteSheets[0]);
- LoadCompressedObjectPic(&sOakSpeech_PikaSpriteSheets[1]);
- LoadCompressedObjectPic(&sOakSpeech_PikaSpriteSheets[2]);
+ LoadCompressedSpriteSheet(&sOakSpeech_PikaSpriteSheets[0]);
+ LoadCompressedSpriteSheet(&sOakSpeech_PikaSpriteSheets[1]);
+ LoadCompressedSpriteSheet(&sOakSpeech_PikaSpriteSheets[2]);
LoadSpritePalette(&sOakSpeech_PikaSpritePal);
spriteId = CreateSprite(&sOakSpeech_PikaSpriteTemplates[0], 0x10, 0x11, 2);
gSprites[spriteId].oam.priority = 0;
@@ -1654,7 +1654,7 @@ static void CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(u8 taskId, u8 st
gTasks[taskId].data[9] = spriteId;
break;
case 1:
- LoadCompressedObjectPic(&sOakSpeech_GrassPlatformSpriteSheet);
+ LoadCompressedSpriteSheet(&sOakSpeech_GrassPlatformSpriteSheet);
LoadSpritePalette(&sOakSpeech_GrassPlatformSpritePal);
for (i = 0; i < 3; i++)
{
@@ -1850,7 +1850,7 @@ static void PrintNameChoiceOptions(u8 taskId, u8 state)
data[13] = AddWindow(&sNewGameAdventureIntroWindowTemplates[3]);
PutWindowTilemap(data[13]);
- SetWindowBorderStyle(data[13], 1, sub_80F796C(), 14);
+ DrawStdFrameWithCustomTileAndPalette(data[13], 1, GetStdWindowBaseTileNum(), 14);
FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11);
AddTextPrinterParameterized(data[13], 2, gOtherText_NewName, 8, 1, 0, NULL);
if (state == 0)
@@ -1861,7 +1861,7 @@ static void PrintNameChoiceOptions(u8 taskId, u8 state)
{
AddTextPrinterParameterized(data[13], 2, textPtrs[i], 8, 16 * (i + 1) + 1, 0, NULL);
}
- ProgramAndPlaceMenuCursorOnWindow(data[13], 2, 0, 1, 16, 5, 0);
+ Menu_InitCursor(data[13], 2, 0, 1, 16, 5, 0);
CopyWindowToVram(data[13], 3);
}
diff --git a/src/play_time.c b/src/play_time.c
new file mode 100644
index 000000000..04f4b2040
--- /dev/null
+++ b/src/play_time.c
@@ -0,0 +1,65 @@
+#include "play_time.h"
+
+static IWRAM_DATA u8 sPlayTimeCounterState;
+
+enum
+{
+ STOPPED,
+ RUNNING,
+ MAXED_OUT,
+};
+
+void PlayTimeCounter_Reset(void)
+{
+ sPlayTimeCounterState = STOPPED;
+ gSaveBlock2Ptr->playTimeHours = 0;
+ gSaveBlock2Ptr->playTimeMinutes = 0;
+ gSaveBlock2Ptr->playTimeSeconds = 0;
+ gSaveBlock2Ptr->playTimeVBlanks = 0;
+}
+
+void PlayTimeCounter_Start(void)
+{
+ sPlayTimeCounterState = RUNNING;
+ if (gSaveBlock2Ptr->playTimeHours > 999)
+ PlayTimeCounter_SetToMax();
+}
+
+void PlayTimeCounter_Stop(void)
+{
+ sPlayTimeCounterState = STOPPED;
+}
+
+void PlayTimeCounter_Update(void)
+{
+ if (sPlayTimeCounterState == RUNNING)
+ {
+ gSaveBlock2Ptr->playTimeVBlanks++;
+ if (gSaveBlock2Ptr->playTimeVBlanks > 59)
+ {
+ gSaveBlock2Ptr->playTimeVBlanks = 0;
+ gSaveBlock2Ptr->playTimeSeconds++;
+ if (gSaveBlock2Ptr->playTimeSeconds > 59)
+ {
+ gSaveBlock2Ptr->playTimeSeconds = 0;
+ gSaveBlock2Ptr->playTimeMinutes++;
+ if (gSaveBlock2Ptr->playTimeMinutes > 59)
+ {
+ gSaveBlock2Ptr->playTimeMinutes = 0;
+ gSaveBlock2Ptr->playTimeHours++;
+ if (gSaveBlock2Ptr->playTimeHours > 999)
+ PlayTimeCounter_SetToMax();
+ }
+ }
+ }
+ }
+}
+
+void PlayTimeCounter_SetToMax(void)
+{
+ sPlayTimeCounterState = MAXED_OUT;
+ gSaveBlock2Ptr->playTimeHours = 999;
+ gSaveBlock2Ptr->playTimeMinutes = 59;
+ gSaveBlock2Ptr->playTimeSeconds = 59;
+ gSaveBlock2Ptr->playTimeVBlanks = 59;
+}
diff --git a/src/pokemon.c b/src/pokemon.c
index 3a9fdbf04..b948e4033 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -5,8 +5,10 @@
#include "random.h"
#include "main.h"
#include "text.h"
+#include "data2.h"
#include "string_util.h"
#include "battle.h"
+#include "battle_2.h"
#include "item.h"
#include "event_data.h"
#include "util.h"
@@ -16,15 +18,27 @@
#include "battle_controllers.h"
#include "evolution_scene.h"
#include "battle_message.h"
+#include "battle_util.h"
+#include "battle_ai_script_commands.h"
#include "link.h"
#include "m4a.h"
#include "sound.h"
+#include "pokedex.h"
+#include "strings.h"
+#include "malloc.h"
+#include "overworld.h"
+#include "party_menu.h"
+#include "field_specials.h"
#include "constants/items.h"
+#include "constants/item_effects.h"
#include "constants/species.h"
+#include "constants/hoenn_cries.h"
#include "constants/pokemon.h"
#include "constants/abilities.h"
#include "constants/flags.h"
#include "constants/moves.h"
+#include "constants/trainer_classes.h"
+#include "constants/facility_trainer_classes.h"
#include "constants/hold_effects.h"
#include "constants/battle_move_effects.h"
@@ -34,63 +48,1605 @@
// Extracts the lower 16 bits of a 32-bit number
#define LOHALF(n) ((n) & 0xFFFF)
-// TODO: what is this
-struct UnkStruct20244F4
+#define SPECIES_TO_HOENN(name) [SPECIES_##name - 1] = HOENN_DEX_##name
+#define SPECIES_TO_NATIONAL(name) [SPECIES_##name - 1] = NATIONAL_DEX_##name
+#define HOENN_TO_NATIONAL(name) [HOENN_DEX_##name - 1] = NATIONAL_DEX_##name
+
+struct OakSpeechNidoranFStruct
{
- u8 unk0:4;
- u8 unk0_2:4;
- u8 filler1[0xF];
- struct SpriteTemplate *unk10;
+ u8 spriteCount:4;
+ u8 battlePosition:4;
+ u8 frameCount;
+ u8 enable;
+ bool8 enable2;
+ u32 sizePerSprite;
+ u8 *dataBuffer;
+ u8 **bufferPtrs;
+ struct SpriteTemplate *templates;
+ struct SpriteFrameImage *frameImages;
};
-// External symbols
-extern struct UnkStruct20244F4 *gUnknown_20244F4;
-extern struct SpriteTemplate gUnknown_825DEF0[];
-extern struct SpriteTemplate gUnknown_825DF50[];
-extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[];
-extern struct SpriteTemplate gUnknown_825DEF0[];
-extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
-extern const union AnimCmd *const gUnknown_82349BC[];
-extern const u8 gUnknown_825DEA1[];
-extern const u8 gPPUpWriteMasks[];
-extern u8 *gUnknown_83FD5D0[];
-extern const u8 gUnknown_825DFF0[];
-extern const u8 gText_EggNickname[];
-extern const u8 gText_BadEgg[];
-extern const u8 BattleText_Rose[];
-extern const u8 BattleText_UnknownString3[];
-extern const u8 BattleText_GetPumped[];
-extern const u8 BattleText_MistShroud[];
-extern const u8 gText_PkmnsXPreventsSwitching[];
-extern const u8 sHoldEffectToType[][2];
+// TODO: move sLearningMoveTableID, gPlayerPartyCount, gEnemyPartyCount,
+// gEnemyParty, gPlayerParty here after resolving symbol ref in between.
extern u8 sLearningMoveTableID;
-extern const u8 sSecretBaseFacilityClasses[2][5];
-extern u16 gUnknown_8251CB8[];
-extern u16 gUnknown_8251FEE[];
-extern u16 gUnknown_8252324[];
-extern u16 gUnknown_82539D4[];
-extern struct SpindaSpot gSpindaSpotGraphics[];
-extern s8 gNatureStatTable[][5];
-extern const s8 sFriendshipEventDeltas[][3];
-extern u32 gTMHMLearnsets[][2];
-extern u8 gBattleMonForms[4];
-extern const struct CompressedSpritePalette gMonPaletteTable[];
-extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
-extern const u16 sHMMoves[];
-extern s8 gPokeblockFlavorCompatibilityTable[];
-
-// External functions
-extern u8 GetCurrentRegionMapSectionId(void); // overworld
-extern const struct BattleMove gBattleMoves[];
-extern u8 sBattler_AI; // battle_ai
-extern void set_unknown_box_id(u8); // field_specials
-extern u8 pokemon_order_func(u8);
-extern u16 get_unknown_box_id(void); // field_specials
-extern u8 StorageGetCurrentBox(void); // pokemon_storage_system
-extern void sub_80174B8(u8 battlerId);
-
-union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType);
-s32 GetDeoxysStat(struct Pokemon *mon, s32 statId);
+EWRAM_DATA struct SpriteTemplate gMultiuseSpriteTemplate = {0};
+static EWRAM_DATA struct OakSpeechNidoranFStruct *sOakSpeechNidoranResources = NULL;
+
+static union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType);
+static u16 GetDeoxysStat(struct Pokemon *mon, s32 statId);
+static bool8 IsShinyOtIdPersonality(u32 otId, u32 personality);
+static u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex);
+static u8 GetNatureFromPersonality(u32 personality);
+static bool8 sub_8042BE8(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId);
+static bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId);
+static bool8 IsPokemonStorageFull(void);
+static u8 SendMonToPC(struct Pokemon* mon);
+static void EncryptBoxMon(struct BoxPokemon *boxMon);
+static void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
+static void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon);
+static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
+static u8 GetLevelFromMonExp(struct Pokemon *mon);
+static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
+
+#include "data/battle_moves.h"
+
+static const u8 sUnreferencedData[] = { 0x34, 0x00, 0x10, 0x00, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 };
+
+static const u16 sSpeciesToHoennPokedexNum[] = // Assigns all species to the Hoenn Dex Index (Summary No. for Hoenn Dex)
+{
+ SPECIES_TO_HOENN(BULBASAUR),
+ SPECIES_TO_HOENN(IVYSAUR),
+ SPECIES_TO_HOENN(VENUSAUR),
+ SPECIES_TO_HOENN(CHARMANDER),
+ SPECIES_TO_HOENN(CHARMELEON),
+ SPECIES_TO_HOENN(CHARIZARD),
+ SPECIES_TO_HOENN(SQUIRTLE),
+ SPECIES_TO_HOENN(WARTORTLE),
+ SPECIES_TO_HOENN(BLASTOISE),
+ SPECIES_TO_HOENN(CATERPIE),
+ SPECIES_TO_HOENN(METAPOD),
+ SPECIES_TO_HOENN(BUTTERFREE),
+ SPECIES_TO_HOENN(WEEDLE),
+ SPECIES_TO_HOENN(KAKUNA),
+ SPECIES_TO_HOENN(BEEDRILL),
+ SPECIES_TO_HOENN(PIDGEY),
+ SPECIES_TO_HOENN(PIDGEOTTO),
+ SPECIES_TO_HOENN(PIDGEOT),
+ SPECIES_TO_HOENN(RATTATA),
+ SPECIES_TO_HOENN(RATICATE),
+ SPECIES_TO_HOENN(SPEAROW),
+ SPECIES_TO_HOENN(FEAROW),
+ SPECIES_TO_HOENN(EKANS),
+ SPECIES_TO_HOENN(ARBOK),
+ SPECIES_TO_HOENN(PIKACHU),
+ SPECIES_TO_HOENN(RAICHU),
+ SPECIES_TO_HOENN(SANDSHREW),
+ SPECIES_TO_HOENN(SANDSLASH),
+ SPECIES_TO_HOENN(NIDORAN_F),
+ SPECIES_TO_HOENN(NIDORINA),
+ SPECIES_TO_HOENN(NIDOQUEEN),
+ SPECIES_TO_HOENN(NIDORAN_M),
+ SPECIES_TO_HOENN(NIDORINO),
+ SPECIES_TO_HOENN(NIDOKING),
+ SPECIES_TO_HOENN(CLEFAIRY),
+ SPECIES_TO_HOENN(CLEFABLE),
+ SPECIES_TO_HOENN(VULPIX),
+ SPECIES_TO_HOENN(NINETALES),
+ SPECIES_TO_HOENN(JIGGLYPUFF),
+ SPECIES_TO_HOENN(WIGGLYTUFF),
+ SPECIES_TO_HOENN(ZUBAT),
+ SPECIES_TO_HOENN(GOLBAT),
+ SPECIES_TO_HOENN(ODDISH),
+ SPECIES_TO_HOENN(GLOOM),
+ SPECIES_TO_HOENN(VILEPLUME),
+ SPECIES_TO_HOENN(PARAS),
+ SPECIES_TO_HOENN(PARASECT),
+ SPECIES_TO_HOENN(VENONAT),
+ SPECIES_TO_HOENN(VENOMOTH),
+ SPECIES_TO_HOENN(DIGLETT),
+ SPECIES_TO_HOENN(DUGTRIO),
+ SPECIES_TO_HOENN(MEOWTH),
+ SPECIES_TO_HOENN(PERSIAN),
+ SPECIES_TO_HOENN(PSYDUCK),
+ SPECIES_TO_HOENN(GOLDUCK),
+ SPECIES_TO_HOENN(MANKEY),
+ SPECIES_TO_HOENN(PRIMEAPE),
+ SPECIES_TO_HOENN(GROWLITHE),
+ SPECIES_TO_HOENN(ARCANINE),
+ SPECIES_TO_HOENN(POLIWAG),
+ SPECIES_TO_HOENN(POLIWHIRL),
+ SPECIES_TO_HOENN(POLIWRATH),
+ SPECIES_TO_HOENN(ABRA),
+ SPECIES_TO_HOENN(KADABRA),
+ SPECIES_TO_HOENN(ALAKAZAM),
+ SPECIES_TO_HOENN(MACHOP),
+ SPECIES_TO_HOENN(MACHOKE),
+ SPECIES_TO_HOENN(MACHAMP),
+ SPECIES_TO_HOENN(BELLSPROUT),
+ SPECIES_TO_HOENN(WEEPINBELL),
+ SPECIES_TO_HOENN(VICTREEBEL),
+ SPECIES_TO_HOENN(TENTACOOL),
+ SPECIES_TO_HOENN(TENTACRUEL),
+ SPECIES_TO_HOENN(GEODUDE),
+ SPECIES_TO_HOENN(GRAVELER),
+ SPECIES_TO_HOENN(GOLEM),
+ SPECIES_TO_HOENN(PONYTA),
+ SPECIES_TO_HOENN(RAPIDASH),
+ SPECIES_TO_HOENN(SLOWPOKE),
+ SPECIES_TO_HOENN(SLOWBRO),
+ SPECIES_TO_HOENN(MAGNEMITE),
+ SPECIES_TO_HOENN(MAGNETON),
+ SPECIES_TO_HOENN(FARFETCHD),
+ SPECIES_TO_HOENN(DODUO),
+ SPECIES_TO_HOENN(DODRIO),
+ SPECIES_TO_HOENN(SEEL),
+ SPECIES_TO_HOENN(DEWGONG),
+ SPECIES_TO_HOENN(GRIMER),
+ SPECIES_TO_HOENN(MUK),
+ SPECIES_TO_HOENN(SHELLDER),
+ SPECIES_TO_HOENN(CLOYSTER),
+ SPECIES_TO_HOENN(GASTLY),
+ SPECIES_TO_HOENN(HAUNTER),
+ SPECIES_TO_HOENN(GENGAR),
+ SPECIES_TO_HOENN(ONIX),
+ SPECIES_TO_HOENN(DROWZEE),
+ SPECIES_TO_HOENN(HYPNO),
+ SPECIES_TO_HOENN(KRABBY),
+ SPECIES_TO_HOENN(KINGLER),
+ SPECIES_TO_HOENN(VOLTORB),
+ SPECIES_TO_HOENN(ELECTRODE),
+ SPECIES_TO_HOENN(EXEGGCUTE),
+ SPECIES_TO_HOENN(EXEGGUTOR),
+ SPECIES_TO_HOENN(CUBONE),
+ SPECIES_TO_HOENN(MAROWAK),
+ SPECIES_TO_HOENN(HITMONLEE),
+ SPECIES_TO_HOENN(HITMONCHAN),
+ SPECIES_TO_HOENN(LICKITUNG),
+ SPECIES_TO_HOENN(KOFFING),
+ SPECIES_TO_HOENN(WEEZING),
+ SPECIES_TO_HOENN(RHYHORN),
+ SPECIES_TO_HOENN(RHYDON),
+ SPECIES_TO_HOENN(CHANSEY),
+ SPECIES_TO_HOENN(TANGELA),
+ SPECIES_TO_HOENN(KANGASKHAN),
+ SPECIES_TO_HOENN(HORSEA),
+ SPECIES_TO_HOENN(SEADRA),
+ SPECIES_TO_HOENN(GOLDEEN),
+ SPECIES_TO_HOENN(SEAKING),
+ SPECIES_TO_HOENN(STARYU),
+ SPECIES_TO_HOENN(STARMIE),
+ SPECIES_TO_HOENN(MR_MIME),
+ SPECIES_TO_HOENN(SCYTHER),
+ SPECIES_TO_HOENN(JYNX),
+ SPECIES_TO_HOENN(ELECTABUZZ),
+ SPECIES_TO_HOENN(MAGMAR),
+ SPECIES_TO_HOENN(PINSIR),
+ SPECIES_TO_HOENN(TAUROS),
+ SPECIES_TO_HOENN(MAGIKARP),
+ SPECIES_TO_HOENN(GYARADOS),
+ SPECIES_TO_HOENN(LAPRAS),
+ SPECIES_TO_HOENN(DITTO),
+ SPECIES_TO_HOENN(EEVEE),
+ SPECIES_TO_HOENN(VAPOREON),
+ SPECIES_TO_HOENN(JOLTEON),
+ SPECIES_TO_HOENN(FLAREON),
+ SPECIES_TO_HOENN(PORYGON),
+ SPECIES_TO_HOENN(OMANYTE),
+ SPECIES_TO_HOENN(OMASTAR),
+ SPECIES_TO_HOENN(KABUTO),
+ SPECIES_TO_HOENN(KABUTOPS),
+ SPECIES_TO_HOENN(AERODACTYL),
+ SPECIES_TO_HOENN(SNORLAX),
+ SPECIES_TO_HOENN(ARTICUNO),
+ SPECIES_TO_HOENN(ZAPDOS),
+ SPECIES_TO_HOENN(MOLTRES),
+ SPECIES_TO_HOENN(DRATINI),
+ SPECIES_TO_HOENN(DRAGONAIR),
+ SPECIES_TO_HOENN(DRAGONITE),
+ SPECIES_TO_HOENN(MEWTWO),
+ SPECIES_TO_HOENN(MEW),
+ SPECIES_TO_HOENN(CHIKORITA),
+ SPECIES_TO_HOENN(BAYLEEF),
+ SPECIES_TO_HOENN(MEGANIUM),
+ SPECIES_TO_HOENN(CYNDAQUIL),
+ SPECIES_TO_HOENN(QUILAVA),
+ SPECIES_TO_HOENN(TYPHLOSION),
+ SPECIES_TO_HOENN(TOTODILE),
+ SPECIES_TO_HOENN(CROCONAW),
+ SPECIES_TO_HOENN(FERALIGATR),
+ SPECIES_TO_HOENN(SENTRET),
+ SPECIES_TO_HOENN(FURRET),
+ SPECIES_TO_HOENN(HOOTHOOT),
+ SPECIES_TO_HOENN(NOCTOWL),
+ SPECIES_TO_HOENN(LEDYBA),
+ SPECIES_TO_HOENN(LEDIAN),
+ SPECIES_TO_HOENN(SPINARAK),
+ SPECIES_TO_HOENN(ARIADOS),
+ SPECIES_TO_HOENN(CROBAT),
+ SPECIES_TO_HOENN(CHINCHOU),
+ SPECIES_TO_HOENN(LANTURN),
+ SPECIES_TO_HOENN(PICHU),
+ SPECIES_TO_HOENN(CLEFFA),
+ SPECIES_TO_HOENN(IGGLYBUFF),
+ SPECIES_TO_HOENN(TOGEPI),
+ SPECIES_TO_HOENN(TOGETIC),
+ SPECIES_TO_HOENN(NATU),
+ SPECIES_TO_HOENN(XATU),
+ SPECIES_TO_HOENN(MAREEP),
+ SPECIES_TO_HOENN(FLAAFFY),
+ SPECIES_TO_HOENN(AMPHAROS),
+ SPECIES_TO_HOENN(BELLOSSOM),
+ SPECIES_TO_HOENN(MARILL),
+ SPECIES_TO_HOENN(AZUMARILL),
+ SPECIES_TO_HOENN(SUDOWOODO),
+ SPECIES_TO_HOENN(POLITOED),
+ SPECIES_TO_HOENN(HOPPIP),
+ SPECIES_TO_HOENN(SKIPLOOM),
+ SPECIES_TO_HOENN(JUMPLUFF),
+ SPECIES_TO_HOENN(AIPOM),
+ SPECIES_TO_HOENN(SUNKERN),
+ SPECIES_TO_HOENN(SUNFLORA),
+ SPECIES_TO_HOENN(YANMA),
+ SPECIES_TO_HOENN(WOOPER),
+ SPECIES_TO_HOENN(QUAGSIRE),
+ SPECIES_TO_HOENN(ESPEON),
+ SPECIES_TO_HOENN(UMBREON),
+ SPECIES_TO_HOENN(MURKROW),
+ SPECIES_TO_HOENN(SLOWKING),
+ SPECIES_TO_HOENN(MISDREAVUS),
+ SPECIES_TO_HOENN(UNOWN),
+ SPECIES_TO_HOENN(WOBBUFFET),
+ SPECIES_TO_HOENN(GIRAFARIG),
+ SPECIES_TO_HOENN(PINECO),
+ SPECIES_TO_HOENN(FORRETRESS),
+ SPECIES_TO_HOENN(DUNSPARCE),
+ SPECIES_TO_HOENN(GLIGAR),
+ SPECIES_TO_HOENN(STEELIX),
+ SPECIES_TO_HOENN(SNUBBULL),
+ SPECIES_TO_HOENN(GRANBULL),
+ SPECIES_TO_HOENN(QWILFISH),
+ SPECIES_TO_HOENN(SCIZOR),
+ SPECIES_TO_HOENN(SHUCKLE),
+ SPECIES_TO_HOENN(HERACROSS),
+ SPECIES_TO_HOENN(SNEASEL),
+ SPECIES_TO_HOENN(TEDDIURSA),
+ SPECIES_TO_HOENN(URSARING),
+ SPECIES_TO_HOENN(SLUGMA),
+ SPECIES_TO_HOENN(MAGCARGO),
+ SPECIES_TO_HOENN(SWINUB),
+ SPECIES_TO_HOENN(PILOSWINE),
+ SPECIES_TO_HOENN(CORSOLA),
+ SPECIES_TO_HOENN(REMORAID),
+ SPECIES_TO_HOENN(OCTILLERY),
+ SPECIES_TO_HOENN(DELIBIRD),
+ SPECIES_TO_HOENN(MANTINE),
+ SPECIES_TO_HOENN(SKARMORY),
+ SPECIES_TO_HOENN(HOUNDOUR),
+ SPECIES_TO_HOENN(HOUNDOOM),
+ SPECIES_TO_HOENN(KINGDRA),
+ SPECIES_TO_HOENN(PHANPY),
+ SPECIES_TO_HOENN(DONPHAN),
+ SPECIES_TO_HOENN(PORYGON2),
+ SPECIES_TO_HOENN(STANTLER),
+ SPECIES_TO_HOENN(SMEARGLE),
+ SPECIES_TO_HOENN(TYROGUE),
+ SPECIES_TO_HOENN(HITMONTOP),
+ SPECIES_TO_HOENN(SMOOCHUM),
+ SPECIES_TO_HOENN(ELEKID),
+ SPECIES_TO_HOENN(MAGBY),
+ SPECIES_TO_HOENN(MILTANK),
+ SPECIES_TO_HOENN(BLISSEY),
+ SPECIES_TO_HOENN(RAIKOU),
+ SPECIES_TO_HOENN(ENTEI),
+ SPECIES_TO_HOENN(SUICUNE),
+ SPECIES_TO_HOENN(LARVITAR),
+ SPECIES_TO_HOENN(PUPITAR),
+ SPECIES_TO_HOENN(TYRANITAR),
+ SPECIES_TO_HOENN(LUGIA),
+ SPECIES_TO_HOENN(HO_OH),
+ SPECIES_TO_HOENN(CELEBI),
+ SPECIES_TO_HOENN(OLD_UNOWN_B),
+ SPECIES_TO_HOENN(OLD_UNOWN_C),
+ SPECIES_TO_HOENN(OLD_UNOWN_D),
+ SPECIES_TO_HOENN(OLD_UNOWN_E),
+ SPECIES_TO_HOENN(OLD_UNOWN_F),
+ SPECIES_TO_HOENN(OLD_UNOWN_G),
+ SPECIES_TO_HOENN(OLD_UNOWN_H),
+ SPECIES_TO_HOENN(OLD_UNOWN_I),
+ SPECIES_TO_HOENN(OLD_UNOWN_J),
+ SPECIES_TO_HOENN(OLD_UNOWN_K),
+ SPECIES_TO_HOENN(OLD_UNOWN_L),
+ SPECIES_TO_HOENN(OLD_UNOWN_M),
+ SPECIES_TO_HOENN(OLD_UNOWN_N),
+ SPECIES_TO_HOENN(OLD_UNOWN_O),
+ SPECIES_TO_HOENN(OLD_UNOWN_P),
+ SPECIES_TO_HOENN(OLD_UNOWN_Q),
+ SPECIES_TO_HOENN(OLD_UNOWN_R),
+ SPECIES_TO_HOENN(OLD_UNOWN_S),
+ SPECIES_TO_HOENN(OLD_UNOWN_T),
+ SPECIES_TO_HOENN(OLD_UNOWN_U),
+ SPECIES_TO_HOENN(OLD_UNOWN_V),
+ SPECIES_TO_HOENN(OLD_UNOWN_W),
+ SPECIES_TO_HOENN(OLD_UNOWN_X),
+ SPECIES_TO_HOENN(OLD_UNOWN_Y),
+ SPECIES_TO_HOENN(OLD_UNOWN_Z),
+ SPECIES_TO_HOENN(TREECKO),
+ SPECIES_TO_HOENN(GROVYLE),
+ SPECIES_TO_HOENN(SCEPTILE),
+ SPECIES_TO_HOENN(TORCHIC),
+ SPECIES_TO_HOENN(COMBUSKEN),
+ SPECIES_TO_HOENN(BLAZIKEN),
+ SPECIES_TO_HOENN(MUDKIP),
+ SPECIES_TO_HOENN(MARSHTOMP),
+ SPECIES_TO_HOENN(SWAMPERT),
+ SPECIES_TO_HOENN(POOCHYENA),
+ SPECIES_TO_HOENN(MIGHTYENA),
+ SPECIES_TO_HOENN(ZIGZAGOON),
+ SPECIES_TO_HOENN(LINOONE),
+ SPECIES_TO_HOENN(WURMPLE),
+ SPECIES_TO_HOENN(SILCOON),
+ SPECIES_TO_HOENN(BEAUTIFLY),
+ SPECIES_TO_HOENN(CASCOON),
+ SPECIES_TO_HOENN(DUSTOX),
+ SPECIES_TO_HOENN(LOTAD),
+ SPECIES_TO_HOENN(LOMBRE),
+ SPECIES_TO_HOENN(LUDICOLO),
+ SPECIES_TO_HOENN(SEEDOT),
+ SPECIES_TO_HOENN(NUZLEAF),
+ SPECIES_TO_HOENN(SHIFTRY),
+ SPECIES_TO_HOENN(NINCADA),
+ SPECIES_TO_HOENN(NINJASK),
+ SPECIES_TO_HOENN(SHEDINJA),
+ SPECIES_TO_HOENN(TAILLOW),
+ SPECIES_TO_HOENN(SWELLOW),
+ SPECIES_TO_HOENN(SHROOMISH),
+ SPECIES_TO_HOENN(BRELOOM),
+ SPECIES_TO_HOENN(SPINDA),
+ SPECIES_TO_HOENN(WINGULL),
+ SPECIES_TO_HOENN(PELIPPER),
+ SPECIES_TO_HOENN(SURSKIT),
+ SPECIES_TO_HOENN(MASQUERAIN),
+ SPECIES_TO_HOENN(WAILMER),
+ SPECIES_TO_HOENN(WAILORD),
+ SPECIES_TO_HOENN(SKITTY),
+ SPECIES_TO_HOENN(DELCATTY),
+ SPECIES_TO_HOENN(KECLEON),
+ SPECIES_TO_HOENN(BALTOY),
+ SPECIES_TO_HOENN(CLAYDOL),
+ SPECIES_TO_HOENN(NOSEPASS),
+ SPECIES_TO_HOENN(TORKOAL),
+ SPECIES_TO_HOENN(SABLEYE),
+ SPECIES_TO_HOENN(BARBOACH),
+ SPECIES_TO_HOENN(WHISCASH),
+ SPECIES_TO_HOENN(LUVDISC),
+ SPECIES_TO_HOENN(CORPHISH),
+ SPECIES_TO_HOENN(CRAWDAUNT),
+ SPECIES_TO_HOENN(FEEBAS),
+ SPECIES_TO_HOENN(MILOTIC),
+ SPECIES_TO_HOENN(CARVANHA),
+ SPECIES_TO_HOENN(SHARPEDO),
+ SPECIES_TO_HOENN(TRAPINCH),
+ SPECIES_TO_HOENN(VIBRAVA),
+ SPECIES_TO_HOENN(FLYGON),
+ SPECIES_TO_HOENN(MAKUHITA),
+ SPECIES_TO_HOENN(HARIYAMA),
+ SPECIES_TO_HOENN(ELECTRIKE),
+ SPECIES_TO_HOENN(MANECTRIC),
+ SPECIES_TO_HOENN(NUMEL),
+ SPECIES_TO_HOENN(CAMERUPT),
+ SPECIES_TO_HOENN(SPHEAL),
+ SPECIES_TO_HOENN(SEALEO),
+ SPECIES_TO_HOENN(WALREIN),
+ SPECIES_TO_HOENN(CACNEA),
+ SPECIES_TO_HOENN(CACTURNE),
+ SPECIES_TO_HOENN(SNORUNT),
+ SPECIES_TO_HOENN(GLALIE),
+ SPECIES_TO_HOENN(LUNATONE),
+ SPECIES_TO_HOENN(SOLROCK),
+ SPECIES_TO_HOENN(AZURILL),
+ SPECIES_TO_HOENN(SPOINK),
+ SPECIES_TO_HOENN(GRUMPIG),
+ SPECIES_TO_HOENN(PLUSLE),
+ SPECIES_TO_HOENN(MINUN),
+ SPECIES_TO_HOENN(MAWILE),
+ SPECIES_TO_HOENN(MEDITITE),
+ SPECIES_TO_HOENN(MEDICHAM),
+ SPECIES_TO_HOENN(SWABLU),
+ SPECIES_TO_HOENN(ALTARIA),
+ SPECIES_TO_HOENN(WYNAUT),
+ SPECIES_TO_HOENN(DUSKULL),
+ SPECIES_TO_HOENN(DUSCLOPS),
+ SPECIES_TO_HOENN(ROSELIA),
+ SPECIES_TO_HOENN(SLAKOTH),
+ SPECIES_TO_HOENN(VIGOROTH),
+ SPECIES_TO_HOENN(SLAKING),
+ SPECIES_TO_HOENN(GULPIN),
+ SPECIES_TO_HOENN(SWALOT),
+ SPECIES_TO_HOENN(TROPIUS),
+ SPECIES_TO_HOENN(WHISMUR),
+ SPECIES_TO_HOENN(LOUDRED),
+ SPECIES_TO_HOENN(EXPLOUD),
+ SPECIES_TO_HOENN(CLAMPERL),
+ SPECIES_TO_HOENN(HUNTAIL),
+ SPECIES_TO_HOENN(GOREBYSS),
+ SPECIES_TO_HOENN(ABSOL),
+ SPECIES_TO_HOENN(SHUPPET),
+ SPECIES_TO_HOENN(BANETTE),
+ SPECIES_TO_HOENN(SEVIPER),
+ SPECIES_TO_HOENN(ZANGOOSE),
+ SPECIES_TO_HOENN(RELICANTH),
+ SPECIES_TO_HOENN(ARON),
+ SPECIES_TO_HOENN(LAIRON),
+ SPECIES_TO_HOENN(AGGRON),
+ SPECIES_TO_HOENN(CASTFORM),
+ SPECIES_TO_HOENN(VOLBEAT),
+ SPECIES_TO_HOENN(ILLUMISE),
+ SPECIES_TO_HOENN(LILEEP),
+ SPECIES_TO_HOENN(CRADILY),
+ SPECIES_TO_HOENN(ANORITH),
+ SPECIES_TO_HOENN(ARMALDO),
+ SPECIES_TO_HOENN(RALTS),
+ SPECIES_TO_HOENN(KIRLIA),
+ SPECIES_TO_HOENN(GARDEVOIR),
+ SPECIES_TO_HOENN(BAGON),
+ SPECIES_TO_HOENN(SHELGON),
+ SPECIES_TO_HOENN(SALAMENCE),
+ SPECIES_TO_HOENN(BELDUM),
+ SPECIES_TO_HOENN(METANG),
+ SPECIES_TO_HOENN(METAGROSS),
+ SPECIES_TO_HOENN(REGIROCK),
+ SPECIES_TO_HOENN(REGICE),
+ SPECIES_TO_HOENN(REGISTEEL),
+ SPECIES_TO_HOENN(KYOGRE),
+ SPECIES_TO_HOENN(GROUDON),
+ SPECIES_TO_HOENN(RAYQUAZA),
+ SPECIES_TO_HOENN(LATIAS),
+ SPECIES_TO_HOENN(LATIOS),
+ SPECIES_TO_HOENN(JIRACHI),
+ SPECIES_TO_HOENN(DEOXYS),
+ SPECIES_TO_HOENN(CHIMECHO),
+};
+
+static const u16 sSpeciesToNationalPokedexNum[] = // Assigns all species to the National Dex Index (Summary No. for National Dex)
+{
+ SPECIES_TO_NATIONAL(BULBASAUR),
+ SPECIES_TO_NATIONAL(IVYSAUR),
+ SPECIES_TO_NATIONAL(VENUSAUR),
+ SPECIES_TO_NATIONAL(CHARMANDER),
+ SPECIES_TO_NATIONAL(CHARMELEON),
+ SPECIES_TO_NATIONAL(CHARIZARD),
+ SPECIES_TO_NATIONAL(SQUIRTLE),
+ SPECIES_TO_NATIONAL(WARTORTLE),
+ SPECIES_TO_NATIONAL(BLASTOISE),
+ SPECIES_TO_NATIONAL(CATERPIE),
+ SPECIES_TO_NATIONAL(METAPOD),
+ SPECIES_TO_NATIONAL(BUTTERFREE),
+ SPECIES_TO_NATIONAL(WEEDLE),
+ SPECIES_TO_NATIONAL(KAKUNA),
+ SPECIES_TO_NATIONAL(BEEDRILL),
+ SPECIES_TO_NATIONAL(PIDGEY),
+ SPECIES_TO_NATIONAL(PIDGEOTTO),
+ SPECIES_TO_NATIONAL(PIDGEOT),
+ SPECIES_TO_NATIONAL(RATTATA),
+ SPECIES_TO_NATIONAL(RATICATE),
+ SPECIES_TO_NATIONAL(SPEAROW),
+ SPECIES_TO_NATIONAL(FEAROW),
+ SPECIES_TO_NATIONAL(EKANS),
+ SPECIES_TO_NATIONAL(ARBOK),
+ SPECIES_TO_NATIONAL(PIKACHU),
+ SPECIES_TO_NATIONAL(RAICHU),
+ SPECIES_TO_NATIONAL(SANDSHREW),
+ SPECIES_TO_NATIONAL(SANDSLASH),
+ SPECIES_TO_NATIONAL(NIDORAN_F),
+ SPECIES_TO_NATIONAL(NIDORINA),
+ SPECIES_TO_NATIONAL(NIDOQUEEN),
+ SPECIES_TO_NATIONAL(NIDORAN_M),
+ SPECIES_TO_NATIONAL(NIDORINO),
+ SPECIES_TO_NATIONAL(NIDOKING),
+ SPECIES_TO_NATIONAL(CLEFAIRY),
+ SPECIES_TO_NATIONAL(CLEFABLE),
+ SPECIES_TO_NATIONAL(VULPIX),
+ SPECIES_TO_NATIONAL(NINETALES),
+ SPECIES_TO_NATIONAL(JIGGLYPUFF),
+ SPECIES_TO_NATIONAL(WIGGLYTUFF),
+ SPECIES_TO_NATIONAL(ZUBAT),
+ SPECIES_TO_NATIONAL(GOLBAT),
+ SPECIES_TO_NATIONAL(ODDISH),
+ SPECIES_TO_NATIONAL(GLOOM),
+ SPECIES_TO_NATIONAL(VILEPLUME),
+ SPECIES_TO_NATIONAL(PARAS),
+ SPECIES_TO_NATIONAL(PARASECT),
+ SPECIES_TO_NATIONAL(VENONAT),
+ SPECIES_TO_NATIONAL(VENOMOTH),
+ SPECIES_TO_NATIONAL(DIGLETT),
+ SPECIES_TO_NATIONAL(DUGTRIO),
+ SPECIES_TO_NATIONAL(MEOWTH),
+ SPECIES_TO_NATIONAL(PERSIAN),
+ SPECIES_TO_NATIONAL(PSYDUCK),
+ SPECIES_TO_NATIONAL(GOLDUCK),
+ SPECIES_TO_NATIONAL(MANKEY),
+ SPECIES_TO_NATIONAL(PRIMEAPE),
+ SPECIES_TO_NATIONAL(GROWLITHE),
+ SPECIES_TO_NATIONAL(ARCANINE),
+ SPECIES_TO_NATIONAL(POLIWAG),
+ SPECIES_TO_NATIONAL(POLIWHIRL),
+ SPECIES_TO_NATIONAL(POLIWRATH),
+ SPECIES_TO_NATIONAL(ABRA),
+ SPECIES_TO_NATIONAL(KADABRA),
+ SPECIES_TO_NATIONAL(ALAKAZAM),
+ SPECIES_TO_NATIONAL(MACHOP),
+ SPECIES_TO_NATIONAL(MACHOKE),
+ SPECIES_TO_NATIONAL(MACHAMP),
+ SPECIES_TO_NATIONAL(BELLSPROUT),
+ SPECIES_TO_NATIONAL(WEEPINBELL),
+ SPECIES_TO_NATIONAL(VICTREEBEL),
+ SPECIES_TO_NATIONAL(TENTACOOL),
+ SPECIES_TO_NATIONAL(TENTACRUEL),
+ SPECIES_TO_NATIONAL(GEODUDE),
+ SPECIES_TO_NATIONAL(GRAVELER),
+ SPECIES_TO_NATIONAL(GOLEM),
+ SPECIES_TO_NATIONAL(PONYTA),
+ SPECIES_TO_NATIONAL(RAPIDASH),
+ SPECIES_TO_NATIONAL(SLOWPOKE),
+ SPECIES_TO_NATIONAL(SLOWBRO),
+ SPECIES_TO_NATIONAL(MAGNEMITE),
+ SPECIES_TO_NATIONAL(MAGNETON),
+ SPECIES_TO_NATIONAL(FARFETCHD),
+ SPECIES_TO_NATIONAL(DODUO),
+ SPECIES_TO_NATIONAL(DODRIO),
+ SPECIES_TO_NATIONAL(SEEL),
+ SPECIES_TO_NATIONAL(DEWGONG),
+ SPECIES_TO_NATIONAL(GRIMER),
+ SPECIES_TO_NATIONAL(MUK),
+ SPECIES_TO_NATIONAL(SHELLDER),
+ SPECIES_TO_NATIONAL(CLOYSTER),
+ SPECIES_TO_NATIONAL(GASTLY),
+ SPECIES_TO_NATIONAL(HAUNTER),
+ SPECIES_TO_NATIONAL(GENGAR),
+ SPECIES_TO_NATIONAL(ONIX),
+ SPECIES_TO_NATIONAL(DROWZEE),
+ SPECIES_TO_NATIONAL(HYPNO),
+ SPECIES_TO_NATIONAL(KRABBY),
+ SPECIES_TO_NATIONAL(KINGLER),
+ SPECIES_TO_NATIONAL(VOLTORB),
+ SPECIES_TO_NATIONAL(ELECTRODE),
+ SPECIES_TO_NATIONAL(EXEGGCUTE),
+ SPECIES_TO_NATIONAL(EXEGGUTOR),
+ SPECIES_TO_NATIONAL(CUBONE),
+ SPECIES_TO_NATIONAL(MAROWAK),
+ SPECIES_TO_NATIONAL(HITMONLEE),
+ SPECIES_TO_NATIONAL(HITMONCHAN),
+ SPECIES_TO_NATIONAL(LICKITUNG),
+ SPECIES_TO_NATIONAL(KOFFING),
+ SPECIES_TO_NATIONAL(WEEZING),
+ SPECIES_TO_NATIONAL(RHYHORN),
+ SPECIES_TO_NATIONAL(RHYDON),
+ SPECIES_TO_NATIONAL(CHANSEY),
+ SPECIES_TO_NATIONAL(TANGELA),
+ SPECIES_TO_NATIONAL(KANGASKHAN),
+ SPECIES_TO_NATIONAL(HORSEA),
+ SPECIES_TO_NATIONAL(SEADRA),
+ SPECIES_TO_NATIONAL(GOLDEEN),
+ SPECIES_TO_NATIONAL(SEAKING),
+ SPECIES_TO_NATIONAL(STARYU),
+ SPECIES_TO_NATIONAL(STARMIE),
+ SPECIES_TO_NATIONAL(MR_MIME),
+ SPECIES_TO_NATIONAL(SCYTHER),
+ SPECIES_TO_NATIONAL(JYNX),
+ SPECIES_TO_NATIONAL(ELECTABUZZ),
+ SPECIES_TO_NATIONAL(MAGMAR),
+ SPECIES_TO_NATIONAL(PINSIR),
+ SPECIES_TO_NATIONAL(TAUROS),
+ SPECIES_TO_NATIONAL(MAGIKARP),
+ SPECIES_TO_NATIONAL(GYARADOS),
+ SPECIES_TO_NATIONAL(LAPRAS),
+ SPECIES_TO_NATIONAL(DITTO),
+ SPECIES_TO_NATIONAL(EEVEE),
+ SPECIES_TO_NATIONAL(VAPOREON),
+ SPECIES_TO_NATIONAL(JOLTEON),
+ SPECIES_TO_NATIONAL(FLAREON),
+ SPECIES_TO_NATIONAL(PORYGON),
+ SPECIES_TO_NATIONAL(OMANYTE),
+ SPECIES_TO_NATIONAL(OMASTAR),
+ SPECIES_TO_NATIONAL(KABUTO),
+ SPECIES_TO_NATIONAL(KABUTOPS),
+ SPECIES_TO_NATIONAL(AERODACTYL),
+ SPECIES_TO_NATIONAL(SNORLAX),
+ SPECIES_TO_NATIONAL(ARTICUNO),
+ SPECIES_TO_NATIONAL(ZAPDOS),
+ SPECIES_TO_NATIONAL(MOLTRES),
+ SPECIES_TO_NATIONAL(DRATINI),
+ SPECIES_TO_NATIONAL(DRAGONAIR),
+ SPECIES_TO_NATIONAL(DRAGONITE),
+ SPECIES_TO_NATIONAL(MEWTWO),
+ SPECIES_TO_NATIONAL(MEW),
+ SPECIES_TO_NATIONAL(CHIKORITA),
+ SPECIES_TO_NATIONAL(BAYLEEF),
+ SPECIES_TO_NATIONAL(MEGANIUM),
+ SPECIES_TO_NATIONAL(CYNDAQUIL),
+ SPECIES_TO_NATIONAL(QUILAVA),
+ SPECIES_TO_NATIONAL(TYPHLOSION),
+ SPECIES_TO_NATIONAL(TOTODILE),
+ SPECIES_TO_NATIONAL(CROCONAW),
+ SPECIES_TO_NATIONAL(FERALIGATR),
+ SPECIES_TO_NATIONAL(SENTRET),
+ SPECIES_TO_NATIONAL(FURRET),
+ SPECIES_TO_NATIONAL(HOOTHOOT),
+ SPECIES_TO_NATIONAL(NOCTOWL),
+ SPECIES_TO_NATIONAL(LEDYBA),
+ SPECIES_TO_NATIONAL(LEDIAN),
+ SPECIES_TO_NATIONAL(SPINARAK),
+ SPECIES_TO_NATIONAL(ARIADOS),
+ SPECIES_TO_NATIONAL(CROBAT),
+ SPECIES_TO_NATIONAL(CHINCHOU),
+ SPECIES_TO_NATIONAL(LANTURN),
+ SPECIES_TO_NATIONAL(PICHU),
+ SPECIES_TO_NATIONAL(CLEFFA),
+ SPECIES_TO_NATIONAL(IGGLYBUFF),
+ SPECIES_TO_NATIONAL(TOGEPI),
+ SPECIES_TO_NATIONAL(TOGETIC),
+ SPECIES_TO_NATIONAL(NATU),
+ SPECIES_TO_NATIONAL(XATU),
+ SPECIES_TO_NATIONAL(MAREEP),
+ SPECIES_TO_NATIONAL(FLAAFFY),
+ SPECIES_TO_NATIONAL(AMPHAROS),
+ SPECIES_TO_NATIONAL(BELLOSSOM),
+ SPECIES_TO_NATIONAL(MARILL),
+ SPECIES_TO_NATIONAL(AZUMARILL),
+ SPECIES_TO_NATIONAL(SUDOWOODO),
+ SPECIES_TO_NATIONAL(POLITOED),
+ SPECIES_TO_NATIONAL(HOPPIP),
+ SPECIES_TO_NATIONAL(SKIPLOOM),
+ SPECIES_TO_NATIONAL(JUMPLUFF),
+ SPECIES_TO_NATIONAL(AIPOM),
+ SPECIES_TO_NATIONAL(SUNKERN),
+ SPECIES_TO_NATIONAL(SUNFLORA),
+ SPECIES_TO_NATIONAL(YANMA),
+ SPECIES_TO_NATIONAL(WOOPER),
+ SPECIES_TO_NATIONAL(QUAGSIRE),
+ SPECIES_TO_NATIONAL(ESPEON),
+ SPECIES_TO_NATIONAL(UMBREON),
+ SPECIES_TO_NATIONAL(MURKROW),
+ SPECIES_TO_NATIONAL(SLOWKING),
+ SPECIES_TO_NATIONAL(MISDREAVUS),
+ SPECIES_TO_NATIONAL(UNOWN),
+ SPECIES_TO_NATIONAL(WOBBUFFET),
+ SPECIES_TO_NATIONAL(GIRAFARIG),
+ SPECIES_TO_NATIONAL(PINECO),
+ SPECIES_TO_NATIONAL(FORRETRESS),
+ SPECIES_TO_NATIONAL(DUNSPARCE),
+ SPECIES_TO_NATIONAL(GLIGAR),
+ SPECIES_TO_NATIONAL(STEELIX),
+ SPECIES_TO_NATIONAL(SNUBBULL),
+ SPECIES_TO_NATIONAL(GRANBULL),
+ SPECIES_TO_NATIONAL(QWILFISH),
+ SPECIES_TO_NATIONAL(SCIZOR),
+ SPECIES_TO_NATIONAL(SHUCKLE),
+ SPECIES_TO_NATIONAL(HERACROSS),
+ SPECIES_TO_NATIONAL(SNEASEL),
+ SPECIES_TO_NATIONAL(TEDDIURSA),
+ SPECIES_TO_NATIONAL(URSARING),
+ SPECIES_TO_NATIONAL(SLUGMA),
+ SPECIES_TO_NATIONAL(MAGCARGO),
+ SPECIES_TO_NATIONAL(SWINUB),
+ SPECIES_TO_NATIONAL(PILOSWINE),
+ SPECIES_TO_NATIONAL(CORSOLA),
+ SPECIES_TO_NATIONAL(REMORAID),
+ SPECIES_TO_NATIONAL(OCTILLERY),
+ SPECIES_TO_NATIONAL(DELIBIRD),
+ SPECIES_TO_NATIONAL(MANTINE),
+ SPECIES_TO_NATIONAL(SKARMORY),
+ SPECIES_TO_NATIONAL(HOUNDOUR),
+ SPECIES_TO_NATIONAL(HOUNDOOM),
+ SPECIES_TO_NATIONAL(KINGDRA),
+ SPECIES_TO_NATIONAL(PHANPY),
+ SPECIES_TO_NATIONAL(DONPHAN),
+ SPECIES_TO_NATIONAL(PORYGON2),
+ SPECIES_TO_NATIONAL(STANTLER),
+ SPECIES_TO_NATIONAL(SMEARGLE),
+ SPECIES_TO_NATIONAL(TYROGUE),
+ SPECIES_TO_NATIONAL(HITMONTOP),
+ SPECIES_TO_NATIONAL(SMOOCHUM),
+ SPECIES_TO_NATIONAL(ELEKID),
+ SPECIES_TO_NATIONAL(MAGBY),
+ SPECIES_TO_NATIONAL(MILTANK),
+ SPECIES_TO_NATIONAL(BLISSEY),
+ SPECIES_TO_NATIONAL(RAIKOU),
+ SPECIES_TO_NATIONAL(ENTEI),
+ SPECIES_TO_NATIONAL(SUICUNE),
+ SPECIES_TO_NATIONAL(LARVITAR),
+ SPECIES_TO_NATIONAL(PUPITAR),
+ SPECIES_TO_NATIONAL(TYRANITAR),
+ SPECIES_TO_NATIONAL(LUGIA),
+ SPECIES_TO_NATIONAL(HO_OH),
+ SPECIES_TO_NATIONAL(CELEBI),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_B),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_C),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_D),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_E),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_F),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_G),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_H),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_I),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_J),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_K),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_L),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_M),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_N),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_O),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_P),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_Q),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_R),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_S),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_T),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_U),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_V),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_W),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_X),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_Y),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_Z),
+ SPECIES_TO_NATIONAL(TREECKO),
+ SPECIES_TO_NATIONAL(GROVYLE),
+ SPECIES_TO_NATIONAL(SCEPTILE),
+ SPECIES_TO_NATIONAL(TORCHIC),
+ SPECIES_TO_NATIONAL(COMBUSKEN),
+ SPECIES_TO_NATIONAL(BLAZIKEN),
+ SPECIES_TO_NATIONAL(MUDKIP),
+ SPECIES_TO_NATIONAL(MARSHTOMP),
+ SPECIES_TO_NATIONAL(SWAMPERT),
+ SPECIES_TO_NATIONAL(POOCHYENA),
+ SPECIES_TO_NATIONAL(MIGHTYENA),
+ SPECIES_TO_NATIONAL(ZIGZAGOON),
+ SPECIES_TO_NATIONAL(LINOONE),
+ SPECIES_TO_NATIONAL(WURMPLE),
+ SPECIES_TO_NATIONAL(SILCOON),
+ SPECIES_TO_NATIONAL(BEAUTIFLY),
+ SPECIES_TO_NATIONAL(CASCOON),
+ SPECIES_TO_NATIONAL(DUSTOX),
+ SPECIES_TO_NATIONAL(LOTAD),
+ SPECIES_TO_NATIONAL(LOMBRE),
+ SPECIES_TO_NATIONAL(LUDICOLO),
+ SPECIES_TO_NATIONAL(SEEDOT),
+ SPECIES_TO_NATIONAL(NUZLEAF),
+ SPECIES_TO_NATIONAL(SHIFTRY),
+ SPECIES_TO_NATIONAL(NINCADA),
+ SPECIES_TO_NATIONAL(NINJASK),
+ SPECIES_TO_NATIONAL(SHEDINJA),
+ SPECIES_TO_NATIONAL(TAILLOW),
+ SPECIES_TO_NATIONAL(SWELLOW),
+ SPECIES_TO_NATIONAL(SHROOMISH),
+ SPECIES_TO_NATIONAL(BRELOOM),
+ SPECIES_TO_NATIONAL(SPINDA),
+ SPECIES_TO_NATIONAL(WINGULL),
+ SPECIES_TO_NATIONAL(PELIPPER),
+ SPECIES_TO_NATIONAL(SURSKIT),
+ SPECIES_TO_NATIONAL(MASQUERAIN),
+ SPECIES_TO_NATIONAL(WAILMER),
+ SPECIES_TO_NATIONAL(WAILORD),
+ SPECIES_TO_NATIONAL(SKITTY),
+ SPECIES_TO_NATIONAL(DELCATTY),
+ SPECIES_TO_NATIONAL(KECLEON),
+ SPECIES_TO_NATIONAL(BALTOY),
+ SPECIES_TO_NATIONAL(CLAYDOL),
+ SPECIES_TO_NATIONAL(NOSEPASS),
+ SPECIES_TO_NATIONAL(TORKOAL),
+ SPECIES_TO_NATIONAL(SABLEYE),
+ SPECIES_TO_NATIONAL(BARBOACH),
+ SPECIES_TO_NATIONAL(WHISCASH),
+ SPECIES_TO_NATIONAL(LUVDISC),
+ SPECIES_TO_NATIONAL(CORPHISH),
+ SPECIES_TO_NATIONAL(CRAWDAUNT),
+ SPECIES_TO_NATIONAL(FEEBAS),
+ SPECIES_TO_NATIONAL(MILOTIC),
+ SPECIES_TO_NATIONAL(CARVANHA),
+ SPECIES_TO_NATIONAL(SHARPEDO),
+ SPECIES_TO_NATIONAL(TRAPINCH),
+ SPECIES_TO_NATIONAL(VIBRAVA),
+ SPECIES_TO_NATIONAL(FLYGON),
+ SPECIES_TO_NATIONAL(MAKUHITA),
+ SPECIES_TO_NATIONAL(HARIYAMA),
+ SPECIES_TO_NATIONAL(ELECTRIKE),
+ SPECIES_TO_NATIONAL(MANECTRIC),
+ SPECIES_TO_NATIONAL(NUMEL),
+ SPECIES_TO_NATIONAL(CAMERUPT),
+ SPECIES_TO_NATIONAL(SPHEAL),
+ SPECIES_TO_NATIONAL(SEALEO),
+ SPECIES_TO_NATIONAL(WALREIN),
+ SPECIES_TO_NATIONAL(CACNEA),
+ SPECIES_TO_NATIONAL(CACTURNE),
+ SPECIES_TO_NATIONAL(SNORUNT),
+ SPECIES_TO_NATIONAL(GLALIE),
+ SPECIES_TO_NATIONAL(LUNATONE),
+ SPECIES_TO_NATIONAL(SOLROCK),
+ SPECIES_TO_NATIONAL(AZURILL),
+ SPECIES_TO_NATIONAL(SPOINK),
+ SPECIES_TO_NATIONAL(GRUMPIG),
+ SPECIES_TO_NATIONAL(PLUSLE),
+ SPECIES_TO_NATIONAL(MINUN),
+ SPECIES_TO_NATIONAL(MAWILE),
+ SPECIES_TO_NATIONAL(MEDITITE),
+ SPECIES_TO_NATIONAL(MEDICHAM),
+ SPECIES_TO_NATIONAL(SWABLU),
+ SPECIES_TO_NATIONAL(ALTARIA),
+ SPECIES_TO_NATIONAL(WYNAUT),
+ SPECIES_TO_NATIONAL(DUSKULL),
+ SPECIES_TO_NATIONAL(DUSCLOPS),
+ SPECIES_TO_NATIONAL(ROSELIA),
+ SPECIES_TO_NATIONAL(SLAKOTH),
+ SPECIES_TO_NATIONAL(VIGOROTH),
+ SPECIES_TO_NATIONAL(SLAKING),
+ SPECIES_TO_NATIONAL(GULPIN),
+ SPECIES_TO_NATIONAL(SWALOT),
+ SPECIES_TO_NATIONAL(TROPIUS),
+ SPECIES_TO_NATIONAL(WHISMUR),
+ SPECIES_TO_NATIONAL(LOUDRED),
+ SPECIES_TO_NATIONAL(EXPLOUD),
+ SPECIES_TO_NATIONAL(CLAMPERL),
+ SPECIES_TO_NATIONAL(HUNTAIL),
+ SPECIES_TO_NATIONAL(GOREBYSS),
+ SPECIES_TO_NATIONAL(ABSOL),
+ SPECIES_TO_NATIONAL(SHUPPET),
+ SPECIES_TO_NATIONAL(BANETTE),
+ SPECIES_TO_NATIONAL(SEVIPER),
+ SPECIES_TO_NATIONAL(ZANGOOSE),
+ SPECIES_TO_NATIONAL(RELICANTH),
+ SPECIES_TO_NATIONAL(ARON),
+ SPECIES_TO_NATIONAL(LAIRON),
+ SPECIES_TO_NATIONAL(AGGRON),
+ SPECIES_TO_NATIONAL(CASTFORM),
+ SPECIES_TO_NATIONAL(VOLBEAT),
+ SPECIES_TO_NATIONAL(ILLUMISE),
+ SPECIES_TO_NATIONAL(LILEEP),
+ SPECIES_TO_NATIONAL(CRADILY),
+ SPECIES_TO_NATIONAL(ANORITH),
+ SPECIES_TO_NATIONAL(ARMALDO),
+ SPECIES_TO_NATIONAL(RALTS),
+ SPECIES_TO_NATIONAL(KIRLIA),
+ SPECIES_TO_NATIONAL(GARDEVOIR),
+ SPECIES_TO_NATIONAL(BAGON),
+ SPECIES_TO_NATIONAL(SHELGON),
+ SPECIES_TO_NATIONAL(SALAMENCE),
+ SPECIES_TO_NATIONAL(BELDUM),
+ SPECIES_TO_NATIONAL(METANG),
+ SPECIES_TO_NATIONAL(METAGROSS),
+ SPECIES_TO_NATIONAL(REGIROCK),
+ SPECIES_TO_NATIONAL(REGICE),
+ SPECIES_TO_NATIONAL(REGISTEEL),
+ SPECIES_TO_NATIONAL(KYOGRE),
+ SPECIES_TO_NATIONAL(GROUDON),
+ SPECIES_TO_NATIONAL(RAYQUAZA),
+ SPECIES_TO_NATIONAL(LATIAS),
+ SPECIES_TO_NATIONAL(LATIOS),
+ SPECIES_TO_NATIONAL(JIRACHI),
+ SPECIES_TO_NATIONAL(DEOXYS),
+ SPECIES_TO_NATIONAL(CHIMECHO),
+};
+
+static const u16 sHoennToNationalOrder[] = // Assigns Hoenn Dex Pokémon (Using National Dex Index)
+{
+ HOENN_TO_NATIONAL(TREECKO),
+ HOENN_TO_NATIONAL(GROVYLE),
+ HOENN_TO_NATIONAL(SCEPTILE),
+ HOENN_TO_NATIONAL(TORCHIC),
+ HOENN_TO_NATIONAL(COMBUSKEN),
+ HOENN_TO_NATIONAL(BLAZIKEN),
+ HOENN_TO_NATIONAL(MUDKIP),
+ HOENN_TO_NATIONAL(MARSHTOMP),
+ HOENN_TO_NATIONAL(SWAMPERT),
+ HOENN_TO_NATIONAL(POOCHYENA),
+ HOENN_TO_NATIONAL(MIGHTYENA),
+ HOENN_TO_NATIONAL(ZIGZAGOON),
+ HOENN_TO_NATIONAL(LINOONE),
+ HOENN_TO_NATIONAL(WURMPLE),
+ HOENN_TO_NATIONAL(SILCOON),
+ HOENN_TO_NATIONAL(BEAUTIFLY),
+ HOENN_TO_NATIONAL(CASCOON),
+ HOENN_TO_NATIONAL(DUSTOX),
+ HOENN_TO_NATIONAL(LOTAD),
+ HOENN_TO_NATIONAL(LOMBRE),
+ HOENN_TO_NATIONAL(LUDICOLO),
+ HOENN_TO_NATIONAL(SEEDOT),
+ HOENN_TO_NATIONAL(NUZLEAF),
+ HOENN_TO_NATIONAL(SHIFTRY),
+ HOENN_TO_NATIONAL(TAILLOW),
+ HOENN_TO_NATIONAL(SWELLOW),
+ HOENN_TO_NATIONAL(WINGULL),
+ HOENN_TO_NATIONAL(PELIPPER),
+ HOENN_TO_NATIONAL(RALTS),
+ HOENN_TO_NATIONAL(KIRLIA),
+ HOENN_TO_NATIONAL(GARDEVOIR),
+ HOENN_TO_NATIONAL(SURSKIT),
+ HOENN_TO_NATIONAL(MASQUERAIN),
+ HOENN_TO_NATIONAL(SHROOMISH),
+ HOENN_TO_NATIONAL(BRELOOM),
+ HOENN_TO_NATIONAL(SLAKOTH),
+ HOENN_TO_NATIONAL(VIGOROTH),
+ HOENN_TO_NATIONAL(SLAKING),
+ HOENN_TO_NATIONAL(ABRA),
+ HOENN_TO_NATIONAL(KADABRA),
+ HOENN_TO_NATIONAL(ALAKAZAM),
+ HOENN_TO_NATIONAL(NINCADA),
+ HOENN_TO_NATIONAL(NINJASK),
+ HOENN_TO_NATIONAL(SHEDINJA),
+ HOENN_TO_NATIONAL(WHISMUR),
+ HOENN_TO_NATIONAL(LOUDRED),
+ HOENN_TO_NATIONAL(EXPLOUD),
+ HOENN_TO_NATIONAL(MAKUHITA),
+ HOENN_TO_NATIONAL(HARIYAMA),
+ HOENN_TO_NATIONAL(GOLDEEN),
+ HOENN_TO_NATIONAL(SEAKING),
+ HOENN_TO_NATIONAL(MAGIKARP),
+ HOENN_TO_NATIONAL(GYARADOS),
+ HOENN_TO_NATIONAL(AZURILL),
+ HOENN_TO_NATIONAL(MARILL),
+ HOENN_TO_NATIONAL(AZUMARILL),
+ HOENN_TO_NATIONAL(GEODUDE),
+ HOENN_TO_NATIONAL(GRAVELER),
+ HOENN_TO_NATIONAL(GOLEM),
+ HOENN_TO_NATIONAL(NOSEPASS),
+ HOENN_TO_NATIONAL(SKITTY),
+ HOENN_TO_NATIONAL(DELCATTY),
+ HOENN_TO_NATIONAL(ZUBAT),
+ HOENN_TO_NATIONAL(GOLBAT),
+ HOENN_TO_NATIONAL(CROBAT),
+ HOENN_TO_NATIONAL(TENTACOOL),
+ HOENN_TO_NATIONAL(TENTACRUEL),
+ HOENN_TO_NATIONAL(SABLEYE),
+ HOENN_TO_NATIONAL(MAWILE),
+ HOENN_TO_NATIONAL(ARON),
+ HOENN_TO_NATIONAL(LAIRON),
+ HOENN_TO_NATIONAL(AGGRON),
+ HOENN_TO_NATIONAL(MACHOP),
+ HOENN_TO_NATIONAL(MACHOKE),
+ HOENN_TO_NATIONAL(MACHAMP),
+ HOENN_TO_NATIONAL(MEDITITE),
+ HOENN_TO_NATIONAL(MEDICHAM),
+ HOENN_TO_NATIONAL(ELECTRIKE),
+ HOENN_TO_NATIONAL(MANECTRIC),
+ HOENN_TO_NATIONAL(PLUSLE),
+ HOENN_TO_NATIONAL(MINUN),
+ HOENN_TO_NATIONAL(MAGNEMITE),
+ HOENN_TO_NATIONAL(MAGNETON),
+ HOENN_TO_NATIONAL(VOLTORB),
+ HOENN_TO_NATIONAL(ELECTRODE),
+ HOENN_TO_NATIONAL(VOLBEAT),
+ HOENN_TO_NATIONAL(ILLUMISE),
+ HOENN_TO_NATIONAL(ODDISH),
+ HOENN_TO_NATIONAL(GLOOM),
+ HOENN_TO_NATIONAL(VILEPLUME),
+ HOENN_TO_NATIONAL(BELLOSSOM),
+ HOENN_TO_NATIONAL(DODUO),
+ HOENN_TO_NATIONAL(DODRIO),
+ HOENN_TO_NATIONAL(ROSELIA),
+ HOENN_TO_NATIONAL(GULPIN),
+ HOENN_TO_NATIONAL(SWALOT),
+ HOENN_TO_NATIONAL(CARVANHA),
+ HOENN_TO_NATIONAL(SHARPEDO),
+ HOENN_TO_NATIONAL(WAILMER),
+ HOENN_TO_NATIONAL(WAILORD),
+ HOENN_TO_NATIONAL(NUMEL),
+ HOENN_TO_NATIONAL(CAMERUPT),
+ HOENN_TO_NATIONAL(SLUGMA),
+ HOENN_TO_NATIONAL(MAGCARGO),
+ HOENN_TO_NATIONAL(TORKOAL),
+ HOENN_TO_NATIONAL(GRIMER),
+ HOENN_TO_NATIONAL(MUK),
+ HOENN_TO_NATIONAL(KOFFING),
+ HOENN_TO_NATIONAL(WEEZING),
+ HOENN_TO_NATIONAL(SPOINK),
+ HOENN_TO_NATIONAL(GRUMPIG),
+ HOENN_TO_NATIONAL(SANDSHREW),
+ HOENN_TO_NATIONAL(SANDSLASH),
+ HOENN_TO_NATIONAL(SPINDA),
+ HOENN_TO_NATIONAL(SKARMORY),
+ HOENN_TO_NATIONAL(TRAPINCH),
+ HOENN_TO_NATIONAL(VIBRAVA),
+ HOENN_TO_NATIONAL(FLYGON),
+ HOENN_TO_NATIONAL(CACNEA),
+ HOENN_TO_NATIONAL(CACTURNE),
+ HOENN_TO_NATIONAL(SWABLU),
+ HOENN_TO_NATIONAL(ALTARIA),
+ HOENN_TO_NATIONAL(ZANGOOSE),
+ HOENN_TO_NATIONAL(SEVIPER),
+ HOENN_TO_NATIONAL(LUNATONE),
+ HOENN_TO_NATIONAL(SOLROCK),
+ HOENN_TO_NATIONAL(BARBOACH),
+ HOENN_TO_NATIONAL(WHISCASH),
+ HOENN_TO_NATIONAL(CORPHISH),
+ HOENN_TO_NATIONAL(CRAWDAUNT),
+ HOENN_TO_NATIONAL(BALTOY),
+ HOENN_TO_NATIONAL(CLAYDOL),
+ HOENN_TO_NATIONAL(LILEEP),
+ HOENN_TO_NATIONAL(CRADILY),
+ HOENN_TO_NATIONAL(ANORITH),
+ HOENN_TO_NATIONAL(ARMALDO),
+ HOENN_TO_NATIONAL(IGGLYBUFF),
+ HOENN_TO_NATIONAL(JIGGLYPUFF),
+ HOENN_TO_NATIONAL(WIGGLYTUFF),
+ HOENN_TO_NATIONAL(FEEBAS),
+ HOENN_TO_NATIONAL(MILOTIC),
+ HOENN_TO_NATIONAL(CASTFORM),
+ HOENN_TO_NATIONAL(STARYU),
+ HOENN_TO_NATIONAL(STARMIE),
+ HOENN_TO_NATIONAL(KECLEON),
+ HOENN_TO_NATIONAL(SHUPPET),
+ HOENN_TO_NATIONAL(BANETTE),
+ HOENN_TO_NATIONAL(DUSKULL),
+ HOENN_TO_NATIONAL(DUSCLOPS),
+ HOENN_TO_NATIONAL(TROPIUS),
+ HOENN_TO_NATIONAL(CHIMECHO),
+ HOENN_TO_NATIONAL(ABSOL),
+ HOENN_TO_NATIONAL(VULPIX),
+ HOENN_TO_NATIONAL(NINETALES),
+ HOENN_TO_NATIONAL(PICHU),
+ HOENN_TO_NATIONAL(PIKACHU),
+ HOENN_TO_NATIONAL(RAICHU),
+ HOENN_TO_NATIONAL(PSYDUCK),
+ HOENN_TO_NATIONAL(GOLDUCK),
+ HOENN_TO_NATIONAL(WYNAUT),
+ HOENN_TO_NATIONAL(WOBBUFFET),
+ HOENN_TO_NATIONAL(NATU),
+ HOENN_TO_NATIONAL(XATU),
+ HOENN_TO_NATIONAL(GIRAFARIG),
+ HOENN_TO_NATIONAL(PHANPY),
+ HOENN_TO_NATIONAL(DONPHAN),
+ HOENN_TO_NATIONAL(PINSIR),
+ HOENN_TO_NATIONAL(HERACROSS),
+ HOENN_TO_NATIONAL(RHYHORN),
+ HOENN_TO_NATIONAL(RHYDON),
+ HOENN_TO_NATIONAL(SNORUNT),
+ HOENN_TO_NATIONAL(GLALIE),
+ HOENN_TO_NATIONAL(SPHEAL),
+ HOENN_TO_NATIONAL(SEALEO),
+ HOENN_TO_NATIONAL(WALREIN),
+ HOENN_TO_NATIONAL(CLAMPERL),
+ HOENN_TO_NATIONAL(HUNTAIL),
+ HOENN_TO_NATIONAL(GOREBYSS),
+ HOENN_TO_NATIONAL(RELICANTH),
+ HOENN_TO_NATIONAL(CORSOLA),
+ HOENN_TO_NATIONAL(CHINCHOU),
+ HOENN_TO_NATIONAL(LANTURN),
+ HOENN_TO_NATIONAL(LUVDISC),
+ HOENN_TO_NATIONAL(HORSEA),
+ HOENN_TO_NATIONAL(SEADRA),
+ HOENN_TO_NATIONAL(KINGDRA),
+ HOENN_TO_NATIONAL(BAGON),
+ HOENN_TO_NATIONAL(SHELGON),
+ HOENN_TO_NATIONAL(SALAMENCE),
+ HOENN_TO_NATIONAL(BELDUM),
+ HOENN_TO_NATIONAL(METANG),
+ HOENN_TO_NATIONAL(METAGROSS),
+ HOENN_TO_NATIONAL(REGIROCK),
+ HOENN_TO_NATIONAL(REGICE),
+ HOENN_TO_NATIONAL(REGISTEEL),
+ HOENN_TO_NATIONAL(LATIAS),
+ HOENN_TO_NATIONAL(LATIOS),
+ HOENN_TO_NATIONAL(KYOGRE),
+ HOENN_TO_NATIONAL(GROUDON),
+ HOENN_TO_NATIONAL(RAYQUAZA),
+ HOENN_TO_NATIONAL(JIRACHI),
+ HOENN_TO_NATIONAL(DEOXYS),
+ HOENN_TO_NATIONAL(BULBASAUR), // Pokémon from here onwards are UNSEEN in the HoennDex.
+ HOENN_TO_NATIONAL(IVYSAUR),
+ HOENN_TO_NATIONAL(VENUSAUR),
+ HOENN_TO_NATIONAL(CHARMANDER),
+ HOENN_TO_NATIONAL(CHARMELEON),
+ HOENN_TO_NATIONAL(CHARIZARD),
+ HOENN_TO_NATIONAL(SQUIRTLE),
+ HOENN_TO_NATIONAL(WARTORTLE),
+ HOENN_TO_NATIONAL(BLASTOISE),
+ HOENN_TO_NATIONAL(CATERPIE),
+ HOENN_TO_NATIONAL(METAPOD),
+ HOENN_TO_NATIONAL(BUTTERFREE),
+ HOENN_TO_NATIONAL(WEEDLE),
+ HOENN_TO_NATIONAL(KAKUNA),
+ HOENN_TO_NATIONAL(BEEDRILL),
+ HOENN_TO_NATIONAL(PIDGEY),
+ HOENN_TO_NATIONAL(PIDGEOTTO),
+ HOENN_TO_NATIONAL(PIDGEOT),
+ HOENN_TO_NATIONAL(RATTATA),
+ HOENN_TO_NATIONAL(RATICATE),
+ HOENN_TO_NATIONAL(SPEAROW),
+ HOENN_TO_NATIONAL(FEAROW),
+ HOENN_TO_NATIONAL(EKANS),
+ HOENN_TO_NATIONAL(ARBOK),
+ HOENN_TO_NATIONAL(NIDORAN_F),
+ HOENN_TO_NATIONAL(NIDORINA),
+ HOENN_TO_NATIONAL(NIDOQUEEN),
+ HOENN_TO_NATIONAL(NIDORAN_M),
+ HOENN_TO_NATIONAL(NIDORINO),
+ HOENN_TO_NATIONAL(NIDOKING),
+ HOENN_TO_NATIONAL(CLEFAIRY),
+ HOENN_TO_NATIONAL(CLEFABLE),
+ HOENN_TO_NATIONAL(PARAS),
+ HOENN_TO_NATIONAL(PARASECT),
+ HOENN_TO_NATIONAL(VENONAT),
+ HOENN_TO_NATIONAL(VENOMOTH),
+ HOENN_TO_NATIONAL(DIGLETT),
+ HOENN_TO_NATIONAL(DUGTRIO),
+ HOENN_TO_NATIONAL(MEOWTH),
+ HOENN_TO_NATIONAL(PERSIAN),
+ HOENN_TO_NATIONAL(MANKEY),
+ HOENN_TO_NATIONAL(PRIMEAPE),
+ HOENN_TO_NATIONAL(GROWLITHE),
+ HOENN_TO_NATIONAL(ARCANINE),
+ HOENN_TO_NATIONAL(POLIWAG),
+ HOENN_TO_NATIONAL(POLIWHIRL),
+ HOENN_TO_NATIONAL(POLIWRATH),
+ HOENN_TO_NATIONAL(BELLSPROUT),
+ HOENN_TO_NATIONAL(WEEPINBELL),
+ HOENN_TO_NATIONAL(VICTREEBEL),
+ HOENN_TO_NATIONAL(PONYTA),
+ HOENN_TO_NATIONAL(RAPIDASH),
+ HOENN_TO_NATIONAL(SLOWPOKE),
+ HOENN_TO_NATIONAL(SLOWBRO),
+ HOENN_TO_NATIONAL(FARFETCHD),
+ HOENN_TO_NATIONAL(SEEL),
+ HOENN_TO_NATIONAL(DEWGONG),
+ HOENN_TO_NATIONAL(SHELLDER),
+ HOENN_TO_NATIONAL(CLOYSTER),
+ HOENN_TO_NATIONAL(GASTLY),
+ HOENN_TO_NATIONAL(HAUNTER),
+ HOENN_TO_NATIONAL(GENGAR),
+ HOENN_TO_NATIONAL(ONIX),
+ HOENN_TO_NATIONAL(DROWZEE),
+ HOENN_TO_NATIONAL(HYPNO),
+ HOENN_TO_NATIONAL(KRABBY),
+ HOENN_TO_NATIONAL(KINGLER),
+ HOENN_TO_NATIONAL(EXEGGCUTE),
+ HOENN_TO_NATIONAL(EXEGGUTOR),
+ HOENN_TO_NATIONAL(CUBONE),
+ HOENN_TO_NATIONAL(MAROWAK),
+ HOENN_TO_NATIONAL(HITMONLEE),
+ HOENN_TO_NATIONAL(HITMONCHAN),
+ HOENN_TO_NATIONAL(LICKITUNG),
+ HOENN_TO_NATIONAL(CHANSEY),
+ HOENN_TO_NATIONAL(TANGELA),
+ HOENN_TO_NATIONAL(KANGASKHAN),
+ HOENN_TO_NATIONAL(MR_MIME),
+ HOENN_TO_NATIONAL(SCYTHER),
+ HOENN_TO_NATIONAL(JYNX),
+ HOENN_TO_NATIONAL(ELECTABUZZ),
+ HOENN_TO_NATIONAL(MAGMAR),
+ HOENN_TO_NATIONAL(TAUROS),
+ HOENN_TO_NATIONAL(LAPRAS),
+ HOENN_TO_NATIONAL(DITTO),
+ HOENN_TO_NATIONAL(EEVEE),
+ HOENN_TO_NATIONAL(VAPOREON),
+ HOENN_TO_NATIONAL(JOLTEON),
+ HOENN_TO_NATIONAL(FLAREON),
+ HOENN_TO_NATIONAL(PORYGON),
+ HOENN_TO_NATIONAL(OMANYTE),
+ HOENN_TO_NATIONAL(OMASTAR),
+ HOENN_TO_NATIONAL(KABUTO),
+ HOENN_TO_NATIONAL(KABUTOPS),
+ HOENN_TO_NATIONAL(AERODACTYL),
+ HOENN_TO_NATIONAL(SNORLAX),
+ HOENN_TO_NATIONAL(ARTICUNO),
+ HOENN_TO_NATIONAL(ZAPDOS),
+ HOENN_TO_NATIONAL(MOLTRES),
+ HOENN_TO_NATIONAL(DRATINI),
+ HOENN_TO_NATIONAL(DRAGONAIR),
+ HOENN_TO_NATIONAL(DRAGONITE),
+ HOENN_TO_NATIONAL(MEWTWO),
+ HOENN_TO_NATIONAL(MEW),
+ HOENN_TO_NATIONAL(CHIKORITA),
+ HOENN_TO_NATIONAL(BAYLEEF),
+ HOENN_TO_NATIONAL(MEGANIUM),
+ HOENN_TO_NATIONAL(CYNDAQUIL),
+ HOENN_TO_NATIONAL(QUILAVA),
+ HOENN_TO_NATIONAL(TYPHLOSION),
+ HOENN_TO_NATIONAL(TOTODILE),
+ HOENN_TO_NATIONAL(CROCONAW),
+ HOENN_TO_NATIONAL(FERALIGATR),
+ HOENN_TO_NATIONAL(SENTRET),
+ HOENN_TO_NATIONAL(FURRET),
+ HOENN_TO_NATIONAL(HOOTHOOT),
+ HOENN_TO_NATIONAL(NOCTOWL),
+ HOENN_TO_NATIONAL(LEDYBA),
+ HOENN_TO_NATIONAL(LEDIAN),
+ HOENN_TO_NATIONAL(SPINARAK),
+ HOENN_TO_NATIONAL(ARIADOS),
+ HOENN_TO_NATIONAL(CLEFFA),
+ HOENN_TO_NATIONAL(TOGEPI),
+ HOENN_TO_NATIONAL(TOGETIC),
+ HOENN_TO_NATIONAL(MAREEP),
+ HOENN_TO_NATIONAL(FLAAFFY),
+ HOENN_TO_NATIONAL(AMPHAROS),
+ HOENN_TO_NATIONAL(SUDOWOODO),
+ HOENN_TO_NATIONAL(POLITOED),
+ HOENN_TO_NATIONAL(HOPPIP),
+ HOENN_TO_NATIONAL(SKIPLOOM),
+ HOENN_TO_NATIONAL(JUMPLUFF),
+ HOENN_TO_NATIONAL(AIPOM),
+ HOENN_TO_NATIONAL(SUNKERN),
+ HOENN_TO_NATIONAL(SUNFLORA),
+ HOENN_TO_NATIONAL(YANMA),
+ HOENN_TO_NATIONAL(WOOPER),
+ HOENN_TO_NATIONAL(QUAGSIRE),
+ HOENN_TO_NATIONAL(ESPEON),
+ HOENN_TO_NATIONAL(UMBREON),
+ HOENN_TO_NATIONAL(MURKROW),
+ HOENN_TO_NATIONAL(SLOWKING),
+ HOENN_TO_NATIONAL(MISDREAVUS),
+ HOENN_TO_NATIONAL(UNOWN),
+ HOENN_TO_NATIONAL(PINECO),
+ HOENN_TO_NATIONAL(FORRETRESS),
+ HOENN_TO_NATIONAL(DUNSPARCE),
+ HOENN_TO_NATIONAL(GLIGAR),
+ HOENN_TO_NATIONAL(STEELIX),
+ HOENN_TO_NATIONAL(SNUBBULL),
+ HOENN_TO_NATIONAL(GRANBULL),
+ HOENN_TO_NATIONAL(QWILFISH),
+ HOENN_TO_NATIONAL(SCIZOR),
+ HOENN_TO_NATIONAL(SHUCKLE),
+ HOENN_TO_NATIONAL(SNEASEL),
+ HOENN_TO_NATIONAL(TEDDIURSA),
+ HOENN_TO_NATIONAL(URSARING),
+ HOENN_TO_NATIONAL(SWINUB),
+ HOENN_TO_NATIONAL(PILOSWINE),
+ HOENN_TO_NATIONAL(REMORAID),
+ HOENN_TO_NATIONAL(OCTILLERY),
+ HOENN_TO_NATIONAL(DELIBIRD),
+ HOENN_TO_NATIONAL(MANTINE),
+ HOENN_TO_NATIONAL(HOUNDOUR),
+ HOENN_TO_NATIONAL(HOUNDOOM),
+ HOENN_TO_NATIONAL(PORYGON2),
+ HOENN_TO_NATIONAL(STANTLER),
+ HOENN_TO_NATIONAL(SMEARGLE),
+ HOENN_TO_NATIONAL(TYROGUE),
+ HOENN_TO_NATIONAL(HITMONTOP),
+ HOENN_TO_NATIONAL(SMOOCHUM),
+ HOENN_TO_NATIONAL(ELEKID),
+ HOENN_TO_NATIONAL(MAGBY),
+ HOENN_TO_NATIONAL(MILTANK),
+ HOENN_TO_NATIONAL(BLISSEY),
+ HOENN_TO_NATIONAL(RAIKOU),
+ HOENN_TO_NATIONAL(ENTEI),
+ HOENN_TO_NATIONAL(SUICUNE),
+ HOENN_TO_NATIONAL(LARVITAR),
+ HOENN_TO_NATIONAL(PUPITAR),
+ HOENN_TO_NATIONAL(TYRANITAR),
+ HOENN_TO_NATIONAL(LUGIA),
+ HOENN_TO_NATIONAL(HO_OH),
+ HOENN_TO_NATIONAL(CELEBI),
+ HOENN_TO_NATIONAL(OLD_UNOWN_B),
+ HOENN_TO_NATIONAL(OLD_UNOWN_C),
+ HOENN_TO_NATIONAL(OLD_UNOWN_D),
+ HOENN_TO_NATIONAL(OLD_UNOWN_E),
+ HOENN_TO_NATIONAL(OLD_UNOWN_F),
+ HOENN_TO_NATIONAL(OLD_UNOWN_G),
+ HOENN_TO_NATIONAL(OLD_UNOWN_H),
+ HOENN_TO_NATIONAL(OLD_UNOWN_I),
+ HOENN_TO_NATIONAL(OLD_UNOWN_J),
+ HOENN_TO_NATIONAL(OLD_UNOWN_K),
+ HOENN_TO_NATIONAL(OLD_UNOWN_L),
+ HOENN_TO_NATIONAL(OLD_UNOWN_M),
+ HOENN_TO_NATIONAL(OLD_UNOWN_N),
+ HOENN_TO_NATIONAL(OLD_UNOWN_O),
+ HOENN_TO_NATIONAL(OLD_UNOWN_P),
+ HOENN_TO_NATIONAL(OLD_UNOWN_Q),
+ HOENN_TO_NATIONAL(OLD_UNOWN_R),
+ HOENN_TO_NATIONAL(OLD_UNOWN_S),
+ HOENN_TO_NATIONAL(OLD_UNOWN_T),
+ HOENN_TO_NATIONAL(OLD_UNOWN_U),
+ HOENN_TO_NATIONAL(OLD_UNOWN_V),
+ HOENN_TO_NATIONAL(OLD_UNOWN_W),
+ HOENN_TO_NATIONAL(OLD_UNOWN_X),
+ HOENN_TO_NATIONAL(OLD_UNOWN_Y),
+ HOENN_TO_NATIONAL(OLD_UNOWN_Z),
+};
+
+static const struct SpindaSpot sSpindaSpotGraphics[] =
+{
+ {16, 7, INCBIN_U16("graphics/spinda_spots/spot_0.bin")},
+ {40, 8, INCBIN_U16("graphics/spinda_spots/spot_1.bin")},
+ {22, 25, INCBIN_U16("graphics/spinda_spots/spot_2.bin")},
+ {34, 26, INCBIN_U16("graphics/spinda_spots/spot_3.bin")}
+};
+
+#include "data/pokemon/item_effects.h"
+
+static const s8 sNatureStatTable[][5] =
+{
+ // Atk Def Spd Sp.Atk Sp.Def
+ { 0, 0, 0, 0, 0}, // Hardy
+ { +1, -1, 0, 0, 0}, // Lonely
+ { +1, 0, -1, 0, 0}, // Brave
+ { +1, 0, 0, -1, 0}, // Adamant
+ { +1, 0, 0, 0, -1}, // Naughty
+ { -1, +1, 0, 0, 0}, // Bold
+ { 0, 0, 0, 0, 0}, // Docile
+ { 0, +1, -1, 0, 0}, // Relaxed
+ { 0, +1, 0, -1, 0}, // Impish
+ { 0, +1, 0, 0, -1}, // Lax
+ { -1, 0, +1, 0, 0}, // Timid
+ { 0, -1, +1, 0, 0}, // Hasty
+ { 0, 0, 0, 0, 0}, // Serious
+ { 0, 0, +1, -1, 0}, // Jolly
+ { 0, 0, +1, 0, -1}, // Naive
+ { -1, 0, 0, +1, 0}, // Modest
+ { 0, -1, 0, +1, 0}, // Mild
+ { 0, 0, -1, +1, 0}, // Quiet
+ { 0, 0, 0, 0, 0}, // Bashful
+ { 0, 0, 0, +1, -1}, // Rash
+ { -1, 0, 0, 0, +1}, // Calm
+ { 0, -1, 0, 0, +1}, // Gentle
+ { 0, 0, -1, 0, +1}, // Sassy
+ { 0, 0, 0, -1, +1}, // Careful
+ { 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"
+
+static const s8 sPokeblockFlavorCompatibilityTable[] =
+{
+ // Cool, Beauty, Cute, Smart, Tough
+ 0, 0, 0, 0, 0, // Hardy
+ 1, 0, 0, 0, -1, // Lonely
+ 1, 0, -1, 0, 0, // Brave
+ 1, -1, 0, 0, 0, // Adamant
+ 1, 0, 0, -1, 0, // Naughty
+ -1, 0, 0, 0, 1, // Bold
+ 0, 0, 0, 0, 0, // Docile
+ 0, 0, -1, 0, 1, // Relaxed
+ 0, -1, 0, 0, 1, // Impish
+ 0, 0, 0, -1, 1, // Lax
+ -1, 0, 1, 0, 0, // Timid
+ 0, 0, 1, 0, -1, // Hasty
+ 0, 0, 0, 0, 0, // Serious
+ 0, -1, 1, 0, 0, // Jolly
+ 0, 0, 1, -1, 0, // Naive
+ -1, 1, 0, 0, 0, // Modest
+ 0, 1, 0, 0, -1, // Mild
+ 0, 1, -1, 0, 0, // Quiet
+ 0, 0, 0, 0, 0, // Bashful
+ 0, 1, 0, -1, 0, // Rash
+ -1, 0, 0, 1, 0, // Calm
+ 0, 0, 0, 1, -1, // Gentle
+ 0, 0, -1, 1, 0, // Sassy
+ 0, -1, 0, 1, 0, // Careful
+ 0, 0, 0, 0, 0 // Quirky
+};
+
+const u8 gPPUpGetMask[] = { 0x03, 0x0c, 0x30, 0xc0 }; // Masks for getting PP Up count, also PP Max values
+
+const u8 gPPUpSetMask[] = { 0xfc, 0xf3, 0xcf, 0x3f }; // Masks for setting PP Up count
+
+const u8 gPPUpAddMask[] = { 0x01, 0x04, 0x10, 0x40 }; // Values added to PP Up count
+
+const u8 gStatStageRatios[][2] =
+{
+ { 10, 40 },
+ { 10, 35 },
+ { 10, 30 },
+ { 10, 25 },
+ { 10, 20 },
+ { 10, 15 },
+ { 10, 10 },
+ { 15, 10 },
+ { 20, 10 },
+ { 25, 10 },
+ { 30, 10 },
+ { 35, 10 },
+ { 40, 10 },
+ { 138, 174 },
+ { 108, 120 },
+};
+
+static const u8 sFiller = _("");
+
+static const u8 sHoldEffectToType[][2] =
+{
+ {HOLD_EFFECT_BUG_POWER, TYPE_BUG},
+ {HOLD_EFFECT_STEEL_POWER, TYPE_STEEL},
+ {HOLD_EFFECT_GROUND_POWER, TYPE_GROUND},
+ {HOLD_EFFECT_ROCK_POWER, TYPE_ROCK},
+ {HOLD_EFFECT_GRASS_POWER, TYPE_GRASS},
+ {HOLD_EFFECT_DARK_POWER, TYPE_DARK},
+ {HOLD_EFFECT_FIGHTING_POWER, TYPE_FIGHTING},
+ {HOLD_EFFECT_ELECTRIC_POWER, TYPE_ELECTRIC},
+ {HOLD_EFFECT_WATER_POWER, TYPE_WATER},
+ {HOLD_EFFECT_FLYING_POWER, TYPE_FLYING},
+ {HOLD_EFFECT_POISON_POWER, TYPE_POISON},
+ {HOLD_EFFECT_ICE_POWER, TYPE_ICE},
+ {HOLD_EFFECT_GHOST_POWER, TYPE_GHOST},
+ {HOLD_EFFECT_PSYCHIC_POWER, TYPE_PSYCHIC},
+ {HOLD_EFFECT_FIRE_POWER, TYPE_FIRE},
+ {HOLD_EFFECT_DRAGON_POWER, TYPE_DRAGON},
+ {HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL},
+};
+
+const struct SpriteTemplate gUnknown_825DEF0[] =
+{
+ {
+ .tileTag = SPRITE_INVALID_TAG,
+ .paletteTag = 0,
+ .oam = &gUnknown_824F018,
+ .anims = NULL,
+ .images = gUnknown_8234698,
+ .affineAnims = gUnknown_82348C8,
+ .callback = sub_80120C4,
+ },
+ {
+ .tileTag = SPRITE_INVALID_TAG,
+ .paletteTag = 0,
+ .oam = &gUnknown_824F010,
+ .anims = NULL,
+ .images = gUnknown_82346B8,
+ .affineAnims = gUnknown_8234944,
+ .callback = oac_poke_opponent,
+ },
+ {
+ .tileTag = SPRITE_INVALID_TAG,
+ .paletteTag = 0,
+ .oam = &gUnknown_824F018,
+ .anims = NULL,
+ .images = gUnknown_82346D8,
+ .affineAnims = gUnknown_82348C8,
+ .callback = sub_80120C4,
+ },
+ {
+ .tileTag = SPRITE_INVALID_TAG,
+ .paletteTag = 0,
+ .oam = &gUnknown_824F010,
+ .anims = NULL,
+ .images = gUnknown_82346F8,
+ .affineAnims = gUnknown_8234944,
+ .callback = oac_poke_opponent,
+ },
+};
+
+const struct SpriteTemplate gUnknown_825DF50[] =
+{
+ {
+ .tileTag = SPRITE_INVALID_TAG,
+ .paletteTag = 0,
+ .oam = &gUnknown_824F018,
+ .anims = NULL,
+ .images = gUnknown_8234718,
+ .affineAnims = gUnknown_82348C8,
+ .callback = sub_80120C4,
+ },
+ {
+ .tileTag = SPRITE_INVALID_TAG,
+ .paletteTag = 0,
+ .oam = &gUnknown_824F018,
+ .anims = NULL,
+ .images = gUnknown_8234740,
+ .affineAnims = gUnknown_82348C8,
+ .callback = sub_80120C4,
+ },
+ {
+ .tileTag = SPRITE_INVALID_TAG,
+ .paletteTag = 0,
+ .oam = &gUnknown_824F018,
+ .anims = NULL,
+ .images = gUnknown_82347A8,
+ .affineAnims = gUnknown_82348C8,
+ .callback = sub_80120C4,
+ },
+ {
+ .tileTag = SPRITE_INVALID_TAG,
+ .paletteTag = 0,
+ .oam = &gUnknown_824F018,
+ .anims = NULL,
+ .images = gUnknown_82347C8,
+ .affineAnims = gUnknown_82348C8,
+ .callback = sub_80120C4,
+ },
+ {
+ .tileTag = SPRITE_INVALID_TAG,
+ .paletteTag = 0,
+ .oam = &gUnknown_824F018,
+ .anims = NULL,
+ .images = gUnknown_8234768,
+ .affineAnims = gUnknown_82348C8,
+ .callback = sub_80120C4,
+ },
+ {
+ .tileTag = SPRITE_INVALID_TAG,
+ .paletteTag = 0,
+ .oam = &gUnknown_824F018,
+ .anims = NULL,
+ .images = gUnknown_8234788,
+ .affineAnims = gUnknown_82348C8,
+ .callback = sub_80120C4,
+ },
+};
+
+static const u8 sSecretBaseFacilityClasses[][5] =
+{
+ { FACILITY_CLASS_YOUNGSTER_2, FACILITY_CLASS_YOUNGSTER_2, FACILITY_CLASS_YOUNGSTER_2, FACILITY_CLASS_YOUNGSTER_2, FACILITY_CLASS_YOUNGSTER_2 },
+ { FACILITY_CLASS_YOUNGSTER_2, FACILITY_CLASS_YOUNGSTER_2, FACILITY_CLASS_YOUNGSTER_2, FACILITY_CLASS_YOUNGSTER_2, FACILITY_CLASS_YOUNGSTER_2 },
+};
+
+static const u8 sGetMonDataEVConstants[] =
+{
+ MON_DATA_HP_EV,
+ MON_DATA_ATK_EV,
+ MON_DATA_DEF_EV,
+ MON_DATA_SPEED_EV,
+ MON_DATA_SPDEF_EV,
+ MON_DATA_SPATK_EV
+};
+
+static const u8 gUnknown_825DFF0[] =
+{
+ STAT_ATK, STAT_ATK, STAT_SPEED, STAT_DEF, STAT_SPATK, STAT_ACC
+};
+
+static const s8 sFriendshipEventDeltas[][3] =
+{
+ { 5, 3, 2 },
+ { 5, 3, 2 },
+ { 1, 1, 0 },
+ { 3, 2, 1 },
+ { 1, 1, 0 },
+ { 1, 1, 1 },
+ { 3, 3, 3 },
+ {-1, -1, -1 },
+ {-5, -5, -10 },
+ {-5, -5, -10 },
+};
+
+static const u16 sHMMoves[] =
+{
+ MOVE_CUT, MOVE_FLY, MOVE_SURF, MOVE_STRENGTH, MOVE_FLASH,
+ MOVE_ROCK_SMASH, MOVE_WATERFALL, MOVE_DIVE, 0xFFFF
+};
+
+static const u16 sDeoxysBaseStats[] =
+{
+ 50, // Hp
+ 180, // Attack
+ 20, // Defense
+ 150, // Speed
+ 180, // Sp.Attack
+ 20, // Sp.Defense
+};
+
+const u16 gLinkPlayerFacilityClasses[] =
+{
+ FACILITY_CLASS_COOLTRAINER_3, FACILITY_CLASS_BLACK_BELT_2, FACILITY_CLASS_CAMPER_2, FACILITY_CLASS_YOUNGSTER_2, FACILITY_CLASS_PSYCHIC_3,
+ FACILITY_CLASS_BUG_CATCHER_2, FACILITY_CLASS_TAMER, FACILITY_CLASS_JUGGLER, FACILITY_CLASS_COOLTRAINER_4, FACILITY_CLASS_CHANNELER,
+ FACILITY_CLASS_PICNICKER_2, FACILITY_CLASS_LASS_2, FACILITY_CLASS_PSYCHIC_4, FACILITY_CLASS_CRUSH_GIRL, FACILITY_CLASS_PKMN_BREEDER_3,
+ FACILITY_CLASS_BEAUTY_2, FACILITY_CLASS_AQUA_LEADER,
+};
+
+const static struct OamData sOakSpeechNidoranFDummyOamData =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate sOakSpeechNidoranFDummyTemplate =
+{
+ .tileTag = SPRITE_INVALID_TAG,
+ .paletteTag = SPRITE_INVALID_TAG,
+ .oam = &sOakSpeechNidoranFDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
// code
void ZeroBoxMonData(struct BoxPokemon *boxMon)
@@ -233,7 +1789,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv);
}
- if (gBaseStats[species].ability2)
+ if (gBaseStats[species].abilities[1])
{
value = personality & 1;
SetBoxMonData(boxMon, MON_DATA_ALT_ABILITY, &value);
@@ -307,7 +1863,7 @@ void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32
CalculateMonStats(mon);
}
-void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId)
+static void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId)
{
CreateMon(mon, species, level, 0, 0, 0, OT_ID_PRESET, otId);
SetMonData(mon, MON_DATA_HP_IV, &ivs[0]);
@@ -351,7 +1907,7 @@ void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedI
CalculateMonStats(mon);
}
-void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src)
+void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src)
{
s32 i;
u8 value;
@@ -402,7 +1958,7 @@ void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src)
CalculateMonStats(mon);
}
-void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId)
+static void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId)
{
bool32 obedient = TRUE;
@@ -447,7 +2003,7 @@ void sub_803E23C(struct Pokemon *mon, struct BattleTowerPokemon *dest)
GetMonData(mon, MON_DATA_NICKNAME, dest->nickname);
}
-u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon)
+static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon)
{
u16 checksum = 0;
union PokemonSubstruct *substruct0 = GetSubstruct(boxMon, boxMon->personality, 0);
@@ -476,7 +2032,7 @@ u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon)
u8 baseStat = gBaseStats[species].base; \
s32 n = (((2 * baseStat + iv + ev / 4) * level) / 100) + 5; \
u8 nature = GetNature(mon); \
- n = nature_stat_mod(nature, n, statIndex); \
+ n = ModifyStatByNature(nature, n, statIndex); \
SetMonData(mon, field, &n); \
}
@@ -556,7 +2112,7 @@ void BoxMonToMon(struct BoxPokemon *src, struct Pokemon *dest)
CalculateMonStats(dest);
}
-u8 GetLevelFromMonExp(struct Pokemon *mon)
+static u8 GetLevelFromMonExp(struct Pokemon *mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
u32 exp = GetMonData(mon, MON_DATA_EXP, NULL);
@@ -585,7 +2141,7 @@ u16 GiveMoveToMon(struct Pokemon *mon, u16 move)
return GiveMoveToBoxMon(&mon->box, move);
}
-u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
+static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
{
s32 i;
for (i = 0; i < 4; i++)
@@ -632,15 +2188,12 @@ void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot)
mon->pp[slot] = gBattleMoves[move].pp;
}
-void GiveMonInitialMoveset(struct Pokemon *mon)
+static void GiveMonInitialMoveset(struct Pokemon *mon)
{
GiveBoxMonInitialMoveset(&mon->box);
}
-// TODO: make level_up_learnsets.h in src/data and move this to there.
-#define LEVEL_UP_END 0xffff
-
-void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon)
+static void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon)
{
u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL);
s32 level = GetLevelFromBoxMonExp(boxMon);
@@ -722,7 +2275,7 @@ void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move)
SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses);
}
-void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
+static void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
{
s32 i;
u16 moves[4];
@@ -834,8 +2387,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
spDefense = (110 * spDefense) / 100;
}
- // TODO: Use ARRAY_COUNT(sHoldEffectToType)
- for (i = 0; i < 17; i++)
+ for (i = 0; i < NELEMS(sHoldEffectToType); i++)
{
if (attackerHoldEffect == sHoldEffectToType[i][0]
&& type == sHoldEffectToType[i][1])
@@ -924,13 +2476,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((sideStatus & SIDE_STATUS_REFLECT) && gCritMultiplier == 1)
{
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2)
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
damage = 2 * (damage / 3);
else
damage /= 2;
}
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2)
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
damage /= 2;
// moves always do at least 1 damage.
@@ -971,13 +2523,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((sideStatus & SIDE_STATUS_LIGHTSCREEN) && gCritMultiplier == 1)
{
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2)
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
damage = 2 * (damage / 3);
else
damage /= 2;
}
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2)
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
damage /= 2;
// are effects of weather negated with cloud nine or air lock
@@ -1023,28 +2575,28 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
return damage + 2;
}
-u8 CountAliveMons(u8 a1)
+u8 CountAliveMonsInBattle(u8 caseId)
{
s32 i;
u8 retVal = 0;
- switch (a1)
+ switch (caseId)
{
- case 0:
+ case BATTLE_ALIVE_EXCEPT_ACTIVE:
for (i = 0; i < 4; i++)
{
if (i != gActiveBattler && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
- case 1:
+ case BATTLE_ALIVE_ATK_SIDE:
for (i = 0; i < 4; i++)
{
if (GetBattlerSide(i) == GetBattlerSide(sBattler_AI) && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
- case 2:
+ case BATTLE_ALIVE_DEF_SIDE:
for (i = 0; i < 4; i++)
{
if (GetBattlerSide(i) == GetBattlerSide(gBattlerTarget) && !(gAbsentBattlerFlags & gBitTable[i]))
@@ -1056,29 +2608,28 @@ u8 CountAliveMons(u8 a1)
return retVal;
}
-u8 GetDefaultMoveTarget(u8 a1)
+u8 GetDefaultMoveTarget(u8 battlerId)
{
- u8 status = GetBattlerPosition(a1) & 1;
+ u8 opposing = BATTLE_OPPOSITE(GetBattlerPosition(battlerId) & BIT_SIDE);
- status ^= 1;
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
- return GetBattlerAtPosition(status);
- if (CountAliveMons(0) > 1)
+ return GetBattlerAtPosition(opposing);
+ if (CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_ACTIVE) > 1)
{
- u8 val;
+ u8 position;
if ((Random() & 1) == 0)
- val = status ^ 2;
+ position = BATTLE_PARTNER(opposing);
else
- val = status;
- return GetBattlerAtPosition(val);
+ position = opposing;
+ return GetBattlerAtPosition(position);
}
else
{
- if ((gAbsentBattlerFlags & gBitTable[status]))
- return GetBattlerAtPosition(status ^ 2);
+ if ((gAbsentBattlerFlags & gBitTable[opposing]))
+ return GetBattlerAtPosition(BATTLE_PARTNER(opposing));
else
- return GetBattlerAtPosition(status);
+ return GetBattlerAtPosition(opposing);
}
}
@@ -1122,40 +2673,40 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
return MON_MALE;
}
-void SetMultiuseSpriteTemplateToPokemon(u16 trainerSpriteId, u8 battlerPosition)
+void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition)
{
- if(gMonSpritesGfxPtr != NULL)
+ if (gMonSpritesGfxPtr != NULL)
{
- if(battlerPosition >= 4)
+ if (battlerPosition >= 4)
battlerPosition = 0;
gMultiuseSpriteTemplate = gMonSpritesGfxPtr->templates[battlerPosition];
}
else
{
- if(gUnknown_20244F4)
+ if (sOakSpeechNidoranResources)
{
- if(battlerPosition >= (s8)gUnknown_20244F4->unk0_2) // why a cast?!? changing the unk0_2 type to s8 causes extra shifts, but a cast is the correct fix. why, compiler?
+ if (battlerPosition >= (s8)sOakSpeechNidoranResources->battlePosition) // why a cast?!? changing the unk0_2 type to s8 causes extra shifts, but a cast is the correct fix. why, compiler?
battlerPosition = 0;
- gMultiuseSpriteTemplate = gUnknown_20244F4->unk10[battlerPosition];
+ gMultiuseSpriteTemplate = sOakSpeechNidoranResources->templates[battlerPosition];
}
else
{
- if(battlerPosition >= 4)
+ if (battlerPosition >= 4)
battlerPosition = 0;
gMultiuseSpriteTemplate = gUnknown_825DEF0[battlerPosition];
}
}
- gMultiuseSpriteTemplate.paletteTag = trainerSpriteId;
+ gMultiuseSpriteTemplate.paletteTag = speciesTag;
gMultiuseSpriteTemplate.anims = gUnknown_82349BC;
}
void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition)
{
gMultiuseSpriteTemplate.paletteTag = trainerSpriteId;
- if(battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
+ if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
{
gMultiuseSpriteTemplate = gUnknown_825DF50[trainerSpriteId];
gMultiuseSpriteTemplate.anims = gTrainerBackAnimsPtrTable[trainerSpriteId];
@@ -1170,7 +2721,7 @@ void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosit
}
}
-void EncryptBoxMon(struct BoxPokemon *boxMon)
+static void EncryptBoxMon(struct BoxPokemon *boxMon)
{
u32 i;
for (i = 0; i < 12; i++)
@@ -1180,7 +2731,7 @@ void EncryptBoxMon(struct BoxPokemon *boxMon)
}
}
-void DecryptBoxMon(struct BoxPokemon *boxMon)
+static void DecryptBoxMon(struct BoxPokemon *boxMon)
{
u32 i;
for (i = 0; i < 12; i++)
@@ -1236,7 +2787,7 @@ case n: \
break; \
} \
-union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType)
+static union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType)
{
union PokemonSubstruct *substruct = NULL;
@@ -1290,27 +2841,27 @@ u32 GetMonData(struct Pokemon *mon, s32 field, u8* data)
ret = mon->maxHP;
break;
case MON_DATA_ATK:
- ret = (u16)GetDeoxysStat(mon, STAT_ATK);
+ ret = GetDeoxysStat(mon, STAT_ATK);
if (!ret)
ret = mon->attack;
break;
case MON_DATA_DEF:
- ret = (u16)GetDeoxysStat(mon, STAT_DEF);
+ ret = GetDeoxysStat(mon, STAT_DEF);
if (!ret)
ret = mon->defense;
break;
case MON_DATA_SPEED:
- ret = (u16)GetDeoxysStat(mon, STAT_SPEED);
+ ret = GetDeoxysStat(mon, STAT_SPEED);
if (!ret)
ret = mon->speed;
break;
case MON_DATA_SPATK:
- ret = (u16)GetDeoxysStat(mon, STAT_SPATK);
+ ret = GetDeoxysStat(mon, STAT_SPATK);
if (!ret)
ret = mon->spAttack;
break;
case MON_DATA_SPDEF:
- ret = (u16)GetDeoxysStat(mon, STAT_SPDEF);
+ ret = GetDeoxysStat(mon, STAT_SPDEF);
if (!ret)
ret = mon->spDefense;
break;
@@ -2065,7 +3616,7 @@ u8 GiveMonToPlayer(struct Pokemon *mon)
return MON_GIVEN_TO_PARTY;
}
-u8 SendMonToPC(struct Pokemon* mon)
+static u8 SendMonToPC(struct Pokemon* mon)
{
s32 boxNo, boxPos;
@@ -2151,9 +3702,9 @@ u8 GetMonsStateToDoubles(void)
u8 GetAbilityBySpecies(u16 species, bool8 altAbility)
{
if (altAbility)
- gLastUsedAbility = gBaseStats[species].ability2;
+ gLastUsedAbility = gBaseStats[species].abilities[1];
else
- gLastUsedAbility = gBaseStats[species].ability1;
+ gLastUsedAbility = gBaseStats[species].abilities[0];
return gLastUsedAbility;
}
@@ -2165,7 +3716,7 @@ u8 GetMonAbility(struct Pokemon *mon)
return GetAbilityBySpecies(species, altAbility);
}
-void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord)
+static void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord)
{
s32 i, j;
@@ -2224,7 +3775,7 @@ bool8 IsPlayerPartyAndPokemonStorageFull(void)
return IsPokemonStorageFull();
}
-bool8 IsPokemonStorageFull(void)
+static bool8 IsPokemonStorageFull(void)
{
s32 i, j;
@@ -2258,22 +3809,22 @@ void GetSpeciesName(u8 *name, u16 species)
u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex)
{
u8 basePP = gBattleMoves[move].pp;
- return basePP + ((basePP * 20 * ((gUnknown_825DEA1[moveIndex] & ppBonuses) >> (2 * moveIndex))) / 100);
+ return basePP + ((basePP * 20 * ((gPPUpGetMask[moveIndex] & ppBonuses) >> (2 * moveIndex))) / 100);
}
void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex)
{
u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES, NULL);
- ppBonuses &= gPPUpWriteMasks[moveIndex];
+ ppBonuses &= gPPUpSetMask[moveIndex];
SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses);
}
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex)
{
- mon->ppBonuses &= gPPUpWriteMasks[moveIndex];
+ mon->ppBonuses &= gPPUpSetMask[moveIndex];
}
-void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex)
+static void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex)
{
u16* hpSwitchout;
s32 i;
@@ -2333,10 +3884,6 @@ bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex,
return PokemonUseItemEffects(mon, item, partyIndex, moveIndex, 0);
}
-extern const u8 gUnknown_825DEA1[];
-extern const u8 gUnknown_825DEA9[];
-extern const u8 sGetMonDataEVConstants[];
-
bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e)
{
u32 data;
@@ -2512,11 +4059,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
if (r10 & 0x20)
{
r10 &= ~0x20;
- data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_825DEA1[moveIndex]) >> (moveIndex * 2);
+ data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
sp28 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex);
if (data < 3 && sp28 > 4)
{
- data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) + gUnknown_825DEA9[moveIndex];
+ data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) + gPPUpAddMask[moveIndex];
SetMonData(pkmn, MON_DATA_PP_BONUSES, &data);
data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - sp28;
@@ -2741,13 +4288,13 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
}
break;
case 4:
- data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_825DEA1[moveIndex]) >> (moveIndex * 2);
+ data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
if (data < 3)
{
r4 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex);
data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL);
- data &= gPPUpWriteMasks[moveIndex];
- data += gUnknown_825DEA9[moveIndex] * 3;
+ data &= gPPUpSetMask[moveIndex];
+ data += gPPUpAddMask[moveIndex] * 3;
SetMonData(pkmn, MON_DATA_PP_BONUSES, &data);
data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - r4;
@@ -2840,7 +4387,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
return retVal;
}
-bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId)
+static bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId)
{
u32 status = GetMonData(mon, MON_DATA_STATUS, 0);
@@ -2858,8 +4405,6 @@ bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 bat
}
}
-extern bool8 sub_8042BE8(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId);
-
#ifdef NONMATCHING
/*
* This is nonmatching due to the compiler's insistence on avoiding the u8 cast
@@ -3047,11 +4592,11 @@ bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 m
if (r10 & 0x20)
{
r10 &= ~0x20;
- data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_825DEA1[moveIndex]) >> (moveIndex * 2);
+ data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
sp28 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex);
if (data < 3 && sp28 > 4)
{
- //data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) + gUnknown_825DEA9[moveIndex];
+ //data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) + gPPUpAddMask[moveIndex];
//SetMonData(pkmn, MON_DATA_PP_BONUSES, &data);
//
//data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - sp28;
@@ -3286,17 +4831,17 @@ bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 m
}
break;
case 4:
- data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_825DEA1[moveIndex]) >> (moveIndex * 2);
+ data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
r4 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex);
if (data < 3)
{
- if(r4 <= 4)
+ if (r4 <= 4)
break;
/*
data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL);
- data &= gPPUpWriteMasks[moveIndex];
- data += gUnknown_825DEA9[moveIndex] * 3;
+ data &= gPPUpSetMask[moveIndex];
+ data += gPPUpAddMask[moveIndex] * 3;
SetMonData(pkmn, MON_DATA_PP_BONUSES, &data);
data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - r4;
@@ -3957,7 +5502,7 @@ _08042850:\n\
movs r2, 0\n\
bl GetMonData\n\
adds r5, r0, 0\n\
- ldr r0, _080428DC @ =gUnknown_825DEA1\n\
+ ldr r0, _080428DC @ =gPPUpGetMask\n\
ldr r1, [sp, 0x8]\n\
adds r0, r1, r0\n\
ldrb r0, [r0]\n\
@@ -4013,7 +5558,7 @@ _080428D2:\n\
ldr r0, [r0]\n\
mov pc, r0\n\
.align 2, 0\n\
-_080428DC: .4byte gUnknown_825DEA1\n\
+_080428DC: .4byte gPPUpGetMask\n\
_080428E0: .4byte _080428E4\n\
.align 2, 0\n\
_080428E4:\n\
@@ -4275,7 +5820,7 @@ _08042AF4:\n\
movs r2, 0\n\
bl GetMonData\n\
adds r5, r0, 0\n\
- ldr r0, _08042B48 @ =gUnknown_825DEA1\n\
+ ldr r0, _08042B48 @ =gPPUpGetMask\n\
ldr r1, [sp, 0x8]\n\
adds r0, r1, r0\n\
ldrb r0, [r0]\n\
@@ -4309,7 +5854,7 @@ _08042AF4:\n\
str r2, [sp, 0x10]\n\
b _08042BBE\n\
.align 2, 0\n\
-_08042B48: .4byte gUnknown_825DEA1\n\
+_08042B48: .4byte gPPUpGetMask\n\
_08042B4C:\n\
mov r0, r8\n\
movs r1, 0x20\n\
@@ -4397,9 +5942,9 @@ _08042BD8:\n\
}
#endif
-bool8 sub_8042BE8(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId)
+static bool8 sub_8042BE8(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId)
{
- if((GetMonData(mon, MON_DATA_STATUS, NULL) & healMask) != 0)
+ if ((GetMonData(mon, MON_DATA_STATUS, NULL) & healMask) != 0)
return TRUE;
else
return FALSE;
@@ -4518,7 +6063,7 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
return offset;
}
-void sub_8042D50(int stat)
+static void sub_8042D50(int stat)
{
gBattlerTarget = gBattlerInMenuId;
StringCopy(gBattleTextBuff1, gUnknown_83FD5D0[gUnknown_825DFF0[stat]]);
@@ -4526,7 +6071,7 @@ void sub_8042D50(int stat)
BattleStringExpandPlaceholdersToDisplayedString(BattleText_UnknownString3);
}
-u8 *sub_8042DA4(u16 itemId)
+const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId)
{
int i;
const u8 *itemEffect;
@@ -4581,13 +6126,11 @@ u8 GetNature(struct Pokemon *mon)
return GetMonData(mon, MON_DATA_PERSONALITY, 0) % 25;
}
-u8 GetNatureFromPersonality(u32 personality)
+static u8 GetNatureFromPersonality(u32 personality)
{
return personality % 25;
}
-extern bool32 sub_806E25C(void);
-
u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
{
int i;
@@ -4716,21 +6259,19 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
return targetSpecies;
}
-// HoennPokedexNumToSpecies, but is it really Hoenn or Kanto its checking
-// TODO: Figure this out
-u16 sub_80431B4(u16 var)
+static u16 HoennPokedexNumToSpecies(u16 var)
{
u16 species;
- if(!var)
+ if (!var)
return 0;
species = 0;
- while(species < POKEMON_SLOTS_NUMBER - 1 && gUnknown_8251CB8[species] != var)
+ while (species < POKEMON_SLOTS_NUMBER - 1 && sSpeciesToHoennPokedexNum[species] != var)
species++;
- if(species == POKEMON_SLOTS_NUMBER - 1)
+ if (species == POKEMON_SLOTS_NUMBER - 1)
return 0;
return species + 1;
@@ -4745,7 +6286,7 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum)
species = 0;
- while (species < POKEMON_SLOTS_NUMBER - 1 && gUnknown_8251FEE[species] != nationalNum)
+ while (species < POKEMON_SLOTS_NUMBER - 1 && sSpeciesToNationalPokedexNum[species] != nationalNum)
species++;
if (species == POKEMON_SLOTS_NUMBER - 1)
@@ -4754,8 +6295,7 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum)
return species + 1;
}
-// NationalToKantoOrder?
-u16 sub_804324C(u16 nationalNum)
+static u16 NationalToHoennOrder(u16 nationalNum)
{
u16 hoennNum;
@@ -4764,7 +6304,7 @@ u16 sub_804324C(u16 nationalNum)
hoennNum = 0;
- while (hoennNum < POKEMON_SLOTS_NUMBER - 1 && gUnknown_8252324[hoennNum] != nationalNum)
+ while (hoennNum < POKEMON_SLOTS_NUMBER - 1 && sHoennToNationalOrder[hoennNum] != nationalNum)
hoennNum++;
if (hoennNum == POKEMON_SLOTS_NUMBER - 1)
@@ -4778,17 +6318,15 @@ u16 SpeciesToNationalPokedexNum(u16 species)
if (!species)
return 0;
- return gUnknown_8251FEE[species - 1];
+ return sSpeciesToNationalPokedexNum[species - 1];
}
-// these 2 functions are probably kanto and not hoenn
-// TODO: figure this out
-u16 SpeciesToHoennPokedexNum(u16 species)
+static u16 SpeciesToHoennPokedexNum(u16 species)
{
if (!species)
return 0;
- return gUnknown_8251CB8[species - 1];
+ return sSpeciesToHoennPokedexNum[species - 1];
}
u16 HoennToNationalOrder(u16 hoennNum)
@@ -4796,7 +6334,7 @@ u16 HoennToNationalOrder(u16 hoennNum)
if (!hoennNum)
return 0;
- return gUnknown_8252324[hoennNum - 1];
+ return sHoennToNationalOrder[hoennNum - 1];
}
u16 SpeciesToCryId(u16 species)
@@ -4807,10 +6345,10 @@ u16 SpeciesToCryId(u16 species)
if (species <= SPECIES_OLD_UNOWN_Z - 1)
return SPECIES_UNOWN - 1;
- return gUnknown_82539D4[species - ((SPECIES_OLD_UNOWN_Z + 1) - 1)];
+ return sHoennSpeciesIdToCryId[species - ((SPECIES_OLD_UNOWN_Z + 1) - 1)];
}
-void sub_8043338(u16 species, u32 personality, u8 *dest)
+static void sub_8043338(u16 species, u32 personality, u8 *dest)
{
if (species == SPECIES_SPINDA
&& dest != gMonSpritesGfxPtr->sprites[0]
@@ -4820,13 +6358,13 @@ void sub_8043338(u16 species, u32 personality, u8 *dest)
for (i = 0; i < 4; i++)
{
int j;
- u8 x = gSpindaSpotGraphics[i].x + ((personality & 0x0F) - 8);
- u8 y = gSpindaSpotGraphics[i].y + (((personality & 0xF0) >> 4) - 8);
+ u8 x = sSpindaSpotGraphics[i].x + ((personality & 0x0F) - 8);
+ u8 y = sSpindaSpotGraphics[i].y + (((personality & 0xF0) >> 4) - 8);
for (j = 0; j < 16; j++)
{
int k;
- s32 row = gSpindaSpotGraphics[i].image[j];
+ s32 row = sSpindaSpotGraphics[i].image[j];
for (k = x; k < x + 16; k++)
{
@@ -4865,13 +6403,13 @@ void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4)
for (i = 0; i < 4; i++)
{
int j;
- u8 x = gSpindaSpotGraphics[i].x + ((personality & 0x0F) - 8);
- u8 y = gSpindaSpotGraphics[i].y + (((personality & 0xF0) >> 4) - 8);
+ u8 x = sSpindaSpotGraphics[i].x + ((personality & 0x0F) - 8);
+ u8 y = sSpindaSpotGraphics[i].y + (((personality & 0xF0) >> 4) - 8);
for (j = 0; j < 16; j++)
{
int k;
- s32 row = gSpindaSpotGraphics[i].image[j];
+ s32 row = sSpindaSpotGraphics[i].image[j];
for (k = x; k < x + 16; k++)
{
@@ -4928,10 +6466,10 @@ bool8 sub_80435E0(void)
return retVal;
}
-bool8 sub_8043620(u8 id)
+bool8 GetLinkTrainerFlankId(u8 linkPlayerId)
{
bool8 retVal = FALSE;
- switch (gLinkPlayers[id].id)
+ switch (gLinkPlayers[linkPlayerId].id)
{
case 0:
case 3:
@@ -4954,12 +6492,12 @@ s32 GetBankMultiplayerId(u16 a1)
return id;
}
-u8 sub_804367C(u16 trainer)
+u8 GetTrainerEncounterMusicId(u16 trainer)
{
return gTrainers[trainer].encounterMusic_gender & 0x7F;
}
-u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex)
+static u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex)
{
if (statIndex < 1 || statIndex > 5)
{
@@ -4970,7 +6508,7 @@ u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex)
return retVal;
}
- switch (gNatureStatTable[nature][statIndex - 1])
+ switch (sNatureStatTable[nature][statIndex - 1])
{
case 1:
return (u16)(n * 110) / 100;
@@ -4986,10 +6524,6 @@ u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex)
#define TRAINER_CLASS_LEADER 0x57
#define TRAINER_CLASS_CHAMPION 0x5A
-// TODO: Move these too
-#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3
-#define FRIENDSHIP_EVENT_WALKING 0x5
-
void AdjustFriendship(struct Pokemon *mon, u8 event)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
@@ -5204,7 +6738,7 @@ u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection)
return retVal;
}
-void sub_8043B38(void)
+static void sub_8043B38(void)
{
u8 foo[4]; // huh?
}
@@ -5214,7 +6748,7 @@ void sub_8043B40(void)
u8 foo[4]; // huh?
}
-void sub_8043B48(struct Pokemon *mon, int species, u8 unused, u32 data)
+static void SetMonExpWithMaxLevelCheck(struct Pokemon *mon, int species, u8 unused, u32 data)
{
if (data > gExperienceTables[gBaseStats[species].growthRate][100])
{
@@ -5230,12 +6764,12 @@ bool8 TryIncrementMonLevel(struct Pokemon *mon)
u8 newLevel = level + 1;
u32 exp = GetMonData(mon, MON_DATA_EXP, NULL);
- if(level < 100)
+ if (level < 100)
{
- if(exp > gExperienceTables[gBaseStats[species].growthRate][newLevel])
+ if (exp > gExperienceTables[gBaseStats[species].growthRate][newLevel])
{
SetMonData(mon, MON_DATA_LEVEL, &newLevel);
- sub_8043B48(mon, species, newLevel, exp);
+ SetMonExpWithMaxLevelCheck(mon, species, newLevel, exp);
return TRUE;
}
else
@@ -5243,7 +6777,7 @@ bool8 TryIncrementMonLevel(struct Pokemon *mon)
}
else
{
- sub_8043B48(mon, species, level, exp);
+ SetMonExpWithMaxLevelCheck(mon, species, level, exp);
return FALSE;
}
}
@@ -5258,12 +6792,12 @@ u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm)
else if (tm < 32)
{
u32 mask = 1 << tm;
- return gTMHMLearnsets[species][0] & mask;
+ return sTMHMLearnsets[species][0] & mask;
}
else
{
u32 mask = 1 << (tm - 32);
- return gTMHMLearnsets[species][1] & mask;
+ return sTMHMLearnsets[species][1] & mask;
}
}
@@ -5373,19 +6907,19 @@ u16 sub_8043F90(u16 species)
void ClearBattleMonForms(void)
{
int i;
- for(i = 0; i < 4; i++)
+ for (i = 0; i < 4; i++)
gBattleMonForms[i] = 0;
}
-u16 GetMUS_ForBattle(void)
+static u16 GetMUS_ForBattle(void)
{
- if(gBattleTypeFlags & 0x1000)
+ if (gBattleTypeFlags & 0x1000)
return 0x12A;
- if(gBattleTypeFlags & 0x4000)
+ if (gBattleTypeFlags & 0x4000)
return 0x10A;
- if(gBattleTypeFlags & 0x2)
+ if (gBattleTypeFlags & 0x2)
return 0x10A;
- if(gBattleTypeFlags & 0x8)
+ if (gBattleTypeFlags & 0x8)
{
switch (gTrainers[gTrainerBattleOpponent_A].trainerClass)
{
@@ -5423,7 +6957,7 @@ void PlayMapChosenOrBattleBGM(u16 songId)
PlayNewMapMusic(GetMUS_ForBattle());
}
-const u8 *GetMonFrontSpritePal(struct Pokemon *mon)
+const u32 *GetMonFrontSpritePal(struct Pokemon *mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
@@ -5431,7 +6965,7 @@ const u8 *GetMonFrontSpritePal(struct Pokemon *mon)
return GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality);
}
-const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality)
+const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality)
{
u32 shinyValue;
@@ -5480,16 +7014,16 @@ bool8 IsPokeSpriteNotFlipped(u16 species)
return gBaseStats[species].noFlip;
}
-s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor)
+static s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor)
{
u8 nature = GetNature(mon);
- return gPokeblockFlavorCompatibilityTable[nature * 5 + flavor];
+ return sPokeblockFlavorCompatibilityTable[nature * 5 + flavor];
}
s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor)
{
u8 nature = GetNatureFromPersonality(personality);
- return gPokeblockFlavorCompatibilityTable[nature * 5 + flavor];
+ return sPokeblockFlavorCompatibilityTable[nature * 5 + flavor];
}
bool8 IsTradedMon(struct Pokemon *mon)
@@ -5567,8 +7101,7 @@ void sub_8044348(void)
void SetWildMonHeldItem(void)
{
- // TODO: Replace 0x00010000 with the right flag that isnt BATTLE_TYPE_DOME
- if (!(gBattleTypeFlags & (0x00010000 | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER)))
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_POKEDUDE | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER)))
{
u16 rnd = Random() % 100;
u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, 0);
@@ -5595,7 +7128,7 @@ bool8 IsMonShiny(struct Pokemon *mon)
return IsShinyOtIdPersonality(otId, personality);
}
-bool8 IsShinyOtIdPersonality(u32 otId, u32 personality)
+static bool8 IsShinyOtIdPersonality(u32 otId, u32 personality)
{
bool8 retVal = FALSE;
u32 shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
@@ -5604,8 +7137,728 @@ bool8 IsShinyOtIdPersonality(u32 otId, u32 personality)
return retVal;
}
-u8 *sub_80444C4(void)
+u8 *GetTrainerPartnerName(void)
{
u8 id = GetMultiplayerId();
return gLinkPlayers[GetBankMultiplayerId(gLinkPlayers[id].id ^ 2)].name;
}
+
+u8 GetPlayerPartyHighestLevel(void)
+{
+ s32 slot;
+ u8 level, monLevel;
+
+ level = 1;
+ for (slot = 0; slot < PARTY_SIZE; ++slot)
+ {
+ if (GetMonData(&gPlayerParty[slot], MON_DATA_SANITY_HAS_SPECIES, NULL) == 1 && !GetMonData(&gPlayerParty[slot], MON_DATA_SANITY_IS_EGG, NULL))
+ {
+ monLevel = GetMonData(&gPlayerParty[slot], MON_DATA_LEVEL, NULL);
+ if (monLevel > level)
+ level = monLevel;
+ }
+ }
+ return level;
+}
+
+u16 FacilityClassToPicIndex(u16 facilityClass)
+{
+ return gFacilityClassToPicIndex[facilityClass];
+}
+
+bool8 sub_804455C(u8 caseId, u8 battlerId)
+{
+ switch (caseId)
+ {
+ case 0:
+ default:
+ return FALSE;
+ case 1:
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ return FALSE;
+ if (!gMain.inBattle)
+ return FALSE;
+ if (gLinkPlayers[GetMultiplayerId()].id == battlerId)
+ return FALSE;
+ break;
+ case 2:
+ break;
+ case 3:
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ return FALSE;
+ if (!gMain.inBattle)
+ return FALSE;
+ if (battlerId == 1 || battlerId == 4 || battlerId == 5)
+ return TRUE;
+ return FALSE;
+ case 4:
+ break;
+ case 5:
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (!gMain.inBattle)
+ return FALSE;
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (gLinkPlayers[GetMultiplayerId()].id == battlerId)
+ return FALSE;
+ }
+ else
+ {
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ return FALSE;
+ }
+ }
+ else
+ {
+ if (!gMain.inBattle)
+ return FALSE;
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static u16 GetDeoxysStat(struct Pokemon *mon, s32 statId)
+{
+ s32 ivVal, evVal;
+ u16 statValue;
+ u8 nature;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_20 || GetMonData(mon, MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS)
+ {
+ return statValue = 0;
+ }
+ else
+ {
+ ivVal = GetMonData(mon, MON_DATA_HP_IV + statId, NULL);
+ evVal = GetMonData(mon, MON_DATA_HP_EV + statId, NULL);
+ statValue = ((sDeoxysBaseStats[statId] * 2 + ivVal + evVal / 4) * mon->level) / 100 + 5;
+ nature = GetNature(mon);
+ statValue = ModifyStatByNature(nature, statValue, (u8)statId);
+ }
+ return statValue;
+}
+
+void SetDeoxysStats(void)
+{
+ s32 i, value;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ struct Pokemon *mon = &gPlayerParty[i];
+
+ if (GetMonData(mon, MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS)
+ continue;
+ value = GetMonData(mon, MON_DATA_ATK, NULL);
+ SetMonData(mon, MON_DATA_ATK, &value);
+ value = GetMonData(mon, MON_DATA_DEF, NULL);
+ SetMonData(mon, MON_DATA_DEF, &value);
+ value = GetMonData(mon, MON_DATA_SPEED, NULL);
+ SetMonData(mon, MON_DATA_SPEED, &value);
+ value = GetMonData(mon, MON_DATA_SPATK, NULL);
+ SetMonData(mon, MON_DATA_SPATK, &value);
+ value = GetMonData(mon, MON_DATA_SPDEF, NULL);
+ SetMonData(mon, MON_DATA_SPDEF, &value);
+ }
+}
+
+u16 sub_80447AC(void)
+{
+ u8 linkId = GetMultiplayerId() ^ 1;
+ u32 arrId = gLinkPlayers[linkId].trainerId & 7;
+
+ arrId |= gLinkPlayers[linkId].gender << 3;
+ return FacilityClassToPicIndex(gLinkPlayerFacilityClasses[arrId]);
+}
+
+u16 sub_80447F0(void)
+{
+ u8 linkId = GetMultiplayerId() ^ 1;
+ u32 arrId = gLinkPlayers[linkId].trainerId & 7;
+
+ arrId |= gLinkPlayers[linkId].gender << 3;
+ return gFacilityClassToTrainerClass[gLinkPlayerFacilityClasses[arrId]];
+}
+
+void CreateObedientEnemyMon(void)
+{
+ s32 species = gSpecialVar_0x8004;
+ s32 level = gSpecialVar_0x8005;
+ s32 itemId = gSpecialVar_0x8006;
+
+ ZeroEnemyPartyMons();
+ CreateObedientMon(&gEnemyParty[0], species, level, 32, 0, 0, 0, 0);
+ if (itemId)
+ {
+ u8 heldItem[2];
+
+ heldItem[0] = itemId;
+ heldItem[1] = itemId >> 8;
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem);
+ }
+}
+
+void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality)
+{
+ u8 getFlagCaseId = (caseId == FLAG_SET_SEEN) ? FLAG_GET_SEEN : FLAG_GET_CAUGHT;
+
+ if (!GetSetPokedexFlag(nationalNum, getFlagCaseId))
+ {
+ GetSetPokedexFlag(nationalNum, caseId);
+ if (NationalPokedexNumToSpecies(nationalNum) == SPECIES_UNOWN)
+ gSaveBlock2Ptr->pokedex.unownPersonality = personality;
+ if (NationalPokedexNumToSpecies(nationalNum) == SPECIES_SPINDA)
+ gSaveBlock2Ptr->pokedex.spindaPersonality = personality;
+ }
+}
+
+bool8 CheckBattleTypeGhost(struct Pokemon *mon, u8 bank)
+{
+ u8 buffer[12];
+
+ if (gBattleTypeFlags & BATTLE_TYPE_GHOST && GetBattlerSide(bank))
+ {
+ GetMonData(mon, MON_DATA_NICKNAME, buffer);
+ StringGetEnd10(buffer);
+ if (!StringCompare(buffer, gUnknown_841D148))
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void OakSpeechNidoranFSetupTemplate(struct OakSpeechNidoranFStruct *structPtr, u8 battlePosition)
+{
+ u16 i = 0, j = 0;
+
+ if (battlePosition > 3)
+ {
+ for (i = 0; i < (s8)structPtr->spriteCount; ++i)
+ {
+ structPtr->templates[i] = gUnknown_825DEF0[i];
+ for (j = 0; j < structPtr->frameCount; ++j)
+ structPtr->frameImages[i * structPtr->frameCount + j].data = &structPtr->bufferPtrs[i][j * 0x800];
+ structPtr->templates[i].images = &structPtr->frameImages[i * structPtr->frameCount];
+ }
+ }
+ else
+ {
+ const struct SpriteTemplate *template = &gUnknown_825DEF0[battlePosition];
+
+ structPtr->templates[0] = *template;
+ for (j = 0; j < structPtr->frameCount; ++j)
+ structPtr->frameImages[j].data = &structPtr->bufferPtrs[0][j * 0x800];
+ structPtr->templates[0].images = structPtr->frameImages;
+ }
+}
+
+// not used
+static void OakSpeechNidoranFSetupTemplateDummy(struct OakSpeechNidoranFStruct *structPtr)
+{
+ u16 i, j;
+
+ for (i = 0; i < (s8)structPtr->spriteCount; ++i)
+ {
+ structPtr->templates[i] = sOakSpeechNidoranFDummyTemplate;
+ for (j = 0; j < structPtr->frameCount; ++j)
+ structPtr->frameImages[i * structPtr->spriteCount + j].data = &structPtr->bufferPtrs[i][j * 0x800];
+ structPtr->templates[i].images = &structPtr->frameImages[i * structPtr->spriteCount]; // should be frameCount logically
+ structPtr->templates[i].anims = gUnknown_82349BC;
+ structPtr->templates[i].paletteTag = i;
+ }
+}
+
+#ifdef NONMATCHING
+struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 enable)
+{
+ s32 size;
+ u8 i, flags = 0;
+
+ if (sOakSpeechNidoranResources != NULL)
+ {
+ if (sOakSpeechNidoranResources->enable == 0xA3)
+ return NULL;
+ memset(sOakSpeechNidoranResources, 0, sizeof(struct OakSpeechNidoranFStruct));
+ sOakSpeechNidoranResources = NULL;
+ }
+ sOakSpeechNidoranResources = AllocZeroed(0x18);
+ if (sOakSpeechNidoranResources == NULL)
+ return NULL;
+ switch (enable)
+ {
+ case TRUE:
+ if (battlePosition == 4)
+ {
+ sOakSpeechNidoranResources->spriteCount = 4;
+ sOakSpeechNidoranResources->battlePosition = 4;
+ }
+ else
+ {
+ if (battlePosition > 4)
+ battlePosition = 0;
+ sOakSpeechNidoranResources->spriteCount = 1;
+ sOakSpeechNidoranResources->battlePosition = 1;
+ }
+ sOakSpeechNidoranResources->frameCount = 4;
+ sOakSpeechNidoranResources->enable2 = TRUE;
+ break;
+ case FALSE:
+ default:
+ if (!battlePosition)
+ battlePosition = 1;
+ if (battlePosition > 8)
+ battlePosition = 8;
+ // The following two statements refused to cooperate.
+ sOakSpeechNidoranResources->spriteCount = battlePosition;
+ sOakSpeechNidoranResources->battlePosition = battlePosition;
+ sOakSpeechNidoranResources->frameCount = 4;
+ sOakSpeechNidoranResources->enable2 = FALSE;
+ break;
+ }
+ size = sOakSpeechNidoranResources->frameCount * 0x800;
+ sOakSpeechNidoranResources->sizePerSprite = size;
+ sOakSpeechNidoranResources->dataBuffer = AllocZeroed(sOakSpeechNidoranResources->spriteCount * size);
+ sOakSpeechNidoranResources->bufferPtrs = AllocZeroed(sOakSpeechNidoranResources->spriteCount * 0x20);
+ if (sOakSpeechNidoranResources->dataBuffer == NULL || sOakSpeechNidoranResources->bufferPtrs == NULL)
+ {
+ flags |= 1;
+ }
+ else
+ {
+ for (i = 0; i < (s8)sOakSpeechNidoranResources->spriteCount; ++i)
+ sOakSpeechNidoranResources->bufferPtrs[i] = &sOakSpeechNidoranResources->dataBuffer[sOakSpeechNidoranResources->sizePerSprite * i];
+ }
+ sOakSpeechNidoranResources->templates = AllocZeroed(sizeof(struct SpriteTemplate) * sOakSpeechNidoranResources->spriteCount);
+ sOakSpeechNidoranResources->frameImages = AllocZeroed(sOakSpeechNidoranResources->spriteCount * sizeof(struct SpriteFrameImage) * sOakSpeechNidoranResources->frameCount);
+ if (sOakSpeechNidoranResources->templates == NULL || sOakSpeechNidoranResources->frameImages == NULL)
+ {
+ flags |= 2;
+ }
+ else
+ {
+ for (i = 0; i < sOakSpeechNidoranResources->frameCount * sOakSpeechNidoranResources->spriteCount; ++i)
+ sOakSpeechNidoranResources->frameImages[i].size = 0x800;
+ switch (sOakSpeechNidoranResources->enable2)
+ {
+ case TRUE:
+ OakSpeechNidoranFSetupTemplate(sOakSpeechNidoranResources, battlePosition);
+ break;
+ case FALSE:
+ default:
+ OakSpeechNidoranFSetupTemplateDummy(sOakSpeechNidoranResources);
+ break;
+ }
+ }
+ if (flags & 2)
+ {
+ if (sOakSpeechNidoranResources->frameImages != NULL)
+ FREE_AND_SET_NULL(sOakSpeechNidoranResources->frameImages);
+ if (sOakSpeechNidoranResources->templates != NULL)
+ FREE_AND_SET_NULL(sOakSpeechNidoranResources->templates);
+ }
+ if (flags & 1)
+ {
+ if (sOakSpeechNidoranResources->bufferPtrs != NULL)
+ FREE_AND_SET_NULL(sOakSpeechNidoranResources->bufferPtrs);
+ if (sOakSpeechNidoranResources->dataBuffer != NULL)
+ FREE_AND_SET_NULL(sOakSpeechNidoranResources->dataBuffer);
+ }
+ if (flags)
+ {
+ memset(sOakSpeechNidoranResources, 0, sizeof(struct OakSpeechNidoranFStruct));
+ FREE_AND_SET_NULL(sOakSpeechNidoranResources);
+ }
+ else
+ {
+ sOakSpeechNidoranResources->enable = 0xA3;
+ }
+ return sOakSpeechNidoranResources;
+}
+#else
+NAKED
+struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 enable)
+{
+ asm_unified("\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r5, r1, 24\n\
+ movs r0, 0\n\
+ mov r8, r0\n\
+ ldr r4, _08044B34 @ =sOakSpeechNidoranResources\n\
+ ldr r1, [r4]\n\
+ cmp r1, 0\n\
+ beq _08044B1E\n\
+ ldrb r0, [r1, 0x2]\n\
+ cmp r0, 0xA3\n\
+ beq _08044B2E\n\
+ adds r0, r1, 0\n\
+ movs r1, 0\n\
+ movs r2, 0x18\n\
+ bl memset\n\
+ mov r1, r8\n\
+ str r1, [r4]\n\
+ _08044B1E:\n\
+ ldr r4, _08044B34 @ =sOakSpeechNidoranResources\n\
+ movs r0, 0x18\n\
+ bl AllocZeroed\n\
+ adds r2, r0, 0\n\
+ str r2, [r4]\n\
+ cmp r2, 0\n\
+ bne _08044B38\n\
+ _08044B2E:\n\
+ movs r0, 0\n\
+ b _08044D70\n\
+ .align 2, 0\n\
+ _08044B34: .4byte sOakSpeechNidoranResources\n\
+ _08044B38:\n\
+ cmp r5, 0\n\
+ beq _08044B94\n\
+ cmp r5, 0x1\n\
+ bne _08044B94\n\
+ cmp r6, 0x4\n\
+ bne _08044B5E\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x10\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r2, [r4]\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ movs r1, 0x40\n\
+ b _08044B7C\n\
+ _08044B5E:\n\
+ cmp r6, 0x4\n\
+ bls _08044B64\n\
+ movs r6, 0\n\
+ _08044B64:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x10\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r2, [r4]\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ movs r1, 0x10\n\
+ _08044B7C:\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r2, _08044B90 @ =sOakSpeechNidoranResources\n\
+ ldr r1, [r2]\n\
+ movs r0, 0x4\n\
+ strb r0, [r1, 0x1]\n\
+ ldr r1, [r2]\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x3]\n\
+ b _08044BD0\n\
+ .align 2, 0\n\
+ _08044B90: .4byte sOakSpeechNidoranResources\n\
+ _08044B94:\n\
+ cmp r6, 0\n\
+ bne _08044B9A\n\
+ movs r6, 0x1\n\
+ _08044B9A:\n\
+ cmp r6, 0x8\n\
+ bls _08044BA0\n\
+ movs r6, 0x8\n\
+ _08044BA0:\n\
+ ldr r4, _08044C10 @ =sOakSpeechNidoranResources\n\
+ ldr r3, [r4]\n\
+ movs r0, 0xF\n\
+ adds r1, r6, 0\n\
+ ands r1, r0\n\
+ ldrb r2, [r3]\n\
+ movs r0, 0x10\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ ldr r2, [r4]\n\
+ lsls r3, r6, 4\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ orrs r0, r3\n\
+ strb r0, [r2]\n\
+ ldr r1, [r4]\n\
+ movs r2, 0\n\
+ movs r0, 0x4\n\
+ strb r0, [r1, 0x1]\n\
+ ldr r0, [r4]\n\
+ strb r2, [r0, 0x3]\n\
+ _08044BD0:\n\
+ ldr r5, _08044C10 @ =sOakSpeechNidoranResources\n\
+ ldr r0, [r5]\n\
+ ldrb r1, [r0, 0x1]\n\
+ lsls r1, 11\n\
+ str r1, [r0, 0x4]\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 28\n\
+ lsrs r0, 28\n\
+ muls r0, r1\n\
+ bl AllocZeroed\n\
+ ldr r1, [r5]\n\
+ str r0, [r1, 0x8]\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 28\n\
+ lsrs r0, 23\n\
+ bl AllocZeroed\n\
+ adds r2, r0, 0\n\
+ ldr r1, [r5]\n\
+ str r2, [r1, 0xC]\n\
+ ldr r0, [r1, 0x8]\n\
+ cmp r0, 0\n\
+ beq _08044C04\n\
+ cmp r2, 0\n\
+ bne _08044C14\n\
+ _08044C04:\n\
+ movs r0, 0x1\n\
+ mov r1, r8\n\
+ orrs r1, r0\n\
+ mov r8, r1\n\
+ b _08044C44\n\
+ .align 2, 0\n\
+ _08044C10: .4byte sOakSpeechNidoranResources\n\
+ _08044C14:\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 28\n\
+ movs r4, 0\n\
+ adds r3, r5, 0\n\
+ cmp r0, 0\n\
+ beq _08044C44\n\
+ _08044C20:\n\
+ ldr r3, [r5]\n\
+ ldr r0, [r3, 0xC]\n\
+ lsls r1, r4, 2\n\
+ adds r1, r0\n\
+ ldr r0, [r3, 0x4]\n\
+ adds r2, r0, 0\n\
+ muls r2, r4\n\
+ ldr r0, [r3, 0x8]\n\
+ adds r0, r2\n\
+ str r0, [r1]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 28\n\
+ lsrs r0, 28\n\
+ cmp r4, r0\n\
+ blt _08044C20\n\
+ _08044C44:\n\
+ ldr r5, _08044C8C @ =sOakSpeechNidoranResources\n\
+ ldr r0, [r5]\n\
+ ldrb r1, [r0]\n\
+ lsls r1, 28\n\
+ lsrs r1, 28\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ bl AllocZeroed\n\
+ ldr r2, [r5]\n\
+ str r0, [r2, 0x10]\n\
+ ldrb r1, [r2]\n\
+ lsls r1, 28\n\
+ lsrs r1, 28\n\
+ ldrb r0, [r2, 0x1]\n\
+ lsls r0, 3\n\
+ muls r0, r1\n\
+ bl AllocZeroed\n\
+ adds r2, r0, 0\n\
+ ldr r1, [r5]\n\
+ str r2, [r1, 0x14]\n\
+ ldr r0, [r1, 0x10]\n\
+ cmp r0, 0\n\
+ beq _08044C7C\n\
+ cmp r2, 0\n\
+ bne _08044C90\n\
+ _08044C7C:\n\
+ movs r0, 0x2\n\
+ mov r1, r8\n\
+ orrs r1, r0\n\
+ lsls r0, r1, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ b _08044CE2\n\
+ .align 2, 0\n\
+ _08044C8C: .4byte sOakSpeechNidoranResources\n\
+ _08044C90:\n\
+ movs r4, 0\n\
+ ldrb r0, [r1, 0x1]\n\
+ ldrb r1, [r1]\n\
+ lsls r1, 28\n\
+ lsrs r1, 28\n\
+ muls r0, r1\n\
+ adds r3, r5, 0\n\
+ cmp r4, r0\n\
+ bge _08044CC6\n\
+ adds r7, r3, 0\n\
+ movs r5, 0x80\n\
+ lsls r5, 4\n\
+ _08044CA8:\n\
+ ldr r2, [r7]\n\
+ ldr r1, [r2, 0x14]\n\
+ lsls r0, r4, 3\n\
+ adds r0, r1\n\
+ strh r5, [r0, 0x4]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 28\n\
+ lsrs r0, 28\n\
+ muls r0, r1\n\
+ cmp r4, r0\n\
+ blt _08044CA8\n\
+ _08044CC6:\n\
+ ldr r0, [r3]\n\
+ ldrb r4, [r0, 0x3]\n\
+ cmp r4, 0\n\
+ beq _08044CDA\n\
+ cmp r4, 0x1\n\
+ bne _08044CDA\n\
+ adds r1, r6, 0\n\
+ bl OakSpeechNidoranFSetupTemplate\n\
+ b _08044CE2\n\
+ _08044CDA:\n\
+ ldr r0, _08044D60 @ =sOakSpeechNidoranResources\n\
+ ldr r0, [r0]\n\
+ bl OakSpeechNidoranFSetupTemplateDummy\n\
+ _08044CE2:\n\
+ movs r0, 0x2\n\
+ mov r1, r8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08044D12\n\
+ ldr r4, _08044D60 @ =sOakSpeechNidoranResources\n\
+ ldr r0, [r4]\n\
+ ldr r0, [r0, 0x14]\n\
+ cmp r0, 0\n\
+ beq _08044D00\n\
+ bl Free\n\
+ ldr r1, [r4]\n\
+ movs r0, 0\n\
+ str r0, [r1, 0x14]\n\
+ _08044D00:\n\
+ ldr r0, [r4]\n\
+ ldr r0, [r0, 0x10]\n\
+ cmp r0, 0\n\
+ beq _08044D12\n\
+ bl Free\n\
+ ldr r1, [r4]\n\
+ movs r0, 0\n\
+ str r0, [r1, 0x10]\n\
+ _08044D12:\n\
+ movs r0, 0x1\n\
+ mov r1, r8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08044D42\n\
+ ldr r4, _08044D60 @ =sOakSpeechNidoranResources\n\
+ ldr r0, [r4]\n\
+ ldr r0, [r0, 0xC]\n\
+ cmp r0, 0\n\
+ beq _08044D30\n\
+ bl Free\n\
+ ldr r1, [r4]\n\
+ movs r0, 0\n\
+ str r0, [r1, 0xC]\n\
+ _08044D30:\n\
+ ldr r0, [r4]\n\
+ ldr r0, [r0, 0x8]\n\
+ cmp r0, 0\n\
+ beq _08044D42\n\
+ bl Free\n\
+ ldr r1, [r4]\n\
+ movs r0, 0\n\
+ str r0, [r1, 0x8]\n\
+ _08044D42:\n\
+ mov r0, r8\n\
+ cmp r0, 0\n\
+ beq _08044D64\n\
+ ldr r4, _08044D60 @ =sOakSpeechNidoranResources\n\
+ ldr r0, [r4]\n\
+ movs r1, 0\n\
+ movs r2, 0x18\n\
+ bl memset\n\
+ ldr r0, [r4]\n\
+ bl Free\n\
+ movs r0, 0\n\
+ str r0, [r4]\n\
+ b _08044D6C\n\
+ .align 2, 0\n\
+ _08044D60: .4byte sOakSpeechNidoranResources\n\
+ _08044D64:\n\
+ ldr r0, _08044D7C @ =sOakSpeechNidoranResources\n\
+ ldr r1, [r0]\n\
+ movs r0, 0xA3\n\
+ strb r0, [r1, 0x2]\n\
+ _08044D6C:\n\
+ ldr r0, _08044D7C @ =sOakSpeechNidoranResources\n\
+ ldr r0, [r0]\n\
+ _08044D70:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+ _08044D7C: .4byte sOakSpeechNidoranResources\n\
+ ");
+}
+#endif
+
+void OakSpeechNidoranFFreeResources(void)
+{
+ if (sOakSpeechNidoranResources != NULL)
+ {
+ if (sOakSpeechNidoranResources->enable != 0xA3)
+ {
+ memset(sOakSpeechNidoranResources, 0, sizeof(struct OakSpeechNidoranFStruct));
+ sOakSpeechNidoranResources = NULL;
+ }
+ else
+ {
+ if (sOakSpeechNidoranResources->frameImages != NULL)
+ FREE_AND_SET_NULL(sOakSpeechNidoranResources->frameImages);
+ if (sOakSpeechNidoranResources->templates != NULL)
+ FREE_AND_SET_NULL(sOakSpeechNidoranResources->templates);
+ if (sOakSpeechNidoranResources->bufferPtrs != NULL)
+ FREE_AND_SET_NULL(sOakSpeechNidoranResources->bufferPtrs);
+ if (sOakSpeechNidoranResources->dataBuffer != NULL)
+ FREE_AND_SET_NULL(sOakSpeechNidoranResources->dataBuffer);
+ memset(sOakSpeechNidoranResources, 0, sizeof(struct OakSpeechNidoranFStruct));
+ FREE_AND_SET_NULL(sOakSpeechNidoranResources);
+ }
+
+ }
+}
+
+void *OakSpeechNidoranFGetBuffer(u8 bufferId)
+{
+ if (sOakSpeechNidoranResources->enable != 0xA3)
+ {
+ return NULL;
+ }
+ else
+ {
+ if (bufferId >= (s8)sOakSpeechNidoranResources->spriteCount)
+ bufferId = 0;
+ return sOakSpeechNidoranResources->bufferPtrs[bufferId];
+ }
+}
diff --git a/src/quest_log.c b/src/quest_log.c
index b52de727e..0d1cb7984 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -11,7 +11,7 @@
#include "menu_helpers.h"
#include "window.h"
#include "text_window.h"
-#include "unk_text_util.h"
+#include "dynamic_placeholder_text_util.h"
#include "event_data.h"
#include "event_scripts.h"
#include "string_util.h"
@@ -37,6 +37,7 @@
#include "link.h"
#include "quest_log_8150454.h"
#include "quest_log.h"
+#include "new_menu_helpers.h"
u8 gUnknown_3005E88;
@@ -859,7 +860,7 @@ void sub_8110F14(u8 taskId)
}
else
{
- SetMainCallback2(sub_8056938);
+ SetMainCallback2(CB2_ContinueSavedGame);
DestroyTask(taskId);
}
}
@@ -922,7 +923,7 @@ void sub_8111070(u8 a0)
StringAppend(gStringVar4, gStringVar1);
}
- AddTextPrinterParametrized2(gUnknown_203ADFE[0], 2, 2, 2, 1, 2, &gUnknown_8456634, 0, gStringVar4);
+ AddTextPrinterParameterized4(gUnknown_203ADFE[0], 2, 2, 2, 1, 2, &gUnknown_8456634, 0, gStringVar4);
PutWindowTilemap(gUnknown_203ADFE[0]);
PutWindowTilemap(gUnknown_203ADFE[1]);
CopyWindowToVram(gUnknown_203ADFE[0], 2);
@@ -985,8 +986,8 @@ void sub_8111368(void)
{
gUnknown_203ADFA = 2;
sub_806E6FC();
- sub_809A2DC();
- sub_809A2A4();
+ ClearItemSlotsInAllBagPockets();
+ ClearPCItemSlots();
if (sub_8110AC8() == 1)
{
sub_8111274(gUnknown_203ADF8, 0);
@@ -996,7 +997,7 @@ void sub_8111368(void)
else
{
sub_8111274(gUnknown_203ADF8, 1);
- warp_in();
+ WarpIntoMap();
gFieldCallback2 = sub_8111000;
SetMainCallback2(sub_805726C);
}
@@ -1417,8 +1418,8 @@ void sub_8111D10(void)
PutWindowTilemap(gUnknown_203ADFE[2]);
sub_8111D90(gUnknown_203ADFE[2]);
- AddTextPrinterParametrized2(gUnknown_203ADFE[2], 2, 2, gUnknown_8456698[count], 1, 0, &gUnknown_8456634, 0, gStringVar4);
- schedule_bg_copy_tilemap_to_vram(0);
+ AddTextPrinterParameterized4(gUnknown_203ADFE[2], 2, 2, gUnknown_8456698[count], 1, 0, &gUnknown_8456634, 0, gStringVar4);
+ ScheduleBgCopyTilemapToVram(0);
}
void sub_8111D90(u8 a0)
@@ -1567,7 +1568,7 @@ void sub_81120AC(u8 taskId)
{
case 0:
gUnknown_2031DD8 = 0;
- sub_8055DC4();
+ Overworld_PlaySpecialMapMusic();
sub_811229C();
FillWindowPixelRect(gUnknown_203ADFE[0], 0xF, 0, 0, gUnknown_845661C[0].width * 8, gUnknown_845661C[0].height * 8);
data[0]++;
@@ -1691,7 +1692,7 @@ void sub_81123BC(void)
void sub_8112450(void)
{
- if (sub_80BF708() != 1)
+ if (MenuHelpers_LinkSomething() != 1)
{
sub_8112364();
sub_81123BC();
@@ -1705,7 +1706,7 @@ void sub_811246C(struct Sprite *sprite)
{
if (gUnknown_203AF9A[0][0] != 0xFF)
{
- sub_8063CA4(mapObject, gUnknown_203AF9A[0][0]);
+ FieldObjectSetHeldMovement(mapObject, gUnknown_203AF9A[0][0]);
gUnknown_203AF9A[0][0] = 0xFF;
}
if (gUnknown_203AF9A[0][1] != 0xFF)
@@ -1719,7 +1720,7 @@ void sub_811246C(struct Sprite *sprite)
{
if (gUnknown_203AF9A[mapObject->localId][0] != 0xFF)
{
- sub_8063CA4(mapObject, gUnknown_203AF9A[mapObject->localId][0]);
+ FieldObjectSetHeldMovement(mapObject, gUnknown_203AF9A[mapObject->localId][0]);
gUnknown_203AF9A[mapObject->localId][0] = 0xFF;
}
sub_8063E28(mapObject, sprite);
@@ -1911,7 +1912,7 @@ void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2)
gUnknown_3005E94[gUnknown_203AF98].unk_4 = 0;
gUnknown_3005E94[gUnknown_203AF98].unk_6 = 0;
gUnknown_3005E94[gUnknown_203AF98].unk_0 = 0;
- switch (player_get_direction_lower_nybble())
+ switch (GetPlayerFacingDirection())
{
case 0:
case 1:
@@ -2297,7 +2298,7 @@ const struct WindowTemplate gUnknown_8456928 = {
0x00, 0, 15, 30, 5, 15, 0x008F
};
-void sub_8112EA8(void)
+void MapNamePopupWindowIdSetDummy(void)
{
gUnknown_203B020 = 0xFF;
}
@@ -2468,15 +2469,15 @@ const struct TextColor gUnknown_8456930 = {
void sub_8112FE4(const u8 * a0)
{
- AddTextPrinterParametrized2(gUnknown_203B020, 0x02, 2, 5, 1, 1, &gUnknown_8456930, -1, a0);
+ AddTextPrinterParameterized4(gUnknown_203B020, 0x02, 2, 5, 1, 1, &gUnknown_8456930, -1, a0);
}
-void sub_8113018(const u8 * a0, u8 a1)
+void sub_8113018(const u8 * text, u8 mode)
{
sub_8112FD0();
- sub_8112FE4(a0);
- if (a1)
- CopyWindowToVram(gUnknown_203B020, a1);
+ sub_8112FE4(text);
+ if (mode)
+ CopyWindowToVram(gUnknown_203B020, mode);
}
void sub_8113044(void)
@@ -2746,7 +2747,7 @@ void sub_81134CC(struct Var4038Struct * a0)
if (VarGet(VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB) == 2)
{
sub_8113078(a0);
- if (gUnknown_2023E8A == 1)
+ if (gBattleOutcome == B_OUTCOME_WON)
sub_8113194(a0);
else
sub_81131FC(a0);
@@ -2842,7 +2843,7 @@ void sub_8113550(u16 a0, const u16 * a1)
if (sub_81138A0(a0, a1) == TRUE)
return;
- if (sub_80BF708() == TRUE)
+ if (MenuHelpers_LinkSomething() == TRUE)
return;
// NONMATCHING: branch logic here
@@ -2954,7 +2955,7 @@ void sub_8113550(u16 a0, const u16 * a1)
"\tbne _081135AA\n"
"\tb ._return\n"
"_081135AA:\n"
- "\tbl sub_80BF708\n"
+ "\tbl MenuHelpers_LinkSomething\n"
"\tlsls r0, 24\n"
"\tlsrs r0, 24\n"
"\tcmp r0, 0x1\n"
@@ -3656,9 +3657,9 @@ void QuestLog_AutoGetSpeciesName(u16 a0, u8 * a1, u8 a2)
else
{
if (a0 != SPECIES_EGG)
- UnkTextUtil_SetPtrI(a2, gSpeciesNames[a0]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(a2, gSpeciesNames[a0]);
else
- UnkTextUtil_SetPtrI(a2, gText_EggNickname);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(a2, gText_EggNickname);
}
}
@@ -3708,7 +3709,7 @@ const u16 * sub_8113FBC(const u16 * a0)
case POCKET_ITEMS:
case POCKET_POKE_BALLS:
case POCKET_BERRY_POUCH:
- StringCopy(gStringVar1, ItemId_GetItem(r5[0])->name);
+ StringCopy(gStringVar1, ItemId_GetName(r5[0]));
if (r5[0] == ITEM_ESCAPE_ROPE)
{
sub_80C4DF8(gStringVar2, r5[2]);
@@ -3725,7 +3726,7 @@ const u16 * sub_8113FBC(const u16 * a0)
}
break;
case POCKET_KEY_ITEMS:
- StringCopy(gStringVar1, ItemId_GetItem(r5[0])->name);
+ StringCopy(gStringVar1, ItemId_GetName(r5[0]));
StringExpandPlaceholders(gStringVar4, gUnknown_841A220);
break;
case POCKET_TM_CASE:
@@ -3771,7 +3772,7 @@ const u16 * sub_8114188(const u16 * a0)
{
const u16 * r4 = sub_8113E88(5, a0);
QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0);
- StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name);
+ StringCopy(gStringVar2, ItemId_GetName(r4[0]));
StringExpandPlaceholders(gStringVar4, gUnknown_841AB74);
r4 += 2;
return r4;
@@ -3787,7 +3788,7 @@ const u16 * sub_81141E4(const u16 * a0)
const u16 * r4 = sub_8113E88(6, a0);
QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0);
- StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name);
+ StringCopy(gStringVar2, ItemId_GetName(r4[0]));
StringExpandPlaceholders(gStringVar4, gUnknown_841AB8E);
r4 += 2;
return r4;
@@ -3803,7 +3804,7 @@ const u16 * sub_8114240(const u16 * a0)
const u16 * r4 = sub_8113E88(7, a0);
QuestLog_AutoGetSpeciesName(r4[1], gStringVar2, 0);
- StringCopy(gStringVar1, ItemId_GetItem(r4[0])->name);
+ StringCopy(gStringVar1, ItemId_GetName(r4[0]));
StringExpandPlaceholders(gStringVar4, gUnknown_841A6A5);
r4 += 2;
return r4;
@@ -3819,7 +3820,7 @@ const u16 * sub_811429C(const u16 * a0)
const u16 * r4 = sub_8113E88(8, a0);
QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0);
- StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name);
+ StringCopy(gStringVar2, ItemId_GetName(r4[0]));
StringExpandPlaceholders(gStringVar4, gUnknown_841A1CD);
r4 += 2;
return r4;
@@ -3846,8 +3847,8 @@ const u16 * sub_8114324(const u16 * a0)
{
const u16 * r4 = sub_8113E88(9, a0);
QuestLog_AutoGetSpeciesName(r4[2], gStringVar1, 0);
- StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name);
- StringCopy(gStringVar3, ItemId_GetItem(r4[1])->name);
+ StringCopy(gStringVar2, ItemId_GetName(r4[0]));
+ StringCopy(gStringVar3, ItemId_GetName(r4[1]));
StringExpandPlaceholders(gStringVar4, gUnknown_841A193);
r4 += 3;
return r4;
@@ -3862,8 +3863,8 @@ const u16 * sub_8114394(const u16 * a0)
{
const u16 * r4 = sub_8113E88(10, a0);
QuestLog_AutoGetSpeciesName(r4[2], gStringVar2, 0);
- StringCopy(gStringVar3, ItemId_GetItem(r4[0])->name);
- StringCopy(gStringVar1, ItemId_GetItem(r4[1])->name);
+ StringCopy(gStringVar3, ItemId_GetName(r4[0]));
+ StringCopy(gStringVar1, ItemId_GetName(r4[1]));
StringExpandPlaceholders(gStringVar4, gUnknown_841A6E1);
r4 += 3;
return r4;
@@ -3949,14 +3950,14 @@ u16 * sub_81144EC(u16 * a0, const u16 * a1)
const u16 * sub_8114518(const u16 * a0)
{
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
memset(gStringVar1, EOS, 8);
memcpy(gStringVar1, (const u8 *)a0 + 5, 7);
sub_8115834(gStringVar1);
- UnkTextUtil_SetPtrI(0, gStringVar1);
- UnkTextUtil_SetPtrI(1, gUnknown_8456AE4[((const u8 *)a0)[4]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A422);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_8456AE4[((const u8 *)a0)[4]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A422);
a0 += 6;
return a0;
}
@@ -3973,14 +3974,14 @@ u16 * sub_8114578(u16 * a0, const u16 * a1)
const u16 * sub_81145A4(const u16 * a0)
{
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
memset(gStringVar1, EOS, 8);
memcpy(gStringVar1, (const u8 *)a0 + 5, 7);
sub_8115834(gStringVar1);
- UnkTextUtil_SetPtrI(0, gStringVar1);
- UnkTextUtil_SetPtrI(1, gUnknown_8456AE4[((const u8 *)a0)[4]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A477);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_8456AE4[((const u8 *)a0)[4]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A477);
a0 += 6;
return a0;
}
@@ -3999,7 +4000,7 @@ u16 * sub_8114604(u16 * a0, const u16 * a1)
const u16 * sub_811464C(const u16 * a0)
{
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
memset(gStringVar1, EOS, 8);
memset(gStringVar2, EOS, 8);
@@ -4010,12 +4011,12 @@ const u16 * sub_811464C(const u16 * a0)
sub_8115834(gStringVar1);
sub_8115834(gStringVar2);
sub_8115834(gStringVar3);
- UnkTextUtil_SetPtrI(0, gSaveBlock2Ptr->playerName);
- UnkTextUtil_SetPtrI(1, gStringVar1);
- UnkTextUtil_SetPtrI(2, gStringVar2);
- UnkTextUtil_SetPtrI(3, gStringVar3);
- UnkTextUtil_SetPtrI(4, gUnknown_8456AE4[((const u8 *)a0)[4]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A4C6);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar2);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, gStringVar3);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, gUnknown_8456AE4[((const u8 *)a0)[4]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A4C6);
a0 += 13;
return a0;
}
@@ -4111,12 +4112,12 @@ const u16 * sub_81148BC(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(20, a0);
boxIdxs = (const u8 *)a0 + 4;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0]));
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
- UnkTextUtil_SetPtrI(2, GetBoxNamePtr(boxIdxs[1]));
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, GetBoxNamePtr(boxIdxs[1]));
QuestLog_AutoGetSpeciesName(a0[1], NULL, 3);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A566);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A566);
return a0 + 3;
}
@@ -4136,11 +4137,11 @@ const u16 * sub_8114944(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(21, a0);
boxIdxs = (const u8 *)a0 + 4;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0]));
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
QuestLog_AutoGetSpeciesName(a0[1], NULL, 2);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A5D9);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A5D9);
return a0 + 3;
}
@@ -4172,11 +4173,11 @@ const u16 * sub_81149D0(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(22, a0);
boxIdxs = (const u8 *)a0 + 4;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0]));
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
QuestLog_AutoGetSpeciesName(a0[1], NULL, 2);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A60A);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A60A);
return a0 + 3;
}
@@ -4199,11 +4200,11 @@ const u16 * sub_8114A4C(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(23, a0);
boxIdxs = (const u8 *)a0 + 2;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0]));
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
- UnkTextUtil_SetPtrI(2, GetBoxNamePtr(boxIdxs[1]));
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A59C);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, GetBoxNamePtr(boxIdxs[1]));
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A59C);
return (const u16 *)boxIdxs + 1;
}
@@ -4223,10 +4224,10 @@ const u16 * sub_8114AC8(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(24, a0);
boxIdxs = (const u8 *)a0 + 2;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0]));
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A5FA);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A5FA);
return (const u16 *)boxIdxs + 1;
}
@@ -4246,10 +4247,10 @@ const u16 * sub_8114B34(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(25, a0);
boxIdxs = (const u8 *)a0 + 2;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0]));
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A632);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A632);
return (const u16 *)boxIdxs + 1;
}
@@ -4269,10 +4270,10 @@ const u16 * sub_8114BA0(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(26, a0);
boxIdxs = (const u8 *)a0 + 2;
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
QuestLog_AutoGetSpeciesName(a0[0], NULL, 0);
- UnkTextUtil_SetPtrI(1, GetBoxNamePtr(boxIdxs[0]));
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A64F);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A64F);
return (const u16 *)boxIdxs + 1;
}
@@ -4290,13 +4291,13 @@ u16 * sub_8114BE4(u16 * a0, const u16 * a1)
const u16 * sub_8114C0C(const u16 * a0)
{
const u16 *r4 = sub_8113E88(27, a0);
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(*((const u8 *)r4 + 0)));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(*((const u8 *)r4 + 0)));
if (*((const u8 *)r4 + 0) == *((const u8 *)r4 + 1))
- UnkTextUtil_SetPtrI(1, gUnknown_841A694);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_841A694);
else
- UnkTextUtil_SetPtrI(1, GetBoxNamePtr(*((const u8 *)r4 + 1)));
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A66E);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, GetBoxNamePtr(*((const u8 *)r4 + 1)));
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A66E);
return r4 + 1;
}
@@ -4358,14 +4359,14 @@ const u16 * sub_8114D68(const u16 * a0)
const u8 * r6;
a0 = sub_8113E88(30, a0);
r6 = (const u8 *)a0 + 6;
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
sub_80C4DF8(gStringVar1, r6[0]);
- UnkTextUtil_SetPtrI(0, gStringVar1);
- UnkTextUtil_SetPtrI(1, gTrainers[a0[2]].trainerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gTrainers[a0[2]].trainerName);
QuestLog_AutoGetSpeciesName(a0[0], 0, 2);
QuestLog_AutoGetSpeciesName(a0[1], 0, 3);
- UnkTextUtil_SetPtrI(4, gUnknown_8456ACC[r6[1]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AF0C);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, gUnknown_8456ACC[r6[1]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AF0C);
return a0 + 4;
}
@@ -4399,43 +4400,43 @@ const u16 * sub_8114E68(const u16 * a0)
return NULL;
r6 = (const u8 *)a0 + 8;
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
sub_80C4DF8(gStringVar1, r6[2]);
- UnkTextUtil_SetPtrI(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
QuestLog_AutoGetSpeciesName(a0[2], NULL, 1);
ConvertIntToDecimalStringN(gStringVar2, r6[0], STR_CONV_MODE_LEFT_ALIGN, 3);
- UnkTextUtil_SetPtrI(2, gStringVar2);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar2);
QuestLog_AutoGetSpeciesName(a0[3], NULL, 3);
ConvertIntToDecimalStringN(gStringVar3, r6[1], STR_CONV_MODE_LEFT_ALIGN, 3);
- UnkTextUtil_SetPtrI(4, gStringVar3);
- UnkTextUtil_SetPtrI(5, gSaveBlock2Ptr->playerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, gStringVar3);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gSaveBlock2Ptr->playerName);
if (r6[0] == 0)
{
if (r6[1] == 1)
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AA01);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AA01);
else
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AA2B);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AA2B);
}
else if (r6[1] == 0)
{
if (r6[0] == 1)
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A9A9);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A9A9);
else
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A9D4);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A9D4);
}
else if (r6[0] == 1)
{
if (r6[1] == 1)
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AA76);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AA76);
else
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AAAA);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AAAA);
}
else
{
if (r6[1] == 1)
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AAEC);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AAEC);
else
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AB29);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AB29);
}
return (const u16 *)(r6 + 4);
}
@@ -4464,12 +4465,12 @@ const u16 * sub_811500C(const u16 * a0)
const u8 * r5;
a0 = sub_8113E88(32, a0);
r5 = (const u8 *)a0 + 6;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, gTrainers[a0[2]].trainerName);
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gTrainers[a0[2]].trainerName);
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
QuestLog_AutoGetSpeciesName(a0[1], NULL, 2);
- UnkTextUtil_SetPtrI(3, gUnknown_8456ACC[r5[1]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AF3E);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, gUnknown_8456ACC[r5[1]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AF3E);
return a0 + 4;
}
@@ -4493,25 +4494,25 @@ const u16 * sub_81150CC(const u16 * a0)
return NULL;
r5 = (const u8 *)a0 + 8;
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
switch (gUnknown_203B044.unk_2)
{
case 0:
- UnkTextUtil_SetPtrI(0, gSaveBlock2Ptr->playerName);
- UnkTextUtil_SetPtrI(1, gSaveBlock1Ptr->rivalName);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A2E1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gSaveBlock1Ptr->rivalName);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A2E1);
break;
case 1:
- UnkTextUtil_SetPtrI(0, gSaveBlock1Ptr->rivalName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock1Ptr->rivalName);
QuestLog_AutoGetSpeciesName(a0[2], NULL, 1);
- UnkTextUtil_SetPtrI(2, gSaveBlock2Ptr->playerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gSaveBlock2Ptr->playerName);
QuestLog_AutoGetSpeciesName(a0[3], NULL, 3);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A312);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A312);
break;
case 2:
- UnkTextUtil_SetPtrI(0, gUnknown_8456AD8[r5[0]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A349);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_8456AD8[r5[0]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A349);
break;
}
return (const u16 *)(r5 + 2);
@@ -4527,21 +4528,21 @@ const u16 * sub_81151DC(const u16 * a0)
{
const u16 * r5 = sub_8113E88(34, a0);
const u8 * r6 = (const u8 *)r5 + 6;
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
sub_80C4DF8(gStringVar1, r6[0]);
- UnkTextUtil_SetPtrI(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
if (
gTrainers[r5[2]].trainerClass == 0x51
|| gTrainers[r5[2]].trainerClass == 0x59
|| gTrainers[r5[2]].trainerClass == 0x5A
)
- UnkTextUtil_SetPtrI(1, GetExpandedPlaceholder(6));
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, GetExpandedPlaceholder(6));
else
- UnkTextUtil_SetPtrI(1, gTrainers[r5[2]].trainerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gTrainers[r5[2]].trainerName);
QuestLog_AutoGetSpeciesName(r5[0], NULL, 2);
QuestLog_AutoGetSpeciesName(r5[1], NULL, 3);
- UnkTextUtil_SetPtrI(4, gUnknown_8456ACC[r6[1]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AF6D);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, gUnknown_8456ACC[r6[1]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AF6D);
return (const u16 *)(r6 + 2);
}
@@ -4814,17 +4815,17 @@ const u16 * sub_8115518(const u16 * a0)
const u16 * r4 = sub_8113E88(37, a0);
const u8 * r7 = (const u8 *)r4 + 8;
u32 r6 = (r4[2] << 16) + r4[3];
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
sub_80C4DF8(gStringVar1, r7[0]);
- UnkTextUtil_SetPtrI(0, gStringVar1);
- UnkTextUtil_SetPtrI(1, ItemId_GetItem(r4[0])->name);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, ItemId_GetName(r4[0]));
if (r4[1] < 2)
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A7DD);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A7DD);
else
{
ConvertIntToDecimalStringN(gStringVar2, r6, STR_CONV_MODE_LEFT_ALIGN, 6);
- UnkTextUtil_SetPtrI(2, gStringVar2);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A810);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar2);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A810);
}
return (const u16 *)(r7 + 2);
}
@@ -4847,30 +4848,30 @@ const u16 * sub_81155E0(const u16 * a0) {
const u16 *r5 = sub_8113E88(38, a0);
const u8 *r7 = (const u8 *) r5 + 8;
u32 r6 = (r5[2] << 16) + r5[3];
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
sub_80C4DF8(gStringVar1, r7[0]);
if (r7[1] == 0) {
- UnkTextUtil_SetPtrI(0, gSaveBlock2Ptr->playerName);
- UnkTextUtil_SetPtrI(1, gStringVar1);
- UnkTextUtil_SetPtrI(2, ItemId_GetItem(r5[0])->name);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, ItemId_GetName(r5[0]));
if (r5[1] == 1)
- UnkTextUtil_SetPtrI(3, gUnknown_841A8D4);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, gUnknown_841A8D4);
else
{
ConvertIntToDecimalStringN(gStringVar2, r5[1], STR_CONV_MODE_LEFT_ALIGN, 3);
- UnkTextUtil_SetPtrI(4, gStringVar2);
- UnkTextUtil_StringExpandPlaceholders(gStringVar3, gUnknown_841A8DD);
- UnkTextUtil_SetPtrI(3, gStringVar3);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, gStringVar2);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar3, gUnknown_841A8DD);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, gStringVar3);
}
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A858);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A858);
}
else
{
- UnkTextUtil_SetPtrI(0, gStringVar1);
- UnkTextUtil_SetPtrI(1, ItemId_GetItem(r5[0])->name);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, ItemId_GetName(r5[0]));
ConvertIntToDecimalStringN(gStringVar2, r6, STR_CONV_MODE_LEFT_ALIGN, 6);
- UnkTextUtil_SetPtrI(2, gStringVar2);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A896);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar2);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A896);
}
return (const u16 *)(r7 + 2);
}
@@ -4890,7 +4891,7 @@ const u16 * sub_8115700(const u16 * a0)
const u16 * r4 = sub_8113E88(40, a0);
const u8 * r5 = (const u8 *)r4 + 2;
sub_80C4DF8(gStringVar1, r5[0]);
- StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name);
+ StringCopy(gStringVar2, ItemId_GetName(r4[0]));
StringExpandPlaceholders(gStringVar4, gUnknown_841B03F);
return (const u16 *)(r5 + 2);
}
diff --git a/src/quest_log_8150454.c b/src/quest_log_8150454.c
index 8af516e3a..3d61dee72 100644
--- a/src/quest_log_8150454.c
+++ b/src/quest_log_8150454.c
@@ -115,7 +115,7 @@ void sub_81505C4(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 2:
- StartSpriteAnim(sprite, sub_8063500(player_get_direction_lower_nybble()));
+ StartSpriteAnim(sprite, sub_8063500(GetPlayerFacingDirection()));
gTasks[taskId].data[0]++;
break;
case 3:
@@ -173,7 +173,7 @@ void sub_8150794(u8 taskId)
void sub_81507BC(struct MapObject * a0, u8 a1)
{
- sub_805F060(a0, a1);
+ EventObjectSetGraphicsId(a0, a1);
}
void sub_81507CC(void)
diff --git a/src/quest_log_battle.c b/src/quest_log_battle.c
index d4d1245ec..3dfc2eb57 100644
--- a/src/quest_log_battle.c
+++ b/src/quest_log_battle.c
@@ -26,7 +26,7 @@ void sub_812C334(s32 *, s32 *);
void sub_812BFDC(void)
{
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_DOME)) && (gUnknown_2023E8A == 1 || gUnknown_2023E8A == 7))
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_POKEDUDE)) && (gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT))
{
struct QuestLogStruct_TrainerBattleRecord * questLogTrainerBattleRecord = Alloc(sizeof(struct QuestLogStruct_TrainerBattleRecord));
struct QuestLogStruct_WildBattleRecord * questLogWildBattleRecord = Alloc(sizeof(struct QuestLogStruct_WildBattleRecord));
@@ -81,7 +81,7 @@ void sub_812BFDC(void)
}
else
{
- if (gUnknown_2023E8A == 1)
+ if (gBattleOutcome == B_OUTCOME_WON)
{
questLogWildBattleRecord->v0 = GetMonData(gEnemyParty + 0, MON_DATA_SPECIES);
questLogWildBattleRecord->v2 = SPECIES_NONE;
@@ -116,7 +116,7 @@ void sub_812C224(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
struct QuestLogStruct_LinkBattleRecord * r5 = Alloc(sizeof(struct QuestLogStruct_LinkBattleRecord));
- r5->v0 = gUnknown_2023E8A - 1;
+ r5->v0 = gBattleOutcome - 1; // 0 = won, 1 = lost, 2 = drew
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
r8 = 15;
diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c
new file mode 100644
index 000000000..428f7b88d
--- /dev/null
+++ b/src/reset_save_heap.c
@@ -0,0 +1,29 @@
+#include "global.h"
+#include "main.h"
+#include "gpu_regs.h"
+#include "m4a.h"
+#include "load_save.h"
+#include "save.h"
+#include "new_game.h"
+#include "overworld.h"
+#include "malloc.h"
+
+void sub_8079B7C(void)
+{
+ u16 imeBackup = REG_IME;
+
+ REG_IME = 0;
+ RegisterRamReset(RESET_EWRAM);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_FORCED_BLANK);
+ REG_IME = imeBackup;
+ gMain.inBattle = FALSE;
+ SetSaveBlocksPointers();
+ ResetMenuAndMonGlobals();
+ Save_ResetSaveCounters();
+ Save_LoadGameData(0);
+ if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
+ Sav2_ClearSetDefault();
+ SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
+ InitHeap(gHeap, HEAP_SIZE);
+ SetMainCallback2(CB2_ContinueSavedGame);
+}
diff --git a/src/safari_zone.c b/src/safari_zone.c
new file mode 100644
index 000000000..cb0a58586
--- /dev/null
+++ b/src/safari_zone.c
@@ -0,0 +1,80 @@
+#include "global.h"
+#include "battle.h"
+#include "event_scripts.h"
+#include "overworld.h"
+#include "battle.h"
+#include "script.h"
+#include "event_data.h"
+#include "field_screen_effect.h"
+
+EWRAM_DATA u8 gNumSafariBalls = 0;
+EWRAM_DATA u16 gSafariZoneStepCounter = 0;
+
+bool32 GetSafariZoneFlag(void)
+{
+ return FlagGet(FLAG_SYS_SAFARI_MODE);
+}
+
+void SetSafariZoneFlag(void)
+{
+ FlagSet(FLAG_SYS_SAFARI_MODE);
+}
+
+void ResetSafariZoneFlag(void)
+{
+ FlagClear(FLAG_SYS_SAFARI_MODE);
+}
+
+void EnterSafariMode(void)
+{
+ IncrementGameStat(GAME_STAT_ENTERED_SAFARI_ZONE);
+ SetSafariZoneFlag();
+ gNumSafariBalls = 30;
+ gSafariZoneStepCounter = 600;
+}
+
+void ExitSafariMode(void)
+{
+ ResetSafariZoneFlag();
+ gNumSafariBalls = 0;
+ gSafariZoneStepCounter = 0;
+}
+
+bool8 SafariZoneTakeStep(void)
+{
+ if (GetSafariZoneFlag() == FALSE)
+ return FALSE;
+ gSafariZoneStepCounter--;
+ if (gSafariZoneStepCounter == 0)
+ {
+ ScriptContext1_SetupScript(EventScript_SafariTimesUp);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void SafariZoneRetirePrompt(void)
+{
+ ScriptContext1_SetupScript(EventScript_SafariRetire);
+}
+
+void CB2_EndSafariBattle(void)
+{
+ if (gNumSafariBalls != 0)
+ {
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ else if (gBattleOutcome == B_OUTCOME_NO_SAFARI_BALLS)
+ {
+ ScriptContext2_RunNewScript(EventScript_SafariWarpOut);
+ WarpIntoMap();
+ gFieldCallback = sub_807E3EC;
+ SetMainCallback2(CB2_LoadMap);
+ }
+ else if (gBattleOutcome == B_OUTCOME_CAUGHT)
+ {
+ ScriptContext1_SetupScript(EventScript_SafariOutOfBalls);
+ ScriptContext1_Stop();
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ }
+}
diff --git a/src/save.c b/src/save.c
index 761e3c92d..d3d31a22e 100644
--- a/src/save.c
+++ b/src/save.c
@@ -828,7 +828,7 @@ u32 TryCopySpecialSaveSection(u8 sector, u8* dst)
return 1;
}
-u32 sub_80DA5E0(u8 sector, u8* src)
+u32 TryWriteSpecialSaveSection(u8 sector, u8* src)
{
s32 i;
s32 size;
diff --git a/src/save_location.c b/src/save_location.c
new file mode 100644
index 000000000..9b679c7ee
--- /dev/null
+++ b/src/save_location.c
@@ -0,0 +1,108 @@
+#include "global.h"
+#include "save_location.h"
+#include "constants/maps.h"
+
+static bool32 IsCurMapInLocationList(const u16 *list)
+{
+ s32 i;
+ u16 locSum = (gSaveBlock1Ptr->location.mapGroup << 8) + (gSaveBlock1Ptr->location.mapNum);
+
+ for (i = 0; list[i] != 0xFFFF; i++)
+ {
+ if (list[i] == locSum)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static const u16 sSaveLocationPokeCenterList[] =
+{
+ MAP_VIRIDIAN_CITY_POKEMON_CENTER_1F, MAP_VIRIDIAN_CITY_POKEMON_CENTER_2F,
+ MAP_PEWTER_CITY_POKEMON_CENTER_1F, MAP_PEWTER_CITY_POKEMON_CENTER_2F,
+ MAP_CERULEAN_CITY_POKEMON_CENTER_1F, MAP_CERULEAN_CITY_POKEMON_CENTER_2F,
+ MAP_LAVENDER_TOWN_POKEMON_CENTER_1F, MAP_LAVENDER_TOWN_POKEMON_CENTER_2F,
+ MAP_VERMILION_CITY_POKEMON_CENTER_1F, MAP_VERMILION_CITY_POKEMON_CENTER_2F,
+ MAP_CELADON_CITY_POKEMON_CENTER_1F, MAP_CELADON_CITY_POKEMON_CENTER_2F,
+ MAP_FUCHSIA_CITY_POKEMON_CENTER_1F, MAP_FUCHSIA_CITY_POKEMON_CENTER_2F,
+ MAP_CINNABAR_ISLAND_POKEMON_CENTER_1F, MAP_CINNABAR_ISLAND_POKEMON_CENTER_2F,
+ MAP_INDIGO_PLATEAU_POKEMON_CENTER_1F, MAP_INDIGO_PLATEAU_POKEMON_CENTER_2F,
+ MAP_SAFFRON_CITY_POKEMON_CENTER_1F, MAP_SAFFRON_CITY_POKEMON_CENTER_2F,
+ MAP_ROUTE4_POKEMON_CENTER_1F, MAP_ROUTE4_POKEMON_CENTER_2F,
+ MAP_ROUTE10_POKEMON_CENTER_1F, MAP_ROUTE10_POKEMON_CENTER_2F,
+ MAP_ONE_ISLAND_POKEMON_CENTER_1F, MAP_ONE_ISLAND_POKEMON_CENTER_2F,
+ MAP_TWO_ISLAND_POKEMON_CENTER_1F, MAP_TWO_ISLAND_POKEMON_CENTER_2F,
+ MAP_THREE_ISLAND_POKEMON_CENTER_1F, MAP_THREE_ISLAND_POKEMON_CENTER_2F,
+ MAP_FOUR_ISLAND_POKEMON_CENTER_1F, MAP_FOUR_ISLAND_POKEMON_CENTER_2F,
+ MAP_FIVE_ISLAND_POKEMON_CENTER_1F, MAP_FIVE_ISLAND_POKEMON_CENTER_2F,
+ MAP_SEVEN_ISLAND_POKEMON_CENTER_1F, MAP_SEVEN_ISLAND_POKEMON_CENTER_2F,
+ MAP_SIX_ISLAND_POKEMON_CENTER_1F, MAP_SIX_ISLAND_POKEMON_CENTER_2F,
+ MAP_UNKNOWN_MAP_00_00, MAP_UNKNOWN_MAP_00_01,
+ MAP_UNKNOWN_MAP_00_03, MAP_UNKNOWN_MAP_00_04,
+ 0xFFFF,
+};
+
+bool32 IsCurMapPokeCenter(void)
+{
+ return IsCurMapInLocationList(sSaveLocationPokeCenterList);
+}
+
+static const u16 sSaveLocationReloadLocList[] = { 0xFFFF };
+
+static bool32 IsCurMapReloadLocation(void)
+{
+ return IsCurMapInLocationList(sSaveLocationReloadLocList);
+}
+
+static const u16 sUnknown_8453094[] = { 0xFFFF };
+
+static bool32 sub_810B75C(void)
+{
+ return IsCurMapInLocationList(sUnknown_8453094);
+}
+
+static void TrySetPokeCenterWarpStatus(void)
+{
+ if (IsCurMapPokeCenter() == FALSE)
+ gSaveBlock2Ptr->specialSaveWarpFlags &= ~(POKECENTER_SAVEWARP);
+ else
+ gSaveBlock2Ptr->specialSaveWarpFlags |= POKECENTER_SAVEWARP;
+}
+
+static void TrySetReloadWarpStatus(void)
+{
+ if (!IsCurMapReloadLocation())
+ gSaveBlock2Ptr->specialSaveWarpFlags &= ~(LOBBY_SAVEWARP);
+ else
+ gSaveBlock2Ptr->specialSaveWarpFlags |= LOBBY_SAVEWARP;
+}
+
+static void sub_810B7CC(void)
+{
+ if (!sub_810B75C())
+ gSaveBlock2Ptr->specialSaveWarpFlags &= ~(UNK_SPECIAL_SAVE_WARP_FLAG_3);
+ else
+ gSaveBlock2Ptr->specialSaveWarpFlags |= UNK_SPECIAL_SAVE_WARP_FLAG_3;
+}
+
+void TrySetMapSaveWarpStatus(void)
+{
+ TrySetPokeCenterWarpStatus();
+ TrySetReloadWarpStatus();
+ sub_810B7CC();
+}
+
+void sub_810B810(void)
+{
+ gSaveBlock2Ptr->field_A8 |= 0x1;
+ gSaveBlock2Ptr->field_A8 |= 0x10;
+ gSaveBlock2Ptr->field_A8 |= 0x20;
+}
+
+void sub_810B82C(void)
+{
+ gSaveBlock2Ptr->specialSaveWarpFlags |= 0x80;
+ gSaveBlock2Ptr->field_A8 |= 0x2;
+ gSaveBlock2Ptr->field_A8 |= 0x4;
+ gSaveBlock2Ptr->field_A8 |= 0x8;
+ gSaveBlock2Ptr->field_A8 |= 0x8000;
+}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 7c27293a7..cef1a1eb7 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -807,7 +807,7 @@ bool8 ScrCmd_warpteleport2(struct ScriptContext *ctx)
u16 y = VarGet(ScriptReadHalfword(ctx));
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
- sub_805DAE4(player_get_direction_lower_nybble());
+ sub_805DAE4(GetPlayerFacingDirection());
sub_807E500();
ResetInitialPlayerAvatarState();
return TRUE;
@@ -1154,7 +1154,7 @@ bool8 ScrCmd_faceplayer(struct ScriptContext *ctx)
if (gMapObjects[gSelectedEventObject].active)
{
FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedEventObject],
- player_get_direction_lower_nybble());
+ GetPlayerFacingDirection());
}
return FALSE;
}
@@ -1201,7 +1201,7 @@ bool8 ScrCmd_turnvobject(struct ScriptContext *ctx)
bool8 ScrCmd_lockall(struct ScriptContext *ctx)
{
- if (is_c1_link_related_active())
+ if (IsUpdateLinkStateCBActive())
{
return FALSE;
}
@@ -1215,7 +1215,7 @@ bool8 ScrCmd_lockall(struct ScriptContext *ctx)
bool8 ScrCmd_lock(struct ScriptContext *ctx)
{
- if (is_c1_link_related_active())
+ if (IsUpdateLinkStateCBActive())
{
return FALSE;
}
@@ -1241,7 +1241,7 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx)
HideFieldMessageBox();
playerObjectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[playerObjectId]);
+ FieldObjectClearHeldMovementIfFinished(&gMapObjects[playerObjectId]);
sub_80974D8();
UnfreezeMapObjects();
return FALSE;
@@ -1253,9 +1253,9 @@ bool8 ScrCmd_release(struct ScriptContext *ctx)
HideFieldMessageBox();
if (gMapObjects[gSelectedEventObject].active)
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedEventObject]);
+ FieldObjectClearHeldMovementIfFinished(&gMapObjects[gSelectedEventObject]);
playerObjectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[playerObjectId]);
+ FieldObjectClearHeldMovementIfFinished(&gMapObjects[playerObjectId]);
sub_80974D8();
UnfreezeMapObjects();
return FALSE;
@@ -1984,7 +1984,7 @@ bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx)
{
u8 slotMachineIndex = VarGet(ScriptReadHalfword(ctx));
- PlaySlotMachine(slotMachineIndex, c2_exit_to_overworld_1_continue_scripts_restart_music);
+ PlaySlotMachine(slotMachineIndex, CB2_ReturnToFieldContinueScriptPlayMapMusic);
ScriptContext1_Stop();
return TRUE;
}
diff --git a/src/script.c b/src/script.c
index 608dc6ba0..06418b8d0 100644
--- a/src/script.c
+++ b/src/script.c
@@ -279,7 +279,7 @@ void sub_8069A2C(void)
gUnknown_3000FA1 = 0;
}
-bool8 sub_8069A38(void)
+bool8 IsMsgSignPost(void)
{
if(gUnknown_3000FA1 == TRUE)
return TRUE;
diff --git a/src/seagallop.c b/src/seagallop.c
index ae880b2a3..e3333ef32 100644
--- a/src/seagallop.c
+++ b/src/seagallop.c
@@ -323,8 +323,8 @@ static void Task_SeaGallop_3(void)
PlayRainStoppingSoundEffect();
PlaySE(SE_KAIDAN);
gFieldCallback = sub_807DF64;
- warp_in();
- SetMainCallback2(sub_805671C);
+ WarpIntoMap();
+ SetMainCallback2(CB2_LoadMap);
ResetInitialPlayerAvatarState();
FreeFerrySpriteResources();
Free(sBg3TilemapBuffer);
diff --git a/src/slot_machine.c b/src/slot_machine.c
index bc3baf621..5b4020a5f 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -1833,7 +1833,7 @@ bool32 sub_8140C0C(void)
s32 i;
for (i = 0; i < NELEMS(gUnknown_84655B0); i++)
- LoadCompressedObjectPic(&gUnknown_84655B0[i]);
+ LoadCompressedSpriteSheet(&gUnknown_84655B0[i]);
LoadSpritePalettes(gUnknown_84655C8);
sSlotMachineGfxManager = Alloc(sizeof(*sSlotMachineGfxManager));
if (sSlotMachineGfxManager == NULL)
@@ -2075,7 +2075,7 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
RequestDma3Fill(0, (void *)VRAM, 0x20, 1);
RequestDma3Fill(0, (void *)(VRAM + 0xC000), 0x20, 1);
SetGpuReg(REG_OFFSET_DISPCNT, 0);
- sub_80F6C14();
+ ResetBgPositions();
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_8466B10, NELEMS(gUnknown_8466B10));
InitWindows(gUnknown_8466B20);
@@ -2084,9 +2084,9 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 32, 32);
CopyBgTilemapBufferToVram(3);
- reset_temp_tile_data_buffers();
- decompress_and_copy_tile_data_to_vram(2, gUnknown_84659D0, 0, 0x00, 0);
- decompress_and_copy_tile_data_to_vram(2, gUnknown_846653C, 0, 0xC0, 0);
+ ResetTempTileDataBuffers();
+ DecompressAndCopyTileDataToVram(2, gUnknown_84659D0, 0, 0x00, 0);
+ DecompressAndCopyTileDataToVram(2, gUnknown_846653C, 0, 0xC0, 0);
SetBgTilemapBuffer(2, ptr->field_185C);
CopyToBgTilemapBuffer(2, gUnknown_84661D4, 0, 0x00);
CopyBgTilemapBufferToVram(2);
@@ -2100,8 +2100,8 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
SetBgTilemapBuffer(0, ptr->field_085C);
FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 32, 30);
- decompress_and_copy_tile_data_to_vram(1, gUnknown_8466620, 0, 0, 0);
- decompress_and_copy_tile_data_to_vram(1, gUnknown_8466998, 0, 0, 1);
+ DecompressAndCopyTileDataToVram(1, gUnknown_8466620, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, gUnknown_8466998, 0, 0, 1);
CopyBgTilemapBufferToVram(1);
LoadPalette(stdpal_get(2), 0xE0, 0x20);
@@ -2112,7 +2112,7 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
textColor.fgColor = 15;
textColor.bgColor = 1;
textColor.shadowColor = 2;
- box_print(1, 0, x, 0, &textColor, 0, gUnknown_841B779);
+ AddTextPrinterParameterized3(1, 0, x, 0, &textColor, 0, gUnknown_841B779);
CopyBgTilemapBufferToVram(0);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | 0x20 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
@@ -2128,7 +2128,7 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
(*state)++;
break;
case 2:
- if (!free_temp_tile_data_buffers_if_possible())
+ if (!FreeTempTileDataBuffersIfPossible())
{
ShowBg(0);
ShowBg(3);
@@ -2210,7 +2210,7 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
"\tmovs r0, 0\n"
"\tmovs r1, 0\n"
"\tbl SetGpuReg\n"
- "\tbl sub_80F6C14\n"
+ "\tbl ResetBgPositions\n"
"\tmovs r0, 0\n"
"\tbl ResetBgsAndClearDma3BusyFlags\n"
"\tldr r1, _081413A0 @ =gUnknown_8466B10\n"
@@ -2233,20 +2233,20 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
"\tbl FillBgTilemapBufferRect_Palette0\n"
"\tmovs r0, 0x3\n"
"\tbl CopyBgTilemapBufferToVram\n"
- "\tbl reset_temp_tile_data_buffers\n"
+ "\tbl ResetTempTileDataBuffers\n"
"\tldr r1, _081413AC @ =gUnknown_84659D0\n"
"\tmovs r5, 0\n"
"\tstr r5, [sp]\n"
"\tmovs r0, 0x2\n"
"\tmovs r2, 0\n"
"\tmovs r3, 0\n"
- "\tbl decompress_and_copy_tile_data_to_vram\n"
+ "\tbl DecompressAndCopyTileDataToVram\n"
"\tldr r1, _081413B0 @ =gUnknown_846653C\n"
"\tstr r5, [sp]\n"
"\tmovs r0, 0x2\n"
"\tmovs r2, 0\n"
"\tmovs r3, 0xC0\n"
- "\tbl decompress_and_copy_tile_data_to_vram\n"
+ "\tbl DecompressAndCopyTileDataToVram\n"
"\tldr r1, _081413B4 @ =0x0000185c\n"
"\tadd r1, r8\n"
"\tmovs r0, 0x2\n"
@@ -2301,13 +2301,13 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
"\tmovs r0, 0x1\n"
"\tmovs r2, 0\n"
"\tmovs r3, 0\n"
- "\tbl decompress_and_copy_tile_data_to_vram\n"
+ "\tbl DecompressAndCopyTileDataToVram\n"
"\tldr r1, _081413D4 @ =gUnknown_8466998\n"
"\tstr r6, [sp]\n"
"\tmovs r0, 0x1\n"
"\tmovs r2, 0\n"
"\tmovs r3, 0\n"
- "\tbl decompress_and_copy_tile_data_to_vram\n"
+ "\tbl DecompressAndCopyTileDataToVram\n"
"\tmovs r0, 0x1\n"
"\tbl CopyBgTilemapBufferToVram\n"
"\tmovs r0, 0x2\n"
@@ -2341,7 +2341,7 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
"\tmovs r0, 0x1\n"
"\tmovs r1, 0\n"
"\tmovs r3, 0\n"
- "\tbl box_print\n"
+ "\tbl AddTextPrinterParameterized3\n"
"\tmovs r0, 0\n"
"\tbl CopyBgTilemapBufferToVram\n"
"\tmovs r1, 0x83\n"
@@ -2386,7 +2386,7 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
"_081413DC: .4byte sub_8141118\n"
"_081413E0: .4byte sub_8140E40\n"
"_081413E4:\n"
- "\tbl free_temp_tile_data_buffers_if_possible\n"
+ "\tbl FreeTempTileDataBuffersIfPossible\n"
"\tlsls r0, 24\n"
"\tlsrs r5, r0, 24\n"
"\tcmp r5, 0\n"
@@ -2678,7 +2678,7 @@ void sub_81417E4(const u8 * str)
FillWindowPixelBuffer(0, 0x11);
PutWindowTilemap(0);
DrawTextBorderOuter(0, 0x001, 15);
- sub_812E62C(0, 2, str, 1, 2, -1, NULL, 1, 2);
+ AddTextPrinterParameterized5(0, 2, str, 1, 2, -1, NULL, 1, 2);
}
void sub_8141828(void)
diff --git a/src/sound.c b/src/sound.c
index ba6511d1c..dc4b9f604 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -169,7 +169,7 @@ void FadeOutAndFadeInNewMapMusic(u16 songNum, u8 fadeOutSpeed, u8 fadeInSpeed)
sMapMusicFadeInSpeed = fadeInSpeed;
}
-void FadeInNewMapMusic(u16 songNum, u8 speed)
+static void FadeInNewMapMusic(u16 songNum, u8 speed)
{
FadeInNewBGM(songNum, speed);
sCurrentMapMusic = songNum;
diff --git a/src/sprite.c b/src/sprite.c
index 60bcd1da4..c1fc89777 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -250,12 +250,26 @@ static const AffineAnimCmdFunc sAffineAnimCmdFuncs[] =
AffineAnimCmd_frame,
};
-static const s32 gUnknown_082EC6F4[24] =
+static const s32 sUnknown_082EC6F4[3][4][2] =
{
- 8, 8, 0x10, 0x10, 0x20, 0x20,
- 0x40, 0x40, 0x10, 8, 0x20, 8,
- 0x20, 0x10, 0x40, 0x20, 8, 0x10,
- 8, 0x20, 0x10, 0x20, 0x20, 0x40,
+ {
+ {8, 8},
+ {0x10, 0x10},
+ {0x20, 0x20},
+ {0x40, 0x40},
+ },
+ {
+ {0x10, 8},
+ {0x20, 8},
+ {0x20, 0x10},
+ {0x40, 0x20},
+ },
+ {
+ {8, 0x10},
+ {8, 0x20},
+ {0x10, 0x20},
+ {0x20, 0x40},
+ },
};
static const struct OamDimensions sOamDimensions[3][4] =
@@ -1227,106 +1241,26 @@ s32 sub_800800C(s32 a0, s32 a1, s32 a2)
return a2 - ((u32)(a2 * a1) / (u32)(a0) + var1);
}
-#ifdef NONMATCHING
-void obj_update_pos2(struct Sprite* sprite, s32 a1, s32 a2)
+void obj_update_pos2(struct Sprite *sprite, s32 a1, s32 a2)
{
s32 var0, var1, var2;
- u8 matrixNum = sprite->oam.matrixNum;
+
+ u32 matrixNum = sprite->oam.matrixNum;
if (a1 != 0x800)
{
- var0 = gUnknown_082EC6F4[sprite->oam.size * 8 + sprite->oam.shape * 32];
+ var0 = sUnknown_082EC6F4[sprite->oam.shape][sprite->oam.size][0];
var1 = var0 << 8;
var2 = (var0 << 16) / gOamMatrices[matrixNum].a;
sprite->pos2.x = sub_800800C(var1, var2, a1);
}
if (a2 != 0x800)
{
- var0 = gUnknown_082EC6F4[4 + (sprite->oam.size * 8 + sprite->oam.shape * 32)];
+ var0 = sUnknown_082EC6F4[sprite->oam.shape][sprite->oam.size][1];
var1 = var0 << 8;
var2 = (var0 << 16) / gOamMatrices[matrixNum].d;
sprite->pos2.y = sub_800800C(var1, var2, a2);
}
}
-#else
-__attribute__((naked))
-void obj_update_pos2(struct Sprite* sprite, s32 a1, s32 a2)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- adds r5, r0, 0\n\
- adds r6, r1, 0\n\
- mov r8, r2\n\
- ldrb r1, [r5, 0x3]\n\
- lsls r0, r1, 26\n\
- lsrs r7, r0, 27\n\
- movs r0, 0x80\n\
- lsls r0, 4\n\
- mov r9, r0\n\
- cmp r6, r9\n\
- beq _08007EA2\n\
- ldr r2, =gUnknown_082EC6F4\n\
- lsrs r1, 6\n\
- lsls r1, 3\n\
- ldrb r0, [r5, 0x1]\n\
- lsrs r0, 6\n\
- lsls r0, 5\n\
- adds r1, r0\n\
- adds r1, r2\n\
- ldr r0, [r1]\n\
- lsls r4, r0, 8\n\
- lsls r0, 16\n\
- ldr r2, =gOamMatrices\n\
- lsls r1, r7, 3\n\
- adds r1, r2\n\
- movs r2, 0\n\
- ldrsh r1, [r1, r2]\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- adds r0, r4, 0\n\
- adds r2, r6, 0\n\
- bl sub_800800C\n\
- strh r0, [r5, 0x24]\n\
-_08007EA2:\n\
- cmp r8, r9\n\
- beq _08007EDA\n\
- ldr r2, =gUnknown_082EC6F4\n\
- ldrb r1, [r5, 0x3]\n\
- lsrs r1, 6\n\
- lsls r1, 3\n\
- ldrb r0, [r5, 0x1]\n\
- lsrs r0, 6\n\
- lsls r0, 5\n\
- adds r1, r0\n\
- adds r2, 0x4\n\
- adds r1, r2\n\
- ldr r0, [r1]\n\
- lsls r4, r0, 8\n\
- lsls r0, 16\n\
- ldr r2, =gOamMatrices\n\
- lsls r1, r7, 3\n\
- adds r1, r2\n\
- movs r2, 0x6\n\
- ldrsh r1, [r1, r2]\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- adds r0, r4, 0\n\
- mov r2, r8\n\
- bl sub_800800C\n\
- strh r0, [r5, 0x26]\n\
-_08007EDA:\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided");
-}
-#endif // NONMATCHING
void SetSpriteOamFlipBits(struct Sprite *sprite, u8 hFlip, u8 vFlip)
{
diff --git a/src/ss_anne.c b/src/ss_anne.c
new file mode 100644
index 000000000..f59f17a76
--- /dev/null
+++ b/src/ss_anne.c
@@ -0,0 +1,200 @@
+#include "global.h"
+#include "task.h"
+#include "sound.h"
+#include "field_map_obj.h"
+#include "script.h"
+#include "constants/songs.h"
+
+// Tasks governing the ship's departure after you've gotten HM01 CUT
+
+#define SPRITE_TAG_WAKE 4000
+#define SPRITE_TAG_SMOKE 4001
+
+static void Task_SSAnneInit(u8 taskId);
+static void Task_SSAnneRun(u8 taskId);
+static void Task_SSAnneFinish(u8 taskId);
+static void CreateWakeBehindBoat(void);
+static void WakeSpriteCallback(struct Sprite * sprite);
+static void CreateSmokeSprite(void);
+static void SmokeSpriteCallback(struct Sprite * sprite);
+
+static const u16 sWakeTiles[] = INCBIN_U16("graphics/ss_anne/unk_8479838.4bpp");
+static const u16 sSmokeTiles[] = INCBIN_U16("graphics/ss_anne/unk_8479A38.4bpp");
+
+static const struct SpriteSheet sSpriteSheets[] = {
+ {(const void *)sWakeTiles, sizeof(sWakeTiles), SPRITE_TAG_WAKE},
+ {(const void *)sSmokeTiles, sizeof(sSmokeTiles), SPRITE_TAG_SMOKE},
+ {0}
+};
+
+static const union AnimCmd sWakeAnim[] = {
+ ANIMCMD_FRAME(0, 12),
+ ANIMCMD_FRAME(8, 12),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sWakeAnimTable[] = {
+ sWakeAnim
+};
+
+static const struct OamData sWakeOamData = {
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 2
+};
+
+static const struct SpriteTemplate sWakeSpriteTemplate = {
+ SPRITE_TAG_WAKE,
+ 0xFFFF,
+ &sWakeOamData,
+ sWakeAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ WakeSpriteCallback
+};
+
+static const union AnimCmd sSmokeAnim[] = {
+ ANIMCMD_FRAME( 0, 10),
+ ANIMCMD_FRAME( 4, 20),
+ ANIMCMD_FRAME( 8, 20),
+ ANIMCMD_FRAME(12, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSmokeAnimTable[] = {
+ sSmokeAnim
+};
+
+static const struct OamData sSmokeOamData = {
+ .shape = ST_OAM_SQUARE,
+ .size = 1
+};
+
+static const struct SpriteTemplate sSmokeSpriteTemplate = {
+ SPRITE_TAG_SMOKE,
+ 0xFFFF,
+ &sSmokeOamData,
+ sSmokeAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SmokeSpriteCallback
+};
+
+void Special_SSAnneDepartureCutscene(void)
+{
+ u8 taskId;
+
+ PlaySE(SE_SHIP_HORN);
+ taskId = CreateTask(Task_SSAnneInit, 8);
+ gTasks[taskId].data[0] = 50;
+}
+
+static void Task_SSAnneInit(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (--data[0] == 0)
+ {
+ LoadSpriteSheets(sSpriteSheets);
+ CreateWakeBehindBoat();
+ gTasks[taskId].func = Task_SSAnneRun;
+ }
+}
+
+static void Task_SSAnneRun(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 mapObjectId;
+ struct MapObject * boatObject;
+ s16 x;
+
+ data[1]++;
+ data[2]++;
+ if (data[1] == 70)
+ {
+ data[1] = 0;
+ CreateSmokeSprite();
+ }
+ TryGetFieldObjectIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &mapObjectId);
+ boatObject = &gMapObjects[mapObjectId];
+ if (gSprites[boatObject->spriteId].pos1.x + gSprites[boatObject->spriteId].pos2.x < -120)
+ {
+ PlaySE(SE_SHIP_HORN);
+ gTasks[taskId].func = Task_SSAnneFinish;
+ }
+ else
+ {
+ x = data[2] / 5;
+ gSprites[boatObject->spriteId].pos2.x = -x;
+ }
+}
+
+static void Task_SSAnneFinish(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (++data[3] == 40)
+ {
+ FreeSpriteTilesByTag(SPRITE_TAG_WAKE);
+ FreeSpriteTilesByTag(SPRITE_TAG_SMOKE);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+}
+
+static void CreateWakeBehindBoat(void)
+{
+ u8 mapObjectId;
+ struct MapObject * boatObject;
+ u16 x;
+ u8 spriteId;
+
+ TryGetFieldObjectIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &mapObjectId);
+ boatObject = &gMapObjects[mapObjectId];
+ x = gSprites[boatObject->spriteId].pos1.x + gSprites[boatObject->spriteId].pos2.x + 80;
+ spriteId = CreateSprite(&sWakeSpriteTemplate, x, 109, 0xFF);
+ gSprites[spriteId].oam.priority = 2;
+ gSprites[spriteId].oam.paletteNum = 10;
+}
+
+static void WakeSpriteCallback(struct Sprite * sprite)
+{
+ u8 mapObjectId;
+ struct MapObject * boatObject;
+ u16 x;
+
+ TryGetFieldObjectIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &mapObjectId);
+ boatObject = &gMapObjects[mapObjectId];
+ x = gSprites[boatObject->spriteId].pos1.x + gSprites[boatObject->spriteId].pos2.x + 80;
+ sprite->pos1.x = x;
+ if (sprite->data[0] / 6 < 22)
+ sprite->data[0]++;
+ sprite->pos2.x = sprite->data[0] / 6;
+ if (sprite->pos1.x + sprite->pos2.x < -18)
+ DestroySprite(sprite);
+}
+
+static void CreateSmokeSprite(void)
+{
+ u8 mapObjectId;
+ struct MapObject * boatObject;
+ u16 x;
+ u8 spriteId;
+
+ TryGetFieldObjectIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &mapObjectId);
+ boatObject = &gMapObjects[mapObjectId];
+ x = gSprites[boatObject->spriteId].pos1.x + gSprites[boatObject->spriteId].pos2.x + 49;
+ if ((s16)x >= -32)
+ {
+ spriteId = CreateSprite(&sSmokeSpriteTemplate, x, 78, 8);
+ if (spriteId != MAX_SPRITES)
+ gSprites[spriteId].oam.paletteNum = 10;
+ }
+}
+
+static void SmokeSpriteCallback(struct Sprite * sprite)
+{
+ sprite->data[0]++;
+ sprite->pos2.x = sprite->data[0] / 4;
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
diff --git a/src/teachy_tv.c b/src/teachy_tv.c
new file mode 100644
index 000000000..0b0e7b932
--- /dev/null
+++ b/src/teachy_tv.c
@@ -0,0 +1,1416 @@
+#include "task.h"
+#include "menu.h"
+#include "palette.h"
+#include "sprite.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "sound.h"
+#include "malloc.h"
+#include "scanline_effect.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "decompress.h"
+#include "window.h"
+#include "list_menu.h"
+#include "item_menu.h"
+#include "item.h"
+#include "menu_indicators.h"
+#include "field_map_obj.h"
+#include "random.h"
+#include "text.h"
+#include "constants/songs.h"
+#include "constants/items.h"
+#include "event_data.h"
+#include "load_save.h"
+#include "battle_transition.h"
+#include "battle_2.h"
+#include "battle.h"
+#include "global.fieldmap.h"
+#include "teachy_tv.h"
+#include "help_system.h"
+#include "overworld.h"
+#include "unk_8159F40.h"
+#include "graphics.h"
+#include "fieldmap.h"
+#include "strings.h"
+
+enum TeachyTvScript
+{
+ TTVSCR_BATTLE,
+ TTVSCR_STATUS,
+ TTVSCR_MATCHUPS,
+ TTVSCR_CATCHING,
+ TTVSCR_TMS,
+ TTVSCR_REGISTER
+};
+
+struct TeachyTvCtrlBlk
+{
+ MainCallback callback;
+ u8 mode;
+ u8 whichScript;
+ u16 scrollOffset;
+ u16 selectedRow;
+};
+
+struct TeachyTvBuf
+{
+ MainCallback savedCallback;
+ u16 buffer1[0x800];
+ u16 buffer2[0x800];
+ u16 buffer3[0x800];
+ u16 buffer4[0x800];
+ u8 grassAnimCounterLo;
+ u8 grassAnimCounterHi;
+ u8 grassAnimDisabled;
+ u8 scrollIndicatorArrowPairId;
+};
+
+static EWRAM_DATA struct TeachyTvCtrlBlk sStaticResources = {0};
+static EWRAM_DATA struct TeachyTvBuf * sResources = NULL;
+
+static void TTVcmd_TransitionRenderBg2TeachyTvGraphicInitNpcPos(u8 taskId);
+static void TTVcmd_ClearBg2TeachyTvGraphic(u8 taskId);
+static void TTVcmd_NpcMoveAndSetupTextPrinter(u8 taskId);
+static void TTVcmd_IdleIfTextPrinterIsActive(u8 taskId);
+static void TTVcmd_TextPrinterSwitchStringByOptionChosen(u8 taskId);
+static void TTVcmd_TextPrinterSwitchStringByOptionChosen2(u8 taskId);
+static void TTVcmd_IdleIfTextPrinterIsActive2(u8 taskId);
+static void TTVcmd_EraseTextWindowIfKeyPressed(u8 taskId);
+static void TTVcmd_StartAnimNpcWalkIntoGrass(u8 taskId);
+static void TTVcmd_DudeMoveUp(u8 taskId);
+static void TTVcmd_DudeMoveRight(u8 taskId);
+static void TTVcmd_DudeTurnLeft(u8 taskId);
+static void TTVcmd_DudeMoveLeft(u8 taskId);
+static void TTVcmd_RenderAndRemoveBg1EndGraphic(u8 taskId);
+static void TTVcmd_TaskBattleOrFadeByOptionChosen(u8 taskId);
+static void TeachyTvCallback(void);
+static void TeachyTvMainCallback(void);
+static void TeachyTvVblankHandler(void);
+static void TeachyTvCreateAndRenderRbox(void);
+static void TeachyTvInitIo(void);
+static u8 TeachyTvSetupObjEventAndOam(void);
+static void TeachyTvSetupPostBattleWindowAndObj(u8);
+static u8 TeachyTvSetupWindow(void);
+static void TeachyTvSetupScrollIndicatorArrowPair(void);
+static void TeachyTvSetWindowRegs(void);
+static void TeachyTvSetupBg(void);
+static void TeachyTvLoadGraphic(void);
+static void TeachyTvPostBattleFadeControl(u8);
+static void TeachyTvOptionListController(u8);
+static void TeachyTvAudioByInput(s32, bool8, struct ListMenu *);
+static void TeachyTvQuitFadeControlAndTaskDel(u8 taskId);
+static void TeachyTvRenderMsgAndSwitchClusterFuncs(u8 taskId);
+static void TeachyTvClearBg1EndGraphicText(void);
+static void TTVcmd_End(u8 taskId);
+static void TeachyTvSetupBagItemsByOptionChosen(void);
+static void TeachyTvPrepBattle(u8 taskId);
+static void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 mode);
+static void TeachyTvLoadBg3Map(u16 *);
+static u8 TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj(s16 x, s16 y);
+static void TeachyTvGrassAnimationObjCallback(struct Sprite *sprite);
+static void TeachyTvRestorePlayerPartyCallback(void);
+static void TeachyTvPreBattleAnimAndSetBattleCallback(u8 taskId);
+static void TeachyTvLoadMapTilesetToBuffer(struct Tileset *ts, u8 *dstBuffer, u16 size);
+static void TeachyTvPushBackNewMapPalIndexArrayEntry(const struct MapData *mStruct, u16 *buf1, u8 *palIndexArray, u16 mapEntry, u16 offset);
+static void TeachyTvComputeMapTilesFromTilesetAndMetaTiles(u16 *metaTilesArray, u8 *blockBuf, u8 *tileset);
+static void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *tileset, u8 metaTile);
+static u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTile);
+static void TeachyTvLoadMapPalette(const struct MapData * mStruct, const u8 *palIndexArray);
+
+static const struct BgTemplate sBgTemplates[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x000,
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000,
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000,
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 28,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x000,
+ },
+};
+
+static const struct WindowTemplate sWindowTemplates[] =
+{
+ {
+ .bg = 1,
+ .tilemapLeft = 2,
+ .tilemapTop = 15,
+ .width = 26,
+ .height = 4,
+ .paletteNum = 0x3,
+ .baseBlock = 0x0EA,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 4,
+ .tilemapTop = 1,
+ .width = 22,
+ .height = 12,
+ .paletteNum = 0x3,
+ .baseBlock = 0x152,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+static const struct ListMenuItem sListMenuItems[] =
+{
+ {
+ .label = gTeachyTvString_TeachBattle,
+ .index = TTVSCR_BATTLE
+ },
+ {
+ .label = gTeachyTvString_StatusProblems,
+ .index = TTVSCR_STATUS
+ },
+ {
+ .label = gTeachyTvString_TypeMatchups,
+ .index = TTVSCR_MATCHUPS
+ },
+ {
+ .label = gTeachyTvString_CatchPkmn,
+ .index = TTVSCR_CATCHING
+ },
+ {
+ .label = gTeachyTvString_AboutTMs,
+ .index = TTVSCR_TMS
+ },
+ {
+ .label = gTeachyTvString_RegisterItem,
+ .index = TTVSCR_REGISTER
+ },
+
+ {
+ .label = gTeachyTvString_Cancel,
+ .index = -2
+ },
+};
+
+static const struct ListMenuItem sListMenuItems_NoTMCase[] =
+{
+ {
+ .label = gTeachyTvString_TeachBattle,
+ .index = TTVSCR_BATTLE
+ },
+ {
+ .label = gTeachyTvString_StatusProblems,
+ .index = TTVSCR_STATUS
+ },
+ {
+ .label = gTeachyTvString_TypeMatchups,
+ .index = TTVSCR_MATCHUPS
+ },
+ {
+ .label = gTeachyTvString_CatchPkmn,
+ .index = TTVSCR_CATCHING
+ },
+ {
+ .label = gTeachyTvString_Cancel,
+ .index = -2
+ },
+};
+
+static const struct ListMenuTemplate sListMenuTemplate =
+{
+ .items = sListMenuItems,
+ .moveCursorFunc = NULL,
+ .itemPrintFunc = NULL,
+ .totalItems = 7,
+ .maxShowed = 6,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 6,
+ .cursorPal = 0x1,
+ .fillValue = 0x0,
+ .cursorShadowPal = 0x2,
+ .lettersSpacing = 0x0,
+ .itemVerticalPadding = 0x0,
+ .scrollMultiple = 0x1,
+ .fontId = 0x2,
+ .cursorKind = 0x0,
+};
+
+static const struct ScrollArrowsTemplate sScrollIndicatorArrowPair =
+{
+ .firstArrowType = 0x2,
+ .firstX = 0x78,
+ .firstY = 0xC,
+ .secondArrowType = 0x3,
+ .secondX = 0x78,
+ .secondY = 0x64,
+ .fullyUpThreshold = 0,
+ .fullyDownThreshold = 1,
+ .tileTag = 0x800,
+ .palTag = 0x800,
+ .palNum = 0x0,
+};
+
+static const u8 sWhereToReturnToFromBattle[] =
+{
+ 12,
+ 12,
+ 12,
+ 12,
+ 9,
+ 9
+};
+
+static void (* const sBattleScript[])(u8) =
+{
+ TTVcmd_TransitionRenderBg2TeachyTvGraphicInitNpcPos,
+ TTVcmd_ClearBg2TeachyTvGraphic,
+ TTVcmd_NpcMoveAndSetupTextPrinter,
+ TTVcmd_IdleIfTextPrinterIsActive,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_TextPrinterSwitchStringByOptionChosen,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_EraseTextWindowIfKeyPressed,
+ TTVcmd_StartAnimNpcWalkIntoGrass,
+ TTVcmd_DudeMoveUp,
+ TTVcmd_DudeMoveRight,
+ TTVcmd_TaskBattleOrFadeByOptionChosen,
+ TTVcmd_TextPrinterSwitchStringByOptionChosen2,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_EraseTextWindowIfKeyPressed,
+ TTVcmd_DudeTurnLeft,
+ TTVcmd_DudeMoveLeft,
+ TTVcmd_RenderAndRemoveBg1EndGraphic,
+ TTVcmd_End,
+};
+
+static void (* const sStatusScript[])(u8) =
+{
+ TTVcmd_TransitionRenderBg2TeachyTvGraphicInitNpcPos,
+ TTVcmd_ClearBg2TeachyTvGraphic,
+ TTVcmd_NpcMoveAndSetupTextPrinter,
+ TTVcmd_IdleIfTextPrinterIsActive,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_TextPrinterSwitchStringByOptionChosen,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_EraseTextWindowIfKeyPressed,
+ TTVcmd_StartAnimNpcWalkIntoGrass,
+ TTVcmd_DudeMoveUp,
+ TTVcmd_DudeMoveRight,
+ TTVcmd_TaskBattleOrFadeByOptionChosen,
+ TTVcmd_TextPrinterSwitchStringByOptionChosen2,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_EraseTextWindowIfKeyPressed,
+ TTVcmd_DudeTurnLeft,
+ TTVcmd_DudeMoveLeft,
+ TTVcmd_RenderAndRemoveBg1EndGraphic,
+ TTVcmd_End,
+};
+
+static void (* const sMatchupsScript[])(u8) =
+{
+ TTVcmd_TransitionRenderBg2TeachyTvGraphicInitNpcPos,
+ TTVcmd_ClearBg2TeachyTvGraphic,
+ TTVcmd_NpcMoveAndSetupTextPrinter,
+ TTVcmd_IdleIfTextPrinterIsActive,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_TextPrinterSwitchStringByOptionChosen,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_EraseTextWindowIfKeyPressed,
+ TTVcmd_StartAnimNpcWalkIntoGrass,
+ TTVcmd_DudeMoveUp,
+ TTVcmd_DudeMoveRight,
+ TTVcmd_TaskBattleOrFadeByOptionChosen,
+ TTVcmd_TextPrinterSwitchStringByOptionChosen2,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_EraseTextWindowIfKeyPressed,
+ TTVcmd_DudeTurnLeft,
+ TTVcmd_DudeMoveLeft,
+ TTVcmd_RenderAndRemoveBg1EndGraphic,
+ TTVcmd_End,
+};
+
+static void (* const sCatchingScript[])(u8) =
+{
+ TTVcmd_TransitionRenderBg2TeachyTvGraphicInitNpcPos,
+ TTVcmd_ClearBg2TeachyTvGraphic,
+ TTVcmd_NpcMoveAndSetupTextPrinter,
+ TTVcmd_IdleIfTextPrinterIsActive,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_TextPrinterSwitchStringByOptionChosen,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_EraseTextWindowIfKeyPressed,
+ TTVcmd_StartAnimNpcWalkIntoGrass,
+ TTVcmd_DudeMoveUp,
+ TTVcmd_DudeMoveRight,
+ TTVcmd_TaskBattleOrFadeByOptionChosen,
+ TTVcmd_TextPrinterSwitchStringByOptionChosen2,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_EraseTextWindowIfKeyPressed,
+ TTVcmd_DudeTurnLeft,
+ TTVcmd_DudeMoveLeft,
+ TTVcmd_RenderAndRemoveBg1EndGraphic,
+ TTVcmd_End,
+};
+
+static void (* const sTMsScript[])(u8) =
+{
+ TTVcmd_TransitionRenderBg2TeachyTvGraphicInitNpcPos,
+ TTVcmd_ClearBg2TeachyTvGraphic,
+ TTVcmd_NpcMoveAndSetupTextPrinter,
+ TTVcmd_IdleIfTextPrinterIsActive,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_TextPrinterSwitchStringByOptionChosen,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_EraseTextWindowIfKeyPressed,
+ TTVcmd_TaskBattleOrFadeByOptionChosen,
+ TTVcmd_TextPrinterSwitchStringByOptionChosen2,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_EraseTextWindowIfKeyPressed,
+ TTVcmd_DudeTurnLeft,
+ TTVcmd_DudeMoveLeft,
+ TTVcmd_RenderAndRemoveBg1EndGraphic,
+ TTVcmd_End,
+};
+
+static void (* const sRegisterKeyItemScript[])(u8) =
+{
+ TTVcmd_TransitionRenderBg2TeachyTvGraphicInitNpcPos,
+ TTVcmd_ClearBg2TeachyTvGraphic,
+ TTVcmd_NpcMoveAndSetupTextPrinter,
+ TTVcmd_IdleIfTextPrinterIsActive,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_TextPrinterSwitchStringByOptionChosen,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_EraseTextWindowIfKeyPressed,
+ TTVcmd_TaskBattleOrFadeByOptionChosen,
+ TTVcmd_TextPrinterSwitchStringByOptionChosen2,
+ TTVcmd_IdleIfTextPrinterIsActive2,
+ TTVcmd_EraseTextWindowIfKeyPressed,
+ TTVcmd_DudeTurnLeft,
+ TTVcmd_DudeMoveLeft,
+ TTVcmd_RenderAndRemoveBg1EndGraphic,
+ TTVcmd_End,
+};
+
+static void TeachyTvCallback(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ DoScheduledBgTilemapCopiesToVram();
+ UpdatePaletteFade();
+}
+
+static void TeachyTvVblankHandler(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void InitTeachyTvController(u8 mode, MainCallback cb)
+{
+ sStaticResources.mode = mode;
+ sStaticResources.callback = cb;
+ if (mode == 0)
+ {
+ sStaticResources.scrollOffset = 0;
+ sStaticResources.selectedRow = 0;
+ sStaticResources.whichScript = TTVSCR_BATTLE;
+ }
+ if (mode == 1)
+ {
+ sStaticResources.mode = 0;
+ }
+ SetMainCallback2(TeachyTvMainCallback);
+}
+
+void CB2_ReturnToTeachyTV(void)
+{
+ if (sStaticResources.mode == 1)
+ InitTeachyTvController(1, sStaticResources.callback);
+ else
+ InitTeachyTvController(2, sStaticResources.callback);
+}
+
+void SetTeachyTvControllerModeToResume(void)
+{
+ sStaticResources.mode = 1;
+}
+
+static void TeachyTvMainCallback(void)
+{
+ u8 taskId;
+ struct Task *taskAddr;
+
+ switch (gMain.state)
+ {
+ case 0:
+ sResources = AllocZeroed(sizeof(struct TeachyTvBuf));
+ sResources->savedCallback = NULL;
+ sResources->grassAnimDisabled = 0;
+ sResources->scrollIndicatorArrowPairId = 0xFF;
+ SetVBlankHBlankCallbacksToNull();
+ ClearScheduledBgCopiesToVram();
+ ScanlineEffect_Stop();
+ FreeAllSpritePalettes();
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ TeachyTvSetupBg();
+ TeachyTvLoadGraphic();
+ ++gMain.state;
+ break;
+ case 1:
+ if (FreeTempTileDataBuffersIfPossible() == TRUE)
+ return;
+ TeachyTvCreateAndRenderRbox();
+ TeachyTvInitIo();
+ if (sStaticResources.mode == 2)
+ {
+ taskId = CreateTask(TeachyTvPostBattleFadeControl, 0);
+ gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
+ TeachyTvSetupPostBattleWindowAndObj(taskId);
+ }
+ else
+ {
+ taskId = CreateTask(TeachyTvOptionListController, 0);
+ gTasks[taskId].data[0] = TeachyTvSetupWindow();
+ gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
+ TeachyTvSetupScrollIndicatorArrowPair();
+ PlayNewMapMusic(BGM_FRLG_TEACHY_TV);
+ TeachyTvSetWindowRegs();
+ }
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
+ ScheduleBgCopyTilemapToVram(2);
+ ScheduleBgCopyTilemapToVram(3);
+ sub_812B1E0(9); // help system something
+ BlendPalettes(0xFFFFFFFF, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ SetVBlankCallback(TeachyTvVblankHandler);
+ SetMainCallback2(TeachyTvCallback);
+ break;
+ }
+}
+
+static void TeachyTvSetupBg(void)
+{
+ ResetAllBgsCoordinatesAndBgCntRegs();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sBgTemplates, 4);
+ SetBgTilemapBuffer(1, sResources->buffer1);
+ SetBgTilemapBuffer(2, sResources->buffer2);
+ SetBgTilemapBuffer(3, sResources->buffer3);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0x3040);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ ChangeBgX(3, 0x1000, 2);
+ ChangeBgY(3, 0x2800, 1);
+ sResources->grassAnimCounterLo = 0;
+ sResources->grassAnimCounterHi = 3;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+}
+
+static void TeachyTvLoadGraphic(void)
+{
+ u16 src = RGB_BLACK;
+ ResetTempTileDataBuffers();
+ DecompressAndCopyTileDataToVram(1, gUnknown_8E86240, 0, 0, 0);
+ LZDecompressWram(gUnknown_8E86BE8, sResources->buffer1);
+ LZDecompressWram(gUnknown_8E86D6C, sResources->buffer4);
+ LoadCompressedPalette(gUnknown_8E86F98, 0, 0x80);
+ LoadPalette(&src, 0, sizeof(src));
+ LoadSpritePalette(&gUnknown_83A5348);
+ TeachyTvLoadBg3Map(sResources->buffer3);
+}
+
+static void TeachyTvCreateAndRenderRbox(void)
+{
+ InitWindows(sWindowTemplates);
+ DeactivateAllTextPrinters();
+ FillWindowPixelBuffer(0, 0xCC);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ CopyWindowToVram(0, 2);
+}
+
+static u8 TeachyTvSetupWindow(void)
+{
+ gMultiuseListMenuTemplate = sListMenuTemplate;
+ gMultiuseListMenuTemplate.windowId = 1;
+ gMultiuseListMenuTemplate.moveCursorFunc = TeachyTvAudioByInput;
+ if (!CheckBagHasItem(ITEM_TM_CASE, 1))
+ {
+ gMultiuseListMenuTemplate.items = sListMenuItems_NoTMCase;
+ gMultiuseListMenuTemplate.totalItems = 5;
+ gMultiuseListMenuTemplate.maxShowed = 5;
+ gMultiuseListMenuTemplate.upText_Y = (gMultiuseListMenuTemplate.upText_Y + 8) & 0xF;
+ }
+ return ListMenuInit(
+ &gMultiuseListMenuTemplate,
+ sStaticResources.scrollOffset,
+ sStaticResources.selectedRow
+ );
+}
+
+static void TeachyTvSetupScrollIndicatorArrowPair(void)
+{
+ if (!CheckBagHasItem(ITEM_TM_CASE, 1))
+ {
+ struct TeachyTvBuf * temp = sResources;
+ temp->scrollIndicatorArrowPairId = 0xFF;
+ }
+ else
+ {
+ sResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPair(&sScrollIndicatorArrowPair, &(sStaticResources.scrollOffset));
+ }
+}
+
+static void TeachyTvRemoveScrollIndicatorArrowPair(void)
+{
+ if (sResources->scrollIndicatorArrowPairId != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(sResources->scrollIndicatorArrowPairId);
+ sResources->scrollIndicatorArrowPairId = 0xFF;
+ }
+}
+
+static void TeachyTvAudioByInput(s32 notUsed, bool8 play, struct ListMenu *notUsedAlt)
+{
+ if (play != TRUE)
+ PlaySE(SE_SELECT);
+}
+
+static void TeachyTvInitIo(void)
+{
+ SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x1F);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0xCC);
+ SetGpuReg(REG_OFFSET_BLDY, 0x5);
+}
+
+static u8 TeachyTvSetupObjEventAndOam(void)
+{
+ u8 objId = AddPseudoEventObject(90, SpriteCallbackDummy, 0, 0, 8);
+ gSprites[objId].oam.priority = 2;
+ gSprites[objId].invisible = 1;
+ return objId;
+}
+
+static void TeachyTvSetSpriteCoordsAndSwitchFrame(u8 objId, u16 x, u16 y, u8 frame)
+{
+ gSprites[objId].pos2.x = x;
+ gSprites[objId].pos2.y = y;
+ gSprites[objId].invisible = 0;
+ StartSpriteAnim(&gSprites[objId], frame);
+}
+
+static void TeachyTvSetWindowRegs(void)
+{
+ SetGpuReg(REG_OFFSET_WIN0V, 0xC64);
+ SetGpuReg(REG_OFFSET_WIN0H, 0x1CD4);
+}
+
+static void TeachyTvClearWindowRegs(void)
+{
+ SetGpuReg(REG_OFFSET_WIN0V, 0x0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0x0);
+}
+
+static void TeachyTvBg2AnimController(void)
+{
+ u16 * tilemapBuffer = GetBgTilemapBuffer(2);
+ u8 i, j;
+ for (i = 1; i < 13; i++)
+ {
+ for (j = 2; j < 28; j++)
+ {
+ tilemapBuffer[32 * i + j] = ((Random() & 3) << 10) + 0x301F;
+ }
+ }
+ ScheduleBgCopyTilemapToVram(2);
+}
+
+static void TeachyTvSetupPostBattleWindowAndObj(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ struct Sprite *objAddr = &gSprites[data[1]];
+
+ ClearWindowTilemap(1);
+ TeachyTvClearWindowRegs();
+ switch (sStaticResources.whichScript)
+ {
+ case TTVSCR_BATTLE:
+ case TTVSCR_STATUS:
+ case TTVSCR_MATCHUPS:
+ case TTVSCR_CATCHING:
+ TeachyTvSetSpriteCoordsAndSwitchFrame(data[1], 0x78, 0x38, 0);
+ ChangeBgX(3, 0x3000, 1);
+ ChangeBgY(3, 0x3000, 2);
+ sResources->grassAnimCounterLo += 3;
+ sResources->grassAnimCounterHi -= 3;
+ break;
+ case TTVSCR_TMS:
+ case TTVSCR_REGISTER:
+ TeachyTvSetSpriteCoordsAndSwitchFrame(data[1], 0x78, 0x38, 0);
+ break;
+ }
+
+ data[4] = 0;
+ data[5] = 0;
+ TeachyTvGrassAnimationMain(taskId, objAddr->pos2.x, objAddr->pos2.y, 0, 1);
+}
+
+static void TeachyTvInitTextPrinter(const u8 *text)
+{
+ gTextFlags.autoScroll = 0;
+ AddTextPrinterParameterized2(0, 4, text, GetTextSpeedSetting(), 0, 1, 0xC, 3);
+}
+
+static void TeachyTvFree(void)
+{
+ Free(sResources);
+ sResources = NULL;
+ FreeAllWindowBuffers();
+}
+
+static void TeachyTvQuitBeginFade(u8 taskId)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ gTasks[taskId].func = TeachyTvQuitFadeControlAndTaskDel;
+}
+
+static void TeachyTvQuitFadeControlAndTaskDel(u8 taskId)
+{
+ if (!(gPaletteFade.active))
+ {
+ if (sResources->savedCallback != NULL)
+ {
+ SetMainCallback2(sResources->savedCallback);
+ }
+ else
+ {
+ Overworld_PlaySpecialMapMusic();
+ SetMainCallback2(sStaticResources.callback);
+ }
+ TeachyTvFree();
+ DestroyTask(taskId);
+ }
+}
+
+static void TeachyTvOptionListController(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ s32 input;
+
+ TeachyTvBg2AnimController();
+ if (!gPaletteFade.active)
+ {
+ input = ListMenu_ProcessInput(data[0]);
+ ListMenuGetScrollAndRow(data[0], &sStaticResources.scrollOffset, &sStaticResources.selectedRow);
+ if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != ReturnToBagFromKeyItem))
+ {
+ PlaySE(SE_SELECT);
+ TeachyTvQuitBeginFade(taskId);
+ }
+ else
+ {
+ switch (input)
+ {
+ case -1:
+ break;
+ case -2:
+ PlaySE(SE_SELECT);
+ TeachyTvQuitBeginFade(taskId);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sStaticResources.whichScript = input;
+ DestroyListMenuTask(data[0], &sStaticResources.scrollOffset, &sStaticResources.selectedRow);
+ TeachyTvClearWindowRegs();
+ ClearWindowTilemap(1);
+ ScheduleBgCopyTilemapToVram(0);
+ TeachyTvRemoveScrollIndicatorArrowPair();
+ data[3] = 0;
+ data[2] = 0;
+ gTasks[taskId].func = TeachyTvRenderMsgAndSwitchClusterFuncs;
+ break;
+ }
+ }
+ }
+}
+
+static void TTVcmd_TransitionRenderBg2TeachyTvGraphicInitNpcPos(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ TeachyTvBg2AnimController();
+ if (++data[2] > 63)
+ {
+ CopyToBgTilemapBufferRect_ChangePalette(2, sResources->buffer4, 0, 0, 0x20, 0x20, 0x11);
+ TeachyTvSetSpriteCoordsAndSwitchFrame(data[1], 8, 0x38, 7);
+ ScheduleBgCopyTilemapToVram(2);
+ data[2] = 0;
+ ++data[3];
+ PlayNewMapMusic(BGM_FRLG_FOLLOW_ME);
+ }
+}
+
+static void TTVcmd_ClearBg2TeachyTvGraphic(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (++data[2] == 134)
+ {
+ FillBgTilemapBufferRect_Palette0(2, 0, 2, 1, 0x1A, 0xC);
+ ScheduleBgCopyTilemapToVram(2);
+ data[2] = 0;
+ ++data[3];
+ }
+}
+
+static void TTVcmd_NpcMoveAndSetupTextPrinter(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ struct Sprite * spriteAddr = &gSprites[data[1]];
+ if (data[2] != 35)
+ ++data[2];
+ else {
+ if (spriteAddr->pos2.x == 0x78)
+ {
+ StartSpriteAnim(&gSprites[data[1]], 0);
+ TeachyTvInitTextPrinter(gTeachyTvText_PokeDudeSaysHello);
+ data[2] = 0;
+ ++data[3];
+ }
+ else
+ ++spriteAddr->pos2.x;
+ }
+}
+
+static void TTVcmd_IdleIfTextPrinterIsActive(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!RunTextPrinters_CheckActive(0))
+ ++data[3];
+}
+
+static void TeachyTvRenderMsgAndSwitchClusterFuncs(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (JOY_NEW(B_BUTTON))
+ {
+ sResources->grassAnimDisabled = 1;
+ TeachyTvSetSpriteCoordsAndSwitchFrame(data[1], 0, 0, 0);
+ FillWindowPixelBuffer(0, 0xCC);
+ CopyWindowToVram(0, 2);
+ TeachyTvClearBg1EndGraphicText();
+ data[2] = 0;
+ data[3] = 0;
+ gTasks[taskId].func = TTVcmd_End;
+ }
+ else
+ {
+ static void (* const * const array[])(u8) =
+ {
+ sBattleScript,
+ sStatusScript,
+ sMatchupsScript,
+ sCatchingScript,
+ sTMsScript,
+ sRegisterKeyItemScript,
+ };
+ void (*const *cluster)(u8) = array[sStaticResources.whichScript];
+ cluster[data[3]](taskId);
+ }
+}
+
+static void TTVcmd_TextPrinterSwitchStringByOptionChosen(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ static const u8 *const texts[] = {
+ gTeachyTvText_BattleScript1,
+ gTeachyTvText_StatusScript1,
+ gTeachyTvText_MatchupsScript1,
+ gTeachyTvText_CatchingScript1,
+ gTeachyTvText_TMsScript1,
+ gTeachyTvText_RegisterScript1,
+ };
+ TeachyTvInitTextPrinter(texts[sStaticResources.whichScript]);
+ ++data[3];
+}
+
+static void TTVcmd_TextPrinterSwitchStringByOptionChosen2(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ static const u8 *const texts[] =
+ {
+ gTeachyTvText_BattleScript2,
+ gTeachyTvText_StatusScript2,
+ gTeachyTvText_MatchupsScript2,
+ gTeachyTvText_CatchingScript2,
+ gTeachyTvText_TMsScript2,
+ gTeachyTvText_RegisterScript2,
+ };
+ TeachyTvInitTextPrinter(texts[sStaticResources.whichScript]);
+ ++data[3];
+}
+
+static const u16 sBg1EndGraphic[] =
+{
+ 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8,
+ 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8,
+};
+
+static const struct Subsprite sSubspriteArray[] =
+{
+ {
+ .x = -0x8,
+ .y = -0x8,
+ .shape = 0x1,
+ .size = 0x0,
+ .tileOffset = 0x0,
+ .priority = 0x3,
+ },
+ {
+ .x = -0x8,
+ .y = 0x0,
+ .shape = 0x1,
+ .size = 0x0,
+ .tileOffset = 0x2,
+ .priority = 0x2,
+ },
+};
+
+static const struct SubspriteTable sSubspriteTableArray[] =
+{
+ {
+ .subspriteCount = 0,
+ .subsprites = NULL,
+ },
+ {
+ .subspriteCount = 2,
+ .subsprites = sSubspriteArray,
+ },
+};
+
+static const u8 sGrassAnimArray[] =
+{
+ 0, 0, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 0, 0,
+};
+
+static void TTVcmd_IdleIfTextPrinterIsActive2(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!RunTextPrinters_CheckActive(0))
+ ++data[3];
+}
+
+static void TTVcmd_EraseTextWindowIfKeyPressed(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
+ {
+ FillWindowPixelBuffer(0, 0xCC);
+ CopyWindowToVram(0, 2);
+ ++data[3];
+ }
+}
+
+static void TTVcmd_StartAnimNpcWalkIntoGrass(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ StartSpriteAnim(&gSprites[data[1]], 5);
+ data[2] = 0;
+ data[4] = 0;
+ data[5] = 1;
+ ++data[3];
+}
+
+static void TTVcmd_DudeMoveUp(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ struct Sprite *obj = &gSprites[data[1]];
+ ChangeBgY(3, 0x100, 2);
+ if (!(++data[2] & 0xF))
+ {
+ --sResources->grassAnimCounterHi;
+ TeachyTvGrassAnimationMain(taskId, obj->pos2.x, obj->pos2.y, 0, 0);
+ }
+ if (data[2] == 48)
+ {
+ data[2] = 0;
+ data[4] = -1;
+ data[5] = 0;
+ StartSpriteAnim(obj, 7);
+ ++data[3];
+ }
+}
+
+static void TTVcmd_DudeMoveRight(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ struct Sprite *obj = &gSprites[data[1]];
+ ChangeBgX(3, 0x100, 1);
+ if (!(++data[2] & 0xF))
+ ++sResources->grassAnimCounterLo;
+ if (!((data[2] + 8) & 0xF))
+ TeachyTvGrassAnimationMain(taskId, obj->pos2.x + 8, obj->pos2.y, 0, 0);
+ if (data[2] == 0x30)
+ {
+ data[2] = 0;
+ data[4] = 0;
+ data[5] = 0;
+ StartSpriteAnim(obj, 3);
+ ++data[3];
+ }
+}
+
+static void TTVcmd_DudeTurnLeft(u8 taskId)
+{
+
+ s16 *data = gTasks[taskId].data;
+ struct Sprite *objAddr = &gSprites[data[1]];
+ StartSpriteAnim(objAddr, 6);
+ ++data[3];
+ data[4] = 0;
+ data[5] = 0;
+ TeachyTvGrassAnimationMain(taskId, objAddr->pos2.x, objAddr->pos2.y, 0, 0);
+}
+
+static void TTVcmd_DudeMoveLeft(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ struct Sprite *objAddr = &gSprites[data[1]];
+
+ if (!(objAddr->pos2.x & 0xF))
+ TeachyTvGrassAnimationMain(taskId, objAddr->pos2.x - 8, objAddr->pos2.y, 0, 0);
+ if (objAddr->pos2.x == 8)
+ ++data[3];
+ else
+ --objAddr->pos2.x;
+}
+
+static void TTVcmd_RenderAndRemoveBg1EndGraphic(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!data[2])
+ {
+ CopyToBgTilemapBufferRect_ChangePalette(1, sBg1EndGraphic, 20, 10, 8, 2, 0x11);
+ ScheduleBgCopyTilemapToVram(1);
+ }
+ if (++data[2] > 126)
+ {
+ TeachyTvClearBg1EndGraphicText();
+ data[2] = 0;
+ ++data[3];
+ }
+}
+
+static void TeachyTvClearBg1EndGraphicText(void)
+{
+ FillBgTilemapBufferRect_Palette0(1, 0, 20, 10, 8, 2);
+ ScheduleBgCopyTilemapToVram(1);
+}
+
+static void TTVcmd_End(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (data[2] == 0)
+ PlayNewMapMusic(BGM_FRLG_TEACHY_TV);
+ TeachyTvBg2AnimController();
+ if (++data[2] > 63)
+ {
+ data[2] = 0;
+ data[3] = 0;
+ data[0] = TeachyTvSetupWindow();
+ gTasks[taskId].func = TeachyTvOptionListController;
+ PutWindowTilemap(0);
+ TeachyTvSetupScrollIndicatorArrowPair();
+ TeachyTvSetWindowRegs();
+ ScheduleBgCopyTilemapToVram(0);
+ ChangeBgX(3, 0x0, 0);
+ ChangeBgY(3, 0x0, 0);
+ ChangeBgX(3, 0x1000, 2);
+ ChangeBgY(3, 0x2800, 1);
+ sResources->grassAnimCounterLo = 0;
+ sResources->grassAnimCounterHi = 3;
+ sResources->grassAnimDisabled = 0;
+ }
+}
+
+static void TTVcmd_TaskBattleOrFadeByOptionChosen(u8 taskId)
+{
+ switch (sStaticResources.whichScript)
+ {
+ case TTVSCR_BATTLE:
+ case TTVSCR_STATUS:
+ case TTVSCR_MATCHUPS:
+ case TTVSCR_CATCHING:
+ TeachyTvPrepBattle(taskId);
+ break;
+ case TTVSCR_TMS:
+ case TTVSCR_REGISTER:
+ sResources->savedCallback = TeachyTvSetupBagItemsByOptionChosen;
+ TeachyTvQuitBeginFade(taskId);
+ break;
+ }
+}
+
+static void TeachyTvSetupBagItemsByOptionChosen(void)
+{
+ if (sStaticResources.whichScript == TTVSCR_TMS)
+ sub_810B108(10);
+ else
+ sub_810B108(9);
+}
+
+static void TeachyTvPostBattleFadeControl(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!(gPaletteFade.active))
+ {
+ data[3] = sWhereToReturnToFromBattle[sStaticResources.whichScript];
+ gTasks[taskId].func = TeachyTvRenderMsgAndSwitchClusterFuncs;
+ }
+}
+
+static void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 mode)
+{
+ struct Sprite *obj;
+ u8 spriteId;
+
+ if (sResources->grassAnimDisabled != 1 && TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj(x - 0x10, y))
+ {
+ spriteId = CreateSprite(gUnknown_83A0010[4], 0, 0, subpriority);
+ obj = &gSprites[spriteId];
+ obj->pos2.x = x;
+ obj->pos2.y = y + 8;
+ obj->callback = TeachyTvGrassAnimationObjCallback;
+ obj->data[0] = taskId;
+ if (mode == 1)
+ {
+ SeekSpriteAnim(obj, 4);
+ obj->oam.priority = 2;
+ }
+ else
+ {
+ SetSubspriteTables(obj, sSubspriteTableArray);
+ obj->subspriteTableNum = 0;
+ obj->subspriteMode = 1;
+ }
+ }
+}
+
+static void TeachyTvGrassAnimationObjCallback(struct Sprite *sprite)
+{
+ s16 diff1, diff2;
+ s16 *data = gTasks[sprite->data[0]].data;
+ struct Sprite *objAddr = &gSprites[data[1]];
+
+ if (sResources->grassAnimDisabled == 1)
+ DestroySprite(sprite);
+ else
+ {
+ if (sprite->animCmdIndex == 0)
+ sprite->subspriteTableNum = 1;
+ else
+ sprite->subspriteTableNum = 0;
+ sprite->pos2.x += data[4];
+ sprite->pos2.y += data[5];
+ if (sprite->animEnded)
+ {
+ sprite->subpriority = 0;
+ diff1 = sprite->pos2.x - objAddr->pos2.x;
+ diff2 = sprite->pos2.y - objAddr->pos2.y;
+ if (diff1 <= -16 || diff1 >= 16 || diff2 <= -16 || diff2 >= 24)
+ DestroySprite(sprite);
+ }
+ }
+}
+
+static u8 TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj(s16 x, s16 y)
+{
+ const u8 * arr;
+ struct TeachyTvBuf *ptr;
+ int high, low;
+ if ((x < 0) || (y < 0))
+ return 0;
+ arr = sGrassAnimArray;
+ high = ((y >> 4) + sResources->grassAnimCounterHi) << 4;
+ low = ((x >> 4) + sResources->grassAnimCounterLo);
+ return arr[high+low];
+}
+
+static void TeachyTvPrepBattle(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ TeachyTvFree();
+ gSpecialVar_0x8004 = sStaticResources.whichScript;
+ gMain.savedCallback = TeachyTvRestorePlayerPartyCallback;
+ SavePlayerParty();
+ sub_8159F40();
+ PlayMapChosenOrBattleBGM(MUS_DUMMY);
+ if (sStaticResources.whichScript == TTVSCR_BATTLE)
+ data[6] = 9;
+ else
+ data[6] = 8;
+ data[7] = 0;
+ gTasks[taskId].func = TeachyTvPreBattleAnimAndSetBattleCallback;
+}
+
+static void TeachyTvPreBattleAnimAndSetBattleCallback(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ switch (data[7])
+ {
+ case 0:
+ sub_80D08B8(data[6]);
+ ++data[7];
+ break;
+ case 1:
+ if (sub_80D08F8())
+ {
+ SetMainCallback2(sub_800FD9C);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void TeachyTvRestorePlayerPartyCallback(void)
+{
+ LoadPlayerParty();
+ if (gBattleOutcome == B_OUTCOME_DREW)
+ SetTeachyTvControllerModeToResume();
+ else
+ PlayNewMapMusic(BGM_FRLG_FOLLOW_ME);
+ CB2_ReturnToTeachyTV();
+}
+
+static void TeachyTvLoadBg3Map(u16 *buffer)
+{
+ u16 * bgTilesBuffer;
+ u8 * mapTilesRowBuffer;
+ u16 i, j, k;
+ u16 currentBlockIdx;
+ void * tilesetsBuffer;
+ void * palIndicesBuffer;
+ u16 numMapTilesRows = 0;
+ const struct MapData *layout = &Route1_Layout;
+ u16 * blockIndicesBuffer = AllocZeroed(0x800);
+ tilesetsBuffer = AllocZeroed(0x8000);
+ palIndicesBuffer = Alloc(16);
+ memset(palIndicesBuffer, 0xFF, 16);
+
+ TeachyTvLoadMapTilesetToBuffer(layout->primaryTileset, tilesetsBuffer, 0x280);
+ TeachyTvLoadMapTilesetToBuffer(layout->secondaryTileset, tilesetsBuffer + 0x5000, 0x180);
+
+ for (i = 0; i < 9; i++)
+ {
+ for (j = 0; j < 16; j++)
+ {
+ currentBlockIdx = layout->map[8 + (i + 6) * layout->width + j] & 0x3FF;
+ for (k = 0; k < (i << 4) + j; k++)
+ {
+ if (blockIndicesBuffer[k] == 0)
+ break;
+ if (blockIndicesBuffer[k] == currentBlockIdx)
+ break;
+ }
+ if (blockIndicesBuffer[k] == 0)
+ {
+ blockIndicesBuffer[k] = currentBlockIdx;
+ numMapTilesRows++;
+ }
+ TeachyTvPushBackNewMapPalIndexArrayEntry(layout, &buffer[64 * i + 2 * j], palIndicesBuffer, currentBlockIdx, k);
+ }
+ }
+
+ bgTilesBuffer = Alloc(numMapTilesRows * 0x80);
+ mapTilesRowBuffer = Alloc(0x80);
+ for (i = 0; i < numMapTilesRows; i++)
+ {
+ memset(mapTilesRowBuffer, 0, 0x80);
+ if (blockIndicesBuffer[i] < 0x280)
+ {
+ TeachyTvComputeMapTilesFromTilesetAndMetaTiles(layout->primaryTileset->metatiles + blockIndicesBuffer[i] * 16, mapTilesRowBuffer, tilesetsBuffer);
+ }
+ else
+ {
+ TeachyTvComputeMapTilesFromTilesetAndMetaTiles(layout->secondaryTileset->metatiles + (blockIndicesBuffer[i] - 0x280) * 16, mapTilesRowBuffer, tilesetsBuffer);
+ }
+ CpuFastCopy(mapTilesRowBuffer, bgTilesBuffer + i * 0x40, 0x80);
+ }
+
+ LoadBgTiles(3, bgTilesBuffer, numMapTilesRows * 0x80, 0);
+ TeachyTvLoadMapPalette(layout, palIndicesBuffer);
+
+ Free(mapTilesRowBuffer);
+ Free(bgTilesBuffer);
+ Free(palIndicesBuffer);
+ Free(tilesetsBuffer);
+ Free(blockIndicesBuffer);
+}
+
+static void TeachyTvLoadMapTilesetToBuffer(struct Tileset *ts, u8 *dstBuffer, u16 size)
+{
+ if (ts)
+ {
+ if (!ts->isCompressed)
+ CpuFastSet(ts->tiles, dstBuffer, 8 * size);
+ else
+ LZDecompressWram(ts->tiles, dstBuffer);
+ }
+}
+
+static void TeachyTvPushBackNewMapPalIndexArrayEntry(const struct MapData *mStruct, u16 *buf1, u8 *palIndexArray, u16 mapEntry, u16 offset)
+{
+ u16 * metaTileEntryAddr = mapEntry <= 0x27F ? &((u16*)(mStruct->primaryTileset->metatiles))[8 * mapEntry] : &((u16*)(mStruct->secondaryTileset->metatiles))[8 * (mapEntry - 0x280)];
+ buf1[0] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[0]) << 12) + 4 * offset;
+ buf1[1] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[1]) << 12) + 4 * offset + 1;
+ buf1[32] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[2]) << 12) + 4 * offset + 2;
+ buf1[33] = (TeachyTvComputePalIndexArrayEntryByMetaTile(palIndexArray, metaTileEntryAddr[3]) << 12) + 4 * offset + 3;
+}
+
+static void TeachyTvComputeMapTilesFromTilesetAndMetaTiles(u16 *metaTilesArray, u8 *blockBuf, u8 *tileset)
+{
+ TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(blockBuf, &tileset[0x20 * (*metaTilesArray & 0x3FF)], (*metaTilesArray >> 10) & 3);
+ TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(blockBuf, &tileset[0x20 * (metaTilesArray[4] & 0x3FF)], (metaTilesArray[4] >> 10) & 3);
+ TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(blockBuf + 0x20, &tileset[0x20 * (metaTilesArray[1] & 0x3FF)], (metaTilesArray[1] >> 10) & 3);
+ TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(blockBuf + 0x20, &tileset[0x20 * (metaTilesArray[5] & 0x3FF)], (metaTilesArray[5] >> 10) & 3);
+ TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(blockBuf + 0x40, &tileset[0x20 * (metaTilesArray[2] & 0x3FF)], (metaTilesArray[2] >> 10) & 3);
+ TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(blockBuf + 0x40, &tileset[0x20 * (metaTilesArray[6] & 0x3FF)], (metaTilesArray[6] >> 10) & 3);
+ blockBuf += 0x60;
+ TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(blockBuf, &tileset[0x20 * (metaTilesArray[3] & 0x3FF)], (metaTilesArray[3] >> 10) & 3);
+ TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(blockBuf, &tileset[0x20 * (metaTilesArray[7] & 0x3FF)], (metaTilesArray[7] >> 10) & 3);
+}
+
+static void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *tileset, u8 metaTile)
+{
+ u8 i, j;
+ u8 * buffer = AllocZeroed(0x20);
+ u8 * src = AllocZeroed(0x20);
+ CpuFastSet(tileset, buffer, 8);
+ if (metaTile & 1)
+ {
+ for (i = 0; i < 8; ++i)
+ {
+ for (j = 0; j < 4; ++j)
+ {
+ u32 offset = j - 3;
+ u8 value = buffer[(i << 2) - offset];
+ src[(i << 2) + j] = ((value & 0xF) << 4) + ((value & 0xF0) >> 4);
+ }
+ }
+ CpuFastSet(src, buffer, 8);
+ }
+ if (metaTile & 2)
+ {
+ for (i = 0; i < 8; ++i)
+ memcpy(&src[4 * i], &buffer[4 * (7 - i)], 4);
+ CpuFastSet(src, buffer, 8);
+ }
+ for (i = 0; i < 32; ++i)
+ {
+ if (buffer[i] & 0xF0)
+ blockBuf[i] = (blockBuf[i] & 0xF) + (buffer[i] & 0xF0);
+ if (buffer[i] & 0xF)
+ blockBuf[i] = (blockBuf[i] & 0xF0) + (buffer[i] & 0xF);
+ }
+ Free(src);
+ Free(buffer);
+}
+
+static u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTile)
+{
+ u16 i;
+ int firstEntry;
+ int temp;
+ u32 pal = metaTile >> 12;
+ i = 0;
+ firstEntry = *palIndexArrayBuf;
+ if (firstEntry != pal)
+ {
+ if (firstEntry == 0xFF)
+ {
+ *palIndexArrayBuf = pal;
+ }
+ else
+ {
+ while (++i < 16)
+ {
+ temp = palIndexArrayBuf[i];
+ if (temp == pal)
+ break;
+ if (temp == 0xFF)
+ {
+ palIndexArrayBuf[i] = pal;
+ break;
+ }
+ }
+ }
+ }
+ return (0xF - i);
+}
+
+static void TeachyTvLoadMapPalette(const struct MapData * mStruct, const u8 * palIndexArray)
+{
+ u8 i;
+ const struct Tileset * ts;
+ u16 * dest;
+
+ for (i = 0; i < 16; i++)
+ {
+ if (palIndexArray[i] == 0xFF)
+ break;
+ if (palIndexArray[i] > 6)
+ dest = (u16 *)mStruct->secondaryTileset->palettes + 0x10 * palIndexArray[i];
+ else
+ dest = (u16 *)mStruct->primaryTileset->palettes + 0x10 * palIndexArray[i];
+ LoadPalette(dest, 0x10 * (15 - i), 0x20);
+ }
+}
diff --git a/src/text.c b/src/text.c
index f84420352..d36a448ad 100644
--- a/src/text.c
+++ b/src/text.c
@@ -16,10 +16,9 @@ extern void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 wid
extern void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight);
extern u8 GetKeypadIconWidth(u8 keypadIconId);
extern void CopyWindowToVram(u8 windowId, u8 mode);
-extern u16 Font6Func(struct TextPrinter *textPrinter);
extern s32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese);
extern void PlaySE(u16 songNum);
-extern u8* UnkTextUtil_GetPtrI(u8 a1);
+extern u8* DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 a1);
TextFlags gTextFlags;
@@ -1545,7 +1544,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
}
case 0xF7:
if (bufferPointer == NULL)
- bufferPointer = UnkTextUtil_GetPtrI(*++str);
+ bufferPointer = DynamicPlaceholderTextUtil_GetPlaceholderPtr(*++str);
while (*bufferPointer != 0xFF)
{
glyphWidth = func(*bufferPointer++, isJapanese);
diff --git a/src/text_window.c b/src/text_window.c
index 90db8f599..98f82e818 100644
--- a/src/text_window.c
+++ b/src/text_window.c
@@ -31,19 +31,19 @@ void sub_814FD6C(u8 bgId, u16 destOffset, u8 palIdx)
void sub_814FDA0(u8 bgId, u16 destOffset, u8 palIdx)
{
- LoadBgTiles(bgId, gUnknown_8471A4C, 0x120, destOffset);
+ LoadBgTiles(bgId, gStdFrame0, 0x120, destOffset);
LoadPalette(stdpal_get(3), palIdx, 32);
}
void sub_814FDD4(u8 bgId, u16 destOffset)
{
- LoadBgTiles(bgId, gUnknown_8471B6C, 0x280, destOffset);
+ LoadBgTiles(bgId, gStdFrame1, 0x280, destOffset);
}
void sub_814FDF4(u8 bgId, u8 frameType, u16 destOffset, u8 palIdx)
{
- LoadBgTiles(bgId, gUnknown_8471E8C[frameType].tiles, 0x120, destOffset);
- LoadPalette(gUnknown_8471E8C[frameType].palette, palIdx, 32);
+ LoadBgTiles(bgId, gUserFrames[frameType].tiles, 0x120, destOffset);
+ LoadPalette(gUserFrames[frameType].palette, palIdx, 32);
}
void LoadUserWindowBorderGfx(u8 windowId, u16 destOffset, u8 palIdx)
@@ -57,7 +57,7 @@ void sub_814FE6C(u8 windowId, u16 destOffset, u8 palIdx)
LoadPalette(stdpal_get(2), palIdx, 32);
}
-void sub_814FEAC(u8 windowId, u16 destOffset, u8 palIdx)
+void TextWindow_LoadResourcesStdFrame0(u8 windowId, u16 destOffset, u8 palIdx)
{
LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_841F1C8, 0x280, destOffset);
LoadPalette(stdpal_get(0), palIdx, 32);
@@ -69,29 +69,29 @@ void sub_814FEEC(u8 windowId, u16 destOffset, u8 palIdx)
LoadPalette(stdpal_get(1), palIdx, 32);
}
-void sub_814FF2C(u8 windowId, u16 destOffset, u8 palIdx)
+void TextWindow_SetStdFrame0_WithPal(u8 windowId, u16 destOffset, u8 palIdx)
{
- LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8471A4C, 0x120, destOffset);
+ LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gStdFrame0, 0x120, destOffset);
LoadPalette(stdpal_get(3), palIdx, 32);
}
void sub_814FF6C(u8 windowId, u16 destOffset)
{
- LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8471A4C, 0x120, destOffset);
+ LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gStdFrame0, 0x120, destOffset);
}
-void sub_814FF98(u8 windowId, u16 destOffset)
+void TextWindow_LoadTilesStdFrame1(u8 windowId, u16 destOffset)
{
- LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8471B6C, 0x280, destOffset);
+ LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gStdFrame1, 0x280, destOffset);
}
void sub_814FFC4(u8 windowId, u8 frameType, u16 destOffset, u8 palIdx)
{
- LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8471E8C[frameType].tiles, 0x120, destOffset);
- LoadPalette(gUnknown_8471E8C[frameType].palette, palIdx, 32);
+ LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUserFrames[frameType].tiles, 0x120, destOffset);
+ LoadPalette(gUserFrames[frameType].palette, palIdx, 32);
}
-void sub_815001C(u8 windowId, u16 destOffset, u8 palIdx)
+void TextWindow_SetUserSelectedFrame(u8 windowId, u16 destOffset, u8 palIdx)
{
sub_814FFC4(windowId, gSaveBlock2Ptr->optionsWindowFrameType, destOffset, palIdx);
}
diff --git a/src/text_window_graphics.c b/src/text_window_graphics.c
index 347de3d65..e16037a34 100644
--- a/src/text_window_graphics.c
+++ b/src/text_window_graphics.c
@@ -27,8 +27,8 @@ static const u16 gUnknown_84719EC[] = INCBIN_U16("graphics/text_window/unk_84715
static const u16 gUnknown_8471A0C[] = INCBIN_U16("graphics/text_window/unk_84716AC.gbapal");
static const u16 gUnknown_8471A2C[] = INCBIN_U16("graphics/text_window/unk_84717CC.gbapal");
-const u16 gUnknown_8471A4C[] = INCBIN_U16("graphics/text_window/unk_8471A4C.4bpp");
-const u16 gUnknown_8471B6C[] = INCBIN_U16("graphics/text_window/unk_8471B6C.4bpp");
+const u16 gStdFrame0[] = INCBIN_U16("graphics/text_window/unk_8471A4C.4bpp");
+const u16 gStdFrame1[] = INCBIN_U16("graphics/text_window/unk_8471B6C.4bpp");
const u16 gUnknown_8471DEC[][16] = {
INCBIN_U16("graphics/text_window/stdpal_0.gbapal"),
@@ -38,7 +38,7 @@ const u16 gUnknown_8471DEC[][16] = {
INCBIN_U16("graphics/text_window/stdpal_4.gbapal")
};
-const struct TextWindowGraphics gUnknown_8471E8C[] = {
+const struct TextWindowGraphics gUserFrames[] = {
{gUnknown_8470D6C, gUnknown_847190C},
{gUnknown_8470E8C, gUnknown_847192C},
{gUnknown_8470FCC, gUnknown_847194C},
@@ -53,8 +53,8 @@ const struct TextWindowGraphics gUnknown_8471E8C[] = {
const struct TextWindowGraphics * sub_8069788(u8 idx)
{
- if (idx >= 20) // if (idx >= NELEMS(gUnknown_8471E8C))
- return &gUnknown_8471E8C[0];
+ if (idx >= 20) // if (idx >= NELEMS(gUserFrames))
+ return &gUserFrames[0];
else
- return &gUnknown_8471E8C[idx];
+ return &gUserFrames[idx];
}
diff --git a/src/tm_case.c b/src/tm_case.c
index 177d3320f..79e10bcfc 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -290,7 +290,7 @@ static void CB2_Idle(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
@@ -309,7 +309,7 @@ static void CB2_SetUpTMCaseUI_Blocking(void)
break;
if (DoSetUpTMCaseUI() == TRUE)
break;
- if (sub_80BF708() == TRUE)
+ if (MenuHelpers_LinkSomething() == TRUE)
break;
}
}
@@ -321,8 +321,8 @@ static bool8 DoSetUpTMCaseUI(void)
switch (gMain.state)
{
case 0:
- sub_80BF768();
- clear_scheduled_bg_copies_to_vram();
+ SetVBlankHBlankCallbacksToNull();
+ ClearScheduledBgCopiesToVram();
gMain.state++;
break;
case 1:
@@ -359,7 +359,7 @@ static bool8 DoSetUpTMCaseUI(void)
gMain.state++;
break;
case 9:
- sub_809A5E4(&gBagPockets[POCKET_TM_CASE - 1]);
+ SortPocketAndPlaceHMsFirst(&gBagPockets[POCKET_TM_CASE - 1]);
gMain.state++;
break;
case 10:
@@ -426,14 +426,14 @@ static void ResetBufferPointers_NoFree(void)
static void LoadBGTemplates(void)
{
void ** ptr;
- sub_80BF7C8();
+ ResetAllBgsCoordinatesAndBgCntRegs();
ptr = &sTilemapBuffer;
*ptr = AllocZeroed(0x800);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sBGTemplates, NELEMS(sBGTemplates));
SetBgTilemapBuffer(2, *ptr);
- schedule_bg_copy_tilemap_to_vram(1);
- schedule_bg_copy_tilemap_to_vram(2);
+ ScheduleBgCopyTilemapToVram(1);
+ ScheduleBgCopyTilemapToVram(2);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
SetGpuReg(REG_OFFSET_BLDCNT, 0);
ShowBg(0);
@@ -446,12 +446,12 @@ static bool8 HandleLoadTMCaseGraphicsAndPalettes(void)
switch (sTMCaseDynamicResources->seqId)
{
case 0:
- reset_temp_tile_data_buffers();
- decompress_and_copy_tile_data_to_vram(1, gUnknown_8E845D8, 0, 0, 0);
+ ResetTempTileDataBuffers();
+ DecompressAndCopyTileDataToVram(1, gUnknown_8E845D8, 0, 0, 0);
sTMCaseDynamicResources->seqId++;
break;
case 1:
- if (free_temp_tile_data_buffers_if_possible() != TRUE)
+ if (FreeTempTileDataBuffersIfPossible() != TRUE)
{
LZDecompressWram(gUnknown_8E84A24, sTilemapBuffer);
sTMCaseDynamicResources->seqId++;
@@ -469,7 +469,7 @@ static bool8 HandleLoadTMCaseGraphicsAndPalettes(void)
sTMCaseDynamicResources->seqId++;
break;
case 4:
- LoadCompressedObjectPic(&sTMSpriteSheet);
+ LoadCompressedSpriteSheet(&sTMSpriteSheet);
sTMCaseDynamicResources->seqId++;
break;
default:
@@ -496,11 +496,11 @@ static void InitTMCaseListMenuItems(void)
for (i = 0; i < sTMCaseDynamicResources->numTMs; i++)
{
GetTMNumberAndMoveString(sListMenuStringsBuffer[i], pocket->itemSlots[i].itemId);
- sListMenuItemsBuffer[i].unk_00 = sListMenuStringsBuffer[i];
- sListMenuItemsBuffer[i].unk_04 = i;
+ sListMenuItemsBuffer[i].label = sListMenuStringsBuffer[i];
+ sListMenuItemsBuffer[i].index = i;
}
- sListMenuItemsBuffer[i].unk_00 = gText_Close;
- sListMenuItemsBuffer[i].unk_04 = -2;
+ sListMenuItemsBuffer[i].label = gText_Close;
+ sListMenuItemsBuffer[i].index = -2;
gMultiuseListMenuTemplate.items = sListMenuItemsBuffer;
gMultiuseListMenuTemplate.totalItems = sTMCaseDynamicResources->numTMs + 1;
gMultiuseListMenuTemplate.windowId = 0;
@@ -595,8 +595,8 @@ static void TMCase_MoveCursor_UpdatePrintedDescription(s32 itemIndex)
static void FillBG2RowWithPalette_2timesNplus1(s32 a0)
{
- sub_80F6B08(2, 0, 12, 30, 8, 2 * a0 + 1);
- schedule_bg_copy_tilemap_to_vram(2);
+ SetBgRectPal(2, 0, 12, 30, 8, 2 * a0 + 1);
+ ScheduleBgCopyTilemapToVram(2);
}
static void PrintListMenuCursorByID_WithColorIdx(u8 a0, u8 a1)
@@ -619,13 +619,13 @@ static void PrintListMenuCursorAt_WithColorIdx(u8 a0, u8 a1)
static void CreateTMCaseScrollIndicatorArrowPair_Main(void)
{
- sTMCaseDynamicResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParametrized(2, 0xA0, 0x08, 0x58, sTMCaseDynamicResources->numTMs - sTMCaseDynamicResources->maxTMsShown + 1, 0x6E, 0x6E, &sTMCaseStaticResources.scrollOffset);
+ sTMCaseDynamicResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParameterized(2, 0xA0, 0x08, 0x58, sTMCaseDynamicResources->numTMs - sTMCaseDynamicResources->maxTMsShown + 1, 0x6E, 0x6E, &sTMCaseStaticResources.scrollOffset);
}
static void CreateTMCaseScrollIndicatorArrowPair_SellQuantitySelect(void)
{
sTMCaseDynamicResources->currItem = 1;
- sTMCaseDynamicResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParametrized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &sTMCaseDynamicResources->currItem);
+ sTMCaseDynamicResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParameterized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &sTMCaseDynamicResources->currItem);
}
static void RemoveTMCaseScrollIndicatorArrowPair(void)
@@ -648,7 +648,7 @@ static void TMCaseSetup_GetTMCount(void)
struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1];
u16 i;
- sub_809A584(pocket->itemSlots, pocket->capacity);
+ BagPocketCompaction(pocket->itemSlots, pocket->capacity);
sTMCaseDynamicResources->numTMs = 0;
for (i = 0; i < pocket->capacity; i++)
{
@@ -716,7 +716,7 @@ static void Task_FadeOutAndCloseTMCase(u8 taskId)
if (!gPaletteFade.active)
{
- DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
+ DestroyListMenuTask(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
if (sTMCaseDynamicResources->savedCallback != NULL)
SetMainCallback2(sTMCaseDynamicResources->savedCallback);
else
@@ -736,8 +736,8 @@ static void Task_TMCaseMain(u8 taskId)
{
if (sub_80BF72C() != TRUE)
{
- input = ListMenuHandleInput(data[0]);
- get_coro_args_x18_x1A(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
+ input = ListMenu_ProcessInput(data[0]);
+ ListMenuGetScrollAndRow(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
if (JOY_NEW(SELECT_BUTTON) && sTMCaseStaticResources.unk_05 == 1)
{
PlaySE(SE_SELECT);
@@ -782,7 +782,7 @@ static void Task_SelectTMAction_FromFieldBag(u8 taskId)
{
u8 * strbuf;
TMCase_SetWindowBorder2(2);
- if (!sub_80BF708() && InUnionRoom() != TRUE)
+ if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE)
{
AddTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId, 0);
sTMCaseDynamicResources->menuActionIndices = sMenuActionIndices_Field;
@@ -795,7 +795,7 @@ static void Task_SelectTMAction_FromFieldBag(u8 taskId)
sTMCaseDynamicResources->numMenuActions = NELEMS(sMenuActionIndices_UnionRoom);
}
AddItemMenuActionTextPrinters(sTMCaseDynamicResources->contextMenuWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, sMenuActions_UseGiveExit, sTMCaseDynamicResources->menuActionIndices);
- ProgramAndPlaceMenuCursorOnWindow(sTMCaseDynamicResources->contextMenuWindowId, 2, 0, 2, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, 0);
+ Menu_InitCursor(sTMCaseDynamicResources->contextMenuWindowId, 2, 0, 2, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, 0);
strbuf = Alloc(256);
GetTMNumberAndMoveString(strbuf, gSpecialVar_ItemId);
StringAppend(strbuf, gText_IsSelected);
@@ -806,8 +806,8 @@ static void Task_SelectTMAction_FromFieldBag(u8 taskId)
PlaceHMTileInWindow(2, 0, 2);
CopyWindowToVram(2, 2);
}
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
gTasks[taskId].func = Task_TMContextMenu_HandleInput;
}
@@ -817,7 +817,7 @@ static void Task_TMContextMenu_HandleInput(u8 taskId)
if (sub_80BF72C() != TRUE)
{
- input = ProcessMenuInputNoWrapAround();
+ input = Menu_ProcessInputNoWrapAround();
switch (input)
{
case -1:
@@ -837,11 +837,11 @@ static void Task_TMContextMenu_HandleInput(u8 taskId)
static void TMHMContextMenuAction_Use(u8 taskId)
{
RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId);
- sub_810F4D8(2, 0);
+ ClearStdWindowAndFrameToTransparent(2, 0);
ClearWindowTilemap(2);
PutWindowTilemap(0);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
if (CalculatePlayerPartyCount() == 0)
{
PrintError_ThereIsNoPokemon(taskId);
@@ -859,13 +859,13 @@ static void TMHMContextMenuAction_Give(u8 taskId)
s16 * data = gTasks[taskId].data;
u16 itemId = BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]);
RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId);
- sub_810F4D8(2, 0);
+ ClearStdWindowAndFrameToTransparent(2, 0);
ClearWindowTilemap(2);
PutWindowTilemap(1);
PutWindowTilemap(4);
PutWindowTilemap(5);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
if (!itemid_is_unique(itemId))
{
if (CalculatePlayerPartyCount() == 0)
@@ -909,16 +909,16 @@ static void Subtask_CloseContextMenuAndReturnToMain(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
+ DestroyListMenuTask(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sTMCaseStaticResources.scrollOffset, sTMCaseStaticResources.selectedRow);
PrintListMenuCursorByID_WithColorIdx(data[0], 1);
- sub_810F260(6, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
ClearWindowTilemap(6);
PutWindowTilemap(1);
PutWindowTilemap(4);
PutWindowTilemap(5);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
Subtask_ReturnToTMCaseMain(taskId);
}
@@ -927,15 +927,15 @@ static void TMHMContextMenuAction_Exit(u8 taskId)
s16 * data = gTasks[taskId].data;
RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId);
- sub_810F4D8(2, 0);
+ ClearStdWindowAndFrameToTransparent(2, 0);
ClearWindowTilemap(2);
PutWindowTilemap(0);
PrintListMenuCursorByID_WithColorIdx(data[0], 1);
PutWindowTilemap(1);
PutWindowTilemap(4);
PutWindowTilemap(5);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
Subtask_ReturnToTMCaseMain(taskId);
}
@@ -1016,15 +1016,15 @@ static void Task_SaleOfTMsCancelled(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- sub_810F4D8(8, 0);
- sub_810F260(6, 0);
+ ClearStdWindowAndFrameToTransparent(8, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
PutWindowTilemap(0);
PutWindowTilemap(1);
PutWindowTilemap(3);
PutWindowTilemap(4);
PutWindowTilemap(5);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
PrintListMenuCursorByID_WithColorIdx(data[0], 1);
Subtask_ReturnToTMCaseMain(taskId);
}
@@ -1040,8 +1040,8 @@ static void Task_InitQuantitySelectUI(u8 taskId)
SellTM_PrintQuantityAndSalePrice(1, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]);
HandlePrintMoneyOnHand();
CreateTMCaseScrollIndicatorArrowPair_SellQuantitySelect();
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
gTasks[taskId].func = Task_QuantitySelect_HandleInput;
}
@@ -1058,30 +1058,30 @@ static void Task_QuantitySelect_HandleInput(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- if (sub_80BF848(&data[8], data[2]) == 1)
+ if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == 1)
{
SellTM_PrintQuantityAndSalePrice(data[8], itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]);
}
else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
- sub_810F4D8(7, 0);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ClearStdWindowAndFrameToTransparent(7, 0);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
RemoveTMCaseScrollIndicatorArrowPair();
Task_AskConfirmSaleWithAmount(taskId);
}
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- sub_810F4D8(7, 0);
- sub_810F4D8(8, 0);
- sub_810F260(6, 0);
+ ClearStdWindowAndFrameToTransparent(7, 0);
+ ClearStdWindowAndFrameToTransparent(8, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
PutWindowTilemap(3);
PutWindowTilemap(0);
PutWindowTilemap(1);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
RemoveTMCaseScrollIndicatorArrowPair();
PrintListMenuCursorByID_WithColorIdx(data[0], 1);
Subtask_ReturnToTMCaseMain(taskId);
@@ -1093,7 +1093,7 @@ static void Task_PrintSaleConfirmedText(u8 taskId)
s16 * data = gTasks[taskId].data;
PutWindowTilemap(0);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
CopyItemName(gSpecialVar_ItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
StringExpandPlaceholders(gStringVar4, gText_TurnedOverItemsWorthYen);
@@ -1108,7 +1108,7 @@ static void Task_DoSaleOfTMs(u8 taskId)
RemoveBagItem(gSpecialVar_ItemId, data[8]);
AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]);
sub_809C09C(gSpecialVar_ItemId, data[8], 2);
- DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
+ DestroyListMenuTask(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
TMCaseSetup_GetTMCount();
TMCaseSetup_InitListMenuPositions();
InitTMCaseListMenuItems();
@@ -1123,8 +1123,8 @@ static void Task_AfterSale_ReturnToList(u8 taskId)
if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- sub_810F4D8(8, 0);
- sub_810F260(6, 0);
+ ClearStdWindowAndFrameToTransparent(8, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
PutWindowTilemap(1);
PutWindowTilemap(3);
PutWindowTilemap(4);
@@ -1171,7 +1171,7 @@ static void Task_TMCaseDude_Playback(u8 taskId)
if (data[8] < 21)
{
data[8] = 21;
- sub_815AC20();
+ SetTeachyTvControllerModeToResume();
}
}
@@ -1204,7 +1204,7 @@ static void Task_TMCaseDude_Playback(u8 taskId)
{
gMain.newKeys = 0;
gMain.newAndRepeatedKeys = DPAD_DOWN;
- ListMenuHandleInput(data[0]);
+ ListMenu_ProcessInput(data[0]);
}
data[9]++;
if (data[9] > 0x65)
@@ -1223,7 +1223,7 @@ static void Task_TMCaseDude_Playback(u8 taskId)
{
gMain.newKeys = 0;
gMain.newAndRepeatedKeys = DPAD_UP;
- ListMenuHandleInput(data[0]);
+ ListMenu_ProcessInput(data[0]);
}
data[9]++;
if (data[9] > 0x65)
@@ -1249,8 +1249,8 @@ static void Task_TMCaseDude_Playback(u8 taskId)
{
FillBG2RowWithPalette_2timesNplus1(0);
BeginNormalPaletteFade(0x00000400, 0, 6, 0, 0);
- sub_810F260(6, 0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
+ ScheduleBgCopyTilemapToVram(1);
data[8]++;
}
break;
@@ -1269,7 +1269,7 @@ static void Task_TMCaseDude_Playback(u8 taskId)
{
memcpy(gSaveBlock1Ptr->bagPocket_TMHM, sPokeDudePackBackup->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM));
memcpy(gSaveBlock1Ptr->bagPocket_KeyItems, sPokeDudePackBackup->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems));
- DestroyListMenu(data[0], NULL, NULL);
+ DestroyListMenuTask(data[0], NULL, NULL);
sTMCaseStaticResources.selectedRow = sPokeDudePackBackup->unk_160;
sTMCaseStaticResources.scrollOffset = sPokeDudePackBackup->unk_162;
Free(sPokeDudePackBackup);
@@ -1297,9 +1297,9 @@ static void InitWindowTemplatesAndPals(void)
InitWindows(sWindowTemplates);
DeactivateAllTextPrinters();
- sub_815001C(0, 0x5B, 0xE0);
- sub_814FEAC(0, 0x64, 0xB0);
- sub_814FF2C(0, 0x78, 0xD0);
+ TextWindow_SetUserSelectedFrame(0, 0x5B, 0xE0);
+ TextWindow_LoadResourcesStdFrame0(0, 0x64, 0xB0);
+ TextWindow_SetStdFrame0_WithPal(0, 0x78, 0xD0);
LoadPalette(gTMCaseMainWindowPalette, 0xF0, 0x20);
LoadPalette(gTMCaseMainWindowPalette, 0xA0, 0x20);
LoadPalette(sPal3Override, 0xF6, 0x04);
@@ -1312,42 +1312,42 @@ static void InitWindowTemplatesAndPals(void)
PutWindowTilemap(3);
PutWindowTilemap(4);
PutWindowTilemap(5);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
}
static void AddTextPrinterParameterized_ColorByIndex(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx)
{
- AddTextPrinterParametrized2(windowId, fontId, x, y, letterSpacing, lineSpacing, &sTextColors[colorIdx], speed, str);
+ AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, &sTextColors[colorIdx], speed, str);
}
static void TMCase_SetWindowBorder1(u8 windowId)
{
- SetWindowBorderStyle(windowId, FALSE, 0x5B, 0x0E);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, 0x5B, 0x0E);
}
static void TMCase_SetWindowBorder2(u8 windowId)
{
- SetWindowBorderStyle(windowId, FALSE, 0x78, 0x0D);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, 0x78, 0x0D);
}
static void TMCase_PrintMessageWithFollowupTask(u8 taskId, u8 windowId, const u8 * str, TaskFunc func)
{
DisplayMessageAndContinueTask(taskId, 6, 0x64, 0x0B, windowId, GetTextSpeedSetting(), str, func);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(1);
}
static void PrintStringTMCaseOnWindow3(void)
{
u32 distance = 72 - GetStringWidth(1, gText_TMCase, 0);
- box_print(3, 1, distance / 2, 1, &sTextColors[0], 0, gText_TMCase);
+ AddTextPrinterParameterized3(3, 1, distance / 2, 1, &sTextColors[0], 0, gText_TMCase);
}
static void DrawMoveInfoUIMarkers(void)
{
- blit_move_info_icon(4, 19, 0, 0);
- blit_move_info_icon(4, 20, 0, 12);
- blit_move_info_icon(4, 21, 0, 24);
- blit_move_info_icon(4, 22, 0, 36);
+ BlitMoveInfoIcon(4, 19, 0, 0);
+ BlitMoveInfoIcon(4, 20, 0, 12);
+ BlitMoveInfoIcon(4, 21, 0, 24);
+ BlitMoveInfoIcon(4, 22, 0, 36);
CopyWindowToVram(4, 2);
}
@@ -1369,7 +1369,7 @@ static void TMCase_MoveCursor_UpdatePrintedTMInfo(u16 itemId)
else
{
move = ItemIdToBattleMoveId(itemId);
- blit_move_info_icon(5, gBattleMoves[move].type + 1, 0, 0);
+ BlitMoveInfoIcon(5, gBattleMoves[move].type + 1, 0, 0);
if (gBattleMoves[move].power < 2)
str = gText_ThreeHyphens;
else
@@ -1413,17 +1413,17 @@ static u8 AddTMContextMenu(u8 * a0, u8 a1)
{
*a0 = AddWindow(&sTMContextWindowTemplates[a1]);
TMCase_SetWindowBorder1(*a0);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
}
return *a0;
}
static void RemoveTMContextMenu(u8 * a0)
{
- sub_810F4D8(*a0, FALSE);
+ ClearStdWindowAndFrameToTransparent(*a0, FALSE);
ClearWindowTilemap(*a0);
RemoveWindow(*a0);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
*a0 = 0xFF;
}
diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c
index ecd889d80..25a8d4515 100644
--- a/src/trainer_pokemon_sprites.c
+++ b/src/trainer_pokemon_sprites.c
@@ -109,7 +109,7 @@ void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 palett
else
{
sCreatingSpriteTemplate.paletteTag = paletteTag;
- LoadCompressedObjectPalette(GetMonSpritePalStructFromOtIdPersonality(species, otId, personality));
+ LoadCompressedSpritePalette(GetMonSpritePalStructFromOtIdPersonality(species, otId, personality));
}
}
else
@@ -122,7 +122,7 @@ void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 palett
else
{
sCreatingSpriteTemplate.paletteTag = paletteTag;
- LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[species]);
+ LoadCompressedSpritePalette(&gTrainerFrontPicPaletteTable[species]);
}
}
}
diff --git a/src/trainer_tower.c b/src/trainer_tower.c
index d2f7c92a9..f1ae2d4e5 100644
--- a/src/trainer_tower.c
+++ b/src/trainer_tower.c
@@ -35,45 +35,10 @@ struct UnkStruct_8479D34
u8 flags3[8];
};
-struct UnkSubstruct_203F458_000C_004
-{
- /* 0x000 */ u8 unk_000[11];
- /* 0x00B */ u8 unk_00B;
- /* 0x00C */ u8 unk_00C;
- /* 0x00E */ u16 unk_00E[6];
- /* 0x01A */ u16 unk_01A[6];
- /* 0x026 */ u16 unk_026[6];
- /* 0x032 */ u16 unk_032[6];
- /* 0x040 */ struct BattleTowerPokemon unk_040[PARTY_SIZE];
-}; // size: 328
-
-struct UnkSubstruct_203F458_000C
-{
- /* 0x000 */ u8 unk_000;
- /* 0x000 */ u8 unk_001;
- /* 0x002 */ u8 unk_002;
- /* 0x003 */ u8 unk_003;
- /* 0x004 */ struct UnkSubstruct_203F458_000C_004 unk_004[3];
- /* 0x3DC */ u8 filler_3DC[4];
-};
-
-struct Unk_203F458_Header
-{
- u8 unk0;
- u8 unk1;
- u32 unk4;
-};
-
-struct UnkStruct_203F458_SaveBlock
-{
- struct Unk_203F458_Header unk_0000;
- struct UnkSubstruct_203F458_000C unk_0008[8];
-};
-
struct UnkStruct_203F458
{
/* 0x0000 */ u8 unk_0000;
- /* 0x0004 */ struct UnkStruct_203F458_SaveBlock unk_0004;
+ /* 0x0004 */ struct TrainerTowerData unk_0004;
};
struct UnkStruct_203F45C
@@ -112,6 +77,7 @@ struct UnkStruct_847A074
EWRAM_DATA struct UnkStruct_203F458 * gUnknown_203F458 = NULL;
EWRAM_DATA struct UnkStruct_203F45C * gUnknown_203F45C = NULL;
+EWRAM_DATA u8 unused_variable = 0;
void sub_815D96C(void);
void sub_815DC8C(void); // setup
@@ -563,30 +529,7 @@ const u8 gUnknown_847A30E[][3] = {
};
extern const struct Unk_203F458_Header gUnknown_84827AC;
-extern const struct UnkSubstruct_203F458_000C *const gUnknown_84827B4[][8];
-
-bool32 sub_815D7BC(void * dest, void * buffer)
-{
- if (TryCopySpecialSaveSection(30, buffer) != 1)
- return FALSE;
- memcpy(dest + 0x000, buffer, 0xF88);
-
- if (TryCopySpecialSaveSection(31, buffer) != 1)
- return FALSE;
- memcpy(dest + 0xF88, buffer, 0xF80);
-
- if (!sub_815D6B4(dest))
- return FALSE;
- return TRUE;
-}
-
-bool32 sub_815D80C(void * dest)
-{
- void * buffer = AllocZeroed(0x1000);
- bool32 success = sub_815D7BC(dest, buffer);
- Free(buffer);
- return success;
-}
+extern const struct TrainerTowerTrainer *const gUnknown_84827B4[][8];
bool32 sub_815D834(void)
{
@@ -623,10 +566,10 @@ void sub_815D8C8(void)
}
}
-void sub_815D8F8(void) // fakematching
+void sub_815D8F8(void)
{
u8 i;
- register u32 found_map asm("r4") = 0xFF;
+ u8 found_map = 0xFF;
for (i = 0; i < 15; i++)
{
if (gUnknown_8479D34[i].mapGroup == gSaveBlock1Ptr->location.mapGroup && gUnknown_8479D34[i].mapNum == gSaveBlock1Ptr->location.mapNum)
@@ -696,23 +639,23 @@ void sub_815DA54(void)
sub_815DC8C();
gUnknown_203F45C = AllocZeroed(sizeof(*gUnknown_203F45C));
r10 = VarGet(VAR_0x4001);
- StringCopyN(gUnknown_203F45C->unk_00, gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10].unk_000, 11);
+ StringCopyN(gUnknown_203F45C->unk_00, gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r10].unk_000, 11);
for (r9 = 0; r9 < 6; r9++)
{
- gUnknown_203F45C->unk_0C[r9] = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10].unk_01A[r9];
- gUnknown_203F45C->unk_18[r9] = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10].unk_026[r9];
+ gUnknown_203F45C->unk_0C[r9] = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r10].unk_01A[r9];
+ gUnknown_203F45C->unk_18[r9] = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r10].unk_026[r9];
- if (gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002 == 1)
+ if (gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_002 == 1)
{
- gUnknown_203F45C->unk_24[r9] = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10 + 1].unk_01A[r9];
- gUnknown_203F45C->unk_30[r9] = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10 + 1].unk_026[r9];
+ gUnknown_203F45C->unk_24[r9] = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r10 + 1].unk_01A[r9];
+ gUnknown_203F45C->unk_30[r9] = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r10 + 1].unk_026[r9];
}
}
- gUnknown_203F45C->unk_3C = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002;
- gUnknown_203F45C->unk_3D = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10].unk_00B;
- gUnknown_203F45C->unk_3E = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10].unk_00C;
+ gUnknown_203F45C->unk_3C = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_002;
+ gUnknown_203F45C->unk_3D = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r10].unk_00B;
+ gUnknown_203F45C->unk_3E = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r10].unk_00C;
SetVBlankCounter1Ptr(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0);
sub_815DD2C();
}
@@ -750,12 +693,12 @@ void sub_815DC8C(void) // fakematching
{
u32 whichTimer = gSaveBlock1Ptr->unkArrayIdx;
s32 r4;
- const struct UnkSubstruct_203F458_000C *const * r7;
+ const struct TrainerTowerTrainer *const * r7;
gUnknown_203F458 = AllocZeroed(sizeof(*gUnknown_203F458));
gUnknown_203F458->unk_0000 = gMapHeader.mapDataId - 0x2A;
if (sub_815D834() == TRUE)
- sub_815D80C(&gUnknown_203F458->unk_0004);
+ CEReaderTool_LoadTrainerTower(&gUnknown_203F458->unk_0004);
else
{
struct UnkStruct_203F458 * r0_ = gUnknown_203F458;
@@ -767,12 +710,12 @@ void sub_815DC8C(void) // fakematching
for (r4 = 0; r4 < 8; r4++)
{
void * r0 = gUnknown_203F458;
- r0 = r4 * sizeof(struct UnkSubstruct_203F458_000C) + r0;
- r0 += offsetof(struct UnkStruct_203F458, unk_0004.unk_0008);
- memcpy(r0, r7[r4], sizeof(struct UnkSubstruct_203F458_000C));
+ r0 = r4 * sizeof(struct TrainerTowerTrainer) + r0;
+ r0 += offsetof(struct UnkStruct_203F458, unk_0004.trainers);
+ memcpy(r0, r7[r4], sizeof(struct TrainerTowerTrainer));
// r0[r4] = *r7[r4];
}
- gUnknown_203F458->unk_0004.unk_0000.unk4 = CalcByteArraySum((void *)gUnknown_203F458->unk_0004.unk_0008, sizeof(gUnknown_203F458->unk_0004.unk_0008));
+ gUnknown_203F458->unk_0004.unk4 = CalcByteArraySum((void *)gUnknown_203F458->unk_0004.trainers, sizeof(gUnknown_203F458->unk_0004.trainers));
sub_815EC0C();
}
}
@@ -799,7 +742,7 @@ void sub_815DC8C(void)
"\tbne _0815DCD0\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x4\n"
- "\tbl sub_815D80C\n"
+ "\tbl CEReaderTool_LoadTrainerTower\n"
"\tb _0815DD18\n"
"\t.align 2, 0\n"
"_0815DCBC: .4byte gSaveBlock1Ptr\n"
@@ -860,14 +803,14 @@ void sub_815DD2C(void)
void sub_815DD44(void)
{
- if (gMapHeader.mapDataId - 0x129 > gUnknown_203F458->unk_0004.unk_0000.unk0)
+ if (gMapHeader.mapDataId - 0x129 > gUnknown_203F458->unk_0004.count)
{
gSpecialVar_Result = 3;
SetCurrentMapLayout(0x132);
}
else
{
- gSpecialVar_Result = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002;
+ gSpecialVar_Result = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_002;
SetCurrentMapLayout(gUnknown_847A284[gUnknown_203F458->unk_0000][gSpecialVar_Result]);
sub_815DDB0();
}
@@ -877,10 +820,10 @@ void sub_815DDB0(void)
{
s32 r3, r4;
u8 r1, r2, r4_;
- switch (gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002)
+ switch (gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_002)
{
case 0:
- r2 = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[0].unk_00B;
+ r2 = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[0].unk_00B;
for (r3 = 0; r3 < NELEMS(gUnknown_8479ED8); r3++)
{
if (gUnknown_8479ED8[r3].unk1 == r2)
@@ -893,7 +836,7 @@ void sub_815DDB0(void)
VarSet(VAR_0x4011, r1);
break;
case 1:
- r2 = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[0].unk_00B;
+ r2 = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[0].unk_00B;
for (r3 = 0; r3 < NELEMS(gUnknown_847A024); r3++)
{
if (gUnknown_847A024[r3].unk2 == r2)
@@ -915,7 +858,7 @@ void sub_815DDB0(void)
case 2:
for (r4 = 0; r4 < 3; r4++)
{
- r2 = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_00B;
+ r2 = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r4].unk_00B;
for (r3 = 0; r3 < NELEMS(gUnknown_8479ED8); r3++)
{
if (gUnknown_8479ED8[r3].unk1 == r2)
@@ -962,25 +905,25 @@ void sub_815DF54(void)
{
u16 r4 = gSpecialVar_0x8006;
u8 r1;
- u8 r5 = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002;
+ u8 r5 = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_002;
// HOW DO I MATCH THIS CONTROL FLOW?!?!
- r1 = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r5 == 1 ? 0 : r4].unk_00B;
+ r1 = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r5 == 1 ? 0 : r4].unk_00B;
switch (gSpecialVar_0x8005)
{
case 2:
sub_815E068(r5, r1);
- sub_815DEFC(gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_00E, gStringVar4);
+ sub_815DEFC(gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r4].unk_00E, gStringVar4);
break;
case 3:
sub_815E068(r5, r1);
- sub_815DEFC(gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_01A, gStringVar4);
+ sub_815DEFC(gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r4].unk_01A, gStringVar4);
break;
case 4:
sub_815E068(r5, r1);
- sub_815DEFC(gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_026, gStringVar4);
+ sub_815DEFC(gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r4].unk_026, gStringVar4);
break;
case 5:
- sub_815DEFC(gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_032, gStringVar4);
+ sub_815DEFC(gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r4].unk_032, gStringVar4);
break;
}
}
@@ -1163,7 +1106,7 @@ void sub_815E068(u8 battleType, u8 facilityClass)
void sub_815E114(void)
{
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
void sub_815E124(u8 taskId)
@@ -1180,7 +1123,7 @@ void sub_815E124(u8 taskId)
void sub_815E160(void)
{
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_FACTORY;
- if (gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002 == 1)
+ if (gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_002 == 1)
gBattleTypeFlags |= BATTLE_TYPE_DOUBLE;
gTrainerBattleOpponent_A = 0;
sub_815E9FC();
@@ -1192,7 +1135,7 @@ void sub_815E160(void)
void sub_815E1C0(void)
{
if (!gSpecialVar_0x8005)
- gSpecialVar_Result = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002;
+ gSpecialVar_Result = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_002;
}
void sub_815E1F0(void)
@@ -1203,7 +1146,7 @@ void sub_815E1F0(void)
void sub_815E218(void)
{
u16 mapDataId = gMapHeader.mapDataId;
- if (mapDataId - 0x12A == gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8 && mapDataId - 0x129 <= gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_001)
+ if (mapDataId - 0x12A == gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8 && mapDataId - 0x129 <= gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_001)
gSpecialVar_Result = FALSE;
else
gSpecialVar_Result = TRUE;
@@ -1239,7 +1182,7 @@ void sub_815E394(void)
void sub_815E408(void)
{
- u16 itemId = gUnknown_847A2B4[gUnknown_203F458->unk_0004.unk_0008->unk_003];
+ u16 itemId = gUnknown_847A2B4[gUnknown_203F458->unk_0004.trainers->unk_003];
if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0)
gSpecialVar_Result = 2;
else if (AddBagItem(itemId, 1) == 1)
@@ -1356,7 +1299,7 @@ void sub_815E720(void)
void sub_815E88C(void)
{
u8 windowId = VarGet(VAR_0x4001);
- sub_810F4D8(windowId, TRUE);
+ ClearStdWindowAndFrameToTransparent(windowId, TRUE);
RemoveWindow(windowId);
}
@@ -1367,9 +1310,9 @@ void sub_815E8B4(void)
void sub_815E8CC(void)
{
- if (gUnknown_203F458->unk_0004.unk_0000.unk0 != gUnknown_203F458->unk_0004.unk_0008[0].unk_001)
+ if (gUnknown_203F458->unk_0004.count != gUnknown_203F458->unk_0004.trainers[0].unk_001)
{
- ConvertIntToDecimalStringN(gStringVar1, gUnknown_203F458->unk_0004.unk_0000.unk0, STR_CONV_MODE_LEFT_ALIGN, 1);
+ ConvertIntToDecimalStringN(gStringVar1, gUnknown_203F458->unk_0004.count, STR_CONV_MODE_LEFT_ALIGN, 1);
gSpecialVar_Result = TRUE;
}
else
@@ -1394,7 +1337,7 @@ void sub_815E948(void)
{
s32 i;
u16 var_4001 = VarGet(VAR_0x4001);
- u8 r1 = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[var_4001].unk_00B;
+ u8 r1 = gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[var_4001].unk_00B;
for (i = 0; i < NELEMS(gUnknown_847A074); i++)
{
@@ -1427,29 +1370,29 @@ void sub_815E9FC(void)
ZeroEnemyPartyMons();
- switch (gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002)
+ switch (gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_002)
{
case 0:
default:
for (r6 = 0; r6 < 2; r6++)
{
r2 = gUnknown_847A2EE[r5][r6];
- gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2].level = r9;
- sub_803E0A4(&gEnemyParty[r6], &gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2]);
+ gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2].level = r9;
+ CreateBattleTowerMon(&gEnemyParty[r6], &gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2]);
}
break;
case 1:
r2 = gUnknown_847A2FE[r5][0];
- gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[0].unk_040[r2].level = r9;
- sub_803E0A4(&gEnemyParty[0], &gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[0].unk_040[r2]);
+ gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[0].unk_040[r2].level = r9;
+ CreateBattleTowerMon(&gEnemyParty[0], &gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[0].unk_040[r2]);
r2 = gUnknown_847A2FE[r5][1];
- gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[1].unk_040[r2].level = r9;
- sub_803E0A4(&gEnemyParty[1], &gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[1].unk_040[r2]);
+ gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[1].unk_040[r2].level = r9;
+ CreateBattleTowerMon(&gEnemyParty[1], &gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[1].unk_040[r2]);
break;
case 2:
r2 = gUnknown_847A30E[r5][r4];
- gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2].level = r9;
- sub_803E0A4(&gEnemyParty[0], &gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2]);
+ gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2].level = r9;
+ CreateBattleTowerMon(&gEnemyParty[0], &gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2]);
break;
}
}
@@ -1474,15 +1417,15 @@ static s32 GetPartyMaxLevel(void)
void sub_815EC0C(void)
{
- if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk9 != gUnknown_203F458->unk_0004.unk_0000.unk1)
+ if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk9 != gUnknown_203F458->unk_0004.id)
{
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk9 = gUnknown_203F458->unk_0004.unk_0000.unk1;
+ gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk9 = gUnknown_203F458->unk_0004.id;
sub_815EDF4(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk4, 215999);
gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0 = FALSE;
}
}
-void sub_815EC8C(void)
+void PrintTrainerTowerRecords(void)
{
s32 i;
u8 windowId = 0;
@@ -1490,14 +1433,14 @@ void sub_815EC8C(void)
sub_815DC8C();
FillWindowPixelRect(0, 0, 0, 0, 0xd8, 0x90);
sub_815EC0C();
- box_print(0, 2, 0x4a, 0, &gUnknown_847A22C, 0, gUnknown_83FE982);
+ AddTextPrinterParameterized3(0, 2, 0x4a, 0, &gUnknown_847A22C, 0, gUnknown_83FE982);
for (i = 0; i < 4; i++)
{
PRINT_TOWER_TIME(sub_815EDDC(&gSaveBlock1Ptr->unkArray[i].unk4));
StringExpandPlaceholders(gStringVar4, gUnknown_83FE998);
- box_print(windowId, 2, 0x18, 0x24 + 0x14 * i, &gUnknown_847A22C, 0, gUnknown_83FE9C4[i]);
- box_print(windowId, 2, 0x60, 0x24 + 0x14 * i, &gUnknown_847A22C, 0, gStringVar4);
+ AddTextPrinterParameterized3(windowId, 2, 0x18, 0x24 + 0x14 * i, &gUnknown_847A22C, 0, gUnknown_83FE9C4[i]);
+ AddTextPrinterParameterized3(windowId, 2, 0x60, 0x24 + 0x14 * i, &gUnknown_847A22C, 0, gStringVar4);
}
PutWindowTilemap(windowId);
diff --git a/src/unk_8159F40.c b/src/unk_8159F40.c
index a6f6e67fc..ab27cea63 100644
--- a/src/unk_8159F40.c
+++ b/src/unk_8159F40.c
@@ -28,7 +28,7 @@ void sub_8159F40(void)
s32 opIdx = 0;
const struct UnkStruct_84792D0 * data;
- gBattleTypeFlags = BATTLE_TYPE_DOME;
+ gBattleTypeFlags = BATTLE_TYPE_POKEDUDE;
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
data = gUnknown_84792D0[gSpecialVar_0x8004];
@@ -612,7 +612,7 @@ void sub_815A540(void)
s16 x, y;
PlayerGetDestCoords(&x, &y);
- if (!MetatileBehavior_IsSurfable(MapGridGetMetatileBehaviorAt(x, y)) && TestPlayerAvatarFlags(0x08))
+ if (!MetatileBehavior_IsSurfable(MapGridGetMetatileBehaviorAt(x, y)) && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
{
struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
SetPlayerAvatarTransitionFlags(0x01);
diff --git a/src/unk_815C980.c b/src/unk_815C980.c
index 9d0dd3341..09b92c834 100644
--- a/src/unk_815C980.c
+++ b/src/unk_815C980.c
@@ -41,6 +41,7 @@ static void sub_815CFEC(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2);
static bool32 SharesTileWithAnyActive(u32 id);
static bool32 SharesPalWithAnyActive(u32 id);
static void sub_8035648(void);
+static u8 sub_815D324(u32 shape, u32 size);
// ewram
static EWRAM_DATA struct UnkStruct1 *gUnknown_203F454 = {0};
@@ -127,7 +128,7 @@ bool32 sub_815CA40(u32 id, s32 arg1, const struct UnkStruct3 *arg2)
compObjectPic = *(struct CompressedSpriteSheet*)(arg2->spriteSheet);
compObjectPic.size = GetDecompressedDataSize(arg2->spriteSheet->data);
- gUnknown_203F454->array[id].tileStart = LoadCompressedObjectPic(&compObjectPic);
+ gUnknown_203F454->array[id].tileStart = LoadCompressedSpriteSheet(&compObjectPic);
}
if (gUnknown_203F454->array[id].tileStart == 0xFFFF)
@@ -430,7 +431,7 @@ static bool32 SharesPalWithAnyActive(u32 id)
return FALSE;
}
-u8 sub_815D324(u32 shape, u32 size)
+static u8 sub_815D324(u32 shape, u32 size)
{
return gUnknown_8479658[shape][size];
}
diff --git a/src/unk_815F138.c b/src/unk_815F138.c
new file mode 100644
index 000000000..96005a07b
--- /dev/null
+++ b/src/unk_815F138.c
@@ -0,0 +1,322 @@
+#include "global.h"
+#include "decompress.h"
+#include "sound.h"
+#include "task.h"
+#include "trig.h"
+#include "constants/songs.h"
+
+void sub_815F1AC(u8 taskId);
+bool32 sub_815F2AC(u8 spriteId);
+void sub_815F3E0(u8 spriteId1, u8 spriteId2, u8 spriteId3);
+bool32 sub_815F444(u8 spriteId);
+void sub_815F470(struct Sprite * sprite);
+void sub_815F564(u16 tilesTag, u16 palTag);
+u8 sub_815F5BC(u16 tilesTag, u16 palTag, s16 x, s16 y, u8 subpriority);
+void sub_815F610(u16 tilesTag, u16 palTag, s16 x, s16 y, u8 subpriority, s16 * spriteId2_p, s16 * spriteId3_p);
+
+void sub_815F138(u16 tilesTag, u16 palTag, s16 x, s16 y, u8 subpriority)
+{
+ u8 taskId = CreateTask(sub_815F1AC, 80);
+ gTasks[taskId].data[2] = tilesTag;
+ gTasks[taskId].data[3] = palTag;
+ gTasks[taskId].data[4] = x;
+ gTasks[taskId].data[5] = y;
+ gTasks[taskId].data[6] = subpriority;
+}
+
+bool8 sub_815F198(void)
+{
+ return FuncIsActiveTask(sub_815F1AC);
+}
+
+void sub_815F1AC(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_815F564(data[2], data[3]);
+ data[7] = sub_815F5BC(data[2], data[3], data[4], data[5], data[6]);
+ sub_815F610(data[2], data[3], data[4], data[5], data[6], &data[8], &data[9]);
+ data[0]++;
+ break;
+ case 1:
+ if (!sub_815F2AC(data[7]))
+ {
+ sub_815F3E0(data[7], data[8], data[9]);
+ FreeSpriteOamMatrix(&gSprites[data[7]]);
+ DestroySprite(&gSprites[data[7]]);
+ data[0]++;
+ }
+ break;
+ case 2:
+ if (!sub_815F444(data[8]))
+ {
+ DestroySprite(&gSprites[data[8]]);
+ DestroySprite(&gSprites[data[9]]);
+ FreeSpriteTilesByTag(data[2]);
+ FreeSpritePaletteByTag(data[3]);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+bool32 sub_815F2AC(u8 spriteId)
+{
+ struct Sprite * sprite = &gSprites[spriteId];
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ sub_8007FFC(sprite, 0x800, 0x1A);
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ if (sprite->data[2] == 0)
+ PlaySE(SE_TRACK_STOP);
+ if (++sprite->data[2] >= 20)
+ {
+ sprite->data[2] = 0;
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (sprite->affineAnimEnded)
+ sprite->data[0]++;
+ break;
+ case 3:
+ if (++sprite->data[2] >= 4)
+ {
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ StartSpriteAffineAnim(sprite, 2);
+ }
+ break;
+ case 4:
+ sprite->pos1.y -= 4;
+ if (++sprite->data[2] >= 8)
+ {
+ if (sprite->data[4] < 2)
+ {
+ StartSpriteAnim(sprite, sprite->data[4] + 1);
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ else
+ {
+ sprite->data[0] = 7;
+ return FALSE;
+ }
+ }
+ break;
+ case 5:
+ sprite->pos1.y += 4;
+ if (++sprite->data[2] >= 8)
+ {
+ sprite->data[2] = 0;
+ StartSpriteAffineAnim(sprite, 3);
+ sprite->data[0]++;
+ }
+ break;
+ case 6:
+ if (sprite->affineAnimEnded)
+ {
+ sprite->data[4]++;
+ sprite->data[0] = 1;
+ }
+ break;
+ case 7:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_815F3E0(u8 spriteId1, u8 spriteId2, u8 spriteId3)
+{
+ gSprites[spriteId2].pos2.y = -40;
+ gSprites[spriteId3].pos2.y = -40;
+ gSprites[spriteId2].invisible = FALSE;
+ gSprites[spriteId3].invisible = FALSE;
+ gSprites[spriteId2].callback = sub_815F470;
+ gSprites[spriteId3].callback = sub_815F470;
+}
+
+bool32 sub_815F444(u8 spriteId)
+{
+ return gSprites[spriteId].callback == sub_815F470;
+}
+
+void sub_815F470(struct Sprite * sprite)
+{
+ s16 * data = sprite->data;
+ s32 y;
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ data[4] = 64;
+ data[5] = sprite->pos2.y << 4;
+ data[0]++;
+ //fallthrough
+ case 1:
+ data[5] += data[4];
+ data[4]++;
+ sprite->pos2.y = data[5] >> 4;
+ if (sprite->pos2.y >= 0)
+ {
+ PlaySE(SE_TRACK_STOP);
+ sprite->pos2.y = 0;
+ data[0]++;
+ }
+ break;
+ case 2:
+ data[1] += 12;
+ if (data[1] >= 128)
+ {
+ PlaySE(SE_TRACK_STOP);
+ data[1] = 0;
+ data[0]++;
+ }
+ y = gSineTable[data[1]];
+ sprite->pos2.y = -(y >> 4);
+ break;
+ case 3:
+ data[1] += 16;
+ if (data[1] >= 128)
+ {
+ PlaySE(SE_TRACK_STOP);
+ data[1] = 0;
+ data[0]++;
+ }
+ sprite->pos2.y = -(gSineTable[data[1]] >> 5);
+ break;
+ case 4:
+ if (++data[1] > 40)
+ sprite->callback = SpriteCallbackDummy;
+ break;
+ }
+}
+
+const u16 gUnknown_847A328[] = INCBIN_U16("data/graphics/unk_847a348.gbapal");
+const u16 gUnknown_847A348[] = INCBIN_U16("data/graphics/unk_847a348.4bpp.lz");
+
+void sub_815F564(u16 tilesTag, u16 palTag)
+{
+ struct CompressedSpriteSheet spriteSheet = {(const void *)gUnknown_847A348, 0xE00};
+ struct SpritePalette spritePalette = {gUnknown_847A328};
+ spriteSheet.tag = tilesTag;
+ spritePalette.tag = palTag;
+ LoadCompressedSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+}
+
+const struct OamData gOamData_847A7AC = {
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .shape = ST_OAM_SQUARE,
+ .size = 2
+};
+
+const struct OamData gOamData_847A7B4 = {
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 3
+};
+
+const union AnimCmd gUnknown_847A7BC[] = {
+ ANIMCMD_FRAME( 0, 1),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_847A7C4[] = {
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_847A7CC[] = {
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gUnknown_847A7D4[] = {
+ gUnknown_847A7BC,
+ gUnknown_847A7C4,
+ gUnknown_847A7CC
+};
+
+const union AnimCmd gUnknown_847A7E0[] = {
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_847A7E8[] = {
+ ANIMCMD_FRAME(80, 1),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gUnknown_847A7F0[] = {
+ gUnknown_847A7E0,
+ gUnknown_847A7E8
+};
+
+const union AffineAnimCmd gUnknown_847A7F8[] = {
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gUnknown_847A808[] = {
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME( 0x10, -0x10, 0, 8),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gUnknown_847A820[] = {
+ AFFINEANIMCMD_FRAME(-0x12, 0x12, 0, 8),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gUnknown_847A830[] = {
+ AFFINEANIMCMD_FRAME( 0x6, -0x6, 0, 8),
+ AFFINEANIMCMD_FRAME( -0x4, 0x4, 0, 8),
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gUnknown_847A850[] = {
+ gUnknown_847A7F8,
+ gUnknown_847A808,
+ gUnknown_847A820,
+ gUnknown_847A830
+};
+
+u8 sub_815F5BC(u16 tilesTag, u16 palTag, s16 x, s16 y, u8 subpriority)
+{
+ struct SpriteTemplate spriteTemplate = {
+ .oam = &gOamData_847A7AC,
+ .anims = gUnknown_847A7D4,
+ .affineAnims = gUnknown_847A850,
+ .callback = SpriteCallbackDummy
+ };
+ spriteTemplate.tileTag = tilesTag;
+ spriteTemplate.paletteTag = palTag;
+ return CreateSprite(&spriteTemplate, x, y, subpriority);
+}
+
+void sub_815F610(u16 tilesTag, u16 palTag, s16 x, s16 y, u8 subpriority, s16 * spriteId2_p, s16 * spriteId3_p)
+{
+ struct SpriteTemplate spriteTemplate = {
+ .oam = &gOamData_847A7B4,
+ .anims = gUnknown_847A7F0,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+ };
+ spriteTemplate.tileTag = tilesTag;
+ spriteTemplate.paletteTag = palTag;
+ *spriteId2_p = CreateSprite(&spriteTemplate, x - 32, y, subpriority);
+ *spriteId3_p = CreateSprite(&spriteTemplate, x + 32, y, subpriority);
+ gSprites[*spriteId2_p].invisible = TRUE;
+ gSprites[*spriteId3_p].invisible = TRUE;
+ StartSpriteAnim(&gSprites[*spriteId3_p], 1);
+}
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index 6c6daf803..f7b29292a 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -814,7 +814,7 @@ void Task_VsSeeker_0(u8 taskId)
}
else if (respval == 2)
{
- sub_80A2294(4, 0, gSpecialVar_ItemId, 0xffff);
+ ItemUse_SetQuestLogEvent(4, 0, gSpecialVar_ItemId, 0xffff);
FieldEffectStart(FLDEFF_UNK_41); // TODO: name this enum
gTasks[taskId].func = Task_VsSeeker_1;
gTasks[taskId].data[0] = 15;
diff --git a/src/window.c b/src/window.c
index 9d38ba2c3..5ccd05f35 100644
--- a/src/window.c
+++ b/src/window.c
@@ -378,698 +378,76 @@ void FillWindowPixelBuffer(u8 windowId, u8 fillValue)
CpuFastFill8(fillValue, gWindows[windowId].tileData, 0x20 * fillSize);
}
-// functionally equivalent, its fucking hard to match
-#ifdef NONMATCHING
+#define MOVE_TILES_DOWN(a) \
+{ \
+ destOffset = i + (a); \
+ srcOffset = i + (((width * (distanceLoop & ~7)) | (distanceLoop & 7)) * 4); \
+ if (srcOffset < size) \
+ *(u32*)(tileData + destOffset) = *(u32*)(tileData + srcOffset); \
+ else \
+ *(u32*)(tileData + destOffset) = fillValue32; \
+ distanceLoop++; \
+}
+
+#define MOVE_TILES_UP(a) \
+{ \
+ destOffset = i + (a); \
+ srcOffset = i + (((width * (distanceLoop & ~7)) | (distanceLoop & 7)) * 4); \
+ if (srcOffset < size) \
+ *(u32*)(tileData - destOffset) = *(u32*)(tileData - srcOffset); \
+ else \
+ *(u32*)(tileData - destOffset) = fillValue32; \
+ distanceLoop++; \
+}
+
void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue)
{
- s32 i, id1, id2, size;
- u32 distanceLoop, toFill, width;
- u8 *tileData;
- struct WindowTemplate window;
-
- tileData = gWindows[windowId].tileData;
- toFill = (fillValue << 0x18) | (fillValue << 0x10) | (fillValue << 8) | fillValue;
- window = gWindows[windowId].window;
- size = 0x20 * (window.height * window.width);
- width = window.width;
- if (direction != 1)
+ struct WindowTemplate window = gWindows[windowId].window;
+ u8 *tileData = gWindows[windowId].tileData;
+ u32 fillValue32 = (fillValue << 24) | (fillValue << 16) | (fillValue << 8) | fillValue;
+ s32 size = window.height * window.width * 32;
+ u32 width = window.width;
+ s32 i;
+ s32 srcOffset, destOffset;
+ u32 distanceLoop;
+
+ switch (direction)
{
- s32 signedDirection = direction;
- if (signedDirection <= 1)
+ case 0:
+ for (i = 0; i < size; i += 32)
{
- if (signedDirection == 0)
- {
- for (i = 0; i < size; i += 0x20)
- {
- distanceLoop = distance;
- id1 = i + 0;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData + id1) = *(u32*)(tileData + id2);
- else
- *(u32*)(tileData + id1) = toFill;
-
- distanceLoop++;
- id1 = i + 4;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData + id1) = *(u32*)(tileData + id2);
- else
- *(u32*)(tileData + id1) = toFill;
-
- distanceLoop++;
- id1 = i + 8;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData + id1) = *(u32*)(tileData + id2);
- else
- *(u32*)(tileData + id1) = toFill;
-
- distanceLoop++;
- id1 = i + 12;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData + id1) = *(u32*)(tileData + id2);
- else
- *(u32*)(tileData + id1) = toFill;
-
- distanceLoop++;
- id1 = i + 16;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData + id1) = *(u32*)(tileData + id2);
- else
- *(u32*)(tileData + id1) = toFill;
-
- distanceLoop++;
- id1 = i + 20;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData + id1) = *(u32*)(tileData + id2);
- else
- *(u32*)(tileData + id1) = toFill;
-
- distanceLoop++;
- id1 = i + 24;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData + id1) = *(u32*)(tileData + id2);
- else
- *(u32*)(tileData + id1) = toFill;
-
- distanceLoop++;
- id1 = i + 28;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData + id1) = *(u32*)(tileData + id2);
- else
- *(u32*)(tileData + id1) = toFill;
- }
- }
+ distanceLoop = distance;
+ MOVE_TILES_DOWN(0)
+ MOVE_TILES_DOWN(4)
+ MOVE_TILES_DOWN(8)
+ MOVE_TILES_DOWN(12)
+ MOVE_TILES_DOWN(16)
+ MOVE_TILES_DOWN(20)
+ MOVE_TILES_DOWN(24)
+ MOVE_TILES_DOWN(28)
}
- }
- else
- {
+ break;
+ case 1:
tileData += size - 4;
- for (i = 0; i < size; i += 0x20)
+ for (i = 0; i < size; i += 32)
{
distanceLoop = distance;
- id1 = i + 0;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData - id1) = *(u32*)(tileData - id2);
- else
- *(u32*)(tileData - id1) = toFill;
-
- distanceLoop++;
- id1 = i + 4;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData - id1) = *(u32*)(tileData - id2);
- else
- *(u32*)(tileData - id1) = toFill;
-
- distanceLoop++;
- id1 = i + 8;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData - id1) = *(u32*)(tileData - id2);
- else
- *(u32*)(tileData - id1) = toFill;
-
- distanceLoop++;
- id1 = i + 12;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData - id1) = *(u32*)(tileData - id2);
- else
- *(u32*)(tileData - id1) = toFill;
-
- distanceLoop++;
- id1 = i + 16;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData - id1) = *(u32*)(tileData - id2);
- else
- *(u32*)(tileData - id1) = toFill;
-
- distanceLoop++;
- id1 = i + 20;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData - id1) = *(u32*)(tileData - id2);
- else
- *(u32*)(tileData - id1) = toFill;
-
- distanceLoop++;
- id1 = i + 24;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData - id1) = *(u32*)(tileData - id2);
- else
- *(u32*)(tileData - id1) = toFill;
-
- distanceLoop++;
- id1 = i + 28;
- id2 = i + (((width * ((distanceLoop) & ~(7))) | ((distanceLoop) & 7)) * 4);
- if (id2 < size)
- *(u32*)(tileData - id1) = *(u32*)(tileData - id2);
- else
- *(u32*)(tileData - id1) = toFill;
+ MOVE_TILES_UP(0)
+ MOVE_TILES_UP(4)
+ MOVE_TILES_UP(8)
+ MOVE_TILES_UP(12)
+ MOVE_TILES_UP(16)
+ MOVE_TILES_UP(20)
+ MOVE_TILES_UP(24)
+ MOVE_TILES_UP(28)
}
+ break;
+ case 2:
+ break;
}
}
-#else
-__attribute__((naked))
-void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue)
-{
- 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\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r8, r1\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp]\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- ldr r2, =gWindows\n\
- lsls r1, r0, 1\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r4, r1, r2\n\
- adds r2, 0x8\n\
- adds r1, r2\n\
- ldr r5, [r1]\n\
- lsls r7, r3, 24\n\
- lsls r0, r3, 16\n\
- orrs r7, r0\n\
- lsls r0, r3, 8\n\
- orrs r7, r0\n\
- orrs r7, r3\n\
- ldr r1, [r4]\n\
- ldr r2, [r4, 0x4]\n\
- ldrb r3, [r4, 0x4]\n\
- lsrs r0, r1, 24\n\
- muls r0, r3\n\
- lsls r6, r0, 5\n\
- lsrs r1, 24\n\
- mov r12, r1\n\
- mov r0, r8\n\
- cmp r0, 0x1\n\
- bne _08003CE8\n\
- b _08003E9E\n\
-_08003CE8:\n\
- cmp r0, 0x1\n\
- ble _08003CEE\n\
- b _08004046\n\
-_08003CEE:\n\
- cmp r0, 0\n\
- beq _08003CF4\n\
- b _08004046\n\
-_08003CF4:\n\
- movs r4, 0\n\
- cmp r4, r6\n\
- blt _08003CFC\n\
- b _08004046\n\
-_08003CFC:\n\
- movs r1, 0x8\n\
- negs r1, r1\n\
- mov r9, r1\n\
- movs r2, 0x7\n\
- mov r8, r2\n\
- mov r10, r5\n\
-_08003D08:\n\
- ldr r3, [sp]\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- adds r0, r3, 0\n\
- mov r2, r8\n\
- ands r0, r2\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003D34\n\
- adds r0, r5, r1\n\
- ldr r0, [r0]\n\
- mov r1, r10\n\
- str r0, [r1]\n\
- b _08003D38\n\
- .pool\n\
-_08003D34:\n\
- mov r2, r10\n\
- str r7, [r2]\n\
-_08003D38:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0x4\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- str r1, [sp, 0x4]\n\
- adds r0, r3, 0\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldr r1, [sp, 0x4]\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003D64\n\
- adds r0, r5, r2\n\
- adds r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08003D68\n\
-_08003D64:\n\
- adds r0, r5, r2\n\
- str r7, [r0]\n\
-_08003D68:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0\n\
- adds r2, 0x8\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- str r1, [sp, 0x4]\n\
- adds r0, r3, 0\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldr r1, [sp, 0x4]\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003D96\n\
- adds r0, r5, r2\n\
- adds r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08003D9A\n\
-_08003D96:\n\
- adds r0, r5, r2\n\
- str r7, [r0]\n\
-_08003D9A:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0\n\
- adds r2, 0xC\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- str r1, [sp, 0x4]\n\
- adds r0, r3, 0\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldr r1, [sp, 0x4]\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003DC8\n\
- adds r0, r5, r2\n\
- adds r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08003DCC\n\
-_08003DC8:\n\
- adds r0, r5, r2\n\
- str r7, [r0]\n\
-_08003DCC:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0\n\
- adds r2, 0x10\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- str r1, [sp, 0x4]\n\
- adds r0, r3, 0\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldr r1, [sp, 0x4]\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003DFA\n\
- adds r0, r5, r2\n\
- adds r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08003DFE\n\
-_08003DFA:\n\
- adds r0, r5, r2\n\
- str r7, [r0]\n\
-_08003DFE:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0\n\
- adds r2, 0x14\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- str r1, [sp, 0x4]\n\
- adds r0, r3, 0\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldr r1, [sp, 0x4]\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003E2C\n\
- adds r0, r5, r2\n\
- adds r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08003E30\n\
-_08003E2C:\n\
- adds r0, r5, r2\n\
- str r7, [r0]\n\
-_08003E30:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0\n\
- adds r2, 0x18\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- str r1, [sp, 0x4]\n\
- adds r0, r3, 0\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldr r1, [sp, 0x4]\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003E5E\n\
- adds r0, r5, r2\n\
- adds r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08003E62\n\
-_08003E5E:\n\
- adds r0, r5, r2\n\
- str r7, [r0]\n\
-_08003E62:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0\n\
- adds r2, 0x1C\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- mov r1, r8\n\
- ands r3, r1\n\
- orrs r0, r3\n\
- lsls r0, 2\n\
- adds r1, r4, r0\n\
- cmp r1, r6\n\
- bge _08003E8C\n\
- adds r0, r5, r2\n\
- adds r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08003E90\n\
-_08003E8C:\n\
- adds r0, r5, r2\n\
- str r7, [r0]\n\
-_08003E90:\n\
- movs r2, 0x20\n\
- add r10, r2\n\
- adds r4, 0x20\n\
- cmp r4, r6\n\
- bge _08003E9C\n\
- b _08003D08\n\
-_08003E9C:\n\
- b _08004046\n\
-_08003E9E:\n\
- subs r0, r6, 0x4\n\
- adds r5, r0\n\
- movs r4, 0\n\
- cmp r4, r6\n\
- blt _08003EAA\n\
- b _08004046\n\
-_08003EAA:\n\
- movs r0, 0x8\n\
- negs r0, r0\n\
- mov r9, r0\n\
- movs r1, 0x7\n\
- mov r8, r1\n\
- mov r10, r5\n\
-_08003EB6:\n\
- ldr r3, [sp]\n\
- adds r0, r3, 0\n\
- mov r2, r9\n\
- ands r0, r2\n\
- mov r1, r12\n\
- muls r1, r0\n\
- adds r0, r3, 0\n\
- mov r2, r8\n\
- ands r0, r2\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003EDC\n\
- subs r0, r5, r1\n\
- ldr r0, [r0]\n\
- mov r1, r10\n\
- str r0, [r1]\n\
- b _08003EE0\n\
-_08003EDC:\n\
- mov r2, r10\n\
- str r7, [r2]\n\
-_08003EE0:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0x4\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- str r1, [sp, 0x4]\n\
- adds r0, r3, 0\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldr r1, [sp, 0x4]\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003F0C\n\
- subs r0, r5, r2\n\
- subs r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08003F10\n\
-_08003F0C:\n\
- subs r0, r5, r2\n\
- str r7, [r0]\n\
-_08003F10:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0\n\
- adds r2, 0x8\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- str r1, [sp, 0x4]\n\
- adds r0, r3, 0\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldr r1, [sp, 0x4]\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003F3E\n\
- subs r0, r5, r2\n\
- subs r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08003F42\n\
-_08003F3E:\n\
- subs r0, r5, r2\n\
- str r7, [r0]\n\
-_08003F42:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0\n\
- adds r2, 0xC\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- str r1, [sp, 0x4]\n\
- adds r0, r3, 0\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldr r1, [sp, 0x4]\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003F70\n\
- subs r0, r5, r2\n\
- subs r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08003F74\n\
-_08003F70:\n\
- subs r0, r5, r2\n\
- str r7, [r0]\n\
-_08003F74:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0\n\
- adds r2, 0x10\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- str r1, [sp, 0x4]\n\
- adds r0, r3, 0\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldr r1, [sp, 0x4]\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003FA2\n\
- subs r0, r5, r2\n\
- subs r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08003FA6\n\
-_08003FA2:\n\
- subs r0, r5, r2\n\
- str r7, [r0]\n\
-_08003FA6:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0\n\
- adds r2, 0x14\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- str r1, [sp, 0x4]\n\
- adds r0, r3, 0\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldr r1, [sp, 0x4]\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08003FD4\n\
- subs r0, r5, r2\n\
- subs r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08003FD8\n\
-_08003FD4:\n\
- subs r0, r5, r2\n\
- str r7, [r0]\n\
-_08003FD8:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0\n\
- adds r2, 0x18\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- str r1, [sp, 0x4]\n\
- adds r0, r3, 0\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldr r1, [sp, 0x4]\n\
- orrs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4, r1\n\
- cmp r1, r6\n\
- bge _08004006\n\
- subs r0, r5, r2\n\
- subs r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _0800400A\n\
-_08004006:\n\
- subs r0, r5, r2\n\
- str r7, [r0]\n\
-_0800400A:\n\
- adds r3, 0x1\n\
- adds r2, r4, 0\n\
- adds r2, 0x1C\n\
- adds r0, r3, 0\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r12\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- mov r1, r8\n\
- ands r3, r1\n\
- orrs r0, r3\n\
- lsls r0, 2\n\
- adds r1, r4, r0\n\
- cmp r1, r6\n\
- bge _08004034\n\
- subs r0, r5, r2\n\
- subs r1, r5, r1\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- b _08004038\n\
-_08004034:\n\
- subs r0, r5, r2\n\
- str r7, [r0]\n\
-_08004038:\n\
- movs r2, 0x20\n\
- negs r2, r2\n\
- add r10, r2\n\
- adds r4, 0x20\n\
- cmp r4, r6\n\
- bge _08004046\n\
- b _08003EB6\n\
-_08004046:\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\
- .syntax divided");
-}
-#endif // NONMATCHING
-void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8))
+void CallWindowFunction(u8 windowId, WindowFunc func)
{
struct WindowTemplate window = gWindows[windowId].window;
func(window.bg, window.tilemapLeft, window.tilemapTop, window.width, window.height, window.paletteNum);
diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c
index baf44cafc..cc80d37b6 100644
--- a/src/wireless_communication_status_screen.c
+++ b/src/wireless_communication_status_screen.c
@@ -10,7 +10,7 @@
#include "scanline_effect.h"
#include "m4a.h"
#include "string_util.h"
-#include "unk_text_util.h"
+#include "dynamic_placeholder_text_util.h"
#include "overworld.h"
#include "sound.h"
#include "menu.h"
@@ -208,7 +208,7 @@ void sub_814F1E4(void)
ChangeBgY(1, 0, 0);
LoadPalette(gUnknown_846F4D0, 0, 0x20);
Menu_LoadStdPalAt(0xf0);
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
FillBgTilemapBufferRect(0, 0x000, 0, 0, 32, 32, 0xF);
CopyBgTilemapBufferToVram(1);
SetMainCallback2(sub_814F19C);
@@ -229,7 +229,7 @@ void sub_814F32C(void)
Free(GetBgTilemapBuffer(i));
}
Free(gUnknown_3002040);
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
void sub_814F364(s16 * unk0, s16 * unk1)
@@ -359,7 +359,7 @@ void sub_814F65C(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 palIdx)
break;
// default: UB
}
- AddTextPrinterParametrized2(windowId, fontId,x, y, fontId == 0 ? 0 : 1, 0, &textColor, -1, str);
+ AddTextPrinterParameterized4(windowId, fontId,x, y, fontId == 0 ? 0 : 1, 0, &textColor, -1, str);
}
u32 sub_814F714(struct UnkStruct_x20 * unk20, u32 * arg1)
diff --git a/sym_bss.txt b/sym_bss.txt
index 556a53add..7c0bdf1a1 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -57,17 +57,14 @@ gUnknown_3000E6A: @ 3000E6A
gUnknown_3000E6B: @ 3000E6B
.space 0x1
-gUnknown_3000E6C: @ 3000E6C
- .space 0x8
-
+ .include "src/multiboot.o"
.include "src/daycare.o"
gUnknown_3000E78: @ 3000E78
.space 0x4
-gUnknown_3000E7C: @ 3000E7C
- .space 0x4
-
+ .include "src/play_time.o"
+ .align 2
gUnknown_3000E80: @ 3000E80
.space 0x4
@@ -197,38 +194,8 @@ gUnknown_3002040: @ 3002040
gUnknown_3002044: @ 3002044
.space 0x4
-gUnknown_3002048: @ 3002048
- .space 0x18
-
-gUnknown_3002060: @ 3002060
- .space 0x2
-
-gUnknown_3002062: @ 3002062
- .space 0x2
-
-gUnknown_3002064: @ 3002064
- .space 0x2
-
-gUnknown_3002066: @ 3002066
- .space 0x2
-
-gUnknown_3002068: @ 3002068
- .space 0x4
-
-gUnknown_300206C: @ 300206C
- .space 0x2
-
-gUnknown_300206E: @ 300206E
- .space 0x2
-
-gUnknown_3002070: @ 3002070
- .space 0x2
-
-gUnknown_3002072: @ 3002072
- .space 0x2
-
-gUnknown_3002074: @ 3002074
- .space 0x4
+ .align 3
+ .include "src/ereader_helpers.o"
.align 3
.include "src/unk_815C980.o"
diff --git a/sym_common.txt b/sym_common.txt
index 56536bda2..e875d439b 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -96,7 +96,7 @@ gUnknown_3003FA0: @ 3003FA0
gUnknown_3003FB0: @ 3003FB0
.space 0x4
-gUnknown_3003FB4: @ 3003FB4
+gSioMlt_Recv: @ 3003FB4
.space 0xFBC
gUnknown_3004F70: @ 3004F70
@@ -298,12 +298,9 @@ gUnknown_3005E10: @ 3005E10
gUnknown_3005E20: @ 3005E20
.space 0x40
-gUnknown_3005E60: @ 3005E60
- .space 0x10
-
-gMultiuseListMenuTemplate: @ 3005E70
- .space 0x18
-
+ .align 4
+ .include "list_menu.o"
+ .align 2
.include "quest_log.o"
gUnknown_3005E8C: @ 3005E8C
@@ -318,12 +315,8 @@ gUnknown_3005E94: @ 3005E94
gUnknown_3005E98: @ 3005E98
.space 0x4
-gUnknown_3005E9C: @ 3005E9C
- .space 0x4
-
-gUnknown_3005EA0: @ 3005EA0
- .space 0x10
-
+ .include "help_system_812B1E0.o"
+ .align 4
.include "fame_checker.o"
gUnknown_3005ECC: @ 3005ECC
@@ -333,20 +326,11 @@ gUnknown_3005ECC: @ 3005ECC
.align 4
gUnknown_3005EE0: @ 3005EE0
+@ const u8 *gUnknown_3005EE0[4]
.space 0x10
-gUnknown_3005EF0: @ 3005EF0
- .space 0x4
-
-gUnknown_3005EF4: @ 3005EF4
- .space 0x4
-
-gUnknown_3005EF8: @ 3005EF8
- .space 0x8
-
-gUnknown_3005F00: @ 3005F00
- .space 0x50
-
+ .align 4
+ .include "berry_fix_program.o"
.include "m4a.o"
.include "agb_flash.o"
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 18f6433c4..149ac1b34 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1,37 +1,15 @@
-gDecompressionBuffer: @ 201C000
- .space 0x20
-
-gUnknown_201C020: @ 201C020
- .space 0xA8
-
-gUnknown_201C0C8: @ 201C0C8
- .space 0x22F8
-
-gUnknown_201E3C0: @ 201E3C0
- .space 0x1040
-
-gUnknown_201F400: @ 201F400
- .space 0x400
-
-gUnknown_201F800: @ 201F800
- .space 0x500
-
-gUnknown_201FD00: @ 201FD00
- .space 0x1E0
-
-gUnknown_201FEE0: @ 201FEE0
- .space 0x20
-
-gUnknown_201FF00: @ 201FF00
- .space 0x100
-
-gTrainerId: @ 2020000
- .space 0x4
+ .align 2
+ .include "src/main.o"
+ .align 2
.include "src/malloc.o"
+ .align 2
.include "src/text_printer.o"
+ .align 2
.include "src/window.o"
+ .align 2
.include "src/window_8bpp.o"
+ .align 2
.include "src/sprite.o"
.align 2
@@ -254,7 +232,7 @@ gUnknown_2023C30: @ 2023C30
gUnknown_2023C34: @ 2023C34
.space 0x110
-gUnknown_2023D44: @ 2023D44
+gBattlerSpriteIds: @ 2023D44
.space 0x4
gUnknown_2023D48: @ 2023D48
@@ -386,7 +364,7 @@ gUnknown_2023E82: @ 2023E82
gUnknown_2023E83: @ 2023E83
.space 0x7
-gUnknown_2023E8A: @ 2023E8A
+gBattleOutcome: @ 2023E8A
.space 0x2
gUnknown_2023E8C: @ 2023E8C
@@ -509,13 +487,7 @@ gUnknown_2024414: @ 2024414
gUnknown_2024478: @ 2024478
.space 0x64
-gMultiuseSpriteTemplate: @ 20244DC
- .space 0x18
-
-gUnknown_20244F4: @ 20244F4
- .space 0x4
-
- .align 2
+ .include "src/pokemon.o"
.include "src/daycare.o"
.align 2
.include "src/load_save.o"
@@ -746,7 +718,7 @@ gUnknown_2037EE2: @ 2037EE2
gUnknown_2037EE3: @ 2037EE3
.space 0x1
-gUnknown_2037EE4: @ 2037EE4
+gAnimDisableStructPtr: @ 2037EE4
.space 0x4
gUnknown_2037EE8: @ 2037EE8
@@ -764,7 +736,7 @@ gUnknown_2037EFE: @ 2037EFE
gUnknown_2037F00: @ 2037F00
.space 0x2
-gUnknown_2037F02: @ 2037F02
+gBattleAnimArgs: @ 2037F02
.space 0x10
gUnknown_2037F12: @ 2037F12
@@ -773,7 +745,7 @@ gUnknown_2037F12: @ 2037F12
gUnknown_2037F14: @ 2037F14
.space 0x2
-gUnknown_2037F16: @ 2037F16
+gAnimMoveTurn: @ 2037F16
.space 0x1
gUnknown_2037F17: @ 2037F17
@@ -782,10 +754,10 @@ gUnknown_2037F17: @ 2037F17
gUnknown_2037F18: @ 2037F18
.space 0x2
-gUnknown_2037F1A: @ 2037F1A
+gBattleAnimAttacker: @ 2037F1A
.space 0x1
-gUnknown_2037F1B: @ 2037F1B
+gBattleAnimTarget: @ 2037F1B
.space 0x1
gUnknown_2037F1C: @ 2037F1C
@@ -863,17 +835,8 @@ gFieldEffectArguments: @ 20386E0
gUnknown_2039620: @ 2039620
.space 0x4
-gUnknown_2039624: @ 2039624
- .space 0x14
-
-gUnknown_2039638: @ 2039638
- .space 0x2
-
-gUnknown_203963A: @ 203963A
- .space 0x1A
-
-gUnknown_2039654: @ 2039654
- .space 0x150
+gTrainerCards: @ 2039624
+ .space 0x180
gUnknown_20397A4: @ 20397A4
.space 0x4
@@ -944,20 +907,8 @@ gUnknown_2039870: @ 2039870
gUnknown_2039874: @ 2039874
.space 0x4
-gUnknown_2039878: @ 2039878
- .space 0x1
-
-gUnknown_2039879: @ 2039879
- .space 0x9
-
-gUnknown_2039882: @ 2039882
- .space 0x2
-
-gUnknown_2039884: @ 2039884
- .space 0x4
-
-gUnknown_2039888: @ 2039888
- .space 0x4
+ .align 2
+ .include "src/item_menu_icons.o"
gBagPockets: @ 203988C
.space 0x28
@@ -1013,15 +964,10 @@ gUnknown_203998C: @ 203998C
.include "src/money.o"
.align 2
-gUnknown_2039994: @ 2039994
- .space 0x2
-
-gUnknown_2039996: @ 2039996
- .space 0x2
-
-gUnknown_2039998: @ 2039998
- .space 0x4
+ .include "src/safari_zone.o"
+ .include "src/item_use.o"
+ .align 2
gUnknown_203999C: @ 203999C
.space 0x8
@@ -1043,15 +989,9 @@ gUnknown_20399C0: @ 20399C0
gUnknown_20399C4: @ 20399C4
.space 0x4
-gUnknown_20399C8: @ 20399C8
- .space 0x4
-
-gUnknown_20399CC: @ 20399CC
- .space 0x4
-
-gUnknown_20399D0: @ 20399D0
- .space 0x4
+ .include "src/menu_helpers.o"
+ .align 2
gUnknown_20399D4: @ 20399D4
.space 0x4
@@ -1082,7 +1022,7 @@ gUnknown_20399FC: @ 20399FC
gAIScriptPtr: @ 2039A00
.space 0x4
-gUnknown_2039A04: @ 2039A04
+gPlayerFacingPosition: @ 2039A04
.space 0x8
gUnknown_2039A0C: @ 2039A0C
@@ -1106,8 +1046,7 @@ gUnknown_2039A1A: @ 2039A1A
gUnknown_2039A1B: @ 2039A1B
.space 0x1
-gUnknown_2039A1C: @ 2039A1C
- .space 0x4
+ .include "src/battle_records.o"
gUnknown_2039A20: @ 2039A20
.space 0x4
@@ -1151,75 +1090,9 @@ gUnknown_203AAC4: @ 203AAC4
gUnknown_203AAC6: @ 203AAC6
.space 0xE
-gUnknown_203AAD4: @ 203AAD4
- .space 0x2C
-
-gUnknown_203AB00: @ 203AB00
- .space 0x2
-
-gUnknown_203AB02: @ 203AB02
- .space 0x2
-
-gUnknown_203AB04: @ 203AB04
- .space 0x2
-
-gUnknown_203AB06: @ 203AB06
- .space 0x2
-
-gUnknown_203AB08: @ 203AB08
- .space 0x2
-
-gUnknown_203AB0A: @ 203AB0A
- .space 0x2
-
-gUnknown_203AB0C: @ 203AB0C
- .space 0x2
-
-gUnknown_203AB0E: @ 203AB0E
- .space 0x2
-
-gUnknown_203AB10: @ 203AB10
- .space 0x2
-
-gUnknown_203AB12: @ 203AB12
- .space 0x2
-
-gUnknown_203AB14: @ 203AB14
- .space 0x2
-
-gUnknown_203AB16: @ 203AB16
- .space 0x2
-
-gUnknown_203AB18: @ 203AB18
- .space 0x2
-
-gUnknown_203AB1A: @ 203AB1A
- .space 0x2
-
-gUnknown_203AB1C: @ 203AB1C
- .space 0x2
-
-gUnknown_203AB1E: @ 203AB1E
- .space 0x2
-
-gUnknown_203AB20: @ 203AB20
- .space 0x2
-
-gUnknown_203AB22: @ 203AB22
- .space 0x2
-
-gUnknown_203AB24: @ 203AB24
- .space 0x4
-
-gUnknown_203AB28: @ 203AB28
- .space 0x4
-
-gUnknown_203AB2C: @ 203AB2C
- .space 0x4
-
-gUnknown_203AB30: @ 203AB30
- .space 0x4
+ .include "src/intro.o"
+ .align 2
gUnknown_203AB34: @ 203AB34
.space 0x4
@@ -1235,8 +1108,7 @@ gUnknown_203AB40: @ 203AB40
gUnknown_203AB44: @ 203AB44
.space 0x4
-gUnknown_203AB48: @ 203AB48
- .space 0x4
+ .include "src/diploma.o"
gUnknown_203AB4C: @ 203AB4C
.space 0x4
@@ -1247,18 +1119,8 @@ gUnknown_203AB50: @ 203AB50
gUnknown_203AB54: @ 203AB54
.space 0x4
-gUnknown_203AB58: @ 203AB58
- .space 0x4
-
-gUnknown_203AB5C: @ 203AB5C
- .space 0x4
-
-gUnknown_203AB60: @ 203AB60
- .space 0x80
-
-gUnknown_203ABE0: @ 203ABE0
- .space 0x4
-
+ .include "src/new_menu_helpers.o"
+ .align 2
gUnknown_203ABE4: @ 203ABE4
.space 0x4
@@ -1289,9 +1151,8 @@ gUnknown_203ACEC: @ 203ACEC
gUnknown_203ACF0: @ 203ACF0
.space 0x4
-gUnknown_203ACF4: @ 203ACF4
- .space 0x8
-
+ .include "src/list_menu.o"
+ .align 2
gUnknown_203ACFC: @ 203ACFC
.space 0x6
@@ -1340,48 +1201,17 @@ gSpecialVar_ItemId: @ 203AD30
.align 2
.include "src/vs_seeker.o"
-gUnknown_203ADBC: @ 203ADBC
- .space 0x4
-
-gUnknown_203ADC0: @ 203ADC0
- .space 0x4
-
-gUnknown_203ADC4: @ 203ADC4
- .space 0x4
-
-gUnknown_203ADC8: @ 203ADC8
- .space 0x4
-
-gUnknown_203ADCC: @ 203ADCC
- .space 0x4
-
-gUnknown_203ADD0: @ 203ADD0
- .space 0x8
-
-gUnknown_203ADD8: @ 203ADD8
- .space 0x4
+ .align 2
+ .include "src/item_pc.o"
+ .align 2
gUnknown_203ADDC: @ 203ADDC
.space 0x4
gUnknown_203ADE0: @ 203ADE0
.space 0x4
-gUnknown_203ADE4: @ 203ADE4
- .space 0xC
-
-gUnknown_203ADF0: @ 203ADF0
- .space 0x2
-
-gUnknown_203ADF2: @ 203ADF2
- .space 0x1
-
-gUnknown_203ADF3: @ 203ADF3
- .space 0x1
-
-gUnknown_203ADF4: @ 203ADF4
- .space 0x4
-
+ .include "src/menu.o"
.include "src/quest_log.o"
gUnknown_203B04C: @ 203B04C
@@ -1483,18 +1313,15 @@ gUnknown_203B0E4: @ 203B0E4
gUnknown_203B0E8: @ 203B0E8
.space 0x4
-gUnknown_203B0EC: @ 203B0EC
- .space 0x2
-
-gUnknown_203B0EE: @ 203B0EE
- .space 0x2
-
+ .align 2
+ .include "src/help_system_812B1E0.o"
+ .align 2
.include "src/fame_checker.o"
+ .align 2
.include "src/oak_speech.o"
+ .align 2
.include "src/tm_case.o"
-
-gUnknown_203B130: @ 203B130
- .space 0x10
+ .include "src/menu_indicators.o"
gUnknown_203B140: @ 203B140
.space 0x4
@@ -1532,35 +1359,9 @@ gUnknown_203B16E: @ 203B16E
gUnknown_203B170: @ 203B170
.space 0x4
-gUnknown_203B174: @ 203B174
- .space 0x4000
-
-gUnknown_203F174: @ 203F174
- .space 0x1
-
-gUnknown_203F175: @ 203F175
- .space 0x1
-
-gUnknown_203F176: @ 203F176
- .space 0x1
-
-gUnknown_203F177: @ 203F177
- .space 0x1
-
-gUnknown_203F178: @ 203F178
- .space 0x12
-
-gUnknown_203F18A: @ 203F18A
- .space 0x6
-
-gUnknown_203F190: @ 203F190
- .space 0x1C
-
-gUnknown_203F1AC: @ 203F1AC
- .space 0x1A0
-
-gUnknown_203F34C: @ 203F34C
- .space 0x20
+ .align 2
+ .include "src/help_system.o"
+ .include "src/dynamic_placeholder_text_util.o"
gUnknown_203F36C: @ 203F36C
.space 0x4
@@ -1635,22 +1436,11 @@ gUnknown_203F43C: @ 203F43C
gUnknown_203F440: @ 203F440
.space 0x4
-gTeachyTV_StaticResources: @ 203F444
- .space 0x6
-
-gUnknown_203F44A: @ 203F44A
- .space 0x6
-
-gUnknown_203F450: @ 203F450
- .space 0x4
-
+ .align 2
+ .include "src/teachy_tv.o"
.align 2
.include "src/unk_815C980.o"
.align 2
.include "src/trainer_tower.o"
-
-gUnknown_203F460: @ 203F460
- .space 0x4
-
-gUnknown_203F464: @ 203F464
- .space 0x1
+ .align 2
+ .include "src/berry_powder.o"
diff --git a/tools/asmdiff.sh b/tools/asmdiff.sh
new file mode 100755
index 000000000..a8114dc4f
--- /dev/null
+++ b/tools/asmdiff.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+OBJDUMP="./tools/binutils/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb"
+OPTIONS="--start-address=$1 --stop-address=$2"
+$OBJDUMP $OPTIONS baserom.gba > baserom.dump
+$OBJDUMP $OPTIONS pokefirered.gba > pokefirered.dump
+diff -u baserom.dump pokefirered.dump
diff --git a/tools/br_ips/Makefile b/tools/br_ips/Makefile
new file mode 100644
index 000000000..e80e2576b
--- /dev/null
+++ b/tools/br_ips/Makefile
@@ -0,0 +1,13 @@
+CC := gcc
+CFLAGS := -O3
+
+all: br_ips ips_patch
+
+clean:
+ rm -f br_ips ips_patch br_ips.exe ips_patch.exe
+
+br_ips: br_ips.c
+ $(CC) $(CFLAGS) -o $@ $^
+
+ips_patch: ips_patch.c
+ $(CC) $(CFLAGS) -o $@ $^
diff --git a/tools/br_ips/br_ips.c b/tools/br_ips/br_ips.c
new file mode 100644
index 000000000..64c454a3e
--- /dev/null
+++ b/tools/br_ips/br_ips.c
@@ -0,0 +1,321 @@
+#define _POSIX_C_SOURCE 200808L // Don't use GNU getline
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+#include "global.h"
+
+static const char SPLASH[] = "IPS patch creator for undisassembled data\n"
+ "Created by PikalaxALT on 23 June 2019 All Rights Reserved\n";
+
+static const char HELP[] = "br_ips\n"
+ "This utility is meant to be run with no arguments in the project root of a PRET AGB disassembly.\n"
+ "baserom.gba and ld_script.txt are required files which must be present in the project root.\n"
+ "ld_script.txt is a GNU linker script. For more details, see\n"
+ "https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_chapter/ld_3.html#SEC6.\n"
+ "All ELF targets in the linker script with Makefile rules \"%.o: %.s\" must have their sources present\n"
+ "at the indicated paths relative to the project root.\n"
+ "\n"
+ "Options:\n"
+ " -h - show this message and exit\n";
+
+static int getline(char ** lineptr, size_t * n, FILE * stream) {
+ // Static implementation of GNU getline
+ int i = 0;
+ int c;
+ if (n == NULL || lineptr == NULL || stream == NULL) return -1;
+ size_t size = *n;
+ char * buf = *lineptr;
+ if (buf == NULL || size < 4) {
+ size = 128;
+ *lineptr = buf = realloc(buf, 128);
+ }
+ if (buf == NULL) return -1;
+ while (1) {
+ c = getc(stream);
+ if (c == EOF) break;
+ buf[i++] = c;
+ if (c == '\n') break;
+ if (i == size - 1) {
+ size <<= 1;
+ buf = realloc(buf, size);
+ if (buf == NULL) return -1;
+ *lineptr = buf;
+ *n = size;
+ }
+ }
+ if (i == 0) return -1;
+ buf[i] = 0;
+ return i;
+}
+
+static void getIncbinsFromFile(hunk_t ** hunks, size_t * num, size_t * maxnum, const char * fname, char ** strbuf, size_t * buffersize) {
+ // Recursively find incbinned segments and encode them as hunks.
+ FILE * file = fopen(fname, "r");
+ if (file == NULL) FATAL_ERROR("unable to open file \"%s\" for reading\n", fname);
+ hunk_t * data = *hunks;
+ size_t nhunks = *num;
+ size_t maxnhunks = *maxnum;
+ int line_n = 0; // for error prints
+ while (getline(strbuf, buffersize, file) > 0) {
+ line_n++;
+ // If another file is included by this one, recurse into it.
+ char * include = strstr(*strbuf, ".include");
+ if (include != NULL) {
+ char incfname[128];
+ include = strchr(include, '"');
+ if (include == NULL) FATAL_ERROR("%s:%d: malformed include\n", fname, line_n);
+ include++;
+ char * endq_p = strchr(include, '"');
+ if (endq_p == NULL) FATAL_ERROR("%s:%d: malformed include\n", fname, line_n);
+ *endq_p = 0;
+ strcpy(incfname, include);
+ getIncbinsFromFile(&data, &nhunks, &maxnhunks, incfname, strbuf, buffersize);
+ continue;
+ }
+ // Check for a .incbin "baserom.gba" directive
+ char * line = strstr(*strbuf, ".incbin");
+ if (line == NULL) continue;
+ line = strstr(line + sizeof(".incbin"), "\"baserom.gba\",");
+ if (line == NULL) continue;
+ line += sizeof("\"baserom.gba\",") - 1;
+ uint32_t incbinOffset;
+ // Enforce the structure .incbin "baserom.gba", offset, size
+ // Data cannot be located at offset 0, as that is the entry
+ // point (ARM code).
+ do {
+ if (*line == 0) FATAL_ERROR("%s:%d: malformed incbin\n", fname, line_n);
+ incbinOffset = strtoul(line, &line, 0);
+ line++;
+ } while (incbinOffset == 0);
+ size_t incbinSize;
+ do {
+ if (*line == 0) FATAL_ERROR("%s:%d: malformed incbin\n", fname, line_n);
+ incbinSize = strtoul(line, &line, 0);
+ line++;
+ } while (incbinSize == 0);
+ // Offset must fit in three bytes
+ if (incbinOffset >= 0x01000000) FATAL_ERROR("%s:%d: offset exceeds encodable limit\n", fname, line_n);
+ // Avoid confusion with the end sentinel
+ if (incbinOffset == 0x454F46) { // "EOF"
+ incbinOffset--;
+ incbinSize++;
+ }
+ // Cannot read past a certain point due to format restrictions
+ if (incbinOffset + incbinSize > 0xFFFFFF + 0xFFFF) FATAL_ERROR("%s:%d: size exceeds encodable limit\n", fname, line_n);
+ // Break up the incbin into hunks of maximum size 0xFFFF
+ do {
+ size_t trueSize = incbinSize <= 0xFFFF ? incbinSize : 0xFFFF;
+ if (nhunks >= maxnhunks) {
+ maxnhunks <<= 1;
+ data = realloc(data, maxnhunks * sizeof(hunk_t));
+ if (data == NULL) FATAL_ERROR("unable to reallocate hunks buffer\n");
+ }
+ data[nhunks].offset = incbinOffset;
+ data[nhunks].size = trueSize;
+ incbinOffset += trueSize;
+ incbinSize -= trueSize;
+ if (incbinOffset == 0x454F46) {
+ incbinOffset--;
+ data[nhunks].size--;
+ incbinSize++;
+ }
+ nhunks++;
+ } while (incbinSize > 0);
+ }
+ // Error check
+ if (!feof(file)) FATAL_ERROR("getline\n");
+ fclose(file);
+ *hunks = data;
+ *num = nhunks;
+ *maxnum = maxnhunks;
+}
+
+static hunk_t * getAllIncbins(FILE * ld_script, size_t * num_p) {
+ // Parse the ld script.
+ // Strict adherence to syntax is expected.
+ char * line = NULL;
+ size_t linesiz = 0;
+ char fname_buf[128];
+ size_t maxnum = 256;
+ size_t num = 0;
+ // Allocate the hunks array.
+ hunk_t * hunks = malloc(256 * sizeof(hunk_t));
+ if (hunks == NULL) FATAL_ERROR("failed to allocate hunks buffer\n");
+ while (getline(&line, &linesiz, ld_script) > 0) {
+ char * endptr;
+ // We only expect hunks in rodata, script_data, and gfx_data sections.
+ if ((endptr = strstr(line, ".o(.rodata);")) == NULL
+ && (endptr = strstr(line, ".o(script_data);")) == NULL
+ && (endptr = strstr(line, ".o(gfx_data);")) == NULL) continue;
+ char * startptr = line;
+ // Skip whitespace.
+ while (isspace(*startptr)) startptr++;
+ if (strstr(startptr, ".a:") != NULL) continue; // no hunks in libs
+ if (strstr(startptr, "src/") == startptr) continue; // no hunks in src/
+ // Replace the extension with .s and truncate the string
+ endptr[1] = 's';
+ endptr[2] = 0;
+ // We're reusing the already-allocated string buffer, so
+ // copy the filename to the stack for use in error prints.
+ strcpy(fname_buf, startptr);
+ getIncbinsFromFile(&hunks, &num, &maxnum, fname_buf, &line, &linesiz);
+ }
+ // Error check
+ if (!feof(ld_script)) FATAL_ERROR("getline\n");
+ free(line);
+ *num_p = num;
+ return hunks;
+}
+
+static int cmp_baserom(const void * a, const void * b) {
+ // Comparison function for sorting Hunk structs.
+ // For more details, please refer to the qsort man pages.
+ // See also the function "collapseIncbins" below.
+ const hunk_t * aa = (const hunk_t *)a;
+ const hunk_t * bb = (const hunk_t *)b;
+ return (aa->offset > bb->offset) - (aa->offset < bb->offset);
+}
+
+static void collapseIncbins(hunk_t * hunks, size_t * num_p) {
+ // This function merges adjacent hunks where possible.
+ size_t num = *num_p;
+ // Sort the array by offset increasing.
+ qsort(hunks, num, sizeof(hunk_t), cmp_baserom);
+ // We stop at num - 1 because we need to be able to look one
+ // entry ahead in the hunks array.
+ for (int i = 0; i < num - 1; i++) {
+ // Loop until the next hunk is not adjacent to the current.
+ while (hunks[i].offset + hunks[i].size == hunks[i + 1].offset) {
+ // If this hunk cannot be merged with the next, proceed to the next.
+ if (hunks[i].size == 0xFFFF || (hunks[i].size == 0xFFFE && hunks[i + 1].offset == 0x454F45)) break;
+ // If this hunk is empty, remove it.
+ if (hunks[i].size == 0) {
+ int j;
+ // Find the next non-empty hunk
+ for (j = i + 1; j < num; j++) {
+ if (hunks[j].size != 0) break;
+ }
+ if (j == num) {
+ // All remaining hunks are empty
+ num = i;
+ break;
+ }
+ // Compaction
+ // Use a for loop instead of memcpy to avoid UB from
+ // overlapping buffers.
+ for (int k = 0; k < num - j; k++) hunks[i + k] = hunks[j + k];
+ num -= j - i;
+ if (i >= num - 1) break;
+ }
+ else
+ {
+ // Combine this hunk with the next
+ hunks[i].size += hunks[i + 1].size;
+ if (hunks[i].size > 0xFFFF) {
+ // Split the hunk back up, it's too big to encode.
+ // Set the earlier hunk to the maximum permitted size,
+ // and the following hunk to the remainder.
+ hunks[i + 1].size = hunks[i].size - 0xFFFF;
+ hunks[i].size = 0xFFFF;
+ hunks[i + 1].offset = hunks[i].offset + 0xFFFF;
+ // If this operation would confuse the hunk with the
+ // EOF sentinel, fix that.
+ if (hunks[i + 1].offset == 0x454F46) {
+ hunks[i].size--;
+ hunks[i + 1].offset--;
+ hunks[i + 1].size++;
+ }
+ break;
+ } else {
+ // Compaction
+ // Use a for loop instead of memcpy to avoid UB from
+ // overlapping buffers.
+ for (int j = i + 1; j < num - 1; j++) hunks[j] = hunks[j + 1];
+ num--;
+ if (i >= num - 1) break;
+ }
+ }
+ }
+ }
+ *num_p = num;
+}
+
+static void writePatch(const char * filename, const hunk_t * hunks, size_t num, FILE * rom) {
+ // Create an IPS patch.
+ // The file is headed with a magic code which is "PATCH" in ASCII.
+ // Following that are the "hunks": 3-byte offset, 2-byte size, and
+ // the literal data. The file is ended with "EOF", again in ASCII.
+ // For that reason, an offset of 0x454F46 cannot be encoded directly.
+ // Offset and size are encoded big-endian.
+ FILE * file = fopen(filename, "wb");
+ if (file == NULL) FATAL_ERROR("unable to open file \"%s\" for writing\n", filename);
+ // Maximum hunk size is 65535 bytes. For convenience, we allocate a
+ // round 65536 (0x10000). This has no effect on memory consumption,
+ // as malloc will round this up anyway.
+ char * readbuf = malloc(0x10000);
+ if (readbuf == NULL) FATAL_ERROR("failed to allocate write buffer\n");
+ fwrite("PATCH", 1, 5, file); // magic
+ for (int i = 0; i < num; i++) {
+ // Encode the offset
+ uint32_t offset = hunks[i].offset;
+ putc(offset >> 16, file);
+ putc(offset >> 8, file);
+ putc(offset >> 0, file);
+ // Encode the size
+ size_t size = hunks[i].size;
+ putc(size >> 8, file);
+ putc(size >> 0, file);
+ // Yank the data straight from the ROM
+ if (fseek(rom, offset, SEEK_SET)) FATAL_ERROR("seek\n");
+ if (fread(readbuf, 1, size, rom) != size) FATAL_ERROR("read\n");
+ if (fwrite(readbuf, 1, size, file) != size) FATAL_ERROR("write\n");
+ }
+ free(readbuf);
+ // Write the EOF magic
+ fwrite("EOF", 1, 3, file);
+ fclose(file);
+}
+
+// This script takes no arguments.
+int main(int argc, char ** argv) {
+ // Show a friendly message
+ puts(SPLASH);
+ // If requested, show help message
+ if (argc >= 2 && strcmp(argv[1], "-h") == 0) {
+ puts(HELP);
+ return 0;
+ }
+ // This script expects to be in a PRET AGB disassembly project root.
+ // Required files include baserom.gba, ld_script.txt, and all paths
+ // referenced in ld_script.txt relative to the project root.
+ FILE * rom = fopen("baserom.gba", "rb");
+ if (rom == NULL) FATAL_ERROR("unable to open \"baserom.gba\" for reading\n");
+ FILE * ld_script = fopen("ld_script.txt", "r");
+ if (ld_script == NULL) FATAL_ERROR("unable to open \"ld_script.txt\" for reading\n");
+ // Find all instances where segments of baserom.gba are incbinned literaly.
+ size_t num = 0;
+ hunk_t * hunks = getAllIncbins(ld_script, &num);
+ fclose(ld_script);
+ if (num == 0) {
+ // If this line is printed, the script was unable to find any
+ // `.incbin "baserom.gba"` lines.
+ // If this is incorrect, please contact the developer.
+ puts("No baserom.gba hunks found!\n"
+ "If there are baserom.gba hunks in this project,\n"
+ "please ping PikalaxALT on the pret discord,\n"
+ "channel #gen-3-help.\n");
+ } else {
+ // Merge neighboring hunks to reduce the number of hunks.
+ collapseIncbins(hunks, &num);
+ // Encode the hunks in the IPS patch.
+ writePatch("baserom.ips", hunks, num, rom);
+ // Communicate status to the user.
+ puts("IPS file created at baserom.ips\n");
+ }
+ // Clean up and return.
+ fclose(rom);
+ free(hunks);
+ return 0;
+}
diff --git a/tools/br_ips/global.h b/tools/br_ips/global.h
new file mode 100644
index 000000000..b82c516ba
--- /dev/null
+++ b/tools/br_ips/global.h
@@ -0,0 +1,27 @@
+#ifndef GUARD_BR_IPS_GLOBAL_H
+#define GUARD_BR_IPS_GLOBAL_H
+
+#ifdef _MSC_VER
+
+#define FATAL_ERROR(format, ...) \
+do { \
+ fprintf(stderr, format, __VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#else
+
+#define FATAL_ERROR(format, ...) \
+do { \
+ fprintf(stderr, format, ##__VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#endif // _MSC_VER
+
+typedef struct Hunk {
+ uint32_t offset;
+ size_t size;
+} hunk_t;
+
+#endif //GUARD_BR_IPS_GLOBAL_H
diff --git a/tools/br_ips/ips_patch.c b/tools/br_ips/ips_patch.c
new file mode 100644
index 000000000..c912474a8
--- /dev/null
+++ b/tools/br_ips/ips_patch.c
@@ -0,0 +1,68 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include "global.h"
+
+static const char SPLASH[] = "Small IPS patch utility\n"
+ "Created by PikalaxALT on 23 June 2019 All Rights Reserved\n";
+
+static const char HELP[] = "ips_patch [-h] ROM PATCH OUT\n"
+ "\n"
+ " ROM - input ROM file\n"
+ " PATCH - IPS patch file to apply\n"
+ " OUT - path to write patched ROM\n"
+ "\n"
+ "Options:\n"
+ " -h - show this message and exit\n";
+
+int main(int argc, char ** argv) {
+ // Show a friendly message
+ puts(SPLASH);
+ // If requested, show help message
+ if (argc >= 2 && strcmp(argv[1], "-h") == 0) {
+ puts(HELP);
+ return 0;
+ }
+ // Enforce CLI syntax
+ if (argc != 4) FATAL_ERROR("usage: %s [-h] ROM PATCH OUT\n", argv[0]);
+ FILE * rom = fopen(argv[1], "rb");
+ if (rom == NULL) FATAL_ERROR("failed to open file \"%s\" for reading\n", argv[1]);
+ FILE * patch = fopen(argv[2], "rb");
+ if (patch == NULL) FATAL_ERROR("failed to open file \"%s\" for reading\n", argv[2]);
+ FILE * out = fopen(argv[3], "wb");
+ if (patch == NULL) FATAL_ERROR("failed to open file \"%s\" for writing\n", argv[3]);
+ // IPS magic header
+ char magic[5];
+ if (fread(magic, 1, 5, patch) != 5) FATAL_ERROR("read magic\n");
+ if (memcmp(magic, "PATCH", 5) != 0) FATAL_ERROR("malformed IPS patch\n");
+ // Read the ROM into allocated memory.
+ fseek(rom, 0, SEEK_END);
+ size_t romsize = ftell(rom);
+ fseek(rom, 0, SEEK_SET);
+ char * buffer = malloc(romsize);
+ if (buffer == NULL) FATAL_ERROR("failed to allocate dest buffer\n");
+ if (fread(buffer, 1, romsize, rom) != romsize) FATAL_ERROR("read ROM\n");
+ fclose(rom);
+ while (1) {
+ uint32_t offset;
+ size_t size;
+ // Read each hunk into the buffer, overwriting previous data.
+ // If two or more hunks overlap, the newest one is retained.
+ // A good IPS patch creator will avoid this.
+ offset = (unsigned char)getc(patch) << 16;
+ offset |= (unsigned char)getc(patch) << 8;
+ offset |= (unsigned char)getc(patch);
+ if (offset == 0x454F46) break; // end sentinel "EOF"
+ size = (unsigned char)getc(patch) << 8;
+ size |= (unsigned char)getc(patch);
+ if (offset + size > romsize) FATAL_ERROR("segment extends past end of ROM\n");
+ if (fread(buffer + offset, 1, size, patch) != size) FATAL_ERROR("read segment\n");
+ }
+ fclose(patch);
+ // Write the patched ROM
+ fwrite(buffer, 1, romsize, out);
+ fclose(out);
+ free(buffer);
+ return 0;
+}
diff --git a/tools/gbafix/elf.h b/tools/gbafix/elf.h
new file mode 100644
index 000000000..79d3b974b
--- /dev/null
+++ b/tools/gbafix/elf.h
@@ -0,0 +1,3147 @@
+/*
+From musl include/elf.h
+
+Copyright © 2005-2014 Rich Felker, et al.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#ifndef _ELF_H
+#define _ELF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+typedef uint16_t Elf32_Half;
+typedef uint16_t Elf64_Half;
+
+typedef uint32_t Elf32_Word;
+typedef int32_t Elf32_Sword;
+typedef uint32_t Elf64_Word;
+typedef int32_t Elf64_Sword;
+
+typedef uint64_t Elf32_Xword;
+typedef int64_t Elf32_Sxword;
+typedef uint64_t Elf64_Xword;
+typedef int64_t Elf64_Sxword;
+
+typedef uint32_t Elf32_Addr;
+typedef uint64_t Elf64_Addr;
+
+typedef uint32_t Elf32_Off;
+typedef uint64_t Elf64_Off;
+
+typedef uint16_t Elf32_Section;
+typedef uint16_t Elf64_Section;
+
+typedef Elf32_Half Elf32_Versym;
+typedef Elf64_Half Elf64_Versym;
+
+#define EI_NIDENT (16)
+
+typedef struct {
+ unsigned char e_ident[EI_NIDENT];
+ Elf32_Half e_type;
+ Elf32_Half e_machine;
+ Elf32_Word e_version;
+ Elf32_Addr e_entry;
+ Elf32_Off e_phoff;
+ Elf32_Off e_shoff;
+ Elf32_Word e_flags;
+ Elf32_Half e_ehsize;
+ Elf32_Half e_phentsize;
+ Elf32_Half e_phnum;
+ Elf32_Half e_shentsize;
+ Elf32_Half e_shnum;
+ Elf32_Half e_shstrndx;
+} Elf32_Ehdr;
+
+typedef struct {
+ unsigned char e_ident[EI_NIDENT];
+ Elf64_Half e_type;
+ Elf64_Half e_machine;
+ Elf64_Word e_version;
+ Elf64_Addr e_entry;
+ Elf64_Off e_phoff;
+ Elf64_Off e_shoff;
+ Elf64_Word e_flags;
+ Elf64_Half e_ehsize;
+ Elf64_Half e_phentsize;
+ Elf64_Half e_phnum;
+ Elf64_Half e_shentsize;
+ Elf64_Half e_shnum;
+ Elf64_Half e_shstrndx;
+} Elf64_Ehdr;
+
+#define EI_MAG0 0
+#define ELFMAG0 0x7f
+
+#define EI_MAG1 1
+#define ELFMAG1 'E'
+
+#define EI_MAG2 2
+#define ELFMAG2 'L'
+
+#define EI_MAG3 3
+#define ELFMAG3 'F'
+
+
+#define ELFMAG "\177ELF"
+#define SELFMAG 4
+
+#define EI_CLASS 4
+#define ELFCLASSNONE 0
+#define ELFCLASS32 1
+#define ELFCLASS64 2
+#define ELFCLASSNUM 3
+
+#define EI_DATA 5
+#define ELFDATANONE 0
+#define ELFDATA2LSB 1
+#define ELFDATA2MSB 2
+#define ELFDATANUM 3
+
+#define EI_VERSION 6
+
+
+#define EI_OSABI 7
+#define ELFOSABI_NONE 0
+#define ELFOSABI_SYSV 0
+#define ELFOSABI_HPUX 1
+#define ELFOSABI_NETBSD 2
+#define ELFOSABI_LINUX 3
+#define ELFOSABI_GNU 3
+#define ELFOSABI_SOLARIS 6
+#define ELFOSABI_AIX 7
+#define ELFOSABI_IRIX 8
+#define ELFOSABI_FREEBSD 9
+#define ELFOSABI_TRU64 10
+#define ELFOSABI_MODESTO 11
+#define ELFOSABI_OPENBSD 12
+#define ELFOSABI_ARM 97
+#define ELFOSABI_STANDALONE 255
+
+#define EI_ABIVERSION 8
+
+#define EI_PAD 9
+
+
+
+#define ET_NONE 0
+#define ET_REL 1
+#define ET_EXEC 2
+#define ET_DYN 3
+#define ET_CORE 4
+#define ET_NUM 5
+#define ET_LOOS 0xfe00
+#define ET_HIOS 0xfeff
+#define ET_LOPROC 0xff00
+#define ET_HIPROC 0xffff
+
+
+
+#define EM_NONE 0
+#define EM_M32 1
+#define EM_SPARC 2
+#define EM_386 3
+#define EM_68K 4
+#define EM_88K 5
+#define EM_860 7
+#define EM_MIPS 8
+#define EM_S370 9
+#define EM_MIPS_RS3_LE 10
+
+#define EM_PARISC 15
+#define EM_VPP500 17
+#define EM_SPARC32PLUS 18
+#define EM_960 19
+#define EM_PPC 20
+#define EM_PPC64 21
+#define EM_S390 22
+
+#define EM_V800 36
+#define EM_FR20 37
+#define EM_RH32 38
+#define EM_RCE 39
+#define EM_ARM 40
+#define EM_FAKE_ALPHA 41
+#define EM_SH 42
+#define EM_SPARCV9 43
+#define EM_TRICORE 44
+#define EM_ARC 45
+#define EM_H8_300 46
+#define EM_H8_300H 47
+#define EM_H8S 48
+#define EM_H8_500 49
+#define EM_IA_64 50
+#define EM_MIPS_X 51
+#define EM_COLDFIRE 52
+#define EM_68HC12 53
+#define EM_MMA 54
+#define EM_PCP 55
+#define EM_NCPU 56
+#define EM_NDR1 57
+#define EM_STARCORE 58
+#define EM_ME16 59
+#define EM_ST100 60
+#define EM_TINYJ 61
+#define EM_X86_64 62
+#define EM_PDSP 63
+
+#define EM_FX66 66
+#define EM_ST9PLUS 67
+#define EM_ST7 68
+#define EM_68HC16 69
+#define EM_68HC11 70
+#define EM_68HC08 71
+#define EM_68HC05 72
+#define EM_SVX 73
+#define EM_ST19 74
+#define EM_VAX 75
+#define EM_CRIS 76
+#define EM_JAVELIN 77
+#define EM_FIREPATH 78
+#define EM_ZSP 79
+#define EM_MMIX 80
+#define EM_HUANY 81
+#define EM_PRISM 82
+#define EM_AVR 83
+#define EM_FR30 84
+#define EM_D10V 85
+#define EM_D30V 86
+#define EM_V850 87
+#define EM_M32R 88
+#define EM_MN10300 89
+#define EM_MN10200 90
+#define EM_PJ 91
+#define EM_OR1K 92
+#define EM_OPENRISC 92
+#define EM_ARC_A5 93
+#define EM_ARC_COMPACT 93
+#define EM_XTENSA 94
+#define EM_VIDEOCORE 95
+#define EM_TMM_GPP 96
+#define EM_NS32K 97
+#define EM_TPC 98
+#define EM_SNP1K 99
+#define EM_ST200 100
+#define EM_IP2K 101
+#define EM_MAX 102
+#define EM_CR 103
+#define EM_F2MC16 104
+#define EM_MSP430 105
+#define EM_BLACKFIN 106
+#define EM_SE_C33 107
+#define EM_SEP 108
+#define EM_ARCA 109
+#define EM_UNICORE 110
+#define EM_EXCESS 111
+#define EM_DXP 112
+#define EM_ALTERA_NIOS2 113
+#define EM_CRX 114
+#define EM_XGATE 115
+#define EM_C166 116
+#define EM_M16C 117
+#define EM_DSPIC30F 118
+#define EM_CE 119
+#define EM_M32C 120
+#define EM_TSK3000 131
+#define EM_RS08 132
+#define EM_SHARC 133
+#define EM_ECOG2 134
+#define EM_SCORE7 135
+#define EM_DSP24 136
+#define EM_VIDEOCORE3 137
+#define EM_LATTICEMICO32 138
+#define EM_SE_C17 139
+#define EM_TI_C6000 140
+#define EM_TI_C2000 141
+#define EM_TI_C5500 142
+#define EM_TI_ARP32 143
+#define EM_TI_PRU 144
+#define EM_MMDSP_PLUS 160
+#define EM_CYPRESS_M8C 161
+#define EM_R32C 162
+#define EM_TRIMEDIA 163
+#define EM_QDSP6 164
+#define EM_8051 165
+#define EM_STXP7X 166
+#define EM_NDS32 167
+#define EM_ECOG1X 168
+#define EM_MAXQ30 169
+#define EM_XIMO16 170
+#define EM_MANIK 171
+#define EM_CRAYNV2 172
+#define EM_RX 173
+#define EM_METAG 174
+#define EM_MCST_ELBRUS 175
+#define EM_ECOG16 176
+#define EM_CR16 177
+#define EM_ETPU 178
+#define EM_SLE9X 179
+#define EM_L10M 180
+#define EM_K10M 181
+#define EM_AARCH64 183
+#define EM_AVR32 185
+#define EM_STM8 186
+#define EM_TILE64 187
+#define EM_TILEPRO 188
+#define EM_MICROBLAZE 189
+#define EM_CUDA 190
+#define EM_TILEGX 191
+#define EM_CLOUDSHIELD 192
+#define EM_COREA_1ST 193
+#define EM_COREA_2ND 194
+#define EM_ARC_COMPACT2 195
+#define EM_OPEN8 196
+#define EM_RL78 197
+#define EM_VIDEOCORE5 198
+#define EM_78KOR 199
+#define EM_56800EX 200
+#define EM_BA1 201
+#define EM_BA2 202
+#define EM_XCORE 203
+#define EM_MCHP_PIC 204
+#define EM_KM32 210
+#define EM_KMX32 211
+#define EM_EMX16 212
+#define EM_EMX8 213
+#define EM_KVARC 214
+#define EM_CDP 215
+#define EM_COGE 216
+#define EM_COOL 217
+#define EM_NORC 218
+#define EM_CSR_KALIMBA 219
+#define EM_Z80 220
+#define EM_VISIUM 221
+#define EM_FT32 222
+#define EM_MOXIE 223
+#define EM_AMDGPU 224
+#define EM_RISCV 243
+#define EM_BPF 247
+#define EM_NUM 248
+
+#define EM_ALPHA 0x9026
+
+#define EV_NONE 0
+#define EV_CURRENT 1
+#define EV_NUM 2
+
+typedef struct {
+ Elf32_Word sh_name;
+ Elf32_Word sh_type;
+ Elf32_Word sh_flags;
+ Elf32_Addr sh_addr;
+ Elf32_Off sh_offset;
+ Elf32_Word sh_size;
+ Elf32_Word sh_link;
+ Elf32_Word sh_info;
+ Elf32_Word sh_addralign;
+ Elf32_Word sh_entsize;
+} Elf32_Shdr;
+
+typedef struct {
+ Elf64_Word sh_name;
+ Elf64_Word sh_type;
+ Elf64_Xword sh_flags;
+ Elf64_Addr sh_addr;
+ Elf64_Off sh_offset;
+ Elf64_Xword sh_size;
+ Elf64_Word sh_link;
+ Elf64_Word sh_info;
+ Elf64_Xword sh_addralign;
+ Elf64_Xword sh_entsize;
+} Elf64_Shdr;
+
+
+
+#define SHN_UNDEF 0
+#define SHN_LORESERVE 0xff00
+#define SHN_LOPROC 0xff00
+#define SHN_BEFORE 0xff00
+
+#define SHN_AFTER 0xff01
+
+#define SHN_HIPROC 0xff1f
+#define SHN_LOOS 0xff20
+#define SHN_HIOS 0xff3f
+#define SHN_ABS 0xfff1
+#define SHN_COMMON 0xfff2
+#define SHN_XINDEX 0xffff
+#define SHN_HIRESERVE 0xffff
+
+
+
+#define SHT_NULL 0
+#define SHT_PROGBITS 1
+#define SHT_SYMTAB 2
+#define SHT_STRTAB 3
+#define SHT_RELA 4
+#define SHT_HASH 5
+#define SHT_DYNAMIC 6
+#define SHT_NOTE 7
+#define SHT_NOBITS 8
+#define SHT_REL 9
+#define SHT_SHLIB 10
+#define SHT_DYNSYM 11
+#define SHT_INIT_ARRAY 14
+#define SHT_FINI_ARRAY 15
+#define SHT_PREINIT_ARRAY 16
+#define SHT_GROUP 17
+#define SHT_SYMTAB_SHNDX 18
+#define SHT_NUM 19
+#define SHT_LOOS 0x60000000
+#define SHT_GNU_ATTRIBUTES 0x6ffffff5
+#define SHT_GNU_HASH 0x6ffffff6
+#define SHT_GNU_LIBLIST 0x6ffffff7
+#define SHT_CHECKSUM 0x6ffffff8
+#define SHT_LOSUNW 0x6ffffffa
+#define SHT_SUNW_move 0x6ffffffa
+#define SHT_SUNW_COMDAT 0x6ffffffb
+#define SHT_SUNW_syminfo 0x6ffffffc
+#define SHT_GNU_verdef 0x6ffffffd
+#define SHT_GNU_verneed 0x6ffffffe
+#define SHT_GNU_versym 0x6fffffff
+#define SHT_HISUNW 0x6fffffff
+#define SHT_HIOS 0x6fffffff
+#define SHT_LOPROC 0x70000000
+#define SHT_HIPROC 0x7fffffff
+#define SHT_LOUSER 0x80000000
+#define SHT_HIUSER 0x8fffffff
+
+#define SHF_WRITE (1 << 0)
+#define SHF_ALLOC (1 << 1)
+#define SHF_EXECINSTR (1 << 2)
+#define SHF_MERGE (1 << 4)
+#define SHF_STRINGS (1 << 5)
+#define SHF_INFO_LINK (1 << 6)
+#define SHF_LINK_ORDER (1 << 7)
+#define SHF_OS_NONCONFORMING (1 << 8)
+
+#define SHF_GROUP (1 << 9)
+#define SHF_TLS (1 << 10)
+#define SHF_COMPRESSED (1 << 11)
+#define SHF_MASKOS 0x0ff00000
+#define SHF_MASKPROC 0xf0000000
+#define SHF_ORDERED (1 << 30)
+#define SHF_EXCLUDE (1U << 31)
+
+typedef struct {
+ Elf32_Word ch_type;
+ Elf32_Word ch_size;
+ Elf32_Word ch_addralign;
+} Elf32_Chdr;
+
+typedef struct {
+ Elf64_Word ch_type;
+ Elf64_Word ch_reserved;
+ Elf64_Xword ch_size;
+ Elf64_Xword ch_addralign;
+} Elf64_Chdr;
+
+#define ELFCOMPRESS_ZLIB 1
+#define ELFCOMPRESS_LOOS 0x60000000
+#define ELFCOMPRESS_HIOS 0x6fffffff
+#define ELFCOMPRESS_LOPROC 0x70000000
+#define ELFCOMPRESS_HIPROC 0x7fffffff
+
+
+#define GRP_COMDAT 0x1
+
+typedef struct {
+ Elf32_Word st_name;
+ Elf32_Addr st_value;
+ Elf32_Word st_size;
+ unsigned char st_info;
+ unsigned char st_other;
+ Elf32_Section st_shndx;
+} Elf32_Sym;
+
+typedef struct {
+ Elf64_Word st_name;
+ unsigned char st_info;
+ unsigned char st_other;
+ Elf64_Section st_shndx;
+ Elf64_Addr st_value;
+ Elf64_Xword st_size;
+} Elf64_Sym;
+
+typedef struct {
+ Elf32_Half si_boundto;
+ Elf32_Half si_flags;
+} Elf32_Syminfo;
+
+typedef struct {
+ Elf64_Half si_boundto;
+ Elf64_Half si_flags;
+} Elf64_Syminfo;
+
+#define SYMINFO_BT_SELF 0xffff
+#define SYMINFO_BT_PARENT 0xfffe
+#define SYMINFO_BT_LOWRESERVE 0xff00
+
+#define SYMINFO_FLG_DIRECT 0x0001
+#define SYMINFO_FLG_PASSTHRU 0x0002
+#define SYMINFO_FLG_COPY 0x0004
+#define SYMINFO_FLG_LAZYLOAD 0x0008
+
+#define SYMINFO_NONE 0
+#define SYMINFO_CURRENT 1
+#define SYMINFO_NUM 2
+
+#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4)
+#define ELF32_ST_TYPE(val) ((val) & 0xf)
+#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf))
+
+#define ELF64_ST_BIND(val) ELF32_ST_BIND (val)
+#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val)
+#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type))
+
+#define STB_LOCAL 0
+#define STB_GLOBAL 1
+#define STB_WEAK 2
+#define STB_NUM 3
+#define STB_LOOS 10
+#define STB_GNU_UNIQUE 10
+#define STB_HIOS 12
+#define STB_LOPROC 13
+#define STB_HIPROC 15
+
+#define STT_NOTYPE 0
+#define STT_OBJECT 1
+#define STT_FUNC 2
+#define STT_SECTION 3
+#define STT_FILE 4
+#define STT_COMMON 5
+#define STT_TLS 6
+#define STT_NUM 7
+#define STT_LOOS 10
+#define STT_GNU_IFUNC 10
+#define STT_HIOS 12
+#define STT_LOPROC 13
+#define STT_HIPROC 15
+
+#define STN_UNDEF 0
+
+#define ELF32_ST_VISIBILITY(o) ((o) & 0x03)
+#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o)
+
+#define STV_DEFAULT 0
+#define STV_INTERNAL 1
+#define STV_HIDDEN 2
+#define STV_PROTECTED 3
+
+
+
+
+typedef struct {
+ Elf32_Addr r_offset;
+ Elf32_Word r_info;
+} Elf32_Rel;
+
+typedef struct {
+ Elf64_Addr r_offset;
+ Elf64_Xword r_info;
+} Elf64_Rel;
+
+
+
+typedef struct {
+ Elf32_Addr r_offset;
+ Elf32_Word r_info;
+ Elf32_Sword r_addend;
+} Elf32_Rela;
+
+typedef struct {
+ Elf64_Addr r_offset;
+ Elf64_Xword r_info;
+ Elf64_Sxword r_addend;
+} Elf64_Rela;
+
+
+
+#define ELF32_R_SYM(val) ((val) >> 8)
+#define ELF32_R_TYPE(val) ((val) & 0xff)
+#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff))
+
+#define ELF64_R_SYM(i) ((i) >> 32)
+#define ELF64_R_TYPE(i) ((i) & 0xffffffff)
+#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type))
+
+
+
+typedef struct {
+ Elf32_Word p_type;
+ Elf32_Off p_offset;
+ Elf32_Addr p_vaddr;
+ Elf32_Addr p_paddr;
+ Elf32_Word p_filesz;
+ Elf32_Word p_memsz;
+ Elf32_Word p_flags;
+ Elf32_Word p_align;
+} Elf32_Phdr;
+
+typedef struct {
+ Elf64_Word p_type;
+ Elf64_Word p_flags;
+ Elf64_Off p_offset;
+ Elf64_Addr p_vaddr;
+ Elf64_Addr p_paddr;
+ Elf64_Xword p_filesz;
+ Elf64_Xword p_memsz;
+ Elf64_Xword p_align;
+} Elf64_Phdr;
+
+
+
+#define PT_NULL 0
+#define PT_LOAD 1
+#define PT_DYNAMIC 2
+#define PT_INTERP 3
+#define PT_NOTE 4
+#define PT_SHLIB 5
+#define PT_PHDR 6
+#define PT_TLS 7
+#define PT_NUM 8
+#define PT_LOOS 0x60000000
+#define PT_GNU_EH_FRAME 0x6474e550
+#define PT_GNU_STACK 0x6474e551
+#define PT_GNU_RELRO 0x6474e552
+#define PT_LOSUNW 0x6ffffffa
+#define PT_SUNWBSS 0x6ffffffa
+#define PT_SUNWSTACK 0x6ffffffb
+#define PT_HISUNW 0x6fffffff
+#define PT_HIOS 0x6fffffff
+#define PT_LOPROC 0x70000000
+#define PT_HIPROC 0x7fffffff
+
+
+#define PN_XNUM 0xffff
+
+
+#define PF_X (1 << 0)
+#define PF_W (1 << 1)
+#define PF_R (1 << 2)
+#define PF_MASKOS 0x0ff00000
+#define PF_MASKPROC 0xf0000000
+
+
+
+#define NT_PRSTATUS 1
+#define NT_FPREGSET 2
+#define NT_PRPSINFO 3
+#define NT_PRXREG 4
+#define NT_TASKSTRUCT 4
+#define NT_PLATFORM 5
+#define NT_AUXV 6
+#define NT_GWINDOWS 7
+#define NT_ASRS 8
+#define NT_PSTATUS 10
+#define NT_PSINFO 13
+#define NT_PRCRED 14
+#define NT_UTSNAME 15
+#define NT_LWPSTATUS 16
+#define NT_LWPSINFO 17
+#define NT_PRFPXREG 20
+#define NT_SIGINFO 0x53494749
+#define NT_FILE 0x46494c45
+#define NT_PRXFPREG 0x46e62b7f
+#define NT_PPC_VMX 0x100
+#define NT_PPC_SPE 0x101
+#define NT_PPC_VSX 0x102
+#define NT_386_TLS 0x200
+#define NT_386_IOPERM 0x201
+#define NT_X86_XSTATE 0x202
+#define NT_S390_HIGH_GPRS 0x300
+#define NT_S390_TIMER 0x301
+#define NT_S390_TODCMP 0x302
+#define NT_S390_TODPREG 0x303
+#define NT_S390_CTRS 0x304
+#define NT_S390_PREFIX 0x305
+#define NT_S390_LAST_BREAK 0x306
+#define NT_S390_SYSTEM_CALL 0x307
+#define NT_S390_TDB 0x308
+#define NT_ARM_VFP 0x400
+#define NT_ARM_TLS 0x401
+#define NT_ARM_HW_BREAK 0x402
+#define NT_ARM_HW_WATCH 0x403
+#define NT_ARM_SYSTEM_CALL 0x404
+#define NT_ARM_SVE 0x405
+#define NT_METAG_CBUF 0x500
+#define NT_METAG_RPIPE 0x501
+#define NT_METAG_TLS 0x502
+#define NT_VERSION 1
+
+
+
+
+typedef struct {
+ Elf32_Sword d_tag;
+ union {
+ Elf32_Word d_val;
+ Elf32_Addr d_ptr;
+ } d_un;
+} Elf32_Dyn;
+
+typedef struct {
+ Elf64_Sxword d_tag;
+ union {
+ Elf64_Xword d_val;
+ Elf64_Addr d_ptr;
+ } d_un;
+} Elf64_Dyn;
+
+
+
+#define DT_NULL 0
+#define DT_NEEDED 1
+#define DT_PLTRELSZ 2
+#define DT_PLTGOT 3
+#define DT_HASH 4
+#define DT_STRTAB 5
+#define DT_SYMTAB 6
+#define DT_RELA 7
+#define DT_RELASZ 8
+#define DT_RELAENT 9
+#define DT_STRSZ 10
+#define DT_SYMENT 11
+#define DT_INIT 12
+#define DT_FINI 13
+#define DT_SONAME 14
+#define DT_RPATH 15
+#define DT_SYMBOLIC 16
+#define DT_REL 17
+#define DT_RELSZ 18
+#define DT_RELENT 19
+#define DT_PLTREL 20
+#define DT_DEBUG 21
+#define DT_TEXTREL 22
+#define DT_JMPREL 23
+#define DT_BIND_NOW 24
+#define DT_INIT_ARRAY 25
+#define DT_FINI_ARRAY 26
+#define DT_INIT_ARRAYSZ 27
+#define DT_FINI_ARRAYSZ 28
+#define DT_RUNPATH 29
+#define DT_FLAGS 30
+#define DT_ENCODING 32
+#define DT_PREINIT_ARRAY 32
+#define DT_PREINIT_ARRAYSZ 33
+#define DT_NUM 34
+#define DT_LOOS 0x6000000d
+#define DT_HIOS 0x6ffff000
+#define DT_LOPROC 0x70000000
+#define DT_HIPROC 0x7fffffff
+#define DT_PROCNUM DT_MIPS_NUM
+
+#define DT_VALRNGLO 0x6ffffd00
+#define DT_GNU_PRELINKED 0x6ffffdf5
+#define DT_GNU_CONFLICTSZ 0x6ffffdf6
+#define DT_GNU_LIBLISTSZ 0x6ffffdf7
+#define DT_CHECKSUM 0x6ffffdf8
+#define DT_PLTPADSZ 0x6ffffdf9
+#define DT_MOVEENT 0x6ffffdfa
+#define DT_MOVESZ 0x6ffffdfb
+#define DT_FEATURE_1 0x6ffffdfc
+#define DT_POSFLAG_1 0x6ffffdfd
+
+#define DT_SYMINSZ 0x6ffffdfe
+#define DT_SYMINENT 0x6ffffdff
+#define DT_VALRNGHI 0x6ffffdff
+#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag))
+#define DT_VALNUM 12
+
+#define DT_ADDRRNGLO 0x6ffffe00
+#define DT_GNU_HASH 0x6ffffef5
+#define DT_TLSDESC_PLT 0x6ffffef6
+#define DT_TLSDESC_GOT 0x6ffffef7
+#define DT_GNU_CONFLICT 0x6ffffef8
+#define DT_GNU_LIBLIST 0x6ffffef9
+#define DT_CONFIG 0x6ffffefa
+#define DT_DEPAUDIT 0x6ffffefb
+#define DT_AUDIT 0x6ffffefc
+#define DT_PLTPAD 0x6ffffefd
+#define DT_MOVETAB 0x6ffffefe
+#define DT_SYMINFO 0x6ffffeff
+#define DT_ADDRRNGHI 0x6ffffeff
+#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag))
+#define DT_ADDRNUM 11
+
+
+
+#define DT_VERSYM 0x6ffffff0
+
+#define DT_RELACOUNT 0x6ffffff9
+#define DT_RELCOUNT 0x6ffffffa
+
+
+#define DT_FLAGS_1 0x6ffffffb
+#define DT_VERDEF 0x6ffffffc
+
+#define DT_VERDEFNUM 0x6ffffffd
+#define DT_VERNEED 0x6ffffffe
+
+#define DT_VERNEEDNUM 0x6fffffff
+#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag))
+#define DT_VERSIONTAGNUM 16
+
+
+
+#define DT_AUXILIARY 0x7ffffffd
+#define DT_FILTER 0x7fffffff
+#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1)
+#define DT_EXTRANUM 3
+
+
+#define DF_ORIGIN 0x00000001
+#define DF_SYMBOLIC 0x00000002
+#define DF_TEXTREL 0x00000004
+#define DF_BIND_NOW 0x00000008
+#define DF_STATIC_TLS 0x00000010
+
+
+
+#define DF_1_NOW 0x00000001
+#define DF_1_GLOBAL 0x00000002
+#define DF_1_GROUP 0x00000004
+#define DF_1_NODELETE 0x00000008
+#define DF_1_LOADFLTR 0x00000010
+#define DF_1_INITFIRST 0x00000020
+#define DF_1_NOOPEN 0x00000040
+#define DF_1_ORIGIN 0x00000080
+#define DF_1_DIRECT 0x00000100
+#define DF_1_TRANS 0x00000200
+#define DF_1_INTERPOSE 0x00000400
+#define DF_1_NODEFLIB 0x00000800
+#define DF_1_NODUMP 0x00001000
+#define DF_1_CONFALT 0x00002000
+#define DF_1_ENDFILTEE 0x00004000
+#define DF_1_DISPRELDNE 0x00008000
+#define DF_1_DISPRELPND 0x00010000
+#define DF_1_NODIRECT 0x00020000
+#define DF_1_IGNMULDEF 0x00040000
+#define DF_1_NOKSYMS 0x00080000
+#define DF_1_NOHDR 0x00100000
+#define DF_1_EDITED 0x00200000
+#define DF_1_NORELOC 0x00400000
+#define DF_1_SYMINTPOSE 0x00800000
+#define DF_1_GLOBAUDIT 0x01000000
+#define DF_1_SINGLETON 0x02000000
+
+#define DTF_1_PARINIT 0x00000001
+#define DTF_1_CONFEXP 0x00000002
+
+
+#define DF_P1_LAZYLOAD 0x00000001
+#define DF_P1_GROUPPERM 0x00000002
+
+
+
+
+typedef struct {
+ Elf32_Half vd_version;
+ Elf32_Half vd_flags;
+ Elf32_Half vd_ndx;
+ Elf32_Half vd_cnt;
+ Elf32_Word vd_hash;
+ Elf32_Word vd_aux;
+ Elf32_Word vd_next;
+} Elf32_Verdef;
+
+typedef struct {
+ Elf64_Half vd_version;
+ Elf64_Half vd_flags;
+ Elf64_Half vd_ndx;
+ Elf64_Half vd_cnt;
+ Elf64_Word vd_hash;
+ Elf64_Word vd_aux;
+ Elf64_Word vd_next;
+} Elf64_Verdef;
+
+
+
+#define VER_DEF_NONE 0
+#define VER_DEF_CURRENT 1
+#define VER_DEF_NUM 2
+
+
+#define VER_FLG_BASE 0x1
+#define VER_FLG_WEAK 0x2
+
+
+#define VER_NDX_LOCAL 0
+#define VER_NDX_GLOBAL 1
+#define VER_NDX_LORESERVE 0xff00
+#define VER_NDX_ELIMINATE 0xff01
+
+
+
+typedef struct {
+ Elf32_Word vda_name;
+ Elf32_Word vda_next;
+} Elf32_Verdaux;
+
+typedef struct {
+ Elf64_Word vda_name;
+ Elf64_Word vda_next;
+} Elf64_Verdaux;
+
+
+
+
+typedef struct {
+ Elf32_Half vn_version;
+ Elf32_Half vn_cnt;
+ Elf32_Word vn_file;
+ Elf32_Word vn_aux;
+ Elf32_Word vn_next;
+} Elf32_Verneed;
+
+typedef struct {
+ Elf64_Half vn_version;
+ Elf64_Half vn_cnt;
+ Elf64_Word vn_file;
+ Elf64_Word vn_aux;
+ Elf64_Word vn_next;
+} Elf64_Verneed;
+
+
+
+#define VER_NEED_NONE 0
+#define VER_NEED_CURRENT 1
+#define VER_NEED_NUM 2
+
+
+
+typedef struct {
+ Elf32_Word vna_hash;
+ Elf32_Half vna_flags;
+ Elf32_Half vna_other;
+ Elf32_Word vna_name;
+ Elf32_Word vna_next;
+} Elf32_Vernaux;
+
+typedef struct {
+ Elf64_Word vna_hash;
+ Elf64_Half vna_flags;
+ Elf64_Half vna_other;
+ Elf64_Word vna_name;
+ Elf64_Word vna_next;
+} Elf64_Vernaux;
+
+
+
+#define VER_FLG_WEAK 0x2
+
+
+
+typedef struct {
+ uint32_t a_type;
+ union {
+ uint32_t a_val;
+ } a_un;
+} Elf32_auxv_t;
+
+typedef struct {
+ uint64_t a_type;
+ union {
+ uint64_t a_val;
+ } a_un;
+} Elf64_auxv_t;
+
+
+
+#define AT_NULL 0
+#define AT_IGNORE 1
+#define AT_EXECFD 2
+#define AT_PHDR 3
+#define AT_PHENT 4
+#define AT_PHNUM 5
+#define AT_PAGESZ 6
+#define AT_BASE 7
+#define AT_FLAGS 8
+#define AT_ENTRY 9
+#define AT_NOTELF 10
+#define AT_UID 11
+#define AT_EUID 12
+#define AT_GID 13
+#define AT_EGID 14
+#define AT_CLKTCK 17
+
+
+#define AT_PLATFORM 15
+#define AT_HWCAP 16
+
+
+
+
+#define AT_FPUCW 18
+
+
+#define AT_DCACHEBSIZE 19
+#define AT_ICACHEBSIZE 20
+#define AT_UCACHEBSIZE 21
+
+
+
+#define AT_IGNOREPPC 22
+
+#define AT_SECURE 23
+
+#define AT_BASE_PLATFORM 24
+
+#define AT_RANDOM 25
+
+#define AT_HWCAP2 26
+
+#define AT_EXECFN 31
+
+
+
+#define AT_SYSINFO 32
+#define AT_SYSINFO_EHDR 33
+
+
+
+#define AT_L1I_CACHESHAPE 34
+#define AT_L1D_CACHESHAPE 35
+#define AT_L2_CACHESHAPE 36
+#define AT_L3_CACHESHAPE 37
+
+
+
+
+typedef struct {
+ Elf32_Word n_namesz;
+ Elf32_Word n_descsz;
+ Elf32_Word n_type;
+} Elf32_Nhdr;
+
+typedef struct {
+ Elf64_Word n_namesz;
+ Elf64_Word n_descsz;
+ Elf64_Word n_type;
+} Elf64_Nhdr;
+
+
+
+
+#define ELF_NOTE_SOLARIS "SUNW Solaris"
+
+
+#define ELF_NOTE_GNU "GNU"
+
+
+
+
+
+#define ELF_NOTE_PAGESIZE_HINT 1
+
+
+#define NT_GNU_ABI_TAG 1
+#define ELF_NOTE_ABI NT_GNU_ABI_TAG
+
+
+
+#define ELF_NOTE_OS_LINUX 0
+#define ELF_NOTE_OS_GNU 1
+#define ELF_NOTE_OS_SOLARIS2 2
+#define ELF_NOTE_OS_FREEBSD 3
+
+#define NT_GNU_BUILD_ID 3
+#define NT_GNU_GOLD_VERSION 4
+
+
+
+typedef struct {
+ Elf32_Xword m_value;
+ Elf32_Word m_info;
+ Elf32_Word m_poffset;
+ Elf32_Half m_repeat;
+ Elf32_Half m_stride;
+} Elf32_Move;
+
+typedef struct {
+ Elf64_Xword m_value;
+ Elf64_Xword m_info;
+ Elf64_Xword m_poffset;
+ Elf64_Half m_repeat;
+ Elf64_Half m_stride;
+} Elf64_Move;
+
+
+#define ELF32_M_SYM(info) ((info) >> 8)
+#define ELF32_M_SIZE(info) ((unsigned char) (info))
+#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size))
+
+#define ELF64_M_SYM(info) ELF32_M_SYM (info)
+#define ELF64_M_SIZE(info) ELF32_M_SIZE (info)
+#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size)
+
+#define EF_CPU32 0x00810000
+
+#define R_68K_NONE 0
+#define R_68K_32 1
+#define R_68K_16 2
+#define R_68K_8 3
+#define R_68K_PC32 4
+#define R_68K_PC16 5
+#define R_68K_PC8 6
+#define R_68K_GOT32 7
+#define R_68K_GOT16 8
+#define R_68K_GOT8 9
+#define R_68K_GOT32O 10
+#define R_68K_GOT16O 11
+#define R_68K_GOT8O 12
+#define R_68K_PLT32 13
+#define R_68K_PLT16 14
+#define R_68K_PLT8 15
+#define R_68K_PLT32O 16
+#define R_68K_PLT16O 17
+#define R_68K_PLT8O 18
+#define R_68K_COPY 19
+#define R_68K_GLOB_DAT 20
+#define R_68K_JMP_SLOT 21
+#define R_68K_RELATIVE 22
+#define R_68K_NUM 23
+
+#define R_386_NONE 0
+#define R_386_32 1
+#define R_386_PC32 2
+#define R_386_GOT32 3
+#define R_386_PLT32 4
+#define R_386_COPY 5
+#define R_386_GLOB_DAT 6
+#define R_386_JMP_SLOT 7
+#define R_386_RELATIVE 8
+#define R_386_GOTOFF 9
+#define R_386_GOTPC 10
+#define R_386_32PLT 11
+#define R_386_TLS_TPOFF 14
+#define R_386_TLS_IE 15
+#define R_386_TLS_GOTIE 16
+#define R_386_TLS_LE 17
+#define R_386_TLS_GD 18
+#define R_386_TLS_LDM 19
+#define R_386_16 20
+#define R_386_PC16 21
+#define R_386_8 22
+#define R_386_PC8 23
+#define R_386_TLS_GD_32 24
+#define R_386_TLS_GD_PUSH 25
+#define R_386_TLS_GD_CALL 26
+#define R_386_TLS_GD_POP 27
+#define R_386_TLS_LDM_32 28
+#define R_386_TLS_LDM_PUSH 29
+#define R_386_TLS_LDM_CALL 30
+#define R_386_TLS_LDM_POP 31
+#define R_386_TLS_LDO_32 32
+#define R_386_TLS_IE_32 33
+#define R_386_TLS_LE_32 34
+#define R_386_TLS_DTPMOD32 35
+#define R_386_TLS_DTPOFF32 36
+#define R_386_TLS_TPOFF32 37
+#define R_386_SIZE32 38
+#define R_386_TLS_GOTDESC 39
+#define R_386_TLS_DESC_CALL 40
+#define R_386_TLS_DESC 41
+#define R_386_IRELATIVE 42
+#define R_386_GOT32X 43
+#define R_386_NUM 44
+
+
+
+
+
+#define STT_SPARC_REGISTER 13
+
+
+
+#define EF_SPARCV9_MM 3
+#define EF_SPARCV9_TSO 0
+#define EF_SPARCV9_PSO 1
+#define EF_SPARCV9_RMO 2
+#define EF_SPARC_LEDATA 0x800000
+#define EF_SPARC_EXT_MASK 0xFFFF00
+#define EF_SPARC_32PLUS 0x000100
+#define EF_SPARC_SUN_US1 0x000200
+#define EF_SPARC_HAL_R1 0x000400
+#define EF_SPARC_SUN_US3 0x000800
+
+
+
+#define R_SPARC_NONE 0
+#define R_SPARC_8 1
+#define R_SPARC_16 2
+#define R_SPARC_32 3
+#define R_SPARC_DISP8 4
+#define R_SPARC_DISP16 5
+#define R_SPARC_DISP32 6
+#define R_SPARC_WDISP30 7
+#define R_SPARC_WDISP22 8
+#define R_SPARC_HI22 9
+#define R_SPARC_22 10
+#define R_SPARC_13 11
+#define R_SPARC_LO10 12
+#define R_SPARC_GOT10 13
+#define R_SPARC_GOT13 14
+#define R_SPARC_GOT22 15
+#define R_SPARC_PC10 16
+#define R_SPARC_PC22 17
+#define R_SPARC_WPLT30 18
+#define R_SPARC_COPY 19
+#define R_SPARC_GLOB_DAT 20
+#define R_SPARC_JMP_SLOT 21
+#define R_SPARC_RELATIVE 22
+#define R_SPARC_UA32 23
+
+
+
+#define R_SPARC_PLT32 24
+#define R_SPARC_HIPLT22 25
+#define R_SPARC_LOPLT10 26
+#define R_SPARC_PCPLT32 27
+#define R_SPARC_PCPLT22 28
+#define R_SPARC_PCPLT10 29
+#define R_SPARC_10 30
+#define R_SPARC_11 31
+#define R_SPARC_64 32
+#define R_SPARC_OLO10 33
+#define R_SPARC_HH22 34
+#define R_SPARC_HM10 35
+#define R_SPARC_LM22 36
+#define R_SPARC_PC_HH22 37
+#define R_SPARC_PC_HM10 38
+#define R_SPARC_PC_LM22 39
+#define R_SPARC_WDISP16 40
+#define R_SPARC_WDISP19 41
+#define R_SPARC_GLOB_JMP 42
+#define R_SPARC_7 43
+#define R_SPARC_5 44
+#define R_SPARC_6 45
+#define R_SPARC_DISP64 46
+#define R_SPARC_PLT64 47
+#define R_SPARC_HIX22 48
+#define R_SPARC_LOX10 49
+#define R_SPARC_H44 50
+#define R_SPARC_M44 51
+#define R_SPARC_L44 52
+#define R_SPARC_REGISTER 53
+#define R_SPARC_UA64 54
+#define R_SPARC_UA16 55
+#define R_SPARC_TLS_GD_HI22 56
+#define R_SPARC_TLS_GD_LO10 57
+#define R_SPARC_TLS_GD_ADD 58
+#define R_SPARC_TLS_GD_CALL 59
+#define R_SPARC_TLS_LDM_HI22 60
+#define R_SPARC_TLS_LDM_LO10 61
+#define R_SPARC_TLS_LDM_ADD 62
+#define R_SPARC_TLS_LDM_CALL 63
+#define R_SPARC_TLS_LDO_HIX22 64
+#define R_SPARC_TLS_LDO_LOX10 65
+#define R_SPARC_TLS_LDO_ADD 66
+#define R_SPARC_TLS_IE_HI22 67
+#define R_SPARC_TLS_IE_LO10 68
+#define R_SPARC_TLS_IE_LD 69
+#define R_SPARC_TLS_IE_LDX 70
+#define R_SPARC_TLS_IE_ADD 71
+#define R_SPARC_TLS_LE_HIX22 72
+#define R_SPARC_TLS_LE_LOX10 73
+#define R_SPARC_TLS_DTPMOD32 74
+#define R_SPARC_TLS_DTPMOD64 75
+#define R_SPARC_TLS_DTPOFF32 76
+#define R_SPARC_TLS_DTPOFF64 77
+#define R_SPARC_TLS_TPOFF32 78
+#define R_SPARC_TLS_TPOFF64 79
+#define R_SPARC_GOTDATA_HIX22 80
+#define R_SPARC_GOTDATA_LOX10 81
+#define R_SPARC_GOTDATA_OP_HIX22 82
+#define R_SPARC_GOTDATA_OP_LOX10 83
+#define R_SPARC_GOTDATA_OP 84
+#define R_SPARC_H34 85
+#define R_SPARC_SIZE32 86
+#define R_SPARC_SIZE64 87
+#define R_SPARC_GNU_VTINHERIT 250
+#define R_SPARC_GNU_VTENTRY 251
+#define R_SPARC_REV32 252
+
+#define R_SPARC_NUM 253
+
+
+
+#define DT_SPARC_REGISTER 0x70000001
+#define DT_SPARC_NUM 2
+
+
+#define EF_MIPS_NOREORDER 1
+#define EF_MIPS_PIC 2
+#define EF_MIPS_CPIC 4
+#define EF_MIPS_XGOT 8
+#define EF_MIPS_64BIT_WHIRL 16
+#define EF_MIPS_ABI2 32
+#define EF_MIPS_ABI_ON32 64
+#define EF_MIPS_FP64 512
+#define EF_MIPS_NAN2008 1024
+#define EF_MIPS_ARCH 0xf0000000
+
+
+
+#define EF_MIPS_ARCH_1 0x00000000
+#define EF_MIPS_ARCH_2 0x10000000
+#define EF_MIPS_ARCH_3 0x20000000
+#define EF_MIPS_ARCH_4 0x30000000
+#define EF_MIPS_ARCH_5 0x40000000
+#define EF_MIPS_ARCH_32 0x50000000
+#define EF_MIPS_ARCH_64 0x60000000
+#define EF_MIPS_ARCH_32R2 0x70000000
+#define EF_MIPS_ARCH_64R2 0x80000000
+
+
+#define E_MIPS_ARCH_1 0x00000000
+#define E_MIPS_ARCH_2 0x10000000
+#define E_MIPS_ARCH_3 0x20000000
+#define E_MIPS_ARCH_4 0x30000000
+#define E_MIPS_ARCH_5 0x40000000
+#define E_MIPS_ARCH_32 0x50000000
+#define E_MIPS_ARCH_64 0x60000000
+
+
+
+#define SHN_MIPS_ACOMMON 0xff00
+#define SHN_MIPS_TEXT 0xff01
+#define SHN_MIPS_DATA 0xff02
+#define SHN_MIPS_SCOMMON 0xff03
+#define SHN_MIPS_SUNDEFINED 0xff04
+
+
+
+#define SHT_MIPS_LIBLIST 0x70000000
+#define SHT_MIPS_MSYM 0x70000001
+#define SHT_MIPS_CONFLICT 0x70000002
+#define SHT_MIPS_GPTAB 0x70000003
+#define SHT_MIPS_UCODE 0x70000004
+#define SHT_MIPS_DEBUG 0x70000005
+#define SHT_MIPS_REGINFO 0x70000006
+#define SHT_MIPS_PACKAGE 0x70000007
+#define SHT_MIPS_PACKSYM 0x70000008
+#define SHT_MIPS_RELD 0x70000009
+#define SHT_MIPS_IFACE 0x7000000b
+#define SHT_MIPS_CONTENT 0x7000000c
+#define SHT_MIPS_OPTIONS 0x7000000d
+#define SHT_MIPS_SHDR 0x70000010
+#define SHT_MIPS_FDESC 0x70000011
+#define SHT_MIPS_EXTSYM 0x70000012
+#define SHT_MIPS_DENSE 0x70000013
+#define SHT_MIPS_PDESC 0x70000014
+#define SHT_MIPS_LOCSYM 0x70000015
+#define SHT_MIPS_AUXSYM 0x70000016
+#define SHT_MIPS_OPTSYM 0x70000017
+#define SHT_MIPS_LOCSTR 0x70000018
+#define SHT_MIPS_LINE 0x70000019
+#define SHT_MIPS_RFDESC 0x7000001a
+#define SHT_MIPS_DELTASYM 0x7000001b
+#define SHT_MIPS_DELTAINST 0x7000001c
+#define SHT_MIPS_DELTACLASS 0x7000001d
+#define SHT_MIPS_DWARF 0x7000001e
+#define SHT_MIPS_DELTADECL 0x7000001f
+#define SHT_MIPS_SYMBOL_LIB 0x70000020
+#define SHT_MIPS_EVENTS 0x70000021
+#define SHT_MIPS_TRANSLATE 0x70000022
+#define SHT_MIPS_PIXIE 0x70000023
+#define SHT_MIPS_XLATE 0x70000024
+#define SHT_MIPS_XLATE_DEBUG 0x70000025
+#define SHT_MIPS_WHIRL 0x70000026
+#define SHT_MIPS_EH_REGION 0x70000027
+#define SHT_MIPS_XLATE_OLD 0x70000028
+#define SHT_MIPS_PDR_EXCEPTION 0x70000029
+
+
+
+#define SHF_MIPS_GPREL 0x10000000
+#define SHF_MIPS_MERGE 0x20000000
+#define SHF_MIPS_ADDR 0x40000000
+#define SHF_MIPS_STRINGS 0x80000000
+#define SHF_MIPS_NOSTRIP 0x08000000
+#define SHF_MIPS_LOCAL 0x04000000
+#define SHF_MIPS_NAMES 0x02000000
+#define SHF_MIPS_NODUPE 0x01000000
+
+
+
+
+
+#define STO_MIPS_DEFAULT 0x0
+#define STO_MIPS_INTERNAL 0x1
+#define STO_MIPS_HIDDEN 0x2
+#define STO_MIPS_PROTECTED 0x3
+#define STO_MIPS_PLT 0x8
+#define STO_MIPS_SC_ALIGN_UNUSED 0xff
+
+
+#define STB_MIPS_SPLIT_COMMON 13
+
+
+
+typedef union {
+ struct {
+ Elf32_Word gt_current_g_value;
+ Elf32_Word gt_unused;
+ } gt_header;
+ struct {
+ Elf32_Word gt_g_value;
+ Elf32_Word gt_bytes;
+ } gt_entry;
+} Elf32_gptab;
+
+
+
+typedef struct {
+ Elf32_Word ri_gprmask;
+ Elf32_Word ri_cprmask[4];
+ Elf32_Sword ri_gp_value;
+} Elf32_RegInfo;
+
+
+
+typedef struct {
+ unsigned char kind;
+
+ unsigned char size;
+ Elf32_Section section;
+
+ Elf32_Word info;
+} Elf_Options;
+
+
+
+#define ODK_NULL 0
+#define ODK_REGINFO 1
+#define ODK_EXCEPTIONS 2
+#define ODK_PAD 3
+#define ODK_HWPATCH 4
+#define ODK_FILL 5
+#define ODK_TAGS 6
+#define ODK_HWAND 7
+#define ODK_HWOR 8
+
+
+
+#define OEX_FPU_MIN 0x1f
+#define OEX_FPU_MAX 0x1f00
+#define OEX_PAGE0 0x10000
+#define OEX_SMM 0x20000
+#define OEX_FPDBUG 0x40000
+#define OEX_PRECISEFP OEX_FPDBUG
+#define OEX_DISMISS 0x80000
+
+#define OEX_FPU_INVAL 0x10
+#define OEX_FPU_DIV0 0x08
+#define OEX_FPU_OFLO 0x04
+#define OEX_FPU_UFLO 0x02
+#define OEX_FPU_INEX 0x01
+
+
+
+#define OHW_R4KEOP 0x1
+#define OHW_R8KPFETCH 0x2
+#define OHW_R5KEOP 0x4
+#define OHW_R5KCVTL 0x8
+
+#define OPAD_PREFIX 0x1
+#define OPAD_POSTFIX 0x2
+#define OPAD_SYMBOL 0x4
+
+
+
+typedef struct {
+ Elf32_Word hwp_flags1;
+ Elf32_Word hwp_flags2;
+} Elf_Options_Hw;
+
+
+
+#define OHWA0_R4KEOP_CHECKED 0x00000001
+#define OHWA1_R4KEOP_CLEAN 0x00000002
+
+
+
+#define R_MIPS_NONE 0
+#define R_MIPS_16 1
+#define R_MIPS_32 2
+#define R_MIPS_REL32 3
+#define R_MIPS_26 4
+#define R_MIPS_HI16 5
+#define R_MIPS_LO16 6
+#define R_MIPS_GPREL16 7
+#define R_MIPS_LITERAL 8
+#define R_MIPS_GOT16 9
+#define R_MIPS_PC16 10
+#define R_MIPS_CALL16 11
+#define R_MIPS_GPREL32 12
+
+#define R_MIPS_SHIFT5 16
+#define R_MIPS_SHIFT6 17
+#define R_MIPS_64 18
+#define R_MIPS_GOT_DISP 19
+#define R_MIPS_GOT_PAGE 20
+#define R_MIPS_GOT_OFST 21
+#define R_MIPS_GOT_HI16 22
+#define R_MIPS_GOT_LO16 23
+#define R_MIPS_SUB 24
+#define R_MIPS_INSERT_A 25
+#define R_MIPS_INSERT_B 26
+#define R_MIPS_DELETE 27
+#define R_MIPS_HIGHER 28
+#define R_MIPS_HIGHEST 29
+#define R_MIPS_CALL_HI16 30
+#define R_MIPS_CALL_LO16 31
+#define R_MIPS_SCN_DISP 32
+#define R_MIPS_REL16 33
+#define R_MIPS_ADD_IMMEDIATE 34
+#define R_MIPS_PJUMP 35
+#define R_MIPS_RELGOT 36
+#define R_MIPS_JALR 37
+#define R_MIPS_TLS_DTPMOD32 38
+#define R_MIPS_TLS_DTPREL32 39
+#define R_MIPS_TLS_DTPMOD64 40
+#define R_MIPS_TLS_DTPREL64 41
+#define R_MIPS_TLS_GD 42
+#define R_MIPS_TLS_LDM 43
+#define R_MIPS_TLS_DTPREL_HI16 44
+#define R_MIPS_TLS_DTPREL_LO16 45
+#define R_MIPS_TLS_GOTTPREL 46
+#define R_MIPS_TLS_TPREL32 47
+#define R_MIPS_TLS_TPREL64 48
+#define R_MIPS_TLS_TPREL_HI16 49
+#define R_MIPS_TLS_TPREL_LO16 50
+#define R_MIPS_GLOB_DAT 51
+#define R_MIPS_COPY 126
+#define R_MIPS_JUMP_SLOT 127
+
+#define R_MIPS_NUM 128
+
+
+
+#define PT_MIPS_REGINFO 0x70000000
+#define PT_MIPS_RTPROC 0x70000001
+#define PT_MIPS_OPTIONS 0x70000002
+#define PT_MIPS_ABIFLAGS 0x70000003
+
+
+
+#define PF_MIPS_LOCAL 0x10000000
+
+
+
+#define DT_MIPS_RLD_VERSION 0x70000001
+#define DT_MIPS_TIME_STAMP 0x70000002
+#define DT_MIPS_ICHECKSUM 0x70000003
+#define DT_MIPS_IVERSION 0x70000004
+#define DT_MIPS_FLAGS 0x70000005
+#define DT_MIPS_BASE_ADDRESS 0x70000006
+#define DT_MIPS_MSYM 0x70000007
+#define DT_MIPS_CONFLICT 0x70000008
+#define DT_MIPS_LIBLIST 0x70000009
+#define DT_MIPS_LOCAL_GOTNO 0x7000000a
+#define DT_MIPS_CONFLICTNO 0x7000000b
+#define DT_MIPS_LIBLISTNO 0x70000010
+#define DT_MIPS_SYMTABNO 0x70000011
+#define DT_MIPS_UNREFEXTNO 0x70000012
+#define DT_MIPS_GOTSYM 0x70000013
+#define DT_MIPS_HIPAGENO 0x70000014
+#define DT_MIPS_RLD_MAP 0x70000016
+#define DT_MIPS_DELTA_CLASS 0x70000017
+#define DT_MIPS_DELTA_CLASS_NO 0x70000018
+
+#define DT_MIPS_DELTA_INSTANCE 0x70000019
+#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a
+
+#define DT_MIPS_DELTA_RELOC 0x7000001b
+#define DT_MIPS_DELTA_RELOC_NO 0x7000001c
+
+#define DT_MIPS_DELTA_SYM 0x7000001d
+
+#define DT_MIPS_DELTA_SYM_NO 0x7000001e
+
+#define DT_MIPS_DELTA_CLASSSYM 0x70000020
+
+#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021
+
+#define DT_MIPS_CXX_FLAGS 0x70000022
+#define DT_MIPS_PIXIE_INIT 0x70000023
+#define DT_MIPS_SYMBOL_LIB 0x70000024
+#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025
+#define DT_MIPS_LOCAL_GOTIDX 0x70000026
+#define DT_MIPS_HIDDEN_GOTIDX 0x70000027
+#define DT_MIPS_PROTECTED_GOTIDX 0x70000028
+#define DT_MIPS_OPTIONS 0x70000029
+#define DT_MIPS_INTERFACE 0x7000002a
+#define DT_MIPS_DYNSTR_ALIGN 0x7000002b
+#define DT_MIPS_INTERFACE_SIZE 0x7000002c
+#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d
+
+#define DT_MIPS_PERF_SUFFIX 0x7000002e
+
+#define DT_MIPS_COMPACT_SIZE 0x7000002f
+#define DT_MIPS_GP_VALUE 0x70000030
+#define DT_MIPS_AUX_DYNAMIC 0x70000031
+
+#define DT_MIPS_PLTGOT 0x70000032
+
+#define DT_MIPS_RWPLT 0x70000034
+#define DT_MIPS_RLD_MAP_REL 0x70000035
+#define DT_MIPS_NUM 0x36
+
+
+
+#define RHF_NONE 0
+#define RHF_QUICKSTART (1 << 0)
+#define RHF_NOTPOT (1 << 1)
+#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)
+#define RHF_NO_MOVE (1 << 3)
+#define RHF_SGI_ONLY (1 << 4)
+#define RHF_GUARANTEE_INIT (1 << 5)
+#define RHF_DELTA_C_PLUS_PLUS (1 << 6)
+#define RHF_GUARANTEE_START_INIT (1 << 7)
+#define RHF_PIXIE (1 << 8)
+#define RHF_DEFAULT_DELAY_LOAD (1 << 9)
+#define RHF_REQUICKSTART (1 << 10)
+#define RHF_REQUICKSTARTED (1 << 11)
+#define RHF_CORD (1 << 12)
+#define RHF_NO_UNRES_UNDEF (1 << 13)
+#define RHF_RLD_ORDER_SAFE (1 << 14)
+
+
+
+typedef struct {
+ Elf32_Word l_name;
+ Elf32_Word l_time_stamp;
+ Elf32_Word l_checksum;
+ Elf32_Word l_version;
+ Elf32_Word l_flags;
+} Elf32_Lib;
+
+typedef struct {
+ Elf64_Word l_name;
+ Elf64_Word l_time_stamp;
+ Elf64_Word l_checksum;
+ Elf64_Word l_version;
+ Elf64_Word l_flags;
+} Elf64_Lib;
+
+
+
+
+#define LL_NONE 0
+#define LL_EXACT_MATCH (1 << 0)
+#define LL_IGNORE_INT_VER (1 << 1)
+#define LL_REQUIRE_MINOR (1 << 2)
+#define LL_EXPORTS (1 << 3)
+#define LL_DELAY_LOAD (1 << 4)
+#define LL_DELTA (1 << 5)
+
+
+
+typedef Elf32_Addr Elf32_Conflict;
+
+typedef struct {
+ Elf32_Half version;
+ unsigned char isa_level;
+ unsigned char isa_rev;
+ unsigned char gpr_size;
+ unsigned char cpr1_size;
+ unsigned char cpr2_size;
+ unsigned char fp_abi;
+ Elf32_Word isa_ext;
+ Elf32_Word ases;
+ Elf32_Word flags1;
+ Elf32_Word flags2;
+} Elf_MIPS_ABIFlags_v0;
+
+#define MIPS_AFL_REG_NONE 0x00
+#define MIPS_AFL_REG_32 0x01
+#define MIPS_AFL_REG_64 0x02
+#define MIPS_AFL_REG_128 0x03
+
+#define MIPS_AFL_ASE_DSP 0x00000001
+#define MIPS_AFL_ASE_DSPR2 0x00000002
+#define MIPS_AFL_ASE_EVA 0x00000004
+#define MIPS_AFL_ASE_MCU 0x00000008
+#define MIPS_AFL_ASE_MDMX 0x00000010
+#define MIPS_AFL_ASE_MIPS3D 0x00000020
+#define MIPS_AFL_ASE_MT 0x00000040
+#define MIPS_AFL_ASE_SMARTMIPS 0x00000080
+#define MIPS_AFL_ASE_VIRT 0x00000100
+#define MIPS_AFL_ASE_MSA 0x00000200
+#define MIPS_AFL_ASE_MIPS16 0x00000400
+#define MIPS_AFL_ASE_MICROMIPS 0x00000800
+#define MIPS_AFL_ASE_XPA 0x00001000
+#define MIPS_AFL_ASE_MASK 0x00001fff
+
+#define MIPS_AFL_EXT_XLR 1
+#define MIPS_AFL_EXT_OCTEON2 2
+#define MIPS_AFL_EXT_OCTEONP 3
+#define MIPS_AFL_EXT_LOONGSON_3A 4
+#define MIPS_AFL_EXT_OCTEON 5
+#define MIPS_AFL_EXT_5900 6
+#define MIPS_AFL_EXT_4650 7
+#define MIPS_AFL_EXT_4010 8
+#define MIPS_AFL_EXT_4100 9
+#define MIPS_AFL_EXT_3900 10
+#define MIPS_AFL_EXT_10000 11
+#define MIPS_AFL_EXT_SB1 12
+#define MIPS_AFL_EXT_4111 13
+#define MIPS_AFL_EXT_4120 14
+#define MIPS_AFL_EXT_5400 15
+#define MIPS_AFL_EXT_5500 16
+#define MIPS_AFL_EXT_LOONGSON_2E 17
+#define MIPS_AFL_EXT_LOONGSON_2F 18
+
+#define MIPS_AFL_FLAGS1_ODDSPREG 1
+
+enum
+{
+ Val_GNU_MIPS_ABI_FP_ANY = 0,
+ Val_GNU_MIPS_ABI_FP_DOUBLE = 1,
+ Val_GNU_MIPS_ABI_FP_SINGLE = 2,
+ Val_GNU_MIPS_ABI_FP_SOFT = 3,
+ Val_GNU_MIPS_ABI_FP_OLD_64 = 4,
+ Val_GNU_MIPS_ABI_FP_XX = 5,
+ Val_GNU_MIPS_ABI_FP_64 = 6,
+ Val_GNU_MIPS_ABI_FP_64A = 7,
+ Val_GNU_MIPS_ABI_FP_MAX = 7
+};
+
+
+
+
+#define EF_PARISC_TRAPNIL 0x00010000
+#define EF_PARISC_EXT 0x00020000
+#define EF_PARISC_LSB 0x00040000
+#define EF_PARISC_WIDE 0x00080000
+#define EF_PARISC_NO_KABP 0x00100000
+
+#define EF_PARISC_LAZYSWAP 0x00400000
+#define EF_PARISC_ARCH 0x0000ffff
+
+
+
+#define EFA_PARISC_1_0 0x020b
+#define EFA_PARISC_1_1 0x0210
+#define EFA_PARISC_2_0 0x0214
+
+
+
+#define SHN_PARISC_ANSI_COMMON 0xff00
+
+#define SHN_PARISC_HUGE_COMMON 0xff01
+
+
+
+#define SHT_PARISC_EXT 0x70000000
+#define SHT_PARISC_UNWIND 0x70000001
+#define SHT_PARISC_DOC 0x70000002
+
+
+
+#define SHF_PARISC_SHORT 0x20000000
+#define SHF_PARISC_HUGE 0x40000000
+#define SHF_PARISC_SBP 0x80000000
+
+
+
+#define STT_PARISC_MILLICODE 13
+
+#define STT_HP_OPAQUE (STT_LOOS + 0x1)
+#define STT_HP_STUB (STT_LOOS + 0x2)
+
+
+
+#define R_PARISC_NONE 0
+#define R_PARISC_DIR32 1
+#define R_PARISC_DIR21L 2
+#define R_PARISC_DIR17R 3
+#define R_PARISC_DIR17F 4
+#define R_PARISC_DIR14R 6
+#define R_PARISC_PCREL32 9
+#define R_PARISC_PCREL21L 10
+#define R_PARISC_PCREL17R 11
+#define R_PARISC_PCREL17F 12
+#define R_PARISC_PCREL14R 14
+#define R_PARISC_DPREL21L 18
+#define R_PARISC_DPREL14R 22
+#define R_PARISC_GPREL21L 26
+#define R_PARISC_GPREL14R 30
+#define R_PARISC_LTOFF21L 34
+#define R_PARISC_LTOFF14R 38
+#define R_PARISC_SECREL32 41
+#define R_PARISC_SEGBASE 48
+#define R_PARISC_SEGREL32 49
+#define R_PARISC_PLTOFF21L 50
+#define R_PARISC_PLTOFF14R 54
+#define R_PARISC_LTOFF_FPTR32 57
+#define R_PARISC_LTOFF_FPTR21L 58
+#define R_PARISC_LTOFF_FPTR14R 62
+#define R_PARISC_FPTR64 64
+#define R_PARISC_PLABEL32 65
+#define R_PARISC_PLABEL21L 66
+#define R_PARISC_PLABEL14R 70
+#define R_PARISC_PCREL64 72
+#define R_PARISC_PCREL22F 74
+#define R_PARISC_PCREL14WR 75
+#define R_PARISC_PCREL14DR 76
+#define R_PARISC_PCREL16F 77
+#define R_PARISC_PCREL16WF 78
+#define R_PARISC_PCREL16DF 79
+#define R_PARISC_DIR64 80
+#define R_PARISC_DIR14WR 83
+#define R_PARISC_DIR14DR 84
+#define R_PARISC_DIR16F 85
+#define R_PARISC_DIR16WF 86
+#define R_PARISC_DIR16DF 87
+#define R_PARISC_GPREL64 88
+#define R_PARISC_GPREL14WR 91
+#define R_PARISC_GPREL14DR 92
+#define R_PARISC_GPREL16F 93
+#define R_PARISC_GPREL16WF 94
+#define R_PARISC_GPREL16DF 95
+#define R_PARISC_LTOFF64 96
+#define R_PARISC_LTOFF14WR 99
+#define R_PARISC_LTOFF14DR 100
+#define R_PARISC_LTOFF16F 101
+#define R_PARISC_LTOFF16WF 102
+#define R_PARISC_LTOFF16DF 103
+#define R_PARISC_SECREL64 104
+#define R_PARISC_SEGREL64 112
+#define R_PARISC_PLTOFF14WR 115
+#define R_PARISC_PLTOFF14DR 116
+#define R_PARISC_PLTOFF16F 117
+#define R_PARISC_PLTOFF16WF 118
+#define R_PARISC_PLTOFF16DF 119
+#define R_PARISC_LTOFF_FPTR64 120
+#define R_PARISC_LTOFF_FPTR14WR 123
+#define R_PARISC_LTOFF_FPTR14DR 124
+#define R_PARISC_LTOFF_FPTR16F 125
+#define R_PARISC_LTOFF_FPTR16WF 126
+#define R_PARISC_LTOFF_FPTR16DF 127
+#define R_PARISC_LORESERVE 128
+#define R_PARISC_COPY 128
+#define R_PARISC_IPLT 129
+#define R_PARISC_EPLT 130
+#define R_PARISC_TPREL32 153
+#define R_PARISC_TPREL21L 154
+#define R_PARISC_TPREL14R 158
+#define R_PARISC_LTOFF_TP21L 162
+#define R_PARISC_LTOFF_TP14R 166
+#define R_PARISC_LTOFF_TP14F 167
+#define R_PARISC_TPREL64 216
+#define R_PARISC_TPREL14WR 219
+#define R_PARISC_TPREL14DR 220
+#define R_PARISC_TPREL16F 221
+#define R_PARISC_TPREL16WF 222
+#define R_PARISC_TPREL16DF 223
+#define R_PARISC_LTOFF_TP64 224
+#define R_PARISC_LTOFF_TP14WR 227
+#define R_PARISC_LTOFF_TP14DR 228
+#define R_PARISC_LTOFF_TP16F 229
+#define R_PARISC_LTOFF_TP16WF 230
+#define R_PARISC_LTOFF_TP16DF 231
+#define R_PARISC_GNU_VTENTRY 232
+#define R_PARISC_GNU_VTINHERIT 233
+#define R_PARISC_TLS_GD21L 234
+#define R_PARISC_TLS_GD14R 235
+#define R_PARISC_TLS_GDCALL 236
+#define R_PARISC_TLS_LDM21L 237
+#define R_PARISC_TLS_LDM14R 238
+#define R_PARISC_TLS_LDMCALL 239
+#define R_PARISC_TLS_LDO21L 240
+#define R_PARISC_TLS_LDO14R 241
+#define R_PARISC_TLS_DTPMOD32 242
+#define R_PARISC_TLS_DTPMOD64 243
+#define R_PARISC_TLS_DTPOFF32 244
+#define R_PARISC_TLS_DTPOFF64 245
+#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L
+#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R
+#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L
+#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R
+#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32
+#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64
+#define R_PARISC_HIRESERVE 255
+
+
+
+#define PT_HP_TLS (PT_LOOS + 0x0)
+#define PT_HP_CORE_NONE (PT_LOOS + 0x1)
+#define PT_HP_CORE_VERSION (PT_LOOS + 0x2)
+#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3)
+#define PT_HP_CORE_COMM (PT_LOOS + 0x4)
+#define PT_HP_CORE_PROC (PT_LOOS + 0x5)
+#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6)
+#define PT_HP_CORE_STACK (PT_LOOS + 0x7)
+#define PT_HP_CORE_SHM (PT_LOOS + 0x8)
+#define PT_HP_CORE_MMF (PT_LOOS + 0x9)
+#define PT_HP_PARALLEL (PT_LOOS + 0x10)
+#define PT_HP_FASTBIND (PT_LOOS + 0x11)
+#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12)
+#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13)
+#define PT_HP_STACK (PT_LOOS + 0x14)
+
+#define PT_PARISC_ARCHEXT 0x70000000
+#define PT_PARISC_UNWIND 0x70000001
+
+
+
+#define PF_PARISC_SBP 0x08000000
+
+#define PF_HP_PAGE_SIZE 0x00100000
+#define PF_HP_FAR_SHARED 0x00200000
+#define PF_HP_NEAR_SHARED 0x00400000
+#define PF_HP_CODE 0x01000000
+#define PF_HP_MODIFY 0x02000000
+#define PF_HP_LAZYSWAP 0x04000000
+#define PF_HP_SBP 0x08000000
+
+
+
+
+
+
+#define EF_ALPHA_32BIT 1
+#define EF_ALPHA_CANRELAX 2
+
+
+
+
+#define SHT_ALPHA_DEBUG 0x70000001
+#define SHT_ALPHA_REGINFO 0x70000002
+
+
+
+#define SHF_ALPHA_GPREL 0x10000000
+
+
+#define STO_ALPHA_NOPV 0x80
+#define STO_ALPHA_STD_GPLOAD 0x88
+
+
+
+#define R_ALPHA_NONE 0
+#define R_ALPHA_REFLONG 1
+#define R_ALPHA_REFQUAD 2
+#define R_ALPHA_GPREL32 3
+#define R_ALPHA_LITERAL 4
+#define R_ALPHA_LITUSE 5
+#define R_ALPHA_GPDISP 6
+#define R_ALPHA_BRADDR 7
+#define R_ALPHA_HINT 8
+#define R_ALPHA_SREL16 9
+#define R_ALPHA_SREL32 10
+#define R_ALPHA_SREL64 11
+#define R_ALPHA_GPRELHIGH 17
+#define R_ALPHA_GPRELLOW 18
+#define R_ALPHA_GPREL16 19
+#define R_ALPHA_COPY 24
+#define R_ALPHA_GLOB_DAT 25
+#define R_ALPHA_JMP_SLOT 26
+#define R_ALPHA_RELATIVE 27
+#define R_ALPHA_TLS_GD_HI 28
+#define R_ALPHA_TLSGD 29
+#define R_ALPHA_TLS_LDM 30
+#define R_ALPHA_DTPMOD64 31
+#define R_ALPHA_GOTDTPREL 32
+#define R_ALPHA_DTPREL64 33
+#define R_ALPHA_DTPRELHI 34
+#define R_ALPHA_DTPRELLO 35
+#define R_ALPHA_DTPREL16 36
+#define R_ALPHA_GOTTPREL 37
+#define R_ALPHA_TPREL64 38
+#define R_ALPHA_TPRELHI 39
+#define R_ALPHA_TPRELLO 40
+#define R_ALPHA_TPREL16 41
+
+#define R_ALPHA_NUM 46
+
+
+#define LITUSE_ALPHA_ADDR 0
+#define LITUSE_ALPHA_BASE 1
+#define LITUSE_ALPHA_BYTOFF 2
+#define LITUSE_ALPHA_JSR 3
+#define LITUSE_ALPHA_TLS_GD 4
+#define LITUSE_ALPHA_TLS_LDM 5
+
+
+#define DT_ALPHA_PLTRO (DT_LOPROC + 0)
+#define DT_ALPHA_NUM 1
+
+
+
+
+#define EF_PPC_EMB 0x80000000
+
+
+#define EF_PPC_RELOCATABLE 0x00010000
+#define EF_PPC_RELOCATABLE_LIB 0x00008000
+
+
+
+#define R_PPC_NONE 0
+#define R_PPC_ADDR32 1
+#define R_PPC_ADDR24 2
+#define R_PPC_ADDR16 3
+#define R_PPC_ADDR16_LO 4
+#define R_PPC_ADDR16_HI 5
+#define R_PPC_ADDR16_HA 6
+#define R_PPC_ADDR14 7
+#define R_PPC_ADDR14_BRTAKEN 8
+#define R_PPC_ADDR14_BRNTAKEN 9
+#define R_PPC_REL24 10
+#define R_PPC_REL14 11
+#define R_PPC_REL14_BRTAKEN 12
+#define R_PPC_REL14_BRNTAKEN 13
+#define R_PPC_GOT16 14
+#define R_PPC_GOT16_LO 15
+#define R_PPC_GOT16_HI 16
+#define R_PPC_GOT16_HA 17
+#define R_PPC_PLTREL24 18
+#define R_PPC_COPY 19
+#define R_PPC_GLOB_DAT 20
+#define R_PPC_JMP_SLOT 21
+#define R_PPC_RELATIVE 22
+#define R_PPC_LOCAL24PC 23
+#define R_PPC_UADDR32 24
+#define R_PPC_UADDR16 25
+#define R_PPC_REL32 26
+#define R_PPC_PLT32 27
+#define R_PPC_PLTREL32 28
+#define R_PPC_PLT16_LO 29
+#define R_PPC_PLT16_HI 30
+#define R_PPC_PLT16_HA 31
+#define R_PPC_SDAREL16 32
+#define R_PPC_SECTOFF 33
+#define R_PPC_SECTOFF_LO 34
+#define R_PPC_SECTOFF_HI 35
+#define R_PPC_SECTOFF_HA 36
+
+
+#define R_PPC_TLS 67
+#define R_PPC_DTPMOD32 68
+#define R_PPC_TPREL16 69
+#define R_PPC_TPREL16_LO 70
+#define R_PPC_TPREL16_HI 71
+#define R_PPC_TPREL16_HA 72
+#define R_PPC_TPREL32 73
+#define R_PPC_DTPREL16 74
+#define R_PPC_DTPREL16_LO 75
+#define R_PPC_DTPREL16_HI 76
+#define R_PPC_DTPREL16_HA 77
+#define R_PPC_DTPREL32 78
+#define R_PPC_GOT_TLSGD16 79
+#define R_PPC_GOT_TLSGD16_LO 80
+#define R_PPC_GOT_TLSGD16_HI 81
+#define R_PPC_GOT_TLSGD16_HA 82
+#define R_PPC_GOT_TLSLD16 83
+#define R_PPC_GOT_TLSLD16_LO 84
+#define R_PPC_GOT_TLSLD16_HI 85
+#define R_PPC_GOT_TLSLD16_HA 86
+#define R_PPC_GOT_TPREL16 87
+#define R_PPC_GOT_TPREL16_LO 88
+#define R_PPC_GOT_TPREL16_HI 89
+#define R_PPC_GOT_TPREL16_HA 90
+#define R_PPC_GOT_DTPREL16 91
+#define R_PPC_GOT_DTPREL16_LO 92
+#define R_PPC_GOT_DTPREL16_HI 93
+#define R_PPC_GOT_DTPREL16_HA 94
+#define R_PPC_TLSGD 95
+#define R_PPC_TLSLD 96
+
+
+#define R_PPC_EMB_NADDR32 101
+#define R_PPC_EMB_NADDR16 102
+#define R_PPC_EMB_NADDR16_LO 103
+#define R_PPC_EMB_NADDR16_HI 104
+#define R_PPC_EMB_NADDR16_HA 105
+#define R_PPC_EMB_SDAI16 106
+#define R_PPC_EMB_SDA2I16 107
+#define R_PPC_EMB_SDA2REL 108
+#define R_PPC_EMB_SDA21 109
+#define R_PPC_EMB_MRKREF 110
+#define R_PPC_EMB_RELSEC16 111
+#define R_PPC_EMB_RELST_LO 112
+#define R_PPC_EMB_RELST_HI 113
+#define R_PPC_EMB_RELST_HA 114
+#define R_PPC_EMB_BIT_FLD 115
+#define R_PPC_EMB_RELSDA 116
+
+
+#define R_PPC_DIAB_SDA21_LO 180
+#define R_PPC_DIAB_SDA21_HI 181
+#define R_PPC_DIAB_SDA21_HA 182
+#define R_PPC_DIAB_RELSDA_LO 183
+#define R_PPC_DIAB_RELSDA_HI 184
+#define R_PPC_DIAB_RELSDA_HA 185
+
+
+#define R_PPC_IRELATIVE 248
+
+
+#define R_PPC_REL16 249
+#define R_PPC_REL16_LO 250
+#define R_PPC_REL16_HI 251
+#define R_PPC_REL16_HA 252
+
+
+
+#define R_PPC_TOC16 255
+
+
+#define DT_PPC_GOT (DT_LOPROC + 0)
+#define DT_PPC_OPT (DT_LOPROC + 1)
+#define DT_PPC_NUM 2
+
+#define PPC_OPT_TLS 1
+
+
+#define R_PPC64_NONE R_PPC_NONE
+#define R_PPC64_ADDR32 R_PPC_ADDR32
+#define R_PPC64_ADDR24 R_PPC_ADDR24
+#define R_PPC64_ADDR16 R_PPC_ADDR16
+#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO
+#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI
+#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA
+#define R_PPC64_ADDR14 R_PPC_ADDR14
+#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
+#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
+#define R_PPC64_REL24 R_PPC_REL24
+#define R_PPC64_REL14 R_PPC_REL14
+#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
+#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
+#define R_PPC64_GOT16 R_PPC_GOT16
+#define R_PPC64_GOT16_LO R_PPC_GOT16_LO
+#define R_PPC64_GOT16_HI R_PPC_GOT16_HI
+#define R_PPC64_GOT16_HA R_PPC_GOT16_HA
+
+#define R_PPC64_COPY R_PPC_COPY
+#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
+#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
+#define R_PPC64_RELATIVE R_PPC_RELATIVE
+
+#define R_PPC64_UADDR32 R_PPC_UADDR32
+#define R_PPC64_UADDR16 R_PPC_UADDR16
+#define R_PPC64_REL32 R_PPC_REL32
+#define R_PPC64_PLT32 R_PPC_PLT32
+#define R_PPC64_PLTREL32 R_PPC_PLTREL32
+#define R_PPC64_PLT16_LO R_PPC_PLT16_LO
+#define R_PPC64_PLT16_HI R_PPC_PLT16_HI
+#define R_PPC64_PLT16_HA R_PPC_PLT16_HA
+
+#define R_PPC64_SECTOFF R_PPC_SECTOFF
+#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
+#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
+#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
+#define R_PPC64_ADDR30 37
+#define R_PPC64_ADDR64 38
+#define R_PPC64_ADDR16_HIGHER 39
+#define R_PPC64_ADDR16_HIGHERA 40
+#define R_PPC64_ADDR16_HIGHEST 41
+#define R_PPC64_ADDR16_HIGHESTA 42
+#define R_PPC64_UADDR64 43
+#define R_PPC64_REL64 44
+#define R_PPC64_PLT64 45
+#define R_PPC64_PLTREL64 46
+#define R_PPC64_TOC16 47
+#define R_PPC64_TOC16_LO 48
+#define R_PPC64_TOC16_HI 49
+#define R_PPC64_TOC16_HA 50
+#define R_PPC64_TOC 51
+#define R_PPC64_PLTGOT16 52
+#define R_PPC64_PLTGOT16_LO 53
+#define R_PPC64_PLTGOT16_HI 54
+#define R_PPC64_PLTGOT16_HA 55
+
+#define R_PPC64_ADDR16_DS 56
+#define R_PPC64_ADDR16_LO_DS 57
+#define R_PPC64_GOT16_DS 58
+#define R_PPC64_GOT16_LO_DS 59
+#define R_PPC64_PLT16_LO_DS 60
+#define R_PPC64_SECTOFF_DS 61
+#define R_PPC64_SECTOFF_LO_DS 62
+#define R_PPC64_TOC16_DS 63
+#define R_PPC64_TOC16_LO_DS 64
+#define R_PPC64_PLTGOT16_DS 65
+#define R_PPC64_PLTGOT16_LO_DS 66
+
+
+#define R_PPC64_TLS 67
+#define R_PPC64_DTPMOD64 68
+#define R_PPC64_TPREL16 69
+#define R_PPC64_TPREL16_LO 70
+#define R_PPC64_TPREL16_HI 71
+#define R_PPC64_TPREL16_HA 72
+#define R_PPC64_TPREL64 73
+#define R_PPC64_DTPREL16 74
+#define R_PPC64_DTPREL16_LO 75
+#define R_PPC64_DTPREL16_HI 76
+#define R_PPC64_DTPREL16_HA 77
+#define R_PPC64_DTPREL64 78
+#define R_PPC64_GOT_TLSGD16 79
+#define R_PPC64_GOT_TLSGD16_LO 80
+#define R_PPC64_GOT_TLSGD16_HI 81
+#define R_PPC64_GOT_TLSGD16_HA 82
+#define R_PPC64_GOT_TLSLD16 83
+#define R_PPC64_GOT_TLSLD16_LO 84
+#define R_PPC64_GOT_TLSLD16_HI 85
+#define R_PPC64_GOT_TLSLD16_HA 86
+#define R_PPC64_GOT_TPREL16_DS 87
+#define R_PPC64_GOT_TPREL16_LO_DS 88
+#define R_PPC64_GOT_TPREL16_HI 89
+#define R_PPC64_GOT_TPREL16_HA 90
+#define R_PPC64_GOT_DTPREL16_DS 91
+#define R_PPC64_GOT_DTPREL16_LO_DS 92
+#define R_PPC64_GOT_DTPREL16_HI 93
+#define R_PPC64_GOT_DTPREL16_HA 94
+#define R_PPC64_TPREL16_DS 95
+#define R_PPC64_TPREL16_LO_DS 96
+#define R_PPC64_TPREL16_HIGHER 97
+#define R_PPC64_TPREL16_HIGHERA 98
+#define R_PPC64_TPREL16_HIGHEST 99
+#define R_PPC64_TPREL16_HIGHESTA 100
+#define R_PPC64_DTPREL16_DS 101
+#define R_PPC64_DTPREL16_LO_DS 102
+#define R_PPC64_DTPREL16_HIGHER 103
+#define R_PPC64_DTPREL16_HIGHERA 104
+#define R_PPC64_DTPREL16_HIGHEST 105
+#define R_PPC64_DTPREL16_HIGHESTA 106
+#define R_PPC64_TLSGD 107
+#define R_PPC64_TLSLD 108
+#define R_PPC64_TOCSAVE 109
+#define R_PPC64_ADDR16_HIGH 110
+#define R_PPC64_ADDR16_HIGHA 111
+#define R_PPC64_TPREL16_HIGH 112
+#define R_PPC64_TPREL16_HIGHA 113
+#define R_PPC64_DTPREL16_HIGH 114
+#define R_PPC64_DTPREL16_HIGHA 115
+
+
+#define R_PPC64_JMP_IREL 247
+#define R_PPC64_IRELATIVE 248
+#define R_PPC64_REL16 249
+#define R_PPC64_REL16_LO 250
+#define R_PPC64_REL16_HI 251
+#define R_PPC64_REL16_HA 252
+
+#define EF_PPC64_ABI 3
+
+#define DT_PPC64_GLINK (DT_LOPROC + 0)
+#define DT_PPC64_OPD (DT_LOPROC + 1)
+#define DT_PPC64_OPDSZ (DT_LOPROC + 2)
+#define DT_PPC64_OPT (DT_LOPROC + 3)
+#define DT_PPC64_NUM 4
+
+#define PPC64_OPT_TLS 1
+#define PPC64_OPT_MULTI_TOC 2
+
+#define STO_PPC64_LOCAL_BIT 5
+#define STO_PPC64_LOCAL_MASK 0xe0
+#define PPC64_LOCAL_ENTRY_OFFSET(x) (1 << (((x)&0xe0)>>5) & 0xfc)
+
+
+#define EF_ARM_RELEXEC 0x01
+#define EF_ARM_HASENTRY 0x02
+#define EF_ARM_INTERWORK 0x04
+#define EF_ARM_APCS_26 0x08
+#define EF_ARM_APCS_FLOAT 0x10
+#define EF_ARM_PIC 0x20
+#define EF_ARM_ALIGN8 0x40
+#define EF_ARM_NEW_ABI 0x80
+#define EF_ARM_OLD_ABI 0x100
+#define EF_ARM_SOFT_FLOAT 0x200
+#define EF_ARM_VFP_FLOAT 0x400
+#define EF_ARM_MAVERICK_FLOAT 0x800
+
+#define EF_ARM_ABI_FLOAT_SOFT 0x200
+#define EF_ARM_ABI_FLOAT_HARD 0x400
+
+
+#define EF_ARM_SYMSARESORTED 0x04
+#define EF_ARM_DYNSYMSUSESEGIDX 0x08
+#define EF_ARM_MAPSYMSFIRST 0x10
+#define EF_ARM_EABIMASK 0XFF000000
+
+
+#define EF_ARM_BE8 0x00800000
+#define EF_ARM_LE8 0x00400000
+
+#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
+#define EF_ARM_EABI_UNKNOWN 0x00000000
+#define EF_ARM_EABI_VER1 0x01000000
+#define EF_ARM_EABI_VER2 0x02000000
+#define EF_ARM_EABI_VER3 0x03000000
+#define EF_ARM_EABI_VER4 0x04000000
+#define EF_ARM_EABI_VER5 0x05000000
+
+
+#define STT_ARM_TFUNC STT_LOPROC
+#define STT_ARM_16BIT STT_HIPROC
+
+
+#define SHF_ARM_ENTRYSECT 0x10000000
+#define SHF_ARM_COMDEF 0x80000000
+
+
+
+#define PF_ARM_SB 0x10000000
+
+#define PF_ARM_PI 0x20000000
+#define PF_ARM_ABS 0x40000000
+
+
+#define PT_ARM_EXIDX (PT_LOPROC + 1)
+
+
+#define SHT_ARM_EXIDX (SHT_LOPROC + 1)
+#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2)
+#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3)
+
+#define R_AARCH64_NONE 0
+#define R_AARCH64_P32_ABS32 1
+#define R_AARCH64_P32_COPY 180
+#define R_AARCH64_P32_GLOB_DAT 181
+#define R_AARCH64_P32_JUMP_SLOT 182
+#define R_AARCH64_P32_RELATIVE 183
+#define R_AARCH64_P32_TLS_DTPMOD 184
+#define R_AARCH64_P32_TLS_DTPREL 185
+#define R_AARCH64_P32_TLS_TPREL 186
+#define R_AARCH64_P32_TLSDESC 187
+#define R_AARCH64_P32_IRELATIVE 188
+#define R_AARCH64_ABS64 257
+#define R_AARCH64_ABS32 258
+#define R_AARCH64_ABS16 259
+#define R_AARCH64_PREL64 260
+#define R_AARCH64_PREL32 261
+#define R_AARCH64_PREL16 262
+#define R_AARCH64_MOVW_UABS_G0 263
+#define R_AARCH64_MOVW_UABS_G0_NC 264
+#define R_AARCH64_MOVW_UABS_G1 265
+#define R_AARCH64_MOVW_UABS_G1_NC 266
+#define R_AARCH64_MOVW_UABS_G2 267
+#define R_AARCH64_MOVW_UABS_G2_NC 268
+#define R_AARCH64_MOVW_UABS_G3 269
+#define R_AARCH64_MOVW_SABS_G0 270
+#define R_AARCH64_MOVW_SABS_G1 271
+#define R_AARCH64_MOVW_SABS_G2 272
+#define R_AARCH64_LD_PREL_LO19 273
+#define R_AARCH64_ADR_PREL_LO21 274
+#define R_AARCH64_ADR_PREL_PG_HI21 275
+#define R_AARCH64_ADR_PREL_PG_HI21_NC 276
+#define R_AARCH64_ADD_ABS_LO12_NC 277
+#define R_AARCH64_LDST8_ABS_LO12_NC 278
+#define R_AARCH64_TSTBR14 279
+#define R_AARCH64_CONDBR19 280
+#define R_AARCH64_JUMP26 282
+#define R_AARCH64_CALL26 283
+#define R_AARCH64_LDST16_ABS_LO12_NC 284
+#define R_AARCH64_LDST32_ABS_LO12_NC 285
+#define R_AARCH64_LDST64_ABS_LO12_NC 286
+#define R_AARCH64_MOVW_PREL_G0 287
+#define R_AARCH64_MOVW_PREL_G0_NC 288
+#define R_AARCH64_MOVW_PREL_G1 289
+#define R_AARCH64_MOVW_PREL_G1_NC 290
+#define R_AARCH64_MOVW_PREL_G2 291
+#define R_AARCH64_MOVW_PREL_G2_NC 292
+#define R_AARCH64_MOVW_PREL_G3 293
+#define R_AARCH64_LDST128_ABS_LO12_NC 299
+#define R_AARCH64_MOVW_GOTOFF_G0 300
+#define R_AARCH64_MOVW_GOTOFF_G0_NC 301
+#define R_AARCH64_MOVW_GOTOFF_G1 302
+#define R_AARCH64_MOVW_GOTOFF_G1_NC 303
+#define R_AARCH64_MOVW_GOTOFF_G2 304
+#define R_AARCH64_MOVW_GOTOFF_G2_NC 305
+#define R_AARCH64_MOVW_GOTOFF_G3 306
+#define R_AARCH64_GOTREL64 307
+#define R_AARCH64_GOTREL32 308
+#define R_AARCH64_GOT_LD_PREL19 309
+#define R_AARCH64_LD64_GOTOFF_LO15 310
+#define R_AARCH64_ADR_GOT_PAGE 311
+#define R_AARCH64_LD64_GOT_LO12_NC 312
+#define R_AARCH64_LD64_GOTPAGE_LO15 313
+#define R_AARCH64_TLSGD_ADR_PREL21 512
+#define R_AARCH64_TLSGD_ADR_PAGE21 513
+#define R_AARCH64_TLSGD_ADD_LO12_NC 514
+#define R_AARCH64_TLSGD_MOVW_G1 515
+#define R_AARCH64_TLSGD_MOVW_G0_NC 516
+#define R_AARCH64_TLSLD_ADR_PREL21 517
+#define R_AARCH64_TLSLD_ADR_PAGE21 518
+#define R_AARCH64_TLSLD_ADD_LO12_NC 519
+#define R_AARCH64_TLSLD_MOVW_G1 520
+#define R_AARCH64_TLSLD_MOVW_G0_NC 521
+#define R_AARCH64_TLSLD_LD_PREL19 522
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527
+#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528
+#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529
+#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530
+#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531
+#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532
+#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533
+#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534
+#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535
+#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536
+#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537
+#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538
+#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539
+#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540
+#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541
+#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542
+#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543
+#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544
+#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545
+#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546
+#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547
+#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548
+#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549
+#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550
+#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551
+#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552
+#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553
+#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554
+#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555
+#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556
+#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557
+#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558
+#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559
+#define R_AARCH64_TLSDESC_LD_PREL19 560
+#define R_AARCH64_TLSDESC_ADR_PREL21 561
+#define R_AARCH64_TLSDESC_ADR_PAGE21 562
+#define R_AARCH64_TLSDESC_LD64_LO12 563
+#define R_AARCH64_TLSDESC_ADD_LO12 564
+#define R_AARCH64_TLSDESC_OFF_G1 565
+#define R_AARCH64_TLSDESC_OFF_G0_NC 566
+#define R_AARCH64_TLSDESC_LDR 567
+#define R_AARCH64_TLSDESC_ADD 568
+#define R_AARCH64_TLSDESC_CALL 569
+#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570
+#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571
+#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572
+#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573
+#define R_AARCH64_COPY 1024
+#define R_AARCH64_GLOB_DAT 1025
+#define R_AARCH64_JUMP_SLOT 1026
+#define R_AARCH64_RELATIVE 1027
+#define R_AARCH64_TLS_DTPMOD 1028
+#define R_AARCH64_TLS_DTPMOD64 1028
+#define R_AARCH64_TLS_DTPREL 1029
+#define R_AARCH64_TLS_DTPREL64 1029
+#define R_AARCH64_TLS_TPREL 1030
+#define R_AARCH64_TLS_TPREL64 1030
+#define R_AARCH64_TLSDESC 1031
+
+
+#define R_ARM_NONE 0
+#define R_ARM_PC24 1
+#define R_ARM_ABS32 2
+#define R_ARM_REL32 3
+#define R_ARM_PC13 4
+#define R_ARM_ABS16 5
+#define R_ARM_ABS12 6
+#define R_ARM_THM_ABS5 7
+#define R_ARM_ABS8 8
+#define R_ARM_SBREL32 9
+#define R_ARM_THM_PC22 10
+#define R_ARM_THM_PC8 11
+#define R_ARM_AMP_VCALL9 12
+#define R_ARM_TLS_DESC 13
+#define R_ARM_THM_SWI8 14
+#define R_ARM_XPC25 15
+#define R_ARM_THM_XPC22 16
+#define R_ARM_TLS_DTPMOD32 17
+#define R_ARM_TLS_DTPOFF32 18
+#define R_ARM_TLS_TPOFF32 19
+#define R_ARM_COPY 20
+#define R_ARM_GLOB_DAT 21
+#define R_ARM_JUMP_SLOT 22
+#define R_ARM_RELATIVE 23
+#define R_ARM_GOTOFF 24
+#define R_ARM_GOTPC 25
+#define R_ARM_GOT32 26
+#define R_ARM_PLT32 27
+#define R_ARM_CALL 28
+#define R_ARM_JUMP24 29
+#define R_ARM_THM_JUMP24 30
+#define R_ARM_BASE_ABS 31
+#define R_ARM_ALU_PCREL_7_0 32
+#define R_ARM_ALU_PCREL_15_8 33
+#define R_ARM_ALU_PCREL_23_15 34
+#define R_ARM_LDR_SBREL_11_0 35
+#define R_ARM_ALU_SBREL_19_12 36
+#define R_ARM_ALU_SBREL_27_20 37
+#define R_ARM_TARGET1 38
+#define R_ARM_SBREL31 39
+#define R_ARM_V4BX 40
+#define R_ARM_TARGET2 41
+#define R_ARM_PREL31 42
+#define R_ARM_MOVW_ABS_NC 43
+#define R_ARM_MOVT_ABS 44
+#define R_ARM_MOVW_PREL_NC 45
+#define R_ARM_MOVT_PREL 46
+#define R_ARM_THM_MOVW_ABS_NC 47
+#define R_ARM_THM_MOVT_ABS 48
+#define R_ARM_THM_MOVW_PREL_NC 49
+#define R_ARM_THM_MOVT_PREL 50
+#define R_ARM_THM_JUMP19 51
+#define R_ARM_THM_JUMP6 52
+#define R_ARM_THM_ALU_PREL_11_0 53
+#define R_ARM_THM_PC12 54
+#define R_ARM_ABS32_NOI 55
+#define R_ARM_REL32_NOI 56
+#define R_ARM_ALU_PC_G0_NC 57
+#define R_ARM_ALU_PC_G0 58
+#define R_ARM_ALU_PC_G1_NC 59
+#define R_ARM_ALU_PC_G1 60
+#define R_ARM_ALU_PC_G2 61
+#define R_ARM_LDR_PC_G1 62
+#define R_ARM_LDR_PC_G2 63
+#define R_ARM_LDRS_PC_G0 64
+#define R_ARM_LDRS_PC_G1 65
+#define R_ARM_LDRS_PC_G2 66
+#define R_ARM_LDC_PC_G0 67
+#define R_ARM_LDC_PC_G1 68
+#define R_ARM_LDC_PC_G2 69
+#define R_ARM_ALU_SB_G0_NC 70
+#define R_ARM_ALU_SB_G0 71
+#define R_ARM_ALU_SB_G1_NC 72
+#define R_ARM_ALU_SB_G1 73
+#define R_ARM_ALU_SB_G2 74
+#define R_ARM_LDR_SB_G0 75
+#define R_ARM_LDR_SB_G1 76
+#define R_ARM_LDR_SB_G2 77
+#define R_ARM_LDRS_SB_G0 78
+#define R_ARM_LDRS_SB_G1 79
+#define R_ARM_LDRS_SB_G2 80
+#define R_ARM_LDC_SB_G0 81
+#define R_ARM_LDC_SB_G1 82
+#define R_ARM_LDC_SB_G2 83
+#define R_ARM_MOVW_BREL_NC 84
+#define R_ARM_MOVT_BREL 85
+#define R_ARM_MOVW_BREL 86
+#define R_ARM_THM_MOVW_BREL_NC 87
+#define R_ARM_THM_MOVT_BREL 88
+#define R_ARM_THM_MOVW_BREL 89
+#define R_ARM_TLS_GOTDESC 90
+#define R_ARM_TLS_CALL 91
+#define R_ARM_TLS_DESCSEQ 92
+#define R_ARM_THM_TLS_CALL 93
+#define R_ARM_PLT32_ABS 94
+#define R_ARM_GOT_ABS 95
+#define R_ARM_GOT_PREL 96
+#define R_ARM_GOT_BREL12 97
+#define R_ARM_GOTOFF12 98
+#define R_ARM_GOTRELAX 99
+#define R_ARM_GNU_VTENTRY 100
+#define R_ARM_GNU_VTINHERIT 101
+#define R_ARM_THM_PC11 102
+#define R_ARM_THM_PC9 103
+#define R_ARM_TLS_GD32 104
+
+#define R_ARM_TLS_LDM32 105
+
+#define R_ARM_TLS_LDO32 106
+
+#define R_ARM_TLS_IE32 107
+
+#define R_ARM_TLS_LE32 108
+#define R_ARM_TLS_LDO12 109
+#define R_ARM_TLS_LE12 110
+#define R_ARM_TLS_IE12GP 111
+#define R_ARM_ME_TOO 128
+#define R_ARM_THM_TLS_DESCSEQ 129
+#define R_ARM_THM_TLS_DESCSEQ16 129
+#define R_ARM_THM_TLS_DESCSEQ32 130
+#define R_ARM_THM_GOT_BREL12 131
+#define R_ARM_IRELATIVE 160
+#define R_ARM_RXPC25 249
+#define R_ARM_RSBREL32 250
+#define R_ARM_THM_RPC22 251
+#define R_ARM_RREL32 252
+#define R_ARM_RABS22 253
+#define R_ARM_RPC24 254
+#define R_ARM_RBASE 255
+
+#define R_ARM_NUM 256
+
+
+
+
+#define EF_IA_64_MASKOS 0x0000000f
+#define EF_IA_64_ABI64 0x00000010
+#define EF_IA_64_ARCH 0xff000000
+
+
+#define PT_IA_64_ARCHEXT (PT_LOPROC + 0)
+#define PT_IA_64_UNWIND (PT_LOPROC + 1)
+#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12)
+#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13)
+#define PT_IA_64_HP_STACK (PT_LOOS + 0x14)
+
+
+#define PF_IA_64_NORECOV 0x80000000
+
+
+#define SHT_IA_64_EXT (SHT_LOPROC + 0)
+#define SHT_IA_64_UNWIND (SHT_LOPROC + 1)
+
+
+#define SHF_IA_64_SHORT 0x10000000
+#define SHF_IA_64_NORECOV 0x20000000
+
+
+#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0)
+#define DT_IA_64_NUM 1
+
+
+#define R_IA64_NONE 0x00
+#define R_IA64_IMM14 0x21
+#define R_IA64_IMM22 0x22
+#define R_IA64_IMM64 0x23
+#define R_IA64_DIR32MSB 0x24
+#define R_IA64_DIR32LSB 0x25
+#define R_IA64_DIR64MSB 0x26
+#define R_IA64_DIR64LSB 0x27
+#define R_IA64_GPREL22 0x2a
+#define R_IA64_GPREL64I 0x2b
+#define R_IA64_GPREL32MSB 0x2c
+#define R_IA64_GPREL32LSB 0x2d
+#define R_IA64_GPREL64MSB 0x2e
+#define R_IA64_GPREL64LSB 0x2f
+#define R_IA64_LTOFF22 0x32
+#define R_IA64_LTOFF64I 0x33
+#define R_IA64_PLTOFF22 0x3a
+#define R_IA64_PLTOFF64I 0x3b
+#define R_IA64_PLTOFF64MSB 0x3e
+#define R_IA64_PLTOFF64LSB 0x3f
+#define R_IA64_FPTR64I 0x43
+#define R_IA64_FPTR32MSB 0x44
+#define R_IA64_FPTR32LSB 0x45
+#define R_IA64_FPTR64MSB 0x46
+#define R_IA64_FPTR64LSB 0x47
+#define R_IA64_PCREL60B 0x48
+#define R_IA64_PCREL21B 0x49
+#define R_IA64_PCREL21M 0x4a
+#define R_IA64_PCREL21F 0x4b
+#define R_IA64_PCREL32MSB 0x4c
+#define R_IA64_PCREL32LSB 0x4d
+#define R_IA64_PCREL64MSB 0x4e
+#define R_IA64_PCREL64LSB 0x4f
+#define R_IA64_LTOFF_FPTR22 0x52
+#define R_IA64_LTOFF_FPTR64I 0x53
+#define R_IA64_LTOFF_FPTR32MSB 0x54
+#define R_IA64_LTOFF_FPTR32LSB 0x55
+#define R_IA64_LTOFF_FPTR64MSB 0x56
+#define R_IA64_LTOFF_FPTR64LSB 0x57
+#define R_IA64_SEGREL32MSB 0x5c
+#define R_IA64_SEGREL32LSB 0x5d
+#define R_IA64_SEGREL64MSB 0x5e
+#define R_IA64_SEGREL64LSB 0x5f
+#define R_IA64_SECREL32MSB 0x64
+#define R_IA64_SECREL32LSB 0x65
+#define R_IA64_SECREL64MSB 0x66
+#define R_IA64_SECREL64LSB 0x67
+#define R_IA64_REL32MSB 0x6c
+#define R_IA64_REL32LSB 0x6d
+#define R_IA64_REL64MSB 0x6e
+#define R_IA64_REL64LSB 0x6f
+#define R_IA64_LTV32MSB 0x74
+#define R_IA64_LTV32LSB 0x75
+#define R_IA64_LTV64MSB 0x76
+#define R_IA64_LTV64LSB 0x77
+#define R_IA64_PCREL21BI 0x79
+#define R_IA64_PCREL22 0x7a
+#define R_IA64_PCREL64I 0x7b
+#define R_IA64_IPLTMSB 0x80
+#define R_IA64_IPLTLSB 0x81
+#define R_IA64_COPY 0x84
+#define R_IA64_SUB 0x85
+#define R_IA64_LTOFF22X 0x86
+#define R_IA64_LDXMOV 0x87
+#define R_IA64_TPREL14 0x91
+#define R_IA64_TPREL22 0x92
+#define R_IA64_TPREL64I 0x93
+#define R_IA64_TPREL64MSB 0x96
+#define R_IA64_TPREL64LSB 0x97
+#define R_IA64_LTOFF_TPREL22 0x9a
+#define R_IA64_DTPMOD64MSB 0xa6
+#define R_IA64_DTPMOD64LSB 0xa7
+#define R_IA64_LTOFF_DTPMOD22 0xaa
+#define R_IA64_DTPREL14 0xb1
+#define R_IA64_DTPREL22 0xb2
+#define R_IA64_DTPREL64I 0xb3
+#define R_IA64_DTPREL32MSB 0xb4
+#define R_IA64_DTPREL32LSB 0xb5
+#define R_IA64_DTPREL64MSB 0xb6
+#define R_IA64_DTPREL64LSB 0xb7
+#define R_IA64_LTOFF_DTPREL22 0xba
+
+
+#define EF_SH_MACH_MASK 0x1f
+#define EF_SH_UNKNOWN 0x0
+#define EF_SH1 0x1
+#define EF_SH2 0x2
+#define EF_SH3 0x3
+#define EF_SH_DSP 0x4
+#define EF_SH3_DSP 0x5
+#define EF_SH4AL_DSP 0x6
+#define EF_SH3E 0x8
+#define EF_SH4 0x9
+#define EF_SH2E 0xb
+#define EF_SH4A 0xc
+#define EF_SH2A 0xd
+#define EF_SH4_NOFPU 0x10
+#define EF_SH4A_NOFPU 0x11
+#define EF_SH4_NOMMU_NOFPU 0x12
+#define EF_SH2A_NOFPU 0x13
+#define EF_SH3_NOMMU 0x14
+#define EF_SH2A_SH4_NOFPU 0x15
+#define EF_SH2A_SH3_NOFPU 0x16
+#define EF_SH2A_SH4 0x17
+#define EF_SH2A_SH3E 0x18
+
+#define R_SH_NONE 0
+#define R_SH_DIR32 1
+#define R_SH_REL32 2
+#define R_SH_DIR8WPN 3
+#define R_SH_IND12W 4
+#define R_SH_DIR8WPL 5
+#define R_SH_DIR8WPZ 6
+#define R_SH_DIR8BP 7
+#define R_SH_DIR8W 8
+#define R_SH_DIR8L 9
+#define R_SH_SWITCH16 25
+#define R_SH_SWITCH32 26
+#define R_SH_USES 27
+#define R_SH_COUNT 28
+#define R_SH_ALIGN 29
+#define R_SH_CODE 30
+#define R_SH_DATA 31
+#define R_SH_LABEL 32
+#define R_SH_SWITCH8 33
+#define R_SH_GNU_VTINHERIT 34
+#define R_SH_GNU_VTENTRY 35
+#define R_SH_TLS_GD_32 144
+#define R_SH_TLS_LD_32 145
+#define R_SH_TLS_LDO_32 146
+#define R_SH_TLS_IE_32 147
+#define R_SH_TLS_LE_32 148
+#define R_SH_TLS_DTPMOD32 149
+#define R_SH_TLS_DTPOFF32 150
+#define R_SH_TLS_TPOFF32 151
+#define R_SH_GOT32 160
+#define R_SH_PLT32 161
+#define R_SH_COPY 162
+#define R_SH_GLOB_DAT 163
+#define R_SH_JMP_SLOT 164
+#define R_SH_RELATIVE 165
+#define R_SH_GOTOFF 166
+#define R_SH_GOTPC 167
+#define R_SH_GOT20 201
+#define R_SH_GOTOFF20 202
+#define R_SH_GOTFUNCDESC 203
+#define R_SH_GOTFUNCDEST20 204
+#define R_SH_GOTOFFFUNCDESC 205
+#define R_SH_GOTOFFFUNCDEST20 206
+#define R_SH_FUNCDESC 207
+#define R_SH_FUNCDESC_VALUE 208
+
+#define R_SH_NUM 256
+
+
+
+#define R_390_NONE 0
+#define R_390_8 1
+#define R_390_12 2
+#define R_390_16 3
+#define R_390_32 4
+#define R_390_PC32 5
+#define R_390_GOT12 6
+#define R_390_GOT32 7
+#define R_390_PLT32 8
+#define R_390_COPY 9
+#define R_390_GLOB_DAT 10
+#define R_390_JMP_SLOT 11
+#define R_390_RELATIVE 12
+#define R_390_GOTOFF32 13
+#define R_390_GOTPC 14
+#define R_390_GOT16 15
+#define R_390_PC16 16
+#define R_390_PC16DBL 17
+#define R_390_PLT16DBL 18
+#define R_390_PC32DBL 19
+#define R_390_PLT32DBL 20
+#define R_390_GOTPCDBL 21
+#define R_390_64 22
+#define R_390_PC64 23
+#define R_390_GOT64 24
+#define R_390_PLT64 25
+#define R_390_GOTENT 26
+#define R_390_GOTOFF16 27
+#define R_390_GOTOFF64 28
+#define R_390_GOTPLT12 29
+#define R_390_GOTPLT16 30
+#define R_390_GOTPLT32 31
+#define R_390_GOTPLT64 32
+#define R_390_GOTPLTENT 33
+#define R_390_PLTOFF16 34
+#define R_390_PLTOFF32 35
+#define R_390_PLTOFF64 36
+#define R_390_TLS_LOAD 37
+#define R_390_TLS_GDCALL 38
+
+#define R_390_TLS_LDCALL 39
+
+#define R_390_TLS_GD32 40
+
+#define R_390_TLS_GD64 41
+
+#define R_390_TLS_GOTIE12 42
+
+#define R_390_TLS_GOTIE32 43
+
+#define R_390_TLS_GOTIE64 44
+
+#define R_390_TLS_LDM32 45
+
+#define R_390_TLS_LDM64 46
+
+#define R_390_TLS_IE32 47
+
+#define R_390_TLS_IE64 48
+
+#define R_390_TLS_IEENT 49
+
+#define R_390_TLS_LE32 50
+
+#define R_390_TLS_LE64 51
+
+#define R_390_TLS_LDO32 52
+
+#define R_390_TLS_LDO64 53
+
+#define R_390_TLS_DTPMOD 54
+#define R_390_TLS_DTPOFF 55
+#define R_390_TLS_TPOFF 56
+
+#define R_390_20 57
+#define R_390_GOT20 58
+#define R_390_GOTPLT20 59
+#define R_390_TLS_GOTIE20 60
+
+
+#define R_390_NUM 61
+
+
+
+#define R_CRIS_NONE 0
+#define R_CRIS_8 1
+#define R_CRIS_16 2
+#define R_CRIS_32 3
+#define R_CRIS_8_PCREL 4
+#define R_CRIS_16_PCREL 5
+#define R_CRIS_32_PCREL 6
+#define R_CRIS_GNU_VTINHERIT 7
+#define R_CRIS_GNU_VTENTRY 8
+#define R_CRIS_COPY 9
+#define R_CRIS_GLOB_DAT 10
+#define R_CRIS_JUMP_SLOT 11
+#define R_CRIS_RELATIVE 12
+#define R_CRIS_16_GOT 13
+#define R_CRIS_32_GOT 14
+#define R_CRIS_16_GOTPLT 15
+#define R_CRIS_32_GOTPLT 16
+#define R_CRIS_32_GOTREL 17
+#define R_CRIS_32_PLT_GOTREL 18
+#define R_CRIS_32_PLT_PCREL 19
+
+#define R_CRIS_NUM 20
+
+
+
+#define R_X86_64_NONE 0
+#define R_X86_64_64 1
+#define R_X86_64_PC32 2
+#define R_X86_64_GOT32 3
+#define R_X86_64_PLT32 4
+#define R_X86_64_COPY 5
+#define R_X86_64_GLOB_DAT 6
+#define R_X86_64_JUMP_SLOT 7
+#define R_X86_64_RELATIVE 8
+#define R_X86_64_GOTPCREL 9
+
+#define R_X86_64_32 10
+#define R_X86_64_32S 11
+#define R_X86_64_16 12
+#define R_X86_64_PC16 13
+#define R_X86_64_8 14
+#define R_X86_64_PC8 15
+#define R_X86_64_DTPMOD64 16
+#define R_X86_64_DTPOFF64 17
+#define R_X86_64_TPOFF64 18
+#define R_X86_64_TLSGD 19
+
+#define R_X86_64_TLSLD 20
+
+#define R_X86_64_DTPOFF32 21
+#define R_X86_64_GOTTPOFF 22
+
+#define R_X86_64_TPOFF32 23
+#define R_X86_64_PC64 24
+#define R_X86_64_GOTOFF64 25
+#define R_X86_64_GOTPC32 26
+#define R_X86_64_GOT64 27
+#define R_X86_64_GOTPCREL64 28
+#define R_X86_64_GOTPC64 29
+#define R_X86_64_GOTPLT64 30
+#define R_X86_64_PLTOFF64 31
+#define R_X86_64_SIZE32 32
+#define R_X86_64_SIZE64 33
+
+#define R_X86_64_GOTPC32_TLSDESC 34
+#define R_X86_64_TLSDESC_CALL 35
+
+#define R_X86_64_TLSDESC 36
+#define R_X86_64_IRELATIVE 37
+#define R_X86_64_RELATIVE64 38
+#define R_X86_64_GOTPCRELX 41
+#define R_X86_64_REX_GOTPCRELX 42
+#define R_X86_64_NUM 43
+
+
+
+#define R_MN10300_NONE 0
+#define R_MN10300_32 1
+#define R_MN10300_16 2
+#define R_MN10300_8 3
+#define R_MN10300_PCREL32 4
+#define R_MN10300_PCREL16 5
+#define R_MN10300_PCREL8 6
+#define R_MN10300_GNU_VTINHERIT 7
+#define R_MN10300_GNU_VTENTRY 8
+#define R_MN10300_24 9
+#define R_MN10300_GOTPC32 10
+#define R_MN10300_GOTPC16 11
+#define R_MN10300_GOTOFF32 12
+#define R_MN10300_GOTOFF24 13
+#define R_MN10300_GOTOFF16 14
+#define R_MN10300_PLT32 15
+#define R_MN10300_PLT16 16
+#define R_MN10300_GOT32 17
+#define R_MN10300_GOT24 18
+#define R_MN10300_GOT16 19
+#define R_MN10300_COPY 20
+#define R_MN10300_GLOB_DAT 21
+#define R_MN10300_JMP_SLOT 22
+#define R_MN10300_RELATIVE 23
+
+#define R_MN10300_NUM 24
+
+
+
+#define R_M32R_NONE 0
+#define R_M32R_16 1
+#define R_M32R_32 2
+#define R_M32R_24 3
+#define R_M32R_10_PCREL 4
+#define R_M32R_18_PCREL 5
+#define R_M32R_26_PCREL 6
+#define R_M32R_HI16_ULO 7
+#define R_M32R_HI16_SLO 8
+#define R_M32R_LO16 9
+#define R_M32R_SDA16 10
+#define R_M32R_GNU_VTINHERIT 11
+#define R_M32R_GNU_VTENTRY 12
+
+#define R_M32R_16_RELA 33
+#define R_M32R_32_RELA 34
+#define R_M32R_24_RELA 35
+#define R_M32R_10_PCREL_RELA 36
+#define R_M32R_18_PCREL_RELA 37
+#define R_M32R_26_PCREL_RELA 38
+#define R_M32R_HI16_ULO_RELA 39
+#define R_M32R_HI16_SLO_RELA 40
+#define R_M32R_LO16_RELA 41
+#define R_M32R_SDA16_RELA 42
+#define R_M32R_RELA_GNU_VTINHERIT 43
+#define R_M32R_RELA_GNU_VTENTRY 44
+#define R_M32R_REL32 45
+
+#define R_M32R_GOT24 48
+#define R_M32R_26_PLTREL 49
+#define R_M32R_COPY 50
+#define R_M32R_GLOB_DAT 51
+#define R_M32R_JMP_SLOT 52
+#define R_M32R_RELATIVE 53
+#define R_M32R_GOTOFF 54
+#define R_M32R_GOTPC24 55
+#define R_M32R_GOT16_HI_ULO 56
+
+#define R_M32R_GOT16_HI_SLO 57
+
+#define R_M32R_GOT16_LO 58
+#define R_M32R_GOTPC_HI_ULO 59
+
+#define R_M32R_GOTPC_HI_SLO 60
+
+#define R_M32R_GOTPC_LO 61
+
+#define R_M32R_GOTOFF_HI_ULO 62
+
+#define R_M32R_GOTOFF_HI_SLO 63
+
+#define R_M32R_GOTOFF_LO 64
+#define R_M32R_NUM 256
+
+#define R_MICROBLAZE_NONE 0
+#define R_MICROBLAZE_32 1
+#define R_MICROBLAZE_32_PCREL 2
+#define R_MICROBLAZE_64_PCREL 3
+#define R_MICROBLAZE_32_PCREL_LO 4
+#define R_MICROBLAZE_64 5
+#define R_MICROBLAZE_32_LO 6
+#define R_MICROBLAZE_SRO32 7
+#define R_MICROBLAZE_SRW32 8
+#define R_MICROBLAZE_64_NONE 9
+#define R_MICROBLAZE_32_SYM_OP_SYM 10
+#define R_MICROBLAZE_GNU_VTINHERIT 11
+#define R_MICROBLAZE_GNU_VTENTRY 12
+#define R_MICROBLAZE_GOTPC_64 13
+#define R_MICROBLAZE_GOT_64 14
+#define R_MICROBLAZE_PLT_64 15
+#define R_MICROBLAZE_REL 16
+#define R_MICROBLAZE_JUMP_SLOT 17
+#define R_MICROBLAZE_GLOB_DAT 18
+#define R_MICROBLAZE_GOTOFF_64 19
+#define R_MICROBLAZE_GOTOFF_32 20
+#define R_MICROBLAZE_COPY 21
+#define R_MICROBLAZE_TLS 22
+#define R_MICROBLAZE_TLSGD 23
+#define R_MICROBLAZE_TLSLD 24
+#define R_MICROBLAZE_TLSDTPMOD32 25
+#define R_MICROBLAZE_TLSDTPREL32 26
+#define R_MICROBLAZE_TLSDTPREL64 27
+#define R_MICROBLAZE_TLSGOTTPREL32 28
+#define R_MICROBLAZE_TLSTPREL32 29
+
+#define DT_NIOS2_GP 0x70000002
+
+#define R_NIOS2_NONE 0
+#define R_NIOS2_S16 1
+#define R_NIOS2_U16 2
+#define R_NIOS2_PCREL16 3
+#define R_NIOS2_CALL26 4
+#define R_NIOS2_IMM5 5
+#define R_NIOS2_CACHE_OPX 6
+#define R_NIOS2_IMM6 7
+#define R_NIOS2_IMM8 8
+#define R_NIOS2_HI16 9
+#define R_NIOS2_LO16 10
+#define R_NIOS2_HIADJ16 11
+#define R_NIOS2_BFD_RELOC_32 12
+#define R_NIOS2_BFD_RELOC_16 13
+#define R_NIOS2_BFD_RELOC_8 14
+#define R_NIOS2_GPREL 15
+#define R_NIOS2_GNU_VTINHERIT 16
+#define R_NIOS2_GNU_VTENTRY 17
+#define R_NIOS2_UJMP 18
+#define R_NIOS2_CJMP 19
+#define R_NIOS2_CALLR 20
+#define R_NIOS2_ALIGN 21
+#define R_NIOS2_GOT16 22
+#define R_NIOS2_CALL16 23
+#define R_NIOS2_GOTOFF_LO 24
+#define R_NIOS2_GOTOFF_HA 25
+#define R_NIOS2_PCREL_LO 26
+#define R_NIOS2_PCREL_HA 27
+#define R_NIOS2_TLS_GD16 28
+#define R_NIOS2_TLS_LDM16 29
+#define R_NIOS2_TLS_LDO16 30
+#define R_NIOS2_TLS_IE16 31
+#define R_NIOS2_TLS_LE16 32
+#define R_NIOS2_TLS_DTPMOD 33
+#define R_NIOS2_TLS_DTPREL 34
+#define R_NIOS2_TLS_TPREL 35
+#define R_NIOS2_COPY 36
+#define R_NIOS2_GLOB_DAT 37
+#define R_NIOS2_JUMP_SLOT 38
+#define R_NIOS2_RELATIVE 39
+#define R_NIOS2_GOTOFF 40
+#define R_NIOS2_CALL26_NOAT 41
+#define R_NIOS2_GOT_LO 42
+#define R_NIOS2_GOT_HA 43
+#define R_NIOS2_CALL_LO 44
+#define R_NIOS2_CALL_HA 45
+
+#define R_OR1K_NONE 0
+#define R_OR1K_32 1
+#define R_OR1K_16 2
+#define R_OR1K_8 3
+#define R_OR1K_LO_16_IN_INSN 4
+#define R_OR1K_HI_16_IN_INSN 5
+#define R_OR1K_INSN_REL_26 6
+#define R_OR1K_GNU_VTENTRY 7
+#define R_OR1K_GNU_VTINHERIT 8
+#define R_OR1K_32_PCREL 9
+#define R_OR1K_16_PCREL 10
+#define R_OR1K_8_PCREL 11
+#define R_OR1K_GOTPC_HI16 12
+#define R_OR1K_GOTPC_LO16 13
+#define R_OR1K_GOT16 14
+#define R_OR1K_PLT26 15
+#define R_OR1K_GOTOFF_HI16 16
+#define R_OR1K_GOTOFF_LO16 17
+#define R_OR1K_COPY 18
+#define R_OR1K_GLOB_DAT 19
+#define R_OR1K_JMP_SLOT 20
+#define R_OR1K_RELATIVE 21
+#define R_OR1K_TLS_GD_HI16 22
+#define R_OR1K_TLS_GD_LO16 23
+#define R_OR1K_TLS_LDM_HI16 24
+#define R_OR1K_TLS_LDM_LO16 25
+#define R_OR1K_TLS_LDO_HI16 26
+#define R_OR1K_TLS_LDO_LO16 27
+#define R_OR1K_TLS_IE_HI16 28
+#define R_OR1K_TLS_IE_LO16 29
+#define R_OR1K_TLS_LE_HI16 30
+#define R_OR1K_TLS_LE_LO16 31
+#define R_OR1K_TLS_TPOFF 32
+#define R_OR1K_TLS_DTPOFF 33
+#define R_OR1K_TLS_DTPMOD 34
+
+#define R_BPF_NONE 0
+#define R_BPF_MAP_FD 1
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
diff --git a/tools/gbafix/gbafix.c b/tools/gbafix/gbafix.c
index 81c8c04c0..9088cdc5f 100644
--- a/tools/gbafix/gbafix.c
+++ b/tools/gbafix/gbafix.c
@@ -1,45 +1,46 @@
/*
- "$Id: gbafix.c,v 1.2 2008-07-30 17:12:51 wntrmute Exp $"
+ "$Id: gbafix.c,v 1.2 2008-07-30 17:12:51 wntrmute Exp $"
- DevkitPro GBA ROM fix utility
+ DevkitPro GBA ROM fix utility
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- USA.
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA.
- Please report all bugs and problems through the bug tracker at
- "http://sourceforge.net/tracker/?group_id=114505&atid=668551".
+ Please report all bugs and problems through the bug tracker at
+ "http://sourceforge.net/tracker/?group_id=114505&atid=668551".
- "$Header: /lvm/shared/ds/ds/cvs/devkitpro-cvsbackup/tools/gba/gbatools/gbafix.c,v 1.2 2008-07-30 17:12:51 wntrmute Exp $"
+ "$Header: /lvm/shared/ds/ds/cvs/devkitpro-cvsbackup/tools/gba/gbatools/gbafix.c,v 1.2 2008-07-30 17:12:51 wntrmute Exp $"
*/
//---------------------------------------------------------------------------------
// gbafix.c
//---------------------------------------------------------------------------------
/*
- Gameboy Advance ROM fixer (by Dark Fader / BlackThunder / WinterMute / Diegoisawesome)
- Validates header of GBA roms.
-
- History
- -------
- v1.06 - added output silencing, (Diegoisawesome)
- v1.05 - added debug offset argument, (Diegoisawesome)
- v1.04 - converted to plain C, (WinterMute)
- v1.03 - header.fixed, header.device_type
- v1.02 - redefined the options (rgbfix style), checksum=0
- v1.01 - fix in parameters
- v1.00 - logo, complement
+ Gameboy Advance ROM fixer (by Dark Fader / BlackThunder / WinterMute / Diegoisawesome)
+ Validates header of GBA roms.
+
+ History
+ -------
+ v1.07 - added support for ELF input, (PikalaxALT)
+ v1.06 - added output silencing, (Diegoisawesome)
+ v1.05 - added debug offset argument, (Diegoisawesome)
+ v1.04 - converted to plain C, (WinterMute)
+ v1.03 - header.fixed, header.device_type
+ v1.02 - redefined the options (rgbfix style), checksum=0
+ v1.01 - fix in parameters
+ v1.00 - logo, complement
*/
#pragma pack(1)
@@ -48,26 +49,27 @@
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
+#include "elf.h"
-#define VER "1.06"
-#define ARGV argv[arg]
-#define VALUE (ARGV+2)
-#define NUMBER strtoul(VALUE, NULL, 0)
+#define VER "1.07"
+#define ARGV argv[arg]
+#define VALUE (ARGV+2)
+#define NUMBER strtoul(VALUE, NULL, 0)
typedef struct
{
- uint32_t start_code; // B instruction
- uint8_t logo[0xA0-0x04]; // logo data
- uint8_t title[0xC]; // game title name
- uint32_t game_code; //
- uint16_t maker_code; //
- uint8_t fixed; // 0x96
- uint8_t unit_code; // 0x00
- uint8_t device_type; // 0x00
- uint8_t unused[7]; //
- uint8_t game_version; // 0x00
- uint8_t complement; // 800000A0..800000BC
- uint16_t checksum; // 0x0000
+ uint32_t start_code; // B instruction
+ uint8_t logo[0xA0-0x04]; // logo data
+ uint8_t title[0xC]; // game title name
+ uint32_t game_code; //
+ uint16_t maker_code; //
+ uint8_t fixed; // 0x96
+ uint8_t unit_code; // 0x00
+ uint8_t device_type; // 0x00
+ uint8_t unused[7]; //
+ uint8_t game_version; // 0x00
+ uint8_t complement; // 800000A0..800000BC
+ uint16_t checksum; // 0x0000
} Header;
@@ -77,55 +79,55 @@ unsigned short checksum_without_header = 0;
const Header good_header =
{
- // start_code
- 0xEA00002E,
- // logo
- { 0x24,0xFF,0xAE,0x51,0x69,0x9A,0xA2,0x21,0x3D,0x84,0x82,0x0A,0x84,0xE4,0x09,0xAD,
- 0x11,0x24,0x8B,0x98,0xC0,0x81,0x7F,0x21,0xA3,0x52,0xBE,0x19,0x93,0x09,0xCE,0x20,
- 0x10,0x46,0x4A,0x4A,0xF8,0x27,0x31,0xEC,0x58,0xC7,0xE8,0x33,0x82,0xE3,0xCE,0xBF,
- 0x85,0xF4,0xDF,0x94,0xCE,0x4B,0x09,0xC1,0x94,0x56,0x8A,0xC0,0x13,0x72,0xA7,0xFC,
- 0x9F,0x84,0x4D,0x73,0xA3,0xCA,0x9A,0x61,0x58,0x97,0xA3,0x27,0xFC,0x03,0x98,0x76,
- 0x23,0x1D,0xC7,0x61,0x03,0x04,0xAE,0x56,0xBF,0x38,0x84,0x00,0x40,0xA7,0x0E,0xFD,
- 0xFF,0x52,0xFE,0x03,0x6F,0x95,0x30,0xF1,0x97,0xFB,0xC0,0x85,0x60,0xD6,0x80,0x25,
- 0xA9,0x63,0xBE,0x03,0x01,0x4E,0x38,0xE2,0xF9,0xA2,0x34,0xFF,0xBB,0x3E,0x03,0x44,
- 0x78,0x00,0x90,0xCB,0x88,0x11,0x3A,0x94,0x65,0xC0,0x7C,0x63,0x87,0xF0,0x3C,0xAF,
- 0xD6,0x25,0xE4,0x8B,0x38,0x0A,0xAC,0x72,0x21,0xD4,0xF8,0x07 } ,
- // title
- { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
- // game code
- 0x00000000,
- // maker code
- 0x3130,
- // fixed
- 0x96,
- // unit_code
- 0x00,
- // device type
- 0x00,
- // unused
- { 0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
- // game version
- 0x00,
- // complement
- 0x00,
- // checksum
- 0x0000
+ // start_code
+ 0xEA00002E,
+ // logo
+ { 0x24,0xFF,0xAE,0x51,0x69,0x9A,0xA2,0x21,0x3D,0x84,0x82,0x0A,0x84,0xE4,0x09,0xAD,
+ 0x11,0x24,0x8B,0x98,0xC0,0x81,0x7F,0x21,0xA3,0x52,0xBE,0x19,0x93,0x09,0xCE,0x20,
+ 0x10,0x46,0x4A,0x4A,0xF8,0x27,0x31,0xEC,0x58,0xC7,0xE8,0x33,0x82,0xE3,0xCE,0xBF,
+ 0x85,0xF4,0xDF,0x94,0xCE,0x4B,0x09,0xC1,0x94,0x56,0x8A,0xC0,0x13,0x72,0xA7,0xFC,
+ 0x9F,0x84,0x4D,0x73,0xA3,0xCA,0x9A,0x61,0x58,0x97,0xA3,0x27,0xFC,0x03,0x98,0x76,
+ 0x23,0x1D,0xC7,0x61,0x03,0x04,0xAE,0x56,0xBF,0x38,0x84,0x00,0x40,0xA7,0x0E,0xFD,
+ 0xFF,0x52,0xFE,0x03,0x6F,0x95,0x30,0xF1,0x97,0xFB,0xC0,0x85,0x60,0xD6,0x80,0x25,
+ 0xA9,0x63,0xBE,0x03,0x01,0x4E,0x38,0xE2,0xF9,0xA2,0x34,0xFF,0xBB,0x3E,0x03,0x44,
+ 0x78,0x00,0x90,0xCB,0x88,0x11,0x3A,0x94,0x65,0xC0,0x7C,0x63,0x87,0xF0,0x3C,0xAF,
+ 0xD6,0x25,0xE4,0x8B,0x38,0x0A,0xAC,0x72,0x21,0xD4,0xF8,0x07 } ,
+ // title
+ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
+ // game code
+ 0x00000000,
+ // maker code
+ 0x3130,
+ // fixed
+ 0x96,
+ // unit_code
+ 0x00,
+ // device type
+ 0x00,
+ // unused
+ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
+ // game version
+ 0x00,
+ // complement
+ 0x00,
+ // checksum
+ 0x0000
};
//---------------------------------------------------------------------------------
char HeaderComplement()
/*---------------------------------------------------------------------------------
- Calculate Header complement check
+ Calculate Header complement check
---------------------------------------------------------------------------------*/
{
- int n;
- char c = 0;
- char *p = (char *)&header + 0xA0;
- for (n=0; n<0xBD-0xA0; n++)
- {
- c += *p++;
- }
- return -(0x19+c);
+ int n;
+ char c = 0;
+ char *p = (char *)&header + 0xA0;
+ for (n=0; n<0xBD-0xA0; n++)
+ {
+ c += *p++;
+ }
+ return -(0x19+c);
}
@@ -133,157 +135,183 @@ char HeaderComplement()
int main(int argc, char *argv[])
//---------------------------------------------------------------------------------
{
- int arg;
- char *argfile = 0;
- FILE *infile;
- int silent = 0;
-
- int size,bit;
-
- // show syntax
- if (argc <= 1)
- {
- printf("GBA ROM fixer v"VER" by Dark Fader / BlackThunder / WinterMute / Diegoisawesome \n");
- printf("Syntax: gbafix <rom.gba> [-p] [-t[title]] [-c<game_code>] [-m<maker_code>] [-r<version>] [-d<debug>] [--silent]\n");
- printf("\n");
- printf("parameters:\n");
- printf(" -p Pad to next exact power of 2. No minimum size!\n");
- printf(" -t[<title>] Patch title. Stripped filename if none given.\n");
- printf(" -c<game_code> Patch game code (four characters)\n");
- printf(" -m<maker_code> Patch maker code (two characters)\n");
- printf(" -r<version> Patch game version (number)\n");
- printf(" -d<debug> Enable debugging handler and set debug entry point (0 or 1)\n");
- printf(" --silent Silence non-error output\n");
- return -1;
- }
-
- // get filename
- for (arg=1; arg<argc; arg++)
- {
- if (ARGV[0] != '-') { argfile=ARGV; }
- if (strncmp("--silent", &ARGV[0], 7) == 0) { silent = 1; }
- }
-
- // check filename
- if (!argfile)
- {
- fprintf(stderr, "Filename needed!\n");
- return -1;
- }
-
- // read file
- infile = fopen(argfile, "r+b");
- if (!infile) { fprintf(stderr, "Error opening input file!\n"); return -1; }
- fseek(infile, 0, SEEK_SET);
- fread(&header, sizeof(header), 1, infile);
-
- // fix some data
- memcpy(header.logo, good_header.logo, sizeof(header.logo));
- memcpy(&header.fixed, &good_header.fixed, sizeof(header.fixed));
- memcpy(&header.device_type, &good_header.device_type, sizeof(header.device_type));
-
- // parse command line
- for (arg=1; arg<argc; arg++)
- {
- if ((ARGV[0] == '-'))
- {
- switch (ARGV[1])
- {
- case 'p': // pad
- {
- fseek(infile, 0, SEEK_END);
- size = ftell(infile);
- for (bit=31; bit>=0; bit--) if (size & (1<<bit)) break;
- if (size != (1<<bit))
- {
- int todo = (1<<(bit+1)) - size;
- while (todo--) fputc(0xFF, infile);
- }
- fseek(infile, 0, SEEK_SET);
- break;
- }
-
- case 't': // title
- {
- char title[256];
- memset(title, 0, sizeof(title));
- if (VALUE[0])
- {
- strncpy(title, VALUE, sizeof(header.title));
- }
- else
- {
- // use filename
- char s[256], *begin=s, *t; strcpy(s, argfile);
- t = strrchr(s, '\\'); if (t) begin = t+1;
- t = strrchr(s, '/'); if (t) begin = t+1;
- t = strrchr(s, '.'); if (t) *t = 0;
- strncpy(title, begin, sizeof(header.title));
- if (!silent) printf("%s\n",begin);
- }
- memcpy(header.title, title, sizeof(header.title)); // copy
- break;
- }
-
- case 'c': // game code
- {
- //if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
- //header.game_code = NUMBER;
- header.game_code = VALUE[0] | VALUE[1]<<8 | VALUE[2]<<16 | VALUE[3]<<24;
- break;
- }
-
- case 'm': // maker code
- {
- //if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
- //header.maker_code = (unsigned short)NUMBER;
- header.maker_code = VALUE[0] | VALUE[1]<<8;
- break;
- }
-
- case 'v': // ignored, compatability with other gbafix
- {
- break;
- }
-
- case 'r': // version
- {
- if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
- header.game_version = (unsigned char)NUMBER;
- break;
- }
-
- case 'd': // debug
- {
- if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
- header.logo[0x9C-0x04] = 0xA5; // debug enable
- header.device_type = (unsigned char)((NUMBER & 1) << 7); // debug handler entry point
- break;
- }
- case '-': // long arguments
- {
- if (strncmp("silent", &ARGV[2], 6) == 0) { continue; }
- break;
- }
- default:
- {
- printf("Invalid option: %s\n", ARGV);
- }
- }
- }
- }
-
- // update complement check & total checksum
- header.complement = 0;
- header.checksum = 0; // must be 0
- header.complement = HeaderComplement();
- //header.checksum = checksum_without_header + HeaderChecksum();
-
- fseek(infile, 0, SEEK_SET);
- fwrite(&header, sizeof(header), 1, infile);
- fclose(infile);
-
- if (!silent) printf("ROM fixed!\n");
-
- return 0;
+ int arg;
+ char *argfile = 0;
+ FILE *infile;
+ int silent = 0;
+ int schedule_pad = 0;
+
+ int size,bit;
+
+ // show syntax
+ if (argc <= 1)
+ {
+ printf("GBA ROM fixer v"VER" by Dark Fader / BlackThunder / WinterMute / Diegoisawesome \n");
+ printf("Syntax: gbafix <rom.gba> [-p] [-t[title]] [-c<game_code>] [-m<maker_code>] [-r<version>] [-d<debug>] [--silent]\n");
+ printf("\n");
+ printf("parameters:\n");
+ printf(" -p Pad to next exact power of 2. No minimum size!\n");
+ printf(" -t[<title>] Patch title. Stripped filename if none given.\n");
+ printf(" -c<game_code> Patch game code (four characters)\n");
+ printf(" -m<maker_code> Patch maker code (two characters)\n");
+ printf(" -r<version> Patch game version (number)\n");
+ printf(" -d<debug> Enable debugging handler and set debug entry point (0 or 1)\n");
+ printf(" --silent Silence non-error output\n");
+ return -1;
+ }
+
+ // get filename
+ for (arg=1; arg<argc; arg++)
+ {
+ if (ARGV[0] != '-') { argfile=ARGV; }
+ if (strncmp("--silent", &ARGV[0], 7) == 0) { silent = 1; }
+ }
+
+ // check filename
+ if (!argfile)
+ {
+ fprintf(stderr, "Filename needed!\n");
+ return -1;
+ }
+
+ uint32_t sh_offset = 0;
+
+ // read file
+ infile = fopen(argfile, "r+b");
+ if (!infile) { fprintf(stderr, "Error opening input file!\n"); return -1; }
+ fseek(infile, sh_offset, SEEK_SET);
+ fread(&header, sizeof(header), 1, infile);
+
+ // elf check
+ Elf32_Shdr secHeader;
+ if (memcmp(&header, ELFMAG, 4) == 0) {
+ Elf32_Ehdr *elfHeader = (Elf32_Ehdr *)&header;
+ fseek(infile, elfHeader->e_shoff, SEEK_SET);
+ int i;
+ for (i = 0; i < elfHeader->e_shnum; i++) {
+ fread(&secHeader, sizeof(Elf32_Shdr), 1, infile);
+ if (secHeader.sh_type == SHT_PROGBITS && secHeader.sh_addr == elfHeader->e_entry) break;
+ }
+ if (i == elfHeader->e_shnum) { fprintf(stderr, "Error finding entry point!\n"); return 1; }
+ fseek(infile, secHeader.sh_offset, SEEK_SET);
+ sh_offset = secHeader.sh_offset;
+ fread(&header, sizeof(header), 1, infile);
+ }
+
+ // fix some data
+ memcpy(header.logo, good_header.logo, sizeof(header.logo));
+ memcpy(&header.fixed, &good_header.fixed, sizeof(header.fixed));
+ memcpy(&header.device_type, &good_header.device_type, sizeof(header.device_type));
+
+ // parse command line
+ for (arg=1; arg<argc; arg++)
+ {
+ if ((ARGV[0] == '-'))
+ {
+ switch (ARGV[1])
+ {
+ case 'p': // pad
+ {
+ schedule_pad = 1;
+ break;
+ }
+
+ case 't': // title
+ {
+ char title[256];
+ memset(title, 0, sizeof(title));
+ if (VALUE[0])
+ {
+ strncpy(title, VALUE, sizeof(header.title));
+ }
+ else
+ {
+ // use filename
+ char s[256], *begin=s, *t; strcpy(s, argfile);
+ t = strrchr(s, '\\'); if (t) begin = t+1;
+ t = strrchr(s, '/'); if (t) begin = t+1;
+ t = strrchr(s, '.'); if (t) *t = 0;
+ strncpy(title, begin, sizeof(header.title));
+ if (!silent) printf("%s\n",begin);
+ }
+ memcpy(header.title, title, sizeof(header.title)); // copy
+ break;
+ }
+
+ case 'c': // game code
+ {
+ //if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
+ //header.game_code = NUMBER;
+ header.game_code = VALUE[0] | VALUE[1]<<8 | VALUE[2]<<16 | VALUE[3]<<24;
+ break;
+ }
+
+ case 'm': // maker code
+ {
+ //if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
+ //header.maker_code = (unsigned short)NUMBER;
+ header.maker_code = VALUE[0] | VALUE[1]<<8;
+ break;
+ }
+
+ case 'v': // ignored, compatability with other gbafix
+ {
+ break;
+ }
+
+ case 'r': // version
+ {
+ if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
+ header.game_version = (unsigned char)NUMBER;
+ break;
+ }
+
+ case 'd': // debug
+ {
+ if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
+ header.logo[0x9C-0x04] = 0xA5; // debug enable
+ header.device_type = (unsigned char)((NUMBER & 1) << 7); // debug handler entry point
+ break;
+ }
+ case '-': // long arguments
+ {
+ if (strncmp("silent", &ARGV[2], 6) == 0) { continue; }
+ break;
+ }
+ default:
+ {
+ printf("Invalid option: %s\n", ARGV);
+ }
+ }
+ }
+ }
+
+ // update complement check & total checksum
+ header.complement = 0;
+ header.checksum = 0; // must be 0
+ header.complement = HeaderComplement();
+ //header.checksum = checksum_without_header + HeaderChecksum();
+
+ if (schedule_pad) {
+ if (sh_offset != 0) {
+ fprintf(stderr, "Warning: Cannot safely pad an ELF\n");
+ } else {
+ fseek(infile, 0, SEEK_END);
+ size = ftell(infile);
+ for (bit=31; bit>=0; bit--) if (size & (1<<bit)) break;
+ if (size != (1<<bit))
+ {
+ int todo = (1<<(bit+1)) - size;
+ while (todo--) fputc(0xFF, infile);
+ }
+ }
+ }
+
+ fseek(infile, sh_offset, SEEK_SET);
+ fwrite(&header, sizeof(header), 1, infile);
+ fclose(infile);
+
+ if (!silent) printf("ROM fixed!\n");
+
+ return 0;
}
diff --git a/tools/jsonproc/.gitignore b/tools/jsonproc/.gitignore
new file mode 100644
index 000000000..a613cf2d7
--- /dev/null
+++ b/tools/jsonproc/.gitignore
@@ -0,0 +1 @@
+jsonproc
diff --git a/tools/jsonproc/Makefile b/tools/jsonproc/Makefile
new file mode 100644
index 000000000..b415e7b41
--- /dev/null
+++ b/tools/jsonproc/Makefile
@@ -0,0 +1,20 @@
+CXX := g++
+
+CXXFLAGS := -Wall -std=c++11 -O2
+
+INCLUDES := -I .
+
+SRCS := jsonproc.cpp
+
+HEADERS := jsonproc.h inja.hpp nlohmann/json.hpp
+
+.PHONY: clean
+
+all: jsonproc
+ @:
+
+jsonproc: $(SRCS) $(HEADERS)
+ $(CXX) $(CXXFLAGS) $(INCLUDES) $(SRCS) -o $@ $(LDFLAGS)
+
+clean:
+ $(RM) jsonproc jsonproc.exe
diff --git a/tools/jsonproc/inja.hpp b/tools/jsonproc/inja.hpp
new file mode 100644
index 000000000..3b7263546
--- /dev/null
+++ b/tools/jsonproc/inja.hpp
@@ -0,0 +1,3396 @@
+// MIT License
+
+// Copyright (c) 2018 lbersch
+
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+
+
+// ---
+
+
+// Copyright (c) 2009-2018 FIRST
+// All rights reserved.
+
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+// * Neither the name of the FIRST nor the
+// names of its contributors may be used to endorse or promote products
+// derived from this software without specific prior written permission.
+
+// THIS SOFTWARE IS PROVIDED BY FIRST AND CONTRIBUTORS``AS IS'' AND ANY
+// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY NONINFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL FIRST OR CONTRIBUTORS BE LIABLE FOR
+// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef PANTOR_INJA_HPP
+#define PANTOR_INJA_HPP
+
+#include <functional>
+#include <iostream>
+#include <map>
+#include <memory>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include <nlohmann/json.hpp>
+
+// #include "environment.hpp"
+#ifndef PANTOR_INJA_ENVIRONMENT_HPP
+#define PANTOR_INJA_ENVIRONMENT_HPP
+
+#include <memory>
+#include <fstream>
+#include <sstream>
+#include <string>
+
+#include <nlohmann/json.hpp>
+
+// #include "config.hpp"
+#ifndef PANTOR_INJA_CONFIG_HPP
+#define PANTOR_INJA_CONFIG_HPP
+
+#include <functional>
+#include <string>
+
+// #include "string_view.hpp"
+// Copyright 2017-2019 by Martin Moene
+//
+// string-view lite, a C++17-like string_view for C++98 and later.
+// For more information see https://github.com/martinmoene/string-view-lite
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+
+#ifndef NONSTD_SV_LITE_H_INCLUDED
+#define NONSTD_SV_LITE_H_INCLUDED
+
+#define string_view_lite_MAJOR 1
+#define string_view_lite_MINOR 1
+#define string_view_lite_PATCH 0
+
+#define string_view_lite_VERSION nssv_STRINGIFY(string_view_lite_MAJOR) "." nssv_STRINGIFY(string_view_lite_MINOR) "." nssv_STRINGIFY(string_view_lite_PATCH)
+
+#define nssv_STRINGIFY( x ) nssv_STRINGIFY_( x )
+#define nssv_STRINGIFY_( x ) #x
+
+// string-view lite configuration:
+
+#define nssv_STRING_VIEW_DEFAULT 0
+#define nssv_STRING_VIEW_NONSTD 1
+#define nssv_STRING_VIEW_STD 2
+
+#if !defined( nssv_CONFIG_SELECT_STRING_VIEW )
+# define nssv_CONFIG_SELECT_STRING_VIEW ( nssv_HAVE_STD_STRING_VIEW ? nssv_STRING_VIEW_STD : nssv_STRING_VIEW_NONSTD )
+#endif
+
+#if defined( nssv_CONFIG_SELECT_STD_STRING_VIEW ) || defined( nssv_CONFIG_SELECT_NONSTD_STRING_VIEW )
+# error nssv_CONFIG_SELECT_STD_STRING_VIEW and nssv_CONFIG_SELECT_NONSTD_STRING_VIEW are deprecated and removed, please use nssv_CONFIG_SELECT_STRING_VIEW=nssv_STRING_VIEW_...
+#endif
+
+#ifndef nssv_CONFIG_STD_SV_OPERATOR
+# define nssv_CONFIG_STD_SV_OPERATOR 0
+#endif
+
+#ifndef nssv_CONFIG_USR_SV_OPERATOR
+# define nssv_CONFIG_USR_SV_OPERATOR 1
+#endif
+
+#ifdef nssv_CONFIG_CONVERSION_STD_STRING
+# define nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS nssv_CONFIG_CONVERSION_STD_STRING
+# define nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS nssv_CONFIG_CONVERSION_STD_STRING
+#endif
+
+#ifndef nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS
+# define nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS 1
+#endif
+
+#ifndef nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+# define nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS 1
+#endif
+
+// Control presence of exception handling (try and auto discover):
+
+#ifndef nssv_CONFIG_NO_EXCEPTIONS
+# if defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)
+# define nssv_CONFIG_NO_EXCEPTIONS 0
+# else
+# define nssv_CONFIG_NO_EXCEPTIONS 1
+# endif
+#endif
+
+// C++ language version detection (C++20 is speculative):
+// Note: VC14.0/1900 (VS2015) lacks too much from C++14.
+
+#ifndef nssv_CPLUSPLUS
+# if defined(_MSVC_LANG ) && !defined(__clang__)
+# define nssv_CPLUSPLUS (_MSC_VER == 1900 ? 201103L : _MSVC_LANG )
+# else
+# define nssv_CPLUSPLUS __cplusplus
+# endif
+#endif
+
+#define nssv_CPP98_OR_GREATER ( nssv_CPLUSPLUS >= 199711L )
+#define nssv_CPP11_OR_GREATER ( nssv_CPLUSPLUS >= 201103L )
+#define nssv_CPP11_OR_GREATER_ ( nssv_CPLUSPLUS >= 201103L )
+#define nssv_CPP14_OR_GREATER ( nssv_CPLUSPLUS >= 201402L )
+#define nssv_CPP17_OR_GREATER ( nssv_CPLUSPLUS >= 201703L )
+#define nssv_CPP20_OR_GREATER ( nssv_CPLUSPLUS >= 202000L )
+
+// use C++17 std::string_view if available and requested:
+
+#if nssv_CPP17_OR_GREATER && defined(__has_include )
+# if __has_include( <string_view> )
+# define nssv_HAVE_STD_STRING_VIEW 1
+# else
+# define nssv_HAVE_STD_STRING_VIEW 0
+# endif
+#else
+# define nssv_HAVE_STD_STRING_VIEW 0
+#endif
+
+#define nssv_USES_STD_STRING_VIEW ( (nssv_CONFIG_SELECT_STRING_VIEW == nssv_STRING_VIEW_STD) || ((nssv_CONFIG_SELECT_STRING_VIEW == nssv_STRING_VIEW_DEFAULT) && nssv_HAVE_STD_STRING_VIEW) )
+
+#define nssv_HAVE_STARTS_WITH ( nssv_CPP20_OR_GREATER || !nssv_USES_STD_STRING_VIEW )
+#define nssv_HAVE_ENDS_WITH nssv_HAVE_STARTS_WITH
+
+//
+// Use C++17 std::string_view:
+//
+
+#if nssv_USES_STD_STRING_VIEW
+
+#include <string_view>
+
+// Extensions for std::string:
+
+#if nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+
+namespace nonstd {
+
+template< class CharT, class Traits, class Allocator = std::allocator<CharT> >
+std::basic_string<CharT, Traits, Allocator>
+to_string( std::basic_string_view<CharT, Traits> v, Allocator const & a = Allocator() )
+{
+ return std::basic_string<CharT,Traits, Allocator>( v.begin(), v.end(), a );
+}
+
+template< class CharT, class Traits, class Allocator >
+std::basic_string_view<CharT, Traits>
+to_string_view( std::basic_string<CharT, Traits, Allocator> const & s )
+{
+ return std::basic_string_view<CharT, Traits>( s.data(), s.size() );
+}
+
+// Literal operators sv and _sv:
+
+#if nssv_CONFIG_STD_SV_OPERATOR
+
+using namespace std::literals::string_view_literals;
+
+#endif
+
+#if nssv_CONFIG_USR_SV_OPERATOR
+
+inline namespace literals {
+inline namespace string_view_literals {
+
+
+constexpr std::string_view operator "" _sv( const char* str, size_t len ) noexcept // (1)
+{
+ return std::string_view{ str, len };
+}
+
+constexpr std::u16string_view operator "" _sv( const char16_t* str, size_t len ) noexcept // (2)
+{
+ return std::u16string_view{ str, len };
+}
+
+constexpr std::u32string_view operator "" _sv( const char32_t* str, size_t len ) noexcept // (3)
+{
+ return std::u32string_view{ str, len };
+}
+
+constexpr std::wstring_view operator "" _sv( const wchar_t* str, size_t len ) noexcept // (4)
+{
+ return std::wstring_view{ str, len };
+}
+
+}} // namespace literals::string_view_literals
+
+#endif // nssv_CONFIG_USR_SV_OPERATOR
+
+} // namespace nonstd
+
+#endif // nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+
+namespace nonstd {
+
+using std::string_view;
+using std::wstring_view;
+using std::u16string_view;
+using std::u32string_view;
+using std::basic_string_view;
+
+// literal "sv" and "_sv", see above
+
+using std::operator==;
+using std::operator!=;
+using std::operator<;
+using std::operator<=;
+using std::operator>;
+using std::operator>=;
+
+using std::operator<<;
+
+} // namespace nonstd
+
+#else // nssv_HAVE_STD_STRING_VIEW
+
+//
+// Before C++17: use string_view lite:
+//
+
+// Compiler versions:
+//
+// MSVC++ 6.0 _MSC_VER == 1200 (Visual Studio 6.0)
+// MSVC++ 7.0 _MSC_VER == 1300 (Visual Studio .NET 2002)
+// MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio .NET 2003)
+// MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005)
+// MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008)
+// MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
+// MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
+// MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
+// MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)
+// MSVC++ 14.1 _MSC_VER >= 1910 (Visual Studio 2017)
+
+#if defined(_MSC_VER ) && !defined(__clang__)
+# define nssv_COMPILER_MSVC_VER (_MSC_VER )
+# define nssv_COMPILER_MSVC_VERSION (_MSC_VER / 10 - 10 * ( 5 + (_MSC_VER < 1900 ) ) )
+#else
+# define nssv_COMPILER_MSVC_VER 0
+# define nssv_COMPILER_MSVC_VERSION 0
+#endif
+
+#define nssv_COMPILER_VERSION( major, minor, patch ) (10 * ( 10 * major + minor) + patch)
+
+#if defined(__clang__)
+# define nssv_COMPILER_CLANG_VERSION nssv_COMPILER_VERSION(__clang_major__, __clang_minor__, __clang_patchlevel__)
+#else
+# define nssv_COMPILER_CLANG_VERSION 0
+#endif
+
+#if defined(__GNUC__) && !defined(__clang__)
+# define nssv_COMPILER_GNUC_VERSION nssv_COMPILER_VERSION(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
+#else
+# define nssv_COMPILER_GNUC_VERSION 0
+#endif
+
+// half-open range [lo..hi):
+#define nssv_BETWEEN( v, lo, hi ) ( (lo) <= (v) && (v) < (hi) )
+
+// Presence of language and library features:
+
+#ifdef _HAS_CPP0X
+# define nssv_HAS_CPP0X _HAS_CPP0X
+#else
+# define nssv_HAS_CPP0X 0
+#endif
+
+// Unless defined otherwise below, consider VC14 as C++11 for variant-lite:
+
+#if nssv_COMPILER_MSVC_VER >= 1900
+# undef nssv_CPP11_OR_GREATER
+# define nssv_CPP11_OR_GREATER 1
+#endif
+
+#define nssv_CPP11_90 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1500)
+#define nssv_CPP11_100 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1600)
+#define nssv_CPP11_110 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1700)
+#define nssv_CPP11_120 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1800)
+#define nssv_CPP11_140 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1900)
+#define nssv_CPP11_141 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1910)
+
+#define nssv_CPP14_000 (nssv_CPP14_OR_GREATER)
+#define nssv_CPP17_000 (nssv_CPP17_OR_GREATER)
+
+// Presence of C++11 language features:
+
+#define nssv_HAVE_CONSTEXPR_11 nssv_CPP11_140
+#define nssv_HAVE_EXPLICIT_CONVERSION nssv_CPP11_140
+#define nssv_HAVE_INLINE_NAMESPACE nssv_CPP11_140
+#define nssv_HAVE_NOEXCEPT nssv_CPP11_140
+#define nssv_HAVE_NULLPTR nssv_CPP11_100
+#define nssv_HAVE_REF_QUALIFIER nssv_CPP11_140
+#define nssv_HAVE_UNICODE_LITERALS nssv_CPP11_140
+#define nssv_HAVE_USER_DEFINED_LITERALS nssv_CPP11_140
+#define nssv_HAVE_WCHAR16_T nssv_CPP11_100
+#define nssv_HAVE_WCHAR32_T nssv_CPP11_100
+
+#if ! ( ( nssv_CPP11 && nssv_COMPILER_CLANG_VERSION ) || nssv_BETWEEN( nssv_COMPILER_CLANG_VERSION, 300, 400 ) )
+# define nssv_HAVE_STD_DEFINED_LITERALS nssv_CPP11_140
+#endif
+
+// Presence of C++14 language features:
+
+#define nssv_HAVE_CONSTEXPR_14 nssv_CPP14_000
+
+// Presence of C++17 language features:
+
+#define nssv_HAVE_NODISCARD nssv_CPP17_000
+
+// Presence of C++ library features:
+
+#define nssv_HAVE_STD_HASH nssv_CPP11_120
+
+// C++ feature usage:
+
+#if nssv_HAVE_CONSTEXPR_11
+# define nssv_constexpr constexpr
+#else
+# define nssv_constexpr /*constexpr*/
+#endif
+
+#if nssv_HAVE_CONSTEXPR_14
+# define nssv_constexpr14 constexpr
+#else
+# define nssv_constexpr14 /*constexpr*/
+#endif
+
+#if nssv_HAVE_EXPLICIT_CONVERSION
+# define nssv_explicit explicit
+#else
+# define nssv_explicit /*explicit*/
+#endif
+
+#if nssv_HAVE_INLINE_NAMESPACE
+# define nssv_inline_ns inline
+#else
+# define nssv_inline_ns /*inline*/
+#endif
+
+#if nssv_HAVE_NOEXCEPT
+# define nssv_noexcept noexcept
+#else
+# define nssv_noexcept /*noexcept*/
+#endif
+
+//#if nssv_HAVE_REF_QUALIFIER
+//# define nssv_ref_qual &
+//# define nssv_refref_qual &&
+//#else
+//# define nssv_ref_qual /*&*/
+//# define nssv_refref_qual /*&&*/
+//#endif
+
+#if nssv_HAVE_NULLPTR
+# define nssv_nullptr nullptr
+#else
+# define nssv_nullptr NULL
+#endif
+
+#if nssv_HAVE_NODISCARD
+# define nssv_nodiscard [[nodiscard]]
+#else
+# define nssv_nodiscard /*[[nodiscard]]*/
+#endif
+
+// Additional includes:
+
+#include <algorithm>
+#include <cassert>
+#include <iterator>
+#include <limits>
+#include <ostream>
+#include <string> // std::char_traits<>
+
+#if ! nssv_CONFIG_NO_EXCEPTIONS
+# include <stdexcept>
+#endif
+
+#if nssv_CPP11_OR_GREATER
+# include <type_traits>
+#endif
+
+// Clang, GNUC, MSVC warning suppression macros:
+
+#if defined(__clang__)
+# pragma clang diagnostic ignored "-Wreserved-user-defined-literal"
+# pragma clang diagnostic push
+# pragma clang diagnostic ignored "-Wuser-defined-literals"
+#elif defined(__GNUC__)
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wliteral-suffix"
+#endif // __clang__
+
+#if nssv_COMPILER_MSVC_VERSION >= 140
+# define nssv_SUPPRESS_MSGSL_WARNING(expr) [[gsl::suppress(expr)]]
+# define nssv_SUPPRESS_MSVC_WARNING(code, descr) __pragma(warning(suppress: code) )
+# define nssv_DISABLE_MSVC_WARNINGS(codes) __pragma(warning(push)) __pragma(warning(disable: codes))
+#else
+# define nssv_SUPPRESS_MSGSL_WARNING(expr)
+# define nssv_SUPPRESS_MSVC_WARNING(code, descr)
+# define nssv_DISABLE_MSVC_WARNINGS(codes)
+#endif
+
+#if defined(__clang__)
+# define nssv_RESTORE_WARNINGS() _Pragma("clang diagnostic pop")
+#elif defined(__GNUC__)
+# define nssv_RESTORE_WARNINGS() _Pragma("GCC diagnostic pop")
+#elif nssv_COMPILER_MSVC_VERSION >= 140
+# define nssv_RESTORE_WARNINGS() __pragma(warning(pop ))
+#else
+# define nssv_RESTORE_WARNINGS()
+#endif
+
+// Suppress the following MSVC (GSL) warnings:
+// - C4455, non-gsl : 'operator ""sv': literal suffix identifiers that do not
+// start with an underscore are reserved
+// - C26472, gsl::t.1 : don't use a static_cast for arithmetic conversions;
+// use brace initialization, gsl::narrow_cast or gsl::narow
+// - C26481: gsl::b.1 : don't use pointer arithmetic. Use span instead
+
+nssv_DISABLE_MSVC_WARNINGS( 4455 26481 26472 )
+//nssv_DISABLE_CLANG_WARNINGS( "-Wuser-defined-literals" )
+//nssv_DISABLE_GNUC_WARNINGS( -Wliteral-suffix )
+
+namespace nonstd { namespace sv_lite {
+
+template
+<
+ class CharT,
+ class Traits = std::char_traits<CharT>
+>
+class basic_string_view;
+
+//
+// basic_string_view:
+//
+
+template
+<
+ class CharT,
+ class Traits /* = std::char_traits<CharT> */
+>
+class basic_string_view
+{
+public:
+ // Member types:
+
+ typedef Traits traits_type;
+ typedef CharT value_type;
+
+ typedef CharT * pointer;
+ typedef CharT const * const_pointer;
+ typedef CharT & reference;
+ typedef CharT const & const_reference;
+
+ typedef const_pointer iterator;
+ typedef const_pointer const_iterator;
+ typedef std::reverse_iterator< const_iterator > reverse_iterator;
+ typedef std::reverse_iterator< const_iterator > const_reverse_iterator;
+
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+
+ // 24.4.2.1 Construction and assignment:
+
+ nssv_constexpr basic_string_view() nssv_noexcept
+ : data_( nssv_nullptr )
+ , size_( 0 )
+ {}
+
+#if nssv_CPP11_OR_GREATER
+ nssv_constexpr basic_string_view( basic_string_view const & other ) nssv_noexcept = default;
+#else
+ nssv_constexpr basic_string_view( basic_string_view const & other ) nssv_noexcept
+ : data_( other.data_)
+ , size_( other.size_)
+ {}
+#endif
+
+ nssv_constexpr basic_string_view( CharT const * s, size_type count )
+ : data_( s )
+ , size_( count )
+ {}
+
+ nssv_constexpr basic_string_view( CharT const * s)
+ : data_( s )
+ , size_( Traits::length(s) )
+ {}
+
+ // Assignment:
+
+#if nssv_CPP11_OR_GREATER
+ nssv_constexpr14 basic_string_view & operator=( basic_string_view const & other ) nssv_noexcept = default;
+#else
+ nssv_constexpr14 basic_string_view & operator=( basic_string_view const & other ) nssv_noexcept
+ {
+ data_ = other.data_;
+ size_ = other.size_;
+ return *this;
+ }
+#endif
+
+ // 24.4.2.2 Iterator support:
+
+ nssv_constexpr const_iterator begin() const nssv_noexcept { return data_; }
+ nssv_constexpr const_iterator end() const nssv_noexcept { return data_ + size_; }
+
+ nssv_constexpr const_iterator cbegin() const nssv_noexcept { return begin(); }
+ nssv_constexpr const_iterator cend() const nssv_noexcept { return end(); }
+
+ nssv_constexpr const_reverse_iterator rbegin() const nssv_noexcept { return const_reverse_iterator( end() ); }
+ nssv_constexpr const_reverse_iterator rend() const nssv_noexcept { return const_reverse_iterator( begin() ); }
+
+ nssv_constexpr const_reverse_iterator crbegin() const nssv_noexcept { return rbegin(); }
+ nssv_constexpr const_reverse_iterator crend() const nssv_noexcept { return rend(); }
+
+ // 24.4.2.3 Capacity:
+
+ nssv_constexpr size_type size() const nssv_noexcept { return size_; }
+ nssv_constexpr size_type length() const nssv_noexcept { return size_; }
+ nssv_constexpr size_type max_size() const nssv_noexcept { return (std::numeric_limits< size_type >::max)(); }
+
+ // since C++20
+ nssv_nodiscard nssv_constexpr bool empty() const nssv_noexcept
+ {
+ return 0 == size_;
+ }
+
+ // 24.4.2.4 Element access:
+
+ nssv_constexpr const_reference operator[]( size_type pos ) const
+ {
+ return data_at( pos );
+ }
+
+ nssv_constexpr14 const_reference at( size_type pos ) const
+ {
+#if nssv_CONFIG_NO_EXCEPTIONS
+ assert( pos < size() );
+#else
+ if ( pos >= size() )
+ {
+ throw std::out_of_range("nonst::string_view::at()");
+ }
+#endif
+ return data_at( pos );
+ }
+
+ nssv_constexpr const_reference front() const { return data_at( 0 ); }
+ nssv_constexpr const_reference back() const { return data_at( size() - 1 ); }
+
+ nssv_constexpr const_pointer data() const nssv_noexcept { return data_; }
+
+ // 24.4.2.5 Modifiers:
+
+ nssv_constexpr14 void remove_prefix( size_type n )
+ {
+ assert( n <= size() );
+ data_ += n;
+ size_ -= n;
+ }
+
+ nssv_constexpr14 void remove_suffix( size_type n )
+ {
+ assert( n <= size() );
+ size_ -= n;
+ }
+
+ nssv_constexpr14 void swap( basic_string_view & other ) nssv_noexcept
+ {
+ using std::swap;
+ swap( data_, other.data_ );
+ swap( size_, other.size_ );
+ }
+
+ // 24.4.2.6 String operations:
+
+ size_type copy( CharT * dest, size_type n, size_type pos = 0 ) const
+ {
+#if nssv_CONFIG_NO_EXCEPTIONS
+ assert( pos <= size() );
+#else
+ if ( pos > size() )
+ {
+ throw std::out_of_range("nonst::string_view::copy()");
+ }
+#endif
+ const size_type rlen = (std::min)( n, size() - pos );
+
+ (void) Traits::copy( dest, data() + pos, rlen );
+
+ return rlen;
+ }
+
+ nssv_constexpr14 basic_string_view substr( size_type pos = 0, size_type n = npos ) const
+ {
+#if nssv_CONFIG_NO_EXCEPTIONS
+ assert( pos <= size() );
+#else
+ if ( pos > size() )
+ {
+ throw std::out_of_range("nonst::string_view::substr()");
+ }
+#endif
+ return basic_string_view( data() + pos, (std::min)( n, size() - pos ) );
+ }
+
+ // compare(), 6x:
+
+ nssv_constexpr14 int compare( basic_string_view other ) const nssv_noexcept // (1)
+ {
+ if ( const int result = Traits::compare( data(), other.data(), (std::min)( size(), other.size() ) ) )
+ return result;
+
+ return size() == other.size() ? 0 : size() < other.size() ? -1 : 1;
+ }
+
+ nssv_constexpr int compare( size_type pos1, size_type n1, basic_string_view other ) const // (2)
+ {
+ return substr( pos1, n1 ).compare( other );
+ }
+
+ nssv_constexpr int compare( size_type pos1, size_type n1, basic_string_view other, size_type pos2, size_type n2 ) const // (3)
+ {
+ return substr( pos1, n1 ).compare( other.substr( pos2, n2 ) );
+ }
+
+ nssv_constexpr int compare( CharT const * s ) const // (4)
+ {
+ return compare( basic_string_view( s ) );
+ }
+
+ nssv_constexpr int compare( size_type pos1, size_type n1, CharT const * s ) const // (5)
+ {
+ return substr( pos1, n1 ).compare( basic_string_view( s ) );
+ }
+
+ nssv_constexpr int compare( size_type pos1, size_type n1, CharT const * s, size_type n2 ) const // (6)
+ {
+ return substr( pos1, n1 ).compare( basic_string_view( s, n2 ) );
+ }
+
+ // 24.4.2.7 Searching:
+
+ // starts_with(), 3x, since C++20:
+
+ nssv_constexpr bool starts_with( basic_string_view v ) const nssv_noexcept // (1)
+ {
+ return size() >= v.size() && compare( 0, v.size(), v ) == 0;
+ }
+
+ nssv_constexpr bool starts_with( CharT c ) const nssv_noexcept // (2)
+ {
+ return starts_with( basic_string_view( &c, 1 ) );
+ }
+
+ nssv_constexpr bool starts_with( CharT const * s ) const // (3)
+ {
+ return starts_with( basic_string_view( s ) );
+ }
+
+ // ends_with(), 3x, since C++20:
+
+ nssv_constexpr bool ends_with( basic_string_view v ) const nssv_noexcept // (1)
+ {
+ return size() >= v.size() && compare( size() - v.size(), npos, v ) == 0;
+ }
+
+ nssv_constexpr bool ends_with( CharT c ) const nssv_noexcept // (2)
+ {
+ return ends_with( basic_string_view( &c, 1 ) );
+ }
+
+ nssv_constexpr bool ends_with( CharT const * s ) const // (3)
+ {
+ return ends_with( basic_string_view( s ) );
+ }
+
+ // find(), 4x:
+
+ nssv_constexpr14 size_type find( basic_string_view v, size_type pos = 0 ) const nssv_noexcept // (1)
+ {
+ return assert( v.size() == 0 || v.data() != nssv_nullptr )
+ , pos >= size()
+ ? npos
+ : to_pos( std::search( cbegin() + pos, cend(), v.cbegin(), v.cend(), Traits::eq ) );
+ }
+
+ nssv_constexpr14 size_type find( CharT c, size_type pos = 0 ) const nssv_noexcept // (2)
+ {
+ return find( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr14 size_type find( CharT const * s, size_type pos, size_type n ) const // (3)
+ {
+ return find( basic_string_view( s, n ), pos );
+ }
+
+ nssv_constexpr14 size_type find( CharT const * s, size_type pos = 0 ) const // (4)
+ {
+ return find( basic_string_view( s ), pos );
+ }
+
+ // rfind(), 4x:
+
+ nssv_constexpr14 size_type rfind( basic_string_view v, size_type pos = npos ) const nssv_noexcept // (1)
+ {
+ if ( size() < v.size() )
+ return npos;
+
+ if ( v.empty() )
+ return (std::min)( size(), pos );
+
+ const_iterator last = cbegin() + (std::min)( size() - v.size(), pos ) + v.size();
+ const_iterator result = std::find_end( cbegin(), last, v.cbegin(), v.cend(), Traits::eq );
+
+ return result != last ? size_type( result - cbegin() ) : npos;
+ }
+
+ nssv_constexpr14 size_type rfind( CharT c, size_type pos = npos ) const nssv_noexcept // (2)
+ {
+ return rfind( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr14 size_type rfind( CharT const * s, size_type pos, size_type n ) const // (3)
+ {
+ return rfind( basic_string_view( s, n ), pos );
+ }
+
+ nssv_constexpr14 size_type rfind( CharT const * s, size_type pos = npos ) const // (4)
+ {
+ return rfind( basic_string_view( s ), pos );
+ }
+
+ // find_first_of(), 4x:
+
+ nssv_constexpr size_type find_first_of( basic_string_view v, size_type pos = 0 ) const nssv_noexcept // (1)
+ {
+ return pos >= size()
+ ? npos
+ : to_pos( std::find_first_of( cbegin() + pos, cend(), v.cbegin(), v.cend(), Traits::eq ) );
+ }
+
+ nssv_constexpr size_type find_first_of( CharT c, size_type pos = 0 ) const nssv_noexcept // (2)
+ {
+ return find_first_of( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr size_type find_first_of( CharT const * s, size_type pos, size_type n ) const // (3)
+ {
+ return find_first_of( basic_string_view( s, n ), pos );
+ }
+
+ nssv_constexpr size_type find_first_of( CharT const * s, size_type pos = 0 ) const // (4)
+ {
+ return find_first_of( basic_string_view( s ), pos );
+ }
+
+ // find_last_of(), 4x:
+
+ nssv_constexpr size_type find_last_of( basic_string_view v, size_type pos = npos ) const nssv_noexcept // (1)
+ {
+ return empty()
+ ? npos
+ : pos >= size()
+ ? find_last_of( v, size() - 1 )
+ : to_pos( std::find_first_of( const_reverse_iterator( cbegin() + pos + 1 ), crend(), v.cbegin(), v.cend(), Traits::eq ) );
+ }
+
+ nssv_constexpr size_type find_last_of( CharT c, size_type pos = npos ) const nssv_noexcept // (2)
+ {
+ return find_last_of( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr size_type find_last_of( CharT const * s, size_type pos, size_type count ) const // (3)
+ {
+ return find_last_of( basic_string_view( s, count ), pos );
+ }
+
+ nssv_constexpr size_type find_last_of( CharT const * s, size_type pos = npos ) const // (4)
+ {
+ return find_last_of( basic_string_view( s ), pos );
+ }
+
+ // find_first_not_of(), 4x:
+
+ nssv_constexpr size_type find_first_not_of( basic_string_view v, size_type pos = 0 ) const nssv_noexcept // (1)
+ {
+ return pos >= size()
+ ? npos
+ : to_pos( std::find_if( cbegin() + pos, cend(), not_in_view( v ) ) );
+ }
+
+ nssv_constexpr size_type find_first_not_of( CharT c, size_type pos = 0 ) const nssv_noexcept // (2)
+ {
+ return find_first_not_of( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr size_type find_first_not_of( CharT const * s, size_type pos, size_type count ) const // (3)
+ {
+ return find_first_not_of( basic_string_view( s, count ), pos );
+ }
+
+ nssv_constexpr size_type find_first_not_of( CharT const * s, size_type pos = 0 ) const // (4)
+ {
+ return find_first_not_of( basic_string_view( s ), pos );
+ }
+
+ // find_last_not_of(), 4x:
+
+ nssv_constexpr size_type find_last_not_of( basic_string_view v, size_type pos = npos ) const nssv_noexcept // (1)
+ {
+ return empty()
+ ? npos
+ : pos >= size()
+ ? find_last_not_of( v, size() - 1 )
+ : to_pos( std::find_if( const_reverse_iterator( cbegin() + pos + 1 ), crend(), not_in_view( v ) ) );
+ }
+
+ nssv_constexpr size_type find_last_not_of( CharT c, size_type pos = npos ) const nssv_noexcept // (2)
+ {
+ return find_last_not_of( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr size_type find_last_not_of( CharT const * s, size_type pos, size_type count ) const // (3)
+ {
+ return find_last_not_of( basic_string_view( s, count ), pos );
+ }
+
+ nssv_constexpr size_type find_last_not_of( CharT const * s, size_type pos = npos ) const // (4)
+ {
+ return find_last_not_of( basic_string_view( s ), pos );
+ }
+
+ // Constants:
+
+#if nssv_CPP17_OR_GREATER
+ static nssv_constexpr size_type npos = size_type(-1);
+#elif nssv_CPP11_OR_GREATER
+ enum : size_type { npos = size_type(-1) };
+#else
+ enum { npos = size_type(-1) };
+#endif
+
+private:
+ struct not_in_view
+ {
+ const basic_string_view v;
+
+ nssv_constexpr not_in_view( basic_string_view v ) : v( v ) {}
+
+ nssv_constexpr bool operator()( CharT c ) const
+ {
+ return npos == v.find_first_of( c );
+ }
+ };
+
+ nssv_constexpr size_type to_pos( const_iterator it ) const
+ {
+ return it == cend() ? npos : size_type( it - cbegin() );
+ }
+
+ nssv_constexpr size_type to_pos( const_reverse_iterator it ) const
+ {
+ return it == crend() ? npos : size_type( crend() - it - 1 );
+ }
+
+ nssv_constexpr const_reference data_at( size_type pos ) const
+ {
+#if nssv_BETWEEN( nssv_COMPILER_GNUC_VERSION, 1, 500 )
+ return data_[pos];
+#else
+ return assert( pos < size() ), data_[pos];
+#endif
+ }
+
+private:
+ const_pointer data_;
+ size_type size_;
+
+public:
+#if nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS
+
+ template< class Allocator >
+ basic_string_view( std::basic_string<CharT, Traits, Allocator> const & s ) nssv_noexcept
+ : data_( s.data() )
+ , size_( s.size() )
+ {}
+
+#if nssv_HAVE_EXPLICIT_CONVERSION
+
+ template< class Allocator >
+ explicit operator std::basic_string<CharT, Traits, Allocator>() const
+ {
+ return to_string( Allocator() );
+ }
+
+#endif // nssv_HAVE_EXPLICIT_CONVERSION
+
+#if nssv_CPP11_OR_GREATER
+
+ template< class Allocator = std::allocator<CharT> >
+ std::basic_string<CharT, Traits, Allocator>
+ to_string( Allocator const & a = Allocator() ) const
+ {
+ return std::basic_string<CharT, Traits, Allocator>( begin(), end(), a );
+ }
+
+#else
+
+ std::basic_string<CharT, Traits>
+ to_string() const
+ {
+ return std::basic_string<CharT, Traits>( begin(), end() );
+ }
+
+ template< class Allocator >
+ std::basic_string<CharT, Traits, Allocator>
+ to_string( Allocator const & a ) const
+ {
+ return std::basic_string<CharT, Traits, Allocator>( begin(), end(), a );
+ }
+
+#endif // nssv_CPP11_OR_GREATER
+
+#endif // nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS
+};
+
+//
+// Non-member functions:
+//
+
+// 24.4.3 Non-member comparison functions:
+// lexicographically compare two string views (function template):
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator== (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) == 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator!= (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) != 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator< (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) < 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator<= (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) <= 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator> (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) > 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator>= (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) >= 0 ; }
+
+// Let S be basic_string_view<CharT, Traits>, and sv be an instance of S.
+// Implementations shall provide sufficient additional overloads marked
+// constexpr and noexcept so that an object t with an implicit conversion
+// to S can be compared according to Table 67.
+
+#if nssv_CPP11_OR_GREATER && ! nssv_BETWEEN( nssv_COMPILER_MSVC_VERSION, 100, 141 )
+
+#define nssv_BASIC_STRING_VIEW_I(T,U) typename std::decay< basic_string_view<T,U> >::type
+
+#if nssv_BETWEEN( nssv_COMPILER_MSVC_VERSION, 140, 150 )
+# define nssv_MSVC_ORDER(x) , int=x
+#else
+# define nssv_MSVC_ORDER(x) /*, int=x*/
+#endif
+
+// ==
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator==(
+ basic_string_view <CharT, Traits> lhs,
+ nssv_BASIC_STRING_VIEW_I(CharT, Traits) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) == 0; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator==(
+ nssv_BASIC_STRING_VIEW_I(CharT, Traits) lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.size() == rhs.size() && lhs.compare( rhs ) == 0; }
+
+// !=
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator!= (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.size() != rhs.size() || lhs.compare( rhs ) != 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator!= (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) != 0 ; }
+
+// <
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator< (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) < 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator< (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) < 0 ; }
+
+// <=
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator<= (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) <= 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator<= (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) <= 0 ; }
+
+// >
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator> (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) > 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator> (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) > 0 ; }
+
+// >=
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator>= (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) >= 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator>= (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) >= 0 ; }
+
+#undef nssv_MSVC_ORDER
+#undef nssv_BASIC_STRING_VIEW_I
+
+#endif // nssv_CPP11_OR_GREATER
+
+// 24.4.4 Inserters and extractors:
+
+namespace detail {
+
+template< class Stream >
+void write_padding( Stream & os, std::streamsize n )
+{
+ for ( std::streamsize i = 0; i < n; ++i )
+ os.rdbuf()->sputc( os.fill() );
+}
+
+template< class Stream, class View >
+Stream & write_to_stream( Stream & os, View const & sv )
+{
+ typename Stream::sentry sentry( os );
+
+ if ( !os )
+ return os;
+
+ const std::streamsize length = static_cast<std::streamsize>( sv.length() );
+
+ // Whether, and how, to pad:
+ const bool pad = ( length < os.width() );
+ const bool left_pad = pad && ( os.flags() & std::ios_base::adjustfield ) == std::ios_base::right;
+
+ if ( left_pad )
+ write_padding( os, os.width() - length );
+
+ // Write span characters:
+ os.rdbuf()->sputn( sv.begin(), length );
+
+ if ( pad && !left_pad )
+ write_padding( os, os.width() - length );
+
+ // Reset output stream width:
+ os.width( 0 );
+
+ return os;
+}
+
+} // namespace detail
+
+template< class CharT, class Traits >
+std::basic_ostream<CharT, Traits> &
+operator<<(
+ std::basic_ostream<CharT, Traits>& os,
+ basic_string_view <CharT, Traits> sv )
+{
+ return detail::write_to_stream( os, sv );
+}
+
+// Several typedefs for common character types are provided:
+
+typedef basic_string_view<char> string_view;
+typedef basic_string_view<wchar_t> wstring_view;
+#if nssv_HAVE_WCHAR16_T
+typedef basic_string_view<char16_t> u16string_view;
+typedef basic_string_view<char32_t> u32string_view;
+#endif
+
+}} // namespace nonstd::sv_lite
+
+//
+// 24.4.6 Suffix for basic_string_view literals:
+//
+
+#if nssv_HAVE_USER_DEFINED_LITERALS
+
+namespace nonstd {
+nssv_inline_ns namespace literals {
+nssv_inline_ns namespace string_view_literals {
+
+#if nssv_CONFIG_STD_SV_OPERATOR && nssv_HAVE_STD_DEFINED_LITERALS
+
+nssv_constexpr nonstd::sv_lite::string_view operator "" sv( const char* str, size_t len ) nssv_noexcept // (1)
+{
+ return nonstd::sv_lite::string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::u16string_view operator "" sv( const char16_t* str, size_t len ) nssv_noexcept // (2)
+{
+ return nonstd::sv_lite::u16string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::u32string_view operator "" sv( const char32_t* str, size_t len ) nssv_noexcept // (3)
+{
+ return nonstd::sv_lite::u32string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::wstring_view operator "" sv( const wchar_t* str, size_t len ) nssv_noexcept // (4)
+{
+ return nonstd::sv_lite::wstring_view{ str, len };
+}
+
+#endif // nssv_CONFIG_STD_SV_OPERATOR && nssv_HAVE_STD_DEFINED_LITERALS
+
+#if nssv_CONFIG_USR_SV_OPERATOR
+
+nssv_constexpr nonstd::sv_lite::string_view operator "" _sv( const char* str, size_t len ) nssv_noexcept // (1)
+{
+ return nonstd::sv_lite::string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::u16string_view operator "" _sv( const char16_t* str, size_t len ) nssv_noexcept // (2)
+{
+ return nonstd::sv_lite::u16string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::u32string_view operator "" _sv( const char32_t* str, size_t len ) nssv_noexcept // (3)
+{
+ return nonstd::sv_lite::u32string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::wstring_view operator "" _sv( const wchar_t* str, size_t len ) nssv_noexcept // (4)
+{
+ return nonstd::sv_lite::wstring_view{ str, len };
+}
+
+#endif // nssv_CONFIG_USR_SV_OPERATOR
+
+}}} // namespace nonstd::literals::string_view_literals
+
+#endif
+
+//
+// Extensions for std::string:
+//
+
+#if nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+
+namespace nonstd {
+namespace sv_lite {
+
+// Exclude MSVC 14 (19.00): it yields ambiguous to_string():
+
+#if nssv_CPP11_OR_GREATER && nssv_COMPILER_MSVC_VERSION != 140
+
+template< class CharT, class Traits, class Allocator = std::allocator<CharT> >
+std::basic_string<CharT, Traits, Allocator>
+to_string( basic_string_view<CharT, Traits> v, Allocator const & a = Allocator() )
+{
+ return std::basic_string<CharT,Traits, Allocator>( v.begin(), v.end(), a );
+}
+
+#else
+
+template< class CharT, class Traits >
+std::basic_string<CharT, Traits>
+to_string( basic_string_view<CharT, Traits> v )
+{
+ return std::basic_string<CharT, Traits>( v.begin(), v.end() );
+}
+
+template< class CharT, class Traits, class Allocator >
+std::basic_string<CharT, Traits, Allocator>
+to_string( basic_string_view<CharT, Traits> v, Allocator const & a )
+{
+ return std::basic_string<CharT, Traits, Allocator>( v.begin(), v.end(), a );
+}
+
+#endif // nssv_CPP11_OR_GREATER
+
+template< class CharT, class Traits, class Allocator >
+basic_string_view<CharT, Traits>
+to_string_view( std::basic_string<CharT, Traits, Allocator> const & s )
+{
+ return basic_string_view<CharT, Traits>( s.data(), s.size() );
+}
+
+}} // namespace nonstd::sv_lite
+
+#endif // nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+
+//
+// make types and algorithms available in namespace nonstd:
+//
+
+namespace nonstd {
+
+using sv_lite::basic_string_view;
+using sv_lite::string_view;
+using sv_lite::wstring_view;
+
+#if nssv_HAVE_WCHAR16_T
+using sv_lite::u16string_view;
+#endif
+#if nssv_HAVE_WCHAR32_T
+using sv_lite::u32string_view;
+#endif
+
+// literal "sv"
+
+using sv_lite::operator==;
+using sv_lite::operator!=;
+using sv_lite::operator<;
+using sv_lite::operator<=;
+using sv_lite::operator>;
+using sv_lite::operator>=;
+
+using sv_lite::operator<<;
+
+#if nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+using sv_lite::to_string;
+using sv_lite::to_string_view;
+#endif
+
+} // namespace nonstd
+
+// 24.4.5 Hash support (C++11):
+
+// Note: The hash value of a string view object is equal to the hash value of
+// the corresponding string object.
+
+#if nssv_HAVE_STD_HASH
+
+#include <functional>
+
+namespace std {
+
+template<>
+struct hash< nonstd::string_view >
+{
+public:
+ std::size_t operator()( nonstd::string_view v ) const nssv_noexcept
+ {
+ return std::hash<std::string>()( std::string( v.data(), v.size() ) );
+ }
+};
+
+template<>
+struct hash< nonstd::wstring_view >
+{
+public:
+ std::size_t operator()( nonstd::wstring_view v ) const nssv_noexcept
+ {
+ return std::hash<std::wstring>()( std::wstring( v.data(), v.size() ) );
+ }
+};
+
+template<>
+struct hash< nonstd::u16string_view >
+{
+public:
+ std::size_t operator()( nonstd::u16string_view v ) const nssv_noexcept
+ {
+ return std::hash<std::u16string>()( std::u16string( v.data(), v.size() ) );
+ }
+};
+
+template<>
+struct hash< nonstd::u32string_view >
+{
+public:
+ std::size_t operator()( nonstd::u32string_view v ) const nssv_noexcept
+ {
+ return std::hash<std::u32string>()( std::u32string( v.data(), v.size() ) );
+ }
+};
+
+} // namespace std
+
+#endif // nssv_HAVE_STD_HASH
+
+nssv_RESTORE_WARNINGS()
+
+#endif // nssv_HAVE_STD_STRING_VIEW
+#endif // NONSTD_SV_LITE_H_INCLUDED
+
+
+
+namespace inja {
+
+enum class ElementNotation {
+ Dot,
+ Pointer
+};
+
+struct LexerConfig {
+ std::string statement_open {"{%"};
+ std::string statement_close {"%}"};
+ std::string line_statement {"##"};
+ std::string expression_open {"{{"};
+ std::string expression_close {"}}"};
+ std::string comment_open {"{#"};
+ std::string comment_close {"#}"};
+ std::string open_chars {"#{"};
+
+ void update_open_chars() {
+ open_chars = "";
+ if (open_chars.find(line_statement[0]) == std::string::npos) {
+ open_chars += line_statement[0];
+ }
+ if (open_chars.find(statement_open[0]) == std::string::npos) {
+ open_chars += statement_open[0];
+ }
+ if (open_chars.find(expression_open[0]) == std::string::npos) {
+ open_chars += expression_open[0];
+ }
+ if (open_chars.find(comment_open[0]) == std::string::npos) {
+ open_chars += comment_open[0];
+ }
+ }
+};
+
+struct ParserConfig {
+ ElementNotation notation {ElementNotation::Dot};
+};
+
+}
+
+#endif // PANTOR_INJA_CONFIG_HPP
+
+// #include "function_storage.hpp"
+#ifndef PANTOR_INJA_FUNCTION_STORAGE_HPP
+#define PANTOR_INJA_FUNCTION_STORAGE_HPP
+
+// #include "bytecode.hpp"
+#ifndef PANTOR_INJA_BYTECODE_HPP
+#define PANTOR_INJA_BYTECODE_HPP
+
+#include <utility>
+
+#include <nlohmann/json.hpp>
+
+// #include "string_view.hpp"
+
+
+
+namespace inja {
+
+using namespace nlohmann;
+
+
+struct Bytecode {
+ enum class Op : uint8_t {
+ Nop,
+ // print StringRef (always immediate)
+ PrintText,
+ // print value
+ PrintValue,
+ // push value onto stack (always immediate)
+ Push,
+
+ // builtin functions
+ // result is pushed to stack
+ // args specify number of arguments
+ // all functions can take their "last" argument either immediate
+ // or popped off stack (e.g. if immediate, it's like the immediate was
+ // just pushed to the stack)
+ Not,
+ And,
+ Or,
+ In,
+ Equal,
+ Greater,
+ GreaterEqual,
+ Less,
+ LessEqual,
+ Different,
+ DivisibleBy,
+ Even,
+ First,
+ Float,
+ Int,
+ Last,
+ Length,
+ Lower,
+ Max,
+ Min,
+ Odd,
+ Range,
+ Result,
+ Round,
+ Sort,
+ Upper,
+ Exists,
+ ExistsInObject,
+ IsBoolean,
+ IsNumber,
+ IsInteger,
+ IsFloat,
+ IsObject,
+ IsArray,
+ IsString,
+ Default,
+
+ // include another template
+ // value is the template name
+ Include,
+
+ // callback function
+ // str is the function name (this means it cannot be a lookup)
+ // args specify number of arguments
+ // as with builtin functions, "last" argument can be immediate
+ Callback,
+
+ // unconditional jump
+ // args is the index of the bytecode to jump to.
+ Jump,
+
+ // conditional jump
+ // value popped off stack is checked for truthyness
+ // if false, args is the index of the bytecode to jump to.
+ // if true, no action is taken (falls through)
+ ConditionalJump,
+
+ // start loop
+ // value popped off stack is what is iterated over
+ // args is index of bytecode after end loop (jumped to if iterable is
+ // empty)
+ // immediate value is key name (for maps)
+ // str is value name
+ StartLoop,
+
+ // end a loop
+ // args is index of the first bytecode in the loop body
+ EndLoop,
+ };
+
+ enum Flag {
+ // location of value for value-taking ops (mask)
+ ValueMask = 0x03,
+ // pop value off stack
+ ValuePop = 0x00,
+ // value is immediate rather than on stack
+ ValueImmediate = 0x01,
+ // lookup immediate str (dot notation)
+ ValueLookupDot = 0x02,
+ // lookup immediate str (json pointer notation)
+ ValueLookupPointer = 0x03,
+ };
+
+ Op op {Op::Nop};
+ uint32_t args: 30;
+ uint32_t flags: 2;
+
+ json value;
+ std::string str;
+
+ Bytecode(): args(0), flags(0) {}
+ explicit Bytecode(Op op, unsigned int args = 0): op(op), args(args), flags(0) {}
+ explicit Bytecode(Op op, nonstd::string_view str, unsigned int flags): op(op), args(0), flags(flags), str(str) {}
+ explicit Bytecode(Op op, json&& value, unsigned int flags): op(op), args(0), flags(flags), value(std::move(value)) {}
+};
+
+} // namespace inja
+
+#endif // PANTOR_INJA_BYTECODE_HPP
+
+// #include "string_view.hpp"
+
+
+
+namespace inja {
+
+using namespace nlohmann;
+
+using Arguments = std::vector<const json*>;
+using CallbackFunction = std::function<json(Arguments& args)>;
+
+class FunctionStorage {
+ public:
+ void add_builtin(nonstd::string_view name, unsigned int num_args, Bytecode::Op op) {
+ auto& data = get_or_new(name, num_args);
+ data.op = op;
+ }
+
+ void add_callback(nonstd::string_view name, unsigned int num_args, const CallbackFunction& function) {
+ auto& data = get_or_new(name, num_args);
+ data.function = function;
+ }
+
+ Bytecode::Op find_builtin(nonstd::string_view name, unsigned int num_args) const {
+ if (auto ptr = get(name, num_args)) {
+ return ptr->op;
+ }
+ return Bytecode::Op::Nop;
+ }
+
+ CallbackFunction find_callback(nonstd::string_view name, unsigned int num_args) const {
+ if (auto ptr = get(name, num_args)) {
+ return ptr->function;
+ }
+ return nullptr;
+ }
+
+ private:
+ struct FunctionData {
+ unsigned int num_args {0};
+ Bytecode::Op op {Bytecode::Op::Nop}; // for builtins
+ CallbackFunction function; // for callbacks
+ };
+
+ FunctionData& get_or_new(nonstd::string_view name, unsigned int num_args) {
+ auto &vec = m_map[static_cast<std::string>(name)];
+ for (auto &i: vec) {
+ if (i.num_args == num_args) return i;
+ }
+ vec.emplace_back();
+ vec.back().num_args = num_args;
+ return vec.back();
+ }
+
+ const FunctionData* get(nonstd::string_view name, unsigned int num_args) const {
+ auto it = m_map.find(static_cast<std::string>(name));
+ if (it == m_map.end()) return nullptr;
+ for (auto &&i: it->second) {
+ if (i.num_args == num_args) return &i;
+ }
+ return nullptr;
+ }
+
+ std::map<std::string, std::vector<FunctionData>> m_map;
+};
+
+}
+
+#endif // PANTOR_INJA_FUNCTION_STORAGE_HPP
+
+// #include "parser.hpp"
+#ifndef PANTOR_INJA_PARSER_HPP
+#define PANTOR_INJA_PARSER_HPP
+
+#include <limits>
+
+// #include "bytecode.hpp"
+
+// #include "config.hpp"
+
+// #include "function_storage.hpp"
+
+// #include "lexer.hpp"
+#ifndef PANTOR_INJA_LEXER_HPP
+#define PANTOR_INJA_LEXER_HPP
+
+#include <cctype>
+#include <locale>
+
+// #include "config.hpp"
+
+// #include "token.hpp"
+#ifndef PANTOR_INJA_TOKEN_HPP
+#define PANTOR_INJA_TOKEN_HPP
+
+// #include "string_view.hpp"
+
+
+
+namespace inja {
+
+struct Token {
+ enum class Kind {
+ Text,
+ ExpressionOpen, // {{
+ ExpressionClose, // }}
+ LineStatementOpen, // ##
+ LineStatementClose, // \n
+ StatementOpen, // {%
+ StatementClose, // %}
+ CommentOpen, // {#
+ CommentClose, // #}
+ Id, // this, this.foo
+ Number, // 1, 2, -1, 5.2, -5.3
+ String, // "this"
+ Comma, // ,
+ Colon, // :
+ LeftParen, // (
+ RightParen, // )
+ LeftBracket, // [
+ RightBracket, // ]
+ LeftBrace, // {
+ RightBrace, // }
+ Equal, // ==
+ GreaterThan, // >
+ GreaterEqual, // >=
+ LessThan, // <
+ LessEqual, // <=
+ NotEqual, // !=
+ Unknown,
+ Eof
+ } kind {Kind::Unknown};
+
+ nonstd::string_view text;
+
+ constexpr Token() = default;
+ constexpr Token(Kind kind, nonstd::string_view text): kind(kind), text(text) {}
+
+ std::string describe() const {
+ switch (kind) {
+ case Kind::Text:
+ return "<text>";
+ case Kind::LineStatementClose:
+ return "<eol>";
+ case Kind::Eof:
+ return "<eof>";
+ default:
+ return static_cast<std::string>(text);
+ }
+ }
+};
+
+}
+
+#endif // PANTOR_INJA_TOKEN_HPP
+
+// #include "utils.hpp"
+#ifndef PANTOR_INJA_UTILS_HPP
+#define PANTOR_INJA_UTILS_HPP
+
+#include <stdexcept>
+
+// #include "string_view.hpp"
+
+
+
+namespace inja {
+
+inline void inja_throw(const std::string& type, const std::string& message) {
+ throw std::runtime_error("[inja.exception." + type + "] " + message);
+}
+
+namespace string_view {
+ inline nonstd::string_view slice(nonstd::string_view view, size_t start, size_t end) {
+ start = std::min(start, view.size());
+ end = std::min(std::max(start, end), view.size());
+ return view.substr(start, end - start); // StringRef(Data + Start, End - Start);
+ }
+
+ inline std::pair<nonstd::string_view, nonstd::string_view> split(nonstd::string_view view, char Separator) {
+ size_t idx = view.find(Separator);
+ if (idx == nonstd::string_view::npos) {
+ return std::make_pair(view, nonstd::string_view());
+ }
+ return std::make_pair(slice(view, 0, idx), slice(view, idx + 1, nonstd::string_view::npos));
+ }
+
+ inline bool starts_with(nonstd::string_view view, nonstd::string_view prefix) {
+ return (view.size() >= prefix.size() && view.compare(0, prefix.size(), prefix) == 0);
+ }
+} // namespace string
+
+} // namespace inja
+
+#endif // PANTOR_INJA_UTILS_HPP
+
+
+
+namespace inja {
+
+class Lexer {
+ enum class State {
+ Text,
+ ExpressionStart,
+ ExpressionBody,
+ LineStart,
+ LineBody,
+ StatementStart,
+ StatementBody,
+ CommentStart,
+ CommentBody
+ } m_state;
+
+ const LexerConfig& m_config;
+ nonstd::string_view m_in;
+ size_t m_tok_start;
+ size_t m_pos;
+
+ public:
+ explicit Lexer(const LexerConfig& config) : m_config(config) {}
+
+ void start(nonstd::string_view in) {
+ m_in = in;
+ m_tok_start = 0;
+ m_pos = 0;
+ m_state = State::Text;
+ }
+
+ Token scan() {
+ m_tok_start = m_pos;
+
+ again:
+ if (m_tok_start >= m_in.size()) return make_token(Token::Kind::Eof);
+
+ switch (m_state) {
+ default:
+ case State::Text: {
+ // fast-scan to first open character
+ size_t open_start = m_in.substr(m_pos).find_first_of(m_config.open_chars);
+ if (open_start == nonstd::string_view::npos) {
+ // didn't find open, return remaining text as text token
+ m_pos = m_in.size();
+ return make_token(Token::Kind::Text);
+ }
+ m_pos += open_start;
+
+ // try to match one of the opening sequences, and get the close
+ nonstd::string_view open_str = m_in.substr(m_pos);
+ if (inja::string_view::starts_with(open_str, m_config.expression_open)) {
+ m_state = State::ExpressionStart;
+ } else if (inja::string_view::starts_with(open_str, m_config.statement_open)) {
+ m_state = State::StatementStart;
+ } else if (inja::string_view::starts_with(open_str, m_config.comment_open)) {
+ m_state = State::CommentStart;
+ } else if ((m_pos == 0 || m_in[m_pos - 1] == '\n') &&
+ inja::string_view::starts_with(open_str, m_config.line_statement)) {
+ m_state = State::LineStart;
+ } else {
+ m_pos += 1; // wasn't actually an opening sequence
+ goto again;
+ }
+ if (m_pos == m_tok_start) goto again; // don't generate empty token
+ return make_token(Token::Kind::Text);
+ }
+ case State::ExpressionStart: {
+ m_state = State::ExpressionBody;
+ m_pos += m_config.expression_open.size();
+ return make_token(Token::Kind::ExpressionOpen);
+ }
+ case State::LineStart: {
+ m_state = State::LineBody;
+ m_pos += m_config.line_statement.size();
+ return make_token(Token::Kind::LineStatementOpen);
+ }
+ case State::StatementStart: {
+ m_state = State::StatementBody;
+ m_pos += m_config.statement_open.size();
+ return make_token(Token::Kind::StatementOpen);
+ }
+ case State::CommentStart: {
+ m_state = State::CommentBody;
+ m_pos += m_config.comment_open.size();
+ return make_token(Token::Kind::CommentOpen);
+ }
+ case State::ExpressionBody:
+ return scan_body(m_config.expression_close, Token::Kind::ExpressionClose);
+ case State::LineBody:
+ return scan_body("\n", Token::Kind::LineStatementClose);
+ case State::StatementBody:
+ return scan_body(m_config.statement_close, Token::Kind::StatementClose);
+ case State::CommentBody: {
+ // fast-scan to comment close
+ size_t end = m_in.substr(m_pos).find(m_config.comment_close);
+ if (end == nonstd::string_view::npos) {
+ m_pos = m_in.size();
+ return make_token(Token::Kind::Eof);
+ }
+ // return the entire comment in the close token
+ m_state = State::Text;
+ m_pos += end + m_config.comment_close.size();
+ return make_token(Token::Kind::CommentClose);
+ }
+ }
+ }
+
+ const LexerConfig& get_config() const { return m_config; }
+
+ private:
+ Token scan_body(nonstd::string_view close, Token::Kind closeKind) {
+ again:
+ // skip whitespace (except for \n as it might be a close)
+ if (m_tok_start >= m_in.size()) return make_token(Token::Kind::Eof);
+ char ch = m_in[m_tok_start];
+ if (ch == ' ' || ch == '\t' || ch == '\r') {
+ m_tok_start += 1;
+ goto again;
+ }
+
+ // check for close
+ if (inja::string_view::starts_with(m_in.substr(m_tok_start), close)) {
+ m_state = State::Text;
+ m_pos = m_tok_start + close.size();
+ return make_token(closeKind);
+ }
+
+ // skip \n
+ if (ch == '\n') {
+ m_tok_start += 1;
+ goto again;
+ }
+
+ m_pos = m_tok_start + 1;
+ if (std::isalpha(ch)) return scan_id();
+ switch (ch) {
+ case ',':
+ return make_token(Token::Kind::Comma);
+ case ':':
+ return make_token(Token::Kind::Colon);
+ case '(':
+ return make_token(Token::Kind::LeftParen);
+ case ')':
+ return make_token(Token::Kind::RightParen);
+ case '[':
+ return make_token(Token::Kind::LeftBracket);
+ case ']':
+ return make_token(Token::Kind::RightBracket);
+ case '{':
+ return make_token(Token::Kind::LeftBrace);
+ case '}':
+ return make_token(Token::Kind::RightBrace);
+ case '>':
+ if (m_pos < m_in.size() && m_in[m_pos] == '=') {
+ m_pos += 1;
+ return make_token(Token::Kind::GreaterEqual);
+ }
+ return make_token(Token::Kind::GreaterThan);
+ case '<':
+ if (m_pos < m_in.size() && m_in[m_pos] == '=') {
+ m_pos += 1;
+ return make_token(Token::Kind::LessEqual);
+ }
+ return make_token(Token::Kind::LessThan);
+ case '=':
+ if (m_pos < m_in.size() && m_in[m_pos] == '=') {
+ m_pos += 1;
+ return make_token(Token::Kind::Equal);
+ }
+ return make_token(Token::Kind::Unknown);
+ case '!':
+ if (m_pos < m_in.size() && m_in[m_pos] == '=') {
+ m_pos += 1;
+ return make_token(Token::Kind::NotEqual);
+ }
+ return make_token(Token::Kind::Unknown);
+ case '\"':
+ return scan_string();
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case '-':
+ return scan_number();
+ case '_':
+ return scan_id();
+ default:
+ return make_token(Token::Kind::Unknown);
+ }
+ }
+
+ Token scan_id() {
+ for (;;) {
+ if (m_pos >= m_in.size()) {
+ break;
+ }
+ char ch = m_in[m_pos];
+ if (!std::isalnum(ch) && ch != '.' && ch != '/' && ch != '_' && ch != '-') {
+ break;
+ }
+ m_pos += 1;
+ }
+ return make_token(Token::Kind::Id);
+ }
+
+ Token scan_number() {
+ for (;;) {
+ if (m_pos >= m_in.size()) {
+ break;
+ }
+ char ch = m_in[m_pos];
+ // be very permissive in lexer (we'll catch errors when conversion happens)
+ if (!std::isdigit(ch) && ch != '.' && ch != 'e' && ch != 'E' && ch != '+' && ch != '-') {
+ break;
+ }
+ m_pos += 1;
+ }
+ return make_token(Token::Kind::Number);
+ }
+
+ Token scan_string() {
+ bool escape {false};
+ for (;;) {
+ if (m_pos >= m_in.size()) break;
+ char ch = m_in[m_pos++];
+ if (ch == '\\') {
+ escape = true;
+ } else if (!escape && ch == m_in[m_tok_start]) {
+ break;
+ } else {
+ escape = false;
+ }
+ }
+ return make_token(Token::Kind::String);
+ }
+
+ Token make_token(Token::Kind kind) const {
+ return Token(kind, string_view::slice(m_in, m_tok_start, m_pos));
+ }
+};
+
+}
+
+#endif // PANTOR_INJA_LEXER_HPP
+
+// #include "template.hpp"
+#ifndef PANTOR_INJA_TEMPLATE_HPP
+#define PANTOR_INJA_TEMPLATE_HPP
+
+#include <string>
+#include <vector>
+
+// #include "bytecode.hpp"
+
+
+
+namespace inja {
+
+struct Template {
+ std::vector<Bytecode> bytecodes;
+ std::string content;
+};
+
+using TemplateStorage = std::map<std::string, Template>;
+
+}
+
+#endif // PANTOR_INJA_TEMPLATE_HPP
+
+// #include "token.hpp"
+
+// #include "utils.hpp"
+
+
+#include <nlohmann/json.hpp>
+
+
+namespace inja {
+
+class ParserStatic {
+ ParserStatic() {
+ functions.add_builtin("default", 2, Bytecode::Op::Default);
+ functions.add_builtin("divisibleBy", 2, Bytecode::Op::DivisibleBy);
+ functions.add_builtin("even", 1, Bytecode::Op::Even);
+ functions.add_builtin("first", 1, Bytecode::Op::First);
+ functions.add_builtin("float", 1, Bytecode::Op::Float);
+ functions.add_builtin("int", 1, Bytecode::Op::Int);
+ functions.add_builtin("last", 1, Bytecode::Op::Last);
+ functions.add_builtin("length", 1, Bytecode::Op::Length);
+ functions.add_builtin("lower", 1, Bytecode::Op::Lower);
+ functions.add_builtin("max", 1, Bytecode::Op::Max);
+ functions.add_builtin("min", 1, Bytecode::Op::Min);
+ functions.add_builtin("odd", 1, Bytecode::Op::Odd);
+ functions.add_builtin("range", 1, Bytecode::Op::Range);
+ functions.add_builtin("round", 2, Bytecode::Op::Round);
+ functions.add_builtin("sort", 1, Bytecode::Op::Sort);
+ functions.add_builtin("upper", 1, Bytecode::Op::Upper);
+ functions.add_builtin("exists", 1, Bytecode::Op::Exists);
+ functions.add_builtin("existsIn", 2, Bytecode::Op::ExistsInObject);
+ functions.add_builtin("isBoolean", 1, Bytecode::Op::IsBoolean);
+ functions.add_builtin("isNumber", 1, Bytecode::Op::IsNumber);
+ functions.add_builtin("isInteger", 1, Bytecode::Op::IsInteger);
+ functions.add_builtin("isFloat", 1, Bytecode::Op::IsFloat);
+ functions.add_builtin("isObject", 1, Bytecode::Op::IsObject);
+ functions.add_builtin("isArray", 1, Bytecode::Op::IsArray);
+ functions.add_builtin("isString", 1, Bytecode::Op::IsString);
+ }
+
+ public:
+ ParserStatic(const ParserStatic&) = delete;
+ ParserStatic& operator=(const ParserStatic&) = delete;
+
+ static const ParserStatic& get_instance() {
+ static ParserStatic inst;
+ return inst;
+ }
+
+ FunctionStorage functions;
+};
+
+class Parser {
+ public:
+ explicit Parser(const ParserConfig& parser_config, const LexerConfig& lexer_config, TemplateStorage& included_templates): m_config(parser_config), m_lexer(lexer_config), m_included_templates(included_templates), m_static(ParserStatic::get_instance()) { }
+
+ bool parse_expression(Template& tmpl) {
+ if (!parse_expression_and(tmpl)) return false;
+ if (m_tok.kind != Token::Kind::Id || m_tok.text != "or") return true;
+ get_next_token();
+ if (!parse_expression_and(tmpl)) return false;
+ append_function(tmpl, Bytecode::Op::Or, 2);
+ return true;
+ }
+
+ bool parse_expression_and(Template& tmpl) {
+ if (!parse_expression_not(tmpl)) return false;
+ if (m_tok.kind != Token::Kind::Id || m_tok.text != "and") return true;
+ get_next_token();
+ if (!parse_expression_not(tmpl)) return false;
+ append_function(tmpl, Bytecode::Op::And, 2);
+ return true;
+ }
+
+ bool parse_expression_not(Template& tmpl) {
+ if (m_tok.kind == Token::Kind::Id && m_tok.text == "not") {
+ get_next_token();
+ if (!parse_expression_not(tmpl)) return false;
+ append_function(tmpl, Bytecode::Op::Not, 1);
+ return true;
+ } else {
+ return parse_expression_comparison(tmpl);
+ }
+ }
+
+ bool parse_expression_comparison(Template& tmpl) {
+ if (!parse_expression_datum(tmpl)) return false;
+ Bytecode::Op op;
+ switch (m_tok.kind) {
+ case Token::Kind::Id:
+ if (m_tok.text == "in")
+ op = Bytecode::Op::In;
+ else
+ return true;
+ break;
+ case Token::Kind::Equal:
+ op = Bytecode::Op::Equal;
+ break;
+ case Token::Kind::GreaterThan:
+ op = Bytecode::Op::Greater;
+ break;
+ case Token::Kind::LessThan:
+ op = Bytecode::Op::Less;
+ break;
+ case Token::Kind::LessEqual:
+ op = Bytecode::Op::LessEqual;
+ break;
+ case Token::Kind::GreaterEqual:
+ op = Bytecode::Op::GreaterEqual;
+ break;
+ case Token::Kind::NotEqual:
+ op = Bytecode::Op::Different;
+ break;
+ default:
+ return true;
+ }
+ get_next_token();
+ if (!parse_expression_datum(tmpl)) return false;
+ append_function(tmpl, op, 2);
+ return true;
+ }
+
+ bool parse_expression_datum(Template& tmpl) {
+ nonstd::string_view json_first;
+ size_t bracket_level = 0;
+ size_t brace_level = 0;
+
+ for (;;) {
+ switch (m_tok.kind) {
+ case Token::Kind::LeftParen: {
+ get_next_token();
+ if (!parse_expression(tmpl)) return false;
+ if (m_tok.kind != Token::Kind::RightParen) {
+ inja_throw("parser_error", "unmatched '('");
+ }
+ get_next_token();
+ return true;
+ }
+ case Token::Kind::Id:
+ get_peek_token();
+ if (m_peek_tok.kind == Token::Kind::LeftParen) {
+ // function call, parse arguments
+ Token func_token = m_tok;
+ get_next_token(); // id
+ get_next_token(); // leftParen
+ unsigned int num_args = 0;
+ if (m_tok.kind == Token::Kind::RightParen) {
+ // no args
+ get_next_token();
+ } else {
+ for (;;) {
+ if (!parse_expression(tmpl)) {
+ inja_throw("parser_error", "expected expression, got '" + m_tok.describe() + "'");
+ }
+ num_args += 1;
+ if (m_tok.kind == Token::Kind::RightParen) {
+ get_next_token();
+ break;
+ }
+ if (m_tok.kind != Token::Kind::Comma) {
+ inja_throw("parser_error", "expected ')' or ',', got '" + m_tok.describe() + "'");
+ }
+ get_next_token();
+ }
+ }
+
+ auto op = m_static.functions.find_builtin(func_token.text, num_args);
+
+ if (op != Bytecode::Op::Nop) {
+ // swap arguments for default(); see comment in RenderTo()
+ if (op == Bytecode::Op::Default)
+ std::swap(tmpl.bytecodes.back(), *(tmpl.bytecodes.rbegin() + 1));
+ append_function(tmpl, op, num_args);
+ return true;
+ } else {
+ append_callback(tmpl, func_token.text, num_args);
+ return true;
+ }
+ } else if (m_tok.text == "true" || m_tok.text == "false" || m_tok.text == "null") {
+ // true, false, null are json literals
+ if (brace_level == 0 && bracket_level == 0) {
+ json_first = m_tok.text;
+ goto returnJson;
+ }
+ break;
+ } else {
+ // normal literal (json read)
+ tmpl.bytecodes.emplace_back(
+ Bytecode::Op::Push, m_tok.text,
+ m_config.notation == ElementNotation::Pointer ? Bytecode::Flag::ValueLookupPointer : Bytecode::Flag::ValueLookupDot);
+ get_next_token();
+ return true;
+ }
+ // json passthrough
+ case Token::Kind::Number:
+ case Token::Kind::String:
+ if (brace_level == 0 && bracket_level == 0) {
+ json_first = m_tok.text;
+ goto returnJson;
+ }
+ break;
+ case Token::Kind::Comma:
+ case Token::Kind::Colon:
+ if (brace_level == 0 && bracket_level == 0) {
+ inja_throw("parser_error", "unexpected token '" + m_tok.describe() + "'");
+ }
+ break;
+ case Token::Kind::LeftBracket:
+ if (brace_level == 0 && bracket_level == 0) {
+ json_first = m_tok.text;
+ }
+ bracket_level += 1;
+ break;
+ case Token::Kind::LeftBrace:
+ if (brace_level == 0 && bracket_level == 0) {
+ json_first = m_tok.text;
+ }
+ brace_level += 1;
+ break;
+ case Token::Kind::RightBracket:
+ if (bracket_level == 0) {
+ inja_throw("parser_error", "unexpected ']'");
+ }
+ --bracket_level;
+ if (brace_level == 0 && bracket_level == 0) goto returnJson;
+ break;
+ case Token::Kind::RightBrace:
+ if (brace_level == 0) {
+ inja_throw("parser_error", "unexpected '}'");
+ }
+ --brace_level;
+ if (brace_level == 0 && bracket_level == 0) goto returnJson;
+ break;
+ default:
+ if (brace_level != 0) {
+ inja_throw("parser_error", "unmatched '{'");
+ }
+ if (bracket_level != 0) {
+ inja_throw("parser_error", "unmatched '['");
+ }
+ return false;
+ }
+
+ get_next_token();
+ }
+
+ returnJson:
+ // bridge across all intermediate tokens
+ nonstd::string_view json_text(json_first.data(), m_tok.text.data() - json_first.data() + m_tok.text.size());
+ tmpl.bytecodes.emplace_back(Bytecode::Op::Push, json::parse(json_text), Bytecode::Flag::ValueImmediate);
+ get_next_token();
+ return true;
+ }
+
+ bool parse_statement(Template& tmpl, nonstd::string_view path) {
+ if (m_tok.kind != Token::Kind::Id) return false;
+
+ if (m_tok.text == "if") {
+ get_next_token();
+
+ // evaluate expression
+ if (!parse_expression(tmpl)) return false;
+
+ // start a new if block on if stack
+ m_if_stack.emplace_back(tmpl.bytecodes.size());
+
+ // conditional jump; destination will be filled in by else or endif
+ tmpl.bytecodes.emplace_back(Bytecode::Op::ConditionalJump);
+ } else if (m_tok.text == "endif") {
+ if (m_if_stack.empty()) {
+ inja_throw("parser_error", "endif without matching if");
+ }
+ auto& if_data = m_if_stack.back();
+ get_next_token();
+
+ // previous conditional jump jumps here
+ if (if_data.prev_cond_jump != std::numeric_limits<unsigned int>::max()) {
+ tmpl.bytecodes[if_data.prev_cond_jump].args = tmpl.bytecodes.size();
+ }
+
+ // update all previous unconditional jumps to here
+ for (unsigned int i: if_data.uncond_jumps) {
+ tmpl.bytecodes[i].args = tmpl.bytecodes.size();
+ }
+
+ // pop if stack
+ m_if_stack.pop_back();
+ } else if (m_tok.text == "else") {
+ if (m_if_stack.empty())
+ inja_throw("parser_error", "else without matching if");
+ auto& if_data = m_if_stack.back();
+ get_next_token();
+
+ // end previous block with unconditional jump to endif; destination will be
+ // filled in by endif
+ if_data.uncond_jumps.push_back(tmpl.bytecodes.size());
+ tmpl.bytecodes.emplace_back(Bytecode::Op::Jump);
+
+ // previous conditional jump jumps here
+ tmpl.bytecodes[if_data.prev_cond_jump].args = tmpl.bytecodes.size();
+ if_data.prev_cond_jump = std::numeric_limits<unsigned int>::max();
+
+ // chained else if
+ if (m_tok.kind == Token::Kind::Id && m_tok.text == "if") {
+ get_next_token();
+
+ // evaluate expression
+ if (!parse_expression(tmpl)) return false;
+
+ // update "previous jump"
+ if_data.prev_cond_jump = tmpl.bytecodes.size();
+
+ // conditional jump; destination will be filled in by else or endif
+ tmpl.bytecodes.emplace_back(Bytecode::Op::ConditionalJump);
+ }
+ } else if (m_tok.text == "for") {
+ get_next_token();
+
+ // options: for a in arr; for a, b in obj
+ if (m_tok.kind != Token::Kind::Id)
+ inja_throw("parser_error", "expected id, got '" + m_tok.describe() + "'");
+ Token value_token = m_tok;
+ get_next_token();
+
+ Token key_token;
+ if (m_tok.kind == Token::Kind::Comma) {
+ get_next_token();
+ if (m_tok.kind != Token::Kind::Id)
+ inja_throw("parser_error", "expected id, got '" + m_tok.describe() + "'");
+ key_token = std::move(value_token);
+ value_token = m_tok;
+ get_next_token();
+ }
+
+ if (m_tok.kind != Token::Kind::Id || m_tok.text != "in")
+ inja_throw("parser_error",
+ "expected 'in', got '" + m_tok.describe() + "'");
+ get_next_token();
+
+ if (!parse_expression(tmpl)) return false;
+
+ m_loop_stack.push_back(tmpl.bytecodes.size());
+
+ tmpl.bytecodes.emplace_back(Bytecode::Op::StartLoop);
+ if (!key_token.text.empty()) {
+ tmpl.bytecodes.back().value = key_token.text;
+ }
+ tmpl.bytecodes.back().str = static_cast<std::string>(value_token.text);
+ } else if (m_tok.text == "endfor") {
+ get_next_token();
+ if (m_loop_stack.empty()) {
+ inja_throw("parser_error", "endfor without matching for");
+ }
+
+ // update loop with EndLoop index (for empty case)
+ tmpl.bytecodes[m_loop_stack.back()].args = tmpl.bytecodes.size();
+
+ tmpl.bytecodes.emplace_back(Bytecode::Op::EndLoop);
+ tmpl.bytecodes.back().args = m_loop_stack.back() + 1; // loop body
+ m_loop_stack.pop_back();
+ } else if (m_tok.text == "include") {
+ get_next_token();
+
+ if (m_tok.kind != Token::Kind::String) {
+ inja_throw("parser_error", "expected string, got '" + m_tok.describe() + "'");
+ }
+
+ // build the relative path
+ json json_name = json::parse(m_tok.text);
+ std::string pathname = static_cast<std::string>(path);
+ pathname += json_name.get_ref<const std::string&>();
+ if (pathname.compare(0, 2, "./") == 0) {
+ pathname.erase(0, 2);
+ }
+ // sys::path::remove_dots(pathname, true, sys::path::Style::posix);
+
+ Template include_template = parse_template(pathname);
+ m_included_templates.emplace(pathname, include_template);
+
+ // generate a reference bytecode
+ tmpl.bytecodes.emplace_back(Bytecode::Op::Include, json(pathname), Bytecode::Flag::ValueImmediate);
+
+ get_next_token();
+ } else {
+ return false;
+ }
+ return true;
+ }
+
+ void append_function(Template& tmpl, Bytecode::Op op, unsigned int num_args) {
+ // we can merge with back-to-back push
+ if (!tmpl.bytecodes.empty()) {
+ Bytecode& last = tmpl.bytecodes.back();
+ if (last.op == Bytecode::Op::Push) {
+ last.op = op;
+ last.args = num_args;
+ return;
+ }
+ }
+
+ // otherwise just add it to the end
+ tmpl.bytecodes.emplace_back(op, num_args);
+ }
+
+ void append_callback(Template& tmpl, nonstd::string_view name, unsigned int num_args) {
+ // we can merge with back-to-back push value (not lookup)
+ if (!tmpl.bytecodes.empty()) {
+ Bytecode& last = tmpl.bytecodes.back();
+ if (last.op == Bytecode::Op::Push &&
+ (last.flags & Bytecode::Flag::ValueMask) == Bytecode::Flag::ValueImmediate) {
+ last.op = Bytecode::Op::Callback;
+ last.args = num_args;
+ last.str = static_cast<std::string>(name);
+ return;
+ }
+ }
+
+ // otherwise just add it to the end
+ tmpl.bytecodes.emplace_back(Bytecode::Op::Callback, num_args);
+ tmpl.bytecodes.back().str = static_cast<std::string>(name);
+ }
+
+ void parse_into(Template& tmpl, nonstd::string_view path) {
+ m_lexer.start(tmpl.content);
+
+ for (;;) {
+ get_next_token();
+ switch (m_tok.kind) {
+ case Token::Kind::Eof:
+ if (!m_if_stack.empty()) inja_throw("parser_error", "unmatched if");
+ if (!m_loop_stack.empty()) inja_throw("parser_error", "unmatched for");
+ return;
+ case Token::Kind::Text:
+ tmpl.bytecodes.emplace_back(Bytecode::Op::PrintText, m_tok.text, 0u);
+ break;
+ case Token::Kind::StatementOpen:
+ get_next_token();
+ if (!parse_statement(tmpl, path)) {
+ inja_throw("parser_error", "expected statement, got '" + m_tok.describe() + "'");
+ }
+ if (m_tok.kind != Token::Kind::StatementClose) {
+ inja_throw("parser_error", "expected statement close, got '" + m_tok.describe() + "'");
+ }
+ break;
+ case Token::Kind::LineStatementOpen:
+ get_next_token();
+ parse_statement(tmpl, path);
+ if (m_tok.kind != Token::Kind::LineStatementClose &&
+ m_tok.kind != Token::Kind::Eof) {
+ inja_throw("parser_error", "expected line statement close, got '" + m_tok.describe() + "'");
+ }
+ break;
+ case Token::Kind::ExpressionOpen:
+ get_next_token();
+ if (!parse_expression(tmpl)) {
+ inja_throw("parser_error", "expected expression, got '" + m_tok.describe() + "'");
+ }
+ append_function(tmpl, Bytecode::Op::PrintValue, 1);
+ if (m_tok.kind != Token::Kind::ExpressionClose) {
+ inja_throw("parser_error", "expected expression close, got '" + m_tok.describe() + "'");
+ }
+ break;
+ case Token::Kind::CommentOpen:
+ get_next_token();
+ if (m_tok.kind != Token::Kind::CommentClose) {
+ inja_throw("parser_error", "expected comment close, got '" + m_tok.describe() + "'");
+ }
+ break;
+ default:
+ inja_throw("parser_error", "unexpected token '" + m_tok.describe() + "'");
+ break;
+ }
+ }
+ }
+
+ Template parse(nonstd::string_view input, nonstd::string_view path) {
+ Template result;
+ result.content = static_cast<std::string>(input);
+ parse_into(result, path);
+ return result;
+ }
+
+ Template parse(nonstd::string_view input) {
+ return parse(input, "./");
+ }
+
+ Template parse_template(nonstd::string_view filename) {
+ Template result;
+ result.content = load_file(filename);
+
+ nonstd::string_view path = filename.substr(0, filename.find_last_of("/\\") + 1);
+ // StringRef path = sys::path::parent_path(filename);
+ Parser(m_config, m_lexer.get_config(), m_included_templates).parse_into(result, path);
+ return result;
+ }
+
+ std::string load_file(nonstd::string_view filename) {
+ std::ifstream file(static_cast<std::string>(filename));
+ std::string text((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
+ return text;
+ }
+
+ private:
+ const ParserConfig& m_config;
+ Lexer m_lexer;
+ Token m_tok;
+ Token m_peek_tok;
+ bool m_have_peek_tok {false};
+ TemplateStorage& m_included_templates;
+ const ParserStatic& m_static;
+
+ struct IfData {
+ unsigned int prev_cond_jump;
+ std::vector<unsigned int> uncond_jumps;
+
+ explicit IfData(unsigned int condJump): prev_cond_jump(condJump) {}
+ };
+
+ std::vector<IfData> m_if_stack;
+ std::vector<unsigned int> m_loop_stack;
+
+ void get_next_token() {
+ if (m_have_peek_tok) {
+ m_tok = m_peek_tok;
+ m_have_peek_tok = false;
+ } else {
+ m_tok = m_lexer.scan();
+ }
+ }
+
+ void get_peek_token() {
+ if (!m_have_peek_tok) {
+ m_peek_tok = m_lexer.scan();
+ m_have_peek_tok = true;
+ }
+ }
+};
+
+} // namespace inja
+
+#endif // PANTOR_INJA_PARSER_HPP
+
+// #include "polyfill.hpp"
+#ifndef PANTOR_INJA_POLYFILL_HPP
+#define PANTOR_INJA_POLYFILL_HPP
+
+
+#if __cplusplus < 201402L
+
+#include <cstddef>
+#include <type_traits>
+#include <utility>
+
+
+namespace stdinja {
+ template<class T> struct _Unique_if {
+ typedef std::unique_ptr<T> _Single_object;
+ };
+
+ template<class T> struct _Unique_if<T[]> {
+ typedef std::unique_ptr<T[]> _Unknown_bound;
+ };
+
+ template<class T, size_t N> struct _Unique_if<T[N]> {
+ typedef void _Known_bound;
+ };
+
+ template<class T, class... Args>
+ typename _Unique_if<T>::_Single_object
+ make_unique(Args&&... args) {
+ return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
+ }
+
+ template<class T>
+ typename _Unique_if<T>::_Unknown_bound
+ make_unique(size_t n) {
+ typedef typename std::remove_extent<T>::type U;
+ return std::unique_ptr<T>(new U[n]());
+ }
+
+ template<class T, class... Args>
+ typename _Unique_if<T>::_Known_bound
+ make_unique(Args&&...) = delete;
+}
+
+#else
+
+namespace stdinja = std;
+
+#endif // memory */
+
+
+#endif // PANTOR_INJA_POLYFILL_HPP
+
+// #include "renderer.hpp"
+#ifndef PANTOR_INJA_RENDERER_HPP
+#define PANTOR_INJA_RENDERER_HPP
+
+#include <algorithm>
+#include <numeric>
+
+#include <nlohmann/json.hpp>
+
+// #include "bytecode.hpp"
+
+// #include "template.hpp"
+
+// #include "utils.hpp"
+
+
+
+namespace inja {
+
+inline nonstd::string_view convert_dot_to_json_pointer(nonstd::string_view dot, std::string& out) {
+ out.clear();
+ do {
+ nonstd::string_view part;
+ std::tie(part, dot) = string_view::split(dot, '.');
+ out.push_back('/');
+ out.append(part.begin(), part.end());
+ } while (!dot.empty());
+ return nonstd::string_view(out.data(), out.size());
+}
+
+class Renderer {
+ std::vector<const json*>& get_args(const Bytecode& bc) {
+ m_tmp_args.clear();
+
+ bool has_imm = ((bc.flags & Bytecode::Flag::ValueMask) != Bytecode::Flag::ValuePop);
+
+ // get args from stack
+ unsigned int pop_args = bc.args;
+ if (has_imm) {
+ pop_args -= 1;
+ }
+
+ for (auto i = std::prev(m_stack.end(), pop_args); i != m_stack.end(); i++) {
+ m_tmp_args.push_back(&(*i));
+ }
+
+ // get immediate arg
+ if (has_imm) {
+ m_tmp_args.push_back(get_imm(bc));
+ }
+
+ return m_tmp_args;
+ }
+
+ void pop_args(const Bytecode& bc) {
+ unsigned int popArgs = bc.args;
+ if ((bc.flags & Bytecode::Flag::ValueMask) != Bytecode::Flag::ValuePop) {
+ popArgs -= 1;
+ }
+ for (unsigned int i = 0; i < popArgs; ++i) {
+ m_stack.pop_back();
+ }
+ }
+
+ const json* get_imm(const Bytecode& bc) {
+ std::string ptr_buffer;
+ nonstd::string_view ptr;
+ switch (bc.flags & Bytecode::Flag::ValueMask) {
+ case Bytecode::Flag::ValuePop:
+ return nullptr;
+ case Bytecode::Flag::ValueImmediate:
+ return &bc.value;
+ case Bytecode::Flag::ValueLookupDot:
+ ptr = convert_dot_to_json_pointer(bc.str, ptr_buffer);
+ break;
+ case Bytecode::Flag::ValueLookupPointer:
+ ptr_buffer += '/';
+ ptr_buffer += bc.str;
+ ptr = ptr_buffer;
+ break;
+ }
+ try {
+ return &m_data->at(json::json_pointer(ptr.data()));
+ } catch (std::exception&) {
+ // try to evaluate as a no-argument callback
+ if (auto callback = m_callbacks.find_callback(bc.str, 0)) {
+ std::vector<const json*> arguments {};
+ m_tmp_val = callback(arguments);
+ return &m_tmp_val;
+ }
+ inja_throw("render_error", "variable '" + static_cast<std::string>(bc.str) + "' not found");
+ return nullptr;
+ }
+ }
+
+ bool truthy(const json& var) const {
+ if (var.empty()) {
+ return false;
+ } else if (var.is_number()) {
+ return (var != 0);
+ } else if (var.is_string()) {
+ return !var.empty();
+ }
+
+ try {
+ return var.get<bool>();
+ } catch (json::type_error& e) {
+ inja_throw("json_error", e.what());
+ throw;
+ }
+ }
+
+ void update_loop_data() {
+ LoopLevel& level = m_loop_stack.back();
+
+ if (level.loop_type == LoopLevel::Type::Array) {
+ level.data[static_cast<std::string>(level.value_name)] = level.values.at(level.index); // *level.it;
+ auto& loopData = level.data["loop"];
+ loopData["index"] = level.index;
+ loopData["index1"] = level.index + 1;
+ loopData["is_first"] = (level.index == 0);
+ loopData["is_last"] = (level.index == level.size - 1);
+ } else {
+ level.data[static_cast<std::string>(level.key_name)] = level.map_it->first;
+ level.data[static_cast<std::string>(level.value_name)] = *level.map_it->second;
+ }
+ }
+
+ const TemplateStorage& m_included_templates;
+ const FunctionStorage& m_callbacks;
+
+ std::vector<json> m_stack;
+
+
+ struct LoopLevel {
+ enum class Type { Map, Array };
+
+ Type loop_type;
+ nonstd::string_view key_name; // variable name for keys
+ nonstd::string_view value_name; // variable name for values
+ json data; // data with loop info added
+
+ json values; // values to iterate over
+
+ // loop over list
+ size_t index; // current list index
+ size_t size; // length of list
+
+ // loop over map
+ using KeyValue = std::pair<nonstd::string_view, json*>;
+ using MapValues = std::vector<KeyValue>;
+ MapValues map_values; // values to iterate over
+ MapValues::iterator map_it; // iterator over values
+
+ };
+
+ std::vector<LoopLevel> m_loop_stack;
+ const json* m_data;
+
+ std::vector<const json*> m_tmp_args;
+ json m_tmp_val;
+
+
+ public:
+ Renderer(const TemplateStorage& included_templates, const FunctionStorage& callbacks): m_included_templates(included_templates), m_callbacks(callbacks) {
+ m_stack.reserve(16);
+ m_tmp_args.reserve(4);
+ m_loop_stack.reserve(16);
+ }
+
+ void render_to(std::ostream& os, const Template& tmpl, const json& data) {
+ m_data = &data;
+
+ for (size_t i = 0; i < tmpl.bytecodes.size(); ++i) {
+ const auto& bc = tmpl.bytecodes[i];
+
+ switch (bc.op) {
+ case Bytecode::Op::Nop: {
+ break;
+ }
+ case Bytecode::Op::PrintText: {
+ os << bc.str;
+ break;
+ }
+ case Bytecode::Op::PrintValue: {
+ const json& val = *get_args(bc)[0];
+ if (val.is_string())
+ os << val.get_ref<const std::string&>();
+ else
+ os << val.dump();
+ // val.dump(os);
+ pop_args(bc);
+ break;
+ }
+ case Bytecode::Op::Push: {
+ m_stack.emplace_back(*get_imm(bc));
+ break;
+ }
+ case Bytecode::Op::Upper: {
+ auto result = get_args(bc)[0]->get<std::string>();
+ std::transform(result.begin(), result.end(), result.begin(), ::toupper);
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Lower: {
+ auto result = get_args(bc)[0]->get<std::string>();
+ std::transform(result.begin(), result.end(), result.begin(), ::tolower);
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Range: {
+ int number = get_args(bc)[0]->get<int>();
+ std::vector<int> result(number);
+ std::iota(std::begin(result), std::end(result), 0);
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Length: {
+ auto result = get_args(bc)[0]->size();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Sort: {
+ auto result = get_args(bc)[0]->get<std::vector<json>>();
+ std::sort(result.begin(), result.end());
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::First: {
+ auto result = get_args(bc)[0]->front();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Last: {
+ auto result = get_args(bc)[0]->back();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Round: {
+ auto args = get_args(bc);
+ double number = args[0]->get<double>();
+ int precision = args[1]->get<int>();
+ pop_args(bc);
+ m_stack.emplace_back(std::round(number * std::pow(10.0, precision)) / std::pow(10.0, precision));
+ break;
+ }
+ case Bytecode::Op::DivisibleBy: {
+ auto args = get_args(bc);
+ int number = args[0]->get<int>();
+ int divisor = args[1]->get<int>();
+ pop_args(bc);
+ m_stack.emplace_back((divisor != 0) && (number % divisor == 0));
+ break;
+ }
+ case Bytecode::Op::Odd: {
+ int number = get_args(bc)[0]->get<int>();
+ pop_args(bc);
+ m_stack.emplace_back(number % 2 != 0);
+ break;
+ }
+ case Bytecode::Op::Even: {
+ int number = get_args(bc)[0]->get<int>();
+ pop_args(bc);
+ m_stack.emplace_back(number % 2 == 0);
+ break;
+ }
+ case Bytecode::Op::Max: {
+ auto args = get_args(bc);
+ auto result = *std::max_element(args[0]->begin(), args[0]->end());
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Min: {
+ auto args = get_args(bc);
+ auto result = *std::min_element(args[0]->begin(), args[0]->end());
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Not: {
+ bool result = !truthy(*get_args(bc)[0]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::And: {
+ auto args = get_args(bc);
+ bool result = truthy(*args[0]) && truthy(*args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Or: {
+ auto args = get_args(bc);
+ bool result = truthy(*args[0]) || truthy(*args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::In: {
+ auto args = get_args(bc);
+ bool result = std::find(args[1]->begin(), args[1]->end(), *args[0]) !=
+ args[1]->end();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Equal: {
+ auto args = get_args(bc);
+ bool result = (*args[0] == *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Greater: {
+ auto args = get_args(bc);
+ bool result = (*args[0] > *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Less: {
+ auto args = get_args(bc);
+ bool result = (*args[0] < *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::GreaterEqual: {
+ auto args = get_args(bc);
+ bool result = (*args[0] >= *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::LessEqual: {
+ auto args = get_args(bc);
+ bool result = (*args[0] <= *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Different: {
+ auto args = get_args(bc);
+ bool result = (*args[0] != *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Float: {
+ double result =
+ std::stod(get_args(bc)[0]->get_ref<const std::string&>());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Int: {
+ int result = std::stoi(get_args(bc)[0]->get_ref<const std::string&>());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Exists: {
+ auto&& name = get_args(bc)[0]->get_ref<const std::string&>();
+ bool result = (data.find(name) != data.end());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::ExistsInObject: {
+ auto args = get_args(bc);
+ auto&& name = args[1]->get_ref<const std::string&>();
+ bool result = (args[0]->find(name) != args[0]->end());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsBoolean: {
+ bool result = get_args(bc)[0]->is_boolean();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsNumber: {
+ bool result = get_args(bc)[0]->is_number();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsInteger: {
+ bool result = get_args(bc)[0]->is_number_integer();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsFloat: {
+ bool result = get_args(bc)[0]->is_number_float();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsObject: {
+ bool result = get_args(bc)[0]->is_object();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsArray: {
+ bool result = get_args(bc)[0]->is_array();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsString: {
+ bool result = get_args(bc)[0]->is_string();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Default: {
+ // default needs to be a bit "magic"; we can't evaluate the first
+ // argument during the push operation, so we swap the arguments during
+ // the parse phase so the second argument is pushed on the stack and
+ // the first argument is in the immediate
+ try {
+ const json* imm = get_imm(bc);
+ // if no exception was raised, replace the stack value with it
+ m_stack.back() = *imm;
+ } catch (std::exception&) {
+ // couldn't read immediate, just leave the stack as is
+ }
+ break;
+ }
+ case Bytecode::Op::Include:
+ Renderer(m_included_templates, m_callbacks).render_to(os, m_included_templates.find(get_imm(bc)->get_ref<const std::string&>())->second, data);
+ break;
+ case Bytecode::Op::Callback: {
+ auto callback = m_callbacks.find_callback(bc.str, bc.args);
+ if (!callback) {
+ inja_throw("render_error", "function '" + static_cast<std::string>(bc.str) + "' (" + std::to_string(static_cast<unsigned int>(bc.args)) + ") not found");
+ }
+ json result = callback(get_args(bc));
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Jump: {
+ i = bc.args - 1; // -1 due to ++i in loop
+ break;
+ }
+ case Bytecode::Op::ConditionalJump: {
+ if (!truthy(m_stack.back())) {
+ i = bc.args - 1; // -1 due to ++i in loop
+ }
+ m_stack.pop_back();
+ break;
+ }
+ case Bytecode::Op::StartLoop: {
+ // jump past loop body if empty
+ if (m_stack.back().empty()) {
+ m_stack.pop_back();
+ i = bc.args; // ++i in loop will take it past EndLoop
+ break;
+ }
+
+ m_loop_stack.emplace_back();
+ LoopLevel& level = m_loop_stack.back();
+ level.value_name = bc.str;
+ level.values = std::move(m_stack.back());
+ level.data = (*m_data);
+ m_stack.pop_back();
+
+ if (bc.value.is_string()) {
+ // map iterator
+ if (!level.values.is_object()) {
+ m_loop_stack.pop_back();
+ inja_throw("render_error", "for key, value requires object");
+ }
+ level.loop_type = LoopLevel::Type::Map;
+ level.key_name = bc.value.get_ref<const std::string&>();
+
+ // sort by key
+ for (auto it = level.values.begin(), end = level.values.end(); it != end; ++it) {
+ level.map_values.emplace_back(it.key(), &it.value());
+ }
+ std::sort(level.map_values.begin(), level.map_values.end(), [](const LoopLevel::KeyValue& a, const LoopLevel::KeyValue& b) { return a.first < b.first; });
+ level.map_it = level.map_values.begin();
+ } else {
+ if (!level.values.is_array()) {
+ m_loop_stack.pop_back();
+ inja_throw("render_error", "type must be array");
+ }
+
+ // list iterator
+ level.loop_type = LoopLevel::Type::Array;
+ level.index = 0;
+ level.size = level.values.size();
+ }
+
+ // provide parent access in nested loop
+ auto parent_loop_it = level.data.find("loop");
+ if (parent_loop_it != level.data.end()) {
+ json loop_copy = *parent_loop_it;
+ (*parent_loop_it)["parent"] = std::move(loop_copy);
+ }
+
+ // set "current" data to loop data
+ m_data = &level.data;
+ update_loop_data();
+ break;
+ }
+ case Bytecode::Op::EndLoop: {
+ if (m_loop_stack.empty()) {
+ inja_throw("render_error", "unexpected state in renderer");
+ }
+ LoopLevel& level = m_loop_stack.back();
+
+ bool done;
+ if (level.loop_type == LoopLevel::Type::Array) {
+ level.index += 1;
+ done = (level.index == level.values.size());
+ } else {
+ level.map_it += 1;
+ done = (level.map_it == level.map_values.end());
+ }
+
+ if (done) {
+ m_loop_stack.pop_back();
+ // set "current" data to outer loop data or main data as appropriate
+ if (!m_loop_stack.empty()) {
+ m_data = &m_loop_stack.back().data;
+ } else {
+ m_data = &data;
+ }
+ break;
+ }
+
+ update_loop_data();
+
+ // jump back to start of loop
+ i = bc.args - 1; // -1 due to ++i in loop
+ break;
+ }
+ default: {
+ inja_throw("render_error", "unknown op in renderer: " + std::to_string(static_cast<unsigned int>(bc.op)));
+ }
+ }
+ }
+ }
+};
+
+} // namespace inja
+
+#endif // PANTOR_INJA_RENDERER_HPP
+
+// #include "string_view.hpp"
+
+// #include "template.hpp"
+
+
+
+namespace inja {
+
+using namespace nlohmann;
+
+class Environment {
+ class Impl {
+ public:
+ std::string input_path;
+ std::string output_path;
+
+ LexerConfig lexer_config;
+ ParserConfig parser_config;
+
+ FunctionStorage callbacks;
+ TemplateStorage included_templates;
+ };
+
+ std::unique_ptr<Impl> m_impl;
+
+ public:
+ Environment(): Environment("./") { }
+
+ explicit Environment(const std::string& global_path): m_impl(stdinja::make_unique<Impl>()) {
+ m_impl->input_path = global_path;
+ m_impl->output_path = global_path;
+ }
+
+ explicit Environment(const std::string& input_path, const std::string& output_path): m_impl(stdinja::make_unique<Impl>()) {
+ m_impl->input_path = input_path;
+ m_impl->output_path = output_path;
+ }
+
+ /// Sets the opener and closer for template statements
+ void set_statement(const std::string& open, const std::string& close) {
+ m_impl->lexer_config.statement_open = open;
+ m_impl->lexer_config.statement_close = close;
+ m_impl->lexer_config.update_open_chars();
+ }
+
+ /// Sets the opener for template line statements
+ void set_line_statement(const std::string& open) {
+ m_impl->lexer_config.line_statement = open;
+ m_impl->lexer_config.update_open_chars();
+ }
+
+ /// Sets the opener and closer for template expressions
+ void set_expression(const std::string& open, const std::string& close) {
+ m_impl->lexer_config.expression_open = open;
+ m_impl->lexer_config.expression_close = close;
+ m_impl->lexer_config.update_open_chars();
+ }
+
+ /// Sets the opener and closer for template comments
+ void set_comment(const std::string& open, const std::string& close) {
+ m_impl->lexer_config.comment_open = open;
+ m_impl->lexer_config.comment_close = close;
+ m_impl->lexer_config.update_open_chars();
+ }
+
+ /// Sets the element notation syntax
+ void set_element_notation(ElementNotation notation) {
+ m_impl->parser_config.notation = notation;
+ }
+
+
+ Template parse(nonstd::string_view input) {
+ Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates);
+ return parser.parse(input);
+ }
+
+ Template parse_template(const std::string& filename) {
+ Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates);
+ return parser.parse_template(m_impl->input_path + static_cast<std::string>(filename));
+ }
+
+ std::string render(nonstd::string_view input, const json& data) {
+ return render(parse(input), data);
+ }
+
+ std::string render(const Template& tmpl, const json& data) {
+ std::stringstream os;
+ render_to(os, tmpl, data);
+ return os.str();
+ }
+
+ std::string render_file(const std::string& filename, const json& data) {
+ return render(parse_template(filename), data);
+ }
+
+ std::string render_file_with_json_file(const std::string& filename, const std::string& filename_data) {
+ const json data = load_json(filename_data);
+ return render_file(filename, data);
+ }
+
+ void write(const std::string& filename, const json& data, const std::string& filename_out) {
+ std::ofstream file(m_impl->output_path + filename_out);
+ file << render_file(filename, data);
+ file.close();
+ }
+
+ void write(const Template& temp, const json& data, const std::string& filename_out) {
+ std::ofstream file(m_impl->output_path + filename_out);
+ file << render(temp, data);
+ file.close();
+ }
+
+ void write_with_json_file(const std::string& filename, const std::string& filename_data, const std::string& filename_out) {
+ const json data = load_json(filename_data);
+ write(filename, data, filename_out);
+ }
+
+ void write_with_json_file(const Template& temp, const std::string& filename_data, const std::string& filename_out) {
+ const json data = load_json(filename_data);
+ write(temp, data, filename_out);
+ }
+
+ std::ostream& render_to(std::ostream& os, const Template& tmpl, const json& data) {
+ Renderer(m_impl->included_templates, m_impl->callbacks).render_to(os, tmpl, data);
+ return os;
+ }
+
+ std::string load_file(const std::string& filename) {
+ Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates);
+ return parser.load_file(m_impl->input_path + filename);
+ }
+
+ json load_json(const std::string& filename) {
+ std::ifstream file(m_impl->input_path + filename);
+ json j;
+ file >> j;
+ return j;
+ }
+
+ void add_callback(const std::string& name, unsigned int numArgs, const CallbackFunction& callback) {
+ m_impl->callbacks.add_callback(name, numArgs, callback);
+ }
+
+ /** Includes a template with a given name into the environment.
+ * Then, a template can be rendered in another template using the
+ * include "<name>" syntax.
+ */
+ void include_template(const std::string& name, const Template& tmpl) {
+ m_impl->included_templates[name] = tmpl;
+ }
+};
+
+/*!
+@brief render with default settings to a string
+*/
+inline std::string render(nonstd::string_view input, const json& data) {
+ return Environment().render(input, data);
+}
+
+/*!
+@brief render with default settings to the given output stream
+*/
+inline void render_to(std::ostream& os, nonstd::string_view input, const json& data) {
+ Environment env;
+ env.render_to(os, env.parse(input), data);
+}
+
+}
+
+#endif // PANTOR_INJA_ENVIRONMENT_HPP
+
+// #include "string_view.hpp"
+
+// #include "template.hpp"
+
+// #include "parser.hpp"
+
+// #include "renderer.hpp"
+
+
+
+#endif // PANTOR_INJA_HPP
diff --git a/tools/jsonproc/jsonproc.cpp b/tools/jsonproc/jsonproc.cpp
new file mode 100644
index 000000000..efe48f39f
--- /dev/null
+++ b/tools/jsonproc/jsonproc.cpp
@@ -0,0 +1,91 @@
+// jsonproc.cpp
+
+#include "jsonproc.h"
+
+#include <map>
+
+#include <string>
+using std::string;
+
+#include <inja.hpp>
+using namespace inja;
+using json = nlohmann::json;
+
+std::map<string, string> customVars;
+
+void set_custom_var(string key, string value)
+{
+ customVars[key] = value;
+}
+
+string get_custom_var(string key)
+{
+ return customVars[key];
+}
+
+int main(int argc, char *argv[])
+{
+ if (argc != 4)
+ FATAL_ERROR("USAGE: jsonproc <json-filepath> <template-filepath> <output-filepath>\n");
+
+ string jsonfilepath = argv[1];
+ string templateFilepath = argv[2];
+ string outputFilepath = argv[3];
+
+ Environment env;
+
+ // Add custom command callbacks.
+ env.add_callback("doNotModifyHeader", 0, [jsonfilepath, templateFilepath](Arguments& args) {
+ return "//\n// DO NOT MODIFY THIS FILE! IT IS AUTO-GENERATED FROM " + jsonfilepath +" and Inja template " + templateFilepath + "\n//\n";
+ });
+
+ env.add_callback("setVar", 2, [=](Arguments& args) {
+ string key = args.at(0)->get<string>();
+ string value = args.at(1)->get<string>();
+ set_custom_var(key, value);
+ return "";
+ });
+
+ env.add_callback("getVar", 1, [=](Arguments& args) {
+ string key = args.at(0)->get<string>();
+ return get_custom_var(key);
+ });
+
+ env.add_callback("concat", 2, [](Arguments& args) {
+ string first = args.at(0)->get<string>();
+ string second = args.at(1)->get<string>();
+ return first + second;
+ });
+
+ env.add_callback("removePrefix", 2, [](Arguments& args) {
+ string rawValue = args.at(0)->get<string>();
+ string prefix = args.at(1)->get<string>();
+ string::size_type i = rawValue.find(prefix);
+ if (i != 0)
+ return rawValue;
+
+ return rawValue.erase(0, prefix.length());
+ });
+
+ // Add custom command callbacks.
+ env.add_callback("removeSuffix", 2, [](Arguments& args) {
+ string rawValue = args.at(0)->get<string>();
+ string suffix = args.at(1)->get<string>();
+ string::size_type i = rawValue.rfind(suffix);
+ if (i == string::npos)
+ return rawValue;
+
+ return rawValue.substr(0, i);
+ });
+
+ try
+ {
+ env.write_with_json_file(templateFilepath, jsonfilepath, outputFilepath);
+ }
+ catch (const std::exception& e)
+ {
+ FATAL_ERROR("JSONPROC_ERROR: %s\n", e.what());
+ }
+
+ return 0;
+}
diff --git a/tools/jsonproc/jsonproc.h b/tools/jsonproc/jsonproc.h
new file mode 100644
index 000000000..575fb3756
--- /dev/null
+++ b/tools/jsonproc/jsonproc.h
@@ -0,0 +1,32 @@
+// jsonproc.h
+
+#ifndef JSONPROC_H
+#define JSONPROC_H
+
+#include <cstdlib>
+#include <cstdio>
+using std::fprintf; using std::exit;
+
+#include <cstdlib>
+
+#ifdef _MSC_VER
+
+#define FATAL_ERROR(format, ...) \
+do \
+{ \
+ fprintf(stderr, format, __VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#else
+
+#define FATAL_ERROR(format, ...) \
+do \
+{ \
+ fprintf(stderr, format, ##__VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#endif // _MSC_VER
+
+#endif // JSONPROC_H
diff --git a/tools/jsonproc/nlohmann/json.hpp b/tools/jsonproc/nlohmann/json.hpp
new file mode 100644
index 000000000..5003a4fa2
--- /dev/null
+++ b/tools/jsonproc/nlohmann/json.hpp
@@ -0,0 +1,20842 @@
+/*
+ __ _____ _____ _____
+ __| | __| | | | JSON for Modern C++
+| | |__ | | | | | | version 3.6.1
+|_____|_____|_____|_|___| https://github.com/nlohmann/json
+
+Licensed under the MIT License <http://opensource.org/licenses/MIT>.
+SPDX-License-Identifier: MIT
+Copyright (c) 2013-2019 Niels Lohmann <http://nlohmann.me>.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+#ifndef INCLUDE_NLOHMANN_JSON_HPP_
+#define INCLUDE_NLOHMANN_JSON_HPP_
+
+#define NLOHMANN_JSON_VERSION_MAJOR 3
+#define NLOHMANN_JSON_VERSION_MINOR 6
+#define NLOHMANN_JSON_VERSION_PATCH 1
+
+#include <algorithm> // all_of, find, for_each
+#include <cassert> // assert
+#include <ciso646> // and, not, or
+#include <cstddef> // nullptr_t, ptrdiff_t, size_t
+#include <functional> // hash, less
+#include <initializer_list> // initializer_list
+#include <iosfwd> // istream, ostream
+#include <iterator> // random_access_iterator_tag
+#include <memory> // unique_ptr
+#include <numeric> // accumulate
+#include <string> // string, stoi, to_string
+#include <utility> // declval, forward, move, pair, swap
+#include <vector> // vector
+
+// #include <nlohmann/adl_serializer.hpp>
+
+
+#include <utility>
+
+// #include <nlohmann/detail/conversions/from_json.hpp>
+
+
+#include <algorithm> // transform
+#include <array> // array
+#include <ciso646> // and, not
+#include <forward_list> // forward_list
+#include <iterator> // inserter, front_inserter, end
+#include <map> // map
+#include <string> // string
+#include <tuple> // tuple, make_tuple
+#include <type_traits> // is_arithmetic, is_same, is_enum, underlying_type, is_convertible
+#include <unordered_map> // unordered_map
+#include <utility> // pair, declval
+#include <valarray> // valarray
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+
+#include <exception> // exception
+#include <stdexcept> // runtime_error
+#include <string> // to_string
+
+// #include <nlohmann/detail/input/position_t.hpp>
+
+
+#include <cstddef> // size_t
+
+namespace nlohmann
+{
+namespace detail
+{
+/// struct to capture the start position of the current token
+struct position_t
+{
+ /// the total number of characters read
+ std::size_t chars_read_total = 0;
+ /// the number of characters read in the current line
+ std::size_t chars_read_current_line = 0;
+ /// the number of lines read
+ std::size_t lines_read = 0;
+
+ /// conversion to size_t to preserve SAX interface
+ constexpr operator size_t() const
+ {
+ return chars_read_total;
+ }
+};
+
+} // namespace detail
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+namespace detail
+{
+////////////////
+// exceptions //
+////////////////
+
+/*!
+@brief general exception of the @ref basic_json class
+
+This class is an extension of `std::exception` objects with a member @a id for
+exception ids. It is used as the base class for all exceptions thrown by the
+@ref basic_json class. This class can hence be used as "wildcard" to catch
+exceptions.
+
+Subclasses:
+- @ref parse_error for exceptions indicating a parse error
+- @ref invalid_iterator for exceptions indicating errors with iterators
+- @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+- @ref out_of_range for exceptions indicating access out of the defined range
+- @ref other_error for exceptions indicating other library errors
+
+@internal
+@note To have nothrow-copy-constructible exceptions, we internally use
+ `std::runtime_error` which can cope with arbitrary-length error messages.
+ Intermediate strings are built with static functions and then passed to
+ the actual constructor.
+@endinternal
+
+@liveexample{The following code shows how arbitrary library exceptions can be
+caught.,exception}
+
+@since version 3.0.0
+*/
+class exception : public std::exception
+{
+ public:
+ /// returns the explanatory string
+ const char* what() const noexcept override
+ {
+ return m.what();
+ }
+
+ /// the id of the exception
+ const int id;
+
+ protected:
+ exception(int id_, const char* what_arg) : id(id_), m(what_arg) {}
+
+ static std::string name(const std::string& ename, int id_)
+ {
+ return "[json.exception." + ename + "." + std::to_string(id_) + "] ";
+ }
+
+ private:
+ /// an exception object as storage for error messages
+ std::runtime_error m;
+};
+
+/*!
+@brief exception indicating a parse error
+
+This exception is thrown by the library when a parse error occurs. Parse errors
+can occur during the deserialization of JSON text, CBOR, MessagePack, as well
+as when using JSON Patch.
+
+Member @a byte holds the byte index of the last read character in the input
+file.
+
+Exceptions have ids 1xx.
+
+name / id | example message | description
+------------------------------ | --------------- | -------------------------
+json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position.
+json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.
+json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.
+json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects.
+json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors.
+json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`.
+json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character.
+json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences.
+json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number.
+json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.
+json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read.
+json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read.
+json.exception.parse_error.114 | parse error: Unsupported BSON record type 0x0F | The parsing of the corresponding BSON record type is not implemented (yet).
+
+@note For an input with n bytes, 1 is the index of the first character and n+1
+ is the index of the terminating null byte or the end of file. This also
+ holds true when reading a byte vector (CBOR or MessagePack).
+
+@liveexample{The following code shows how a `parse_error` exception can be
+caught.,parse_error}
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref invalid_iterator for exceptions indicating errors with iterators
+@sa - @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+@sa - @ref out_of_range for exceptions indicating access out of the defined range
+@sa - @ref other_error for exceptions indicating other library errors
+
+@since version 3.0.0
+*/
+class parse_error : public exception
+{
+ public:
+ /*!
+ @brief create a parse error exception
+ @param[in] id_ the id of the exception
+ @param[in] pos the position where the error occurred (or with
+ chars_read_total=0 if the position cannot be
+ determined)
+ @param[in] what_arg the explanatory string
+ @return parse_error object
+ */
+ static parse_error create(int id_, const position_t& pos, const std::string& what_arg)
+ {
+ std::string w = exception::name("parse_error", id_) + "parse error" +
+ position_string(pos) + ": " + what_arg;
+ return parse_error(id_, pos.chars_read_total, w.c_str());
+ }
+
+ static parse_error create(int id_, std::size_t byte_, const std::string& what_arg)
+ {
+ std::string w = exception::name("parse_error", id_) + "parse error" +
+ (byte_ != 0 ? (" at byte " + std::to_string(byte_)) : "") +
+ ": " + what_arg;
+ return parse_error(id_, byte_, w.c_str());
+ }
+
+ /*!
+ @brief byte index of the parse error
+
+ The byte index of the last read character in the input file.
+
+ @note For an input with n bytes, 1 is the index of the first character and
+ n+1 is the index of the terminating null byte or the end of file.
+ This also holds true when reading a byte vector (CBOR or MessagePack).
+ */
+ const std::size_t byte;
+
+ private:
+ parse_error(int id_, std::size_t byte_, const char* what_arg)
+ : exception(id_, what_arg), byte(byte_) {}
+
+ static std::string position_string(const position_t& pos)
+ {
+ return " at line " + std::to_string(pos.lines_read + 1) +
+ ", column " + std::to_string(pos.chars_read_current_line);
+ }
+};
+
+/*!
+@brief exception indicating errors with iterators
+
+This exception is thrown if iterators passed to a library function do not match
+the expected semantics.
+
+Exceptions have ids 2xx.
+
+name / id | example message | description
+----------------------------------- | --------------- | -------------------------
+json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid.
+json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion.
+json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from.
+json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid.
+json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid.
+json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range.
+json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key.
+json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.
+json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.
+json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid.
+json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to.
+json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container.
+json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered.
+json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin().
+
+@liveexample{The following code shows how an `invalid_iterator` exception can be
+caught.,invalid_iterator}
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref parse_error for exceptions indicating a parse error
+@sa - @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+@sa - @ref out_of_range for exceptions indicating access out of the defined range
+@sa - @ref other_error for exceptions indicating other library errors
+
+@since version 3.0.0
+*/
+class invalid_iterator : public exception
+{
+ public:
+ static invalid_iterator create(int id_, const std::string& what_arg)
+ {
+ std::string w = exception::name("invalid_iterator", id_) + what_arg;
+ return invalid_iterator(id_, w.c_str());
+ }
+
+ private:
+ invalid_iterator(int id_, const char* what_arg)
+ : exception(id_, what_arg) {}
+};
+
+/*!
+@brief exception indicating executing a member function with a wrong type
+
+This exception is thrown in case of a type error; that is, a library function is
+executed on a JSON value whose type does not match the expected semantics.
+
+Exceptions have ids 3xx.
+
+name / id | example message | description
+----------------------------- | --------------- | -------------------------
+json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead.
+json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types.
+json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t &.
+json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types.
+json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types.
+json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types.
+json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types.
+json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types.
+json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types.
+json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types.
+json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types.
+json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types.
+json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined.
+json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers.
+json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive.
+json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. |
+json.exception.type_error.317 | JSON value cannot be serialized to requested format | The dynamic type of the object cannot be represented in the requested serialization format (e.g. a raw `true` or `null` JSON object cannot be serialized to BSON) |
+
+@liveexample{The following code shows how a `type_error` exception can be
+caught.,type_error}
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref parse_error for exceptions indicating a parse error
+@sa - @ref invalid_iterator for exceptions indicating errors with iterators
+@sa - @ref out_of_range for exceptions indicating access out of the defined range
+@sa - @ref other_error for exceptions indicating other library errors
+
+@since version 3.0.0
+*/
+class type_error : public exception
+{
+ public:
+ static type_error create(int id_, const std::string& what_arg)
+ {
+ std::string w = exception::name("type_error", id_) + what_arg;
+ return type_error(id_, w.c_str());
+ }
+
+ private:
+ type_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
+};
+
+/*!
+@brief exception indicating access out of the defined range
+
+This exception is thrown in case a library function is called on an input
+parameter that exceeds the expected range, for instance in case of array
+indices or nonexisting object keys.
+
+Exceptions have ids 4xx.
+
+name / id | example message | description
+------------------------------- | --------------- | -------------------------
+json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1.
+json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.
+json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object.
+json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved.
+json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value.
+json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF.
+json.exception.out_of_range.407 | number overflow serializing '9223372036854775808' | UBJSON and BSON only support integer numbers up to 9223372036854775807. |
+json.exception.out_of_range.408 | excessive array size: 8658170730974374167 | The size (following `#`) of an UBJSON array or object exceeds the maximal capacity. |
+json.exception.out_of_range.409 | BSON key cannot contain code point U+0000 (at byte 2) | Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string |
+
+@liveexample{The following code shows how an `out_of_range` exception can be
+caught.,out_of_range}
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref parse_error for exceptions indicating a parse error
+@sa - @ref invalid_iterator for exceptions indicating errors with iterators
+@sa - @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+@sa - @ref other_error for exceptions indicating other library errors
+
+@since version 3.0.0
+*/
+class out_of_range : public exception
+{
+ public:
+ static out_of_range create(int id_, const std::string& what_arg)
+ {
+ std::string w = exception::name("out_of_range", id_) + what_arg;
+ return out_of_range(id_, w.c_str());
+ }
+
+ private:
+ out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {}
+};
+
+/*!
+@brief exception indicating other library errors
+
+This exception is thrown in case of errors that cannot be classified with the
+other exception types.
+
+Exceptions have ids 5xx.
+
+name / id | example message | description
+------------------------------ | --------------- | -------------------------
+json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed.
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref parse_error for exceptions indicating a parse error
+@sa - @ref invalid_iterator for exceptions indicating errors with iterators
+@sa - @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+@sa - @ref out_of_range for exceptions indicating access out of the defined range
+
+@liveexample{The following code shows how an `other_error` exception can be
+caught.,other_error}
+
+@since version 3.0.0
+*/
+class other_error : public exception
+{
+ public:
+ static other_error create(int id_, const std::string& what_arg)
+ {
+ std::string w = exception::name("other_error", id_) + what_arg;
+ return other_error(id_, w.c_str());
+ }
+
+ private:
+ other_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+
+#include <utility> // pair
+
+// This file contains all internal macro definitions
+// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them
+
+// exclude unsupported compilers
+#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK)
+ #if defined(__clang__)
+ #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400
+ #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers"
+ #endif
+ #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER))
+ #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800
+ #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers"
+ #endif
+ #endif
+#endif
+
+// disable float-equal warnings on GCC/clang
+#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wfloat-equal"
+#endif
+
+// disable documentation warnings on clang
+#if defined(__clang__)
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdocumentation"
+#endif
+
+// allow for portable deprecation warnings
+#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
+ #define JSON_DEPRECATED __attribute__((deprecated))
+#elif defined(_MSC_VER)
+ #define JSON_DEPRECATED __declspec(deprecated)
+#else
+ #define JSON_DEPRECATED
+#endif
+
+// allow for portable nodiscard warnings
+#if defined(__has_cpp_attribute)
+ #if __has_cpp_attribute(nodiscard)
+ #define JSON_NODISCARD [[nodiscard]]
+ #elif __has_cpp_attribute(gnu::warn_unused_result)
+ #define JSON_NODISCARD [[gnu::warn_unused_result]]
+ #else
+ #define JSON_NODISCARD
+ #endif
+#else
+ #define JSON_NODISCARD
+#endif
+
+// allow to disable exceptions
+#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION)
+ #define JSON_THROW(exception) throw exception
+ #define JSON_TRY try
+ #define JSON_CATCH(exception) catch(exception)
+ #define JSON_INTERNAL_CATCH(exception) catch(exception)
+#else
+ #include <cstdlib>
+ #define JSON_THROW(exception) std::abort()
+ #define JSON_TRY if(true)
+ #define JSON_CATCH(exception) if(false)
+ #define JSON_INTERNAL_CATCH(exception) if(false)
+#endif
+
+// override exception macros
+#if defined(JSON_THROW_USER)
+ #undef JSON_THROW
+ #define JSON_THROW JSON_THROW_USER
+#endif
+#if defined(JSON_TRY_USER)
+ #undef JSON_TRY
+ #define JSON_TRY JSON_TRY_USER
+#endif
+#if defined(JSON_CATCH_USER)
+ #undef JSON_CATCH
+ #define JSON_CATCH JSON_CATCH_USER
+ #undef JSON_INTERNAL_CATCH
+ #define JSON_INTERNAL_CATCH JSON_CATCH_USER
+#endif
+#if defined(JSON_INTERNAL_CATCH_USER)
+ #undef JSON_INTERNAL_CATCH
+ #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER
+#endif
+
+// manual branch prediction
+#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
+ #define JSON_LIKELY(x) __builtin_expect(x, 1)
+ #define JSON_UNLIKELY(x) __builtin_expect(x, 0)
+#else
+ #define JSON_LIKELY(x) x
+ #define JSON_UNLIKELY(x) x
+#endif
+
+// C++ language standard detection
+#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464
+ #define JSON_HAS_CPP_17
+ #define JSON_HAS_CPP_14
+#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1)
+ #define JSON_HAS_CPP_14
+#endif
+
+/*!
+@brief macro to briefly define a mapping between an enum and JSON
+@def NLOHMANN_JSON_SERIALIZE_ENUM
+@since version 3.4.0
+*/
+#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \
+ template<typename BasicJsonType> \
+ inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \
+ { \
+ static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
+ static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
+ auto it = std::find_if(std::begin(m), std::end(m), \
+ [e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
+ { \
+ return ej_pair.first == e; \
+ }); \
+ j = ((it != std::end(m)) ? it : std::begin(m))->second; \
+ } \
+ template<typename BasicJsonType> \
+ inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \
+ { \
+ static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
+ static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
+ auto it = std::find_if(std::begin(m), std::end(m), \
+ [j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
+ { \
+ return ej_pair.second == j; \
+ }); \
+ e = ((it != std::end(m)) ? it : std::begin(m))->first; \
+ }
+
+// Ugly macros to avoid uglier copy-paste when specializing basic_json. They
+// may be removed in the future once the class is split.
+
+#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \
+ template<template<typename, typename, typename...> class ObjectType, \
+ template<typename, typename...> class ArrayType, \
+ class StringType, class BooleanType, class NumberIntegerType, \
+ class NumberUnsignedType, class NumberFloatType, \
+ template<typename> class AllocatorType, \
+ template<typename, typename = void> class JSONSerializer>
+
+#define NLOHMANN_BASIC_JSON_TPL \
+ basic_json<ObjectType, ArrayType, StringType, BooleanType, \
+ NumberIntegerType, NumberUnsignedType, NumberFloatType, \
+ AllocatorType, JSONSerializer>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+
+#include <ciso646> // not
+#include <cstddef> // size_t
+#include <type_traits> // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type
+
+namespace nlohmann
+{
+namespace detail
+{
+// alias templates to reduce boilerplate
+template<bool B, typename T = void>
+using enable_if_t = typename std::enable_if<B, T>::type;
+
+template<typename T>
+using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
+
+// implementation of C++14 index_sequence and affiliates
+// source: https://stackoverflow.com/a/32223343
+template<std::size_t... Ints>
+struct index_sequence
+{
+ using type = index_sequence;
+ using value_type = std::size_t;
+ static constexpr std::size_t size() noexcept
+ {
+ return sizeof...(Ints);
+ }
+};
+
+template<class Sequence1, class Sequence2>
+struct merge_and_renumber;
+
+template<std::size_t... I1, std::size_t... I2>
+struct merge_and_renumber<index_sequence<I1...>, index_sequence<I2...>>
+ : index_sequence < I1..., (sizeof...(I1) + I2)... > {};
+
+template<std::size_t N>
+struct make_index_sequence
+ : merge_and_renumber < typename make_index_sequence < N / 2 >::type,
+ typename make_index_sequence < N - N / 2 >::type > {};
+
+template<> struct make_index_sequence<0> : index_sequence<> {};
+template<> struct make_index_sequence<1> : index_sequence<0> {};
+
+template<typename... Ts>
+using index_sequence_for = make_index_sequence<sizeof...(Ts)>;
+
+// dispatch utility (taken from ranges-v3)
+template<unsigned N> struct priority_tag : priority_tag < N - 1 > {};
+template<> struct priority_tag<0> {};
+
+// taken from ranges-v3
+template<typename T>
+struct static_const
+{
+ static constexpr T value{};
+};
+
+template<typename T>
+constexpr T static_const<T>::value;
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+
+#include <ciso646> // not
+#include <limits> // numeric_limits
+#include <type_traits> // false_type, is_constructible, is_integral, is_same, true_type
+#include <utility> // declval
+
+// #include <nlohmann/detail/iterators/iterator_traits.hpp>
+
+
+#include <iterator> // random_access_iterator_tag
+
+// #include <nlohmann/detail/meta/void_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template <typename ...Ts> struct make_void
+{
+ using type = void;
+};
+template <typename ...Ts> using void_t = typename make_void<Ts...>::type;
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template <typename It, typename = void>
+struct iterator_types {};
+
+template <typename It>
+struct iterator_types <
+ It,
+ void_t<typename It::difference_type, typename It::value_type, typename It::pointer,
+ typename It::reference, typename It::iterator_category >>
+{
+ using difference_type = typename It::difference_type;
+ using value_type = typename It::value_type;
+ using pointer = typename It::pointer;
+ using reference = typename It::reference;
+ using iterator_category = typename It::iterator_category;
+};
+
+// This is required as some compilers implement std::iterator_traits in a way that
+// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341.
+template <typename T, typename = void>
+struct iterator_traits
+{
+};
+
+template <typename T>
+struct iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >>
+ : iterator_types<T>
+{
+};
+
+template <typename T>
+struct iterator_traits<T*, enable_if_t<std::is_object<T>::value>>
+{
+ using iterator_category = std::random_access_iterator_tag;
+ using value_type = T;
+ using difference_type = ptrdiff_t;
+ using pointer = T*;
+ using reference = T&;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/meta/detected.hpp>
+
+
+#include <type_traits>
+
+// #include <nlohmann/detail/meta/void_t.hpp>
+
+
+// http://en.cppreference.com/w/cpp/experimental/is_detected
+namespace nlohmann
+{
+namespace detail
+{
+struct nonesuch
+{
+ nonesuch() = delete;
+ ~nonesuch() = delete;
+ nonesuch(nonesuch const&) = delete;
+ nonesuch(nonesuch const&&) = delete;
+ void operator=(nonesuch const&) = delete;
+ void operator=(nonesuch&&) = delete;
+};
+
+template <class Default,
+ class AlwaysVoid,
+ template <class...> class Op,
+ class... Args>
+struct detector
+{
+ using value_t = std::false_type;
+ using type = Default;
+};
+
+template <class Default, template <class...> class Op, class... Args>
+struct detector<Default, void_t<Op<Args...>>, Op, Args...>
+{
+ using value_t = std::true_type;
+ using type = Op<Args...>;
+};
+
+template <template <class...> class Op, class... Args>
+using is_detected = typename detector<nonesuch, void, Op, Args...>::value_t;
+
+template <template <class...> class Op, class... Args>
+using detected_t = typename detector<nonesuch, void, Op, Args...>::type;
+
+template <class Default, template <class...> class Op, class... Args>
+using detected_or = detector<Default, void, Op, Args...>;
+
+template <class Default, template <class...> class Op, class... Args>
+using detected_or_t = typename detected_or<Default, Op, Args...>::type;
+
+template <class Expected, template <class...> class Op, class... Args>
+using is_detected_exact = std::is_same<Expected, detected_t<Op, Args...>>;
+
+template <class To, template <class...> class Op, class... Args>
+using is_detected_convertible =
+ std::is_convertible<detected_t<Op, Args...>, To>;
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/json_fwd.hpp>
+#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_
+#define INCLUDE_NLOHMANN_JSON_FWD_HPP_
+
+#include <cstdint> // int64_t, uint64_t
+#include <map> // map
+#include <memory> // allocator
+#include <string> // string
+#include <vector> // vector
+
+/*!
+@brief namespace for Niels Lohmann
+@see https://github.com/nlohmann
+@since version 1.0.0
+*/
+namespace nlohmann
+{
+/*!
+@brief default JSONSerializer template argument
+
+This serializer ignores the template arguments and uses ADL
+([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl))
+for serialization.
+*/
+template<typename T = void, typename SFINAE = void>
+struct adl_serializer;
+
+template<template<typename U, typename V, typename... Args> class ObjectType =
+ std::map,
+ template<typename U, typename... Args> class ArrayType = std::vector,
+ class StringType = std::string, class BooleanType = bool,
+ class NumberIntegerType = std::int64_t,
+ class NumberUnsignedType = std::uint64_t,
+ class NumberFloatType = double,
+ template<typename U> class AllocatorType = std::allocator,
+ template<typename T, typename SFINAE = void> class JSONSerializer =
+ adl_serializer>
+class basic_json;
+
+/*!
+@brief JSON Pointer
+
+A JSON pointer defines a string syntax for identifying a specific value
+within a JSON document. It can be used with functions `at` and
+`operator[]`. Furthermore, JSON pointers are the base for JSON patches.
+
+@sa [RFC 6901](https://tools.ietf.org/html/rfc6901)
+
+@since version 2.0.0
+*/
+template<typename BasicJsonType>
+class json_pointer;
+
+/*!
+@brief default JSON class
+
+This type is the default specialization of the @ref basic_json class which
+uses the standard template types.
+
+@since version 1.0.0
+*/
+using json = basic_json<>;
+} // namespace nlohmann
+
+#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_
+
+
+namespace nlohmann
+{
+/*!
+@brief detail namespace with internal helper functions
+
+This namespace collects functions that should not be exposed,
+implementations of some @ref basic_json methods, and meta-programming helpers.
+
+@since version 2.1.0
+*/
+namespace detail
+{
+/////////////
+// helpers //
+/////////////
+
+// Note to maintainers:
+//
+// Every trait in this file expects a non CV-qualified type.
+// The only exceptions are in the 'aliases for detected' section
+// (i.e. those of the form: decltype(T::member_function(std::declval<T>())))
+//
+// In this case, T has to be properly CV-qualified to constraint the function arguments
+// (e.g. to_json(BasicJsonType&, const T&))
+
+template<typename> struct is_basic_json : std::false_type {};
+
+NLOHMANN_BASIC_JSON_TPL_DECLARATION
+struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {};
+
+//////////////////////////
+// aliases for detected //
+//////////////////////////
+
+template <typename T>
+using mapped_type_t = typename T::mapped_type;
+
+template <typename T>
+using key_type_t = typename T::key_type;
+
+template <typename T>
+using value_type_t = typename T::value_type;
+
+template <typename T>
+using difference_type_t = typename T::difference_type;
+
+template <typename T>
+using pointer_t = typename T::pointer;
+
+template <typename T>
+using reference_t = typename T::reference;
+
+template <typename T>
+using iterator_category_t = typename T::iterator_category;
+
+template <typename T>
+using iterator_t = typename T::iterator;
+
+template <typename T, typename... Args>
+using to_json_function = decltype(T::to_json(std::declval<Args>()...));
+
+template <typename T, typename... Args>
+using from_json_function = decltype(T::from_json(std::declval<Args>()...));
+
+template <typename T, typename U>
+using get_template_function = decltype(std::declval<T>().template get<U>());
+
+// trait checking if JSONSerializer<T>::from_json(json const&, udt&) exists
+template <typename BasicJsonType, typename T, typename = void>
+struct has_from_json : std::false_type {};
+
+template <typename BasicJsonType, typename T>
+struct has_from_json<BasicJsonType, T,
+ enable_if_t<not is_basic_json<T>::value>>
+{
+ using serializer = typename BasicJsonType::template json_serializer<T, void>;
+
+ static constexpr bool value =
+ is_detected_exact<void, from_json_function, serializer,
+ const BasicJsonType&, T&>::value;
+};
+
+// This trait checks if JSONSerializer<T>::from_json(json const&) exists
+// this overload is used for non-default-constructible user-defined-types
+template <typename BasicJsonType, typename T, typename = void>
+struct has_non_default_from_json : std::false_type {};
+
+template<typename BasicJsonType, typename T>
+struct has_non_default_from_json<BasicJsonType, T, enable_if_t<not is_basic_json<T>::value>>
+{
+ using serializer = typename BasicJsonType::template json_serializer<T, void>;
+
+ static constexpr bool value =
+ is_detected_exact<T, from_json_function, serializer,
+ const BasicJsonType&>::value;
+};
+
+// This trait checks if BasicJsonType::json_serializer<T>::to_json exists
+// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion.
+template <typename BasicJsonType, typename T, typename = void>
+struct has_to_json : std::false_type {};
+
+template <typename BasicJsonType, typename T>
+struct has_to_json<BasicJsonType, T, enable_if_t<not is_basic_json<T>::value>>
+{
+ using serializer = typename BasicJsonType::template json_serializer<T, void>;
+
+ static constexpr bool value =
+ is_detected_exact<void, to_json_function, serializer, BasicJsonType&,
+ T>::value;
+};
+
+
+///////////////////
+// is_ functions //
+///////////////////
+
+template <typename T, typename = void>
+struct is_iterator_traits : std::false_type {};
+
+template <typename T>
+struct is_iterator_traits<iterator_traits<T>>
+{
+ private:
+ using traits = iterator_traits<T>;
+
+ public:
+ static constexpr auto value =
+ is_detected<value_type_t, traits>::value &&
+ is_detected<difference_type_t, traits>::value &&
+ is_detected<pointer_t, traits>::value &&
+ is_detected<iterator_category_t, traits>::value &&
+ is_detected<reference_t, traits>::value;
+};
+
+// source: https://stackoverflow.com/a/37193089/4116453
+
+template <typename T, typename = void>
+struct is_complete_type : std::false_type {};
+
+template <typename T>
+struct is_complete_type<T, decltype(void(sizeof(T)))> : std::true_type {};
+
+template <typename BasicJsonType, typename CompatibleObjectType,
+ typename = void>
+struct is_compatible_object_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename CompatibleObjectType>
+struct is_compatible_object_type_impl <
+ BasicJsonType, CompatibleObjectType,
+ enable_if_t<is_detected<mapped_type_t, CompatibleObjectType>::value and
+ is_detected<key_type_t, CompatibleObjectType>::value >>
+{
+
+ using object_t = typename BasicJsonType::object_t;
+
+ // macOS's is_constructible does not play well with nonesuch...
+ static constexpr bool value =
+ std::is_constructible<typename object_t::key_type,
+ typename CompatibleObjectType::key_type>::value and
+ std::is_constructible<typename object_t::mapped_type,
+ typename CompatibleObjectType::mapped_type>::value;
+};
+
+template <typename BasicJsonType, typename CompatibleObjectType>
+struct is_compatible_object_type
+ : is_compatible_object_type_impl<BasicJsonType, CompatibleObjectType> {};
+
+template <typename BasicJsonType, typename ConstructibleObjectType,
+ typename = void>
+struct is_constructible_object_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename ConstructibleObjectType>
+struct is_constructible_object_type_impl <
+ BasicJsonType, ConstructibleObjectType,
+ enable_if_t<is_detected<mapped_type_t, ConstructibleObjectType>::value and
+ is_detected<key_type_t, ConstructibleObjectType>::value >>
+{
+ using object_t = typename BasicJsonType::object_t;
+
+ static constexpr bool value =
+ (std::is_constructible<typename ConstructibleObjectType::key_type, typename object_t::key_type>::value and
+ std::is_same<typename object_t::mapped_type, typename ConstructibleObjectType::mapped_type>::value) or
+ (has_from_json<BasicJsonType, typename ConstructibleObjectType::mapped_type>::value or
+ has_non_default_from_json<BasicJsonType, typename ConstructibleObjectType::mapped_type >::value);
+};
+
+template <typename BasicJsonType, typename ConstructibleObjectType>
+struct is_constructible_object_type
+ : is_constructible_object_type_impl<BasicJsonType,
+ ConstructibleObjectType> {};
+
+template <typename BasicJsonType, typename CompatibleStringType,
+ typename = void>
+struct is_compatible_string_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename CompatibleStringType>
+struct is_compatible_string_type_impl <
+ BasicJsonType, CompatibleStringType,
+ enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
+ value_type_t, CompatibleStringType>::value >>
+{
+ static constexpr auto value =
+ std::is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value;
+};
+
+template <typename BasicJsonType, typename ConstructibleStringType>
+struct is_compatible_string_type
+ : is_compatible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
+
+template <typename BasicJsonType, typename ConstructibleStringType,
+ typename = void>
+struct is_constructible_string_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename ConstructibleStringType>
+struct is_constructible_string_type_impl <
+ BasicJsonType, ConstructibleStringType,
+ enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
+ value_type_t, ConstructibleStringType>::value >>
+{
+ static constexpr auto value =
+ std::is_constructible<ConstructibleStringType,
+ typename BasicJsonType::string_t>::value;
+};
+
+template <typename BasicJsonType, typename ConstructibleStringType>
+struct is_constructible_string_type
+ : is_constructible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
+
+template <typename BasicJsonType, typename CompatibleArrayType, typename = void>
+struct is_compatible_array_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename CompatibleArrayType>
+struct is_compatible_array_type_impl <
+ BasicJsonType, CompatibleArrayType,
+ enable_if_t<is_detected<value_type_t, CompatibleArrayType>::value and
+ is_detected<iterator_t, CompatibleArrayType>::value and
+// This is needed because json_reverse_iterator has a ::iterator type...
+// Therefore it is detected as a CompatibleArrayType.
+// The real fix would be to have an Iterable concept.
+ not is_iterator_traits<
+ iterator_traits<CompatibleArrayType>>::value >>
+{
+ static constexpr bool value =
+ std::is_constructible<BasicJsonType,
+ typename CompatibleArrayType::value_type>::value;
+};
+
+template <typename BasicJsonType, typename CompatibleArrayType>
+struct is_compatible_array_type
+ : is_compatible_array_type_impl<BasicJsonType, CompatibleArrayType> {};
+
+template <typename BasicJsonType, typename ConstructibleArrayType, typename = void>
+struct is_constructible_array_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename ConstructibleArrayType>
+struct is_constructible_array_type_impl <
+ BasicJsonType, ConstructibleArrayType,
+ enable_if_t<std::is_same<ConstructibleArrayType,
+ typename BasicJsonType::value_type>::value >>
+ : std::true_type {};
+
+template <typename BasicJsonType, typename ConstructibleArrayType>
+struct is_constructible_array_type_impl <
+ BasicJsonType, ConstructibleArrayType,
+ enable_if_t<not std::is_same<ConstructibleArrayType,
+ typename BasicJsonType::value_type>::value and
+ is_detected<value_type_t, ConstructibleArrayType>::value and
+ is_detected<iterator_t, ConstructibleArrayType>::value and
+ is_complete_type<
+ detected_t<value_type_t, ConstructibleArrayType>>::value >>
+{
+ static constexpr bool value =
+ // This is needed because json_reverse_iterator has a ::iterator type,
+ // furthermore, std::back_insert_iterator (and other iterators) have a base class `iterator`...
+ // Therefore it is detected as a ConstructibleArrayType.
+ // The real fix would be to have an Iterable concept.
+ not is_iterator_traits <
+ iterator_traits<ConstructibleArrayType >>::value and
+
+ (std::is_same<typename ConstructibleArrayType::value_type, typename BasicJsonType::array_t::value_type>::value or
+ has_from_json<BasicJsonType,
+ typename ConstructibleArrayType::value_type>::value or
+ has_non_default_from_json <
+ BasicJsonType, typename ConstructibleArrayType::value_type >::value);
+};
+
+template <typename BasicJsonType, typename ConstructibleArrayType>
+struct is_constructible_array_type
+ : is_constructible_array_type_impl<BasicJsonType, ConstructibleArrayType> {};
+
+template <typename RealIntegerType, typename CompatibleNumberIntegerType,
+ typename = void>
+struct is_compatible_integer_type_impl : std::false_type {};
+
+template <typename RealIntegerType, typename CompatibleNumberIntegerType>
+struct is_compatible_integer_type_impl <
+ RealIntegerType, CompatibleNumberIntegerType,
+ enable_if_t<std::is_integral<RealIntegerType>::value and
+ std::is_integral<CompatibleNumberIntegerType>::value and
+ not std::is_same<bool, CompatibleNumberIntegerType>::value >>
+{
+ // is there an assert somewhere on overflows?
+ using RealLimits = std::numeric_limits<RealIntegerType>;
+ using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>;
+
+ static constexpr auto value =
+ std::is_constructible<RealIntegerType,
+ CompatibleNumberIntegerType>::value and
+ CompatibleLimits::is_integer and
+ RealLimits::is_signed == CompatibleLimits::is_signed;
+};
+
+template <typename RealIntegerType, typename CompatibleNumberIntegerType>
+struct is_compatible_integer_type
+ : is_compatible_integer_type_impl<RealIntegerType,
+ CompatibleNumberIntegerType> {};
+
+template <typename BasicJsonType, typename CompatibleType, typename = void>
+struct is_compatible_type_impl: std::false_type {};
+
+template <typename BasicJsonType, typename CompatibleType>
+struct is_compatible_type_impl <
+ BasicJsonType, CompatibleType,
+ enable_if_t<is_complete_type<CompatibleType>::value >>
+{
+ static constexpr bool value =
+ has_to_json<BasicJsonType, CompatibleType>::value;
+};
+
+template <typename BasicJsonType, typename CompatibleType>
+struct is_compatible_type
+ : is_compatible_type_impl<BasicJsonType, CompatibleType> {};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+#include <array> // array
+#include <ciso646> // and
+#include <cstddef> // size_t
+#include <cstdint> // uint8_t
+#include <string> // string
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////////////////////
+// JSON type enumeration //
+///////////////////////////
+
+/*!
+@brief the JSON type enumeration
+
+This enumeration collects the different JSON types. It is internally used to
+distinguish the stored values, and the functions @ref basic_json::is_null(),
+@ref basic_json::is_object(), @ref basic_json::is_array(),
+@ref basic_json::is_string(), @ref basic_json::is_boolean(),
+@ref basic_json::is_number() (with @ref basic_json::is_number_integer(),
+@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()),
+@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and
+@ref basic_json::is_structured() rely on it.
+
+@note There are three enumeration entries (number_integer, number_unsigned, and
+number_float), because the library distinguishes these three types for numbers:
+@ref basic_json::number_unsigned_t is used for unsigned integers,
+@ref basic_json::number_integer_t is used for signed integers, and
+@ref basic_json::number_float_t is used for floating-point numbers or to
+approximate integers which do not fit in the limits of their respective type.
+
+@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON
+value with the default value for a given type
+
+@since version 1.0.0
+*/
+enum class value_t : std::uint8_t
+{
+ null, ///< null value
+ object, ///< object (unordered set of name/value pairs)
+ array, ///< array (ordered collection of values)
+ string, ///< string value
+ boolean, ///< boolean value
+ number_integer, ///< number value (signed integer)
+ number_unsigned, ///< number value (unsigned integer)
+ number_float, ///< number value (floating-point)
+ discarded ///< discarded by the the parser callback function
+};
+
+/*!
+@brief comparison operator for JSON types
+
+Returns an ordering that is similar to Python:
+- order: null < boolean < number < object < array < string
+- furthermore, each type is not smaller than itself
+- discarded values are not comparable
+
+@since version 1.0.0
+*/
+inline bool operator<(const value_t lhs, const value_t rhs) noexcept
+{
+ static constexpr std::array<std::uint8_t, 8> order = {{
+ 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */,
+ 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */
+ }
+ };
+
+ const auto l_index = static_cast<std::size_t>(lhs);
+ const auto r_index = static_cast<std::size_t>(rhs);
+ return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index];
+}
+} // namespace detail
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename std::nullptr_t& n)
+{
+ if (JSON_UNLIKELY(not j.is_null()))
+ {
+ JSON_THROW(type_error::create(302, "type must be null, but is " + std::string(j.type_name())));
+ }
+ n = nullptr;
+}
+
+// overloads for basic_json template parameters
+template<typename BasicJsonType, typename ArithmeticType,
+ enable_if_t<std::is_arithmetic<ArithmeticType>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
+ int> = 0>
+void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
+{
+ switch (static_cast<value_t>(j))
+ {
+ case value_t::number_unsigned:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
+ break;
+ }
+ case value_t::number_integer:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
+ break;
+ }
+ case value_t::number_float:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
+ break;
+ }
+
+ default:
+ JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));
+ }
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b)
+{
+ if (JSON_UNLIKELY(not j.is_boolean()))
+ {
+ JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name())));
+ }
+ b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>();
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s)
+{
+ if (JSON_UNLIKELY(not j.is_string()))
+ {
+ JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name())));
+ }
+ s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
+}
+
+template <
+ typename BasicJsonType, typename ConstructibleStringType,
+ enable_if_t <
+ is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value and
+ not std::is_same<typename BasicJsonType::string_t,
+ ConstructibleStringType>::value,
+ int > = 0 >
+void from_json(const BasicJsonType& j, ConstructibleStringType& s)
+{
+ if (JSON_UNLIKELY(not j.is_string()))
+ {
+ JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name())));
+ }
+
+ s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val)
+{
+ get_arithmetic_value(j, val);
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val)
+{
+ get_arithmetic_value(j, val);
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val)
+{
+ get_arithmetic_value(j, val);
+}
+
+template<typename BasicJsonType, typename EnumType,
+ enable_if_t<std::is_enum<EnumType>::value, int> = 0>
+void from_json(const BasicJsonType& j, EnumType& e)
+{
+ typename std::underlying_type<EnumType>::type val;
+ get_arithmetic_value(j, val);
+ e = static_cast<EnumType>(val);
+}
+
+// forward_list doesn't have an insert method
+template<typename BasicJsonType, typename T, typename Allocator,
+ enable_if_t<std::is_convertible<BasicJsonType, T>::value, int> = 0>
+void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l)
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
+ }
+ std::transform(j.rbegin(), j.rend(),
+ std::front_inserter(l), [](const BasicJsonType & i)
+ {
+ return i.template get<T>();
+ });
+}
+
+// valarray doesn't have an insert method
+template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_convertible<BasicJsonType, T>::value, int> = 0>
+void from_json(const BasicJsonType& j, std::valarray<T>& l)
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
+ }
+ l.resize(j.size());
+ std::copy(j.m_value.array->begin(), j.m_value.array->end(), std::begin(l));
+}
+
+template<typename BasicJsonType>
+void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/)
+{
+ arr = *j.template get_ptr<const typename BasicJsonType::array_t*>();
+}
+
+template <typename BasicJsonType, typename T, std::size_t N>
+auto from_json_array_impl(const BasicJsonType& j, std::array<T, N>& arr,
+ priority_tag<2> /*unused*/)
+-> decltype(j.template get<T>(), void())
+{
+ for (std::size_t i = 0; i < N; ++i)
+ {
+ arr[i] = j.at(i).template get<T>();
+ }
+}
+
+template<typename BasicJsonType, typename ConstructibleArrayType>
+auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/)
+-> decltype(
+ arr.reserve(std::declval<typename ConstructibleArrayType::size_type>()),
+ j.template get<typename ConstructibleArrayType::value_type>(),
+ void())
+{
+ using std::end;
+
+ arr.reserve(j.size());
+ std::transform(j.begin(), j.end(),
+ std::inserter(arr, end(arr)), [](const BasicJsonType & i)
+ {
+ // get<BasicJsonType>() returns *this, this won't call a from_json
+ // method when value_type is BasicJsonType
+ return i.template get<typename ConstructibleArrayType::value_type>();
+ });
+}
+
+template <typename BasicJsonType, typename ConstructibleArrayType>
+void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr,
+ priority_tag<0> /*unused*/)
+{
+ using std::end;
+
+ std::transform(
+ j.begin(), j.end(), std::inserter(arr, end(arr)),
+ [](const BasicJsonType & i)
+ {
+ // get<BasicJsonType>() returns *this, this won't call a from_json
+ // method when value_type is BasicJsonType
+ return i.template get<typename ConstructibleArrayType::value_type>();
+ });
+}
+
+template <typename BasicJsonType, typename ConstructibleArrayType,
+ enable_if_t <
+ is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value and
+ not is_constructible_object_type<BasicJsonType, ConstructibleArrayType>::value and
+ not is_constructible_string_type<BasicJsonType, ConstructibleArrayType>::value and
+ not is_basic_json<ConstructibleArrayType>::value,
+ int > = 0 >
+
+auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr)
+-> decltype(from_json_array_impl(j, arr, priority_tag<3> {}),
+j.template get<typename ConstructibleArrayType::value_type>(),
+void())
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " +
+ std::string(j.type_name())));
+ }
+
+ from_json_array_impl(j, arr, priority_tag<3> {});
+}
+
+template<typename BasicJsonType, typename ConstructibleObjectType,
+ enable_if_t<is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value, int> = 0>
+void from_json(const BasicJsonType& j, ConstructibleObjectType& obj)
+{
+ if (JSON_UNLIKELY(not j.is_object()))
+ {
+ JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name())));
+ }
+
+ auto inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>();
+ using value_type = typename ConstructibleObjectType::value_type;
+ std::transform(
+ inner_object->begin(), inner_object->end(),
+ std::inserter(obj, obj.begin()),
+ [](typename BasicJsonType::object_t::value_type const & p)
+ {
+ return value_type(p.first, p.second.template get<typename ConstructibleObjectType::mapped_type>());
+ });
+}
+
+// overload for arithmetic types, not chosen for basic_json template arguments
+// (BooleanType, etc..); note: Is it really necessary to provide explicit
+// overloads for boolean_t etc. in case of a custom BooleanType which is not
+// an arithmetic type?
+template<typename BasicJsonType, typename ArithmeticType,
+ enable_if_t <
+ std::is_arithmetic<ArithmeticType>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::number_unsigned_t>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::number_integer_t>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::number_float_t>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
+ int> = 0>
+void from_json(const BasicJsonType& j, ArithmeticType& val)
+{
+ switch (static_cast<value_t>(j))
+ {
+ case value_t::number_unsigned:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
+ break;
+ }
+ case value_t::number_integer:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
+ break;
+ }
+ case value_t::number_float:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
+ break;
+ }
+ case value_t::boolean:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>());
+ break;
+ }
+
+ default:
+ JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));
+ }
+}
+
+template<typename BasicJsonType, typename A1, typename A2>
+void from_json(const BasicJsonType& j, std::pair<A1, A2>& p)
+{
+ p = {j.at(0).template get<A1>(), j.at(1).template get<A2>()};
+}
+
+template<typename BasicJsonType, typename Tuple, std::size_t... Idx>
+void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence<Idx...> /*unused*/)
+{
+ t = std::make_tuple(j.at(Idx).template get<typename std::tuple_element<Idx, Tuple>::type>()...);
+}
+
+template<typename BasicJsonType, typename... Args>
+void from_json(const BasicJsonType& j, std::tuple<Args...>& t)
+{
+ from_json_tuple_impl(j, t, index_sequence_for<Args...> {});
+}
+
+template <typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator,
+ typename = enable_if_t<not std::is_constructible<
+ typename BasicJsonType::string_t, Key>::value>>
+void from_json(const BasicJsonType& j, std::map<Key, Value, Compare, Allocator>& m)
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
+ }
+ for (const auto& p : j)
+ {
+ if (JSON_UNLIKELY(not p.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name())));
+ }
+ m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
+ }
+}
+
+template <typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator,
+ typename = enable_if_t<not std::is_constructible<
+ typename BasicJsonType::string_t, Key>::value>>
+void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>& m)
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
+ }
+ for (const auto& p : j)
+ {
+ if (JSON_UNLIKELY(not p.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name())));
+ }
+ m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
+ }
+}
+
+struct from_json_fn
+{
+ template<typename BasicJsonType, typename T>
+ auto operator()(const BasicJsonType& j, T& val) const
+ noexcept(noexcept(from_json(j, val)))
+ -> decltype(from_json(j, val), void())
+ {
+ return from_json(j, val);
+ }
+};
+} // namespace detail
+
+/// namespace to hold default `from_json` function
+/// to see why this is required:
+/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html
+namespace
+{
+constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::value;
+} // namespace
+} // namespace nlohmann
+
+// #include <nlohmann/detail/conversions/to_json.hpp>
+
+
+#include <algorithm> // copy
+#include <ciso646> // or, and, not
+#include <iterator> // begin, end
+#include <string> // string
+#include <tuple> // tuple, get
+#include <type_traits> // is_same, is_constructible, is_floating_point, is_enum, underlying_type
+#include <utility> // move, forward, declval, pair
+#include <valarray> // valarray
+#include <vector> // vector
+
+// #include <nlohmann/detail/iterators/iteration_proxy.hpp>
+
+
+#include <cstddef> // size_t
+#include <iterator> // input_iterator_tag
+#include <string> // string, to_string
+#include <tuple> // tuple_size, get, tuple_element
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template <typename IteratorType> class iteration_proxy_value
+{
+ public:
+ using difference_type = std::ptrdiff_t;
+ using value_type = iteration_proxy_value;
+ using pointer = value_type * ;
+ using reference = value_type & ;
+ using iterator_category = std::input_iterator_tag;
+
+ private:
+ /// the iterator
+ IteratorType anchor;
+ /// an index for arrays (used to create key names)
+ std::size_t array_index = 0;
+ /// last stringified array index
+ mutable std::size_t array_index_last = 0;
+ /// a string representation of the array index
+ mutable std::string array_index_str = "0";
+ /// an empty string (to return a reference for primitive values)
+ const std::string empty_str = "";
+
+ public:
+ explicit iteration_proxy_value(IteratorType it) noexcept : anchor(it) {}
+
+ /// dereference operator (needed for range-based for)
+ iteration_proxy_value& operator*()
+ {
+ return *this;
+ }
+
+ /// increment operator (needed for range-based for)
+ iteration_proxy_value& operator++()
+ {
+ ++anchor;
+ ++array_index;
+
+ return *this;
+ }
+
+ /// equality operator (needed for InputIterator)
+ bool operator==(const iteration_proxy_value& o) const
+ {
+ return anchor == o.anchor;
+ }
+
+ /// inequality operator (needed for range-based for)
+ bool operator!=(const iteration_proxy_value& o) const
+ {
+ return anchor != o.anchor;
+ }
+
+ /// return key of the iterator
+ const std::string& key() const
+ {
+ assert(anchor.m_object != nullptr);
+
+ switch (anchor.m_object->type())
+ {
+ // use integer array index as key
+ case value_t::array:
+ {
+ if (array_index != array_index_last)
+ {
+ array_index_str = std::to_string(array_index);
+ array_index_last = array_index;
+ }
+ return array_index_str;
+ }
+
+ // use key from the object
+ case value_t::object:
+ return anchor.key();
+
+ // use an empty key for all primitive types
+ default:
+ return empty_str;
+ }
+ }
+
+ /// return value of the iterator
+ typename IteratorType::reference value() const
+ {
+ return anchor.value();
+ }
+};
+
+/// proxy class for the items() function
+template<typename IteratorType> class iteration_proxy
+{
+ private:
+ /// the container to iterate
+ typename IteratorType::reference container;
+
+ public:
+ /// construct iteration proxy from a container
+ explicit iteration_proxy(typename IteratorType::reference cont) noexcept
+ : container(cont) {}
+
+ /// return iterator begin (needed for range-based for)
+ iteration_proxy_value<IteratorType> begin() noexcept
+ {
+ return iteration_proxy_value<IteratorType>(container.begin());
+ }
+
+ /// return iterator end (needed for range-based for)
+ iteration_proxy_value<IteratorType> end() noexcept
+ {
+ return iteration_proxy_value<IteratorType>(container.end());
+ }
+};
+// Structured Bindings Support
+// For further reference see https://blog.tartanllama.xyz/structured-bindings/
+// And see https://github.com/nlohmann/json/pull/1391
+template <std::size_t N, typename IteratorType, enable_if_t<N == 0, int> = 0>
+auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>& i) -> decltype(i.key())
+{
+ return i.key();
+}
+// Structured Bindings Support
+// For further reference see https://blog.tartanllama.xyz/structured-bindings/
+// And see https://github.com/nlohmann/json/pull/1391
+template <std::size_t N, typename IteratorType, enable_if_t<N == 1, int> = 0>
+auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>& i) -> decltype(i.value())
+{
+ return i.value();
+}
+} // namespace detail
+} // namespace nlohmann
+
+// The Addition to the STD Namespace is required to add
+// Structured Bindings Support to the iteration_proxy_value class
+// For further reference see https://blog.tartanllama.xyz/structured-bindings/
+// And see https://github.com/nlohmann/json/pull/1391
+namespace std
+{
+#if defined(__clang__)
+ // Fix: https://github.com/nlohmann/json/issues/1401
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wmismatched-tags"
+#endif
+template <typename IteratorType>
+class tuple_size<::nlohmann::detail::iteration_proxy_value<IteratorType>>
+ : public std::integral_constant<std::size_t, 2> {};
+
+template <std::size_t N, typename IteratorType>
+class tuple_element<N, ::nlohmann::detail::iteration_proxy_value<IteratorType >>
+{
+ public:
+ using type = decltype(
+ get<N>(std::declval <
+ ::nlohmann::detail::iteration_proxy_value<IteratorType >> ()));
+};
+#if defined(__clang__)
+ #pragma clang diagnostic pop
+#endif
+} // namespace std
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+//////////////////
+// constructors //
+//////////////////
+
+template<value_t> struct external_constructor;
+
+template<>
+struct external_constructor<value_t::boolean>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept
+ {
+ j.m_type = value_t::boolean;
+ j.m_value = b;
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::string>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s)
+ {
+ j.m_type = value_t::string;
+ j.m_value = s;
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s)
+ {
+ j.m_type = value_t::string;
+ j.m_value = std::move(s);
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType, typename CompatibleStringType,
+ enable_if_t<not std::is_same<CompatibleStringType, typename BasicJsonType::string_t>::value,
+ int> = 0>
+ static void construct(BasicJsonType& j, const CompatibleStringType& str)
+ {
+ j.m_type = value_t::string;
+ j.m_value.string = j.template create<typename BasicJsonType::string_t>(str);
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::number_float>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept
+ {
+ j.m_type = value_t::number_float;
+ j.m_value = val;
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::number_unsigned>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept
+ {
+ j.m_type = value_t::number_unsigned;
+ j.m_value = val;
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::number_integer>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept
+ {
+ j.m_type = value_t::number_integer;
+ j.m_value = val;
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::array>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr)
+ {
+ j.m_type = value_t::array;
+ j.m_value = arr;
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
+ {
+ j.m_type = value_t::array;
+ j.m_value = std::move(arr);
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType, typename CompatibleArrayType,
+ enable_if_t<not std::is_same<CompatibleArrayType, typename BasicJsonType::array_t>::value,
+ int> = 0>
+ static void construct(BasicJsonType& j, const CompatibleArrayType& arr)
+ {
+ using std::begin;
+ using std::end;
+ j.m_type = value_t::array;
+ j.m_value.array = j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr));
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, const std::vector<bool>& arr)
+ {
+ j.m_type = value_t::array;
+ j.m_value = value_t::array;
+ j.m_value.array->reserve(arr.size());
+ for (const bool x : arr)
+ {
+ j.m_value.array->push_back(x);
+ }
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_convertible<T, BasicJsonType>::value, int> = 0>
+ static void construct(BasicJsonType& j, const std::valarray<T>& arr)
+ {
+ j.m_type = value_t::array;
+ j.m_value = value_t::array;
+ j.m_value.array->resize(arr.size());
+ std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin());
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::object>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj)
+ {
+ j.m_type = value_t::object;
+ j.m_value = obj;
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
+ {
+ j.m_type = value_t::object;
+ j.m_value = std::move(obj);
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType, typename CompatibleObjectType,
+ enable_if_t<not std::is_same<CompatibleObjectType, typename BasicJsonType::object_t>::value, int> = 0>
+ static void construct(BasicJsonType& j, const CompatibleObjectType& obj)
+ {
+ using std::begin;
+ using std::end;
+
+ j.m_type = value_t::object;
+ j.m_value.object = j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj));
+ j.assert_invariant();
+ }
+};
+
+/////////////
+// to_json //
+/////////////
+
+template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_same<T, typename BasicJsonType::boolean_t>::value, int> = 0>
+void to_json(BasicJsonType& j, T b) noexcept
+{
+ external_constructor<value_t::boolean>::construct(j, b);
+}
+
+template<typename BasicJsonType, typename CompatibleString,
+ enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, int> = 0>
+void to_json(BasicJsonType& j, const CompatibleString& s)
+{
+ external_constructor<value_t::string>::construct(j, s);
+}
+
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s)
+{
+ external_constructor<value_t::string>::construct(j, std::move(s));
+}
+
+template<typename BasicJsonType, typename FloatType,
+ enable_if_t<std::is_floating_point<FloatType>::value, int> = 0>
+void to_json(BasicJsonType& j, FloatType val) noexcept
+{
+ external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
+}
+
+template<typename BasicJsonType, typename CompatibleNumberUnsignedType,
+ enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0>
+void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept
+{
+ external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
+}
+
+template<typename BasicJsonType, typename CompatibleNumberIntegerType,
+ enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType>::value, int> = 0>
+void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept
+{
+ external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
+}
+
+template<typename BasicJsonType, typename EnumType,
+ enable_if_t<std::is_enum<EnumType>::value, int> = 0>
+void to_json(BasicJsonType& j, EnumType e) noexcept
+{
+ using underlying_type = typename std::underlying_type<EnumType>::type;
+ external_constructor<value_t::number_integer>::construct(j, static_cast<underlying_type>(e));
+}
+
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, const std::vector<bool>& e)
+{
+ external_constructor<value_t::array>::construct(j, e);
+}
+
+template <typename BasicJsonType, typename CompatibleArrayType,
+ enable_if_t<is_compatible_array_type<BasicJsonType,
+ CompatibleArrayType>::value and
+ not is_compatible_object_type<
+ BasicJsonType, CompatibleArrayType>::value and
+ not is_compatible_string_type<BasicJsonType, CompatibleArrayType>::value and
+ not is_basic_json<CompatibleArrayType>::value,
+ int> = 0>
+void to_json(BasicJsonType& j, const CompatibleArrayType& arr)
+{
+ external_constructor<value_t::array>::construct(j, arr);
+}
+
+template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_convertible<T, BasicJsonType>::value, int> = 0>
+void to_json(BasicJsonType& j, const std::valarray<T>& arr)
+{
+ external_constructor<value_t::array>::construct(j, std::move(arr));
+}
+
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
+{
+ external_constructor<value_t::array>::construct(j, std::move(arr));
+}
+
+template<typename BasicJsonType, typename CompatibleObjectType,
+ enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value and not is_basic_json<CompatibleObjectType>::value, int> = 0>
+void to_json(BasicJsonType& j, const CompatibleObjectType& obj)
+{
+ external_constructor<value_t::object>::construct(j, obj);
+}
+
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
+{
+ external_constructor<value_t::object>::construct(j, std::move(obj));
+}
+
+template <
+ typename BasicJsonType, typename T, std::size_t N,
+ enable_if_t<not std::is_constructible<typename BasicJsonType::string_t,
+ const T(&)[N]>::value,
+ int> = 0 >
+void to_json(BasicJsonType& j, const T(&arr)[N])
+{
+ external_constructor<value_t::array>::construct(j, arr);
+}
+
+template<typename BasicJsonType, typename... Args>
+void to_json(BasicJsonType& j, const std::pair<Args...>& p)
+{
+ j = { p.first, p.second };
+}
+
+// for https://github.com/nlohmann/json/pull/1134
+template < typename BasicJsonType, typename T,
+ enable_if_t<std::is_same<T, iteration_proxy_value<typename BasicJsonType::iterator>>::value, int> = 0>
+void to_json(BasicJsonType& j, const T& b)
+{
+ j = { {b.key(), b.value()} };
+}
+
+template<typename BasicJsonType, typename Tuple, std::size_t... Idx>
+void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence<Idx...> /*unused*/)
+{
+ j = { std::get<Idx>(t)... };
+}
+
+template<typename BasicJsonType, typename... Args>
+void to_json(BasicJsonType& j, const std::tuple<Args...>& t)
+{
+ to_json_tuple_impl(j, t, index_sequence_for<Args...> {});
+}
+
+struct to_json_fn
+{
+ template<typename BasicJsonType, typename T>
+ auto operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(to_json(j, std::forward<T>(val))))
+ -> decltype(to_json(j, std::forward<T>(val)), void())
+ {
+ return to_json(j, std::forward<T>(val));
+ }
+};
+} // namespace detail
+
+/// namespace to hold default `to_json` function
+namespace
+{
+constexpr const auto& to_json = detail::static_const<detail::to_json_fn>::value;
+} // namespace
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+
+template<typename, typename>
+struct adl_serializer
+{
+ /*!
+ @brief convert a JSON value to any value type
+
+ This function is usually called by the `get()` function of the
+ @ref basic_json class (either explicit or via conversion operators).
+
+ @param[in] j JSON value to read from
+ @param[in,out] val value to write to
+ */
+ template<typename BasicJsonType, typename ValueType>
+ static auto from_json(BasicJsonType&& j, ValueType& val) noexcept(
+ noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val)))
+ -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void())
+ {
+ ::nlohmann::from_json(std::forward<BasicJsonType>(j), val);
+ }
+
+ /*!
+ @brief convert any value type to a JSON value
+
+ This function is usually called by the constructors of the @ref basic_json
+ class.
+
+ @param[in,out] j JSON value to write to
+ @param[in] val value to read from
+ */
+ template <typename BasicJsonType, typename ValueType>
+ static auto to_json(BasicJsonType& j, ValueType&& val) noexcept(
+ noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val))))
+ -> decltype(::nlohmann::to_json(j, std::forward<ValueType>(val)), void())
+ {
+ ::nlohmann::to_json(j, std::forward<ValueType>(val));
+ }
+};
+
+} // namespace nlohmann
+
+// #include <nlohmann/detail/conversions/from_json.hpp>
+
+// #include <nlohmann/detail/conversions/to_json.hpp>
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/input/binary_reader.hpp>
+
+
+#include <algorithm> // generate_n
+#include <array> // array
+#include <cassert> // assert
+#include <cmath> // ldexp
+#include <cstddef> // size_t
+#include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
+#include <cstdio> // snprintf
+#include <cstring> // memcpy
+#include <iterator> // back_inserter
+#include <limits> // numeric_limits
+#include <string> // char_traits, string
+#include <utility> // make_pair, move
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/input/input_adapters.hpp>
+
+
+#include <array> // array
+#include <cassert> // assert
+#include <cstddef> // size_t
+#include <cstdio> //FILE *
+#include <cstring> // strlen
+#include <istream> // istream
+#include <iterator> // begin, end, iterator_traits, random_access_iterator_tag, distance, next
+#include <memory> // shared_ptr, make_shared, addressof
+#include <numeric> // accumulate
+#include <string> // string, char_traits
+#include <type_traits> // enable_if, is_base_of, is_pointer, is_integral, remove_pointer
+#include <utility> // pair, declval
+
+// #include <nlohmann/detail/iterators/iterator_traits.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+/// the supported input formats
+enum class input_format_t { json, cbor, msgpack, ubjson, bson };
+
+////////////////////
+// input adapters //
+////////////////////
+
+/*!
+@brief abstract input adapter interface
+
+Produces a stream of std::char_traits<char>::int_type characters from a
+std::istream, a buffer, or some other input type. Accepts the return of
+exactly one non-EOF character for future input. The int_type characters
+returned consist of all valid char values as positive values (typically
+unsigned char), plus an EOF value outside that range, specified by the value
+of the function std::char_traits<char>::eof(). This value is typically -1, but
+could be any arbitrary value which is not a valid char value.
+*/
+struct input_adapter_protocol
+{
+ /// get a character [0,255] or std::char_traits<char>::eof().
+ virtual std::char_traits<char>::int_type get_character() = 0;
+ virtual ~input_adapter_protocol() = default;
+};
+
+/// a type to simplify interfaces
+using input_adapter_t = std::shared_ptr<input_adapter_protocol>;
+
+/*!
+Input adapter for stdio file access. This adapter read only 1 byte and do not use any
+ buffer. This adapter is a very low level adapter.
+*/
+class file_input_adapter : public input_adapter_protocol
+{
+ public:
+ explicit file_input_adapter(std::FILE* f) noexcept
+ : m_file(f)
+ {}
+
+ // make class move-only
+ file_input_adapter(const file_input_adapter&) = delete;
+ file_input_adapter(file_input_adapter&&) = default;
+ file_input_adapter& operator=(const file_input_adapter&) = delete;
+ file_input_adapter& operator=(file_input_adapter&&) = default;
+ ~file_input_adapter() override = default;
+
+ std::char_traits<char>::int_type get_character() noexcept override
+ {
+ return std::fgetc(m_file);
+ }
+
+ private:
+ /// the file pointer to read from
+ std::FILE* m_file;
+};
+
+
+/*!
+Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at
+beginning of input. Does not support changing the underlying std::streambuf
+in mid-input. Maintains underlying std::istream and std::streambuf to support
+subsequent use of standard std::istream operations to process any input
+characters following those used in parsing the JSON input. Clears the
+std::istream flags; any input errors (e.g., EOF) will be detected by the first
+subsequent call for input from the std::istream.
+*/
+class input_stream_adapter : public input_adapter_protocol
+{
+ public:
+ ~input_stream_adapter() override
+ {
+ // clear stream flags; we use underlying streambuf I/O, do not
+ // maintain ifstream flags, except eof
+ is.clear(is.rdstate() & std::ios::eofbit);
+ }
+
+ explicit input_stream_adapter(std::istream& i)
+ : is(i), sb(*i.rdbuf())
+ {}
+
+ // delete because of pointer members
+ input_stream_adapter(const input_stream_adapter&) = delete;
+ input_stream_adapter& operator=(input_stream_adapter&) = delete;
+ input_stream_adapter(input_stream_adapter&&) = delete;
+ input_stream_adapter& operator=(input_stream_adapter&&) = delete;
+
+ // std::istream/std::streambuf use std::char_traits<char>::to_int_type, to
+ // ensure that std::char_traits<char>::eof() and the character 0xFF do not
+ // end up as the same value, eg. 0xFFFFFFFF.
+ std::char_traits<char>::int_type get_character() override
+ {
+ auto res = sb.sbumpc();
+ // set eof manually, as we don't use the istream interface.
+ if (res == EOF)
+ {
+ is.clear(is.rdstate() | std::ios::eofbit);
+ }
+ return res;
+ }
+
+ private:
+ /// the associated input stream
+ std::istream& is;
+ std::streambuf& sb;
+};
+
+/// input adapter for buffer input
+class input_buffer_adapter : public input_adapter_protocol
+{
+ public:
+ input_buffer_adapter(const char* b, const std::size_t l) noexcept
+ : cursor(b), limit(b + l)
+ {}
+
+ // delete because of pointer members
+ input_buffer_adapter(const input_buffer_adapter&) = delete;
+ input_buffer_adapter& operator=(input_buffer_adapter&) = delete;
+ input_buffer_adapter(input_buffer_adapter&&) = delete;
+ input_buffer_adapter& operator=(input_buffer_adapter&&) = delete;
+ ~input_buffer_adapter() override = default;
+
+ std::char_traits<char>::int_type get_character() noexcept override
+ {
+ if (JSON_LIKELY(cursor < limit))
+ {
+ return std::char_traits<char>::to_int_type(*(cursor++));
+ }
+
+ return std::char_traits<char>::eof();
+ }
+
+ private:
+ /// pointer to the current character
+ const char* cursor;
+ /// pointer past the last character
+ const char* const limit;
+};
+
+template<typename WideStringType, size_t T>
+struct wide_string_input_helper
+{
+ // UTF-32
+ static void fill_buffer(const WideStringType& str,
+ size_t& current_wchar,
+ std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,
+ size_t& utf8_bytes_index,
+ size_t& utf8_bytes_filled)
+ {
+ utf8_bytes_index = 0;
+
+ if (current_wchar == str.size())
+ {
+ utf8_bytes[0] = std::char_traits<char>::eof();
+ utf8_bytes_filled = 1;
+ }
+ else
+ {
+ // get the current character
+ const auto wc = static_cast<unsigned int>(str[current_wchar++]);
+
+ // UTF-32 to UTF-8 encoding
+ if (wc < 0x80)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
+ utf8_bytes_filled = 1;
+ }
+ else if (wc <= 0x7FF)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u) & 0x1Fu));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 2;
+ }
+ else if (wc <= 0xFFFF)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u) & 0x0Fu));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
+ utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 3;
+ }
+ else if (wc <= 0x10FFFF)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | ((wc >> 18u) & 0x07u));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 12u) & 0x3Fu));
+ utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
+ utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 4;
+ }
+ else
+ {
+ // unknown character
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
+ utf8_bytes_filled = 1;
+ }
+ }
+ }
+};
+
+template<typename WideStringType>
+struct wide_string_input_helper<WideStringType, 2>
+{
+ // UTF-16
+ static void fill_buffer(const WideStringType& str,
+ size_t& current_wchar,
+ std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,
+ size_t& utf8_bytes_index,
+ size_t& utf8_bytes_filled)
+ {
+ utf8_bytes_index = 0;
+
+ if (current_wchar == str.size())
+ {
+ utf8_bytes[0] = std::char_traits<char>::eof();
+ utf8_bytes_filled = 1;
+ }
+ else
+ {
+ // get the current character
+ const auto wc = static_cast<unsigned int>(str[current_wchar++]);
+
+ // UTF-16 to UTF-8 encoding
+ if (wc < 0x80)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
+ utf8_bytes_filled = 1;
+ }
+ else if (wc <= 0x7FF)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u)));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 2;
+ }
+ else if (0xD800 > wc or wc >= 0xE000)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u)));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
+ utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 3;
+ }
+ else
+ {
+ if (current_wchar < str.size())
+ {
+ const auto wc2 = static_cast<unsigned int>(str[current_wchar++]);
+ const auto charcode = 0x10000u + (((wc & 0x3FFu) << 10u) | (wc2 & 0x3FFu));
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | (charcode >> 18u));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu));
+ utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu));
+ utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (charcode & 0x3Fu));
+ utf8_bytes_filled = 4;
+ }
+ else
+ {
+ // unknown character
+ ++current_wchar;
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
+ utf8_bytes_filled = 1;
+ }
+ }
+ }
+ }
+};
+
+template<typename WideStringType>
+class wide_string_input_adapter : public input_adapter_protocol
+{
+ public:
+ explicit wide_string_input_adapter(const WideStringType& w) noexcept
+ : str(w)
+ {}
+
+ std::char_traits<char>::int_type get_character() noexcept override
+ {
+ // check if buffer needs to be filled
+ if (utf8_bytes_index == utf8_bytes_filled)
+ {
+ fill_buffer<sizeof(typename WideStringType::value_type)>();
+
+ assert(utf8_bytes_filled > 0);
+ assert(utf8_bytes_index == 0);
+ }
+
+ // use buffer
+ assert(utf8_bytes_filled > 0);
+ assert(utf8_bytes_index < utf8_bytes_filled);
+ return utf8_bytes[utf8_bytes_index++];
+ }
+
+ private:
+ template<size_t T>
+ void fill_buffer()
+ {
+ wide_string_input_helper<WideStringType, T>::fill_buffer(str, current_wchar, utf8_bytes, utf8_bytes_index, utf8_bytes_filled);
+ }
+
+ /// the wstring to process
+ const WideStringType& str;
+
+ /// index of the current wchar in str
+ std::size_t current_wchar = 0;
+
+ /// a buffer for UTF-8 bytes
+ std::array<std::char_traits<char>::int_type, 4> utf8_bytes = {{0, 0, 0, 0}};
+
+ /// index to the utf8_codes array for the next valid byte
+ std::size_t utf8_bytes_index = 0;
+ /// number of valid bytes in the utf8_codes array
+ std::size_t utf8_bytes_filled = 0;
+};
+
+class input_adapter
+{
+ public:
+ // native support
+ input_adapter(std::FILE* file)
+ : ia(std::make_shared<file_input_adapter>(file)) {}
+ /// input adapter for input stream
+ input_adapter(std::istream& i)
+ : ia(std::make_shared<input_stream_adapter>(i)) {}
+
+ /// input adapter for input stream
+ input_adapter(std::istream&& i)
+ : ia(std::make_shared<input_stream_adapter>(i)) {}
+
+ input_adapter(const std::wstring& ws)
+ : ia(std::make_shared<wide_string_input_adapter<std::wstring>>(ws)) {}
+
+ input_adapter(const std::u16string& ws)
+ : ia(std::make_shared<wide_string_input_adapter<std::u16string>>(ws)) {}
+
+ input_adapter(const std::u32string& ws)
+ : ia(std::make_shared<wide_string_input_adapter<std::u32string>>(ws)) {}
+
+ /// input adapter for buffer
+ template<typename CharT,
+ typename std::enable_if<
+ std::is_pointer<CharT>::value and
+ std::is_integral<typename std::remove_pointer<CharT>::type>::value and
+ sizeof(typename std::remove_pointer<CharT>::type) == 1,
+ int>::type = 0>
+ input_adapter(CharT b, std::size_t l)
+ : ia(std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(b), l)) {}
+
+ // derived support
+
+ /// input adapter for string literal
+ template<typename CharT,
+ typename std::enable_if<
+ std::is_pointer<CharT>::value and
+ std::is_integral<typename std::remove_pointer<CharT>::type>::value and
+ sizeof(typename std::remove_pointer<CharT>::type) == 1,
+ int>::type = 0>
+ input_adapter(CharT b)
+ : input_adapter(reinterpret_cast<const char*>(b),
+ std::strlen(reinterpret_cast<const char*>(b))) {}
+
+ /// input adapter for iterator range with contiguous storage
+ template<class IteratorType,
+ typename std::enable_if<
+ std::is_same<typename iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value,
+ int>::type = 0>
+ input_adapter(IteratorType first, IteratorType last)
+ {
+#ifndef NDEBUG
+ // assertion to check that the iterator range is indeed contiguous,
+ // see http://stackoverflow.com/a/35008842/266378 for more discussion
+ const auto is_contiguous = std::accumulate(
+ first, last, std::pair<bool, int>(true, 0),
+ [&first](std::pair<bool, int> res, decltype(*first) val)
+ {
+ res.first &= (val == *(std::next(std::addressof(*first), res.second++)));
+ return res;
+ }).first;
+ assert(is_contiguous);
+#endif
+
+ // assertion to check that each element is 1 byte long
+ static_assert(
+ sizeof(typename iterator_traits<IteratorType>::value_type) == 1,
+ "each element in the iterator range must have the size of 1 byte");
+
+ const auto len = static_cast<size_t>(std::distance(first, last));
+ if (JSON_LIKELY(len > 0))
+ {
+ // there is at least one element: use the address of first
+ ia = std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(&(*first)), len);
+ }
+ else
+ {
+ // the address of first cannot be used: use nullptr
+ ia = std::make_shared<input_buffer_adapter>(nullptr, len);
+ }
+ }
+
+ /// input adapter for array
+ template<class T, std::size_t N>
+ input_adapter(T (&array)[N])
+ : input_adapter(std::begin(array), std::end(array)) {}
+
+ /// input adapter for contiguous container
+ template<class ContiguousContainer, typename
+ std::enable_if<not std::is_pointer<ContiguousContainer>::value and
+ std::is_base_of<std::random_access_iterator_tag, typename iterator_traits<decltype(std::begin(std::declval<ContiguousContainer const>()))>::iterator_category>::value,
+ int>::type = 0>
+ input_adapter(const ContiguousContainer& c)
+ : input_adapter(std::begin(c), std::end(c)) {}
+
+ operator input_adapter_t()
+ {
+ return ia;
+ }
+
+ private:
+ /// the actual adapter
+ input_adapter_t ia = nullptr;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/input/json_sax.hpp>
+
+
+#include <cassert> // assert
+#include <cstddef>
+#include <string> // string
+#include <utility> // move
+#include <vector> // vector
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+
+namespace nlohmann
+{
+
+/*!
+@brief SAX interface
+
+This class describes the SAX interface used by @ref nlohmann::json::sax_parse.
+Each function is called in different situations while the input is parsed. The
+boolean return value informs the parser whether to continue processing the
+input.
+*/
+template<typename BasicJsonType>
+struct json_sax
+{
+ /// type for (signed) integers
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ /// type for unsigned integers
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ /// type for floating-point numbers
+ using number_float_t = typename BasicJsonType::number_float_t;
+ /// type for strings
+ using string_t = typename BasicJsonType::string_t;
+
+ /*!
+ @brief a null value was read
+ @return whether parsing should proceed
+ */
+ virtual bool null() = 0;
+
+ /*!
+ @brief a boolean value was read
+ @param[in] val boolean value
+ @return whether parsing should proceed
+ */
+ virtual bool boolean(bool val) = 0;
+
+ /*!
+ @brief an integer number was read
+ @param[in] val integer value
+ @return whether parsing should proceed
+ */
+ virtual bool number_integer(number_integer_t val) = 0;
+
+ /*!
+ @brief an unsigned integer number was read
+ @param[in] val unsigned integer value
+ @return whether parsing should proceed
+ */
+ virtual bool number_unsigned(number_unsigned_t val) = 0;
+
+ /*!
+ @brief an floating-point number was read
+ @param[in] val floating-point value
+ @param[in] s raw token value
+ @return whether parsing should proceed
+ */
+ virtual bool number_float(number_float_t val, const string_t& s) = 0;
+
+ /*!
+ @brief a string was read
+ @param[in] val string value
+ @return whether parsing should proceed
+ @note It is safe to move the passed string.
+ */
+ virtual bool string(string_t& val) = 0;
+
+ /*!
+ @brief the beginning of an object was read
+ @param[in] elements number of object elements or -1 if unknown
+ @return whether parsing should proceed
+ @note binary formats may report the number of elements
+ */
+ virtual bool start_object(std::size_t elements) = 0;
+
+ /*!
+ @brief an object key was read
+ @param[in] val object key
+ @return whether parsing should proceed
+ @note It is safe to move the passed string.
+ */
+ virtual bool key(string_t& val) = 0;
+
+ /*!
+ @brief the end of an object was read
+ @return whether parsing should proceed
+ */
+ virtual bool end_object() = 0;
+
+ /*!
+ @brief the beginning of an array was read
+ @param[in] elements number of array elements or -1 if unknown
+ @return whether parsing should proceed
+ @note binary formats may report the number of elements
+ */
+ virtual bool start_array(std::size_t elements) = 0;
+
+ /*!
+ @brief the end of an array was read
+ @return whether parsing should proceed
+ */
+ virtual bool end_array() = 0;
+
+ /*!
+ @brief a parse error occurred
+ @param[in] position the position in the input where the error occurs
+ @param[in] last_token the last read token
+ @param[in] ex an exception object describing the error
+ @return whether parsing should proceed (must return false)
+ */
+ virtual bool parse_error(std::size_t position,
+ const std::string& last_token,
+ const detail::exception& ex) = 0;
+
+ virtual ~json_sax() = default;
+};
+
+
+namespace detail
+{
+/*!
+@brief SAX implementation to create a JSON value from SAX events
+
+This class implements the @ref json_sax interface and processes the SAX events
+to create a JSON value which makes it basically a DOM parser. The structure or
+hierarchy of the JSON value is managed by the stack `ref_stack` which contains
+a pointer to the respective array or object for each recursion depth.
+
+After successful parsing, the value that is passed by reference to the
+constructor contains the parsed value.
+
+@tparam BasicJsonType the JSON type
+*/
+template<typename BasicJsonType>
+class json_sax_dom_parser
+{
+ public:
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+
+ /*!
+ @param[in, out] r reference to a JSON value that is manipulated while
+ parsing
+ @param[in] allow_exceptions_ whether parse errors yield exceptions
+ */
+ explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_exceptions_ = true)
+ : root(r), allow_exceptions(allow_exceptions_)
+ {}
+
+ // make class move-only
+ json_sax_dom_parser(const json_sax_dom_parser&) = delete;
+ json_sax_dom_parser(json_sax_dom_parser&&) = default;
+ json_sax_dom_parser& operator=(const json_sax_dom_parser&) = delete;
+ json_sax_dom_parser& operator=(json_sax_dom_parser&&) = default;
+ ~json_sax_dom_parser() = default;
+
+ bool null()
+ {
+ handle_value(nullptr);
+ return true;
+ }
+
+ bool boolean(bool val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_integer(number_integer_t val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_unsigned(number_unsigned_t val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_float(number_float_t val, const string_t& /*unused*/)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool string(string_t& val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool start_object(std::size_t len)
+ {
+ ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
+
+ if (JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
+ {
+ JSON_THROW(out_of_range::create(408,
+ "excessive object size: " + std::to_string(len)));
+ }
+
+ return true;
+ }
+
+ bool key(string_t& val)
+ {
+ // add null at given key and store the reference for later
+ object_element = &(ref_stack.back()->m_value.object->operator[](val));
+ return true;
+ }
+
+ bool end_object()
+ {
+ ref_stack.pop_back();
+ return true;
+ }
+
+ bool start_array(std::size_t len)
+ {
+ ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
+
+ if (JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
+ {
+ JSON_THROW(out_of_range::create(408,
+ "excessive array size: " + std::to_string(len)));
+ }
+
+ return true;
+ }
+
+ bool end_array()
+ {
+ ref_stack.pop_back();
+ return true;
+ }
+
+ bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/,
+ const detail::exception& ex)
+ {
+ errored = true;
+ if (allow_exceptions)
+ {
+ // determine the proper exception type from the id
+ switch ((ex.id / 100) % 100)
+ {
+ case 1:
+ JSON_THROW(*static_cast<const detail::parse_error*>(&ex));
+ case 4:
+ JSON_THROW(*static_cast<const detail::out_of_range*>(&ex));
+ // LCOV_EXCL_START
+ case 2:
+ JSON_THROW(*static_cast<const detail::invalid_iterator*>(&ex));
+ case 3:
+ JSON_THROW(*static_cast<const detail::type_error*>(&ex));
+ case 5:
+ JSON_THROW(*static_cast<const detail::other_error*>(&ex));
+ default:
+ assert(false);
+ // LCOV_EXCL_STOP
+ }
+ }
+ return false;
+ }
+
+ constexpr bool is_errored() const
+ {
+ return errored;
+ }
+
+ private:
+ /*!
+ @invariant If the ref stack is empty, then the passed value will be the new
+ root.
+ @invariant If the ref stack contains a value, then it is an array or an
+ object to which we can add elements
+ */
+ template<typename Value>
+ BasicJsonType* handle_value(Value&& v)
+ {
+ if (ref_stack.empty())
+ {
+ root = BasicJsonType(std::forward<Value>(v));
+ return &root;
+ }
+
+ assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
+
+ if (ref_stack.back()->is_array())
+ {
+ ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v));
+ return &(ref_stack.back()->m_value.array->back());
+ }
+
+ assert(ref_stack.back()->is_object());
+ assert(object_element);
+ *object_element = BasicJsonType(std::forward<Value>(v));
+ return object_element;
+ }
+
+ /// the parsed JSON value
+ BasicJsonType& root;
+ /// stack to model hierarchy of values
+ std::vector<BasicJsonType*> ref_stack {};
+ /// helper to hold the reference for the next object element
+ BasicJsonType* object_element = nullptr;
+ /// whether a syntax error occurred
+ bool errored = false;
+ /// whether to throw exceptions in case of errors
+ const bool allow_exceptions = true;
+};
+
+template<typename BasicJsonType>
+class json_sax_dom_callback_parser
+{
+ public:
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using parser_callback_t = typename BasicJsonType::parser_callback_t;
+ using parse_event_t = typename BasicJsonType::parse_event_t;
+
+ json_sax_dom_callback_parser(BasicJsonType& r,
+ const parser_callback_t cb,
+ const bool allow_exceptions_ = true)
+ : root(r), callback(cb), allow_exceptions(allow_exceptions_)
+ {
+ keep_stack.push_back(true);
+ }
+
+ // make class move-only
+ json_sax_dom_callback_parser(const json_sax_dom_callback_parser&) = delete;
+ json_sax_dom_callback_parser(json_sax_dom_callback_parser&&) = default;
+ json_sax_dom_callback_parser& operator=(const json_sax_dom_callback_parser&) = delete;
+ json_sax_dom_callback_parser& operator=(json_sax_dom_callback_parser&&) = default;
+ ~json_sax_dom_callback_parser() = default;
+
+ bool null()
+ {
+ handle_value(nullptr);
+ return true;
+ }
+
+ bool boolean(bool val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_integer(number_integer_t val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_unsigned(number_unsigned_t val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_float(number_float_t val, const string_t& /*unused*/)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool string(string_t& val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool start_object(std::size_t len)
+ {
+ // check callback for object start
+ const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::object_start, discarded);
+ keep_stack.push_back(keep);
+
+ auto val = handle_value(BasicJsonType::value_t::object, true);
+ ref_stack.push_back(val.second);
+
+ // check object limit
+ if (ref_stack.back() and JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
+ {
+ JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len)));
+ }
+
+ return true;
+ }
+
+ bool key(string_t& val)
+ {
+ BasicJsonType k = BasicJsonType(val);
+
+ // check callback for key
+ const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::key, k);
+ key_keep_stack.push_back(keep);
+
+ // add discarded value at given key and store the reference for later
+ if (keep and ref_stack.back())
+ {
+ object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded);
+ }
+
+ return true;
+ }
+
+ bool end_object()
+ {
+ if (ref_stack.back() and not callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back()))
+ {
+ // discard object
+ *ref_stack.back() = discarded;
+ }
+
+ assert(not ref_stack.empty());
+ assert(not keep_stack.empty());
+ ref_stack.pop_back();
+ keep_stack.pop_back();
+
+ if (not ref_stack.empty() and ref_stack.back() and ref_stack.back()->is_object())
+ {
+ // remove discarded value
+ for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it)
+ {
+ if (it->is_discarded())
+ {
+ ref_stack.back()->erase(it);
+ break;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ bool start_array(std::size_t len)
+ {
+ const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::array_start, discarded);
+ keep_stack.push_back(keep);
+
+ auto val = handle_value(BasicJsonType::value_t::array, true);
+ ref_stack.push_back(val.second);
+
+ // check array limit
+ if (ref_stack.back() and JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
+ {
+ JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len)));
+ }
+
+ return true;
+ }
+
+ bool end_array()
+ {
+ bool keep = true;
+
+ if (ref_stack.back())
+ {
+ keep = callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back());
+ if (not keep)
+ {
+ // discard array
+ *ref_stack.back() = discarded;
+ }
+ }
+
+ assert(not ref_stack.empty());
+ assert(not keep_stack.empty());
+ ref_stack.pop_back();
+ keep_stack.pop_back();
+
+ // remove discarded value
+ if (not keep and not ref_stack.empty() and ref_stack.back()->is_array())
+ {
+ ref_stack.back()->m_value.array->pop_back();
+ }
+
+ return true;
+ }
+
+ bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/,
+ const detail::exception& ex)
+ {
+ errored = true;
+ if (allow_exceptions)
+ {
+ // determine the proper exception type from the id
+ switch ((ex.id / 100) % 100)
+ {
+ case 1:
+ JSON_THROW(*static_cast<const detail::parse_error*>(&ex));
+ case 4:
+ JSON_THROW(*static_cast<const detail::out_of_range*>(&ex));
+ // LCOV_EXCL_START
+ case 2:
+ JSON_THROW(*static_cast<const detail::invalid_iterator*>(&ex));
+ case 3:
+ JSON_THROW(*static_cast<const detail::type_error*>(&ex));
+ case 5:
+ JSON_THROW(*static_cast<const detail::other_error*>(&ex));
+ default:
+ assert(false);
+ // LCOV_EXCL_STOP
+ }
+ }
+ return false;
+ }
+
+ constexpr bool is_errored() const
+ {
+ return errored;
+ }
+
+ private:
+ /*!
+ @param[in] v value to add to the JSON value we build during parsing
+ @param[in] skip_callback whether we should skip calling the callback
+ function; this is required after start_array() and
+ start_object() SAX events, because otherwise we would call the
+ callback function with an empty array or object, respectively.
+
+ @invariant If the ref stack is empty, then the passed value will be the new
+ root.
+ @invariant If the ref stack contains a value, then it is an array or an
+ object to which we can add elements
+
+ @return pair of boolean (whether value should be kept) and pointer (to the
+ passed value in the ref_stack hierarchy; nullptr if not kept)
+ */
+ template<typename Value>
+ std::pair<bool, BasicJsonType*> handle_value(Value&& v, const bool skip_callback = false)
+ {
+ assert(not keep_stack.empty());
+
+ // do not handle this value if we know it would be added to a discarded
+ // container
+ if (not keep_stack.back())
+ {
+ return {false, nullptr};
+ }
+
+ // create value
+ auto value = BasicJsonType(std::forward<Value>(v));
+
+ // check callback
+ const bool keep = skip_callback or callback(static_cast<int>(ref_stack.size()), parse_event_t::value, value);
+
+ // do not handle this value if we just learnt it shall be discarded
+ if (not keep)
+ {
+ return {false, nullptr};
+ }
+
+ if (ref_stack.empty())
+ {
+ root = std::move(value);
+ return {true, &root};
+ }
+
+ // skip this value if we already decided to skip the parent
+ // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360)
+ if (not ref_stack.back())
+ {
+ return {false, nullptr};
+ }
+
+ // we now only expect arrays and objects
+ assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
+
+ // array
+ if (ref_stack.back()->is_array())
+ {
+ ref_stack.back()->m_value.array->push_back(std::move(value));
+ return {true, &(ref_stack.back()->m_value.array->back())};
+ }
+
+ // object
+ assert(ref_stack.back()->is_object());
+ // check if we should store an element for the current key
+ assert(not key_keep_stack.empty());
+ const bool store_element = key_keep_stack.back();
+ key_keep_stack.pop_back();
+
+ if (not store_element)
+ {
+ return {false, nullptr};
+ }
+
+ assert(object_element);
+ *object_element = std::move(value);
+ return {true, object_element};
+ }
+
+ /// the parsed JSON value
+ BasicJsonType& root;
+ /// stack to model hierarchy of values
+ std::vector<BasicJsonType*> ref_stack {};
+ /// stack to manage which values to keep
+ std::vector<bool> keep_stack {};
+ /// stack to manage which object keys to keep
+ std::vector<bool> key_keep_stack {};
+ /// helper to hold the reference for the next object element
+ BasicJsonType* object_element = nullptr;
+ /// whether a syntax error occurred
+ bool errored = false;
+ /// callback function
+ const parser_callback_t callback = nullptr;
+ /// whether to throw exceptions in case of errors
+ const bool allow_exceptions = true;
+ /// a discarded value for the callback
+ BasicJsonType discarded = BasicJsonType::value_t::discarded;
+};
+
+template<typename BasicJsonType>
+class json_sax_acceptor
+{
+ public:
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+
+ bool null()
+ {
+ return true;
+ }
+
+ bool boolean(bool /*unused*/)
+ {
+ return true;
+ }
+
+ bool number_integer(number_integer_t /*unused*/)
+ {
+ return true;
+ }
+
+ bool number_unsigned(number_unsigned_t /*unused*/)
+ {
+ return true;
+ }
+
+ bool number_float(number_float_t /*unused*/, const string_t& /*unused*/)
+ {
+ return true;
+ }
+
+ bool string(string_t& /*unused*/)
+ {
+ return true;
+ }
+
+ bool start_object(std::size_t /*unused*/ = std::size_t(-1))
+ {
+ return true;
+ }
+
+ bool key(string_t& /*unused*/)
+ {
+ return true;
+ }
+
+ bool end_object()
+ {
+ return true;
+ }
+
+ bool start_array(std::size_t /*unused*/ = std::size_t(-1))
+ {
+ return true;
+ }
+
+ bool end_array()
+ {
+ return true;
+ }
+
+ bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const detail::exception& /*unused*/)
+ {
+ return false;
+ }
+};
+} // namespace detail
+
+} // namespace nlohmann
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/is_sax.hpp>
+
+
+#include <cstdint> // size_t
+#include <utility> // declval
+#include <string> // string
+
+// #include <nlohmann/detail/meta/detected.hpp>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template <typename T>
+using null_function_t = decltype(std::declval<T&>().null());
+
+template <typename T>
+using boolean_function_t =
+ decltype(std::declval<T&>().boolean(std::declval<bool>()));
+
+template <typename T, typename Integer>
+using number_integer_function_t =
+ decltype(std::declval<T&>().number_integer(std::declval<Integer>()));
+
+template <typename T, typename Unsigned>
+using number_unsigned_function_t =
+ decltype(std::declval<T&>().number_unsigned(std::declval<Unsigned>()));
+
+template <typename T, typename Float, typename String>
+using number_float_function_t = decltype(std::declval<T&>().number_float(
+ std::declval<Float>(), std::declval<const String&>()));
+
+template <typename T, typename String>
+using string_function_t =
+ decltype(std::declval<T&>().string(std::declval<String&>()));
+
+template <typename T>
+using start_object_function_t =
+ decltype(std::declval<T&>().start_object(std::declval<std::size_t>()));
+
+template <typename T, typename String>
+using key_function_t =
+ decltype(std::declval<T&>().key(std::declval<String&>()));
+
+template <typename T>
+using end_object_function_t = decltype(std::declval<T&>().end_object());
+
+template <typename T>
+using start_array_function_t =
+ decltype(std::declval<T&>().start_array(std::declval<std::size_t>()));
+
+template <typename T>
+using end_array_function_t = decltype(std::declval<T&>().end_array());
+
+template <typename T, typename Exception>
+using parse_error_function_t = decltype(std::declval<T&>().parse_error(
+ std::declval<std::size_t>(), std::declval<const std::string&>(),
+ std::declval<const Exception&>()));
+
+template <typename SAX, typename BasicJsonType>
+struct is_sax
+{
+ private:
+ static_assert(is_basic_json<BasicJsonType>::value,
+ "BasicJsonType must be of type basic_json<...>");
+
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using exception_t = typename BasicJsonType::exception;
+
+ public:
+ static constexpr bool value =
+ is_detected_exact<bool, null_function_t, SAX>::value &&
+ is_detected_exact<bool, boolean_function_t, SAX>::value &&
+ is_detected_exact<bool, number_integer_function_t, SAX,
+ number_integer_t>::value &&
+ is_detected_exact<bool, number_unsigned_function_t, SAX,
+ number_unsigned_t>::value &&
+ is_detected_exact<bool, number_float_function_t, SAX, number_float_t,
+ string_t>::value &&
+ is_detected_exact<bool, string_function_t, SAX, string_t>::value &&
+ is_detected_exact<bool, start_object_function_t, SAX>::value &&
+ is_detected_exact<bool, key_function_t, SAX, string_t>::value &&
+ is_detected_exact<bool, end_object_function_t, SAX>::value &&
+ is_detected_exact<bool, start_array_function_t, SAX>::value &&
+ is_detected_exact<bool, end_array_function_t, SAX>::value &&
+ is_detected_exact<bool, parse_error_function_t, SAX, exception_t>::value;
+};
+
+template <typename SAX, typename BasicJsonType>
+struct is_sax_static_asserts
+{
+ private:
+ static_assert(is_basic_json<BasicJsonType>::value,
+ "BasicJsonType must be of type basic_json<...>");
+
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using exception_t = typename BasicJsonType::exception;
+
+ public:
+ static_assert(is_detected_exact<bool, null_function_t, SAX>::value,
+ "Missing/invalid function: bool null()");
+ static_assert(is_detected_exact<bool, boolean_function_t, SAX>::value,
+ "Missing/invalid function: bool boolean(bool)");
+ static_assert(is_detected_exact<bool, boolean_function_t, SAX>::value,
+ "Missing/invalid function: bool boolean(bool)");
+ static_assert(
+ is_detected_exact<bool, number_integer_function_t, SAX,
+ number_integer_t>::value,
+ "Missing/invalid function: bool number_integer(number_integer_t)");
+ static_assert(
+ is_detected_exact<bool, number_unsigned_function_t, SAX,
+ number_unsigned_t>::value,
+ "Missing/invalid function: bool number_unsigned(number_unsigned_t)");
+ static_assert(is_detected_exact<bool, number_float_function_t, SAX,
+ number_float_t, string_t>::value,
+ "Missing/invalid function: bool number_float(number_float_t, const string_t&)");
+ static_assert(
+ is_detected_exact<bool, string_function_t, SAX, string_t>::value,
+ "Missing/invalid function: bool string(string_t&)");
+ static_assert(is_detected_exact<bool, start_object_function_t, SAX>::value,
+ "Missing/invalid function: bool start_object(std::size_t)");
+ static_assert(is_detected_exact<bool, key_function_t, SAX, string_t>::value,
+ "Missing/invalid function: bool key(string_t&)");
+ static_assert(is_detected_exact<bool, end_object_function_t, SAX>::value,
+ "Missing/invalid function: bool end_object()");
+ static_assert(is_detected_exact<bool, start_array_function_t, SAX>::value,
+ "Missing/invalid function: bool start_array(std::size_t)");
+ static_assert(is_detected_exact<bool, end_array_function_t, SAX>::value,
+ "Missing/invalid function: bool end_array()");
+ static_assert(
+ is_detected_exact<bool, parse_error_function_t, SAX, exception_t>::value,
+ "Missing/invalid function: bool parse_error(std::size_t, const "
+ "std::string&, const exception&)");
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////////////
+// binary reader //
+///////////////////
+
+/*!
+@brief deserialization of CBOR, MessagePack, and UBJSON values
+*/
+template<typename BasicJsonType, typename SAX = json_sax_dom_parser<BasicJsonType>>
+class binary_reader
+{
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using json_sax_t = SAX;
+
+ public:
+ /*!
+ @brief create a binary reader
+
+ @param[in] adapter input adapter to read from
+ */
+ explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter))
+ {
+ (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
+ assert(ia);
+ }
+
+ // make class move-only
+ binary_reader(const binary_reader&) = delete;
+ binary_reader(binary_reader&&) = default;
+ binary_reader& operator=(const binary_reader&) = delete;
+ binary_reader& operator=(binary_reader&&) = default;
+ ~binary_reader() = default;
+
+ /*!
+ @param[in] format the binary format to parse
+ @param[in] sax_ a SAX event processor
+ @param[in] strict whether to expect the input to be consumed completed
+
+ @return
+ */
+ bool sax_parse(const input_format_t format,
+ json_sax_t* sax_,
+ const bool strict = true)
+ {
+ sax = sax_;
+ bool result = false;
+
+ switch (format)
+ {
+ case input_format_t::bson:
+ result = parse_bson_internal();
+ break;
+
+ case input_format_t::cbor:
+ result = parse_cbor_internal();
+ break;
+
+ case input_format_t::msgpack:
+ result = parse_msgpack_internal();
+ break;
+
+ case input_format_t::ubjson:
+ result = parse_ubjson_internal();
+ break;
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+
+ // strict mode: next byte must be EOF
+ if (result and strict)
+ {
+ if (format == input_format_t::ubjson)
+ {
+ get_ignore_noop();
+ }
+ else
+ {
+ get();
+ }
+
+ if (JSON_UNLIKELY(current != std::char_traits<char>::eof()))
+ {
+ return sax->parse_error(chars_read, get_token_string(),
+ parse_error::create(110, chars_read, exception_message(format, "expected end of input; last byte: 0x" + get_token_string(), "value")));
+ }
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief determine system byte order
+
+ @return true if and only if system's byte order is little endian
+
+ @note from http://stackoverflow.com/a/1001328/266378
+ */
+ static constexpr bool little_endianess(int num = 1) noexcept
+ {
+ return *reinterpret_cast<char*>(&num) == 1;
+ }
+
+ private:
+ //////////
+ // BSON //
+ //////////
+
+ /*!
+ @brief Reads in a BSON-object and passes it to the SAX-parser.
+ @return whether a valid BSON-value was passed to the SAX parser
+ */
+ bool parse_bson_internal()
+ {
+ std::int32_t document_size;
+ get_number<std::int32_t, true>(input_format_t::bson, document_size);
+
+ if (JSON_UNLIKELY(not sax->start_object(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_bson_element_list(/*is_array*/false)))
+ {
+ return false;
+ }
+
+ return sax->end_object();
+ }
+
+ /*!
+ @brief Parses a C-style string from the BSON input.
+ @param[in, out] result A reference to the string variable where the read
+ string is to be stored.
+ @return `true` if the \x00-byte indicating the end of the string was
+ encountered before the EOF; false` indicates an unexpected EOF.
+ */
+ bool get_bson_cstr(string_t& result)
+ {
+ auto out = std::back_inserter(result);
+ while (true)
+ {
+ get();
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::bson, "cstring")))
+ {
+ return false;
+ }
+ if (current == 0x00)
+ {
+ return true;
+ }
+ *out++ = static_cast<char>(current);
+ }
+
+ return true;
+ }
+
+ /*!
+ @brief Parses a zero-terminated string of length @a len from the BSON
+ input.
+ @param[in] len The length (including the zero-byte at the end) of the
+ string to be read.
+ @param[in, out] result A reference to the string variable where the read
+ string is to be stored.
+ @tparam NumberType The type of the length @a len
+ @pre len >= 1
+ @return `true` if the string was successfully parsed
+ */
+ template<typename NumberType>
+ bool get_bson_string(const NumberType len, string_t& result)
+ {
+ if (JSON_UNLIKELY(len < 1))
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "string length must be at least 1, is " + std::to_string(len), "string")));
+ }
+
+ return get_string(input_format_t::bson, len - static_cast<NumberType>(1), result) and get() != std::char_traits<char>::eof();
+ }
+
+ /*!
+ @brief Read a BSON document element of the given @a element_type.
+ @param[in] element_type The BSON element type, c.f. http://bsonspec.org/spec.html
+ @param[in] element_type_parse_position The position in the input stream,
+ where the `element_type` was read.
+ @warning Not all BSON element types are supported yet. An unsupported
+ @a element_type will give rise to a parse_error.114:
+ Unsupported BSON record type 0x...
+ @return whether a valid BSON-object/array was passed to the SAX parser
+ */
+ bool parse_bson_element_internal(const int element_type,
+ const std::size_t element_type_parse_position)
+ {
+ switch (element_type)
+ {
+ case 0x01: // double
+ {
+ double number;
+ return get_number<double, true>(input_format_t::bson, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 0x02: // string
+ {
+ std::int32_t len;
+ string_t value;
+ return get_number<std::int32_t, true>(input_format_t::bson, len) and get_bson_string(len, value) and sax->string(value);
+ }
+
+ case 0x03: // object
+ {
+ return parse_bson_internal();
+ }
+
+ case 0x04: // array
+ {
+ return parse_bson_array();
+ }
+
+ case 0x08: // boolean
+ {
+ return sax->boolean(get() != 0);
+ }
+
+ case 0x0A: // null
+ {
+ return sax->null();
+ }
+
+ case 0x10: // int32
+ {
+ std::int32_t value;
+ return get_number<std::int32_t, true>(input_format_t::bson, value) and sax->number_integer(value);
+ }
+
+ case 0x12: // int64
+ {
+ std::int64_t value;
+ return get_number<std::int64_t, true>(input_format_t::bson, value) and sax->number_integer(value);
+ }
+
+ default: // anything else not supported (yet)
+ {
+ std::array<char, 3> cr{{}};
+ (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(element_type));
+ return sax->parse_error(element_type_parse_position, std::string(cr.data()), parse_error::create(114, element_type_parse_position, "Unsupported BSON record type 0x" + std::string(cr.data())));
+ }
+ }
+ }
+
+ /*!
+ @brief Read a BSON element list (as specified in the BSON-spec)
+
+ The same binary layout is used for objects and arrays, hence it must be
+ indicated with the argument @a is_array which one is expected
+ (true --> array, false --> object).
+
+ @param[in] is_array Determines if the element list being read is to be
+ treated as an object (@a is_array == false), or as an
+ array (@a is_array == true).
+ @return whether a valid BSON-object/array was passed to the SAX parser
+ */
+ bool parse_bson_element_list(const bool is_array)
+ {
+ string_t key;
+ while (int element_type = get())
+ {
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::bson, "element list")))
+ {
+ return false;
+ }
+
+ const std::size_t element_type_parse_position = chars_read;
+ if (JSON_UNLIKELY(not get_bson_cstr(key)))
+ {
+ return false;
+ }
+
+ if (not is_array and not sax->key(key))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_bson_element_internal(element_type, element_type_parse_position)))
+ {
+ return false;
+ }
+
+ // get_bson_cstr only appends
+ key.clear();
+ }
+
+ return true;
+ }
+
+ /*!
+ @brief Reads an array from the BSON input and passes it to the SAX-parser.
+ @return whether a valid BSON-array was passed to the SAX parser
+ */
+ bool parse_bson_array()
+ {
+ std::int32_t document_size;
+ get_number<std::int32_t, true>(input_format_t::bson, document_size);
+
+ if (JSON_UNLIKELY(not sax->start_array(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_bson_element_list(/*is_array*/true)))
+ {
+ return false;
+ }
+
+ return sax->end_array();
+ }
+
+ //////////
+ // CBOR //
+ //////////
+
+ /*!
+ @param[in] get_char whether a new character should be retrieved from the
+ input (true, default) or whether the last read
+ character should be considered instead
+
+ @return whether a valid CBOR value was passed to the SAX parser
+ */
+ bool parse_cbor_internal(const bool get_char = true)
+ {
+ switch (get_char ? get() : current)
+ {
+ // EOF
+ case std::char_traits<char>::eof():
+ return unexpect_eof(input_format_t::cbor, "value");
+
+ // Integer 0x00..0x17 (0..23)
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case 0x09:
+ case 0x0A:
+ case 0x0B:
+ case 0x0C:
+ case 0x0D:
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ return sax->number_unsigned(static_cast<number_unsigned_t>(current));
+
+ case 0x18: // Unsigned integer (one-byte uint8_t follows)
+ {
+ std::uint8_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
+ }
+
+ case 0x19: // Unsigned integer (two-byte uint16_t follows)
+ {
+ std::uint16_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
+ }
+
+ case 0x1A: // Unsigned integer (four-byte uint32_t follows)
+ {
+ std::uint32_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
+ }
+
+ case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
+ {
+ std::uint64_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
+ }
+
+ // Negative integer -1-0x00..-1-0x17 (-1..-24)
+ case 0x20:
+ case 0x21:
+ case 0x22:
+ case 0x23:
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2A:
+ case 0x2B:
+ case 0x2C:
+ case 0x2D:
+ case 0x2E:
+ case 0x2F:
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
+
+ case 0x38: // Negative integer (one-byte uint8_t follows)
+ {
+ std::uint8_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
+ }
+
+ case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
+ {
+ std::uint16_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
+ }
+
+ case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
+ {
+ std::uint32_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
+ }
+
+ case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
+ {
+ std::uint64_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1)
+ - static_cast<number_integer_t>(number));
+ }
+
+ // UTF-8 string (0x00..0x17 bytes follow)
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6A:
+ case 0x6B:
+ case 0x6C:
+ case 0x6D:
+ case 0x6E:
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
+ case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
+ case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
+ case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
+ case 0x7F: // UTF-8 string (indefinite length)
+ {
+ string_t s;
+ return get_cbor_string(s) and sax->string(s);
+ }
+
+ // array (0x00..0x17 data items follow)
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ return get_cbor_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
+
+ case 0x98: // array (one-byte uint8_t for n follows)
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
+ }
+
+ case 0x99: // array (two-byte uint16_t for n follow)
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
+ }
+
+ case 0x9A: // array (four-byte uint32_t for n follow)
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
+ }
+
+ case 0x9B: // array (eight-byte uint64_t for n follow)
+ {
+ std::uint64_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
+ }
+
+ case 0x9F: // array (indefinite length)
+ return get_cbor_array(std::size_t(-1));
+
+ // map (0x00..0x17 pairs of data items follow)
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ return get_cbor_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
+
+ case 0xB8: // map (one-byte uint8_t for n follows)
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xB9: // map (two-byte uint16_t for n follow)
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xBA: // map (four-byte uint32_t for n follow)
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xBB: // map (eight-byte uint64_t for n follow)
+ {
+ std::uint64_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xBF: // map (indefinite length)
+ return get_cbor_object(std::size_t(-1));
+
+ case 0xF4: // false
+ return sax->boolean(false);
+
+ case 0xF5: // true
+ return sax->boolean(true);
+
+ case 0xF6: // null
+ return sax->null();
+
+ case 0xF9: // Half-Precision Float (two-byte IEEE 754)
+ {
+ const int byte1_raw = get();
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number")))
+ {
+ return false;
+ }
+ const int byte2_raw = get();
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number")))
+ {
+ return false;
+ }
+
+ const auto byte1 = static_cast<unsigned char>(byte1_raw);
+ const auto byte2 = static_cast<unsigned char>(byte2_raw);
+
+ // code from RFC 7049, Appendix D, Figure 3:
+ // As half-precision floating-point numbers were only added
+ // to IEEE 754 in 2008, today's programming platforms often
+ // still only have limited support for them. It is very
+ // easy to include at least decoding support for them even
+ // without such support. An example of a small decoder for
+ // half-precision floating-point numbers in the C language
+ // is shown in Fig. 3.
+ const auto half = static_cast<unsigned int>((byte1 << 8u) + byte2);
+ const double val = [&half]
+ {
+ const int exp = (half >> 10u) & 0x1Fu;
+ const unsigned int mant = half & 0x3FFu;
+ assert(0 <= exp and exp <= 32);
+ assert(0 <= mant and mant <= 1024);
+ switch (exp)
+ {
+ case 0:
+ return std::ldexp(mant, -24);
+ case 31:
+ return (mant == 0)
+ ? std::numeric_limits<double>::infinity()
+ : std::numeric_limits<double>::quiet_NaN();
+ default:
+ return std::ldexp(mant + 1024, exp - 25);
+ }
+ }();
+ return sax->number_float((half & 0x8000u) != 0
+ ? static_cast<number_float_t>(-val)
+ : static_cast<number_float_t>(val), "");
+ }
+
+ case 0xFA: // Single-Precision Float (four-byte IEEE 754)
+ {
+ float number;
+ return get_number(input_format_t::cbor, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
+ {
+ double number;
+ return get_number(input_format_t::cbor, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ default: // anything else (0xFF is handled inside the other types)
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value")));
+ }
+ }
+ }
+
+ /*!
+ @brief reads a CBOR string
+
+ This function first reads starting bytes to determine the expected
+ string length and then copies this number of bytes into a string.
+ Additionally, CBOR's strings with indefinite lengths are supported.
+
+ @param[out] result created string
+
+ @return whether string creation completed
+ */
+ bool get_cbor_string(string_t& result)
+ {
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::cbor, "string")))
+ {
+ return false;
+ }
+
+ switch (current)
+ {
+ // UTF-8 string (0x00..0x17 bytes follow)
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6A:
+ case 0x6B:
+ case 0x6C:
+ case 0x6D:
+ case 0x6E:
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ {
+ return get_string(input_format_t::cbor, static_cast<unsigned int>(current) & 0x1Fu, result);
+ }
+
+ case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
+ }
+
+ case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
+ }
+
+ case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
+ }
+
+ case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
+ {
+ std::uint64_t len;
+ return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
+ }
+
+ case 0x7F: // UTF-8 string (indefinite length)
+ {
+ while (get() != 0xFF)
+ {
+ string_t chunk;
+ if (not get_cbor_string(chunk))
+ {
+ return false;
+ }
+ result.append(chunk);
+ }
+ return true;
+ }
+
+ default:
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x" + last_token, "string")));
+ }
+ }
+ }
+
+ /*!
+ @param[in] len the length of the array or std::size_t(-1) for an
+ array of indefinite size
+ @return whether array creation completed
+ */
+ bool get_cbor_array(const std::size_t len)
+ {
+ if (JSON_UNLIKELY(not sax->start_array(len)))
+ {
+ return false;
+ }
+
+ if (len != std::size_t(-1))
+ {
+ for (std::size_t i = 0; i < len; ++i)
+ {
+ if (JSON_UNLIKELY(not parse_cbor_internal()))
+ {
+ return false;
+ }
+ }
+ }
+ else
+ {
+ while (get() != 0xFF)
+ {
+ if (JSON_UNLIKELY(not parse_cbor_internal(false)))
+ {
+ return false;
+ }
+ }
+ }
+
+ return sax->end_array();
+ }
+
+ /*!
+ @param[in] len the length of the object or std::size_t(-1) for an
+ object of indefinite size
+ @return whether object creation completed
+ */
+ bool get_cbor_object(const std::size_t len)
+ {
+ if (JSON_UNLIKELY(not sax->start_object(len)))
+ {
+ return false;
+ }
+
+ string_t key;
+ if (len != std::size_t(-1))
+ {
+ for (std::size_t i = 0; i < len; ++i)
+ {
+ get();
+ if (JSON_UNLIKELY(not get_cbor_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_cbor_internal()))
+ {
+ return false;
+ }
+ key.clear();
+ }
+ }
+ else
+ {
+ while (get() != 0xFF)
+ {
+ if (JSON_UNLIKELY(not get_cbor_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_cbor_internal()))
+ {
+ return false;
+ }
+ key.clear();
+ }
+ }
+
+ return sax->end_object();
+ }
+
+ /////////////
+ // MsgPack //
+ /////////////
+
+ /*!
+ @return whether a valid MessagePack value was passed to the SAX parser
+ */
+ bool parse_msgpack_internal()
+ {
+ switch (get())
+ {
+ // EOF
+ case std::char_traits<char>::eof():
+ return unexpect_eof(input_format_t::msgpack, "value");
+
+ // positive fixint
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case 0x09:
+ case 0x0A:
+ case 0x0B:
+ case 0x0C:
+ case 0x0D:
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1A:
+ case 0x1B:
+ case 0x1C:
+ case 0x1D:
+ case 0x1E:
+ case 0x1F:
+ case 0x20:
+ case 0x21:
+ case 0x22:
+ case 0x23:
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2A:
+ case 0x2B:
+ case 0x2C:
+ case 0x2D:
+ case 0x2E:
+ case 0x2F:
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ case 0x38:
+ case 0x39:
+ case 0x3A:
+ case 0x3B:
+ case 0x3C:
+ case 0x3D:
+ case 0x3E:
+ case 0x3F:
+ case 0x40:
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ case 0x44:
+ case 0x45:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x49:
+ case 0x4A:
+ case 0x4B:
+ case 0x4C:
+ case 0x4D:
+ case 0x4E:
+ case 0x4F:
+ case 0x50:
+ case 0x51:
+ case 0x52:
+ case 0x53:
+ case 0x54:
+ case 0x55:
+ case 0x56:
+ case 0x57:
+ case 0x58:
+ case 0x59:
+ case 0x5A:
+ case 0x5B:
+ case 0x5C:
+ case 0x5D:
+ case 0x5E:
+ case 0x5F:
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6A:
+ case 0x6B:
+ case 0x6C:
+ case 0x6D:
+ case 0x6E:
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ case 0x78:
+ case 0x79:
+ case 0x7A:
+ case 0x7B:
+ case 0x7C:
+ case 0x7D:
+ case 0x7E:
+ case 0x7F:
+ return sax->number_unsigned(static_cast<number_unsigned_t>(current));
+
+ // fixmap
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ return get_msgpack_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
+
+ // fixarray
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ return get_msgpack_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
+
+ // fixstr
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF:
+ {
+ string_t s;
+ return get_msgpack_string(s) and sax->string(s);
+ }
+
+ case 0xC0: // nil
+ return sax->null();
+
+ case 0xC2: // false
+ return sax->boolean(false);
+
+ case 0xC3: // true
+ return sax->boolean(true);
+
+ case 0xCA: // float 32
+ {
+ float number;
+ return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 0xCB: // float 64
+ {
+ double number;
+ return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 0xCC: // uint 8
+ {
+ std::uint8_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
+ }
+
+ case 0xCD: // uint 16
+ {
+ std::uint16_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
+ }
+
+ case 0xCE: // uint 32
+ {
+ std::uint32_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
+ }
+
+ case 0xCF: // uint 64
+ {
+ std::uint64_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
+ }
+
+ case 0xD0: // int 8
+ {
+ std::int8_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
+ }
+
+ case 0xD1: // int 16
+ {
+ std::int16_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
+ }
+
+ case 0xD2: // int 32
+ {
+ std::int32_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
+ }
+
+ case 0xD3: // int 64
+ {
+ std::int64_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
+ }
+
+ case 0xD9: // str 8
+ case 0xDA: // str 16
+ case 0xDB: // str 32
+ {
+ string_t s;
+ return get_msgpack_string(s) and sax->string(s);
+ }
+
+ case 0xDC: // array 16
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast<std::size_t>(len));
+ }
+
+ case 0xDD: // array 32
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast<std::size_t>(len));
+ }
+
+ case 0xDE: // map 16
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xDF: // map 32
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast<std::size_t>(len));
+ }
+
+ // negative fixint
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4:
+ case 0xF5:
+ case 0xF6:
+ case 0xF7:
+ case 0xF8:
+ case 0xF9:
+ case 0xFA:
+ case 0xFB:
+ case 0xFC:
+ case 0xFD:
+ case 0xFE:
+ case 0xFF:
+ return sax->number_integer(static_cast<std::int8_t>(current));
+
+ default: // anything else
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::msgpack, "invalid byte: 0x" + last_token, "value")));
+ }
+ }
+ }
+
+ /*!
+ @brief reads a MessagePack string
+
+ This function first reads starting bytes to determine the expected
+ string length and then copies this number of bytes into a string.
+
+ @param[out] result created string
+
+ @return whether string creation completed
+ */
+ bool get_msgpack_string(string_t& result)
+ {
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::msgpack, "string")))
+ {
+ return false;
+ }
+
+ switch (current)
+ {
+ // fixstr
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF:
+ {
+ return get_string(input_format_t::msgpack, static_cast<unsigned int>(current) & 0x1Fu, result);
+ }
+
+ case 0xD9: // str 8
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
+ }
+
+ case 0xDA: // str 16
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
+ }
+
+ case 0xDB: // str 32
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
+ }
+
+ default:
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::msgpack, "expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x" + last_token, "string")));
+ }
+ }
+ }
+
+ /*!
+ @param[in] len the length of the array
+ @return whether array creation completed
+ */
+ bool get_msgpack_array(const std::size_t len)
+ {
+ if (JSON_UNLIKELY(not sax->start_array(len)))
+ {
+ return false;
+ }
+
+ for (std::size_t i = 0; i < len; ++i)
+ {
+ if (JSON_UNLIKELY(not parse_msgpack_internal()))
+ {
+ return false;
+ }
+ }
+
+ return sax->end_array();
+ }
+
+ /*!
+ @param[in] len the length of the object
+ @return whether object creation completed
+ */
+ bool get_msgpack_object(const std::size_t len)
+ {
+ if (JSON_UNLIKELY(not sax->start_object(len)))
+ {
+ return false;
+ }
+
+ string_t key;
+ for (std::size_t i = 0; i < len; ++i)
+ {
+ get();
+ if (JSON_UNLIKELY(not get_msgpack_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_msgpack_internal()))
+ {
+ return false;
+ }
+ key.clear();
+ }
+
+ return sax->end_object();
+ }
+
+ ////////////
+ // UBJSON //
+ ////////////
+
+ /*!
+ @param[in] get_char whether a new character should be retrieved from the
+ input (true, default) or whether the last read
+ character should be considered instead
+
+ @return whether a valid UBJSON value was passed to the SAX parser
+ */
+ bool parse_ubjson_internal(const bool get_char = true)
+ {
+ return get_ubjson_value(get_char ? get_ignore_noop() : current);
+ }
+
+ /*!
+ @brief reads a UBJSON string
+
+ This function is either called after reading the 'S' byte explicitly
+ indicating a string, or in case of an object key where the 'S' byte can be
+ left out.
+
+ @param[out] result created string
+ @param[in] get_char whether a new character should be retrieved from the
+ input (true, default) or whether the last read
+ character should be considered instead
+
+ @return whether string creation completed
+ */
+ bool get_ubjson_string(string_t& result, const bool get_char = true)
+ {
+ if (get_char)
+ {
+ get(); // TODO(niels): may we ignore N here?
+ }
+
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value")))
+ {
+ return false;
+ }
+
+ switch (current)
+ {
+ case 'U':
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ case 'i':
+ {
+ std::int8_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ case 'I':
+ {
+ std::int16_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ case 'l':
+ {
+ std::int32_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ case 'L':
+ {
+ std::int64_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ default:
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L); last byte: 0x" + last_token, "string")));
+ }
+ }
+
+ /*!
+ @param[out] result determined size
+ @return whether size determination completed
+ */
+ bool get_ubjson_size_value(std::size_t& result)
+ {
+ switch (get_ignore_noop())
+ {
+ case 'U':
+ {
+ std::uint8_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ case 'i':
+ {
+ std::int8_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ case 'I':
+ {
+ std::int16_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ case 'l':
+ {
+ std::int32_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ case 'L':
+ {
+ std::int64_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ default:
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L) after '#'; last byte: 0x" + last_token, "size")));
+ }
+ }
+ }
+
+ /*!
+ @brief determine the type and size for a container
+
+ In the optimized UBJSON format, a type and a size can be provided to allow
+ for a more compact representation.
+
+ @param[out] result pair of the size and the type
+
+ @return whether pair creation completed
+ */
+ bool get_ubjson_size_type(std::pair<std::size_t, int>& result)
+ {
+ result.first = string_t::npos; // size
+ result.second = 0; // type
+
+ get_ignore_noop();
+
+ if (current == '$')
+ {
+ result.second = get(); // must not ignore 'N', because 'N' maybe the type
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "type")))
+ {
+ return false;
+ }
+
+ get_ignore_noop();
+ if (JSON_UNLIKELY(current != '#'))
+ {
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value")))
+ {
+ return false;
+ }
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "expected '#' after type information; last byte: 0x" + last_token, "size")));
+ }
+
+ return get_ubjson_size_value(result.first);
+ }
+
+ if (current == '#')
+ {
+ return get_ubjson_size_value(result.first);
+ }
+
+ return true;
+ }
+
+ /*!
+ @param prefix the previously read or set type prefix
+ @return whether value creation completed
+ */
+ bool get_ubjson_value(const int prefix)
+ {
+ switch (prefix)
+ {
+ case std::char_traits<char>::eof(): // EOF
+ return unexpect_eof(input_format_t::ubjson, "value");
+
+ case 'T': // true
+ return sax->boolean(true);
+ case 'F': // false
+ return sax->boolean(false);
+
+ case 'Z': // null
+ return sax->null();
+
+ case 'U':
+ {
+ std::uint8_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_unsigned(number);
+ }
+
+ case 'i':
+ {
+ std::int8_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
+ }
+
+ case 'I':
+ {
+ std::int16_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
+ }
+
+ case 'l':
+ {
+ std::int32_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
+ }
+
+ case 'L':
+ {
+ std::int64_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
+ }
+
+ case 'd':
+ {
+ float number;
+ return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 'D':
+ {
+ double number;
+ return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 'C': // char
+ {
+ get();
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "char")))
+ {
+ return false;
+ }
+ if (JSON_UNLIKELY(current > 127))
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + last_token, "char")));
+ }
+ string_t s(1, static_cast<char>(current));
+ return sax->string(s);
+ }
+
+ case 'S': // string
+ {
+ string_t s;
+ return get_ubjson_string(s) and sax->string(s);
+ }
+
+ case '[': // array
+ return get_ubjson_array();
+
+ case '{': // object
+ return get_ubjson_object();
+
+ default: // anything else
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "invalid byte: 0x" + last_token, "value")));
+ }
+ }
+ }
+
+ /*!
+ @return whether array creation completed
+ */
+ bool get_ubjson_array()
+ {
+ std::pair<std::size_t, int> size_and_type;
+ if (JSON_UNLIKELY(not get_ubjson_size_type(size_and_type)))
+ {
+ return false;
+ }
+
+ if (size_and_type.first != string_t::npos)
+ {
+ if (JSON_UNLIKELY(not sax->start_array(size_and_type.first)))
+ {
+ return false;
+ }
+
+ if (size_and_type.second != 0)
+ {
+ if (size_and_type.second != 'N')
+ {
+ for (std::size_t i = 0; i < size_and_type.first; ++i)
+ {
+ if (JSON_UNLIKELY(not get_ubjson_value(size_and_type.second)))
+ {
+ return false;
+ }
+ }
+ }
+ }
+ else
+ {
+ for (std::size_t i = 0; i < size_and_type.first; ++i)
+ {
+ if (JSON_UNLIKELY(not parse_ubjson_internal()))
+ {
+ return false;
+ }
+ }
+ }
+ }
+ else
+ {
+ if (JSON_UNLIKELY(not sax->start_array(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ while (current != ']')
+ {
+ if (JSON_UNLIKELY(not parse_ubjson_internal(false)))
+ {
+ return false;
+ }
+ get_ignore_noop();
+ }
+ }
+
+ return sax->end_array();
+ }
+
+ /*!
+ @return whether object creation completed
+ */
+ bool get_ubjson_object()
+ {
+ std::pair<std::size_t, int> size_and_type;
+ if (JSON_UNLIKELY(not get_ubjson_size_type(size_and_type)))
+ {
+ return false;
+ }
+
+ string_t key;
+ if (size_and_type.first != string_t::npos)
+ {
+ if (JSON_UNLIKELY(not sax->start_object(size_and_type.first)))
+ {
+ return false;
+ }
+
+ if (size_and_type.second != 0)
+ {
+ for (std::size_t i = 0; i < size_and_type.first; ++i)
+ {
+ if (JSON_UNLIKELY(not get_ubjson_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+ if (JSON_UNLIKELY(not get_ubjson_value(size_and_type.second)))
+ {
+ return false;
+ }
+ key.clear();
+ }
+ }
+ else
+ {
+ for (std::size_t i = 0; i < size_and_type.first; ++i)
+ {
+ if (JSON_UNLIKELY(not get_ubjson_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+ if (JSON_UNLIKELY(not parse_ubjson_internal()))
+ {
+ return false;
+ }
+ key.clear();
+ }
+ }
+ }
+ else
+ {
+ if (JSON_UNLIKELY(not sax->start_object(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ while (current != '}')
+ {
+ if (JSON_UNLIKELY(not get_ubjson_string(key, false) or not sax->key(key)))
+ {
+ return false;
+ }
+ if (JSON_UNLIKELY(not parse_ubjson_internal()))
+ {
+ return false;
+ }
+ get_ignore_noop();
+ key.clear();
+ }
+ }
+
+ return sax->end_object();
+ }
+
+ ///////////////////////
+ // Utility functions //
+ ///////////////////////
+
+ /*!
+ @brief get next character from the input
+
+ This function provides the interface to the used input adapter. It does
+ not throw in case the input reached EOF, but returns a -'ve valued
+ `std::char_traits<char>::eof()` in that case.
+
+ @return character read from the input
+ */
+ int get()
+ {
+ ++chars_read;
+ return current = ia->get_character();
+ }
+
+ /*!
+ @return character read from the input after ignoring all 'N' entries
+ */
+ int get_ignore_noop()
+ {
+ do
+ {
+ get();
+ }
+ while (current == 'N');
+
+ return current;
+ }
+
+ /*
+ @brief read a number from the input
+
+ @tparam NumberType the type of the number
+ @param[in] format the current format (for diagnostics)
+ @param[out] result number of type @a NumberType
+
+ @return whether conversion completed
+
+ @note This function needs to respect the system's endianess, because
+ bytes in CBOR, MessagePack, and UBJSON are stored in network order
+ (big endian) and therefore need reordering on little endian systems.
+ */
+ template<typename NumberType, bool InputIsLittleEndian = false>
+ bool get_number(const input_format_t format, NumberType& result)
+ {
+ // step 1: read input into array with system's byte order
+ std::array<std::uint8_t, sizeof(NumberType)> vec;
+ for (std::size_t i = 0; i < sizeof(NumberType); ++i)
+ {
+ get();
+ if (JSON_UNLIKELY(not unexpect_eof(format, "number")))
+ {
+ return false;
+ }
+
+ // reverse byte order prior to conversion if necessary
+ if (is_little_endian != InputIsLittleEndian)
+ {
+ vec[sizeof(NumberType) - i - 1] = static_cast<std::uint8_t>(current);
+ }
+ else
+ {
+ vec[i] = static_cast<std::uint8_t>(current); // LCOV_EXCL_LINE
+ }
+ }
+
+ // step 2: convert array into number of type T and return
+ std::memcpy(&result, vec.data(), sizeof(NumberType));
+ return true;
+ }
+
+ /*!
+ @brief create a string by reading characters from the input
+
+ @tparam NumberType the type of the number
+ @param[in] format the current format (for diagnostics)
+ @param[in] len number of characters to read
+ @param[out] result string created by reading @a len bytes
+
+ @return whether string creation completed
+
+ @note We can not reserve @a len bytes for the result, because @a len
+ may be too large. Usually, @ref unexpect_eof() detects the end of
+ the input before we run out of string memory.
+ */
+ template<typename NumberType>
+ bool get_string(const input_format_t format,
+ const NumberType len,
+ string_t& result)
+ {
+ bool success = true;
+ std::generate_n(std::back_inserter(result), len, [this, &success, &format]()
+ {
+ get();
+ if (JSON_UNLIKELY(not unexpect_eof(format, "string")))
+ {
+ success = false;
+ }
+ return static_cast<char>(current);
+ });
+ return success;
+ }
+
+ /*!
+ @param[in] format the current format (for diagnostics)
+ @param[in] context further context information (for diagnostics)
+ @return whether the last read character is not EOF
+ */
+ bool unexpect_eof(const input_format_t format, const char* context) const
+ {
+ if (JSON_UNLIKELY(current == std::char_traits<char>::eof()))
+ {
+ return sax->parse_error(chars_read, "<end of file>",
+ parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context)));
+ }
+ return true;
+ }
+
+ /*!
+ @return a string representation of the last read byte
+ */
+ std::string get_token_string() const
+ {
+ std::array<char, 3> cr{{}};
+ (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(current));
+ return std::string{cr.data()};
+ }
+
+ /*!
+ @param[in] format the current format
+ @param[in] detail a detailed error message
+ @param[in] context further contect information
+ @return a message string to use in the parse_error exceptions
+ */
+ std::string exception_message(const input_format_t format,
+ const std::string& detail,
+ const std::string& context) const
+ {
+ std::string error_msg = "syntax error while parsing ";
+
+ switch (format)
+ {
+ case input_format_t::cbor:
+ error_msg += "CBOR";
+ break;
+
+ case input_format_t::msgpack:
+ error_msg += "MessagePack";
+ break;
+
+ case input_format_t::ubjson:
+ error_msg += "UBJSON";
+ break;
+
+ case input_format_t::bson:
+ error_msg += "BSON";
+ break;
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+
+ return error_msg + " " + context + ": " + detail;
+ }
+
+ private:
+ /// input adapter
+ input_adapter_t ia = nullptr;
+
+ /// the current character
+ int current = std::char_traits<char>::eof();
+
+ /// the number of characters read
+ std::size_t chars_read = 0;
+
+ /// whether we can assume little endianess
+ const bool is_little_endian = little_endianess();
+
+ /// the SAX parser
+ json_sax_t* sax = nullptr;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/input/input_adapters.hpp>
+
+// #include <nlohmann/detail/input/lexer.hpp>
+
+
+#include <array> // array
+#include <clocale> // localeconv
+#include <cstddef> // size_t
+#include <cstdio> // snprintf
+#include <cstdlib> // strtof, strtod, strtold, strtoll, strtoull
+#include <initializer_list> // initializer_list
+#include <string> // char_traits, string
+#include <utility> // move
+#include <vector> // vector
+
+// #include <nlohmann/detail/input/input_adapters.hpp>
+
+// #include <nlohmann/detail/input/position_t.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////
+// lexer //
+///////////
+
+/*!
+@brief lexical analysis
+
+This class organizes the lexical analysis during JSON deserialization.
+*/
+template<typename BasicJsonType>
+class lexer
+{
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+
+ public:
+ /// token types for the parser
+ enum class token_type
+ {
+ uninitialized, ///< indicating the scanner is uninitialized
+ literal_true, ///< the `true` literal
+ literal_false, ///< the `false` literal
+ literal_null, ///< the `null` literal
+ value_string, ///< a string -- use get_string() for actual value
+ value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value
+ value_integer, ///< a signed integer -- use get_number_integer() for actual value
+ value_float, ///< an floating point number -- use get_number_float() for actual value
+ begin_array, ///< the character for array begin `[`
+ begin_object, ///< the character for object begin `{`
+ end_array, ///< the character for array end `]`
+ end_object, ///< the character for object end `}`
+ name_separator, ///< the name separator `:`
+ value_separator, ///< the value separator `,`
+ parse_error, ///< indicating a parse error
+ end_of_input, ///< indicating the end of the input buffer
+ literal_or_value ///< a literal or the begin of a value (only for diagnostics)
+ };
+
+ /// return name of values of type token_type (only used for errors)
+ static const char* token_type_name(const token_type t) noexcept
+ {
+ switch (t)
+ {
+ case token_type::uninitialized:
+ return "<uninitialized>";
+ case token_type::literal_true:
+ return "true literal";
+ case token_type::literal_false:
+ return "false literal";
+ case token_type::literal_null:
+ return "null literal";
+ case token_type::value_string:
+ return "string literal";
+ case lexer::token_type::value_unsigned:
+ case lexer::token_type::value_integer:
+ case lexer::token_type::value_float:
+ return "number literal";
+ case token_type::begin_array:
+ return "'['";
+ case token_type::begin_object:
+ return "'{'";
+ case token_type::end_array:
+ return "']'";
+ case token_type::end_object:
+ return "'}'";
+ case token_type::name_separator:
+ return "':'";
+ case token_type::value_separator:
+ return "','";
+ case token_type::parse_error:
+ return "<parse error>";
+ case token_type::end_of_input:
+ return "end of input";
+ case token_type::literal_or_value:
+ return "'[', '{', or a literal";
+ // LCOV_EXCL_START
+ default: // catch non-enum values
+ return "unknown token";
+ // LCOV_EXCL_STOP
+ }
+ }
+
+ explicit lexer(detail::input_adapter_t&& adapter)
+ : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {}
+
+ // delete because of pointer members
+ lexer(const lexer&) = delete;
+ lexer(lexer&&) = delete;
+ lexer& operator=(lexer&) = delete;
+ lexer& operator=(lexer&&) = delete;
+ ~lexer() = default;
+
+ private:
+ /////////////////////
+ // locales
+ /////////////////////
+
+ /// return the locale-dependent decimal point
+ static char get_decimal_point() noexcept
+ {
+ const auto loc = localeconv();
+ assert(loc != nullptr);
+ return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point);
+ }
+
+ /////////////////////
+ // scan functions
+ /////////////////////
+
+ /*!
+ @brief get codepoint from 4 hex characters following `\u`
+
+ For input "\u c1 c2 c3 c4" the codepoint is:
+ (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4
+ = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0)
+
+ Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f'
+ must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The
+ conversion is done by subtracting the offset (0x30, 0x37, and 0x57)
+ between the ASCII value of the character and the desired integer value.
+
+ @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or
+ non-hex character)
+ */
+ int get_codepoint()
+ {
+ // this function only makes sense after reading `\u`
+ assert(current == 'u');
+ int codepoint = 0;
+
+ const auto factors = { 12u, 8u, 4u, 0u };
+ for (const auto factor : factors)
+ {
+ get();
+
+ if (current >= '0' and current <= '9')
+ {
+ codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x30u) << factor);
+ }
+ else if (current >= 'A' and current <= 'F')
+ {
+ codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x37u) << factor);
+ }
+ else if (current >= 'a' and current <= 'f')
+ {
+ codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x57u) << factor);
+ }
+ else
+ {
+ return -1;
+ }
+ }
+
+ assert(0x0000 <= codepoint and codepoint <= 0xFFFF);
+ return codepoint;
+ }
+
+ /*!
+ @brief check if the next byte(s) are inside a given range
+
+ Adds the current byte and, for each passed range, reads a new byte and
+ checks if it is inside the range. If a violation was detected, set up an
+ error message and return false. Otherwise, return true.
+
+ @param[in] ranges list of integers; interpreted as list of pairs of
+ inclusive lower and upper bound, respectively
+
+ @pre The passed list @a ranges must have 2, 4, or 6 elements; that is,
+ 1, 2, or 3 pairs. This precondition is enforced by an assertion.
+
+ @return true if and only if no range violation was detected
+ */
+ bool next_byte_in_range(std::initializer_list<int> ranges)
+ {
+ assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6);
+ add(current);
+
+ for (auto range = ranges.begin(); range != ranges.end(); ++range)
+ {
+ get();
+ if (JSON_LIKELY(*range <= current and current <= *(++range)))
+ {
+ add(current);
+ }
+ else
+ {
+ error_message = "invalid string: ill-formed UTF-8 byte";
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /*!
+ @brief scan a string literal
+
+ This function scans a string according to Sect. 7 of RFC 7159. While
+ scanning, bytes are escaped and copied into buffer token_buffer. Then the
+ function returns successfully, token_buffer is *not* null-terminated (as it
+ may contain \0 bytes), and token_buffer.size() is the number of bytes in the
+ string.
+
+ @return token_type::value_string if string could be successfully scanned,
+ token_type::parse_error otherwise
+
+ @note In case of errors, variable error_message contains a textual
+ description.
+ */
+ token_type scan_string()
+ {
+ // reset token_buffer (ignore opening quote)
+ reset();
+
+ // we entered the function by reading an open quote
+ assert(current == '\"');
+
+ while (true)
+ {
+ // get next character
+ switch (get())
+ {
+ // end of file while parsing string
+ case std::char_traits<char>::eof():
+ {
+ error_message = "invalid string: missing closing quote";
+ return token_type::parse_error;
+ }
+
+ // closing quote
+ case '\"':
+ {
+ return token_type::value_string;
+ }
+
+ // escapes
+ case '\\':
+ {
+ switch (get())
+ {
+ // quotation mark
+ case '\"':
+ add('\"');
+ break;
+ // reverse solidus
+ case '\\':
+ add('\\');
+ break;
+ // solidus
+ case '/':
+ add('/');
+ break;
+ // backspace
+ case 'b':
+ add('\b');
+ break;
+ // form feed
+ case 'f':
+ add('\f');
+ break;
+ // line feed
+ case 'n':
+ add('\n');
+ break;
+ // carriage return
+ case 'r':
+ add('\r');
+ break;
+ // tab
+ case 't':
+ add('\t');
+ break;
+
+ // unicode escapes
+ case 'u':
+ {
+ const int codepoint1 = get_codepoint();
+ int codepoint = codepoint1; // start with codepoint1
+
+ if (JSON_UNLIKELY(codepoint1 == -1))
+ {
+ error_message = "invalid string: '\\u' must be followed by 4 hex digits";
+ return token_type::parse_error;
+ }
+
+ // check if code point is a high surrogate
+ if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF)
+ {
+ // expect next \uxxxx entry
+ if (JSON_LIKELY(get() == '\\' and get() == 'u'))
+ {
+ const int codepoint2 = get_codepoint();
+
+ if (JSON_UNLIKELY(codepoint2 == -1))
+ {
+ error_message = "invalid string: '\\u' must be followed by 4 hex digits";
+ return token_type::parse_error;
+ }
+
+ // check if codepoint2 is a low surrogate
+ if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF))
+ {
+ // overwrite codepoint
+ codepoint = static_cast<int>(
+ // high surrogate occupies the most significant 22 bits
+ (static_cast<unsigned int>(codepoint1) << 10u)
+ // low surrogate occupies the least significant 15 bits
+ + static_cast<unsigned int>(codepoint2)
+ // there is still the 0xD800, 0xDC00 and 0x10000 noise
+ // in the result so we have to subtract with:
+ // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00
+ - 0x35FDC00u);
+ }
+ else
+ {
+ error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF";
+ return token_type::parse_error;
+ }
+ }
+ else
+ {
+ error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF";
+ return token_type::parse_error;
+ }
+ }
+ else
+ {
+ if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF))
+ {
+ error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF";
+ return token_type::parse_error;
+ }
+ }
+
+ // result of the above calculation yields a proper codepoint
+ assert(0x00 <= codepoint and codepoint <= 0x10FFFF);
+
+ // translate codepoint into bytes
+ if (codepoint < 0x80)
+ {
+ // 1-byte characters: 0xxxxxxx (ASCII)
+ add(codepoint);
+ }
+ else if (codepoint <= 0x7FF)
+ {
+ // 2-byte characters: 110xxxxx 10xxxxxx
+ add(static_cast<int>(0xC0u | (static_cast<unsigned int>(codepoint) >> 6u)));
+ add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
+ }
+ else if (codepoint <= 0xFFFF)
+ {
+ // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx
+ add(static_cast<int>(0xE0u | (static_cast<unsigned int>(codepoint) >> 12u)));
+ add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
+ add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
+ }
+ else
+ {
+ // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ add(static_cast<int>(0xF0u | (static_cast<unsigned int>(codepoint) >> 18u)));
+ add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 12u) & 0x3Fu)));
+ add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
+ add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
+ }
+
+ break;
+ }
+
+ // other characters after escape
+ default:
+ error_message = "invalid string: forbidden character after backslash";
+ return token_type::parse_error;
+ }
+
+ break;
+ }
+
+ // invalid control characters
+ case 0x00:
+ {
+ error_message = "invalid string: control character U+0000 (NUL) must be escaped to \\u0000";
+ return token_type::parse_error;
+ }
+
+ case 0x01:
+ {
+ error_message = "invalid string: control character U+0001 (SOH) must be escaped to \\u0001";
+ return token_type::parse_error;
+ }
+
+ case 0x02:
+ {
+ error_message = "invalid string: control character U+0002 (STX) must be escaped to \\u0002";
+ return token_type::parse_error;
+ }
+
+ case 0x03:
+ {
+ error_message = "invalid string: control character U+0003 (ETX) must be escaped to \\u0003";
+ return token_type::parse_error;
+ }
+
+ case 0x04:
+ {
+ error_message = "invalid string: control character U+0004 (EOT) must be escaped to \\u0004";
+ return token_type::parse_error;
+ }
+
+ case 0x05:
+ {
+ error_message = "invalid string: control character U+0005 (ENQ) must be escaped to \\u0005";
+ return token_type::parse_error;
+ }
+
+ case 0x06:
+ {
+ error_message = "invalid string: control character U+0006 (ACK) must be escaped to \\u0006";
+ return token_type::parse_error;
+ }
+
+ case 0x07:
+ {
+ error_message = "invalid string: control character U+0007 (BEL) must be escaped to \\u0007";
+ return token_type::parse_error;
+ }
+
+ case 0x08:
+ {
+ error_message = "invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b";
+ return token_type::parse_error;
+ }
+
+ case 0x09:
+ {
+ error_message = "invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t";
+ return token_type::parse_error;
+ }
+
+ case 0x0A:
+ {
+ error_message = "invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n";
+ return token_type::parse_error;
+ }
+
+ case 0x0B:
+ {
+ error_message = "invalid string: control character U+000B (VT) must be escaped to \\u000B";
+ return token_type::parse_error;
+ }
+
+ case 0x0C:
+ {
+ error_message = "invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f";
+ return token_type::parse_error;
+ }
+
+ case 0x0D:
+ {
+ error_message = "invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r";
+ return token_type::parse_error;
+ }
+
+ case 0x0E:
+ {
+ error_message = "invalid string: control character U+000E (SO) must be escaped to \\u000E";
+ return token_type::parse_error;
+ }
+
+ case 0x0F:
+ {
+ error_message = "invalid string: control character U+000F (SI) must be escaped to \\u000F";
+ return token_type::parse_error;
+ }
+
+ case 0x10:
+ {
+ error_message = "invalid string: control character U+0010 (DLE) must be escaped to \\u0010";
+ return token_type::parse_error;
+ }
+
+ case 0x11:
+ {
+ error_message = "invalid string: control character U+0011 (DC1) must be escaped to \\u0011";
+ return token_type::parse_error;
+ }
+
+ case 0x12:
+ {
+ error_message = "invalid string: control character U+0012 (DC2) must be escaped to \\u0012";
+ return token_type::parse_error;
+ }
+
+ case 0x13:
+ {
+ error_message = "invalid string: control character U+0013 (DC3) must be escaped to \\u0013";
+ return token_type::parse_error;
+ }
+
+ case 0x14:
+ {
+ error_message = "invalid string: control character U+0014 (DC4) must be escaped to \\u0014";
+ return token_type::parse_error;
+ }
+
+ case 0x15:
+ {
+ error_message = "invalid string: control character U+0015 (NAK) must be escaped to \\u0015";
+ return token_type::parse_error;
+ }
+
+ case 0x16:
+ {
+ error_message = "invalid string: control character U+0016 (SYN) must be escaped to \\u0016";
+ return token_type::parse_error;
+ }
+
+ case 0x17:
+ {
+ error_message = "invalid string: control character U+0017 (ETB) must be escaped to \\u0017";
+ return token_type::parse_error;
+ }
+
+ case 0x18:
+ {
+ error_message = "invalid string: control character U+0018 (CAN) must be escaped to \\u0018";
+ return token_type::parse_error;
+ }
+
+ case 0x19:
+ {
+ error_message = "invalid string: control character U+0019 (EM) must be escaped to \\u0019";
+ return token_type::parse_error;
+ }
+
+ case 0x1A:
+ {
+ error_message = "invalid string: control character U+001A (SUB) must be escaped to \\u001A";
+ return token_type::parse_error;
+ }
+
+ case 0x1B:
+ {
+ error_message = "invalid string: control character U+001B (ESC) must be escaped to \\u001B";
+ return token_type::parse_error;
+ }
+
+ case 0x1C:
+ {
+ error_message = "invalid string: control character U+001C (FS) must be escaped to \\u001C";
+ return token_type::parse_error;
+ }
+
+ case 0x1D:
+ {
+ error_message = "invalid string: control character U+001D (GS) must be escaped to \\u001D";
+ return token_type::parse_error;
+ }
+
+ case 0x1E:
+ {
+ error_message = "invalid string: control character U+001E (RS) must be escaped to \\u001E";
+ return token_type::parse_error;
+ }
+
+ case 0x1F:
+ {
+ error_message = "invalid string: control character U+001F (US) must be escaped to \\u001F";
+ return token_type::parse_error;
+ }
+
+ // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace))
+ case 0x20:
+ case 0x21:
+ case 0x23:
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2A:
+ case 0x2B:
+ case 0x2C:
+ case 0x2D:
+ case 0x2E:
+ case 0x2F:
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ case 0x38:
+ case 0x39:
+ case 0x3A:
+ case 0x3B:
+ case 0x3C:
+ case 0x3D:
+ case 0x3E:
+ case 0x3F:
+ case 0x40:
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ case 0x44:
+ case 0x45:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x49:
+ case 0x4A:
+ case 0x4B:
+ case 0x4C:
+ case 0x4D:
+ case 0x4E:
+ case 0x4F:
+ case 0x50:
+ case 0x51:
+ case 0x52:
+ case 0x53:
+ case 0x54:
+ case 0x55:
+ case 0x56:
+ case 0x57:
+ case 0x58:
+ case 0x59:
+ case 0x5A:
+ case 0x5B:
+ case 0x5D:
+ case 0x5E:
+ case 0x5F:
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6A:
+ case 0x6B:
+ case 0x6C:
+ case 0x6D:
+ case 0x6E:
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ case 0x78:
+ case 0x79:
+ case 0x7A:
+ case 0x7B:
+ case 0x7C:
+ case 0x7D:
+ case 0x7E:
+ case 0x7F:
+ {
+ add(current);
+ break;
+ }
+
+ // U+0080..U+07FF: bytes C2..DF 80..BF
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ {
+ if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF})))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+0800..U+0FFF: bytes E0 A0..BF 80..BF
+ case 0xE0:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF
+ // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xEE:
+ case 0xEF:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+D000..U+D7FF: bytes ED 80..9F 80..BF
+ case 0xED:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF
+ case 0xF0:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF
+ case 0xF4:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // remaining bytes (80..C1 and F5..FF) are ill-formed
+ default:
+ {
+ error_message = "invalid string: ill-formed UTF-8 byte";
+ return token_type::parse_error;
+ }
+ }
+ }
+ }
+
+ static void strtof(float& f, const char* str, char** endptr) noexcept
+ {
+ f = std::strtof(str, endptr);
+ }
+
+ static void strtof(double& f, const char* str, char** endptr) noexcept
+ {
+ f = std::strtod(str, endptr);
+ }
+
+ static void strtof(long double& f, const char* str, char** endptr) noexcept
+ {
+ f = std::strtold(str, endptr);
+ }
+
+ /*!
+ @brief scan a number literal
+
+ This function scans a string according to Sect. 6 of RFC 7159.
+
+ The function is realized with a deterministic finite state machine derived
+ from the grammar described in RFC 7159. Starting in state "init", the
+ input is read and used to determined the next state. Only state "done"
+ accepts the number. State "error" is a trap state to model errors. In the
+ table below, "anything" means any character but the ones listed before.
+
+ state | 0 | 1-9 | e E | + | - | . | anything
+ ---------|----------|----------|----------|---------|---------|----------|-----------
+ init | zero | any1 | [error] | [error] | minus | [error] | [error]
+ minus | zero | any1 | [error] | [error] | [error] | [error] | [error]
+ zero | done | done | exponent | done | done | decimal1 | done
+ any1 | any1 | any1 | exponent | done | done | decimal1 | done
+ decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error]
+ decimal2 | decimal2 | decimal2 | exponent | done | done | done | done
+ exponent | any2 | any2 | [error] | sign | sign | [error] | [error]
+ sign | any2 | any2 | [error] | [error] | [error] | [error] | [error]
+ any2 | any2 | any2 | done | done | done | done | done
+
+ The state machine is realized with one label per state (prefixed with
+ "scan_number_") and `goto` statements between them. The state machine
+ contains cycles, but any cycle can be left when EOF is read. Therefore,
+ the function is guaranteed to terminate.
+
+ During scanning, the read bytes are stored in token_buffer. This string is
+ then converted to a signed integer, an unsigned integer, or a
+ floating-point number.
+
+ @return token_type::value_unsigned, token_type::value_integer, or
+ token_type::value_float if number could be successfully scanned,
+ token_type::parse_error otherwise
+
+ @note The scanner is independent of the current locale. Internally, the
+ locale's decimal point is used instead of `.` to work with the
+ locale-dependent converters.
+ */
+ token_type scan_number() // lgtm [cpp/use-of-goto]
+ {
+ // reset token_buffer to store the number's bytes
+ reset();
+
+ // the type of the parsed number; initially set to unsigned; will be
+ // changed if minus sign, decimal point or exponent is read
+ token_type number_type = token_type::value_unsigned;
+
+ // state (init): we just found out we need to scan a number
+ switch (current)
+ {
+ case '-':
+ {
+ add(current);
+ goto scan_number_minus;
+ }
+
+ case '0':
+ {
+ add(current);
+ goto scan_number_zero;
+ }
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any1;
+ }
+
+ // all other characters are rejected outside scan_number()
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+
+scan_number_minus:
+ // state: we just parsed a leading minus sign
+ number_type = token_type::value_integer;
+ switch (get())
+ {
+ case '0':
+ {
+ add(current);
+ goto scan_number_zero;
+ }
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any1;
+ }
+
+ default:
+ {
+ error_message = "invalid number; expected digit after '-'";
+ return token_type::parse_error;
+ }
+ }
+
+scan_number_zero:
+ // state: we just parse a zero (maybe with a leading minus sign)
+ switch (get())
+ {
+ case '.':
+ {
+ add(decimal_point_char);
+ goto scan_number_decimal1;
+ }
+
+ case 'e':
+ case 'E':
+ {
+ add(current);
+ goto scan_number_exponent;
+ }
+
+ default:
+ goto scan_number_done;
+ }
+
+scan_number_any1:
+ // state: we just parsed a number 0-9 (maybe with a leading minus sign)
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any1;
+ }
+
+ case '.':
+ {
+ add(decimal_point_char);
+ goto scan_number_decimal1;
+ }
+
+ case 'e':
+ case 'E':
+ {
+ add(current);
+ goto scan_number_exponent;
+ }
+
+ default:
+ goto scan_number_done;
+ }
+
+scan_number_decimal1:
+ // state: we just parsed a decimal point
+ number_type = token_type::value_float;
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_decimal2;
+ }
+
+ default:
+ {
+ error_message = "invalid number; expected digit after '.'";
+ return token_type::parse_error;
+ }
+ }
+
+scan_number_decimal2:
+ // we just parsed at least one number after a decimal point
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_decimal2;
+ }
+
+ case 'e':
+ case 'E':
+ {
+ add(current);
+ goto scan_number_exponent;
+ }
+
+ default:
+ goto scan_number_done;
+ }
+
+scan_number_exponent:
+ // we just parsed an exponent
+ number_type = token_type::value_float;
+ switch (get())
+ {
+ case '+':
+ case '-':
+ {
+ add(current);
+ goto scan_number_sign;
+ }
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any2;
+ }
+
+ default:
+ {
+ error_message =
+ "invalid number; expected '+', '-', or digit after exponent";
+ return token_type::parse_error;
+ }
+ }
+
+scan_number_sign:
+ // we just parsed an exponent sign
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any2;
+ }
+
+ default:
+ {
+ error_message = "invalid number; expected digit after exponent sign";
+ return token_type::parse_error;
+ }
+ }
+
+scan_number_any2:
+ // we just parsed a number after the exponent or exponent sign
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any2;
+ }
+
+ default:
+ goto scan_number_done;
+ }
+
+scan_number_done:
+ // unget the character after the number (we only read it to know that
+ // we are done scanning a number)
+ unget();
+
+ char* endptr = nullptr;
+ errno = 0;
+
+ // try to parse integers first and fall back to floats
+ if (number_type == token_type::value_unsigned)
+ {
+ const auto x = std::strtoull(token_buffer.data(), &endptr, 10);
+
+ // we checked the number format before
+ assert(endptr == token_buffer.data() + token_buffer.size());
+
+ if (errno == 0)
+ {
+ value_unsigned = static_cast<number_unsigned_t>(x);
+ if (value_unsigned == x)
+ {
+ return token_type::value_unsigned;
+ }
+ }
+ }
+ else if (number_type == token_type::value_integer)
+ {
+ const auto x = std::strtoll(token_buffer.data(), &endptr, 10);
+
+ // we checked the number format before
+ assert(endptr == token_buffer.data() + token_buffer.size());
+
+ if (errno == 0)
+ {
+ value_integer = static_cast<number_integer_t>(x);
+ if (value_integer == x)
+ {
+ return token_type::value_integer;
+ }
+ }
+ }
+
+ // this code is reached if we parse a floating-point number or if an
+ // integer conversion above failed
+ strtof(value_float, token_buffer.data(), &endptr);
+
+ // we checked the number format before
+ assert(endptr == token_buffer.data() + token_buffer.size());
+
+ return token_type::value_float;
+ }
+
+ /*!
+ @param[in] literal_text the literal text to expect
+ @param[in] length the length of the passed literal text
+ @param[in] return_type the token type to return on success
+ */
+ token_type scan_literal(const char* literal_text, const std::size_t length,
+ token_type return_type)
+ {
+ assert(current == literal_text[0]);
+ for (std::size_t i = 1; i < length; ++i)
+ {
+ if (JSON_UNLIKELY(get() != literal_text[i]))
+ {
+ error_message = "invalid literal";
+ return token_type::parse_error;
+ }
+ }
+ return return_type;
+ }
+
+ /////////////////////
+ // input management
+ /////////////////////
+
+ /// reset token_buffer; current character is beginning of token
+ void reset() noexcept
+ {
+ token_buffer.clear();
+ token_string.clear();
+ token_string.push_back(std::char_traits<char>::to_char_type(current));
+ }
+
+ /*
+ @brief get next character from the input
+
+ This function provides the interface to the used input adapter. It does
+ not throw in case the input reached EOF, but returns a
+ `std::char_traits<char>::eof()` in that case. Stores the scanned characters
+ for use in error messages.
+
+ @return character read from the input
+ */
+ std::char_traits<char>::int_type get()
+ {
+ ++position.chars_read_total;
+ ++position.chars_read_current_line;
+
+ if (next_unget)
+ {
+ // just reset the next_unget variable and work with current
+ next_unget = false;
+ }
+ else
+ {
+ current = ia->get_character();
+ }
+
+ if (JSON_LIKELY(current != std::char_traits<char>::eof()))
+ {
+ token_string.push_back(std::char_traits<char>::to_char_type(current));
+ }
+
+ if (current == '\n')
+ {
+ ++position.lines_read;
+ position.chars_read_current_line = 0;
+ }
+
+ return current;
+ }
+
+ /*!
+ @brief unget current character (read it again on next get)
+
+ We implement unget by setting variable next_unget to true. The input is not
+ changed - we just simulate ungetting by modifying chars_read_total,
+ chars_read_current_line, and token_string. The next call to get() will
+ behave as if the unget character is read again.
+ */
+ void unget()
+ {
+ next_unget = true;
+
+ --position.chars_read_total;
+
+ // in case we "unget" a newline, we have to also decrement the lines_read
+ if (position.chars_read_current_line == 0)
+ {
+ if (position.lines_read > 0)
+ {
+ --position.lines_read;
+ }
+ }
+ else
+ {
+ --position.chars_read_current_line;
+ }
+
+ if (JSON_LIKELY(current != std::char_traits<char>::eof()))
+ {
+ assert(not token_string.empty());
+ token_string.pop_back();
+ }
+ }
+
+ /// add a character to token_buffer
+ void add(int c)
+ {
+ token_buffer.push_back(std::char_traits<char>::to_char_type(c));
+ }
+
+ public:
+ /////////////////////
+ // value getters
+ /////////////////////
+
+ /// return integer value
+ constexpr number_integer_t get_number_integer() const noexcept
+ {
+ return value_integer;
+ }
+
+ /// return unsigned integer value
+ constexpr number_unsigned_t get_number_unsigned() const noexcept
+ {
+ return value_unsigned;
+ }
+
+ /// return floating-point value
+ constexpr number_float_t get_number_float() const noexcept
+ {
+ return value_float;
+ }
+
+ /// return current string value (implicitly resets the token; useful only once)
+ string_t& get_string()
+ {
+ return token_buffer;
+ }
+
+ /////////////////////
+ // diagnostics
+ /////////////////////
+
+ /// return position of last read token
+ constexpr position_t get_position() const noexcept
+ {
+ return position;
+ }
+
+ /// return the last read token (for errors only). Will never contain EOF
+ /// (an arbitrary value that is not a valid char value, often -1), because
+ /// 255 may legitimately occur. May contain NUL, which should be escaped.
+ std::string get_token_string() const
+ {
+ // escape control characters
+ std::string result;
+ for (const auto c : token_string)
+ {
+ if ('\x00' <= c and c <= '\x1F')
+ {
+ // escape control characters
+ std::array<char, 9> cs{{}};
+ (std::snprintf)(cs.data(), cs.size(), "<U+%.4X>", static_cast<unsigned char>(c));
+ result += cs.data();
+ }
+ else
+ {
+ // add character as is
+ result.push_back(c);
+ }
+ }
+
+ return result;
+ }
+
+ /// return syntax error message
+ constexpr const char* get_error_message() const noexcept
+ {
+ return error_message;
+ }
+
+ /////////////////////
+ // actual scanner
+ /////////////////////
+
+ /*!
+ @brief skip the UTF-8 byte order mark
+ @return true iff there is no BOM or the correct BOM has been skipped
+ */
+ bool skip_bom()
+ {
+ if (get() == 0xEF)
+ {
+ // check if we completely parse the BOM
+ return get() == 0xBB and get() == 0xBF;
+ }
+
+ // the first character is not the beginning of the BOM; unget it to
+ // process is later
+ unget();
+ return true;
+ }
+
+ token_type scan()
+ {
+ // initially, skip the BOM
+ if (position.chars_read_total == 0 and not skip_bom())
+ {
+ error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given";
+ return token_type::parse_error;
+ }
+
+ // read next character and ignore whitespace
+ do
+ {
+ get();
+ }
+ while (current == ' ' or current == '\t' or current == '\n' or current == '\r');
+
+ switch (current)
+ {
+ // structural characters
+ case '[':
+ return token_type::begin_array;
+ case ']':
+ return token_type::end_array;
+ case '{':
+ return token_type::begin_object;
+ case '}':
+ return token_type::end_object;
+ case ':':
+ return token_type::name_separator;
+ case ',':
+ return token_type::value_separator;
+
+ // literals
+ case 't':
+ return scan_literal("true", 4, token_type::literal_true);
+ case 'f':
+ return scan_literal("false", 5, token_type::literal_false);
+ case 'n':
+ return scan_literal("null", 4, token_type::literal_null);
+
+ // string
+ case '\"':
+ return scan_string();
+
+ // number
+ case '-':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ return scan_number();
+
+ // end of input (the null byte is needed when parsing from
+ // string literals)
+ case '\0':
+ case std::char_traits<char>::eof():
+ return token_type::end_of_input;
+
+ // error
+ default:
+ error_message = "invalid literal";
+ return token_type::parse_error;
+ }
+ }
+
+ private:
+ /// input adapter
+ detail::input_adapter_t ia = nullptr;
+
+ /// the current character
+ std::char_traits<char>::int_type current = std::char_traits<char>::eof();
+
+ /// whether the next get() call should just return current
+ bool next_unget = false;
+
+ /// the start position of the current token
+ position_t position {};
+
+ /// raw input token string (for error messages)
+ std::vector<char> token_string {};
+
+ /// buffer for variable-length tokens (numbers, strings)
+ string_t token_buffer {};
+
+ /// a description of occurred lexer errors
+ const char* error_message = "";
+
+ // number values
+ number_integer_t value_integer = 0;
+ number_unsigned_t value_unsigned = 0;
+ number_float_t value_float = 0;
+
+ /// the decimal point
+ const char decimal_point_char = '.';
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/input/parser.hpp>
+
+
+#include <cassert> // assert
+#include <cmath> // isfinite
+#include <cstdint> // uint8_t
+#include <functional> // function
+#include <string> // string
+#include <utility> // move
+#include <vector> // vector
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/input/input_adapters.hpp>
+
+// #include <nlohmann/detail/input/json_sax.hpp>
+
+// #include <nlohmann/detail/input/lexer.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/is_sax.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+////////////
+// parser //
+////////////
+
+/*!
+@brief syntax analysis
+
+This class implements a recursive decent parser.
+*/
+template<typename BasicJsonType>
+class parser
+{
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using lexer_t = lexer<BasicJsonType>;
+ using token_type = typename lexer_t::token_type;
+
+ public:
+ enum class parse_event_t : uint8_t
+ {
+ /// the parser read `{` and started to process a JSON object
+ object_start,
+ /// the parser read `}` and finished processing a JSON object
+ object_end,
+ /// the parser read `[` and started to process a JSON array
+ array_start,
+ /// the parser read `]` and finished processing a JSON array
+ array_end,
+ /// the parser read a key of a value in an object
+ key,
+ /// the parser finished reading a JSON value
+ value
+ };
+
+ using parser_callback_t =
+ std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>;
+
+ /// a parser reading from an input adapter
+ explicit parser(detail::input_adapter_t&& adapter,
+ const parser_callback_t cb = nullptr,
+ const bool allow_exceptions_ = true)
+ : callback(cb), m_lexer(std::move(adapter)), allow_exceptions(allow_exceptions_)
+ {
+ // read first token
+ get_token();
+ }
+
+ /*!
+ @brief public parser interface
+
+ @param[in] strict whether to expect the last token to be EOF
+ @param[in,out] result parsed JSON value
+
+ @throw parse_error.101 in case of an unexpected token
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+ */
+ void parse(const bool strict, BasicJsonType& result)
+ {
+ if (callback)
+ {
+ json_sax_dom_callback_parser<BasicJsonType> sdp(result, callback, allow_exceptions);
+ sax_parse_internal(&sdp);
+ result.assert_invariant();
+
+ // in strict mode, input must be completely read
+ if (strict and (get_token() != token_type::end_of_input))
+ {
+ sdp.parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_of_input, "value")));
+ }
+
+ // in case of an error, return discarded value
+ if (sdp.is_errored())
+ {
+ result = value_t::discarded;
+ return;
+ }
+
+ // set top-level value to null if it was discarded by the callback
+ // function
+ if (result.is_discarded())
+ {
+ result = nullptr;
+ }
+ }
+ else
+ {
+ json_sax_dom_parser<BasicJsonType> sdp(result, allow_exceptions);
+ sax_parse_internal(&sdp);
+ result.assert_invariant();
+
+ // in strict mode, input must be completely read
+ if (strict and (get_token() != token_type::end_of_input))
+ {
+ sdp.parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_of_input, "value")));
+ }
+
+ // in case of an error, return discarded value
+ if (sdp.is_errored())
+ {
+ result = value_t::discarded;
+ return;
+ }
+ }
+ }
+
+ /*!
+ @brief public accept interface
+
+ @param[in] strict whether to expect the last token to be EOF
+ @return whether the input is a proper JSON text
+ */
+ bool accept(const bool strict = true)
+ {
+ json_sax_acceptor<BasicJsonType> sax_acceptor;
+ return sax_parse(&sax_acceptor, strict);
+ }
+
+ template <typename SAX>
+ bool sax_parse(SAX* sax, const bool strict = true)
+ {
+ (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
+ const bool result = sax_parse_internal(sax);
+
+ // strict mode: next byte must be EOF
+ if (result and strict and (get_token() != token_type::end_of_input))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_of_input, "value")));
+ }
+
+ return result;
+ }
+
+ private:
+ template <typename SAX>
+ bool sax_parse_internal(SAX* sax)
+ {
+ // stack to remember the hierarchy of structured values we are parsing
+ // true = array; false = object
+ std::vector<bool> states;
+ // value to avoid a goto (see comment where set to true)
+ bool skip_to_state_evaluation = false;
+
+ while (true)
+ {
+ if (not skip_to_state_evaluation)
+ {
+ // invariant: get_token() was called before each iteration
+ switch (last_token)
+ {
+ case token_type::begin_object:
+ {
+ if (JSON_UNLIKELY(not sax->start_object(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ // closing } -> we are done
+ if (get_token() == token_type::end_object)
+ {
+ if (JSON_UNLIKELY(not sax->end_object()))
+ {
+ return false;
+ }
+ break;
+ }
+
+ // parse key
+ if (JSON_UNLIKELY(last_token != token_type::value_string))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::value_string, "object key")));
+ }
+ if (JSON_UNLIKELY(not sax->key(m_lexer.get_string())))
+ {
+ return false;
+ }
+
+ // parse separator (:)
+ if (JSON_UNLIKELY(get_token() != token_type::name_separator))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::name_separator, "object separator")));
+ }
+
+ // remember we are now inside an object
+ states.push_back(false);
+
+ // parse values
+ get_token();
+ continue;
+ }
+
+ case token_type::begin_array:
+ {
+ if (JSON_UNLIKELY(not sax->start_array(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ // closing ] -> we are done
+ if (get_token() == token_type::end_array)
+ {
+ if (JSON_UNLIKELY(not sax->end_array()))
+ {
+ return false;
+ }
+ break;
+ }
+
+ // remember we are now inside an array
+ states.push_back(true);
+
+ // parse values (no need to call get_token)
+ continue;
+ }
+
+ case token_type::value_float:
+ {
+ const auto res = m_lexer.get_number_float();
+
+ if (JSON_UNLIKELY(not std::isfinite(res)))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ out_of_range::create(406, "number overflow parsing '" + m_lexer.get_token_string() + "'"));
+ }
+
+ if (JSON_UNLIKELY(not sax->number_float(res, m_lexer.get_string())))
+ {
+ return false;
+ }
+
+ break;
+ }
+
+ case token_type::literal_false:
+ {
+ if (JSON_UNLIKELY(not sax->boolean(false)))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::literal_null:
+ {
+ if (JSON_UNLIKELY(not sax->null()))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::literal_true:
+ {
+ if (JSON_UNLIKELY(not sax->boolean(true)))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::value_integer:
+ {
+ if (JSON_UNLIKELY(not sax->number_integer(m_lexer.get_number_integer())))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::value_string:
+ {
+ if (JSON_UNLIKELY(not sax->string(m_lexer.get_string())))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::value_unsigned:
+ {
+ if (JSON_UNLIKELY(not sax->number_unsigned(m_lexer.get_number_unsigned())))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::parse_error:
+ {
+ // using "uninitialized" to avoid "expected" message
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::uninitialized, "value")));
+ }
+
+ default: // the last token was unexpected
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::literal_or_value, "value")));
+ }
+ }
+ }
+ else
+ {
+ skip_to_state_evaluation = false;
+ }
+
+ // we reached this line after we successfully parsed a value
+ if (states.empty())
+ {
+ // empty stack: we reached the end of the hierarchy: done
+ return true;
+ }
+
+ if (states.back()) // array
+ {
+ // comma -> next value
+ if (get_token() == token_type::value_separator)
+ {
+ // parse a new value
+ get_token();
+ continue;
+ }
+
+ // closing ]
+ if (JSON_LIKELY(last_token == token_type::end_array))
+ {
+ if (JSON_UNLIKELY(not sax->end_array()))
+ {
+ return false;
+ }
+
+ // We are done with this array. Before we can parse a
+ // new value, we need to evaluate the new state first.
+ // By setting skip_to_state_evaluation to false, we
+ // are effectively jumping to the beginning of this if.
+ assert(not states.empty());
+ states.pop_back();
+ skip_to_state_evaluation = true;
+ continue;
+ }
+
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_array, "array")));
+ }
+ else // object
+ {
+ // comma -> next value
+ if (get_token() == token_type::value_separator)
+ {
+ // parse key
+ if (JSON_UNLIKELY(get_token() != token_type::value_string))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::value_string, "object key")));
+ }
+
+ if (JSON_UNLIKELY(not sax->key(m_lexer.get_string())))
+ {
+ return false;
+ }
+
+ // parse separator (:)
+ if (JSON_UNLIKELY(get_token() != token_type::name_separator))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::name_separator, "object separator")));
+ }
+
+ // parse values
+ get_token();
+ continue;
+ }
+
+ // closing }
+ if (JSON_LIKELY(last_token == token_type::end_object))
+ {
+ if (JSON_UNLIKELY(not sax->end_object()))
+ {
+ return false;
+ }
+
+ // We are done with this object. Before we can parse a
+ // new value, we need to evaluate the new state first.
+ // By setting skip_to_state_evaluation to false, we
+ // are effectively jumping to the beginning of this if.
+ assert(not states.empty());
+ states.pop_back();
+ skip_to_state_evaluation = true;
+ continue;
+ }
+
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_object, "object")));
+ }
+ }
+ }
+
+ /// get next token from lexer
+ token_type get_token()
+ {
+ return last_token = m_lexer.scan();
+ }
+
+ std::string exception_message(const token_type expected, const std::string& context)
+ {
+ std::string error_msg = "syntax error ";
+
+ if (not context.empty())
+ {
+ error_msg += "while parsing " + context + " ";
+ }
+
+ error_msg += "- ";
+
+ if (last_token == token_type::parse_error)
+ {
+ error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" +
+ m_lexer.get_token_string() + "'";
+ }
+ else
+ {
+ error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token));
+ }
+
+ if (expected != token_type::uninitialized)
+ {
+ error_msg += "; expected " + std::string(lexer_t::token_type_name(expected));
+ }
+
+ return error_msg;
+ }
+
+ private:
+ /// callback function
+ const parser_callback_t callback = nullptr;
+ /// the type of the last read token
+ token_type last_token = token_type::uninitialized;
+ /// the lexer
+ lexer_t m_lexer;
+ /// whether to throw exceptions in case of errors
+ const bool allow_exceptions = true;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/iterators/internal_iterator.hpp>
+
+
+// #include <nlohmann/detail/iterators/primitive_iterator.hpp>
+
+
+#include <cstddef> // ptrdiff_t
+#include <limits> // numeric_limits
+
+namespace nlohmann
+{
+namespace detail
+{
+/*
+@brief an iterator for primitive JSON types
+
+This class models an iterator for primitive JSON types (boolean, number,
+string). It's only purpose is to allow the iterator/const_iterator classes
+to "iterate" over primitive values. Internally, the iterator is modeled by
+a `difference_type` variable. Value begin_value (`0`) models the begin,
+end_value (`1`) models past the end.
+*/
+class primitive_iterator_t
+{
+ private:
+ using difference_type = std::ptrdiff_t;
+ static constexpr difference_type begin_value = 0;
+ static constexpr difference_type end_value = begin_value + 1;
+
+ /// iterator as signed integer type
+ difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();
+
+ public:
+ constexpr difference_type get_value() const noexcept
+ {
+ return m_it;
+ }
+
+ /// set iterator to a defined beginning
+ void set_begin() noexcept
+ {
+ m_it = begin_value;
+ }
+
+ /// set iterator to a defined past the end
+ void set_end() noexcept
+ {
+ m_it = end_value;
+ }
+
+ /// return whether the iterator can be dereferenced
+ constexpr bool is_begin() const noexcept
+ {
+ return m_it == begin_value;
+ }
+
+ /// return whether the iterator is at end
+ constexpr bool is_end() const noexcept
+ {
+ return m_it == end_value;
+ }
+
+ friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
+ {
+ return lhs.m_it == rhs.m_it;
+ }
+
+ friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
+ {
+ return lhs.m_it < rhs.m_it;
+ }
+
+ primitive_iterator_t operator+(difference_type n) noexcept
+ {
+ auto result = *this;
+ result += n;
+ return result;
+ }
+
+ friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
+ {
+ return lhs.m_it - rhs.m_it;
+ }
+
+ primitive_iterator_t& operator++() noexcept
+ {
+ ++m_it;
+ return *this;
+ }
+
+ primitive_iterator_t const operator++(int) noexcept
+ {
+ auto result = *this;
+ ++m_it;
+ return result;
+ }
+
+ primitive_iterator_t& operator--() noexcept
+ {
+ --m_it;
+ return *this;
+ }
+
+ primitive_iterator_t const operator--(int) noexcept
+ {
+ auto result = *this;
+ --m_it;
+ return result;
+ }
+
+ primitive_iterator_t& operator+=(difference_type n) noexcept
+ {
+ m_it += n;
+ return *this;
+ }
+
+ primitive_iterator_t& operator-=(difference_type n) noexcept
+ {
+ m_it -= n;
+ return *this;
+ }
+};
+} // namespace detail
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+namespace detail
+{
+/*!
+@brief an iterator value
+
+@note This structure could easily be a union, but MSVC currently does not allow
+unions members with complex constructors, see https://github.com/nlohmann/json/pull/105.
+*/
+template<typename BasicJsonType> struct internal_iterator
+{
+ /// iterator for JSON objects
+ typename BasicJsonType::object_t::iterator object_iterator {};
+ /// iterator for JSON arrays
+ typename BasicJsonType::array_t::iterator array_iterator {};
+ /// generic iterator for all other types
+ primitive_iterator_t primitive_iterator {};
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/iterators/iter_impl.hpp>
+
+
+#include <ciso646> // not
+#include <iterator> // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next
+#include <type_traits> // conditional, is_const, remove_const
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/iterators/internal_iterator.hpp>
+
+// #include <nlohmann/detail/iterators/primitive_iterator.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+// forward declare, to be able to friend it later on
+template<typename IteratorType> class iteration_proxy;
+template<typename IteratorType> class iteration_proxy_value;
+
+/*!
+@brief a template for a bidirectional iterator for the @ref basic_json class
+This class implements a both iterators (iterator and const_iterator) for the
+@ref basic_json class.
+@note An iterator is called *initialized* when a pointer to a JSON value has
+ been set (e.g., by a constructor or a copy assignment). If the iterator is
+ default-constructed, it is *uninitialized* and most methods are undefined.
+ **The library uses assertions to detect calls on uninitialized iterators.**
+@requirement The class satisfies the following concept requirements:
+-
+[BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator):
+ The iterator that can be moved can be moved in both directions (i.e.
+ incremented and decremented).
+@since version 1.0.0, simplified in version 2.0.9, change to bidirectional
+ iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593)
+*/
+template<typename BasicJsonType>
+class iter_impl
+{
+ /// allow basic_json to access private members
+ friend iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>;
+ friend BasicJsonType;
+ friend iteration_proxy<iter_impl>;
+ friend iteration_proxy_value<iter_impl>;
+
+ using object_t = typename BasicJsonType::object_t;
+ using array_t = typename BasicJsonType::array_t;
+ // make sure BasicJsonType is basic_json or const basic_json
+ static_assert(is_basic_json<typename std::remove_const<BasicJsonType>::type>::value,
+ "iter_impl only accepts (const) basic_json");
+
+ public:
+
+ /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17.
+ /// The C++ Standard has never required user-defined iterators to derive from std::iterator.
+ /// A user-defined iterator should provide publicly accessible typedefs named
+ /// iterator_category, value_type, difference_type, pointer, and reference.
+ /// Note that value_type is required to be non-const, even for constant iterators.
+ using iterator_category = std::bidirectional_iterator_tag;
+
+ /// the type of the values when the iterator is dereferenced
+ using value_type = typename BasicJsonType::value_type;
+ /// a type to represent differences between iterators
+ using difference_type = typename BasicJsonType::difference_type;
+ /// defines a pointer to the type iterated over (value_type)
+ using pointer = typename std::conditional<std::is_const<BasicJsonType>::value,
+ typename BasicJsonType::const_pointer,
+ typename BasicJsonType::pointer>::type;
+ /// defines a reference to the type iterated over (value_type)
+ using reference =
+ typename std::conditional<std::is_const<BasicJsonType>::value,
+ typename BasicJsonType::const_reference,
+ typename BasicJsonType::reference>::type;
+
+ /// default constructor
+ iter_impl() = default;
+
+ /*!
+ @brief constructor for a given JSON instance
+ @param[in] object pointer to a JSON object for this iterator
+ @pre object != nullptr
+ @post The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ explicit iter_impl(pointer object) noexcept : m_object(object)
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ m_it.object_iterator = typename object_t::iterator();
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_it.array_iterator = typename array_t::iterator();
+ break;
+ }
+
+ default:
+ {
+ m_it.primitive_iterator = primitive_iterator_t();
+ break;
+ }
+ }
+ }
+
+ /*!
+ @note The conventional copy constructor and copy assignment are implicitly
+ defined. Combined with the following converting constructor and
+ assignment, they support: (1) copy from iterator to iterator, (2)
+ copy from const iterator to const iterator, and (3) conversion from
+ iterator to const iterator. However conversion from const iterator
+ to iterator is not defined.
+ */
+
+ /*!
+ @brief converting constructor
+ @param[in] other non-const iterator to copy from
+ @note It is not checked whether @a other is initialized.
+ */
+ iter_impl(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
+ : m_object(other.m_object), m_it(other.m_it) {}
+
+ /*!
+ @brief converting assignment
+ @param[in,out] other non-const iterator to copy from
+ @return const/non-const iterator
+ @note It is not checked whether @a other is initialized.
+ */
+ iter_impl& operator=(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
+ {
+ m_object = other.m_object;
+ m_it = other.m_it;
+ return *this;
+ }
+
+ private:
+ /*!
+ @brief set the iterator to the first value
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ void set_begin() noexcept
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ m_it.object_iterator = m_object->m_value.object->begin();
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_it.array_iterator = m_object->m_value.array->begin();
+ break;
+ }
+
+ case value_t::null:
+ {
+ // set to end so begin()==end() is true: null is empty
+ m_it.primitive_iterator.set_end();
+ break;
+ }
+
+ default:
+ {
+ m_it.primitive_iterator.set_begin();
+ break;
+ }
+ }
+ }
+
+ /*!
+ @brief set the iterator past the last value
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ void set_end() noexcept
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ m_it.object_iterator = m_object->m_value.object->end();
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_it.array_iterator = m_object->m_value.array->end();
+ break;
+ }
+
+ default:
+ {
+ m_it.primitive_iterator.set_end();
+ break;
+ }
+ }
+ }
+
+ public:
+ /*!
+ @brief return a reference to the value pointed to by the iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ reference operator*() const
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ assert(m_it.object_iterator != m_object->m_value.object->end());
+ return m_it.object_iterator->second;
+ }
+
+ case value_t::array:
+ {
+ assert(m_it.array_iterator != m_object->m_value.array->end());
+ return *m_it.array_iterator;
+ }
+
+ case value_t::null:
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+
+ default:
+ {
+ if (JSON_LIKELY(m_it.primitive_iterator.is_begin()))
+ {
+ return *m_object;
+ }
+
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+ }
+ }
+ }
+
+ /*!
+ @brief dereference the iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ pointer operator->() const
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ assert(m_it.object_iterator != m_object->m_value.object->end());
+ return &(m_it.object_iterator->second);
+ }
+
+ case value_t::array:
+ {
+ assert(m_it.array_iterator != m_object->m_value.array->end());
+ return &*m_it.array_iterator;
+ }
+
+ default:
+ {
+ if (JSON_LIKELY(m_it.primitive_iterator.is_begin()))
+ {
+ return m_object;
+ }
+
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+ }
+ }
+ }
+
+ /*!
+ @brief post-increment (it++)
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl const operator++(int)
+ {
+ auto result = *this;
+ ++(*this);
+ return result;
+ }
+
+ /*!
+ @brief pre-increment (++it)
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl& operator++()
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ std::advance(m_it.object_iterator, 1);
+ break;
+ }
+
+ case value_t::array:
+ {
+ std::advance(m_it.array_iterator, 1);
+ break;
+ }
+
+ default:
+ {
+ ++m_it.primitive_iterator;
+ break;
+ }
+ }
+
+ return *this;
+ }
+
+ /*!
+ @brief post-decrement (it--)
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl const operator--(int)
+ {
+ auto result = *this;
+ --(*this);
+ return result;
+ }
+
+ /*!
+ @brief pre-decrement (--it)
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl& operator--()
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ std::advance(m_it.object_iterator, -1);
+ break;
+ }
+
+ case value_t::array:
+ {
+ std::advance(m_it.array_iterator, -1);
+ break;
+ }
+
+ default:
+ {
+ --m_it.primitive_iterator;
+ break;
+ }
+ }
+
+ return *this;
+ }
+
+ /*!
+ @brief comparison: equal
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator==(const iter_impl& other) const
+ {
+ // if objects are not the same, the comparison is undefined
+ if (JSON_UNLIKELY(m_object != other.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
+ }
+
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ return (m_it.object_iterator == other.m_it.object_iterator);
+
+ case value_t::array:
+ return (m_it.array_iterator == other.m_it.array_iterator);
+
+ default:
+ return (m_it.primitive_iterator == other.m_it.primitive_iterator);
+ }
+ }
+
+ /*!
+ @brief comparison: not equal
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator!=(const iter_impl& other) const
+ {
+ return not operator==(other);
+ }
+
+ /*!
+ @brief comparison: smaller
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator<(const iter_impl& other) const
+ {
+ // if objects are not the same, the comparison is undefined
+ if (JSON_UNLIKELY(m_object != other.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
+ }
+
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators"));
+
+ case value_t::array:
+ return (m_it.array_iterator < other.m_it.array_iterator);
+
+ default:
+ return (m_it.primitive_iterator < other.m_it.primitive_iterator);
+ }
+ }
+
+ /*!
+ @brief comparison: less than or equal
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator<=(const iter_impl& other) const
+ {
+ return not other.operator < (*this);
+ }
+
+ /*!
+ @brief comparison: greater than
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator>(const iter_impl& other) const
+ {
+ return not operator<=(other);
+ }
+
+ /*!
+ @brief comparison: greater than or equal
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator>=(const iter_impl& other) const
+ {
+ return not operator<(other);
+ }
+
+ /*!
+ @brief add to iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl& operator+=(difference_type i)
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators"));
+
+ case value_t::array:
+ {
+ std::advance(m_it.array_iterator, i);
+ break;
+ }
+
+ default:
+ {
+ m_it.primitive_iterator += i;
+ break;
+ }
+ }
+
+ return *this;
+ }
+
+ /*!
+ @brief subtract from iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl& operator-=(difference_type i)
+ {
+ return operator+=(-i);
+ }
+
+ /*!
+ @brief add to iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl operator+(difference_type i) const
+ {
+ auto result = *this;
+ result += i;
+ return result;
+ }
+
+ /*!
+ @brief addition of distance and iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ friend iter_impl operator+(difference_type i, const iter_impl& it)
+ {
+ auto result = it;
+ result += i;
+ return result;
+ }
+
+ /*!
+ @brief subtract from iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl operator-(difference_type i) const
+ {
+ auto result = *this;
+ result -= i;
+ return result;
+ }
+
+ /*!
+ @brief return difference
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ difference_type operator-(const iter_impl& other) const
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators"));
+
+ case value_t::array:
+ return m_it.array_iterator - other.m_it.array_iterator;
+
+ default:
+ return m_it.primitive_iterator - other.m_it.primitive_iterator;
+ }
+ }
+
+ /*!
+ @brief access to successor
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ reference operator[](difference_type n) const
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators"));
+
+ case value_t::array:
+ return *std::next(m_it.array_iterator, n);
+
+ case value_t::null:
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+
+ default:
+ {
+ if (JSON_LIKELY(m_it.primitive_iterator.get_value() == -n))
+ {
+ return *m_object;
+ }
+
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+ }
+ }
+ }
+
+ /*!
+ @brief return the key of an object iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ const typename object_t::key_type& key() const
+ {
+ assert(m_object != nullptr);
+
+ if (JSON_LIKELY(m_object->is_object()))
+ {
+ return m_it.object_iterator->first;
+ }
+
+ JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators"));
+ }
+
+ /*!
+ @brief return the value of an iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ reference value() const
+ {
+ return operator*();
+ }
+
+ private:
+ /// associated JSON instance
+ pointer m_object = nullptr;
+ /// the actual iterator of the associated instance
+ internal_iterator<typename std::remove_const<BasicJsonType>::type> m_it {};
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/iterators/iteration_proxy.hpp>
+
+// #include <nlohmann/detail/iterators/json_reverse_iterator.hpp>
+
+
+#include <cstddef> // ptrdiff_t
+#include <iterator> // reverse_iterator
+#include <utility> // declval
+
+namespace nlohmann
+{
+namespace detail
+{
+//////////////////////
+// reverse_iterator //
+//////////////////////
+
+/*!
+@brief a template for a reverse iterator class
+
+@tparam Base the base iterator type to reverse. Valid types are @ref
+iterator (to create @ref reverse_iterator) and @ref const_iterator (to
+create @ref const_reverse_iterator).
+
+@requirement The class satisfies the following concept requirements:
+-
+[BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator):
+ The iterator that can be moved can be moved in both directions (i.e.
+ incremented and decremented).
+- [OutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator):
+ It is possible to write to the pointed-to element (only if @a Base is
+ @ref iterator).
+
+@since version 1.0.0
+*/
+template<typename Base>
+class json_reverse_iterator : public std::reverse_iterator<Base>
+{
+ public:
+ using difference_type = std::ptrdiff_t;
+ /// shortcut to the reverse iterator adapter
+ using base_iterator = std::reverse_iterator<Base>;
+ /// the reference type for the pointed-to element
+ using reference = typename Base::reference;
+
+ /// create reverse iterator from iterator
+ explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept
+ : base_iterator(it) {}
+
+ /// create reverse iterator from base class
+ explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {}
+
+ /// post-increment (it++)
+ json_reverse_iterator const operator++(int)
+ {
+ return static_cast<json_reverse_iterator>(base_iterator::operator++(1));
+ }
+
+ /// pre-increment (++it)
+ json_reverse_iterator& operator++()
+ {
+ return static_cast<json_reverse_iterator&>(base_iterator::operator++());
+ }
+
+ /// post-decrement (it--)
+ json_reverse_iterator const operator--(int)
+ {
+ return static_cast<json_reverse_iterator>(base_iterator::operator--(1));
+ }
+
+ /// pre-decrement (--it)
+ json_reverse_iterator& operator--()
+ {
+ return static_cast<json_reverse_iterator&>(base_iterator::operator--());
+ }
+
+ /// add to iterator
+ json_reverse_iterator& operator+=(difference_type i)
+ {
+ return static_cast<json_reverse_iterator&>(base_iterator::operator+=(i));
+ }
+
+ /// add to iterator
+ json_reverse_iterator operator+(difference_type i) const
+ {
+ return static_cast<json_reverse_iterator>(base_iterator::operator+(i));
+ }
+
+ /// subtract from iterator
+ json_reverse_iterator operator-(difference_type i) const
+ {
+ return static_cast<json_reverse_iterator>(base_iterator::operator-(i));
+ }
+
+ /// return difference
+ difference_type operator-(const json_reverse_iterator& other) const
+ {
+ return base_iterator(*this) - base_iterator(other);
+ }
+
+ /// access to successor
+ reference operator[](difference_type n) const
+ {
+ return *(this->operator+(n));
+ }
+
+ /// return the key of an object iterator
+ auto key() const -> decltype(std::declval<Base>().key())
+ {
+ auto it = --this->base();
+ return it.key();
+ }
+
+ /// return the value of an iterator
+ reference value() const
+ {
+ auto it = --this->base();
+ return it.operator * ();
+ }
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/iterators/primitive_iterator.hpp>
+
+// #include <nlohmann/detail/json_pointer.hpp>
+
+
+#include <algorithm> // all_of
+#include <cassert> // assert
+#include <numeric> // accumulate
+#include <string> // string
+#include <utility> // move
+#include <vector> // vector
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+template<typename BasicJsonType>
+class json_pointer
+{
+ // allow basic_json to access private members
+ NLOHMANN_BASIC_JSON_TPL_DECLARATION
+ friend class basic_json;
+
+ public:
+ /*!
+ @brief create JSON pointer
+
+ Create a JSON pointer according to the syntax described in
+ [Section 3 of RFC6901](https://tools.ietf.org/html/rfc6901#section-3).
+
+ @param[in] s string representing the JSON pointer; if omitted, the empty
+ string is assumed which references the whole JSON value
+
+ @throw parse_error.107 if the given JSON pointer @a s is nonempty and does
+ not begin with a slash (`/`); see example below
+
+ @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s is
+ not followed by `0` (representing `~`) or `1` (representing `/`); see
+ example below
+
+ @liveexample{The example shows the construction several valid JSON pointers
+ as well as the exceptional behavior.,json_pointer}
+
+ @since version 2.0.0
+ */
+ explicit json_pointer(const std::string& s = "")
+ : reference_tokens(split(s))
+ {}
+
+ /*!
+ @brief return a string representation of the JSON pointer
+
+ @invariant For each JSON pointer `ptr`, it holds:
+ @code {.cpp}
+ ptr == json_pointer(ptr.to_string());
+ @endcode
+
+ @return a string representation of the JSON pointer
+
+ @liveexample{The example shows the result of `to_string`.,json_pointer__to_string}
+
+ @since version 2.0.0
+ */
+ std::string to_string() const
+ {
+ return std::accumulate(reference_tokens.begin(), reference_tokens.end(),
+ std::string{},
+ [](const std::string & a, const std::string & b)
+ {
+ return a + "/" + escape(b);
+ });
+ }
+
+ /// @copydoc to_string()
+ operator std::string() const
+ {
+ return to_string();
+ }
+
+ /*!
+ @brief append another JSON pointer at the end of this JSON pointer
+
+ @param[in] ptr JSON pointer to append
+ @return JSON pointer with @a ptr appended
+
+ @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add}
+
+ @complexity Linear in the length of @a ptr.
+
+ @sa @ref operator/=(std::string) to append a reference token
+ @sa @ref operator/=(std::size_t) to append an array index
+ @sa @ref operator/(const json_pointer&, const json_pointer&) for a binary operator
+
+ @since version 3.6.0
+ */
+ json_pointer& operator/=(const json_pointer& ptr)
+ {
+ reference_tokens.insert(reference_tokens.end(),
+ ptr.reference_tokens.begin(),
+ ptr.reference_tokens.end());
+ return *this;
+ }
+
+ /*!
+ @brief append an unescaped reference token at the end of this JSON pointer
+
+ @param[in] token reference token to append
+ @return JSON pointer with @a token appended without escaping @a token
+
+ @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add}
+
+ @complexity Amortized constant.
+
+ @sa @ref operator/=(const json_pointer&) to append a JSON pointer
+ @sa @ref operator/=(std::size_t) to append an array index
+ @sa @ref operator/(const json_pointer&, std::size_t) for a binary operator
+
+ @since version 3.6.0
+ */
+ json_pointer& operator/=(std::string token)
+ {
+ push_back(std::move(token));
+ return *this;
+ }
+
+ /*!
+ @brief append an array index at the end of this JSON pointer
+
+ @param[in] array_index array index ot append
+ @return JSON pointer with @a array_index appended
+
+ @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add}
+
+ @complexity Amortized constant.
+
+ @sa @ref operator/=(const json_pointer&) to append a JSON pointer
+ @sa @ref operator/=(std::string) to append a reference token
+ @sa @ref operator/(const json_pointer&, std::string) for a binary operator
+
+ @since version 3.6.0
+ */
+ json_pointer& operator/=(std::size_t array_index)
+ {
+ return *this /= std::to_string(array_index);
+ }
+
+ /*!
+ @brief create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer
+
+ @param[in] lhs JSON pointer
+ @param[in] rhs JSON pointer
+ @return a new JSON pointer with @a rhs appended to @a lhs
+
+ @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary}
+
+ @complexity Linear in the length of @a lhs and @a rhs.
+
+ @sa @ref operator/=(const json_pointer&) to append a JSON pointer
+
+ @since version 3.6.0
+ */
+ friend json_pointer operator/(const json_pointer& lhs,
+ const json_pointer& rhs)
+ {
+ return json_pointer(lhs) /= rhs;
+ }
+
+ /*!
+ @brief create a new JSON pointer by appending the unescaped token at the end of the JSON pointer
+
+ @param[in] ptr JSON pointer
+ @param[in] token reference token
+ @return a new JSON pointer with unescaped @a token appended to @a ptr
+
+ @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary}
+
+ @complexity Linear in the length of @a ptr.
+
+ @sa @ref operator/=(std::string) to append a reference token
+
+ @since version 3.6.0
+ */
+ friend json_pointer operator/(const json_pointer& ptr, std::string token)
+ {
+ return json_pointer(ptr) /= std::move(token);
+ }
+
+ /*!
+ @brief create a new JSON pointer by appending the array-index-token at the end of the JSON pointer
+
+ @param[in] ptr JSON pointer
+ @param[in] array_index array index
+ @return a new JSON pointer with @a array_index appended to @a ptr
+
+ @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary}
+
+ @complexity Linear in the length of @a ptr.
+
+ @sa @ref operator/=(std::size_t) to append an array index
+
+ @since version 3.6.0
+ */
+ friend json_pointer operator/(const json_pointer& ptr, std::size_t array_index)
+ {
+ return json_pointer(ptr) /= array_index;
+ }
+
+ /*!
+ @brief returns the parent of this JSON pointer
+
+ @return parent of this JSON pointer; in case this JSON pointer is the root,
+ the root itself is returned
+
+ @complexity Linear in the length of the JSON pointer.
+
+ @liveexample{The example shows the result of `parent_pointer` for different
+ JSON Pointers.,json_pointer__parent_pointer}
+
+ @since version 3.6.0
+ */
+ json_pointer parent_pointer() const
+ {
+ if (empty())
+ {
+ return *this;
+ }
+
+ json_pointer res = *this;
+ res.pop_back();
+ return res;
+ }
+
+ /*!
+ @brief remove last reference token
+
+ @pre not `empty()`
+
+ @liveexample{The example shows the usage of `pop_back`.,json_pointer__pop_back}
+
+ @complexity Constant.
+
+ @throw out_of_range.405 if JSON pointer has no parent
+
+ @since version 3.6.0
+ */
+ void pop_back()
+ {
+ if (JSON_UNLIKELY(empty()))
+ {
+ JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
+ }
+
+ reference_tokens.pop_back();
+ }
+
+ /*!
+ @brief return last reference token
+
+ @pre not `empty()`
+ @return last reference token
+
+ @liveexample{The example shows the usage of `back`.,json_pointer__back}
+
+ @complexity Constant.
+
+ @throw out_of_range.405 if JSON pointer has no parent
+
+ @since version 3.6.0
+ */
+ const std::string& back()
+ {
+ if (JSON_UNLIKELY(empty()))
+ {
+ JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
+ }
+
+ return reference_tokens.back();
+ }
+
+ /*!
+ @brief append an unescaped token at the end of the reference pointer
+
+ @param[in] token token to add
+
+ @complexity Amortized constant.
+
+ @liveexample{The example shows the result of `push_back` for different
+ JSON Pointers.,json_pointer__push_back}
+
+ @since version 3.6.0
+ */
+ void push_back(const std::string& token)
+ {
+ reference_tokens.push_back(token);
+ }
+
+ /// @copydoc push_back(const std::string&)
+ void push_back(std::string&& token)
+ {
+ reference_tokens.push_back(std::move(token));
+ }
+
+ /*!
+ @brief return whether pointer points to the root document
+
+ @return true iff the JSON pointer points to the root document
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example shows the result of `empty` for different JSON
+ Pointers.,json_pointer__empty}
+
+ @since version 3.6.0
+ */
+ bool empty() const noexcept
+ {
+ return reference_tokens.empty();
+ }
+
+ private:
+ /*!
+ @param[in] s reference token to be converted into an array index
+
+ @return integer representation of @a s
+
+ @throw out_of_range.404 if string @a s could not be converted to an integer
+ */
+ static int array_index(const std::string& s)
+ {
+ std::size_t processed_chars = 0;
+ const int res = std::stoi(s, &processed_chars);
+
+ // check if the string was completely read
+ if (JSON_UNLIKELY(processed_chars != s.size()))
+ {
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'"));
+ }
+
+ return res;
+ }
+
+ json_pointer top() const
+ {
+ if (JSON_UNLIKELY(empty()))
+ {
+ JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
+ }
+
+ json_pointer result = *this;
+ result.reference_tokens = {reference_tokens[0]};
+ return result;
+ }
+
+ /*!
+ @brief create and return a reference to the pointed to value
+
+ @complexity Linear in the number of reference tokens.
+
+ @throw parse_error.109 if array index is not a number
+ @throw type_error.313 if value cannot be unflattened
+ */
+ BasicJsonType& get_and_create(BasicJsonType& j) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ auto result = &j;
+
+ // in case no reference tokens exist, return a reference to the JSON value
+ // j which will be overwritten by a primitive value
+ for (const auto& reference_token : reference_tokens)
+ {
+ switch (result->m_type)
+ {
+ case detail::value_t::null:
+ {
+ if (reference_token == "0")
+ {
+ // start a new array if reference token is 0
+ result = &result->operator[](0);
+ }
+ else
+ {
+ // start a new object otherwise
+ result = &result->operator[](reference_token);
+ }
+ break;
+ }
+
+ case detail::value_t::object:
+ {
+ // create an entry in the object
+ result = &result->operator[](reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ // create an entry in the array
+ JSON_TRY
+ {
+ result = &result->operator[](static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ break;
+ }
+
+ /*
+ The following code is only reached if there exists a reference
+ token _and_ the current value is primitive. In this case, we have
+ an error situation, because primitive values may only occur as
+ single value; that is, with an empty list of reference tokens.
+ */
+ default:
+ JSON_THROW(detail::type_error::create(313, "invalid value to unflatten"));
+ }
+ }
+
+ return *result;
+ }
+
+ /*!
+ @brief return a reference to the pointed to value
+
+ @note This version does not throw if a value is not present, but tries to
+ create nested values instead. For instance, calling this function
+ with pointer `"/this/that"` on a null value is equivalent to calling
+ `operator[]("this").operator[]("that")` on that value, effectively
+ changing the null value to an object.
+
+ @param[in] ptr a JSON value
+
+ @return reference to the JSON value pointed to by the JSON pointer
+
+ @complexity Linear in the length of the JSON pointer.
+
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+ */
+ BasicJsonType& get_unchecked(BasicJsonType* ptr) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ for (const auto& reference_token : reference_tokens)
+ {
+ // convert null values to arrays or objects before continuing
+ if (ptr->m_type == detail::value_t::null)
+ {
+ // check if reference token is a number
+ const bool nums =
+ std::all_of(reference_token.begin(), reference_token.end(),
+ [](const char x)
+ {
+ return x >= '0' and x <= '9';
+ });
+
+ // change value to array for numbers or "-" or to object otherwise
+ *ptr = (nums or reference_token == "-")
+ ? detail::value_t::array
+ : detail::value_t::object;
+ }
+
+ switch (ptr->m_type)
+ {
+ case detail::value_t::object:
+ {
+ // use unchecked object access
+ ptr = &ptr->operator[](reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ // error condition (cf. RFC 6901, Sect. 4)
+ if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
+ {
+ JSON_THROW(detail::parse_error::create(106, 0,
+ "array index '" + reference_token +
+ "' must not begin with '0'"));
+ }
+
+ if (reference_token == "-")
+ {
+ // explicitly treat "-" as index beyond the end
+ ptr = &ptr->operator[](ptr->m_value.array->size());
+ }
+ else
+ {
+ // convert array index to number; unchecked access
+ JSON_TRY
+ {
+ ptr = &ptr->operator[](
+ static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ }
+ break;
+ }
+
+ default:
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
+ }
+ }
+
+ return *ptr;
+ }
+
+ /*!
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.402 if the array index '-' is used
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+ */
+ BasicJsonType& get_checked(BasicJsonType* ptr) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ for (const auto& reference_token : reference_tokens)
+ {
+ switch (ptr->m_type)
+ {
+ case detail::value_t::object:
+ {
+ // note: at performs range check
+ ptr = &ptr->at(reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ if (JSON_UNLIKELY(reference_token == "-"))
+ {
+ // "-" always fails the range check
+ JSON_THROW(detail::out_of_range::create(402,
+ "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
+ ") is out of range"));
+ }
+
+ // error condition (cf. RFC 6901, Sect. 4)
+ if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
+ {
+ JSON_THROW(detail::parse_error::create(106, 0,
+ "array index '" + reference_token +
+ "' must not begin with '0'"));
+ }
+
+ // note: at performs range check
+ JSON_TRY
+ {
+ ptr = &ptr->at(static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ break;
+ }
+
+ default:
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
+ }
+ }
+
+ return *ptr;
+ }
+
+ /*!
+ @brief return a const reference to the pointed to value
+
+ @param[in] ptr a JSON value
+
+ @return const reference to the JSON value pointed to by the JSON
+ pointer
+
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.402 if the array index '-' is used
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+ */
+ const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ for (const auto& reference_token : reference_tokens)
+ {
+ switch (ptr->m_type)
+ {
+ case detail::value_t::object:
+ {
+ // use unchecked object access
+ ptr = &ptr->operator[](reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ if (JSON_UNLIKELY(reference_token == "-"))
+ {
+ // "-" cannot be used for const access
+ JSON_THROW(detail::out_of_range::create(402,
+ "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
+ ") is out of range"));
+ }
+
+ // error condition (cf. RFC 6901, Sect. 4)
+ if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
+ {
+ JSON_THROW(detail::parse_error::create(106, 0,
+ "array index '" + reference_token +
+ "' must not begin with '0'"));
+ }
+
+ // use unchecked array access
+ JSON_TRY
+ {
+ ptr = &ptr->operator[](
+ static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ break;
+ }
+
+ default:
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
+ }
+ }
+
+ return *ptr;
+ }
+
+ /*!
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.402 if the array index '-' is used
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+ */
+ const BasicJsonType& get_checked(const BasicJsonType* ptr) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ for (const auto& reference_token : reference_tokens)
+ {
+ switch (ptr->m_type)
+ {
+ case detail::value_t::object:
+ {
+ // note: at performs range check
+ ptr = &ptr->at(reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ if (JSON_UNLIKELY(reference_token == "-"))
+ {
+ // "-" always fails the range check
+ JSON_THROW(detail::out_of_range::create(402,
+ "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
+ ") is out of range"));
+ }
+
+ // error condition (cf. RFC 6901, Sect. 4)
+ if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
+ {
+ JSON_THROW(detail::parse_error::create(106, 0,
+ "array index '" + reference_token +
+ "' must not begin with '0'"));
+ }
+
+ // note: at performs range check
+ JSON_TRY
+ {
+ ptr = &ptr->at(static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ break;
+ }
+
+ default:
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
+ }
+ }
+
+ return *ptr;
+ }
+
+ /*!
+ @brief split the string input to reference tokens
+
+ @note This function is only called by the json_pointer constructor.
+ All exceptions below are documented there.
+
+ @throw parse_error.107 if the pointer is not empty or begins with '/'
+ @throw parse_error.108 if character '~' is not followed by '0' or '1'
+ */
+ static std::vector<std::string> split(const std::string& reference_string)
+ {
+ std::vector<std::string> result;
+
+ // special case: empty reference string -> no reference tokens
+ if (reference_string.empty())
+ {
+ return result;
+ }
+
+ // check if nonempty reference string begins with slash
+ if (JSON_UNLIKELY(reference_string[0] != '/'))
+ {
+ JSON_THROW(detail::parse_error::create(107, 1,
+ "JSON pointer must be empty or begin with '/' - was: '" +
+ reference_string + "'"));
+ }
+
+ // extract the reference tokens:
+ // - slash: position of the last read slash (or end of string)
+ // - start: position after the previous slash
+ for (
+ // search for the first slash after the first character
+ std::size_t slash = reference_string.find_first_of('/', 1),
+ // set the beginning of the first reference token
+ start = 1;
+ // we can stop if start == 0 (if slash == std::string::npos)
+ start != 0;
+ // set the beginning of the next reference token
+ // (will eventually be 0 if slash == std::string::npos)
+ start = (slash == std::string::npos) ? 0 : slash + 1,
+ // find next slash
+ slash = reference_string.find_first_of('/', start))
+ {
+ // use the text between the beginning of the reference token
+ // (start) and the last slash (slash).
+ auto reference_token = reference_string.substr(start, slash - start);
+
+ // check reference tokens are properly escaped
+ for (std::size_t pos = reference_token.find_first_of('~');
+ pos != std::string::npos;
+ pos = reference_token.find_first_of('~', pos + 1))
+ {
+ assert(reference_token[pos] == '~');
+
+ // ~ must be followed by 0 or 1
+ if (JSON_UNLIKELY(pos == reference_token.size() - 1 or
+ (reference_token[pos + 1] != '0' and
+ reference_token[pos + 1] != '1')))
+ {
+ JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'"));
+ }
+ }
+
+ // finally, store the reference token
+ unescape(reference_token);
+ result.push_back(reference_token);
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief replace all occurrences of a substring by another string
+
+ @param[in,out] s the string to manipulate; changed so that all
+ occurrences of @a f are replaced with @a t
+ @param[in] f the substring to replace with @a t
+ @param[in] t the string to replace @a f
+
+ @pre The search string @a f must not be empty. **This precondition is
+ enforced with an assertion.**
+
+ @since version 2.0.0
+ */
+ static void replace_substring(std::string& s, const std::string& f,
+ const std::string& t)
+ {
+ assert(not f.empty());
+ for (auto pos = s.find(f); // find first occurrence of f
+ pos != std::string::npos; // make sure f was found
+ s.replace(pos, f.size(), t), // replace with t, and
+ pos = s.find(f, pos + t.size())) // find next occurrence of f
+ {}
+ }
+
+ /// escape "~" to "~0" and "/" to "~1"
+ static std::string escape(std::string s)
+ {
+ replace_substring(s, "~", "~0");
+ replace_substring(s, "/", "~1");
+ return s;
+ }
+
+ /// unescape "~1" to tilde and "~0" to slash (order is important!)
+ static void unescape(std::string& s)
+ {
+ replace_substring(s, "~1", "/");
+ replace_substring(s, "~0", "~");
+ }
+
+ /*!
+ @param[in] reference_string the reference string to the current value
+ @param[in] value the value to consider
+ @param[in,out] result the result object to insert values to
+
+ @note Empty objects or arrays are flattened to `null`.
+ */
+ static void flatten(const std::string& reference_string,
+ const BasicJsonType& value,
+ BasicJsonType& result)
+ {
+ switch (value.m_type)
+ {
+ case detail::value_t::array:
+ {
+ if (value.m_value.array->empty())
+ {
+ // flatten empty array as null
+ result[reference_string] = nullptr;
+ }
+ else
+ {
+ // iterate array and use index as reference string
+ for (std::size_t i = 0; i < value.m_value.array->size(); ++i)
+ {
+ flatten(reference_string + "/" + std::to_string(i),
+ value.m_value.array->operator[](i), result);
+ }
+ }
+ break;
+ }
+
+ case detail::value_t::object:
+ {
+ if (value.m_value.object->empty())
+ {
+ // flatten empty object as null
+ result[reference_string] = nullptr;
+ }
+ else
+ {
+ // iterate object and use keys as reference string
+ for (const auto& element : *value.m_value.object)
+ {
+ flatten(reference_string + "/" + escape(element.first), element.second, result);
+ }
+ }
+ break;
+ }
+
+ default:
+ {
+ // add primitive value with its reference string
+ result[reference_string] = value;
+ break;
+ }
+ }
+ }
+
+ /*!
+ @param[in] value flattened JSON
+
+ @return unflattened JSON
+
+ @throw parse_error.109 if array index is not a number
+ @throw type_error.314 if value is not an object
+ @throw type_error.315 if object values are not primitive
+ @throw type_error.313 if value cannot be unflattened
+ */
+ static BasicJsonType
+ unflatten(const BasicJsonType& value)
+ {
+ if (JSON_UNLIKELY(not value.is_object()))
+ {
+ JSON_THROW(detail::type_error::create(314, "only objects can be unflattened"));
+ }
+
+ BasicJsonType result;
+
+ // iterate the JSON object values
+ for (const auto& element : *value.m_value.object)
+ {
+ if (JSON_UNLIKELY(not element.second.is_primitive()))
+ {
+ JSON_THROW(detail::type_error::create(315, "values in object must be primitive"));
+ }
+
+ // assign value to reference pointed to by JSON pointer; Note that if
+ // the JSON pointer is "" (i.e., points to the whole value), function
+ // get_and_create returns a reference to result itself. An assignment
+ // will then create a primitive value.
+ json_pointer(element.first).get_and_create(result) = element.second;
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief compares two JSON pointers for equality
+
+ @param[in] lhs JSON pointer to compare
+ @param[in] rhs JSON pointer to compare
+ @return whether @a lhs is equal to @a rhs
+
+ @complexity Linear in the length of the JSON pointer
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+ */
+ friend bool operator==(json_pointer const& lhs,
+ json_pointer const& rhs) noexcept
+ {
+ return lhs.reference_tokens == rhs.reference_tokens;
+ }
+
+ /*!
+ @brief compares two JSON pointers for inequality
+
+ @param[in] lhs JSON pointer to compare
+ @param[in] rhs JSON pointer to compare
+ @return whether @a lhs is not equal @a rhs
+
+ @complexity Linear in the length of the JSON pointer
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+ */
+ friend bool operator!=(json_pointer const& lhs,
+ json_pointer const& rhs) noexcept
+ {
+ return not (lhs == rhs);
+ }
+
+ /// the reference tokens
+ std::vector<std::string> reference_tokens;
+};
+} // namespace nlohmann
+
+// #include <nlohmann/detail/json_ref.hpp>
+
+
+#include <initializer_list>
+#include <utility>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template<typename BasicJsonType>
+class json_ref
+{
+ public:
+ using value_type = BasicJsonType;
+
+ json_ref(value_type&& value)
+ : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true)
+ {}
+
+ json_ref(const value_type& value)
+ : value_ref(const_cast<value_type*>(&value)), is_rvalue(false)
+ {}
+
+ json_ref(std::initializer_list<json_ref> init)
+ : owned_value(init), value_ref(&owned_value), is_rvalue(true)
+ {}
+
+ template <
+ class... Args,
+ enable_if_t<std::is_constructible<value_type, Args...>::value, int> = 0 >
+ json_ref(Args && ... args)
+ : owned_value(std::forward<Args>(args)...), value_ref(&owned_value),
+ is_rvalue(true) {}
+
+ // class should be movable only
+ json_ref(json_ref&&) = default;
+ json_ref(const json_ref&) = delete;
+ json_ref& operator=(const json_ref&) = delete;
+ json_ref& operator=(json_ref&&) = delete;
+ ~json_ref() = default;
+
+ value_type moved_or_copied() const
+ {
+ if (is_rvalue)
+ {
+ return std::move(*value_ref);
+ }
+ return *value_ref;
+ }
+
+ value_type const& operator*() const
+ {
+ return *static_cast<value_type const*>(value_ref);
+ }
+
+ value_type const* operator->() const
+ {
+ return static_cast<value_type const*>(value_ref);
+ }
+
+ private:
+ mutable value_type owned_value = nullptr;
+ value_type* value_ref = nullptr;
+ const bool is_rvalue;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+// #include <nlohmann/detail/output/binary_writer.hpp>
+
+
+#include <algorithm> // reverse
+#include <array> // array
+#include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
+#include <cstring> // memcpy
+#include <limits> // numeric_limits
+#include <string> // string
+
+// #include <nlohmann/detail/input/binary_reader.hpp>
+
+// #include <nlohmann/detail/output/output_adapters.hpp>
+
+
+#include <algorithm> // copy
+#include <cstddef> // size_t
+#include <ios> // streamsize
+#include <iterator> // back_inserter
+#include <memory> // shared_ptr, make_shared
+#include <ostream> // basic_ostream
+#include <string> // basic_string
+#include <vector> // vector
+
+namespace nlohmann
+{
+namespace detail
+{
+/// abstract output adapter interface
+template<typename CharType> struct output_adapter_protocol
+{
+ virtual void write_character(CharType c) = 0;
+ virtual void write_characters(const CharType* s, std::size_t length) = 0;
+ virtual ~output_adapter_protocol() = default;
+};
+
+/// a type to simplify interfaces
+template<typename CharType>
+using output_adapter_t = std::shared_ptr<output_adapter_protocol<CharType>>;
+
+/// output adapter for byte vectors
+template<typename CharType>
+class output_vector_adapter : public output_adapter_protocol<CharType>
+{
+ public:
+ explicit output_vector_adapter(std::vector<CharType>& vec) noexcept
+ : v(vec)
+ {}
+
+ void write_character(CharType c) override
+ {
+ v.push_back(c);
+ }
+
+ void write_characters(const CharType* s, std::size_t length) override
+ {
+ std::copy(s, s + length, std::back_inserter(v));
+ }
+
+ private:
+ std::vector<CharType>& v;
+};
+
+/// output adapter for output streams
+template<typename CharType>
+class output_stream_adapter : public output_adapter_protocol<CharType>
+{
+ public:
+ explicit output_stream_adapter(std::basic_ostream<CharType>& s) noexcept
+ : stream(s)
+ {}
+
+ void write_character(CharType c) override
+ {
+ stream.put(c);
+ }
+
+ void write_characters(const CharType* s, std::size_t length) override
+ {
+ stream.write(s, static_cast<std::streamsize>(length));
+ }
+
+ private:
+ std::basic_ostream<CharType>& stream;
+};
+
+/// output adapter for basic_string
+template<typename CharType, typename StringType = std::basic_string<CharType>>
+class output_string_adapter : public output_adapter_protocol<CharType>
+{
+ public:
+ explicit output_string_adapter(StringType& s) noexcept
+ : str(s)
+ {}
+
+ void write_character(CharType c) override
+ {
+ str.push_back(c);
+ }
+
+ void write_characters(const CharType* s, std::size_t length) override
+ {
+ str.append(s, length);
+ }
+
+ private:
+ StringType& str;
+};
+
+template<typename CharType, typename StringType = std::basic_string<CharType>>
+class output_adapter
+{
+ public:
+ output_adapter(std::vector<CharType>& vec)
+ : oa(std::make_shared<output_vector_adapter<CharType>>(vec)) {}
+
+ output_adapter(std::basic_ostream<CharType>& s)
+ : oa(std::make_shared<output_stream_adapter<CharType>>(s)) {}
+
+ output_adapter(StringType& s)
+ : oa(std::make_shared<output_string_adapter<CharType, StringType>>(s)) {}
+
+ operator output_adapter_t<CharType>()
+ {
+ return oa;
+ }
+
+ private:
+ output_adapter_t<CharType> oa = nullptr;
+};
+} // namespace detail
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////////////
+// binary writer //
+///////////////////
+
+/*!
+@brief serialization to CBOR and MessagePack values
+*/
+template<typename BasicJsonType, typename CharType>
+class binary_writer
+{
+ using string_t = typename BasicJsonType::string_t;
+
+ public:
+ /*!
+ @brief create a binary writer
+
+ @param[in] adapter output adapter to write to
+ */
+ explicit binary_writer(output_adapter_t<CharType> adapter) : oa(adapter)
+ {
+ assert(oa);
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ @pre j.type() == value_t::object
+ */
+ void write_bson(const BasicJsonType& j)
+ {
+ switch (j.type())
+ {
+ case value_t::object:
+ {
+ write_bson_object(*j.m_value.object);
+ break;
+ }
+
+ default:
+ {
+ JSON_THROW(type_error::create(317, "to serialize to BSON, top-level type must be object, but is " + std::string(j.type_name())));
+ }
+ }
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ */
+ void write_cbor(const BasicJsonType& j)
+ {
+ switch (j.type())
+ {
+ case value_t::null:
+ {
+ oa->write_character(to_char_type(0xF6));
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ oa->write_character(j.m_value.boolean
+ ? to_char_type(0xF5)
+ : to_char_type(0xF4));
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ if (j.m_value.number_integer >= 0)
+ {
+ // CBOR does not differentiate between positive signed
+ // integers and unsigned integers. Therefore, we used the
+ // code from the value_t::number_unsigned case here.
+ if (j.m_value.number_integer <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x18));
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x19));
+ write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x1A));
+ write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
+ }
+ else
+ {
+ oa->write_character(to_char_type(0x1B));
+ write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
+ }
+ }
+ else
+ {
+ // The conversions below encode the sign in the first
+ // byte, and the value is converted to a positive number.
+ const auto positive_number = -1 - j.m_value.number_integer;
+ if (j.m_value.number_integer >= -24)
+ {
+ write_number(static_cast<std::uint8_t>(0x20 + positive_number));
+ }
+ else if (positive_number <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x38));
+ write_number(static_cast<std::uint8_t>(positive_number));
+ }
+ else if (positive_number <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x39));
+ write_number(static_cast<std::uint16_t>(positive_number));
+ }
+ else if (positive_number <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x3A));
+ write_number(static_cast<std::uint32_t>(positive_number));
+ }
+ else
+ {
+ oa->write_character(to_char_type(0x3B));
+ write_number(static_cast<std::uint64_t>(positive_number));
+ }
+ }
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ if (j.m_value.number_unsigned <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x18));
+ write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x19));
+ write_number(static_cast<std::uint16_t>(j.m_value.number_unsigned));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x1A));
+ write_number(static_cast<std::uint32_t>(j.m_value.number_unsigned));
+ }
+ else
+ {
+ oa->write_character(to_char_type(0x1B));
+ write_number(static_cast<std::uint64_t>(j.m_value.number_unsigned));
+ }
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ oa->write_character(get_cbor_float_prefix(j.m_value.number_float));
+ write_number(j.m_value.number_float);
+ break;
+ }
+
+ case value_t::string:
+ {
+ // step 1: write control byte and the string length
+ const auto N = j.m_value.string->size();
+ if (N <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(0x60 + N));
+ }
+ else if (N <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x78));
+ write_number(static_cast<std::uint8_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x79));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x7A));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+ // LCOV_EXCL_START
+ else if (N <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ oa->write_character(to_char_type(0x7B));
+ write_number(static_cast<std::uint64_t>(N));
+ }
+ // LCOV_EXCL_STOP
+
+ // step 2: write the string
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
+ j.m_value.string->size());
+ break;
+ }
+
+ case value_t::array:
+ {
+ // step 1: write control byte and the array size
+ const auto N = j.m_value.array->size();
+ if (N <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(0x80 + N));
+ }
+ else if (N <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x98));
+ write_number(static_cast<std::uint8_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x99));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x9A));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+ // LCOV_EXCL_START
+ else if (N <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ oa->write_character(to_char_type(0x9B));
+ write_number(static_cast<std::uint64_t>(N));
+ }
+ // LCOV_EXCL_STOP
+
+ // step 2: write each element
+ for (const auto& el : *j.m_value.array)
+ {
+ write_cbor(el);
+ }
+ break;
+ }
+
+ case value_t::object:
+ {
+ // step 1: write control byte and the object size
+ const auto N = j.m_value.object->size();
+ if (N <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(0xA0 + N));
+ }
+ else if (N <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0xB8));
+ write_number(static_cast<std::uint8_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0xB9));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0xBA));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+ // LCOV_EXCL_START
+ else if (N <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ oa->write_character(to_char_type(0xBB));
+ write_number(static_cast<std::uint64_t>(N));
+ }
+ // LCOV_EXCL_STOP
+
+ // step 2: write each element
+ for (const auto& el : *j.m_value.object)
+ {
+ write_cbor(el.first);
+ write_cbor(el.second);
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ */
+ void write_msgpack(const BasicJsonType& j)
+ {
+ switch (j.type())
+ {
+ case value_t::null: // nil
+ {
+ oa->write_character(to_char_type(0xC0));
+ break;
+ }
+
+ case value_t::boolean: // true and false
+ {
+ oa->write_character(j.m_value.boolean
+ ? to_char_type(0xC3)
+ : to_char_type(0xC2));
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ if (j.m_value.number_integer >= 0)
+ {
+ // MessagePack does not differentiate between positive
+ // signed integers and unsigned integers. Therefore, we used
+ // the code from the value_t::number_unsigned case here.
+ if (j.m_value.number_unsigned < 128)
+ {
+ // positive fixnum
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ // uint 8
+ oa->write_character(to_char_type(0xCC));
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // uint 16
+ oa->write_character(to_char_type(0xCD));
+ write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // uint 32
+ oa->write_character(to_char_type(0xCE));
+ write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ // uint 64
+ oa->write_character(to_char_type(0xCF));
+ write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
+ }
+ }
+ else
+ {
+ if (j.m_value.number_integer >= -32)
+ {
+ // negative fixnum
+ write_number(static_cast<std::int8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer >= (std::numeric_limits<std::int8_t>::min)() and
+ j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
+ {
+ // int 8
+ oa->write_character(to_char_type(0xD0));
+ write_number(static_cast<std::int8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer >= (std::numeric_limits<std::int16_t>::min)() and
+ j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
+ {
+ // int 16
+ oa->write_character(to_char_type(0xD1));
+ write_number(static_cast<std::int16_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer >= (std::numeric_limits<std::int32_t>::min)() and
+ j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ // int 32
+ oa->write_character(to_char_type(0xD2));
+ write_number(static_cast<std::int32_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer >= (std::numeric_limits<std::int64_t>::min)() and
+ j.m_value.number_integer <= (std::numeric_limits<std::int64_t>::max)())
+ {
+ // int 64
+ oa->write_character(to_char_type(0xD3));
+ write_number(static_cast<std::int64_t>(j.m_value.number_integer));
+ }
+ }
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ if (j.m_value.number_unsigned < 128)
+ {
+ // positive fixnum
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ // uint 8
+ oa->write_character(to_char_type(0xCC));
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // uint 16
+ oa->write_character(to_char_type(0xCD));
+ write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // uint 32
+ oa->write_character(to_char_type(0xCE));
+ write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ // uint 64
+ oa->write_character(to_char_type(0xCF));
+ write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
+ }
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ oa->write_character(get_msgpack_float_prefix(j.m_value.number_float));
+ write_number(j.m_value.number_float);
+ break;
+ }
+
+ case value_t::string:
+ {
+ // step 1: write control byte and the string length
+ const auto N = j.m_value.string->size();
+ if (N <= 31)
+ {
+ // fixstr
+ write_number(static_cast<std::uint8_t>(0xA0 | N));
+ }
+ else if (N <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ // str 8
+ oa->write_character(to_char_type(0xD9));
+ write_number(static_cast<std::uint8_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // str 16
+ oa->write_character(to_char_type(0xDA));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // str 32
+ oa->write_character(to_char_type(0xDB));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+
+ // step 2: write the string
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
+ j.m_value.string->size());
+ break;
+ }
+
+ case value_t::array:
+ {
+ // step 1: write control byte and the array size
+ const auto N = j.m_value.array->size();
+ if (N <= 15)
+ {
+ // fixarray
+ write_number(static_cast<std::uint8_t>(0x90 | N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // array 16
+ oa->write_character(to_char_type(0xDC));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // array 32
+ oa->write_character(to_char_type(0xDD));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+
+ // step 2: write each element
+ for (const auto& el : *j.m_value.array)
+ {
+ write_msgpack(el);
+ }
+ break;
+ }
+
+ case value_t::object:
+ {
+ // step 1: write control byte and the object size
+ const auto N = j.m_value.object->size();
+ if (N <= 15)
+ {
+ // fixmap
+ write_number(static_cast<std::uint8_t>(0x80 | (N & 0xF)));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // map 16
+ oa->write_character(to_char_type(0xDE));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // map 32
+ oa->write_character(to_char_type(0xDF));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+
+ // step 2: write each element
+ for (const auto& el : *j.m_value.object)
+ {
+ write_msgpack(el.first);
+ write_msgpack(el.second);
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ @param[in] use_count whether to use '#' prefixes (optimized format)
+ @param[in] use_type whether to use '$' prefixes (optimized format)
+ @param[in] add_prefix whether prefixes need to be used for this value
+ */
+ void write_ubjson(const BasicJsonType& j, const bool use_count,
+ const bool use_type, const bool add_prefix = true)
+ {
+ switch (j.type())
+ {
+ case value_t::null:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('Z'));
+ }
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(j.m_value.boolean
+ ? to_char_type('T')
+ : to_char_type('F'));
+ }
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix);
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix);
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix);
+ break;
+ }
+
+ case value_t::string:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('S'));
+ }
+ write_number_with_ubjson_prefix(j.m_value.string->size(), true);
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
+ j.m_value.string->size());
+ break;
+ }
+
+ case value_t::array:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('['));
+ }
+
+ bool prefix_required = true;
+ if (use_type and not j.m_value.array->empty())
+ {
+ assert(use_count);
+ const CharType first_prefix = ubjson_prefix(j.front());
+ const bool same_prefix = std::all_of(j.begin() + 1, j.end(),
+ [this, first_prefix](const BasicJsonType & v)
+ {
+ return ubjson_prefix(v) == first_prefix;
+ });
+
+ if (same_prefix)
+ {
+ prefix_required = false;
+ oa->write_character(to_char_type('$'));
+ oa->write_character(first_prefix);
+ }
+ }
+
+ if (use_count)
+ {
+ oa->write_character(to_char_type('#'));
+ write_number_with_ubjson_prefix(j.m_value.array->size(), true);
+ }
+
+ for (const auto& el : *j.m_value.array)
+ {
+ write_ubjson(el, use_count, use_type, prefix_required);
+ }
+
+ if (not use_count)
+ {
+ oa->write_character(to_char_type(']'));
+ }
+
+ break;
+ }
+
+ case value_t::object:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('{'));
+ }
+
+ bool prefix_required = true;
+ if (use_type and not j.m_value.object->empty())
+ {
+ assert(use_count);
+ const CharType first_prefix = ubjson_prefix(j.front());
+ const bool same_prefix = std::all_of(j.begin(), j.end(),
+ [this, first_prefix](const BasicJsonType & v)
+ {
+ return ubjson_prefix(v) == first_prefix;
+ });
+
+ if (same_prefix)
+ {
+ prefix_required = false;
+ oa->write_character(to_char_type('$'));
+ oa->write_character(first_prefix);
+ }
+ }
+
+ if (use_count)
+ {
+ oa->write_character(to_char_type('#'));
+ write_number_with_ubjson_prefix(j.m_value.object->size(), true);
+ }
+
+ for (const auto& el : *j.m_value.object)
+ {
+ write_number_with_ubjson_prefix(el.first.size(), true);
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(el.first.c_str()),
+ el.first.size());
+ write_ubjson(el.second, use_count, use_type, prefix_required);
+ }
+
+ if (not use_count)
+ {
+ oa->write_character(to_char_type('}'));
+ }
+
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ private:
+ //////////
+ // BSON //
+ //////////
+
+ /*!
+ @return The size of a BSON document entry header, including the id marker
+ and the entry name size (and its null-terminator).
+ */
+ static std::size_t calc_bson_entry_header_size(const string_t& name)
+ {
+ const auto it = name.find(static_cast<typename string_t::value_type>(0));
+ if (JSON_UNLIKELY(it != BasicJsonType::string_t::npos))
+ {
+ JSON_THROW(out_of_range::create(409,
+ "BSON key cannot contain code point U+0000 (at byte " + std::to_string(it) + ")"));
+ }
+
+ return /*id*/ 1ul + name.size() + /*zero-terminator*/1u;
+ }
+
+ /*!
+ @brief Writes the given @a element_type and @a name to the output adapter
+ */
+ void write_bson_entry_header(const string_t& name,
+ const std::uint8_t element_type)
+ {
+ oa->write_character(to_char_type(element_type)); // boolean
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(name.c_str()),
+ name.size() + 1u);
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and boolean value @a value
+ */
+ void write_bson_boolean(const string_t& name,
+ const bool value)
+ {
+ write_bson_entry_header(name, 0x08);
+ oa->write_character(value ? to_char_type(0x01) : to_char_type(0x00));
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and double value @a value
+ */
+ void write_bson_double(const string_t& name,
+ const double value)
+ {
+ write_bson_entry_header(name, 0x01);
+ write_number<double, true>(value);
+ }
+
+ /*!
+ @return The size of the BSON-encoded string in @a value
+ */
+ static std::size_t calc_bson_string_size(const string_t& value)
+ {
+ return sizeof(std::int32_t) + value.size() + 1ul;
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and string value @a value
+ */
+ void write_bson_string(const string_t& name,
+ const string_t& value)
+ {
+ write_bson_entry_header(name, 0x02);
+
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(value.size() + 1ul));
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(value.c_str()),
+ value.size() + 1);
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and null value
+ */
+ void write_bson_null(const string_t& name)
+ {
+ write_bson_entry_header(name, 0x0A);
+ }
+
+ /*!
+ @return The size of the BSON-encoded integer @a value
+ */
+ static std::size_t calc_bson_integer_size(const std::int64_t value)
+ {
+ return (std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)()
+ ? sizeof(std::int32_t)
+ : sizeof(std::int64_t);
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and integer @a value
+ */
+ void write_bson_integer(const string_t& name,
+ const std::int64_t value)
+ {
+ if ((std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ write_bson_entry_header(name, 0x10); // int32
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(value));
+ }
+ else
+ {
+ write_bson_entry_header(name, 0x12); // int64
+ write_number<std::int64_t, true>(static_cast<std::int64_t>(value));
+ }
+ }
+
+ /*!
+ @return The size of the BSON-encoded unsigned integer in @a j
+ */
+ static constexpr std::size_t calc_bson_unsigned_size(const std::uint64_t value) noexcept
+ {
+ return (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
+ ? sizeof(std::int32_t)
+ : sizeof(std::int64_t);
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and unsigned @a value
+ */
+ void write_bson_unsigned(const string_t& name,
+ const std::uint64_t value)
+ {
+ if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
+ {
+ write_bson_entry_header(name, 0x10 /* int32 */);
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(value));
+ }
+ else if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
+ {
+ write_bson_entry_header(name, 0x12 /* int64 */);
+ write_number<std::int64_t, true>(static_cast<std::int64_t>(value));
+ }
+ else
+ {
+ JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(value) + " cannot be represented by BSON as it does not fit int64"));
+ }
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and object @a value
+ */
+ void write_bson_object_entry(const string_t& name,
+ const typename BasicJsonType::object_t& value)
+ {
+ write_bson_entry_header(name, 0x03); // object
+ write_bson_object(value);
+ }
+
+ /*!
+ @return The size of the BSON-encoded array @a value
+ */
+ static std::size_t calc_bson_array_size(const typename BasicJsonType::array_t& value)
+ {
+ std::size_t embedded_document_size = 0ul;
+ std::size_t array_index = 0ul;
+
+ for (const auto& el : value)
+ {
+ embedded_document_size += calc_bson_element_size(std::to_string(array_index++), el);
+ }
+
+ return sizeof(std::int32_t) + embedded_document_size + 1ul;
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and array @a value
+ */
+ void write_bson_array(const string_t& name,
+ const typename BasicJsonType::array_t& value)
+ {
+ write_bson_entry_header(name, 0x04); // array
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_array_size(value)));
+
+ std::size_t array_index = 0ul;
+
+ for (const auto& el : value)
+ {
+ write_bson_element(std::to_string(array_index++), el);
+ }
+
+ oa->write_character(to_char_type(0x00));
+ }
+
+ /*!
+ @brief Calculates the size necessary to serialize the JSON value @a j with its @a name
+ @return The calculated size for the BSON document entry for @a j with the given @a name.
+ */
+ static std::size_t calc_bson_element_size(const string_t& name,
+ const BasicJsonType& j)
+ {
+ const auto header_size = calc_bson_entry_header_size(name);
+ switch (j.type())
+ {
+ case value_t::object:
+ return header_size + calc_bson_object_size(*j.m_value.object);
+
+ case value_t::array:
+ return header_size + calc_bson_array_size(*j.m_value.array);
+
+ case value_t::boolean:
+ return header_size + 1ul;
+
+ case value_t::number_float:
+ return header_size + 8ul;
+
+ case value_t::number_integer:
+ return header_size + calc_bson_integer_size(j.m_value.number_integer);
+
+ case value_t::number_unsigned:
+ return header_size + calc_bson_unsigned_size(j.m_value.number_unsigned);
+
+ case value_t::string:
+ return header_size + calc_bson_string_size(*j.m_value.string);
+
+ case value_t::null:
+ return header_size + 0ul;
+
+ // LCOV_EXCL_START
+ default:
+ assert(false);
+ return 0ul;
+ // LCOV_EXCL_STOP
+ }
+ }
+
+ /*!
+ @brief Serializes the JSON value @a j to BSON and associates it with the
+ key @a name.
+ @param name The name to associate with the JSON entity @a j within the
+ current BSON document
+ @return The size of the BSON entry
+ */
+ void write_bson_element(const string_t& name,
+ const BasicJsonType& j)
+ {
+ switch (j.type())
+ {
+ case value_t::object:
+ return write_bson_object_entry(name, *j.m_value.object);
+
+ case value_t::array:
+ return write_bson_array(name, *j.m_value.array);
+
+ case value_t::boolean:
+ return write_bson_boolean(name, j.m_value.boolean);
+
+ case value_t::number_float:
+ return write_bson_double(name, j.m_value.number_float);
+
+ case value_t::number_integer:
+ return write_bson_integer(name, j.m_value.number_integer);
+
+ case value_t::number_unsigned:
+ return write_bson_unsigned(name, j.m_value.number_unsigned);
+
+ case value_t::string:
+ return write_bson_string(name, *j.m_value.string);
+
+ case value_t::null:
+ return write_bson_null(name);
+
+ // LCOV_EXCL_START
+ default:
+ assert(false);
+ return;
+ // LCOV_EXCL_STOP
+ }
+ }
+
+ /*!
+ @brief Calculates the size of the BSON serialization of the given
+ JSON-object @a j.
+ @param[in] j JSON value to serialize
+ @pre j.type() == value_t::object
+ */
+ static std::size_t calc_bson_object_size(const typename BasicJsonType::object_t& value)
+ {
+ std::size_t document_size = std::accumulate(value.begin(), value.end(), 0ul,
+ [](size_t result, const typename BasicJsonType::object_t::value_type & el)
+ {
+ return result += calc_bson_element_size(el.first, el.second);
+ });
+
+ return sizeof(std::int32_t) + document_size + 1ul;
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ @pre j.type() == value_t::object
+ */
+ void write_bson_object(const typename BasicJsonType::object_t& value)
+ {
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_object_size(value)));
+
+ for (const auto& el : value)
+ {
+ write_bson_element(el.first, el.second);
+ }
+
+ oa->write_character(to_char_type(0x00));
+ }
+
+ //////////
+ // CBOR //
+ //////////
+
+ static constexpr CharType get_cbor_float_prefix(float /*unused*/)
+ {
+ return to_char_type(0xFA); // Single-Precision Float
+ }
+
+ static constexpr CharType get_cbor_float_prefix(double /*unused*/)
+ {
+ return to_char_type(0xFB); // Double-Precision Float
+ }
+
+ /////////////
+ // MsgPack //
+ /////////////
+
+ static constexpr CharType get_msgpack_float_prefix(float /*unused*/)
+ {
+ return to_char_type(0xCA); // float 32
+ }
+
+ static constexpr CharType get_msgpack_float_prefix(double /*unused*/)
+ {
+ return to_char_type(0xCB); // float 64
+ }
+
+ ////////////
+ // UBJSON //
+ ////////////
+
+ // UBJSON: write number (floating point)
+ template<typename NumberType, typename std::enable_if<
+ std::is_floating_point<NumberType>::value, int>::type = 0>
+ void write_number_with_ubjson_prefix(const NumberType n,
+ const bool add_prefix)
+ {
+ if (add_prefix)
+ {
+ oa->write_character(get_ubjson_float_prefix(n));
+ }
+ write_number(n);
+ }
+
+ // UBJSON: write number (unsigned integer)
+ template<typename NumberType, typename std::enable_if<
+ std::is_unsigned<NumberType>::value, int>::type = 0>
+ void write_number_with_ubjson_prefix(const NumberType n,
+ const bool add_prefix)
+ {
+ if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('i')); // int8
+ }
+ write_number(static_cast<std::uint8_t>(n));
+ }
+ else if (n <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('U')); // uint8
+ }
+ write_number(static_cast<std::uint8_t>(n));
+ }
+ else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('I')); // int16
+ }
+ write_number(static_cast<std::int16_t>(n));
+ }
+ else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('l')); // int32
+ }
+ write_number(static_cast<std::int32_t>(n));
+ }
+ else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('L')); // int64
+ }
+ write_number(static_cast<std::int64_t>(n));
+ }
+ else
+ {
+ JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(n) + " cannot be represented by UBJSON as it does not fit int64"));
+ }
+ }
+
+ // UBJSON: write number (signed integer)
+ template<typename NumberType, typename std::enable_if<
+ std::is_signed<NumberType>::value and
+ not std::is_floating_point<NumberType>::value, int>::type = 0>
+ void write_number_with_ubjson_prefix(const NumberType n,
+ const bool add_prefix)
+ {
+ if ((std::numeric_limits<std::int8_t>::min)() <= n and n <= (std::numeric_limits<std::int8_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('i')); // int8
+ }
+ write_number(static_cast<std::int8_t>(n));
+ }
+ else if (static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::min)()) <= n and n <= static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('U')); // uint8
+ }
+ write_number(static_cast<std::uint8_t>(n));
+ }
+ else if ((std::numeric_limits<std::int16_t>::min)() <= n and n <= (std::numeric_limits<std::int16_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('I')); // int16
+ }
+ write_number(static_cast<std::int16_t>(n));
+ }
+ else if ((std::numeric_limits<std::int32_t>::min)() <= n and n <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('l')); // int32
+ }
+ write_number(static_cast<std::int32_t>(n));
+ }
+ else if ((std::numeric_limits<std::int64_t>::min)() <= n and n <= (std::numeric_limits<std::int64_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('L')); // int64
+ }
+ write_number(static_cast<std::int64_t>(n));
+ }
+ // LCOV_EXCL_START
+ else
+ {
+ JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(n) + " cannot be represented by UBJSON as it does not fit int64"));
+ }
+ // LCOV_EXCL_STOP
+ }
+
+ /*!
+ @brief determine the type prefix of container values
+
+ @note This function does not need to be 100% accurate when it comes to
+ integer limits. In case a number exceeds the limits of int64_t,
+ this will be detected by a later call to function
+ write_number_with_ubjson_prefix. Therefore, we return 'L' for any
+ value that does not fit the previous limits.
+ */
+ CharType ubjson_prefix(const BasicJsonType& j) const noexcept
+ {
+ switch (j.type())
+ {
+ case value_t::null:
+ return 'Z';
+
+ case value_t::boolean:
+ return j.m_value.boolean ? 'T' : 'F';
+
+ case value_t::number_integer:
+ {
+ if ((std::numeric_limits<std::int8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
+ {
+ return 'i';
+ }
+ if ((std::numeric_limits<std::uint8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ return 'U';
+ }
+ if ((std::numeric_limits<std::int16_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
+ {
+ return 'I';
+ }
+ if ((std::numeric_limits<std::int32_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ return 'l';
+ }
+ // no check and assume int64_t (see note above)
+ return 'L';
+ }
+
+ case value_t::number_unsigned:
+ {
+ if (j.m_value.number_unsigned <= (std::numeric_limits<std::int8_t>::max)())
+ {
+ return 'i';
+ }
+ if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ return 'U';
+ }
+ if (j.m_value.number_unsigned <= (std::numeric_limits<std::int16_t>::max)())
+ {
+ return 'I';
+ }
+ if (j.m_value.number_unsigned <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ return 'l';
+ }
+ // no check and assume int64_t (see note above)
+ return 'L';
+ }
+
+ case value_t::number_float:
+ return get_ubjson_float_prefix(j.m_value.number_float);
+
+ case value_t::string:
+ return 'S';
+
+ case value_t::array:
+ return '[';
+
+ case value_t::object:
+ return '{';
+
+ default: // discarded values
+ return 'N';
+ }
+ }
+
+ static constexpr CharType get_ubjson_float_prefix(float /*unused*/)
+ {
+ return 'd'; // float 32
+ }
+
+ static constexpr CharType get_ubjson_float_prefix(double /*unused*/)
+ {
+ return 'D'; // float 64
+ }
+
+ ///////////////////////
+ // Utility functions //
+ ///////////////////////
+
+ /*
+ @brief write a number to output input
+ @param[in] n number of type @a NumberType
+ @tparam NumberType the type of the number
+ @tparam OutputIsLittleEndian Set to true if output data is
+ required to be little endian
+
+ @note This function needs to respect the system's endianess, because bytes
+ in CBOR, MessagePack, and UBJSON are stored in network order (big
+ endian) and therefore need reordering on little endian systems.
+ */
+ template<typename NumberType, bool OutputIsLittleEndian = false>
+ void write_number(const NumberType n)
+ {
+ // step 1: write number to array of length NumberType
+ std::array<CharType, sizeof(NumberType)> vec;
+ std::memcpy(vec.data(), &n, sizeof(NumberType));
+
+ // step 2: write array to output (with possible reordering)
+ if (is_little_endian != OutputIsLittleEndian)
+ {
+ // reverse byte order prior to conversion if necessary
+ std::reverse(vec.begin(), vec.end());
+ }
+
+ oa->write_characters(vec.data(), sizeof(NumberType));
+ }
+
+ public:
+ // The following to_char_type functions are implement the conversion
+ // between uint8_t and CharType. In case CharType is not unsigned,
+ // such a conversion is required to allow values greater than 128.
+ // See <https://github.com/nlohmann/json/issues/1286> for a discussion.
+ template < typename C = CharType,
+ enable_if_t < std::is_signed<C>::value and std::is_signed<char>::value > * = nullptr >
+ static constexpr CharType to_char_type(std::uint8_t x) noexcept
+ {
+ return *reinterpret_cast<char*>(&x);
+ }
+
+ template < typename C = CharType,
+ enable_if_t < std::is_signed<C>::value and std::is_unsigned<char>::value > * = nullptr >
+ static CharType to_char_type(std::uint8_t x) noexcept
+ {
+ static_assert(sizeof(std::uint8_t) == sizeof(CharType), "size of CharType must be equal to std::uint8_t");
+ static_assert(std::is_pod<CharType>::value, "CharType must be POD");
+ CharType result;
+ std::memcpy(&result, &x, sizeof(x));
+ return result;
+ }
+
+ template<typename C = CharType,
+ enable_if_t<std::is_unsigned<C>::value>* = nullptr>
+ static constexpr CharType to_char_type(std::uint8_t x) noexcept
+ {
+ return x;
+ }
+
+ template < typename InputCharType, typename C = CharType,
+ enable_if_t <
+ std::is_signed<C>::value and
+ std::is_signed<char>::value and
+ std::is_same<char, typename std::remove_cv<InputCharType>::type>::value
+ > * = nullptr >
+ static constexpr CharType to_char_type(InputCharType x) noexcept
+ {
+ return x;
+ }
+
+ private:
+ /// whether we can assume little endianess
+ const bool is_little_endian = binary_reader<BasicJsonType>::little_endianess();
+
+ /// the output
+ output_adapter_t<CharType> oa = nullptr;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/output/output_adapters.hpp>
+
+// #include <nlohmann/detail/output/serializer.hpp>
+
+
+#include <algorithm> // reverse, remove, fill, find, none_of
+#include <array> // array
+#include <cassert> // assert
+#include <ciso646> // and, or
+#include <clocale> // localeconv, lconv
+#include <cmath> // labs, isfinite, isnan, signbit
+#include <cstddef> // size_t, ptrdiff_t
+#include <cstdint> // uint8_t
+#include <cstdio> // snprintf
+#include <limits> // numeric_limits
+#include <string> // string
+#include <type_traits> // is_same
+#include <utility> // move
+
+// #include <nlohmann/detail/conversions/to_chars.hpp>
+
+
+#include <array> // array
+#include <cassert> // assert
+#include <ciso646> // or, and, not
+#include <cmath> // signbit, isfinite
+#include <cstdint> // intN_t, uintN_t
+#include <cstring> // memcpy, memmove
+#include <limits> // numeric_limits
+#include <type_traits> // conditional
+
+namespace nlohmann
+{
+namespace detail
+{
+
+/*!
+@brief implements the Grisu2 algorithm for binary to decimal floating-point
+conversion.
+
+This implementation is a slightly modified version of the reference
+implementation which may be obtained from
+http://florian.loitsch.com/publications (bench.tar.gz).
+
+The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch.
+
+For a detailed description of the algorithm see:
+
+[1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with
+ Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming
+ Language Design and Implementation, PLDI 2010
+[2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately",
+ Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language
+ Design and Implementation, PLDI 1996
+*/
+namespace dtoa_impl
+{
+
+template <typename Target, typename Source>
+Target reinterpret_bits(const Source source)
+{
+ static_assert(sizeof(Target) == sizeof(Source), "size mismatch");
+
+ Target target;
+ std::memcpy(&target, &source, sizeof(Source));
+ return target;
+}
+
+struct diyfp // f * 2^e
+{
+ static constexpr int kPrecision = 64; // = q
+
+ std::uint64_t f = 0;
+ int e = 0;
+
+ constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_) {}
+
+ /*!
+ @brief returns x - y
+ @pre x.e == y.e and x.f >= y.f
+ */
+ static diyfp sub(const diyfp& x, const diyfp& y) noexcept
+ {
+ assert(x.e == y.e);
+ assert(x.f >= y.f);
+
+ return {x.f - y.f, x.e};
+ }
+
+ /*!
+ @brief returns x * y
+ @note The result is rounded. (Only the upper q bits are returned.)
+ */
+ static diyfp mul(const diyfp& x, const diyfp& y) noexcept
+ {
+ static_assert(kPrecision == 64, "internal error");
+
+ // Computes:
+ // f = round((x.f * y.f) / 2^q)
+ // e = x.e + y.e + q
+
+ // Emulate the 64-bit * 64-bit multiplication:
+ //
+ // p = u * v
+ // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi)
+ // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi )
+ // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 )
+ // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 )
+ // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3)
+ // = (p0_lo ) + 2^32 (Q ) + 2^64 (H )
+ // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H )
+ //
+ // (Since Q might be larger than 2^32 - 1)
+ //
+ // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H)
+ //
+ // (Q_hi + H does not overflow a 64-bit int)
+ //
+ // = p_lo + 2^64 p_hi
+
+ const std::uint64_t u_lo = x.f & 0xFFFFFFFFu;
+ const std::uint64_t u_hi = x.f >> 32u;
+ const std::uint64_t v_lo = y.f & 0xFFFFFFFFu;
+ const std::uint64_t v_hi = y.f >> 32u;
+
+ const std::uint64_t p0 = u_lo * v_lo;
+ const std::uint64_t p1 = u_lo * v_hi;
+ const std::uint64_t p2 = u_hi * v_lo;
+ const std::uint64_t p3 = u_hi * v_hi;
+
+ const std::uint64_t p0_hi = p0 >> 32u;
+ const std::uint64_t p1_lo = p1 & 0xFFFFFFFFu;
+ const std::uint64_t p1_hi = p1 >> 32u;
+ const std::uint64_t p2_lo = p2 & 0xFFFFFFFFu;
+ const std::uint64_t p2_hi = p2 >> 32u;
+
+ std::uint64_t Q = p0_hi + p1_lo + p2_lo;
+
+ // The full product might now be computed as
+ //
+ // p_hi = p3 + p2_hi + p1_hi + (Q >> 32)
+ // p_lo = p0_lo + (Q << 32)
+ //
+ // But in this particular case here, the full p_lo is not required.
+ // Effectively we only need to add the highest bit in p_lo to p_hi (and
+ // Q_hi + 1 does not overflow).
+
+ Q += std::uint64_t{1} << (64u - 32u - 1u); // round, ties up
+
+ const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u);
+
+ return {h, x.e + y.e + 64};
+ }
+
+ /*!
+ @brief normalize x such that the significand is >= 2^(q-1)
+ @pre x.f != 0
+ */
+ static diyfp normalize(diyfp x) noexcept
+ {
+ assert(x.f != 0);
+
+ while ((x.f >> 63u) == 0)
+ {
+ x.f <<= 1u;
+ x.e--;
+ }
+
+ return x;
+ }
+
+ /*!
+ @brief normalize x such that the result has the exponent E
+ @pre e >= x.e and the upper e - x.e bits of x.f must be zero.
+ */
+ static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept
+ {
+ const int delta = x.e - target_exponent;
+
+ assert(delta >= 0);
+ assert(((x.f << delta) >> delta) == x.f);
+
+ return {x.f << delta, target_exponent};
+ }
+};
+
+struct boundaries
+{
+ diyfp w;
+ diyfp minus;
+ diyfp plus;
+};
+
+/*!
+Compute the (normalized) diyfp representing the input number 'value' and its
+boundaries.
+
+@pre value must be finite and positive
+*/
+template <typename FloatType>
+boundaries compute_boundaries(FloatType value)
+{
+ assert(std::isfinite(value));
+ assert(value > 0);
+
+ // Convert the IEEE representation into a diyfp.
+ //
+ // If v is denormal:
+ // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1))
+ // If v is normalized:
+ // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1))
+
+ static_assert(std::numeric_limits<FloatType>::is_iec559,
+ "internal error: dtoa_short requires an IEEE-754 floating-point implementation");
+
+ constexpr int kPrecision = std::numeric_limits<FloatType>::digits; // = p (includes the hidden bit)
+ constexpr int kBias = std::numeric_limits<FloatType>::max_exponent - 1 + (kPrecision - 1);
+ constexpr int kMinExp = 1 - kBias;
+ constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); // = 2^(p-1)
+
+ using bits_type = typename std::conditional<kPrecision == 24, std::uint32_t, std::uint64_t >::type;
+
+ const std::uint64_t bits = reinterpret_bits<bits_type>(value);
+ const std::uint64_t E = bits >> (kPrecision - 1);
+ const std::uint64_t F = bits & (kHiddenBit - 1);
+
+ const bool is_denormal = E == 0;
+ const diyfp v = is_denormal
+ ? diyfp(F, kMinExp)
+ : diyfp(F + kHiddenBit, static_cast<int>(E) - kBias);
+
+ // Compute the boundaries m- and m+ of the floating-point value
+ // v = f * 2^e.
+ //
+ // Determine v- and v+, the floating-point predecessor and successor if v,
+ // respectively.
+ //
+ // v- = v - 2^e if f != 2^(p-1) or e == e_min (A)
+ // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B)
+ //
+ // v+ = v + 2^e
+ //
+ // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_
+ // between m- and m+ round to v, regardless of how the input rounding
+ // algorithm breaks ties.
+ //
+ // ---+-------------+-------------+-------------+-------------+--- (A)
+ // v- m- v m+ v+
+ //
+ // -----------------+------+------+-------------+-------------+--- (B)
+ // v- m- v m+ v+
+
+ const bool lower_boundary_is_closer = F == 0 and E > 1;
+ const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1);
+ const diyfp m_minus = lower_boundary_is_closer
+ ? diyfp(4 * v.f - 1, v.e - 2) // (B)
+ : diyfp(2 * v.f - 1, v.e - 1); // (A)
+
+ // Determine the normalized w+ = m+.
+ const diyfp w_plus = diyfp::normalize(m_plus);
+
+ // Determine w- = m- such that e_(w-) = e_(w+).
+ const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e);
+
+ return {diyfp::normalize(v), w_minus, w_plus};
+}
+
+// Given normalized diyfp w, Grisu needs to find a (normalized) cached
+// power-of-ten c, such that the exponent of the product c * w = f * 2^e lies
+// within a certain range [alpha, gamma] (Definition 3.2 from [1])
+//
+// alpha <= e = e_c + e_w + q <= gamma
+//
+// or
+//
+// f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q
+// <= f_c * f_w * 2^gamma
+//
+// Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies
+//
+// 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma
+//
+// or
+//
+// 2^(q - 2 + alpha) <= c * w < 2^(q + gamma)
+//
+// The choice of (alpha,gamma) determines the size of the table and the form of
+// the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well
+// in practice:
+//
+// The idea is to cut the number c * w = f * 2^e into two parts, which can be
+// processed independently: An integral part p1, and a fractional part p2:
+//
+// f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e
+// = (f div 2^-e) + (f mod 2^-e) * 2^e
+// = p1 + p2 * 2^e
+//
+// The conversion of p1 into decimal form requires a series of divisions and
+// modulos by (a power of) 10. These operations are faster for 32-bit than for
+// 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be
+// achieved by choosing
+//
+// -e >= 32 or e <= -32 := gamma
+//
+// In order to convert the fractional part
+//
+// p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ...
+//
+// into decimal form, the fraction is repeatedly multiplied by 10 and the digits
+// d[-i] are extracted in order:
+//
+// (10 * p2) div 2^-e = d[-1]
+// (10 * p2) mod 2^-e = d[-2] / 10^1 + ...
+//
+// The multiplication by 10 must not overflow. It is sufficient to choose
+//
+// 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64.
+//
+// Since p2 = f mod 2^-e < 2^-e,
+//
+// -e <= 60 or e >= -60 := alpha
+
+constexpr int kAlpha = -60;
+constexpr int kGamma = -32;
+
+struct cached_power // c = f * 2^e ~= 10^k
+{
+ std::uint64_t f;
+ int e;
+ int k;
+};
+
+/*!
+For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached
+power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c
+satisfies (Definition 3.2 from [1])
+
+ alpha <= e_c + e + q <= gamma.
+*/
+inline cached_power get_cached_power_for_binary_exponent(int e)
+{
+ // Now
+ //
+ // alpha <= e_c + e + q <= gamma (1)
+ // ==> f_c * 2^alpha <= c * 2^e * 2^q
+ //
+ // and since the c's are normalized, 2^(q-1) <= f_c,
+ //
+ // ==> 2^(q - 1 + alpha) <= c * 2^(e + q)
+ // ==> 2^(alpha - e - 1) <= c
+ //
+ // If c were an exakt power of ten, i.e. c = 10^k, one may determine k as
+ //
+ // k = ceil( log_10( 2^(alpha - e - 1) ) )
+ // = ceil( (alpha - e - 1) * log_10(2) )
+ //
+ // From the paper:
+ // "In theory the result of the procedure could be wrong since c is rounded,
+ // and the computation itself is approximated [...]. In practice, however,
+ // this simple function is sufficient."
+ //
+ // For IEEE double precision floating-point numbers converted into
+ // normalized diyfp's w = f * 2^e, with q = 64,
+ //
+ // e >= -1022 (min IEEE exponent)
+ // -52 (p - 1)
+ // -52 (p - 1, possibly normalize denormal IEEE numbers)
+ // -11 (normalize the diyfp)
+ // = -1137
+ //
+ // and
+ //
+ // e <= +1023 (max IEEE exponent)
+ // -52 (p - 1)
+ // -11 (normalize the diyfp)
+ // = 960
+ //
+ // This binary exponent range [-1137,960] results in a decimal exponent
+ // range [-307,324]. One does not need to store a cached power for each
+ // k in this range. For each such k it suffices to find a cached power
+ // such that the exponent of the product lies in [alpha,gamma].
+ // This implies that the difference of the decimal exponents of adjacent
+ // table entries must be less than or equal to
+ //
+ // floor( (gamma - alpha) * log_10(2) ) = 8.
+ //
+ // (A smaller distance gamma-alpha would require a larger table.)
+
+ // NB:
+ // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34.
+
+ constexpr int kCachedPowersMinDecExp = -300;
+ constexpr int kCachedPowersDecStep = 8;
+
+ static constexpr std::array<cached_power, 79> kCachedPowers =
+ {
+ {
+ { 0xAB70FE17C79AC6CA, -1060, -300 },
+ { 0xFF77B1FCBEBCDC4F, -1034, -292 },
+ { 0xBE5691EF416BD60C, -1007, -284 },
+ { 0x8DD01FAD907FFC3C, -980, -276 },
+ { 0xD3515C2831559A83, -954, -268 },
+ { 0x9D71AC8FADA6C9B5, -927, -260 },
+ { 0xEA9C227723EE8BCB, -901, -252 },
+ { 0xAECC49914078536D, -874, -244 },
+ { 0x823C12795DB6CE57, -847, -236 },
+ { 0xC21094364DFB5637, -821, -228 },
+ { 0x9096EA6F3848984F, -794, -220 },
+ { 0xD77485CB25823AC7, -768, -212 },
+ { 0xA086CFCD97BF97F4, -741, -204 },
+ { 0xEF340A98172AACE5, -715, -196 },
+ { 0xB23867FB2A35B28E, -688, -188 },
+ { 0x84C8D4DFD2C63F3B, -661, -180 },
+ { 0xC5DD44271AD3CDBA, -635, -172 },
+ { 0x936B9FCEBB25C996, -608, -164 },
+ { 0xDBAC6C247D62A584, -582, -156 },
+ { 0xA3AB66580D5FDAF6, -555, -148 },
+ { 0xF3E2F893DEC3F126, -529, -140 },
+ { 0xB5B5ADA8AAFF80B8, -502, -132 },
+ { 0x87625F056C7C4A8B, -475, -124 },
+ { 0xC9BCFF6034C13053, -449, -116 },
+ { 0x964E858C91BA2655, -422, -108 },
+ { 0xDFF9772470297EBD, -396, -100 },
+ { 0xA6DFBD9FB8E5B88F, -369, -92 },
+ { 0xF8A95FCF88747D94, -343, -84 },
+ { 0xB94470938FA89BCF, -316, -76 },
+ { 0x8A08F0F8BF0F156B, -289, -68 },
+ { 0xCDB02555653131B6, -263, -60 },
+ { 0x993FE2C6D07B7FAC, -236, -52 },
+ { 0xE45C10C42A2B3B06, -210, -44 },
+ { 0xAA242499697392D3, -183, -36 },
+ { 0xFD87B5F28300CA0E, -157, -28 },
+ { 0xBCE5086492111AEB, -130, -20 },
+ { 0x8CBCCC096F5088CC, -103, -12 },
+ { 0xD1B71758E219652C, -77, -4 },
+ { 0x9C40000000000000, -50, 4 },
+ { 0xE8D4A51000000000, -24, 12 },
+ { 0xAD78EBC5AC620000, 3, 20 },
+ { 0x813F3978F8940984, 30, 28 },
+ { 0xC097CE7BC90715B3, 56, 36 },
+ { 0x8F7E32CE7BEA5C70, 83, 44 },
+ { 0xD5D238A4ABE98068, 109, 52 },
+ { 0x9F4F2726179A2245, 136, 60 },
+ { 0xED63A231D4C4FB27, 162, 68 },
+ { 0xB0DE65388CC8ADA8, 189, 76 },
+ { 0x83C7088E1AAB65DB, 216, 84 },
+ { 0xC45D1DF942711D9A, 242, 92 },
+ { 0x924D692CA61BE758, 269, 100 },
+ { 0xDA01EE641A708DEA, 295, 108 },
+ { 0xA26DA3999AEF774A, 322, 116 },
+ { 0xF209787BB47D6B85, 348, 124 },
+ { 0xB454E4A179DD1877, 375, 132 },
+ { 0x865B86925B9BC5C2, 402, 140 },
+ { 0xC83553C5C8965D3D, 428, 148 },
+ { 0x952AB45CFA97A0B3, 455, 156 },
+ { 0xDE469FBD99A05FE3, 481, 164 },
+ { 0xA59BC234DB398C25, 508, 172 },
+ { 0xF6C69A72A3989F5C, 534, 180 },
+ { 0xB7DCBF5354E9BECE, 561, 188 },
+ { 0x88FCF317F22241E2, 588, 196 },
+ { 0xCC20CE9BD35C78A5, 614, 204 },
+ { 0x98165AF37B2153DF, 641, 212 },
+ { 0xE2A0B5DC971F303A, 667, 220 },
+ { 0xA8D9D1535CE3B396, 694, 228 },
+ { 0xFB9B7CD9A4A7443C, 720, 236 },
+ { 0xBB764C4CA7A44410, 747, 244 },
+ { 0x8BAB8EEFB6409C1A, 774, 252 },
+ { 0xD01FEF10A657842C, 800, 260 },
+ { 0x9B10A4E5E9913129, 827, 268 },
+ { 0xE7109BFBA19C0C9D, 853, 276 },
+ { 0xAC2820D9623BF429, 880, 284 },
+ { 0x80444B5E7AA7CF85, 907, 292 },
+ { 0xBF21E44003ACDD2D, 933, 300 },
+ { 0x8E679C2F5E44FF8F, 960, 308 },
+ { 0xD433179D9C8CB841, 986, 316 },
+ { 0x9E19DB92B4E31BA9, 1013, 324 },
+ }
+ };
+
+ // This computation gives exactly the same results for k as
+ // k = ceil((kAlpha - e - 1) * 0.30102999566398114)
+ // for |e| <= 1500, but doesn't require floating-point operations.
+ // NB: log_10(2) ~= 78913 / 2^18
+ assert(e >= -1500);
+ assert(e <= 1500);
+ const int f = kAlpha - e - 1;
+ const int k = (f * 78913) / (1 << 18) + static_cast<int>(f > 0);
+
+ const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep;
+ assert(index >= 0);
+ assert(static_cast<std::size_t>(index) < kCachedPowers.size());
+
+ const cached_power cached = kCachedPowers[static_cast<std::size_t>(index)];
+ assert(kAlpha <= cached.e + e + 64);
+ assert(kGamma >= cached.e + e + 64);
+
+ return cached;
+}
+
+/*!
+For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k.
+For n == 0, returns 1 and sets pow10 := 1.
+*/
+inline int find_largest_pow10(const std::uint32_t n, std::uint32_t& pow10)
+{
+ // LCOV_EXCL_START
+ if (n >= 1000000000)
+ {
+ pow10 = 1000000000;
+ return 10;
+ }
+ // LCOV_EXCL_STOP
+ else if (n >= 100000000)
+ {
+ pow10 = 100000000;
+ return 9;
+ }
+ else if (n >= 10000000)
+ {
+ pow10 = 10000000;
+ return 8;
+ }
+ else if (n >= 1000000)
+ {
+ pow10 = 1000000;
+ return 7;
+ }
+ else if (n >= 100000)
+ {
+ pow10 = 100000;
+ return 6;
+ }
+ else if (n >= 10000)
+ {
+ pow10 = 10000;
+ return 5;
+ }
+ else if (n >= 1000)
+ {
+ pow10 = 1000;
+ return 4;
+ }
+ else if (n >= 100)
+ {
+ pow10 = 100;
+ return 3;
+ }
+ else if (n >= 10)
+ {
+ pow10 = 10;
+ return 2;
+ }
+ else
+ {
+ pow10 = 1;
+ return 1;
+ }
+}
+
+inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t delta,
+ std::uint64_t rest, std::uint64_t ten_k)
+{
+ assert(len >= 1);
+ assert(dist <= delta);
+ assert(rest <= delta);
+ assert(ten_k > 0);
+
+ // <--------------------------- delta ---->
+ // <---- dist --------->
+ // --------------[------------------+-------------------]--------------
+ // M- w M+
+ //
+ // ten_k
+ // <------>
+ // <---- rest ---->
+ // --------------[------------------+----+--------------]--------------
+ // w V
+ // = buf * 10^k
+ //
+ // ten_k represents a unit-in-the-last-place in the decimal representation
+ // stored in buf.
+ // Decrement buf by ten_k while this takes buf closer to w.
+
+ // The tests are written in this order to avoid overflow in unsigned
+ // integer arithmetic.
+
+ while (rest < dist
+ and delta - rest >= ten_k
+ and (rest + ten_k < dist or dist - rest > rest + ten_k - dist))
+ {
+ assert(buf[len - 1] != '0');
+ buf[len - 1]--;
+ rest += ten_k;
+ }
+}
+
+/*!
+Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+.
+M- and M+ must be normalized and share the same exponent -60 <= e <= -32.
+*/
+inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent,
+ diyfp M_minus, diyfp w, diyfp M_plus)
+{
+ static_assert(kAlpha >= -60, "internal error");
+ static_assert(kGamma <= -32, "internal error");
+
+ // Generates the digits (and the exponent) of a decimal floating-point
+ // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's
+ // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma.
+ //
+ // <--------------------------- delta ---->
+ // <---- dist --------->
+ // --------------[------------------+-------------------]--------------
+ // M- w M+
+ //
+ // Grisu2 generates the digits of M+ from left to right and stops as soon as
+ // V is in [M-,M+].
+
+ assert(M_plus.e >= kAlpha);
+ assert(M_plus.e <= kGamma);
+
+ std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e)
+ std::uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e)
+
+ // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0):
+ //
+ // M+ = f * 2^e
+ // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e
+ // = ((p1 ) * 2^-e + (p2 )) * 2^e
+ // = p1 + p2 * 2^e
+
+ const diyfp one(std::uint64_t{1} << -M_plus.e, M_plus.e);
+
+ auto p1 = static_cast<std::uint32_t>(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.)
+ std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e
+
+ // 1)
+ //
+ // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0]
+
+ assert(p1 > 0);
+
+ std::uint32_t pow10;
+ const int k = find_largest_pow10(p1, pow10);
+
+ // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1)
+ //
+ // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1))
+ // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1))
+ //
+ // M+ = p1 + p2 * 2^e
+ // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e
+ // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e
+ // = d[k-1] * 10^(k-1) + ( rest) * 2^e
+ //
+ // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0)
+ //
+ // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0]
+ //
+ // but stop as soon as
+ //
+ // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e
+
+ int n = k;
+ while (n > 0)
+ {
+ // Invariants:
+ // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k)
+ // pow10 = 10^(n-1) <= p1 < 10^n
+ //
+ const std::uint32_t d = p1 / pow10; // d = p1 div 10^(n-1)
+ const std::uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1)
+ //
+ // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e
+ // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e)
+ //
+ assert(d <= 9);
+ buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d
+ //
+ // M+ = buffer * 10^(n-1) + (r + p2 * 2^e)
+ //
+ p1 = r;
+ n--;
+ //
+ // M+ = buffer * 10^n + (p1 + p2 * 2^e)
+ // pow10 = 10^n
+ //
+
+ // Now check if enough digits have been generated.
+ // Compute
+ //
+ // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e
+ //
+ // Note:
+ // Since rest and delta share the same exponent e, it suffices to
+ // compare the significands.
+ const std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2;
+ if (rest <= delta)
+ {
+ // V = buffer * 10^n, with M- <= V <= M+.
+
+ decimal_exponent += n;
+
+ // We may now just stop. But instead look if the buffer could be
+ // decremented to bring V closer to w.
+ //
+ // pow10 = 10^n is now 1 ulp in the decimal representation V.
+ // The rounding procedure works with diyfp's with an implicit
+ // exponent of e.
+ //
+ // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e
+ //
+ const std::uint64_t ten_n = std::uint64_t{pow10} << -one.e;
+ grisu2_round(buffer, length, dist, delta, rest, ten_n);
+
+ return;
+ }
+
+ pow10 /= 10;
+ //
+ // pow10 = 10^(n-1) <= p1 < 10^n
+ // Invariants restored.
+ }
+
+ // 2)
+ //
+ // The digits of the integral part have been generated:
+ //
+ // M+ = d[k-1]...d[1]d[0] + p2 * 2^e
+ // = buffer + p2 * 2^e
+ //
+ // Now generate the digits of the fractional part p2 * 2^e.
+ //
+ // Note:
+ // No decimal point is generated: the exponent is adjusted instead.
+ //
+ // p2 actually represents the fraction
+ //
+ // p2 * 2^e
+ // = p2 / 2^-e
+ // = d[-1] / 10^1 + d[-2] / 10^2 + ...
+ //
+ // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...)
+ //
+ // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m
+ // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...)
+ //
+ // using
+ //
+ // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e)
+ // = ( d) * 2^-e + ( r)
+ //
+ // or
+ // 10^m * p2 * 2^e = d + r * 2^e
+ //
+ // i.e.
+ //
+ // M+ = buffer + p2 * 2^e
+ // = buffer + 10^-m * (d + r * 2^e)
+ // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e
+ //
+ // and stop as soon as 10^-m * r * 2^e <= delta * 2^e
+
+ assert(p2 > delta);
+
+ int m = 0;
+ for (;;)
+ {
+ // Invariant:
+ // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e
+ // = buffer * 10^-m + 10^-m * (p2 ) * 2^e
+ // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e
+ // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e
+ //
+ assert(p2 <= (std::numeric_limits<std::uint64_t>::max)() / 10);
+ p2 *= 10;
+ const std::uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e
+ const std::uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e
+ //
+ // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e
+ // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e))
+ // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e
+ //
+ assert(d <= 9);
+ buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d
+ //
+ // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e
+ //
+ p2 = r;
+ m++;
+ //
+ // M+ = buffer * 10^-m + 10^-m * p2 * 2^e
+ // Invariant restored.
+
+ // Check if enough digits have been generated.
+ //
+ // 10^-m * p2 * 2^e <= delta * 2^e
+ // p2 * 2^e <= 10^m * delta * 2^e
+ // p2 <= 10^m * delta
+ delta *= 10;
+ dist *= 10;
+ if (p2 <= delta)
+ {
+ break;
+ }
+ }
+
+ // V = buffer * 10^-m, with M- <= V <= M+.
+
+ decimal_exponent -= m;
+
+ // 1 ulp in the decimal representation is now 10^-m.
+ // Since delta and dist are now scaled by 10^m, we need to do the
+ // same with ulp in order to keep the units in sync.
+ //
+ // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e
+ //
+ const std::uint64_t ten_m = one.f;
+ grisu2_round(buffer, length, dist, delta, p2, ten_m);
+
+ // By construction this algorithm generates the shortest possible decimal
+ // number (Loitsch, Theorem 6.2) which rounds back to w.
+ // For an input number of precision p, at least
+ //
+ // N = 1 + ceil(p * log_10(2))
+ //
+ // decimal digits are sufficient to identify all binary floating-point
+ // numbers (Matula, "In-and-Out conversions").
+ // This implies that the algorithm does not produce more than N decimal
+ // digits.
+ //
+ // N = 17 for p = 53 (IEEE double precision)
+ // N = 9 for p = 24 (IEEE single precision)
+}
+
+/*!
+v = buf * 10^decimal_exponent
+len is the length of the buffer (number of decimal digits)
+The buffer must be large enough, i.e. >= max_digits10.
+*/
+inline void grisu2(char* buf, int& len, int& decimal_exponent,
+ diyfp m_minus, diyfp v, diyfp m_plus)
+{
+ assert(m_plus.e == m_minus.e);
+ assert(m_plus.e == v.e);
+
+ // --------(-----------------------+-----------------------)-------- (A)
+ // m- v m+
+ //
+ // --------------------(-----------+-----------------------)-------- (B)
+ // m- v m+
+ //
+ // First scale v (and m- and m+) such that the exponent is in the range
+ // [alpha, gamma].
+
+ const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e);
+
+ const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k
+
+ // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma]
+ const diyfp w = diyfp::mul(v, c_minus_k);
+ const diyfp w_minus = diyfp::mul(m_minus, c_minus_k);
+ const diyfp w_plus = diyfp::mul(m_plus, c_minus_k);
+
+ // ----(---+---)---------------(---+---)---------------(---+---)----
+ // w- w w+
+ // = c*m- = c*v = c*m+
+ //
+ // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and
+ // w+ are now off by a small amount.
+ // In fact:
+ //
+ // w - v * 10^k < 1 ulp
+ //
+ // To account for this inaccuracy, add resp. subtract 1 ulp.
+ //
+ // --------+---[---------------(---+---)---------------]---+--------
+ // w- M- w M+ w+
+ //
+ // Now any number in [M-, M+] (bounds included) will round to w when input,
+ // regardless of how the input rounding algorithm breaks ties.
+ //
+ // And digit_gen generates the shortest possible such number in [M-, M+].
+ // Note that this does not mean that Grisu2 always generates the shortest
+ // possible number in the interval (m-, m+).
+ const diyfp M_minus(w_minus.f + 1, w_minus.e);
+ const diyfp M_plus (w_plus.f - 1, w_plus.e );
+
+ decimal_exponent = -cached.k; // = -(-k) = k
+
+ grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus);
+}
+
+/*!
+v = buf * 10^decimal_exponent
+len is the length of the buffer (number of decimal digits)
+The buffer must be large enough, i.e. >= max_digits10.
+*/
+template <typename FloatType>
+void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value)
+{
+ static_assert(diyfp::kPrecision >= std::numeric_limits<FloatType>::digits + 3,
+ "internal error: not enough precision");
+
+ assert(std::isfinite(value));
+ assert(value > 0);
+
+ // If the neighbors (and boundaries) of 'value' are always computed for double-precision
+ // numbers, all float's can be recovered using strtod (and strtof). However, the resulting
+ // decimal representations are not exactly "short".
+ //
+ // The documentation for 'std::to_chars' (https://en.cppreference.com/w/cpp/utility/to_chars)
+ // says "value is converted to a string as if by std::sprintf in the default ("C") locale"
+ // and since sprintf promotes float's to double's, I think this is exactly what 'std::to_chars'
+ // does.
+ // On the other hand, the documentation for 'std::to_chars' requires that "parsing the
+ // representation using the corresponding std::from_chars function recovers value exactly". That
+ // indicates that single precision floating-point numbers should be recovered using
+ // 'std::strtof'.
+ //
+ // NB: If the neighbors are computed for single-precision numbers, there is a single float
+ // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision
+ // value is off by 1 ulp.
+#if 0
+ const boundaries w = compute_boundaries(static_cast<double>(value));
+#else
+ const boundaries w = compute_boundaries(value);
+#endif
+
+ grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus);
+}
+
+/*!
+@brief appends a decimal representation of e to buf
+@return a pointer to the element following the exponent.
+@pre -1000 < e < 1000
+*/
+inline char* append_exponent(char* buf, int e)
+{
+ assert(e > -1000);
+ assert(e < 1000);
+
+ if (e < 0)
+ {
+ e = -e;
+ *buf++ = '-';
+ }
+ else
+ {
+ *buf++ = '+';
+ }
+
+ auto k = static_cast<std::uint32_t>(e);
+ if (k < 10)
+ {
+ // Always print at least two digits in the exponent.
+ // This is for compatibility with printf("%g").
+ *buf++ = '0';
+ *buf++ = static_cast<char>('0' + k);
+ }
+ else if (k < 100)
+ {
+ *buf++ = static_cast<char>('0' + k / 10);
+ k %= 10;
+ *buf++ = static_cast<char>('0' + k);
+ }
+ else
+ {
+ *buf++ = static_cast<char>('0' + k / 100);
+ k %= 100;
+ *buf++ = static_cast<char>('0' + k / 10);
+ k %= 10;
+ *buf++ = static_cast<char>('0' + k);
+ }
+
+ return buf;
+}
+
+/*!
+@brief prettify v = buf * 10^decimal_exponent
+
+If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point
+notation. Otherwise it will be printed in exponential notation.
+
+@pre min_exp < 0
+@pre max_exp > 0
+*/
+inline char* format_buffer(char* buf, int len, int decimal_exponent,
+ int min_exp, int max_exp)
+{
+ assert(min_exp < 0);
+ assert(max_exp > 0);
+
+ const int k = len;
+ const int n = len + decimal_exponent;
+
+ // v = buf * 10^(n-k)
+ // k is the length of the buffer (number of decimal digits)
+ // n is the position of the decimal point relative to the start of the buffer.
+
+ if (k <= n and n <= max_exp)
+ {
+ // digits[000]
+ // len <= max_exp + 2
+
+ std::memset(buf + k, '0', static_cast<size_t>(n - k));
+ // Make it look like a floating-point number (#362, #378)
+ buf[n + 0] = '.';
+ buf[n + 1] = '0';
+ return buf + (n + 2);
+ }
+
+ if (0 < n and n <= max_exp)
+ {
+ // dig.its
+ // len <= max_digits10 + 1
+
+ assert(k > n);
+
+ std::memmove(buf + (n + 1), buf + n, static_cast<size_t>(k - n));
+ buf[n] = '.';
+ return buf + (k + 1);
+ }
+
+ if (min_exp < n and n <= 0)
+ {
+ // 0.[000]digits
+ // len <= 2 + (-min_exp - 1) + max_digits10
+
+ std::memmove(buf + (2 + -n), buf, static_cast<size_t>(k));
+ buf[0] = '0';
+ buf[1] = '.';
+ std::memset(buf + 2, '0', static_cast<size_t>(-n));
+ return buf + (2 + (-n) + k);
+ }
+
+ if (k == 1)
+ {
+ // dE+123
+ // len <= 1 + 5
+
+ buf += 1;
+ }
+ else
+ {
+ // d.igitsE+123
+ // len <= max_digits10 + 1 + 5
+
+ std::memmove(buf + 2, buf + 1, static_cast<size_t>(k - 1));
+ buf[1] = '.';
+ buf += 1 + k;
+ }
+
+ *buf++ = 'e';
+ return append_exponent(buf, n - 1);
+}
+
+} // namespace dtoa_impl
+
+/*!
+@brief generates a decimal representation of the floating-point number value in [first, last).
+
+The format of the resulting decimal representation is similar to printf's %g
+format. Returns an iterator pointing past-the-end of the decimal representation.
+
+@note The input number must be finite, i.e. NaN's and Inf's are not supported.
+@note The buffer must be large enough.
+@note The result is NOT null-terminated.
+*/
+template <typename FloatType>
+char* to_chars(char* first, const char* last, FloatType value)
+{
+ static_cast<void>(last); // maybe unused - fix warning
+ assert(std::isfinite(value));
+
+ // Use signbit(value) instead of (value < 0) since signbit works for -0.
+ if (std::signbit(value))
+ {
+ value = -value;
+ *first++ = '-';
+ }
+
+ if (value == 0) // +-0
+ {
+ *first++ = '0';
+ // Make it look like a floating-point number (#362, #378)
+ *first++ = '.';
+ *first++ = '0';
+ return first;
+ }
+
+ assert(last - first >= std::numeric_limits<FloatType>::max_digits10);
+
+ // Compute v = buffer * 10^decimal_exponent.
+ // The decimal digits are stored in the buffer, which needs to be interpreted
+ // as an unsigned decimal integer.
+ // len is the length of the buffer, i.e. the number of decimal digits.
+ int len = 0;
+ int decimal_exponent = 0;
+ dtoa_impl::grisu2(first, len, decimal_exponent, value);
+
+ assert(len <= std::numeric_limits<FloatType>::max_digits10);
+
+ // Format the buffer like printf("%.*g", prec, value)
+ constexpr int kMinExp = -4;
+ // Use digits10 here to increase compatibility with version 2.
+ constexpr int kMaxExp = std::numeric_limits<FloatType>::digits10;
+
+ assert(last - first >= kMaxExp + 2);
+ assert(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits<FloatType>::max_digits10);
+ assert(last - first >= std::numeric_limits<FloatType>::max_digits10 + 6);
+
+ return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp);
+}
+
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/output/binary_writer.hpp>
+
+// #include <nlohmann/detail/output/output_adapters.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////////////
+// serialization //
+///////////////////
+
+/// how to treat decoding errors
+enum class error_handler_t
+{
+ strict, ///< throw a type_error exception in case of invalid UTF-8
+ replace, ///< replace invalid UTF-8 sequences with U+FFFD
+ ignore ///< ignore invalid UTF-8 sequences
+};
+
+template<typename BasicJsonType>
+class serializer
+{
+ using string_t = typename BasicJsonType::string_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ static constexpr std::uint8_t UTF8_ACCEPT = 0;
+ static constexpr std::uint8_t UTF8_REJECT = 1;
+
+ public:
+ /*!
+ @param[in] s output stream to serialize to
+ @param[in] ichar indentation character to use
+ @param[in] error_handler_ how to react on decoding errors
+ */
+ serializer(output_adapter_t<char> s, const char ichar,
+ error_handler_t error_handler_ = error_handler_t::strict)
+ : o(std::move(s))
+ , loc(std::localeconv())
+ , thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep))
+ , decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point))
+ , indent_char(ichar)
+ , indent_string(512, indent_char)
+ , error_handler(error_handler_)
+ {}
+
+ // delete because of pointer members
+ serializer(const serializer&) = delete;
+ serializer& operator=(const serializer&) = delete;
+ serializer(serializer&&) = delete;
+ serializer& operator=(serializer&&) = delete;
+ ~serializer() = default;
+
+ /*!
+ @brief internal implementation of the serialization function
+
+ This function is called by the public member function dump and organizes
+ the serialization internally. The indentation level is propagated as
+ additional parameter. In case of arrays and objects, the function is
+ called recursively.
+
+ - strings and object keys are escaped using `escape_string()`
+ - integer numbers are converted implicitly via `operator<<`
+ - floating-point numbers are converted to a string using `"%g"` format
+
+ @param[in] val value to serialize
+ @param[in] pretty_print whether the output shall be pretty-printed
+ @param[in] indent_step the indent level
+ @param[in] current_indent the current indent level (only used internally)
+ */
+ void dump(const BasicJsonType& val, const bool pretty_print,
+ const bool ensure_ascii,
+ const unsigned int indent_step,
+ const unsigned int current_indent = 0)
+ {
+ switch (val.m_type)
+ {
+ case value_t::object:
+ {
+ if (val.m_value.object->empty())
+ {
+ o->write_characters("{}", 2);
+ return;
+ }
+
+ if (pretty_print)
+ {
+ o->write_characters("{\n", 2);
+
+ // variable to hold indentation for recursive calls
+ const auto new_indent = current_indent + indent_step;
+ if (JSON_UNLIKELY(indent_string.size() < new_indent))
+ {
+ indent_string.resize(indent_string.size() * 2, ' ');
+ }
+
+ // first n-1 elements
+ auto i = val.m_value.object->cbegin();
+ for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)
+ {
+ o->write_characters(indent_string.c_str(), new_indent);
+ o->write_character('\"');
+ dump_escaped(i->first, ensure_ascii);
+ o->write_characters("\": ", 3);
+ dump(i->second, true, ensure_ascii, indent_step, new_indent);
+ o->write_characters(",\n", 2);
+ }
+
+ // last element
+ assert(i != val.m_value.object->cend());
+ assert(std::next(i) == val.m_value.object->cend());
+ o->write_characters(indent_string.c_str(), new_indent);
+ o->write_character('\"');
+ dump_escaped(i->first, ensure_ascii);
+ o->write_characters("\": ", 3);
+ dump(i->second, true, ensure_ascii, indent_step, new_indent);
+
+ o->write_character('\n');
+ o->write_characters(indent_string.c_str(), current_indent);
+ o->write_character('}');
+ }
+ else
+ {
+ o->write_character('{');
+
+ // first n-1 elements
+ auto i = val.m_value.object->cbegin();
+ for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)
+ {
+ o->write_character('\"');
+ dump_escaped(i->first, ensure_ascii);
+ o->write_characters("\":", 2);
+ dump(i->second, false, ensure_ascii, indent_step, current_indent);
+ o->write_character(',');
+ }
+
+ // last element
+ assert(i != val.m_value.object->cend());
+ assert(std::next(i) == val.m_value.object->cend());
+ o->write_character('\"');
+ dump_escaped(i->first, ensure_ascii);
+ o->write_characters("\":", 2);
+ dump(i->second, false, ensure_ascii, indent_step, current_indent);
+
+ o->write_character('}');
+ }
+
+ return;
+ }
+
+ case value_t::array:
+ {
+ if (val.m_value.array->empty())
+ {
+ o->write_characters("[]", 2);
+ return;
+ }
+
+ if (pretty_print)
+ {
+ o->write_characters("[\n", 2);
+
+ // variable to hold indentation for recursive calls
+ const auto new_indent = current_indent + indent_step;
+ if (JSON_UNLIKELY(indent_string.size() < new_indent))
+ {
+ indent_string.resize(indent_string.size() * 2, ' ');
+ }
+
+ // first n-1 elements
+ for (auto i = val.m_value.array->cbegin();
+ i != val.m_value.array->cend() - 1; ++i)
+ {
+ o->write_characters(indent_string.c_str(), new_indent);
+ dump(*i, true, ensure_ascii, indent_step, new_indent);
+ o->write_characters(",\n", 2);
+ }
+
+ // last element
+ assert(not val.m_value.array->empty());
+ o->write_characters(indent_string.c_str(), new_indent);
+ dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent);
+
+ o->write_character('\n');
+ o->write_characters(indent_string.c_str(), current_indent);
+ o->write_character(']');
+ }
+ else
+ {
+ o->write_character('[');
+
+ // first n-1 elements
+ for (auto i = val.m_value.array->cbegin();
+ i != val.m_value.array->cend() - 1; ++i)
+ {
+ dump(*i, false, ensure_ascii, indent_step, current_indent);
+ o->write_character(',');
+ }
+
+ // last element
+ assert(not val.m_value.array->empty());
+ dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent);
+
+ o->write_character(']');
+ }
+
+ return;
+ }
+
+ case value_t::string:
+ {
+ o->write_character('\"');
+ dump_escaped(*val.m_value.string, ensure_ascii);
+ o->write_character('\"');
+ return;
+ }
+
+ case value_t::boolean:
+ {
+ if (val.m_value.boolean)
+ {
+ o->write_characters("true", 4);
+ }
+ else
+ {
+ o->write_characters("false", 5);
+ }
+ return;
+ }
+
+ case value_t::number_integer:
+ {
+ dump_integer(val.m_value.number_integer);
+ return;
+ }
+
+ case value_t::number_unsigned:
+ {
+ dump_integer(val.m_value.number_unsigned);
+ return;
+ }
+
+ case value_t::number_float:
+ {
+ dump_float(val.m_value.number_float);
+ return;
+ }
+
+ case value_t::discarded:
+ {
+ o->write_characters("<discarded>", 11);
+ return;
+ }
+
+ case value_t::null:
+ {
+ o->write_characters("null", 4);
+ return;
+ }
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ }
+
+ private:
+ /*!
+ @brief dump escaped string
+
+ Escape a string by replacing certain special characters by a sequence of an
+ escape character (backslash) and another character and other control
+ characters by a sequence of "\u" followed by a four-digit hex
+ representation. The escaped string is written to output stream @a o.
+
+ @param[in] s the string to escape
+ @param[in] ensure_ascii whether to escape non-ASCII characters with
+ \uXXXX sequences
+
+ @complexity Linear in the length of string @a s.
+ */
+ void dump_escaped(const string_t& s, const bool ensure_ascii)
+ {
+ std::uint32_t codepoint;
+ std::uint8_t state = UTF8_ACCEPT;
+ std::size_t bytes = 0; // number of bytes written to string_buffer
+
+ // number of bytes written at the point of the last valid byte
+ std::size_t bytes_after_last_accept = 0;
+ std::size_t undumped_chars = 0;
+
+ for (std::size_t i = 0; i < s.size(); ++i)
+ {
+ const auto byte = static_cast<uint8_t>(s[i]);
+
+ switch (decode(state, codepoint, byte))
+ {
+ case UTF8_ACCEPT: // decode found a new code point
+ {
+ switch (codepoint)
+ {
+ case 0x08: // backspace
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'b';
+ break;
+ }
+
+ case 0x09: // horizontal tab
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 't';
+ break;
+ }
+
+ case 0x0A: // newline
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'n';
+ break;
+ }
+
+ case 0x0C: // formfeed
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'f';
+ break;
+ }
+
+ case 0x0D: // carriage return
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'r';
+ break;
+ }
+
+ case 0x22: // quotation mark
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = '\"';
+ break;
+ }
+
+ case 0x5C: // reverse solidus
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = '\\';
+ break;
+ }
+
+ default:
+ {
+ // escape control characters (0x00..0x1F) or, if
+ // ensure_ascii parameter is used, non-ASCII characters
+ if ((codepoint <= 0x1F) or (ensure_ascii and (codepoint >= 0x7F)))
+ {
+ if (codepoint <= 0xFFFF)
+ {
+ (std::snprintf)(string_buffer.data() + bytes, 7, "\\u%04x",
+ static_cast<std::uint16_t>(codepoint));
+ bytes += 6;
+ }
+ else
+ {
+ (std::snprintf)(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x",
+ static_cast<std::uint16_t>(0xD7C0u + (codepoint >> 10u)),
+ static_cast<std::uint16_t>(0xDC00u + (codepoint & 0x3FFu)));
+ bytes += 12;
+ }
+ }
+ else
+ {
+ // copy byte to buffer (all previous bytes
+ // been copied have in default case above)
+ string_buffer[bytes++] = s[i];
+ }
+ break;
+ }
+ }
+
+ // write buffer and reset index; there must be 13 bytes
+ // left, as this is the maximal number of bytes to be
+ // written ("\uxxxx\uxxxx\0") for one code point
+ if (string_buffer.size() - bytes < 13)
+ {
+ o->write_characters(string_buffer.data(), bytes);
+ bytes = 0;
+ }
+
+ // remember the byte position of this accept
+ bytes_after_last_accept = bytes;
+ undumped_chars = 0;
+ break;
+ }
+
+ case UTF8_REJECT: // decode found invalid UTF-8 byte
+ {
+ switch (error_handler)
+ {
+ case error_handler_t::strict:
+ {
+ std::string sn(3, '\0');
+ (std::snprintf)(&sn[0], sn.size(), "%.2X", byte);
+ JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + sn));
+ }
+
+ case error_handler_t::ignore:
+ case error_handler_t::replace:
+ {
+ // in case we saw this character the first time, we
+ // would like to read it again, because the byte
+ // may be OK for itself, but just not OK for the
+ // previous sequence
+ if (undumped_chars > 0)
+ {
+ --i;
+ }
+
+ // reset length buffer to the last accepted index;
+ // thus removing/ignoring the invalid characters
+ bytes = bytes_after_last_accept;
+
+ if (error_handler == error_handler_t::replace)
+ {
+ // add a replacement character
+ if (ensure_ascii)
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'u';
+ string_buffer[bytes++] = 'f';
+ string_buffer[bytes++] = 'f';
+ string_buffer[bytes++] = 'f';
+ string_buffer[bytes++] = 'd';
+ }
+ else
+ {
+ string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xEF');
+ string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBF');
+ string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBD');
+ }
+
+ // write buffer and reset index; there must be 13 bytes
+ // left, as this is the maximal number of bytes to be
+ // written ("\uxxxx\uxxxx\0") for one code point
+ if (string_buffer.size() - bytes < 13)
+ {
+ o->write_characters(string_buffer.data(), bytes);
+ bytes = 0;
+ }
+
+ bytes_after_last_accept = bytes;
+ }
+
+ undumped_chars = 0;
+
+ // continue processing the string
+ state = UTF8_ACCEPT;
+ break;
+ }
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ break;
+ }
+
+ default: // decode found yet incomplete multi-byte code point
+ {
+ if (not ensure_ascii)
+ {
+ // code point will not be escaped - copy byte to buffer
+ string_buffer[bytes++] = s[i];
+ }
+ ++undumped_chars;
+ break;
+ }
+ }
+ }
+
+ // we finished processing the string
+ if (JSON_LIKELY(state == UTF8_ACCEPT))
+ {
+ // write buffer
+ if (bytes > 0)
+ {
+ o->write_characters(string_buffer.data(), bytes);
+ }
+ }
+ else
+ {
+ // we finish reading, but do not accept: string was incomplete
+ switch (error_handler)
+ {
+ case error_handler_t::strict:
+ {
+ std::string sn(3, '\0');
+ (std::snprintf)(&sn[0], sn.size(), "%.2X", static_cast<std::uint8_t>(s.back()));
+ JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + sn));
+ }
+
+ case error_handler_t::ignore:
+ {
+ // write all accepted bytes
+ o->write_characters(string_buffer.data(), bytes_after_last_accept);
+ break;
+ }
+
+ case error_handler_t::replace:
+ {
+ // write all accepted bytes
+ o->write_characters(string_buffer.data(), bytes_after_last_accept);
+ // add a replacement character
+ if (ensure_ascii)
+ {
+ o->write_characters("\\ufffd", 6);
+ }
+ else
+ {
+ o->write_characters("\xEF\xBF\xBD", 3);
+ }
+ break;
+ }
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ }
+ }
+
+ /*!
+ @brief count digits
+
+ Count the number of decimal (base 10) digits for an input unsigned integer.
+
+ @param[in] x unsigned integer number to count its digits
+ @return number of decimal digits
+ */
+ inline unsigned int count_digits(number_unsigned_t x) noexcept
+ {
+ unsigned int n_digits = 1;
+ for (;;)
+ {
+ if (x < 10)
+ {
+ return n_digits;
+ }
+ if (x < 100)
+ {
+ return n_digits + 1;
+ }
+ if (x < 1000)
+ {
+ return n_digits + 2;
+ }
+ if (x < 10000)
+ {
+ return n_digits + 3;
+ }
+ x = x / 10000u;
+ n_digits += 4;
+ }
+ }
+
+ /*!
+ @brief dump an integer
+
+ Dump a given integer to output stream @a o. Works internally with
+ @a number_buffer.
+
+ @param[in] x integer number (signed or unsigned) to dump
+ @tparam NumberType either @a number_integer_t or @a number_unsigned_t
+ */
+ template<typename NumberType, detail::enable_if_t<
+ std::is_same<NumberType, number_unsigned_t>::value or
+ std::is_same<NumberType, number_integer_t>::value,
+ int> = 0>
+ void dump_integer(NumberType x)
+ {
+ static constexpr std::array<std::array<char, 2>, 100> digits_to_99
+ {
+ {
+ {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
+ {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
+ {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
+ {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
+ {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
+ {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
+ {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
+ {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
+ {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
+ {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
+ }
+ };
+
+ // special case for "0"
+ if (x == 0)
+ {
+ o->write_character('0');
+ return;
+ }
+
+ // use a pointer to fill the buffer
+ auto buffer_ptr = number_buffer.begin();
+
+ const bool is_negative = std::is_same<NumberType, number_integer_t>::value and not(x >= 0); // see issue #755
+ number_unsigned_t abs_value;
+
+ unsigned int n_chars;
+
+ if (is_negative)
+ {
+ *buffer_ptr = '-';
+ abs_value = static_cast<number_unsigned_t>(std::abs(static_cast<std::intmax_t>(x)));
+
+ // account one more byte for the minus sign
+ n_chars = 1 + count_digits(abs_value);
+ }
+ else
+ {
+ abs_value = static_cast<number_unsigned_t>(x);
+ n_chars = count_digits(abs_value);
+ }
+
+ // spare 1 byte for '\0'
+ assert(n_chars < number_buffer.size() - 1);
+
+ // jump to the end to generate the string from backward
+ // so we later avoid reversing the result
+ buffer_ptr += n_chars;
+
+ // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
+ // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
+ while (abs_value >= 100)
+ {
+ const auto digits_index = static_cast<unsigned>((abs_value % 100));
+ abs_value /= 100;
+ *(--buffer_ptr) = digits_to_99[digits_index][1];
+ *(--buffer_ptr) = digits_to_99[digits_index][0];
+ }
+
+ if (abs_value >= 10)
+ {
+ const auto digits_index = static_cast<unsigned>(abs_value);
+ *(--buffer_ptr) = digits_to_99[digits_index][1];
+ *(--buffer_ptr) = digits_to_99[digits_index][0];
+ }
+ else
+ {
+ *(--buffer_ptr) = static_cast<char>('0' + abs_value);
+ }
+
+ o->write_characters(number_buffer.data(), n_chars);
+ }
+
+ /*!
+ @brief dump a floating-point number
+
+ Dump a given floating-point number to output stream @a o. Works internally
+ with @a number_buffer.
+
+ @param[in] x floating-point number to dump
+ */
+ void dump_float(number_float_t x)
+ {
+ // NaN / inf
+ if (not std::isfinite(x))
+ {
+ o->write_characters("null", 4);
+ return;
+ }
+
+ // If number_float_t is an IEEE-754 single or double precision number,
+ // use the Grisu2 algorithm to produce short numbers which are
+ // guaranteed to round-trip, using strtof and strtod, resp.
+ //
+ // NB: The test below works if <long double> == <double>.
+ static constexpr bool is_ieee_single_or_double
+ = (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 24 and std::numeric_limits<number_float_t>::max_exponent == 128) or
+ (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 53 and std::numeric_limits<number_float_t>::max_exponent == 1024);
+
+ dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());
+ }
+
+ void dump_float(number_float_t x, std::true_type /*is_ieee_single_or_double*/)
+ {
+ char* begin = number_buffer.data();
+ char* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x);
+
+ o->write_characters(begin, static_cast<size_t>(end - begin));
+ }
+
+ void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/)
+ {
+ // get number of digits for a float -> text -> float round-trip
+ static constexpr auto d = std::numeric_limits<number_float_t>::max_digits10;
+
+ // the actual conversion
+ std::ptrdiff_t len = (std::snprintf)(number_buffer.data(), number_buffer.size(), "%.*g", d, x);
+
+ // negative value indicates an error
+ assert(len > 0);
+ // check if buffer was large enough
+ assert(static_cast<std::size_t>(len) < number_buffer.size());
+
+ // erase thousands separator
+ if (thousands_sep != '\0')
+ {
+ const auto end = std::remove(number_buffer.begin(),
+ number_buffer.begin() + len, thousands_sep);
+ std::fill(end, number_buffer.end(), '\0');
+ assert((end - number_buffer.begin()) <= len);
+ len = (end - number_buffer.begin());
+ }
+
+ // convert decimal point to '.'
+ if (decimal_point != '\0' and decimal_point != '.')
+ {
+ const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point);
+ if (dec_pos != number_buffer.end())
+ {
+ *dec_pos = '.';
+ }
+ }
+
+ o->write_characters(number_buffer.data(), static_cast<std::size_t>(len));
+
+ // determine if need to append ".0"
+ const bool value_is_int_like =
+ std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1,
+ [](char c)
+ {
+ return c == '.' or c == 'e';
+ });
+
+ if (value_is_int_like)
+ {
+ o->write_characters(".0", 2);
+ }
+ }
+
+ /*!
+ @brief check whether a string is UTF-8 encoded
+
+ The function checks each byte of a string whether it is UTF-8 encoded. The
+ result of the check is stored in the @a state parameter. The function must
+ be called initially with state 0 (accept). State 1 means the string must
+ be rejected, because the current byte is not allowed. If the string is
+ completely processed, but the state is non-zero, the string ended
+ prematurely; that is, the last byte indicated more bytes should have
+ followed.
+
+ @param[in,out] state the state of the decoding
+ @param[in,out] codep codepoint (valid only if resulting state is UTF8_ACCEPT)
+ @param[in] byte next byte to decode
+ @return new state
+
+ @note The function has been edited: a std::array is used.
+
+ @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>
+ @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/
+ */
+ static std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, const std::uint8_t byte) noexcept
+ {
+ static const std::array<std::uint8_t, 400> utf8d =
+ {
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF
+ 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF
+ 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF
+ 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF
+ 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2
+ 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4
+ 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6
+ 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8
+ }
+ };
+
+ const std::uint8_t type = utf8d[byte];
+
+ codep = (state != UTF8_ACCEPT)
+ ? (byte & 0x3fu) | (codep << 6u)
+ : (0xFFu >> type) & (byte);
+
+ state = utf8d[256u + state * 16u + type];
+ return state;
+ }
+
+ private:
+ /// the output of the serializer
+ output_adapter_t<char> o = nullptr;
+
+ /// a (hopefully) large enough character buffer
+ std::array<char, 64> number_buffer{{}};
+
+ /// the locale
+ const std::lconv* loc = nullptr;
+ /// the locale's thousand separator character
+ const char thousands_sep = '\0';
+ /// the locale's decimal point character
+ const char decimal_point = '\0';
+
+ /// string buffer
+ std::array<char, 512> string_buffer{{}};
+
+ /// the indentation character
+ const char indent_char;
+ /// the indentation string
+ string_t indent_string;
+
+ /// error_handler how to react on decoding errors
+ const error_handler_t error_handler;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/value_t.hpp>
+
+// #include <nlohmann/json_fwd.hpp>
+
+
+/*!
+@brief namespace for Niels Lohmann
+@see https://github.com/nlohmann
+@since version 1.0.0
+*/
+namespace nlohmann
+{
+
+/*!
+@brief a class to store JSON values
+
+@tparam ObjectType type for JSON objects (`std::map` by default; will be used
+in @ref object_t)
+@tparam ArrayType type for JSON arrays (`std::vector` by default; will be used
+in @ref array_t)
+@tparam StringType type for JSON strings and object keys (`std::string` by
+default; will be used in @ref string_t)
+@tparam BooleanType type for JSON booleans (`bool` by default; will be used
+in @ref boolean_t)
+@tparam NumberIntegerType type for JSON integer numbers (`int64_t` by
+default; will be used in @ref number_integer_t)
+@tparam NumberUnsignedType type for JSON unsigned integer numbers (@c
+`uint64_t` by default; will be used in @ref number_unsigned_t)
+@tparam NumberFloatType type for JSON floating-point numbers (`double` by
+default; will be used in @ref number_float_t)
+@tparam AllocatorType type of the allocator to use (`std::allocator` by
+default)
+@tparam JSONSerializer the serializer to resolve internal calls to `to_json()`
+and `from_json()` (@ref adl_serializer by default)
+
+@requirement The class satisfies the following concept requirements:
+- Basic
+ - [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible):
+ JSON values can be default constructed. The result will be a JSON null
+ value.
+ - [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible):
+ A JSON value can be constructed from an rvalue argument.
+ - [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible):
+ A JSON value can be copy-constructed from an lvalue expression.
+ - [MoveAssignable](https://en.cppreference.com/w/cpp/named_req/MoveAssignable):
+ A JSON value van be assigned from an rvalue argument.
+ - [CopyAssignable](https://en.cppreference.com/w/cpp/named_req/CopyAssignable):
+ A JSON value can be copy-assigned from an lvalue expression.
+ - [Destructible](https://en.cppreference.com/w/cpp/named_req/Destructible):
+ JSON values can be destructed.
+- Layout
+ - [StandardLayoutType](https://en.cppreference.com/w/cpp/named_req/StandardLayoutType):
+ JSON values have
+ [standard layout](https://en.cppreference.com/w/cpp/language/data_members#Standard_layout):
+ All non-static data members are private and standard layout types, the
+ class has no virtual functions or (virtual) base classes.
+- Library-wide
+ - [EqualityComparable](https://en.cppreference.com/w/cpp/named_req/EqualityComparable):
+ JSON values can be compared with `==`, see @ref
+ operator==(const_reference,const_reference).
+ - [LessThanComparable](https://en.cppreference.com/w/cpp/named_req/LessThanComparable):
+ JSON values can be compared with `<`, see @ref
+ operator<(const_reference,const_reference).
+ - [Swappable](https://en.cppreference.com/w/cpp/named_req/Swappable):
+ Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of
+ other compatible types, using unqualified function call @ref swap().
+ - [NullablePointer](https://en.cppreference.com/w/cpp/named_req/NullablePointer):
+ JSON values can be compared against `std::nullptr_t` objects which are used
+ to model the `null` value.
+- Container
+ - [Container](https://en.cppreference.com/w/cpp/named_req/Container):
+ JSON values can be used like STL containers and provide iterator access.
+ - [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer);
+ JSON values can be used like STL containers and provide reverse iterator
+ access.
+
+@invariant The member variables @a m_value and @a m_type have the following
+relationship:
+- If `m_type == value_t::object`, then `m_value.object != nullptr`.
+- If `m_type == value_t::array`, then `m_value.array != nullptr`.
+- If `m_type == value_t::string`, then `m_value.string != nullptr`.
+The invariants are checked by member function assert_invariant().
+
+@internal
+@note ObjectType trick from http://stackoverflow.com/a/9860911
+@endinternal
+
+@see [RFC 7159: The JavaScript Object Notation (JSON) Data Interchange
+Format](http://rfc7159.net/rfc7159)
+
+@since version 1.0.0
+
+@nosubgrouping
+*/
+NLOHMANN_BASIC_JSON_TPL_DECLARATION
+class basic_json
+{
+ private:
+ template<detail::value_t> friend struct detail::external_constructor;
+ friend ::nlohmann::json_pointer<basic_json>;
+ friend ::nlohmann::detail::parser<basic_json>;
+ friend ::nlohmann::detail::serializer<basic_json>;
+ template<typename BasicJsonType>
+ friend class ::nlohmann::detail::iter_impl;
+ template<typename BasicJsonType, typename CharType>
+ friend class ::nlohmann::detail::binary_writer;
+ template<typename BasicJsonType, typename SAX>
+ friend class ::nlohmann::detail::binary_reader;
+ template<typename BasicJsonType>
+ friend class ::nlohmann::detail::json_sax_dom_parser;
+ template<typename BasicJsonType>
+ friend class ::nlohmann::detail::json_sax_dom_callback_parser;
+
+ /// workaround type for MSVC
+ using basic_json_t = NLOHMANN_BASIC_JSON_TPL;
+
+ // convenience aliases for types residing in namespace detail;
+ using lexer = ::nlohmann::detail::lexer<basic_json>;
+ using parser = ::nlohmann::detail::parser<basic_json>;
+
+ using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t;
+ template<typename BasicJsonType>
+ using internal_iterator = ::nlohmann::detail::internal_iterator<BasicJsonType>;
+ template<typename BasicJsonType>
+ using iter_impl = ::nlohmann::detail::iter_impl<BasicJsonType>;
+ template<typename Iterator>
+ using iteration_proxy = ::nlohmann::detail::iteration_proxy<Iterator>;
+ template<typename Base> using json_reverse_iterator = ::nlohmann::detail::json_reverse_iterator<Base>;
+
+ template<typename CharType>
+ using output_adapter_t = ::nlohmann::detail::output_adapter_t<CharType>;
+
+ using binary_reader = ::nlohmann::detail::binary_reader<basic_json>;
+ template<typename CharType> using binary_writer = ::nlohmann::detail::binary_writer<basic_json, CharType>;
+
+ using serializer = ::nlohmann::detail::serializer<basic_json>;
+
+ public:
+ using value_t = detail::value_t;
+ /// JSON Pointer, see @ref nlohmann::json_pointer
+ using json_pointer = ::nlohmann::json_pointer<basic_json>;
+ template<typename T, typename SFINAE>
+ using json_serializer = JSONSerializer<T, SFINAE>;
+ /// how to treat decoding errors
+ using error_handler_t = detail::error_handler_t;
+ /// helper type for initializer lists of basic_json values
+ using initializer_list_t = std::initializer_list<detail::json_ref<basic_json>>;
+
+ using input_format_t = detail::input_format_t;
+ /// SAX interface type, see @ref nlohmann::json_sax
+ using json_sax_t = json_sax<basic_json>;
+
+ ////////////////
+ // exceptions //
+ ////////////////
+
+ /// @name exceptions
+ /// Classes to implement user-defined exceptions.
+ /// @{
+
+ /// @copydoc detail::exception
+ using exception = detail::exception;
+ /// @copydoc detail::parse_error
+ using parse_error = detail::parse_error;
+ /// @copydoc detail::invalid_iterator
+ using invalid_iterator = detail::invalid_iterator;
+ /// @copydoc detail::type_error
+ using type_error = detail::type_error;
+ /// @copydoc detail::out_of_range
+ using out_of_range = detail::out_of_range;
+ /// @copydoc detail::other_error
+ using other_error = detail::other_error;
+
+ /// @}
+
+
+ /////////////////////
+ // container types //
+ /////////////////////
+
+ /// @name container types
+ /// The canonic container types to use @ref basic_json like any other STL
+ /// container.
+ /// @{
+
+ /// the type of elements in a basic_json container
+ using value_type = basic_json;
+
+ /// the type of an element reference
+ using reference = value_type&;
+ /// the type of an element const reference
+ using const_reference = const value_type&;
+
+ /// a type to represent differences between iterators
+ using difference_type = std::ptrdiff_t;
+ /// a type to represent container sizes
+ using size_type = std::size_t;
+
+ /// the allocator type
+ using allocator_type = AllocatorType<basic_json>;
+
+ /// the type of an element pointer
+ using pointer = typename std::allocator_traits<allocator_type>::pointer;
+ /// the type of an element const pointer
+ using const_pointer = typename std::allocator_traits<allocator_type>::const_pointer;
+
+ /// an iterator for a basic_json container
+ using iterator = iter_impl<basic_json>;
+ /// a const iterator for a basic_json container
+ using const_iterator = iter_impl<const basic_json>;
+ /// a reverse iterator for a basic_json container
+ using reverse_iterator = json_reverse_iterator<typename basic_json::iterator>;
+ /// a const reverse iterator for a basic_json container
+ using const_reverse_iterator = json_reverse_iterator<typename basic_json::const_iterator>;
+
+ /// @}
+
+
+ /*!
+ @brief returns the allocator associated with the container
+ */
+ static allocator_type get_allocator()
+ {
+ return allocator_type();
+ }
+
+ /*!
+ @brief returns version information on the library
+
+ This function returns a JSON object with information about the library,
+ including the version number and information on the platform and compiler.
+
+ @return JSON object holding version information
+ key | description
+ ----------- | ---------------
+ `compiler` | Information on the used compiler. It is an object with the following keys: `c++` (the used C++ standard), `family` (the compiler family; possible values are `clang`, `icc`, `gcc`, `ilecpp`, `msvc`, `pgcpp`, `sunpro`, and `unknown`), and `version` (the compiler version).
+ `copyright` | The copyright line for the library as string.
+ `name` | The name of the library as string.
+ `platform` | The used platform as string. Possible values are `win32`, `linux`, `apple`, `unix`, and `unknown`.
+ `url` | The URL of the project as string.
+ `version` | The version of the library. It is an object with the following keys: `major`, `minor`, and `patch` as defined by [Semantic Versioning](http://semver.org), and `string` (the version string).
+
+ @liveexample{The following code shows an example output of the `meta()`
+ function.,meta}
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @complexity Constant.
+
+ @since 2.1.0
+ */
+ JSON_NODISCARD
+ static basic_json meta()
+ {
+ basic_json result;
+
+ result["copyright"] = "(C) 2013-2017 Niels Lohmann";
+ result["name"] = "JSON for Modern C++";
+ result["url"] = "https://github.com/nlohmann/json";
+ result["version"]["string"] =
+ std::to_string(NLOHMANN_JSON_VERSION_MAJOR) + "." +
+ std::to_string(NLOHMANN_JSON_VERSION_MINOR) + "." +
+ std::to_string(NLOHMANN_JSON_VERSION_PATCH);
+ result["version"]["major"] = NLOHMANN_JSON_VERSION_MAJOR;
+ result["version"]["minor"] = NLOHMANN_JSON_VERSION_MINOR;
+ result["version"]["patch"] = NLOHMANN_JSON_VERSION_PATCH;
+
+#ifdef _WIN32
+ result["platform"] = "win32";
+#elif defined __linux__
+ result["platform"] = "linux";
+#elif defined __APPLE__
+ result["platform"] = "apple";
+#elif defined __unix__
+ result["platform"] = "unix";
+#else
+ result["platform"] = "unknown";
+#endif
+
+#if defined(__ICC) || defined(__INTEL_COMPILER)
+ result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}};
+#elif defined(__clang__)
+ result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}};
+#elif defined(__GNUC__) || defined(__GNUG__)
+ result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}};
+#elif defined(__HP_cc) || defined(__HP_aCC)
+ result["compiler"] = "hp"
+#elif defined(__IBMCPP__)
+ result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}};
+#elif defined(_MSC_VER)
+ result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}};
+#elif defined(__PGI)
+ result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}};
+#elif defined(__SUNPRO_CC)
+ result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}};
+#else
+ result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}};
+#endif
+
+#ifdef __cplusplus
+ result["compiler"]["c++"] = std::to_string(__cplusplus);
+#else
+ result["compiler"]["c++"] = "unknown";
+#endif
+ return result;
+ }
+
+
+ ///////////////////////////
+ // JSON value data types //
+ ///////////////////////////
+
+ /// @name JSON value data types
+ /// The data types to store a JSON value. These types are derived from
+ /// the template arguments passed to class @ref basic_json.
+ /// @{
+
+#if defined(JSON_HAS_CPP_14)
+ // Use transparent comparator if possible, combined with perfect forwarding
+ // on find() and count() calls prevents unnecessary string construction.
+ using object_comparator_t = std::less<>;
+#else
+ using object_comparator_t = std::less<StringType>;
+#endif
+
+ /*!
+ @brief a type for an object
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes JSON objects as follows:
+ > An object is an unordered collection of zero or more name/value pairs,
+ > where a name is a string and a value is a string, number, boolean, null,
+ > object, or array.
+
+ To store objects in C++, a type is defined by the template parameters
+ described below.
+
+ @tparam ObjectType the container to store objects (e.g., `std::map` or
+ `std::unordered_map`)
+ @tparam StringType the type of the keys or names (e.g., `std::string`).
+ The comparison function `std::less<StringType>` is used to order elements
+ inside the container.
+ @tparam AllocatorType the allocator to use for objects (e.g.,
+ `std::allocator`)
+
+ #### Default type
+
+ With the default values for @a ObjectType (`std::map`), @a StringType
+ (`std::string`), and @a AllocatorType (`std::allocator`), the default
+ value for @a object_t is:
+
+ @code {.cpp}
+ std::map<
+ std::string, // key_type
+ basic_json, // value_type
+ std::less<std::string>, // key_compare
+ std::allocator<std::pair<const std::string, basic_json>> // allocator_type
+ >
+ @endcode
+
+ #### Behavior
+
+ The choice of @a object_t influences the behavior of the JSON class. With
+ the default type, objects have the following behavior:
+
+ - When all names are unique, objects will be interoperable in the sense
+ that all software implementations receiving that object will agree on
+ the name-value mappings.
+ - When the names within an object are not unique, it is unspecified which
+ one of the values for a given key will be chosen. For instance,
+ `{"key": 2, "key": 1}` could be equal to either `{"key": 1}` or
+ `{"key": 2}`.
+ - Internally, name/value pairs are stored in lexicographical order of the
+ names. Objects will also be serialized (see @ref dump) in this order.
+ For instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored
+ and serialized as `{"a": 2, "b": 1}`.
+ - When comparing objects, the order of the name/value pairs is irrelevant.
+ This makes objects interoperable in the sense that they will not be
+ affected by these differences. For instance, `{"b": 1, "a": 2}` and
+ `{"a": 2, "b": 1}` will be treated as equal.
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) specifies:
+ > An implementation may set limits on the maximum depth of nesting.
+
+ In this class, the object's limit of nesting is not explicitly constrained.
+ However, a maximum depth of nesting may be introduced by the compiler or
+ runtime environment. A theoretical limit can be queried by calling the
+ @ref max_size function of a JSON object.
+
+ #### Storage
+
+ Objects are stored as pointers in a @ref basic_json type. That is, for any
+ access to object values, a pointer of type `object_t*` must be
+ dereferenced.
+
+ @sa @ref array_t -- type for an array value
+
+ @since version 1.0.0
+
+ @note The order name/value pairs are added to the object is *not*
+ preserved by the library. Therefore, iterating an object may return
+ name/value pairs in a different order than they were originally stored. In
+ fact, keys will be traversed in alphabetical order as `std::map` with
+ `std::less` is used by default. Please note this behavior conforms to [RFC
+ 7159](http://rfc7159.net/rfc7159), because any order implements the
+ specified "unordered" nature of JSON objects.
+ */
+ using object_t = ObjectType<StringType,
+ basic_json,
+ object_comparator_t,
+ AllocatorType<std::pair<const StringType,
+ basic_json>>>;
+
+ /*!
+ @brief a type for an array
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes JSON arrays as follows:
+ > An array is an ordered sequence of zero or more values.
+
+ To store objects in C++, a type is defined by the template parameters
+ explained below.
+
+ @tparam ArrayType container type to store arrays (e.g., `std::vector` or
+ `std::list`)
+ @tparam AllocatorType allocator to use for arrays (e.g., `std::allocator`)
+
+ #### Default type
+
+ With the default values for @a ArrayType (`std::vector`) and @a
+ AllocatorType (`std::allocator`), the default value for @a array_t is:
+
+ @code {.cpp}
+ std::vector<
+ basic_json, // value_type
+ std::allocator<basic_json> // allocator_type
+ >
+ @endcode
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) specifies:
+ > An implementation may set limits on the maximum depth of nesting.
+
+ In this class, the array's limit of nesting is not explicitly constrained.
+ However, a maximum depth of nesting may be introduced by the compiler or
+ runtime environment. A theoretical limit can be queried by calling the
+ @ref max_size function of a JSON array.
+
+ #### Storage
+
+ Arrays are stored as pointers in a @ref basic_json type. That is, for any
+ access to array values, a pointer of type `array_t*` must be dereferenced.
+
+ @sa @ref object_t -- type for an object value
+
+ @since version 1.0.0
+ */
+ using array_t = ArrayType<basic_json, AllocatorType<basic_json>>;
+
+ /*!
+ @brief a type for a string
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes JSON strings as follows:
+ > A string is a sequence of zero or more Unicode characters.
+
+ To store objects in C++, a type is defined by the template parameter
+ described below. Unicode values are split by the JSON class into
+ byte-sized characters during deserialization.
+
+ @tparam StringType the container to store strings (e.g., `std::string`).
+ Note this container is used for keys/names in objects, see @ref object_t.
+
+ #### Default type
+
+ With the default values for @a StringType (`std::string`), the default
+ value for @a string_t is:
+
+ @code {.cpp}
+ std::string
+ @endcode
+
+ #### Encoding
+
+ Strings are stored in UTF-8 encoding. Therefore, functions like
+ `std::string::size()` or `std::string::length()` return the number of
+ bytes in the string rather than the number of characters or glyphs.
+
+ #### String comparison
+
+ [RFC 7159](http://rfc7159.net/rfc7159) states:
+ > Software implementations are typically required to test names of object
+ > members for equality. Implementations that transform the textual
+ > representation into sequences of Unicode code units and then perform the
+ > comparison numerically, code unit by code unit, are interoperable in the
+ > sense that implementations will agree in all cases on equality or
+ > inequality of two strings. For example, implementations that compare
+ > strings with escaped characters unconverted may incorrectly find that
+ > `"a\\b"` and `"a\u005Cb"` are not equal.
+
+ This implementation is interoperable as it does compare strings code unit
+ by code unit.
+
+ #### Storage
+
+ String values are stored as pointers in a @ref basic_json type. That is,
+ for any access to string values, a pointer of type `string_t*` must be
+ dereferenced.
+
+ @since version 1.0.0
+ */
+ using string_t = StringType;
+
+ /*!
+ @brief a type for a boolean
+
+ [RFC 7159](http://rfc7159.net/rfc7159) implicitly describes a boolean as a
+ type which differentiates the two literals `true` and `false`.
+
+ To store objects in C++, a type is defined by the template parameter @a
+ BooleanType which chooses the type to use.
+
+ #### Default type
+
+ With the default values for @a BooleanType (`bool`), the default value for
+ @a boolean_t is:
+
+ @code {.cpp}
+ bool
+ @endcode
+
+ #### Storage
+
+ Boolean values are stored directly inside a @ref basic_json type.
+
+ @since version 1.0.0
+ */
+ using boolean_t = BooleanType;
+
+ /*!
+ @brief a type for a number (integer)
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
+ > The representation of numbers is similar to that used in most
+ > programming languages. A number is represented in base 10 using decimal
+ > digits. It contains an integer component that may be prefixed with an
+ > optional minus sign, which may be followed by a fraction part and/or an
+ > exponent part. Leading zeros are not allowed. (...) Numeric values that
+ > cannot be represented in the grammar below (such as Infinity and NaN)
+ > are not permitted.
+
+ This description includes both integer and floating-point numbers.
+ However, C++ allows more precise storage if it is known whether the number
+ is a signed integer, an unsigned integer or a floating-point number.
+ Therefore, three different types, @ref number_integer_t, @ref
+ number_unsigned_t and @ref number_float_t are used.
+
+ To store integer numbers in C++, a type is defined by the template
+ parameter @a NumberIntegerType which chooses the type to use.
+
+ #### Default type
+
+ With the default values for @a NumberIntegerType (`int64_t`), the default
+ value for @a number_integer_t is:
+
+ @code {.cpp}
+ int64_t
+ @endcode
+
+ #### Default behavior
+
+ - The restrictions about leading zeros is not enforced in C++. Instead,
+ leading zeros in integer literals lead to an interpretation as octal
+ number. Internally, the value will be stored as decimal number. For
+ instance, the C++ integer literal `010` will be serialized to `8`.
+ During deserialization, leading zeros yield an error.
+ - Not-a-number (NaN) values will be serialized to `null`.
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) specifies:
+ > An implementation may set limits on the range and precision of numbers.
+
+ When the default type is used, the maximal integer number that can be
+ stored is `9223372036854775807` (INT64_MAX) and the minimal integer number
+ that can be stored is `-9223372036854775808` (INT64_MIN). Integer numbers
+ that are out of range will yield over/underflow when used in a
+ constructor. During deserialization, too large or small integer numbers
+ will be automatically be stored as @ref number_unsigned_t or @ref
+ number_float_t.
+
+ [RFC 7159](http://rfc7159.net/rfc7159) further states:
+ > Note that when such software is used, numbers that are integers and are
+ > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense
+ > that implementations will agree exactly on their numeric values.
+
+ As this range is a subrange of the exactly supported range [INT64_MIN,
+ INT64_MAX], this class's integer type is interoperable.
+
+ #### Storage
+
+ Integer number values are stored directly inside a @ref basic_json type.
+
+ @sa @ref number_float_t -- type for number values (floating-point)
+
+ @sa @ref number_unsigned_t -- type for number values (unsigned integer)
+
+ @since version 1.0.0
+ */
+ using number_integer_t = NumberIntegerType;
+
+ /*!
+ @brief a type for a number (unsigned)
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
+ > The representation of numbers is similar to that used in most
+ > programming languages. A number is represented in base 10 using decimal
+ > digits. It contains an integer component that may be prefixed with an
+ > optional minus sign, which may be followed by a fraction part and/or an
+ > exponent part. Leading zeros are not allowed. (...) Numeric values that
+ > cannot be represented in the grammar below (such as Infinity and NaN)
+ > are not permitted.
+
+ This description includes both integer and floating-point numbers.
+ However, C++ allows more precise storage if it is known whether the number
+ is a signed integer, an unsigned integer or a floating-point number.
+ Therefore, three different types, @ref number_integer_t, @ref
+ number_unsigned_t and @ref number_float_t are used.
+
+ To store unsigned integer numbers in C++, a type is defined by the
+ template parameter @a NumberUnsignedType which chooses the type to use.
+
+ #### Default type
+
+ With the default values for @a NumberUnsignedType (`uint64_t`), the
+ default value for @a number_unsigned_t is:
+
+ @code {.cpp}
+ uint64_t
+ @endcode
+
+ #### Default behavior
+
+ - The restrictions about leading zeros is not enforced in C++. Instead,
+ leading zeros in integer literals lead to an interpretation as octal
+ number. Internally, the value will be stored as decimal number. For
+ instance, the C++ integer literal `010` will be serialized to `8`.
+ During deserialization, leading zeros yield an error.
+ - Not-a-number (NaN) values will be serialized to `null`.
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) specifies:
+ > An implementation may set limits on the range and precision of numbers.
+
+ When the default type is used, the maximal integer number that can be
+ stored is `18446744073709551615` (UINT64_MAX) and the minimal integer
+ number that can be stored is `0`. Integer numbers that are out of range
+ will yield over/underflow when used in a constructor. During
+ deserialization, too large or small integer numbers will be automatically
+ be stored as @ref number_integer_t or @ref number_float_t.
+
+ [RFC 7159](http://rfc7159.net/rfc7159) further states:
+ > Note that when such software is used, numbers that are integers and are
+ > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense
+ > that implementations will agree exactly on their numeric values.
+
+ As this range is a subrange (when considered in conjunction with the
+ number_integer_t type) of the exactly supported range [0, UINT64_MAX],
+ this class's integer type is interoperable.
+
+ #### Storage
+
+ Integer number values are stored directly inside a @ref basic_json type.
+
+ @sa @ref number_float_t -- type for number values (floating-point)
+ @sa @ref number_integer_t -- type for number values (integer)
+
+ @since version 2.0.0
+ */
+ using number_unsigned_t = NumberUnsignedType;
+
+ /*!
+ @brief a type for a number (floating-point)
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
+ > The representation of numbers is similar to that used in most
+ > programming languages. A number is represented in base 10 using decimal
+ > digits. It contains an integer component that may be prefixed with an
+ > optional minus sign, which may be followed by a fraction part and/or an
+ > exponent part. Leading zeros are not allowed. (...) Numeric values that
+ > cannot be represented in the grammar below (such as Infinity and NaN)
+ > are not permitted.
+
+ This description includes both integer and floating-point numbers.
+ However, C++ allows more precise storage if it is known whether the number
+ is a signed integer, an unsigned integer or a floating-point number.
+ Therefore, three different types, @ref number_integer_t, @ref
+ number_unsigned_t and @ref number_float_t are used.
+
+ To store floating-point numbers in C++, a type is defined by the template
+ parameter @a NumberFloatType which chooses the type to use.
+
+ #### Default type
+
+ With the default values for @a NumberFloatType (`double`), the default
+ value for @a number_float_t is:
+
+ @code {.cpp}
+ double
+ @endcode
+
+ #### Default behavior
+
+ - The restrictions about leading zeros is not enforced in C++. Instead,
+ leading zeros in floating-point literals will be ignored. Internally,
+ the value will be stored as decimal number. For instance, the C++
+ floating-point literal `01.2` will be serialized to `1.2`. During
+ deserialization, leading zeros yield an error.
+ - Not-a-number (NaN) values will be serialized to `null`.
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) states:
+ > This specification allows implementations to set limits on the range and
+ > precision of numbers accepted. Since software that implements IEEE
+ > 754-2008 binary64 (double precision) numbers is generally available and
+ > widely used, good interoperability can be achieved by implementations
+ > that expect no more precision or range than these provide, in the sense
+ > that implementations will approximate JSON numbers within the expected
+ > precision.
+
+ This implementation does exactly follow this approach, as it uses double
+ precision floating-point numbers. Note values smaller than
+ `-1.79769313486232e+308` and values greater than `1.79769313486232e+308`
+ will be stored as NaN internally and be serialized to `null`.
+
+ #### Storage
+
+ Floating-point number values are stored directly inside a @ref basic_json
+ type.
+
+ @sa @ref number_integer_t -- type for number values (integer)
+
+ @sa @ref number_unsigned_t -- type for number values (unsigned integer)
+
+ @since version 1.0.0
+ */
+ using number_float_t = NumberFloatType;
+
+ /// @}
+
+ private:
+
+ /// helper for exception-safe object creation
+ template<typename T, typename... Args>
+ static T* create(Args&& ... args)
+ {
+ AllocatorType<T> alloc;
+ using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
+
+ auto deleter = [&](T * object)
+ {
+ AllocatorTraits::deallocate(alloc, object, 1);
+ };
+ std::unique_ptr<T, decltype(deleter)> object(AllocatorTraits::allocate(alloc, 1), deleter);
+ AllocatorTraits::construct(alloc, object.get(), std::forward<Args>(args)...);
+ assert(object != nullptr);
+ return object.release();
+ }
+
+ ////////////////////////
+ // JSON value storage //
+ ////////////////////////
+
+ /*!
+ @brief a JSON value
+
+ The actual storage for a JSON value of the @ref basic_json class. This
+ union combines the different storage types for the JSON value types
+ defined in @ref value_t.
+
+ JSON type | value_t type | used type
+ --------- | --------------- | ------------------------
+ object | object | pointer to @ref object_t
+ array | array | pointer to @ref array_t
+ string | string | pointer to @ref string_t
+ boolean | boolean | @ref boolean_t
+ number | number_integer | @ref number_integer_t
+ number | number_unsigned | @ref number_unsigned_t
+ number | number_float | @ref number_float_t
+ null | null | *no value is stored*
+
+ @note Variable-length types (objects, arrays, and strings) are stored as
+ pointers. The size of the union should not exceed 64 bits if the default
+ value types are used.
+
+ @since version 1.0.0
+ */
+ union json_value
+ {
+ /// object (stored with pointer to save storage)
+ object_t* object;
+ /// array (stored with pointer to save storage)
+ array_t* array;
+ /// string (stored with pointer to save storage)
+ string_t* string;
+ /// boolean
+ boolean_t boolean;
+ /// number (integer)
+ number_integer_t number_integer;
+ /// number (unsigned integer)
+ number_unsigned_t number_unsigned;
+ /// number (floating-point)
+ number_float_t number_float;
+
+ /// default constructor (for null values)
+ json_value() = default;
+ /// constructor for booleans
+ json_value(boolean_t v) noexcept : boolean(v) {}
+ /// constructor for numbers (integer)
+ json_value(number_integer_t v) noexcept : number_integer(v) {}
+ /// constructor for numbers (unsigned)
+ json_value(number_unsigned_t v) noexcept : number_unsigned(v) {}
+ /// constructor for numbers (floating-point)
+ json_value(number_float_t v) noexcept : number_float(v) {}
+ /// constructor for empty values of a given type
+ json_value(value_t t)
+ {
+ switch (t)
+ {
+ case value_t::object:
+ {
+ object = create<object_t>();
+ break;
+ }
+
+ case value_t::array:
+ {
+ array = create<array_t>();
+ break;
+ }
+
+ case value_t::string:
+ {
+ string = create<string_t>("");
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ boolean = boolean_t(false);
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ number_integer = number_integer_t(0);
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ number_unsigned = number_unsigned_t(0);
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ number_float = number_float_t(0.0);
+ break;
+ }
+
+ case value_t::null:
+ {
+ object = nullptr; // silence warning, see #821
+ break;
+ }
+
+ default:
+ {
+ object = nullptr; // silence warning, see #821
+ if (JSON_UNLIKELY(t == value_t::null))
+ {
+ JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.6.1")); // LCOV_EXCL_LINE
+ }
+ break;
+ }
+ }
+ }
+
+ /// constructor for strings
+ json_value(const string_t& value)
+ {
+ string = create<string_t>(value);
+ }
+
+ /// constructor for rvalue strings
+ json_value(string_t&& value)
+ {
+ string = create<string_t>(std::move(value));
+ }
+
+ /// constructor for objects
+ json_value(const object_t& value)
+ {
+ object = create<object_t>(value);
+ }
+
+ /// constructor for rvalue objects
+ json_value(object_t&& value)
+ {
+ object = create<object_t>(std::move(value));
+ }
+
+ /// constructor for arrays
+ json_value(const array_t& value)
+ {
+ array = create<array_t>(value);
+ }
+
+ /// constructor for rvalue arrays
+ json_value(array_t&& value)
+ {
+ array = create<array_t>(std::move(value));
+ }
+
+ void destroy(value_t t) noexcept
+ {
+ switch (t)
+ {
+ case value_t::object:
+ {
+ AllocatorType<object_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, object);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, object, 1);
+ break;
+ }
+
+ case value_t::array:
+ {
+ AllocatorType<array_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, array);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, array, 1);
+ break;
+ }
+
+ case value_t::string:
+ {
+ AllocatorType<string_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, string);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, string, 1);
+ break;
+ }
+
+ default:
+ {
+ break;
+ }
+ }
+ }
+ };
+
+ /*!
+ @brief checks the class invariants
+
+ This function asserts the class invariants. It needs to be called at the
+ end of every constructor to make sure that created objects respect the
+ invariant. Furthermore, it has to be called each time the type of a JSON
+ value is changed, because the invariant expresses a relationship between
+ @a m_type and @a m_value.
+ */
+ void assert_invariant() const noexcept
+ {
+ assert(m_type != value_t::object or m_value.object != nullptr);
+ assert(m_type != value_t::array or m_value.array != nullptr);
+ assert(m_type != value_t::string or m_value.string != nullptr);
+ }
+
+ public:
+ //////////////////////////
+ // JSON parser callback //
+ //////////////////////////
+
+ /*!
+ @brief parser event types
+
+ The parser callback distinguishes the following events:
+ - `object_start`: the parser read `{` and started to process a JSON object
+ - `key`: the parser read a key of a value in an object
+ - `object_end`: the parser read `}` and finished processing a JSON object
+ - `array_start`: the parser read `[` and started to process a JSON array
+ - `array_end`: the parser read `]` and finished processing a JSON array
+ - `value`: the parser finished reading a JSON value
+
+ @image html callback_events.png "Example when certain parse events are triggered"
+
+ @sa @ref parser_callback_t for more information and examples
+ */
+ using parse_event_t = typename parser::parse_event_t;
+
+ /*!
+ @brief per-element parser callback type
+
+ With a parser callback function, the result of parsing a JSON text can be
+ influenced. When passed to @ref parse, it is called on certain events
+ (passed as @ref parse_event_t via parameter @a event) with a set recursion
+ depth @a depth and context JSON value @a parsed. The return value of the
+ callback function is a boolean indicating whether the element that emitted
+ the callback shall be kept or not.
+
+ We distinguish six scenarios (determined by the event type) in which the
+ callback function can be called. The following table describes the values
+ of the parameters @a depth, @a event, and @a parsed.
+
+ parameter @a event | description | parameter @a depth | parameter @a parsed
+ ------------------ | ----------- | ------------------ | -------------------
+ parse_event_t::object_start | the parser read `{` and started to process a JSON object | depth of the parent of the JSON object | a JSON value with type discarded
+ parse_event_t::key | the parser read a key of a value in an object | depth of the currently parsed JSON object | a JSON string containing the key
+ parse_event_t::object_end | the parser read `}` and finished processing a JSON object | depth of the parent of the JSON object | the parsed JSON object
+ parse_event_t::array_start | the parser read `[` and started to process a JSON array | depth of the parent of the JSON array | a JSON value with type discarded
+ parse_event_t::array_end | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array
+ parse_event_t::value | the parser finished reading a JSON value | depth of the value | the parsed JSON value
+
+ @image html callback_events.png "Example when certain parse events are triggered"
+
+ Discarding a value (i.e., returning `false`) has different effects
+ depending on the context in which function was called:
+
+ - Discarded values in structured types are skipped. That is, the parser
+ will behave as if the discarded value was never read.
+ - In case a value outside a structured type is skipped, it is replaced
+ with `null`. This case happens if the top-level element is skipped.
+
+ @param[in] depth the depth of the recursion during parsing
+
+ @param[in] event an event of type parse_event_t indicating the context in
+ the callback function has been called
+
+ @param[in,out] parsed the current intermediate parse result; note that
+ writing to this value has no effect for parse_event_t::key events
+
+ @return Whether the JSON value which called the function during parsing
+ should be kept (`true`) or not (`false`). In the latter case, it is either
+ skipped completely or replaced by an empty discarded object.
+
+ @sa @ref parse for examples
+
+ @since version 1.0.0
+ */
+ using parser_callback_t = typename parser::parser_callback_t;
+
+ //////////////////
+ // constructors //
+ //////////////////
+
+ /// @name constructors and destructors
+ /// Constructors of class @ref basic_json, copy/move constructor, copy
+ /// assignment, static functions creating objects, and the destructor.
+ /// @{
+
+ /*!
+ @brief create an empty value with a given type
+
+ Create an empty JSON value with a given type. The value will be default
+ initialized with an empty value which depends on the type:
+
+ Value type | initial value
+ ----------- | -------------
+ null | `null`
+ boolean | `false`
+ string | `""`
+ number | `0`
+ object | `{}`
+ array | `[]`
+
+ @param[in] v the type of the value to create
+
+ @complexity Constant.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The following code shows the constructor for different @ref
+ value_t values,basic_json__value_t}
+
+ @sa @ref clear() -- restores the postcondition of this constructor
+
+ @since version 1.0.0
+ */
+ basic_json(const value_t v)
+ : m_type(v), m_value(v)
+ {
+ assert_invariant();
+ }
+
+ /*!
+ @brief create a null object
+
+ Create a `null` JSON value. It either takes a null pointer as parameter
+ (explicitly creating `null`) or no parameter (implicitly creating `null`).
+ The passed null pointer itself is not read -- it is only used to choose
+ the right constructor.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this constructor never throws
+ exceptions.
+
+ @liveexample{The following code shows the constructor with and without a
+ null pointer parameter.,basic_json__nullptr_t}
+
+ @since version 1.0.0
+ */
+ basic_json(std::nullptr_t = nullptr) noexcept
+ : basic_json(value_t::null)
+ {
+ assert_invariant();
+ }
+
+ /*!
+ @brief create a JSON value
+
+ This is a "catch all" constructor for all compatible JSON types; that is,
+ types for which a `to_json()` method exists. The constructor forwards the
+ parameter @a val to that method (to `json_serializer<U>::to_json` method
+ with `U = uncvref_t<CompatibleType>`, to be exact).
+
+ Template type @a CompatibleType includes, but is not limited to, the
+ following types:
+ - **arrays**: @ref array_t and all kinds of compatible containers such as
+ `std::vector`, `std::deque`, `std::list`, `std::forward_list`,
+ `std::array`, `std::valarray`, `std::set`, `std::unordered_set`,
+ `std::multiset`, and `std::unordered_multiset` with a `value_type` from
+ which a @ref basic_json value can be constructed.
+ - **objects**: @ref object_t and all kinds of compatible associative
+ containers such as `std::map`, `std::unordered_map`, `std::multimap`,
+ and `std::unordered_multimap` with a `key_type` compatible to
+ @ref string_t and a `value_type` from which a @ref basic_json value can
+ be constructed.
+ - **strings**: @ref string_t, string literals, and all compatible string
+ containers can be used.
+ - **numbers**: @ref number_integer_t, @ref number_unsigned_t,
+ @ref number_float_t, and all convertible number types such as `int`,
+ `size_t`, `int64_t`, `float` or `double` can be used.
+ - **boolean**: @ref boolean_t / `bool` can be used.
+
+ See the examples below.
+
+ @tparam CompatibleType a type such that:
+ - @a CompatibleType is not derived from `std::istream`,
+ - @a CompatibleType is not @ref basic_json (to avoid hijacking copy/move
+ constructors),
+ - @a CompatibleType is not a different @ref basic_json type (i.e. with different template arguments)
+ - @a CompatibleType is not a @ref basic_json nested type (e.g.,
+ @ref json_pointer, @ref iterator, etc ...)
+ - @ref @ref json_serializer<U> has a
+ `to_json(basic_json_t&, CompatibleType&&)` method
+
+ @tparam U = `uncvref_t<CompatibleType>`
+
+ @param[in] val the value to be forwarded to the respective constructor
+
+ @complexity Usually linear in the size of the passed @a val, also
+ depending on the implementation of the called `to_json()`
+ method.
+
+ @exceptionsafety Depends on the called constructor. For types directly
+ supported by the library (i.e., all types for which no `to_json()` function
+ was provided), strong guarantee holds: if an exception is thrown, there are
+ no changes to any JSON value.
+
+ @liveexample{The following code shows the constructor with several
+ compatible types.,basic_json__CompatibleType}
+
+ @since version 2.1.0
+ */
+ template <typename CompatibleType,
+ typename U = detail::uncvref_t<CompatibleType>,
+ detail::enable_if_t<
+ not detail::is_basic_json<U>::value and detail::is_compatible_type<basic_json_t, U>::value, int> = 0>
+ basic_json(CompatibleType && val) noexcept(noexcept(
+ JSONSerializer<U>::to_json(std::declval<basic_json_t&>(),
+ std::forward<CompatibleType>(val))))
+ {
+ JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
+ assert_invariant();
+ }
+
+ /*!
+ @brief create a JSON value from an existing one
+
+ This is a constructor for existing @ref basic_json types.
+ It does not hijack copy/move constructors, since the parameter has different
+ template arguments than the current ones.
+
+ The constructor tries to convert the internal @ref m_value of the parameter.
+
+ @tparam BasicJsonType a type such that:
+ - @a BasicJsonType is a @ref basic_json type.
+ - @a BasicJsonType has different template arguments than @ref basic_json_t.
+
+ @param[in] val the @ref basic_json value to be converted.
+
+ @complexity Usually linear in the size of the passed @a val, also
+ depending on the implementation of the called `to_json()`
+ method.
+
+ @exceptionsafety Depends on the called constructor. For types directly
+ supported by the library (i.e., all types for which no `to_json()` function
+ was provided), strong guarantee holds: if an exception is thrown, there are
+ no changes to any JSON value.
+
+ @since version 3.2.0
+ */
+ template <typename BasicJsonType,
+ detail::enable_if_t<
+ detail::is_basic_json<BasicJsonType>::value and not std::is_same<basic_json, BasicJsonType>::value, int> = 0>
+ basic_json(const BasicJsonType& val)
+ {
+ using other_boolean_t = typename BasicJsonType::boolean_t;
+ using other_number_float_t = typename BasicJsonType::number_float_t;
+ using other_number_integer_t = typename BasicJsonType::number_integer_t;
+ using other_number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using other_string_t = typename BasicJsonType::string_t;
+ using other_object_t = typename BasicJsonType::object_t;
+ using other_array_t = typename BasicJsonType::array_t;
+
+ switch (val.type())
+ {
+ case value_t::boolean:
+ JSONSerializer<other_boolean_t>::to_json(*this, val.template get<other_boolean_t>());
+ break;
+ case value_t::number_float:
+ JSONSerializer<other_number_float_t>::to_json(*this, val.template get<other_number_float_t>());
+ break;
+ case value_t::number_integer:
+ JSONSerializer<other_number_integer_t>::to_json(*this, val.template get<other_number_integer_t>());
+ break;
+ case value_t::number_unsigned:
+ JSONSerializer<other_number_unsigned_t>::to_json(*this, val.template get<other_number_unsigned_t>());
+ break;
+ case value_t::string:
+ JSONSerializer<other_string_t>::to_json(*this, val.template get_ref<const other_string_t&>());
+ break;
+ case value_t::object:
+ JSONSerializer<other_object_t>::to_json(*this, val.template get_ref<const other_object_t&>());
+ break;
+ case value_t::array:
+ JSONSerializer<other_array_t>::to_json(*this, val.template get_ref<const other_array_t&>());
+ break;
+ case value_t::null:
+ *this = nullptr;
+ break;
+ case value_t::discarded:
+ m_type = value_t::discarded;
+ break;
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ assert_invariant();
+ }
+
+ /*!
+ @brief create a container (array or object) from an initializer list
+
+ Creates a JSON value of type array or object from the passed initializer
+ list @a init. In case @a type_deduction is `true` (default), the type of
+ the JSON value to be created is deducted from the initializer list @a init
+ according to the following rules:
+
+ 1. If the list is empty, an empty JSON object value `{}` is created.
+ 2. If the list consists of pairs whose first element is a string, a JSON
+ object value is created where the first elements of the pairs are
+ treated as keys and the second elements are as values.
+ 3. In all other cases, an array is created.
+
+ The rules aim to create the best fit between a C++ initializer list and
+ JSON values. The rationale is as follows:
+
+ 1. The empty initializer list is written as `{}` which is exactly an empty
+ JSON object.
+ 2. C++ has no way of describing mapped types other than to list a list of
+ pairs. As JSON requires that keys must be of type string, rule 2 is the
+ weakest constraint one can pose on initializer lists to interpret them
+ as an object.
+ 3. In all other cases, the initializer list could not be interpreted as
+ JSON object type, so interpreting it as JSON array type is safe.
+
+ With the rules described above, the following JSON values cannot be
+ expressed by an initializer list:
+
+ - the empty array (`[]`): use @ref array(initializer_list_t)
+ with an empty initializer list in this case
+ - arrays whose elements satisfy rule 2: use @ref
+ array(initializer_list_t) with the same initializer list
+ in this case
+
+ @note When used without parentheses around an empty initializer list, @ref
+ basic_json() is called instead of this function, yielding the JSON null
+ value.
+
+ @param[in] init initializer list with JSON values
+
+ @param[in] type_deduction internal parameter; when set to `true`, the type
+ of the JSON value is deducted from the initializer list @a init; when set
+ to `false`, the type provided via @a manual_type is forced. This mode is
+ used by the functions @ref array(initializer_list_t) and
+ @ref object(initializer_list_t).
+
+ @param[in] manual_type internal parameter; when @a type_deduction is set
+ to `false`, the created JSON value will use the provided type (only @ref
+ value_t::array and @ref value_t::object are valid); when @a type_deduction
+ is set to `true`, this parameter has no effect
+
+ @throw type_error.301 if @a type_deduction is `false`, @a manual_type is
+ `value_t::object`, but @a init contains an element which is not a pair
+ whose first element is a string. In this case, the constructor could not
+ create an object. If @a type_deduction would have be `true`, an array
+ would have been created. See @ref object(initializer_list_t)
+ for an example.
+
+ @complexity Linear in the size of the initializer list @a init.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The example below shows how JSON values are created from
+ initializer lists.,basic_json__list_init_t}
+
+ @sa @ref array(initializer_list_t) -- create a JSON array
+ value from an initializer list
+ @sa @ref object(initializer_list_t) -- create a JSON object
+ value from an initializer list
+
+ @since version 1.0.0
+ */
+ basic_json(initializer_list_t init,
+ bool type_deduction = true,
+ value_t manual_type = value_t::array)
+ {
+ // check if each element is an array with two elements whose first
+ // element is a string
+ bool is_an_object = std::all_of(init.begin(), init.end(),
+ [](const detail::json_ref<basic_json>& element_ref)
+ {
+ return element_ref->is_array() and element_ref->size() == 2 and (*element_ref)[0].is_string();
+ });
+
+ // adjust type if type deduction is not wanted
+ if (not type_deduction)
+ {
+ // if array is wanted, do not create an object though possible
+ if (manual_type == value_t::array)
+ {
+ is_an_object = false;
+ }
+
+ // if object is wanted but impossible, throw an exception
+ if (JSON_UNLIKELY(manual_type == value_t::object and not is_an_object))
+ {
+ JSON_THROW(type_error::create(301, "cannot create object from initializer list"));
+ }
+ }
+
+ if (is_an_object)
+ {
+ // the initializer list is a list of pairs -> create object
+ m_type = value_t::object;
+ m_value = value_t::object;
+
+ std::for_each(init.begin(), init.end(), [this](const detail::json_ref<basic_json>& element_ref)
+ {
+ auto element = element_ref.moved_or_copied();
+ m_value.object->emplace(
+ std::move(*((*element.m_value.array)[0].m_value.string)),
+ std::move((*element.m_value.array)[1]));
+ });
+ }
+ else
+ {
+ // the initializer list describes an array -> create array
+ m_type = value_t::array;
+ m_value.array = create<array_t>(init.begin(), init.end());
+ }
+
+ assert_invariant();
+ }
+
+ /*!
+ @brief explicitly create an array from an initializer list
+
+ Creates a JSON array value from a given initializer list. That is, given a
+ list of values `a, b, c`, creates the JSON value `[a, b, c]`. If the
+ initializer list is empty, the empty array `[]` is created.
+
+ @note This function is only needed to express two edge cases that cannot
+ be realized with the initializer list constructor (@ref
+ basic_json(initializer_list_t, bool, value_t)). These cases
+ are:
+ 1. creating an array whose elements are all pairs whose first element is a
+ string -- in this case, the initializer list constructor would create an
+ object, taking the first elements as keys
+ 2. creating an empty array -- passing the empty initializer list to the
+ initializer list constructor yields an empty object
+
+ @param[in] init initializer list with JSON values to create an array from
+ (optional)
+
+ @return JSON array value
+
+ @complexity Linear in the size of @a init.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The following code shows an example for the `array`
+ function.,array}
+
+ @sa @ref basic_json(initializer_list_t, bool, value_t) --
+ create a JSON value from an initializer list
+ @sa @ref object(initializer_list_t) -- create a JSON object
+ value from an initializer list
+
+ @since version 1.0.0
+ */
+ JSON_NODISCARD
+ static basic_json array(initializer_list_t init = {})
+ {
+ return basic_json(init, false, value_t::array);
+ }
+
+ /*!
+ @brief explicitly create an object from an initializer list
+
+ Creates a JSON object value from a given initializer list. The initializer
+ lists elements must be pairs, and their first elements must be strings. If
+ the initializer list is empty, the empty object `{}` is created.
+
+ @note This function is only added for symmetry reasons. In contrast to the
+ related function @ref array(initializer_list_t), there are
+ no cases which can only be expressed by this function. That is, any
+ initializer list @a init can also be passed to the initializer list
+ constructor @ref basic_json(initializer_list_t, bool, value_t).
+
+ @param[in] init initializer list to create an object from (optional)
+
+ @return JSON object value
+
+ @throw type_error.301 if @a init is not a list of pairs whose first
+ elements are strings. In this case, no object can be created. When such a
+ value is passed to @ref basic_json(initializer_list_t, bool, value_t),
+ an array would have been created from the passed initializer list @a init.
+ See example below.
+
+ @complexity Linear in the size of @a init.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The following code shows an example for the `object`
+ function.,object}
+
+ @sa @ref basic_json(initializer_list_t, bool, value_t) --
+ create a JSON value from an initializer list
+ @sa @ref array(initializer_list_t) -- create a JSON array
+ value from an initializer list
+
+ @since version 1.0.0
+ */
+ JSON_NODISCARD
+ static basic_json object(initializer_list_t init = {})
+ {
+ return basic_json(init, false, value_t::object);
+ }
+
+ /*!
+ @brief construct an array with count copies of given value
+
+ Constructs a JSON array value by creating @a cnt copies of a passed value.
+ In case @a cnt is `0`, an empty array is created.
+
+ @param[in] cnt the number of JSON copies of @a val to create
+ @param[in] val the JSON value to copy
+
+ @post `std::distance(begin(),end()) == cnt` holds.
+
+ @complexity Linear in @a cnt.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The following code shows examples for the @ref
+ basic_json(size_type\, const basic_json&)
+ constructor.,basic_json__size_type_basic_json}
+
+ @since version 1.0.0
+ */
+ basic_json(size_type cnt, const basic_json& val)
+ : m_type(value_t::array)
+ {
+ m_value.array = create<array_t>(cnt, val);
+ assert_invariant();
+ }
+
+ /*!
+ @brief construct a JSON container given an iterator range
+
+ Constructs the JSON value with the contents of the range `[first, last)`.
+ The semantics depends on the different types a JSON value can have:
+ - In case of a null type, invalid_iterator.206 is thrown.
+ - In case of other primitive types (number, boolean, or string), @a first
+ must be `begin()` and @a last must be `end()`. In this case, the value is
+ copied. Otherwise, invalid_iterator.204 is thrown.
+ - In case of structured types (array, object), the constructor behaves as
+ similar versions for `std::vector` or `std::map`; that is, a JSON array
+ or object is constructed from the values in the range.
+
+ @tparam InputIT an input iterator type (@ref iterator or @ref
+ const_iterator)
+
+ @param[in] first begin of the range to copy from (included)
+ @param[in] last end of the range to copy from (excluded)
+
+ @pre Iterators @a first and @a last must be initialized. **This
+ precondition is enforced with an assertion (see warning).** If
+ assertions are switched off, a violation of this precondition yields
+ undefined behavior.
+
+ @pre Range `[first, last)` is valid. Usually, this precondition cannot be
+ checked efficiently. Only certain edge cases are detected; see the
+ description of the exceptions below. A violation of this precondition
+ yields undefined behavior.
+
+ @warning A precondition is enforced with a runtime assertion that will
+ result in calling `std::abort` if this precondition is not met.
+ Assertions can be disabled by defining `NDEBUG` at compile time.
+ See https://en.cppreference.com/w/cpp/error/assert for more
+ information.
+
+ @throw invalid_iterator.201 if iterators @a first and @a last are not
+ compatible (i.e., do not belong to the same JSON value). In this case,
+ the range `[first, last)` is undefined.
+ @throw invalid_iterator.204 if iterators @a first and @a last belong to a
+ primitive type (number, boolean, or string), but @a first does not point
+ to the first element any more. In this case, the range `[first, last)` is
+ undefined. See example code below.
+ @throw invalid_iterator.206 if iterators @a first and @a last belong to a
+ null value. In this case, the range `[first, last)` is undefined.
+
+ @complexity Linear in distance between @a first and @a last.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The example below shows several ways to create JSON values by
+ specifying a subrange with iterators.,basic_json__InputIt_InputIt}
+
+ @since version 1.0.0
+ */
+ template<class InputIT, typename std::enable_if<
+ std::is_same<InputIT, typename basic_json_t::iterator>::value or
+ std::is_same<InputIT, typename basic_json_t::const_iterator>::value, int>::type = 0>
+ basic_json(InputIT first, InputIT last)
+ {
+ assert(first.m_object != nullptr);
+ assert(last.m_object != nullptr);
+
+ // make sure iterator fits the current value
+ if (JSON_UNLIKELY(first.m_object != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(201, "iterators are not compatible"));
+ }
+
+ // copy type from first iterator
+ m_type = first.m_object->m_type;
+
+ // check if iterator range is complete for primitive values
+ switch (m_type)
+ {
+ case value_t::boolean:
+ case value_t::number_float:
+ case value_t::number_integer:
+ case value_t::number_unsigned:
+ case value_t::string:
+ {
+ if (JSON_UNLIKELY(not first.m_it.primitive_iterator.is_begin()
+ or not last.m_it.primitive_iterator.is_end()))
+ {
+ JSON_THROW(invalid_iterator::create(204, "iterators out of range"));
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ switch (m_type)
+ {
+ case value_t::number_integer:
+ {
+ m_value.number_integer = first.m_object->m_value.number_integer;
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ m_value.number_unsigned = first.m_object->m_value.number_unsigned;
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ m_value.number_float = first.m_object->m_value.number_float;
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ m_value.boolean = first.m_object->m_value.boolean;
+ break;
+ }
+
+ case value_t::string:
+ {
+ m_value = *first.m_object->m_value.string;
+ break;
+ }
+
+ case value_t::object:
+ {
+ m_value.object = create<object_t>(first.m_it.object_iterator,
+ last.m_it.object_iterator);
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_value.array = create<array_t>(first.m_it.array_iterator,
+ last.m_it.array_iterator);
+ break;
+ }
+
+ default:
+ JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " +
+ std::string(first.m_object->type_name())));
+ }
+
+ assert_invariant();
+ }
+
+
+ ///////////////////////////////////////
+ // other constructors and destructor //
+ ///////////////////////////////////////
+
+ /// @private
+ basic_json(const detail::json_ref<basic_json>& ref)
+ : basic_json(ref.moved_or_copied())
+ {}
+
+ /*!
+ @brief copy constructor
+
+ Creates a copy of a given JSON value.
+
+ @param[in] other the JSON value to copy
+
+ @post `*this == other`
+
+ @complexity Linear in the size of @a other.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is linear.
+ - As postcondition, it holds: `other == basic_json(other)`.
+
+ @liveexample{The following code shows an example for the copy
+ constructor.,basic_json__basic_json}
+
+ @since version 1.0.0
+ */
+ basic_json(const basic_json& other)
+ : m_type(other.m_type)
+ {
+ // check of passed value is valid
+ other.assert_invariant();
+
+ switch (m_type)
+ {
+ case value_t::object:
+ {
+ m_value = *other.m_value.object;
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_value = *other.m_value.array;
+ break;
+ }
+
+ case value_t::string:
+ {
+ m_value = *other.m_value.string;
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ m_value = other.m_value.boolean;
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ m_value = other.m_value.number_integer;
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ m_value = other.m_value.number_unsigned;
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ m_value = other.m_value.number_float;
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ assert_invariant();
+ }
+
+ /*!
+ @brief move constructor
+
+ Move constructor. Constructs a JSON value with the contents of the given
+ value @a other using move semantics. It "steals" the resources from @a
+ other and leaves it as JSON null value.
+
+ @param[in,out] other value to move to this object
+
+ @post `*this` has the same value as @a other before the call.
+ @post @a other is a JSON null value.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this constructor never throws
+ exceptions.
+
+ @requirement This function helps `basic_json` satisfying the
+ [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible)
+ requirements.
+
+ @liveexample{The code below shows the move constructor explicitly called
+ via std::move.,basic_json__moveconstructor}
+
+ @since version 1.0.0
+ */
+ basic_json(basic_json&& other) noexcept
+ : m_type(std::move(other.m_type)),
+ m_value(std::move(other.m_value))
+ {
+ // check that passed value is valid
+ other.assert_invariant();
+
+ // invalidate payload
+ other.m_type = value_t::null;
+ other.m_value = {};
+
+ assert_invariant();
+ }
+
+ /*!
+ @brief copy assignment
+
+ Copy assignment operator. Copies a JSON value via the "copy and swap"
+ strategy: It is expressed in terms of the copy constructor, destructor,
+ and the `swap()` member function.
+
+ @param[in] other value to copy from
+
+ @complexity Linear.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is linear.
+
+ @liveexample{The code below shows and example for the copy assignment. It
+ creates a copy of value `a` which is then swapped with `b`. Finally\, the
+ copy of `a` (which is the null value after the swap) is
+ destroyed.,basic_json__copyassignment}
+
+ @since version 1.0.0
+ */
+ basic_json& operator=(basic_json other) noexcept (
+ std::is_nothrow_move_constructible<value_t>::value and
+ std::is_nothrow_move_assignable<value_t>::value and
+ std::is_nothrow_move_constructible<json_value>::value and
+ std::is_nothrow_move_assignable<json_value>::value
+ )
+ {
+ // check that passed value is valid
+ other.assert_invariant();
+
+ using std::swap;
+ swap(m_type, other.m_type);
+ swap(m_value, other.m_value);
+
+ assert_invariant();
+ return *this;
+ }
+
+ /*!
+ @brief destructor
+
+ Destroys the JSON value and frees all allocated memory.
+
+ @complexity Linear.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is linear.
+ - All stored elements are destroyed and all memory is freed.
+
+ @since version 1.0.0
+ */
+ ~basic_json() noexcept
+ {
+ assert_invariant();
+ m_value.destroy(m_type);
+ }
+
+ /// @}
+
+ public:
+ ///////////////////////
+ // object inspection //
+ ///////////////////////
+
+ /// @name object inspection
+ /// Functions to inspect the type of a JSON value.
+ /// @{
+
+ /*!
+ @brief serialization
+
+ Serialization function for JSON values. The function tries to mimic
+ Python's `json.dumps()` function, and currently supports its @a indent
+ and @a ensure_ascii parameters.
+
+ @param[in] indent If indent is nonnegative, then array elements and object
+ members will be pretty-printed with that indent level. An indent level of
+ `0` will only insert newlines. `-1` (the default) selects the most compact
+ representation.
+ @param[in] indent_char The character to use for indentation if @a indent is
+ greater than `0`. The default is ` ` (space).
+ @param[in] ensure_ascii If @a ensure_ascii is true, all non-ASCII characters
+ in the output are escaped with `\uXXXX` sequences, and the result consists
+ of ASCII characters only.
+ @param[in] error_handler how to react on decoding errors; there are three
+ possible values: `strict` (throws and exception in case a decoding error
+ occurs; default), `replace` (replace invalid UTF-8 sequences with U+FFFD),
+ and `ignore` (ignore invalid UTF-8 sequences during serialization).
+
+ @return string containing the serialization of the JSON value
+
+ @throw type_error.316 if a string stored inside the JSON value is not
+ UTF-8 encoded
+
+ @complexity Linear.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @liveexample{The following example shows the effect of different @a indent\,
+ @a indent_char\, and @a ensure_ascii parameters to the result of the
+ serialization.,dump}
+
+ @see https://docs.python.org/2/library/json.html#json.dump
+
+ @since version 1.0.0; indentation character @a indent_char, option
+ @a ensure_ascii and exceptions added in version 3.0.0; error
+ handlers added in version 3.4.0.
+ */
+ string_t dump(const int indent = -1,
+ const char indent_char = ' ',
+ const bool ensure_ascii = false,
+ const error_handler_t error_handler = error_handler_t::strict) const
+ {
+ string_t result;
+ serializer s(detail::output_adapter<char, string_t>(result), indent_char, error_handler);
+
+ if (indent >= 0)
+ {
+ s.dump(*this, true, ensure_ascii, static_cast<unsigned int>(indent));
+ }
+ else
+ {
+ s.dump(*this, false, ensure_ascii, 0);
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief return the type of the JSON value (explicit)
+
+ Return the type of the JSON value as a value from the @ref value_t
+ enumeration.
+
+ @return the type of the JSON value
+ Value type | return value
+ ------------------------- | -------------------------
+ null | value_t::null
+ boolean | value_t::boolean
+ string | value_t::string
+ number (integer) | value_t::number_integer
+ number (unsigned integer) | value_t::number_unsigned
+ number (floating-point) | value_t::number_float
+ object | value_t::object
+ array | value_t::array
+ discarded | value_t::discarded
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `type()` for all JSON
+ types.,type}
+
+ @sa @ref operator value_t() -- return the type of the JSON value (implicit)
+ @sa @ref type_name() -- return the type as string
+
+ @since version 1.0.0
+ */
+ constexpr value_t type() const noexcept
+ {
+ return m_type;
+ }
+
+ /*!
+ @brief return whether type is primitive
+
+ This function returns true if and only if the JSON type is primitive
+ (string, number, boolean, or null).
+
+ @return `true` if type is primitive (string, number, boolean, or null),
+ `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_primitive()` for all JSON
+ types.,is_primitive}
+
+ @sa @ref is_structured() -- returns whether JSON value is structured
+ @sa @ref is_null() -- returns whether JSON value is `null`
+ @sa @ref is_string() -- returns whether JSON value is a string
+ @sa @ref is_boolean() -- returns whether JSON value is a boolean
+ @sa @ref is_number() -- returns whether JSON value is a number
+
+ @since version 1.0.0
+ */
+ constexpr bool is_primitive() const noexcept
+ {
+ return is_null() or is_string() or is_boolean() or is_number();
+ }
+
+ /*!
+ @brief return whether type is structured
+
+ This function returns true if and only if the JSON type is structured
+ (array or object).
+
+ @return `true` if type is structured (array or object), `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_structured()` for all JSON
+ types.,is_structured}
+
+ @sa @ref is_primitive() -- returns whether value is primitive
+ @sa @ref is_array() -- returns whether value is an array
+ @sa @ref is_object() -- returns whether value is an object
+
+ @since version 1.0.0
+ */
+ constexpr bool is_structured() const noexcept
+ {
+ return is_array() or is_object();
+ }
+
+ /*!
+ @brief return whether value is null
+
+ This function returns true if and only if the JSON value is null.
+
+ @return `true` if type is null, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_null()` for all JSON
+ types.,is_null}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_null() const noexcept
+ {
+ return m_type == value_t::null;
+ }
+
+ /*!
+ @brief return whether value is a boolean
+
+ This function returns true if and only if the JSON value is a boolean.
+
+ @return `true` if type is boolean, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_boolean()` for all JSON
+ types.,is_boolean}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_boolean() const noexcept
+ {
+ return m_type == value_t::boolean;
+ }
+
+ /*!
+ @brief return whether value is a number
+
+ This function returns true if and only if the JSON value is a number. This
+ includes both integer (signed and unsigned) and floating-point values.
+
+ @return `true` if type is number (regardless whether integer, unsigned
+ integer or floating-type), `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_number()` for all JSON
+ types.,is_number}
+
+ @sa @ref is_number_integer() -- check if value is an integer or unsigned
+ integer number
+ @sa @ref is_number_unsigned() -- check if value is an unsigned integer
+ number
+ @sa @ref is_number_float() -- check if value is a floating-point number
+
+ @since version 1.0.0
+ */
+ constexpr bool is_number() const noexcept
+ {
+ return is_number_integer() or is_number_float();
+ }
+
+ /*!
+ @brief return whether value is an integer number
+
+ This function returns true if and only if the JSON value is a signed or
+ unsigned integer number. This excludes floating-point values.
+
+ @return `true` if type is an integer or unsigned integer number, `false`
+ otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_number_integer()` for all
+ JSON types.,is_number_integer}
+
+ @sa @ref is_number() -- check if value is a number
+ @sa @ref is_number_unsigned() -- check if value is an unsigned integer
+ number
+ @sa @ref is_number_float() -- check if value is a floating-point number
+
+ @since version 1.0.0
+ */
+ constexpr bool is_number_integer() const noexcept
+ {
+ return m_type == value_t::number_integer or m_type == value_t::number_unsigned;
+ }
+
+ /*!
+ @brief return whether value is an unsigned integer number
+
+ This function returns true if and only if the JSON value is an unsigned
+ integer number. This excludes floating-point and signed integer values.
+
+ @return `true` if type is an unsigned integer number, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_number_unsigned()` for all
+ JSON types.,is_number_unsigned}
+
+ @sa @ref is_number() -- check if value is a number
+ @sa @ref is_number_integer() -- check if value is an integer or unsigned
+ integer number
+ @sa @ref is_number_float() -- check if value is a floating-point number
+
+ @since version 2.0.0
+ */
+ constexpr bool is_number_unsigned() const noexcept
+ {
+ return m_type == value_t::number_unsigned;
+ }
+
+ /*!
+ @brief return whether value is a floating-point number
+
+ This function returns true if and only if the JSON value is a
+ floating-point number. This excludes signed and unsigned integer values.
+
+ @return `true` if type is a floating-point number, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_number_float()` for all
+ JSON types.,is_number_float}
+
+ @sa @ref is_number() -- check if value is number
+ @sa @ref is_number_integer() -- check if value is an integer number
+ @sa @ref is_number_unsigned() -- check if value is an unsigned integer
+ number
+
+ @since version 1.0.0
+ */
+ constexpr bool is_number_float() const noexcept
+ {
+ return m_type == value_t::number_float;
+ }
+
+ /*!
+ @brief return whether value is an object
+
+ This function returns true if and only if the JSON value is an object.
+
+ @return `true` if type is object, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_object()` for all JSON
+ types.,is_object}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_object() const noexcept
+ {
+ return m_type == value_t::object;
+ }
+
+ /*!
+ @brief return whether value is an array
+
+ This function returns true if and only if the JSON value is an array.
+
+ @return `true` if type is array, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_array()` for all JSON
+ types.,is_array}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_array() const noexcept
+ {
+ return m_type == value_t::array;
+ }
+
+ /*!
+ @brief return whether value is a string
+
+ This function returns true if and only if the JSON value is a string.
+
+ @return `true` if type is string, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_string()` for all JSON
+ types.,is_string}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_string() const noexcept
+ {
+ return m_type == value_t::string;
+ }
+
+ /*!
+ @brief return whether value is discarded
+
+ This function returns true if and only if the JSON value was discarded
+ during parsing with a callback function (see @ref parser_callback_t).
+
+ @note This function will always be `false` for JSON values after parsing.
+ That is, discarded values can only occur during parsing, but will be
+ removed when inside a structured value or replaced by null in other cases.
+
+ @return `true` if type is discarded, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_discarded()` for all JSON
+ types.,is_discarded}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_discarded() const noexcept
+ {
+ return m_type == value_t::discarded;
+ }
+
+ /*!
+ @brief return the type of the JSON value (implicit)
+
+ Implicitly return the type of the JSON value as a value from the @ref
+ value_t enumeration.
+
+ @return the type of the JSON value
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies the @ref value_t operator for
+ all JSON types.,operator__value_t}
+
+ @sa @ref type() -- return the type of the JSON value (explicit)
+ @sa @ref type_name() -- return the type as string
+
+ @since version 1.0.0
+ */
+ constexpr operator value_t() const noexcept
+ {
+ return m_type;
+ }
+
+ /// @}
+
+ private:
+ //////////////////
+ // value access //
+ //////////////////
+
+ /// get a boolean (explicit)
+ boolean_t get_impl(boolean_t* /*unused*/) const
+ {
+ if (JSON_LIKELY(is_boolean()))
+ {
+ return m_value.boolean;
+ }
+
+ JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name())));
+ }
+
+ /// get a pointer to the value (object)
+ object_t* get_impl_ptr(object_t* /*unused*/) noexcept
+ {
+ return is_object() ? m_value.object : nullptr;
+ }
+
+ /// get a pointer to the value (object)
+ constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept
+ {
+ return is_object() ? m_value.object : nullptr;
+ }
+
+ /// get a pointer to the value (array)
+ array_t* get_impl_ptr(array_t* /*unused*/) noexcept
+ {
+ return is_array() ? m_value.array : nullptr;
+ }
+
+ /// get a pointer to the value (array)
+ constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept
+ {
+ return is_array() ? m_value.array : nullptr;
+ }
+
+ /// get a pointer to the value (string)
+ string_t* get_impl_ptr(string_t* /*unused*/) noexcept
+ {
+ return is_string() ? m_value.string : nullptr;
+ }
+
+ /// get a pointer to the value (string)
+ constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept
+ {
+ return is_string() ? m_value.string : nullptr;
+ }
+
+ /// get a pointer to the value (boolean)
+ boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept
+ {
+ return is_boolean() ? &m_value.boolean : nullptr;
+ }
+
+ /// get a pointer to the value (boolean)
+ constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept
+ {
+ return is_boolean() ? &m_value.boolean : nullptr;
+ }
+
+ /// get a pointer to the value (integer number)
+ number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept
+ {
+ return is_number_integer() ? &m_value.number_integer : nullptr;
+ }
+
+ /// get a pointer to the value (integer number)
+ constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept
+ {
+ return is_number_integer() ? &m_value.number_integer : nullptr;
+ }
+
+ /// get a pointer to the value (unsigned number)
+ number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept
+ {
+ return is_number_unsigned() ? &m_value.number_unsigned : nullptr;
+ }
+
+ /// get a pointer to the value (unsigned number)
+ constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept
+ {
+ return is_number_unsigned() ? &m_value.number_unsigned : nullptr;
+ }
+
+ /// get a pointer to the value (floating-point number)
+ number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept
+ {
+ return is_number_float() ? &m_value.number_float : nullptr;
+ }
+
+ /// get a pointer to the value (floating-point number)
+ constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept
+ {
+ return is_number_float() ? &m_value.number_float : nullptr;
+ }
+
+ /*!
+ @brief helper function to implement get_ref()
+
+ This function helps to implement get_ref() without code duplication for
+ const and non-const overloads
+
+ @tparam ThisType will be deduced as `basic_json` or `const basic_json`
+
+ @throw type_error.303 if ReferenceType does not match underlying value
+ type of the current JSON
+ */
+ template<typename ReferenceType, typename ThisType>
+ static ReferenceType get_ref_impl(ThisType& obj)
+ {
+ // delegate the call to get_ptr<>()
+ auto ptr = obj.template get_ptr<typename std::add_pointer<ReferenceType>::type>();
+
+ if (JSON_LIKELY(ptr != nullptr))
+ {
+ return *ptr;
+ }
+
+ JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name())));
+ }
+
+ public:
+ /// @name value access
+ /// Direct access to the stored value of a JSON value.
+ /// @{
+
+ /*!
+ @brief get special-case overload
+
+ This overloads avoids a lot of template boilerplate, it can be seen as the
+ identity method
+
+ @tparam BasicJsonType == @ref basic_json
+
+ @return a copy of *this
+
+ @complexity Constant.
+
+ @since version 2.1.0
+ */
+ template<typename BasicJsonType, detail::enable_if_t<
+ std::is_same<typename std::remove_const<BasicJsonType>::type, basic_json_t>::value,
+ int> = 0>
+ basic_json get() const
+ {
+ return *this;
+ }
+
+ /*!
+ @brief get special-case overload
+
+ This overloads converts the current @ref basic_json in a different
+ @ref basic_json type
+
+ @tparam BasicJsonType == @ref basic_json
+
+ @return a copy of *this, converted into @tparam BasicJsonType
+
+ @complexity Depending on the implementation of the called `from_json()`
+ method.
+
+ @since version 3.2.0
+ */
+ template<typename BasicJsonType, detail::enable_if_t<
+ not std::is_same<BasicJsonType, basic_json>::value and
+ detail::is_basic_json<BasicJsonType>::value, int> = 0>
+ BasicJsonType get() const
+ {
+ return *this;
+ }
+
+ /*!
+ @brief get a value (explicit)
+
+ Explicit type conversion between the JSON value and a compatible value
+ which is [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible)
+ and [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible).
+ The value is converted by calling the @ref json_serializer<ValueType>
+ `from_json()` method.
+
+ The function is equivalent to executing
+ @code {.cpp}
+ ValueType ret;
+ JSONSerializer<ValueType>::from_json(*this, ret);
+ return ret;
+ @endcode
+
+ This overloads is chosen if:
+ - @a ValueType is not @ref basic_json,
+ - @ref json_serializer<ValueType> has a `from_json()` method of the form
+ `void from_json(const basic_json&, ValueType&)`, and
+ - @ref json_serializer<ValueType> does not have a `from_json()` method of
+ the form `ValueType from_json(const basic_json&)`
+
+ @tparam ValueTypeCV the provided value type
+ @tparam ValueType the returned value type
+
+ @return copy of the JSON value, converted to @a ValueType
+
+ @throw what @ref json_serializer<ValueType> `from_json()` method throws
+
+ @liveexample{The example below shows several conversions from JSON values
+ to other types. There a few things to note: (1) Floating-point numbers can
+ be converted to integers\, (2) A JSON array can be converted to a standard
+ `std::vector<short>`\, (3) A JSON object can be converted to C++
+ associative containers such as `std::unordered_map<std::string\,
+ json>`.,get__ValueType_const}
+
+ @since version 2.1.0
+ */
+ template<typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>,
+ detail::enable_if_t <
+ not detail::is_basic_json<ValueType>::value and
+ detail::has_from_json<basic_json_t, ValueType>::value and
+ not detail::has_non_default_from_json<basic_json_t, ValueType>::value,
+ int> = 0>
+ ValueType get() const noexcept(noexcept(
+ JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), std::declval<ValueType&>())))
+ {
+ // we cannot static_assert on ValueTypeCV being non-const, because
+ // there is support for get<const basic_json_t>(), which is why we
+ // still need the uncvref
+ static_assert(not std::is_reference<ValueTypeCV>::value,
+ "get() cannot be used with reference types, you might want to use get_ref()");
+ static_assert(std::is_default_constructible<ValueType>::value,
+ "types must be DefaultConstructible when used with get()");
+
+ ValueType ret;
+ JSONSerializer<ValueType>::from_json(*this, ret);
+ return ret;
+ }
+
+ /*!
+ @brief get a value (explicit); special case
+
+ Explicit type conversion between the JSON value and a compatible value
+ which is **not** [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible)
+ and **not** [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible).
+ The value is converted by calling the @ref json_serializer<ValueType>
+ `from_json()` method.
+
+ The function is equivalent to executing
+ @code {.cpp}
+ return JSONSerializer<ValueTypeCV>::from_json(*this);
+ @endcode
+
+ This overloads is chosen if:
+ - @a ValueType is not @ref basic_json and
+ - @ref json_serializer<ValueType> has a `from_json()` method of the form
+ `ValueType from_json(const basic_json&)`
+
+ @note If @ref json_serializer<ValueType> has both overloads of
+ `from_json()`, this one is chosen.
+
+ @tparam ValueTypeCV the provided value type
+ @tparam ValueType the returned value type
+
+ @return copy of the JSON value, converted to @a ValueType
+
+ @throw what @ref json_serializer<ValueType> `from_json()` method throws
+
+ @since version 2.1.0
+ */
+ template<typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>,
+ detail::enable_if_t<not std::is_same<basic_json_t, ValueType>::value and
+ detail::has_non_default_from_json<basic_json_t, ValueType>::value,
+ int> = 0>
+ ValueType get() const noexcept(noexcept(
+ JSONSerializer<ValueTypeCV>::from_json(std::declval<const basic_json_t&>())))
+ {
+ static_assert(not std::is_reference<ValueTypeCV>::value,
+ "get() cannot be used with reference types, you might want to use get_ref()");
+ return JSONSerializer<ValueTypeCV>::from_json(*this);
+ }
+
+ /*!
+ @brief get a value (explicit)
+
+ Explicit type conversion between the JSON value and a compatible value.
+ The value is filled into the input parameter by calling the @ref json_serializer<ValueType>
+ `from_json()` method.
+
+ The function is equivalent to executing
+ @code {.cpp}
+ ValueType v;
+ JSONSerializer<ValueType>::from_json(*this, v);
+ @endcode
+
+ This overloads is chosen if:
+ - @a ValueType is not @ref basic_json,
+ - @ref json_serializer<ValueType> has a `from_json()` method of the form
+ `void from_json(const basic_json&, ValueType&)`, and
+
+ @tparam ValueType the input parameter type.
+
+ @return the input parameter, allowing chaining calls.
+
+ @throw what @ref json_serializer<ValueType> `from_json()` method throws
+
+ @liveexample{The example below shows several conversions from JSON values
+ to other types. There a few things to note: (1) Floating-point numbers can
+ be converted to integers\, (2) A JSON array can be converted to a standard
+ `std::vector<short>`\, (3) A JSON object can be converted to C++
+ associative containers such as `std::unordered_map<std::string\,
+ json>`.,get_to}
+
+ @since version 3.3.0
+ */
+ template<typename ValueType,
+ detail::enable_if_t <
+ not detail::is_basic_json<ValueType>::value and
+ detail::has_from_json<basic_json_t, ValueType>::value,
+ int> = 0>
+ ValueType & get_to(ValueType& v) const noexcept(noexcept(
+ JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), v)))
+ {
+ JSONSerializer<ValueType>::from_json(*this, v);
+ return v;
+ }
+
+
+ /*!
+ @brief get a pointer value (implicit)
+
+ Implicit pointer access to the internally stored JSON value. No copies are
+ made.
+
+ @warning Writing data to the pointee of the result yields an undefined
+ state.
+
+ @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref
+ object_t, @ref string_t, @ref boolean_t, @ref number_integer_t,
+ @ref number_unsigned_t, or @ref number_float_t. Enforced by a static
+ assertion.
+
+ @return pointer to the internally stored JSON value if the requested
+ pointer type @a PointerType fits to the JSON value; `nullptr` otherwise
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how pointers to internal values of a
+ JSON value can be requested. Note that no type conversions are made and a
+ `nullptr` is returned if the value and the requested pointer type does not
+ match.,get_ptr}
+
+ @since version 1.0.0
+ */
+ template<typename PointerType, typename std::enable_if<
+ std::is_pointer<PointerType>::value, int>::type = 0>
+ auto get_ptr() noexcept -> decltype(std::declval<basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
+ {
+ // delegate the call to get_impl_ptr<>()
+ return get_impl_ptr(static_cast<PointerType>(nullptr));
+ }
+
+ /*!
+ @brief get a pointer value (implicit)
+ @copydoc get_ptr()
+ */
+ template<typename PointerType, typename std::enable_if<
+ std::is_pointer<PointerType>::value and
+ std::is_const<typename std::remove_pointer<PointerType>::type>::value, int>::type = 0>
+ constexpr auto get_ptr() const noexcept -> decltype(std::declval<const basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
+ {
+ // delegate the call to get_impl_ptr<>() const
+ return get_impl_ptr(static_cast<PointerType>(nullptr));
+ }
+
+ /*!
+ @brief get a pointer value (explicit)
+
+ Explicit pointer access to the internally stored JSON value. No copies are
+ made.
+
+ @warning The pointer becomes invalid if the underlying JSON object
+ changes.
+
+ @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref
+ object_t, @ref string_t, @ref boolean_t, @ref number_integer_t,
+ @ref number_unsigned_t, or @ref number_float_t.
+
+ @return pointer to the internally stored JSON value if the requested
+ pointer type @a PointerType fits to the JSON value; `nullptr` otherwise
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how pointers to internal values of a
+ JSON value can be requested. Note that no type conversions are made and a
+ `nullptr` is returned if the value and the requested pointer type does not
+ match.,get__PointerType}
+
+ @sa @ref get_ptr() for explicit pointer-member access
+
+ @since version 1.0.0
+ */
+ template<typename PointerType, typename std::enable_if<
+ std::is_pointer<PointerType>::value, int>::type = 0>
+ auto get() noexcept -> decltype(std::declval<basic_json_t&>().template get_ptr<PointerType>())
+ {
+ // delegate the call to get_ptr
+ return get_ptr<PointerType>();
+ }
+
+ /*!
+ @brief get a pointer value (explicit)
+ @copydoc get()
+ */
+ template<typename PointerType, typename std::enable_if<
+ std::is_pointer<PointerType>::value, int>::type = 0>
+ constexpr auto get() const noexcept -> decltype(std::declval<const basic_json_t&>().template get_ptr<PointerType>())
+ {
+ // delegate the call to get_ptr
+ return get_ptr<PointerType>();
+ }
+
+ /*!
+ @brief get a reference value (implicit)
+
+ Implicit reference access to the internally stored JSON value. No copies
+ are made.
+
+ @warning Writing data to the referee of the result yields an undefined
+ state.
+
+ @tparam ReferenceType reference type; must be a reference to @ref array_t,
+ @ref object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, or
+ @ref number_float_t. Enforced by static assertion.
+
+ @return reference to the internally stored JSON value if the requested
+ reference type @a ReferenceType fits to the JSON value; throws
+ type_error.303 otherwise
+
+ @throw type_error.303 in case passed type @a ReferenceType is incompatible
+ with the stored JSON value; see example below
+
+ @complexity Constant.
+
+ @liveexample{The example shows several calls to `get_ref()`.,get_ref}
+
+ @since version 1.1.0
+ */
+ template<typename ReferenceType, typename std::enable_if<
+ std::is_reference<ReferenceType>::value, int>::type = 0>
+ ReferenceType get_ref()
+ {
+ // delegate call to get_ref_impl
+ return get_ref_impl<ReferenceType>(*this);
+ }
+
+ /*!
+ @brief get a reference value (implicit)
+ @copydoc get_ref()
+ */
+ template<typename ReferenceType, typename std::enable_if<
+ std::is_reference<ReferenceType>::value and
+ std::is_const<typename std::remove_reference<ReferenceType>::type>::value, int>::type = 0>
+ ReferenceType get_ref() const
+ {
+ // delegate call to get_ref_impl
+ return get_ref_impl<ReferenceType>(*this);
+ }
+
+ /*!
+ @brief get a value (implicit)
+
+ Implicit type conversion between the JSON value and a compatible value.
+ The call is realized by calling @ref get() const.
+
+ @tparam ValueType non-pointer type compatible to the JSON value, for
+ instance `int` for JSON integer numbers, `bool` for JSON booleans, or
+ `std::vector` types for JSON arrays. The character type of @ref string_t
+ as well as an initializer list of this type is excluded to avoid
+ ambiguities as these types implicitly convert to `std::string`.
+
+ @return copy of the JSON value, converted to type @a ValueType
+
+ @throw type_error.302 in case passed type @a ValueType is incompatible
+ to the JSON value type (e.g., the JSON value is of type boolean, but a
+ string is requested); see example below
+
+ @complexity Linear in the size of the JSON value.
+
+ @liveexample{The example below shows several conversions from JSON values
+ to other types. There a few things to note: (1) Floating-point numbers can
+ be converted to integers\, (2) A JSON array can be converted to a standard
+ `std::vector<short>`\, (3) A JSON object can be converted to C++
+ associative containers such as `std::unordered_map<std::string\,
+ json>`.,operator__ValueType}
+
+ @since version 1.0.0
+ */
+ template < typename ValueType, typename std::enable_if <
+ not std::is_pointer<ValueType>::value and
+ not std::is_same<ValueType, detail::json_ref<basic_json>>::value and
+ not std::is_same<ValueType, typename string_t::value_type>::value and
+ not detail::is_basic_json<ValueType>::value
+
+#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015
+ and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value
+#if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) and _MSC_VER <= 1914))
+ and not std::is_same<ValueType, typename std::string_view>::value
+#endif
+#endif
+ and detail::is_detected<detail::get_template_function, const basic_json_t&, ValueType>::value
+ , int >::type = 0 >
+ operator ValueType() const
+ {
+ // delegate the call to get<>() const
+ return get<ValueType>();
+ }
+
+ /// @}
+
+
+ ////////////////////
+ // element access //
+ ////////////////////
+
+ /// @name element access
+ /// Access to the JSON value.
+ /// @{
+
+ /*!
+ @brief access specified array element with bounds checking
+
+ Returns a reference to the element at specified location @a idx, with
+ bounds checking.
+
+ @param[in] idx index of the element to access
+
+ @return reference to the element at index @a idx
+
+ @throw type_error.304 if the JSON value is not an array; in this case,
+ calling `at` with an index makes no sense. See example below.
+ @throw out_of_range.401 if the index @a idx is out of range of the array;
+ that is, `idx >= size()`. See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 1.0.0
+
+ @liveexample{The example below shows how array elements can be read and
+ written using `at()`. It also demonstrates the different exceptions that
+ can be thrown.,at__size_type}
+ */
+ reference at(size_type idx)
+ {
+ // at only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ JSON_TRY
+ {
+ return m_value.array->at(idx);
+ }
+ JSON_CATCH (std::out_of_range&)
+ {
+ // create better exception explanation
+ JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
+ }
+ }
+ else
+ {
+ JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief access specified array element with bounds checking
+
+ Returns a const reference to the element at specified location @a idx,
+ with bounds checking.
+
+ @param[in] idx index of the element to access
+
+ @return const reference to the element at index @a idx
+
+ @throw type_error.304 if the JSON value is not an array; in this case,
+ calling `at` with an index makes no sense. See example below.
+ @throw out_of_range.401 if the index @a idx is out of range of the array;
+ that is, `idx >= size()`. See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 1.0.0
+
+ @liveexample{The example below shows how array elements can be read using
+ `at()`. It also demonstrates the different exceptions that can be thrown.,
+ at__size_type_const}
+ */
+ const_reference at(size_type idx) const
+ {
+ // at only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ JSON_TRY
+ {
+ return m_value.array->at(idx);
+ }
+ JSON_CATCH (std::out_of_range&)
+ {
+ // create better exception explanation
+ JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
+ }
+ }
+ else
+ {
+ JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief access specified object element with bounds checking
+
+ Returns a reference to the element at with specified key @a key, with
+ bounds checking.
+
+ @param[in] key key of the element to access
+
+ @return reference to the element at key @a key
+
+ @throw type_error.304 if the JSON value is not an object; in this case,
+ calling `at` with a key makes no sense. See example below.
+ @throw out_of_range.403 if the key @a key is is not stored in the object;
+ that is, `find(key) == end()`. See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Logarithmic in the size of the container.
+
+ @sa @ref operator[](const typename object_t::key_type&) for unchecked
+ access by reference
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.0.0
+
+ @liveexample{The example below shows how object elements can be read and
+ written using `at()`. It also demonstrates the different exceptions that
+ can be thrown.,at__object_t_key_type}
+ */
+ reference at(const typename object_t::key_type& key)
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ JSON_TRY
+ {
+ return m_value.object->at(key);
+ }
+ JSON_CATCH (std::out_of_range&)
+ {
+ // create better exception explanation
+ JSON_THROW(out_of_range::create(403, "key '" + key + "' not found"));
+ }
+ }
+ else
+ {
+ JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief access specified object element with bounds checking
+
+ Returns a const reference to the element at with specified key @a key,
+ with bounds checking.
+
+ @param[in] key key of the element to access
+
+ @return const reference to the element at key @a key
+
+ @throw type_error.304 if the JSON value is not an object; in this case,
+ calling `at` with a key makes no sense. See example below.
+ @throw out_of_range.403 if the key @a key is is not stored in the object;
+ that is, `find(key) == end()`. See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Logarithmic in the size of the container.
+
+ @sa @ref operator[](const typename object_t::key_type&) for unchecked
+ access by reference
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.0.0
+
+ @liveexample{The example below shows how object elements can be read using
+ `at()`. It also demonstrates the different exceptions that can be thrown.,
+ at__object_t_key_type_const}
+ */
+ const_reference at(const typename object_t::key_type& key) const
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ JSON_TRY
+ {
+ return m_value.object->at(key);
+ }
+ JSON_CATCH (std::out_of_range&)
+ {
+ // create better exception explanation
+ JSON_THROW(out_of_range::create(403, "key '" + key + "' not found"));
+ }
+ }
+ else
+ {
+ JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief access specified array element
+
+ Returns a reference to the element at specified location @a idx.
+
+ @note If @a idx is beyond the range of the array (i.e., `idx >= size()`),
+ then the array is silently filled up with `null` values to make `idx` a
+ valid reference to the last stored element.
+
+ @param[in] idx index of the element to access
+
+ @return reference to the element at index @a idx
+
+ @throw type_error.305 if the JSON value is not an array or null; in that
+ cases, using the [] operator with an index makes no sense.
+
+ @complexity Constant if @a idx is in the range of the array. Otherwise
+ linear in `idx - size()`.
+
+ @liveexample{The example below shows how array elements can be read and
+ written using `[]` operator. Note the addition of `null`
+ values.,operatorarray__size_type}
+
+ @since version 1.0.0
+ */
+ reference operator[](size_type idx)
+ {
+ // implicitly convert null value to an empty array
+ if (is_null())
+ {
+ m_type = value_t::array;
+ m_value.array = create<array_t>();
+ assert_invariant();
+ }
+
+ // operator[] only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ // fill up array with null values if given idx is outside range
+ if (idx >= m_value.array->size())
+ {
+ m_value.array->insert(m_value.array->end(),
+ idx - m_value.array->size() + 1,
+ basic_json());
+ }
+
+ return m_value.array->operator[](idx);
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief access specified array element
+
+ Returns a const reference to the element at specified location @a idx.
+
+ @param[in] idx index of the element to access
+
+ @return const reference to the element at index @a idx
+
+ @throw type_error.305 if the JSON value is not an array; in that case,
+ using the [] operator with an index makes no sense.
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how array elements can be read using
+ the `[]` operator.,operatorarray__size_type_const}
+
+ @since version 1.0.0
+ */
+ const_reference operator[](size_type idx) const
+ {
+ // const operator[] only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ return m_value.array->operator[](idx);
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief access specified object element
+
+ Returns a reference to the element at with specified key @a key.
+
+ @note If @a key is not found in the object, then it is silently added to
+ the object and filled with a `null` value to make `key` a valid reference.
+ In case the value was `null` before, it is converted to an object.
+
+ @param[in] key key of the element to access
+
+ @return reference to the element at key @a key
+
+ @throw type_error.305 if the JSON value is not an object or null; in that
+ cases, using the [] operator with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be read and
+ written using the `[]` operator.,operatorarray__key_type}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.0.0
+ */
+ reference operator[](const typename object_t::key_type& key)
+ {
+ // implicitly convert null value to an empty object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value.object = create<object_t>();
+ assert_invariant();
+ }
+
+ // operator[] only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ return m_value.object->operator[](key);
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief read-only access specified object element
+
+ Returns a const reference to the element at with specified key @a key. No
+ bounds checking is performed.
+
+ @warning If the element with key @a key does not exist, the behavior is
+ undefined.
+
+ @param[in] key key of the element to access
+
+ @return const reference to the element at key @a key
+
+ @pre The element with key @a key must exist. **This precondition is
+ enforced with an assertion.**
+
+ @throw type_error.305 if the JSON value is not an object; in that case,
+ using the [] operator with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be read using
+ the `[]` operator.,operatorarray__key_type_const}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.0.0
+ */
+ const_reference operator[](const typename object_t::key_type& key) const
+ {
+ // const operator[] only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ assert(m_value.object->find(key) != m_value.object->end());
+ return m_value.object->find(key)->second;
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief access specified object element
+
+ Returns a reference to the element at with specified key @a key.
+
+ @note If @a key is not found in the object, then it is silently added to
+ the object and filled with a `null` value to make `key` a valid reference.
+ In case the value was `null` before, it is converted to an object.
+
+ @param[in] key key of the element to access
+
+ @return reference to the element at key @a key
+
+ @throw type_error.305 if the JSON value is not an object or null; in that
+ cases, using the [] operator with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be read and
+ written using the `[]` operator.,operatorarray__key_type}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.1.0
+ */
+ template<typename T>
+ reference operator[](T* key)
+ {
+ // implicitly convert null to object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value = value_t::object;
+ assert_invariant();
+ }
+
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ return m_value.object->operator[](key);
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief read-only access specified object element
+
+ Returns a const reference to the element at with specified key @a key. No
+ bounds checking is performed.
+
+ @warning If the element with key @a key does not exist, the behavior is
+ undefined.
+
+ @param[in] key key of the element to access
+
+ @return const reference to the element at key @a key
+
+ @pre The element with key @a key must exist. **This precondition is
+ enforced with an assertion.**
+
+ @throw type_error.305 if the JSON value is not an object; in that case,
+ using the [] operator with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be read using
+ the `[]` operator.,operatorarray__key_type_const}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.1.0
+ */
+ template<typename T>
+ const_reference operator[](T* key) const
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ assert(m_value.object->find(key) != m_value.object->end());
+ return m_value.object->find(key)->second;
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief access specified object element with default value
+
+ Returns either a copy of an object's element at the specified key @a key
+ or a given default value if no element with key @a key exists.
+
+ The function is basically equivalent to executing
+ @code {.cpp}
+ try {
+ return at(key);
+ } catch(out_of_range) {
+ return default_value;
+ }
+ @endcode
+
+ @note Unlike @ref at(const typename object_t::key_type&), this function
+ does not throw if the given key @a key was not found.
+
+ @note Unlike @ref operator[](const typename object_t::key_type& key), this
+ function does not implicitly add an element to the position defined by @a
+ key. This function is furthermore also applicable to const objects.
+
+ @param[in] key key of the element to access
+ @param[in] default_value the value to return if @a key is not found
+
+ @tparam ValueType type compatible to JSON values, for instance `int` for
+ JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for
+ JSON arrays. Note the type of the expected value at @a key and the default
+ value @a default_value must be compatible.
+
+ @return copy of the element at key @a key or @a default_value if @a key
+ is not found
+
+ @throw type_error.306 if the JSON value is not an object; in that case,
+ using `value()` with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be queried
+ with a default value.,basic_json__value}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref operator[](const typename object_t::key_type&) for unchecked
+ access by reference
+
+ @since version 1.0.0
+ */
+ template<class ValueType, typename std::enable_if<
+ std::is_convertible<basic_json_t, ValueType>::value, int>::type = 0>
+ ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ // if key is found, return value and given default value otherwise
+ const auto it = find(key);
+ if (it != end())
+ {
+ return *it;
+ }
+
+ return default_value;
+ }
+
+ JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief overload for a default value of type const char*
+ @copydoc basic_json::value(const typename object_t::key_type&, const ValueType&) const
+ */
+ string_t value(const typename object_t::key_type& key, const char* default_value) const
+ {
+ return value(key, string_t(default_value));
+ }
+
+ /*!
+ @brief access specified object element via JSON Pointer with default value
+
+ Returns either a copy of an object's element at the specified key @a key
+ or a given default value if no element with key @a key exists.
+
+ The function is basically equivalent to executing
+ @code {.cpp}
+ try {
+ return at(ptr);
+ } catch(out_of_range) {
+ return default_value;
+ }
+ @endcode
+
+ @note Unlike @ref at(const json_pointer&), this function does not throw
+ if the given key @a key was not found.
+
+ @param[in] ptr a JSON pointer to the element to access
+ @param[in] default_value the value to return if @a ptr found no value
+
+ @tparam ValueType type compatible to JSON values, for instance `int` for
+ JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for
+ JSON arrays. Note the type of the expected value at @a key and the default
+ value @a default_value must be compatible.
+
+ @return copy of the element at key @a key or @a default_value if @a key
+ is not found
+
+ @throw type_error.306 if the JSON value is not an object; in that case,
+ using `value()` with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be queried
+ with a default value.,basic_json__value_ptr}
+
+ @sa @ref operator[](const json_pointer&) for unchecked access by reference
+
+ @since version 2.0.2
+ */
+ template<class ValueType, typename std::enable_if<
+ std::is_convertible<basic_json_t, ValueType>::value, int>::type = 0>
+ ValueType value(const json_pointer& ptr, const ValueType& default_value) const
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ // if pointer resolves a value, return it or use default value
+ JSON_TRY
+ {
+ return ptr.get_checked(this);
+ }
+ JSON_INTERNAL_CATCH (out_of_range&)
+ {
+ return default_value;
+ }
+ }
+
+ JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief overload for a default value of type const char*
+ @copydoc basic_json::value(const json_pointer&, ValueType) const
+ */
+ string_t value(const json_pointer& ptr, const char* default_value) const
+ {
+ return value(ptr, string_t(default_value));
+ }
+
+ /*!
+ @brief access the first element
+
+ Returns a reference to the first element in the container. For a JSON
+ container `c`, the expression `c.front()` is equivalent to `*c.begin()`.
+
+ @return In case of a structured type (array or object), a reference to the
+ first element is returned. In case of number, string, or boolean values, a
+ reference to the value is returned.
+
+ @complexity Constant.
+
+ @pre The JSON value must not be `null` (would throw `std::out_of_range`)
+ or an empty array or object (undefined behavior, **guarded by
+ assertions**).
+ @post The JSON value remains unchanged.
+
+ @throw invalid_iterator.214 when called on `null` value
+
+ @liveexample{The following code shows an example for `front()`.,front}
+
+ @sa @ref back() -- access the last element
+
+ @since version 1.0.0
+ */
+ reference front()
+ {
+ return *begin();
+ }
+
+ /*!
+ @copydoc basic_json::front()
+ */
+ const_reference front() const
+ {
+ return *cbegin();
+ }
+
+ /*!
+ @brief access the last element
+
+ Returns a reference to the last element in the container. For a JSON
+ container `c`, the expression `c.back()` is equivalent to
+ @code {.cpp}
+ auto tmp = c.end();
+ --tmp;
+ return *tmp;
+ @endcode
+
+ @return In case of a structured type (array or object), a reference to the
+ last element is returned. In case of number, string, or boolean values, a
+ reference to the value is returned.
+
+ @complexity Constant.
+
+ @pre The JSON value must not be `null` (would throw `std::out_of_range`)
+ or an empty array or object (undefined behavior, **guarded by
+ assertions**).
+ @post The JSON value remains unchanged.
+
+ @throw invalid_iterator.214 when called on a `null` value. See example
+ below.
+
+ @liveexample{The following code shows an example for `back()`.,back}
+
+ @sa @ref front() -- access the first element
+
+ @since version 1.0.0
+ */
+ reference back()
+ {
+ auto tmp = end();
+ --tmp;
+ return *tmp;
+ }
+
+ /*!
+ @copydoc basic_json::back()
+ */
+ const_reference back() const
+ {
+ auto tmp = cend();
+ --tmp;
+ return *tmp;
+ }
+
+ /*!
+ @brief remove element given an iterator
+
+ Removes the element specified by iterator @a pos. The iterator @a pos must
+ be valid and dereferenceable. Thus the `end()` iterator (which is valid,
+ but is not dereferenceable) cannot be used as a value for @a pos.
+
+ If called on a primitive type other than `null`, the resulting JSON value
+ will be `null`.
+
+ @param[in] pos iterator to the element to remove
+ @return Iterator following the last removed element. If the iterator @a
+ pos refers to the last element, the `end()` iterator is returned.
+
+ @tparam IteratorType an @ref iterator or @ref const_iterator
+
+ @post Invalidates iterators and references at or after the point of the
+ erase, including the `end()` iterator.
+
+ @throw type_error.307 if called on a `null` value; example: `"cannot use
+ erase() with null"`
+ @throw invalid_iterator.202 if called on an iterator which does not belong
+ to the current JSON value; example: `"iterator does not fit current
+ value"`
+ @throw invalid_iterator.205 if called on a primitive type with invalid
+ iterator (i.e., any iterator which is not `begin()`); example: `"iterator
+ out of range"`
+
+ @complexity The complexity depends on the type:
+ - objects: amortized constant
+ - arrays: linear in distance between @a pos and the end of the container
+ - strings: linear in the length of the string
+ - other types: constant
+
+ @liveexample{The example shows the result of `erase()` for different JSON
+ types.,erase__IteratorType}
+
+ @sa @ref erase(IteratorType, IteratorType) -- removes the elements in
+ the given range
+ @sa @ref erase(const typename object_t::key_type&) -- removes the element
+ from an object at the given key
+ @sa @ref erase(const size_type) -- removes the element from an array at
+ the given index
+
+ @since version 1.0.0
+ */
+ template<class IteratorType, typename std::enable_if<
+ std::is_same<IteratorType, typename basic_json_t::iterator>::value or
+ std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int>::type
+ = 0>
+ IteratorType erase(IteratorType pos)
+ {
+ // make sure iterator fits the current value
+ if (JSON_UNLIKELY(this != pos.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ IteratorType result = end();
+
+ switch (m_type)
+ {
+ case value_t::boolean:
+ case value_t::number_float:
+ case value_t::number_integer:
+ case value_t::number_unsigned:
+ case value_t::string:
+ {
+ if (JSON_UNLIKELY(not pos.m_it.primitive_iterator.is_begin()))
+ {
+ JSON_THROW(invalid_iterator::create(205, "iterator out of range"));
+ }
+
+ if (is_string())
+ {
+ AllocatorType<string_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);
+ m_value.string = nullptr;
+ }
+
+ m_type = value_t::null;
+ assert_invariant();
+ break;
+ }
+
+ case value_t::object:
+ {
+ result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator);
+ break;
+ }
+
+ case value_t::array:
+ {
+ result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator);
+ break;
+ }
+
+ default:
+ JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief remove elements given an iterator range
+
+ Removes the element specified by the range `[first; last)`. The iterator
+ @a first does not need to be dereferenceable if `first == last`: erasing
+ an empty range is a no-op.
+
+ If called on a primitive type other than `null`, the resulting JSON value
+ will be `null`.
+
+ @param[in] first iterator to the beginning of the range to remove
+ @param[in] last iterator past the end of the range to remove
+ @return Iterator following the last removed element. If the iterator @a
+ second refers to the last element, the `end()` iterator is returned.
+
+ @tparam IteratorType an @ref iterator or @ref const_iterator
+
+ @post Invalidates iterators and references at or after the point of the
+ erase, including the `end()` iterator.
+
+ @throw type_error.307 if called on a `null` value; example: `"cannot use
+ erase() with null"`
+ @throw invalid_iterator.203 if called on iterators which does not belong
+ to the current JSON value; example: `"iterators do not fit current value"`
+ @throw invalid_iterator.204 if called on a primitive type with invalid
+ iterators (i.e., if `first != begin()` and `last != end()`); example:
+ `"iterators out of range"`
+
+ @complexity The complexity depends on the type:
+ - objects: `log(size()) + std::distance(first, last)`
+ - arrays: linear in the distance between @a first and @a last, plus linear
+ in the distance between @a last and end of the container
+ - strings: linear in the length of the string
+ - other types: constant
+
+ @liveexample{The example shows the result of `erase()` for different JSON
+ types.,erase__IteratorType_IteratorType}
+
+ @sa @ref erase(IteratorType) -- removes the element at a given position
+ @sa @ref erase(const typename object_t::key_type&) -- removes the element
+ from an object at the given key
+ @sa @ref erase(const size_type) -- removes the element from an array at
+ the given index
+
+ @since version 1.0.0
+ */
+ template<class IteratorType, typename std::enable_if<
+ std::is_same<IteratorType, typename basic_json_t::iterator>::value or
+ std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int>::type
+ = 0>
+ IteratorType erase(IteratorType first, IteratorType last)
+ {
+ // make sure iterator fits the current value
+ if (JSON_UNLIKELY(this != first.m_object or this != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value"));
+ }
+
+ IteratorType result = end();
+
+ switch (m_type)
+ {
+ case value_t::boolean:
+ case value_t::number_float:
+ case value_t::number_integer:
+ case value_t::number_unsigned:
+ case value_t::string:
+ {
+ if (JSON_LIKELY(not first.m_it.primitive_iterator.is_begin()
+ or not last.m_it.primitive_iterator.is_end()))
+ {
+ JSON_THROW(invalid_iterator::create(204, "iterators out of range"));
+ }
+
+ if (is_string())
+ {
+ AllocatorType<string_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);
+ m_value.string = nullptr;
+ }
+
+ m_type = value_t::null;
+ assert_invariant();
+ break;
+ }
+
+ case value_t::object:
+ {
+ result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator,
+ last.m_it.object_iterator);
+ break;
+ }
+
+ case value_t::array:
+ {
+ result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator,
+ last.m_it.array_iterator);
+ break;
+ }
+
+ default:
+ JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief remove element from a JSON object given a key
+
+ Removes elements from a JSON object with the key value @a key.
+
+ @param[in] key value of the elements to remove
+
+ @return Number of elements removed. If @a ObjectType is the default
+ `std::map` type, the return value will always be `0` (@a key was not
+ found) or `1` (@a key was found).
+
+ @post References and iterators to the erased elements are invalidated.
+ Other references and iterators are not affected.
+
+ @throw type_error.307 when called on a type other than JSON object;
+ example: `"cannot use erase() with null"`
+
+ @complexity `log(size()) + count(key)`
+
+ @liveexample{The example shows the effect of `erase()`.,erase__key_type}
+
+ @sa @ref erase(IteratorType) -- removes the element at a given position
+ @sa @ref erase(IteratorType, IteratorType) -- removes the elements in
+ the given range
+ @sa @ref erase(const size_type) -- removes the element from an array at
+ the given index
+
+ @since version 1.0.0
+ */
+ size_type erase(const typename object_t::key_type& key)
+ {
+ // this erase only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ return m_value.object->erase(key);
+ }
+
+ JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief remove element from a JSON array given an index
+
+ Removes element from a JSON array at the index @a idx.
+
+ @param[in] idx index of the element to remove
+
+ @throw type_error.307 when called on a type other than JSON object;
+ example: `"cannot use erase() with null"`
+ @throw out_of_range.401 when `idx >= size()`; example: `"array index 17
+ is out of range"`
+
+ @complexity Linear in distance between @a idx and the end of the container.
+
+ @liveexample{The example shows the effect of `erase()`.,erase__size_type}
+
+ @sa @ref erase(IteratorType) -- removes the element at a given position
+ @sa @ref erase(IteratorType, IteratorType) -- removes the elements in
+ the given range
+ @sa @ref erase(const typename object_t::key_type&) -- removes the element
+ from an object at the given key
+
+ @since version 1.0.0
+ */
+ void erase(const size_type idx)
+ {
+ // this erase only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ if (JSON_UNLIKELY(idx >= size()))
+ {
+ JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
+ }
+
+ m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx));
+ }
+ else
+ {
+ JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
+ }
+ }
+
+ /// @}
+
+
+ ////////////
+ // lookup //
+ ////////////
+
+ /// @name lookup
+ /// @{
+
+ /*!
+ @brief find an element in a JSON object
+
+ Finds an element in a JSON object with key equivalent to @a key. If the
+ element is not found or the JSON value is not an object, end() is
+ returned.
+
+ @note This method always returns @ref end() when executed on a JSON type
+ that is not an object.
+
+ @param[in] key key value of the element to search for.
+
+ @return Iterator to an element with key equivalent to @a key. If no such
+ element is found or the JSON value is not an object, past-the-end (see
+ @ref end()) iterator is returned.
+
+ @complexity Logarithmic in the size of the JSON object.
+
+ @liveexample{The example shows how `find()` is used.,find__key_type}
+
+ @sa @ref contains(KeyT&&) const -- checks whether a key exists
+
+ @since version 1.0.0
+ */
+ template<typename KeyT>
+ iterator find(KeyT&& key)
+ {
+ auto result = end();
+
+ if (is_object())
+ {
+ result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief find an element in a JSON object
+ @copydoc find(KeyT&&)
+ */
+ template<typename KeyT>
+ const_iterator find(KeyT&& key) const
+ {
+ auto result = cend();
+
+ if (is_object())
+ {
+ result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief returns the number of occurrences of a key in a JSON object
+
+ Returns the number of elements with key @a key. If ObjectType is the
+ default `std::map` type, the return value will always be `0` (@a key was
+ not found) or `1` (@a key was found).
+
+ @note This method always returns `0` when executed on a JSON type that is
+ not an object.
+
+ @param[in] key key value of the element to count
+
+ @return Number of elements with key @a key. If the JSON value is not an
+ object, the return value will be `0`.
+
+ @complexity Logarithmic in the size of the JSON object.
+
+ @liveexample{The example shows how `count()` is used.,count}
+
+ @since version 1.0.0
+ */
+ template<typename KeyT>
+ size_type count(KeyT&& key) const
+ {
+ // return 0 for all nonobject types
+ return is_object() ? m_value.object->count(std::forward<KeyT>(key)) : 0;
+ }
+
+ /*!
+ @brief check the existence of an element in a JSON object
+
+ Check whether an element exists in a JSON object with key equivalent to
+ @a key. If the element is not found or the JSON value is not an object,
+ false is returned.
+
+ @note This method always returns false when executed on a JSON type
+ that is not an object.
+
+ @param[in] key key value to check its existence.
+
+ @return true if an element with specified @a key exists. If no such
+ element with such key is found or the JSON value is not an object,
+ false is returned.
+
+ @complexity Logarithmic in the size of the JSON object.
+
+ @liveexample{The following code shows an example for `contains()`.,contains}
+
+ @sa @ref find(KeyT&&) -- returns an iterator to an object element
+
+ @since version 3.6.0
+ */
+ template<typename KeyT>
+ bool contains(KeyT&& key) const
+ {
+ return is_object() and m_value.object->find(std::forward<KeyT>(key)) != m_value.object->end();
+ }
+
+ /// @}
+
+
+ ///////////////
+ // iterators //
+ ///////////////
+
+ /// @name iterators
+ /// @{
+
+ /*!
+ @brief returns an iterator to the first element
+
+ Returns an iterator to the first element.
+
+ @image html range-begin-end.svg "Illustration from cppreference.com"
+
+ @return iterator to the first element
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+
+ @liveexample{The following code shows an example for `begin()`.,begin}
+
+ @sa @ref cbegin() -- returns a const iterator to the beginning
+ @sa @ref end() -- returns an iterator to the end
+ @sa @ref cend() -- returns a const iterator to the end
+
+ @since version 1.0.0
+ */
+ iterator begin() noexcept
+ {
+ iterator result(this);
+ result.set_begin();
+ return result;
+ }
+
+ /*!
+ @copydoc basic_json::cbegin()
+ */
+ const_iterator begin() const noexcept
+ {
+ return cbegin();
+ }
+
+ /*!
+ @brief returns a const iterator to the first element
+
+ Returns a const iterator to the first element.
+
+ @image html range-begin-end.svg "Illustration from cppreference.com"
+
+ @return const iterator to the first element
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `const_cast<const basic_json&>(*this).begin()`.
+
+ @liveexample{The following code shows an example for `cbegin()`.,cbegin}
+
+ @sa @ref begin() -- returns an iterator to the beginning
+ @sa @ref end() -- returns an iterator to the end
+ @sa @ref cend() -- returns a const iterator to the end
+
+ @since version 1.0.0
+ */
+ const_iterator cbegin() const noexcept
+ {
+ const_iterator result(this);
+ result.set_begin();
+ return result;
+ }
+
+ /*!
+ @brief returns an iterator to one past the last element
+
+ Returns an iterator to one past the last element.
+
+ @image html range-begin-end.svg "Illustration from cppreference.com"
+
+ @return iterator one past the last element
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+
+ @liveexample{The following code shows an example for `end()`.,end}
+
+ @sa @ref cend() -- returns a const iterator to the end
+ @sa @ref begin() -- returns an iterator to the beginning
+ @sa @ref cbegin() -- returns a const iterator to the beginning
+
+ @since version 1.0.0
+ */
+ iterator end() noexcept
+ {
+ iterator result(this);
+ result.set_end();
+ return result;
+ }
+
+ /*!
+ @copydoc basic_json::cend()
+ */
+ const_iterator end() const noexcept
+ {
+ return cend();
+ }
+
+ /*!
+ @brief returns a const iterator to one past the last element
+
+ Returns a const iterator to one past the last element.
+
+ @image html range-begin-end.svg "Illustration from cppreference.com"
+
+ @return const iterator one past the last element
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `const_cast<const basic_json&>(*this).end()`.
+
+ @liveexample{The following code shows an example for `cend()`.,cend}
+
+ @sa @ref end() -- returns an iterator to the end
+ @sa @ref begin() -- returns an iterator to the beginning
+ @sa @ref cbegin() -- returns a const iterator to the beginning
+
+ @since version 1.0.0
+ */
+ const_iterator cend() const noexcept
+ {
+ const_iterator result(this);
+ result.set_end();
+ return result;
+ }
+
+ /*!
+ @brief returns an iterator to the reverse-beginning
+
+ Returns an iterator to the reverse-beginning; that is, the last element.
+
+ @image html range-rbegin-rend.svg "Illustration from cppreference.com"
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `reverse_iterator(end())`.
+
+ @liveexample{The following code shows an example for `rbegin()`.,rbegin}
+
+ @sa @ref crbegin() -- returns a const reverse iterator to the beginning
+ @sa @ref rend() -- returns a reverse iterator to the end
+ @sa @ref crend() -- returns a const reverse iterator to the end
+
+ @since version 1.0.0
+ */
+ reverse_iterator rbegin() noexcept
+ {
+ return reverse_iterator(end());
+ }
+
+ /*!
+ @copydoc basic_json::crbegin()
+ */
+ const_reverse_iterator rbegin() const noexcept
+ {
+ return crbegin();
+ }
+
+ /*!
+ @brief returns an iterator to the reverse-end
+
+ Returns an iterator to the reverse-end; that is, one before the first
+ element.
+
+ @image html range-rbegin-rend.svg "Illustration from cppreference.com"
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `reverse_iterator(begin())`.
+
+ @liveexample{The following code shows an example for `rend()`.,rend}
+
+ @sa @ref crend() -- returns a const reverse iterator to the end
+ @sa @ref rbegin() -- returns a reverse iterator to the beginning
+ @sa @ref crbegin() -- returns a const reverse iterator to the beginning
+
+ @since version 1.0.0
+ */
+ reverse_iterator rend() noexcept
+ {
+ return reverse_iterator(begin());
+ }
+
+ /*!
+ @copydoc basic_json::crend()
+ */
+ const_reverse_iterator rend() const noexcept
+ {
+ return crend();
+ }
+
+ /*!
+ @brief returns a const reverse iterator to the last element
+
+ Returns a const iterator to the reverse-beginning; that is, the last
+ element.
+
+ @image html range-rbegin-rend.svg "Illustration from cppreference.com"
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `const_cast<const basic_json&>(*this).rbegin()`.
+
+ @liveexample{The following code shows an example for `crbegin()`.,crbegin}
+
+ @sa @ref rbegin() -- returns a reverse iterator to the beginning
+ @sa @ref rend() -- returns a reverse iterator to the end
+ @sa @ref crend() -- returns a const reverse iterator to the end
+
+ @since version 1.0.0
+ */
+ const_reverse_iterator crbegin() const noexcept
+ {
+ return const_reverse_iterator(cend());
+ }
+
+ /*!
+ @brief returns a const reverse iterator to one before the first
+
+ Returns a const reverse iterator to the reverse-end; that is, one before
+ the first element.
+
+ @image html range-rbegin-rend.svg "Illustration from cppreference.com"
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `const_cast<const basic_json&>(*this).rend()`.
+
+ @liveexample{The following code shows an example for `crend()`.,crend}
+
+ @sa @ref rend() -- returns a reverse iterator to the end
+ @sa @ref rbegin() -- returns a reverse iterator to the beginning
+ @sa @ref crbegin() -- returns a const reverse iterator to the beginning
+
+ @since version 1.0.0
+ */
+ const_reverse_iterator crend() const noexcept
+ {
+ return const_reverse_iterator(cbegin());
+ }
+
+ public:
+ /*!
+ @brief wrapper to access iterator member functions in range-based for
+
+ This function allows to access @ref iterator::key() and @ref
+ iterator::value() during range-based for loops. In these loops, a
+ reference to the JSON values is returned, so there is no access to the
+ underlying iterator.
+
+ For loop without iterator_wrapper:
+
+ @code{cpp}
+ for (auto it = j_object.begin(); it != j_object.end(); ++it)
+ {
+ std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
+ }
+ @endcode
+
+ Range-based for loop without iterator proxy:
+
+ @code{cpp}
+ for (auto it : j_object)
+ {
+ // "it" is of type json::reference and has no key() member
+ std::cout << "value: " << it << '\n';
+ }
+ @endcode
+
+ Range-based for loop with iterator proxy:
+
+ @code{cpp}
+ for (auto it : json::iterator_wrapper(j_object))
+ {
+ std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
+ }
+ @endcode
+
+ @note When iterating over an array, `key()` will return the index of the
+ element as string (see example).
+
+ @param[in] ref reference to a JSON value
+ @return iteration proxy object wrapping @a ref with an interface to use in
+ range-based for loops
+
+ @liveexample{The following code shows how the wrapper is used,iterator_wrapper}
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @note The name of this function is not yet final and may change in the
+ future.
+
+ @deprecated This stream operator is deprecated and will be removed in
+ future 4.0.0 of the library. Please use @ref items() instead;
+ that is, replace `json::iterator_wrapper(j)` with `j.items()`.
+ */
+ JSON_DEPRECATED
+ static iteration_proxy<iterator> iterator_wrapper(reference ref) noexcept
+ {
+ return ref.items();
+ }
+
+ /*!
+ @copydoc iterator_wrapper(reference)
+ */
+ JSON_DEPRECATED
+ static iteration_proxy<const_iterator> iterator_wrapper(const_reference ref) noexcept
+ {
+ return ref.items();
+ }
+
+ /*!
+ @brief helper to access iterator member functions in range-based for
+
+ This function allows to access @ref iterator::key() and @ref
+ iterator::value() during range-based for loops. In these loops, a
+ reference to the JSON values is returned, so there is no access to the
+ underlying iterator.
+
+ For loop without `items()` function:
+
+ @code{cpp}
+ for (auto it = j_object.begin(); it != j_object.end(); ++it)
+ {
+ std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
+ }
+ @endcode
+
+ Range-based for loop without `items()` function:
+
+ @code{cpp}
+ for (auto it : j_object)
+ {
+ // "it" is of type json::reference and has no key() member
+ std::cout << "value: " << it << '\n';
+ }
+ @endcode
+
+ Range-based for loop with `items()` function:
+
+ @code{cpp}
+ for (auto& el : j_object.items())
+ {
+ std::cout << "key: " << el.key() << ", value:" << el.value() << '\n';
+ }
+ @endcode
+
+ The `items()` function also allows to use
+ [structured bindings](https://en.cppreference.com/w/cpp/language/structured_binding)
+ (C++17):
+
+ @code{cpp}
+ for (auto& [key, val] : j_object.items())
+ {
+ std::cout << "key: " << key << ", value:" << val << '\n';
+ }
+ @endcode
+
+ @note When iterating over an array, `key()` will return the index of the
+ element as string (see example). For primitive types (e.g., numbers),
+ `key()` returns an empty string.
+
+ @return iteration proxy object wrapping @a ref with an interface to use in
+ range-based for loops
+
+ @liveexample{The following code shows how the function is used.,items}
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 3.1.0, structured bindings support since 3.5.0.
+ */
+ iteration_proxy<iterator> items() noexcept
+ {
+ return iteration_proxy<iterator>(*this);
+ }
+
+ /*!
+ @copydoc items()
+ */
+ iteration_proxy<const_iterator> items() const noexcept
+ {
+ return iteration_proxy<const_iterator>(*this);
+ }
+
+ /// @}
+
+
+ //////////////
+ // capacity //
+ //////////////
+
+ /// @name capacity
+ /// @{
+
+ /*!
+ @brief checks whether the container is empty.
+
+ Checks if a JSON value has no elements (i.e. whether its @ref size is `0`).
+
+ @return The return value depends on the different types and is
+ defined as follows:
+ Value type | return value
+ ----------- | -------------
+ null | `true`
+ boolean | `false`
+ string | `false`
+ number | `false`
+ object | result of function `object_t::empty()`
+ array | result of function `array_t::empty()`
+
+ @liveexample{The following code uses `empty()` to check if a JSON
+ object contains any elements.,empty}
+
+ @complexity Constant, as long as @ref array_t and @ref object_t satisfy
+ the Container concept; that is, their `empty()` functions have constant
+ complexity.
+
+ @iterators No changes.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @note This function does not return whether a string stored as JSON value
+ is empty - it returns whether the JSON container itself is empty which is
+ false in the case of a string.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `begin() == end()`.
+
+ @sa @ref size() -- returns the number of elements
+
+ @since version 1.0.0
+ */
+ bool empty() const noexcept
+ {
+ switch (m_type)
+ {
+ case value_t::null:
+ {
+ // null values are empty
+ return true;
+ }
+
+ case value_t::array:
+ {
+ // delegate call to array_t::empty()
+ return m_value.array->empty();
+ }
+
+ case value_t::object:
+ {
+ // delegate call to object_t::empty()
+ return m_value.object->empty();
+ }
+
+ default:
+ {
+ // all other types are nonempty
+ return false;
+ }
+ }
+ }
+
+ /*!
+ @brief returns the number of elements
+
+ Returns the number of elements in a JSON value.
+
+ @return The return value depends on the different types and is
+ defined as follows:
+ Value type | return value
+ ----------- | -------------
+ null | `0`
+ boolean | `1`
+ string | `1`
+ number | `1`
+ object | result of function object_t::size()
+ array | result of function array_t::size()
+
+ @liveexample{The following code calls `size()` on the different value
+ types.,size}
+
+ @complexity Constant, as long as @ref array_t and @ref object_t satisfy
+ the Container concept; that is, their size() functions have constant
+ complexity.
+
+ @iterators No changes.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @note This function does not return the length of a string stored as JSON
+ value - it returns the number of elements in the JSON value which is 1 in
+ the case of a string.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `std::distance(begin(), end())`.
+
+ @sa @ref empty() -- checks whether the container is empty
+ @sa @ref max_size() -- returns the maximal number of elements
+
+ @since version 1.0.0
+ */
+ size_type size() const noexcept
+ {
+ switch (m_type)
+ {
+ case value_t::null:
+ {
+ // null values are empty
+ return 0;
+ }
+
+ case value_t::array:
+ {
+ // delegate call to array_t::size()
+ return m_value.array->size();
+ }
+
+ case value_t::object:
+ {
+ // delegate call to object_t::size()
+ return m_value.object->size();
+ }
+
+ default:
+ {
+ // all other types have size 1
+ return 1;
+ }
+ }
+ }
+
+ /*!
+ @brief returns the maximum possible number of elements
+
+ Returns the maximum number of elements a JSON value is able to hold due to
+ system or library implementation limitations, i.e. `std::distance(begin(),
+ end())` for the JSON value.
+
+ @return The return value depends on the different types and is
+ defined as follows:
+ Value type | return value
+ ----------- | -------------
+ null | `0` (same as `size()`)
+ boolean | `1` (same as `size()`)
+ string | `1` (same as `size()`)
+ number | `1` (same as `size()`)
+ object | result of function `object_t::max_size()`
+ array | result of function `array_t::max_size()`
+
+ @liveexample{The following code calls `max_size()` on the different value
+ types. Note the output is implementation specific.,max_size}
+
+ @complexity Constant, as long as @ref array_t and @ref object_t satisfy
+ the Container concept; that is, their `max_size()` functions have constant
+ complexity.
+
+ @iterators No changes.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of returning `b.size()` where `b` is the largest
+ possible JSON value.
+
+ @sa @ref size() -- returns the number of elements
+
+ @since version 1.0.0
+ */
+ size_type max_size() const noexcept
+ {
+ switch (m_type)
+ {
+ case value_t::array:
+ {
+ // delegate call to array_t::max_size()
+ return m_value.array->max_size();
+ }
+
+ case value_t::object:
+ {
+ // delegate call to object_t::max_size()
+ return m_value.object->max_size();
+ }
+
+ default:
+ {
+ // all other types have max_size() == size()
+ return size();
+ }
+ }
+ }
+
+ /// @}
+
+
+ ///////////////
+ // modifiers //
+ ///////////////
+
+ /// @name modifiers
+ /// @{
+
+ /*!
+ @brief clears the contents
+
+ Clears the content of a JSON value and resets it to the default value as
+ if @ref basic_json(value_t) would have been called with the current value
+ type from @ref type():
+
+ Value type | initial value
+ ----------- | -------------
+ null | `null`
+ boolean | `false`
+ string | `""`
+ number | `0`
+ object | `{}`
+ array | `[]`
+
+ @post Has the same effect as calling
+ @code {.cpp}
+ *this = basic_json(type());
+ @endcode
+
+ @liveexample{The example below shows the effect of `clear()` to different
+ JSON types.,clear}
+
+ @complexity Linear in the size of the JSON value.
+
+ @iterators All iterators, pointers and references related to this container
+ are invalidated.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @sa @ref basic_json(value_t) -- constructor that creates an object with the
+ same value than calling `clear()`
+
+ @since version 1.0.0
+ */
+ void clear() noexcept
+ {
+ switch (m_type)
+ {
+ case value_t::number_integer:
+ {
+ m_value.number_integer = 0;
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ m_value.number_unsigned = 0;
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ m_value.number_float = 0.0;
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ m_value.boolean = false;
+ break;
+ }
+
+ case value_t::string:
+ {
+ m_value.string->clear();
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_value.array->clear();
+ break;
+ }
+
+ case value_t::object:
+ {
+ m_value.object->clear();
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ /*!
+ @brief add an object to an array
+
+ Appends the given element @a val to the end of the JSON value. If the
+ function is called on a JSON null value, an empty array is created before
+ appending @a val.
+
+ @param[in] val the value to add to the JSON array
+
+ @throw type_error.308 when called on a type other than JSON array or
+ null; example: `"cannot use push_back() with number"`
+
+ @complexity Amortized constant.
+
+ @liveexample{The example shows how `push_back()` and `+=` can be used to
+ add elements to a JSON array. Note how the `null` value was silently
+ converted to a JSON array.,push_back}
+
+ @since version 1.0.0
+ */
+ void push_back(basic_json&& val)
+ {
+ // push_back only works for null objects or arrays
+ if (JSON_UNLIKELY(not(is_null() or is_array())))
+ {
+ JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
+ }
+
+ // transform null object into an array
+ if (is_null())
+ {
+ m_type = value_t::array;
+ m_value = value_t::array;
+ assert_invariant();
+ }
+
+ // add element to array (move semantics)
+ m_value.array->push_back(std::move(val));
+ // invalidate object: mark it null so we do not call the destructor
+ // cppcheck-suppress accessMoved
+ val.m_type = value_t::null;
+ }
+
+ /*!
+ @brief add an object to an array
+ @copydoc push_back(basic_json&&)
+ */
+ reference operator+=(basic_json&& val)
+ {
+ push_back(std::move(val));
+ return *this;
+ }
+
+ /*!
+ @brief add an object to an array
+ @copydoc push_back(basic_json&&)
+ */
+ void push_back(const basic_json& val)
+ {
+ // push_back only works for null objects or arrays
+ if (JSON_UNLIKELY(not(is_null() or is_array())))
+ {
+ JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
+ }
+
+ // transform null object into an array
+ if (is_null())
+ {
+ m_type = value_t::array;
+ m_value = value_t::array;
+ assert_invariant();
+ }
+
+ // add element to array
+ m_value.array->push_back(val);
+ }
+
+ /*!
+ @brief add an object to an array
+ @copydoc push_back(basic_json&&)
+ */
+ reference operator+=(const basic_json& val)
+ {
+ push_back(val);
+ return *this;
+ }
+
+ /*!
+ @brief add an object to an object
+
+ Inserts the given element @a val to the JSON object. If the function is
+ called on a JSON null value, an empty object is created before inserting
+ @a val.
+
+ @param[in] val the value to add to the JSON object
+
+ @throw type_error.308 when called on a type other than JSON object or
+ null; example: `"cannot use push_back() with number"`
+
+ @complexity Logarithmic in the size of the container, O(log(`size()`)).
+
+ @liveexample{The example shows how `push_back()` and `+=` can be used to
+ add elements to a JSON object. Note how the `null` value was silently
+ converted to a JSON object.,push_back__object_t__value}
+
+ @since version 1.0.0
+ */
+ void push_back(const typename object_t::value_type& val)
+ {
+ // push_back only works for null objects or objects
+ if (JSON_UNLIKELY(not(is_null() or is_object())))
+ {
+ JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
+ }
+
+ // transform null object into an object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value = value_t::object;
+ assert_invariant();
+ }
+
+ // add element to array
+ m_value.object->insert(val);
+ }
+
+ /*!
+ @brief add an object to an object
+ @copydoc push_back(const typename object_t::value_type&)
+ */
+ reference operator+=(const typename object_t::value_type& val)
+ {
+ push_back(val);
+ return *this;
+ }
+
+ /*!
+ @brief add an object to an object
+
+ This function allows to use `push_back` with an initializer list. In case
+
+ 1. the current value is an object,
+ 2. the initializer list @a init contains only two elements, and
+ 3. the first element of @a init is a string,
+
+ @a init is converted into an object element and added using
+ @ref push_back(const typename object_t::value_type&). Otherwise, @a init
+ is converted to a JSON value and added using @ref push_back(basic_json&&).
+
+ @param[in] init an initializer list
+
+ @complexity Linear in the size of the initializer list @a init.
+
+ @note This function is required to resolve an ambiguous overload error,
+ because pairs like `{"key", "value"}` can be both interpreted as
+ `object_t::value_type` or `std::initializer_list<basic_json>`, see
+ https://github.com/nlohmann/json/issues/235 for more information.
+
+ @liveexample{The example shows how initializer lists are treated as
+ objects when possible.,push_back__initializer_list}
+ */
+ void push_back(initializer_list_t init)
+ {
+ if (is_object() and init.size() == 2 and (*init.begin())->is_string())
+ {
+ basic_json&& key = init.begin()->moved_or_copied();
+ push_back(typename object_t::value_type(
+ std::move(key.get_ref<string_t&>()), (init.begin() + 1)->moved_or_copied()));
+ }
+ else
+ {
+ push_back(basic_json(init));
+ }
+ }
+
+ /*!
+ @brief add an object to an object
+ @copydoc push_back(initializer_list_t)
+ */
+ reference operator+=(initializer_list_t init)
+ {
+ push_back(init);
+ return *this;
+ }
+
+ /*!
+ @brief add an object to an array
+
+ Creates a JSON value from the passed parameters @a args to the end of the
+ JSON value. If the function is called on a JSON null value, an empty array
+ is created before appending the value created from @a args.
+
+ @param[in] args arguments to forward to a constructor of @ref basic_json
+ @tparam Args compatible types to create a @ref basic_json object
+
+ @throw type_error.311 when called on a type other than JSON array or
+ null; example: `"cannot use emplace_back() with number"`
+
+ @complexity Amortized constant.
+
+ @liveexample{The example shows how `push_back()` can be used to add
+ elements to a JSON array. Note how the `null` value was silently converted
+ to a JSON array.,emplace_back}
+
+ @since version 2.0.8
+ */
+ template<class... Args>
+ void emplace_back(Args&& ... args)
+ {
+ // emplace_back only works for null objects or arrays
+ if (JSON_UNLIKELY(not(is_null() or is_array())))
+ {
+ JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name())));
+ }
+
+ // transform null object into an array
+ if (is_null())
+ {
+ m_type = value_t::array;
+ m_value = value_t::array;
+ assert_invariant();
+ }
+
+ // add element to array (perfect forwarding)
+ m_value.array->emplace_back(std::forward<Args>(args)...);
+ }
+
+ /*!
+ @brief add an object to an object if key does not exist
+
+ Inserts a new element into a JSON object constructed in-place with the
+ given @a args if there is no element with the key in the container. If the
+ function is called on a JSON null value, an empty object is created before
+ appending the value created from @a args.
+
+ @param[in] args arguments to forward to a constructor of @ref basic_json
+ @tparam Args compatible types to create a @ref basic_json object
+
+ @return a pair consisting of an iterator to the inserted element, or the
+ already-existing element if no insertion happened, and a bool
+ denoting whether the insertion took place.
+
+ @throw type_error.311 when called on a type other than JSON object or
+ null; example: `"cannot use emplace() with number"`
+
+ @complexity Logarithmic in the size of the container, O(log(`size()`)).
+
+ @liveexample{The example shows how `emplace()` can be used to add elements
+ to a JSON object. Note how the `null` value was silently converted to a
+ JSON object. Further note how no value is added if there was already one
+ value stored with the same key.,emplace}
+
+ @since version 2.0.8
+ */
+ template<class... Args>
+ std::pair<iterator, bool> emplace(Args&& ... args)
+ {
+ // emplace only works for null objects or arrays
+ if (JSON_UNLIKELY(not(is_null() or is_object())))
+ {
+ JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name())));
+ }
+
+ // transform null object into an object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value = value_t::object;
+ assert_invariant();
+ }
+
+ // add element to array (perfect forwarding)
+ auto res = m_value.object->emplace(std::forward<Args>(args)...);
+ // create result iterator and set iterator to the result of emplace
+ auto it = begin();
+ it.m_it.object_iterator = res.first;
+
+ // return pair of iterator and boolean
+ return {it, res.second};
+ }
+
+ /// Helper for insertion of an iterator
+ /// @note: This uses std::distance to support GCC 4.8,
+ /// see https://github.com/nlohmann/json/pull/1257
+ template<typename... Args>
+ iterator insert_iterator(const_iterator pos, Args&& ... args)
+ {
+ iterator result(this);
+ assert(m_value.array != nullptr);
+
+ auto insert_pos = std::distance(m_value.array->begin(), pos.m_it.array_iterator);
+ m_value.array->insert(pos.m_it.array_iterator, std::forward<Args>(args)...);
+ result.m_it.array_iterator = m_value.array->begin() + insert_pos;
+
+ // This could have been written as:
+ // result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val);
+ // but the return value of insert is missing in GCC 4.8, so it is written this way instead.
+
+ return result;
+ }
+
+ /*!
+ @brief inserts element
+
+ Inserts element @a val before iterator @a pos.
+
+ @param[in] pos iterator before which the content will be inserted; may be
+ the end() iterator
+ @param[in] val element to insert
+ @return iterator pointing to the inserted @a val.
+
+ @throw type_error.309 if called on JSON values other than arrays;
+ example: `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if @a pos is not an iterator of *this;
+ example: `"iterator does not fit current value"`
+
+ @complexity Constant plus linear in the distance between @a pos and end of
+ the container.
+
+ @liveexample{The example shows how `insert()` is used.,insert}
+
+ @since version 1.0.0
+ */
+ iterator insert(const_iterator pos, const basic_json& val)
+ {
+ // insert only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ // check if iterator pos fits to this JSON value
+ if (JSON_UNLIKELY(pos.m_object != this))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ // insert to array and return iterator
+ return insert_iterator(pos, val);
+ }
+
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief inserts element
+ @copydoc insert(const_iterator, const basic_json&)
+ */
+ iterator insert(const_iterator pos, basic_json&& val)
+ {
+ return insert(pos, val);
+ }
+
+ /*!
+ @brief inserts elements
+
+ Inserts @a cnt copies of @a val before iterator @a pos.
+
+ @param[in] pos iterator before which the content will be inserted; may be
+ the end() iterator
+ @param[in] cnt number of copies of @a val to insert
+ @param[in] val element to insert
+ @return iterator pointing to the first element inserted, or @a pos if
+ `cnt==0`
+
+ @throw type_error.309 if called on JSON values other than arrays; example:
+ `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if @a pos is not an iterator of *this;
+ example: `"iterator does not fit current value"`
+
+ @complexity Linear in @a cnt plus linear in the distance between @a pos
+ and end of the container.
+
+ @liveexample{The example shows how `insert()` is used.,insert__count}
+
+ @since version 1.0.0
+ */
+ iterator insert(const_iterator pos, size_type cnt, const basic_json& val)
+ {
+ // insert only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ // check if iterator pos fits to this JSON value
+ if (JSON_UNLIKELY(pos.m_object != this))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ // insert to array and return iterator
+ return insert_iterator(pos, cnt, val);
+ }
+
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief inserts elements
+
+ Inserts elements from range `[first, last)` before iterator @a pos.
+
+ @param[in] pos iterator before which the content will be inserted; may be
+ the end() iterator
+ @param[in] first begin of the range of elements to insert
+ @param[in] last end of the range of elements to insert
+
+ @throw type_error.309 if called on JSON values other than arrays; example:
+ `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if @a pos is not an iterator of *this;
+ example: `"iterator does not fit current value"`
+ @throw invalid_iterator.210 if @a first and @a last do not belong to the
+ same JSON value; example: `"iterators do not fit"`
+ @throw invalid_iterator.211 if @a first or @a last are iterators into
+ container for which insert is called; example: `"passed iterators may not
+ belong to container"`
+
+ @return iterator pointing to the first element inserted, or @a pos if
+ `first==last`
+
+ @complexity Linear in `std::distance(first, last)` plus linear in the
+ distance between @a pos and end of the container.
+
+ @liveexample{The example shows how `insert()` is used.,insert__range}
+
+ @since version 1.0.0
+ */
+ iterator insert(const_iterator pos, const_iterator first, const_iterator last)
+ {
+ // insert only works for arrays
+ if (JSON_UNLIKELY(not is_array()))
+ {
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ // check if iterator pos fits to this JSON value
+ if (JSON_UNLIKELY(pos.m_object != this))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ // check if range iterators belong to the same JSON object
+ if (JSON_UNLIKELY(first.m_object != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
+ }
+
+ if (JSON_UNLIKELY(first.m_object == this))
+ {
+ JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container"));
+ }
+
+ // insert to array and return iterator
+ return insert_iterator(pos, first.m_it.array_iterator, last.m_it.array_iterator);
+ }
+
+ /*!
+ @brief inserts elements
+
+ Inserts elements from initializer list @a ilist before iterator @a pos.
+
+ @param[in] pos iterator before which the content will be inserted; may be
+ the end() iterator
+ @param[in] ilist initializer list to insert the values from
+
+ @throw type_error.309 if called on JSON values other than arrays; example:
+ `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if @a pos is not an iterator of *this;
+ example: `"iterator does not fit current value"`
+
+ @return iterator pointing to the first element inserted, or @a pos if
+ `ilist` is empty
+
+ @complexity Linear in `ilist.size()` plus linear in the distance between
+ @a pos and end of the container.
+
+ @liveexample{The example shows how `insert()` is used.,insert__ilist}
+
+ @since version 1.0.0
+ */
+ iterator insert(const_iterator pos, initializer_list_t ilist)
+ {
+ // insert only works for arrays
+ if (JSON_UNLIKELY(not is_array()))
+ {
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ // check if iterator pos fits to this JSON value
+ if (JSON_UNLIKELY(pos.m_object != this))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ // insert to array and return iterator
+ return insert_iterator(pos, ilist.begin(), ilist.end());
+ }
+
+ /*!
+ @brief inserts elements
+
+ Inserts elements from range `[first, last)`.
+
+ @param[in] first begin of the range of elements to insert
+ @param[in] last end of the range of elements to insert
+
+ @throw type_error.309 if called on JSON values other than objects; example:
+ `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if iterator @a first or @a last does does not
+ point to an object; example: `"iterators first and last must point to
+ objects"`
+ @throw invalid_iterator.210 if @a first and @a last do not belong to the
+ same JSON value; example: `"iterators do not fit"`
+
+ @complexity Logarithmic: `O(N*log(size() + N))`, where `N` is the number
+ of elements to insert.
+
+ @liveexample{The example shows how `insert()` is used.,insert__range_object}
+
+ @since version 3.0.0
+ */
+ void insert(const_iterator first, const_iterator last)
+ {
+ // insert only works for objects
+ if (JSON_UNLIKELY(not is_object()))
+ {
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ // check if range iterators belong to the same JSON object
+ if (JSON_UNLIKELY(first.m_object != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
+ }
+
+ // passed iterators must belong to objects
+ if (JSON_UNLIKELY(not first.m_object->is_object()))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects"));
+ }
+
+ m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator);
+ }
+
+ /*!
+ @brief updates a JSON object from another object, overwriting existing keys
+
+ Inserts all values from JSON object @a j and overwrites existing keys.
+
+ @param[in] j JSON object to read values from
+
+ @throw type_error.312 if called on JSON values other than objects; example:
+ `"cannot use update() with string"`
+
+ @complexity O(N*log(size() + N)), where N is the number of elements to
+ insert.
+
+ @liveexample{The example shows how `update()` is used.,update}
+
+ @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update
+
+ @since version 3.0.0
+ */
+ void update(const_reference j)
+ {
+ // implicitly convert null value to an empty object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value.object = create<object_t>();
+ assert_invariant();
+ }
+
+ if (JSON_UNLIKELY(not is_object()))
+ {
+ JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name())));
+ }
+ if (JSON_UNLIKELY(not j.is_object()))
+ {
+ JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(j.type_name())));
+ }
+
+ for (auto it = j.cbegin(); it != j.cend(); ++it)
+ {
+ m_value.object->operator[](it.key()) = it.value();
+ }
+ }
+
+ /*!
+ @brief updates a JSON object from another object, overwriting existing keys
+
+ Inserts all values from from range `[first, last)` and overwrites existing
+ keys.
+
+ @param[in] first begin of the range of elements to insert
+ @param[in] last end of the range of elements to insert
+
+ @throw type_error.312 if called on JSON values other than objects; example:
+ `"cannot use update() with string"`
+ @throw invalid_iterator.202 if iterator @a first or @a last does does not
+ point to an object; example: `"iterators first and last must point to
+ objects"`
+ @throw invalid_iterator.210 if @a first and @a last do not belong to the
+ same JSON value; example: `"iterators do not fit"`
+
+ @complexity O(N*log(size() + N)), where N is the number of elements to
+ insert.
+
+ @liveexample{The example shows how `update()` is used__range.,update}
+
+ @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update
+
+ @since version 3.0.0
+ */
+ void update(const_iterator first, const_iterator last)
+ {
+ // implicitly convert null value to an empty object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value.object = create<object_t>();
+ assert_invariant();
+ }
+
+ if (JSON_UNLIKELY(not is_object()))
+ {
+ JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name())));
+ }
+
+ // check if range iterators belong to the same JSON object
+ if (JSON_UNLIKELY(first.m_object != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
+ }
+
+ // passed iterators must belong to objects
+ if (JSON_UNLIKELY(not first.m_object->is_object()
+ or not last.m_object->is_object()))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects"));
+ }
+
+ for (auto it = first; it != last; ++it)
+ {
+ m_value.object->operator[](it.key()) = it.value();
+ }
+ }
+
+ /*!
+ @brief exchanges the values
+
+ Exchanges the contents of the JSON value with those of @a other. Does not
+ invoke any move, copy, or swap operations on individual elements. All
+ iterators and references remain valid. The past-the-end iterator is
+ invalidated.
+
+ @param[in,out] other JSON value to exchange the contents with
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how JSON values can be swapped with
+ `swap()`.,swap__reference}
+
+ @since version 1.0.0
+ */
+ void swap(reference other) noexcept (
+ std::is_nothrow_move_constructible<value_t>::value and
+ std::is_nothrow_move_assignable<value_t>::value and
+ std::is_nothrow_move_constructible<json_value>::value and
+ std::is_nothrow_move_assignable<json_value>::value
+ )
+ {
+ std::swap(m_type, other.m_type);
+ std::swap(m_value, other.m_value);
+ assert_invariant();
+ }
+
+ /*!
+ @brief exchanges the values
+
+ Exchanges the contents of a JSON array with those of @a other. Does not
+ invoke any move, copy, or swap operations on individual elements. All
+ iterators and references remain valid. The past-the-end iterator is
+ invalidated.
+
+ @param[in,out] other array to exchange the contents with
+
+ @throw type_error.310 when JSON value is not an array; example: `"cannot
+ use swap() with string"`
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how arrays can be swapped with
+ `swap()`.,swap__array_t}
+
+ @since version 1.0.0
+ */
+ void swap(array_t& other)
+ {
+ // swap only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ std::swap(*(m_value.array), other);
+ }
+ else
+ {
+ JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief exchanges the values
+
+ Exchanges the contents of a JSON object with those of @a other. Does not
+ invoke any move, copy, or swap operations on individual elements. All
+ iterators and references remain valid. The past-the-end iterator is
+ invalidated.
+
+ @param[in,out] other object to exchange the contents with
+
+ @throw type_error.310 when JSON value is not an object; example:
+ `"cannot use swap() with string"`
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how objects can be swapped with
+ `swap()`.,swap__object_t}
+
+ @since version 1.0.0
+ */
+ void swap(object_t& other)
+ {
+ // swap only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ std::swap(*(m_value.object), other);
+ }
+ else
+ {
+ JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief exchanges the values
+
+ Exchanges the contents of a JSON string with those of @a other. Does not
+ invoke any move, copy, or swap operations on individual elements. All
+ iterators and references remain valid. The past-the-end iterator is
+ invalidated.
+
+ @param[in,out] other string to exchange the contents with
+
+ @throw type_error.310 when JSON value is not a string; example: `"cannot
+ use swap() with boolean"`
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how strings can be swapped with
+ `swap()`.,swap__string_t}
+
+ @since version 1.0.0
+ */
+ void swap(string_t& other)
+ {
+ // swap only works for strings
+ if (JSON_LIKELY(is_string()))
+ {
+ std::swap(*(m_value.string), other);
+ }
+ else
+ {
+ JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
+ }
+ }
+
+ /// @}
+
+ public:
+ //////////////////////////////////////////
+ // lexicographical comparison operators //
+ //////////////////////////////////////////
+
+ /// @name lexicographical comparison operators
+ /// @{
+
+ /*!
+ @brief comparison: equal
+
+ Compares two JSON values for equality according to the following rules:
+ - Two JSON values are equal if (1) they are from the same type and (2)
+ their stored values are the same according to their respective
+ `operator==`.
+ - Integer and floating-point numbers are automatically converted before
+ comparison. Note than two NaN values are always treated as unequal.
+ - Two JSON null values are equal.
+
+ @note Floating-point inside JSON values numbers are compared with
+ `json::number_float_t::operator==` which is `double::operator==` by
+ default. To compare floating-point while respecting an epsilon, an alternative
+ [comparison function](https://github.com/mariokonrad/marnav/blob/master/src/marnav/math/floatingpoint.hpp#L34-#L39)
+ could be used, for instance
+ @code {.cpp}
+ template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
+ inline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept
+ {
+ return std::abs(a - b) <= epsilon;
+ }
+ @endcode
+
+ @note NaN values never compare equal to themselves or to other NaN values.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether the values @a lhs and @a rhs are equal
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @complexity Linear.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__equal}
+
+ @since version 1.0.0
+ */
+ friend bool operator==(const_reference lhs, const_reference rhs) noexcept
+ {
+ const auto lhs_type = lhs.type();
+ const auto rhs_type = rhs.type();
+
+ if (lhs_type == rhs_type)
+ {
+ switch (lhs_type)
+ {
+ case value_t::array:
+ return *lhs.m_value.array == *rhs.m_value.array;
+
+ case value_t::object:
+ return *lhs.m_value.object == *rhs.m_value.object;
+
+ case value_t::null:
+ return true;
+
+ case value_t::string:
+ return *lhs.m_value.string == *rhs.m_value.string;
+
+ case value_t::boolean:
+ return lhs.m_value.boolean == rhs.m_value.boolean;
+
+ case value_t::number_integer:
+ return lhs.m_value.number_integer == rhs.m_value.number_integer;
+
+ case value_t::number_unsigned:
+ return lhs.m_value.number_unsigned == rhs.m_value.number_unsigned;
+
+ case value_t::number_float:
+ return lhs.m_value.number_float == rhs.m_value.number_float;
+
+ default:
+ return false;
+ }
+ }
+ else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
+ {
+ return static_cast<number_float_t>(lhs.m_value.number_integer) == rhs.m_value.number_float;
+ }
+ else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
+ {
+ return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_integer);
+ }
+ else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float)
+ {
+ return static_cast<number_float_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_float;
+ }
+ else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned)
+ {
+ return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_unsigned);
+ }
+ else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer)
+ {
+ return static_cast<number_integer_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_integer;
+ }
+ else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned)
+ {
+ return lhs.m_value.number_integer == static_cast<number_integer_t>(rhs.m_value.number_unsigned);
+ }
+
+ return false;
+ }
+
+ /*!
+ @brief comparison: equal
+ @copydoc operator==(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs == basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: equal
+ @copydoc operator==(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) == rhs;
+ }
+
+ /*!
+ @brief comparison: not equal
+
+ Compares two JSON values for inequality by calculating `not (lhs == rhs)`.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether the values @a lhs and @a rhs are not equal
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__notequal}
+
+ @since version 1.0.0
+ */
+ friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
+ {
+ return not (lhs == rhs);
+ }
+
+ /*!
+ @brief comparison: not equal
+ @copydoc operator!=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs != basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: not equal
+ @copydoc operator!=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) != rhs;
+ }
+
+ /*!
+ @brief comparison: less than
+
+ Compares whether one JSON value @a lhs is less than another JSON value @a
+ rhs according to the following rules:
+ - If @a lhs and @a rhs have the same type, the values are compared using
+ the default `<` operator.
+ - Integer and floating-point numbers are automatically converted before
+ comparison
+ - In case @a lhs and @a rhs have different types, the values are ignored
+ and the order of the types is considered, see
+ @ref operator<(const value_t, const value_t).
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether @a lhs is less than @a rhs
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__less}
+
+ @since version 1.0.0
+ */
+ friend bool operator<(const_reference lhs, const_reference rhs) noexcept
+ {
+ const auto lhs_type = lhs.type();
+ const auto rhs_type = rhs.type();
+
+ if (lhs_type == rhs_type)
+ {
+ switch (lhs_type)
+ {
+ case value_t::array:
+ // note parentheses are necessary, see
+ // https://github.com/nlohmann/json/issues/1530
+ return (*lhs.m_value.array) < (*rhs.m_value.array);
+
+ case value_t::object:
+ return *lhs.m_value.object < *rhs.m_value.object;
+
+ case value_t::null:
+ return false;
+
+ case value_t::string:
+ return *lhs.m_value.string < *rhs.m_value.string;
+
+ case value_t::boolean:
+ return lhs.m_value.boolean < rhs.m_value.boolean;
+
+ case value_t::number_integer:
+ return lhs.m_value.number_integer < rhs.m_value.number_integer;
+
+ case value_t::number_unsigned:
+ return lhs.m_value.number_unsigned < rhs.m_value.number_unsigned;
+
+ case value_t::number_float:
+ return lhs.m_value.number_float < rhs.m_value.number_float;
+
+ default:
+ return false;
+ }
+ }
+ else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
+ {
+ return static_cast<number_float_t>(lhs.m_value.number_integer) < rhs.m_value.number_float;
+ }
+ else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
+ {
+ return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_integer);
+ }
+ else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float)
+ {
+ return static_cast<number_float_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_float;
+ }
+ else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned)
+ {
+ return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_unsigned);
+ }
+ else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned)
+ {
+ return lhs.m_value.number_integer < static_cast<number_integer_t>(rhs.m_value.number_unsigned);
+ }
+ else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer)
+ {
+ return static_cast<number_integer_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_integer;
+ }
+
+ // We only reach this line if we cannot compare values. In that case,
+ // we compare types. Note we have to call the operator explicitly,
+ // because MSVC has problems otherwise.
+ return operator<(lhs_type, rhs_type);
+ }
+
+ /*!
+ @brief comparison: less than
+ @copydoc operator<(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs < basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: less than
+ @copydoc operator<(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) < rhs;
+ }
+
+ /*!
+ @brief comparison: less than or equal
+
+ Compares whether one JSON value @a lhs is less than or equal to another
+ JSON value by calculating `not (rhs < lhs)`.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether @a lhs is less than or equal to @a rhs
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__greater}
+
+ @since version 1.0.0
+ */
+ friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
+ {
+ return not (rhs < lhs);
+ }
+
+ /*!
+ @brief comparison: less than or equal
+ @copydoc operator<=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs <= basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: less than or equal
+ @copydoc operator<=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) <= rhs;
+ }
+
+ /*!
+ @brief comparison: greater than
+
+ Compares whether one JSON value @a lhs is greater than another
+ JSON value by calculating `not (lhs <= rhs)`.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether @a lhs is greater than to @a rhs
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__lessequal}
+
+ @since version 1.0.0
+ */
+ friend bool operator>(const_reference lhs, const_reference rhs) noexcept
+ {
+ return not (lhs <= rhs);
+ }
+
+ /*!
+ @brief comparison: greater than
+ @copydoc operator>(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs > basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: greater than
+ @copydoc operator>(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) > rhs;
+ }
+
+ /*!
+ @brief comparison: greater than or equal
+
+ Compares whether one JSON value @a lhs is greater than or equal to another
+ JSON value by calculating `not (lhs < rhs)`.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether @a lhs is greater than or equal to @a rhs
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__greaterequal}
+
+ @since version 1.0.0
+ */
+ friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
+ {
+ return not (lhs < rhs);
+ }
+
+ /*!
+ @brief comparison: greater than or equal
+ @copydoc operator>=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs >= basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: greater than or equal
+ @copydoc operator>=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) >= rhs;
+ }
+
+ /// @}
+
+ ///////////////////
+ // serialization //
+ ///////////////////
+
+ /// @name serialization
+ /// @{
+
+ /*!
+ @brief serialize to stream
+
+ Serialize the given JSON value @a j to the output stream @a o. The JSON
+ value will be serialized using the @ref dump member function.
+
+ - The indentation of the output can be controlled with the member variable
+ `width` of the output stream @a o. For instance, using the manipulator
+ `std::setw(4)` on @a o sets the indentation level to `4` and the
+ serialization result is the same as calling `dump(4)`.
+
+ - The indentation character can be controlled with the member variable
+ `fill` of the output stream @a o. For instance, the manipulator
+ `std::setfill('\\t')` sets indentation to use a tab character rather than
+ the default space character.
+
+ @param[in,out] o stream to serialize to
+ @param[in] j JSON value to serialize
+
+ @return the stream @a o
+
+ @throw type_error.316 if a string stored inside the JSON value is not
+ UTF-8 encoded
+
+ @complexity Linear.
+
+ @liveexample{The example below shows the serialization with different
+ parameters to `width` to adjust the indentation level.,operator_serialize}
+
+ @since version 1.0.0; indentation character added in version 3.0.0
+ */
+ friend std::ostream& operator<<(std::ostream& o, const basic_json& j)
+ {
+ // read width member and use it as indentation parameter if nonzero
+ const bool pretty_print = o.width() > 0;
+ const auto indentation = pretty_print ? o.width() : 0;
+
+ // reset width to 0 for subsequent calls to this stream
+ o.width(0);
+
+ // do the actual serialization
+ serializer s(detail::output_adapter<char>(o), o.fill());
+ s.dump(j, pretty_print, false, static_cast<unsigned int>(indentation));
+ return o;
+ }
+
+ /*!
+ @brief serialize to stream
+ @deprecated This stream operator is deprecated and will be removed in
+ future 4.0.0 of the library. Please use
+ @ref operator<<(std::ostream&, const basic_json&)
+ instead; that is, replace calls like `j >> o;` with `o << j;`.
+ @since version 1.0.0; deprecated since version 3.0.0
+ */
+ JSON_DEPRECATED
+ friend std::ostream& operator>>(const basic_json& j, std::ostream& o)
+ {
+ return o << j;
+ }
+
+ /// @}
+
+
+ /////////////////////
+ // deserialization //
+ /////////////////////
+
+ /// @name deserialization
+ /// @{
+
+ /*!
+ @brief deserialize from a compatible input
+
+ This function reads from a compatible input. Examples are:
+ - an array of 1-byte values
+ - strings with character/literal type with size of 1 byte
+ - input streams
+ - container with contiguous storage of 1-byte values. Compatible container
+ types include `std::vector`, `std::string`, `std::array`,
+ `std::valarray`, and `std::initializer_list`. Furthermore, C-style
+ arrays can be used with `std::begin()`/`std::end()`. User-defined
+ containers can be used as long as they implement random-access iterators
+ and a contiguous storage.
+
+ @pre Each element of the container has a size of 1 byte. Violating this
+ precondition yields undefined behavior. **This precondition is enforced
+ with a static assertion.**
+
+ @pre The container storage is contiguous. Violating this precondition
+ yields undefined behavior. **This precondition is enforced with an
+ assertion.**
+
+ @warning There is no way to enforce all preconditions at compile-time. If
+ the function is called with a noncompliant container and with
+ assertions switched off, the behavior is undefined and will most
+ likely yield segmentation violation.
+
+ @param[in] i input to read from
+ @param[in] cb a parser callback function of type @ref parser_callback_t
+ which is used to control the deserialization by filtering unwanted values
+ (optional)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.101 if a parse error occurs; example: `""unexpected end
+ of input; expected string literal""`
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+
+ @complexity Linear in the length of the input. The parser is a predictive
+ LL(1) parser. The complexity can be higher if the parser callback function
+ @a cb has a super-linear complexity.
+
+ @note A UTF-8 byte order mark is silently ignored.
+
+ @liveexample{The example below demonstrates the `parse()` function reading
+ from an array.,parse__array__parser_callback_t}
+
+ @liveexample{The example below demonstrates the `parse()` function with
+ and without callback function.,parse__string__parser_callback_t}
+
+ @liveexample{The example below demonstrates the `parse()` function with
+ and without callback function.,parse__istream__parser_callback_t}
+
+ @liveexample{The example below demonstrates the `parse()` function reading
+ from a contiguous container.,parse__contiguouscontainer__parser_callback_t}
+
+ @since version 2.0.3 (contiguous containers)
+ */
+ JSON_NODISCARD
+ static basic_json parse(detail::input_adapter&& i,
+ const parser_callback_t cb = nullptr,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ parser(i, cb, allow_exceptions).parse(true, result);
+ return result;
+ }
+
+ static bool accept(detail::input_adapter&& i)
+ {
+ return parser(i).accept(true);
+ }
+
+ /*!
+ @brief generate SAX events
+
+ The SAX event lister must follow the interface of @ref json_sax.
+
+ This function reads from a compatible input. Examples are:
+ - an array of 1-byte values
+ - strings with character/literal type with size of 1 byte
+ - input streams
+ - container with contiguous storage of 1-byte values. Compatible container
+ types include `std::vector`, `std::string`, `std::array`,
+ `std::valarray`, and `std::initializer_list`. Furthermore, C-style
+ arrays can be used with `std::begin()`/`std::end()`. User-defined
+ containers can be used as long as they implement random-access iterators
+ and a contiguous storage.
+
+ @pre Each element of the container has a size of 1 byte. Violating this
+ precondition yields undefined behavior. **This precondition is enforced
+ with a static assertion.**
+
+ @pre The container storage is contiguous. Violating this precondition
+ yields undefined behavior. **This precondition is enforced with an
+ assertion.**
+
+ @warning There is no way to enforce all preconditions at compile-time. If
+ the function is called with a noncompliant container and with
+ assertions switched off, the behavior is undefined and will most
+ likely yield segmentation violation.
+
+ @param[in] i input to read from
+ @param[in,out] sax SAX event listener
+ @param[in] format the format to parse (JSON, CBOR, MessagePack, or UBJSON)
+ @param[in] strict whether the input has to be consumed completely
+
+ @return return value of the last processed SAX event
+
+ @throw parse_error.101 if a parse error occurs; example: `""unexpected end
+ of input; expected string literal""`
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+
+ @complexity Linear in the length of the input. The parser is a predictive
+ LL(1) parser. The complexity can be higher if the SAX consumer @a sax has
+ a super-linear complexity.
+
+ @note A UTF-8 byte order mark is silently ignored.
+
+ @liveexample{The example below demonstrates the `sax_parse()` function
+ reading from string and processing the events with a user-defined SAX
+ event consumer.,sax_parse}
+
+ @since version 3.2.0
+ */
+ template <typename SAX>
+ static bool sax_parse(detail::input_adapter&& i, SAX* sax,
+ input_format_t format = input_format_t::json,
+ const bool strict = true)
+ {
+ assert(sax);
+ return format == input_format_t::json
+ ? parser(std::move(i)).sax_parse(sax, strict)
+ : detail::binary_reader<basic_json, SAX>(std::move(i)).sax_parse(format, sax, strict);
+ }
+
+ /*!
+ @brief deserialize from an iterator range with contiguous storage
+
+ This function reads from an iterator range of a container with contiguous
+ storage of 1-byte values. Compatible container types include
+ `std::vector`, `std::string`, `std::array`, `std::valarray`, and
+ `std::initializer_list`. Furthermore, C-style arrays can be used with
+ `std::begin()`/`std::end()`. User-defined containers can be used as long
+ as they implement random-access iterators and a contiguous storage.
+
+ @pre The iterator range is contiguous. Violating this precondition yields
+ undefined behavior. **This precondition is enforced with an assertion.**
+ @pre Each element in the range has a size of 1 byte. Violating this
+ precondition yields undefined behavior. **This precondition is enforced
+ with a static assertion.**
+
+ @warning There is no way to enforce all preconditions at compile-time. If
+ the function is called with noncompliant iterators and with
+ assertions switched off, the behavior is undefined and will most
+ likely yield segmentation violation.
+
+ @tparam IteratorType iterator of container with contiguous storage
+ @param[in] first begin of the range to parse (included)
+ @param[in] last end of the range to parse (excluded)
+ @param[in] cb a parser callback function of type @ref parser_callback_t
+ which is used to control the deserialization by filtering unwanted values
+ (optional)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.101 in case of an unexpected token
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+
+ @complexity Linear in the length of the input. The parser is a predictive
+ LL(1) parser. The complexity can be higher if the parser callback function
+ @a cb has a super-linear complexity.
+
+ @note A UTF-8 byte order mark is silently ignored.
+
+ @liveexample{The example below demonstrates the `parse()` function reading
+ from an iterator range.,parse__iteratortype__parser_callback_t}
+
+ @since version 2.0.3
+ */
+ template<class IteratorType, typename std::enable_if<
+ std::is_base_of<
+ std::random_access_iterator_tag,
+ typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
+ static basic_json parse(IteratorType first, IteratorType last,
+ const parser_callback_t cb = nullptr,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ parser(detail::input_adapter(first, last), cb, allow_exceptions).parse(true, result);
+ return result;
+ }
+
+ template<class IteratorType, typename std::enable_if<
+ std::is_base_of<
+ std::random_access_iterator_tag,
+ typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
+ static bool accept(IteratorType first, IteratorType last)
+ {
+ return parser(detail::input_adapter(first, last)).accept(true);
+ }
+
+ template<class IteratorType, class SAX, typename std::enable_if<
+ std::is_base_of<
+ std::random_access_iterator_tag,
+ typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
+ static bool sax_parse(IteratorType first, IteratorType last, SAX* sax)
+ {
+ return parser(detail::input_adapter(first, last)).sax_parse(sax);
+ }
+
+ /*!
+ @brief deserialize from stream
+ @deprecated This stream operator is deprecated and will be removed in
+ version 4.0.0 of the library. Please use
+ @ref operator>>(std::istream&, basic_json&)
+ instead; that is, replace calls like `j << i;` with `i >> j;`.
+ @since version 1.0.0; deprecated since version 3.0.0
+ */
+ JSON_DEPRECATED
+ friend std::istream& operator<<(basic_json& j, std::istream& i)
+ {
+ return operator>>(i, j);
+ }
+
+ /*!
+ @brief deserialize from stream
+
+ Deserializes an input stream to a JSON value.
+
+ @param[in,out] i input stream to read a serialized JSON value from
+ @param[in,out] j JSON value to write the deserialized input to
+
+ @throw parse_error.101 in case of an unexpected token
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+
+ @complexity Linear in the length of the input. The parser is a predictive
+ LL(1) parser.
+
+ @note A UTF-8 byte order mark is silently ignored.
+
+ @liveexample{The example below shows how a JSON value is constructed by
+ reading a serialization from a stream.,operator_deserialize}
+
+ @sa parse(std::istream&, const parser_callback_t) for a variant with a
+ parser callback function to filter values while parsing
+
+ @since version 1.0.0
+ */
+ friend std::istream& operator>>(std::istream& i, basic_json& j)
+ {
+ parser(detail::input_adapter(i)).parse(false, j);
+ return i;
+ }
+
+ /// @}
+
+ ///////////////////////////
+ // convenience functions //
+ ///////////////////////////
+
+ /*!
+ @brief return the type as string
+
+ Returns the type name as string to be used in error messages - usually to
+ indicate that a function was called on a wrong JSON type.
+
+ @return a string representation of a the @a m_type member:
+ Value type | return value
+ ----------- | -------------
+ null | `"null"`
+ boolean | `"boolean"`
+ string | `"string"`
+ number | `"number"` (for all number types)
+ object | `"object"`
+ array | `"array"`
+ discarded | `"discarded"`
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @complexity Constant.
+
+ @liveexample{The following code exemplifies `type_name()` for all JSON
+ types.,type_name}
+
+ @sa @ref type() -- return the type of the JSON value
+ @sa @ref operator value_t() -- return the type of the JSON value (implicit)
+
+ @since version 1.0.0, public since 2.1.0, `const char*` and `noexcept`
+ since 3.0.0
+ */
+ const char* type_name() const noexcept
+ {
+ {
+ switch (m_type)
+ {
+ case value_t::null:
+ return "null";
+ case value_t::object:
+ return "object";
+ case value_t::array:
+ return "array";
+ case value_t::string:
+ return "string";
+ case value_t::boolean:
+ return "boolean";
+ case value_t::discarded:
+ return "discarded";
+ default:
+ return "number";
+ }
+ }
+ }
+
+
+ private:
+ //////////////////////
+ // member variables //
+ //////////////////////
+
+ /// the type of the current element
+ value_t m_type = value_t::null;
+
+ /// the value of the current element
+ json_value m_value = {};
+
+ //////////////////////////////////////////
+ // binary serialization/deserialization //
+ //////////////////////////////////////////
+
+ /// @name binary serialization/deserialization support
+ /// @{
+
+ public:
+ /*!
+ @brief create a CBOR serialization of a given JSON value
+
+ Serializes a given JSON value @a j to a byte vector using the CBOR (Concise
+ Binary Object Representation) serialization format. CBOR is a binary
+ serialization format which aims to be more compact than JSON itself, yet
+ more efficient to parse.
+
+ The library uses the following mapping from JSON values types to
+ CBOR types according to the CBOR specification (RFC 7049):
+
+ JSON value type | value/range | CBOR type | first byte
+ --------------- | ------------------------------------------ | ---------------------------------- | ---------------
+ null | `null` | Null | 0xF6
+ boolean | `true` | True | 0xF5
+ boolean | `false` | False | 0xF4
+ number_integer | -9223372036854775808..-2147483649 | Negative integer (8 bytes follow) | 0x3B
+ number_integer | -2147483648..-32769 | Negative integer (4 bytes follow) | 0x3A
+ number_integer | -32768..-129 | Negative integer (2 bytes follow) | 0x39
+ number_integer | -128..-25 | Negative integer (1 byte follow) | 0x38
+ number_integer | -24..-1 | Negative integer | 0x20..0x37
+ number_integer | 0..23 | Integer | 0x00..0x17
+ number_integer | 24..255 | Unsigned integer (1 byte follow) | 0x18
+ number_integer | 256..65535 | Unsigned integer (2 bytes follow) | 0x19
+ number_integer | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A
+ number_integer | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B
+ number_unsigned | 0..23 | Integer | 0x00..0x17
+ number_unsigned | 24..255 | Unsigned integer (1 byte follow) | 0x18
+ number_unsigned | 256..65535 | Unsigned integer (2 bytes follow) | 0x19
+ number_unsigned | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A
+ number_unsigned | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B
+ number_float | *any value* | Double-Precision Float | 0xFB
+ string | *length*: 0..23 | UTF-8 string | 0x60..0x77
+ string | *length*: 23..255 | UTF-8 string (1 byte follow) | 0x78
+ string | *length*: 256..65535 | UTF-8 string (2 bytes follow) | 0x79
+ string | *length*: 65536..4294967295 | UTF-8 string (4 bytes follow) | 0x7A
+ string | *length*: 4294967296..18446744073709551615 | UTF-8 string (8 bytes follow) | 0x7B
+ array | *size*: 0..23 | array | 0x80..0x97
+ array | *size*: 23..255 | array (1 byte follow) | 0x98
+ array | *size*: 256..65535 | array (2 bytes follow) | 0x99
+ array | *size*: 65536..4294967295 | array (4 bytes follow) | 0x9A
+ array | *size*: 4294967296..18446744073709551615 | array (8 bytes follow) | 0x9B
+ object | *size*: 0..23 | map | 0xA0..0xB7
+ object | *size*: 23..255 | map (1 byte follow) | 0xB8
+ object | *size*: 256..65535 | map (2 bytes follow) | 0xB9
+ object | *size*: 65536..4294967295 | map (4 bytes follow) | 0xBA
+ object | *size*: 4294967296..18446744073709551615 | map (8 bytes follow) | 0xBB
+
+ @note The mapping is **complete** in the sense that any JSON value type
+ can be converted to a CBOR value.
+
+ @note If NaN or Infinity are stored inside a JSON number, they are
+ serialized properly. This behavior differs from the @ref dump()
+ function which serializes NaN or Infinity to `null`.
+
+ @note The following CBOR types are not used in the conversion:
+ - byte strings (0x40..0x5F)
+ - UTF-8 strings terminated by "break" (0x7F)
+ - arrays terminated by "break" (0x9F)
+ - maps terminated by "break" (0xBF)
+ - date/time (0xC0..0xC1)
+ - bignum (0xC2..0xC3)
+ - decimal fraction (0xC4)
+ - bigfloat (0xC5)
+ - tagged items (0xC6..0xD4, 0xD8..0xDB)
+ - expected conversions (0xD5..0xD7)
+ - simple values (0xE0..0xF3, 0xF8)
+ - undefined (0xF7)
+ - half and single-precision floats (0xF9-0xFA)
+ - break (0xFF)
+
+ @param[in] j JSON value to serialize
+ @return MessagePack serialization as byte vector
+
+ @complexity Linear in the size of the JSON value @a j.
+
+ @liveexample{The example shows the serialization of a JSON value to a byte
+ vector in CBOR format.,to_cbor}
+
+ @sa http://cbor.io
+ @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the
+ analogous deserialization
+ @sa @ref to_msgpack(const basic_json&) for the related MessagePack format
+ @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the
+ related UBJSON format
+
+ @since version 2.0.9
+ */
+ static std::vector<uint8_t> to_cbor(const basic_json& j)
+ {
+ std::vector<uint8_t> result;
+ to_cbor(j, result);
+ return result;
+ }
+
+ static void to_cbor(const basic_json& j, detail::output_adapter<uint8_t> o)
+ {
+ binary_writer<uint8_t>(o).write_cbor(j);
+ }
+
+ static void to_cbor(const basic_json& j, detail::output_adapter<char> o)
+ {
+ binary_writer<char>(o).write_cbor(j);
+ }
+
+ /*!
+ @brief create a MessagePack serialization of a given JSON value
+
+ Serializes a given JSON value @a j to a byte vector using the MessagePack
+ serialization format. MessagePack is a binary serialization format which
+ aims to be more compact than JSON itself, yet more efficient to parse.
+
+ The library uses the following mapping from JSON values types to
+ MessagePack types according to the MessagePack specification:
+
+ JSON value type | value/range | MessagePack type | first byte
+ --------------- | --------------------------------- | ---------------- | ----------
+ null | `null` | nil | 0xC0
+ boolean | `true` | true | 0xC3
+ boolean | `false` | false | 0xC2
+ number_integer | -9223372036854775808..-2147483649 | int64 | 0xD3
+ number_integer | -2147483648..-32769 | int32 | 0xD2
+ number_integer | -32768..-129 | int16 | 0xD1
+ number_integer | -128..-33 | int8 | 0xD0
+ number_integer | -32..-1 | negative fixint | 0xE0..0xFF
+ number_integer | 0..127 | positive fixint | 0x00..0x7F
+ number_integer | 128..255 | uint 8 | 0xCC
+ number_integer | 256..65535 | uint 16 | 0xCD
+ number_integer | 65536..4294967295 | uint 32 | 0xCE
+ number_integer | 4294967296..18446744073709551615 | uint 64 | 0xCF
+ number_unsigned | 0..127 | positive fixint | 0x00..0x7F
+ number_unsigned | 128..255 | uint 8 | 0xCC
+ number_unsigned | 256..65535 | uint 16 | 0xCD
+ number_unsigned | 65536..4294967295 | uint 32 | 0xCE
+ number_unsigned | 4294967296..18446744073709551615 | uint 64 | 0xCF
+ number_float | *any value* | float 64 | 0xCB
+ string | *length*: 0..31 | fixstr | 0xA0..0xBF
+ string | *length*: 32..255 | str 8 | 0xD9
+ string | *length*: 256..65535 | str 16 | 0xDA
+ string | *length*: 65536..4294967295 | str 32 | 0xDB
+ array | *size*: 0..15 | fixarray | 0x90..0x9F
+ array | *size*: 16..65535 | array 16 | 0xDC
+ array | *size*: 65536..4294967295 | array 32 | 0xDD
+ object | *size*: 0..15 | fix map | 0x80..0x8F
+ object | *size*: 16..65535 | map 16 | 0xDE
+ object | *size*: 65536..4294967295 | map 32 | 0xDF
+
+ @note The mapping is **complete** in the sense that any JSON value type
+ can be converted to a MessagePack value.
+
+ @note The following values can **not** be converted to a MessagePack value:
+ - strings with more than 4294967295 bytes
+ - arrays with more than 4294967295 elements
+ - objects with more than 4294967295 elements
+
+ @note The following MessagePack types are not used in the conversion:
+ - bin 8 - bin 32 (0xC4..0xC6)
+ - ext 8 - ext 32 (0xC7..0xC9)
+ - float 32 (0xCA)
+ - fixext 1 - fixext 16 (0xD4..0xD8)
+
+ @note Any MessagePack output created @ref to_msgpack can be successfully
+ parsed by @ref from_msgpack.
+
+ @note If NaN or Infinity are stored inside a JSON number, they are
+ serialized properly. This behavior differs from the @ref dump()
+ function which serializes NaN or Infinity to `null`.
+
+ @param[in] j JSON value to serialize
+ @return MessagePack serialization as byte vector
+
+ @complexity Linear in the size of the JSON value @a j.
+
+ @liveexample{The example shows the serialization of a JSON value to a byte
+ vector in MessagePack format.,to_msgpack}
+
+ @sa http://msgpack.org
+ @sa @ref from_msgpack for the analogous deserialization
+ @sa @ref to_cbor(const basic_json& for the related CBOR format
+ @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the
+ related UBJSON format
+
+ @since version 2.0.9
+ */
+ static std::vector<uint8_t> to_msgpack(const basic_json& j)
+ {
+ std::vector<uint8_t> result;
+ to_msgpack(j, result);
+ return result;
+ }
+
+ static void to_msgpack(const basic_json& j, detail::output_adapter<uint8_t> o)
+ {
+ binary_writer<uint8_t>(o).write_msgpack(j);
+ }
+
+ static void to_msgpack(const basic_json& j, detail::output_adapter<char> o)
+ {
+ binary_writer<char>(o).write_msgpack(j);
+ }
+
+ /*!
+ @brief create a UBJSON serialization of a given JSON value
+
+ Serializes a given JSON value @a j to a byte vector using the UBJSON
+ (Universal Binary JSON) serialization format. UBJSON aims to be more compact
+ than JSON itself, yet more efficient to parse.
+
+ The library uses the following mapping from JSON values types to
+ UBJSON types according to the UBJSON specification:
+
+ JSON value type | value/range | UBJSON type | marker
+ --------------- | --------------------------------- | ----------- | ------
+ null | `null` | null | `Z`
+ boolean | `true` | true | `T`
+ boolean | `false` | false | `F`
+ number_integer | -9223372036854775808..-2147483649 | int64 | `L`
+ number_integer | -2147483648..-32769 | int32 | `l`
+ number_integer | -32768..-129 | int16 | `I`
+ number_integer | -128..127 | int8 | `i`
+ number_integer | 128..255 | uint8 | `U`
+ number_integer | 256..32767 | int16 | `I`
+ number_integer | 32768..2147483647 | int32 | `l`
+ number_integer | 2147483648..9223372036854775807 | int64 | `L`
+ number_unsigned | 0..127 | int8 | `i`
+ number_unsigned | 128..255 | uint8 | `U`
+ number_unsigned | 256..32767 | int16 | `I`
+ number_unsigned | 32768..2147483647 | int32 | `l`
+ number_unsigned | 2147483648..9223372036854775807 | int64 | `L`
+ number_float | *any value* | float64 | `D`
+ string | *with shortest length indicator* | string | `S`
+ array | *see notes on optimized format* | array | `[`
+ object | *see notes on optimized format* | map | `{`
+
+ @note The mapping is **complete** in the sense that any JSON value type
+ can be converted to a UBJSON value.
+
+ @note The following values can **not** be converted to a UBJSON value:
+ - strings with more than 9223372036854775807 bytes (theoretical)
+ - unsigned integer numbers above 9223372036854775807
+
+ @note The following markers are not used in the conversion:
+ - `Z`: no-op values are not created.
+ - `C`: single-byte strings are serialized with `S` markers.
+
+ @note Any UBJSON output created @ref to_ubjson can be successfully parsed
+ by @ref from_ubjson.
+
+ @note If NaN or Infinity are stored inside a JSON number, they are
+ serialized properly. This behavior differs from the @ref dump()
+ function which serializes NaN or Infinity to `null`.
+
+ @note The optimized formats for containers are supported: Parameter
+ @a use_size adds size information to the beginning of a container and
+ removes the closing marker. Parameter @a use_type further checks
+ whether all elements of a container have the same type and adds the
+ type marker to the beginning of the container. The @a use_type
+ parameter must only be used together with @a use_size = true. Note
+ that @a use_size = true alone may result in larger representations -
+ the benefit of this parameter is that the receiving side is
+ immediately informed on the number of elements of the container.
+
+ @param[in] j JSON value to serialize
+ @param[in] use_size whether to add size annotations to container types
+ @param[in] use_type whether to add type annotations to container types
+ (must be combined with @a use_size = true)
+ @return UBJSON serialization as byte vector
+
+ @complexity Linear in the size of the JSON value @a j.
+
+ @liveexample{The example shows the serialization of a JSON value to a byte
+ vector in UBJSON format.,to_ubjson}
+
+ @sa http://ubjson.org
+ @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for the
+ analogous deserialization
+ @sa @ref to_cbor(const basic_json& for the related CBOR format
+ @sa @ref to_msgpack(const basic_json&) for the related MessagePack format
+
+ @since version 3.1.0
+ */
+ static std::vector<uint8_t> to_ubjson(const basic_json& j,
+ const bool use_size = false,
+ const bool use_type = false)
+ {
+ std::vector<uint8_t> result;
+ to_ubjson(j, result, use_size, use_type);
+ return result;
+ }
+
+ static void to_ubjson(const basic_json& j, detail::output_adapter<uint8_t> o,
+ const bool use_size = false, const bool use_type = false)
+ {
+ binary_writer<uint8_t>(o).write_ubjson(j, use_size, use_type);
+ }
+
+ static void to_ubjson(const basic_json& j, detail::output_adapter<char> o,
+ const bool use_size = false, const bool use_type = false)
+ {
+ binary_writer<char>(o).write_ubjson(j, use_size, use_type);
+ }
+
+
+ /*!
+ @brief Serializes the given JSON object `j` to BSON and returns a vector
+ containing the corresponding BSON-representation.
+
+ BSON (Binary JSON) is a binary format in which zero or more ordered key/value pairs are
+ stored as a single entity (a so-called document).
+
+ The library uses the following mapping from JSON values types to BSON types:
+
+ JSON value type | value/range | BSON type | marker
+ --------------- | --------------------------------- | ----------- | ------
+ null | `null` | null | 0x0A
+ boolean | `true`, `false` | boolean | 0x08
+ number_integer | -9223372036854775808..-2147483649 | int64 | 0x12
+ number_integer | -2147483648..2147483647 | int32 | 0x10
+ number_integer | 2147483648..9223372036854775807 | int64 | 0x12
+ number_unsigned | 0..2147483647 | int32 | 0x10
+ number_unsigned | 2147483648..9223372036854775807 | int64 | 0x12
+ number_unsigned | 9223372036854775808..18446744073709551615| -- | --
+ number_float | *any value* | double | 0x01
+ string | *any value* | string | 0x02
+ array | *any value* | document | 0x04
+ object | *any value* | document | 0x03
+
+ @warning The mapping is **incomplete**, since only JSON-objects (and things
+ contained therein) can be serialized to BSON.
+ Also, integers larger than 9223372036854775807 cannot be serialized to BSON,
+ and the keys may not contain U+0000, since they are serialized a
+ zero-terminated c-strings.
+
+ @throw out_of_range.407 if `j.is_number_unsigned() && j.get<std::uint64_t>() > 9223372036854775807`
+ @throw out_of_range.409 if a key in `j` contains a NULL (U+0000)
+ @throw type_error.317 if `!j.is_object()`
+
+ @pre The input `j` is required to be an object: `j.is_object() == true`.
+
+ @note Any BSON output created via @ref to_bson can be successfully parsed
+ by @ref from_bson.
+
+ @param[in] j JSON value to serialize
+ @return BSON serialization as byte vector
+
+ @complexity Linear in the size of the JSON value @a j.
+
+ @liveexample{The example shows the serialization of a JSON value to a byte
+ vector in BSON format.,to_bson}
+
+ @sa http://bsonspec.org/spec.html
+ @sa @ref from_bson(detail::input_adapter&&, const bool strict) for the
+ analogous deserialization
+ @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the
+ related UBJSON format
+ @sa @ref to_cbor(const basic_json&) for the related CBOR format
+ @sa @ref to_msgpack(const basic_json&) for the related MessagePack format
+ */
+ static std::vector<uint8_t> to_bson(const basic_json& j)
+ {
+ std::vector<uint8_t> result;
+ to_bson(j, result);
+ return result;
+ }
+
+ /*!
+ @brief Serializes the given JSON object `j` to BSON and forwards the
+ corresponding BSON-representation to the given output_adapter `o`.
+ @param j The JSON object to convert to BSON.
+ @param o The output adapter that receives the binary BSON representation.
+ @pre The input `j` shall be an object: `j.is_object() == true`
+ @sa @ref to_bson(const basic_json&)
+ */
+ static void to_bson(const basic_json& j, detail::output_adapter<uint8_t> o)
+ {
+ binary_writer<uint8_t>(o).write_bson(j);
+ }
+
+ /*!
+ @copydoc to_bson(const basic_json&, detail::output_adapter<uint8_t>)
+ */
+ static void to_bson(const basic_json& j, detail::output_adapter<char> o)
+ {
+ binary_writer<char>(o).write_bson(j);
+ }
+
+
+ /*!
+ @brief create a JSON value from an input in CBOR format
+
+ Deserializes a given input @a i to a JSON value using the CBOR (Concise
+ Binary Object Representation) serialization format.
+
+ The library maps CBOR types to JSON value types as follows:
+
+ CBOR type | JSON value type | first byte
+ ---------------------- | --------------- | ----------
+ Integer | number_unsigned | 0x00..0x17
+ Unsigned integer | number_unsigned | 0x18
+ Unsigned integer | number_unsigned | 0x19
+ Unsigned integer | number_unsigned | 0x1A
+ Unsigned integer | number_unsigned | 0x1B
+ Negative integer | number_integer | 0x20..0x37
+ Negative integer | number_integer | 0x38
+ Negative integer | number_integer | 0x39
+ Negative integer | number_integer | 0x3A
+ Negative integer | number_integer | 0x3B
+ Negative integer | number_integer | 0x40..0x57
+ UTF-8 string | string | 0x60..0x77
+ UTF-8 string | string | 0x78
+ UTF-8 string | string | 0x79
+ UTF-8 string | string | 0x7A
+ UTF-8 string | string | 0x7B
+ UTF-8 string | string | 0x7F
+ array | array | 0x80..0x97
+ array | array | 0x98
+ array | array | 0x99
+ array | array | 0x9A
+ array | array | 0x9B
+ array | array | 0x9F
+ map | object | 0xA0..0xB7
+ map | object | 0xB8
+ map | object | 0xB9
+ map | object | 0xBA
+ map | object | 0xBB
+ map | object | 0xBF
+ False | `false` | 0xF4
+ True | `true` | 0xF5
+ Null | `null` | 0xF6
+ Half-Precision Float | number_float | 0xF9
+ Single-Precision Float | number_float | 0xFA
+ Double-Precision Float | number_float | 0xFB
+
+ @warning The mapping is **incomplete** in the sense that not all CBOR
+ types can be converted to a JSON value. The following CBOR types
+ are not supported and will yield parse errors (parse_error.112):
+ - byte strings (0x40..0x5F)
+ - date/time (0xC0..0xC1)
+ - bignum (0xC2..0xC3)
+ - decimal fraction (0xC4)
+ - bigfloat (0xC5)
+ - tagged items (0xC6..0xD4, 0xD8..0xDB)
+ - expected conversions (0xD5..0xD7)
+ - simple values (0xE0..0xF3, 0xF8)
+ - undefined (0xF7)
+
+ @warning CBOR allows map keys of any type, whereas JSON only allows
+ strings as keys in object values. Therefore, CBOR maps with keys
+ other than UTF-8 strings are rejected (parse_error.113).
+
+ @note Any CBOR output created @ref to_cbor can be successfully parsed by
+ @ref from_cbor.
+
+ @param[in] i an input in CBOR format convertible to an input adapter
+ @param[in] strict whether to expect the input to be consumed until EOF
+ (true by default)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.110 if the given input ends prematurely or the end of
+ file was not reached when @a strict was set to true
+ @throw parse_error.112 if unsupported features from CBOR were
+ used in the given input @a v or if the input is not valid CBOR
+ @throw parse_error.113 if a string was expected as map key, but not found
+
+ @complexity Linear in the size of the input @a i.
+
+ @liveexample{The example shows the deserialization of a byte vector in CBOR
+ format to a JSON value.,from_cbor}
+
+ @sa http://cbor.io
+ @sa @ref to_cbor(const basic_json&) for the analogous serialization
+ @sa @ref from_msgpack(detail::input_adapter&&, const bool, const bool) for the
+ related MessagePack format
+ @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for the
+ related UBJSON format
+
+ @since version 2.0.9; parameter @a start_index since 2.1.1; changed to
+ consume input adapters, removed start_index parameter, and added
+ @a strict parameter since 3.0.0; added @a allow_exceptions parameter
+ since 3.2.0
+ */
+ JSON_NODISCARD
+ static basic_json from_cbor(detail::input_adapter&& i,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::cbor, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @copydoc from_cbor(detail::input_adapter&&, const bool, const bool)
+ */
+ template<typename A1, typename A2,
+ detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0>
+ JSON_NODISCARD
+ static basic_json from_cbor(A1 && a1, A2 && a2,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::cbor, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @brief create a JSON value from an input in MessagePack format
+
+ Deserializes a given input @a i to a JSON value using the MessagePack
+ serialization format.
+
+ The library maps MessagePack types to JSON value types as follows:
+
+ MessagePack type | JSON value type | first byte
+ ---------------- | --------------- | ----------
+ positive fixint | number_unsigned | 0x00..0x7F
+ fixmap | object | 0x80..0x8F
+ fixarray | array | 0x90..0x9F
+ fixstr | string | 0xA0..0xBF
+ nil | `null` | 0xC0
+ false | `false` | 0xC2
+ true | `true` | 0xC3
+ float 32 | number_float | 0xCA
+ float 64 | number_float | 0xCB
+ uint 8 | number_unsigned | 0xCC
+ uint 16 | number_unsigned | 0xCD
+ uint 32 | number_unsigned | 0xCE
+ uint 64 | number_unsigned | 0xCF
+ int 8 | number_integer | 0xD0
+ int 16 | number_integer | 0xD1
+ int 32 | number_integer | 0xD2
+ int 64 | number_integer | 0xD3
+ str 8 | string | 0xD9
+ str 16 | string | 0xDA
+ str 32 | string | 0xDB
+ array 16 | array | 0xDC
+ array 32 | array | 0xDD
+ map 16 | object | 0xDE
+ map 32 | object | 0xDF
+ negative fixint | number_integer | 0xE0-0xFF
+
+ @warning The mapping is **incomplete** in the sense that not all
+ MessagePack types can be converted to a JSON value. The following
+ MessagePack types are not supported and will yield parse errors:
+ - bin 8 - bin 32 (0xC4..0xC6)
+ - ext 8 - ext 32 (0xC7..0xC9)
+ - fixext 1 - fixext 16 (0xD4..0xD8)
+
+ @note Any MessagePack output created @ref to_msgpack can be successfully
+ parsed by @ref from_msgpack.
+
+ @param[in] i an input in MessagePack format convertible to an input
+ adapter
+ @param[in] strict whether to expect the input to be consumed until EOF
+ (true by default)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.110 if the given input ends prematurely or the end of
+ file was not reached when @a strict was set to true
+ @throw parse_error.112 if unsupported features from MessagePack were
+ used in the given input @a i or if the input is not valid MessagePack
+ @throw parse_error.113 if a string was expected as map key, but not found
+
+ @complexity Linear in the size of the input @a i.
+
+ @liveexample{The example shows the deserialization of a byte vector in
+ MessagePack format to a JSON value.,from_msgpack}
+
+ @sa http://msgpack.org
+ @sa @ref to_msgpack(const basic_json&) for the analogous serialization
+ @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the
+ related CBOR format
+ @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for
+ the related UBJSON format
+ @sa @ref from_bson(detail::input_adapter&&, const bool, const bool) for
+ the related BSON format
+
+ @since version 2.0.9; parameter @a start_index since 2.1.1; changed to
+ consume input adapters, removed start_index parameter, and added
+ @a strict parameter since 3.0.0; added @a allow_exceptions parameter
+ since 3.2.0
+ */
+ JSON_NODISCARD
+ static basic_json from_msgpack(detail::input_adapter&& i,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::msgpack, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @copydoc from_msgpack(detail::input_adapter&&, const bool, const bool)
+ */
+ template<typename A1, typename A2,
+ detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0>
+ JSON_NODISCARD
+ static basic_json from_msgpack(A1 && a1, A2 && a2,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::msgpack, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @brief create a JSON value from an input in UBJSON format
+
+ Deserializes a given input @a i to a JSON value using the UBJSON (Universal
+ Binary JSON) serialization format.
+
+ The library maps UBJSON types to JSON value types as follows:
+
+ UBJSON type | JSON value type | marker
+ ----------- | --------------------------------------- | ------
+ no-op | *no value, next value is read* | `N`
+ null | `null` | `Z`
+ false | `false` | `F`
+ true | `true` | `T`
+ float32 | number_float | `d`
+ float64 | number_float | `D`
+ uint8 | number_unsigned | `U`
+ int8 | number_integer | `i`
+ int16 | number_integer | `I`
+ int32 | number_integer | `l`
+ int64 | number_integer | `L`
+ string | string | `S`
+ char | string | `C`
+ array | array (optimized values are supported) | `[`
+ object | object (optimized values are supported) | `{`
+
+ @note The mapping is **complete** in the sense that any UBJSON value can
+ be converted to a JSON value.
+
+ @param[in] i an input in UBJSON format convertible to an input adapter
+ @param[in] strict whether to expect the input to be consumed until EOF
+ (true by default)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.110 if the given input ends prematurely or the end of
+ file was not reached when @a strict was set to true
+ @throw parse_error.112 if a parse error occurs
+ @throw parse_error.113 if a string could not be parsed successfully
+
+ @complexity Linear in the size of the input @a i.
+
+ @liveexample{The example shows the deserialization of a byte vector in
+ UBJSON format to a JSON value.,from_ubjson}
+
+ @sa http://ubjson.org
+ @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the
+ analogous serialization
+ @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the
+ related CBOR format
+ @sa @ref from_msgpack(detail::input_adapter&&, const bool, const bool) for
+ the related MessagePack format
+ @sa @ref from_bson(detail::input_adapter&&, const bool, const bool) for
+ the related BSON format
+
+ @since version 3.1.0; added @a allow_exceptions parameter since 3.2.0
+ */
+ JSON_NODISCARD
+ static basic_json from_ubjson(detail::input_adapter&& i,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::ubjson, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @copydoc from_ubjson(detail::input_adapter&&, const bool, const bool)
+ */
+ template<typename A1, typename A2,
+ detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0>
+ JSON_NODISCARD
+ static basic_json from_ubjson(A1 && a1, A2 && a2,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::ubjson, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @brief Create a JSON value from an input in BSON format
+
+ Deserializes a given input @a i to a JSON value using the BSON (Binary JSON)
+ serialization format.
+
+ The library maps BSON record types to JSON value types as follows:
+
+ BSON type | BSON marker byte | JSON value type
+ --------------- | ---------------- | ---------------------------
+ double | 0x01 | number_float
+ string | 0x02 | string
+ document | 0x03 | object
+ array | 0x04 | array
+ binary | 0x05 | still unsupported
+ undefined | 0x06 | still unsupported
+ ObjectId | 0x07 | still unsupported
+ boolean | 0x08 | boolean
+ UTC Date-Time | 0x09 | still unsupported
+ null | 0x0A | null
+ Regular Expr. | 0x0B | still unsupported
+ DB Pointer | 0x0C | still unsupported
+ JavaScript Code | 0x0D | still unsupported
+ Symbol | 0x0E | still unsupported
+ JavaScript Code | 0x0F | still unsupported
+ int32 | 0x10 | number_integer
+ Timestamp | 0x11 | still unsupported
+ 128-bit decimal float | 0x13 | still unsupported
+ Max Key | 0x7F | still unsupported
+ Min Key | 0xFF | still unsupported
+
+ @warning The mapping is **incomplete**. The unsupported mappings
+ are indicated in the table above.
+
+ @param[in] i an input in BSON format convertible to an input adapter
+ @param[in] strict whether to expect the input to be consumed until EOF
+ (true by default)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.114 if an unsupported BSON record type is encountered
+
+ @complexity Linear in the size of the input @a i.
+
+ @liveexample{The example shows the deserialization of a byte vector in
+ BSON format to a JSON value.,from_bson}
+
+ @sa http://bsonspec.org/spec.html
+ @sa @ref to_bson(const basic_json&) for the analogous serialization
+ @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the
+ related CBOR format
+ @sa @ref from_msgpack(detail::input_adapter&&, const bool, const bool) for
+ the related MessagePack format
+ @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for the
+ related UBJSON format
+ */
+ JSON_NODISCARD
+ static basic_json from_bson(detail::input_adapter&& i,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::bson, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @copydoc from_bson(detail::input_adapter&&, const bool, const bool)
+ */
+ template<typename A1, typename A2,
+ detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0>
+ JSON_NODISCARD
+ static basic_json from_bson(A1 && a1, A2 && a2,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::bson, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+
+
+ /// @}
+
+ //////////////////////////
+ // JSON Pointer support //
+ //////////////////////////
+
+ /// @name JSON Pointer functions
+ /// @{
+
+ /*!
+ @brief access specified element via JSON Pointer
+
+ Uses a JSON pointer to retrieve a reference to the respective JSON value.
+ No bound checking is performed. Similar to @ref operator[](const typename
+ object_t::key_type&), `null` values are created in arrays and objects if
+ necessary.
+
+ In particular:
+ - If the JSON pointer points to an object key that does not exist, it
+ is created an filled with a `null` value before a reference to it
+ is returned.
+ - If the JSON pointer points to an array index that does not exist, it
+ is created an filled with a `null` value before a reference to it
+ is returned. All indices between the current maximum and the given
+ index are also filled with `null`.
+ - The special value `-` is treated as a synonym for the index past the
+ end.
+
+ @param[in] ptr a JSON pointer
+
+ @return reference to the element pointed to by @a ptr
+
+ @complexity Constant.
+
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+
+ @liveexample{The behavior is shown in the example.,operatorjson_pointer}
+
+ @since version 2.0.0
+ */
+ reference operator[](const json_pointer& ptr)
+ {
+ return ptr.get_unchecked(this);
+ }
+
+ /*!
+ @brief access specified element via JSON Pointer
+
+ Uses a JSON pointer to retrieve a reference to the respective JSON value.
+ No bound checking is performed. The function does not change the JSON
+ value; no `null` values are created. In particular, the the special value
+ `-` yields an exception.
+
+ @param[in] ptr JSON pointer to the desired element
+
+ @return const reference to the element pointed to by @a ptr
+
+ @complexity Constant.
+
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.402 if the array index '-' is used
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+
+ @liveexample{The behavior is shown in the example.,operatorjson_pointer_const}
+
+ @since version 2.0.0
+ */
+ const_reference operator[](const json_pointer& ptr) const
+ {
+ return ptr.get_unchecked(this);
+ }
+
+ /*!
+ @brief access specified element via JSON Pointer
+
+ Returns a reference to the element at with specified JSON pointer @a ptr,
+ with bounds checking.
+
+ @param[in] ptr JSON pointer to the desired element
+
+ @return reference to the element pointed to by @a ptr
+
+ @throw parse_error.106 if an array index in the passed JSON pointer @a ptr
+ begins with '0'. See example below.
+
+ @throw parse_error.109 if an array index in the passed JSON pointer @a ptr
+ is not a number. See example below.
+
+ @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr
+ is out of range. See example below.
+
+ @throw out_of_range.402 if the array index '-' is used in the passed JSON
+ pointer @a ptr. As `at` provides checked access (and no elements are
+ implicitly inserted), the index '-' is always invalid. See example below.
+
+ @throw out_of_range.403 if the JSON pointer describes a key of an object
+ which cannot be found. See example below.
+
+ @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved.
+ See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 2.0.0
+
+ @liveexample{The behavior is shown in the example.,at_json_pointer}
+ */
+ reference at(const json_pointer& ptr)
+ {
+ return ptr.get_checked(this);
+ }
+
+ /*!
+ @brief access specified element via JSON Pointer
+
+ Returns a const reference to the element at with specified JSON pointer @a
+ ptr, with bounds checking.
+
+ @param[in] ptr JSON pointer to the desired element
+
+ @return reference to the element pointed to by @a ptr
+
+ @throw parse_error.106 if an array index in the passed JSON pointer @a ptr
+ begins with '0'. See example below.
+
+ @throw parse_error.109 if an array index in the passed JSON pointer @a ptr
+ is not a number. See example below.
+
+ @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr
+ is out of range. See example below.
+
+ @throw out_of_range.402 if the array index '-' is used in the passed JSON
+ pointer @a ptr. As `at` provides checked access (and no elements are
+ implicitly inserted), the index '-' is always invalid. See example below.
+
+ @throw out_of_range.403 if the JSON pointer describes a key of an object
+ which cannot be found. See example below.
+
+ @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved.
+ See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 2.0.0
+
+ @liveexample{The behavior is shown in the example.,at_json_pointer_const}
+ */
+ const_reference at(const json_pointer& ptr) const
+ {
+ return ptr.get_checked(this);
+ }
+
+ /*!
+ @brief return flattened JSON value
+
+ The function creates a JSON object whose keys are JSON pointers (see [RFC
+ 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all
+ primitive. The original JSON value can be restored using the @ref
+ unflatten() function.
+
+ @return an object that maps JSON pointers to primitive values
+
+ @note Empty objects and arrays are flattened to `null` and will not be
+ reconstructed correctly by the @ref unflatten() function.
+
+ @complexity Linear in the size the JSON value.
+
+ @liveexample{The following code shows how a JSON object is flattened to an
+ object whose keys consist of JSON pointers.,flatten}
+
+ @sa @ref unflatten() for the reverse function
+
+ @since version 2.0.0
+ */
+ basic_json flatten() const
+ {
+ basic_json result(value_t::object);
+ json_pointer::flatten("", *this, result);
+ return result;
+ }
+
+ /*!
+ @brief unflatten a previously flattened JSON value
+
+ The function restores the arbitrary nesting of a JSON value that has been
+ flattened before using the @ref flatten() function. The JSON value must
+ meet certain constraints:
+ 1. The value must be an object.
+ 2. The keys must be JSON pointers (see
+ [RFC 6901](https://tools.ietf.org/html/rfc6901))
+ 3. The mapped values must be primitive JSON types.
+
+ @return the original JSON from a flattened version
+
+ @note Empty objects and arrays are flattened by @ref flatten() to `null`
+ values and can not unflattened to their original type. Apart from
+ this example, for a JSON value `j`, the following is always true:
+ `j == j.flatten().unflatten()`.
+
+ @complexity Linear in the size the JSON value.
+
+ @throw type_error.314 if value is not an object
+ @throw type_error.315 if object values are not primitive
+
+ @liveexample{The following code shows how a flattened JSON object is
+ unflattened into the original nested JSON object.,unflatten}
+
+ @sa @ref flatten() for the reverse function
+
+ @since version 2.0.0
+ */
+ basic_json unflatten() const
+ {
+ return json_pointer::unflatten(*this);
+ }
+
+ /// @}
+
+ //////////////////////////
+ // JSON Patch functions //
+ //////////////////////////
+
+ /// @name JSON Patch functions
+ /// @{
+
+ /*!
+ @brief applies a JSON patch
+
+ [JSON Patch](http://jsonpatch.com) defines a JSON document structure for
+ expressing a sequence of operations to apply to a JSON) document. With
+ this function, a JSON Patch is applied to the current JSON value by
+ executing all operations from the patch.
+
+ @param[in] json_patch JSON patch document
+ @return patched document
+
+ @note The application of a patch is atomic: Either all operations succeed
+ and the patched document is returned or an exception is thrown. In
+ any case, the original value is not changed: the patch is applied
+ to a copy of the value.
+
+ @throw parse_error.104 if the JSON patch does not consist of an array of
+ objects
+
+ @throw parse_error.105 if the JSON patch is malformed (e.g., mandatory
+ attributes are missing); example: `"operation add must have member path"`
+
+ @throw out_of_range.401 if an array index is out of range.
+
+ @throw out_of_range.403 if a JSON pointer inside the patch could not be
+ resolved successfully in the current JSON value; example: `"key baz not
+ found"`
+
+ @throw out_of_range.405 if JSON pointer has no parent ("add", "remove",
+ "move")
+
+ @throw other_error.501 if "test" operation was unsuccessful
+
+ @complexity Linear in the size of the JSON value and the length of the
+ JSON patch. As usually only a fraction of the JSON value is affected by
+ the patch, the complexity can usually be neglected.
+
+ @liveexample{The following code shows how a JSON patch is applied to a
+ value.,patch}
+
+ @sa @ref diff -- create a JSON patch by comparing two JSON values
+
+ @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902)
+ @sa [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901)
+
+ @since version 2.0.0
+ */
+ basic_json patch(const basic_json& json_patch) const
+ {
+ // make a working copy to apply the patch to
+ basic_json result = *this;
+
+ // the valid JSON Patch operations
+ enum class patch_operations {add, remove, replace, move, copy, test, invalid};
+
+ const auto get_op = [](const std::string & op)
+ {
+ if (op == "add")
+ {
+ return patch_operations::add;
+ }
+ if (op == "remove")
+ {
+ return patch_operations::remove;
+ }
+ if (op == "replace")
+ {
+ return patch_operations::replace;
+ }
+ if (op == "move")
+ {
+ return patch_operations::move;
+ }
+ if (op == "copy")
+ {
+ return patch_operations::copy;
+ }
+ if (op == "test")
+ {
+ return patch_operations::test;
+ }
+
+ return patch_operations::invalid;
+ };
+
+ // wrapper for "add" operation; add value at ptr
+ const auto operation_add = [&result](json_pointer & ptr, basic_json val)
+ {
+ // adding to the root of the target document means replacing it
+ if (ptr.empty())
+ {
+ result = val;
+ return;
+ }
+
+ // make sure the top element of the pointer exists
+ json_pointer top_pointer = ptr.top();
+ if (top_pointer != ptr)
+ {
+ result.at(top_pointer);
+ }
+
+ // get reference to parent of JSON pointer ptr
+ const auto last_path = ptr.back();
+ ptr.pop_back();
+ basic_json& parent = result[ptr];
+
+ switch (parent.m_type)
+ {
+ case value_t::null:
+ case value_t::object:
+ {
+ // use operator[] to add value
+ parent[last_path] = val;
+ break;
+ }
+
+ case value_t::array:
+ {
+ if (last_path == "-")
+ {
+ // special case: append to back
+ parent.push_back(val);
+ }
+ else
+ {
+ const auto idx = json_pointer::array_index(last_path);
+ if (JSON_UNLIKELY(static_cast<size_type>(idx) > parent.size()))
+ {
+ // avoid undefined behavior
+ JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
+ }
+
+ // default case: insert add offset
+ parent.insert(parent.begin() + static_cast<difference_type>(idx), val);
+ }
+ break;
+ }
+
+ // if there exists a parent it cannot be primitive
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ };
+
+ // wrapper for "remove" operation; remove value at ptr
+ const auto operation_remove = [&result](json_pointer & ptr)
+ {
+ // get reference to parent of JSON pointer ptr
+ const auto last_path = ptr.back();
+ ptr.pop_back();
+ basic_json& parent = result.at(ptr);
+
+ // remove child
+ if (parent.is_object())
+ {
+ // perform range check
+ auto it = parent.find(last_path);
+ if (JSON_LIKELY(it != parent.end()))
+ {
+ parent.erase(it);
+ }
+ else
+ {
+ JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found"));
+ }
+ }
+ else if (parent.is_array())
+ {
+ // note erase performs range check
+ parent.erase(static_cast<size_type>(json_pointer::array_index(last_path)));
+ }
+ };
+
+ // type check: top level value must be an array
+ if (JSON_UNLIKELY(not json_patch.is_array()))
+ {
+ JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects"));
+ }
+
+ // iterate and apply the operations
+ for (const auto& val : json_patch)
+ {
+ // wrapper to get a value for an operation
+ const auto get_value = [&val](const std::string & op,
+ const std::string & member,
+ bool string_type) -> basic_json &
+ {
+ // find value
+ auto it = val.m_value.object->find(member);
+
+ // context-sensitive error message
+ const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'";
+
+ // check if desired value is present
+ if (JSON_UNLIKELY(it == val.m_value.object->end()))
+ {
+ JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'"));
+ }
+
+ // check if result is of type string
+ if (JSON_UNLIKELY(string_type and not it->second.is_string()))
+ {
+ JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'"));
+ }
+
+ // no error: return value
+ return it->second;
+ };
+
+ // type check: every element of the array must be an object
+ if (JSON_UNLIKELY(not val.is_object()))
+ {
+ JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects"));
+ }
+
+ // collect mandatory members
+ const std::string op = get_value("op", "op", true);
+ const std::string path = get_value(op, "path", true);
+ json_pointer ptr(path);
+
+ switch (get_op(op))
+ {
+ case patch_operations::add:
+ {
+ operation_add(ptr, get_value("add", "value", false));
+ break;
+ }
+
+ case patch_operations::remove:
+ {
+ operation_remove(ptr);
+ break;
+ }
+
+ case patch_operations::replace:
+ {
+ // the "path" location must exist - use at()
+ result.at(ptr) = get_value("replace", "value", false);
+ break;
+ }
+
+ case patch_operations::move:
+ {
+ const std::string from_path = get_value("move", "from", true);
+ json_pointer from_ptr(from_path);
+
+ // the "from" location must exist - use at()
+ basic_json v = result.at(from_ptr);
+
+ // The move operation is functionally identical to a
+ // "remove" operation on the "from" location, followed
+ // immediately by an "add" operation at the target
+ // location with the value that was just removed.
+ operation_remove(from_ptr);
+ operation_add(ptr, v);
+ break;
+ }
+
+ case patch_operations::copy:
+ {
+ const std::string from_path = get_value("copy", "from", true);
+ const json_pointer from_ptr(from_path);
+
+ // the "from" location must exist - use at()
+ basic_json v = result.at(from_ptr);
+
+ // The copy is functionally identical to an "add"
+ // operation at the target location using the value
+ // specified in the "from" member.
+ operation_add(ptr, v);
+ break;
+ }
+
+ case patch_operations::test:
+ {
+ bool success = false;
+ JSON_TRY
+ {
+ // check if "value" matches the one at "path"
+ // the "path" location must exist - use at()
+ success = (result.at(ptr) == get_value("test", "value", false));
+ }
+ JSON_INTERNAL_CATCH (out_of_range&)
+ {
+ // ignore out of range errors: success remains false
+ }
+
+ // throw an exception if test fails
+ if (JSON_UNLIKELY(not success))
+ {
+ JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump()));
+ }
+
+ break;
+ }
+
+ default:
+ {
+ // op must be "add", "remove", "replace", "move", "copy", or
+ // "test"
+ JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid"));
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief creates a diff as a JSON patch
+
+ Creates a [JSON Patch](http://jsonpatch.com) so that value @a source can
+ be changed into the value @a target by calling @ref patch function.
+
+ @invariant For two JSON values @a source and @a target, the following code
+ yields always `true`:
+ @code {.cpp}
+ source.patch(diff(source, target)) == target;
+ @endcode
+
+ @note Currently, only `remove`, `add`, and `replace` operations are
+ generated.
+
+ @param[in] source JSON value to compare from
+ @param[in] target JSON value to compare against
+ @param[in] path helper value to create JSON pointers
+
+ @return a JSON patch to convert the @a source to @a target
+
+ @complexity Linear in the lengths of @a source and @a target.
+
+ @liveexample{The following code shows how a JSON patch is created as a
+ diff for two JSON values.,diff}
+
+ @sa @ref patch -- apply a JSON patch
+ @sa @ref merge_patch -- apply a JSON Merge Patch
+
+ @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902)
+
+ @since version 2.0.0
+ */
+ JSON_NODISCARD
+ static basic_json diff(const basic_json& source, const basic_json& target,
+ const std::string& path = "")
+ {
+ // the patch
+ basic_json result(value_t::array);
+
+ // if the values are the same, return empty patch
+ if (source == target)
+ {
+ return result;
+ }
+
+ if (source.type() != target.type())
+ {
+ // different types: replace value
+ result.push_back(
+ {
+ {"op", "replace"}, {"path", path}, {"value", target}
+ });
+ return result;
+ }
+
+ switch (source.type())
+ {
+ case value_t::array:
+ {
+ // first pass: traverse common elements
+ std::size_t i = 0;
+ while (i < source.size() and i < target.size())
+ {
+ // recursive call to compare array values at index i
+ auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i));
+ result.insert(result.end(), temp_diff.begin(), temp_diff.end());
+ ++i;
+ }
+
+ // i now reached the end of at least one array
+ // in a second pass, traverse the remaining elements
+
+ // remove my remaining elements
+ const auto end_index = static_cast<difference_type>(result.size());
+ while (i < source.size())
+ {
+ // add operations in reverse order to avoid invalid
+ // indices
+ result.insert(result.begin() + end_index, object(
+ {
+ {"op", "remove"},
+ {"path", path + "/" + std::to_string(i)}
+ }));
+ ++i;
+ }
+
+ // add other remaining elements
+ while (i < target.size())
+ {
+ result.push_back(
+ {
+ {"op", "add"},
+ {"path", path + "/" + std::to_string(i)},
+ {"value", target[i]}
+ });
+ ++i;
+ }
+
+ break;
+ }
+
+ case value_t::object:
+ {
+ // first pass: traverse this object's elements
+ for (auto it = source.cbegin(); it != source.cend(); ++it)
+ {
+ // escape the key name to be used in a JSON patch
+ const auto key = json_pointer::escape(it.key());
+
+ if (target.find(it.key()) != target.end())
+ {
+ // recursive call to compare object values at key it
+ auto temp_diff = diff(it.value(), target[it.key()], path + "/" + key);
+ result.insert(result.end(), temp_diff.begin(), temp_diff.end());
+ }
+ else
+ {
+ // found a key that is not in o -> remove it
+ result.push_back(object(
+ {
+ {"op", "remove"}, {"path", path + "/" + key}
+ }));
+ }
+ }
+
+ // second pass: traverse other object's elements
+ for (auto it = target.cbegin(); it != target.cend(); ++it)
+ {
+ if (source.find(it.key()) == source.end())
+ {
+ // found a key that is not in this -> add it
+ const auto key = json_pointer::escape(it.key());
+ result.push_back(
+ {
+ {"op", "add"}, {"path", path + "/" + key},
+ {"value", it.value()}
+ });
+ }
+ }
+
+ break;
+ }
+
+ default:
+ {
+ // both primitive type: replace value
+ result.push_back(
+ {
+ {"op", "replace"}, {"path", path}, {"value", target}
+ });
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /// @}
+
+ ////////////////////////////////
+ // JSON Merge Patch functions //
+ ////////////////////////////////
+
+ /// @name JSON Merge Patch functions
+ /// @{
+
+ /*!
+ @brief applies a JSON Merge Patch
+
+ The merge patch format is primarily intended for use with the HTTP PATCH
+ method as a means of describing a set of modifications to a target
+ resource's content. This function applies a merge patch to the current
+ JSON value.
+
+ The function implements the following algorithm from Section 2 of
+ [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396):
+
+ ```
+ define MergePatch(Target, Patch):
+ if Patch is an Object:
+ if Target is not an Object:
+ Target = {} // Ignore the contents and set it to an empty Object
+ for each Name/Value pair in Patch:
+ if Value is null:
+ if Name exists in Target:
+ remove the Name/Value pair from Target
+ else:
+ Target[Name] = MergePatch(Target[Name], Value)
+ return Target
+ else:
+ return Patch
+ ```
+
+ Thereby, `Target` is the current object; that is, the patch is applied to
+ the current value.
+
+ @param[in] apply_patch the patch to apply
+
+ @complexity Linear in the lengths of @a patch.
+
+ @liveexample{The following code shows how a JSON Merge Patch is applied to
+ a JSON document.,merge_patch}
+
+ @sa @ref patch -- apply a JSON patch
+ @sa [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396)
+
+ @since version 3.0.0
+ */
+ void merge_patch(const basic_json& apply_patch)
+ {
+ if (apply_patch.is_object())
+ {
+ if (not is_object())
+ {
+ *this = object();
+ }
+ for (auto it = apply_patch.begin(); it != apply_patch.end(); ++it)
+ {
+ if (it.value().is_null())
+ {
+ erase(it.key());
+ }
+ else
+ {
+ operator[](it.key()).merge_patch(it.value());
+ }
+ }
+ }
+ else
+ {
+ *this = apply_patch;
+ }
+ }
+
+ /// @}
+};
+} // namespace nlohmann
+
+///////////////////////
+// nonmember support //
+///////////////////////
+
+// specialization of std::swap, and std::hash
+namespace std
+{
+
+/// hash value for JSON objects
+template<>
+struct hash<nlohmann::json>
+{
+ /*!
+ @brief return a hash value for a JSON object
+
+ @since version 1.0.0
+ */
+ std::size_t operator()(const nlohmann::json& j) const
+ {
+ // a naive hashing via the string representation
+ const auto& h = hash<nlohmann::json::string_t>();
+ return h(j.dump());
+ }
+};
+
+/// specialization for std::less<value_t>
+/// @note: do not remove the space after '<',
+/// see https://github.com/nlohmann/json/pull/679
+template<>
+struct less< ::nlohmann::detail::value_t>
+{
+ /*!
+ @brief compare two value_t enum values
+ @since version 3.0.0
+ */
+ bool operator()(nlohmann::detail::value_t lhs,
+ nlohmann::detail::value_t rhs) const noexcept
+ {
+ return nlohmann::detail::operator<(lhs, rhs);
+ }
+};
+
+/*!
+@brief exchanges the values of two JSON objects
+
+@since version 1.0.0
+*/
+template<>
+inline void swap<nlohmann::json>(nlohmann::json& j1, nlohmann::json& j2) noexcept(
+ is_nothrow_move_constructible<nlohmann::json>::value and
+ is_nothrow_move_assignable<nlohmann::json>::value
+)
+{
+ j1.swap(j2);
+}
+
+} // namespace std
+
+/*!
+@brief user-defined string literal for JSON values
+
+This operator implements a user-defined string literal for JSON objects. It
+can be used by adding `"_json"` to a string literal and returns a JSON object
+if no parse error occurred.
+
+@param[in] s a string representation of a JSON object
+@param[in] n the length of string @a s
+@return a JSON object
+
+@since version 1.0.0
+*/
+inline nlohmann::json operator "" _json(const char* s, std::size_t n)
+{
+ return nlohmann::json::parse(s, s + n);
+}
+
+/*!
+@brief user-defined string literal for JSON pointer
+
+This operator implements a user-defined string literal for JSON Pointers. It
+can be used by adding `"_json_pointer"` to a string literal and returns a JSON pointer
+object if no parse error occurred.
+
+@param[in] s a string representation of a JSON Pointer
+@param[in] n the length of string @a s
+@return a JSON pointer object
+
+@since version 2.0.0
+*/
+inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n)
+{
+ return nlohmann::json::json_pointer(std::string(s, n));
+}
+
+// #include <nlohmann/detail/macro_unscope.hpp>
+
+
+// restore GCC/clang diagnostic settings
+#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
+ #pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+ #pragma GCC diagnostic pop
+#endif
+
+// clean up
+#undef JSON_INTERNAL_CATCH
+#undef JSON_CATCH
+#undef JSON_THROW
+#undef JSON_TRY
+#undef JSON_LIKELY
+#undef JSON_UNLIKELY
+#undef JSON_DEPRECATED
+#undef JSON_NODISCARD
+#undef JSON_HAS_CPP_14
+#undef JSON_HAS_CPP_17
+#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION
+#undef NLOHMANN_BASIC_JSON_TPL
+
+
+#endif // INCLUDE_NLOHMANN_JSON_HPP_